1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-19 10:53:58 +00:00
freebsd/sys/i386/include
Konstantin Belousov 4c918926cd Add x2APIC support. Enable it by default if CPU is capable. The
hw.x2apic_enable tunable allows disabling it from the loader prompt.

To closely repeat effects of the uncached memory ops when accessing
registers in the xAPIC mode, the x2APIC writes to MSRs are preceeded
by mfence, except for the EOI notifications.  This is probably too
strict, only ICR writes to send IPI require serialization to ensure
that other CPUs see the previous actions when IPI is delivered.  This
may be changed later.

In vmm justreturn IPI handler, call doreti_iret instead of doing iretd
inline, to handle corner conditions.

Note that the patch only switches LAPICs into x2APIC mode. It does not
enables FreeBSD to support > 255 CPUs, which requires parsing x2APIC
MADT entries and doing interrupts remapping, but is the required step
on the way.

Reviewed by:	neel
Tested by:	pho (real hardware), neel (on bhyve)
Discussed with:	jhb, grehan
Sponsored by:	The FreeBSD Foundation
MFC after:	2 months
2015-02-09 21:00:56 +00:00
..
pc - Add a new structure type for the ACPI 3.0 SMAP entry that includes the 2014-08-29 21:25:47 +00:00
xen xen: implement the privcmd user-space device 2014-10-22 17:07:20 +00:00
_align.h
_bus.h
_inttypes.h
_limits.h Copy amd64 _limits.h to x86 and merge with i386 _limits.h. Replace 2012-02-28 18:24:28 +00:00
_stdint.h Copy amd64 _stdint.h to x86 and merge with i386 _stdint.h. Replace 2012-02-28 18:38:33 +00:00
_types.h Copy amd64 _types.h to x86 and merge with i386 _types.h. Replace existing 2012-02-28 18:15:28 +00:00
acpica_machdep.h Merge acpica_machdep.h for amd64 and i386 and move to x86. In fact, these 2013-08-13 22:05:10 +00:00
apm_bios.h
apm_segments.h
asm.h Revert r274772: it is not valid on MIPS 2014-11-25 03:50:31 +00:00
asmacros.h
atomic.h Implement atomic_cmpset_64() and atomic_swap_64() for i386. 2013-08-21 22:30:11 +00:00
bootinfo.h i386 bootinfo: re-arrange EFI fields for natural alignment and packing 2012-05-13 09:25:39 +00:00
bus_dma.h
bus.h Revert r243960 based on feedback regarding keeping x86 headers unified 2012-12-13 21:27:20 +00:00
clock.h xen: implement an early timer for Xen PVH 2014-03-11 10:20:42 +00:00
counter.h Fix issues with zeroing and fetching the counters, on x86 and ppc64. 2013-07-01 02:48:27 +00:00
cpu.h amd64/i386: introduce APIC hooks for different APIC implementations. 2014-06-16 08:43:03 +00:00
cpufunc.h Add x2APIC support. Enable it by default if CPU is capable. The 2015-02-09 21:00:56 +00:00
cputypes.h
cserial.h
db_machdep.h
dump.h Factor out duplicated code from dumpsys() on each architecture into generic 2015-01-07 01:01:39 +00:00
elan_mmcr.h
elf.h Convert machine/elf.h, machine/frame.h, machine/sigframe.h, 2013-02-20 17:39:52 +00:00
endian.h Copy amd64 endian.h to x86 and merge with i386 endian.h. Replace 2012-02-28 19:39:54 +00:00
exec.h
fdt.h Add basic support for FDT to i386 & amd64. This change includes: 2013-05-21 03:05:49 +00:00
float.h Copy amd64 float.h to x86 and merge with i386 float.h. Replace 2012-03-04 14:00:32 +00:00
floatingpoint.h
frame.h Convert machine/elf.h, machine/frame.h, machine/sigframe.h, 2013-02-20 17:39:52 +00:00
gdb_machdep.h
ieeefp.h People porting FreeBSD to new architectures ought not have to 2011-10-21 06:41:46 +00:00
if_wl_wavelan.h
in_cksum.h MFp4 bz_ipv6_fast: 2012-05-24 22:00:48 +00:00
intr_machdep.h Add support for suspend/resume/migration operations when running as a 2013-09-20 05:06:03 +00:00
ioctl_bt848.h
ioctl_meteor.h
iodev.h
kdb.h
limits.h
md_var.h For x86, read MAXPHYADDR, defined in SDM vol 3 4.1.4 Enumeration of Paging 2015-01-12 07:36:25 +00:00
memdev.h
metadata.h loader: implement multiboot support for Xen Dom0 2015-01-15 16:27:20 +00:00
minidump.h
mp_watchdog.h
nexusvar.h
npx.h MFamd64: Add support for extended FPU states on i386. This includes 2014-11-02 22:58:30 +00:00
ofw_machdep.h Add basic support for FDT to i386 & amd64. This change includes: 2013-05-21 03:05:49 +00:00
param.h Rename VM_NDOMAIN into MAXMEMDOM and move it into machine/param.h in 2013-05-07 22:46:24 +00:00
pcaudioio.h Convert files to UTF-8 2012-01-15 13:23:18 +00:00
pcb_ext.h
pcb.h MFamd64: Add support for extended FPU states on i386. This includes 2014-11-02 22:58:30 +00:00
pci_cfgreg.h
pcpu.h Formalize the concept of virtual CPU ids by adding a per-cpu vcpu_id 2013-10-05 23:11:01 +00:00
perfmon.h
pmap.h Add an argument to the x86 pmap_invalidate_cache_range() to request 2014-10-08 16:48:03 +00:00
pmc_mdep.h Add software PMC support. 2012-03-28 20:58:30 +00:00
ppireg.h
privatespace.h
proc.h Handle spurious page faults that may occur in no-fault sections of the 2012-03-22 04:52:51 +00:00
profile.h
psl.h Copy i386 psl.h to x86 and replace amd64/i386/pc98 psl.h with stubs. 2012-03-19 21:29:57 +00:00
ptrace.h Copy amd64 ptrace.h to x86 and merge with i386 ptrace.h. Replace 2012-03-04 20:24:28 +00:00
pvclock.h Generalized parts of the XEN timer code into a generic pvclock 2015-02-04 08:26:43 +00:00
reg.h Copy i386 reg.h to x86 and merge with amd64 reg.h. Replace i386/amd64/pc98 2012-03-18 19:06:38 +00:00
reloc.h
resource.h Add support for managing PCI bus numbers. As with BARs and PCI-PCI bridge 2014-02-12 04:30:37 +00:00
runq.h
segments.h Move userland bits (and some common kernel bits) from amd64 and i386 2012-03-19 21:24:50 +00:00
setjmp.h Copy amd64 setjmp.h to x86 and replace amd64/i386/pc98 setjmp.h with stubs. 2012-02-28 22:17:52 +00:00
sf_buf.h Merge all MD sf_buf allocators into one MI, residing in kern/subr_sfbuf.c 2014-08-05 09:44:10 +00:00
sigframe.h Convert machine/elf.h, machine/frame.h, machine/sigframe.h, 2013-02-20 17:39:52 +00:00
signal.h Convert machine/elf.h, machine/frame.h, machine/sigframe.h, 2013-02-20 17:39:52 +00:00
smapi.h
smp.h amd64/i386: switch IPI handlers to C code. 2014-03-11 10:03:29 +00:00
speaker.h
specialreg.h Copy i386 specialreg.h to x86 and merge with amd64 specialreg.h. Replace 2012-03-19 21:34:11 +00:00
stack.h
stdarg.h Copy amd64 stdarg.h to x86 and replace amd64/i386/pc98 stdarg.h with stubs. 2012-02-28 22:30:58 +00:00
sysarch.h Copy amd64 sysarch.h to x86 and merge with i386 sysarch.h. Replace 2012-03-19 21:57:31 +00:00
timerreg.h
trap.h Copy amd64 trap.h to x86 and replace amd64/i386/pc98 trap.h with stubs. 2012-03-04 14:12:57 +00:00
tss.h
ucontext.h Convert machine/elf.h, machine/frame.h, machine/sigframe.h, 2013-02-20 17:39:52 +00:00
varargs.h
vdso.h Implement mechanism to export some kernel timekeeping data to 2012-06-22 07:06:40 +00:00
vm86.h x86: Allow users to change PSL_RF via ptrace(PT_SETREGS...) 2013-11-14 15:37:20 +00:00
vm.h - Rename VM_MEMATTR_UNCACHED to VM_MEMATTR_WEAK_UNCACHEABLE on x86 to 2012-03-29 16:51:22 +00:00
vmparam.h Enable the use of VM_PHYSSEG_SPARSE on amd64 and i386, making it the default 2014-11-15 23:40:44 +00:00
xbox.h