Re: [Intel-gfx] [PATCH 01/18] drm/i915: add page_size_mask to dev_info
On ke, 2017-04-05 at 09:45 +0100, Chris Wilson wrote: > > Also not in this patch. First patch is to set everything to the status > quo. Last patch will be to enable the (completed) feature on the > platforms using. In testing, that enabling patch comes early on to check > bisection of the series. Except if the feature is implemented in increments, but I already mentioned in another patch that the ordering could be shuffled to allow for easier review (which will lead to easier bisecting, too). Regards, Joonas -- Joonas Lahtinen Open Source Technology Center Intel Corporation ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 01/18] drm/i915: add page_size_mask to dev_info
On Wed, Apr 05, 2017 at 09:19:49AM +0300, Joonas Lahtinen wrote: > On ti, 2017-04-04 at 23:11 +0100, Matthew Auld wrote: > > +++ b/drivers/gpu/drm/i915/i915_pci.c > > @@ -56,6 +56,10 @@ > > .color = { .degamma_lut_size = 65, .gamma_lut_size = 257 } > > > > /* Keep in gen based order, and chronological order within a gen */ > > + > > +#define GEN_DEFAULT_PAGE_SZ \ > > + .page_size_mask = I915_GTT_PAGE_SIZE_4K > > GEN_DEFAULT_PAGE_SIZES > > > @@ -346,13 +358,18 @@ static const struct intel_device_info > > intel_cherryview_info = { > > .has_aliasing_ppgtt = 1, > > .has_full_ppgtt = 1, > > .display_mmio_offset = VLV_DISPLAY_BASE, > > + .page_size_mask = I915_GTT_PAGE_SIZE_4K | I915_GTT_PAGE_SIZE_64K | > > I915_GTT_PAGE_SIZE_2M | I915_GTT_PAGE_SIZE_1G, > > Split long line. > > > GEN_CHV_PIPEOFFSETS, > > CURSOR_OFFSETS, > > > CHV_COLORS, > > }; > > > > +#define GEN9_DEFAULT_PAGE_SZ \ > > + .page_size_mask = I915_GTT_PAGE_SIZE_4K | I915_GTT_PAGE_SIZE_64K | > > I915_GTT_PAGE_SIZE_2M | I915_GTT_PAGE_SIZE_1G > > GEN9_DEFAULT_PAGE_SIZES, also split long line. Also not in this patch. First patch is to set everything to the status quo. Last patch will be to enable the (completed) feature on the platforms using. In testing, that enabling patch comes early on to check bisection of the series. -Chris -- Chris Wilson, Intel Open Source Technology Centre ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 01/18] drm/i915: add page_size_mask to dev_info
On Tue, Apr 04, 2017 at 11:11:11PM +0100, Matthew Auld wrote: > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.h > b/drivers/gpu/drm/i915/i915_gem_gtt.h > index fb15684c1d83..27b2b9e681db 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.h > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.h > @@ -42,7 +42,22 @@ > #include "i915_gem_request.h" > #include "i915_selftest.h" > > -#define I915_GTT_PAGE_SIZE 4096UL > +#define I915_GTT_PAGE_SIZE_4K BIT(12) > +#define I915_GTT_PAGE_SIZE_64K BIT(16) > +#define I915_GTT_PAGE_SIZE_2M BIT(21) > +#define I915_GTT_PAGE_SIZE_1G BIT(30) > + > +#define I915_GTT_PAGE_SIZE I915_GTT_PAGE_SIZE_4K > + > +#define I915_GTT_PAGE_SIZE_MASK (I915_GTT_PAGE_SIZE_4K | \ > + I915_GTT_PAGE_SIZE_64K | \ > + I915_GTT_PAGE_SIZE_2M | \ > + I915_GTT_PAGE_SIZE_1G) > + > +#define is_valid_gtt_page_size(page_size) \ > + (is_power_of_2(page_size) && \ > + (page_size) & I915_GTT_PAGE_SIZE_MASK) ({ unsigned int __size = (page_size); (__size & SIZE_MASK) == __size; }) -- Chris Wilson, Intel Open Source Technology Centre ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 01/18] drm/i915: add page_size_mask to dev_info
Add commit message. On ti, 2017-04-04 at 23:11 +0100, Matthew Auld wrote: > v2: > - move out pde/pdpe bit definitions until later > - tidyup the page size definitions, use BIT > - introduce helper for detecting invalid page sizes > > Signed-off-by: Matthew Auld> Cc: Mika Kuoppala > Cc: Chris Wilson > @@ -2876,6 +2877,8 @@ intel_info(const struct drm_i915_private *dev_priv) > #define USES_PPGTT(dev_priv) (i915.enable_ppgtt) > #define USES_FULL_PPGTT(dev_priv)(i915.enable_ppgtt >= 2) > #define USES_FULL_48BIT_PPGTT(dev_priv) (i915.enable_ppgtt == 3) > +#define SUPPORTS_PAGE_SIZE(dev_priv, page_size) \ > + ((dev_priv)->info.page_size_mask & (page_size)) Why not HAS_PAGE_SIZE()? > +#define is_valid_gtt_page_size(page_size) \ > + (is_power_of_2(page_size) && \ > + (page_size) & I915_GTT_PAGE_SIZE_MASK) When would this matter? I'd assume we always gotta rely on device info. > +++ b/drivers/gpu/drm/i915/i915_pci.c > @@ -56,6 +56,10 @@ > .color = { .degamma_lut_size = 65, .gamma_lut_size = 257 } > > /* Keep in gen based order, and chronological order within a gen */ > + > +#define GEN_DEFAULT_PAGE_SZ \ > + .page_size_mask = I915_GTT_PAGE_SIZE_4K GEN_DEFAULT_PAGE_SIZES > @@ -346,13 +358,18 @@ static const struct intel_device_info > intel_cherryview_info = { > .has_aliasing_ppgtt = 1, > .has_full_ppgtt = 1, > .display_mmio_offset = VLV_DISPLAY_BASE, > + .page_size_mask = I915_GTT_PAGE_SIZE_4K | I915_GTT_PAGE_SIZE_64K | > I915_GTT_PAGE_SIZE_2M | I915_GTT_PAGE_SIZE_1G, Split long line. > GEN_CHV_PIPEOFFSETS, > CURSOR_OFFSETS, > > CHV_COLORS, > }; > > +#define GEN9_DEFAULT_PAGE_SZ \ > + .page_size_mask = I915_GTT_PAGE_SIZE_4K | I915_GTT_PAGE_SIZE_64K | > I915_GTT_PAGE_SIZE_2M | I915_GTT_PAGE_SIZE_1G GEN9_DEFAULT_PAGE_SIZES, also split long line. With above, Reviewed-by: Joonas Lahtinen Regards, Joonas -- Joonas Lahtinen Open Source Technology Center Intel Corporation ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 01/18] drm/i915: add page_size_mask to dev_info
v2: - move out pde/pdpe bit definitions until later - tidyup the page size definitions, use BIT - introduce helper for detecting invalid page sizes Signed-off-by: Matthew AuldCc: Mika Kuoppala Cc: Chris Wilson --- drivers/gpu/drm/i915/i915_drv.h | 3 +++ drivers/gpu/drm/i915/i915_gem_gtt.h | 17 - drivers/gpu/drm/i915/i915_pci.c | 23 ++- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index c9b0949f6c1a..ab7a1072e7b5 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -901,6 +901,7 @@ struct intel_device_info { enum intel_platform platform; u8 ring_mask; /* Rings supported by the HW */ u8 num_rings; + unsigned int page_size_mask; /* page sizes supported by the HW */ #define DEFINE_FLAG(name) u8 name:1 DEV_INFO_FOR_EACH_FLAG(DEFINE_FLAG); #undef DEFINE_FLAG @@ -2876,6 +2877,8 @@ intel_info(const struct drm_i915_private *dev_priv) #define USES_PPGTT(dev_priv) (i915.enable_ppgtt) #define USES_FULL_PPGTT(dev_priv) (i915.enable_ppgtt >= 2) #define USES_FULL_48BIT_PPGTT(dev_priv)(i915.enable_ppgtt == 3) +#define SUPPORTS_PAGE_SIZE(dev_priv, page_size) \ + ((dev_priv)->info.page_size_mask & (page_size)) #define HAS_OVERLAY(dev_priv) ((dev_priv)->info.has_overlay) #define OVERLAY_NEEDS_PHYSICAL(dev_priv) \ diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.h b/drivers/gpu/drm/i915/i915_gem_gtt.h index fb15684c1d83..27b2b9e681db 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.h +++ b/drivers/gpu/drm/i915/i915_gem_gtt.h @@ -42,7 +42,22 @@ #include "i915_gem_request.h" #include "i915_selftest.h" -#define I915_GTT_PAGE_SIZE 4096UL +#define I915_GTT_PAGE_SIZE_4K BIT(12) +#define I915_GTT_PAGE_SIZE_64K BIT(16) +#define I915_GTT_PAGE_SIZE_2M BIT(21) +#define I915_GTT_PAGE_SIZE_1G BIT(30) + +#define I915_GTT_PAGE_SIZE I915_GTT_PAGE_SIZE_4K + +#define I915_GTT_PAGE_SIZE_MASK (I915_GTT_PAGE_SIZE_4K | \ +I915_GTT_PAGE_SIZE_64K | \ +I915_GTT_PAGE_SIZE_2M | \ +I915_GTT_PAGE_SIZE_1G) + +#define is_valid_gtt_page_size(page_size) \ + (is_power_of_2(page_size) && \ +(page_size) & I915_GTT_PAGE_SIZE_MASK) + #define I915_GTT_MIN_ALIGNMENT I915_GTT_PAGE_SIZE #define I915_FENCE_REG_NONE -1 diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c index f87b0c4e564d..25de64dfe732 100644 --- a/drivers/gpu/drm/i915/i915_pci.c +++ b/drivers/gpu/drm/i915/i915_pci.c @@ -56,6 +56,10 @@ .color = { .degamma_lut_size = 65, .gamma_lut_size = 257 } /* Keep in gen based order, and chronological order within a gen */ + +#define GEN_DEFAULT_PAGE_SZ \ + .page_size_mask = I915_GTT_PAGE_SIZE_4K + #define GEN2_FEATURES \ .gen = 2, .num_pipes = 1, \ .has_overlay = 1, .overlay_needs_physical = 1, \ @@ -64,6 +68,7 @@ .unfenced_needs_alignment = 1, \ .ring_mask = RENDER_RING, \ GEN_DEFAULT_PIPEOFFSETS, \ + GEN_DEFAULT_PAGE_SZ, \ CURSOR_OFFSETS static const struct intel_device_info intel_i830_info = { @@ -96,6 +101,7 @@ static const struct intel_device_info intel_i865g_info = { .has_gmch_display = 1, \ .ring_mask = RENDER_RING, \ GEN_DEFAULT_PIPEOFFSETS, \ + GEN_DEFAULT_PAGE_SZ, \ CURSOR_OFFSETS static const struct intel_device_info intel_i915g_info = { @@ -158,6 +164,7 @@ static const struct intel_device_info intel_pineview_info = { .has_gmch_display = 1, \ .ring_mask = RENDER_RING, \ GEN_DEFAULT_PIPEOFFSETS, \ + GEN_DEFAULT_PAGE_SZ, \ CURSOR_OFFSETS static const struct intel_device_info intel_i965g_info = { @@ -198,6 +205,7 @@ static const struct intel_device_info intel_gm45_info = { .has_gmbus_irq = 1, \ .ring_mask = RENDER_RING | BSD_RING, \ GEN_DEFAULT_PIPEOFFSETS, \ + GEN_DEFAULT_PAGE_SZ, \ CURSOR_OFFSETS static const struct intel_device_info intel_ironlake_d_info = { @@ -223,6 +231,7 @@ static const struct intel_device_info intel_ironlake_m_info = { .has_hw_contexts = 1, \ .has_aliasing_ppgtt = 1, \ GEN_DEFAULT_PIPEOFFSETS, \ + GEN_DEFAULT_PAGE_SZ, \ CURSOR_OFFSETS static const struct intel_device_info intel_sandybridge_d_info = { @@ -249,6 +258,7 @@ static const struct intel_device_info intel_sandybridge_m_info = { .has_aliasing_ppgtt = 1, \ .has_full_ppgtt = 1, \ GEN_DEFAULT_PIPEOFFSETS, \ + GEN_DEFAULT_PAGE_SZ, \ IVB_CURSOR_OFFSETS static const struct intel_device_info intel_ivybridge_d_info = { @@ -287,6 +297,7 @@ static const struct intel_device_info intel_valleyview_info = { .has_full_ppgtt