* [PATCHv4 1/3] acpi: add ssdt for pci hotplug
2011-11-20 17:56 [PATCHv4 0/3] acpi: DSDT/SSDT runtime patching Michael S. Tsirkin
@ 2011-11-20 17:56 ` Michael S. Tsirkin
2011-11-20 17:57 ` [PATCHv4 2/3] acpi: EJ0 method name patching Michael S. Tsirkin
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Michael S. Tsirkin @ 2011-11-20 17:56 UTC (permalink / raw)
To: Amos Kong; +Cc: kvm, jasowang, seabios, alex williamson
The point of this split is to make runtime patching easier.
DSDT is required to supply: PCI0 - PCI root device object;
PCEJ - Method object to eject a PCI slot.
Additionally, SSDT is required to supply PCNT - Method object to notify
OSPM of a PCI slot event.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
Makefile | 2 +-
src/acpi-dsdt.dsl | 117 +--------------------------------------------
src/acpi.c | 12 +++++
src/ssdt-pcihp.dsl | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 148 insertions(+), 115 deletions(-)
create mode 100644 src/ssdt-pcihp.dsl
diff --git a/Makefile b/Makefile
index 540f1ea..ef8e15d 100644
--- a/Makefile
+++ b/Makefile
@@ -200,7 +200,7 @@ src/%.hex: src/%.dsl ./tools/acpi_extract_preprocess.py ./tools/acpi_extract.py
$(Q)./tools/acpi_extract.py $(OUT)$*.lst > $(OUT)$*.off
$(Q)cat $(OUT)$*.off > $@
-$(OUT)ccode32flat.o: src/acpi-dsdt.hex src/ssdt-proc.hex
+$(OUT)ccode32flat.o: src/acpi-dsdt.hex src/ssdt-proc.hex src/ssdt-pcihp.hex
####### Kconfig rules
export HOSTCC := $(CC)
diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl
index b9b06f2..f97d463 100644
--- a/src/acpi-dsdt.dsl
+++ b/src/acpi-dsdt.dsl
@@ -474,90 +474,15 @@ DefinitionBlock (
Return (0x0)
}
-#define gen_pci_device(slot) \
- Device(SL##slot) { \
- Name (_ADR, 0x##slot##0000) \
- Method (_RMV) { Return (PRMV(0x##slot)) } \
- Name (_SUN, 0x##slot) \
- }
-
- /* VGA (slot 1) and ISA bus (slot 2) defined above */
- gen_pci_device(03)
- gen_pci_device(04)
- gen_pci_device(05)
- gen_pci_device(06)
- gen_pci_device(07)
- gen_pci_device(08)
- gen_pci_device(09)
- gen_pci_device(0a)
- gen_pci_device(0b)
- gen_pci_device(0c)
- gen_pci_device(0d)
- gen_pci_device(0e)
- gen_pci_device(0f)
- gen_pci_device(10)
- gen_pci_device(11)
- gen_pci_device(12)
- gen_pci_device(13)
- gen_pci_device(14)
- gen_pci_device(15)
- gen_pci_device(16)
- gen_pci_device(17)
- gen_pci_device(18)
- gen_pci_device(19)
- gen_pci_device(1a)
- gen_pci_device(1b)
- gen_pci_device(1c)
- gen_pci_device(1d)
- gen_pci_device(1e)
- gen_pci_device(1f)
-
- /* Methods called by bulk generated hotplug devices below */
+ /* Methods called by hotplug devices */
Method (PCEJ, 1, NotSerialized) {
// _EJ0 method - eject callback
Store(ShiftLeft(1, Arg0), B0EJ)
Return (0x0)
}
- /* Bulk generated PCI hotplug devices */
-#define hotplug_slot(slot) \
- Device (S##slot) { \
- Name (_ADR, 0x##slot##0000) \
- Method (_EJ0, 1) { Return(PCEJ(0x##slot)) } \
- Name (_SUN, 0x##slot) \
- }
-
- hotplug_slot(01)
- hotplug_slot(02)
- hotplug_slot(03)
- hotplug_slot(04)
- hotplug_slot(05)
- hotplug_slot(06)
- hotplug_slot(07)
- hotplug_slot(08)
- hotplug_slot(09)
- hotplug_slot(0a)
- hotplug_slot(0b)
- hotplug_slot(0c)
- hotplug_slot(0d)
- hotplug_slot(0e)
- hotplug_slot(0f)
- hotplug_slot(10)
- hotplug_slot(11)
- hotplug_slot(12)
- hotplug_slot(13)
- hotplug_slot(14)
- hotplug_slot(15)
- hotplug_slot(16)
- hotplug_slot(17)
- hotplug_slot(18)
- hotplug_slot(19)
- hotplug_slot(1a)
- hotplug_slot(1b)
- hotplug_slot(1c)
- hotplug_slot(1d)
- hotplug_slot(1e)
- hotplug_slot(1f)
+ /* Hotplug notification method supplied by SSDT */
+ External (\_SB.PCI0.PCNT, MethodObj)
/* PCI hotplug notify method */
Method(PCNF, 0) {
@@ -575,42 +500,6 @@ DefinitionBlock (
Return(One)
}
-#define gen_pci_hotplug(slot) \
- If (LEqual(Arg0, 0x##slot)) { Notify(S##slot, Arg1) }
-
- Method(PCNT, 2) {
- gen_pci_hotplug(01)
- gen_pci_hotplug(02)
- gen_pci_hotplug(03)
- gen_pci_hotplug(04)
- gen_pci_hotplug(05)
- gen_pci_hotplug(06)
- gen_pci_hotplug(07)
- gen_pci_hotplug(08)
- gen_pci_hotplug(09)
- gen_pci_hotplug(0a)
- gen_pci_hotplug(0b)
- gen_pci_hotplug(0c)
- gen_pci_hotplug(0d)
- gen_pci_hotplug(0e)
- gen_pci_hotplug(0f)
- gen_pci_hotplug(10)
- gen_pci_hotplug(11)
- gen_pci_hotplug(12)
- gen_pci_hotplug(13)
- gen_pci_hotplug(14)
- gen_pci_hotplug(15)
- gen_pci_hotplug(16)
- gen_pci_hotplug(17)
- gen_pci_hotplug(18)
- gen_pci_hotplug(19)
- gen_pci_hotplug(1a)
- gen_pci_hotplug(1b)
- gen_pci_hotplug(1c)
- gen_pci_hotplug(1d)
- gen_pci_hotplug(1e)
- gen_pci_hotplug(1f)
- }
}
diff --git a/src/acpi.c b/src/acpi.c
index a3770ae..c5147d9 100644
--- a/src/acpi.c
+++ b/src/acpi.c
@@ -406,6 +406,7 @@ encodeLen(u8 *ssdt_ptr, int length, int bytes)
#define SD_PROC (ssdp_proc_aml + *ssdt_proc_start)
#define SSDT_SIGNATURE 0x54445353 // SSDT
+
static void*
build_ssdt(void)
{
@@ -483,6 +484,14 @@ build_ssdt(void)
return ssdt;
}
+static void*
+copy_table(void *table, int size)
+{
+ u8 *copy = malloc_high(size);
+ memcpy(copy, table, size);
+ return copy;
+}
+
#define HPET_SIGNATURE 0x54455048 // HPET
static void*
build_hpet(void)
@@ -633,6 +642,8 @@ static const struct pci_device_id acpi_find_tbl[] = {
struct rsdp_descriptor *RsdpAddr;
+#include "ssdt-pcihp.hex"
+
#define MAX_ACPI_TABLES 20
void
acpi_bios_init(void)
@@ -664,6 +675,7 @@ acpi_bios_init(void)
ACPI_INIT_TABLE(build_madt());
ACPI_INIT_TABLE(build_hpet());
ACPI_INIT_TABLE(build_srat());
+ ACPI_INIT_TABLE(copy_table(ssdp_pcihp_aml, sizeof ssdp_pcihp_aml));
u16 i, external_tables = qemu_cfg_acpi_additional_tables();
diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
new file mode 100644
index 0000000..72d1bb7
--- /dev/null
+++ b/src/ssdt-pcihp.dsl
@@ -0,0 +1,132 @@
+ACPI_EXTRACT_ALL_CODE ssdp_pcihp_aml
+
+DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
+{
+
+/****************************************************************
+ * PCI hotplug
+ ****************************************************************/
+
+ /* Objects supplied by DSDT */
+ External (\_SB.PCI0, DeviceObj)
+ External (\_SB.PCI0.PRMV, MethodObj)
+ External (\_SB.PCI0.PCEJ, MethodObj)
+
+ Scope(\_SB.PCI0) {
+
+#define gen_pci_device(slot) \
+ Device(SL##slot) { \
+ Name (_ADR, 0x##slot##0000) \
+ Method (_RMV) { Return (PRMV(0x##slot)) } \
+ Name (_SUN, 0x##slot) \
+ }
+
+ /* VGA (slot 1) and ISA bus (slot 2) defined in DSDT */
+ gen_pci_device(03)
+ gen_pci_device(04)
+ gen_pci_device(05)
+ gen_pci_device(06)
+ gen_pci_device(07)
+ gen_pci_device(08)
+ gen_pci_device(09)
+ gen_pci_device(0a)
+ gen_pci_device(0b)
+ gen_pci_device(0c)
+ gen_pci_device(0d)
+ gen_pci_device(0e)
+ gen_pci_device(0f)
+ gen_pci_device(10)
+ gen_pci_device(11)
+ gen_pci_device(12)
+ gen_pci_device(13)
+ gen_pci_device(14)
+ gen_pci_device(15)
+ gen_pci_device(16)
+ gen_pci_device(17)
+ gen_pci_device(18)
+ gen_pci_device(19)
+ gen_pci_device(1a)
+ gen_pci_device(1b)
+ gen_pci_device(1c)
+ gen_pci_device(1d)
+ gen_pci_device(1e)
+ gen_pci_device(1f)
+
+ /* Bulk generated PCI hotplug devices */
+#define hotplug_slot(slot) \
+ Device (S##slot) { \
+ Name (_ADR, 0x##slot##0000) \
+ Method (_EJ0, 1) { Return(PCEJ(0x##slot)) } \
+ Name (_SUN, 0x##slot) \
+ }
+
+ hotplug_slot(01)
+ hotplug_slot(02)
+ hotplug_slot(03)
+ hotplug_slot(04)
+ hotplug_slot(05)
+ hotplug_slot(06)
+ hotplug_slot(07)
+ hotplug_slot(08)
+ hotplug_slot(09)
+ hotplug_slot(0a)
+ hotplug_slot(0b)
+ hotplug_slot(0c)
+ hotplug_slot(0d)
+ hotplug_slot(0e)
+ hotplug_slot(0f)
+ hotplug_slot(10)
+ hotplug_slot(11)
+ hotplug_slot(12)
+ hotplug_slot(13)
+ hotplug_slot(14)
+ hotplug_slot(15)
+ hotplug_slot(16)
+ hotplug_slot(17)
+ hotplug_slot(18)
+ hotplug_slot(19)
+ hotplug_slot(1a)
+ hotplug_slot(1b)
+ hotplug_slot(1c)
+ hotplug_slot(1d)
+ hotplug_slot(1e)
+ hotplug_slot(1f)
+
+#define gen_pci_hotplug(slot) \
+ If (LEqual(Arg0, 0x##slot)) { Notify(S##slot, Arg1) }
+
+ Method(PCNT, 2) {
+ gen_pci_hotplug(01)
+ gen_pci_hotplug(02)
+ gen_pci_hotplug(03)
+ gen_pci_hotplug(04)
+ gen_pci_hotplug(05)
+ gen_pci_hotplug(06)
+ gen_pci_hotplug(07)
+ gen_pci_hotplug(08)
+ gen_pci_hotplug(09)
+ gen_pci_hotplug(0a)
+ gen_pci_hotplug(0b)
+ gen_pci_hotplug(0c)
+ gen_pci_hotplug(0d)
+ gen_pci_hotplug(0e)
+ gen_pci_hotplug(0f)
+ gen_pci_hotplug(10)
+ gen_pci_hotplug(11)
+ gen_pci_hotplug(12)
+ gen_pci_hotplug(13)
+ gen_pci_hotplug(14)
+ gen_pci_hotplug(15)
+ gen_pci_hotplug(16)
+ gen_pci_hotplug(17)
+ gen_pci_hotplug(18)
+ gen_pci_hotplug(19)
+ gen_pci_hotplug(1a)
+ gen_pci_hotplug(1b)
+ gen_pci_hotplug(1c)
+ gen_pci_hotplug(1d)
+ gen_pci_hotplug(1e)
+ gen_pci_hotplug(1f)
+ }
+ }
+}
--
1.7.5.53.gc233e
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCHv4 2/3] acpi: EJ0 method name patching
2011-11-20 17:56 [PATCHv4 0/3] acpi: DSDT/SSDT runtime patching Michael S. Tsirkin
2011-11-20 17:56 ` [PATCHv4 1/3] acpi: add ssdt for pci hotplug Michael S. Tsirkin
@ 2011-11-20 17:57 ` Michael S. Tsirkin
2011-11-20 17:57 ` [PATCHv4 3/3] acpi: remove _RMV Michael S. Tsirkin
2011-11-20 21:08 ` [PATCHv4 0/3] acpi: DSDT/SSDT runtime patching Kevin O'Connor
3 siblings, 0 replies; 7+ messages in thread
From: Michael S. Tsirkin @ 2011-11-20 17:57 UTC (permalink / raw)
To: Amos Kong; +Cc: kvm, jasowang, seabios, alex williamson
Modify ACPI to only supply _EJ0 methods for PCI slots that support hotplug.
This is done by runtime patching:
- Instrument SSDT ASL code with ACPI_EXTRACT directives
tagging _EJ0 and _ADR fields.
- At compile time, tools/acpi_extract.py looks for these methods
in ASL source finds the matching AML, and stores the offsets
of these methods in tables named aml_ej0_name and aml_adr_dword.
- At run time, go over aml_ej0_name, use aml_adr_dword
to get slot information and check which slots support hotplug.
If hotplug is disabled, we patch the _EJ0 NameString in ACPI table,
replacing _EJ0 with EJ0_.
Note that this has the same checksum, but is ignored by OSPM.
Note: the method used is robust in that we don't need
to change any offsets manually in case of ASL code changes.
As all parsing is done at compile time, any unexpected input causes
build failure, not a runtime failure.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
src/acpi.c | 44 ++++++++++++++++++++++++++++++++++++--------
src/ssdt-pcihp.dsl | 6 ++++++
2 files changed, 42 insertions(+), 8 deletions(-)
diff --git a/src/acpi.c b/src/acpi.c
index c5147d9..107469f 100644
--- a/src/acpi.c
+++ b/src/acpi.c
@@ -484,12 +484,42 @@ build_ssdt(void)
return ssdt;
}
-static void*
-copy_table(void *table, int size)
+#include "ssdt-pcihp.hex"
+
+#define PCI_RMV_BASE 0xae0c
+
+extern void link_time_assertion(void);
+
+static void* build_pcihp(void)
{
- u8 *copy = malloc_high(size);
- memcpy(copy, table, size);
- return copy;
+ u32 rmvc_pcrm;
+ int i;
+
+ u8 *ssdt = malloc_high(sizeof ssdp_pcihp_aml);
+ memcpy(ssdt, ssdp_pcihp_aml, sizeof ssdp_pcihp_aml);
+
+ /* Runtime patching of EJ0: to disable hotplug for a slot,
+ * replace the method name: _EJ0 by EJ0_. */
+ if (ARRAY_SIZE(aml_ej0_name) != ARRAY_SIZE(aml_adr_dword)) {
+ link_time_assertion();
+ }
+
+ rmvc_pcrm = inl(PCI_RMV_BASE);
+ for (i = 0; i < ARRAY_SIZE(aml_ej0_name); ++i) {
+ /* Slot is in byte 2 in _ADR */
+ u8 slot = ssdp_pcihp_aml[aml_adr_dword[i] + 2] & 0x1F;
+ /* Sanity check */
+ if (memcmp(ssdp_pcihp_aml + aml_ej0_name[i], "_EJ0", 4)) {
+ warn_internalerror();
+ free(ssdt);
+ return NULL;
+ }
+ if (!(rmvc_pcrm & (0x1 << slot))) {
+ memcpy(ssdt + aml_ej0_name[i], "EJ0_", 4);
+ }
+ }
+
+ return ssdt;
}
#define HPET_SIGNATURE 0x54455048 // HPET
@@ -642,8 +672,6 @@ static const struct pci_device_id acpi_find_tbl[] = {
struct rsdp_descriptor *RsdpAddr;
-#include "ssdt-pcihp.hex"
-
#define MAX_ACPI_TABLES 20
void
acpi_bios_init(void)
@@ -675,7 +703,7 @@ acpi_bios_init(void)
ACPI_INIT_TABLE(build_madt());
ACPI_INIT_TABLE(build_hpet());
ACPI_INIT_TABLE(build_srat());
- ACPI_INIT_TABLE(copy_table(ssdp_pcihp_aml, sizeof ssdp_pcihp_aml));
+ ACPI_INIT_TABLE(build_pcihp());
u16 i, external_tables = qemu_cfg_acpi_additional_tables();
diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
index 72d1bb7..cc96ffc 100644
--- a/src/ssdt-pcihp.dsl
+++ b/src/ssdt-pcihp.dsl
@@ -53,9 +53,15 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
gen_pci_device(1f)
/* Bulk generated PCI hotplug devices */
+ // Method _EJ0 can be patched by BIOS to EJ0_
+ // at runtime, if the slot is detected to not support hotplug.
+ // Extract the offset of the address dword and the
+ // _EJ0 name to allow this patching.
#define hotplug_slot(slot) \
Device (S##slot) { \
+ ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword \
Name (_ADR, 0x##slot##0000) \
+ ACPI_EXTRACT_METHOD_STRING aml_ej0_name \
Method (_EJ0, 1) { Return(PCEJ(0x##slot)) } \
Name (_SUN, 0x##slot) \
}
--
1.7.5.53.gc233e
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCHv4 3/3] acpi: remove _RMV
2011-11-20 17:56 [PATCHv4 0/3] acpi: DSDT/SSDT runtime patching Michael S. Tsirkin
2011-11-20 17:56 ` [PATCHv4 1/3] acpi: add ssdt for pci hotplug Michael S. Tsirkin
2011-11-20 17:57 ` [PATCHv4 2/3] acpi: EJ0 method name patching Michael S. Tsirkin
@ 2011-11-20 17:57 ` Michael S. Tsirkin
2011-11-20 21:08 ` [PATCHv4 0/3] acpi: DSDT/SSDT runtime patching Kevin O'Connor
3 siblings, 0 replies; 7+ messages in thread
From: Michael S. Tsirkin @ 2011-11-20 17:57 UTC (permalink / raw)
To: Amos Kong; +Cc: kvm, jasowang, seabios, alex williamson
The macro gen_pci_device is used to add _RMV
method to a slot device so it is no longer needed:
presence of _EJ0 now indicates that the slot is ejectable.
It is also placing two devices with the same _ADR
on the same bus, which isn't defined by the ACPI spec.
So let's remove it.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
src/acpi-dsdt.dsl | 15 ---------------
src/ssdt-pcihp.dsl | 40 ----------------------------------------
2 files changed, 0 insertions(+), 55 deletions(-)
diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl
index f97d463..aff3f48 100644
--- a/src/acpi-dsdt.dsl
+++ b/src/acpi-dsdt.dsl
@@ -132,12 +132,6 @@ DefinitionBlock (
B0EJ, 32,
}
- OperationRegion(RMVC, SystemIO, 0xae0c, 0x04)
- Field(RMVC, DWordAcc, NoLock, WriteAsZeros)
- {
- PCRM, 32,
- }
-
Name (_CRS, ResourceTemplate ()
{
WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
@@ -239,7 +233,6 @@ DefinitionBlock (
Return (0x00)
}
}
- Method(_RMV) { Return (0x00) }
}
}
@@ -251,7 +244,6 @@ DefinitionBlock (
Scope(\_SB.PCI0) {
Device (ISA) {
Name (_ADR, 0x00010000)
- Method(_RMV) { Return (0x00) }
/* PIIX PCI to ISA irq remapping */
OperationRegion (P40C, PCI_Config, 0x60, 0x04)
@@ -466,13 +458,6 @@ DefinitionBlock (
Scope(\_SB.PCI0) {
/* Methods called by bulk generated PCI devices below */
- Method (PRMV, 1, NotSerialized) {
- // _RMV method - check if device can be removed
- If (And(\_SB.PCI0.PCRM, ShiftLeft(1, Arg0))) {
- Return (0x1)
- }
- Return (0x0)
- }
/* Methods called by hotplug devices */
Method (PCEJ, 1, NotSerialized) {
diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
index cc96ffc..4b435b8 100644
--- a/src/ssdt-pcihp.dsl
+++ b/src/ssdt-pcihp.dsl
@@ -9,49 +9,9 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
/* Objects supplied by DSDT */
External (\_SB.PCI0, DeviceObj)
- External (\_SB.PCI0.PRMV, MethodObj)
External (\_SB.PCI0.PCEJ, MethodObj)
Scope(\_SB.PCI0) {
-
-#define gen_pci_device(slot) \
- Device(SL##slot) { \
- Name (_ADR, 0x##slot##0000) \
- Method (_RMV) { Return (PRMV(0x##slot)) } \
- Name (_SUN, 0x##slot) \
- }
-
- /* VGA (slot 1) and ISA bus (slot 2) defined in DSDT */
- gen_pci_device(03)
- gen_pci_device(04)
- gen_pci_device(05)
- gen_pci_device(06)
- gen_pci_device(07)
- gen_pci_device(08)
- gen_pci_device(09)
- gen_pci_device(0a)
- gen_pci_device(0b)
- gen_pci_device(0c)
- gen_pci_device(0d)
- gen_pci_device(0e)
- gen_pci_device(0f)
- gen_pci_device(10)
- gen_pci_device(11)
- gen_pci_device(12)
- gen_pci_device(13)
- gen_pci_device(14)
- gen_pci_device(15)
- gen_pci_device(16)
- gen_pci_device(17)
- gen_pci_device(18)
- gen_pci_device(19)
- gen_pci_device(1a)
- gen_pci_device(1b)
- gen_pci_device(1c)
- gen_pci_device(1d)
- gen_pci_device(1e)
- gen_pci_device(1f)
-
/* Bulk generated PCI hotplug devices */
// Method _EJ0 can be patched by BIOS to EJ0_
// at runtime, if the slot is detected to not support hotplug.
--
1.7.5.53.gc233e
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCHv4 0/3] acpi: DSDT/SSDT runtime patching
2011-11-20 17:56 [PATCHv4 0/3] acpi: DSDT/SSDT runtime patching Michael S. Tsirkin
` (2 preceding siblings ...)
2011-11-20 17:57 ` [PATCHv4 3/3] acpi: remove _RMV Michael S. Tsirkin
@ 2011-11-20 21:08 ` Kevin O'Connor
2011-11-21 20:22 ` Michael S. Tsirkin
3 siblings, 1 reply; 7+ messages in thread
From: Kevin O'Connor @ 2011-11-20 21:08 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Amos Kong, seabios, Gleb Natapov, kvm, jasowang, alex williamson,
Marcelo Tosatti
On Sun, Nov 20, 2011 at 07:56:43PM +0200, Michael S. Tsirkin wrote:
> Here's an updated revision of acpi runtime patching patchset.
> Lightly tested.
It looks good to me.
-Kevin
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCHv4 0/3] acpi: DSDT/SSDT runtime patching
2011-11-20 21:08 ` [PATCHv4 0/3] acpi: DSDT/SSDT runtime patching Kevin O'Connor
@ 2011-11-21 20:22 ` Michael S. Tsirkin
2011-11-23 3:06 ` Kevin O'Connor
0 siblings, 1 reply; 7+ messages in thread
From: Michael S. Tsirkin @ 2011-11-21 20:22 UTC (permalink / raw)
To: Kevin O'Connor; +Cc: kvm, jasowang, seabios, alex williamson, Amos Kong
On Sun, Nov 20, 2011 at 04:08:59PM -0500, Kevin O'Connor wrote:
> On Sun, Nov 20, 2011 at 07:56:43PM +0200, Michael S. Tsirkin wrote:
> > Here's an updated revision of acpi runtime patching patchset.
> > Lightly tested.
>
> It looks good to me.
>
> -Kevin
Run some linux and windows tests, things seem to work
smoothly. Pls apply.
--
MST
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCHv4 0/3] acpi: DSDT/SSDT runtime patching
2011-11-21 20:22 ` Michael S. Tsirkin
@ 2011-11-23 3:06 ` Kevin O'Connor
0 siblings, 0 replies; 7+ messages in thread
From: Kevin O'Connor @ 2011-11-23 3:06 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Amos Kong, seabios, Gleb Natapov, kvm, jasowang, alex williamson,
Marcelo Tosatti
On Mon, Nov 21, 2011 at 10:22:22PM +0200, Michael S. Tsirkin wrote:
> On Sun, Nov 20, 2011 at 04:08:59PM -0500, Kevin O'Connor wrote:
> > On Sun, Nov 20, 2011 at 07:56:43PM +0200, Michael S. Tsirkin wrote:
> > > Here's an updated revision of acpi runtime patching patchset.
> > > Lightly tested.
> >
> > It looks good to me.
> >
> > -Kevin
>
> Run some linux and windows tests, things seem to work
> smoothly. Pls apply.
I committed this series.
Thanks,
-Kevin
^ permalink raw reply [flat|nested] 7+ messages in thread