Re: [PATCH] linux-headers: Update to include KVM_CAP_PPC_COMPAT_CAPS

Harsh Prateek Bora <[email protected]>
Newsgroups org.nongnu.qemu-devel,org.kernel.vger.kvm
Message-ID <[email protected]>
Hi Cornelia,

Will you be picking it up sometime soon or shall I fold in with 
respective qemu patches depending on it? Please let me know. TIA.

regards,
Harsh

On 19/08/26 10:29 am, Amit Machhiwal wrote:
> Sync linux headers from Linux kernel commit 1200d84f4c0a
> ("Merge tag 'powerpc-7.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux").
> 
> This picks up the new KVM_CAP_PPC_COMPAT_CAPS capability for powerpc,
> which introduces:
> - struct kvm_ppc_compat_caps: reports processor compatibility modes
>    supported by the host (POWER9, POWER10, POWER11)
> - KVM_PPC_GET_COMPAT_CAPS ioctl (KVMIO 0xb8)
> - KVM_CAP_PPC_COMPAT_CAPS (cap #250) in linux/kvm.h
> 
> The sync is needed to get the corresponding Qemu series[1] merged.
> 
> [1]: https://lore.kernel.org/all/[email protected]/
> 
> Signed-off-by: Amit Machhiwal <[email protected]>
> ---
>   include/standard-headers/linux/const.h  |  4 ++--
>   linux-headers/asm-arm64/unistd_64.h     |  1 +
>   linux-headers/asm-generic/unistd.h      |  6 +++++-
>   linux-headers/asm-loongarch/unistd_64.h |  1 +
>   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/kvm.h         | 18 ++++++++++++++++++
>   linux-headers/asm-powerpc/unistd_32.h   |  1 +
>   linux-headers/asm-powerpc/unistd_64.h   |  1 +
>   linux-headers/asm-riscv/unistd_32.h     |  1 +
>   linux-headers/asm-riscv/unistd_64.h     |  1 +
>   linux-headers/asm-s390/unistd_64.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/const.h             |  4 ++--
>   linux-headers/linux/kvm.h               |  3 +++
>   18 files changed, 43 insertions(+), 5 deletions(-)
> 
> diff --git a/include/standard-headers/linux/const.h b/include/standard-headers/linux/const.h
> index c6a9d0c9835c..92635cec4aed 100644
> --- a/include/standard-headers/linux/const.h
> +++ b/include/standard-headers/linux/const.h
> @@ -13,7 +13,7 @@
>    * leave it unchanged in asm.
>    */
>   
> -#ifdef __ASSEMBLY__
> +#ifdef __ASSEMBLER__
>   #define _AC(X,Y)	X
>   #define _AT(T,X)	X
>   #else
> @@ -28,7 +28,7 @@
>   #define _BITUL(x)	(_UL(1) << (x))
>   #define _BITULL(x)	(_ULL(1) << (x))
>   
> -#if !defined(__ASSEMBLY__)
> +#if !defined(__ASSEMBLER__)
>   /*
>    * Missing __asm__ support
>    *
> diff --git a/linux-headers/asm-arm64/unistd_64.h b/linux-headers/asm-arm64/unistd_64.h
> index 70b3754a4247..4329a2ad54c2 100644
> --- a/linux-headers/asm-arm64/unistd_64.h
> +++ b/linux-headers/asm-arm64/unistd_64.h
> @@ -328,6 +328,7 @@
>   #define __NR_file_setattr 469
>   #define __NR_listns 470
>   #define __NR_rseq_slice_yield 471
> +#define __NR_fchroot 472
>   
>   
>   #endif /* _ASM_UNISTD_64_H */
> diff --git a/linux-headers/asm-generic/unistd.h b/linux-headers/asm-generic/unistd.h
> index a627acc8fb5f..5b7e77a7c736 100644
> --- a/linux-headers/asm-generic/unistd.h
> +++ b/linux-headers/asm-generic/unistd.h
> @@ -863,8 +863,12 @@ __SYSCALL(__NR_listns, sys_listns)
>   #define __NR_rseq_slice_yield 471
>   __SYSCALL(__NR_rseq_slice_yield, sys_rseq_slice_yield)
>   
> +/* fs/open.c */
> +#define __NR_fchroot 472
> +__SYSCALL(__NR_fchroot, sys_fchroot)
> +
>   #undef __NR_syscalls
> -#define __NR_syscalls 472
> +#define __NR_syscalls 473
>   
>   /*
>    * 32 bit systems traditionally used different
> diff --git a/linux-headers/asm-loongarch/unistd_64.h b/linux-headers/asm-loongarch/unistd_64.h
> index 3a29d86e1dee..b525f2d7b881 100644
> --- a/linux-headers/asm-loongarch/unistd_64.h
> +++ b/linux-headers/asm-loongarch/unistd_64.h
> @@ -325,6 +325,7 @@
>   #define __NR_file_setattr 469
>   #define __NR_listns 470
>   #define __NR_rseq_slice_yield 471
> +#define __NR_fchroot 472
>   
>   
>   #endif /* _ASM_UNISTD_64_H */
> diff --git a/linux-headers/asm-mips/unistd_n32.h b/linux-headers/asm-mips/unistd_n32.h
> index 5fa1ee0cb465..f883da76c999 100644
> --- a/linux-headers/asm-mips/unistd_n32.h
> +++ b/linux-headers/asm-mips/unistd_n32.h
> @@ -400,5 +400,6 @@
>   #define __NR_file_setattr (__NR_Linux + 469)
>   #define __NR_listns (__NR_Linux + 470)
>   #define __NR_rseq_slice_yield (__NR_Linux + 471)
> +#define __NR_fchroot (__NR_Linux + 472)
>   
>   #endif /* _ASM_UNISTD_N32_H */
> diff --git a/linux-headers/asm-mips/unistd_n64.h b/linux-headers/asm-mips/unistd_n64.h
> index e1f873d83a5d..59837eb86628 100644
> --- a/linux-headers/asm-mips/unistd_n64.h
> +++ b/linux-headers/asm-mips/unistd_n64.h
> @@ -376,5 +376,6 @@
>   #define __NR_file_setattr (__NR_Linux + 469)
>   #define __NR_listns (__NR_Linux + 470)
>   #define __NR_rseq_slice_yield (__NR_Linux + 471)
> +#define __NR_fchroot (__NR_Linux + 472)
>   
>   #endif /* _ASM_UNISTD_N64_H */
> diff --git a/linux-headers/asm-mips/unistd_o32.h b/linux-headers/asm-mips/unistd_o32.h
> index 8207e9ca4f67..485872076e92 100644
> --- a/linux-headers/asm-mips/unistd_o32.h
> +++ b/linux-headers/asm-mips/unistd_o32.h
> @@ -446,5 +446,6 @@
>   #define __NR_file_setattr (__NR_Linux + 469)
>   #define __NR_listns (__NR_Linux + 470)
>   #define __NR_rseq_slice_yield (__NR_Linux + 471)
> +#define __NR_fchroot (__NR_Linux + 472)
>   
>   #endif /* _ASM_UNISTD_O32_H */
> diff --git a/linux-headers/asm-powerpc/kvm.h b/linux-headers/asm-powerpc/kvm.h
> index 077c5437f521..913a64b901a3 100644
> --- a/linux-headers/asm-powerpc/kvm.h
> +++ b/linux-headers/asm-powerpc/kvm.h
> @@ -437,6 +437,24 @@ struct kvm_ppc_cpu_char {
>   	__u64	behaviour_mask;		/* valid bits in behaviour */
>   };
>   
> +/* For KVM_PPC_GET_COMPAT_CAPS */
> +struct kvm_ppc_compat_caps {
> +	__u64	size;			/* Size of this structure */
> +	__u64	flags;			/* Reserved for future use */
> +	__u64	compat_capabilities;	/* Capabilities supported by the host */
> +};
> +#define KVM_PPC_COMPAT_CAPS_SIZE_VER0	24 /* sizeof first published struct */
> +
> +/*
> + * Capability bits for compat_capabilities field in kvm_ppc_compat_caps.
> + * These bits indicate which processor compatibility modes are supported.
> + */
> +#define KVM_PPC_COMPAT_CAP_POWER9	(1ULL << 62)
> +#define KVM_PPC_COMPAT_CAP_POWER10	(1ULL << 61)
> +#define KVM_PPC_COMPAT_CAP_POWER11	(1ULL << 60)
> +#define KVM_PPC_COMPAT_BITMASK		(KVM_PPC_COMPAT_CAP_POWER9 | \
> +					 KVM_PPC_COMPAT_CAP_POWER10 | \
> +					 KVM_PPC_COMPAT_CAP_POWER11)
>   /*
>    * Values for character and character_mask.
>    * These are identical to the values used by H_GET_CPU_CHARACTERISTICS.
> diff --git a/linux-headers/asm-powerpc/unistd_32.h b/linux-headers/asm-powerpc/unistd_32.h
> index 1f633601201b..2677c54903a4 100644
> --- a/linux-headers/asm-powerpc/unistd_32.h
> +++ b/linux-headers/asm-powerpc/unistd_32.h
> @@ -453,6 +453,7 @@
>   #define __NR_file_setattr 469
>   #define __NR_listns 470
>   #define __NR_rseq_slice_yield 471
> +#define __NR_fchroot 472
>   
>   
>   #endif /* _ASM_UNISTD_32_H */
> diff --git a/linux-headers/asm-powerpc/unistd_64.h b/linux-headers/asm-powerpc/unistd_64.h
> index 87439c53c121..6fc19ccccdb9 100644
> --- a/linux-headers/asm-powerpc/unistd_64.h
> +++ b/linux-headers/asm-powerpc/unistd_64.h
> @@ -425,6 +425,7 @@
>   #define __NR_file_setattr 469
>   #define __NR_listns 470
>   #define __NR_rseq_slice_yield 471
> +#define __NR_fchroot 472
>   
>   
>   #endif /* _ASM_UNISTD_64_H */
> diff --git a/linux-headers/asm-riscv/unistd_32.h b/linux-headers/asm-riscv/unistd_32.h
> index 828f3c2b9de1..1039bdc6cf5b 100644
> --- a/linux-headers/asm-riscv/unistd_32.h
> +++ b/linux-headers/asm-riscv/unistd_32.h
> @@ -319,6 +319,7 @@
>   #define __NR_file_setattr 469
>   #define __NR_listns 470
>   #define __NR_rseq_slice_yield 471
> +#define __NR_fchroot 472
>   
>   
>   #endif /* _ASM_UNISTD_32_H */
> diff --git a/linux-headers/asm-riscv/unistd_64.h b/linux-headers/asm-riscv/unistd_64.h
> index 8fa59835a333..72040a54987a 100644
> --- a/linux-headers/asm-riscv/unistd_64.h
> +++ b/linux-headers/asm-riscv/unistd_64.h
> @@ -329,6 +329,7 @@
>   #define __NR_file_setattr 469
>   #define __NR_listns 470
>   #define __NR_rseq_slice_yield 471
> +#define __NR_fchroot 472
>   
>   
>   #endif /* _ASM_UNISTD_64_H */
> diff --git a/linux-headers/asm-s390/unistd_64.h b/linux-headers/asm-s390/unistd_64.h
> index 01f674c1bcb7..3d3747e3ca1f 100644
> --- a/linux-headers/asm-s390/unistd_64.h
> +++ b/linux-headers/asm-s390/unistd_64.h
> @@ -391,6 +391,7 @@
>   #define __NR_file_setattr 469
>   #define __NR_listns 470
>   #define __NR_rseq_slice_yield 471
> +#define __NR_fchroot 472
>   
>   
>   #endif /* _ASM_UNISTD_64_H */
> diff --git a/linux-headers/asm-x86/unistd_32.h b/linux-headers/asm-x86/unistd_32.h
> index e94546882962..7f298247f805 100644
> --- a/linux-headers/asm-x86/unistd_32.h
> +++ b/linux-headers/asm-x86/unistd_32.h
> @@ -462,6 +462,7 @@
>   #define __NR_file_setattr 469
>   #define __NR_listns 470
>   #define __NR_rseq_slice_yield 471
> +#define __NR_fchroot 472
>   
>   
>   #endif /* _ASM_UNISTD_32_H */
> diff --git a/linux-headers/asm-x86/unistd_64.h b/linux-headers/asm-x86/unistd_64.h
> index 3c49b00ed13c..fbddeb4bc381 100644
> --- a/linux-headers/asm-x86/unistd_64.h
> +++ b/linux-headers/asm-x86/unistd_64.h
> @@ -386,6 +386,7 @@
>   #define __NR_file_setattr 469
>   #define __NR_listns 470
>   #define __NR_rseq_slice_yield 471
> +#define __NR_fchroot 472
>   
>   
>   #endif /* _ASM_UNISTD_64_H */
> diff --git a/linux-headers/asm-x86/unistd_x32.h b/linux-headers/asm-x86/unistd_x32.h
> index bd2af9ad088d..629770ed4baa 100644
> --- a/linux-headers/asm-x86/unistd_x32.h
> +++ b/linux-headers/asm-x86/unistd_x32.h
> @@ -339,6 +339,7 @@
>   #define __NR_file_setattr (__X32_SYSCALL_BIT + 469)
>   #define __NR_listns (__X32_SYSCALL_BIT + 470)
>   #define __NR_rseq_slice_yield (__X32_SYSCALL_BIT + 471)
> +#define __NR_fchroot (__X32_SYSCALL_BIT + 472)
>   #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/const.h b/linux-headers/linux/const.h
> index c6a9d0c9835c..92635cec4aed 100644
> --- a/linux-headers/linux/const.h
> +++ b/linux-headers/linux/const.h
> @@ -13,7 +13,7 @@
>    * leave it unchanged in asm.
>    */
>   
> -#ifdef __ASSEMBLY__
> +#ifdef __ASSEMBLER__
>   #define _AC(X,Y)	X
>   #define _AT(T,X)	X
>   #else
> @@ -28,7 +28,7 @@
>   #define _BITUL(x)	(_UL(1) << (x))
>   #define _BITULL(x)	(_ULL(1) << (x))
>   
> -#if !defined(__ASSEMBLY__)
> +#if !defined(__ASSEMBLER__)
>   /*
>    * Missing __asm__ support
>    *
> diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
> index dd52e2a65bfd..aea4ab5c6953 100644
> --- a/linux-headers/linux/kvm.h
> +++ b/linux-headers/linux/kvm.h
> @@ -986,6 +986,7 @@ struct kvm_enable_cap {
>   #define KVM_CAP_S390_KEYOP 247
>   #define KVM_CAP_S390_VSIE_ESAMODE 248
>   #define KVM_CAP_S390_HPAGE_2G 249
> +#define KVM_CAP_PPC_COMPAT_CAPS 250
>   
>   struct kvm_irq_routing_irqchip {
>   	__u32 irqchip;
> @@ -1330,6 +1331,8 @@ struct kvm_s390_keyop {
>   /* Available with KVM_CAP_COUNTER_OFFSET */
>   #define KVM_ARM_SET_COUNTER_OFFSET _IOW(KVMIO,  0xb5, struct kvm_arm_counter_offset)
>   #define KVM_ARM_GET_REG_WRITABLE_MASKS _IOR(KVMIO,  0xb6, struct reg_mask_range)
> +/* Available with KVM_CAP_PPC_COMPAT_CAPS */
> +#define KVM_PPC_GET_COMPAT_CAPS	_IO(KVMIO,  0xb8)
>   
>   /* ioctl for vm fd */
>   #define KVM_CREATE_DEVICE	  _IOWR(KVMIO,  0xe0, struct kvm_create_device)
> 
> base-commit: fa19879df1658f96ac07365fca8835b7decd6995
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.