Dave Airlie
2023-Jul-31 19:15 UTC
[Nouveau] [PATCH] drm/nouveau: fixup the uapi header file.
From: Dave Airlie <airlied at redhat.com> nouveau > 10 years ago had a plan for new multiplexer inside a multiplexer API using nvif. It never fully reached fruition, fast forward 10 years, and the new vulkan driver is avoiding libdrm and calling ioctls, and these 3 ioctls, getparam, channel alloc + free don't seem to be things we'd want to use nvif for. Undeprecate and put them into the uapi header so we can just copy it into mesa later. Signed-off-by: Dave Airlie <airlied at redhat.com> --- drivers/gpu/drm/nouveau/nouveau_abi16.h | 41 --------------------- include/uapi/drm/nouveau_drm.h | 48 +++++++++++++++++++++++-- 2 files changed, 45 insertions(+), 44 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_abi16.h b/drivers/gpu/drm/nouveau/nouveau_abi16.h index 27eae85f33e6..d5d80d0d9011 100644 --- a/drivers/gpu/drm/nouveau/nouveau_abi16.h +++ b/drivers/gpu/drm/nouveau/nouveau_abi16.h @@ -43,28 +43,6 @@ int nouveau_abi16_usif(struct drm_file *, void *data, u32 size); #define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1) #define NOUVEAU_GEM_DOMAIN_GART (1 << 2) -struct drm_nouveau_channel_alloc { - uint32_t fb_ctxdma_handle; - uint32_t tt_ctxdma_handle; - - int channel; - uint32_t pushbuf_domains; - - /* Notifier memory */ - uint32_t notifier_handle; - - /* DRM-enforced subchannel assignments */ - struct { - uint32_t handle; - uint32_t grclass; - } subchan[8]; - uint32_t nr_subchan; -}; - -struct drm_nouveau_channel_free { - int channel; -}; - struct drm_nouveau_grobj_alloc { int channel; uint32_t handle; @@ -83,31 +61,12 @@ struct drm_nouveau_gpuobj_free { uint32_t handle; }; -#define NOUVEAU_GETPARAM_PCI_VENDOR 3 -#define NOUVEAU_GETPARAM_PCI_DEVICE 4 -#define NOUVEAU_GETPARAM_BUS_TYPE 5 -#define NOUVEAU_GETPARAM_FB_SIZE 8 -#define NOUVEAU_GETPARAM_AGP_SIZE 9 -#define NOUVEAU_GETPARAM_CHIPSET_ID 11 -#define NOUVEAU_GETPARAM_VM_VRAM_BASE 12 -#define NOUVEAU_GETPARAM_GRAPH_UNITS 13 -#define NOUVEAU_GETPARAM_PTIMER_TIME 14 -#define NOUVEAU_GETPARAM_HAS_BO_USAGE 15 -#define NOUVEAU_GETPARAM_HAS_PAGEFLIP 16 -struct drm_nouveau_getparam { - uint64_t param; - uint64_t value; -}; - struct drm_nouveau_setparam { uint64_t param; uint64_t value; }; -#define DRM_IOCTL_NOUVEAU_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GETPARAM, struct drm_nouveau_getparam) #define DRM_IOCTL_NOUVEAU_SETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SETPARAM, struct drm_nouveau_setparam) -#define DRM_IOCTL_NOUVEAU_CHANNEL_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_ALLOC, struct drm_nouveau_channel_alloc) -#define DRM_IOCTL_NOUVEAU_CHANNEL_FREE DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_FREE, struct drm_nouveau_channel_free) #define DRM_IOCTL_NOUVEAU_GROBJ_ALLOC DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GROBJ_ALLOC, struct drm_nouveau_grobj_alloc) #define DRM_IOCTL_NOUVEAU_NOTIFIEROBJ_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_NOTIFIEROBJ_ALLOC, struct drm_nouveau_notifierobj_alloc) #define DRM_IOCTL_NOUVEAU_GPUOBJ_FREE DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GPUOBJ_FREE, struct drm_nouveau_gpuobj_free) diff --git a/include/uapi/drm/nouveau_drm.h b/include/uapi/drm/nouveau_drm.h index 853a327433d3..1cd97b3d8eda 100644 --- a/include/uapi/drm/nouveau_drm.h +++ b/include/uapi/drm/nouveau_drm.h @@ -33,6 +33,44 @@ extern "C" { #endif +#define NOUVEAU_GETPARAM_PCI_VENDOR 3 +#define NOUVEAU_GETPARAM_PCI_DEVICE 4 +#define NOUVEAU_GETPARAM_BUS_TYPE 5 +#define NOUVEAU_GETPARAM_FB_SIZE 8 +#define NOUVEAU_GETPARAM_AGP_SIZE 9 +#define NOUVEAU_GETPARAM_CHIPSET_ID 11 +#define NOUVEAU_GETPARAM_VM_VRAM_BASE 12 +#define NOUVEAU_GETPARAM_GRAPH_UNITS 13 +#define NOUVEAU_GETPARAM_PTIMER_TIME 14 +#define NOUVEAU_GETPARAM_HAS_BO_USAGE 15 +#define NOUVEAU_GETPARAM_HAS_PAGEFLIP 16 +struct drm_nouveau_getparam { + uint64_t param; + uint64_t value; +}; + +struct drm_nouveau_channel_alloc { + uint32_t fb_ctxdma_handle; + uint32_t tt_ctxdma_handle; + + int channel; + uint32_t pushbuf_domains; + + /* Notifier memory */ + uint32_t notifier_handle; + + /* DRM-enforced subchannel assignments */ + struct { + uint32_t handle; + uint32_t grclass; + } subchan[8]; + uint32_t nr_subchan; +}; + +struct drm_nouveau_channel_free { + int channel; +}; + #define NOUVEAU_GEM_DOMAIN_CPU (1 << 0) #define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1) #define NOUVEAU_GEM_DOMAIN_GART (1 << 2) @@ -126,10 +164,10 @@ struct drm_nouveau_gem_cpu_fini { __u32 handle; }; -#define DRM_NOUVEAU_GETPARAM 0x00 /* deprecated */ +#define DRM_NOUVEAU_GETPARAM 0x00 #define DRM_NOUVEAU_SETPARAM 0x01 /* deprecated */ -#define DRM_NOUVEAU_CHANNEL_ALLOC 0x02 /* deprecated */ -#define DRM_NOUVEAU_CHANNEL_FREE 0x03 /* deprecated */ +#define DRM_NOUVEAU_CHANNEL_ALLOC 0x02 +#define DRM_NOUVEAU_CHANNEL_FREE 0x03 #define DRM_NOUVEAU_GROBJ_ALLOC 0x04 /* deprecated */ #define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC 0x05 /* deprecated */ #define DRM_NOUVEAU_GPUOBJ_FREE 0x06 /* deprecated */ @@ -188,6 +226,10 @@ struct drm_nouveau_svm_bind { #define NOUVEAU_SVM_BIND_TARGET__GPU_VRAM (1UL << 31) +#define DRM_IOCTL_NOUVEAU_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GETPARAM, struct drm_nouveau_getparam) +#define DRM_IOCTL_NOUVEAU_CHANNEL_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_ALLOC, struct drm_nouveau_channel_alloc) +#define DRM_IOCTL_NOUVEAU_CHANNEL_FREE DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_FREE, struct drm_nouveau_channel_free) + #define DRM_IOCTL_NOUVEAU_SVM_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_INIT, struct drm_nouveau_svm_init) #define DRM_IOCTL_NOUVEAU_SVM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_BIND, struct drm_nouveau_svm_bind) -- 2.41.0
Karol Herbst
2023-Aug-01 09:37 UTC
[Nouveau] [PATCH] drm/nouveau: fixup the uapi header file.
On Mon, Jul 31, 2023 at 9:16?PM Dave Airlie <airlied at gmail.com> wrote:> > From: Dave Airlie <airlied at redhat.com> > > nouveau > 10 years ago had a plan for new multiplexer inside a multiplexer > API using nvif. It never fully reached fruition, fast forward 10 years, > and the new vulkan driver is avoiding libdrm and calling ioctls, and > these 3 ioctls, getparam, channel alloc + free don't seem to be things > we'd want to use nvif for. > > Undeprecate and put them into the uapi header so we can just copy it > into mesa later. > > Signed-off-by: Dave Airlie <airlied at redhat.com> > --- > drivers/gpu/drm/nouveau/nouveau_abi16.h | 41 --------------------- > include/uapi/drm/nouveau_drm.h | 48 +++++++++++++++++++++++-- > 2 files changed, 45 insertions(+), 44 deletions(-) > > diff --git a/drivers/gpu/drm/nouveau/nouveau_abi16.h b/drivers/gpu/drm/nouveau/nouveau_abi16.h > index 27eae85f33e6..d5d80d0d9011 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_abi16.h > +++ b/drivers/gpu/drm/nouveau/nouveau_abi16.h > @@ -43,28 +43,6 @@ int nouveau_abi16_usif(struct drm_file *, void *data, u32 size); > #define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1) > #define NOUVEAU_GEM_DOMAIN_GART (1 << 2) > > -struct drm_nouveau_channel_alloc { > - uint32_t fb_ctxdma_handle; > - uint32_t tt_ctxdma_handle; > - > - int channel; > - uint32_t pushbuf_domains; > - > - /* Notifier memory */ > - uint32_t notifier_handle; > - > - /* DRM-enforced subchannel assignments */ > - struct { > - uint32_t handle; > - uint32_t grclass; > - } subchan[8]; > - uint32_t nr_subchan; > -}; > - > -struct drm_nouveau_channel_free { > - int channel; > -}; > - > struct drm_nouveau_grobj_alloc { > int channel; > uint32_t handle; > @@ -83,31 +61,12 @@ struct drm_nouveau_gpuobj_free { > uint32_t handle; > }; > > -#define NOUVEAU_GETPARAM_PCI_VENDOR 3 > -#define NOUVEAU_GETPARAM_PCI_DEVICE 4 > -#define NOUVEAU_GETPARAM_BUS_TYPE 5 > -#define NOUVEAU_GETPARAM_FB_SIZE 8 > -#define NOUVEAU_GETPARAM_AGP_SIZE 9 > -#define NOUVEAU_GETPARAM_CHIPSET_ID 11 > -#define NOUVEAU_GETPARAM_VM_VRAM_BASE 12 > -#define NOUVEAU_GETPARAM_GRAPH_UNITS 13 > -#define NOUVEAU_GETPARAM_PTIMER_TIME 14 > -#define NOUVEAU_GETPARAM_HAS_BO_USAGE 15 > -#define NOUVEAU_GETPARAM_HAS_PAGEFLIP 16 > -struct drm_nouveau_getparam { > - uint64_t param; > - uint64_t value; > -}; > - > struct drm_nouveau_setparam { > uint64_t param; > uint64_t value; > }; > > -#define DRM_IOCTL_NOUVEAU_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GETPARAM, struct drm_nouveau_getparam) > #define DRM_IOCTL_NOUVEAU_SETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SETPARAM, struct drm_nouveau_setparam) > -#define DRM_IOCTL_NOUVEAU_CHANNEL_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_ALLOC, struct drm_nouveau_channel_alloc) > -#define DRM_IOCTL_NOUVEAU_CHANNEL_FREE DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_FREE, struct drm_nouveau_channel_free) > #define DRM_IOCTL_NOUVEAU_GROBJ_ALLOC DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GROBJ_ALLOC, struct drm_nouveau_grobj_alloc) > #define DRM_IOCTL_NOUVEAU_NOTIFIEROBJ_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_NOTIFIEROBJ_ALLOC, struct drm_nouveau_notifierobj_alloc) > #define DRM_IOCTL_NOUVEAU_GPUOBJ_FREE DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GPUOBJ_FREE, struct drm_nouveau_gpuobj_free) > diff --git a/include/uapi/drm/nouveau_drm.h b/include/uapi/drm/nouveau_drm.h > index 853a327433d3..1cd97b3d8eda 100644 > --- a/include/uapi/drm/nouveau_drm.h > +++ b/include/uapi/drm/nouveau_drm.h > @@ -33,6 +33,44 @@ > extern "C" { > #endif > > +#define NOUVEAU_GETPARAM_PCI_VENDOR 3 > +#define NOUVEAU_GETPARAM_PCI_DEVICE 4 > +#define NOUVEAU_GETPARAM_BUS_TYPE 5 > +#define NOUVEAU_GETPARAM_FB_SIZE 8 > +#define NOUVEAU_GETPARAM_AGP_SIZE 9 > +#define NOUVEAU_GETPARAM_CHIPSET_ID 11 > +#define NOUVEAU_GETPARAM_VM_VRAM_BASE 12 > +#define NOUVEAU_GETPARAM_GRAPH_UNITS 13 > +#define NOUVEAU_GETPARAM_PTIMER_TIME 14 > +#define NOUVEAU_GETPARAM_HAS_BO_USAGE 15 > +#define NOUVEAU_GETPARAM_HAS_PAGEFLIP 16 > +struct drm_nouveau_getparam { > + uint64_t param; > + uint64_t value; > +}; > + > +struct drm_nouveau_channel_alloc { > + uint32_t fb_ctxdma_handle; > + uint32_t tt_ctxdma_handle; > + > + int channel; > + uint32_t pushbuf_domains; > + > + /* Notifier memory */ > + uint32_t notifier_handle; > + > + /* DRM-enforced subchannel assignments */ > + struct { > + uint32_t handle; > + uint32_t grclass; > + } subchan[8]; > + uint32_t nr_subchan; > +}; > + > +struct drm_nouveau_channel_free { > + int channel; > +}; > + > #define NOUVEAU_GEM_DOMAIN_CPU (1 << 0) > #define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1) > #define NOUVEAU_GEM_DOMAIN_GART (1 << 2) > @@ -126,10 +164,10 @@ struct drm_nouveau_gem_cpu_fini { > __u32 handle; > }; > > -#define DRM_NOUVEAU_GETPARAM 0x00 /* deprecated */ > +#define DRM_NOUVEAU_GETPARAM 0x00 > #define DRM_NOUVEAU_SETPARAM 0x01 /* deprecated */ > -#define DRM_NOUVEAU_CHANNEL_ALLOC 0x02 /* deprecated */ > -#define DRM_NOUVEAU_CHANNEL_FREE 0x03 /* deprecated */ > +#define DRM_NOUVEAU_CHANNEL_ALLOC 0x02 > +#define DRM_NOUVEAU_CHANNEL_FREE 0x03 > #define DRM_NOUVEAU_GROBJ_ALLOC 0x04 /* deprecated */ > #define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC 0x05 /* deprecated */ > #define DRM_NOUVEAU_GPUOBJ_FREE 0x06 /* deprecated */ > @@ -188,6 +226,10 @@ struct drm_nouveau_svm_bind { > #define NOUVEAU_SVM_BIND_TARGET__GPU_VRAM (1UL << 31) > > > +#define DRM_IOCTL_NOUVEAU_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GETPARAM, struct drm_nouveau_getparam) > +#define DRM_IOCTL_NOUVEAU_CHANNEL_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_ALLOC, struct drm_nouveau_channel_alloc) > +#define DRM_IOCTL_NOUVEAU_CHANNEL_FREE DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_FREE, struct drm_nouveau_channel_free) > + > #define DRM_IOCTL_NOUVEAU_SVM_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_INIT, struct drm_nouveau_svm_init) > #define DRM_IOCTL_NOUVEAU_SVM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_BIND, struct drm_nouveau_svm_bind) > > -- > 2.41.0 >Reviewed-by: Karol Herbst <kherbst at redhat.com>
kernel test robot
2023-Aug-01 21:39 UTC
[Nouveau] [PATCH] drm/nouveau: fixup the uapi header file.
Hi Dave, kernel test robot noticed the following build errors: [auto build test ERROR on drm-misc/drm-misc-next] [also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip linus/master v6.5-rc4 next-20230801] [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#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Dave-Airlie/drm-nouveau-fixup-the-uapi-header-file/20230801-031705 base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next patch link: https://lore.kernel.org/r/20230731191557.4179175-1-airlied%40gmail.com patch subject: [PATCH] drm/nouveau: fixup the uapi header file. config: i386-randconfig-m021-20230730 (https://download.01.org/0day-ci/archive/20230802/202308020519.O6kM2q1k-lkp at intel.com/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 reproduce: (https://download.01.org/0day-ci/archive/20230802/202308020519.O6kM2q1k-lkp at intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp at intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202308020519.O6kM2q1k-lkp at intel.com/ All errors (new ones prefixed by >>): In file included from <command-line>:>> ./usr/include/drm/nouveau_drm.h:48:9: error: unknown type name 'uint64_t'48 | uint64_t param; | ^~~~~~~~ ./usr/include/drm/nouveau_drm.h:49:9: error: unknown type name 'uint64_t' 49 | uint64_t value; | ^~~~~~~~>> ./usr/include/drm/nouveau_drm.h:53:9: error: unknown type name 'uint32_t'53 | uint32_t fb_ctxdma_handle; | ^~~~~~~~ ./usr/include/drm/nouveau_drm.h:54:9: error: unknown type name 'uint32_t' 54 | uint32_t tt_ctxdma_handle; | ^~~~~~~~ ./usr/include/drm/nouveau_drm.h:57:9: error: unknown type name 'uint32_t' 57 | uint32_t pushbuf_domains; | ^~~~~~~~ ./usr/include/drm/nouveau_drm.h:60:9: error: unknown type name 'uint32_t' 60 | uint32_t notifier_handle; | ^~~~~~~~ ./usr/include/drm/nouveau_drm.h:64:17: error: unknown type name 'uint32_t' 64 | uint32_t handle; | ^~~~~~~~ ./usr/include/drm/nouveau_drm.h:65:17: error: unknown type name 'uint32_t' 65 | uint32_t grclass; | ^~~~~~~~ ./usr/include/drm/nouveau_drm.h:67:9: error: unknown type name 'uint32_t' 67 | uint32_t nr_subchan; | ^~~~~~~~ -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
kernel test robot
2023-Aug-01 23:22 UTC
[Nouveau] [PATCH] drm/nouveau: fixup the uapi header file.
Hi Dave, kernel test robot noticed the following build errors: [auto build test ERROR on drm-misc/drm-misc-next] [also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip linus/master v6.5-rc4 next-20230801] [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#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Dave-Airlie/drm-nouveau-fixup-the-uapi-header-file/20230801-031705 base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next patch link: https://lore.kernel.org/r/20230731191557.4179175-1-airlied%40gmail.com patch subject: [PATCH] drm/nouveau: fixup the uapi header file. config: i386-randconfig-i012-20230731 (https://download.01.org/0day-ci/archive/20230802/202308020752.d9JOnIHz-lkp at intel.com/config) compiler: clang version 16.0.4 (https://github.com/llvm/llvm-project.git ae42196bc493ffe877a7e3dff8be32035dea4d07) reproduce: (https://download.01.org/0day-ci/archive/20230802/202308020752.d9JOnIHz-lkp at intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp at intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202308020752.d9JOnIHz-lkp at intel.com/ All errors (new ones prefixed by >>): In file included from <built-in>:1:>> ./usr/include/drm/nouveau_drm.h:48:2: error: unknown type name 'uint64_t'uint64_t param; ^ ./usr/include/drm/nouveau_drm.h:49:2: error: unknown type name 'uint64_t' uint64_t value; ^>> ./usr/include/drm/nouveau_drm.h:53:2: error: unknown type name 'uint32_t'uint32_t fb_ctxdma_handle; ^ ./usr/include/drm/nouveau_drm.h:54:2: error: unknown type name 'uint32_t' uint32_t tt_ctxdma_handle; ^ ./usr/include/drm/nouveau_drm.h:57:2: error: unknown type name 'uint32_t' uint32_t pushbuf_domains; ^ ./usr/include/drm/nouveau_drm.h:60:2: error: unknown type name 'uint32_t' uint32_t notifier_handle; ^ ./usr/include/drm/nouveau_drm.h:64:3: error: unknown type name 'uint32_t' uint32_t handle; ^ ./usr/include/drm/nouveau_drm.h:65:3: error: unknown type name 'uint32_t' uint32_t grclass; ^ ./usr/include/drm/nouveau_drm.h:67:2: error: unknown type name 'uint32_t' uint32_t nr_subchan; ^ 9 errors generated. -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki