qemu/target-i386
H. Peter Anvin a9321a4d49 x86: Implement SMEP and SMAP
This patch implements Supervisor Mode Execution Prevention (SMEP) and
Supervisor Mode Access Prevention (SMAP) for x86.  The purpose of the
patch, obviously, is to help kernel developers debug the support for
those features.

A fair bit of the code relates to the handling of CPUID features.  The
CPUID code probably would get greatly simplified if all the feature
bit words were unified into a single vector object, but in the
interest of producing a minimal patch for SMEP/SMAP, and because I had
very limited time for this project, I followed the existing style.

[ v2: don't change the definition of the qemu64 CPU shorthand, since
  that breaks loading old snapshots.  Per Anthony Liguori this can be
  fixed once the CPU feature set is snapshot.

  Change the coding style slightly to conform to checkpatch.pl. ]

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-10-01 08:04:22 -05:00
..
Makefile.objs x86: switch to AREG0 free mode 2012-08-14 19:01:26 +00:00
TODO target-i386: fix {min,max}{pd,ps,sd,ss} SSE2 instructions 2012-01-11 09:55:28 +01:00
arch_dump.c Fix some more license versions (GPL2+ instead of GPL2) 2012-06-11 22:20:21 +02:00
arch_memory_mapping.c Fix some more license versions (GPL2+ instead of GPL2) 2012-06-11 22:20:21 +02:00
cc_helper.c x86: Implement SMEP and SMAP 2012-10-01 08:04:22 -05:00
cc_helper_template.h x86: avoid AREG0 for condition code helpers 2012-08-14 19:01:25 +00:00
cpu-qom.h target-i386: Defer MCE init 2012-05-12 14:17:52 +02:00
cpu.c x86: Implement SMEP and SMAP 2012-10-01 08:04:22 -05:00
cpu.h x86: Implement SMEP and SMAP 2012-10-01 08:04:22 -05:00
excp_helper.c x86: avoid an extern declaration 2012-06-28 20:28:08 +00:00
fpu_helper.c x86: switch to AREG0 free mode 2012-08-14 19:01:26 +00:00
helper.c x86: Implement SMEP and SMAP 2012-10-01 08:04:22 -05:00
helper.h x86: Implement SMEP and SMAP 2012-10-01 08:04:22 -05:00
hyperv.c hyper-v: introduce Hyper-V support infrastructure. 2012-01-19 08:32:12 -02:00
hyperv.h hyperv: fix build on non-KVM hosts 2012-01-23 20:04:51 +00:00
int_helper.c x86: avoid AREG0 for integer helpers 2012-08-14 19:01:25 +00:00
ioport-user.c build: move obj-TARGET-y variables to nested Makefile.objs 2012-06-07 07:17:36 +02:00
kvm-stub.c kvm: Move kvm_allows_irq0_override() to target-i386, fix return type 2012-08-09 16:16:55 +03:00
kvm.c i386: kvm: use a #define for the set of alias feature bits 2012-09-30 11:11:00 +00:00
kvm_i386.h kvm: i386: Add services required for PCI device assignment 2012-09-10 15:29:59 +03:00
machine.c kvm: get/set PV EOI MSR 2012-08-29 10:51:28 -05:00
mem_helper.c x86: switch to AREG0 free mode 2012-08-14 19:01:26 +00:00
misc_helper.c x86: switch to AREG0 free mode 2012-08-14 19:01:26 +00:00
ops_sse.h x86: avoid AREG0 for FPU helpers 2012-08-14 19:01:25 +00:00
ops_sse_header.h x86: avoid AREG0 for FPU helpers 2012-08-14 19:01:25 +00:00
seg_helper.c x86: switch to AREG0 free mode 2012-08-14 19:01:26 +00:00
shift_helper_template.h x86: avoid AREG0 for integer helpers 2012-08-14 19:01:25 +00:00
smm_helper.c x86: avoid AREG0 for SMM helpers 2012-08-14 19:01:25 +00:00
svm.h Use new macro QEMU_PACKED for packed structures 2011-09-03 10:45:59 +00:00
svm_helper.c x86: switch to AREG0 free mode 2012-08-14 19:01:26 +00:00
translate.c x86: Implement SMEP and SMAP 2012-10-01 08:04:22 -05:00