.. | .. |
---|
4 | 4 | |
---|
5 | 5 | #include <asm/bootparam.h> |
---|
6 | 6 | |
---|
| 7 | +struct ghcb; |
---|
7 | 8 | struct mpc_bus; |
---|
8 | 9 | struct mpc_cpu; |
---|
| 10 | +struct pt_regs; |
---|
9 | 11 | struct mpc_table; |
---|
10 | 12 | struct cpuinfo_x86; |
---|
| 13 | +struct irq_domain; |
---|
11 | 14 | |
---|
12 | 15 | /** |
---|
13 | 16 | * struct x86_init_mpparse - platform specific mpparse ops |
---|
14 | | - * @mpc_record: platform specific mpc record accounting |
---|
15 | 17 | * @setup_ioapic_ids: platform specific ioapic id override |
---|
16 | | - * @mpc_apic_id: platform specific mpc apic id assignment |
---|
17 | | - * @smp_read_mpc_oem: platform specific oem mpc table setup |
---|
18 | | - * @mpc_oem_pci_bus: platform specific pci bus setup (default NULL) |
---|
19 | | - * @mpc_oem_bus_info: platform specific mpc bus info |
---|
20 | 18 | * @find_smp_config: find the smp configuration |
---|
21 | 19 | * @get_smp_config: get the smp configuration |
---|
22 | 20 | */ |
---|
23 | 21 | struct x86_init_mpparse { |
---|
24 | | - void (*mpc_record)(unsigned int mode); |
---|
25 | 22 | void (*setup_ioapic_ids)(void); |
---|
26 | | - int (*mpc_apic_id)(struct mpc_cpu *m); |
---|
27 | | - void (*smp_read_mpc_oem)(struct mpc_table *mpc); |
---|
28 | | - void (*mpc_oem_pci_bus)(struct mpc_bus *m); |
---|
29 | | - void (*mpc_oem_bus_info)(struct mpc_bus *m, char *name); |
---|
30 | 23 | void (*find_smp_config)(void); |
---|
31 | 24 | void (*get_smp_config)(unsigned int early); |
---|
32 | 25 | }; |
---|
.. | .. |
---|
50 | 43 | * @pre_vector_init: init code to run before interrupt vectors |
---|
51 | 44 | * are set up. |
---|
52 | 45 | * @intr_init: interrupt init code |
---|
53 | | - * @trap_init: platform specific trap setup |
---|
| 46 | + * @intr_mode_select: interrupt delivery mode selection |
---|
54 | 47 | * @intr_mode_init: interrupt delivery mode setup |
---|
| 48 | + * @create_pci_msi_domain: Create the PCI/MSI interrupt domain |
---|
55 | 49 | */ |
---|
56 | 50 | struct x86_init_irqs { |
---|
57 | 51 | void (*pre_vector_init)(void); |
---|
58 | 52 | void (*intr_init)(void); |
---|
59 | | - void (*trap_init)(void); |
---|
| 53 | + void (*intr_mode_select)(void); |
---|
60 | 54 | void (*intr_mode_init)(void); |
---|
| 55 | + struct irq_domain *(*create_pci_msi_domain)(void); |
---|
61 | 56 | }; |
---|
62 | 57 | |
---|
63 | 58 | /** |
---|
.. | .. |
---|
134 | 129 | |
---|
135 | 130 | /** |
---|
136 | 131 | * struct x86_init_acpi - x86 ACPI init functions |
---|
| 132 | + * @set_root_poitner: set RSDP address |
---|
137 | 133 | * @get_root_pointer: get RSDP address |
---|
138 | 134 | * @reduced_hw_early_init: hardware reduced platform early init |
---|
139 | 135 | */ |
---|
140 | 136 | struct x86_init_acpi { |
---|
| 137 | + void (*set_root_pointer)(u64 addr); |
---|
141 | 138 | u64 (*get_root_pointer)(void); |
---|
142 | 139 | void (*reduced_hw_early_init)(void); |
---|
143 | 140 | }; |
---|
.. | .. |
---|
234 | 231 | /** |
---|
235 | 232 | * struct x86_hyper_runtime - x86 hypervisor specific runtime callbacks |
---|
236 | 233 | * |
---|
237 | | - * @pin_vcpu: pin current vcpu to specified physical cpu (run rarely) |
---|
| 234 | + * @pin_vcpu: pin current vcpu to specified physical |
---|
| 235 | + * cpu (run rarely) |
---|
| 236 | + * @sev_es_hcall_prepare: Load additional hypervisor-specific |
---|
| 237 | + * state into the GHCB when doing a VMMCALL under |
---|
| 238 | + * SEV-ES. Called from the #VC exception handler. |
---|
| 239 | + * @sev_es_hcall_finish: Copies state from the GHCB back into the |
---|
| 240 | + * processor (or pt_regs). Also runs checks on the |
---|
| 241 | + * state returned from the hypervisor after a |
---|
| 242 | + * VMMCALL under SEV-ES. Needs to return 'false' |
---|
| 243 | + * if the checks fail. Called from the #VC |
---|
| 244 | + * exception handler. |
---|
238 | 245 | */ |
---|
239 | 246 | struct x86_hyper_runtime { |
---|
240 | 247 | void (*pin_vcpu)(int cpu); |
---|
| 248 | + void (*sev_es_hcall_prepare)(struct ghcb *ghcb, struct pt_regs *regs); |
---|
| 249 | + bool (*sev_es_hcall_finish)(struct ghcb *ghcb, struct pt_regs *regs); |
---|
241 | 250 | }; |
---|
242 | 251 | |
---|
243 | 252 | /** |
---|
.. | .. |
---|
281 | 290 | struct pci_dev; |
---|
282 | 291 | |
---|
283 | 292 | struct x86_msi_ops { |
---|
284 | | - int (*setup_msi_irqs)(struct pci_dev *dev, int nvec, int type); |
---|
285 | | - void (*teardown_msi_irq)(unsigned int irq); |
---|
286 | | - void (*teardown_msi_irqs)(struct pci_dev *dev); |
---|
287 | 293 | void (*restore_msi_irqs)(struct pci_dev *dev); |
---|
288 | 294 | }; |
---|
289 | 295 | |
---|
.. | .. |
---|
301 | 307 | extern void x86_early_init_platform_quirks(void); |
---|
302 | 308 | extern void x86_init_noop(void); |
---|
303 | 309 | extern void x86_init_uint_noop(unsigned int unused); |
---|
| 310 | +extern bool bool_x86_init_noop(void); |
---|
| 311 | +extern void x86_op_int_noop(int cpu); |
---|
304 | 312 | extern bool x86_pnpbios_disabled(void); |
---|
305 | 313 | |
---|
306 | 314 | #endif |
---|