1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-11-24 07:40:52 +00:00
freebsd/sys/x86/include
Andrew Gallatin fd67ff5c7a Use the correct idle routine on recent AMD EPYC servers
We have been incorrectly choosing the "hlt" idle method on modern AMD
EPYC servers for C1 idle. This is because AMD also uses the Functional
Fixed Hardware interface. Due to not parsing the table properly for
AMD, and due to a weird quirk where the mwait latency for C1 is
mis-interpreted as the latency for hlt, we wind up choosing hlt for
c1, which has a far higher wake up latency (similar to IO) of roughly
400us on my test system (AMD 7502P).

This patch fixes this by:

- Looking for AMD in addition to Intel in the FFH
 (Note the vendor id of "2" for AMD is not publically documented, but
 AMD has confirmed they are using "2" and has promised to document it.)

- Using mwait on AMD when specified in the table, and when CPUid says
 its supported

- Fixing a weird issue where we copy the contents of cx_ptr for C1 and
 when moving to C2, we do not reinitialize cx_ptr. This leads to
 mwait being selected, and ignoring the specified i/o halt method
 unless we clear mwait before looking at the table for C2.

Differential Revision: https://reviews.freebsd.org/D47444
Reviewed by: dab, kib, vangyzen
Sponsored by: Netflix
2024-11-08 17:10:44 -05:00
..
xen intr/x86: replace use of vector in interface with intsrc 2024-05-09 17:15:07 -06:00
_align.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
_inttypes.h sys: Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:18 -06:00
_limits.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
_stdint.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
_types.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
acpica_machdep.h xen/pvh: fix initialization of environment 2024-08-02 12:41:52 +02:00
apicreg.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
apicvar.h apic: add ioapic_get_dev() method 2024-10-17 17:31:50 +03:00
apm_bios.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
bus_dma.h Deprecate contigfree(9) in favour of free(9) 2024-07-26 10:45:01 +00:00
bus.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
busdma_impl.h busdma: tidy bus_dma_run_filter() functions 2023-12-06 19:11:39 -04:00
clock.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
cputypes.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
dump.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
elf.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
endian.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
fdt.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
float.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
fpu.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
frame.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
ifunc.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
init.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
intr_machdep.h intr/x86: replace use of vector in interface with intsrc 2024-05-09 17:15:07 -06:00
iommu.h x86/iommu: extract useful utilities into x86_iommu.c 2024-05-25 08:32:01 +03:00
kvm.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
legacyvar.h new-bus: Remove the 'rid' and 'type' arguments from BUS_RELEASE_RESOURCE 2024-03-13 15:05:54 -07:00
mca.h Revert "mca: Allow for passing ECC error record to memory controller driver" 2024-09-18 10:44:37 -04:00
metadata.h Add a new sysctl in order to diffrentiate UEFI architectures 2024-09-20 08:45:09 -06:00
mptable.h Retire non-NEW_PCIB code and remove config option 2024-07-18 18:55:12 +01:00
ofw_machdep.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
pci_cfgreg.h x86: Support multiple PCI MCFG regions 2023-11-29 10:32:39 -08:00
ppireg.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
procctl.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
psl.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
ptrace.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
pvclock.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
reg.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
segments.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
setjmp.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
sigframe.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
signal.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
specialreg.h x86 specialreg: add bit masks definitions for LASS and LAM features 2024-10-24 05:41:11 +03:00
stack.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
stdarg.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
sysarch.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
timerreg.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
tls.h
trap.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
ucode.h x86/ucode: add support for early loading of CPU ucode on AMD. 2024-02-22 10:04:31 -08:00
ucontext.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
vdso.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
vmware_guestrpc.h guestrpc module to handle VMware backdoor port GuestRPC functionality 2024-05-01 15:45:45 -04:00
vmware.h guestrpc module to handle VMware backdoor port GuestRPC functionality 2024-05-01 15:45:45 -04:00
x86_ieeefp.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
x86_smp.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
x86_var.h Use the correct idle routine on recent AMD EPYC servers 2024-11-08 17:10:44 -05:00