mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
hw/arm: Use GED for system_powerdown event
For machines 4.2 or higher with ACPI boot use GED for system_powerdown event instead of GPIO. Guest boot with DT still uses GPIO. Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Message-Id: <20190918130633.4872-9-shameerali.kolothum.thodi@huawei.com> Acked-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
c345680cb4
commit
1962f31b86
5 changed files with 27 additions and 9 deletions
|
@ -536,10 +536,10 @@ static inline DeviceState *create_acpi_ged(VirtMachineState *vms, qemu_irq *pic)
|
|||
DeviceState *dev;
|
||||
MachineState *ms = MACHINE(vms);
|
||||
int irq = vms->irqmap[VIRT_ACPI_GED];
|
||||
uint32_t event = 0;
|
||||
uint32_t event = ACPI_GED_PWR_DOWN_EVT;
|
||||
|
||||
if (ms->ram_slots) {
|
||||
event = ACPI_GED_MEM_HOTPLUG_EVT;
|
||||
event |= ACPI_GED_MEM_HOTPLUG_EVT;
|
||||
}
|
||||
|
||||
dev = qdev_create(NULL, TYPE_ACPI_GED);
|
||||
|
@ -793,8 +793,14 @@ static void create_rtc(const VirtMachineState *vms, qemu_irq *pic)
|
|||
static DeviceState *gpio_key_dev;
|
||||
static void virt_powerdown_req(Notifier *n, void *opaque)
|
||||
{
|
||||
/* use gpio Pin 3 for power button event */
|
||||
qemu_set_irq(qdev_get_gpio_in(gpio_key_dev, 0), 1);
|
||||
VirtMachineState *s = container_of(n, VirtMachineState, powerdown_notifier);
|
||||
|
||||
if (s->acpi_dev) {
|
||||
acpi_send_event(s->acpi_dev, ACPI_POWER_DOWN_STATUS);
|
||||
} else {
|
||||
/* use gpio Pin 3 for power button event */
|
||||
qemu_set_irq(qdev_get_gpio_in(gpio_key_dev, 0), 1);
|
||||
}
|
||||
}
|
||||
|
||||
static void create_gpio(const VirtMachineState *vms, qemu_irq *pic)
|
||||
|
@ -1723,10 +1729,10 @@ static void machvirt_init(MachineState *machine)
|
|||
|
||||
create_pcie(vms, pic);
|
||||
|
||||
create_gpio(vms, pic);
|
||||
|
||||
if (has_ged && aarch64 && firmware_loaded && acpi_enabled) {
|
||||
vms->acpi_dev = create_acpi_ged(vms, pic);
|
||||
} else {
|
||||
create_gpio(vms, pic);
|
||||
}
|
||||
|
||||
/* connect powerdown request */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue