all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH-SERIES kernel] backport fix for kvm performance regression with Intel Emerald Rapids
@ 2024-12-19 14:29 Fiona Ebner
  2024-12-19 14:29 ` [pve-devel] [PATCH master kernel 1/4] patches: kernel: switch to using full index for patch files Fiona Ebner
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Fiona Ebner @ 2024-12-19 14:29 UTC (permalink / raw)
  To: pve-devel

Stumbled across this in the news [0].

Built, installed on a (CPU type 'host') VM and started a nested VM for
both 6.8 and 6.11 as a smoke test. Note I have an AMD TR 7960X, but
AFIACT, the patch affects a general code path not specific to Intel
CPUs.

[0]: https://www.phoronix.com/news/Linux-6.13-rc3-Released


Fiona Ebner (2):
  patches: kernel: switch to using full index for patch files
  backport fix for kvm performance regression with Intel Emerald Rapids

 ...-accept-an-alternate-timestamp-strin.patch |   2 +-
 ...d-Debian-wireless-regdb-certificates.patch |   2 +-
 ...idge-keep-MAC-of-first-assigned-port.patch |   2 +-
 ...ides-for-missing-ACS-capabilities-4..patch |   4 +-
 ...-default-dynamic-halt-polling-growth.patch |   2 +-
 ...de-unregister_netdevice-refcount-lea.patch |   2 +-
 ...fortify-Do-not-cast-to-unsigned-char.patch |   2 +-
 ...sk-out-PKRU-bit-in-xfeatures-if-vCPU.patch |   6 +-
 ...allow-pass-through-on-broken-hardwar.patch |   2 +-
 ...-Advertise-support-for-flush-by-ASID.patch |   2 +-
 ...rove-userspace-warnings-for-missing-.patch |   2 +-
 ...pect-msg_namelen-0-for-recvmsg-calls.patch |   2 +-
 ...ix-pagecache-leak-when-do-writepages.patch |   2 +-
 ...pu-pm-Don-t-use-OD-table-on-Arcturus.patch |   2 +-
 ...UCE-iommu-intel-disable-DMAR-for-SKL.patch |   2 +-
 ...t-EOPNOTSUPP-for-IOCB_NOWAIT-like-EA.patch |   2 +-
 ...et-subreq-iov-iter-before-tail-clean.patch |   2 +-
 ...r-virtualized-VMLOAD-VMSAVE-on-Zen4-.patch |   2 +-
 ...UID.0xD-XSTATE-offsets-sizes-during-.patch | 165 ++++++++++++++++++
 19 files changed, 186 insertions(+), 21 deletions(-)
 create mode 100644 patches/kernel/0019-KVM-x86-Cache-CPUID.0xD-XSTATE-offsets-sizes-during-.patch

-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH master kernel 1/4] patches: kernel: switch to using full index for patch files
  2024-12-19 14:29 [pve-devel] [PATCH-SERIES kernel] backport fix for kvm performance regression with Intel Emerald Rapids Fiona Ebner
@ 2024-12-19 14:29 ` Fiona Ebner
  2024-12-19 14:44   ` Fiona Ebner
  2024-12-19 14:29 ` [pve-devel] [PATCH master kernel 2/4] backport fix for kvm performance regression with Intel Emerald Rapids Fiona Ebner
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 7+ messages in thread
From: Fiona Ebner @ 2024-12-19 14:29 UTC (permalink / raw)
  To: pve-devel

git will automatically change the length of the index hashes when
formatting a patch depending on what references are present in the
submodule. After pulling in the stable tags today, git wanted to add
a character to all hashes for me. Use --full-index when generating the
patches to avoid such issues in the future.

No functional change intended.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
 ...ke-mkcompile_h-accept-an-alternate-timestamp-strin.patch | 2 +-
 ...02-wireless-Add-Debian-wireless-regdb-certificates.patch | 2 +-
 .../0003-bridge-keep-MAC-of-first-assigned-port.patch       | 2 +-
 ...i-Enable-overrides-for-missing-ACS-capabilities-4..patch | 4 ++--
 ...05-kvm-disable-default-dynamic-halt-polling-growth.patch | 2 +-
 ...t-core-downgrade-unregister_netdevice-refcount-lea.patch | 2 +-
 .../0007-Revert-fortify-Do-not-cast-to-unsigned-char.patch  | 2 +-
 ...m-xsave-set-mask-out-PKRU-bit-in-xfeatures-if-vCPU.patch | 6 +++---
 ...low-opt-in-to-allow-pass-through-on-broken-hardwar.patch | 2 +-
 .../0010-KVM-nSVM-Advertise-support-for-flush-by-ASID.patch | 2 +-
 ...vert-memfd-improve-userspace-warnings-for-missing-.patch | 2 +-
 ...12-apparmor-expect-msg_namelen-0-for-recvmsg-calls.patch | 2 +-
 ..._uring-rw-treat-EOPNOTSUPP-for-IOCB_NOWAIT-like-EA.patch | 2 +-
 ...0014-netfs-reset-subreq-iov-iter-before-tail-clean.patch | 2 +-
 ...6-CPU-AMD-Clear-virtualized-VMLOAD-VMSAVE-on-Zen4-.patch | 2 +-
 ...-PCI-Fix-pci_enable_acs-support-for-the-ACS-quirks.patch | 2 +-
 ...vert-UBUNTU-SAUCE-iommu-intel-disable-DMAR-for-SKL.patch | 2 +-
 17 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/patches/kernel/0001-Make-mkcompile_h-accept-an-alternate-timestamp-strin.patch b/patches/kernel/0001-Make-mkcompile_h-accept-an-alternate-timestamp-strin.patch
index 2ba3815..1963808 100644
--- a/patches/kernel/0001-Make-mkcompile_h-accept-an-alternate-timestamp-strin.patch
+++ b/patches/kernel/0001-Make-mkcompile_h-accept-an-alternate-timestamp-strin.patch
@@ -21,7 +21,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/init/Makefile b/init/Makefile
-index 10b652d33e87..e4dabde27b90 100644
+index 10b652d33e872658f2d8c8ce3a0b45e9a473fd64..e4dabde27b90c12bd72c6239e15509f9a9448d80 100644
 --- a/init/Makefile
 +++ b/init/Makefile
 @@ -29,7 +29,7 @@ preempt-flag-$(CONFIG_PREEMPT_DYNAMIC)	:= PREEMPT_DYNAMIC
diff --git a/patches/kernel/0002-wireless-Add-Debian-wireless-regdb-certificates.patch b/patches/kernel/0002-wireless-Add-Debian-wireless-regdb-certificates.patch
index 4c0ac0f..274b7ff 100644
--- a/patches/kernel/0002-wireless-Add-Debian-wireless-regdb-certificates.patch
+++ b/patches/kernel/0002-wireless-Add-Debian-wireless-regdb-certificates.patch
@@ -19,7 +19,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
 
 diff --git a/net/wireless/certs/debian.hex b/net/wireless/certs/debian.hex
 new file mode 100644
-index 000000000000..c5ab03f8c500
+index 0000000000000000000000000000000000000000..c5ab03f8c500d2f0e5b7931d5790bd22983c3660
 --- /dev/null
 +++ b/net/wireless/certs/debian.hex
 @@ -0,0 +1,1426 @@
diff --git a/patches/kernel/0003-bridge-keep-MAC-of-first-assigned-port.patch b/patches/kernel/0003-bridge-keep-MAC-of-first-assigned-port.patch
index 135d17c..efa47df 100644
--- a/patches/kernel/0003-bridge-keep-MAC-of-first-assigned-port.patch
+++ b/patches/kernel/0003-bridge-keep-MAC-of-first-assigned-port.patch
@@ -19,7 +19,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+), 4 deletions(-)
 
 diff --git a/net/bridge/br_stp_if.c b/net/bridge/br_stp_if.c
-index 75204d36d7f9..1fb5ff73ec1e 100644
+index 75204d36d7f9062306dfc66c3c35448e16257215..1fb5ff73ec1ef3bd79960182c87a0ba312b3635d 100644
 --- a/net/bridge/br_stp_if.c
 +++ b/net/bridge/br_stp_if.c
 @@ -265,10 +265,7 @@ bool br_stp_recalculate_bridge_id(struct net_bridge *br)
diff --git a/patches/kernel/0004-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch b/patches/kernel/0004-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch
index eac3c16..3d1ae40 100644
--- a/patches/kernel/0004-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch
+++ b/patches/kernel/0004-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch
@@ -55,7 +55,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  2 files changed, 111 insertions(+)
 
 diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
-index 89f899cccf38..dfe0d1e400e2 100644
+index 89f899cccf3875e0c085d33d1129a9ec0482a953..dfe0d1e400e2c8f62770510cb7ad35c5060535cf 100644
 --- a/Documentation/admin-guide/kernel-parameters.txt
 +++ b/Documentation/admin-guide/kernel-parameters.txt
 @@ -4422,6 +4422,15 @@
@@ -75,7 +75,7 @@ index 89f899cccf38..dfe0d1e400e2 100644
  				Safety option to keep boot IRQs enabled. This
  				should never be necessary.
 diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
