Message ID | 20230731191557.4179175-1-airlied@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/nouveau: fixup the uapi header file. | expand |
On Mon, Jul 31, 2023 at 9:16 PM Dave Airlie <airlied@gmail.com> wrote: > > From: Dave Airlie <airlied@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@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@redhat.com>
On Tue, Aug 1, 2023 at 4:37 AM Karol Herbst <kherbst@redhat.com> wrote: > On Mon, Jul 31, 2023 at 9:16 PM Dave Airlie <airlied@gmail.com> wrote: > > > > From: Dave Airlie <airlied@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@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; > Do we want to use `uint32_t` or `__u32` here? It looks like the original headers used `uint32_t` and then it got switched to `__u32` after the deprecation happened. We probably want `__u32` given that this is a uapi header. > > + uint32_t tt_ctxdma_handle; > > + > > + int channel; > IDK what to do about this one. I want to make it __s32. I think that should be safe on all the hardware we care about. Having an unsized type in a UAPI header is concerning. ~Faith > > + 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@redhat.com> > >
On Tue, Aug 1, 2023 at 5:15 PM Faith Ekstrand <faith@gfxstrand.net> wrote: > On Tue, Aug 1, 2023 at 4:37 AM Karol Herbst <kherbst@redhat.com> wrote: > >> On Mon, Jul 31, 2023 at 9:16 PM Dave Airlie <airlied@gmail.com> wrote: >> > >> > From: Dave Airlie <airlied@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@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; >> > > Do we want to use `uint32_t` or `__u32` here? It looks like the original > headers used `uint32_t` and then it got switched to `__u32` after the > deprecation happened. We probably want `__u32` given that this is a uapi > header. > > >> > + uint32_t tt_ctxdma_handle; >> > + >> > + int channel; >> > > IDK what to do about this one. I want to make it __s32. I think that > should be safe on all the hardware we care about. Having an unsized type in > a UAPI header is concerning. > > Do we have any architectures we care about where `int` isn't `__s32`? I think on all 32/64 bit x86, ppc and arm it's that way and I don't think we care about anything else? > ~Faith > > >> > + 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@redhat.com> >> >>
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@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@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@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202308020519.O6kM2q1k-lkp@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; | ^~~~~~~~
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@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@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@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202308020752.d9JOnIHz-lkp@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.
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)