* soft lockup on Ampere Altra on v6.1.30
@ 2023-06-06 14:47 Jeremi Piotrowski
2023-06-06 17:40 ` Greg KH
0 siblings, 1 reply; 7+ messages in thread
From: Jeremi Piotrowski @ 2023-06-06 14:47 UTC (permalink / raw)
To: linux-kernel; +Cc: dpark, t-lo, stable
We're currently trying to update the kernel in our distro (Flatcar) from
v5.15.x to v6.1.x. When testing on Equinix Metal Ampere instances
(c3.large.arm64) we now get a soft lockup about a minute after boot.
Has anyone else seen this? The splat looks like this, full dmesg is at [1]
(trying without the attachement this time as LKML detects my mail as spam :/)
[ 84.297829] watchdog: BUG: soft lockup - CPU#45 stuck for 26s! [kworker/45:1:474]
[ 84.297834] Modules linked in: veth xt_conntrack nft_chain_nat xt_MASQUERADE nf_nat nf_conntrack_netlink nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 xfrm_user xfrm_algo xt_addrtype nft_compat nf_tables nfnetlink bonding mlx5_ib ipmi_ssif ipmi_devintf ib_core ipmi_msghandler evdev sch_fq_codel fuse configfs dmi_sysfs nls_ascii nls_cp437 vfat fat ext4 crc16 mbcache jbd2 dm_verity dm_bufio nvme nvme_core xhci_pci t10_pi xhci_hcd crc64_rocksoft_generic crc64_rocksoft igb crc_t10dif i2c_algo_bit crct10dif_generic mlx5_core usbcore i2c_core crc64 crct10dif_common usb_common hwmon pci_hyperv_intf btrfs blake2b_generic xor xor_neon lzo_compress zlib_deflate raid6_pq zstd_compress libcrc32c crc32c_generic dm_mirror dm_region_hash dm_log qla4xxx iscsi_boot_sysfs iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi dm_multipath dm_mod scsi_mod scsi_common br_netfilter bridge stp llc overlay
[ 84.435381] CPU: 45 PID: 474 Comm: kworker/45:1 Not tainted 6.1.30-flatcar #1
[ 84.447678] Hardware name: GIGABYTE R272-P30-JG/MP32-AR0-JG, BIOS F17a (SCP: 1.07.20210713) 07/22/2021
[ 84.467226] Workqueue: rcu_par_gp sync_rcu_exp_select_node_cpus
[ 84.478239] pstate: 80400009 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 84.490336] pc : smp_call_function_single+0xe4/0x1d0
[ 84.500287] lr : __sync_rcu_exp_select_node_cpus+0x278/0x480
[ 84.510869] sp : ffff80000b99bcc0
[ 84.518979] x29: ffff80000b99bcc0 x28: 0000000000000200 x27: ffffab5be3134080
[ 84.530897] x26: ffffab5be302d6a8 x25: ffff07ff89f01f40 x24: ffff083e5fba8540
[ 84.542751] x23: ffffab5be2e43ab0 x22: 0000000000000a00 x21: ffffab5be2e47540
[ 84.554510] x20: 000000000000f5ff x19: ffff80000b99bce0 x18: ffff80002be3bc58
[ 84.566213] x17: 0000000000000000 x16: ffffab5be06cdfc0 x15: 0000000000000001
[ 84.577841] x14: 0000000000000000 x13: 0000000000000010 x12: ffffab5be2e43ab0
[ 84.589361] x11: 0000000000000001 x10: 0000000000000040 x9 : ffffab5be312c270
[ 84.600832] x8 : ffffab5be2e34008 x7 : 0000000000028fb0 x6 : ffffab5bdfd0ef20
[ 84.612285] x5 : 0000000000000000 x4 : ffff083e5fc1c748 x3 : 0000000000000001
[ 84.623812] x2 : 0000000000000000 x1 : ffff083e5fc1c740 x0 : 0000000000000029
[ 84.635277] Call trace:
[ 84.641994] smp_call_function_single+0xe4/0x1d0
[ 84.650957] __sync_rcu_exp_select_node_cpus+0x278/0x480
[ 84.660664] sync_rcu_exp_select_node_cpus+0x14/0x20
[ 84.669988] process_one_work+0x214/0x490
[ 84.678313] worker_thread+0x6c/0x430
[ 84.686206] kthread+0x108/0x10c
[ 84.693668] ret_from_fork+0x10/0x20
[ 84.701417] Kernel panic - not syncing: softlockup: hung tasks
[ 84.711437] CPU: 45 PID: 474 Comm: kworker/45:1 Tainted: G L 6.1.30-flatcar #1
[ 84.724261] Hardware name: GIGABYTE R272-P30-JG/MP32-AR0-JG, BIOS F17a (SCP: 1.07.20210713) 07/22/2021
[ 84.741870] Workqueue: rcu_par_gp sync_rcu_exp_select_node_cpus
[ 84.751900] Call trace:
[ 84.758325] dump_backtrace+0xe0/0x140
[ 84.765958] show_stack+0x18/0x30
[ 84.773057] dump_stack_lvl+0x64/0x80
[ 84.780384] dump_stack+0x18/0x34
[ 84.787220] panic+0x180/0x358
[ 84.793698] watchdog_nmi_enable+0x0/0x10
[ 84.801040] __hrtimer_run_queues+0x17c/0x340
[ 84.808624] hrtimer_interrupt+0xe8/0x244
[ 84.815807] arch_timer_handler_phys+0x2c/0x44
[ 84.823388] handle_percpu_devid_irq+0x88/0x230
[ 84.830995] generic_handle_domain_irq+0x2c/0x44
[ 84.838682] gic_handle_irq+0x50/0x140
[ 84.845468] call_on_irq_stack+0x24/0x4c
[ 84.852402] do_interrupt_handler+0x80/0x84
[ 84.859569] el1_interrupt+0x34/0x6c
[ 84.866100] el1h_64_irq_handler+0x18/0x2c
[ 84.873134] el1h_64_irq+0x64/0x68
[ 84.879415] smp_call_function_single+0xe4/0x1d0
[ 84.886933] __sync_rcu_exp_select_node_cpus+0x278/0x480
[ 84.895205] sync_rcu_exp_select_node_cpus+0x14/0x20
[ 84.903118] process_one_work+0x214/0x490
[ 84.910040] worker_thread+0x6c/0x430
[ 84.916645] kthread+0x108/0x10c
[ 84.922733] ret_from_fork+0x10/0x20
Thanks,
Jeremi
[1]: https://gist.githubusercontent.com/dongsupark/3ab5fc464a995623a14542edd9b193ac/raw/db7c0216dcb260603a4ec0052015f86d82d4de30/kernel-6.1-softlockup-EM-arm64.txt
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: soft lockup on Ampere Altra on v6.1.30
2023-06-06 14:47 soft lockup on Ampere Altra on v6.1.30 Jeremi Piotrowski
@ 2023-06-06 17:40 ` Greg KH
2023-06-07 12:26 ` [PATCH 6.1] arm64: efi: Use SMBIOS processor version to key off Ampere quirk Ard Biesheuvel
0 siblings, 1 reply; 7+ messages in thread
From: Greg KH @ 2023-06-06 17:40 UTC (permalink / raw)
To: Jeremi Piotrowski; +Cc: linux-kernel, dpark, t-lo, stable
On Tue, Jun 06, 2023 at 07:47:52AM -0700, Jeremi Piotrowski wrote:
> We're currently trying to update the kernel in our distro (Flatcar) from
> v5.15.x to v6.1.x. When testing on Equinix Metal Ampere instances
> (c3.large.arm64) we now get a soft lockup about a minute after boot.
>
> Has anyone else seen this? The splat looks like this, full dmesg is at [1]
> (trying without the attachement this time as LKML detects my mail as spam :/)
You might have better luck asking on the ARM lists, the stable@ list is
for patches to add or other fixes, not generic failures like this one.
Also, why not take a working 6.1.x kernel for this platform (which I
know they are out there) and comparing it to yours?
Good luck!
greg k-h
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 6.1] arm64: efi: Use SMBIOS processor version to key off Ampere quirk
2023-06-06 17:40 ` Greg KH
@ 2023-06-07 12:26 ` Ard Biesheuvel
2023-06-07 12:50 ` Jeremi Piotrowski
2023-06-07 18:36 ` Greg KH
0 siblings, 2 replies; 7+ messages in thread
From: Ard Biesheuvel @ 2023-06-07 12:26 UTC (permalink / raw)
To: stable; +Cc: dpark, t-lo, Sasha Levin, Ard Biesheuvel, gregkh
[ Upstream commit eb684408f3ea4856639675d6465f0024e498e4b1 ]
Instead of using the SMBIOS type 1 record 'family' field, which is often
modified by OEMs, use the type 4 'processor ID' and 'processor version'
fields, which are set to a small set of probe-able values on all known
Ampere EFI systems in the field.
Fixes: 550b33cfd4452968 ("arm64: efi: Force the use of ...")
Tested-by: Andrea Righi <andrea.righi@canonical.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Jeremi Piotrowski <jpiotrowski@linux.microsoft.com>
---
drivers/firmware/efi/libstub/arm64-stub.c | 39 ++++++++++++++++-----
drivers/firmware/efi/libstub/efistub.h | 41 +++++++++++++++++++++--
drivers/firmware/efi/libstub/smbios.c | 13 +++++--
3 files changed, 80 insertions(+), 13 deletions(-)
diff --git a/drivers/firmware/efi/libstub/arm64-stub.c b/drivers/firmware/efi/libstub/arm64-stub.c
index 42282c5c3fe6..e2f90566b291 100644
--- a/drivers/firmware/efi/libstub/arm64-stub.c
+++ b/drivers/firmware/efi/libstub/arm64-stub.c
@@ -17,20 +17,43 @@
static bool system_needs_vamap(void)
{
- const u8 *type1_family = efi_get_smbios_string(1, family);
+ const struct efi_smbios_type4_record *record;
+ const u32 __aligned(1) *socid;
+ const u8 *version;
/*
* Ampere eMAG, Altra, and Altra Max machines crash in SetTime() if
- * SetVirtualAddressMap() has not been called prior.
+ * SetVirtualAddressMap() has not been called prior. Most Altra systems
+ * can be identified by the SMCCC soc ID, which is conveniently exposed
+ * via the type 4 SMBIOS records. Otherwise, test the processor version
+ * field. eMAG systems all appear to have the processor version field
+ * set to "eMAG".
*/
- if (!type1_family || (
- strcmp(type1_family, "eMAG") &&
- strcmp(type1_family, "Altra") &&
- strcmp(type1_family, "Altra Max")))
+ record = (struct efi_smbios_type4_record *)efi_get_smbios_record(4);
+ if (!record)
return false;
- efi_warn("Working around broken SetVirtualAddressMap()\n");
- return true;
+ socid = (u32 *)record->processor_id;
+ switch (*socid & 0xffff000f) {
+ static char const altra[] = "Ampere(TM) Altra(TM) Processor";
+ static char const emag[] = "eMAG";
+
+ default:
+ version = efi_get_smbios_string(&record->header, 4,
+ processor_version);
+ if (!version || (strncmp(version, altra, sizeof(altra) - 1) &&
+ strncmp(version, emag, sizeof(emag) - 1)))
+ break;
+
+ fallthrough;
+
+ case 0x0a160001: // Altra
+ case 0x0a160002: // Altra Max
+ efi_warn("Working around broken SetVirtualAddressMap()\n");
+ return true;
+ }
+
+ return false;
}
efi_status_t check_platform_features(void)
diff --git a/drivers/firmware/efi/libstub/efistub.h b/drivers/firmware/efi/libstub/efistub.h
index 900df67a2078..970e86e3aab0 100644
--- a/drivers/firmware/efi/libstub/efistub.h
+++ b/drivers/firmware/efi/libstub/efistub.h
@@ -983,6 +983,8 @@ struct efi_smbios_record {
u16 handle;
};
+const struct efi_smbios_record *efi_get_smbios_record(u8 type);
+
struct efi_smbios_type1_record {
struct efi_smbios_record header;
@@ -996,13 +998,46 @@ struct efi_smbios_type1_record {
u8 family;
};
-#define efi_get_smbios_string(__type, __name) ({ \
+struct efi_smbios_type4_record {
+ struct efi_smbios_record header;
+
+ u8 socket;
+ u8 processor_type;
+ u8 processor_family;
+ u8 processor_manufacturer;
+ u8 processor_id[8];
+ u8 processor_version;
+ u8 voltage;
+ u16 external_clock;
+ u16 max_speed;
+ u16 current_speed;
+ u8 status;
+ u8 processor_upgrade;
+ u16 l1_cache_handle;
+ u16 l2_cache_handle;
+ u16 l3_cache_handle;
+ u8 serial_number;
+ u8 asset_tag;
+ u8 part_number;
+ u8 core_count;
+ u8 enabled_core_count;
+ u8 thread_count;
+ u16 processor_characteristics;
+ u16 processor_family2;
+ u16 core_count2;
+ u16 enabled_core_count2;
+ u16 thread_count2;
+ u16 thread_enabled;
+};
+
+#define efi_get_smbios_string(__record, __type, __name) ({ \
int size = sizeof(struct efi_smbios_type ## __type ## _record); \
int off = offsetof(struct efi_smbios_type ## __type ## _record, \
__name); \
- __efi_get_smbios_string(__type, off, size); \
+ __efi_get_smbios_string((__record), __type, off, size); \
})
-const u8 *__efi_get_smbios_string(u8 type, int offset, int recsize);
+const u8 *__efi_get_smbios_string(const struct efi_smbios_record *record,
+ u8 type, int offset, int recsize);
#endif
diff --git a/drivers/firmware/efi/libstub/smbios.c b/drivers/firmware/efi/libstub/smbios.c
index aadb422b9637..f9c159c28f46 100644
--- a/drivers/firmware/efi/libstub/smbios.c
+++ b/drivers/firmware/efi/libstub/smbios.c
@@ -22,19 +22,28 @@ struct efi_smbios_protocol {
u8 minor_version;
};
-const u8 *__efi_get_smbios_string(u8 type, int offset, int recsize)
+const struct efi_smbios_record *efi_get_smbios_record(u8 type)
{
struct efi_smbios_record *record;
efi_smbios_protocol_t *smbios;
efi_status_t status;
u16 handle = 0xfffe;
- const u8 *strtable;
status = efi_bs_call(locate_protocol, &EFI_SMBIOS_PROTOCOL_GUID, NULL,
(void **)&smbios) ?:
efi_call_proto(smbios, get_next, &handle, &type, &record, NULL);
if (status != EFI_SUCCESS)
return NULL;
+ return record;
+}
+
+const u8 *__efi_get_smbios_string(const struct efi_smbios_record *record,
+ u8 type, int offset, int recsize)
+{
+ const u8 *strtable;
+
+ if (!record)
+ return NULL;
strtable = (u8 *)record + record->length;
for (int i = 1; i < ((u8 *)record)[offset]; i++) {
--
2.30.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 6.1] arm64: efi: Use SMBIOS processor version to key off Ampere quirk
2023-06-07 12:26 ` [PATCH 6.1] arm64: efi: Use SMBIOS processor version to key off Ampere quirk Ard Biesheuvel
@ 2023-06-07 12:50 ` Jeremi Piotrowski
2023-06-07 18:36 ` Greg KH
1 sibling, 0 replies; 7+ messages in thread
From: Jeremi Piotrowski @ 2023-06-07 12:50 UTC (permalink / raw)
To: Ard Biesheuvel; +Cc: stable, dpark, t-lo, Sasha Levin, gregkh
On Wed, Jun 07, 2023 at 05:26:12AM -0700, Ard Biesheuvel wrote:
> [ Upstream commit eb684408f3ea4856639675d6465f0024e498e4b1 ]
>
> Instead of using the SMBIOS type 1 record 'family' field, which is often
> modified by OEMs, use the type 4 'processor ID' and 'processor version'
> fields, which are set to a small set of probe-able values on all known
> Ampere EFI systems in the field.
>
> Fixes: 550b33cfd4452968 ("arm64: efi: Force the use of ...")
> Tested-by: Andrea Righi <andrea.righi@canonical.com>
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> Signed-off-by: Sasha Levin <sashal@kernel.org>
> Signed-off-by: Jeremi Piotrowski <jpiotrowski@linux.microsoft.com>
> ---
> drivers/firmware/efi/libstub/arm64-stub.c | 39 ++++++++++++++++-----
> drivers/firmware/efi/libstub/efistub.h | 41 +++++++++++++++++++++--
> drivers/firmware/efi/libstub/smbios.c | 13 +++++--
> 3 files changed, 80 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/firmware/efi/libstub/arm64-stub.c b/drivers/firmware/efi/libstub/arm64-stub.c
> index 42282c5c3fe6..e2f90566b291 100644
> --- a/drivers/firmware/efi/libstub/arm64-stub.c
> +++ b/drivers/firmware/efi/libstub/arm64-stub.c
Sorry Ard, didn't meant to spoof your sender address.
Greg: commit 550b33cfd4452968 is in v6.1 but the fix for it (upstream
eb684408f3ea4856639675d6465f0024e498e4b1) was not marked for stable. Hence this
patch. It also needed a slight tweak because the file has been split since v6.1
(drivers/firmware/efi/libstub/arm64-stub.c => arm64.c).
My Ampere system returns "Server" to 'dmidecode -s system-family', so it hits
this.
Thanks,
Jeremi
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 6.1] arm64: efi: Use SMBIOS processor version to key off Ampere quirk
2023-06-07 12:26 ` [PATCH 6.1] arm64: efi: Use SMBIOS processor version to key off Ampere quirk Ard Biesheuvel
2023-06-07 12:50 ` Jeremi Piotrowski
@ 2023-06-07 18:36 ` Greg KH
2023-06-08 7:36 ` Jeremi Piotrowski
1 sibling, 1 reply; 7+ messages in thread
From: Greg KH @ 2023-06-07 18:36 UTC (permalink / raw)
To: jpiotrowski, Ard Biesheuvel; +Cc: stable, dpark, t-lo, Sasha Levin
On Wed, Jun 07, 2023 at 05:26:12AM -0700, Ard Biesheuvel wrote:
> [ Upstream commit eb684408f3ea4856639675d6465f0024e498e4b1 ]
>
> Instead of using the SMBIOS type 1 record 'family' field, which is often
> modified by OEMs, use the type 4 'processor ID' and 'processor version'
> fields, which are set to a small set of probe-able values on all known
> Ampere EFI systems in the field.
>
> Fixes: 550b33cfd4452968 ("arm64: efi: Force the use of ...")
> Tested-by: Andrea Righi <andrea.righi@canonical.com>
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> Signed-off-by: Sasha Levin <sashal@kernel.org>
Where did Sasha sign off on this?
> Signed-off-by: Jeremi Piotrowski <jpiotrowski@linux.microsoft.com>
> ---
> drivers/firmware/efi/libstub/arm64-stub.c | 39 ++++++++++++++++-----
> drivers/firmware/efi/libstub/efistub.h | 41 +++++++++++++++++++++--
> drivers/firmware/efi/libstub/smbios.c | 13 +++++--
> 3 files changed, 80 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/firmware/efi/libstub/arm64-stub.c b/drivers/firmware/efi/libstub/arm64-stub.c
> index 42282c5c3fe6..e2f90566b291 100644
> --- a/drivers/firmware/efi/libstub/arm64-stub.c
> +++ b/drivers/firmware/efi/libstub/arm64-stub.c
> @@ -17,20 +17,43 @@
>
> static bool system_needs_vamap(void)
> {
> - const u8 *type1_family = efi_get_smbios_string(1, family);
> + const struct efi_smbios_type4_record *record;
> + const u32 __aligned(1) *socid;
> + const u8 *version;
>
> /*
> * Ampere eMAG, Altra, and Altra Max machines crash in SetTime() if
> - * SetVirtualAddressMap() has not been called prior.
> + * SetVirtualAddressMap() has not been called prior. Most Altra systems
> + * can be identified by the SMCCC soc ID, which is conveniently exposed
> + * via the type 4 SMBIOS records. Otherwise, test the processor version
> + * field. eMAG systems all appear to have the processor version field
> + * set to "eMAG".
> */
> - if (!type1_family || (
> - strcmp(type1_family, "eMAG") &&
> - strcmp(type1_family, "Altra") &&
> - strcmp(type1_family, "Altra Max")))
> + record = (struct efi_smbios_type4_record *)efi_get_smbios_record(4);
> + if (!record)
> return false;
>
> - efi_warn("Working around broken SetVirtualAddressMap()\n");
> - return true;
> + socid = (u32 *)record->processor_id;
> + switch (*socid & 0xffff000f) {
> + static char const altra[] = "Ampere(TM) Altra(TM) Processor";
> + static char const emag[] = "eMAG";
> +
> + default:
> + version = efi_get_smbios_string(&record->header, 4,
> + processor_version);
> + if (!version || (strncmp(version, altra, sizeof(altra) - 1) &&
> + strncmp(version, emag, sizeof(emag) - 1)))
> + break;
> +
> + fallthrough;
> +
> + case 0x0a160001: // Altra
> + case 0x0a160002: // Altra Max
> + efi_warn("Working around broken SetVirtualAddressMap()\n");
> + return true;
> + }
> +
> + return false;
> }
>
> efi_status_t check_platform_features(void)
> diff --git a/drivers/firmware/efi/libstub/efistub.h b/drivers/firmware/efi/libstub/efistub.h
> index 900df67a2078..970e86e3aab0 100644
> --- a/drivers/firmware/efi/libstub/efistub.h
> +++ b/drivers/firmware/efi/libstub/efistub.h
> @@ -983,6 +983,8 @@ struct efi_smbios_record {
> u16 handle;
> };
>
> +const struct efi_smbios_record *efi_get_smbios_record(u8 type);
> +
> struct efi_smbios_type1_record {
> struct efi_smbios_record header;
>
> @@ -996,13 +998,46 @@ struct efi_smbios_type1_record {
> u8 family;
> };
>
> -#define efi_get_smbios_string(__type, __name) ({ \
> +struct efi_smbios_type4_record {
> + struct efi_smbios_record header;
> +
> + u8 socket;
> + u8 processor_type;
> + u8 processor_family;
> + u8 processor_manufacturer;
> + u8 processor_id[8];
> + u8 processor_version;
> + u8 voltage;
> + u16 external_clock;
> + u16 max_speed;
> + u16 current_speed;
> + u8 status;
> + u8 processor_upgrade;
> + u16 l1_cache_handle;
> + u16 l2_cache_handle;
> + u16 l3_cache_handle;
> + u8 serial_number;
> + u8 asset_tag;
> + u8 part_number;
> + u8 core_count;
> + u8 enabled_core_count;
> + u8 thread_count;
> + u16 processor_characteristics;
> + u16 processor_family2;
> + u16 core_count2;
> + u16 enabled_core_count2;
> + u16 thread_count2;
> + u16 thread_enabled;
> +};
> +
> +#define efi_get_smbios_string(__record, __type, __name) ({ \
> int size = sizeof(struct efi_smbios_type ## __type ## _record); \
> int off = offsetof(struct efi_smbios_type ## __type ## _record, \
> __name); \
> - __efi_get_smbios_string(__type, off, size); \
> + __efi_get_smbios_string((__record), __type, off, size); \
> })
>
> -const u8 *__efi_get_smbios_string(u8 type, int offset, int recsize);
> +const u8 *__efi_get_smbios_string(const struct efi_smbios_record *record,
> + u8 type, int offset, int recsize);
>
> #endif
> diff --git a/drivers/firmware/efi/libstub/smbios.c b/drivers/firmware/efi/libstub/smbios.c
> index aadb422b9637..f9c159c28f46 100644
> --- a/drivers/firmware/efi/libstub/smbios.c
> +++ b/drivers/firmware/efi/libstub/smbios.c
> @@ -22,19 +22,28 @@ struct efi_smbios_protocol {
> u8 minor_version;
> };
>
> -const u8 *__efi_get_smbios_string(u8 type, int offset, int recsize)
> +const struct efi_smbios_record *efi_get_smbios_record(u8 type)
> {
> struct efi_smbios_record *record;
> efi_smbios_protocol_t *smbios;
> efi_status_t status;
> u16 handle = 0xfffe;
> - const u8 *strtable;
>
> status = efi_bs_call(locate_protocol, &EFI_SMBIOS_PROTOCOL_GUID, NULL,
> (void **)&smbios) ?:
> efi_call_proto(smbios, get_next, &handle, &type, &record, NULL);
> if (status != EFI_SUCCESS)
> return NULL;
> + return record;
> +}
> +
> +const u8 *__efi_get_smbios_string(const struct efi_smbios_record *record,
> + u8 type, int offset, int recsize)
> +{
> + const u8 *strtable;
> +
> + if (!record)
> + return NULL;
>
> strtable = (u8 *)record + record->length;
> for (int i = 1; i < ((u8 *)record)[offset]; i++) {
> --
> 2.30.2
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 6.1] arm64: efi: Use SMBIOS processor version to key off Ampere quirk
2023-06-07 18:36 ` Greg KH
@ 2023-06-08 7:36 ` Jeremi Piotrowski
2023-06-08 7:44 ` Greg KH
0 siblings, 1 reply; 7+ messages in thread
From: Jeremi Piotrowski @ 2023-06-08 7:36 UTC (permalink / raw)
To: Greg KH; +Cc: stable, dpark, t-lo, Sasha Levin, Ard Biesheuvel
On 6/7/2023 8:36 PM, Greg KH wrote:
> On Wed, Jun 07, 2023 at 05:26:12AM -0700, Ard Biesheuvel wrote:
>> [ Upstream commit eb684408f3ea4856639675d6465f0024e498e4b1 ]
>>
>> Instead of using the SMBIOS type 1 record 'family' field, which is often
>> modified by OEMs, use the type 4 'processor ID' and 'processor version'
>> fields, which are set to a small set of probe-able values on all known
>> Ampere EFI systems in the field.
>>
>> Fixes: 550b33cfd4452968 ("arm64: efi: Force the use of ...")
>> Tested-by: Andrea Righi <andrea.righi@canonical.com>
>> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
>> Signed-off-by: Sasha Levin <sashal@kernel.org>
>
> Where did Sasha sign off on this?
>
I must have picked the commit from the 6.2 backport:
https://lore.kernel.org/stable/20230328142621.544265000@linuxfoundation.org/#t
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.2.16&id=b824efafca6739f6c80d22d88a83e6545114ed8e
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 6.1] arm64: efi: Use SMBIOS processor version to key off Ampere quirk
2023-06-08 7:36 ` Jeremi Piotrowski
@ 2023-06-08 7:44 ` Greg KH
0 siblings, 0 replies; 7+ messages in thread
From: Greg KH @ 2023-06-08 7:44 UTC (permalink / raw)
To: Jeremi Piotrowski; +Cc: stable, dpark, t-lo, Sasha Levin, Ard Biesheuvel
On Thu, Jun 08, 2023 at 09:36:22AM +0200, Jeremi Piotrowski wrote:
> On 6/7/2023 8:36 PM, Greg KH wrote:
> > On Wed, Jun 07, 2023 at 05:26:12AM -0700, Ard Biesheuvel wrote:
> >> [ Upstream commit eb684408f3ea4856639675d6465f0024e498e4b1 ]
> >>
> >> Instead of using the SMBIOS type 1 record 'family' field, which is often
> >> modified by OEMs, use the type 4 'processor ID' and 'processor version'
> >> fields, which are set to a small set of probe-able values on all known
> >> Ampere EFI systems in the field.
> >>
> >> Fixes: 550b33cfd4452968 ("arm64: efi: Force the use of ...")
> >> Tested-by: Andrea Righi <andrea.righi@canonical.com>
> >> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> >> Signed-off-by: Sasha Levin <sashal@kernel.org>
> >
> > Where did Sasha sign off on this?
> >
>
> I must have picked the commit from the 6.2 backport:
>
> https://lore.kernel.org/stable/20230328142621.544265000@linuxfoundation.org/#t
> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.2.16&id=b824efafca6739f6c80d22d88a83e6545114ed8e
When doing so, please be explicit, otherwise it is very confusing.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-06-08 7:44 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-06 14:47 soft lockup on Ampere Altra on v6.1.30 Jeremi Piotrowski
2023-06-06 17:40 ` Greg KH
2023-06-07 12:26 ` [PATCH 6.1] arm64: efi: Use SMBIOS processor version to key off Ampere quirk Ard Biesheuvel
2023-06-07 12:50 ` Jeremi Piotrowski
2023-06-07 18:36 ` Greg KH
2023-06-08 7:36 ` Jeremi Piotrowski
2023-06-08 7:44 ` Greg KH
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.