mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
spapr_events: add support for dedicated hotplug event source
Hotplug events were previously delivered using an EPOW interrupt and were queued by linux guests into a circular buffer. For traditional EPOW events like shutdown/resets, this isn't an issue, but for hotplug events there are cases where this buffer can be exhausted, resulting in the loss of hotplug events, resets, etc. Newer-style hotplug event are delivered using a dedicated event source. We enable this in supported guests by adding standard an additional event source in the guest device-tree via /event-sources, and, if the guest advertises support for the newer-style hotplug events, using the corresponding interrupt to signal the available of hotplug/unplug events. Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
9f992cca93
commit
ffbb1705a3
4 changed files with 177 additions and 41 deletions
|
@ -973,7 +973,7 @@ static void *spapr_build_fdt(sPAPRMachineState *spapr,
|
|||
}
|
||||
|
||||
/* /event-sources */
|
||||
spapr_dt_events(fdt, spapr->check_exception_irq);
|
||||
spapr_dt_events(spapr, fdt);
|
||||
|
||||
/* /rtas */
|
||||
spapr_dt_rtas(spapr, fdt);
|
||||
|
@ -1789,6 +1789,11 @@ static void ppc_spapr_init(MachineState *machine)
|
|||
|
||||
spapr_ovec_set(spapr->ov5, OV5_FORM1_AFFINITY);
|
||||
|
||||
/* advertise support for dedicated HP event source to guests */
|
||||
if (spapr->use_hotplug_event_source) {
|
||||
spapr_ovec_set(spapr->ov5, OV5_HP_EVT);
|
||||
}
|
||||
|
||||
/* init CPUs */
|
||||
if (machine->cpu_model == NULL) {
|
||||
machine->cpu_model = kvm_enabled() ? "host" : smc->tcg_default_cpu;
|
||||
|
@ -1912,7 +1917,7 @@ static void ppc_spapr_init(MachineState *machine)
|
|||
}
|
||||
g_free(filename);
|
||||
|
||||
/* Set up EPOW events infrastructure */
|
||||
/* Set up RTAS event infrastructure */
|
||||
spapr_events_init(spapr);
|
||||
|
||||
/* Set up the RTC RTAS interfaces */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue