From: Imre Deak <imre.deak@intel.com>
To: Ben Widawsky <benjamin.widawsky@intel.com>
Cc: Intel GFX <intel-gfx@lists.freedesktop.org>,
Ben Widawsky <ben@bwidawsk.net>
Subject: Re: [PATCH 10/9] drm/i915/bdw: Kill ppgtt->num_pt_pages
Date: Mon, 24 Feb 2014 19:17:02 +0200 [thread overview]
Message-ID: <1393262222.13131.131.camel@intelbox> (raw)
In-Reply-To: <1393016794-4588-1-git-send-email-benjamin.widawsky@intel.com>
[-- Attachment #1.1: Type: text/plain, Size: 4284 bytes --]
On Fri, 2014-02-21 at 13:06 -0800, Ben Widawsky wrote:
> With the original PPGTT implementation if the number of PDPs was not a
> power of two, the number of pages for the page tables would end up being
> rounded up. The code actually had a bug here afaict, but this is a
> theoretical bug as I don't believe this can actually occur with the
> current code/HW..
>
> With the rework of the page table allocations, there is no longer a
> distinction between number of page table pages, and number of page
> directory entries. To avoid confusion, kill the redundant (and newer)
> struct member.
>
> Cc: Imre Deak <imre.deak@intel.com>
> Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Nitpick: keeping num_pt_pages instead would make the code more
understandable to me and symmetric with num_pd_pages, but that would've
been much more churn. In any case nice simplification,
Reviewed-by: Imre Deak <imre.deak@intel.com>
> ---
> drivers/gpu/drm/i915/i915_debugfs.c | 2 +-
> drivers/gpu/drm/i915/i915_drv.h | 3 +--
> drivers/gpu/drm/i915/i915_gem_gtt.c | 14 ++++----------
> 3 files changed, 6 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index 509e2e1..e0c42a6 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -1757,7 +1757,7 @@ static void gen8_ppgtt_info(struct seq_file *m, struct drm_device *dev)
> return;
>
> seq_printf(m, "Page directories: %d\n", ppgtt->num_pd_pages);
> - seq_printf(m, "Page tables: %d\n", ppgtt->num_pt_pages);
> + seq_printf(m, "Page tables: %d\n", ppgtt->num_pd_entries);
> for_each_ring(ring, dev_priv, unused) {
> seq_printf(m, "%s\n", ring->name);
> for (i = 0; i < 4; i++) {
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 2f29558..a9f1cae 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -698,13 +698,12 @@ struct i915_hw_ppgtt {
> struct kref ref;
> struct drm_mm_node node;
> unsigned num_pd_entries;
> + unsigned num_pd_pages; /* gen8+ */
> union {
> struct page **pt_pages;
> struct page **gen8_pt_pages[GEN8_LEGACY_PDPS];
> };
> struct page *pd_pages;
> - int num_pd_pages;
> - int num_pt_pages;
> union {
> uint32_t pd_offset;
> dma_addr_t pd_dma_addr[GEN8_LEGACY_PDPS];
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index 6c03929..bd815d7 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -433,7 +433,6 @@ static int gen8_ppgtt_allocate_page_tables(struct i915_hw_ppgtt *ppgtt,
> const int max_pdp)
> {
> struct page **pt_pages[GEN8_LEGACY_PDPS];
> - const int num_pt_pages = GEN8_PDES_PER_PAGE * max_pdp;
> int i, ret;
>
> for (i = 0; i < max_pdp; i++) {
> @@ -450,8 +449,6 @@ static int gen8_ppgtt_allocate_page_tables(struct i915_hw_ppgtt *ppgtt,
> for (i = 0; i < max_pdp; i++)
> ppgtt->gen8_pt_pages[i] = pt_pages[i];
>
> - ppgtt->num_pt_pages = 1 << get_order(num_pt_pages << PAGE_SHIFT);
> -
> return 0;
>
> unwind_out:
> @@ -618,18 +615,15 @@ static int gen8_ppgtt_init(struct i915_hw_ppgtt *ppgtt, uint64_t size)
> ppgtt->base.insert_entries = gen8_ppgtt_insert_entries;
> ppgtt->base.cleanup = gen8_ppgtt_cleanup;
> ppgtt->base.start = 0;
> - ppgtt->base.total = ppgtt->num_pt_pages * GEN8_PTES_PER_PAGE * PAGE_SIZE;
> + ppgtt->base.total = ppgtt->num_pd_entries * GEN8_PTES_PER_PAGE * PAGE_SIZE;
>
> - ppgtt->base.clear_range(&ppgtt->base, 0,
> - ppgtt->num_pd_entries * GEN8_PTES_PER_PAGE * PAGE_SIZE,
> - true);
> + ppgtt->base.clear_range(&ppgtt->base, 0, ppgtt->base.total, true);
>
> DRM_DEBUG_DRIVER("Allocated %d pages for page directories (%d wasted)\n",
> ppgtt->num_pd_pages, ppgtt->num_pd_pages - max_pdp);
> DRM_DEBUG_DRIVER("Allocated %d pages for page tables (%lld wasted)\n",
> - ppgtt->num_pt_pages,
> - (ppgtt->num_pt_pages - min_pt_pages) +
> - size % (1<<30));
> + ppgtt->num_pd_entries,
> + (ppgtt->num_pd_entries - min_pt_pages) + size % (1<<30));
> return 0;
>
> bail:
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2014-02-24 17:17 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <to=1387921357-22942-1-git-send-email-benjamin.widawsky@intel.com>
2014-02-12 22:28 ` [PATCH 0/9] [REPOST] BDW 4G GGTT + PPGTT cleanups Ben Widawsky
2014-02-12 22:28 ` [PATCH 1/9] drm/i915/bdw: Split up PPGTT cleanup Ben Widawsky
2014-02-13 10:40 ` Chris Wilson
2014-02-12 22:28 ` [PATCH 2/9] drm/i915/bdw: Reorganize PPGTT init Ben Widawsky
2014-02-19 14:59 ` Imre Deak
2014-02-19 20:06 ` [PATCH] [v3] " Ben Widawsky
2014-02-19 21:00 ` Imre Deak
2014-02-19 21:18 ` Ben Widawsky
2014-02-12 22:28 ` [PATCH 3/9] drm/i915/bdw: Split ppgtt initialization up Ben Widawsky
2014-02-19 17:03 ` Imre Deak
2014-02-12 22:28 ` [PATCH 4/9] drm/i915: Make clear/insert vfuncs args absolute Ben Widawsky
2014-02-13 0:14 ` Chris Wilson
2014-02-13 0:34 ` Ben Widawsky
2014-02-19 17:26 ` Imre Deak
2014-02-12 22:28 ` [PATCH 5/9] drm/i915/bdw: Reorganize PT allocations Ben Widawsky
2014-02-12 23:45 ` Chris Wilson
2014-02-12 23:52 ` Ben Widawsky
2014-02-19 19:11 ` Imre Deak
2014-02-19 19:25 ` Imre Deak
2014-02-19 21:06 ` Ben Widawsky
2014-02-19 21:20 ` Imre Deak
2014-02-19 21:31 ` Ben Widawsky
2014-02-12 22:28 ` [PATCH 6/9] Revert "drm/i915/bdw: Limit GTT to 2GB" Ben Widawsky
2014-02-19 19:14 ` Imre Deak
2014-02-12 22:28 ` [PATCH 7/9] drm/i915: Update i915_gem_gtt.c copyright Ben Widawsky
2014-02-12 23:19 ` Damien Lespiau
2014-02-12 23:22 ` Ben Widawsky
2014-02-19 19:20 ` Imre Deak
2014-02-12 22:28 ` [PATCH 8/9] drm/i915: Split GEN6 PPGTT cleanup Ben Widawsky
2014-02-13 10:29 ` Chris Wilson
2014-02-12 22:28 ` [PATCH 9/9] drm/i915: Split GEN6 PPGTT initialization up Ben Widawsky
2014-02-13 10:33 ` Chris Wilson
2014-02-13 11:47 ` [PATCH 0/9] [REPOST] BDW 4G GGTT + PPGTT cleanups Ville Syrjälä
2014-02-19 17:17 ` Ben Widawsky
2014-02-20 6:05 ` [PATCH 0/9] [v2] " Ben Widawsky
2014-02-21 21:06 ` [PATCH 10/9] drm/i915/bdw: Kill ppgtt->num_pt_pages Ben Widawsky
2014-02-24 17:17 ` Imre Deak [this message]
2014-03-04 15:42 ` Daniel Vetter
2014-03-04 14:50 ` [PATCH 0/9] [v2] BDW 4G GGTT + PPGTT cleanups Daniel Vetter
2014-02-20 6:05 ` [PATCH 1/9] drm/i915/bdw: Free PPGTT struct Ben Widawsky
2014-02-20 9:31 ` Imre Deak
2014-02-20 19:47 ` [PATCH .5/9] drm/i915: Move ppgtt_release out of the header Ben Widawsky
2014-02-20 19:47 ` [PATCH 1/9] [v2] drm/i915/bdw: Free PPGTT struct Ben Widawsky
2014-02-24 16:43 ` Imre Deak
2014-02-24 16:18 ` [PATCH .5/9] drm/i915: Move ppgtt_release out of the header Imre Deak
2014-03-04 14:53 ` Daniel Vetter
2014-02-20 6:05 ` [PATCH 2/9] drm/i915/bdw: Reorganize PPGTT init Ben Widawsky
2014-02-20 6:05 ` [PATCH 3/9] drm/i915/bdw: Split ppgtt initialization up Ben Widawsky
2014-02-20 13:10 ` Imre Deak
2014-02-20 6:05 ` [PATCH 4/9] drm/i915: Make clear/insert vfuncs args absolute Ben Widawsky
2014-02-20 10:37 ` Imre Deak
2014-02-20 19:35 ` Ben Widawsky
2014-02-20 19:50 ` [PATCH 4/9] [v3] " Ben Widawsky
2014-02-24 16:52 ` Imre Deak
2014-02-20 6:05 ` [PATCH 5/9] drm/i915/bdw: Reorganize PT allocations Ben Widawsky
2014-02-20 11:28 ` Imre Deak
2014-02-20 19:51 ` [PATCH 5/9] [v5] " Ben Widawsky
2014-02-24 17:03 ` Imre Deak
2014-02-24 23:38 ` Ben Widawsky
2014-02-20 6:05 ` [PATCH 6/9] Revert "drm/i915/bdw: Limit GTT to 2GB" Ben Widawsky
2014-02-20 6:05 ` [PATCH 7/9] drm/i915: Update i915_gem_gtt.c copyright Ben Widawsky
2014-02-20 6:05 ` [PATCH 8/9] drm/i915: Split GEN6 PPGTT cleanup Ben Widawsky
2014-02-20 6:05 ` [PATCH 9/9] drm/i915: Split GEN6 PPGTT initialization up Ben Widawsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1393262222.13131.131.camel@intelbox \
--to=imre.deak@intel.com \
--cc=ben@bwidawsk.net \
--cc=benjamin.widawsky@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.