update kernel and patches for Ubuntu-6.5.0-20.20
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
		
							parent
							
								
									1b4116e1c8
								
							
						
					
					
						commit
						5dde66b4fe
					
				@ -21,7 +21,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
 | 
				
			|||||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
					 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
diff --git a/init/Makefile b/init/Makefile
 | 
					diff --git a/init/Makefile b/init/Makefile
 | 
				
			||||||
index ec557ada3c12..72095034f338 100644
 | 
					index cbac576c57d6..479b1253fcbe 100644
 | 
				
			||||||
--- a/init/Makefile
 | 
					--- a/init/Makefile
 | 
				
			||||||
+++ b/init/Makefile
 | 
					+++ b/init/Makefile
 | 
				
			||||||
@@ -29,7 +29,7 @@ preempt-flag-$(CONFIG_PREEMPT_DYNAMIC)	:= PREEMPT_DYNAMIC
 | 
					@@ -29,7 +29,7 @@ preempt-flag-$(CONFIG_PREEMPT_DYNAMIC)	:= PREEMPT_DYNAMIC
 | 
				
			||||||
 | 
				
			|||||||
@ -55,10 +55,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
 | 
				
			|||||||
 2 files changed, 111 insertions(+)
 | 
					 2 files changed, 111 insertions(+)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
 | 
					diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
 | 
				
			||||||
index 9f2bcb8b7f96..a60a4220be95 100644
 | 
					index 90ddf08e8409..eedfabda597f 100644
 | 
				
			||||||
--- a/Documentation/admin-guide/kernel-parameters.txt
 | 
					--- a/Documentation/admin-guide/kernel-parameters.txt
 | 
				
			||||||
+++ b/Documentation/admin-guide/kernel-parameters.txt
 | 
					+++ b/Documentation/admin-guide/kernel-parameters.txt
 | 
				
			||||||
@@ -4281,6 +4281,15 @@
 | 
					@@ -4285,6 +4285,15 @@
 | 
				
			||||||
 				Also, it enforces the PCI Local Bus spec
 | 
					 				Also, it enforces the PCI Local Bus spec
 | 
				
			||||||
 				rule that those bits should be 0 in system reset
 | 
					 				rule that those bits should be 0 in system reset
 | 
				
			||||||
 				events (useful for kexec/kdump cases).
 | 
					 				events (useful for kexec/kdump cases).
 | 
				
			||||||
@ -75,7 +75,7 @@ index 9f2bcb8b7f96..a60a4220be95 100644
 | 
				
			|||||||
 				Safety option to keep boot IRQs enabled. This
 | 
					 				Safety option to keep boot IRQs enabled. This
 | 
				
			||||||
 				should never be necessary.
 | 
					 				should never be necessary.
 | 
				
			||||||
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
 | 
					diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
 | 
				
			||||||
index 139df46ed306..08450329f1a3 100644
 | 
					index b3a55f2cab46..baef591d10f6 100644
 | 
				
			||||||
--- a/drivers/pci/quirks.c
 | 
					--- a/drivers/pci/quirks.c
 | 
				
			||||||
+++ b/drivers/pci/quirks.c
 | 
					+++ b/drivers/pci/quirks.c
 | 
				
			||||||
@@ -287,6 +287,106 @@ static int __init pci_apply_final_quirks(void)
 | 
					@@ -287,6 +287,106 @@ static int __init pci_apply_final_quirks(void)
 | 
				
			||||||
 | 
				
			|||||||
@ -14,10 +14,10 @@ Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
 | 
				
			|||||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
					 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
diff --git a/net/core/dev.c b/net/core/dev.c
 | 
					diff --git a/net/core/dev.c b/net/core/dev.c
 | 
				
			||||||
index fe8c46c46505..db9ce84f2006 100644
 | 
					index 3c5106cd0602..3634982362f7 100644
 | 
				
			||||||
--- a/net/core/dev.c
 | 
					--- a/net/core/dev.c
 | 
				
			||||||
+++ b/net/core/dev.c
 | 
					+++ b/net/core/dev.c
 | 
				
			||||||
