linux/arch/x86/kernel
Jeremy Fitzhardinge 93b1eab3d2 paravirt: refactor struct paravirt_ops into smaller pv_*_ops
This patch refactors the paravirt_ops structure into groups of
functionally related ops:

pv_info - random info, rather than function entrypoints
pv_init_ops - functions used at boot time (some for module_init too)
pv_misc_ops - lazy mode, which didn't fit well anywhere else
pv_time_ops - time-related functions
pv_cpu_ops - various privileged instruction ops
pv_irq_ops - operations for managing interrupt state
pv_apic_ops - APIC operations
pv_mmu_ops - operations for managing pagetables

There are several motivations for this:

1. Some of these ops will be general to all x86, and some will be
   i386/x86-64 specific.  This makes it easier to share common stuff
   while allowing separate implementations where needed.

2. At the moment we must export all of paravirt_ops, but modules only
   need selected parts of it.  This allows us to export on a case by case
   basis (and also choose which export license we want to apply).

3. Functional groupings make things a bit more readable.

Struct paravirt_ops is now only used as a template to generate
patch-site identifiers, and to extract function pointers for inserting
into jmp/calls when patching.  It is only instantiated when needed.

Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Cc: Andi Kleen <ak@suse.de>
Cc: Zach Amsden <zach@vmware.com>
Cc: Avi Kivity <avi@qumranet.com>
Cc: Anthony Liguory <aliguori@us.ibm.com>
Cc: "Glauber de Oliveira Costa" <glommer@gmail.com>
Cc: Jun Nakajima <jun.nakajima@intel.com>
2007-10-16 11:51:29 -07:00
..
acpi Merge branch 'dmi-const' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6 2007-10-11 19:18:45 -07:00
cpu Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq 2007-10-12 15:42:01 -07:00
cpufreq x86_64: move kernel/cpufreq 2007-10-11 11:17:06 +02:00
.gitignore i386: move kernel 2007-10-11 11:17:01 +02:00
alternative.c paravirt: refactor struct paravirt_ops into smaller pv_*_ops 2007-10-16 11:51:29 -07:00
aperture_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
apic_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
apic_64.c x86_64: cleanup apic.c after clock events switch 2007-10-12 23:04:23 +02:00
apm_32.c Merge branch 'dmi-const' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6 2007-10-11 19:18:45 -07:00
asm-offsets_32.c paravirt: refactor struct paravirt_ops into smaller pv_*_ops 2007-10-16 11:51:29 -07:00
asm-offsets_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
asm-offsets.c i386: move kernel 2007-10-11 11:17:01 +02:00
audit_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
bootflag.c i386: move kernel 2007-10-11 11:17:01 +02:00
bugs_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
cpuid.c i386: move kernel 2007-10-11 11:17:01 +02:00
crash_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
crash_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
crash_dump_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
crash_dump_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
doublefault_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
e820_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
e820_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
early_printk.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
early-quirks_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
efi_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
efi_stub_32.S i386: move kernel 2007-10-11 11:17:01 +02:00
entry_32.S paravirt: refactor struct paravirt_ops into smaller pv_*_ops 2007-10-16 11:51:29 -07:00
entry_64.S x86_64: move kernel 2007-10-11 11:17:24 +02:00
genapic_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
genapic_flat_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
geode_32.c x86: Geode Multi-Function General Purpose Timers support 2007-10-12 23:04:06 +02:00
head64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
head_32.S i386: move kernel 2007-10-11 11:17:01 +02:00
head_64.S x86_64: move kernel 2007-10-11 11:17:24 +02:00
hpet.c x86: HPET force enable for ICH5 2007-10-12 23:04:24 +02:00
i386_ksyms_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
i387_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
i387_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
i8237.c i386: move kernel 2007-10-11 11:17:01 +02:00
i8253.c x86_64: remove now unused code 2007-10-12 23:04:23 +02:00
i8259_32.c x86: kill 8253pit.h 2007-10-12 23:04:23 +02:00
i8259_64.c x86_64: convert to clock events 2007-10-12 23:04:07 +02:00
init_task_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
init_task_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
io_apic_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
io_apic_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
ioport_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
ioport_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
irq_32.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2007-10-11 19:40:14 -07:00
irq_64.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2007-10-11 19:40:14 -07:00
k8.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
kprobes_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
kprobes_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
ldt_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
ldt_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
machine_kexec_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
machine_kexec_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
Makefile x86_64: move kernel 2007-10-11 11:17:24 +02:00
Makefile_32 x86_64: remove now unused code 2007-10-12 23:04:23 +02:00
Makefile_64 x86_64: remove now unused code 2007-10-12 23:04:23 +02:00
mca_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
mce_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
mce_amd_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
mce_intel_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
mfgpt_32.c x86: Geode MFGPT clock event device support 2007-10-12 23:04:06 +02:00
microcode.c i386: move kernel 2007-10-11 11:17:01 +02:00
module_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
module_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
mpparse_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
mpparse_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
msr.c i386: move kernel 2007-10-11 11:17:01 +02:00
nmi_32.c x86: Fix irq0 / local apic timer accounting 2007-10-12 23:04:06 +02:00
nmi_64.c x86: Fix irq0 / local apic timer accounting 2007-10-12 23:04:07 +02:00
numaq_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
paravirt_32.c paravirt: refactor struct paravirt_ops into smaller pv_*_ops 2007-10-16 11:51:29 -07:00
pci-calgary_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
pci-dma_32.c dma_free_coherent() needs irqs enabled (sigh) 2007-10-12 15:03:15 -07:00
pci-dma_64.c dma_free_coherent() needs irqs enabled (sigh) 2007-10-12 15:03:15 -07:00
pci-gart_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
pci-nommu_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
pci-swiotlb_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
pcspeaker.c i386: move kernel 2007-10-11 11:17:01 +02:00
pmtimer_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
process_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
process_64.c x86_64: prepare idle loop for dynamic ticks 2007-10-12 23:04:07 +02:00
ptrace_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
ptrace_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
quirks.c x86: HPET add another ICH7 PCI id 2007-10-12 23:04:24 +02:00
reboot_32.c Merge branch 'dmi-const' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6 2007-10-11 19:18:45 -07:00
reboot_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
reboot_fixups_32.c PCI: pci_get_device call from interrupt in reboot fixups 2007-10-12 15:03:15 -07:00
relocate_kernel_32.S i386: move kernel 2007-10-11 11:17:01 +02:00
relocate_kernel_64.S x86_64: move kernel 2007-10-11 11:17:24 +02:00
scx200_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
setup64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
setup_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
setup_64.c x86: disable apic timer for AMD C1E enabled CPUs 2007-10-12 23:04:07 +02:00
sigframe_32.h i386: move kernel 2007-10-11 11:17:01 +02:00
signal_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
signal_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
smp_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
smp_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
smpboot_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
smpboot_64.c x86_64: convert to clock events 2007-10-12 23:04:07 +02:00
smpcommon_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
srat_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
stacktrace.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
summit_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
suspend_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
suspend_asm_64.S x86_64: move kernel 2007-10-11 11:17:24 +02:00
sys_i386_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
sys_x86_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
syscall_64.c i386/x86_64: move headers to include/asm-x86 2007-10-11 11:20:03 +02:00
syscall_table_32.S i386: move kernel 2007-10-11 11:17:01 +02:00
sysenter_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
tce_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
time_32.c x86: Fix irq0 / local apic timer accounting 2007-10-12 23:04:06 +02:00
time_64.c x86_64: remove now unused code 2007-10-12 23:04:23 +02:00
topology.c i386: move kernel 2007-10-11 11:17:01 +02:00
trampoline_32.S i386: move kernel 2007-10-11 11:17:01 +02:00
trampoline_64.S x86_64: move kernel 2007-10-11 11:17:24 +02:00
traps_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
traps_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
tsc_32.c Merge branch 'dmi-const' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6 2007-10-11 19:18:45 -07:00
tsc_64.c x86: unify timex.h variants 2007-10-12 23:04:23 +02:00
tsc_sync.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
verify_cpu_64.S x86_64: move kernel 2007-10-11 11:17:24 +02:00
vm86_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
vmi_32.c paravirt: refactor struct paravirt_ops into smaller pv_*_ops 2007-10-16 11:51:29 -07:00
vmiclock_32.c i386: move kernel 2007-10-11 11:17:01 +02:00
vmlinux_32.lds.S i386: move kernel 2007-10-11 11:17:01 +02:00
vmlinux_64.lds.S x86_64: move kernel 2007-10-11 11:17:24 +02:00
vmlinux.lds.S i386: move kernel 2007-10-11 11:17:01 +02:00
vsmp_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
vsyscall_32.lds.S i386: move kernel 2007-10-11 11:17:01 +02:00
vsyscall_32.S i386: move kernel 2007-10-11 11:17:01 +02:00
vsyscall_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00
vsyscall-int80_32.S i386: move kernel 2007-10-11 11:17:01 +02:00
vsyscall-note_32.S i386: move kernel 2007-10-11 11:17:01 +02:00
vsyscall-sigreturn_32.S i386: move kernel 2007-10-11 11:17:01 +02:00
vsyscall-sysenter_32.S i386: move kernel 2007-10-11 11:17:01 +02:00
x8664_ksyms_64.c x86_64: move kernel 2007-10-11 11:17:24 +02:00