aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/boot/compressed/eboot.c8
-rw-r--r--arch/x86/entry/entry_32.S20
-rw-r--r--arch/x86/entry/entry_64.S49
-rw-r--r--arch/x86/entry/entry_64_compat.S1
-rw-r--r--arch/x86/entry/vdso/vma.c2
-rw-r--r--arch/x86/include/asm/desc.h248
-rw-r--r--arch/x86/include/asm/desc_defs.h122
-rw-r--r--arch/x86/include/asm/entry_arch.h17
-rw-r--r--arch/x86/include/asm/hw_irq.h20
-rw-r--r--arch/x86/include/asm/irq.h4
-rw-r--r--arch/x86/include/asm/irq_work.h8
-rw-r--r--arch/x86/include/asm/paravirt.h5
-rw-r--r--arch/x86/include/asm/paravirt_types.h3
-rw-r--r--arch/x86/include/asm/proto.h3
-rw-r--r--arch/x86/include/asm/segment.h4
-rw-r--r--arch/x86/include/asm/trace/common.h16
-rw-r--r--arch/x86/include/asm/trace/exceptions.h8
-rw-r--r--arch/x86/include/asm/trace/irq_vectors.h51
-rw-r--r--arch/x86/include/asm/traps.h50
-rw-r--r--arch/x86/include/asm/xen/hypercall.h6
-rw-r--r--arch/x86/kernel/Makefile3
-rw-r--r--arch/x86/kernel/apic/apic.c76
-rw-r--r--arch/x86/kernel/apic/io_apic.c2
-rw-r--r--arch/x86/kernel/apic/vector.c2
-rw-r--r--arch/x86/kernel/asm-offsets_64.c1
-rw-r--r--arch/x86/kernel/cpu/common.c9
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce_amd.c16
-rw-r--r--arch/x86/kernel/cpu/mcheck/therm_throt.c20
-rw-r--r--arch/x86/kernel/cpu/mcheck/threshold.c16
-rw-r--r--arch/x86/kernel/cpu/mshyperv.c9
-rw-r--r--arch/x86/kernel/eisa.c19
-rw-r--r--arch/x86/kernel/head32.c4
-rw-r--r--arch/x86/kernel/head64.c6
-rw-r--r--arch/x86/kernel/head_32.S44
-rw-r--r--arch/x86/kernel/idt.c371
-rw-r--r--arch/x86/kernel/irq.c40
-rw-r--r--arch/x86/kernel/irq_work.c20
-rw-r--r--arch/x86/kernel/irqinit.c102
-rw-r--r--arch/x86/kernel/kvm.c4
-rw-r--r--arch/x86/kernel/machine_kexec_32.c14
-rw-r--r--arch/x86/kernel/paravirt.c3
-rw-r--r--arch/x86/kernel/reboot.c4
-rw-r--r--arch/x86/kernel/setup.c4
-rw-r--r--arch/x86/kernel/setup_percpu.c9
-rw-r--r--arch/x86/kernel/smp.c81
-rw-r--r--arch/x86/kernel/tls.c2
-rw-r--r--arch/x86/kernel/tracepoint.c57
-rw-r--r--arch/x86/kernel/traps.c107
-rw-r--r--arch/x86/kvm/vmx.c2
-rw-r--r--arch/x86/math-emu/fpu_entry.c11
-rw-r--r--arch/x86/math-emu/fpu_system.h48
-rw-r--r--arch/x86/math-emu/get_address.c17
-rw-r--r--arch/x86/mm/fault.c49
-rw-r--r--arch/x86/xen/enlighten_pv.c110
-rw-r--r--arch/x86/xen/irq.c3
-rw-r--r--arch/x86/xen/xen-asm_64.S41
-rw-r--r--arch/x86/xen/xen-ops.h1
-rw-r--r--drivers/xen/events/events_base.c6
58 files changed, 901 insertions, 1077 deletions
diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
index e007887a33b0..926c2cc4facc 100644
--- a/arch/x86/boot/compressed/eboot.c
+++ b/arch/x86/boot/compressed/eboot.c
@@ -1058,7 +1058,7 @@ struct boot_params *efi_main(struct efi_config *c,
1058 desc->s = DESC_TYPE_CODE_DATA; 1058 desc->s = DESC_TYPE_CODE_DATA;
1059 desc->dpl = 0; 1059 desc->dpl = 0;
1060 desc->p = 1; 1060 desc->p = 1;
1061 desc->limit = 0xf; 1061 desc->limit1 = 0xf;
1062 desc->avl = 0; 1062 desc->avl = 0;
1063 desc->l = 0; 1063 desc->l = 0;
1064 desc->d = SEG_OP_SIZE_32BIT; 1064 desc->d = SEG_OP_SIZE_32BIT;
@@ -1078,7 +1078,7 @@ struct boot_params *efi_main(struct efi_config *c,
1078 desc->s = DESC_TYPE_CODE_DATA; 1078 desc->s = DESC_TYPE_CODE_DATA;
1079 desc->dpl = 0; 1079 desc->dpl = 0;
1080 desc->p = 1; 1080 desc->p = 1;
1081 desc->limit = 0xf; 1081 desc->limit1 = 0xf;
1082 desc->avl = 0; 1082 desc->avl = 0;
1083 if (IS_ENABLED(CONFIG_X86_64)) { 1083 if (IS_ENABLED(CONFIG_X86_64)) {
1084 desc->l = 1; 1084 desc->l = 1;
@@ -1099,7 +1099,7 @@ struct boot_params *efi_main(struct efi_config *c,
1099 desc->s = DESC_TYPE_CODE_DATA; 1099 desc->s = DESC_TYPE_CODE_DATA;
1100 desc->dpl = 0; 1100 desc->dpl = 0;
1101 desc->p = 1; 1101 desc->p = 1;
1102 desc->limit = 0xf; 1102 desc->limit1 = 0xf;
1103 desc->avl = 0; 1103 desc->avl = 0;
1104 desc->l = 0; 1104 desc->l = 0;
1105 desc->d = SEG_OP_SIZE_32BIT; 1105 desc->d = SEG_OP_SIZE_32BIT;
@@ -1116,7 +1116,7 @@ struct boot_params *efi_main(struct efi_config *c,
1116 desc->s = 0; 1116 desc->s = 0;
1117 desc->dpl = 0; 1117 desc->dpl = 0;
1118 desc->p = 1; 1118 desc->p = 1;
1119 desc->limit = 0x0; 1119 desc->limit1 = 0x0;
1120 desc->avl = 0; 1120 desc->avl = 0;
1121 desc->l = 0; 1121 desc->l = 0;
1122 desc->d = 0; 1122 desc->d = 0;
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index 48ef7bb32c42..8a13d468635a 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -673,16 +673,8 @@ ENTRY(name) \
673 jmp ret_from_intr; \ 673 jmp ret_from_intr; \
674ENDPROC(name) 674ENDPROC(name)
675 675
676
677#ifdef CONFIG_TRACING
678# define TRACE_BUILD_INTERRUPT(name, nr) BUILD_INTERRUPT3(trace_##name, nr, smp_trace_##name)
679#else
680# define TRACE_BUILD_INTERRUPT(name, nr)
681#endif
682
683#define BUILD_INTERRUPT(name, nr) \ 676#define BUILD_INTERRUPT(name, nr) \
684 BUILD_INTERRUPT3(name, nr, smp_##name); \ 677 BUILD_INTERRUPT3(name, nr, smp_##name); \
685 TRACE_BUILD_INTERRUPT(name, nr)
686 678
687/* The include is where all of the SMP etc. interrupts come from */ 679/* The include is where all of the SMP etc. interrupts come from */
688#include <asm/entry_arch.h> 680#include <asm/entry_arch.h>
@@ -880,25 +872,17 @@ ENTRY(xen_failsafe_callback)
880ENDPROC(xen_failsafe_callback) 872ENDPROC(xen_failsafe_callback)
881 873
882BUILD_INTERRUPT3(xen_hvm_callback_vector, HYPERVISOR_CALLBACK_VECTOR, 874BUILD_INTERRUPT3(xen_hvm_callback_vector, HYPERVISOR_CALLBACK_VECTOR,
883 xen_evtchn_do_upcall) 875 xen_evtchn_do_upcall)
884 876
885#endif /* CONFIG_XEN */ 877#endif /* CONFIG_XEN */
886 878
887#if IS_ENABLED(CONFIG_HYPERV) 879#if IS_ENABLED(CONFIG_HYPERV)
888 880
889BUILD_INTERRUPT3(hyperv_callback_vector, HYPERVISOR_CALLBACK_VECTOR, 881BUILD_INTERRUPT3(hyperv_callback_vector, HYPERVISOR_CALLBACK_VECTOR,
890 hyperv_vector_handler) 882 hyperv_vector_handler)
891 883
892#endif /* CONFIG_HYPERV */ 884#endif /* CONFIG_HYPERV */
893 885
894#ifdef CONFIG_TRACING
895ENTRY(trace_page_fault)
896 ASM_CLAC
897 pushl $trace_do_page_fault
898 jmp common_exception
899END(trace_page_fault)
900#endif
901
902ENTRY(page_fault) 886ENTRY(page_fault)
903 ASM_CLAC 887 ASM_CLAC
904 pushl $do_page_fault 888 pushl $do_page_fault
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index ca0b250eefc4..49167258d587 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -748,18 +748,6 @@ ENTRY(\sym)
748END(\sym) 748END(\sym)
749.endm 749.endm
750 750
751#ifdef CONFIG_TRACING
752#define trace(sym) trace_##sym
753#define smp_trace(sym) smp_trace_##sym
754
755.macro trace_apicinterrupt num sym
756apicinterrupt3 \num trace(\sym) smp_trace(\sym)
757.endm
758#else
759.macro trace_apicinterrupt num sym do_sym
760.endm
761#endif
762
763/* Make sure APIC interrupt handlers end up in the irqentry section: */ 751/* Mak