* [PATCH v3 0/3] vfio-ccw: Implement request notifier @ 2021-01-04 20:20 Eric Farman 2021-01-04 20:20 ` [PATCH v3 1/3] update-linux-headers: Include const.h Eric Farman ` (3 more replies) 0 siblings, 4 replies; 19+ messages in thread From: Eric Farman @ 2021-01-04 20:20 UTC (permalink / raw) To: Cornelia Huck, Michael S. Tsirkin, Paolo Bonzini Cc: qemu-s390x, Eric Farman, Alex Williamson, Thomas Huth, qemu-devel Conny, et al, Here is an updated (final?) version of the QEMU series for the vfio-ccw request notifier now that the kernel code landed upstream [1]. The actual meat (patch 3) is identical to its counterpart in v2 [2]. Earlier versions didn't use update-linux-headers.sh; they just carried a dummy patch with the define that was needed to work, without the noise. Here, I have run the script properly and patch 2 is its output. Of course it wasn't that simple, as a change on the kernel side of things breaks the script and causes processing to end prematurely as cp_portable() takes its error exit. So I am adding a small patch to the front of this series to accommodate that, and hopefully isn't goofed up too badly. :) [1] https://lore.kernel.org/kvm/20201216123701.00517b52@omen.home/ [2] https://lore.kernel.org/qemu-devel/20201120181526.96446-1-farman@linux.ibm.com/ Eric Farman (3): update-linux-headers: Include const.h Update linux headers to 5.11-rc2 vfio-ccw: Connect the device request notifier hw/vfio/ccw.c | 40 +++- .../infiniband/hw/vmw_pvrdma/pvrdma_ring.h | 14 +- .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 2 +- include/standard-headers/drm/drm_fourcc.h | 175 +++++++++++++++++- include/standard-headers/linux/const.h | 36 ++++ include/standard-headers/linux/ethtool.h | 2 +- include/standard-headers/linux/fuse.h | 30 ++- include/standard-headers/linux/kernel.h | 9 +- include/standard-headers/linux/pci_regs.h | 16 ++ include/standard-headers/linux/vhost_types.h | 9 + include/standard-headers/linux/virtio_gpu.h | 82 ++++++++ include/standard-headers/linux/virtio_ids.h | 44 +++-- linux-headers/asm-arm64/kvm.h | 3 - linux-headers/asm-generic/unistd.h | 6 +- linux-headers/asm-mips/unistd_n32.h | 1 + linux-headers/asm-mips/unistd_n64.h | 1 + linux-headers/asm-mips/unistd_o32.h | 1 + linux-headers/asm-powerpc/unistd_32.h | 1 + linux-headers/asm-powerpc/unistd_64.h | 1 + linux-headers/asm-s390/unistd_32.h | 1 + linux-headers/asm-s390/unistd_64.h | 1 + linux-headers/asm-x86/kvm.h | 1 + linux-headers/asm-x86/unistd_32.h | 1 + linux-headers/asm-x86/unistd_64.h | 1 + linux-headers/asm-x86/unistd_x32.h | 1 + linux-headers/linux/kvm.h | 56 +++++- linux-headers/linux/userfaultfd.h | 9 + linux-headers/linux/vfio.h | 1 + linux-headers/linux/vhost.h | 4 + scripts/update-linux-headers.sh | 5 +- 30 files changed, 501 insertions(+), 53 deletions(-) create mode 100644 include/standard-headers/linux/const.h -- 2.17.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v3 1/3] update-linux-headers: Include const.h 2021-01-04 20:20 [PATCH v3 0/3] vfio-ccw: Implement request notifier Eric Farman @ 2021-01-04 20:20 ` Eric Farman 2021-01-06 19:03 ` Peter Xu 2021-01-07 6:52 ` Philippe Mathieu-Daudé 2021-01-04 20:20 ` [PATCH v3 2/3] Update linux headers to 5.11-rc2 Eric Farman ` (2 subsequent siblings) 3 siblings, 2 replies; 19+ messages in thread From: Eric Farman @ 2021-01-04 20:20 UTC (permalink / raw) To: Cornelia Huck, Michael S. Tsirkin, Paolo Bonzini Cc: qemu-s390x, Eric Farman, Alex Williamson, Thomas Huth, qemu-devel Kernel commit a85cbe6159ff ("uapi: move constants from <linux/kernel.h> to <linux/const.h>") breaks our script because of the unrecognized include. Let's add that to our processing. Signed-off-by: Eric Farman <farman@linux.ibm.com> --- scripts/update-linux-headers.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh index 9efbaf2f84..fa6f2b6272 100755 --- a/scripts/update-linux-headers.sh +++ b/scripts/update-linux-headers.sh @@ -41,6 +41,7 @@ cp_portable() { -e 'pvrdma_verbs' \ -e 'drm.h' \ -e 'limits' \ + -e 'linux/const' \ -e 'linux/kernel' \ -e 'linux/sysinfo' \ -e 'asm-generic/kvm_para' \ @@ -190,7 +191,9 @@ for i in "$tmpdir"/include/linux/*virtio*.h \ "$tmpdir/include/linux/input.h" \ "$tmpdir/include/linux/input-event-codes.h" \ "$tmpdir/include/linux/pci_regs.h" \ - "$tmpdir/include/linux/ethtool.h" "$tmpdir/include/linux/kernel.h" \ + "$tmpdir/include/linux/ethtool.h" \ + "$tmpdir/include/linux/const.h" \ + "$tmpdir/include/linux/kernel.h" \ "$tmpdir/include/linux/vhost_types.h" \ "$tmpdir/include/linux/sysinfo.h"; do cp_portable "$i" "$output/include/standard-headers/linux" -- 2.17.1 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v3 1/3] update-linux-headers: Include const.h 2021-01-04 20:20 ` [PATCH v3 1/3] update-linux-headers: Include const.h Eric Farman @ 2021-01-06 19:03 ` Peter Xu 2021-01-07 16:51 ` Eric Farman 2021-01-07 6:52 ` Philippe Mathieu-Daudé 1 sibling, 1 reply; 19+ messages in thread From: Peter Xu @ 2021-01-06 19:03 UTC (permalink / raw) To: Eric Farman Cc: Thomas Huth, Michael S. Tsirkin, Cornelia Huck, Alex Williamson, qemu-devel, qemu-s390x, Paolo Bonzini, Dr. David Alan Gilbert On Mon, Jan 04, 2021 at 09:20:55PM +0100, Eric Farman wrote: > Kernel commit a85cbe6159ff ("uapi: move constants from > <linux/kernel.h> to <linux/const.h>") breaks our script > because of the unrecognized include. Let's add that to > our processing. > > Signed-off-by: Eric Farman <farman@linux.ibm.com> > --- > scripts/update-linux-headers.sh | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh > index 9efbaf2f84..fa6f2b6272 100755 > --- a/scripts/update-linux-headers.sh > +++ b/scripts/update-linux-headers.sh > @@ -41,6 +41,7 @@ cp_portable() { > -e 'pvrdma_verbs' \ > -e 'drm.h' \ > -e 'limits' \ > + -e 'linux/const' \ > -e 'linux/kernel' \ > -e 'linux/sysinfo' \ > -e 'asm-generic/kvm_para' \ > @@ -190,7 +191,9 @@ for i in "$tmpdir"/include/linux/*virtio*.h \ > "$tmpdir/include/linux/input.h" \ > "$tmpdir/include/linux/input-event-codes.h" \ > "$tmpdir/include/linux/pci_regs.h" \ > - "$tmpdir/include/linux/ethtool.h" "$tmpdir/include/linux/kernel.h" \ > + "$tmpdir/include/linux/ethtool.h" \ > + "$tmpdir/include/linux/const.h" \ > + "$tmpdir/include/linux/kernel.h" \ > "$tmpdir/include/linux/vhost_types.h" \ > "$tmpdir/include/linux/sysinfo.h"; do > cp_portable "$i" "$output/include/standard-headers/linux" > -- > 2.17.1 So I think I came to the same change when trying to update the headers. :) Reviewed-by: Peter Xu <peterx@redhat.com> Could I ask why the const.h is installed into include/standard-headers/linux rather than linux-headers/linux? When I was working on my version I failed to figure out the difference. One answer is ethtool.h is there which included const.h, but I guess that's not the real one. Thanks, -- Peter Xu ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v3 1/3] update-linux-headers: Include const.h 2021-01-06 19:03 ` Peter Xu @ 2021-01-07 16:51 ` Eric Farman 2021-01-07 17:05 ` Peter Maydell 0 siblings, 1 reply; 19+ messages in thread From: Eric Farman @ 2021-01-07 16:51 UTC (permalink / raw) To: Peter Xu Cc: Thomas Huth, Michael S. Tsirkin, Cornelia Huck, Alex Williamson, qemu-devel, qemu-s390x, Paolo Bonzini, Dr. David Alan Gilbert On 1/6/21 2:03 PM, Peter Xu wrote: > On Mon, Jan 04, 2021 at 09:20:55PM +0100, Eric Farman wrote: >> Kernel commit a85cbe6159ff ("uapi: move constants from >> <linux/kernel.h> to <linux/const.h>") breaks our script >> because of the unrecognized include. Let's add that to >> our processing. >> >> Signed-off-by: Eric Farman <farman@linux.ibm.com> >> --- >> scripts/update-linux-headers.sh | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh >> index 9efbaf2f84..fa6f2b6272 100755 >> --- a/scripts/update-linux-headers.sh >> +++ b/scripts/update-linux-headers.sh >> @@ -41,6 +41,7 @@ cp_portable() { >> -e 'pvrdma_verbs' \ >> -e 'drm.h' \ >> -e 'limits' \ >> + -e 'linux/const' \ >> -e 'linux/kernel' \ >> -e 'linux/sysinfo' \ >> -e 'asm-generic/kvm_para' \ >> @@ -190,7 +191,9 @@ for i in "$tmpdir"/include/linux/*virtio*.h \ >> "$tmpdir/include/linux/input.h" \ >> "$tmpdir/include/linux/input-event-codes.h" \ >> "$tmpdir/include/linux/pci_regs.h" \ >> - "$tmpdir/include/linux/ethtool.h" "$tmpdir/include/linux/kernel.h" \ >> + "$tmpdir/include/linux/ethtool.h" \ >> + "$tmpdir/include/linux/const.h" \ >> + "$tmpdir/include/linux/kernel.h" \ >> "$tmpdir/include/linux/vhost_types.h" \ >> "$tmpdir/include/linux/sysinfo.h"; do >> cp_portable "$i" "$output/include/standard-headers/linux" >> -- >> 2.17.1 > > So I think I came to the same change when trying to update the headers. :) > > Reviewed-by: Peter Xu <peterx@redhat.com> Thank you! :) > > Could I ask why the const.h is installed into include/standard-headers/linux > rather than linux-headers/linux? When I was working on my version I failed to > figure out the difference. Considering the main difference is whether the header file is copied directly or edited with a bunch of substitutions, and const.h doesn't get modified by those substitutions, I suppose it could go in linux-headers itself. But I opted to just keep it near its friends (ethtool.h and kernel.h both include const.h, and end up including if_ether.h, sysinfo.h, and types.h) in include/standard-headers. > > One answer is ethtool.h is there which included const.h, but I guess that's not > the real one. > > Thanks, > ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v3 1/3] update-linux-headers: Include const.h 2021-01-07 16:51 ` Eric Farman @ 2021-01-07 17:05 ` Peter Maydell 2021-01-07 17:50 ` Eric Farman 0 siblings, 1 reply; 19+ messages in thread From: Peter Maydell @ 2021-01-07 17:05 UTC (permalink / raw) To: Eric Farman Cc: Thomas Huth, Michael S. Tsirkin, qemu-s390x, Cornelia Huck, QEMU Developers, Peter Xu, Dr. David Alan Gilbert, Alex Williamson, Paolo Bonzini On Thu, 7 Jan 2021 at 16:52, Eric Farman <farman@linux.ibm.com> wrote: > On 1/6/21 2:03 PM, Peter Xu wrote: > > Could I ask why the const.h is installed into include/standard-headers/linux > > rather than linux-headers/linux? When I was working on my version I failed to > > figure out the difference. > > Considering the main difference is whether the header file is copied > directly or edited with a bunch of substitutions, and const.h doesn't > get modified by those substitutions, I suppose it could go in > linux-headers itself. No, it can't, because linux-headers/ only goes on the include path when on a Linux host and on a CPU architecture with KVM support, whereas include/standard-headers/ headers are available and used on all host OSes/architectures. Because include/standard-headers/linux/ethtool.h will end up with a line #include "standard-headers/linux/const.h" we need to provide a const.h in that location so that the #include pulls in the file correctly. thanks -- PMM ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v3 1/3] update-linux-headers: Include const.h 2021-01-07 17:05 ` Peter Maydell @ 2021-01-07 17:50 ` Eric Farman 2021-01-07 19:12 ` Peter Xu 0 siblings, 1 reply; 19+ messages in thread From: Eric Farman @ 2021-01-07 17:50 UTC (permalink / raw) To: Peter Maydell Cc: Thomas Huth, Michael S. Tsirkin, qemu-s390x, Cornelia Huck, QEMU Developers, Peter Xu, Dr. David Alan Gilbert, Alex Williamson, Paolo Bonzini On 1/7/21 12:05 PM, Peter Maydell wrote: > On Thu, 7 Jan 2021 at 16:52, Eric Farman <farman@linux.ibm.com> wrote: >> On 1/6/21 2:03 PM, Peter Xu wrote: >>> Could I ask why the const.h is installed into include/standard-headers/linux >>> rather than linux-headers/linux? When I was working on my version I failed to >>> figure out the difference. >> >> Considering the main difference is whether the header file is copied >> directly or edited with a bunch of substitutions, and const.h doesn't >> get modified by those substitutions, I suppose it could go in >> linux-headers itself. > > No, it can't, because linux-headers/ only goes on the include > path when on a Linux host and on a CPU architecture with KVM support, > whereas include/standard-headers/ headers are available and > used on all host OSes/architectures. > > Because include/standard-headers/linux/ethtool.h will end up > with a line > #include "standard-headers/linux/const.h" > we need to provide a const.h in that location so that the #include > pulls in the file correctly. Ah, today I learned. Thanks, Peter. - Eric > > thanks > -- PMM > ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v3 1/3] update-linux-headers: Include const.h 2021-01-07 17:50 ` Eric Farman @ 2021-01-07 19:12 ` Peter Xu 0 siblings, 0 replies; 19+ messages in thread From: Peter Xu @ 2021-01-07 19:12 UTC (permalink / raw) To: Eric Farman Cc: Peter Maydell, Thomas Huth, Michael S. Tsirkin, qemu-s390x, Cornelia Huck, QEMU Developers, Dr. David Alan Gilbert, Alex Williamson, Paolo Bonzini On Thu, Jan 07, 2021 at 12:50:34PM -0500, Eric Farman wrote: > > > On 1/7/21 12:05 PM, Peter Maydell wrote: > > On Thu, 7 Jan 2021 at 16:52, Eric Farman <farman@linux.ibm.com> wrote: > > > On 1/6/21 2:03 PM, Peter Xu wrote: > > > > Could I ask why the const.h is installed into include/standard-headers/linux > > > > rather than linux-headers/linux? When I was working on my version I failed to > > > > figure out the difference. > > > > > > Considering the main difference is whether the header file is copied > > > directly or edited with a bunch of substitutions, and const.h doesn't > > > get modified by those substitutions, I suppose it could go in > > > linux-headers itself. > > > > No, it can't, because linux-headers/ only goes on the include > > path when on a Linux host and on a CPU architecture with KVM support, > > whereas include/standard-headers/ headers are available and > > used on all host OSes/architectures. > > > > Because include/standard-headers/linux/ethtool.h will end up > > with a line > > #include "standard-headers/linux/const.h" > > we need to provide a const.h in that location so that the #include > > pulls in the file correctly. > > Ah, today I learned. Thanks, Peter. Yeah. Peter taught me the rules on IRC after I posted the email, and I didn't update later. So I guess my r-b stands. :) Thanks, -- Peter Xu ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v3 1/3] update-linux-headers: Include const.h 2021-01-04 20:20 ` [PATCH v3 1/3] update-linux-headers: Include const.h Eric Farman 2021-01-06 19:03 ` Peter Xu @ 2021-01-07 6:52 ` Philippe Mathieu-Daudé 1 sibling, 0 replies; 19+ messages in thread From: Philippe Mathieu-Daudé @ 2021-01-07 6:52 UTC (permalink / raw) To: Eric Farman, Cornelia Huck, Michael S. Tsirkin, Paolo Bonzini Cc: Thomas Huth, qemu-s390x, Alex Williamson, qemu-devel On 1/4/21 9:20 PM, Eric Farman wrote: > Kernel commit a85cbe6159ff ("uapi: move constants from > <linux/kernel.h> to <linux/const.h>") breaks our script > because of the unrecognized include. Let's add that to > our processing. > > Signed-off-by: Eric Farman <farman@linux.ibm.com> > --- > scripts/update-linux-headers.sh | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v3 2/3] Update linux headers to 5.11-rc2 2021-01-04 20:20 [PATCH v3 0/3] vfio-ccw: Implement request notifier Eric Farman 2021-01-04 20:20 ` [PATCH v3 1/3] update-linux-headers: Include const.h Eric Farman @ 2021-01-04 20:20 ` Eric Farman 2021-01-11 12:54 ` Cornelia Huck 2021-01-04 20:20 ` [PATCH v3 3/3] vfio-ccw: Connect the device request notifier Eric Farman 2021-01-13 12:58 ` [PATCH v3 0/3] vfio-ccw: Implement " Cornelia Huck 3 siblings, 1 reply; 19+ messages in thread From: Eric Farman @ 2021-01-04 20:20 UTC (permalink / raw) To: Cornelia Huck, Michael S. Tsirkin, Paolo Bonzini Cc: qemu-s390x, Eric Farman, Alex Williamson, Thomas Huth, qemu-devel Signed-off-by: Eric Farman <farman@linux.ibm.com> --- .../infiniband/hw/vmw_pvrdma/pvrdma_ring.h | 14 +- .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 2 +- include/standard-headers/drm/drm_fourcc.h | 175 +++++++++++++++++- include/standard-headers/linux/const.h | 36 ++++ include/standard-headers/linux/ethtool.h | 2 +- include/standard-headers/linux/fuse.h | 30 ++- include/standard-headers/linux/kernel.h | 9 +- include/standard-headers/linux/pci_regs.h | 16 ++ include/standard-headers/linux/vhost_types.h | 9 + include/standard-headers/linux/virtio_gpu.h | 82 ++++++++ include/standard-headers/linux/virtio_ids.h | 44 +++-- linux-headers/asm-arm64/kvm.h | 3 - linux-headers/asm-generic/unistd.h | 6 +- linux-headers/asm-mips/unistd_n32.h | 1 + linux-headers/asm-mips/unistd_n64.h | 1 + linux-headers/asm-mips/unistd_o32.h | 1 + linux-headers/asm-powerpc/unistd_32.h | 1 + linux-headers/asm-powerpc/unistd_64.h | 1 + linux-headers/asm-s390/unistd_32.h | 1 + linux-headers/asm-s390/unistd_64.h | 1 + linux-headers/asm-x86/kvm.h | 1 + linux-headers/asm-x86/unistd_32.h | 1 + linux-headers/asm-x86/unistd_64.h | 1 + linux-headers/asm-x86/unistd_x32.h | 1 + linux-headers/linux/kvm.h | 56 +++++- linux-headers/linux/userfaultfd.h | 9 + linux-headers/linux/vfio.h | 1 + linux-headers/linux/vhost.h | 4 + 28 files changed, 461 insertions(+), 48 deletions(-) create mode 100644 include/standard-headers/linux/const.h diff --git a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h index 7b4062a1a1..acd4c8346d 100644 --- a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h +++ b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h @@ -68,7 +68,7 @@ static inline int pvrdma_idx_valid(uint32_t idx, uint32_t max_elems) static inline int32_t pvrdma_idx(int *var, uint32_t max_elems) { - const unsigned int idx = qatomic_read(var); + const unsigned int idx = atomic_read(var); if (pvrdma_idx_valid(idx, max_elems)) return idx & (max_elems - 1); @@ -77,17 +77,17 @@ static inline int32_t pvrdma_idx(int *var, uint32_t max_elems) static inline void pvrdma_idx_ring_inc(int *var, uint32_t max_elems) { - uint32_t idx = qatomic_read(var) + 1; /* Increment. */ + uint32_t idx = atomic_read(var) + 1; /* Increment. */ idx &= (max_elems << 1) - 1; /* Modulo size, flip gen. */ - qatomic_set(var, idx); + atomic_set(var, idx); } static inline int32_t pvrdma_idx_ring_has_space(const struct pvrdma_ring *r, uint32_t max_elems, uint32_t *out_tail) { - const uint32_t tail = qatomic_read(&r->prod_tail); - const uint32_t head = qatomic_read(&r->cons_head); + const uint32_t tail = atomic_read(&r->prod_tail); + const uint32_t head = atomic_read(&r->cons_head); if (pvrdma_idx_valid(tail, max_elems) && pvrdma_idx_valid(head, max_elems)) { @@ -100,8 +100,8 @@ static inline int32_t pvrdma_idx_ring_has_space(const struct pvrdma_ring *r, static inline int32_t pvrdma_idx_ring_has_data(const struct pvrdma_ring *r, uint32_t max_elems, uint32_t *out_head) { - const uint32_t tail = qatomic_read(&r->prod_tail); - const uint32_t head = qatomic_read(&r->cons_head); + const uint32_t tail = atomic_read(&r->prod_tail); + const uint32_t head = atomic_read(&r->cons_head); if (pvrdma_idx_valid(tail, max_elems) && pvrdma_idx_valid(head, max_elems)) { diff --git a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h index 0a8c7c9311..1677208a41 100644 --- a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h +++ b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h @@ -176,7 +176,7 @@ struct pvrdma_port_attr { uint8_t subnet_timeout; uint8_t init_type_reply; uint8_t active_width; - uint16_t active_speed; + uint8_t active_speed; uint8_t phys_state; uint8_t reserved[2]; }; diff --git a/include/standard-headers/drm/drm_fourcc.h b/include/standard-headers/drm/drm_fourcc.h index 0de1a552ca..c47e19810c 100644 --- a/include/standard-headers/drm/drm_fourcc.h +++ b/include/standard-headers/drm/drm_fourcc.h @@ -57,6 +57,30 @@ extern "C" { * may preserve meaning - such as number of planes - from the fourcc code, * whereas others may not. * + * Modifiers must uniquely encode buffer layout. In other words, a buffer must + * match only a single modifier. A modifier must not be a subset of layouts of + * another modifier. For instance, it's incorrect to encode pitch alignment in + * a modifier: a buffer may match a 64-pixel aligned modifier and a 32-pixel + * aligned modifier. That said, modifiers can have implicit minimal + * requirements. + * + * For modifiers where the combination of fourcc code and modifier can alias, + * a canonical pair needs to be defined and used by all drivers. Preferred + * combinations are also encouraged where all combinations might lead to + * confusion and unnecessarily reduced interoperability. An example for the + * latter is AFBC, where the ABGR layouts are preferred over ARGB layouts. + * + * There are two kinds of modifier users: + * + * - Kernel and user-space drivers: for drivers it's important that modifiers + * don't alias, otherwise two drivers might support the same format but use + * different aliases, preventing them from sharing buffers in an efficient + * format. + * - Higher-level programs interfacing with KMS/GBM/EGL/Vulkan/etc: these users + * see modifiers as opaque tokens they can check for equality and intersect. + * These users musn't need to know to reason about the modifier value + * (i.e. they are not expected to extract information out of the modifier). + * * Vendors should document their modifier usage in as much detail as * possible, to ensure maximum compatibility across devices, drivers and * applications. @@ -154,6 +178,12 @@ extern "C" { #define DRM_FORMAT_ARGB16161616F fourcc_code('A', 'R', '4', 'H') /* [63:0] A:R:G:B 16:16:16:16 little endian */ #define DRM_FORMAT_ABGR16161616F fourcc_code('A', 'B', '4', 'H') /* [63:0] A:B:G:R 16:16:16:16 little endian */ +/* + * RGBA format with 10-bit components packed in 64-bit per pixel, with 6 bits + * of unused padding per component: + */ +#define DRM_FORMAT_AXBXGXRX106106106106 fourcc_code('A', 'B', '1', '0') /* [63:0] A:x:B:x:G:x:R:x 10:6:10:6:10:6:10:6 little endian */ + /* packed YCbCr */ #define DRM_FORMAT_YUYV fourcc_code('Y', 'U', 'Y', 'V') /* [31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian */ #define DRM_FORMAT_YVYU fourcc_code('Y', 'V', 'Y', 'U') /* [31:0] Cb0:Y1:Cr0:Y0 8:8:8:8 little endian */ @@ -319,7 +349,6 @@ extern "C" { */ /* Vendor Ids: */ -#define DRM_FORMAT_MOD_NONE 0 #define DRM_FORMAT_MOD_VENDOR_NONE 0 #define DRM_FORMAT_MOD_VENDOR_INTEL 0x01 #define DRM_FORMAT_MOD_VENDOR_AMD 0x02 @@ -391,6 +420,16 @@ extern "C" { */ #define DRM_FORMAT_MOD_LINEAR fourcc_mod_code(NONE, 0) +/* + * Deprecated: use DRM_FORMAT_MOD_LINEAR instead + * + * The "none" format modifier doesn't actually mean that the modifier is + * implicit, instead it means that the layout is linear. Whether modifiers are + * used is out-of-band information carried in an API-specific way (e.g. in a + * flag for drm_mode_fb_cmd2). + */ +#define DRM_FORMAT_MOD_NONE 0 + /* Intel framebuffer modifiers */ /* @@ -1055,6 +1094,140 @@ drm_fourcc_canonicalize_nvidia_format_mod(uint64_t modifier) */ #define AMLOGIC_FBC_OPTION_MEM_SAVING (1ULL << 0) +/* + * AMD modifiers + * + * Memory layout: + * + * without DCC: + * - main surface + * + * with DCC & without DCC_RETILE: + * - main surface in plane 0 + * - DCC surface in plane 1 (RB-aligned, pipe-aligned if DCC_PIPE_ALIGN is set) + * + * with DCC & DCC_RETILE: + * - main surface in plane 0 + * - displayable DCC surface in plane 1 (not RB-aligned & not pipe-aligned) + * - pipe-aligned DCC surface in plane 2 (RB-aligned & pipe-aligned) + * + * For multi-plane formats the above surfaces get merged into one plane for + * each format plane, based on the required alignment only. + * + * Bits Parameter Notes + * ----- ------------------------ --------------------------------------------- + * + * 7:0 TILE_VERSION Values are AMD_FMT_MOD_TILE_VER_* + * 12:8 TILE Values are AMD_FMT_MOD_TILE_<version>_* + * 13 DCC + * 14 DCC_RETILE + * 15 DCC_PIPE_ALIGN + * 16 DCC_INDEPENDENT_64B + * 17 DCC_INDEPENDENT_128B + * 19:18 DCC_MAX_COMPRESSED_BLOCK Values are AMD_FMT_MOD_DCC_BLOCK_* + * 20 DCC_CONSTANT_ENCODE + * 23:21 PIPE_XOR_BITS Only for some chips + * 26:24 BANK_XOR_BITS Only for some chips + * 29:27 PACKERS Only for some chips + * 32:30 RB Only for some chips + * 35:33 PIPE Only for some chips + * 55:36 - Reserved for future use, must be zero + */ +#define AMD_FMT_MOD fourcc_mod_code(AMD, 0) + +#define IS_AMD_FMT_MOD(val) (((val) >> 56) == DRM_FORMAT_MOD_VENDOR_AMD) + +/* Reserve 0 for GFX8 and older */ +#define AMD_FMT_MOD_TILE_VER_GFX9 1 +#define AMD_FMT_MOD_TILE_VER_GFX10 2 +#define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3 + +/* + * 64K_S is the same for GFX9/GFX10/GFX10_RBPLUS and hence has GFX9 as canonical + * version. + */ +#define AMD_FMT_MOD_TILE_GFX9_64K_S 9 + +/* + * 64K_D for non-32 bpp is the same for GFX9/GFX10/GFX10_RBPLUS and hence has + * GFX9 as canonical version. + */ +#define AMD_FMT_MOD_TILE_GFX9_64K_D 10 +#define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25 +#define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26 +#define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27 + +#define AMD_FMT_MOD_DCC_BLOCK_64B 0 +#define AMD_FMT_MOD_DCC_BLOCK_128B 1 +#define AMD_FMT_MOD_DCC_BLOCK_256B 2 + +#define AMD_FMT_MOD_TILE_VERSION_SHIFT 0 +#define AMD_FMT_MOD_TILE_VERSION_MASK 0xFF +#define AMD_FMT_MOD_TILE_SHIFT 8 +#define AMD_FMT_MOD_TILE_MASK 0x1F + +/* Whether DCC compression is enabled. */ +#define AMD_FMT_MOD_DCC_SHIFT 13 +#define AMD_FMT_MOD_DCC_MASK 0x1 + +/* + * Whether to include two DCC surfaces, one which is rb & pipe aligned, and + * one which is not-aligned. + */ +#define AMD_FMT_MOD_DCC_RETILE_SHIFT 14 +#define AMD_FMT_MOD_DCC_RETILE_MASK 0x1 + +/* Only set if DCC_RETILE = false */ +#define AMD_FMT_MOD_DCC_PIPE_ALIGN_SHIFT 15 +#define AMD_FMT_MOD_DCC_PIPE_ALIGN_MASK 0x1 + +#define AMD_FMT_MOD_DCC_INDEPENDENT_64B_SHIFT 16 +#define AMD_FMT_MOD_DCC_INDEPENDENT_64B_MASK 0x1 +#define AMD_FMT_MOD_DCC_INDEPENDENT_128B_SHIFT 17 +#define AMD_FMT_MOD_DCC_INDEPENDENT_128B_MASK 0x1 +#define AMD_FMT_MOD_DCC_MAX_COMPRESSED_BLOCK_SHIFT 18 +#define AMD_FMT_MOD_DCC_MAX_COMPRESSED_BLOCK_MASK 0x3 + +/* + * DCC supports embedding some clear colors directly in the DCC surface. + * However, on older GPUs the rendering HW ignores the embedded clear color + * and prefers the driver provided color. This necessitates doing a fastclear + * eliminate operation before a process transfers control. + * + * If this bit is set that means the fastclear eliminate is not needed for these + * embeddable colors. + */ +#define AMD_FMT_MOD_DCC_CONSTANT_ENCODE_SHIFT 20 +#define AMD_FMT_MOD_DCC_CONSTANT_ENCODE_MASK 0x1 + +/* + * The below fields are for accounting for per GPU differences. These are only + * relevant for GFX9 and later and if the tile field is *_X/_T. + * + * PIPE_XOR_BITS = always needed + * BANK_XOR_BITS = only for TILE_VER_GFX9 + * PACKERS = only for TILE_VER_GFX10_RBPLUS + * RB = only for TILE_VER_GFX9 & DCC + * PIPE = only for TILE_VER_GFX9 & DCC & (DCC_RETILE | DCC_PIPE_ALIGN) + */ +#define AMD_FMT_MOD_PIPE_XOR_BITS_SHIFT 21 +#define AMD_FMT_MOD_PIPE_XOR_BITS_MASK 0x7 +#define AMD_FMT_MOD_BANK_XOR_BITS_SHIFT 24 +#define AMD_FMT_MOD_BANK_XOR_BITS_MASK 0x7 +#define AMD_FMT_MOD_PACKERS_SHIFT 27 +#define AMD_FMT_MOD_PACKERS_MASK 0x7 +#define AMD_FMT_MOD_RB_SHIFT 30 +#define AMD_FMT_MOD_RB_MASK 0x7 +#define AMD_FMT_MOD_PIPE_SHIFT 33 +#define AMD_FMT_MOD_PIPE_MASK 0x7 + +#define AMD_FMT_MOD_SET(field, value) \ + ((uint64_t)(value) << AMD_FMT_MOD_##field##_SHIFT) +#define AMD_FMT_MOD_GET(field, value) \ + (((value) >> AMD_FMT_MOD_##field##_SHIFT) & AMD_FMT_MOD_##field##_MASK) +#define AMD_FMT_MOD_CLEAR(field) \ + (~((uint64_t)AMD_FMT_MOD_##field##_MASK << AMD_FMT_MOD_##field##_SHIFT)) + #if defined(__cplusplus) } #endif diff --git a/include/standard-headers/linux/const.h b/include/standard-headers/linux/const.h new file mode 100644 index 0000000000..5e48987251 --- /dev/null +++ b/include/standard-headers/linux/const.h @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* const.h: Macros for dealing with constants. */ + +#ifndef _LINUX_CONST_H +#define _LINUX_CONST_H + +/* Some constant macros are used in both assembler and + * C code. Therefore we cannot annotate them always with + * 'UL' and other type specifiers unilaterally. We + * use the following macros to deal with this. + * + * Similarly, _AT() will cast an expression with a type in C, but + * leave it unchanged in asm. + */ + +#ifdef __ASSEMBLY__ +#define _AC(X,Y) X +#define _AT(T,X) X +#else +#define __AC(X,Y) (X##Y) +#define _AC(X,Y) __AC(X,Y) +#define _AT(T,X) ((T)(X)) +#endif + +#define _UL(x) (_AC(x, UL)) +#define _ULL(x) (_AC(x, ULL)) + +#define _BITUL(x) (_UL(1) << (x)) +#define _BITULL(x) (_ULL(1) << (x)) + +#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1) +#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask)) + +#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) + +#endif /* _LINUX_CONST_H */ diff --git a/include/standard-headers/linux/ethtool.h b/include/standard-headers/linux/ethtool.h index 0df22f7538..8bfd01d230 100644 --- a/include/standard-headers/linux/ethtool.h +++ b/include/standard-headers/linux/ethtool.h @@ -16,7 +16,7 @@ #include "net/eth.h" -#include "standard-headers/linux/kernel.h" +#include "standard-headers/linux/const.h" #include "standard-headers/linux/types.h" #include "standard-headers/linux/if_ether.h" diff --git a/include/standard-headers/linux/fuse.h b/include/standard-headers/linux/fuse.h index 82c0a38b59..950d7edb7e 100644 --- a/include/standard-headers/linux/fuse.h +++ b/include/standard-headers/linux/fuse.h @@ -175,6 +175,10 @@ * * 7.32 * - add flags to fuse_attr, add FUSE_ATTR_SUBMOUNT, add FUSE_SUBMOUNTS + * + * 7.33 + * - add FUSE_HANDLE_KILLPRIV_V2, FUSE_WRITE_KILL_SUIDGID, FATTR_KILL_SUIDGID + * - add FUSE_OPEN_KILL_SUIDGID */ #ifndef _LINUX_FUSE_H @@ -206,7 +210,7 @@ #define FUSE_KERNEL_VERSION 7 /** Minor version number of this interface */ -#define FUSE_KERNEL_MINOR_VERSION 32 +#define FUSE_KERNEL_MINOR_VERSION 33 /** The node ID of the root inode */ #define FUSE_ROOT_ID 1 @@ -267,6 +271,7 @@ struct fuse_file_lock { #define FATTR_MTIME_NOW (1 << 8) #define FATTR_LOCKOWNER (1 << 9) #define FATTR_CTIME (1 << 10) +#define FATTR_KILL_SUIDGID (1 << 11) /** * Flags returned by the OPEN request @@ -316,6 +321,11 @@ struct fuse_file_lock { * foffset and moffset fields in struct * fuse_setupmapping_out and fuse_removemapping_one. * FUSE_SUBMOUNTS: kernel supports auto-mounting directory submounts + * FUSE_HANDLE_KILLPRIV_V2: fs kills suid/sgid/cap on write/chown/trunc. + * Upon write/truncate suid/sgid is only killed if caller + * does not have CAP_FSETID. Additionally upon + * write/truncate sgid is killed only if file has group + * execute permission. (Same as Linux VFS behavior). */ #define FUSE_ASYNC_READ (1 << 0) #define FUSE_POSIX_LOCKS (1 << 1) @@ -345,6 +355,7 @@ struct fuse_file_lock { #define FUSE_EXPLICIT_INVAL_DATA (1 << 25) #define FUSE_MAP_ALIGNMENT (1 << 26) #define FUSE_SUBMOUNTS (1 << 27) +#define FUSE_HANDLE_KILLPRIV_V2 (1 << 28) /** * CUSE INIT request/reply flags @@ -374,11 +385,14 @@ struct fuse_file_lock { * * FUSE_WRITE_CACHE: delayed write from page cache, file handle is guessed * FUSE_WRITE_LOCKOWNER: lock_owner field is valid - * FUSE_WRITE_KILL_PRIV: kill suid and sgid bits + * FUSE_WRITE_KILL_SUIDGID: kill suid and sgid bits */ #define FUSE_WRITE_CACHE (1 << 0) #define FUSE_WRITE_LOCKOWNER (1 << 1) -#define FUSE_WRITE_KILL_PRIV (1 << 2) +#define FUSE_WRITE_KILL_SUIDGID (1 << 2) + +/* Obsolete alias; this flag implies killing suid/sgid only. */ +#define FUSE_WRITE_KILL_PRIV FUSE_WRITE_KILL_SUIDGID /** * Read flags @@ -427,6 +441,12 @@ struct fuse_file_lock { */ #define FUSE_ATTR_SUBMOUNT (1 << 0) +/** + * Open flags + * FUSE_OPEN_KILL_SUIDGID: Kill suid and sgid if executable + */ +#define FUSE_OPEN_KILL_SUIDGID (1 << 0) + enum fuse_opcode { FUSE_LOOKUP = 1, FUSE_FORGET = 2, /* no reply */ @@ -588,14 +608,14 @@ struct fuse_setattr_in { struct fuse_open_in { uint32_t flags; - uint32_t unused; + uint32_t open_flags; /* FUSE_OPEN_... */ }; struct fuse_create_in { uint32_t flags; uint32_t mode; uint32_t umask; - uint32_t padding; + uint32_t open_flags; /* FUSE_OPEN_... */ }; struct fuse_open_out { diff --git a/include/standard-headers/linux/kernel.h b/include/standard-headers/linux/kernel.h index 1eeba2ef92..7848c5ae25 100644 --- a/include/standard-headers/linux/kernel.h +++ b/include/standard-headers/linux/kernel.h @@ -3,13 +3,6 @@ #define _LINUX_KERNEL_H #include "standard-headers/linux/sysinfo.h" - -/* - * 'kernel.h' contains some often-used function prototypes etc - */ -#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1) -#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask)) - -#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) +#include "standard-headers/linux/const.h" #endif /* _LINUX_KERNEL_H */ diff --git a/include/standard-headers/linux/pci_regs.h b/include/standard-headers/linux/pci_regs.h index a95d55f9f2..e709ae8235 100644 --- a/include/standard-headers/linux/pci_regs.h +++ b/include/standard-headers/linux/pci_regs.h @@ -531,6 +531,7 @@ #define PCI_EXP_LNKCAP_SLS_8_0GB 0x00000003 /* LNKCAP2 SLS Vector bit 2 */ #define PCI_EXP_LNKCAP_SLS_16_0GB 0x00000004 /* LNKCAP2 SLS Vector bit 3 */ #define PCI_EXP_LNKCAP_SLS_32_0GB 0x00000005 /* LNKCAP2 SLS Vector bit 4 */ +#define PCI_EXP_LNKCAP_SLS_64_0GB 0x00000006 /* LNKCAP2 SLS Vector bit 5 */ #define PCI_EXP_LNKCAP_MLW 0x000003f0 /* Maximum Link Width */ #define PCI_EXP_LNKCAP_ASPMS 0x00000c00 /* ASPM Support */ #define PCI_EXP_LNKCAP_ASPM_L0S 0x00000400 /* ASPM L0s Support */ @@ -562,6 +563,7 @@ #define PCI_EXP_LNKSTA_CLS_8_0GB 0x0003 /* Current Link Speed 8.0GT/s */ #define PCI_EXP_LNKSTA_CLS_16_0GB 0x0004 /* Current Link Speed 16.0GT/s */ #define PCI_EXP_LNKSTA_CLS_32_0GB 0x0005 /* Current Link Speed 32.0GT/s */ +#define PCI_EXP_LNKSTA_CLS_64_0GB 0x0006 /* Current Link Speed 64.0GT/s */ #define PCI_EXP_LNKSTA_NLW 0x03f0 /* Negotiated Link Width */ #define PCI_EXP_LNKSTA_NLW_X1 0x0010 /* Current Link Width x1 */ #define PCI_EXP_LNKSTA_NLW_X2 0x0020 /* Current Link Width x2 */ @@ -670,6 +672,7 @@ #define PCI_EXP_LNKCAP2_SLS_8_0GB 0x00000008 /* Supported Speed 8GT/s */ #define PCI_EXP_LNKCAP2_SLS_16_0GB 0x00000010 /* Supported Speed 16GT/s */ #define PCI_EXP_LNKCAP2_SLS_32_0GB 0x00000020 /* Supported Speed 32GT/s */ +#define PCI_EXP_LNKCAP2_SLS_64_0GB 0x00000040 /* Supported Speed 64GT/s */ #define PCI_EXP_LNKCAP2_CROSSLINK 0x00000100 /* Crosslink supported */ #define PCI_EXP_LNKCTL2 48 /* Link Control 2 */ #define PCI_EXP_LNKCTL2_TLS 0x000f @@ -678,6 +681,7 @@ #define PCI_EXP_LNKCTL2_TLS_8_0GT 0x0003 /* Supported Speed 8GT/s */ #define PCI_EXP_LNKCTL2_TLS_16_0GT 0x0004 /* Supported Speed 16GT/s */ #define PCI_EXP_LNKCTL2_TLS_32_0GT 0x0005 /* Supported Speed 32GT/s */ +#define PCI_EXP_LNKCTL2_TLS_64_0GT 0x0006 /* Supported Speed 64GT/s */ #define PCI_EXP_LNKCTL2_ENTER_COMP 0x0010 /* Enter Compliance */ #define PCI_EXP_LNKCTL2_TX_MARGIN 0x0380 /* Transmit Margin */ #define PCI_EXP_LNKCTL2_HASD 0x0020 /* HW Autonomous Speed Disable */ @@ -723,6 +727,7 @@ #define PCI_EXT_CAP_ID_DPC 0x1D /* Downstream Port Containment */ #define PCI_EXT_CAP_ID_L1SS 0x1E /* L1 PM Substates */ #define PCI_EXT_CAP_ID_PTM 0x1F /* Precision Time Measurement */ +#define PCI_EXT_CAP_ID_DVSEC 0x23 /* Designated Vendor-Specific */ #define PCI_EXT_CAP_ID_DLF 0x25 /* Data Link Feature */ #define PCI_EXT_CAP_ID_PL_16GT 0x26 /* Physical Layer 16.0 GT/s */ #define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PL_16GT @@ -831,6 +836,13 @@ #define PCI_PWR_CAP_BUDGET(x) ((x) & 1) /* Included in system budget */ #define PCI_EXT_CAP_PWR_SIZEOF 16 +/* Root Complex Event Collector Endpoint Association */ +#define PCI_RCEC_RCIEP_BITMAP 4 /* Associated Bitmap for RCiEPs */ +#define PCI_RCEC_BUSN 8 /* RCEC Associated Bus Numbers */ +#define PCI_RCEC_BUSN_REG_VER 0x02 /* Least version with BUSN present */ +#define PCI_RCEC_BUSN_NEXT(x) (((x) >> 8) & 0xff) +#define PCI_RCEC_BUSN_LAST(x) (((x) >> 16) & 0xff) + /* Vendor-Specific (VSEC, PCI_EXT_CAP_ID_VNDR) */ #define PCI_VNDR_HEADER 4 /* Vendor-Specific Header */ #define PCI_VNDR_HEADER_ID(x) ((x) & 0xffff) @@ -1066,6 +1078,10 @@ #define PCI_L1SS_CTL1_LTR_L12_TH_SCALE 0xe0000000 /* LTR_L1.2_THRESHOLD_Scale */ #define PCI_L1SS_CTL2 0x0c /* Control 2 Register */ +/* Designated Vendor-Specific (DVSEC, PCI_EXT_CAP_ID_DVSEC) */ +#define PCI_DVSEC_HEADER1 0x4 /* Designated Vendor-Specific Header1 */ +#define PCI_DVSEC_HEADER2 0x8 /* Designated Vendor-Specific Header2 */ + /* Data Link Feature */ #define PCI_DLF_CAP 0x04 /* Capabilities Register */ #define PCI_DLF_EXCHANGE_ENABLE 0x80000000 /* Data Link Feature Exchange Enable */ diff --git a/include/standard-headers/linux/vhost_types.h b/include/standard-headers/linux/vhost_types.h index 486630b332..0bd2684a2a 100644 --- a/include/standard-headers/linux/vhost_types.h +++ b/include/standard-headers/linux/vhost_types.h @@ -138,6 +138,15 @@ struct vhost_vdpa_config { uint8_t buf[0]; }; +/* vhost vdpa IOVA range + * @first: First address that can be mapped by vhost-vDPA + * @last: Last address that can be mapped by vhost-vDPA + */ +struct vhost_vdpa_iova_range { + uint64_t first; + uint64_t last; +}; + /* Feature bits */ /* Log all write descriptors. Can be changed while device is active. */ #define VHOST_F_LOG_ALL 26 diff --git a/include/standard-headers/linux/virtio_gpu.h b/include/standard-headers/linux/virtio_gpu.h index 4183cdc74b..1357e4774e 100644 --- a/include/standard-headers/linux/virtio_gpu.h +++ b/include/standard-headers/linux/virtio_gpu.h @@ -55,6 +55,11 @@ */ #define VIRTIO_GPU_F_RESOURCE_UUID 2 +/* + * VIRTIO_GPU_CMD_RESOURCE_CREATE_BLOB + */ +#define VIRTIO_GPU_F_RESOURCE_BLOB 3 + enum virtio_gpu_ctrl_type { VIRTIO_GPU_UNDEFINED = 0, @@ -71,6 +76,8 @@ enum virtio_gpu_ctrl_type { VIRTIO_GPU_CMD_GET_CAPSET, VIRTIO_GPU_CMD_GET_EDID, VIRTIO_GPU_CMD_RESOURCE_ASSIGN_UUID, + VIRTIO_GPU_CMD_RESOURCE_CREATE_BLOB, + VIRTIO_GPU_CMD_SET_SCANOUT_BLOB, /* 3d commands */ VIRTIO_GPU_CMD_CTX_CREATE = 0x0200, @@ -81,6 +88,8 @@ enum virtio_gpu_ctrl_type { VIRTIO_GPU_CMD_TRANSFER_TO_HOST_3D, VIRTIO_GPU_CMD_TRANSFER_FROM_HOST_3D, VIRTIO_GPU_CMD_SUBMIT_3D, + VIRTIO_GPU_CMD_RESOURCE_MAP_BLOB, + VIRTIO_GPU_CMD_RESOURCE_UNMAP_BLOB, /* cursor commands */ VIRTIO_GPU_CMD_UPDATE_CURSOR = 0x0300, @@ -93,6 +102,7 @@ enum virtio_gpu_ctrl_type { VIRTIO_GPU_RESP_OK_CAPSET, VIRTIO_GPU_RESP_OK_EDID, VIRTIO_GPU_RESP_OK_RESOURCE_UUID, + VIRTIO_GPU_RESP_OK_MAP_INFO, /* error responses */ VIRTIO_GPU_RESP_ERR_UNSPEC = 0x1200, @@ -103,6 +113,15 @@ enum virtio_gpu_ctrl_type { VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER, }; +enum virtio_gpu_shm_id { + VIRTIO_GPU_SHM_ID_UNDEFINED = 0, + /* + * VIRTIO_GPU_CMD_RESOURCE_MAP_BLOB + * VIRTIO_GPU_CMD_RESOURCE_UNMAP_BLOB + */ + VIRTIO_GPU_SHM_ID_HOST_VISIBLE = 1 +}; + #define VIRTIO_GPU_FLAG_FENCE (1 << 0) struct virtio_gpu_ctrl_hdr { @@ -359,4 +378,67 @@ struct virtio_gpu_resp_resource_uuid { uint8_t uuid[16]; }; +/* VIRTIO_GPU_CMD_RESOURCE_CREATE_BLOB */ +struct virtio_gpu_resource_create_blob { + struct virtio_gpu_ctrl_hdr hdr; + uint32_t resource_id; +#define VIRTIO_GPU_BLOB_MEM_GUEST 0x0001 +#define VIRTIO_GPU_BLOB_MEM_HOST3D 0x0002 +#define VIRTIO_GPU_BLOB_MEM_HOST3D_GUEST 0x0003 + +#define VIRTIO_GPU_BLOB_FLAG_USE_MAPPABLE 0x0001 +#define VIRTIO_GPU_BLOB_FLAG_USE_SHAREABLE 0x0002 +#define VIRTIO_GPU_BLOB_FLAG_USE_CROSS_DEVICE 0x0004 + /* zero is invalid blob mem */ + uint32_t blob_mem; + uint32_t blob_flags; + uint32_t nr_entries; + uint64_t blob_id; + uint64_t size; + /* + * sizeof(nr_entries * virtio_gpu_mem_entry) bytes follow + */ +}; + +/* VIRTIO_GPU_CMD_SET_SCANOUT_BLOB */ +struct virtio_gpu_set_scanout_blob { + struct virtio_gpu_ctrl_hdr hdr; + struct virtio_gpu_rect r; + uint32_t scanout_id; + uint32_t resource_id; + uint32_t width; + uint32_t height; + uint32_t format; + uint32_t padding; + uint32_t strides[4]; + uint32_t offsets[4]; +}; + +/* VIRTIO_GPU_CMD_RESOURCE_MAP_BLOB */ +struct virtio_gpu_resource_map_blob { + struct virtio_gpu_ctrl_hdr hdr; + uint32_t resource_id; + uint32_t padding; + uint64_t offset; +}; + +/* VIRTIO_GPU_RESP_OK_MAP_INFO */ +#define VIRTIO_GPU_MAP_CACHE_MASK 0x0f +#define VIRTIO_GPU_MAP_CACHE_NONE 0x00 +#define VIRTIO_GPU_MAP_CACHE_CACHED 0x01 +#define VIRTIO_GPU_MAP_CACHE_UNCACHED 0x02 +#define VIRTIO_GPU_MAP_CACHE_WC 0x03 +struct virtio_gpu_resp_map_info { + struct virtio_gpu_ctrl_hdr hdr; + uint32_t map_info; + uint32_t padding; +}; + +/* VIRTIO_GPU_CMD_RESOURCE_UNMAP_BLOB */ +struct virtio_gpu_resource_unmap_blob { + struct virtio_gpu_ctrl_hdr hdr; + uint32_t resource_id; + uint32_t padding; +}; + #endif diff --git a/include/standard-headers/linux/virtio_ids.h b/include/standard-headers/linux/virtio_ids.h index b052355ac7..bc1c0621f5 100644 --- a/include/standard-headers/linux/virtio_ids.h +++ b/include/standard-headers/linux/virtio_ids.h @@ -29,24 +29,30 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ -#define VIRTIO_ID_NET 1 /* virtio net */ -#define VIRTIO_ID_BLOCK 2 /* virtio block */ -#define VIRTIO_ID_CONSOLE 3 /* virtio console */ -#define VIRTIO_ID_RNG 4 /* virtio rng */ -#define VIRTIO_ID_BALLOON 5 /* virtio balloon */ -#define VIRTIO_ID_RPMSG 7 /* virtio remote processor messaging */ -#define VIRTIO_ID_SCSI 8 /* virtio scsi */ -#define VIRTIO_ID_9P 9 /* 9p virtio console */ -#define VIRTIO_ID_RPROC_SERIAL 11 /* virtio remoteproc serial link */ -#define VIRTIO_ID_CAIF 12 /* Virtio caif */ -#define VIRTIO_ID_GPU 16 /* virtio GPU */ -#define VIRTIO_ID_INPUT 18 /* virtio input */ -#define VIRTIO_ID_VSOCK 19 /* virtio vsock transport */ -#define VIRTIO_ID_CRYPTO 20 /* virtio crypto */ -#define VIRTIO_ID_IOMMU 23 /* virtio IOMMU */ -#define VIRTIO_ID_MEM 24 /* virtio mem */ -#define VIRTIO_ID_FS 26 /* virtio filesystem */ -#define VIRTIO_ID_PMEM 27 /* virtio pmem */ -#define VIRTIO_ID_MAC80211_HWSIM 29 /* virtio mac80211-hwsim */ +#define VIRTIO_ID_NET 1 /* virtio net */ +#define VIRTIO_ID_BLOCK 2 /* virtio block */ +#define VIRTIO_ID_CONSOLE 3 /* virtio console */ +#define VIRTIO_ID_RNG 4 /* virtio rng */ +#define VIRTIO_ID_BALLOON 5 /* virtio balloon */ +#define VIRTIO_ID_IOMEM 6 /* virtio ioMemory */ +#define VIRTIO_ID_RPMSG 7 /* virtio remote processor messaging */ +#define VIRTIO_ID_SCSI 8 /* virtio scsi */ +#define VIRTIO_ID_9P 9 /* 9p virtio console */ +#define VIRTIO_ID_MAC80211_WLAN 10 /* virtio WLAN MAC */ +#define VIRTIO_ID_RPROC_SERIAL 11 /* virtio remoteproc serial link */ +#define VIRTIO_ID_CAIF 12 /* Virtio caif */ +#define VIRTIO_ID_MEMORY_BALLOON 13 /* virtio memory balloon */ +#define VIRTIO_ID_GPU 16 /* virtio GPU */ +#define VIRTIO_ID_CLOCK 17 /* virtio clock/timer */ +#define VIRTIO_ID_INPUT 18 /* virtio input */ +#define VIRTIO_ID_VSOCK 19 /* virtio vsock transport */ +#define VIRTIO_ID_CRYPTO 20 /* virtio crypto */ +#define VIRTIO_ID_SIGNAL_DIST 21 /* virtio signal distribution device */ +#define VIRTIO_ID_PSTORE 22 /* virtio pstore device */ +#define VIRTIO_ID_IOMMU 23 /* virtio IOMMU */ +#define VIRTIO_ID_MEM 24 /* virtio mem */ +#define VIRTIO_ID_FS 26 /* virtio filesystem */ +#define VIRTIO_ID_PMEM 27 /* virtio pmem */ +#define VIRTIO_ID_MAC80211_HWSIM 29 /* virtio mac80211-hwsim */ #endif /* _LINUX_VIRTIO_IDS_H */ diff --git a/linux-headers/asm-arm64/kvm.h b/linux-headers/asm-arm64/kvm.h index a72de1ae4c..b6a0eaa32a 100644 --- a/linux-headers/asm-arm64/kvm.h +++ b/linux-headers/asm-arm64/kvm.h @@ -156,9 +156,6 @@ struct kvm_sync_regs { __u64 device_irq_level; }; -struct kvm_arch_memory_slot { -}; - /* * PMU filter structure. Describe a range of events with a particular * action. To be used with KVM_ARM_VCPU_PMU_V3_FILTER. diff --git a/linux-headers/asm-generic/unistd.h b/linux-headers/asm-generic/unistd.h index 2056318988..7287529177 100644 --- a/linux-headers/asm-generic/unistd.h +++ b/linux-headers/asm-generic/unistd.h @@ -517,7 +517,7 @@ __SC_COMP(__NR_settimeofday, sys_settimeofday, compat_sys_settimeofday) __SC_3264(__NR_adjtimex, sys_adjtimex_time32, sys_adjtimex) #endif -/* kernel/timer.c */ +/* kernel/sys.c */ #define __NR_getpid 172 __SYSCALL(__NR_getpid, sys_getpid) #define __NR_getppid 173 @@ -859,9 +859,11 @@ __SYSCALL(__NR_pidfd_getfd, sys_pidfd_getfd) __SYSCALL(__NR_faccessat2, sys_faccessat2) #define __NR_process_madvise 440 __SYSCALL(__NR_process_madvise, sys_process_madvise) +#define __NR_epoll_pwait2 441 +__SC_COMP(__NR_epoll_pwait2, sys_epoll_pwait2, compat_sys_epoll_pwait2) #undef __NR_syscalls -#define __NR_syscalls 441 +#define __NR_syscalls 442 /* * 32 bit systems traditionally used different diff --git a/linux-headers/asm-mips/unistd_n32.h b/linux-headers/asm-mips/unistd_n32.h index aba284d190..59e53b6e07 100644 --- a/linux-headers/asm-mips/unistd_n32.h +++ b/linux-headers/asm-mips/unistd_n32.h @@ -370,6 +370,7 @@ #define __NR_pidfd_getfd (__NR_Linux + 438) #define __NR_faccessat2 (__NR_Linux + 439) #define __NR_process_madvise (__NR_Linux + 440) +#define __NR_epoll_pwait2 (__NR_Linux + 441) #endif /* _ASM_MIPS_UNISTD_N32_H */ diff --git a/linux-headers/asm-mips/unistd_n64.h b/linux-headers/asm-mips/unistd_n64.h index 0465ab94db..683558a7f8 100644 --- a/linux-headers/asm-mips/unistd_n64.h +++ b/linux-headers/asm-mips/unistd_n64.h @@ -346,6 +346,7 @@ #define __NR_pidfd_getfd (__NR_Linux + 438) #define __NR_faccessat2 (__NR_Linux + 439) #define __NR_process_madvise (__NR_Linux + 440) +#define __NR_epoll_pwait2 (__NR_Linux + 441) #endif /* _ASM_MIPS_UNISTD_N64_H */ diff --git a/linux-headers/asm-mips/unistd_o32.h b/linux-headers/asm-mips/unistd_o32.h index 5222a0dd50..ca6a7e5c0b 100644 --- a/linux-headers/asm-mips/unistd_o32.h +++ b/linux-headers/asm-mips/unistd_o32.h @@ -416,6 +416,7 @@ #define __NR_pidfd_getfd (__NR_Linux + 438) #define __NR_faccessat2 (__NR_Linux + 439) #define __NR_process_madvise (__NR_Linux + 440) +#define __NR_epoll_pwait2 (__NR_Linux + 441) #endif /* _ASM_MIPS_UNISTD_O32_H */ diff --git a/linux-headers/asm-powerpc/unistd_32.h b/linux-headers/asm-powerpc/unistd_32.h index 21066a3d5f..4624c90043 100644 --- a/linux-headers/asm-powerpc/unistd_32.h +++ b/linux-headers/asm-powerpc/unistd_32.h @@ -423,6 +423,7 @@ #define __NR_pidfd_getfd 438 #define __NR_faccessat2 439 #define __NR_process_madvise 440 +#define __NR_epoll_pwait2 441 #endif /* _ASM_POWERPC_UNISTD_32_H */ diff --git a/linux-headers/asm-powerpc/unistd_64.h b/linux-headers/asm-powerpc/unistd_64.h index c153da29f2..7e851b30bb 100644 --- a/linux-headers/asm-powerpc/unistd_64.h +++ b/linux-headers/asm-powerpc/unistd_64.h @@ -395,6 +395,7 @@ #define __NR_pidfd_getfd 438 #define __NR_faccessat2 439 #define __NR_process_madvise 440 +#define __NR_epoll_pwait2 441 #endif /* _ASM_POWERPC_UNISTD_64_H */ diff --git a/linux-headers/asm-s390/unistd_32.h b/linux-headers/asm-s390/unistd_32.h index 3b4f2dda60..c94d2c3a22 100644 --- a/linux-headers/asm-s390/unistd_32.h +++ b/linux-headers/asm-s390/unistd_32.h @@ -413,5 +413,6 @@ #define __NR_pidfd_getfd 438 #define __NR_faccessat2 439 #define __NR_process_madvise 440 +#define __NR_epoll_pwait2 441 #endif /* _ASM_S390_UNISTD_32_H */ diff --git a/linux-headers/asm-s390/unistd_64.h b/linux-headers/asm-s390/unistd_64.h index 030a51fa38..984a06b7eb 100644 --- a/linux-headers/asm-s390/unistd_64.h +++ b/linux-headers/asm-s390/unistd_64.h @@ -361,5 +361,6 @@ #define __NR_pidfd_getfd 438 #define __NR_faccessat2 439 #define __NR_process_madvise 440 +#define __NR_epoll_pwait2 441 #endif /* _ASM_S390_UNISTD_64_H */ diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h index 89e5f3d1bb..8e76d3701d 100644 --- a/linux-headers/asm-x86/kvm.h +++ b/linux-headers/asm-x86/kvm.h @@ -12,6 +12,7 @@ #define KVM_PIO_PAGE_OFFSET 1 #define KVM_COALESCED_MMIO_PAGE_OFFSET 2 +#define KVM_DIRTY_LOG_PAGE_OFFSET 64 #define DE_VECTOR 0 #define DB_VECTOR 1 diff --git a/linux-headers/asm-x86/unistd_32.h b/linux-headers/asm-x86/unistd_32.h index cfba368f9d..18fb99dfa2 100644 --- a/linux-headers/asm-x86/unistd_32.h +++ b/linux-headers/asm-x86/unistd_32.h @@ -431,6 +431,7 @@ #define __NR_pidfd_getfd 438 #define __NR_faccessat2 439 #define __NR_process_madvise 440 +#define __NR_epoll_pwait2 441 #endif /* _ASM_X86_UNISTD_32_H */ diff --git a/linux-headers/asm-x86/unistd_64.h b/linux-headers/asm-x86/unistd_64.h index 61af725095..bde959328d 100644 --- a/linux-headers/asm-x86/unistd_64.h +++ b/linux-headers/asm-x86/unistd_64.h @@ -353,6 +353,7 @@ #define __NR_pidfd_getfd 438 #define __NR_faccessat2 439 #define __NR_process_madvise 440 +#define __NR_epoll_pwait2 441 #endif /* _ASM_X86_UNISTD_64_H */ diff --git a/linux-headers/asm-x86/unistd_x32.h b/linux-headers/asm-x86/unistd_x32.h index a6890cb1f5..4ff6b17d3b 100644 --- a/linux-headers/asm-x86/unistd_x32.h +++ b/linux-headers/asm-x86/unistd_x32.h @@ -306,6 +306,7 @@ #define __NR_pidfd_getfd (__X32_SYSCALL_BIT + 438) #define __NR_faccessat2 (__X32_SYSCALL_BIT + 439) #define __NR_process_madvise (__X32_SYSCALL_BIT + 440) +#define __NR_epoll_pwait2 (__X32_SYSCALL_BIT + 441) #define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512) #define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513) #define __NR_ioctl (__X32_SYSCALL_BIT + 514) diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h index 56ce14ad20..020b62a619 100644 --- a/linux-headers/linux/kvm.h +++ b/linux-headers/linux/kvm.h @@ -250,6 +250,7 @@ struct kvm_hyperv_exit { #define KVM_EXIT_ARM_NISV 28 #define KVM_EXIT_X86_RDMSR 29 #define KVM_EXIT_X86_WRMSR 30 +#define KVM_EXIT_DIRTY_RING_FULL 31 /* For KVM_EXIT_INTERNAL_ERROR */ /* Emulate instruction failed. */ @@ -1053,6 +1054,8 @@ struct kvm_ppc_resize_hpt { #define KVM_CAP_X86_USER_SPACE_MSR 188 #define KVM_CAP_X86_MSR_FILTER 189 #define KVM_CAP_ENFORCE_PV_FEATURE_CPUID 190 +#define KVM_CAP_SYS_HYPERV_CPUID 191 +#define KVM_CAP_DIRTY_LOG_RING 192 #ifdef KVM_CAP_IRQ_ROUTING @@ -1511,7 +1514,7 @@ struct kvm_enc_region { /* Available with KVM_CAP_MANUAL_DIRTY_LOG_PROTECT_2 */ #define KVM_CLEAR_DIRTY_LOG _IOWR(KVMIO, 0xc0, struct kvm_clear_dirty_log) -/* Available with KVM_CAP_HYPERV_CPUID */ +/* Available with KVM_CAP_HYPERV_CPUID (vcpu) / KVM_CAP_SYS_HYPERV_CPUID (system) */ #define KVM_GET_SUPPORTED_HV_CPUID _IOWR(KVMIO, 0xc1, struct kvm_cpuid2) /* Available with KVM_CAP_ARM_SVE */ @@ -1557,6 +1560,9 @@ struct kvm_pv_cmd { /* Available with KVM_CAP_X86_MSR_FILTER */ #define KVM_X86_SET_MSR_FILTER _IOW(KVMIO, 0xc6, struct kvm_msr_filter) +/* Available with KVM_CAP_DIRTY_LOG_RING */ +#define KVM_RESET_DIRTY_RINGS _IO(KVMIO, 0xc7) + /* Secure Encrypted Virtualization command */ enum sev_cmd_id { /* Guest initialization commands */ @@ -1710,4 +1716,52 @@ struct kvm_hyperv_eventfd { #define KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE (1 << 0) #define KVM_DIRTY_LOG_INITIALLY_SET (1 << 1) +/* + * Arch needs to define the macro after implementing the dirty ring + * feature. KVM_DIRTY_LOG_PAGE_OFFSET should be defined as the + * starting page offset of the dirty ring structures. + */ +#ifndef KVM_DIRTY_LOG_PAGE_OFFSET +#define KVM_DIRTY_LOG_PAGE_OFFSET 0 +#endif + +/* + * KVM dirty GFN flags, defined as: + * + * |---------------+---------------+--------------| + * | bit 1 (reset) | bit 0 (dirty) | Status | + * |---------------+---------------+--------------| + * | 0 | 0 | Invalid GFN | + * | 0 | 1 | Dirty GFN | + * | 1 | X | GFN to reset | + * |---------------+---------------+--------------| + * + * Lifecycle of a dirty GFN goes like: + * + * dirtied harvested reset + * 00 -----------> 01 -------------> 1X -------+ + * ^ | + * | | + * +------------------------------------------+ + * + * The userspace program is only responsible for the 01->1X state + * conversion after harvesting an entry. Also, it must not skip any + * dirty bits, so that dirty bits are always harvested in sequence. + */ +#define KVM_DIRTY_GFN_F_DIRTY BIT(0) +#define KVM_DIRTY_GFN_F_RESET BIT(1) +#define KVM_DIRTY_GFN_F_MASK 0x3 + +/* + * KVM dirty rings should be mapped at KVM_DIRTY_LOG_PAGE_OFFSET of + * per-vcpu mmaped regions as an array of struct kvm_dirty_gfn. The + * size of the gfn buffer is decided by the first argument when + * enabling KVM_CAP_DIRTY_LOG_RING. + */ +struct kvm_dirty_gfn { + __u32 flags; + __u32 slot; + __u64 offset; +}; + #endif /* __LINUX_KVM_H */ diff --git a/linux-headers/linux/userfaultfd.h b/linux-headers/linux/userfaultfd.h index 8d3996eb82..1ba9a9feeb 100644 --- a/linux-headers/linux/userfaultfd.h +++ b/linux-headers/linux/userfaultfd.h @@ -257,4 +257,13 @@ struct uffdio_writeprotect { __u64 mode; }; +/* + * Flags for the userfaultfd(2) system call itself. + */ + +/* + * Create a userfaultfd that can handle page faults only in user mode. + */ +#define UFFD_USER_MODE_ONLY 1 + #endif /* _LINUX_USERFAULTFD_H */ diff --git a/linux-headers/linux/vfio.h b/linux-headers/linux/vfio.h index b92dcc4daf..609099e455 100644 --- a/linux-headers/linux/vfio.h +++ b/linux-headers/linux/vfio.h @@ -820,6 +820,7 @@ enum { enum { VFIO_CCW_IO_IRQ_INDEX, VFIO_CCW_CRW_IRQ_INDEX, + VFIO_CCW_REQ_IRQ_INDEX, VFIO_CCW_NUM_IRQS }; diff --git a/linux-headers/linux/vhost.h b/linux-headers/linux/vhost.h index 7523218532..c998860d7b 100644 --- a/linux-headers/linux/vhost.h +++ b/linux-headers/linux/vhost.h @@ -146,4 +146,8 @@ /* Set event fd for config interrupt*/ #define VHOST_VDPA_SET_CONFIG_CALL _IOW(VHOST_VIRTIO, 0x77, int) + +/* Get the valid iova range */ +#define VHOST_VDPA_GET_IOVA_RANGE _IOR(VHOST_VIRTIO, 0x78, \ + struct vhost_vdpa_iova_range) #endif -- 2.17.1 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v3 2/3] Update linux headers to 5.11-rc2 2021-01-04 20:20 ` [PATCH v3 2/3] Update linux headers to 5.11-rc2 Eric Farman @ 2021-01-11 12:54 ` Cornelia Huck 2021-01-11 13:00 ` Michael S. Tsirkin 0 siblings, 1 reply; 19+ messages in thread From: Cornelia Huck @ 2021-01-11 12:54 UTC (permalink / raw) To: Eric Farman Cc: Thomas Huth, Michael S. Tsirkin, qemu-s390x, qemu-devel, Alex Williamson, Paolo Bonzini On Mon, 4 Jan 2021 21:20:56 +0100 Eric Farman <farman@linux.ibm.com> wrote: > Signed-off-by: Eric Farman <farman@linux.ibm.com> > --- > .../infiniband/hw/vmw_pvrdma/pvrdma_ring.h | 14 +- > .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 2 +- > include/standard-headers/drm/drm_fourcc.h | 175 +++++++++++++++++- > include/standard-headers/linux/const.h | 36 ++++ > include/standard-headers/linux/ethtool.h | 2 +- > include/standard-headers/linux/fuse.h | 30 ++- > include/standard-headers/linux/kernel.h | 9 +- > include/standard-headers/linux/pci_regs.h | 16 ++ > include/standard-headers/linux/vhost_types.h | 9 + > include/standard-headers/linux/virtio_gpu.h | 82 ++++++++ > include/standard-headers/linux/virtio_ids.h | 44 +++-- > linux-headers/asm-arm64/kvm.h | 3 - > linux-headers/asm-generic/unistd.h | 6 +- > linux-headers/asm-mips/unistd_n32.h | 1 + > linux-headers/asm-mips/unistd_n64.h | 1 + > linux-headers/asm-mips/unistd_o32.h | 1 + > linux-headers/asm-powerpc/unistd_32.h | 1 + > linux-headers/asm-powerpc/unistd_64.h | 1 + > linux-headers/asm-s390/unistd_32.h | 1 + > linux-headers/asm-s390/unistd_64.h | 1 + > linux-headers/asm-x86/kvm.h | 1 + > linux-headers/asm-x86/unistd_32.h | 1 + > linux-headers/asm-x86/unistd_64.h | 1 + > linux-headers/asm-x86/unistd_x32.h | 1 + > linux-headers/linux/kvm.h | 56 +++++- > linux-headers/linux/userfaultfd.h | 9 + > linux-headers/linux/vfio.h | 1 + > linux-headers/linux/vhost.h | 4 + > 28 files changed, 461 insertions(+), 48 deletions(-) > create mode 100644 include/standard-headers/linux/const.h > > diff --git a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > index 7b4062a1a1..acd4c8346d 100644 > --- a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > +++ b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > @@ -68,7 +68,7 @@ static inline int pvrdma_idx_valid(uint32_t idx, uint32_t max_elems) > > static inline int32_t pvrdma_idx(int *var, uint32_t max_elems) > { > - const unsigned int idx = qatomic_read(var); > + const unsigned int idx = atomic_read(var); Hm, what was the state of these qatomic* instances in this header? Is it ok to rename them, or do we need to do some munging in the import script? (Sorry, it's been a while.) > > if (pvrdma_idx_valid(idx, max_elems)) > return idx & (max_elems - 1); > @@ -77,17 +77,17 @@ static inline int32_t pvrdma_idx(int *var, uint32_t max_elems) > > static inline void pvrdma_idx_ring_inc(int *var, uint32_t max_elems) > { > - uint32_t idx = qatomic_read(var) + 1; /* Increment. */ > + uint32_t idx = atomic_read(var) + 1; /* Increment. */ > > idx &= (max_elems << 1) - 1; /* Modulo size, flip gen. */ > - qatomic_set(var, idx); > + atomic_set(var, idx); > } > > static inline int32_t pvrdma_idx_ring_has_space(const struct pvrdma_ring *r, > uint32_t max_elems, uint32_t *out_tail) > { > - const uint32_t tail = qatomic_read(&r->prod_tail); > - const uint32_t head = qatomic_read(&r->cons_head); > + const uint32_t tail = atomic_read(&r->prod_tail); > + const uint32_t head = atomic_read(&r->cons_head); > > if (pvrdma_idx_valid(tail, max_elems) && > pvrdma_idx_valid(head, max_elems)) { > @@ -100,8 +100,8 @@ static inline int32_t pvrdma_idx_ring_has_space(const struct pvrdma_ring *r, > static inline int32_t pvrdma_idx_ring_has_data(const struct pvrdma_ring *r, > uint32_t max_elems, uint32_t *out_head) > { > - const uint32_t tail = qatomic_read(&r->prod_tail); > - const uint32_t head = qatomic_read(&r->cons_head); > + const uint32_t tail = atomic_read(&r->prod_tail); > + const uint32_t head = atomic_read(&r->cons_head); > > if (pvrdma_idx_valid(tail, max_elems) && > pvrdma_idx_valid(head, max_elems)) { ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v3 2/3] Update linux headers to 5.11-rc2 2021-01-11 12:54 ` Cornelia Huck @ 2021-01-11 13:00 ` Michael S. Tsirkin 2021-01-11 13:43 ` Cornelia Huck 0 siblings, 1 reply; 19+ messages in thread From: Michael S. Tsirkin @ 2021-01-11 13:00 UTC (permalink / raw) To: Cornelia Huck Cc: Thomas Huth, qemu-s390x, Eric Farman, qemu-devel, Alex Williamson, stefanha, Paolo Bonzini On Mon, Jan 11, 2021 at 01:54:04PM +0100, Cornelia Huck wrote: > On Mon, 4 Jan 2021 21:20:56 +0100 > Eric Farman <farman@linux.ibm.com> wrote: > > > Signed-off-by: Eric Farman <farman@linux.ibm.com> > > --- > > .../infiniband/hw/vmw_pvrdma/pvrdma_ring.h | 14 +- > > .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 2 +- > > include/standard-headers/drm/drm_fourcc.h | 175 +++++++++++++++++- > > include/standard-headers/linux/const.h | 36 ++++ > > include/standard-headers/linux/ethtool.h | 2 +- > > include/standard-headers/linux/fuse.h | 30 ++- > > include/standard-headers/linux/kernel.h | 9 +- > > include/standard-headers/linux/pci_regs.h | 16 ++ > > include/standard-headers/linux/vhost_types.h | 9 + > > include/standard-headers/linux/virtio_gpu.h | 82 ++++++++ > > include/standard-headers/linux/virtio_ids.h | 44 +++-- > > linux-headers/asm-arm64/kvm.h | 3 - > > linux-headers/asm-generic/unistd.h | 6 +- > > linux-headers/asm-mips/unistd_n32.h | 1 + > > linux-headers/asm-mips/unistd_n64.h | 1 + > > linux-headers/asm-mips/unistd_o32.h | 1 + > > linux-headers/asm-powerpc/unistd_32.h | 1 + > > linux-headers/asm-powerpc/unistd_64.h | 1 + > > linux-headers/asm-s390/unistd_32.h | 1 + > > linux-headers/asm-s390/unistd_64.h | 1 + > > linux-headers/asm-x86/kvm.h | 1 + > > linux-headers/asm-x86/unistd_32.h | 1 + > > linux-headers/asm-x86/unistd_64.h | 1 + > > linux-headers/asm-x86/unistd_x32.h | 1 + > > linux-headers/linux/kvm.h | 56 +++++- > > linux-headers/linux/userfaultfd.h | 9 + > > linux-headers/linux/vfio.h | 1 + > > linux-headers/linux/vhost.h | 4 + > > 28 files changed, 461 insertions(+), 48 deletions(-) > > create mode 100644 include/standard-headers/linux/const.h > > > > diff --git a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > index 7b4062a1a1..acd4c8346d 100644 > > --- a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > +++ b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > @@ -68,7 +68,7 @@ static inline int pvrdma_idx_valid(uint32_t idx, uint32_t max_elems) > > > > static inline int32_t pvrdma_idx(int *var, uint32_t max_elems) > > { > > - const unsigned int idx = qatomic_read(var); > > + const unsigned int idx = atomic_read(var); > > Hm, what was the state of these qatomic* instances in this header? Is > it ok to rename them, or do we need to do some munging in the import > script? > > (Sorry, it's been a while.) Yea looks like it was done manually last time: commit d73415a315471ac0b127ed3fad45c8ec5d711de1 Author: Stefan Hajnoczi <stefanha@redhat.com> Date: Wed Sep 23 11:56:46 2020 +0100 qemu/atomic.h: rename atomic_ to qatomic_ > > > > if (pvrdma_idx_valid(idx, max_elems)) > > return idx & (max_elems - 1); > > @@ -77,17 +77,17 @@ static inline int32_t pvrdma_idx(int *var, uint32_t max_elems) > > > > static inline void pvrdma_idx_ring_inc(int *var, uint32_t max_elems) > > { > > - uint32_t idx = qatomic_read(var) + 1; /* Increment. */ > > + uint32_t idx = atomic_read(var) + 1; /* Increment. */ > > > > idx &= (max_elems << 1) - 1; /* Modulo size, flip gen. */ > > - qatomic_set(var, idx); > > + atomic_set(var, idx); > > } > > > > static inline int32_t pvrdma_idx_ring_has_space(const struct pvrdma_ring *r, > > uint32_t max_elems, uint32_t *out_tail) > > { > > - const uint32_t tail = qatomic_read(&r->prod_tail); > > - const uint32_t head = qatomic_read(&r->cons_head); > > + const uint32_t tail = atomic_read(&r->prod_tail); > > + const uint32_t head = atomic_read(&r->cons_head); > > > > if (pvrdma_idx_valid(tail, max_elems) && > > pvrdma_idx_valid(head, max_elems)) { > > @@ -100,8 +100,8 @@ static inline int32_t pvrdma_idx_ring_has_space(const struct pvrdma_ring *r, > > static inline int32_t pvrdma_idx_ring_has_data(const struct pvrdma_ring *r, > > uint32_t max_elems, uint32_t *out_head) > > { > > - const uint32_t tail = qatomic_read(&r->prod_tail); > > - const uint32_t head = qatomic_read(&r->cons_head); > > + const uint32_t tail = atomic_read(&r->prod_tail); > > + const uint32_t head = atomic_read(&r->cons_head); > > > > if (pvrdma_idx_valid(tail, max_elems) && > > pvrdma_idx_valid(head, max_elems)) { ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v3 2/3] Update linux headers to 5.11-rc2 2021-01-11 13:00 ` Michael S. Tsirkin @ 2021-01-11 13:43 ` Cornelia Huck 2021-01-11 15:00 ` Michael S. Tsirkin 2021-01-13 11:27 ` Cornelia Huck 0 siblings, 2 replies; 19+ messages in thread From: Cornelia Huck @ 2021-01-11 13:43 UTC (permalink / raw) To: Michael S. Tsirkin Cc: Thomas Huth, qemu-s390x, Eric Farman, qemu-devel, Alex Williamson, stefanha, Paolo Bonzini On Mon, 11 Jan 2021 08:00:45 -0500 "Michael S. Tsirkin" <mst@redhat.com> wrote: > On Mon, Jan 11, 2021 at 01:54:04PM +0100, Cornelia Huck wrote: > > On Mon, 4 Jan 2021 21:20:56 +0100 > > Eric Farman <farman@linux.ibm.com> wrote: > > > > > Signed-off-by: Eric Farman <farman@linux.ibm.com> > > > --- > > > .../infiniband/hw/vmw_pvrdma/pvrdma_ring.h | 14 +- > > > .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 2 +- > > > include/standard-headers/drm/drm_fourcc.h | 175 +++++++++++++++++- > > > include/standard-headers/linux/const.h | 36 ++++ > > > include/standard-headers/linux/ethtool.h | 2 +- > > > include/standard-headers/linux/fuse.h | 30 ++- > > > include/standard-headers/linux/kernel.h | 9 +- > > > include/standard-headers/linux/pci_regs.h | 16 ++ > > > include/standard-headers/linux/vhost_types.h | 9 + > > > include/standard-headers/linux/virtio_gpu.h | 82 ++++++++ > > > include/standard-headers/linux/virtio_ids.h | 44 +++-- > > > linux-headers/asm-arm64/kvm.h | 3 - > > > linux-headers/asm-generic/unistd.h | 6 +- > > > linux-headers/asm-mips/unistd_n32.h | 1 + > > > linux-headers/asm-mips/unistd_n64.h | 1 + > > > linux-headers/asm-mips/unistd_o32.h | 1 + > > > linux-headers/asm-powerpc/unistd_32.h | 1 + > > > linux-headers/asm-powerpc/unistd_64.h | 1 + > > > linux-headers/asm-s390/unistd_32.h | 1 + > > > linux-headers/asm-s390/unistd_64.h | 1 + > > > linux-headers/asm-x86/kvm.h | 1 + > > > linux-headers/asm-x86/unistd_32.h | 1 + > > > linux-headers/asm-x86/unistd_64.h | 1 + > > > linux-headers/asm-x86/unistd_x32.h | 1 + > > > linux-headers/linux/kvm.h | 56 +++++- > > > linux-headers/linux/userfaultfd.h | 9 + > > > linux-headers/linux/vfio.h | 1 + > > > linux-headers/linux/vhost.h | 4 + > > > 28 files changed, 461 insertions(+), 48 deletions(-) > > > create mode 100644 include/standard-headers/linux/const.h > > > > > > diff --git a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > index 7b4062a1a1..acd4c8346d 100644 > > > --- a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > +++ b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > @@ -68,7 +68,7 @@ static inline int pvrdma_idx_valid(uint32_t idx, uint32_t max_elems) > > > > > > static inline int32_t pvrdma_idx(int *var, uint32_t max_elems) > > > { > > > - const unsigned int idx = qatomic_read(var); > > > + const unsigned int idx = atomic_read(var); > > > > Hm, what was the state of these qatomic* instances in this header? Is > > it ok to rename them, or do we need to do some munging in the import > > script? > > > > (Sorry, it's been a while.) > > > Yea looks like it was done manually last time: > > commit d73415a315471ac0b127ed3fad45c8ec5d711de1 > Author: Stefan Hajnoczi <stefanha@redhat.com> > Date: Wed Sep 23 11:56:46 2020 +0100 > > qemu/atomic.h: rename atomic_ to qatomic_ It seems that this hunk was dropped manually last time: commit 53ba2eee52bff5a746e96835539a1079f6bcadd1 Author: Matthew Rosato <mjrosato@linux.ibm.com> Date: Mon Oct 26 11:34:30 2020 -0400 linux-headers: update against 5.10-rc1 commit 3650b228f83adda7e5ee532e2b90429c03f7b9ec Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com> [aw: drop pvrdma_ring.h changes to avoid revert of d73415a31547 ("qemu/atomic.h: rename atomic_ to qatomic_")] Signed-off-by: Alex Williamson <alex.williamson@redhat.com> I can do that as well, but I'm not sure that this is the best way forward. > > > > > > > > > if (pvrdma_idx_valid(idx, max_elems)) > > > return idx & (max_elems - 1); > > > @@ -77,17 +77,17 @@ static inline int32_t pvrdma_idx(int *var, uint32_t max_elems) > > > > > > static inline void pvrdma_idx_ring_inc(int *var, uint32_t max_elems) > > > { > > > - uint32_t idx = qatomic_read(var) + 1; /* Increment. */ > > > + uint32_t idx = atomic_read(var) + 1; /* Increment. */ > > > > > > idx &= (max_elems << 1) - 1; /* Modulo size, flip gen. */ > > > - qatomic_set(var, idx); > > > + atomic_set(var, idx); > > > } > > > > > > static inline int32_t pvrdma_idx_ring_has_space(const struct pvrdma_ring *r, > > > uint32_t max_elems, uint32_t *out_tail) > > > { > > > - const uint32_t tail = qatomic_read(&r->prod_tail); > > > - const uint32_t head = qatomic_read(&r->cons_head); > > > + const uint32_t tail = atomic_read(&r->prod_tail); > > > + const uint32_t head = atomic_read(&r->cons_head); > > > > > > if (pvrdma_idx_valid(tail, max_elems) && > > > pvrdma_idx_valid(head, max_elems)) { > > > @@ -100,8 +100,8 @@ static inline int32_t pvrdma_idx_ring_has_space(const struct pvrdma_ring *r, > > > static inline int32_t pvrdma_idx_ring_has_data(const struct pvrdma_ring *r, > > > uint32_t max_elems, uint32_t *out_head) > > > { > > > - const uint32_t tail = qatomic_read(&r->prod_tail); > > > - const uint32_t head = qatomic_read(&r->cons_head); > > > + const uint32_t tail = atomic_read(&r->prod_tail); > > > + const uint32_t head = atomic_read(&r->cons_head); > > > > > > if (pvrdma_idx_valid(tail, max_elems) && > > > pvrdma_idx_valid(head, max_elems)) { > ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v3 2/3] Update linux headers to 5.11-rc2 2021-01-11 13:43 ` Cornelia Huck @ 2021-01-11 15:00 ` Michael S. Tsirkin 2021-01-11 15:11 ` Eric Farman 2021-01-13 11:27 ` Cornelia Huck 1 sibling, 1 reply; 19+ messages in thread From: Michael S. Tsirkin @ 2021-01-11 15:00 UTC (permalink / raw) To: Cornelia Huck Cc: Thomas Huth, qemu-s390x, Eric Farman, qemu-devel, Alex Williamson, stefanha, Paolo Bonzini On Mon, Jan 11, 2021 at 02:43:22PM +0100, Cornelia Huck wrote: > On Mon, 11 Jan 2021 08:00:45 -0500 > "Michael S. Tsirkin" <mst@redhat.com> wrote: > > > On Mon, Jan 11, 2021 at 01:54:04PM +0100, Cornelia Huck wrote: > > > On Mon, 4 Jan 2021 21:20:56 +0100 > > > Eric Farman <farman@linux.ibm.com> wrote: > > > > > > > Signed-off-by: Eric Farman <farman@linux.ibm.com> > > > > --- > > > > .../infiniband/hw/vmw_pvrdma/pvrdma_ring.h | 14 +- > > > > .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 2 +- > > > > include/standard-headers/drm/drm_fourcc.h | 175 +++++++++++++++++- > > > > include/standard-headers/linux/const.h | 36 ++++ > > > > include/standard-headers/linux/ethtool.h | 2 +- > > > > include/standard-headers/linux/fuse.h | 30 ++- > > > > include/standard-headers/linux/kernel.h | 9 +- > > > > include/standard-headers/linux/pci_regs.h | 16 ++ > > > > include/standard-headers/linux/vhost_types.h | 9 + > > > > include/standard-headers/linux/virtio_gpu.h | 82 ++++++++ > > > > include/standard-headers/linux/virtio_ids.h | 44 +++-- > > > > linux-headers/asm-arm64/kvm.h | 3 - > > > > linux-headers/asm-generic/unistd.h | 6 +- > > > > linux-headers/asm-mips/unistd_n32.h | 1 + > > > > linux-headers/asm-mips/unistd_n64.h | 1 + > > > > linux-headers/asm-mips/unistd_o32.h | 1 + > > > > linux-headers/asm-powerpc/unistd_32.h | 1 + > > > > linux-headers/asm-powerpc/unistd_64.h | 1 + > > > > linux-headers/asm-s390/unistd_32.h | 1 + > > > > linux-headers/asm-s390/unistd_64.h | 1 + > > > > linux-headers/asm-x86/kvm.h | 1 + > > > > linux-headers/asm-x86/unistd_32.h | 1 + > > > > linux-headers/asm-x86/unistd_64.h | 1 + > > > > linux-headers/asm-x86/unistd_x32.h | 1 + > > > > linux-headers/linux/kvm.h | 56 +++++- > > > > linux-headers/linux/userfaultfd.h | 9 + > > > > linux-headers/linux/vfio.h | 1 + > > > > linux-headers/linux/vhost.h | 4 + > > > > 28 files changed, 461 insertions(+), 48 deletions(-) > > > > create mode 100644 include/standard-headers/linux/const.h > > > > > > > > diff --git a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > > index 7b4062a1a1..acd4c8346d 100644 > > > > --- a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > > +++ b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > > @@ -68,7 +68,7 @@ static inline int pvrdma_idx_valid(uint32_t idx, uint32_t max_elems) > > > > > > > > static inline int32_t pvrdma_idx(int *var, uint32_t max_elems) > > > > { > > > > - const unsigned int idx = qatomic_read(var); > > > > + const unsigned int idx = atomic_read(var); > > > > > > Hm, what was the state of these qatomic* instances in this header? Is > > > it ok to rename them, or do we need to do some munging in the import > > > script? > > > > > > (Sorry, it's been a while.) > > > > > > Yea looks like it was done manually last time: > > > > commit d73415a315471ac0b127ed3fad45c8ec5d711de1 > > Author: Stefan Hajnoczi <stefanha@redhat.com> > > Date: Wed Sep 23 11:56:46 2020 +0100 > > > > qemu/atomic.h: rename atomic_ to qatomic_ > > It seems that this hunk was dropped manually last time: > > commit 53ba2eee52bff5a746e96835539a1079f6bcadd1 > Author: Matthew Rosato <mjrosato@linux.ibm.com> > Date: Mon Oct 26 11:34:30 2020 -0400 > > linux-headers: update against 5.10-rc1 > > commit 3650b228f83adda7e5ee532e2b90429c03f7b9ec > > Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com> > [aw: drop pvrdma_ring.h changes to avoid revert of d73415a31547 ("qemu/atomic.h: rename atomic_ to qatomic_")] > Signed-off-by: Alex Williamson <alex.williamson@redhat.com> > > I can do that as well, but I'm not sure that this is the best way > forward. Probably as easy as the following: Signed-off-by: Michael S. Tsirkin <mst@redhat.com> diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh index 9efbaf2f84..c1b4f468d3 100755 --- a/scripts/update-linux-headers.sh +++ b/scripts/update-linux-headers.sh @@ -70,6 +70,8 @@ cp_portable() { -e 's/__kernel_long_t/long/' \ -e 's/__kernel_ulong_t/unsigned long/' \ -e 's/struct ethhdr/struct eth_header/' \ + -e 's/atomic_read/qatomic_read/' \ + -e 's/atomic_set/qatomic_set/' \ -e '/\#define _LINUX_ETHTOOL_H/a \\n\#include "net/eth.h"' \ "$f" > "$to/$header"; } -- MST ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v3 2/3] Update linux headers to 5.11-rc2 2021-01-11 15:00 ` Michael S. Tsirkin @ 2021-01-11 15:11 ` Eric Farman 2021-01-11 15:18 ` Michael S. Tsirkin 0 siblings, 1 reply; 19+ messages in thread From: Eric Farman @ 2021-01-11 15:11 UTC (permalink / raw) To: Michael S. Tsirkin, Cornelia Huck Cc: Thomas Huth, Alex Williamson, qemu-devel, qemu-s390x, stefanha, Paolo Bonzini On 1/11/21 10:00 AM, Michael S. Tsirkin wrote: > On Mon, Jan 11, 2021 at 02:43:22PM +0100, Cornelia Huck wrote: >> On Mon, 11 Jan 2021 08:00:45 -0500 >> "Michael S. Tsirkin" <mst@redhat.com> wrote: >> >>> On Mon, Jan 11, 2021 at 01:54:04PM +0100, Cornelia Huck wrote: >>>> On Mon, 4 Jan 2021 21:20:56 +0100 >>>> Eric Farman <farman@linux.ibm.com> wrote: >>>> >>>>> Signed-off-by: Eric Farman <farman@linux.ibm.com> >>>>> --- >>>>> .../infiniband/hw/vmw_pvrdma/pvrdma_ring.h | 14 +- >>>>> .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 2 +- >>>>> include/standard-headers/drm/drm_fourcc.h | 175 +++++++++++++++++- >>>>> include/standard-headers/linux/const.h | 36 ++++ >>>>> include/standard-headers/linux/ethtool.h | 2 +- >>>>> include/standard-headers/linux/fuse.h | 30 ++- >>>>> include/standard-headers/linux/kernel.h | 9 +- >>>>> include/standard-headers/linux/pci_regs.h | 16 ++ >>>>> include/standard-headers/linux/vhost_types.h | 9 + >>>>> include/standard-headers/linux/virtio_gpu.h | 82 ++++++++ >>>>> include/standard-headers/linux/virtio_ids.h | 44 +++-- >>>>> linux-headers/asm-arm64/kvm.h | 3 - >>>>> linux-headers/asm-generic/unistd.h | 6 +- >>>>> linux-headers/asm-mips/unistd_n32.h | 1 + >>>>> linux-headers/asm-mips/unistd_n64.h | 1 + >>>>> linux-headers/asm-mips/unistd_o32.h | 1 + >>>>> linux-headers/asm-powerpc/unistd_32.h | 1 + >>>>> linux-headers/asm-powerpc/unistd_64.h | 1 + >>>>> linux-headers/asm-s390/unistd_32.h | 1 + >>>>> linux-headers/asm-s390/unistd_64.h | 1 + >>>>> linux-headers/asm-x86/kvm.h | 1 + >>>>> linux-headers/asm-x86/unistd_32.h | 1 + >>>>> linux-headers/asm-x86/unistd_64.h | 1 + >>>>> linux-headers/asm-x86/unistd_x32.h | 1 + >>>>> linux-headers/linux/kvm.h | 56 +++++- >>>>> linux-headers/linux/userfaultfd.h | 9 + >>>>> linux-headers/linux/vfio.h | 1 + >>>>> linux-headers/linux/vhost.h | 4 + >>>>> 28 files changed, 461 insertions(+), 48 deletions(-) >>>>> create mode 100644 include/standard-headers/linux/const.h >>>>> >>>>> diff --git a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h >>>>> index 7b4062a1a1..acd4c8346d 100644 >>>>> --- a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h >>>>> +++ b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h >>>>> @@ -68,7 +68,7 @@ static inline int pvrdma_idx_valid(uint32_t idx, uint32_t max_elems) >>>>> >>>>> static inline int32_t pvrdma_idx(int *var, uint32_t max_elems) >>>>> { >>>>> - const unsigned int idx = qatomic_read(var); >>>>> + const unsigned int idx = atomic_read(var); >>>> >>>> Hm, what was the state of these qatomic* instances in this header? Is >>>> it ok to rename them, or do we need to do some munging in the import >>>> script? >>>> >>>> (Sorry, it's been a while.) >>> >>> >>> Yea looks like it was done manually last time: >>> >>> commit d73415a315471ac0b127ed3fad45c8ec5d711de1 >>> Author: Stefan Hajnoczi <stefanha@redhat.com> >>> Date: Wed Sep 23 11:56:46 2020 +0100 >>> >>> qemu/atomic.h: rename atomic_ to qatomic_ >> >> It seems that this hunk was dropped manually last time: >> >> commit 53ba2eee52bff5a746e96835539a1079f6bcadd1 >> Author: Matthew Rosato <mjrosato@linux.ibm.com> >> Date: Mon Oct 26 11:34:30 2020 -0400 >> >> linux-headers: update against 5.10-rc1 >> >> commit 3650b228f83adda7e5ee532e2b90429c03f7b9ec >> >> Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com> >> [aw: drop pvrdma_ring.h changes to avoid revert of d73415a31547 ("qemu/atomic.h: rename atomic_ to qatomic_")] >> Signed-off-by: Alex Williamson <alex.williamson@redhat.com> >> >> I can do that as well, but I'm not sure that this is the best way >> forward. > > Probably as easy as the following: > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > > > > diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh > index 9efbaf2f84..c1b4f468d3 100755 > --- a/scripts/update-linux-headers.sh > +++ b/scripts/update-linux-headers.sh > @@ -70,6 +70,8 @@ cp_portable() { > -e 's/__kernel_long_t/long/' \ > -e 's/__kernel_ulong_t/unsigned long/' \ > -e 's/struct ethhdr/struct eth_header/' \ > + -e 's/atomic_read/qatomic_read/' \ > + -e 's/atomic_set/qatomic_set/' \ > -e '/\#define _LINUX_ETHTOOL_H/a \\n\#include "net/eth.h"' \ > "$f" > "$to/$header"; > } > Possibly, but Paolo mentioned the problem in this space some months ago: """ > It looks like the changes in this file are going to get reverted the > next time someone does a linux header sync. Source code should not be at all imported from Linux. The hacks that accomodate pvrdma in update-linux-headers.sh (like s/atomic_t/u32/) really have no place there; the files in include/standard-headers/drivers/infiniband/hw/vmw_pvrdma should all be moved in hw/. Paolo """ https://lore.kernel.org/qemu-devel/45ba3626-0e06-96c7-5ed8-ea561ae20f15@redhat.com/ ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v3 2/3] Update linux headers to 5.11-rc2 2021-01-11 15:11 ` Eric Farman @ 2021-01-11 15:18 ` Michael S. Tsirkin 2021-01-11 16:05 ` Cornelia Huck 0 siblings, 1 reply; 19+ messages in thread From: Michael S. Tsirkin @ 2021-01-11 15:18 UTC (permalink / raw) To: Eric Farman Cc: Thomas Huth, Cornelia Huck, Alex Williamson, qemu-devel, qemu-s390x, stefanha, Paolo Bonzini On Mon, Jan 11, 2021 at 10:11:23AM -0500, Eric Farman wrote: > > > On 1/11/21 10:00 AM, Michael S. Tsirkin wrote: > > On Mon, Jan 11, 2021 at 02:43:22PM +0100, Cornelia Huck wrote: > > > On Mon, 11 Jan 2021 08:00:45 -0500 > > > "Michael S. Tsirkin" <mst@redhat.com> wrote: > > > > > > > On Mon, Jan 11, 2021 at 01:54:04PM +0100, Cornelia Huck wrote: > > > > > On Mon, 4 Jan 2021 21:20:56 +0100 > > > > > Eric Farman <farman@linux.ibm.com> wrote: > > > > > > Signed-off-by: Eric Farman <farman@linux.ibm.com> > > > > > > --- > > > > > > .../infiniband/hw/vmw_pvrdma/pvrdma_ring.h | 14 +- > > > > > > .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 2 +- > > > > > > include/standard-headers/drm/drm_fourcc.h | 175 +++++++++++++++++- > > > > > > include/standard-headers/linux/const.h | 36 ++++ > > > > > > include/standard-headers/linux/ethtool.h | 2 +- > > > > > > include/standard-headers/linux/fuse.h | 30 ++- > > > > > > include/standard-headers/linux/kernel.h | 9 +- > > > > > > include/standard-headers/linux/pci_regs.h | 16 ++ > > > > > > include/standard-headers/linux/vhost_types.h | 9 + > > > > > > include/standard-headers/linux/virtio_gpu.h | 82 ++++++++ > > > > > > include/standard-headers/linux/virtio_ids.h | 44 +++-- > > > > > > linux-headers/asm-arm64/kvm.h | 3 - > > > > > > linux-headers/asm-generic/unistd.h | 6 +- > > > > > > linux-headers/asm-mips/unistd_n32.h | 1 + > > > > > > linux-headers/asm-mips/unistd_n64.h | 1 + > > > > > > linux-headers/asm-mips/unistd_o32.h | 1 + > > > > > > linux-headers/asm-powerpc/unistd_32.h | 1 + > > > > > > linux-headers/asm-powerpc/unistd_64.h | 1 + > > > > > > linux-headers/asm-s390/unistd_32.h | 1 + > > > > > > linux-headers/asm-s390/unistd_64.h | 1 + > > > > > > linux-headers/asm-x86/kvm.h | 1 + > > > > > > linux-headers/asm-x86/unistd_32.h | 1 + > > > > > > linux-headers/asm-x86/unistd_64.h | 1 + > > > > > > linux-headers/asm-x86/unistd_x32.h | 1 + > > > > > > linux-headers/linux/kvm.h | 56 +++++- > > > > > > linux-headers/linux/userfaultfd.h | 9 + > > > > > > linux-headers/linux/vfio.h | 1 + > > > > > > linux-headers/linux/vhost.h | 4 + > > > > > > 28 files changed, 461 insertions(+), 48 deletions(-) > > > > > > create mode 100644 include/standard-headers/linux/const.h > > > > > > > > > > > > diff --git a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > > > > index 7b4062a1a1..acd4c8346d 100644 > > > > > > --- a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > > > > +++ b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > > > > @@ -68,7 +68,7 @@ static inline int pvrdma_idx_valid(uint32_t idx, uint32_t max_elems) > > > > > > static inline int32_t pvrdma_idx(int *var, uint32_t max_elems) > > > > > > { > > > > > > - const unsigned int idx = qatomic_read(var); > > > > > > + const unsigned int idx = atomic_read(var); > > > > > > > > > > Hm, what was the state of these qatomic* instances in this header? Is > > > > > it ok to rename them, or do we need to do some munging in the import > > > > > script? > > > > > > > > > > (Sorry, it's been a while.) > > > > > > > > > > > > Yea looks like it was done manually last time: > > > > > > > > commit d73415a315471ac0b127ed3fad45c8ec5d711de1 > > > > Author: Stefan Hajnoczi <stefanha@redhat.com> > > > > Date: Wed Sep 23 11:56:46 2020 +0100 > > > > > > > > qemu/atomic.h: rename atomic_ to qatomic_ > > > > > > It seems that this hunk was dropped manually last time: > > > > > > commit 53ba2eee52bff5a746e96835539a1079f6bcadd1 > > > Author: Matthew Rosato <mjrosato@linux.ibm.com> > > > Date: Mon Oct 26 11:34:30 2020 -0400 > > > > > > linux-headers: update against 5.10-rc1 > > > commit 3650b228f83adda7e5ee532e2b90429c03f7b9ec > > > Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com> > > > [aw: drop pvrdma_ring.h changes to avoid revert of d73415a31547 ("qemu/atomic.h: rename atomic_ to qatomic_")] > > > Signed-off-by: Alex Williamson <alex.williamson@redhat.com> > > > > > > I can do that as well, but I'm not sure that this is the best way > > > forward. > > > > Probably as easy as the following: > > > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > > > > > > > > diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh > > index 9efbaf2f84..c1b4f468d3 100755 > > --- a/scripts/update-linux-headers.sh > > +++ b/scripts/update-linux-headers.sh > > @@ -70,6 +70,8 @@ cp_portable() { > > -e 's/__kernel_long_t/long/' \ > > -e 's/__kernel_ulong_t/unsigned long/' \ > > -e 's/struct ethhdr/struct eth_header/' \ > > + -e 's/atomic_read/qatomic_read/' \ > > + -e 's/atomic_set/qatomic_set/' \ > > -e '/\#define _LINUX_ETHTOOL_H/a \\n\#include "net/eth.h"' \ > > "$f" > "$to/$header"; > > } > > > > Possibly, but Paolo mentioned the problem in this space some months ago: > > """ > > It looks like the changes in this file are going to get reverted the > > next time someone does a linux header sync. > > Source code should not be at all imported from Linux. The hacks that > accomodate pvrdma in update-linux-headers.sh (like s/atomic_t/u32/) > really have no place there; the files in > include/standard-headers/drivers/infiniband/hw/vmw_pvrdma should all be > moved in hw/. > > Paolo > """ > > https://lore.kernel.org/qemu-devel/45ba3626-0e06-96c7-5ed8-ea561ae20f15@redhat.com/ Oh right. I think they really should be moved to UAPI in Linux. Any takers? Maybe it's just this basically: Signed-off-by: Michael S. Tsirkin <mst@redhat.com> diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h b/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h index c142f5e7f25f..4a4834de9677 100644 --- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h +++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h @@ -57,9 +57,9 @@ #include <rdma/ib_verbs.h> #include <rdma/vmw_pvrdma-abi.h> -#include "pvrdma_ring.h" +#include <linux/pvrdma_ring.h> #include "pvrdma_dev_api.h" -#include "pvrdma_verbs.h" +#include <linux/pvrdma_verbs.h> /* NOT the same as BIT_MASK(). */ #define PVRDMA_MASK(n) ((n << 1) - 1) diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h index 86a6c054ea26..d9a8ee79b9c0 100644 --- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h +++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h @@ -48,7 +48,7 @@ #include <linux/types.h> -#include "pvrdma_verbs.h" +#include <linux/pvrdma_verbs.h> /* * PVRDMA version macros. Some new features require updates to PVRDMA_VERSION. diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h b/include/uapi/linux/pvrdma_ring.h similarity index 100% rename from drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h rename to include/uapi/linux/pvrdma_ring.h diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h b/include/uapi/linux/pvrdma_verbs.h similarity index 100% rename from drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h rename to include/uapi/linux/pvrdma_verbs.h -- MST ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v3 2/3] Update linux headers to 5.11-rc2 2021-01-11 15:18 ` Michael S. Tsirkin @ 2021-01-11 16:05 ` Cornelia Huck 0 siblings, 0 replies; 19+ messages in thread From: Cornelia Huck @ 2021-01-11 16:05 UTC (permalink / raw) To: Michael S. Tsirkin Cc: Thomas Huth, qemu-s390x, Eric Farman, qemu-devel, Alex Williamson, stefanha, Paolo Bonzini On Mon, 11 Jan 2021 10:18:28 -0500 "Michael S. Tsirkin" <mst@redhat.com> wrote: > On Mon, Jan 11, 2021 at 10:11:23AM -0500, Eric Farman wrote: > > > > > > On 1/11/21 10:00 AM, Michael S. Tsirkin wrote: > > > On Mon, Jan 11, 2021 at 02:43:22PM +0100, Cornelia Huck wrote: > > > > On Mon, 11 Jan 2021 08:00:45 -0500 > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote: > > > > > > > > > On Mon, Jan 11, 2021 at 01:54:04PM +0100, Cornelia Huck wrote: > > > > > > On Mon, 4 Jan 2021 21:20:56 +0100 > > > > > > Eric Farman <farman@linux.ibm.com> wrote: > > > > > > > Signed-off-by: Eric Farman <farman@linux.ibm.com> > > > > > > > --- > > > > > > > .../infiniband/hw/vmw_pvrdma/pvrdma_ring.h | 14 +- > > > > > > > .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 2 +- > > > > > > > include/standard-headers/drm/drm_fourcc.h | 175 +++++++++++++++++- > > > > > > > include/standard-headers/linux/const.h | 36 ++++ > > > > > > > include/standard-headers/linux/ethtool.h | 2 +- > > > > > > > include/standard-headers/linux/fuse.h | 30 ++- > > > > > > > include/standard-headers/linux/kernel.h | 9 +- > > > > > > > include/standard-headers/linux/pci_regs.h | 16 ++ > > > > > > > include/standard-headers/linux/vhost_types.h | 9 + > > > > > > > include/standard-headers/linux/virtio_gpu.h | 82 ++++++++ > > > > > > > include/standard-headers/linux/virtio_ids.h | 44 +++-- > > > > > > > linux-headers/asm-arm64/kvm.h | 3 - > > > > > > > linux-headers/asm-generic/unistd.h | 6 +- > > > > > > > linux-headers/asm-mips/unistd_n32.h | 1 + > > > > > > > linux-headers/asm-mips/unistd_n64.h | 1 + > > > > > > > linux-headers/asm-mips/unistd_o32.h | 1 + > > > > > > > linux-headers/asm-powerpc/unistd_32.h | 1 + > > > > > > > linux-headers/asm-powerpc/unistd_64.h | 1 + > > > > > > > linux-headers/asm-s390/unistd_32.h | 1 + > > > > > > > linux-headers/asm-s390/unistd_64.h | 1 + > > > > > > > linux-headers/asm-x86/kvm.h | 1 + > > > > > > > linux-headers/asm-x86/unistd_32.h | 1 + > > > > > > > linux-headers/asm-x86/unistd_64.h | 1 + > > > > > > > linux-headers/asm-x86/unistd_x32.h | 1 + > > > > > > > linux-headers/linux/kvm.h | 56 +++++- > > > > > > > linux-headers/linux/userfaultfd.h | 9 + > > > > > > > linux-headers/linux/vfio.h | 1 + > > > > > > > linux-headers/linux/vhost.h | 4 + > > > > > > > 28 files changed, 461 insertions(+), 48 deletions(-) > > > > > > > create mode 100644 include/standard-headers/linux/const.h > > > > > > > > > > > > > > diff --git a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > > > > > index 7b4062a1a1..acd4c8346d 100644 > > > > > > > --- a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > > > > > +++ b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > > > > > @@ -68,7 +68,7 @@ static inline int pvrdma_idx_valid(uint32_t idx, uint32_t max_elems) > > > > > > > static inline int32_t pvrdma_idx(int *var, uint32_t max_elems) > > > > > > > { > > > > > > > - const unsigned int idx = qatomic_read(var); > > > > > > > + const unsigned int idx = atomic_read(var); > > > > > > > > > > > > Hm, what was the state of these qatomic* instances in this header? Is > > > > > > it ok to rename them, or do we need to do some munging in the import > > > > > > script? > > > > > > > > > > > > (Sorry, it's been a while.) > > > > > > > > > > > > > > > Yea looks like it was done manually last time: > > > > > > > > > > commit d73415a315471ac0b127ed3fad45c8ec5d711de1 > > > > > Author: Stefan Hajnoczi <stefanha@redhat.com> > > > > > Date: Wed Sep 23 11:56:46 2020 +0100 > > > > > > > > > > qemu/atomic.h: rename atomic_ to qatomic_ > > > > > > > > It seems that this hunk was dropped manually last time: > > > > > > > > commit 53ba2eee52bff5a746e96835539a1079f6bcadd1 > > > > Author: Matthew Rosato <mjrosato@linux.ibm.com> > > > > Date: Mon Oct 26 11:34:30 2020 -0400 > > > > > > > > linux-headers: update against 5.10-rc1 > > > > commit 3650b228f83adda7e5ee532e2b90429c03f7b9ec > > > > Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com> > > > > [aw: drop pvrdma_ring.h changes to avoid revert of d73415a31547 ("qemu/atomic.h: rename atomic_ to qatomic_")] > > > > Signed-off-by: Alex Williamson <alex.williamson@redhat.com> > > > > > > > > I can do that as well, but I'm not sure that this is the best way > > > > forward. > > > > > > Probably as easy as the following: > > > > > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > > > > > > > > > > > > diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh > > > index 9efbaf2f84..c1b4f468d3 100755 > > > --- a/scripts/update-linux-headers.sh > > > +++ b/scripts/update-linux-headers.sh > > > @@ -70,6 +70,8 @@ cp_portable() { > > > -e 's/__kernel_long_t/long/' \ > > > -e 's/__kernel_ulong_t/unsigned long/' \ > > > -e 's/struct ethhdr/struct eth_header/' \ > > > + -e 's/atomic_read/qatomic_read/' \ > > > + -e 's/atomic_set/qatomic_set/' \ > > > -e '/\#define _LINUX_ETHTOOL_H/a \\n\#include "net/eth.h"' \ > > > "$f" > "$to/$header"; > > > } > > > > > > > Possibly, but Paolo mentioned the problem in this space some months ago: > > > > """ > > > It looks like the changes in this file are going to get reverted the > > > next time someone does a linux header sync. > > > > Source code should not be at all imported from Linux. The hacks that > > accomodate pvrdma in update-linux-headers.sh (like s/atomic_t/u32/) > > really have no place there; the files in > > include/standard-headers/drivers/infiniband/hw/vmw_pvrdma should all be > > moved in hw/. I'm not sure about the other headers, but the contents in pvrdma_ring.h really do not look like an api to me. > > > > Paolo > > """ > > > > https://lore.kernel.org/qemu-devel/45ba3626-0e06-96c7-5ed8-ea561ae20f15@redhat.com/ > > > Oh right. I think they really should be moved to UAPI in Linux. > Any takers? Maybe it's just this basically: > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > > > diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h b/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h > index c142f5e7f25f..4a4834de9677 100644 > --- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h > +++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h > @@ -57,9 +57,9 @@ > #include <rdma/ib_verbs.h> > #include <rdma/vmw_pvrdma-abi.h> > > -#include "pvrdma_ring.h" > +#include <linux/pvrdma_ring.h> > #include "pvrdma_dev_api.h" > -#include "pvrdma_verbs.h" > +#include <linux/pvrdma_verbs.h> > > /* NOT the same as BIT_MASK(). */ > #define PVRDMA_MASK(n) ((n << 1) - 1) > diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h > index 86a6c054ea26..d9a8ee79b9c0 100644 > --- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h > +++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h > @@ -48,7 +48,7 @@ > > #include <linux/types.h> > > -#include "pvrdma_verbs.h" > +#include <linux/pvrdma_verbs.h> > > /* > * PVRDMA version macros. Some new features require updates to PVRDMA_VERSION. > diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h b/include/uapi/linux/pvrdma_ring.h > similarity index 100% > rename from drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > rename to include/uapi/linux/pvrdma_ring.h > diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h b/include/uapi/linux/pvrdma_verbs.h > similarity index 100% > rename from drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h > rename to include/uapi/linux/pvrdma_verbs.h How api-like are these? The verbs look like something that might be, but the rest? ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v3 2/3] Update linux headers to 5.11-rc2 2021-01-11 13:43 ` Cornelia Huck 2021-01-11 15:00 ` Michael S. Tsirkin @ 2021-01-13 11:27 ` Cornelia Huck 1 sibling, 0 replies; 19+ messages in thread From: Cornelia Huck @ 2021-01-13 11:27 UTC (permalink / raw) To: Michael S. Tsirkin Cc: Thomas Huth, qemu-s390x, Eric Farman, qemu-devel, Alex Williamson, stefanha, Paolo Bonzini On Mon, 11 Jan 2021 14:43:22 +0100 Cornelia Huck <cohuck@redhat.com> wrote: > On Mon, 11 Jan 2021 08:00:45 -0500 > "Michael S. Tsirkin" <mst@redhat.com> wrote: > > > On Mon, Jan 11, 2021 at 01:54:04PM +0100, Cornelia Huck wrote: > > > On Mon, 4 Jan 2021 21:20:56 +0100 > > > Eric Farman <farman@linux.ibm.com> wrote: > > > > > > > Signed-off-by: Eric Farman <farman@linux.ibm.com> > > > > --- > > > > .../infiniband/hw/vmw_pvrdma/pvrdma_ring.h | 14 +- > > > > .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 2 +- > > > > include/standard-headers/drm/drm_fourcc.h | 175 +++++++++++++++++- > > > > include/standard-headers/linux/const.h | 36 ++++ > > > > include/standard-headers/linux/ethtool.h | 2 +- > > > > include/standard-headers/linux/fuse.h | 30 ++- > > > > include/standard-headers/linux/kernel.h | 9 +- > > > > include/standard-headers/linux/pci_regs.h | 16 ++ > > > > include/standard-headers/linux/vhost_types.h | 9 + > > > > include/standard-headers/linux/virtio_gpu.h | 82 ++++++++ > > > > include/standard-headers/linux/virtio_ids.h | 44 +++-- > > > > linux-headers/asm-arm64/kvm.h | 3 - > > > > linux-headers/asm-generic/unistd.h | 6 +- > > > > linux-headers/asm-mips/unistd_n32.h | 1 + > > > > linux-headers/asm-mips/unistd_n64.h | 1 + > > > > linux-headers/asm-mips/unistd_o32.h | 1 + > > > > linux-headers/asm-powerpc/unistd_32.h | 1 + > > > > linux-headers/asm-powerpc/unistd_64.h | 1 + > > > > linux-headers/asm-s390/unistd_32.h | 1 + > > > > linux-headers/asm-s390/unistd_64.h | 1 + > > > > linux-headers/asm-x86/kvm.h | 1 + > > > > linux-headers/asm-x86/unistd_32.h | 1 + > > > > linux-headers/asm-x86/unistd_64.h | 1 + > > > > linux-headers/asm-x86/unistd_x32.h | 1 + > > > > linux-headers/linux/kvm.h | 56 +++++- > > > > linux-headers/linux/userfaultfd.h | 9 + > > > > linux-headers/linux/vfio.h | 1 + > > > > linux-headers/linux/vhost.h | 4 + > > > > 28 files changed, 461 insertions(+), 48 deletions(-) > > > > create mode 100644 include/standard-headers/linux/const.h > > > > > > > > diff --git a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > > index 7b4062a1a1..acd4c8346d 100644 > > > > --- a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > > +++ b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_ring.h > > > > @@ -68,7 +68,7 @@ static inline int pvrdma_idx_valid(uint32_t idx, uint32_t max_elems) > > > > > > > > static inline int32_t pvrdma_idx(int *var, uint32_t max_elems) > > > > { > > > > - const unsigned int idx = qatomic_read(var); > > > > + const unsigned int idx = atomic_read(var); > > > > > > Hm, what was the state of these qatomic* instances in this header? Is > > > it ok to rename them, or do we need to do some munging in the import > > > script? > > > > > > (Sorry, it's been a while.) > > > > > > Yea looks like it was done manually last time: > > > > commit d73415a315471ac0b127ed3fad45c8ec5d711de1 > > Author: Stefan Hajnoczi <stefanha@redhat.com> > > Date: Wed Sep 23 11:56:46 2020 +0100 > > > > qemu/atomic.h: rename atomic_ to qatomic_ > > It seems that this hunk was dropped manually last time: > > commit 53ba2eee52bff5a746e96835539a1079f6bcadd1 > Author: Matthew Rosato <mjrosato@linux.ibm.com> > Date: Mon Oct 26 11:34:30 2020 -0400 > > linux-headers: update against 5.10-rc1 > > commit 3650b228f83adda7e5ee532e2b90429c03f7b9ec > > Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com> > [aw: drop pvrdma_ring.h changes to avoid revert of d73415a31547 ("qemu/atomic.h: rename atomic_ to qatomic_")] > Signed-off-by: Alex Williamson <alex.williamson@redhat.com> > > I can do that as well, but I'm not sure that this is the best way > forward. I think I'll do that anyway for now, just to get this series unstuck. ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v3 3/3] vfio-ccw: Connect the device request notifier 2021-01-04 20:20 [PATCH v3 0/3] vfio-ccw: Implement request notifier Eric Farman 2021-01-04 20:20 ` [PATCH v3 1/3] update-linux-headers: Include const.h Eric Farman 2021-01-04 20:20 ` [PATCH v3 2/3] Update linux headers to 5.11-rc2 Eric Farman @ 2021-01-04 20:20 ` Eric Farman 2021-01-13 12:58 ` [PATCH v3 0/3] vfio-ccw: Implement " Cornelia Huck 3 siblings, 0 replies; 19+ messages in thread From: Eric Farman @ 2021-01-04 20:20 UTC (permalink / raw) To: Cornelia Huck, Michael S. Tsirkin, Paolo Bonzini Cc: qemu-s390x, Eric Farman, Alex Williamson, Thomas Huth, qemu-devel Now that the vfio-ccw code has a notifier interface to request that a device be unplugged, let's wire that together. Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> --- hw/vfio/ccw.c | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c index d2755d7fc5..bc78a0ad76 100644 --- a/hw/vfio/ccw.c +++ b/hw/vfio/ccw.c @@ -49,6 +49,7 @@ struct VFIOCCWDevice { struct ccw_crw_region *crw_region; EventNotifier io_notifier; EventNotifier crw_notifier; + EventNotifier req_notifier; bool force_orb_pfch; bool warned_orb_pfch; }; @@ -287,6 +288,21 @@ static void vfio_ccw_crw_read(VFIOCCWDevice *vcdev) } while (1); } +static void vfio_ccw_req_notifier_handler(void *opaque) +{ + VFIOCCWDevice *vcdev = opaque; + Error *err = NULL; + + if (!event_notifier_test_and_clear(&vcdev->req_notifier)) { + return; + } + + qdev_unplug(DEVICE(vcdev), &err); + if (err) { + warn_reportf_err(err, VFIO_MSG_PREFIX, vcdev->vdev.name); + } +} + static void vfio_ccw_crw_notifier_handler(void *opaque) { VFIOCCWDevice *vcdev = opaque; @@ -386,6 +402,10 @@ static void vfio_ccw_register_irq_notifier(VFIOCCWDevice *vcdev, notifier = &vcdev->crw_notifier; fd_read = vfio_ccw_crw_notifier_handler; break; + case VFIO_CCW_REQ_IRQ_INDEX: + notifier = &vcdev->req_notifier; + fd_read = vfio_ccw_req_notifier_handler; + break; default: error_setg(errp, "vfio: Unsupported device irq(%d)", irq); return; @@ -440,6 +460,9 @@ static void vfio_ccw_unregister_irq_notifier(VFIOCCWDevice *vcdev, case VFIO_CCW_CRW_IRQ_INDEX: notifier = &vcdev->crw_notifier; break; + case VFIO_CCW_REQ_IRQ_INDEX: + notifier = &vcdev->req_notifier; + break; default: error_report("vfio: Unsupported device irq(%d)", irq); return; @@ -661,20 +684,28 @@ static void vfio_ccw_realize(DeviceState *dev, Error **errp) vfio_ccw_register_irq_notifier(vcdev, VFIO_CCW_IO_IRQ_INDEX, &err); if (err) { - goto out_notifier_err; + goto out_io_notifier_err; } if (vcdev->crw_region) { vfio_ccw_register_irq_notifier(vcdev, VFIO_CCW_CRW_IRQ_INDEX, &err); if (err) { - vfio_ccw_unregister_irq_notifier(vcdev, VFIO_CCW_IO_IRQ_INDEX); - goto out_notifier_err; + goto out_crw_notifier_err; } } + vfio_ccw_register_irq_notifier(vcdev, VFIO_CCW_REQ_IRQ_INDEX, &err); + if (err) { + goto out_req_notifier_err; + } + return; -out_notifier_err: +out_req_notifier_err: + vfio_ccw_unregister_irq_notifier(vcdev, VFIO_CCW_CRW_IRQ_INDEX); +out_crw_notifier_err: + vfio_ccw_unregister_irq_notifier(vcdev, VFIO_CCW_IO_IRQ_INDEX); +out_io_notifier_err: vfio_ccw_put_region(vcdev); out_region_err: vfio_ccw_put_device(vcdev); @@ -696,6 +727,7 @@ static void vfio_ccw_unrealize(DeviceState *dev) S390CCWDeviceClass *cdc = S390_CCW_DEVICE_GET_CLASS(cdev); VFIOGroup *group = vcdev->vdev.group; + vfio_ccw_unregister_irq_notifier(vcdev, VFIO_CCW_REQ_IRQ_INDEX); vfio_ccw_unregister_irq_notifier(vcdev, VFIO_CCW_CRW_IRQ_INDEX); vfio_ccw_unregister_irq_notifier(vcdev, VFIO_CCW_IO_IRQ_INDEX); vfio_ccw_put_region(vcdev); -- 2.17.1 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v3 0/3] vfio-ccw: Implement request notifier 2021-01-04 20:20 [PATCH v3 0/3] vfio-ccw: Implement request notifier Eric Farman ` (2 preceding siblings ...) 2021-01-04 20:20 ` [PATCH v3 3/3] vfio-ccw: Connect the device request notifier Eric Farman @ 2021-01-13 12:58 ` Cornelia Huck 3 siblings, 0 replies; 19+ messages in thread From: Cornelia Huck @ 2021-01-13 12:58 UTC (permalink / raw) To: Eric Farman Cc: Thomas Huth, Michael S. Tsirkin, qemu-s390x, qemu-devel, Alex Williamson, Paolo Bonzini On Mon, 4 Jan 2021 21:20:54 +0100 Eric Farman <farman@linux.ibm.com> wrote: > Conny, et al, > > Here is an updated (final?) version of the QEMU series for the vfio-ccw > request notifier now that the kernel code landed upstream [1]. The actual > meat (patch 3) is identical to its counterpart in v2 [2]. > > Earlier versions didn't use update-linux-headers.sh; they just carried a > dummy patch with the define that was needed to work, without the noise. > Here, I have run the script properly and patch 2 is its output. > > Of course it wasn't that simple, as a change on the kernel side of > things breaks the script and causes processing to end prematurely as > cp_portable() takes its error exit. So I am adding a small patch to > the front of this series to accommodate that, and hopefully isn't > goofed up too badly. :) > > [1] https://lore.kernel.org/kvm/20201216123701.00517b52@omen.home/ > [2] https://lore.kernel.org/qemu-devel/20201120181526.96446-1-farman@linux.ibm.com/ > > Eric Farman (3): > update-linux-headers: Include const.h > Update linux headers to 5.11-rc2 > vfio-ccw: Connect the device request notifier > > hw/vfio/ccw.c | 40 +++- > .../infiniband/hw/vmw_pvrdma/pvrdma_ring.h | 14 +- > .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 2 +- > include/standard-headers/drm/drm_fourcc.h | 175 +++++++++++++++++- > include/standard-headers/linux/const.h | 36 ++++ > include/standard-headers/linux/ethtool.h | 2 +- > include/standard-headers/linux/fuse.h | 30 ++- > include/standard-headers/linux/kernel.h | 9 +- > include/standard-headers/linux/pci_regs.h | 16 ++ > include/standard-headers/linux/vhost_types.h | 9 + > include/standard-headers/linux/virtio_gpu.h | 82 ++++++++ > include/standard-headers/linux/virtio_ids.h | 44 +++-- > linux-headers/asm-arm64/kvm.h | 3 - > linux-headers/asm-generic/unistd.h | 6 +- > linux-headers/asm-mips/unistd_n32.h | 1 + > linux-headers/asm-mips/unistd_n64.h | 1 + > linux-headers/asm-mips/unistd_o32.h | 1 + > linux-headers/asm-powerpc/unistd_32.h | 1 + > linux-headers/asm-powerpc/unistd_64.h | 1 + > linux-headers/asm-s390/unistd_32.h | 1 + > linux-headers/asm-s390/unistd_64.h | 1 + > linux-headers/asm-x86/kvm.h | 1 + > linux-headers/asm-x86/unistd_32.h | 1 + > linux-headers/asm-x86/unistd_64.h | 1 + > linux-headers/asm-x86/unistd_x32.h | 1 + > linux-headers/linux/kvm.h | 56 +++++- > linux-headers/linux/userfaultfd.h | 9 + > linux-headers/linux/vfio.h | 1 + > linux-headers/linux/vhost.h | 4 + > scripts/update-linux-headers.sh | 5 +- > 30 files changed, 501 insertions(+), 53 deletions(-) > create mode 100644 include/standard-headers/linux/const.h > Thanks, applied. ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2021-01-13 13:01 UTC | newest] Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-01-04 20:20 [PATCH v3 0/3] vfio-ccw: Implement request notifier Eric Farman 2021-01-04 20:20 ` [PATCH v3 1/3] update-linux-headers: Include const.h Eric Farman 2021-01-06 19:03 ` Peter Xu 2021-01-07 16:51 ` Eric Farman 2021-01-07 17:05 ` Peter Maydell 2021-01-07 17:50 ` Eric Farman 2021-01-07 19:12 ` Peter Xu 2021-01-07 6:52 ` Philippe Mathieu-Daudé 2021-01-04 20:20 ` [PATCH v3 2/3] Update linux headers to 5.11-rc2 Eric Farman 2021-01-11 12:54 ` Cornelia Huck 2021-01-11 13:00 ` Michael S. Tsirkin 2021-01-11 13:43 ` Cornelia Huck 2021-01-11 15:00 ` Michael S. Tsirkin 2021-01-11 15:11 ` Eric Farman 2021-01-11 15:18 ` Michael S. Tsirkin 2021-01-11 16:05 ` Cornelia Huck 2021-01-13 11:27 ` Cornelia Huck 2021-01-04 20:20 ` [PATCH v3 3/3] vfio-ccw: Connect the device request notifier Eric Farman 2021-01-13 12:58 ` [PATCH v3 0/3] vfio-ccw: Implement " Cornelia Huck
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.