| From 7cecb47f55e00282f972a1e0b09136c8cd938221 Mon Sep 17 00:00:00 2001 |
| From: Ben Hutchings <ben@decadent.org.uk> |
| Date: Sun, 27 Sep 2020 22:50:42 +0100 |
| Subject: ACPI / extlog: Check for RDMSR failure |
| |
| From: Ben Hutchings <ben@decadent.org.uk> |
| |
| commit 7cecb47f55e00282f972a1e0b09136c8cd938221 upstream. |
| |
| extlog_init() uses rdmsrl() to read an MSR, which on older CPUs |
| provokes a error message at boot: |
| |
| unchecked MSR access error: RDMSR from 0x179 at rIP: 0xcd047307 (native_read_msr+0x7/0x40) |
| |
| Use rdmsrl_safe() instead, and return -ENODEV if it fails. |
| |
| Reported-by: jim@photojim.ca |
| References: https://bugs.debian.org/971058 |
| Cc: All applicable <stable@vger.kernel.org> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/acpi/acpi_extlog.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/acpi/acpi_extlog.c |
| +++ b/drivers/acpi/acpi_extlog.c |
| @@ -222,9 +222,9 @@ static int __init extlog_init(void) |
| u64 cap; |
| int rc; |
| |
| - rdmsrl(MSR_IA32_MCG_CAP, cap); |
| - |
| - if (!(cap & MCG_ELOG_P) || !extlog_get_l1addr()) |
| + if (rdmsrl_safe(MSR_IA32_MCG_CAP, &cap) || |
| + !(cap & MCG_ELOG_P) || |
| + !extlog_get_l1addr()) |
| return -ENODEV; |
| |
| rc = -EINVAL; |