Tried another approach, that involves only seabios change as specified in acpi50.spec: 5.6.4 General-Purpose Event Handling by switching from level to edge handler.
diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl index 4e04c48..51906ad 100644 --- a/src/acpi-dsdt.dsl +++ b/src/acpi-dsdt.dsl @@ -723,7 +723,7 @@ DefinitionBlock ( Method(_L00) { Return(0x01) } - Method(_L01) { + Method(_E01) { // PCI hotplug event Return(\_SB.PCI0.PCNF()) } It fixes problem (at least I wasn't able to hit window between GPE00.sts read and GPE00.sts reset, too small interval). It seems to work as expected with rhel6, 3.3+ kernel, winxp, ws2008r2. Will post patch to seabios list and hope we won't need this one in qemu.