@@ -10298,7 +10298,7 @@ static struct net_device *netdev_wait_allrefs_any(struct list_head *list)
 | 
					@@ -10352,7 +10352,7 @@ static struct net_device *netdev_wait_allrefs_any(struct list_head *list)
 | 
				
			||||||
 		if (time_after(jiffies, warning_time +
 | 
					 		if (time_after(jiffies, warning_time +
 | 
				
			||||||
 			       READ_ONCE(netdev_unregister_timeout_secs) * HZ)) {
 | 
					 			       READ_ONCE(netdev_unregister_timeout_secs) * HZ)) {
 | 
				
			||||||
 			list_for_each_entry(dev, list, todo_list) {
 | 
					 			list_for_each_entry(dev, list, todo_list) {
 | 
				
			||||||
 | 
				
			|||||||
@ -108,10 +108,10 @@ index b1658c0de847..12a02851ff57 100644
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 int cpuid_query_maxphyaddr(struct kvm_vcpu *vcpu);
 | 
					 int cpuid_query_maxphyaddr(struct kvm_vcpu *vcpu);
 | 
				
			||||||
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
 | 
					diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
 | 
				
			||||||
index 7bcf1a76a6ab..aa225f430299 100644
 | 
					index a5c8a01f7e7e..632d2d18041a 100644
 | 
				
			||||||
--- a/arch/x86/kvm/x86.c
 | 
					--- a/arch/x86/kvm/x86.c
 | 
				
			||||||
+++ b/arch/x86/kvm/x86.c
 | 
					+++ b/arch/x86/kvm/x86.c
 | 
				
			||||||
@@ -5424,6 +5424,19 @@ static int kvm_vcpu_ioctl_x86_set_xsave(struct kvm_vcpu *vcpu,
 | 
					@@ -5426,6 +5426,19 @@ static int kvm_vcpu_ioctl_x86_set_xsave(struct kvm_vcpu *vcpu,
 | 
				
			||||||
 	if (fpstate_is_confidential(&vcpu->arch.guest_fpu))
 | 
					 	if (fpstate_is_confidential(&vcpu->arch.guest_fpu))
 | 
				
			||||||
 		return 0;
 | 
					 		return 0;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 | 
				
			|||||||
@ -11,7 +11,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
 | 
				
			|||||||
 1 file changed, 5 insertions(+), 1 deletion(-)
 | 
					 1 file changed, 5 insertions(+), 1 deletion(-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
 | 
					diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
 | 
				
			||||||
index 656b2150643e..06fefd2a4bfa 100644
 | 
					index 15e2649b25ef..752f77e285f2 100644
 | 
				
			||||||
--- a/drivers/iommu/intel/iommu.c
 | 
					--- a/drivers/iommu/intel/iommu.c
 | 
				
			||||||
+++ b/drivers/iommu/intel/iommu.c
 | 
					+++ b/drivers/iommu/intel/iommu.c
 | 
				
			||||||
@@ -298,6 +298,7 @@ static int dmar_map_gfx = 1;
 | 
					@@ -298,6 +298,7 @@ static int dmar_map_gfx = 1;
 | 
				
			||||||
@ -32,7 +32,7 @@ index 656b2150643e..06fefd2a4bfa 100644
 | 
				
			|||||||
 		} else {
 | 
					 		} else {
 | 
				
			||||||
 			pr_notice("Unknown option - '%s'\n", str);
 | 
					 			pr_notice("Unknown option - '%s'\n", str);
 | 
				
			||||||
 		}
 | 
					 		}
 | 
				
			||||||
@@ -2503,7 +2507,7 @@ static bool device_rmrr_is_relaxable(struct device *dev)
 | 
					@@ -2504,7 +2508,7 @@ static bool device_rmrr_is_relaxable(struct device *dev)
 | 
				
			||||||
 		return false;
 | 
					 		return false;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	pdev = to_pci_dev(dev);
 | 
					 	pdev = to_pci_dev(dev);
 | 
				
			||||||
 | 
				
			|||||||
@ -24,10 +24,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
 | 
				
			|||||||
 1 file changed, 1 insertion(+)
 | 
					 1 file changed, 1 insertion(+)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
 | 
					diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
 | 
				
			||||||
index c8466bc64b87..6154eda73d41 100644
 | 
					index 99832814341c..e8bb2bfd1ba1 100644
 | 
				
			||||||
--- a/arch/x86/kvm/svm/svm.c
 | 
					--- a/arch/x86/kvm/svm/svm.c
 | 
				
			||||||
+++ b/arch/x86/kvm/svm/svm.c
 | 
					+++ b/arch/x86/kvm/svm/svm.c
 | 
				
			||||||
@@ -4983,6 +4983,7 @@ static __init void svm_set_cpu_caps(void)
 | 
					@@ -4985,6 +4985,7 @@ static __init void svm_set_cpu_caps(void)
 | 
				
			||||||
 	if (nested) {
 | 
					 	if (nested) {
 | 
				
			||||||
 		kvm_cpu_cap_set(X86_FEATURE_SVM);
 | 
					 		kvm_cpu_cap_set(X86_FEATURE_SVM);
 | 
				
			||||||
 		kvm_cpu_cap_set(X86_FEATURE_VMCBCLEAN);
 | 
					 		kvm_cpu_cap_set(X86_FEATURE_VMCBCLEAN);
 | 
				
			||||||
 | 
				
			|||||||
@ -1,55 +0,0 @@
 | 
				
			|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Thomas Lamprecht <t.lamprecht@proxmox.com>
 | 
					 | 
				
			||||||
Date: Tue, 7 Nov 2023 09:26:16 +0100
 | 
					 | 
				
			||||||
Subject: [PATCH] Revert "UBUNTU: SAUCE: ceph: make sure all the files
 | 
					 | 
				
			||||||
 successfully put before unmounting"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This reverts commit a53dba9297be9597eac7b17738723bd44bac97ea, which
 | 
					 | 
				
			||||||
was an early attempt to fix a bug that was actually present in the
 | 
					 | 
				
			||||||
ceph layer, as confirmed by the original patch author [0], and fixed
 | 
					 | 
				
			||||||
actually there now [1].
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[0]: https://lore.kernel.org/all/8443166a-7182-7777-a489-14b5dab20bd5@redhat.com/
 | 
					 | 
				
			||||||
[1]: https://patchwork.kernel.org/project/ceph-devel/patch/20221221093031.132792-1-xiubli@redhat.com/
 | 
					 | 
				
			||||||
Hide
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 fs/crypto/keyring.c | 6 +-----
 | 
					 | 
				
			||||||
 fs/inode.c          | 5 +----
 | 
					 | 
				
			||||||
 2 files changed, 2 insertions(+), 9 deletions(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/fs/crypto/keyring.c b/fs/crypto/keyring.c
 | 
					 | 
				
			||||||
index 147b9a11c62c..7cbb1fd872ac 100644
 | 
					 | 
				
			||||||
--- a/fs/crypto/keyring.c
 | 
					 | 
				
			||||||
+++ b/fs/crypto/keyring.c
 | 
					 | 
				
			||||||
@@ -237,11 +237,7 @@ void fscrypt_destroy_keyring(struct super_block *sb)
 | 
					 | 
				
			||||||
 			 * with ->mk_secret.  There should be no structural refs
 | 
					 | 
				
			||||||
 			 * beyond the one associated with the active ref.
 | 
					 | 
				
			||||||
 			 */
 | 
					 | 
				
			||||||
-			if (refcount_read(&mk->mk_active_refs) != 1) {
 | 
					 | 
				
			||||||
-				printk("fscrypt_destroy_keyring: mk_active_refs = %d\n",
 | 
					 | 
				
			||||||
-				       refcount_read(&mk->mk_active_refs));
 | 
					 | 
				
			||||||
-				WARN_ON_ONCE(refcount_read(&mk->mk_active_refs) != 1);
 | 
					 | 
				
			||||||
-			}
 | 
					 | 
				
			||||||
+			WARN_ON_ONCE(refcount_read(&mk->mk_active_refs) != 1);
 | 
					 | 
				
			||||||
 			WARN_ON_ONCE(refcount_read(&mk->mk_struct_refs) != 1);
 | 
					 | 
				
			||||||
 			WARN_ON_ONCE(!is_master_key_secret_present(&mk->mk_secret));
 | 
					 | 
				
			||||||
 			wipe_master_key_secret(&mk->mk_secret);
 | 
					 | 
				
			||||||
diff --git a/fs/inode.c b/fs/inode.c
 | 
					 | 
				
			||||||
index 3b8abad427b4..67611a360031 100644
 | 
					 | 
				
			||||||
--- a/fs/inode.c
 | 
					 | 
				
			||||||
+++ b/fs/inode.c
 | 
					 | 
				
			||||||
@@ -716,11 +716,8 @@ void evict_inodes(struct super_block *sb)
 | 
					 | 
				
			||||||
 again:
 | 
					 | 
				
			||||||
 	spin_lock(&sb->s_inode_list_lock);
 | 
					 | 
				
			||||||
 	list_for_each_entry_safe(inode, next, &sb->s_inodes, i_sb_list) {
 | 
					 | 
				
			||||||
-		if (atomic_read(&inode->i_count)) {
 | 
					 | 
				
			||||||
-			printk("evict_inodes inode %p, i_count = %d, was skipped!\n",
 | 
					 | 
				
			||||||
-			       inode, atomic_read(&inode->i_count));
 | 
					 | 
				
			||||||
+		if (atomic_read(&inode->i_count))
 | 
					 | 
				
			||||||
 			continue;
 | 
					 | 
				
			||||||
-		}
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 		spin_lock(&inode->i_lock);
 | 
					 | 
				
			||||||
 		if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) {
 | 
					 | 
				
			||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
From c5becf57dd5659c687d41d623a69f42d63f59eb2 Mon Sep 17 00:00:00 2001
 | 
					From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
				
			||||||
From: "Martin K. Petersen" <martin.petersen@oracle.com>
 | 
					From: "Martin K. Petersen" <martin.petersen@oracle.com>
 | 
				
			||||||
Date: Fri, 8 Dec 2023 12:09:38 -0500
 | 
					Date: Fri, 8 Dec 2023 12:09:38 -0500
 | 
				
			||||||
Subject: Revert "scsi: aacraid: Reply queue mapping to CPUs based on IRQ
 | 
					Subject: [PATCH] Revert "scsi: aacraid: Reply queue mapping to CPUs based on
 | 
				
			||||||
 affinity"
 | 
					 IRQ affinity"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This reverts commit 9dc704dcc09eae7d21b5da0615eb2ed79278f63e.
 | 
					This reverts commit 9dc704dcc09eae7d21b5da0615eb2ed79278f63e.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -21,7 +21,7 @@ Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
 | 
				
			|||||||
 4 files changed, 3 insertions(+), 43 deletions(-)
 | 
					 4 files changed, 3 insertions(+), 43 deletions(-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
 | 
					diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
 | 
				
			||||||
index 73b6ac0c01f54..7d5a155073c62 100644
 | 
					index 73b6ac0c01f5..7d5a155073c6 100644
 | 
				
			||||||
--- a/drivers/scsi/aacraid/aacraid.h
 | 
					--- a/drivers/scsi/aacraid/aacraid.h
 | 
				
			||||||
+++ b/drivers/scsi/aacraid/aacraid.h
 | 
					+++ b/drivers/scsi/aacraid/aacraid.h
 | 
				
			||||||
@@ -1678,7 +1678,6 @@ struct aac_dev
 | 
					@@ -1678,7 +1678,6 @@ struct aac_dev
 | 
				
			||||||
@ -33,7 +33,7 @@ index 73b6ac0c01f54..7d5a155073c62 100644
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 #define aac_adapter_interrupt(dev) \
 | 
					 #define aac_adapter_interrupt(dev) \
 | 
				
			||||||
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
 | 
					diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
 | 
				
			||||||
index 013a9a334972e..25cee03d7f973 100644
 | 
					index 013a9a334972..25cee03d7f97 100644
 | 
				
			||||||
--- a/drivers/scsi/aacraid/commsup.c
 | 
					--- a/drivers/scsi/aacraid/commsup.c
 | 
				
			||||||
+++ b/drivers/scsi/aacraid/commsup.c
 | 
					+++ b/drivers/scsi/aacraid/commsup.c
 | 
				
			||||||
@@ -223,12 +223,8 @@ int aac_fib_setup(struct aac_dev * dev)
 | 
					@@ -223,12 +223,8 @@ int aac_fib_setup(struct aac_dev * dev)
 | 
				
			||||||
@ -51,7 +51,7 @@ index 013a9a334972e..25cee03d7f973 100644
 | 
				
			|||||||
 	 *	Null out fields that depend on being zero at the start of
 | 
					 	 *	Null out fields that depend on being zero at the start of
 | 
				
			||||||
 	 *	each I/O
 | 
					 	 *	each I/O
 | 
				
			||||||
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
 | 
					diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
 | 
				
			||||||
index c4a36c0be527c..68f4dbcfff492 100644
 | 
					index c4a36c0be527..68f4dbcfff49 100644
 | 
				
			||||||
--- a/drivers/scsi/aacraid/linit.c
 | 
					--- a/drivers/scsi/aacraid/linit.c
 | 
				
			||||||
+++ b/drivers/scsi/aacraid/linit.c
 | 
					+++ b/drivers/scsi/aacraid/linit.c
 | 
				
			||||||
@@ -19,7 +19,6 @@
 | 
					@@ -19,7 +19,6 @@
 | 
				
			||||||
@ -62,7 +62,7 @@ index c4a36c0be527c..68f4dbcfff492 100644
 | 
				
			|||||||
 #include <linux/completion.h>
 | 
					 #include <linux/completion.h>
 | 
				
			||||||
 #include <linux/init.h>
 | 
					 #include <linux/init.h>
 | 
				
			||||||
 #include <linux/interrupt.h>
 | 
					 #include <linux/interrupt.h>
 | 
				
			||||||
@@ -505,15 +504,6 @@ common_config:
 | 
					@@ -505,15 +504,6 @@ static int aac_slave_configure(struct scsi_device *sdev)
 | 
				
			||||||
 	return 0;
 | 
					 	return 0;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@ -104,7 +104,7 @@ index c4a36c0be527c..68f4dbcfff492 100644
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	__aac_shutdown(aac);
 | 
					 	__aac_shutdown(aac);
 | 
				
			||||||
diff --git a/drivers/scsi/aacraid/src.c b/drivers/scsi/aacraid/src.c
 | 
					diff --git a/drivers/scsi/aacraid/src.c b/drivers/scsi/aacraid/src.c
 | 
				
			||||||
index 61949f3741886..11ef58204e96f 100644
 | 
					index 61949f374188..11ef58204e96 100644
 | 
				
			||||||
--- a/drivers/scsi/aacraid/src.c
 | 
					--- a/drivers/scsi/aacraid/src.c
 | 
				
			||||||
+++ b/drivers/scsi/aacraid/src.c
 | 
					+++ b/drivers/scsi/aacraid/src.c
 | 
				
			||||||
@@ -493,10 +493,6 @@ static int aac_src_deliver_message(struct fib *fib)
 | 
					@@ -493,10 +493,6 @@ static int aac_src_deliver_message(struct fib *fib)
 | 
				
			||||||
@ -146,6 +146,3 @@ index 61949f3741886..11ef58204e96f 100644
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 		if (native_hba) {
 | 
					 		if (native_hba) {
 | 
				
			||||||
 			if (fib->flags & FIB_CONTEXT_FLAG_NATIVE_HBA_TMF) {
 | 
					 			if (fib->flags & FIB_CONTEXT_FLAG_NATIVE_HBA_TMF) {
 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
cgit 1.2.3-korg
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,63 +0,0 @@
 | 
				
			|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Mario Limonciello <mario.limonciello@amd.com>
 | 
					 | 
				
			||||||
Date: Wed, 4 Oct 2023 15:22:52 -0500
 | 
					 | 
				
			||||||
Subject: [PATCH] drm/amd: Fix UBSAN array-index-out-of-bounds for SMU7
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
For pptable structs that use flexible array sizes, use flexible arrays.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Suggested-by: Felix Held <felix.held@amd.com>
 | 
					 | 
				
			||||||
Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2874
 | 
					 | 
				
			||||||
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
 | 
					 | 
				
			||||||
Acked-by: Alex Deucher <alexander.deucher@amd.com>
 | 
					 | 
				
			||||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
 | 
					 | 
				
			||||||
(cherry-picked from commit 760efbca74a405dc439a013a5efaa9fadc95a8c3)
 | 
					 | 
				
			||||||
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 drivers/gpu/drm/amd/include/pptable.h                 | 4 ++--
 | 
					 | 
				
			||||||
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h | 4 ++--
 | 
					 | 
				
			||||||
 2 files changed, 4 insertions(+), 4 deletions(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/drivers/gpu/drm/amd/include/pptable.h b/drivers/gpu/drm/amd/include/pptable.h
 | 
					 | 
				
			||||||
index 0b6a057e0a4c..5aac8d545bdc 100644
 | 
					 | 
				
			||||||
--- a/drivers/gpu/drm/amd/include/pptable.h
 | 
					 | 
				
			||||||
+++ b/drivers/gpu/drm/amd/include/pptable.h
 | 
					 | 
				
			||||||
@@ -78,7 +78,7 @@ typedef struct _ATOM_PPLIB_THERMALCONTROLLER
 | 
					 | 
				
			||||||
 typedef struct _ATOM_PPLIB_STATE
 | 
					 | 
				
			||||||
 {
 | 
					 | 
				
			||||||
     UCHAR ucNonClockStateIndex;
 | 
					 | 
				
			||||||
-    UCHAR ucClockStateIndices[1]; // variable-sized
 | 
					 | 
				
			||||||
+    UCHAR ucClockStateIndices[]; // variable-sized
 | 
					 | 
				
			||||||
 } ATOM_PPLIB_STATE;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
@@ -473,7 +473,7 @@ typedef struct _ATOM_PPLIB_STATE_V2
 | 
					 | 
				
			||||||
       /**
 | 
					 | 
				
			||||||
       * Driver will read the first ucNumDPMLevels in this array
 | 
					 | 
				
			||||||
       */
 | 
					 | 
				
			||||||
-      UCHAR clockInfoIndex[1];
 | 
					 | 
				
			||||||
+      UCHAR clockInfoIndex[];
 | 
					 | 
				
			||||||
 } ATOM_PPLIB_STATE_V2;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 typedef struct _StateArray{
 | 
					 | 
				
			||||||
diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h
 | 
					 | 
				
			||||||
index b0ac4d121adc..41444e27bfc0 100644
 | 
					 | 
				
			||||||
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h
 | 
					 | 
				
			||||||
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h
 | 
					 | 
				
			||||||
@@ -179,7 +179,7 @@ typedef struct _ATOM_Tonga_MCLK_Dependency_Record {
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Tonga_MCLK_Dependency_Table {
 | 
					 | 
				
			||||||
 	UCHAR ucRevId;
 | 
					 | 
				
			||||||
 	UCHAR ucNumEntries; 										/* Number of entries. */
 | 
					 | 
				
			||||||
-	ATOM_Tonga_MCLK_Dependency_Record entries[1];				/* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
+	ATOM_Tonga_MCLK_Dependency_Record entries[];				/* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
 } ATOM_Tonga_MCLK_Dependency_Table;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Tonga_SCLK_Dependency_Record {
 | 
					 | 
				
			||||||
@@ -194,7 +194,7 @@ typedef struct _ATOM_Tonga_SCLK_Dependency_Record {
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Tonga_SCLK_Dependency_Table {
 | 
					 | 
				
			||||||
 	UCHAR ucRevId;
 | 
					 | 
				
			||||||
 	UCHAR ucNumEntries; 										/* Number of entries. */
 | 
					 | 
				
			||||||
-	ATOM_Tonga_SCLK_Dependency_Record entries[1];				 /* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
+	ATOM_Tonga_SCLK_Dependency_Record entries[];				 /* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
 } ATOM_Tonga_SCLK_Dependency_Table;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Polaris_SCLK_Dependency_Record {
 | 
					 | 
				
			||||||
@ -1,76 +0,0 @@
 | 
				
			|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Mario Limonciello <mario.limonciello@amd.com>
 | 
					 | 
				
			||||||
Date: Wed, 4 Oct 2023 15:46:44 -0500
 | 
					 | 
				
			||||||
Subject: [PATCH] drm/amd: Fix UBSAN array-index-out-of-bounds for Polaris and
 | 
					 | 
				
			||||||
 Tonga
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
For pptable structs that use flexible array sizes, use flexible arrays.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2036742
 | 
					 | 
				
			||||||
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
 | 
					 | 
				
			||||||
Acked-by: Alex Deucher <alexander.deucher@amd.com>
 | 
					 | 
				
			||||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
 | 
					 | 
				
			||||||
(cherry-picked from commit 0f0e59075b5c22f1e871fbd508d6e4f495048356)
 | 
					 | 
				
			||||||
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 .../gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h    | 12 ++++++------
 | 
					 | 
				
			||||||
 1 file changed, 6 insertions(+), 6 deletions(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h
 | 
					 | 
				
			||||||
index 41444e27bfc0..e0e40b054c08 100644
 | 
					 | 
				
			||||||
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h
 | 
					 | 
				
			||||||
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h
 | 
					 | 
				
			||||||
@@ -164,7 +164,7 @@ typedef struct _ATOM_Tonga_State {
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Tonga_State_Array {
 | 
					 | 
				
			||||||
 	UCHAR ucRevId;
 | 
					 | 
				
			||||||
 	UCHAR ucNumEntries;		/* Number of entries. */
 | 
					 | 
				
			||||||
-	ATOM_Tonga_State entries[1];	/* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
+	ATOM_Tonga_State entries[];	/* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
 } ATOM_Tonga_State_Array;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Tonga_MCLK_Dependency_Record {
 | 
					 | 
				
			||||||
@@ -210,7 +210,7 @@ typedef struct _ATOM_Polaris_SCLK_Dependency_Record {
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Polaris_SCLK_Dependency_Table {
 | 
					 | 
				
			||||||
 	UCHAR ucRevId;
 | 
					 | 
				
			||||||
 	UCHAR ucNumEntries;							/* Number of entries. */
 | 
					 | 
				
			||||||
-	ATOM_Polaris_SCLK_Dependency_Record entries[1];				 /* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
+	ATOM_Polaris_SCLK_Dependency_Record entries[];				 /* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
 } ATOM_Polaris_SCLK_Dependency_Table;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Tonga_PCIE_Record {
 | 
					 | 
				
			||||||
@@ -222,7 +222,7 @@ typedef struct _ATOM_Tonga_PCIE_Record {
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Tonga_PCIE_Table {
 | 
					 | 
				
			||||||
 	UCHAR ucRevId;
 | 
					 | 
				
			||||||
 	UCHAR ucNumEntries; 										/* Number of entries. */
 | 
					 | 
				
			||||||
-	ATOM_Tonga_PCIE_Record entries[1];							/* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
+	ATOM_Tonga_PCIE_Record entries[];							/* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
 } ATOM_Tonga_PCIE_Table;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Polaris10_PCIE_Record {
 | 
					 | 
				
			||||||
@@ -235,7 +235,7 @@ typedef struct _ATOM_Polaris10_PCIE_Record {
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Polaris10_PCIE_Table {
 | 
					 | 
				
			||||||
 	UCHAR ucRevId;
 | 
					 | 
				
			||||||
 	UCHAR ucNumEntries;                                         /* Number of entries. */
 | 
					 | 
				
			||||||
-	ATOM_Polaris10_PCIE_Record entries[1];                      /* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
+	ATOM_Polaris10_PCIE_Record entries[];                      /* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
 } ATOM_Polaris10_PCIE_Table;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
@@ -252,7 +252,7 @@ typedef struct _ATOM_Tonga_MM_Dependency_Record {
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Tonga_MM_Dependency_Table {
 | 
					 | 
				
			||||||
 	UCHAR ucRevId;
 | 
					 | 
				
			||||||
 	UCHAR ucNumEntries; 										/* Number of entries. */
 | 
					 | 
				
			||||||
-	ATOM_Tonga_MM_Dependency_Record entries[1]; 			   /* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
+	ATOM_Tonga_MM_Dependency_Record entries[]; 			   /* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
 } ATOM_Tonga_MM_Dependency_Table;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Tonga_Voltage_Lookup_Record {
 | 
					 | 
				
			||||||
@@ -265,7 +265,7 @@ typedef struct _ATOM_Tonga_Voltage_Lookup_Record {
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Tonga_Voltage_Lookup_Table {
 | 
					 | 
				
			||||||
 	UCHAR ucRevId;
 | 
					 | 
				
			||||||
 	UCHAR ucNumEntries; 										/* Number of entries. */
 | 
					 | 
				
			||||||
-	ATOM_Tonga_Voltage_Lookup_Record entries[1];				/* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
+	ATOM_Tonga_Voltage_Lookup_Record entries[];				/* Dynamically allocate entries. */
 | 
					 | 
				
			||||||
 } ATOM_Tonga_Voltage_Lookup_Table;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 typedef struct _ATOM_Tonga_Fan_Table {
 | 
					 | 
				
			||||||
@ -1,13 +1,7 @@
 | 
				
			|||||||
 | 
					From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
				
			||||||
From: Ojaswin Mujoo <ojaswin@linux.ibm.com>
 | 
					From: Ojaswin Mujoo <ojaswin@linux.ibm.com>
 | 
				
			||||||
To: linux-ext4@vger.kernel.org, "Theodore Ts'o" <tytso@mit.edu>
 | 
					 | 
				
			||||||
Cc: Ritesh Harjani <ritesh.list@gmail.com>, linux-kernel@vger.kernel.org,
 | 
					 | 
				
			||||||
        Jan Kara <jack@suse.cz>, glandvador@yahoo.com, bugzilla@eyal.emu.id.au
 | 
					 | 
				
			||||||
Subject: [PATCH 1/1] ext4: fallback to complex scan if aligned scan doesn't work
 | 
					 | 
				
			||||||
Date: Fri, 15 Dec 2023 16:49:50 +0530
 | 
					Date: Fri, 15 Dec 2023 16:49:50 +0530
 | 
				
			||||||
Message-Id: <ee033f6dfa0a7f2934437008a909c3788233950f.1702455010.git.ojaswin@linux.ibm.com>
 | 
					Subject: [PATCH] ext4: fallback to complex scan if aligned scan doesn't work
 | 
				
			||||||
X-Mailer: git-send-email 2.39.3
 | 
					 | 
				
			||||||
In-Reply-To: <cover.1702455010.git.ojaswin@linux.ibm.com>
 | 
					 | 
				
			||||||
References: <cover.1702455010.git.ojaswin@linux.ibm.com>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Currently in case the goal length is a multiple of stripe size we use
 | 
					Currently in case the goal length is a multiple of stripe size we use
 | 
				
			||||||
ext4_mb_scan_aligned() to find the stripe size aligned physical blocks.
 | 
					ext4_mb_scan_aligned() to find the stripe size aligned physical blocks.
 | 
				
			||||||
@ -29,10 +23,10 @@ Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
 | 
				
			|||||||
 1 file changed, 13 insertions(+), 8 deletions(-)
 | 
					 1 file changed, 13 insertions(+), 8 deletions(-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
 | 
					diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
 | 
				
			||||||
index d72b5e3c92ec..63f12ec02485 100644
 | 
					index 3711be697a0a..0c81836f092e 100644
 | 
				
			||||||
--- a/fs/ext4/mballoc.c
 | 
					--- a/fs/ext4/mballoc.c
 | 
				
			||||||
+++ b/fs/ext4/mballoc.c
 | 
					+++ b/fs/ext4/mballoc.c
 | 
				
			||||||
@@ -2895,14 +2895,19 @@ ext4_mb_regular_allocator(struct ext4_allocation_context *ac)
 | 
					@@ -2894,14 +2894,19 @@ ext4_mb_regular_allocator(struct ext4_allocation_context *ac)
 | 
				
			||||||
 			ac->ac_groups_scanned++;
 | 
					 			ac->ac_groups_scanned++;
 | 
				
			||||||
 			if (cr == CR_POWER2_ALIGNED)
 | 
					 			if (cr == CR_POWER2_ALIGNED)
 | 
				
			||||||
 				ext4_mb_simple_scan_group(ac, &e4b);
 | 
					 				ext4_mb_simple_scan_group(ac, &e4b);
 | 
				
			||||||
@ -60,7 +54,3 @@ index d72b5e3c92ec..63f12ec02485 100644
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 			ext4_unlock_group(sb, group);
 | 
					 			ext4_unlock_group(sb, group);
 | 
				
			||||||
 			ext4_mb_unload_buddy(&e4b);
 | 
					 			ext4_mb_unload_buddy(&e4b);
 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
2.39.3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,126 +0,0 @@
 | 
				
			|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 | 
					 | 
				
			||||||
Date: Fri, 24 Nov 2023 17:48:01 +0000
 | 
					 | 
				
			||||||
Subject: [PATCH] KVM: x86: Fix lapic timer interrupt lost after loading a
 | 
					 | 
				
			||||||
 snapshot.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
commit 9cfec6d097c607e36199cf0cfbb8cf5acbd8e9b2 upstream.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
When running android emulator (which is based on QEMU 2.12) on
 | 
					 | 
				
			||||||
certain Intel hosts with kernel version 6.3-rc1 or above, guest
 | 
					 | 
				
			||||||
will freeze after loading a snapshot. This is almost 100%
 | 
					 | 
				
			||||||
reproducible. By default, the android emulator will use snapshot
 | 
					 | 
				
			||||||
to speed up the next launching of the same android guest. So
 | 
					 | 
				
			||||||
this breaks the android emulator badly.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
I tested QEMU 8.0.4 from Debian 12 with an Ubuntu 22.04 guest by
 | 
					 | 
				
			||||||
running command "loadvm" after "savevm". The same issue is
 | 
					 | 
				
			||||||
observed. At the same time, none of our AMD platforms is impacted.
 | 
					 | 
				
			||||||
More experiments show that loading the KVM module with
 | 
					 | 
				
			||||||
"enable_apicv=false" can workaround it.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The issue started to show up after commit 8e6ed96cdd50 ("KVM: x86:
 | 
					 | 
				
			||||||
fire timer when it is migrated and expired, and in oneshot mode").
 | 
					 | 
				
			||||||
However, as is pointed out by Sean Christopherson, it is introduced
 | 
					 | 
				
			||||||
by commit 967235d32032 ("KVM: vmx: clear pending interrupts on
 | 
					 | 
				
			||||||
KVM_SET_LAPIC"). commit 8e6ed96cdd50 ("KVM: x86: fire timer when
 | 
					 | 
				
			||||||
it is migrated and expired, and in oneshot mode") just makes it
 | 
					 | 
				
			||||||
easier to hit the issue.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Having both commits, the oneshot lapic timer gets fired immediately
 | 
					 | 
				
			||||||
inside the KVM_SET_LAPIC call when loading the snapshot. On Intel
 | 
					 | 
				
			||||||
platforms with APIC virtualization and posted interrupt processing,
 | 
					 | 
				
			||||||
this eventually leads to setting the corresponding PIR bit. However,
 | 
					 | 
				
			||||||
the whole PIR bits get cleared later in the same KVM_SET_LAPIC call
 | 
					 | 
				
			||||||
by apicv_post_state_restore. This leads to timer interrupt lost.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The fix is to move vmx_apicv_post_state_restore to the beginning of
 | 
					 | 
				
			||||||
the KVM_SET_LAPIC call and rename to vmx_apicv_pre_state_restore.
 | 
					 | 
				
			||||||
What vmx_apicv_post_state_restore does is actually clearing any
 | 
					 | 
				
			||||||
former apicv state and this behavior is more suitable to carry out
 | 
					 | 
				
			||||||
in the beginning.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Fixes: 967235d32032 ("KVM: vmx: clear pending interrupts on KVM_SET_LAPIC")
 | 
					 | 
				
			||||||
Cc: stable@vger.kernel.org
 | 
					 | 
				
			||||||
Suggested-by: Sean Christopherson <seanjc@google.com>
 | 
					 | 
				
			||||||
Signed-off-by: Haitao Shan <hshan@google.com>
 | 
					 | 
				
			||||||
Link: https://lore.kernel.org/r/20230913000215.478387-1-hshan@google.com
 | 
					 | 
				
			||||||
Signed-off-by: Sean Christopherson <seanjc@google.com>
 | 
					 | 
				
			||||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 | 
					 | 
				
			||||||
(picked from https://lore.kernel.org/stable/20231124172031.920738810@linuxfoundation.org/)
 | 
					 | 
				
			||||||
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 arch/x86/include/asm/kvm-x86-ops.h | 1 +
 | 
					 | 
				
			||||||
 arch/x86/include/asm/kvm_host.h    | 1 +
 | 
					 | 
				
			||||||
 arch/x86/kvm/lapic.c               | 4 ++++
 | 
					 | 
				
			||||||
 arch/x86/kvm/vmx/vmx.c             | 4 ++--
 | 
					 | 
				
			||||||
 4 files changed, 8 insertions(+), 2 deletions(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/arch/x86/include/asm/kvm-x86-ops.h b/arch/x86/include/asm/kvm-x86-ops.h
 | 
					 | 
				
			||||||
index e3054e3e46d52..9b419f0de713c 100644
 | 
					 | 
				
			||||||
--- a/arch/x86/include/asm/kvm-x86-ops.h
 | 
					 | 
				
			||||||
+++ b/arch/x86/include/asm/kvm-x86-ops.h
 | 
					 | 
				
			||||||
@@ -108,6 +108,7 @@ KVM_X86_OP_OPTIONAL(vcpu_blocking)
 | 
					 | 
				
			||||||
 KVM_X86_OP_OPTIONAL(vcpu_unblocking)
 | 
					 | 
				
			||||||
 KVM_X86_OP_OPTIONAL(pi_update_irte)
 | 
					 | 
				
			||||||
 KVM_X86_OP_OPTIONAL(pi_start_assignment)
 | 
					 | 
				
			||||||
+KVM_X86_OP_OPTIONAL(apicv_pre_state_restore)
 | 
					 | 
				
			||||||
 KVM_X86_OP_OPTIONAL(apicv_post_state_restore)
 | 
					 | 
				
			||||||
 KVM_X86_OP_OPTIONAL_RET0(dy_apicv_has_pending_interrupt)
 | 
					 | 
				
			||||||
 KVM_X86_OP_OPTIONAL(set_hv_timer)
 | 
					 | 
				
			||||||
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
 | 
					 | 
				
			||||||
index f72b30d2238a6..9bdbb1cc03d38 100644
 | 
					 | 
				
			||||||
--- a/arch/x86/include/asm/kvm_host.h
 | 
					 | 
				
			||||||
+++ b/arch/x86/include/asm/kvm_host.h
 | 
					 | 
				
			||||||
@@ -1690,6 +1690,7 @@ struct kvm_x86_ops {
 | 
					 | 
				
			||||||
 	int (*pi_update_irte)(struct kvm *kvm, unsigned int host_irq,
 | 
					 | 
				
			||||||
 			      uint32_t guest_irq, bool set);
 | 
					 | 
				
			||||||
 	void (*pi_start_assignment)(struct kvm *kvm);
 | 
					 | 
				
			||||||
+	void (*apicv_pre_state_restore)(struct kvm_vcpu *vcpu);
 | 
					 | 
				
			||||||
 	void (*apicv_post_state_restore)(struct kvm_vcpu *vcpu);
 | 
					 | 
				
			||||||
 	bool (*dy_apicv_has_pending_interrupt)(struct kvm_vcpu *vcpu);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
 | 
					 | 
				
			||||||
index e74e223f46aa3..a3d488608b85d 100644
 | 
					 | 
				
			||||||
--- a/arch/x86/kvm/lapic.c
 | 
					 | 
				
			||||||
+++ b/arch/x86/kvm/lapic.c
 | 
					 | 
				
			||||||
@@ -2649,6 +2649,8 @@ void kvm_lapic_reset(struct kvm_vcpu *vcpu, bool init_event)
 | 
					 | 
				
			||||||
 	u64 msr_val;
 | 
					 | 
				
			||||||
 	int i;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+	static_call_cond(kvm_x86_apicv_pre_state_restore)(vcpu);
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 	if (!init_event) {
 | 
					 | 
				
			||||||
 		msr_val = APIC_DEFAULT_PHYS_BASE | MSR_IA32_APICBASE_ENABLE;
 | 
					 | 
				
			||||||
 		if (kvm_vcpu_is_reset_bsp(vcpu))
 | 
					 | 
				
			||||||
@@ -2960,6 +2962,8 @@ int kvm_apic_set_state(struct kvm_vcpu *vcpu, struct kvm_lapic_state *s)
 | 
					 | 
				
			||||||
 	struct kvm_lapic *apic = vcpu->arch.apic;
 | 
					 | 
				
			||||||
 	int r;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+	static_call_cond(kvm_x86_apicv_pre_state_restore)(vcpu);
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 	kvm_lapic_set_base(vcpu, vcpu->arch.apic_base);
 | 
					 | 
				
			||||||
 	/* set SPIV separately to get count of SW disabled APICs right */
 | 
					 | 
				
			||||||
 	apic_set_spiv(apic, *((u32 *)(s->regs + APIC_SPIV)));
 | 
					 | 
				
			||||||
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
 | 
					 | 
				
			||||||
index bc6f0fea48b43..52af279f793db 100644
 | 
					 | 
				
			||||||
--- a/arch/x86/kvm/vmx/vmx.c
 | 
					 | 
				
			||||||
+++ b/arch/x86/kvm/vmx/vmx.c
 | 
					 | 
				
			||||||
@@ -6909,7 +6909,7 @@ static void vmx_load_eoi_exitmap(struct kvm_vcpu *vcpu, u64 *eoi_exit_bitmap)
 | 
					 | 
				
			||||||
 	vmcs_write64(EOI_EXIT_BITMAP3, eoi_exit_bitmap[3]);
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-static void vmx_apicv_post_state_restore(struct kvm_vcpu *vcpu)
 | 
					 | 
				
			||||||
+static void vmx_apicv_pre_state_restore(struct kvm_vcpu *vcpu)
 | 
					 | 
				
			||||||
 {
 | 
					 | 
				
			||||||
 	struct vcpu_vmx *vmx = to_vmx(vcpu);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
@@ -8275,7 +8275,7 @@ static struct kvm_x86_ops vmx_x86_ops __initdata = {
 | 
					 | 
				
			||||||
 	.set_apic_access_page_addr = vmx_set_apic_access_page_addr,
 | 
					 | 
				
			||||||
 	.refresh_apicv_exec_ctrl = vmx_refresh_apicv_exec_ctrl,
 | 
					 | 
				
			||||||
 	.load_eoi_exitmap = vmx_load_eoi_exitmap,
 | 
					 | 
				
			||||||
-	.apicv_post_state_restore = vmx_apicv_post_state_restore,
 | 
					 | 
				
			||||||
+	.apicv_pre_state_restore = vmx_apicv_pre_state_restore,
 | 
					 | 
				
			||||||
 	.required_apicv_inhibits = VMX_REQUIRED_APICV_INHIBITS,
 | 
					 | 
				
			||||||
 	.hwapic_irr_update = vmx_hwapic_irr_update,
 | 
					 | 
				
			||||||
 	.hwapic_isr_update = vmx_hwapic_isr_update,
 | 
					 | 
				
			||||||
@ -1 +1 @@
 | 
				
			|||||||
Subproject commit 9f8b45f5f8dbd6093b7ff71750bc6eb762fc8b20
 | 
					Subproject commit 50a8a45214a205eaa6d19370b1409ee1a7f82774
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user