1
linux/arch/x86/kernel
Yazen Ghannam c625dabbf1 x86/amd_nb: Check for invalid SMN reads
AMD Zen-based systems use a System Management Network (SMN) that
provides access to implementation-specific registers.

SMN accesses are done indirectly through an index/data pair in PCI
config space. The PCI config access may fail and return an error code.
This would prevent the "read" value from being updated.

However, the PCI config access may succeed, but the return value may be
invalid. This is in similar fashion to PCI bad reads, i.e. return all
bits set.

Most systems will return 0 for SMN addresses that are not accessible.
This is in line with AMD convention that unavailable registers are
Read-as-Zero/Writes-Ignored.

However, some systems will return a "PCI Error Response" instead. This
value, along with an error code of 0 from the PCI config access, will
confuse callers of the amd_smn_read() function.

Check for this condition, clear the return value, and set a proper error
code.

Fixes: ddfe43cdc0 ("x86/amd_nb: Add SMN and Indirect Data Fabric access for AMD Fam17h")
Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20230403164244.471141-1-yazen.ghannam@amd.com
2024-06-05 21:23:34 +02:00
..
acpi ACPI updates for 6.9-rc1 2024-03-13 11:54:05 -07:00
apic genirq/cpuhotplug, x86/vector: Prevent vector leak during CPU offline 2024-05-23 21:51:50 +02:00
cpu Miscellaneous topology parsing fixes: 2024-06-02 09:32:34 -07:00
fpu ARM: 2024-05-15 14:46:43 -07:00
kprobes Probes updates for v6.10: 2024-05-17 18:29:30 -07:00
.gitignore
alternative.c x86/alternatives: Use the correct length when optimizing NOPs 2024-05-17 09:27:06 +02:00
amd_gart_64.c change alloc_pages name in dma_map_ops to avoid name conflicts 2024-04-25 20:55:53 -07:00
amd_nb.c x86/amd_nb: Check for invalid SMN reads 2024-06-05 21:23:34 +02:00
aperture_64.c x86/pci: Use PCI_HEADER_TYPE_* instead of literals 2023-12-01 15:00:43 -06:00
apm_32.c x86/apm_32: Remove dead function apm_get_battery_status() 2024-02-21 19:38:03 +01:00
asm-offsets_32.c
asm-offsets_64.c
asm-offsets.c x86/bugs: Rename CONFIG_CALL_DEPTH_TRACKING => CONFIG_MITIGATION_CALL_DEPTH_TRACKING 2024-01-10 10:52:28 +01:00
audit_64.c
bootflag.c
callthunks.c x86/alternatives: Use a temporary buffer when optimizing NOPs 2024-04-09 18:08:11 +02:00
cet.c
cfi.c cfi: Flip headers 2023-12-15 16:25:55 -08:00
check.c
cpuid.c
crash_dump_32.c
crash_dump_64.c
crash.c crash: add a new kexec flag for hotplug support 2024-04-23 14:59:01 +10:00
devicetree.c x86/of: Change x86_dtb_parse_smp_config() to static 2024-04-03 08:49:56 +02:00
doublefault_32.c
dumpstack_32.c
dumpstack_64.c
dumpstack.c x86/dumpstack: Use uniform "Oops: " prefix for die() messages 2024-03-27 08:45:19 +01:00
e820.c x86/e820: Add a new e820 table update helper 2024-04-29 11:15:31 +02:00
early_printk.c
early-quirks.c x86/pci: Use PCI_HEADER_TYPE_* instead of literals 2023-12-01 15:00:43 -06:00
ebda.c
eisa.c x86/sev: Skip ROM range scans and validation for SEV-SNP guests 2024-03-26 15:22:35 +01:00
espfix_64.c x86/fred: No ESPFIX needed when FRED is enabled 2024-01-31 22:01:51 +01:00
fred.c x86/fred: Add FRED initialization functions 2024-01-31 22:03:32 +01:00
ftrace_32.S
ftrace_64.S
ftrace.c x86/ftrace: enable dynamic ftrace without CONFIG_MODULES 2024-05-14 00:31:44 -07:00
head32.c x86/microcode/32: Move early loading after paging enable 2023-10-18 22:15:01 +02:00
head64.c x86/boot/64: Move 5-level paging global variable assignments back 2024-03-24 05:00:36 +01:00
head_32.S x86/cleanups changes for v6.10: 2024-05-13 18:21:24 -07:00
head_64.S x86/cleanups changes for v6.10: 2024-05-13 18:21:24 -07:00
hpet.c x86/apic/msi: Use DOMAIN_BUS_GENERIC_MSI for HPET/IO-APIC domain search 2024-02-25 18:53:08 +01:00
hw_breakpoint.c
i8237.c
i8253.c
i8259.c x86/i8259: Skip probing when ACPI/MADT advertises PCAT compatibility 2023-10-27 20:36:49 +02:00
ibt_selftest.S
idt.c x86/irq: Install posted MSI notification handler 2024-04-30 00:54:42 +02:00
io_delay.c
ioport.c
irq_32.c
irq_64.c fix missing vmalloc.h includes 2024-04-25 20:55:49 -07:00
irq_work.c
irq.c x86/irq: Factor out common code for checking pending interrupts 2024-04-30 00:54:43 +02:00
irqflags.S
irqinit.c x86/fred: Invoke FRED initialization code to enable FRED 2024-01-31 22:03:36 +01:00
itmt.c arch/x86: Remove now superfluous sentinel elem from ctl_table arrays 2023-10-10 15:22:02 -07:00
jailhouse.c x86/jailhouse: Use new APIC registration function 2024-02-15 22:07:42 +01:00
jump_label.c
kdebugfs.c
kexec-bzimage64.c - Sumanth Korikkar has taught s390 to allocate hotplug-time page frames 2024-03-14 17:43:30 -07:00
kgdb.c
ksysfs.c
kvm.c Linux 6.9-rc3 2024-04-09 09:48:09 +02:00
kvmclock.c kvmclock: Unexport kvmclock clocksource 2024-02-07 17:05:21 +01:00
ldt.c x86/bugs: Rename CONFIG_PAGE_TABLE_ISOLATION => CONFIG_MITIGATION_PAGE_TABLE_ISOLATION 2024-01-10 10:52:28 +01:00
machine_kexec_32.c
machine_kexec_64.c x86/kexec: Fix bug with call depth tracking 2024-06-03 17:19:03 +02:00
Makefile Kbuild updates for v6.10 2024-05-18 12:39:20 -07:00
mmconf-fam10h_64.c
module.c arch: make execmem setup available regardless of CONFIG_MODULES 2024-05-14 00:31:44 -07:00
mpparse.c x86/mpparse: Register APIC address only once 2024-03-23 12:41:48 +01:00
msr.c
nmi_selftest.c
nmi.c x86/nmi: Upgrade NMI backtrace stall checks & messages 2024-03-26 10:07:59 +01:00
paravirt-spinlocks.c
paravirt.c x86/paravirt: Remove no longer needed paravirt patching code 2023-12-10 23:34:37 +01:00
pci-dma.c
pcspeaker.c
perf_regs.c
platform-quirks.c
pmem.c
probe_roms.c x86/sev: Skip ROM range scans and validation for SEV-SNP guests 2024-03-26 15:22:35 +01:00
process_32.c x86/fpu: Clean up FPU switching in the middle of task switching 2023-10-20 11:24:22 +02:00
process_64.c x86/cpu: Fix check for RDPKRU in __show_regs() 2024-04-24 14:30:21 +02:00
process.c Core x86 changes for v6.9: 2024-03-11 19:53:15 -07:00
process.h
ptrace.c
pvclock.c
quirks.c
reboot_fixups_32.c
reboot.c x86, crash: wrap crash dumping code into crash related ifdefs 2024-02-23 17:48:23 -08:00
relocate_kernel_32.S
relocate_kernel_64.S
resource.c
rethook.c
rtc.c x86/rtc: Remove unused intel-mid.h 2024-04-03 08:24:48 -07:00
setup_percpu.c x86/asm: Add DB flag to 32-bit percpu GDT entry 2023-12-20 10:57:51 +01:00
setup.c The usual shower of singleton fixes and minor series all over MM, 2024-05-19 09:21:03 -07:00
sev_verify_cbit.S x86/boot: Use 32-bit XOR to clear registers 2024-03-01 12:47:37 +01:00
sev-shared.c x86/sev: Check for MWAITX and MONITORX opcodes in the #VC handler 2024-04-22 18:38:28 +02:00
sev.c - Small cleanups and improvements 2024-05-14 09:18:52 -07:00
shstk.c x86/shstk: Enable shadow stacks for x32 2024-03-22 10:17:11 +01:00
signal_32.c x86/syscall/compat: Remove ia32_unistd.h 2024-03-22 09:37:09 +01:00
signal_64.c x86/shstk: Enable shadow stacks for x32 2024-03-22 10:17:11 +01:00
signal.c rseq: Split out rseq.h from sched.h 2023-12-27 11:49:56 -05:00
smp.c - Sumanth Korikkar has taught s390 to allocate hotplug-time page frames 2024-03-14 17:43:30 -07:00
smpboot.c x86/cpu: Switch to new Intel CPU model defines 2024-04-29 10:31:30 +02:00
stacktrace.c
static_call.c x86/bugs: Rename CONFIG_RETHUNK => CONFIG_MITIGATION_RETHUNK 2024-01-10 10:52:29 +01:00
step.c x86/msr: Prepare for including <linux/percpu.h> into <asm/msr.h> 2024-03-04 12:01:39 +01:00
sys_ia32.c
sys_x86_64.c x86/mm: care about shadow stack guard gap during placement 2024-04-25 20:56:28 -07:00
tboot.c
time.c
tls.c
tls.h
trace_clock.c
trace.c
tracepoint.c
traps.c Core x86 changes for v6.9: 2024-03-11 19:53:15 -07:00
tsc_msr.c x86/tsc_msr: Switch to new Intel CPU model defines 2024-04-29 10:31:34 +02:00
tsc_sync.c x86/tsc: Trust initial offset in architectural TSC-adjust MSRs 2024-04-29 23:27:16 +02:00
tsc.c x86/cpu changes for v6.10: 2024-05-13 18:44:44 -07:00
umip.c
unwind_frame.c
unwind_guess.c
unwind_orc.c
uprobes.c
verify_cpu.S
vm86_32.c
vmcore_info_32.c crash: split vmcoreinfo exporting code out from crash_core.c 2024-02-23 17:48:22 -08:00
vmcore_info_64.c crash: split vmcoreinfo exporting code out from crash_core.c 2024-02-23 17:48:22 -08:00
vmlinux.lds.S x86/build changes for v6.10: 2024-05-13 18:05:08 -07:00
vsmp_64.c x86/apic: Remove unused phys_pkg_id() callback 2024-02-15 22:07:38 +01:00
x86_init.c x86/sev: Skip ROM range scans and validation for SEV-SNP guests 2024-03-26 15:22:35 +01:00