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(-) | ||||
| 
 | ||||
| diff --git a/init/Makefile b/init/Makefile
 | ||||
| index ec557ada3c12..72095034f338 100644
 | ||||
| index cbac576c57d6..479b1253fcbe 100644
 | ||||
| --- a/init/Makefile
 | ||||
| +++ b/init/Makefile
 | ||||
| @@ -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(+) | ||||
| 
 | ||||
| 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
 | ||||
| +++ b/Documentation/admin-guide/kernel-parameters.txt
 | ||||
| @@ -4281,6 +4281,15 @@
 | ||||
| @@ -4285,6 +4285,15 @@
 | ||||
|  				Also, it enforces the PCI Local Bus spec | ||||
|  				rule that those bits should be 0 in system reset | ||||
|  				events (useful for kexec/kdump cases). | ||||
| @ -75,7 +75,7 @@ index 9f2bcb8b7f96..a60a4220be95 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 139df46ed306..08450329f1a3 100644
 | ||||
| index b3a55f2cab46..baef591d10f6 100644
 | ||||
| --- a/drivers/pci/quirks.c
 | ||||
| +++ b/drivers/pci/quirks.c
 | ||||
| @@ -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(-) | ||||
| 
 | ||||
| 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
 | ||||
| +++ 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 + | ||||
|  			       READ_ONCE(netdev_unregister_timeout_secs) * HZ)) { | ||||
|  			list_for_each_entry(dev, list, todo_list) { | ||||
|  | ||||
| @ -108,10 +108,10 @@ index b1658c0de847..12a02851ff57 100644 | ||||
|   | ||||
|  int cpuid_query_maxphyaddr(struct kvm_vcpu *vcpu); | ||||
| 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
 | ||||
| +++ 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)) | ||||
|  		return 0; | ||||
|   | ||||
|  | ||||
| @ -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 656b2150643e..06fefd2a4bfa 100644
 | ||||
| index 15e2649b25ef..752f77e285f2 100644
 | ||||
| --- a/drivers/iommu/intel/iommu.c
 | ||||
| +++ b/drivers/iommu/intel/iommu.c
 | ||||
| @@ -298,6 +298,7 @@ static int dmar_map_gfx = 1;
 | ||||
| @ -32,7 +32,7 @@ index 656b2150643e..06fefd2a4bfa 100644 | ||||
|  		} else { | ||||
|  			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; | ||||
|   | ||||
|  	pdev = to_pci_dev(dev); | ||||
|  | ||||
| @ -24,10 +24,10 @@ 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 c8466bc64b87..6154eda73d41 100644
 | ||||
| index 99832814341c..e8bb2bfd1ba1 100644
 | ||||
| --- a/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) { | ||||
|  		kvm_cpu_cap_set(X86_FEATURE_SVM); | ||||
|  		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> | ||||
| Date: Fri, 8 Dec 2023 12:09:38 -0500 | ||||
| Subject: Revert "scsi: aacraid: Reply queue mapping to CPUs based on IRQ | ||||
|  affinity" | ||||
| Subject: [PATCH] Revert "scsi: aacraid: Reply queue mapping to CPUs based on | ||||
|  IRQ affinity" | ||||
| 
 | ||||
| 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(-) | ||||
| 
 | ||||
| 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
 | ||||
| +++ b/drivers/scsi/aacraid/aacraid.h
 | ||||
| @@ -1678,7 +1678,6 @@ struct aac_dev
 | ||||
| @ -33,7 +33,7 @@ index 73b6ac0c01f54..7d5a155073c62 100644 | ||||
|   | ||||
|  #define aac_adapter_interrupt(dev) \ | ||||
| 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
 | ||||
| +++ b/drivers/scsi/aacraid/commsup.c
 | ||||
| @@ -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 | ||||
|  	 *	each I/O | ||||
| 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
 | ||||
| +++ b/drivers/scsi/aacraid/linit.c
 | ||||
| @@ -19,7 +19,6 @@
 | ||||
| @ -62,7 +62,7 @@ index c4a36c0be527c..68f4dbcfff492 100644 | ||||
|  #include <linux/completion.h> | ||||
|  #include <linux/init.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; | ||||
|  } | ||||
|   | ||||
| @ -104,7 +104,7 @@ index c4a36c0be527c..68f4dbcfff492 100644 | ||||
|   | ||||
|  	__aac_shutdown(aac); | ||||
| 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
 | ||||
| +++ b/drivers/scsi/aacraid/src.c
 | ||||
| @@ -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 (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> | ||||
| 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 | ||||
| Message-Id: <ee033f6dfa0a7f2934437008a909c3788233950f.1702455010.git.ojaswin@linux.ibm.com> | ||||
| 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> | ||||
| Subject: [PATCH] ext4: fallback to complex scan if aligned scan doesn't work | ||||
| 
 | ||||
| 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. | ||||
| @ -29,10 +23,10 @@ Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com> | ||||
|  1 file changed, 13 insertions(+), 8 deletions(-) | ||||
| 
 | ||||
| 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
 | ||||
| +++ 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++; | ||||
|  			if (cr == CR_POWER2_ALIGNED) | ||||
|  				ext4_mb_simple_scan_group(ac, &e4b); | ||||
| @ -60,7 +54,3 @@ index d72b5e3c92ec..63f12ec02485 100644 | ||||
|   | ||||
|  			ext4_unlock_group(sb, group); | ||||
|  			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
	 Thomas Lamprecht
						Thomas Lamprecht