mbox series

[0/8] x86/IDT: Generate the IDT at build time

Message ID 20250224160509.1117847-1-andrew.cooper3@citrix.com (mailing list archive)
Headers show
Series x86/IDT: Generate the IDT at build time | expand

Message

Andrew Cooper Feb. 24, 2025, 4:05 p.m. UTC
This is a chunk of the FRED work split out because it's pretty self contained.

It's mostly cleanup/refactoring, although patch

traps.c is already overly large and going to get larger with FRED, so I'm
splitting traps-init.c out of it, as the two have reasonably-different logic.
That's implemented in this series but not used in anger in this series.

Testing, including Eclair:

  https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1684170631
  https://cirrus-ci.com/build/6590097610506240

(Qubes ADL was offline at this time, but has passed on prior runs.  Also Zen3p
passing is good enough to prove the changes.)

Andrew Cooper (8):
  x86: Sort includes in various files
  x86/IDT: Collect IDT related content idt.h
  x86/IDT: Rename X86_NR_VECTORS to X86_IDT_VECTORS
  x86/IDT: Rename idt_table[] to bsp_idt[]
  x86/IDT: Make idt_tables[] be per_cpu(idt)
  x86/IDT: Generate bsp_idt[] at build time
  x86/IDT: Don't rewrite bsp_idt[] at boot time
  x86/traps: Convert pv_trap_init() to being an initcall

 xen/arch/x86/Makefile                   |   1 +
 xen/arch/x86/acpi/power.c               |  19 +--
 xen/arch/x86/cpu/common.c               |  23 ++--
 xen/arch/x86/crash.c                    |  41 +++---
 xen/arch/x86/domain.c                   |  87 ++++++------
 xen/arch/x86/hvm/svm/svm.c              |   5 +-
 xen/arch/x86/hvm/vlapic.c               |   4 +-
 xen/arch/x86/hvm/vmx/intr.c             |   4 +-
 xen/arch/x86/hvm/vmx/vmcs.c             |  30 +++--
 xen/arch/x86/hvm/vmx/vmx.c              |   6 +-
 xen/arch/x86/include/asm/desc.h         |  76 -----------
 xen/arch/x86/include/asm/gen-idt.h      | 121 +++++++++++++++++
 xen/arch/x86/include/asm/gen-idt.lds.h  |  27 ++++
 xen/arch/x86/include/asm/hvm/vmx/vmcs.h |   4 +-
 xen/arch/x86/include/asm/idt.h          | 109 +++++++++++++++
 xen/arch/x86/include/asm/irq.h          |   4 +-
 xen/arch/x86/include/asm/processor.h    |  37 ------
 xen/arch/x86/include/asm/pv/traps.h     |   4 -
 xen/arch/x86/include/asm/x86-defns.h    |   2 +-
 xen/arch/x86/io_apic.c                  |   2 +-
 xen/arch/x86/irq.c                      |  12 +-
 xen/arch/x86/machine_kexec.c            |  13 +-
 xen/arch/x86/mm.c                       |  58 ++++----
 xen/arch/x86/pv/callback.c              |   4 +-
 xen/arch/x86/pv/domain.c                |   4 +-
 xen/arch/x86/pv/traps.c                 |  19 +--
 xen/arch/x86/setup.c                    |  84 ++++++------
 xen/arch/x86/smpboot.c                  |  37 +++---
 xen/arch/x86/traps-init.c               |   7 +
 xen/arch/x86/traps.c                    | 169 +++++++-----------------
 xen/arch/x86/x86_64/entry.S             | 106 ++++++++-------
 xen/arch/x86/x86_64/traps.c             |  28 ++--
 xen/arch/x86/xen.lds.S                  |   2 +
 33 files changed, 625 insertions(+), 524 deletions(-)
 create mode 100644 xen/arch/x86/include/asm/gen-idt.h
 create mode 100644 xen/arch/x86/include/asm/gen-idt.lds.h
 create mode 100644 xen/arch/x86/include/asm/idt.h
 create mode 100644 xen/arch/x86/traps-init.c