From 6dd89c1f27ebc7623a6116dde8b58b25eb5bd99f Mon Sep 17 00:00:00 2001 From: Igor Mammedov Date: Tue, 27 Mar 2012 16:35:41 +0200 Subject: [PATCH 2/2] Fix pci hotplug to generate level triggered interrupt. RH-Author: Igor Mammedov Message-id: <1332866141-17049-3-git-send-email-imammedo@redhat.com> Patchwork-id: 39007 O-Subject: [RHEL-6.3 qemu-kvm PATCH 2/2] Fix pci hotplug to generate level triggered interrupt. Bugzilla: 805362 RH-Acked-by: Alex Williamson RH-Acked-by: Laszlo Ersek RH-Acked-by: Gleb Natapov BZ#805362 Upstream qemu-kvm commit: 633aa0acfe2c4d3 Brew: http://brewweb.devel.redhat.com/brew/taskinfo?taskID=4198808 SCI is level triggered. pci hotplug should behave appropriately. Signed-off-by: Gleb Natapov Signed-off-by: Anthony Liguori Signed-off-by: Igor Mammedov --- hw/acpi.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-) Signed-off-by: Michal Novotny --- hw/acpi.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-) diff --git a/hw/acpi.c b/hw/acpi.c index 4788526..43d45d6 100644 --- a/hw/acpi.c +++ b/hw/acpi.c @@ -135,7 +135,8 @@ static void pm_update_sci(PIIX4PMState *s) pmsts = get_pmsts(s); sci_level = (((pmsts & s->pmen) & (RTC_EN | PWRBTN_EN | GBL_EN | TMROF_EN)) != 0) || - (((s->gpe.sts & s->gpe.en) & PIIX4_CPU_HOTPLUG_STATUS) != 0); + (((s->gpe.sts & s->gpe.en) & + (PIIX4_CPU_HOTPLUG_STATUS | PIIX4_PCI_HOTPLUG_STATUS)) != 0); qemu_set_irq(s->irq, sci_level); /* schedule a timer interruption if needed */ @@ -784,7 +785,9 @@ static void gpe_writeb(void *opaque, uint32_t addr, uint32_t val) break; default: break; - } + } + + pm_update_sci(pm_state); #if defined(DEBUG) printf("gpe write %x <== %d\n", addr, val); @@ -979,10 +982,9 @@ static int piix4_device_hotplug(PCIDevice *dev, int state) enable_device(&pm_state->pci0_status, &pm_state->gpe, slot); else disable_device(&pm_state->pci0_status, &pm_state->gpe, slot); - if (pm_state->gpe.en & 2) { - qemu_set_irq(pm_state->irq, 1); - qemu_set_irq(pm_state->irq, 0); - } + + pm_update_sci(pm_state); + return 0; } -- 1.7.7.6