From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JZBJz-0004nW-LZ for qemu-devel@nongnu.org; Tue, 11 Mar 2008 16:43:39 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JZBJx-0004n2-Py for qemu-devel@nongnu.org; Tue, 11 Mar 2008 16:43:39 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JZBJx-0004mt-Jg for qemu-devel@nongnu.org; Tue, 11 Mar 2008 16:43:37 -0400 Received: from mx1.redhat.com ([66.187.233.31]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JZBJx-00040D-1M for qemu-devel@nongnu.org; Tue, 11 Mar 2008 16:43:37 -0400 Message-Id: <20080311201418.642592930@localhost.localdomain> References: <20080311201151.959635433@localhost.localdomain> Date: Tue, 11 Mar 2008 17:12:09 -0300 From: Marcelo Tosatti Content-Disposition: inline; filename=acpi-ost Subject: [Qemu-devel] [patch 18/24] QEMU/KVM: notify _EJ0 through _SEJ OperationRegion Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, kvm-devel@lists.sourceforge.net Cc: aliguori@us.ibm.com, Marcelo Tosatti The _EJ0 method is executed by the OS once it has successfully finished device removal. Inform that event through IO port space so QEMU can free the associated data. Signed-off-by: Marcelo Tosatti Index: kvm-userspace.hotplug2/bios/acpi-dsdt.dsl =================================================================== --- kvm-userspace.hotplug2.orig/bios/acpi-dsdt.dsl +++ kvm-userspace.hotplug2/bios/acpi-dsdt.dsl @@ -414,159 +414,258 @@ DefinitionBlock ( PCID, 32, } + OperationRegion(SEJ, SystemIO, 0xae08, 0x04) + Field (SEJ, DWordAcc, NoLock, WriteAsZeros) + { + B0EJ, 32, + } + Device (S1) { // Slot 1 Name (_ADR, 0x00010000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x2, B0EJ) + Return (0x0) + } } Device (S2) { // Slot 2 Name (_ADR, 0x00020000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x4, B0EJ) + Return (0x0) + } } Device (S3) { // Slot 3 Name (_ADR, 0x00030000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store (0x8, B0EJ) + Return (0x0) + } } Device (S4) { // Slot 4 Name (_ADR, 0x00040000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x10, B0EJ) + Return (0x0) + } } Device (S5) { // Slot 5 Name (_ADR, 0x00050000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x20, B0EJ) + Return (0x0) + } } Device (S6) { // Slot 6 Name (_ADR, 0x00060000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x40, B0EJ) + Return (0x0) + } } Device (S7) { // Slot 7 Name (_ADR, 0x00070000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x80, B0EJ) + Return (0x0) + } } Device (S8) { // Slot 8 Name (_ADR, 0x00080000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x100, B0EJ) + Return (0x0) + } } Device (S9) { // Slot 9 Name (_ADR, 0x00090000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x200, B0EJ) + Return (0x0) + } } Device (S10) { // Slot 10 Name (_ADR, 0x000A0000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x400, B0EJ) + Return (0x0) + } } Device (S11) { // Slot 11 Name (_ADR, 0x000B0000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x800, B0EJ) + Return (0x0) + } } Device (S12) { // Slot 12 Name (_ADR, 0x000C0000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x1000, B0EJ) + Return (0x0) + } } Device (S13) { // Slot 13 Name (_ADR, 0x000D0000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x2000, B0EJ) + Return (0x0) + } } Device (S14) { // Slot 14 Name (_ADR, 0x000E0000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x4000, B0EJ) + Return (0x0) + } } Device (S15) { // Slot 15 Name (_ADR, 0x000F0000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x8000, B0EJ) + Return (0x0) + } } Device (S16) { // Slot 16 Name (_ADR, 0x00100000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x10000, B0EJ) + Return (0x0) + } } Device (S17) { // Slot 17 Name (_ADR, 0x00110000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x20000, B0EJ) + Return (0x0) + } } Device (S18) { // Slot 18 Name (_ADR, 0x00120000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x40000, B0EJ) + Return (0x0) + } } Device (S19) { // Slot 19 Name (_ADR, 0x00130000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x80000, B0EJ) + Return (0x0) + } } Device (S20) { // Slot 20 Name (_ADR, 0x00140000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x100000, B0EJ) + Return (0x0) + } } Device (S21) { // Slot 21 Name (_ADR, 0x00150000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x200000, B0EJ) + Return (0x0) + } } Device (S22) { // Slot 22 Name (_ADR, 0x00160000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x400000, B0EJ) + Return (0x0) + } } Device (S23) { // Slot 23 Name (_ADR, 0x00170000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x800000, B0EJ) + Return (0x0) + } } Device (S24) { // Slot 24 Name (_ADR, 0x00180000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x1000000, B0EJ) + Return (0x0) + } } Device (S25) { // Slot 25 Name (_ADR, 0x00190000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x2000000, B0EJ) + Return (0x0) + } } Device (S26) { // Slot 26 Name (_ADR, 0x001A0000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x4000000, B0EJ) + Return (0x0) + } } Device (S27) { // Slot 27 Name (_ADR, 0x001B0000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x8000000, B0EJ) + Return (0x0) + } } Device (S28) { // Slot 28 Name (_ADR, 0x001C0000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x10000000, B0EJ) + Return (0x0) + } } Device (S29) { // Slot 29 Name (_ADR, 0x001D0000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x20000000, B0EJ) + Return (0x0) + } } Device (S30) { // Slot 30 Name (_ADR, 0x001E0000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x40000000, B0EJ) + Return (0x0) + } } Device (S31) { // Slot 31 Name (_ADR, 0x001F0000) - Method (_EJ0,1) { Return (0x0) } + Method (_EJ0,1) { + Store(0x80000000, B0EJ) + Return (0x0) + } } Method (_CRS, 0, NotSerialized) --