x86/virt, x86/platform: Merge 'struct x86_hyper' into 'struct x86_platform' and 'struct x86_init'
Instead of x86_hyper being either NULL on bare metal or a pointer to a struct hypervisor_x86 in case of the kernel running as a guest merge the struct into x86_platform and x86_init. This will remove the need for wrappers making it hard to find out what is being called. With dummy functions added for all callbacks testing for a NULL function pointer can be removed, too. Suggested-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Juergen Gross <jgross@suse.com> Acked-by: Thomas Gleixner <tglx@linutronix.de> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: akataria@vmware.com Cc: boris.ostrovsky@oracle.com Cc: devel@linuxdriverproject.org Cc: haiyangz@microsoft.com Cc: kvm@vger.kernel.org Cc: kys@microsoft.com Cc: pbonzini@redhat.com Cc: rkrcmar@redhat.com Cc: rusty@rustcorp.com.au Cc: sthemmin@microsoft.com Cc: virtualization@lists.linux-foundation.org Cc: xen-devel@lists.xenproject.org Link: http://lkml.kernel.org/r/20171109132739.23465-2-jgross@suse.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:

committed by
Ingo Molnar

parent
b5cd3b51e2
commit
f72e38e8ec
@@ -114,6 +114,18 @@ struct x86_init_pci {
|
||||
void (*fixup_irqs)(void);
|
||||
};
|
||||
|
||||
/**
|
||||
* struct x86_hyper_init - x86 hypervisor init functions
|
||||
* @init_platform: platform setup
|
||||
* @x2apic_available: X2APIC detection
|
||||
* @init_mem_mapping: setup early mappings during init_mem_mapping()
|
||||
*/
|
||||
struct x86_hyper_init {
|
||||
void (*init_platform)(void);
|
||||
bool (*x2apic_available)(void);
|
||||
void (*init_mem_mapping)(void);
|
||||
};
|
||||
|
||||
/**
|
||||
* struct x86_init_ops - functions for platform specific setup
|
||||
*
|
||||
@@ -127,6 +139,7 @@ struct x86_init_ops {
|
||||
struct x86_init_timers timers;
|
||||
struct x86_init_iommu iommu;
|
||||
struct x86_init_pci pci;
|
||||
struct x86_hyper_init hyper;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -199,6 +212,15 @@ struct x86_legacy_features {
|
||||
struct x86_legacy_devices devices;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct x86_hyper_runtime - x86 hypervisor specific runtime callbacks
|
||||
*
|
||||
* @pin_vcpu: pin current vcpu to specified physical cpu (run rarely)
|
||||
*/
|
||||
struct x86_hyper_runtime {
|
||||
void (*pin_vcpu)(int cpu);
|
||||
};
|
||||
|
||||
/**
|
||||
* struct x86_platform_ops - platform specific runtime functions
|
||||
* @calibrate_cpu: calibrate CPU
|
||||
@@ -218,6 +240,7 @@ struct x86_legacy_features {
|
||||
* possible in x86_early_init_platform_quirks() by
|
||||
* only using the current x86_hardware_subarch
|
||||
* semantics.
|
||||
* @hyper: x86 hypervisor specific runtime callbacks
|
||||
*/
|
||||
struct x86_platform_ops {
|
||||
unsigned long (*calibrate_cpu)(void);
|
||||
@@ -233,6 +256,7 @@ struct x86_platform_ops {
|
||||
void (*apic_post_init)(void);
|
||||
struct x86_legacy_features legacy;
|
||||
void (*set_legacy_features)(void);
|
||||
struct x86_hyper_runtime hyper;
|
||||
};
|
||||
|
||||
struct pci_dev;
|
||||
|
Reference in New Issue
Block a user