* [PATCH v2 0/4] shmem helpers for igt @ 2021-06-03 15:03 ` Daniel Vetter 0 siblings, 0 replies; 23+ messages in thread From: Daniel Vetter @ 2021-06-03 15:03 UTC (permalink / raw) To: Intel Graphics Development; +Cc: Daniel Vetter, DRI Development Hi all, I finally figured out why CI is unhappy on some machines, we've lost WC mode on the vgem side! Test-with: 20210527140732.5762-1-daniel.vetter@ffwll.ch Cheers, Daniel Daniel Vetter (4): drm/gem-shmem-helper: Export drm_gem_shmem_funcs drm/shmem-helper: Switch to vmf_insert_pfn drm/shmem-helper: Align to page size in dumb_create drm/vgem: use shmem helpers drivers/gpu/drm/Kconfig | 3 +- drivers/gpu/drm/drm_gem_shmem_helper.c | 11 +- drivers/gpu/drm/vgem/vgem_drv.c | 346 ++----------------------- include/drm/drm_gem_shmem_helper.h | 1 + 4 files changed, 25 insertions(+), 336 deletions(-) -- 2.31.0 ^ permalink raw reply [flat|nested] 23+ messages in thread
* [Intel-gfx] [PATCH v2 0/4] shmem helpers for igt @ 2021-06-03 15:03 ` Daniel Vetter 0 siblings, 0 replies; 23+ messages in thread From: Daniel Vetter @ 2021-06-03 15:03 UTC (permalink / raw) To: Intel Graphics Development; +Cc: Daniel Vetter, DRI Development Hi all, I finally figured out why CI is unhappy on some machines, we've lost WC mode on the vgem side! Test-with: 20210527140732.5762-1-daniel.vetter@ffwll.ch Cheers, Daniel Daniel Vetter (4): drm/gem-shmem-helper: Export drm_gem_shmem_funcs drm/shmem-helper: Switch to vmf_insert_pfn drm/shmem-helper: Align to page size in dumb_create drm/vgem: use shmem helpers drivers/gpu/drm/Kconfig | 3 +- drivers/gpu/drm/drm_gem_shmem_helper.c | 11 +- drivers/gpu/drm/vgem/vgem_drv.c | 346 ++----------------------- include/drm/drm_gem_shmem_helper.h | 1 + 4 files changed, 25 insertions(+), 336 deletions(-) -- 2.31.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v2 1/4] drm/gem-shmem-helper: Export drm_gem_shmem_funcs 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter @ 2021-06-03 15:03 ` Daniel Vetter -1 siblings, 0 replies; 23+ messages in thread From: Daniel Vetter @ 2021-06-03 15:03 UTC (permalink / raw) To: Intel Graphics Development Cc: David Airlie, Daniel Vetter, DRI Development, Thomas Zimmermann, Daniel Vetter Drivers which need to overwrite the drm_driver->gem_create_object hook need this. Specifically vgem, which wants wc mode, but everything else is fine as-is. Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <mripard@kernel.org> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> --- drivers/gpu/drm/drm_gem_shmem_helper.c | 3 ++- include/drm/drm_gem_shmem_helper.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c index 6d625cee7a6a..4439004e62fe 100644 --- a/drivers/gpu/drm/drm_gem_shmem_helper.c +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c @@ -24,7 +24,7 @@ * allocated using anonymous pageable memory. */ -static const struct drm_gem_object_funcs drm_gem_shmem_funcs = { +const struct drm_gem_object_funcs drm_gem_shmem_funcs = { .free = drm_gem_shmem_free_object, .print_info = drm_gem_shmem_print_info, .pin = drm_gem_shmem_pin, @@ -34,6 +34,7 @@ static const struct drm_gem_object_funcs drm_gem_shmem_funcs = { .vunmap = drm_gem_shmem_vunmap, .mmap = drm_gem_shmem_mmap, }; +EXPORT_SYMBOL(drm_gem_shmem_funcs); static struct drm_gem_shmem_object * __drm_gem_shmem_create(struct drm_device *dev, size_t size, bool private) diff --git a/include/drm/drm_gem_shmem_helper.h b/include/drm/drm_gem_shmem_helper.h index 434328d8a0d9..b29667f2b8a3 100644 --- a/include/drm/drm_gem_shmem_helper.h +++ b/include/drm/drm_gem_shmem_helper.h @@ -106,6 +106,7 @@ struct drm_gem_shmem_object { #define to_drm_gem_shmem_obj(obj) \ container_of(obj, struct drm_gem_shmem_object, base) +extern const struct drm_gem_object_funcs drm_gem_shmem_funcs; struct drm_gem_shmem_object *drm_gem_shmem_create(struct drm_device *dev, size_t size); void drm_gem_shmem_free_object(struct drm_gem_object *obj); -- 2.31.0 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [Intel-gfx] [PATCH v2 1/4] drm/gem-shmem-helper: Export drm_gem_shmem_funcs @ 2021-06-03 15:03 ` Daniel Vetter 0 siblings, 0 replies; 23+ messages in thread From: Daniel Vetter @ 2021-06-03 15:03 UTC (permalink / raw) To: Intel Graphics Development Cc: David Airlie, Daniel Vetter, Maxime Ripard, DRI Development, Thomas Zimmermann, Daniel Vetter Drivers which need to overwrite the drm_driver->gem_create_object hook need this. Specifically vgem, which wants wc mode, but everything else is fine as-is. Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <mripard@kernel.org> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> --- drivers/gpu/drm/drm_gem_shmem_helper.c | 3 ++- include/drm/drm_gem_shmem_helper.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c index 6d625cee7a6a..4439004e62fe 100644 --- a/drivers/gpu/drm/drm_gem_shmem_helper.c +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c @@ -24,7 +24,7 @@ * allocated using anonymous pageable memory. */ -static const struct drm_gem_object_funcs drm_gem_shmem_funcs = { +const struct drm_gem_object_funcs drm_gem_shmem_funcs = { .free = drm_gem_shmem_free_object, .print_info = drm_gem_shmem_print_info, .pin = drm_gem_shmem_pin, @@ -34,6 +34,7 @@ static const struct drm_gem_object_funcs drm_gem_shmem_funcs = { .vunmap = drm_gem_shmem_vunmap, .mmap = drm_gem_shmem_mmap, }; +EXPORT_SYMBOL(drm_gem_shmem_funcs); static struct drm_gem_shmem_object * __drm_gem_shmem_create(struct drm_device *dev, size_t size, bool private) diff --git a/include/drm/drm_gem_shmem_helper.h b/include/drm/drm_gem_shmem_helper.h index 434328d8a0d9..b29667f2b8a3 100644 --- a/include/drm/drm_gem_shmem_helper.h +++ b/include/drm/drm_gem_shmem_helper.h @@ -106,6 +106,7 @@ struct drm_gem_shmem_object { #define to_drm_gem_shmem_obj(obj) \ container_of(obj, struct drm_gem_shmem_object, base) +extern const struct drm_gem_object_funcs drm_gem_shmem_funcs; struct drm_gem_shmem_object *drm_gem_shmem_create(struct drm_device *dev, size_t size); void drm_gem_shmem_free_object(struct drm_gem_object *obj); -- 2.31.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCH v2 1/4] drm/gem-shmem-helper: Export drm_gem_shmem_funcs 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter @ 2021-06-03 15:54 ` Thomas Zimmermann -1 siblings, 0 replies; 23+ messages in thread From: Thomas Zimmermann @ 2021-06-03 15:54 UTC (permalink / raw) To: Daniel Vetter, Intel Graphics Development Cc: David Airlie, DRI Development, Daniel Vetter [-- Attachment #1.1: Type: text/plain, Size: 2692 bytes --] Hi Am 03.06.21 um 17:03 schrieb Daniel Vetter: > Drivers which need to overwrite the drm_driver->gem_create_object hook > need this. Specifically vgem, which wants wc mode, but everything else > is fine as-is. > > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > Cc: Maxime Ripard <mripard@kernel.org> > Cc: Thomas Zimmermann <tzimmermann@suse.de> > Cc: David Airlie <airlied@linux.ie> > Cc: Daniel Vetter <daniel@ffwll.ch> > --- > drivers/gpu/drm/drm_gem_shmem_helper.c | 3 ++- > include/drm/drm_gem_shmem_helper.h | 1 + > 2 files changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c > index 6d625cee7a6a..4439004e62fe 100644 > --- a/drivers/gpu/drm/drm_gem_shmem_helper.c > +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c > @@ -24,7 +24,7 @@ > * allocated using anonymous pageable memory. > */ > > -static const struct drm_gem_object_funcs drm_gem_shmem_funcs = { > +const struct drm_gem_object_funcs drm_gem_shmem_funcs = { > .free = drm_gem_shmem_free_object, > .print_info = drm_gem_shmem_print_info, > .pin = drm_gem_shmem_pin, > @@ -34,6 +34,7 @@ static const struct drm_gem_object_funcs drm_gem_shmem_funcs = { > .vunmap = drm_gem_shmem_vunmap, > .mmap = drm_gem_shmem_mmap, > }; > +EXPORT_SYMBOL(drm_gem_shmem_funcs); No that's not needed. If you leave out the funcs pointer in your gem_create_object, __drm_gem_shmem_create() will set this default for you. [1] So please drop this patch. Best regards Thomas [1] https://elixir.bootlin.com/linux/v5.12/source/drivers/gpu/drm/drm_gem_shmem_helper.c#L56 > > static struct drm_gem_shmem_object * > __drm_gem_shmem_create(struct drm_device *dev, size_t size, bool private) > diff --git a/include/drm/drm_gem_shmem_helper.h b/include/drm/drm_gem_shmem_helper.h > index 434328d8a0d9..b29667f2b8a3 100644 > --- a/include/drm/drm_gem_shmem_helper.h > +++ b/include/drm/drm_gem_shmem_helper.h > @@ -106,6 +106,7 @@ struct drm_gem_shmem_object { > #define to_drm_gem_shmem_obj(obj) \ > container_of(obj, struct drm_gem_shmem_object, base) > > +extern const struct drm_gem_object_funcs drm_gem_shmem_funcs; > struct drm_gem_shmem_object *drm_gem_shmem_create(struct drm_device *dev, size_t size); > void drm_gem_shmem_free_object(struct drm_gem_object *obj); > > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Felix Imendörffer [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [Intel-gfx] [PATCH v2 1/4] drm/gem-shmem-helper: Export drm_gem_shmem_funcs @ 2021-06-03 15:54 ` Thomas Zimmermann 0 siblings, 0 replies; 23+ messages in thread From: Thomas Zimmermann @ 2021-06-03 15:54 UTC (permalink / raw) To: Daniel Vetter, Intel Graphics Development Cc: David Airlie, Maxime Ripard, DRI Development, Daniel Vetter [-- Attachment #1.1.1: Type: text/plain, Size: 2692 bytes --] Hi Am 03.06.21 um 17:03 schrieb Daniel Vetter: > Drivers which need to overwrite the drm_driver->gem_create_object hook > need this. Specifically vgem, which wants wc mode, but everything else > is fine as-is. > > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > Cc: Maxime Ripard <mripard@kernel.org> > Cc: Thomas Zimmermann <tzimmermann@suse.de> > Cc: David Airlie <airlied@linux.ie> > Cc: Daniel Vetter <daniel@ffwll.ch> > --- > drivers/gpu/drm/drm_gem_shmem_helper.c | 3 ++- > include/drm/drm_gem_shmem_helper.h | 1 + > 2 files changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c > index 6d625cee7a6a..4439004e62fe 100644 > --- a/drivers/gpu/drm/drm_gem_shmem_helper.c > +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c > @@ -24,7 +24,7 @@ > * allocated using anonymous pageable memory. > */ > > -static const struct drm_gem_object_funcs drm_gem_shmem_funcs = { > +const struct drm_gem_object_funcs drm_gem_shmem_funcs = { > .free = drm_gem_shmem_free_object, > .print_info = drm_gem_shmem_print_info, > .pin = drm_gem_shmem_pin, > @@ -34,6 +34,7 @@ static const struct drm_gem_object_funcs drm_gem_shmem_funcs = { > .vunmap = drm_gem_shmem_vunmap, > .mmap = drm_gem_shmem_mmap, > }; > +EXPORT_SYMBOL(drm_gem_shmem_funcs); No that's not needed. If you leave out the funcs pointer in your gem_create_object, __drm_gem_shmem_create() will set this default for you. [1] So please drop this patch. Best regards Thomas [1] https://elixir.bootlin.com/linux/v5.12/source/drivers/gpu/drm/drm_gem_shmem_helper.c#L56 > > static struct drm_gem_shmem_object * > __drm_gem_shmem_create(struct drm_device *dev, size_t size, bool private) > diff --git a/include/drm/drm_gem_shmem_helper.h b/include/drm/drm_gem_shmem_helper.h > index 434328d8a0d9..b29667f2b8a3 100644 > --- a/include/drm/drm_gem_shmem_helper.h > +++ b/include/drm/drm_gem_shmem_helper.h > @@ -106,6 +106,7 @@ struct drm_gem_shmem_object { > #define to_drm_gem_shmem_obj(obj) \ > container_of(obj, struct drm_gem_shmem_object, base) > > +extern const struct drm_gem_object_funcs drm_gem_shmem_funcs; > struct drm_gem_shmem_object *drm_gem_shmem_create(struct drm_device *dev, size_t size); > void drm_gem_shmem_free_object(struct drm_gem_object *obj); > > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Felix Imendörffer [-- Attachment #1.2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] [-- Attachment #2: Type: text/plain, Size: 160 bytes --] _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v2 2/4] drm/shmem-helper: Switch to vmf_insert_pfn 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter @ 2021-06-03 15:03 ` Daniel Vetter -1 siblings, 0 replies; 23+ messages in thread From: Daniel Vetter @ 2021-06-03 15:03 UTC (permalink / raw) To: Intel Graphics Development Cc: David Airlie, Daniel Vetter, DRI Development, Thomas Zimmermann, Daniel Vetter We want to stop gup, which isn't the case if we use vmf_insert_page and VM_MIXEDMAP, because that does not set pte_special. v2: With this shmem gem helpers now definitely need CONFIG_MMU (0day) Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <mripard@kernel.org> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> --- drivers/gpu/drm/Kconfig | 2 +- drivers/gpu/drm/drm_gem_shmem_helper.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 56a55a6e6239..9c21527b791f 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -206,7 +206,7 @@ config DRM_KMS_CMA_HELPER config DRM_GEM_SHMEM_HELPER bool - depends on DRM + depends on DRM && MMU help Choose this if you need the GEM shmem helper functions diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c index 4439004e62fe..32f1d7601ec6 100644 --- a/drivers/gpu/drm/drm_gem_shmem_helper.c +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c @@ -543,7 +543,7 @@ static vm_fault_t drm_gem_shmem_fault(struct vm_fault *vmf) } else { page = shmem->pages[page_offset]; - ret = vmf_insert_page(vma, vmf->address, page); + ret = vmf_insert_pfn(vma, vmf->address, page_to_pfn(page)); } mutex_unlock(&shmem->pages_lock); @@ -613,7 +613,7 @@ int drm_gem_shmem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma) return ret; } - vma->vm_flags |= VM_MIXEDMAP | VM_DONTEXPAND; + vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND; vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); if (shmem->map_wc) vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); -- 2.31.0 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [Intel-gfx] [PATCH v2 2/4] drm/shmem-helper: Switch to vmf_insert_pfn @ 2021-06-03 15:03 ` Daniel Vetter 0 siblings, 0 replies; 23+ messages in thread From: Daniel Vetter @ 2021-06-03 15:03 UTC (permalink / raw) To: Intel Graphics Development Cc: David Airlie, Daniel Vetter, Maxime Ripard, DRI Development, Thomas Zimmermann, Daniel Vetter We want to stop gup, which isn't the case if we use vmf_insert_page and VM_MIXEDMAP, because that does not set pte_special. v2: With this shmem gem helpers now definitely need CONFIG_MMU (0day) Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <mripard@kernel.org> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> --- drivers/gpu/drm/Kconfig | 2 +- drivers/gpu/drm/drm_gem_shmem_helper.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 56a55a6e6239..9c21527b791f 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -206,7 +206,7 @@ config DRM_KMS_CMA_HELPER config DRM_GEM_SHMEM_HELPER bool - depends on DRM + depends on DRM && MMU help Choose this if you need the GEM shmem helper functions diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c index 4439004e62fe..32f1d7601ec6 100644 --- a/drivers/gpu/drm/drm_gem_shmem_helper.c +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c @@ -543,7 +543,7 @@ static vm_fault_t drm_gem_shmem_fault(struct vm_fault *vmf) } else { page = shmem->pages[page_offset]; - ret = vmf_insert_page(vma, vmf->address, page); + ret = vmf_insert_pfn(vma, vmf->address, page_to_pfn(page)); } mutex_unlock(&shmem->pages_lock); @@ -613,7 +613,7 @@ int drm_gem_shmem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma) return ret; } - vma->vm_flags |= VM_MIXEDMAP | VM_DONTEXPAND; + vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND; vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); if (shmem->map_wc) vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); -- 2.31.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [Intel-gfx] [PATCH v2 2/4] drm/shmem-helper: Switch to vmf_insert_pfn 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter (?) @ 2021-06-03 20:42 ` kernel test robot -1 siblings, 0 replies; 23+ messages in thread From: kernel test robot @ 2021-06-03 20:42 UTC (permalink / raw) To: Daniel Vetter, Intel Graphics Development Cc: kbuild-all, David Airlie, Daniel Vetter, DRI Development, Thomas Zimmermann [-- Attachment #1: Type: text/plain, Size: 2360 bytes --] Hi Daniel, I love your patch! Yet something to improve: [auto build test ERROR on drm-intel/for-linux-next] [also build test ERROR on drm-tip/drm-tip drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next linus/master v5.13-rc4 next-20210603] [cannot apply to drm/drm-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Daniel-Vetter/shmem-helpers-for-igt/20210603-230602 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: h8300-randconfig-r021-20210603 (attached as .config) compiler: h8300-linux-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/5ce1f8f44bf2a1a96bb1a56ef34453d958142b45 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Daniel-Vetter/shmem-helpers-for-igt/20210603-230602 git checkout 5ce1f8f44bf2a1a96bb1a56ef34453d958142b45 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=h8300 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): h8300-linux-ld: section .init.text LMA [000000000059b760,00000000005de3d5] overlaps section .text LMA [0000000000000158,000000000171c08b] h8300-linux-ld: section .data VMA [0000000000400000,000000000059b75f] overlaps section .text VMA [0000000000000158,000000000171c08b] h8300-linux-ld: drivers/gpu/drm/drm_gem_shmem_helper.o: in function `.Llt5': >> drm_gem_shmem_helper.c:(.text+0x16f): undefined reference to `vmf_insert_pfn' Kconfig warnings: (for reference only) WARNING: unmet direct dependencies detected for DRM_GEM_SHMEM_HELPER Depends on HAS_IOMEM && DRM && MMU Selected by - DRM_VKMS && HAS_IOMEM && DRM - DRM_UDL && HAS_IOMEM && DRM && USB && USB_ARCH_HAS_HCD - DRM_GM12U320 && HAS_IOMEM && DRM && USB --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 30716 bytes --] ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [Intel-gfx] [PATCH v2 2/4] drm/shmem-helper: Switch to vmf_insert_pfn @ 2021-06-03 20:42 ` kernel test robot 0 siblings, 0 replies; 23+ messages in thread From: kernel test robot @ 2021-06-03 20:42 UTC (permalink / raw) To: kbuild-all [-- Attachment #1: Type: text/plain, Size: 2408 bytes --] Hi Daniel, I love your patch! Yet something to improve: [auto build test ERROR on drm-intel/for-linux-next] [also build test ERROR on drm-tip/drm-tip drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next linus/master v5.13-rc4 next-20210603] [cannot apply to drm/drm-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Daniel-Vetter/shmem-helpers-for-igt/20210603-230602 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: h8300-randconfig-r021-20210603 (attached as .config) compiler: h8300-linux-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/5ce1f8f44bf2a1a96bb1a56ef34453d958142b45 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Daniel-Vetter/shmem-helpers-for-igt/20210603-230602 git checkout 5ce1f8f44bf2a1a96bb1a56ef34453d958142b45 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=h8300 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): h8300-linux-ld: section .init.text LMA [000000000059b760,00000000005de3d5] overlaps section .text LMA [0000000000000158,000000000171c08b] h8300-linux-ld: section .data VMA [0000000000400000,000000000059b75f] overlaps section .text VMA [0000000000000158,000000000171c08b] h8300-linux-ld: drivers/gpu/drm/drm_gem_shmem_helper.o: in function `.Llt5': >> drm_gem_shmem_helper.c:(.text+0x16f): undefined reference to `vmf_insert_pfn' Kconfig warnings: (for reference only) WARNING: unmet direct dependencies detected for DRM_GEM_SHMEM_HELPER Depends on HAS_IOMEM && DRM && MMU Selected by - DRM_VKMS && HAS_IOMEM && DRM - DRM_UDL && HAS_IOMEM && DRM && USB && USB_ARCH_HAS_HCD - DRM_GM12U320 && HAS_IOMEM && DRM && USB --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org [-- Attachment #2: config.gz --] [-- Type: application/gzip, Size: 30716 bytes --] ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [Intel-gfx] [PATCH v2 2/4] drm/shmem-helper: Switch to vmf_insert_pfn @ 2021-06-03 20:42 ` kernel test robot 0 siblings, 0 replies; 23+ messages in thread From: kernel test robot @ 2021-06-03 20:42 UTC (permalink / raw) To: Daniel Vetter, Intel Graphics Development Cc: kbuild-all, David Airlie, Daniel Vetter, DRI Development, Maxime Ripard, Thomas Zimmermann [-- Attachment #1: Type: text/plain, Size: 2360 bytes --] Hi Daniel, I love your patch! Yet something to improve: [auto build test ERROR on drm-intel/for-linux-next] [also build test ERROR on drm-tip/drm-tip drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next linus/master v5.13-rc4 next-20210603] [cannot apply to drm/drm-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Daniel-Vetter/shmem-helpers-for-igt/20210603-230602 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: h8300-randconfig-r021-20210603 (attached as .config) compiler: h8300-linux-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/5ce1f8f44bf2a1a96bb1a56ef34453d958142b45 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Daniel-Vetter/shmem-helpers-for-igt/20210603-230602 git checkout 5ce1f8f44bf2a1a96bb1a56ef34453d958142b45 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=h8300 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): h8300-linux-ld: section .init.text LMA [000000000059b760,00000000005de3d5] overlaps section .text LMA [0000000000000158,000000000171c08b] h8300-linux-ld: section .data VMA [0000000000400000,000000000059b75f] overlaps section .text VMA [0000000000000158,000000000171c08b] h8300-linux-ld: drivers/gpu/drm/drm_gem_shmem_helper.o: in function `.Llt5': >> drm_gem_shmem_helper.c:(.text+0x16f): undefined reference to `vmf_insert_pfn' Kconfig warnings: (for reference only) WARNING: unmet direct dependencies detected for DRM_GEM_SHMEM_HELPER Depends on HAS_IOMEM && DRM && MMU Selected by - DRM_VKMS && HAS_IOMEM && DRM - DRM_UDL && HAS_IOMEM && DRM && USB && USB_ARCH_HAS_HCD - DRM_GM12U320 && HAS_IOMEM && DRM && USB --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 30716 bytes --] [-- Attachment #3: Type: text/plain, Size: 160 bytes --] _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v2 3/4] drm/shmem-helper: Align to page size in dumb_create 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter @ 2021-06-03 15:03 ` Daniel Vetter -1 siblings, 0 replies; 23+ messages in thread From: Daniel Vetter @ 2021-06-03 15:03 UTC (permalink / raw) To: Intel Graphics Development Cc: David Airlie, Daniel Vetter, DRI Development, Thomas Zimmermann, Daniel Vetter shmem helpers seem a bit sloppy here by automatically rounding up when actually creating the buffer, which results in under-reporting of what we actually have. Caught by igt/vgem_basic tests. Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <mripard@kernel.org> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> --- drivers/gpu/drm/drm_gem_shmem_helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c index 32f1d7601ec6..2985744b4300 100644 --- a/drivers/gpu/drm/drm_gem_shmem_helper.c +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c @@ -506,13 +506,13 @@ int drm_gem_shmem_dumb_create(struct drm_file *file, struct drm_device *dev, if (!args->pitch || !args->size) { args->pitch = min_pitch; - args->size = args->pitch * args->height; + args->size = PAGE_ALIGN(args->pitch * args->height); } else { /* ensure sane minimum values */ if (args->pitch < min_pitch) args->pitch = min_pitch; if (args->size < args->pitch * args->height) - args->size = args->pitch * args->height; + args->size = PAGE_ALIGN(args->pitch * args->height); } shmem = drm_gem_shmem_create_with_handle(file, dev, args->size, &args->handle); -- 2.31.0 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [Intel-gfx] [PATCH v2 3/4] drm/shmem-helper: Align to page size in dumb_create @ 2021-06-03 15:03 ` Daniel Vetter 0 siblings, 0 replies; 23+ messages in thread From: Daniel Vetter @ 2021-06-03 15:03 UTC (permalink / raw) To: Intel Graphics Development Cc: David Airlie, Daniel Vetter, Maxime Ripard, DRI Development, Thomas Zimmermann, Daniel Vetter shmem helpers seem a bit sloppy here by automatically rounding up when actually creating the buffer, which results in under-reporting of what we actually have. Caught by igt/vgem_basic tests. Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <mripard@kernel.org> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> --- drivers/gpu/drm/drm_gem_shmem_helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c index 32f1d7601ec6..2985744b4300 100644 --- a/drivers/gpu/drm/drm_gem_shmem_helper.c +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c @@ -506,13 +506,13 @@ int drm_gem_shmem_dumb_create(struct drm_file *file, struct drm_device *dev, if (!args->pitch || !args->size) { args->pitch = min_pitch; - args->size = args->pitch * args->height; + args->size = PAGE_ALIGN(args->pitch * args->height); } else { /* ensure sane minimum values */ if (args->pitch < min_pitch) args->pitch = min_pitch; if (args->size < args->pitch * args->height) - args->size = args->pitch * args->height; + args->size = PAGE_ALIGN(args->pitch * args->height); } shmem = drm_gem_shmem_create_with_handle(file, dev, args->size, &args->handle); -- 2.31.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCH v2 3/4] drm/shmem-helper: Align to page size in dumb_create 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter @ 2021-06-03 18:59 ` Thomas Zimmermann -1 siblings, 0 replies; 23+ messages in thread From: Thomas Zimmermann @ 2021-06-03 18:59 UTC (permalink / raw) To: Daniel Vetter, Intel Graphics Development Cc: David Airlie, DRI Development, Daniel Vetter [-- Attachment #1.1: Type: text/plain, Size: 1875 bytes --] Am 03.06.21 um 17:03 schrieb Daniel Vetter: > shmem helpers seem a bit sloppy here by automatically rounding up when > actually creating the buffer, which results in under-reporting of what > we actually have. Caught by igt/vgem_basic tests. > > Acked-by: Thomas Zimmermann <tzimmermann@suse.de> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > Cc: Maxime Ripard <mripard@kernel.org> > Cc: Thomas Zimmermann <tzimmermann@suse.de> > Cc: David Airlie <airlied@linux.ie> > Cc: Daniel Vetter <daniel@ffwll.ch> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/drm_gem_shmem_helper.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c > index 32f1d7601ec6..2985744b4300 100644 > --- a/drivers/gpu/drm/drm_gem_shmem_helper.c > +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c > @@ -506,13 +506,13 @@ int drm_gem_shmem_dumb_create(struct drm_file *file, struct drm_device *dev, > > if (!args->pitch || !args->size) { > args->pitch = min_pitch; > - args->size = args->pitch * args->height; > + args->size = PAGE_ALIGN(args->pitch * args->height); > } else { > /* ensure sane minimum values */ > if (args->pitch < min_pitch) > args->pitch = min_pitch; > if (args->size < args->pitch * args->height) > - args->size = args->pitch * args->height; > + args->size = PAGE_ALIGN(args->pitch * args->height); > } > > shmem = drm_gem_shmem_create_with_handle(file, dev, args->size, &args->handle); > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Felix Imendörffer [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [Intel-gfx] [PATCH v2 3/4] drm/shmem-helper: Align to page size in dumb_create @ 2021-06-03 18:59 ` Thomas Zimmermann 0 siblings, 0 replies; 23+ messages in thread From: Thomas Zimmermann @ 2021-06-03 18:59 UTC (permalink / raw) To: Daniel Vetter, Intel Graphics Development Cc: David Airlie, Maxime Ripard, DRI Development, Daniel Vetter [-- Attachment #1.1.1: Type: text/plain, Size: 1875 bytes --] Am 03.06.21 um 17:03 schrieb Daniel Vetter: > shmem helpers seem a bit sloppy here by automatically rounding up when > actually creating the buffer, which results in under-reporting of what > we actually have. Caught by igt/vgem_basic tests. > > Acked-by: Thomas Zimmermann <tzimmermann@suse.de> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > Cc: Maxime Ripard <mripard@kernel.org> > Cc: Thomas Zimmermann <tzimmermann@suse.de> > Cc: David Airlie <airlied@linux.ie> > Cc: Daniel Vetter <daniel@ffwll.ch> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/drm_gem_shmem_helper.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c > index 32f1d7601ec6..2985744b4300 100644 > --- a/drivers/gpu/drm/drm_gem_shmem_helper.c > +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c > @@ -506,13 +506,13 @@ int drm_gem_shmem_dumb_create(struct drm_file *file, struct drm_device *dev, > > if (!args->pitch || !args->size) { > args->pitch = min_pitch; > - args->size = args->pitch * args->height; > + args->size = PAGE_ALIGN(args->pitch * args->height); > } else { > /* ensure sane minimum values */ > if (args->pitch < min_pitch) > args->pitch = min_pitch; > if (args->size < args->pitch * args->height) > - args->size = args->pitch * args->height; > + args->size = PAGE_ALIGN(args->pitch * args->height); > } > > shmem = drm_gem_shmem_create_with_handle(file, dev, args->size, &args->handle); > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Felix Imendörffer [-- Attachment #1.2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] [-- Attachment #2: Type: text/plain, Size: 160 bytes --] _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v2 4/4] drm/vgem: use shmem helpers 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter @ 2021-06-03 15:03 ` Daniel Vetter -1 siblings, 0 replies; 23+ messages in thread From: Daniel Vetter @ 2021-06-03 15:03 UTC (permalink / raw) To: Intel Graphics Development Cc: Daniel Vetter, DRI Development, Melissa Wen, Thomas Zimmermann, Daniel Vetter, Chris Wilson, Christian König Aside from deleting lots of code the real motivation here is to switch the mmap over to VM_PFNMAP, to be more consistent with what real gpu drivers do. They're all VM_PFNMP, which means get_user_pages doesn't work, and even if you try and there's a struct page behind that, touching it and mucking around with its refcount can upset drivers real bad. v2: Review from Thomas: - sort #include - drop more dead code that I didn't spot somehow v3: select DRM_GEM_SHMEM_HELPER to make it build (intel-gfx-ci) v4: I got tricked by 0cf2ef46c6c0 ("drm/shmem-helper: Use cached mappings by default"), and we need WC in vgem because vgem doesn't have explicit begin/end cpu access ioctls. Also add a comment why exactly vgem has to use wc. Cc: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Cc: John Stultz <john.stultz@linaro.org> Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: "Christian König" <christian.koenig@amd.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Cc: Melissa Wen <melissa.srw@gmail.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/Kconfig | 1 + drivers/gpu/drm/vgem/vgem_drv.c | 346 ++------------------------------ 2 files changed, 17 insertions(+), 330 deletions(-) diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 9c21527b791f..fb38ef7b3206 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -268,6 +268,7 @@ source "drivers/gpu/drm/kmb/Kconfig" config DRM_VGEM tristate "Virtual GEM provider" depends on DRM + select DRM_GEM_SHMEM_HELPER help Choose this option to get a virtual graphics memory manager, as used by Mesa's software renderer for enhanced performance. diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c index bf38a7e319d1..031e8f026cfb 100644 --- a/drivers/gpu/drm/vgem/vgem_drv.c +++ b/drivers/gpu/drm/vgem/vgem_drv.c @@ -38,6 +38,7 @@ #include <drm/drm_drv.h> #include <drm/drm_file.h> +#include <drm/drm_gem_shmem_helper.h> #include <drm/drm_ioctl.h> #include <drm/drm_managed.h> #include <drm/drm_prime.h> @@ -50,87 +51,11 @@ #define DRIVER_MAJOR 1 #define DRIVER_MINOR 0 -static const struct drm_gem_object_funcs vgem_gem_object_funcs; - static struct vgem_device { struct drm_device drm; struct platform_device *platform; } *vgem_device; -static void vgem_gem_free_object(struct drm_gem_object *obj) -{ - struct drm_vgem_gem_object *vgem_obj = to_vgem_bo(obj); - - kvfree(vgem_obj->pages); - mutex_destroy(&vgem_obj->pages_lock); - - if (obj->import_attach) - drm_prime_gem_destroy(obj, vgem_obj->table); - - drm_gem_object_release(obj); - kfree(vgem_obj); -} - -static vm_fault_t vgem_gem_fault(struct vm_fault *vmf) -{ - struct vm_area_struct *vma = vmf->vma; - struct drm_vgem_gem_object *obj = vma->vm_private_data; - /* We don't use vmf->pgoff since that has the fake offset */ - unsigned long vaddr = vmf->address; - vm_fault_t ret = VM_FAULT_SIGBUS; - loff_t num_pages; - pgoff_t page_offset; - page_offset = (vaddr - vma->vm_start) >> PAGE_SHIFT; - - num_pages = DIV_ROUND_UP(obj->base.size, PAGE_SIZE); - - if (page_offset >= num_pages) - return VM_FAULT_SIGBUS; - - mutex_lock(&obj->pages_lock); - if (obj->pages) { - get_page(obj->pages[page_offset]); - vmf->page = obj->pages[page_offset]; - ret = 0; - } - mutex_unlock(&obj->pages_lock); - if (ret) { - struct page *page; - - page = shmem_read_mapping_page( - file_inode(obj->base.filp)->i_mapping, - page_offset); - if (!IS_ERR(page)) { - vmf->page = page; - ret = 0; - } else switch (PTR_ERR(page)) { - case -ENOSPC: - case -ENOMEM: - ret = VM_FAULT_OOM; - break; - case -EBUSY: - ret = VM_FAULT_RETRY; - break; - case -EFAULT: - case -EINVAL: - ret = VM_FAULT_SIGBUS; - break; - default: - WARN_ON(PTR_ERR(page)); - ret = VM_FAULT_SIGBUS; - break; - } - - } - return ret; -} - -static const struct vm_operations_struct vgem_gem_vm_ops = { - .fault = vgem_gem_fault, - .open = drm_gem_vm_open, - .close = drm_gem_vm_close, -}; - static int vgem_open(struct drm_device *dev, struct drm_file *file) { struct vgem_file *vfile; @@ -159,266 +84,32 @@ static void vgem_postclose(struct drm_device *dev, struct drm_file *file) kfree(vfile); } -static struct drm_vgem_gem_object *__vgem_gem_create(struct drm_device *dev, - unsigned long size) -{ - struct drm_vgem_gem_object *obj; - int ret; - - obj = kzalloc(sizeof(*obj), GFP_KERNEL); - if (!obj) - return ERR_PTR(-ENOMEM); - - obj->base.funcs = &vgem_gem_object_funcs; - - ret = drm_gem_object_init(dev, &obj->base, roundup(size, PAGE_SIZE)); - if (ret) { - kfree(obj); - return ERR_PTR(ret); - } - - mutex_init(&obj->pages_lock); - - return obj; -} - -static void __vgem_gem_destroy(struct drm_vgem_gem_object *obj) -{ - drm_gem_object_release(&obj->base); - kfree(obj); -} - -static struct drm_gem_object *vgem_gem_create(struct drm_device *dev, - struct drm_file *file, - unsigned int *handle, - unsigned long size) -{ - struct drm_vgem_gem_object *obj; - int ret; - - obj = __vgem_gem_create(dev, size); - if (IS_ERR(obj)) - return ERR_CAST(obj); - - ret = drm_gem_handle_create(file, &obj->base, handle); - if (ret) { - drm_gem_object_put(&obj->base); - return ERR_PTR(ret); - } - - return &obj->base; -} - -static int vgem_gem_dumb_create(struct drm_file *file, struct drm_device *dev, - struct drm_mode_create_dumb *args) -{ - struct drm_gem_object *gem_object; - u64 pitch, size; - - pitch = args->width * DIV_ROUND_UP(args->bpp, 8); - size = args->height * pitch; - if (size == 0) - return -EINVAL; - - gem_object = vgem_gem_create(dev, file, &args->handle, size); - if (IS_ERR(gem_object)) - return PTR_ERR(gem_object); - - args->size = gem_object->size; - args->pitch = pitch; - - drm_gem_object_put(gem_object); - - DRM_DEBUG("Created object of size %llu\n", args->size); - - return 0; -} - static struct drm_ioctl_desc vgem_ioctls[] = { DRM_IOCTL_DEF_DRV(VGEM_FENCE_ATTACH, vgem_fence_attach_ioctl, DRM_RENDER_ALLOW), DRM_IOCTL_DEF_DRV(VGEM_FENCE_SIGNAL, vgem_fence_signal_ioctl, DRM_RENDER_ALLOW), }; -static int vgem_mmap(struct file *filp, struct vm_area_struct *vma) -{ - unsigned long flags = vma->vm_flags; - int ret; - - ret = drm_gem_mmap(filp, vma); - if (ret) - return ret; - - /* Keep the WC mmaping set by drm_gem_mmap() but our pages - * are ordinary and not special. - */ - vma->vm_flags = flags | VM_DONTEXPAND | VM_DONTDUMP; - return 0; -} - -static const struct file_operations vgem_driver_fops = { - .owner = THIS_MODULE, - .open = drm_open, - .mmap = vgem_mmap, - .poll = drm_poll, - .read = drm_read, - .unlocked_ioctl = drm_ioctl, - .compat_ioctl = drm_compat_ioctl, - .release = drm_release, -}; - -static struct page **vgem_pin_pages(struct drm_vgem_gem_object *bo) -{ - mutex_lock(&bo->pages_lock); - if (bo->pages_pin_count++ == 0) { - struct page **pages; - - pages = drm_gem_get_pages(&bo->base); - if (IS_ERR(pages)) { - bo->pages_pin_count--; - mutex_unlock(&bo->pages_lock); - return pages; - } - - bo->pages = pages; - } - mutex_unlock(&bo->pages_lock); - - return bo->pages; -} - -static void vgem_unpin_pages(struct drm_vgem_gem_object *bo) -{ - mutex_lock(&bo->pages_lock); - if (--bo->pages_pin_count == 0) { - drm_gem_put_pages(&bo->base, bo->pages, true, true); - bo->pages = NULL; - } - mutex_unlock(&bo->pages_lock); -} - -static int vgem_prime_pin(struct drm_gem_object *obj) -{ - struct drm_vgem_gem_object *bo = to_vgem_bo(obj); - long n_pages = obj->size >> PAGE_SHIFT; - struct page **pages; - - pages = vgem_pin_pages(bo); - if (IS_ERR(pages)) - return PTR_ERR(pages); - - /* Flush the object from the CPU cache so that importers can rely - * on coherent indirect access via the exported dma-address. - */ - drm_clflush_pages(pages, n_pages); +DEFINE_DRM_GEM_FOPS(vgem_driver_fops); - return 0; -} - -static void vgem_prime_unpin(struct drm_gem_object *obj) -{ - struct drm_vgem_gem_object *bo = to_vgem_bo(obj); - - vgem_unpin_pages(bo); -} - -static struct sg_table *vgem_prime_get_sg_table(struct drm_gem_object *obj) -{ - struct drm_vgem_gem_object *bo = to_vgem_bo(obj); - - return drm_prime_pages_to_sg(obj->dev, bo->pages, bo->base.size >> PAGE_SHIFT); -} - -static struct drm_gem_object* vgem_prime_import(struct drm_device *dev, - struct dma_buf *dma_buf) -{ - struct vgem_device *vgem = container_of(dev, typeof(*vgem), drm); - - return drm_gem_prime_import_dev(dev, dma_buf, &vgem->platform->dev); -} - -static struct drm_gem_object *vgem_prime_import_sg_table(struct drm_device *dev, - struct dma_buf_attachment *attach, struct sg_table *sg) +/* + * This just sets wc mode for shmem helpers. vgem doesn't have any begin/end cpu + * access ioctls, there must use coherent memory or dma-buf sharing just wont + * work. + */ +static struct drm_gem_object *vgem_gem_create_object(struct drm_device *dev, size_t size) { - struct drm_vgem_gem_object *obj; - int npages; + struct drm_gem_shmem_object *obj; - obj = __vgem_gem_create(dev, attach->dmabuf->size); - if (IS_ERR(obj)) - return ERR_CAST(obj); - - npages = PAGE_ALIGN(attach->dmabuf->size) / PAGE_SIZE; + obj = kzalloc(sizeof(*obj), GFP_KERNEL); + if (!obj) + return NULL; - obj->table = sg; - obj->pages = kvmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); - if (!obj->pages) { - __vgem_gem_destroy(obj); - return ERR_PTR(-ENOMEM); - } + obj->base.funcs = &drm_gem_shmem_funcs; + obj->map_wc = true; - obj->pages_pin_count++; /* perma-pinned */ - drm_prime_sg_to_page_array(obj->table, obj->pages, npages); return &obj->base; } -static int vgem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) -{ - struct drm_vgem_gem_object *bo = to_vgem_bo(obj); - long n_pages = obj->size >> PAGE_SHIFT; - struct page **pages; - void *vaddr; - - pages = vgem_pin_pages(bo); - if (IS_ERR(pages)) - return PTR_ERR(pages); - - vaddr = vmap(pages, n_pages, 0, pgprot_writecombine(PAGE_KERNEL)); - if (!vaddr) - return -ENOMEM; - dma_buf_map_set_vaddr(map, vaddr); - - return 0; -} - -static void vgem_prime_vunmap(struct drm_gem_object *obj, struct dma_buf_map *map) -{ - struct drm_vgem_gem_object *bo = to_vgem_bo(obj); - - vunmap(map->vaddr); - vgem_unpin_pages(bo); -} - -static int vgem_prime_mmap(struct drm_gem_object *obj, - struct vm_area_struct *vma) -{ - int ret; - - if (obj->size < vma->vm_end - vma->vm_start) - return -EINVAL; - - if (!obj->filp) - return -ENODEV; - - ret = call_mmap(obj->filp, vma); - if (ret) - return ret; - - vma_set_file(vma, obj->filp); - vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP; - vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags)); - - return 0; -} - -static const struct drm_gem_object_funcs vgem_gem_object_funcs = { - .free = vgem_gem_free_object, - .pin = vgem_prime_pin, - .unpin = vgem_prime_unpin, - .get_sg_table = vgem_prime_get_sg_table, - .vmap = vgem_prime_vmap, - .vunmap = vgem_prime_vunmap, - .vm_ops = &vgem_gem_vm_ops, -}; - static const struct drm_driver vgem_driver = { .driver_features = DRIVER_GEM | DRIVER_RENDER, .open = vgem_open, @@ -427,13 +118,8 @@ static const struct drm_driver vgem_driver = { .num_ioctls = ARRAY_SIZE(vgem_ioctls), .fops = &vgem_driver_fops, - .dumb_create = vgem_gem_dumb_create, - - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_import = vgem_prime_import, - .gem_prime_import_sg_table = vgem_prime_import_sg_table, - .gem_prime_mmap = vgem_prime_mmap, + DRM_GEM_SHMEM_DRIVER_OPS, + .gem_create_object = vgem_gem_create_object, .name = DRIVER_NAME, .desc = DRIVER_DESC, -- 2.31.0 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [Intel-gfx] [PATCH v2 4/4] drm/vgem: use shmem helpers @ 2021-06-03 15:03 ` Daniel Vetter 0 siblings, 0 replies; 23+ messages in thread From: Daniel Vetter @ 2021-06-03 15:03 UTC (permalink / raw) To: Intel Graphics Development Cc: Daniel Vetter, DRI Development, Sumit Semwal, Melissa Wen, John Stultz, Thomas Zimmermann, Daniel Vetter, Chris Wilson, Christian König Aside from deleting lots of code the real motivation here is to switch the mmap over to VM_PFNMAP, to be more consistent with what real gpu drivers do. They're all VM_PFNMP, which means get_user_pages doesn't work, and even if you try and there's a struct page behind that, touching it and mucking around with its refcount can upset drivers real bad. v2: Review from Thomas: - sort #include - drop more dead code that I didn't spot somehow v3: select DRM_GEM_SHMEM_HELPER to make it build (intel-gfx-ci) v4: I got tricked by 0cf2ef46c6c0 ("drm/shmem-helper: Use cached mappings by default"), and we need WC in vgem because vgem doesn't have explicit begin/end cpu access ioctls. Also add a comment why exactly vgem has to use wc. Cc: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Cc: John Stultz <john.stultz@linaro.org> Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: "Christian König" <christian.koenig@amd.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Cc: Melissa Wen <melissa.srw@gmail.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/Kconfig | 1 + drivers/gpu/drm/vgem/vgem_drv.c | 346 ++------------------------------ 2 files changed, 17 insertions(+), 330 deletions(-) diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 9c21527b791f..fb38ef7b3206 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -268,6 +268,7 @@ source "drivers/gpu/drm/kmb/Kconfig" config DRM_VGEM tristate "Virtual GEM provider" depends on DRM + select DRM_GEM_SHMEM_HELPER help Choose this option to get a virtual graphics memory manager, as used by Mesa's software renderer for enhanced performance. diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c index bf38a7e319d1..031e8f026cfb 100644 --- a/drivers/gpu/drm/vgem/vgem_drv.c +++ b/drivers/gpu/drm/vgem/vgem_drv.c @@ -38,6 +38,7 @@ #include <drm/drm_drv.h> #include <drm/drm_file.h> +#include <drm/drm_gem_shmem_helper.h> #include <drm/drm_ioctl.h> #include <drm/drm_managed.h> #include <drm/drm_prime.h> @@ -50,87 +51,11 @@ #define DRIVER_MAJOR 1 #define DRIVER_MINOR 0 -static const struct drm_gem_object_funcs vgem_gem_object_funcs; - static struct vgem_device { struct drm_device drm; struct platform_device *platform; } *vgem_device; -static void vgem_gem_free_object(struct drm_gem_object *obj) -{ - struct drm_vgem_gem_object *vgem_obj = to_vgem_bo(obj); - - kvfree(vgem_obj->pages); - mutex_destroy(&vgem_obj->pages_lock); - - if (obj->import_attach) - drm_prime_gem_destroy(obj, vgem_obj->table); - - drm_gem_object_release(obj); - kfree(vgem_obj); -} - -static vm_fault_t vgem_gem_fault(struct vm_fault *vmf) -{ - struct vm_area_struct *vma = vmf->vma; - struct drm_vgem_gem_object *obj = vma->vm_private_data; - /* We don't use vmf->pgoff since that has the fake offset */ - unsigned long vaddr = vmf->address; - vm_fault_t ret = VM_FAULT_SIGBUS; - loff_t num_pages; - pgoff_t page_offset; - page_offset = (vaddr - vma->vm_start) >> PAGE_SHIFT; - - num_pages = DIV_ROUND_UP(obj->base.size, PAGE_SIZE); - - if (page_offset >= num_pages) - return VM_FAULT_SIGBUS; - - mutex_lock(&obj->pages_lock); - if (obj->pages) { - get_page(obj->pages[page_offset]); - vmf->page = obj->pages[page_offset]; - ret = 0; - } - mutex_unlock(&obj->pages_lock); - if (ret) { - struct page *page; - - page = shmem_read_mapping_page( - file_inode(obj->base.filp)->i_mapping, - page_offset); - if (!IS_ERR(page)) { - vmf->page = page; - ret = 0; - } else switch (PTR_ERR(page)) { - case -ENOSPC: - case -ENOMEM: - ret = VM_FAULT_OOM; - break; - case -EBUSY: - ret = VM_FAULT_RETRY; - break; - case -EFAULT: - case -EINVAL: - ret = VM_FAULT_SIGBUS; - break; - default: - WARN_ON(PTR_ERR(page)); - ret = VM_FAULT_SIGBUS; - break; - } - - } - return ret; -} - -static const struct vm_operations_struct vgem_gem_vm_ops = { - .fault = vgem_gem_fault, - .open = drm_gem_vm_open, - .close = drm_gem_vm_close, -}; - static int vgem_open(struct drm_device *dev, struct drm_file *file) { struct vgem_file *vfile; @@ -159,266 +84,32 @@ static void vgem_postclose(struct drm_device *dev, struct drm_file *file) kfree(vfile); } -static struct drm_vgem_gem_object *__vgem_gem_create(struct drm_device *dev, - unsigned long size) -{ - struct drm_vgem_gem_object *obj; - int ret; - - obj = kzalloc(sizeof(*obj), GFP_KERNEL); - if (!obj) - return ERR_PTR(-ENOMEM); - - obj->base.funcs = &vgem_gem_object_funcs; - - ret = drm_gem_object_init(dev, &obj->base, roundup(size, PAGE_SIZE)); - if (ret) { - kfree(obj); - return ERR_PTR(ret); - } - - mutex_init(&obj->pages_lock); - - return obj; -} - -static void __vgem_gem_destroy(struct drm_vgem_gem_object *obj) -{ - drm_gem_object_release(&obj->base); - kfree(obj); -} - -static struct drm_gem_object *vgem_gem_create(struct drm_device *dev, - struct drm_file *file, - unsigned int *handle, - unsigned long size) -{ - struct drm_vgem_gem_object *obj; - int ret; - - obj = __vgem_gem_create(dev, size); - if (IS_ERR(obj)) - return ERR_CAST(obj); - - ret = drm_gem_handle_create(file, &obj->base, handle); - if (ret) { - drm_gem_object_put(&obj->base); - return ERR_PTR(ret); - } - - return &obj->base; -} - -static int vgem_gem_dumb_create(struct drm_file *file, struct drm_device *dev, - struct drm_mode_create_dumb *args) -{ - struct drm_gem_object *gem_object; - u64 pitch, size; - - pitch = args->width * DIV_ROUND_UP(args->bpp, 8); - size = args->height * pitch; - if (size == 0) - return -EINVAL; - - gem_object = vgem_gem_create(dev, file, &args->handle, size); - if (IS_ERR(gem_object)) - return PTR_ERR(gem_object); - - args->size = gem_object->size; - args->pitch = pitch; - - drm_gem_object_put(gem_object); - - DRM_DEBUG("Created object of size %llu\n", args->size); - - return 0; -} - static struct drm_ioctl_desc vgem_ioctls[] = { DRM_IOCTL_DEF_DRV(VGEM_FENCE_ATTACH, vgem_fence_attach_ioctl, DRM_RENDER_ALLOW), DRM_IOCTL_DEF_DRV(VGEM_FENCE_SIGNAL, vgem_fence_signal_ioctl, DRM_RENDER_ALLOW), }; -static int vgem_mmap(struct file *filp, struct vm_area_struct *vma) -{ - unsigned long flags = vma->vm_flags; - int ret; - - ret = drm_gem_mmap(filp, vma); - if (ret) - return ret; - - /* Keep the WC mmaping set by drm_gem_mmap() but our pages - * are ordinary and not special. - */ - vma->vm_flags = flags | VM_DONTEXPAND | VM_DONTDUMP; - return 0; -} - -static const struct file_operations vgem_driver_fops = { - .owner = THIS_MODULE, - .open = drm_open, - .mmap = vgem_mmap, - .poll = drm_poll, - .read = drm_read, - .unlocked_ioctl = drm_ioctl, - .compat_ioctl = drm_compat_ioctl, - .release = drm_release, -}; - -static struct page **vgem_pin_pages(struct drm_vgem_gem_object *bo) -{ - mutex_lock(&bo->pages_lock); - if (bo->pages_pin_count++ == 0) { - struct page **pages; - - pages = drm_gem_get_pages(&bo->base); - if (IS_ERR(pages)) { - bo->pages_pin_count--; - mutex_unlock(&bo->pages_lock); - return pages; - } - - bo->pages = pages; - } - mutex_unlock(&bo->pages_lock); - - return bo->pages; -} - -static void vgem_unpin_pages(struct drm_vgem_gem_object *bo) -{ - mutex_lock(&bo->pages_lock); - if (--bo->pages_pin_count == 0) { - drm_gem_put_pages(&bo->base, bo->pages, true, true); - bo->pages = NULL; - } - mutex_unlock(&bo->pages_lock); -} - -static int vgem_prime_pin(struct drm_gem_object *obj) -{ - struct drm_vgem_gem_object *bo = to_vgem_bo(obj); - long n_pages = obj->size >> PAGE_SHIFT; - struct page **pages; - - pages = vgem_pin_pages(bo); - if (IS_ERR(pages)) - return PTR_ERR(pages); - - /* Flush the object from the CPU cache so that importers can rely - * on coherent indirect access via the exported dma-address. - */ - drm_clflush_pages(pages, n_pages); +DEFINE_DRM_GEM_FOPS(vgem_driver_fops); - return 0; -} - -static void vgem_prime_unpin(struct drm_gem_object *obj) -{ - struct drm_vgem_gem_object *bo = to_vgem_bo(obj); - - vgem_unpin_pages(bo); -} - -static struct sg_table *vgem_prime_get_sg_table(struct drm_gem_object *obj) -{ - struct drm_vgem_gem_object *bo = to_vgem_bo(obj); - - return drm_prime_pages_to_sg(obj->dev, bo->pages, bo->base.size >> PAGE_SHIFT); -} - -static struct drm_gem_object* vgem_prime_import(struct drm_device *dev, - struct dma_buf *dma_buf) -{ - struct vgem_device *vgem = container_of(dev, typeof(*vgem), drm); - - return drm_gem_prime_import_dev(dev, dma_buf, &vgem->platform->dev); -} - -static struct drm_gem_object *vgem_prime_import_sg_table(struct drm_device *dev, - struct dma_buf_attachment *attach, struct sg_table *sg) +/* + * This just sets wc mode for shmem helpers. vgem doesn't have any begin/end cpu + * access ioctls, there must use coherent memory or dma-buf sharing just wont + * work. + */ +static struct drm_gem_object *vgem_gem_create_object(struct drm_device *dev, size_t size) { - struct drm_vgem_gem_object *obj; - int npages; + struct drm_gem_shmem_object *obj; - obj = __vgem_gem_create(dev, attach->dmabuf->size); - if (IS_ERR(obj)) - return ERR_CAST(obj); - - npages = PAGE_ALIGN(attach->dmabuf->size) / PAGE_SIZE; + obj = kzalloc(sizeof(*obj), GFP_KERNEL); + if (!obj) + return NULL; - obj->table = sg; - obj->pages = kvmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); - if (!obj->pages) { - __vgem_gem_destroy(obj); - return ERR_PTR(-ENOMEM); - } + obj->base.funcs = &drm_gem_shmem_funcs; + obj->map_wc = true; - obj->pages_pin_count++; /* perma-pinned */ - drm_prime_sg_to_page_array(obj->table, obj->pages, npages); return &obj->base; } -static int vgem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) -{ - struct drm_vgem_gem_object *bo = to_vgem_bo(obj); - long n_pages = obj->size >> PAGE_SHIFT; - struct page **pages; - void *vaddr; - - pages = vgem_pin_pages(bo); - if (IS_ERR(pages)) - return PTR_ERR(pages); - - vaddr = vmap(pages, n_pages, 0, pgprot_writecombine(PAGE_KERNEL)); - if (!vaddr) - return -ENOMEM; - dma_buf_map_set_vaddr(map, vaddr); - - return 0; -} - -static void vgem_prime_vunmap(struct drm_gem_object *obj, struct dma_buf_map *map) -{ - struct drm_vgem_gem_object *bo = to_vgem_bo(obj); - - vunmap(map->vaddr); - vgem_unpin_pages(bo); -} - -static int vgem_prime_mmap(struct drm_gem_object *obj, - struct vm_area_struct *vma) -{ - int ret; - - if (obj->size < vma->vm_end - vma->vm_start) - return -EINVAL; - - if (!obj->filp) - return -ENODEV; - - ret = call_mmap(obj->filp, vma); - if (ret) - return ret; - - vma_set_file(vma, obj->filp); - vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP; - vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags)); - - return 0; -} - -static const struct drm_gem_object_funcs vgem_gem_object_funcs = { - .free = vgem_gem_free_object, - .pin = vgem_prime_pin, - .unpin = vgem_prime_unpin, - .get_sg_table = vgem_prime_get_sg_table, - .vmap = vgem_prime_vmap, - .vunmap = vgem_prime_vunmap, - .vm_ops = &vgem_gem_vm_ops, -}; - static const struct drm_driver vgem_driver = { .driver_features = DRIVER_GEM | DRIVER_RENDER, .open = vgem_open, @@ -427,13 +118,8 @@ static const struct drm_driver vgem_driver = { .num_ioctls = ARRAY_SIZE(vgem_ioctls), .fops = &vgem_driver_fops, - .dumb_create = vgem_gem_dumb_create, - - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_import = vgem_prime_import, - .gem_prime_import_sg_table = vgem_prime_import_sg_table, - .gem_prime_mmap = vgem_prime_mmap, + DRM_GEM_SHMEM_DRIVER_OPS, + .gem_create_object = vgem_gem_create_object, .name = DRIVER_NAME, .desc = DRIVER_DESC, -- 2.31.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [Intel-gfx] [PATCH v2 4/4] drm/vgem: use shmem helpers 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter @ 2021-06-03 18:42 ` Andi Shyti -1 siblings, 0 replies; 23+ messages in thread From: Andi Shyti @ 2021-06-03 18:42 UTC (permalink / raw) To: Daniel Vetter Cc: Christian König, Intel Graphics Development, DRI Development, Chris Wilson, Melissa Wen, Thomas Zimmermann, Daniel Vetter Hi Daniel, > +/* > + * This just sets wc mode for shmem helpers. vgem doesn't have any begin/end cpu > + * access ioctls, there must use coherent memory or dma-buf sharing just wont > + * work. > + */ > +static struct drm_gem_object *vgem_gem_create_object(struct drm_device *dev, size_t size) > { > - struct drm_vgem_gem_object *obj; > - int npages; > + struct drm_gem_shmem_object *obj; > > - obj = __vgem_gem_create(dev, attach->dmabuf->size); > - if (IS_ERR(obj)) > - return ERR_CAST(obj); > - > - npages = PAGE_ALIGN(attach->dmabuf->size) / PAGE_SIZE; > + obj = kzalloc(sizeof(*obj), GFP_KERNEL); > + if (!obj) > + return NULL; > > - obj->table = sg; > - obj->pages = kvmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); > - if (!obj->pages) { > - __vgem_gem_destroy(obj); > - return ERR_PTR(-ENOMEM); > - } > + obj->base.funcs = &drm_gem_shmem_funcs; > + obj->map_wc = true; > > - obj->pages_pin_count++; /* perma-pinned */ > - drm_prime_sg_to_page_array(obj->table, obj->pages, npages); > return &obj->base; here you are allocating a bigger object than what you are returning, in size. How does it get freed? Andi ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [Intel-gfx] [PATCH v2 4/4] drm/vgem: use shmem helpers @ 2021-06-03 18:42 ` Andi Shyti 0 siblings, 0 replies; 23+ messages in thread From: Andi Shyti @ 2021-06-03 18:42 UTC (permalink / raw) To: Daniel Vetter Cc: Christian König, Intel Graphics Development, DRI Development, Chris Wilson, Melissa Wen, John Stultz, Thomas Zimmermann, Daniel Vetter, Sumit Semwal Hi Daniel, > +/* > + * This just sets wc mode for shmem helpers. vgem doesn't have any begin/end cpu > + * access ioctls, there must use coherent memory or dma-buf sharing just wont > + * work. > + */ > +static struct drm_gem_object *vgem_gem_create_object(struct drm_device *dev, size_t size) > { > - struct drm_vgem_gem_object *obj; > - int npages; > + struct drm_gem_shmem_object *obj; > > - obj = __vgem_gem_create(dev, attach->dmabuf->size); > - if (IS_ERR(obj)) > - return ERR_CAST(obj); > - > - npages = PAGE_ALIGN(attach->dmabuf->size) / PAGE_SIZE; > + obj = kzalloc(sizeof(*obj), GFP_KERNEL); > + if (!obj) > + return NULL; > > - obj->table = sg; > - obj->pages = kvmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); > - if (!obj->pages) { > - __vgem_gem_destroy(obj); > - return ERR_PTR(-ENOMEM); > - } > + obj->base.funcs = &drm_gem_shmem_funcs; > + obj->map_wc = true; > > - obj->pages_pin_count++; /* perma-pinned */ > - drm_prime_sg_to_page_array(obj->table, obj->pages, npages); > return &obj->base; here you are allocating a bigger object than what you are returning, in size. How does it get freed? Andi _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [Intel-gfx] [PATCH v2 4/4] drm/vgem: use shmem helpers 2021-06-03 18:42 ` Andi Shyti @ 2021-06-03 18:54 ` Daniel Vetter -1 siblings, 0 replies; 23+ messages in thread From: Daniel Vetter @ 2021-06-03 18:54 UTC (permalink / raw) To: Andi Shyti Cc: Christian König, Daniel Vetter, Intel Graphics Development, DRI Development, Chris Wilson, Melissa Wen, Thomas Zimmermann, Daniel Vetter On Thu, Jun 03, 2021 at 09:42:00PM +0300, Andi Shyti wrote: > Hi Daniel, > > > +/* > > + * This just sets wc mode for shmem helpers. vgem doesn't have any begin/end cpu > > + * access ioctls, there must use coherent memory or dma-buf sharing just wont > > + * work. > > + */ > > +static struct drm_gem_object *vgem_gem_create_object(struct drm_device *dev, size_t size) > > { > > - struct drm_vgem_gem_object *obj; > > - int npages; > > + struct drm_gem_shmem_object *obj; > > > > - obj = __vgem_gem_create(dev, attach->dmabuf->size); > > - if (IS_ERR(obj)) > > - return ERR_CAST(obj); > > - > > - npages = PAGE_ALIGN(attach->dmabuf->size) / PAGE_SIZE; > > + obj = kzalloc(sizeof(*obj), GFP_KERNEL); > > + if (!obj) > > + return NULL; > > > > - obj->table = sg; > > - obj->pages = kvmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); > > - if (!obj->pages) { > > - __vgem_gem_destroy(obj); > > - return ERR_PTR(-ENOMEM); > > - } > > + obj->base.funcs = &drm_gem_shmem_funcs; > > + obj->map_wc = true; > > > > - obj->pages_pin_count++; /* perma-pinned */ > > - drm_prime_sg_to_page_array(obj->table, obj->pages, npages); > > return &obj->base; > > here you are allocating a bigger object than what you are > returning, in size. How does it get freed? We're using the drm_gem_shmem_helper.c helpers, which set up all the shmem functions for us, including an appropriate free callback. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [Intel-gfx] [PATCH v2 4/4] drm/vgem: use shmem helpers @ 2021-06-03 18:54 ` Daniel Vetter 0 siblings, 0 replies; 23+ messages in thread From: Daniel Vetter @ 2021-06-03 18:54 UTC (permalink / raw) To: Andi Shyti Cc: Christian König, Daniel Vetter, Intel Graphics Development, DRI Development, Chris Wilson, Melissa Wen, John Stultz, Thomas Zimmermann, Daniel Vetter, Sumit Semwal On Thu, Jun 03, 2021 at 09:42:00PM +0300, Andi Shyti wrote: > Hi Daniel, > > > +/* > > + * This just sets wc mode for shmem helpers. vgem doesn't have any begin/end cpu > > + * access ioctls, there must use coherent memory or dma-buf sharing just wont > > + * work. > > + */ > > +static struct drm_gem_object *vgem_gem_create_object(struct drm_device *dev, size_t size) > > { > > - struct drm_vgem_gem_object *obj; > > - int npages; > > + struct drm_gem_shmem_object *obj; > > > > - obj = __vgem_gem_create(dev, attach->dmabuf->size); > > - if (IS_ERR(obj)) > > - return ERR_CAST(obj); > > - > > - npages = PAGE_ALIGN(attach->dmabuf->size) / PAGE_SIZE; > > + obj = kzalloc(sizeof(*obj), GFP_KERNEL); > > + if (!obj) > > + return NULL; > > > > - obj->table = sg; > > - obj->pages = kvmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); > > - if (!obj->pages) { > > - __vgem_gem_destroy(obj); > > - return ERR_PTR(-ENOMEM); > > - } > > + obj->base.funcs = &drm_gem_shmem_funcs; > > + obj->map_wc = true; > > > > - obj->pages_pin_count++; /* perma-pinned */ > > - drm_prime_sg_to_page_array(obj->table, obj->pages, npages); > > return &obj->base; > > here you are allocating a bigger object than what you are > returning, in size. How does it get freed? We're using the drm_gem_shmem_helper.c helpers, which set up all the shmem functions for us, including an appropriate free callback. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 23+ messages in thread
* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for shmem helpers for igt 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter ` (4 preceding siblings ...) (?) @ 2021-06-03 15:58 ` Patchwork -1 siblings, 0 replies; 23+ messages in thread From: Patchwork @ 2021-06-03 15:58 UTC (permalink / raw) To: Daniel Vetter; +Cc: intel-gfx == Series Details == Series: shmem helpers for igt URL : https://patchwork.freedesktop.org/series/90947/ State : warning == Summary == $ dim checkpatch origin/drm-tip 16d2d93866c0 drm/gem-shmem-helper: Export drm_gem_shmem_funcs -:49: WARNING:FROM_SIGN_OFF_MISMATCH: From:/Signed-off-by: email address mismatch: 'From: Daniel Vetter <daniel.vetter@ffwll.ch>' != 'Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>' total: 0 errors, 1 warnings, 0 checks, 22 lines checked 9b0d01123c46 drm/shmem-helper: Switch to vmf_insert_pfn -:52: WARNING:FROM_SIGN_OFF_MISMATCH: From:/Signed-off-by: email address mismatch: 'From: Daniel Vetter <daniel.vetter@ffwll.ch>' != 'Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>' total: 0 errors, 1 warnings, 0 checks, 24 lines checked 03c134e820dc drm/shmem-helper: Align to page size in dumb_create -:37: WARNING:FROM_SIGN_OFF_MISMATCH: From:/Signed-off-by: email address mismatch: 'From: Daniel Vetter <daniel.vetter@ffwll.ch>' != 'Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>' total: 0 errors, 1 warnings, 0 checks, 15 lines checked 826ca3131cf3 drm/vgem: use shmem helpers -:22: ERROR:GIT_COMMIT_ID: Please use git commit description style 'commit <12+ chars of sha1> ("<title line>")' - ie: 'commit 0cf2ef46c6c0 ("drm/shmem-helper: Use cached mappings by default")' #22: v4: I got tricked by 0cf2ef46c6c0 ("drm/shmem-helper: Use cached -:335: WARNING:TYPO_SPELLING: 'wont' may be misspelled - perhaps 'won't'? #335: FILE: drivers/gpu/drm/vgem/vgem_drv.c:96: + * access ioctls, there must use coherent memory or dma-buf sharing just wont ^^^^ -:444: WARNING:FROM_SIGN_OFF_MISMATCH: From:/Signed-off-by: email address mismatch: 'From: Daniel Vetter <daniel.vetter@ffwll.ch>' != 'Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>' total: 1 errors, 2 warnings, 0 checks, 395 lines checked _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 23+ messages in thread
* [Intel-gfx] ✗ Fi.CI.BAT: failure for shmem helpers for igt 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter ` (5 preceding siblings ...) (?) @ 2021-06-03 16:29 ` Patchwork -1 siblings, 0 replies; 23+ messages in thread From: Patchwork @ 2021-06-03 16:29 UTC (permalink / raw) To: Daniel Vetter; +Cc: intel-gfx [-- Attachment #1.1: Type: text/plain, Size: 11751 bytes --] == Series Details == Series: shmem helpers for igt URL : https://patchwork.freedesktop.org/series/90947/ State : failure == Summary == CI Bug Log - changes from CI_DRM_10165 -> Patchwork_20273 ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_20273 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_20273, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/index.html Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_20273: ### IGT changes ### #### Possible regressions #### * igt@prime_vgem@basic-fence-mmap: - fi-bsw-nick: [PASS][1] -> [INCOMPLETE][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-bsw-nick/igt@prime_vgem@basic-fence-mmap.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-bsw-nick/igt@prime_vgem@basic-fence-mmap.html * igt@prime_vgem@basic-fence-read: - fi-bsw-kefka: [PASS][3] -> [INCOMPLETE][4] +1 similar issue [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-bsw-kefka/igt@prime_vgem@basic-fence-read.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-bsw-kefka/igt@prime_vgem@basic-fence-read.html - fi-ilk-650: [PASS][5] -> [INCOMPLETE][6] +1 similar issue [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-ilk-650/igt@prime_vgem@basic-fence-read.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-ilk-650/igt@prime_vgem@basic-fence-read.html - fi-elk-e7500: [PASS][7] -> [INCOMPLETE][8] +1 similar issue [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-elk-e7500/igt@prime_vgem@basic-fence-read.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-elk-e7500/igt@prime_vgem@basic-fence-read.html - fi-bwr-2160: [PASS][9] -> [INCOMPLETE][10] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-bwr-2160/igt@prime_vgem@basic-fence-read.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-bwr-2160/igt@prime_vgem@basic-fence-read.html * igt@prime_vgem@basic-gtt: - fi-ilk-650: [PASS][11] -> [FAIL][12] +2 similar issues [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-ilk-650/igt@prime_vgem@basic-gtt.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-ilk-650/igt@prime_vgem@basic-gtt.html - fi-elk-e7500: [PASS][13] -> [FAIL][14] +2 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-elk-e7500/igt@prime_vgem@basic-gtt.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-elk-e7500/igt@prime_vgem@basic-gtt.html - fi-bwr-2160: [PASS][15] -> [FAIL][16] +2 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-bwr-2160/igt@prime_vgem@basic-gtt.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-bwr-2160/igt@prime_vgem@basic-gtt.html * igt@prime_vgem@basic-read: - fi-bsw-nick: [PASS][17] -> [FAIL][18] +3 similar issues [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-bsw-nick/igt@prime_vgem@basic-read.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-bsw-nick/igt@prime_vgem@basic-read.html - fi-bsw-kefka: [PASS][19] -> [FAIL][20] +2 similar issues [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-bsw-kefka/igt@prime_vgem@basic-read.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-bsw-kefka/igt@prime_vgem@basic-read.html * igt@prime_vgem@basic-write: - fi-pnv-d510: [PASS][21] -> [FAIL][22] +4 similar issues [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-pnv-d510/igt@prime_vgem@basic-write.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-pnv-d510/igt@prime_vgem@basic-write.html Known issues ------------ Here are the changes found in Patchwork_20273 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@amdgpu/amd_cs_nop@sync-fork-compute0: - fi-snb-2600: NOTRUN -> [SKIP][23] ([fdo#109271]) +17 similar issues [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-snb-2600/igt@amdgpu/amd_cs_nop@sync-fork-compute0.html * igt@kms_chamelium@common-hpd-after-suspend: - fi-kbl-7500u: [PASS][24] -> [DMESG-FAIL][25] ([i915#165]) [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-kbl-7500u/igt@kms_chamelium@common-hpd-after-suspend.html [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-kbl-7500u/igt@kms_chamelium@common-hpd-after-suspend.html #### Possible fixes #### * igt@i915_selftest@live@hangcheck: - {fi-hsw-gt1}: [DMESG-WARN][26] ([i915#3303]) -> [PASS][27] [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-hsw-gt1/igt@i915_selftest@live@hangcheck.html [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-hsw-gt1/igt@i915_selftest@live@hangcheck.html - fi-snb-2600: [INCOMPLETE][28] ([i915#2782]) -> [PASS][29] [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-snb-2600/igt@i915_selftest@live@hangcheck.html [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-snb-2600/igt@i915_selftest@live@hangcheck.html * igt@kms_frontbuffer_tracking@basic: - fi-tgl-u2: [FAIL][30] ([i915#2416]) -> [PASS][31] [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-tgl-u2/igt@kms_frontbuffer_tracking@basic.html [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-tgl-u2/igt@kms_frontbuffer_tracking@basic.html #### Warnings #### * igt@i915_selftest@live@execlists: - fi-cfl-8109u: [INCOMPLETE][32] ([i915#3462]) -> [DMESG-FAIL][33] ([i915#3462]) [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-cfl-8109u/igt@i915_selftest@live@execlists.html [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-cfl-8109u/igt@i915_selftest@live@execlists.html - fi-bsw-nick: [DMESG-FAIL][34] ([i915#3462]) -> [INCOMPLETE][35] ([i915#2782] / [i915#2940] / [i915#3462]) [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-bsw-nick/igt@i915_selftest@live@execlists.html [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-bsw-nick/igt@i915_selftest@live@execlists.html - fi-icl-u2: [DMESG-FAIL][36] ([i915#3462]) -> [INCOMPLETE][37] ([i915#2782] / [i915#3462]) [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-icl-u2/igt@i915_selftest@live@execlists.html [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-icl-u2/igt@i915_selftest@live@execlists.html * igt@runner@aborted: - fi-cfl-8109u: [FAIL][38] ([i915#3363]) -> [FAIL][39] ([i915#2426] / [i915#3363]) [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-cfl-8109u/igt@runner@aborted.html [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-cfl-8109u/igt@runner@aborted.html - fi-icl-u2: [FAIL][40] ([i915#2426] / [i915#2782] / [i915#3363]) -> [FAIL][41] ([i915#2782] / [i915#3363]) [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-icl-u2/igt@runner@aborted.html [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-icl-u2/igt@runner@aborted.html - fi-bdw-5557u: [FAIL][42] ([i915#3462]) -> [FAIL][43] ([i915#1602] / [i915#2029]) [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-bdw-5557u/igt@runner@aborted.html [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-bdw-5557u/igt@runner@aborted.html - fi-kbl-soraka: [FAIL][44] ([i915#1436] / [i915#3363]) -> [FAIL][45] ([i915#1436] / [i915#2426] / [i915#3363]) [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-kbl-soraka/igt@runner@aborted.html [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-kbl-soraka/igt@runner@aborted.html - fi-cml-u2: [FAIL][46] ([i915#2082] / [i915#2426] / [i915#3363] / [i915#3462]) -> [FAIL][47] ([i915#3363] / [i915#3462]) [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-cml-u2/igt@runner@aborted.html [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-cml-u2/igt@runner@aborted.html - fi-cml-s: [FAIL][48] ([i915#3363] / [i915#3462]) -> [FAIL][49] ([i915#2082] / [i915#2426] / [i915#3363] / [i915#3462]) [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-cml-s/igt@runner@aborted.html [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-cml-s/igt@runner@aborted.html - fi-cfl-guc: [FAIL][50] ([i915#3363]) -> [FAIL][51] ([i915#2426] / [i915#3363]) [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-cfl-guc/igt@runner@aborted.html [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-cfl-guc/igt@runner@aborted.html - fi-skl-guc: [FAIL][52] ([i915#1436] / [i915#2426] / [i915#3363]) -> [FAIL][53] ([i915#1436] / [i915#3363]) [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10165/fi-skl-guc/igt@runner@aborted.html [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/fi-skl-guc/igt@runner@aborted.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436 [i915#1602]: https://gitlab.freedesktop.org/drm/intel/issues/1602 [i915#165]: https://gitlab.freedesktop.org/drm/intel/issues/165 [i915#2029]: https://gitlab.freedesktop.org/drm/intel/issues/2029 [i915#2082]: https://gitlab.freedesktop.org/drm/intel/issues/2082 [i915#2416]: https://gitlab.freedesktop.org/drm/intel/issues/2416 [i915#2426]: https://gitlab.freedesktop.org/drm/intel/issues/2426 [i915#2782]: https://gitlab.freedesktop.org/drm/intel/issues/2782 [i915#2940]: https://gitlab.freedesktop.org/drm/intel/issues/2940 [i915#3277]: https://gitlab.freedesktop.org/drm/intel/issues/3277 [i915#3283]: https://gitlab.freedesktop.org/drm/intel/issues/3283 [i915#3303]: https://gitlab.freedesktop.org/drm/intel/issues/3303 [i915#3363]: https://gitlab.freedesktop.org/drm/intel/issues/3363 [i915#3462]: https://gitlab.freedesktop.org/drm/intel/issues/3462 Participating hosts (46 -> 42) ------------------------------ Missing (4): fi-ilk-m540 fi-bsw-cyan fi-bdw-samus fi-hsw-4200u Build changes ------------- * IGT: IGT_6098 -> IGTPW_5854 * Linux: CI_DRM_10165 -> Patchwork_20273 CI-20190529: 20190529 CI_DRM_10165: 91b8d0406bd51d9bca01127e0bcb585312fd2950 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_5854: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5854/index.html IGT_6098: 1fbc1e7d602f96a7f4e2b95057eef994656b8e74 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_20273: 826ca3131cf332ea64811026fce266aa4441665c @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 826ca3131cf3 drm/vgem: use shmem helpers 03c134e820dc drm/shmem-helper: Align to page size in dumb_create 9b0d01123c46 drm/shmem-helper: Switch to vmf_insert_pfn 16d2d93866c0 drm/gem-shmem-helper: Export drm_gem_shmem_funcs == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20273/index.html [-- Attachment #1.2: Type: text/html, Size: 15214 bytes --] [-- Attachment #2: Type: text/plain, Size: 160 bytes --] _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2021-06-03 20:43 UTC | newest] Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-06-03 15:03 [PATCH v2 0/4] shmem helpers for igt Daniel Vetter 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter 2021-06-03 15:03 ` [PATCH v2 1/4] drm/gem-shmem-helper: Export drm_gem_shmem_funcs Daniel Vetter 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter 2021-06-03 15:54 ` Thomas Zimmermann 2021-06-03 15:54 ` [Intel-gfx] " Thomas Zimmermann 2021-06-03 15:03 ` [PATCH v2 2/4] drm/shmem-helper: Switch to vmf_insert_pfn Daniel Vetter 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter 2021-06-03 20:42 ` kernel test robot 2021-06-03 20:42 ` kernel test robot 2021-06-03 20:42 ` kernel test robot 2021-06-03 15:03 ` [PATCH v2 3/4] drm/shmem-helper: Align to page size in dumb_create Daniel Vetter 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter 2021-06-03 18:59 ` Thomas Zimmermann 2021-06-03 18:59 ` [Intel-gfx] " Thomas Zimmermann 2021-06-03 15:03 ` [PATCH v2 4/4] drm/vgem: use shmem helpers Daniel Vetter 2021-06-03 15:03 ` [Intel-gfx] " Daniel Vetter 2021-06-03 18:42 ` Andi Shyti 2021-06-03 18:42 ` Andi Shyti 2021-06-03 18:54 ` Daniel Vetter 2021-06-03 18:54 ` Daniel Vetter 2021-06-03 15:58 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for shmem helpers for igt Patchwork 2021-06-03 16:29 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
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.