[Intel-gfx] [PATCH] drm/i915/lmem: add the fake lmem region
Chris Wilson
chris at chris-wilson.co.uk
Wed Oct 30 09:14:40 UTC 2019
Quoting Matthew Auld (2019-10-29 16:51:34)
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 21273b516dbe..db1736d95651 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -1483,6 +1483,21 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> if (!i915_modparams.nuclear_pageflip && match_info->gen < 5)
> dev_priv->drm.driver_features &= ~DRIVER_ATOMIC;
>
> + /*
> + * Check if we support fake LMEM -- for now we only unleash this for
> + * the live selftests.
> + */
> + if (IS_ENABLED(CONFIG_DRM_I915_UNSTABLE)) {
The pattern I have in mind for unstable config options was to add
config DRM_I915_UNSTABLE_FAKE_LMEM
bool "Enable the experimental fake lmem"
depends on DRM_I915_UNSTABLE
default n
help
Convert some system memory into a fake local memory region for
testing.
So each is isolated and less likely to cross-contanimate.
> + if (INTEL_GEN(dev_priv) >= 9 && i915_selftest.live &&
Probably want i915_selftest.live < 0 so that we only enable it for
selftest-and-exit rather than inline selftests that keep the module
loaded afterwards
i915_selftest.live=0 => no tests
i915_selftest.live=-1 => test and exit
i915_selftest.live=1 => test and run userspace
> + i915_modparams.fake_lmem_start) {
> + mkwrite_device_info(dev_priv)->memory_regions =
> + REGION_SMEM | REGION_LMEM | REGION_STOLEN;
> + mkwrite_device_info(dev_priv)->is_dgfx = true;
> + GEM_BUG_ON(!HAS_LMEM(dev_priv));
> + GEM_BUG_ON(!IS_DGFX(dev_priv));
> + }
> + }
> +
> +struct intel_memory_region *
> +intel_setup_fake_lmem(struct drm_i915_private *i915)
> +{
> + struct pci_dev *pdev = i915->drm.pdev;
> + struct intel_memory_region *mem;
> + resource_size_t mappable_end;
> + resource_size_t io_start;
> + resource_size_t start;
> +
> + GEM_BUG_ON(i915_ggtt_has_aperture(&i915->ggtt));
> + GEM_BUG_ON(!i915_modparams.fake_lmem_start);
> +
> + /* Your mappable aperture belongs to me now! */
> + mappable_end = pci_resource_len(pdev, 2);
> + io_start = pci_resource_start(pdev, 2),
> + start = i915_modparams.fake_lmem_start;
> +
> + mem = intel_memory_region_create(i915,
> + start,
> + mappable_end,
> + PAGE_SIZE,
> + io_start,
> + &intel_region_lmem_ops);
> + if (!IS_ERR(mem)) {
> + DRM_INFO("Intel graphics fake LMEM: %pR\n", &mem->region);
> + DRM_INFO("Intel graphics fake LMEM IO start: %llx\n",
> + (u64)mem->io_start);
> + DRM_INFO("Intel graphics fake LMEM size: %llx\n",
> + (u64)resource_size(&mem->region));
Ok, as this is unstable and therefore dev-centric I'll let you off
having clear user information.
resource_size_t => %pa
Remember to make BAT happy!
-Chris
More information about the Intel-gfx
mailing list