kernel-fxtec-pro1x/arch/x86/include/asm
Joseph Cihula 3162534069 x86, intel_txt: Intel TXT boot support
This patch adds kernel configuration and boot support for Intel Trusted
Execution Technology (Intel TXT).

Intel's technology for safer computing, Intel Trusted Execution
Technology (Intel TXT), defines platform-level enhancements that
provide the building blocks for creating trusted platforms.

Intel TXT was formerly known by the code name LaGrande Technology (LT).

Intel TXT in Brief:
o  Provides dynamic root of trust for measurement (DRTM)
o  Data protection in case of improper shutdown
o  Measurement and verification of launched environment

Intel TXT is part of the vPro(TM) brand and is also available some
non-vPro systems.  It is currently available on desktop systems based on
the Q35, X38, Q45, and Q43 Express chipsets (e.g. Dell Optiplex 755, HP
dc7800, etc.) and mobile systems based on the GM45, PM45, and GS45
Express chipsets.

For more information, see http://www.intel.com/technology/security/.
This site also has a link to the Intel TXT MLE Developers Manual, which
has been updated for the new released platforms.

A much more complete description of how these patches support TXT, how to
configure a system for it, etc. is in the Documentation/intel_txt.txt file
in this patch.

This patch provides the TXT support routines for complete functionality,
documentation for TXT support and for the changes to the boot_params structure,
and boot detection of a TXT launch.  Attempts to shutdown (reboot, Sx) the system
will result in platform resets; subsequent patches will support these shutdown modes
properly.

 Documentation/intel_txt.txt      |  210 +++++++++++++++++++++
 Documentation/x86/zero-page.txt  |    1
 arch/x86/include/asm/bootparam.h |    3
 arch/x86/include/asm/fixmap.h    |    3
 arch/x86/include/asm/tboot.h     |  197 ++++++++++++++++++++
 arch/x86/kernel/Makefile         |    1
 arch/x86/kernel/setup.c          |    4
 arch/x86/kernel/tboot.c          |  379 +++++++++++++++++++++++++++++++++++++++
 security/Kconfig                 |   30 +++
 9 files changed, 827 insertions(+), 1 deletion(-)

Signed-off-by: Joseph Cihula <joseph.cihula@intel.com>
Signed-off-by: Shane Wang <shane.wang@intel.com>
Signed-off-by: Gang Wei <gang.wei@intel.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2009-07-21 11:49:06 -07:00
..
uv x86, UV: Fix macros for multiple coherency domains 2009-06-08 18:57:47 +02:00
visws
xen Xen: Add virt_to_pfn helper function 2009-04-08 11:51:46 -07:00
a.out-core.h x86: add %gs accessors for x86_32 2009-02-10 00:41:58 +01:00
a.out.h
acpi.h ACPI: #define acpi_disabled 1 for CONFIG_ACPI=n 2009-06-12 20:50:39 -04:00
aes.h crypto: aes - Export x86 AES encrypt/decrypt functions 2009-02-18 16:48:05 +08:00
agp.h
alternative-asm.h
alternative.h x86: clean up alternative.h 2009-04-28 17:42:08 +02:00
amd_iommu.h amd-iommu: disable IOMMU hardware on shutdown 2009-06-15 15:20:40 +02:00
amd_iommu_types.h Merge branches 'amd-iommu/fixes', 'amd-iommu/debug', 'amd-iommu/suspend-resume' and 'amd-iommu/extended-allocator' into amd-iommu/2.6.31 2009-05-28 18:23:56 +02:00
apic.h Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 16:15:14 -07:00
apicdef.h x86: display extended apic registers with print_local_APIC and cpu_debug code 2009-05-11 14:37:36 +02:00
apicnum.h irq: initialize nr_irqs based on nr_cpu_ids 2009-01-11 19:13:38 +01:00
apm.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
asm.h
atomic.h
atomic_32.h x86: atomic64: Inline atomic64_read() again 2009-07-04 11:45:00 +02:00
atomic_64.h x86: atomic64: Code atomic(64)_read and atomic(64)_set in C not CPP 2009-07-03 14:42:39 +02:00
auxvec.h
bios_ebda.h
bitops.h x86, generic: mark complex bitops.h inlines as __always_inline 2009-01-13 18:56:30 +01:00
bitsperlong.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
boot.h x86, setup: correct include file in <asm/boot.h> 2009-06-25 15:16:06 -07:00
bootparam.h x86, intel_txt: Intel TXT boot support 2009-07-21 11:49:06 -07:00
bug.h
bugs.h
byteorder.h byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
cache.h
cacheflush.h Merge branch 'tracing/core-v2' into tracing-for-linus 2009-04-02 00:49:02 +02:00
calgary.h
calling.h x86: document 64-bit and 32-bit function call convention ABI 2009-02-03 19:48:18 +01:00
checksum.h
checksum_32.h
checksum_64.h
cmpxchg.h
cmpxchg_32.h
cmpxchg_64.h
compat.h
cpu.h x86: generalize boot_cpu_id 2009-01-29 14:17:01 +01:00
cpu_debug.h x86: cpu_debug: Remove model information to reduce encoding-decoding 2009-06-07 12:22:56 +02:00
cpufeature.h Merge branch 'kvm-updates/2.6.31' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2009-06-11 10:03:30 -07:00
cpumask.h x86: unify cpu_callin_mask/cpu_callout_mask/cpu_initialized_mask/cpu_sibling_setup_mask 2009-03-13 14:49:54 +10:30
cputime.h
current.h x86-64: Move current task from PDA to per-cpu and consolidate with 32-bit. 2009-01-19 00:38:58 +09:00
debugreg.h
delay.h
desc.h x86: de-assembler-ize asm/desc.h 2009-06-17 21:35:10 -07:00
desc_defs.h
device.h x86, ia64: convert to use generic dma_map_ops struct 2009-01-06 14:06:57 +01:00
div64.h
dma-mapping.h dma-mapping: x86: use asm-generic/dma-mapping-common.h 2009-06-18 13:03:58 -07:00
dma.h
dmi.h x86/dmi: fix dmi_alloc() section mismatches 2009-03-23 17:20:50 +01:00
do_timer.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
ds.h x86, ds: support Core i7 2009-04-07 13:36:36 +02:00
dwarf2.h
e820.h x86: e820 fix various signedness issues in setup.c and e820.c 2009-03-23 15:02:05 +05:30
edac.h
efi.h x86: EFI: Back efi_ioremap with init_memory_mapping instead of FIX_MAP 2009-03-04 19:20:16 +01:00
elf.h x86: make lazy %gs optional on x86_32 2009-02-10 00:42:00 +01:00
emergency-restart.h
entry_arch.h Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
errno.h
fb.h
fcntl.h
fixmap.h x86, intel_txt: Intel TXT boot support 2009-07-21 11:49:06 -07:00
floppy.h
frame.h
ftrace.h tracing/syscalls: support for syscalls tracing on x86 2009-03-13 16:57:42 +01:00
futex.h
gart.h
genapic.h x86, apic: merge genapic.h into apic.h 2009-02-17 17:52:43 +01:00
geode.h
gpio.h
hardirq.h Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
highmem.h x86: unify kmap_atomic_pfn() and iomap_atomic_prot_pfn() 2009-03-11 15:47:46 +01:00
hpet.h
hugetlb.h
hw_irq.h Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
hypertransport.h
hypervisor.h
i387.h Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 16:15:14 -07:00
i8253.h
i8259.h x86: move x86_quirk_pre_intr_init() to irqinit_32.c 2009-04-10 14:35:53 +02:00
ia32.h generic compat_sys_ustat 2009-03-27 14:43:57 -04:00
ia32_unistd.h
idle.h
init.h x86: move function and variable declarations to asm/init.h 2009-03-05 14:17:18 +01:00
io.h x86: fix set_fixmap to use phys_addr_t 2009-04-10 20:27:13 +02:00
io_32.h Merge branches 'x86/acpi', 'x86/asm', 'x86/cpudetect', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/doc', 'x86/header-fixes', 'x86/headers' and 'x86/minor-fixes' into x86/core 2009-02-13 09:46:36 +01:00
io_64.h Merge branches 'x86/acpi', 'x86/asm', 'x86/cpudetect', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/doc', 'x86/header-fixes', 'x86/headers' and 'x86/minor-fixes' into x86/core 2009-02-13 09:46:36 +01:00
io_apic.h x86/pci: insert ioapic resource before assigning unassigned resources 2009-07-10 13:03:14 -07:00
ioctl.h
ioctls.h
iomap.h x86: added 'ifndef _ASM_X86_IOMAP_H' to iomap.h 2009-04-30 19:26:11 +02:00
iommu.h Intel IOMMU Pass Through Support 2009-04-29 06:54:34 +01:00
ipcbuf.h
ipi.h x86, apic: remove duplicate asm/apic.h inclusions 2009-02-17 17:52:44 +01:00
irq.h x86: UV, SGI RTC: add generic system vector 2009-03-04 20:25:37 +01:00
irq_regs.h x86: merge irq_regs.h 2009-01-21 17:26:06 +09:00
irq_remapping.h x86: x2apic, IR: Clean up X86_X2APIC and INTR_REMAP config checks 2009-04-21 09:08:25 +02:00
irq_vectors.h Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
irqflags.h
ist.h
k8.h x86: k8 convert node_to_k8_nb_misc() from a macro to an inline function 2009-04-15 12:12:36 +02:00
Kbuild byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
kdebug.h
kexec.h x86, kexec: x86_64: add kexec jump support for x86_64 2009-03-10 18:13:25 -07:00
kgdb.h
kmap_types.h kmap_types: make most arches use generic header file 2009-06-16 19:47:51 -07:00
kmemcheck.h kmemcheck: add the kmemcheck core 2009-06-13 15:37:30 +02:00
kprobes.h
kvm.h KVM: Enable MSI-X for KVM assigned device 2009-06-10 11:48:23 +03:00
kvm_host.h KVM: VMX: Rename rmode.active to rmode.vm86_active 2009-06-10 11:49:00 +03:00
kvm_para.h
kvm_x86_emulate.h KVM: Deal with interrupt shadow state for emulated instructions 2009-06-10 11:48:54 +03:00
ldt.h
lguest.h lguest: PAE support 2009-06-12 22:27:08 +09:30
lguest_hcall.h lguest: fix journey 2009-07-17 21:47:44 +09:30
linkage.h x86: shrink __ALIGN and __ALIGN_STR definitions 2009-03-11 12:39:28 +01:00
local.h
mach_timer.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
mach_traps.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
math_emu.h x86: fix math_emu register frame access 2009-02-10 00:39:14 +01:00
mc146818rtc.h
mca.h
mca_dma.h
mce.h x86, mce: mce.h cleanup 2009-06-16 16:56:10 -07:00
microcode.h x86: microcode: use smp_call_function_single instead of set_cpus_allowed, cleanup of synchronization logic 2009-05-12 10:36:44 +02:00
mman.h asm-generic: rename termios.h, signal.h and mman.h 2009-06-11 21:01:52 +02:00
mmconfig.h
mmu.h
mmu_context.h x86: make lazy %gs optional on x86_32 2009-02-10 00:42:00 +01:00
mmx.h
mmzone.h
mmzone_32.h bootmem, x86: further fixes for arch-specific bootmem wrapping 2009-03-01 16:06:56 +09:00
mmzone_64.h mm: clean up for early_pfn_to_nid() 2009-02-18 15:37:55 -08:00
module.h
mpspec.h x86: enable_update_mptable should be a macro 2009-05-28 01:59:05 +02:00
mpspec_def.h x86: rename all fields of mpf_intel mpf_X to X 2009-01-08 15:37:37 +01:00
msgbuf.h
msidef.h x86, x2apic: enable fault handling for intr-remapping 2009-03-17 15:38:59 -07:00
msr-index.h x86: Remove double declaration of MSR_P6_EVNTSEL0 and MSR_P6_EVNTSEL1 2009-07-01 15:23:43 +02:00
msr.h x86: msr.h linux/types.h is only required for __KERNEL__ 2009-06-17 18:56:01 +02:00
mtrr.h headers_check fix: x86, mtrr.h 2009-01-31 00:17:39 +05:30
mutex.h
mutex_32.h
mutex_64.h
nmi.h x86: Remove unused function lapic_watchdog_ok() 2009-07-03 14:34:31 +02:00
nops.h
numa.h
numa_32.h x86: set_highmem_pages_init() cleanup 2009-03-03 13:13:15 +01:00
numa_64.h x86, mm: Fix node_possible_map logic 2009-05-18 09:21:04 +02:00
numaq.h x86, numaq: cleanups 2009-02-05 22:30:14 +01:00
olpc.h
page.h asm-generic: rename page.h and uaccess.h 2009-06-11 21:02:17 +02:00
page_32.h x86 headers: protect page_32.h via __ASSEMBLY__ 2009-02-13 13:36:47 +01:00
page_32_types.h x86: page_types.h unification of declarations 2009-04-14 11:44:45 +02:00
page_64.h x86: create _types.h counterparts for page*.h 2009-02-11 14:54:09 -08:00
page_64_types.h x86, 64-bit: Clean up user address masking 2009-06-20 15:40:00 -07:00
page_types.h x86: page_types.h unification of declarations 2009-04-14 11:44:45 +02:00
param.h
paravirt.h Merge branch 'x86-xen-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 16:16:27 -07:00
parport.h
pat.h x86, PAT: Remove duplicate memtype reserve in devmem mmap 2009-04-10 13:55:48 +02:00
pci-direct.h
pci-functions.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
pci.h Fix pci_unmap_addr() et al on i386. 2009-07-01 11:19:29 -07:00
pci_64.h x86/dma: unify definition of pci_unmap_addr* and pci_unmap_len macros 2009-04-03 13:13:45 +02:00
pci_x86.h Revert "PCI: use ACPI _CRS data by default" 2009-06-24 16:23:03 -07:00
percpu.h x86: fix pageattr handling for lpage percpu allocator and re-enable it 2009-06-22 11:56:24 +09:00
perf_counter.h perf_counter, x86: Add mmap counter read support 2009-06-25 21:39:06 +02:00
pgalloc.h x86, mm: fix pte_free() 2009-01-23 18:42:06 +01:00
pgtable-2level.h x86: with the last user gone, remove set_pte_present 2009-03-19 14:04:19 +01:00
pgtable-2level_types.h x86: move more pagetable-related definitions into pgtable*.h 2009-02-13 11:35:01 -08:00
pgtable-3level.h x86: with the last user gone, remove set_pte_present 2009-03-19 14:04:19 +01:00
pgtable-3level_types.h x86: move more pagetable-related definitions into pgtable*.h 2009-02-13 11:35:01 -08:00
pgtable.h x86: unify pte_hidden 2009-06-15 15:49:20 +02:00
pgtable_32.h x86: Add NMI types for kmap_atomic, fix 2009-06-15 17:20:03 +02:00
pgtable_32_types.h module: merge module_alloc() finally 2009-06-12 21:47:03 +09:30
pgtable_64.h x86, 64-bit: Clean up user address masking 2009-06-20 15:40:00 -07:00
pgtable_64_types.h x86: 46 bit physical address support on 64 bits 2009-05-05 19:10:18 -07:00
pgtable_types.h x86: make _PAGE_HIDDEN conditional 2009-06-15 15:49:19 +02:00
poll.h
posix_types.h
posix_types_32.h
posix_types_64.h
prctl.h headers_check fix: x86, prctl.h 2009-02-02 23:27:09 +05:30
processor-cyrix.h
processor-flags.h
processor.h Merge branch 'tracing-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 19:53:40 -07:00
proto.h x86: fix power-of-2 round_up/round_down macros 2009-07-02 12:05:10 -07:00
ptrace-abi.h x86, ptrace: remove CONFIG guards around declarations 2009-02-24 18:23:35 +01:00
ptrace.h Merge branch 'tracing-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 19:53:40 -07:00
pvclock-abi.h
pvclock.h
rdc321x_defs.h x86, rdc321x: remove/move leftover files 2009-01-18 19:39:18 +01:00
reboot.h
reboot_fixups.h
required-features.h x86-64: remove PGE from must-have feature list 2009-04-08 11:51:46 -07:00
resource.h
resume-trace.h
rio.h
rtc.h
rwlock.h
rwsem.h
scatterlist.h
seccomp.h
seccomp_32.h x86-64: seccomp: fix 32/64 syscall hole 2009-03-02 15:41:30 -08:00
seccomp_64.h x86-64: seccomp: fix 32/64 syscall hole 2009-03-02 15:41:30 -08:00
sections.h x86: add brk allocation for very, very early allocations 2009-03-14 15:37:14 -07:00
segment.h x86: implement x86_32 stack protector 2009-02-10 00:42:01 +01:00
sembuf.h
serial.h
setup.h x86: move x86_quirk_pre_intr_init() to irqinit_32.c 2009-04-10 14:35:53 +02:00
setup_arch.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
shmbuf.h
shmparam.h
sigcontext.h x86: add linux kernel support for YMM state 2009-04-12 13:08:56 +02:00
sigcontext32.h headers_check fix: x86, sigcontext32.h 2009-01-31 00:18:58 +05:30
sigframe.h
siginfo.h
signal.h asm-generic: rename termios.h, signal.h and mman.h 2009-06-11 21:01:52 +02:00
smp.h x86: read apic ID in the !acpi_lapic case 2009-05-12 12:22:06 +02:00
smpboot_hooks.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
socket.h net: new user space API for time stamping of incoming and outgoing packets 2009-02-15 22:43:33 -08:00
sockios.h
sparsemem.h x86: 46 bit physical address support on 64 bits 2009-05-05 19:10:18 -07:00
spinlock.h memory barrier: adding smp_mb__after_lock 2009-07-09 17:06:58 -07:00
spinlock_types.h
srat.h
stackprotector.h x86: fix x86_32 stack protector bugs 2009-02-11 11:33:49 +01:00
stacktrace.h perf_counter: Ignore the nmi call frames in the x86-64 backtraces 2009-07-01 22:37:23 +02:00
stat.h
statfs.h
string.h
string_32.h x86: add hooks for kmemcheck 2009-06-15 12:40:02 +02:00
string_64.h x86: add hooks for kmemcheck 2009-06-15 12:40:02 +02:00
suspend.h
suspend_32.h pm: cleanup includes 2009-04-01 08:59:16 -07:00
suspend_64.h
svm.h KVM: Fix unneeded instruction skipping during task switching. 2009-06-10 11:48:38 +03:00
swab.h headers_check fix: x86, swab.h 2009-01-31 00:19:32 +05:30
swiotlb.h
sync_bitops.h
sys_ia32.h generic compat_sys_ustat 2009-03-27 14:43:57 -04:00
syscall.h
syscalls.h x86: clean up declarations and variables 2009-04-12 15:20:16 +02:00
system.h x86: add forward decl for tss_struct 2009-03-02 12:07:49 +01:00
system_64.h
tboot.h x86, intel_txt: Intel TXT boot support 2009-07-21 11:49:06 -07:00
tce.h
termbits.h
termios.h x86: fix ktermios-termio conversion 2009-06-11 08:50:59 -07:00
thread_info.h sched: INIT_PREEMPT_COUNT 2009-07-10 14:24:05 -07:00
time.h
timer.h sched, x86: Fix cpufreq + sched_clock() TSC scaling 2009-06-17 16:03:54 +02:00
timex.h time: move PIT_TICK_RATE to linux/timex.h 2009-06-16 19:47:27 -07:00
tlb.h
tlbflush.h x86: make zap_low_mapping could be used early 2009-06-12 13:50:24 +03:00
topology.h sched: Don't export sched_mc_power_savings on multi-socket single core system 2009-05-11 23:57:56 +02:00
trampoline.h x86: load pointer to pda into %gs while brining up a CPU 2009-01-16 14:19:26 +01:00
traps.h Merge branch 'x86-xen-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 16:16:27 -07:00
tsc.h
types.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
uaccess.h x86, 64-bit: Clean up user address masking 2009-06-20 15:40:00 -07:00
uaccess_32.h x86, mm: dont use non-temporal stores in pagecache accesses 2009-03-02 11:06:49 +01:00
uaccess_64.h x86, mm: dont use non-temporal stores in pagecache accesses 2009-03-02 11:06:49 +01:00
ucontext.h
unaligned.h
unistd.h
unistd_32.h Merge branch 'core/signal' into perfcounters/core 2009-04-30 21:16:49 +02:00
unistd_64.h Merge branch 'core/signal' into perfcounters/core 2009-04-30 21:16:49 +02:00
user.h
user32.h
user_32.h
user_64.h
vdso.h
vga.h
vgtod.h
virtext.h KVM: SVM: Move EFER and MSR constants to generic x86 code 2009-03-24 11:02:46 +02:00
vm86.h
vmi.h
vmi_time.h
vmware.h
vmx.h KVM: Add VT-x machine check support 2009-06-10 12:27:08 +03:00
vsyscall.h
xcr.h
xor.h x86: add hooks for kmemcheck 2009-06-15 12:40:02 +02:00
xor_32.h
xor_64.h
xsave.h x86: add linux kernel support for YMM state 2009-04-12 13:08:56 +02:00