]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - arch/x86/include/asm/x86_init.h
Merge tag 'kbuild-misc-v4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/masahi...
[mirror_ubuntu-bionic-kernel.git] / arch / x86 / include / asm / x86_init.h
index 8a1ebf9540ddf0822c3f80c2fa09340c339860f7..aa4747569e23b63ea9cb83912bb6960caa8525cc 100644 (file)
@@ -51,11 +51,13 @@ struct x86_init_resources {
  *                             are set up.
  * @intr_init:                 interrupt init code
  * @trap_init:                 platform specific trap setup
+ * @intr_mode_init:            interrupt delivery mode setup
  */
 struct x86_init_irqs {
        void (*pre_vector_init)(void);
        void (*intr_init)(void);
        void (*trap_init)(void);
+       void (*intr_mode_init)(void);
 };
 
 /**
@@ -114,6 +116,20 @@ struct x86_init_pci {
        void (*fixup_irqs)(void);
 };
 
+/**
+ * struct x86_hyper_init - x86 hypervisor init functions
+ * @init_platform:             platform setup
+ * @guest_late_init:           guest late init
+ * @x2apic_available:          X2APIC detection
+ * @init_mem_mapping:          setup early mappings during init_mem_mapping()
+ */
+struct x86_hyper_init {
+       void (*init_platform)(void);
+       void (*guest_late_init)(void);
+       bool (*x2apic_available)(void);
+       void (*init_mem_mapping)(void);
+};
+
 /**
  * struct x86_init_ops - functions for platform specific setup
  *
@@ -127,6 +143,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;
 };
 
 /**
@@ -195,10 +212,20 @@ enum x86_legacy_i8042_state {
 struct x86_legacy_features {
        enum x86_legacy_i8042_state i8042;
        int rtc;
+       int no_vga;
        int reserve_bios_regions;
        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 +245,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 +261,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;