-index ba021ba458a7..bc35fd0e9b4b 100644
+index ba021ba458a7d0e5b92a0a87a50ef18805c48246..bc35fd0e9b4beb10edaf71c6a854be7e01aac336 100644
 --- a/drivers/pci/quirks.c
 +++ b/drivers/pci/quirks.c
 @@ -287,6 +287,106 @@ static int __init pci_apply_final_quirks(void)
diff --git a/patches/kernel/0005-kvm-disable-default-dynamic-halt-polling-growth.patch b/patches/kernel/0005-kvm-disable-default-dynamic-halt-polling-growth.patch
index 0cca29c..715603a 100644
--- a/patches/kernel/0005-kvm-disable-default-dynamic-halt-polling-growth.patch
+++ b/patches/kernel/0005-kvm-disable-default-dynamic-halt-polling-growth.patch
@@ -13,7 +13,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
-index cb2b78e92910..ebfb1def4662 100644
+index cb2b78e92910fb1d6ebed0b73cf359e866f0a06b..ebfb1def4662c4c16f672f8b832ee510fa3770cd 100644
 --- a/virt/kvm/kvm_main.c
 +++ b/virt/kvm/kvm_main.c
 @@ -80,7 +80,7 @@ module_param(halt_poll_ns, uint, 0644);
diff --git a/patches/kernel/0006-net-core-downgrade-unregister_netdevice-refcount-lea.patch b/patches/kernel/0006-net-core-downgrade-unregister_netdevice-refcount-lea.patch
index 958b999..15c64ed 100644
--- a/patches/kernel/0006-net-core-downgrade-unregister_netdevice-refcount-lea.patch
+++ b/patches/kernel/0006-net-core-downgrade-unregister_netdevice-refcount-lea.patch
@@ -14,7 +14,7 @@ Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/net/core/dev.c b/net/core/dev.c
-index f66e61407883..07ffd47a2010 100644
+index f66e614078832842e903fc2ee792cd89b8a3572f..07ffd47a2010e7735c72588afc097132b062f764 100644
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
 @@ -10672,7 +10672,7 @@ static struct net_device *netdev_wait_allrefs_any(struct list_head *list)
diff --git a/patches/kernel/0007-Revert-fortify-Do-not-cast-to-unsigned-char.patch b/patches/kernel/0007-Revert-fortify-Do-not-cast-to-unsigned-char.patch
index 29c97d6..94e9f87 100644
--- a/patches/kernel/0007-Revert-fortify-Do-not-cast-to-unsigned-char.patch
+++ b/patches/kernel/0007-Revert-fortify-Do-not-cast-to-unsigned-char.patch
@@ -16,7 +16,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/include/linux/fortify-string.h b/include/linux/fortify-string.h
-index 0d99bf11d260..fe04f7f93575 100644
+index 0d99bf11d260a3482bbe46e35c7553c0ccfb8b94..fe04f7f9357506baf21a0c3cc070c37f00a24d5c 100644
 --- a/include/linux/fortify-string.h
 +++ b/include/linux/fortify-string.h
 @@ -62,7 +62,7 @@ void __write_overflow_field(size_t avail, size_t wanted) __compiletime_warning("
diff --git a/patches/kernel/0008-kvm-xsave-set-mask-out-PKRU-bit-in-xfeatures-if-vCPU.patch b/patches/kernel/0008-kvm-xsave-set-mask-out-PKRU-bit-in-xfeatures-if-vCPU.patch
index b14e6da..7997372 100644
--- a/patches/kernel/0008-kvm-xsave-set-mask-out-PKRU-bit-in-xfeatures-if-vCPU.patch
+++ b/patches/kernel/0008-kvm-xsave-set-mask-out-PKRU-bit-in-xfeatures-if-vCPU.patch
@@ -78,7 +78,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  3 files changed, 21 insertions(+)
 
 diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
-index 2617be544480..b6892645c4cd 100644
+index 2617be544480aaf78d21d89f5f0e978a0715e0d6..b6892645c4cde238923062e3f71df21d68cc201d 100644
 --- a/arch/x86/kvm/cpuid.c
 +++ b/arch/x86/kvm/cpuid.c
 @@ -269,6 +269,12 @@ static u64 cpuid_get_supported_xcr0(struct kvm_cpuid_entry2 *entries, int nent)
@@ -95,7 +95,7 @@ index 2617be544480..b6892645c4cd 100644
  				       int nent)
  {
 diff --git a/arch/x86/kvm/cpuid.h b/arch/x86/kvm/cpuid.h
-index 41697cca354e..0e46c4555311 100644
+index 41697cca354e6bc3cb7787602d440eb26e630e5b..0e46c4555311d02b6ec9eba7f33b292c3562b0ee 100644
 --- a/arch/x86/kvm/cpuid.h
 +++ b/arch/x86/kvm/cpuid.h
 @@ -32,6 +32,8 @@ int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu,
@@ -108,7 +108,7 @@ index 41697cca354e..0e46c4555311 100644
  
  int cpuid_query_maxphyaddr(struct kvm_vcpu *vcpu);
 diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
-index c983c8e434b8..c7c3d04198c6 100644
+index c983c8e434b8b8eadc8571aebeb06c1b694e134f..c7c3d04198c6c7f88f97e122bfe78b857f26cb26 100644
 --- a/arch/x86/kvm/x86.c
 +++ b/arch/x86/kvm/x86.c
 @@ -5633,6 +5633,19 @@ static int kvm_vcpu_ioctl_x86_set_xsave(struct kvm_vcpu *vcpu,
diff --git a/patches/kernel/0009-allow-opt-in-to-allow-pass-through-on-broken-hardwar.patch b/patches/kernel/0009-allow-opt-in-to-allow-pass-through-on-broken-hardwar.patch
index eac42cd..187c00b 100644
--- a/patches/kernel/0009-allow-opt-in-to-allow-pass-through-on-broken-hardwar.patch
+++ b/patches/kernel/0009-allow-opt-in-to-allow-pass-through-on-broken-hardwar.patch
@@ -11,7 +11,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
-index 555301f45bec..34c8b02ca787 100644
+index 555301f45bec5ef12290a48095c2cfdaf05602db..34c8b02ca7878e0b1803a07f2f6e5c6c0039a9f8 100644
 --- a/drivers/iommu/intel/iommu.c
 +++ b/drivers/iommu/intel/iommu.c
 @@ -228,6 +228,7 @@ EXPORT_SYMBOL_GPL(intel_iommu_enabled);
diff --git a/patches/kernel/0010-KVM-nSVM-Advertise-support-for-flush-by-ASID.patch b/patches/kernel/0010-KVM-nSVM-Advertise-support-for-flush-by-ASID.patch
index 9596220..34a7e40 100644
--- a/patches/kernel/0010-KVM-nSVM-Advertise-support-for-flush-by-ASID.patch
+++ b/patches/kernel/0010-KVM-nSVM-Advertise-support-for-flush-by-ASID.patch
@@ -24,7 +24,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+)
 
 diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
-index 5ab2c92c7331..1cd03c985fdc 100644
+index 5ab2c92c7331deba414de1077b3ea0eb58920d66..1cd03c985fdc4f72ea774d8d4457400230409430 100644
 --- a/arch/x86/kvm/svm/svm.c
 +++ b/arch/x86/kvm/svm/svm.c
 @@ -5174,6 +5174,7 @@ static __init void svm_set_cpu_caps(void)
diff --git a/patches/kernel/0011-revert-memfd-improve-userspace-warnings-for-missing-.patch b/patches/kernel/0011-revert-memfd-improve-userspace-warnings-for-missing-.patch
index 4adca03..01aa276 100644
--- a/patches/kernel/0011-revert-memfd-improve-userspace-warnings-for-missing-.patch
+++ b/patches/kernel/0011-revert-memfd-improve-userspace-warnings-for-missing-.patch
@@ -30,7 +30,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/mm/memfd.c b/mm/memfd.c
-index e7b7c5294d59..3a1b073ad22c 100644
+index e7b7c5294d59635539ee75a165a3b6ae171a632e..3a1b073ad22c9f64b0dc3ca0823e6569072936d3 100644
 --- a/mm/memfd.c
 +++ b/mm/memfd.c
 @@ -316,7 +316,7 @@ static int check_sysctl_memfd_noexec(unsigned int *flags)
diff --git a/patches/kernel/0012-apparmor-expect-msg_namelen-0-for-recvmsg-calls.patch b/patches/kernel/0012-apparmor-expect-msg_namelen-0-for-recvmsg-calls.patch
index 9bd7c79..36d67f1 100644
--- a/patches/kernel/0012-apparmor-expect-msg_namelen-0-for-recvmsg-calls.patch
+++ b/patches/kernel/0012-apparmor-expect-msg_namelen-0-for-recvmsg-calls.patch
@@ -17,7 +17,7 @@ Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/security/apparmor/af_inet.c b/security/apparmor/af_inet.c
-index 57b710054a76..35f905d9b960 100644
+index 57b710054a76582346f37671843f3f8d6e99331c..35f905d9b960f62fa2ecb80b5c1a8e9edecd9b5d 100644
 --- a/security/apparmor/af_inet.c
 +++ b/security/apparmor/af_inet.c
 @@ -766,7 +766,7 @@ int aa_inet_msg_perm(const char *op, u32 request, struct socket *sock,
diff --git a/patches/kernel/0013-io_uring-rw-treat-EOPNOTSUPP-for-IOCB_NOWAIT-like-EA.patch b/patches/kernel/0013-io_uring-rw-treat-EOPNOTSUPP-for-IOCB_NOWAIT-like-EA.patch
index e0027ba..6d19b8f 100644
--- a/patches/kernel/0013-io_uring-rw-treat-EOPNOTSUPP-for-IOCB_NOWAIT-like-EA.patch
+++ b/patches/kernel/0013-io_uring-rw-treat-EOPNOTSUPP-for-IOCB_NOWAIT-like-EA.patch
@@ -25,7 +25,7 @@ Signed-off-by: Daniel Kral <d.kral@proxmox.com>
  1 file changed, 8 insertions(+)
 
 diff --git a/io_uring/rw.c b/io_uring/rw.c
-index c004d21e2f12..d85e2d41a992 100644
+index c004d21e2f12e39d336339e0340f431eddcec597..d85e2d41a992b82622571c764325af73c12b1e75 100644
 --- a/io_uring/rw.c
 +++ b/io_uring/rw.c
 @@ -855,6 +855,14 @@ static int __io_read(struct io_kiocb *req, unsigned int issue_flags)
diff --git a/patches/kernel/0014-netfs-reset-subreq-iov-iter-before-tail-clean.patch b/patches/kernel/0014-netfs-reset-subreq-iov-iter-before-tail-clean.patch
index e8ac17d..d8003f9 100644
--- a/patches/kernel/0014-netfs-reset-subreq-iov-iter-before-tail-clean.patch
+++ b/patches/kernel/0014-netfs-reset-subreq-iov-iter-before-tail-clean.patch
@@ -15,7 +15,7 @@ Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
  1 file changed, 1 insertion(+)
 
 diff --git a/fs/netfs/io.c b/fs/netfs/io.c
-index d6ada4eba744..500119285346 100644
+index d6ada4eba74455aad26273a63247356a3910dc4e..500119285346be28a87698dd6ac66b5e276a6c66 100644
 --- a/fs/netfs/io.c
 +++ b/fs/netfs/io.c
 @@ -528,6 +528,7 @@ void netfs_subreq_terminated(struct netfs_io_subrequest *subreq,
diff --git a/patches/kernel/0015-x86-CPU-AMD-Clear-virtualized-VMLOAD-VMSAVE-on-Zen4-.patch b/patches/kernel/0015-x86-CPU-AMD-Clear-virtualized-VMLOAD-VMSAVE-on-Zen4-.patch
index 76957b6..af273c6 100644
--- a/patches/kernel/0015-x86-CPU-AMD-Clear-virtualized-VMLOAD-VMSAVE-on-Zen4-.patch
+++ b/patches/kernel/0015-x86-CPU-AMD-Clear-virtualized-VMLOAD-VMSAVE-on-Zen4-.patch
@@ -21,7 +21,7 @@ Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
  1 file changed, 11 insertions(+)
 
 diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
-index 1e0fe5f8ab84..ee87f997d31f 100644
+index 1e0fe5f8ab84e478294b62267176ae01fa540f31..ee87f997d31f90793e759a81e7c3049aadd0f782 100644
 --- a/arch/x86/kernel/cpu/amd.c
 +++ b/arch/x86/kernel/cpu/amd.c
 @@ -924,6 +924,17 @@ static void init_amd_zen4(struct cpuinfo_x86 *c)
diff --git a/patches/kernel/0016-PCI-Fix-pci_enable_acs-support-for-the-ACS-quirks.patch b/patches/kernel/0016-PCI-Fix-pci_enable_acs-support-for-the-ACS-quirks.patch
index 8f2a133..4b2bba1 100644
--- a/patches/kernel/0016-PCI-Fix-pci_enable_acs-support-for-the-ACS-quirks.patch
+++ b/patches/kernel/0016-PCI-Fix-pci_enable_acs-support-for-the-ACS-quirks.patch
@@ -33,7 +33,7 @@ Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
  1 file changed, 9 insertions(+), 5 deletions(-)
 
 diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
-index ffaaca0978cb..a89436d481f0 100644
+index ffaaca0978cbc95fbb7566e9700b375cdb4940cc..a89436d481f0702d57516b378d282808766410c6 100644
 --- a/drivers/pci/pci.c
 +++ b/drivers/pci/pci.c
 @@ -1067,8 +1067,15 @@ static void pci_std_enable_acs(struct pci_dev *dev, struct pci_acs *caps)
diff --git a/patches/kernel/0017-Revert-UBUNTU-SAUCE-iommu-intel-disable-DMAR-for-SKL.patch b/patches/kernel/0017-Revert-UBUNTU-SAUCE-iommu-intel-disable-DMAR-for-SKL.patch
index 100797a..8d3f744 100644
--- a/patches/kernel/0017-Revert-UBUNTU-SAUCE-iommu-intel-disable-DMAR-for-SKL.patch
+++ b/patches/kernel/0017-Revert-UBUNTU-SAUCE-iommu-intel-disable-DMAR-for-SKL.patch
@@ -14,7 +14,7 @@ This reverts commit b310f5f58c83756fc164f7d391d76f0df9cc65c3.
  1 file changed, 27 deletions(-)
 
 diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
-index 34c8b02ca787..a27cbc22148f 100644
+index 34c8b02ca7878e0b1803a07f2f6e5c6c0039a9f8..a27cbc22148fa3123efbe4d0188bccc4731b7b87 100644
 --- a/drivers/iommu/intel/iommu.c
 +++ b/drivers/iommu/intel/iommu.c
 @@ -4766,33 +4766,6 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1632, quirk_iommu_igfx);
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH master kernel 2/4] backport fix for kvm performance regression with Intel Emerald Rapids
  2024-12-19 14:29 [pve-devel] [PATCH-SERIES kernel] backport fix for kvm performance regression with Intel Emerald Rapids Fiona Ebner
  2024-12-19 14:29 ` [pve-devel] [PATCH master kernel 1/4] patches: kernel: switch to using full index for patch files Fiona Ebner
@ 2024-12-19 14:29 ` Fiona Ebner
  2024-12-19 14:29 ` [pve-devel] [PATCH bookworm-6.8 kernel 3/4] patches: kernel: switch to using full index for patch files Fiona Ebner
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Fiona Ebner @ 2024-12-19 14:29 UTC (permalink / raw)
  To: pve-devel

Adapted to context change in "arch/x86/kvm/cpuid.h", because of the
vcpu_supports_xsave_pkru() function that got added by Proxmox VE
downstream patch "kvm: xsave set: mask-out PKRU bit in xfeatures if
vCPU has no support". But otherwise clean cherry-pick from linux-next,
no functional changes.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
 ...UID.0xD-XSTATE-offsets-sizes-during-.patch | 165 ++++++++++++++++++
 1 file changed, 165 insertions(+)
 create mode 100644 patches/kernel/0018-KVM-x86-Cache-CPUID.0xD-XSTATE-offsets-sizes-during-.patch

diff --git a/patches/kernel/0018-KVM-x86-Cache-CPUID.0xD-XSTATE-offsets-sizes-during-.patch b/patches/kernel/0018-KVM-x86-Cache-CPUID.0xD-XSTATE-offsets-sizes-during-.patch
new file mode 100644
index 0000000..5b03995
--- /dev/null
+++ b/patches/kernel/0018-KVM-x86-Cache-CPUID.0xD-XSTATE-offsets-sizes-during-.patch
@@ -0,0 +1,165 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Sean Christopherson <seanjc@google.com>
+Date: Tue, 10 Dec 2024 17:32:58 -0800
+Subject: [PATCH] KVM: x86: Cache CPUID.0xD XSTATE offsets+sizes during module
+ init
+
+Snapshot the output of CPUID.0xD.[1..n] during kvm.ko initiliaization to
+avoid the overead of CPUID during runtime.  The offset, size, and metadata
+for CPUID.0xD.[1..n] sub-leaves does not depend on XCR0 or XSS values, i.e.
+is constant for a given CPU, and thus can be cached during module load.
+
+On Intel's Emerald Rapids, CPUID is *wildly* expensive, to the point where
+recomputing XSAVE offsets and sizes results in a 4x increase in latency of
+nested VM-Enter and VM-Exit (nested transitions can trigger
+xstate_required_size() multiple times per transition), relative to using
+cached values.  The issue is easily visible by running `perf top` while
+triggering nested transitions: kvm_update_cpuid_runtime() shows up at a
+whopping 50%.
+
+As measured via RDTSC from L2 (using KVM-Unit-Test's CPUID VM-Exit test
+and a slightly modified L1 KVM to handle CPUID in the fastpath), a nested
+roundtrip to emulate CPUID on Skylake (SKX), Icelake (ICX), and Emerald
+Rapids (EMR) takes:
+
+  SKX 11650
+  ICX 22350
+  EMR 28850
+
+Using cached values, the latency drops to:
+
+  SKX 6850
+  ICX 9000
+  EMR 7900
+
+The underlying issue is that CPUID itself is slow on ICX, and comically
+slow on EMR.  The problem is exacerbated on CPUs which support XSAVES
+and/or XSAVEC, as KVM invokes xstate_required_size() twice on each
+runtime CPUID update, and because there are more supported XSAVE features
+(CPUID for supported XSAVE feature sub-leafs is significantly slower).
+
+ SKX:
+  CPUID.0xD.2  = 348 cycles
+  CPUID.0xD.3  = 400 cycles
+  CPUID.0xD.4  = 276 cycles
+  CPUID.0xD.5  = 236 cycles
+  <other sub-leaves are similar>
+
+ EMR:
+  CPUID.0xD.2  = 1138 cycles
+  CPUID.0xD.3  = 1362 cycles
+  CPUID.0xD.4  = 1068 cycles
+  CPUID.0xD.5  = 910 cycles
+  CPUID.0xD.6  = 914 cycles
+  CPUID.0xD.7  = 1350 cycles
+  CPUID.0xD.8  = 734 cycles
+  CPUID.0xD.9  = 766 cycles
+  CPUID.0xD.10 = 732 cycles
+  CPUID.0xD.11 = 718 cycles
+  CPUID.0xD.12 = 734 cycles
+  CPUID.0xD.13 = 1700 cycles
+  CPUID.0xD.14 = 1126 cycles
+  CPUID.0xD.15 = 898 cycles
+  CPUID.0xD.16 = 716 cycles
+  CPUID.0xD.17 = 748 cycles
+  CPUID.0xD.18 = 776 cycles
+
+Note, updating runtime CPUID information multiple times per nested
+transition is itself a flaw, especially since CPUID is a mandotory
+intercept on both Intel and AMD.  E.g. KVM doesn't need to ensure emulated
+CPUID state is up-to-date while running L2.  That flaw will be fixed in a
+future patch, as deferring runtime CPUID updates is more subtle than it
+appears at first glance, the benefits aren't super critical to have once
+the XSAVE issue is resolved, and caching CPUID output is desirable even if
+KVM's updates are deferred.
+
+Cc: Jim Mattson <jmattson@google.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Sean Christopherson <seanjc@google.com>
+Message-ID: <20241211013302.1347853-2-seanjc@google.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+(cherry picked from commit 1201f226c863b7da739f7420ddba818cedf372fc)
+Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
+---
+ arch/x86/kvm/cpuid.c | 31 ++++++++++++++++++++++++++-----
+ arch/x86/kvm/cpuid.h |  1 +
+ arch/x86/kvm/x86.c   |  2 ++
+ 3 files changed, 29 insertions(+), 5 deletions(-)
+
+diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
+index b6892645c4cde238923062e3f71df21d68cc201d..dc73965aa73b21d26b4cf039336da3ca38e89bc6 100644
+--- a/arch/x86/kvm/cpuid.c
++++ b/arch/x86/kvm/cpuid.c
+@@ -36,6 +36,26 @@
+ u32 kvm_cpu_caps[NR_KVM_CPU_CAPS] __read_mostly;
+ EXPORT_SYMBOL_GPL(kvm_cpu_caps);
+ 
++struct cpuid_xstate_sizes {
++	u32 eax;
++	u32 ebx;
++	u32 ecx;
++};
++
++static struct cpuid_xstate_sizes xstate_sizes[XFEATURE_MAX] __ro_after_init;
++
++void __init kvm_init_xstate_sizes(void)
++{
++	u32 ign;
++	int i;
++
++	for (i = XFEATURE_YMM; i < ARRAY_SIZE(xstate_sizes); i++) {
++		struct cpuid_xstate_sizes *xs = &xstate_sizes[i];
++
++		cpuid_count(0xD, i, &xs->eax, &xs->ebx, &xs->ecx, &ign);
++	}
++}
++
+ u32 xstate_required_size(u64 xstate_bv, bool compacted)
+ {
+ 	int feature_bit = 0;
+@@ -44,14 +64,15 @@ u32 xstate_required_size(u64 xstate_bv, bool compacted)
+ 	xstate_bv &= XFEATURE_MASK_EXTEND;
+ 	while (xstate_bv) {
+ 		if (xstate_bv & 0x1) {
+-		        u32 eax, ebx, ecx, edx, offset;
+-		        cpuid_count(0xD, feature_bit, &eax, &ebx, &ecx, &edx);
++			struct cpuid_xstate_sizes *xs = &xstate_sizes[feature_bit];
++			u32 offset;
++
+ 			/* ECX[1]: 64B alignment in compacted form */
+ 			if (compacted)
+-				offset = (ecx & 0x2) ? ALIGN(ret, 64) : ret;
++				offset = (xs->ecx & 0x2) ? ALIGN(ret, 64) : ret;
+ 			else
+-				offset = ebx;
+-			ret = max(ret, offset + eax);
++				offset = xs->ebx;
++			ret = max(ret, offset + xs->eax);
+ 		}
+ 
+ 		xstate_bv >>= 1;
+diff --git a/arch/x86/kvm/cpuid.h b/arch/x86/kvm/cpuid.h
+index 0e46c4555311d02b6ec9eba7f33b292c3562b0ee..6287ec33feb7b143a10a7d8ee38d74381a567d24 100644
+--- a/arch/x86/kvm/cpuid.h
++++ b/arch/x86/kvm/cpuid.h
+@@ -34,6 +34,7 @@ bool kvm_cpuid(struct kvm_vcpu *vcpu, u32 *eax, u32 *ebx,
+ 
+ bool vcpu_supports_xsave_pkru(struct kvm_vcpu *vcpu);
+ 
++void __init kvm_init_xstate_sizes(void);
+ u32 xstate_required_size(u64 xstate_bv, bool compacted);
+ 
+ int cpuid_query_maxphyaddr(struct kvm_vcpu *vcpu);
+diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
+index c7c3d04198c6c7f88f97e122bfe78b857f26cb26..4d10fc1a9b4114d1e2edf133717f307043560263 100644
+--- a/arch/x86/kvm/x86.c
++++ b/arch/x86/kvm/x86.c
+@@ -14061,6 +14061,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_rmp_fault);
+ 
+ static int __init kvm_x86_init(void)
+ {
++	kvm_init_xstate_sizes();
++
+ 	kvm_mmu_x86_module_init();
+ 	mitigate_smt_rsb &= boot_cpu_has_bug(X86_BUG_SMT_RSB) && cpu_smt_possible();
+ 	return 0;
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH bookworm-6.8 kernel 3/4] patches: kernel: switch to using full index for patch files
  2024-12-19 14:29 [pve-devel] [PATCH-SERIES kernel] backport fix for kvm performance regression with Intel Emerald Rapids Fiona Ebner
  2024-12-19 14:29 ` [pve-devel] [PATCH master kernel 1/4] patches: kernel: switch to using full index for patch files Fiona Ebner
  2024-12-19 14:29 ` [pve-devel] [PATCH master kernel 2/4] backport fix for kvm performance regression with Intel Emerald Rapids Fiona Ebner
@ 2024-12-19 14:29 ` Fiona Ebner
  2024-12-19 14:29 ` [pve-devel] [PATCH bookworm-6.8 kernel 4/4] backport fix for kvm performance regression with Intel Emerald Rapids Fiona Ebner
  2025-01-20 12:52 ` [pve-devel] applied-series: [PATCH-SERIES kernel] " Fiona Ebner
  4 siblings, 0 replies; 7+ messages in thread
From: Fiona Ebner @ 2024-12-19 14:29 UTC (permalink / raw)
  To: pve-devel

git will automatically change the length of the index hashes when
formatting a patch depending on what references are present in the
submodule. After pulling in the stable tags today, git wanted to add
a character to all hashes for me. Use --full-index when generating the
patches to avoid such issues in the future.

No functional change intended.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
 ...ke-mkcompile_h-accept-an-alternate-timestamp-strin.patch | 2 +-
 ...02-wireless-Add-Debian-wireless-regdb-certificates.patch | 2 +-
 .../0003-bridge-keep-MAC-of-first-assigned-port.patch       | 2 +-
 ...i-Enable-overrides-for-missing-ACS-capabilities-4..patch | 4 ++--
 ...05-kvm-disable-default-dynamic-halt-polling-growth.patch | 2 +-
 ...t-core-downgrade-unregister_netdevice-refcount-lea.patch | 2 +-
 .../0007-Revert-fortify-Do-not-cast-to-unsigned-char.patch  | 2 +-
 ...m-xsave-set-mask-out-PKRU-bit-in-xfeatures-if-vCPU.patch | 6 +++---
 ...low-opt-in-to-allow-pass-through-on-broken-hardwar.patch | 2 +-
 .../0010-KVM-nSVM-Advertise-support-for-flush-by-ASID.patch | 2 +-
 ...vert-memfd-improve-userspace-warnings-for-missing-.patch | 2 +-
 ...12-apparmor-expect-msg_namelen-0-for-recvmsg-calls.patch | 2 +-
 .../0013-cifs-fix-pagecache-leak-when-do-writepages.patch   | 2 +-
 .../0014-drm-amdgpu-pm-Don-t-use-OD-table-on-Arcturus.patch | 2 +-
 ...vert-UBUNTU-SAUCE-iommu-intel-disable-DMAR-for-SKL.patch | 2 +-
 ..._uring-rw-treat-EOPNOTSUPP-for-IOCB_NOWAIT-like-EA.patch | 2 +-
 ...0017-netfs-reset-subreq-iov-iter-before-tail-clean.patch | 2 +-
 ...6-CPU-AMD-Clear-virtualized-VMLOAD-VMSAVE-on-Zen4-.patch | 2 +-
 18 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/patches/kernel/0001-Make-mkcompile_h-accept-an-alternate-timestamp-strin.patch b/patches/kernel/0001-Make-mkcompile_h-accept-an-alternate-timestamp-strin.patch
index 93dba9f..e626b45 100644
--- a/patches/kernel/0001-Make-mkcompile_h-accept-an-alternate-timestamp-strin.patch
+++ b/patches/kernel/0001-Make-mkcompile_h-accept-an-alternate-timestamp-strin.patch
@@ -21,7 +21,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/init/Makefile b/init/Makefile
-index cbac576c57d6..479b1253fcbe 100644
+index cbac576c57d63f20fda8720762f80225e0bcb542..479b1253fcbe2438afed4632882ff9a958472e2b 100644
 --- a/init/Makefile
 +++ b/init/Makefile
 @@ -29,7 +29,7 @@ preempt-flag-$(CONFIG_PREEMPT_DYNAMIC)	:= PREEMPT_DYNAMIC
diff --git a/patches/kernel/0002-wireless-Add-Debian-wireless-regdb-certificates.patch b/patches/kernel/0002-wireless-Add-Debian-wireless-regdb-certificates.patch
index 4c0ac0f..274b7ff 100644
--- a/patches/kernel/0002-wireless-Add-Debian-wireless-regdb-certificates.patch
+++ b/patches/kernel/0002-wireless-Add-Debian-wireless-regdb-certificates.patch
@@ -19,7 +19,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
 
 diff --git a/net/wireless/certs/debian.hex b/net/wireless/certs/debian.hex
 new file mode 100644
-index 000000000000..c5ab03f8c500
+index 0000000000000000000000000000000000000000..c5ab03f8c500d2f0e5b7931d5790bd22983c3660
 --- /dev/null
 +++ b/net/wireless/certs/debian.hex
 @@ -0,0 +1,1426 @@
diff --git a/patches/kernel/0003-bridge-keep-MAC-of-first-assigned-port.patch b/patches/kernel/0003-bridge-keep-MAC-of-first-assigned-port.patch
index 135d17c..efa47df 100644
--- a/patches/kernel/0003-bridge-keep-MAC-of-first-assigned-port.patch
+++ b/patches/kernel/0003-bridge-keep-MAC-of-first-assigned-port.patch
@@ -19,7 +19,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+), 4 deletions(-)
 
 diff --git a/net/bridge/br_stp_if.c b/net/bridge/br_stp_if.c
-index 75204d36d7f9..1fb5ff73ec1e 100644
+index 75204d36d7f9062306dfc66c3c35448e16257215..1fb5ff73ec1ef3bd79960182c87a0ba312b3635d 100644
 --- a/net/bridge/br_stp_if.c
 +++ b/net/bridge/br_stp_if.c
 @@ -265,10 +265,7 @@ bool br_stp_recalculate_bridge_id(struct net_bridge *br)
diff --git a/patches/kernel/0004-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch b/patches/kernel/0004-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch
index 02c6d64..d239cbf 100644
--- a/patches/kernel/0004-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch
+++ b/patches/kernel/0004-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch
@@ -55,7 +55,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  2 files changed, 111 insertions(+)
 
 diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
-index e9be08602d4d..2ed9b047bbd8 100644
+index e9be08602d4db4e9eeca3d3d8cc9ee2e8a330ee8..2ed9b047bbd8fab74596fbc3ccb035fdbb63aa4e 100644
 --- a/Documentation/admin-guide/kernel-parameters.txt
 +++ b/Documentation/admin-guide/kernel-parameters.txt
 @@ -4397,6 +4397,15 @@
@@ -75,7 +75,7 @@ index e9be08602d4d..2ed9b047bbd8 100644
  				Safety option to keep boot IRQs enabled. This
  				should never be necessary.
 diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
-index ce469d84ebae..4f163ef55e7b 100644
+index ce469d84ebaec642fdcffc66334b5d0c4ebb672c..4f163ef55e7b3272dc31fdb16aa9e16e46965496 100644
 --- a/drivers/pci/quirks.c
 +++ b/drivers/pci/quirks.c
 @@ -287,6 +287,106 @@ static int __init pci_apply_final_quirks(void)
diff --git a/patches/kernel/0005-kvm-disable-default-dynamic-halt-polling-growth.patch b/patches/kernel/0005-kvm-disable-default-dynamic-halt-polling-growth.patch
index 8d590eb..e85f2ec 100644
--- a/patches/kernel/0005-kvm-disable-default-dynamic-halt-polling-growth.patch
+++ b/patches/kernel/0005-kvm-disable-default-dynamic-halt-polling-growth.patch
@@ -13,7 +13,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
-index 6a56de7ff82e..96bd40a73e0e 100644
+index 6a56de7ff82e707035a1ade82c7f5fafba4b1f26..96bd40a73e0ed5872eca156ef1f61ab4bda6661f 100644
 --- a/virt/kvm/kvm_main.c
 +++ b/virt/kvm/kvm_main.c
 @@ -82,7 +82,7 @@ module_param(halt_poll_ns, uint, 0644);
diff --git a/patches/kernel/0006-net-core-downgrade-unregister_netdevice-refcount-lea.patch b/patches/kernel/0006-net-core-downgrade-unregister_netdevice-refcount-lea.patch
index 50b02ce..a75076e 100644
--- a/patches/kernel/0006-net-core-downgrade-unregister_netdevice-refcount-lea.patch
+++ b/patches/kernel/0006-net-core-downgrade-unregister_netdevice-refcount-lea.patch
@@ -14,7 +14,7 @@ Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/net/core/dev.c b/net/core/dev.c
-index a32811aebde5..15078ab81ec8 100644
+index a32811aebde5979c5ac2023b3925f6f076a42563..15078ab81ec824c56307b77f784fbe30b66d303e 100644
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
 @@ -10471,7 +10471,7 @@ static struct net_device *netdev_wait_allrefs_any(struct list_head *list)
