|
@@ -43,6 +43,9 @@ struct hypervisor_x86 {
|
|
|
|
|
|
/* pin current vcpu to specified physical cpu (run rarely) */
|
|
|
void (*pin_vcpu)(int);
|
|
|
+
|
|
|
+ /* called during init_mem_mapping() to setup early mappings. */
|
|
|
+ void (*init_mem_mapping)(void);
|
|
|
};
|
|
|
|
|
|
extern const struct hypervisor_x86 *x86_hyper;
|
|
@@ -57,8 +60,15 @@ extern const struct hypervisor_x86 x86_hyper_kvm;
|
|
|
extern void init_hypervisor_platform(void);
|
|
|
extern bool hypervisor_x2apic_available(void);
|
|
|
extern void hypervisor_pin_vcpu(int cpu);
|
|
|
+
|
|
|
+static inline void hypervisor_init_mem_mapping(void)
|
|
|
+{
|
|
|
+ if (x86_hyper && x86_hyper->init_mem_mapping)
|
|
|
+ x86_hyper->init_mem_mapping();
|
|
|
+}
|
|
|
#else
|
|
|
static inline void init_hypervisor_platform(void) { }
|
|
|
static inline bool hypervisor_x2apic_available(void) { return false; }
|
|
|
+static inline void hypervisor_init_mem_mapping(void) { }
|
|
|
#endif /* CONFIG_HYPERVISOR_GUEST */
|
|
|
#endif /* _ASM_X86_HYPERVISOR_H */
|