diff --git a/patches/kernel/0007-Revert-fortify-Do-not-cast-to-unsigned-char.patch b/patches/kernel/0007-Revert-fortify-Do-not-cast-to-unsigned-char.patch
index f6186d1..2d4fd6f 100644
--- a/patches/kernel/0007-Revert-fortify-Do-not-cast-to-unsigned-char.patch
+++ b/patches/kernel/0007-Revert-fortify-Do-not-cast-to-unsigned-char.patch
@@ -16,7 +16,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/include/linux/fortify-string.h b/include/linux/fortify-string.h
-index e99dbc052575..9e9cdb198b82 100644
+index e99dbc0525751dacf0bcd49c208e45f59312f986..9e9cdb198b825ff315a336af36e4fc3b6c09fb7d 100644
 --- a/include/linux/fortify-string.h
 +++ b/include/linux/fortify-string.h
 @@ -18,7 +18,7 @@ void __write_overflow_field(size_t avail, size_t wanted) __compiletime_warning("
diff --git a/patches/kernel/0008-kvm-xsave-set-mask-out-PKRU-bit-in-xfeatures-if-vCPU.patch b/patches/kernel/0008-kvm-xsave-set-mask-out-PKRU-bit-in-xfeatures-if-vCPU.patch
index 3ef9c52..9621750 100644
--- a/patches/kernel/0008-kvm-xsave-set-mask-out-PKRU-bit-in-xfeatures-if-vCPU.patch
+++ b/patches/kernel/0008-kvm-xsave-set-mask-out-PKRU-bit-in-xfeatures-if-vCPU.patch
@@ -78,7 +78,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  3 files changed, 21 insertions(+)
 
 diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
-index ce1499732cb8..d68c04bde5ed 100644
+index ce1499732cb86f7a547ec319ef3430f6e463acdc..d68c04bde5ededcd2ffb24300646f4a9d9c1bc9a 100644
 --- a/arch/x86/kvm/cpuid.c
 +++ b/arch/x86/kvm/cpuid.c
 @@ -262,6 +262,12 @@ static u64 cpuid_get_supported_xcr0(struct kvm_cpuid_entry2 *entries, int nent)
@@ -95,7 +95,7 @@ index ce1499732cb8..d68c04bde5ed 100644
  				       int nent)
  {
 diff --git a/arch/x86/kvm/cpuid.h b/arch/x86/kvm/cpuid.h
-index 23dbb9eb277c..07da153802e4 100644
+index 23dbb9eb277c7465f19bc5af137b79d5a2b894d1..07da153802e4d4f75219d77596e323347393eab7 100644
 --- a/arch/x86/kvm/cpuid.h
 +++ b/arch/x86/kvm/cpuid.h
 @@ -32,6 +32,8 @@ int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu,
@@ -108,7 +108,7 @@ index 23dbb9eb277c..07da153802e4 100644
  
  int cpuid_query_maxphyaddr(struct kvm_vcpu *vcpu);
 diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
-index e36bf6162fc8..08ef6f01bf7e 100644
+index e36bf6162fc801d5ad505f0fd28baf5c7c2278ce..08ef6f01bf7e8c9c6cdb842f23adac09195c1aff 100644
 --- a/arch/x86/kvm/x86.c
 +++ b/arch/x86/kvm/x86.c
 @@ -5580,6 +5580,19 @@ static int kvm_vcpu_ioctl_x86_set_xsave(struct kvm_vcpu *vcpu,
diff --git a/patches/kernel/0009-allow-opt-in-to-allow-pass-through-on-broken-hardwar.patch b/patches/kernel/0009-allow-opt-in-to-allow-pass-through-on-broken-hardwar.patch
index c75297a..f308440 100644
--- a/patches/kernel/0009-allow-opt-in-to-allow-pass-through-on-broken-hardwar.patch
+++ b/patches/kernel/0009-allow-opt-in-to-allow-pass-through-on-broken-hardwar.patch
@@ -11,7 +11,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
-index 94518306c6f9..d9cc1264e40a 100644
+index 94518306c6f96fdf590cdf638e7f1e73c176906a..d9cc1264e40afa9250305b960419185e23863ccc 100644
 --- a/drivers/iommu/intel/iommu.c
 +++ b/drivers/iommu/intel/iommu.c
 @@ -234,6 +234,7 @@ static int dmar_map_gfx = 1;
diff --git a/patches/kernel/0010-KVM-nSVM-Advertise-support-for-flush-by-ASID.patch b/patches/kernel/0010-KVM-nSVM-Advertise-support-for-flush-by-ASID.patch
index c4b0186..d9c1f87 100644
--- a/patches/kernel/0010-KVM-nSVM-Advertise-support-for-flush-by-ASID.patch
+++ b/patches/kernel/0010-KVM-nSVM-Advertise-support-for-flush-by-ASID.patch
@@ -24,7 +24,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+)
 
 diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
-index 9d070f7da796..2ac30170f887 100644
+index 9d070f7da796ebc18b04481d84a05586be726725..2ac30170f887caa2c191db46678cb3ad678b9568 100644
 --- a/arch/x86/kvm/svm/svm.c
 +++ b/arch/x86/kvm/svm/svm.c
 @@ -5114,6 +5114,7 @@ static __init void svm_set_cpu_caps(void)
diff --git a/patches/kernel/0011-revert-memfd-improve-userspace-warnings-for-missing-.patch b/patches/kernel/0011-revert-memfd-improve-userspace-warnings-for-missing-.patch
index 5df98ce..59fc777 100644
--- a/patches/kernel/0011-revert-memfd-improve-userspace-warnings-for-missing-.patch
+++ b/patches/kernel/0011-revert-memfd-improve-userspace-warnings-for-missing-.patch
@@ -30,7 +30,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/mm/memfd.c b/mm/memfd.c
-index d3a1ba4208c9..6a9de5d9105e 100644
+index d3a1ba4208c90139f5c172751b7ca7320b2f54a9..6a9de5d9105ea5b2b41be8c9549dc98624a8290d 100644
 --- a/mm/memfd.c
 +++ b/mm/memfd.c
 @@ -282,7 +282,7 @@ static int check_sysctl_memfd_noexec(unsigned int *flags)
diff --git a/patches/kernel/0012-apparmor-expect-msg_namelen-0-for-recvmsg-calls.patch b/patches/kernel/0012-apparmor-expect-msg_namelen-0-for-recvmsg-calls.patch
index 9bd7c79..36d67f1 100644
--- a/patches/kernel/0012-apparmor-expect-msg_namelen-0-for-recvmsg-calls.patch
+++ b/patches/kernel/0012-apparmor-expect-msg_namelen-0-for-recvmsg-calls.patch
@@ -17,7 +17,7 @@ Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/security/apparmor/af_inet.c b/security/apparmor/af_inet.c
-index 57b710054a76..35f905d9b960 100644
+index 57b710054a76582346f37671843f3f8d6e99331c..35f905d9b960f62fa2ecb80b5c1a8e9edecd9b5d 100644
 --- a/security/apparmor/af_inet.c
 +++ b/security/apparmor/af_inet.c
 @@ -766,7 +766,7 @@ int aa_inet_msg_perm(const char *op, u32 request, struct socket *sock,
diff --git a/patches/kernel/0013-cifs-fix-pagecache-leak-when-do-writepages.patch b/patches/kernel/0013-cifs-fix-pagecache-leak-when-do-writepages.patch
index 79ae5aa..52369af 100644
--- a/patches/kernel/0013-cifs-fix-pagecache-leak-when-do-writepages.patch
+++ b/patches/kernel/0013-cifs-fix-pagecache-leak-when-do-writepages.patch
@@ -47,7 +47,7 @@ Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
  1 file changed, 13 insertions(+), 3 deletions(-)
 
 diff --git a/fs/smb/client/file.c b/fs/smb/client/file.c
-index d495e3511014..e755ae643c09 100644
+index d495e3511014b9e628d0592d328f63b4a680de97..e755ae643c090e595bf2431e471eddff7b868e9f 100644
 --- a/fs/smb/client/file.c
 +++ b/fs/smb/client/file.c
 @@ -2845,17 +2845,21 @@ static ssize_t cifs_write_back_from_locked_folio(struct address_space *mapping,
diff --git a/patches/kernel/0014-drm-amdgpu-pm-Don-t-use-OD-table-on-Arcturus.patch b/patches/kernel/0014-drm-amdgpu-pm-Don-t-use-OD-table-on-Arcturus.patch
index 086a9cb..1df03d6 100644
--- a/patches/kernel/0014-drm-amdgpu-pm-Don-t-use-OD-table-on-Arcturus.patch
+++ b/patches/kernel/0014-drm-amdgpu-pm-Don-t-use-OD-table-on-Arcturus.patch
@@ -16,7 +16,7 @@ Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
  1 file changed, 5 insertions(+), 28 deletions(-)
 
 diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c
-index 437ac31b1673..415032f58522 100644
+index 437ac31b1673986f96a5a714e3e017d06e053dc9..415032f58522f8eefcfe1ddad5dc992f6f3e2e3d 100644
 --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c
 +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c
 @@ -1283,11 +1283,8 @@ static int arcturus_get_power_limit(struct smu_context *smu,
diff --git a/patches/kernel/0015-Revert-UBUNTU-SAUCE-iommu-intel-disable-DMAR-for-SKL.patch b/patches/kernel/0015-Revert-UBUNTU-SAUCE-iommu-intel-disable-DMAR-for-SKL.patch
index b273b4a..534e836 100644
--- a/patches/kernel/0015-Revert-UBUNTU-SAUCE-iommu-intel-disable-DMAR-for-SKL.patch
+++ b/patches/kernel/0015-Revert-UBUNTU-SAUCE-iommu-intel-disable-DMAR-for-SKL.patch
@@ -14,7 +14,7 @@ This reverts commit b310f5f58c83756fc164f7d391d76f0df9cc65c3.
  1 file changed, 27 deletions(-)
 
 diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
-index d9cc1264e40a..89fdcaad20e1 100644
+index d9cc1264e40afa9250305b960419185e23863ccc..89fdcaad20e1e8251fe379cded7701c762628871 100644
 --- a/drivers/iommu/intel/iommu.c
 +++ b/drivers/iommu/intel/iommu.c
 @@ -5034,33 +5034,6 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1632, quirk_iommu_igfx);
diff --git a/patches/kernel/0016-io_uring-rw-treat-EOPNOTSUPP-for-IOCB_NOWAIT-like-EA.patch b/patches/kernel/0016-io_uring-rw-treat-EOPNOTSUPP-for-IOCB_NOWAIT-like-EA.patch
index 7187c94..1f320cf 100644
--- a/patches/kernel/0016-io_uring-rw-treat-EOPNOTSUPP-for-IOCB_NOWAIT-like-EA.patch
+++ b/patches/kernel/0016-io_uring-rw-treat-EOPNOTSUPP-for-IOCB_NOWAIT-like-EA.patch
@@ -25,7 +25,7 @@ Signed-off-by: Daniel Kral <d.kral@proxmox.com>
  1 file changed, 8 insertions(+)
 
 diff --git a/io_uring/rw.c b/io_uring/rw.c
-index c3c154790e45..ed7f67097572 100644
+index c3c154790e45230a1d503173e287c6305ab22916..ed7f6709757268faacd69ed4c83a17fa155b3c98 100644
 --- a/io_uring/rw.c
 +++ b/io_uring/rw.c
 @@ -825,6 +825,14 @@ static int __io_read(struct io_kiocb *req, unsigned int issue_flags)
diff --git a/patches/kernel/0017-netfs-reset-subreq-iov-iter-before-tail-clean.patch b/patches/kernel/0017-netfs-reset-subreq-iov-iter-before-tail-clean.patch
index cc4104b..4ecd9a9 100644
--- a/patches/kernel/0017-netfs-reset-subreq-iov-iter-before-tail-clean.patch
+++ b/patches/kernel/0017-netfs-reset-subreq-iov-iter-before-tail-clean.patch
@@ -15,7 +15,7 @@ Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
  1 file changed, 1 insertion(+)
 
 diff --git a/fs/netfs/io.c b/fs/netfs/io.c
-index aaff3844e9b7..e8a884040e2b 100644
+index aaff3844e9b708e20b885cfdcc378f91d3335d4c..e8a884040e2b377b48d6da9f1b5096f8fcd99f92 100644
 --- a/fs/netfs/io.c
 +++ b/fs/netfs/io.c
 @@ -517,6 +517,7 @@ void netfs_subreq_terminated(struct netfs_io_subrequest *subreq,
diff --git a/patches/kernel/0018-x86-CPU-AMD-Clear-virtualized-VMLOAD-VMSAVE-on-Zen4-.patch b/patches/kernel/0018-x86-CPU-AMD-Clear-virtualized-VMLOAD-VMSAVE-on-Zen4-.patch
index 51ed9b9..94ce254 100644
--- a/patches/kernel/0018-x86-CPU-AMD-Clear-virtualized-VMLOAD-VMSAVE-on-Zen4-.patch
+++ b/patches/kernel/0018-x86-CPU-AMD-Clear-virtualized-VMLOAD-VMSAVE-on-Zen4-.patch
@@ -21,7 +21,7 @@ Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
  1 file changed, 11 insertions(+)
 
 diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
-index 809a66d522c1..edc1b32b5021 100644
+index 809a66d522c1131c850f7fda26b61752f122e192..edc1b32b502106089833c1f327768848a5145081 100644
 --- a/arch/x86/kernel/cpu/amd.c
 +++ b/arch/x86/kernel/cpu/amd.c
 @@ -1061,6 +1061,17 @@ static void init_amd_zen4(struct cpuinfo_x86 *c)
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH bookworm-6.8 kernel 4/4] backport fix for kvm performance regression with Intel Emerald Rapids
  2024-12-19 14:29 [pve-devel] [PATCH-SERIES kernel] backport fix for kvm performance regression with Intel Emerald Rapids Fiona Ebner
                   ` (2 preceding siblings ...)
  2024-12-19 14:29 ` [pve-devel] [PATCH bookworm-6.8 kernel 3/4] patches: kernel: switch to using full index for patch files Fiona Ebner
@ 2024-12-19 14:29 ` Fiona Ebner
  2025-01-20 12:52 ` [pve-devel] applied-series: [PATCH-SERIES kernel] " Fiona Ebner
  4 siblings, 0 replies; 7+ messages in thread
From: Fiona Ebner @ 2024-12-19 14:29 UTC (permalink / raw)
  To: pve-devel

Adapted to context change in "arch/x86/kvm/cpuid.h", because of the
vcpu_supports_xsave_pkru() function that got added by Proxmox VE
downstream patch "kvm: xsave set: mask-out PKRU bit in xfeatures if
vCPU has no support". But otherwise clean cherry-pick from linux-next,
no functional changes.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
 ...UID.0xD-XSTATE-offsets-sizes-during-.patch | 165 ++++++++++++++++++
 1 file changed, 165 insertions(+)
 create mode 100644 patches/kernel/0019-KVM-x86-Cache-CPUID.0xD-XSTATE-offsets-sizes-during-.patch

diff --git a/patches/kernel/0019-KVM-x86-Cache-CPUID.0xD-XSTATE-offsets-sizes-during-.patch b/patches/kernel/0019-KVM-x86-Cache-CPUID.0xD-XSTATE-offsets-sizes-during-.patch
new file mode 100644
index 0000000..beda78e
--- /dev/null
+++ b/patches/kernel/0019-KVM-x86-Cache-CPUID.0xD-XSTATE-offsets-sizes-during-.patch
@@ -0,0 +1,165 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Sean Christopherson <seanjc@google.com>
+Date: Tue, 10 Dec 2024 17:32:58 -0800
+Subject: [PATCH] KVM: x86: Cache CPUID.0xD XSTATE offsets+sizes during module
+ init
+
+Snapshot the output of CPUID.0xD.[1..n] during kvm.ko initiliaization to
+avoid the overead of CPUID during runtime.  The offset, size, and metadata
+for CPUID.0xD.[1..n] sub-leaves does not depend on XCR0 or XSS values, i.e.
+is constant for a given CPU, and thus can be cached during module load.
+
+On Intel's Emerald Rapids, CPUID is *wildly* expensive, to the point where
+recomputing XSAVE offsets and sizes results in a 4x increase in latency of
+nested VM-Enter and VM-Exit (nested transitions can trigger
+xstate_required_size() multiple times per transition), relative to using
+cached values.  The issue is easily visible by running `perf top` while
+triggering nested transitions: kvm_update_cpuid_runtime() shows up at a
+whopping 50%.
+
+As measured via RDTSC from L2 (using KVM-Unit-Test's CPUID VM-Exit test
+and a slightly modified L1 KVM to handle CPUID in the fastpath), a nested
+roundtrip to emulate CPUID on Skylake (SKX), Icelake (ICX), and Emerald
+Rapids (EMR) takes:
+
+  SKX 11650
+  ICX 22350
+  EMR 28850
+
+Using cached values, the latency drops to:
+
+  SKX 6850
+  ICX 9000
+  EMR 7900
+
+The underlying issue is that CPUID itself is slow on ICX, and comically
+slow on EMR.  The problem is exacerbated on CPUs which support XSAVES
+and/or XSAVEC, as KVM invokes xstate_required_size() twice on each
+runtime CPUID update, and because there are more supported XSAVE features
+(CPUID for supported XSAVE feature sub-leafs is significantly slower).
+
+ SKX:
+  CPUID.0xD.2  = 348 cycles
+  CPUID.0xD.3  = 400 cycles
+  CPUID.0xD.4  = 276 cycles
+  CPUID.0xD.5  = 236 cycles
+  <other sub-leaves are similar>
+
+ EMR:
+  CPUID.0xD.2  = 1138 cycles
+  CPUID.0xD.3  = 1362 cycles
+  CPUID.0xD.4  = 1068 cycles
+  CPUID.0xD.5  = 910 cycles
+  CPUID.0xD.6  = 914 cycles
+  CPUID.0xD.7  = 1350 cycles
+  CPUID.0xD.8  = 734 cycles
+  CPUID.0xD.9  = 766 cycles
+  CPUID.0xD.10 = 732 cycles
+  CPUID.0xD.11 = 718 cycles
+  CPUID.0xD.12 = 734 cycles
+  CPUID.0xD.13 = 1700 cycles
+  CPUID.0xD.14 = 1126 cycles
+  CPUID.0xD.15 = 898 cycles
+  CPUID.0xD.16 = 716 cycles
+  CPUID.0xD.17 = 748 cycles
+  CPUID.0xD.18 = 776 cycles
+
+Note, updating runtime CPUID information multiple times per nested
+transition is itself a flaw, especially since CPUID is a mandotory
+intercept on both Intel and AMD.  E.g. KVM doesn't need to ensure emulated
+CPUID state is up-to-date while running L2.  That flaw will be fixed in a
+future patch, as deferring runtime CPUID updates is more subtle than it
+appears at first glance, the benefits aren't super critical to have once
+the XSAVE issue is resolved, and caching CPUID output is desirable even if
+KVM's updates are deferred.
+
+Cc: Jim Mattson <jmattson@google.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Sean Christopherson <seanjc@google.com>
+Message-ID: <20241211013302.1347853-2-seanjc@google.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+(cherry picked from commit 1201f226c863b7da739f7420ddba818cedf372fc)
+Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
+---
+ arch/x86/kvm/cpuid.c | 31 ++++++++++++++++++++++++++-----
+ arch/x86/kvm/cpuid.h |  1 +
+ arch/x86/kvm/x86.c   |  2 ++
+ 3 files changed, 29 insertions(+), 5 deletions(-)
+
+diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
+index d68c04bde5ededcd2ffb24300646f4a9d9c1bc9a..be6e9995fb6dcd84aa21ff7a324b585d0a4a008f 100644
+--- a/arch/x86/kvm/cpuid.c
++++ b/arch/x86/kvm/cpuid.c
+@@ -36,6 +36,26 @@
+ u32 kvm_cpu_caps[NR_KVM_CPU_CAPS] __read_mostly;
+ EXPORT_SYMBOL_GPL(kvm_cpu_caps);
+ 
++struct cpuid_xstate_sizes {
++	u32 eax;
++	u32 ebx;
++	u32 ecx;
++};
++
++static struct cpuid_xstate_sizes xstate_sizes[XFEATURE_MAX] __ro_after_init;
++
++void __init kvm_init_xstate_sizes(void)
++{
++	u32 ign;
++	int i;
++
++	for (i = XFEATURE_YMM; i < ARRAY_SIZE(xstate_sizes); i++) {
++		struct cpuid_xstate_sizes *xs = &xstate_sizes[i];
++
++		cpuid_count(0xD, i, &xs->eax, &xs->ebx, &xs->ecx, &ign);
++	}
++}
++
+ u32 xstate_required_size(u64 xstate_bv, bool compacted)
+ {
+ 	int feature_bit = 0;
+@@ -44,14 +64,15 @@ u32 xstate_required_size(u64 xstate_bv, bool compacted)
+ 	xstate_bv &= XFEATURE_MASK_EXTEND;
+ 	while (xstate_bv) {
+ 		if (xstate_bv & 0x1) {
+-		        u32 eax, ebx, ecx, edx, offset;
+-		        cpuid_count(0xD, feature_bit, &eax, &ebx, &ecx, &edx);
++			struct cpuid_xstate_sizes *xs = &xstate_sizes[feature_bit];
++			u32 offset;
++
+ 			/* ECX[1]: 64B alignment in compacted form */
+ 			if (compacted)
+-				offset = (ecx & 0x2) ? ALIGN(ret, 64) : ret;
++				offset = (xs->ecx & 0x2) ? ALIGN(ret, 64) : ret;
+ 			else
+-				offset = ebx;
+-			ret = max(ret, offset + eax);
++				offset = xs->ebx;
++			ret = max(ret, offset + xs->eax);
+ 		}
+ 
+ 		xstate_bv >>= 1;
+diff --git a/arch/x86/kvm/cpuid.h b/arch/x86/kvm/cpuid.h
+index 07da153802e4d4f75219d77596e323347393eab7..a50b57e5d40073027901249a355b65b9a8b54a74 100644
+--- a/arch/x86/kvm/cpuid.h
++++ b/arch/x86/kvm/cpuid.h
+@@ -34,6 +34,7 @@ bool kvm_cpuid(struct kvm_vcpu *vcpu, u32 *eax, u32 *ebx,
+ 
+ bool vcpu_supports_xsave_pkru(struct kvm_vcpu *vcpu);
+ 
++void __init kvm_init_xstate_sizes(void);
+ u32 xstate_required_size(u64 xstate_bv, bool compacted);
+ 
+ int cpuid_query_maxphyaddr(struct kvm_vcpu *vcpu);
+diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
+index 08ef6f01bf7e8c9c6cdb842f23adac09195c1aff..558e267ae0def34227f6f854a0955a26766a6e2c 100644
+--- a/arch/x86/kvm/x86.c
++++ b/arch/x86/kvm/x86.c
+@@ -13930,6 +13930,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_vmgexit_msr_protocol_exit);
+ 
+ static int __init kvm_x86_init(void)
+ {
++	kvm_init_xstate_sizes();
++
+ 	kvm_mmu_x86_module_init();
+ 	mitigate_smt_rsb &= boot_cpu_has_bug(X86_BUG_SMT_RSB) && cpu_smt_possible();
+ 	return 0;
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [pve-devel] [PATCH master kernel 1/4] patches: kernel: switch to using full index for patch files
  2024-12-19 14:29 ` [pve-devel] [PATCH master kernel 1/4] patches: kernel: switch to using full index for patch files Fiona Ebner
@ 2024-12-19 14:44   ` Fiona Ebner
  0 siblings, 0 replies; 7+ messages in thread
From: Fiona Ebner @ 2024-12-19 14:44 UTC (permalink / raw)
  To: pve-devel

Am 19.12.24 um 15:29 schrieb Fiona Ebner:
> git will automatically change the length of the index hashes when
> formatting a patch depending on what references are present in the
> submodule. After pulling in the stable tags today, git wanted to add
> a character to all hashes for me. Use --full-index when generating the
> patches to avoid such issues in the future.
> 
> No functional change intended.
> 
> Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
> ---
>  ...ke-mkcompile_h-accept-an-alternate-timestamp-strin.patch | 2 +-
>  ...02-wireless-Add-Debian-wireless-regdb-certificates.patch | 2 +-
>  .../0003-bridge-keep-MAC-of-first-assigned-port.patch       | 2 +-
>  ...i-Enable-overrides-for-missing-ACS-capabilities-4..patch | 4 ++--
>  ...05-kvm-disable-default-dynamic-halt-polling-growth.patch | 2 +-
>  ...t-core-downgrade-unregister_netdevice-refcount-lea.patch | 2 +-
>  .../0007-Revert-fortify-Do-not-cast-to-unsigned-char.patch  | 2 +-
>  ...m-xsave-set-mask-out-PKRU-bit-in-xfeatures-if-vCPU.patch | 6 +++---
>  ...low-opt-in-to-allow-pass-through-on-broken-hardwar.patch | 2 +-
>  .../0010-KVM-nSVM-Advertise-support-for-flush-by-ASID.patch | 2 +-
>  ...vert-memfd-improve-userspace-warnings-for-missing-.patch | 2 +-
>  ...12-apparmor-expect-msg_namelen-0-for-recvmsg-calls.patch | 2 +-
>  ..._uring-rw-treat-EOPNOTSUPP-for-IOCB_NOWAIT-like-EA.patch | 2 +-
>  ...0014-netfs-reset-subreq-iov-iter-before-tail-clean.patch | 2 +-
>  ...6-CPU-AMD-Clear-virtualized-VMLOAD-VMSAVE-on-Zen4-.patch | 2 +-
>  ...-PCI-Fix-pci_enable_acs-support-for-the-ACS-quirks.patch | 2 +-
>  ...vert-UBUNTU-SAUCE-iommu-intel-disable-DMAR-for-SKL.patch | 2 +-
>  17 files changed, 20 insertions(+), 20 deletions(-)
> 

Fabian pointed out we have:
https://git.proxmox.com/?p=pve-kernel.git;a=blob;f=debian/scripts/export-patchqueue;h=bc3cea8d0fac054ca83637299a9d93e6ac54079c;hb=refs/heads/master
that should be adapted too ;)

Well I had used this command manually since Thomas gave it to me once
when I started working on QEMU (or at least I forgot about the kernel
scripts existence since then :P).


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] applied-series: [PATCH-SERIES kernel] backport fix for kvm performance regression with Intel Emerald Rapids
  2024-12-19 14:29 [pve-devel] [PATCH-SERIES kernel] backport fix for kvm performance regression with Intel Emerald Rapids Fiona Ebner
                   ` (3 preceding siblings ...)
  2024-12-19 14:29 ` [pve-devel] [PATCH bookworm-6.8 kernel 4/4] backport fix for kvm performance regression with Intel Emerald Rapids Fiona Ebner
@ 2025-01-20 12:52 ` Fiona Ebner
  4 siblings, 0 replies; 7+ messages in thread
From: Fiona Ebner @ 2025-01-20 12:52 UTC (permalink / raw)
  To: pve-devel

Am 19.12.24 um 15:29 schrieb Fiona Ebner:
> Stumbled across this in the news [0].
> 
> Built, installed on a (CPU type 'host') VM and started a nested VM for
> both 6.8 and 6.11 as a smoke test. Note I have an AMD TR 7960X, but
> AFIACT, the patch affects a general code path not specific to Intel
> CPUs.
> 
> [0]: https://www.phoronix.com/news/Linux-6.13-rc3-Released
> 
> 
> Fiona Ebner (2):
>   patches: kernel: switch to using full index for patch files
>   backport fix for kvm performance regression with Intel Emerald Rapids
> 
>  ...-accept-an-alternate-timestamp-strin.patch |   2 +-
>  ...d-Debian-wireless-regdb-certificates.patch |   2 +-
>  ...idge-keep-MAC-of-first-assigned-port.patch |   2 +-
>  ...ides-for-missing-ACS-capabilities-4..patch |   4 +-
>  ...-default-dynamic-halt-polling-growth.patch |   2 +-
>  ...de-unregister_netdevice-refcount-lea.patch |   2 +-
>  ...fortify-Do-not-cast-to-unsigned-char.patch |   2 +-
>  ...sk-out-PKRU-bit-in-xfeatures-if-vCPU.patch |   6 +-
>  ...allow-pass-through-on-broken-hardwar.patch |   2 +-
>  ...-Advertise-support-for-flush-by-ASID.patch |   2 +-
>  ...rove-userspace-warnings-for-missing-.patch |   2 +-
>  ...pect-msg_namelen-0-for-recvmsg-calls.patch |   2 +-
>  ...ix-pagecache-leak-when-do-writepages.patch |   2 +-
>  ...pu-pm-Don-t-use-OD-table-on-Arcturus.patch |   2 +-
>  ...UCE-iommu-intel-disable-DMAR-for-SKL.patch |   2 +-
>  ...t-EOPNOTSUPP-for-IOCB_NOWAIT-like-EA.patch |   2 +-
>  ...et-subreq-iov-iter-before-tail-clean.patch |   2 +-
>  ...r-virtualized-VMLOAD-VMSAVE-on-Zen4-.patch |   2 +-
>  ...UID.0xD-XSTATE-offsets-sizes-during-.patch | 165 ++++++++++++++++++
>  19 files changed, 186 insertions(+), 21 deletions(-)
>  create mode 100644 patches/kernel/0019-KVM-x86-Cache-CPUID.0xD-XSTATE-offsets-sizes-during-.patch
> 

For the record, this series was already applied in December by Thomas.


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-01-20 12:53 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-12-19 14:29 [pve-devel] [PATCH-SERIES kernel] backport fix for kvm performance regression with Intel Emerald Rapids Fiona Ebner
2024-12-19 14:29 ` [pve-devel] [PATCH master kernel 1/4] patches: kernel: switch to using full index for patch files Fiona Ebner
2024-12-19 14:44   ` Fiona Ebner
2024-12-19 14:29 ` [pve-devel] [PATCH master kernel 2/4] backport fix for kvm performance regression with Intel Emerald Rapids Fiona Ebner
2024-12-19 14:29 ` [pve-devel] [PATCH bookworm-6.8 kernel 3/4] patches: kernel: switch to using full index for patch files Fiona Ebner
2024-12-19 14:29 ` [pve-devel] [PATCH bookworm-6.8 kernel 4/4] backport fix for kvm performance regression with Intel Emerald Rapids Fiona Ebner
2025-01-20 12:52 ` [pve-devel] applied-series: [PATCH-SERIES kernel] " Fiona Ebner

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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal