Re: [PATCH 00/35] pc/q35: refactor ISA and SMBUS AML generation
On Mon, 16 May 2022 16:47:20 -0400 "Michael S. Tsirkin" wrote: > On Mon, May 16, 2022 at 11:25:35AM -0400, Igor Mammedov wrote: > > > > Series is excerpt form larger refactoring that does > > the same for PCI devices, but it's too large at this > > point, so I've split off a relatively self-contained > > ISA/SMBUS patches into a smaller separate series, and > > PCI refactoring will follow up on top of this series > > using the same AcpiDevAmlIf interface. > > > > Series consolidates and unifies how pc/q35 machine > > generates AML for ISA and SMBUS devices. It adds > > a new more generic interface 'AcpiDevAmlIf' that > > replaces ISA specific ISADeviceClass::build_aml > > hook and should allow to use the same approach > > (i.e. ask a device to provide its own AML) but > > not limited to ISA bus. > > Series applies AcpiDevAmlIf interface to a few > > ISA devices that were already using > > ISADeviceClass::build_aml and to devices /tpm, > > applesmc,pvpanic,ipmi/ that were generated in > > custom way. The AML generation for the later > > class is normalized to behave like any other > > ISA device that were using ISADeviceClass::build_aml > > and converted to interface 'AcpiDevAmlIf'. > > It simplifies process of building DSDT and > > eliminates custom probing/wiring for those devices > > as AML for them is generated at the time ISA/SMBUS > > is enumerated. > > > > Changes to DSDT tables QEMU generates are mostly > > contextual where devices scattered across DSDT > > are consolidated under respective device that > > hosts bus they are attached to. > > I like this. Have one further enhancement idea before > applying this, sent on list. I'd prefer to implement that enhancement on top of this series (and may be on top of follow up PCI conversion) if we have to do it (as the enhancement would be a bit of off-topic churn, i.e. solving another issue that we already have). > > PS: > > + series adds several ACPI tests for devices > >that were missing them. > > > > Igor Mammedov (35): > > acpi: add interface to build device specific AML > > acpi: make isa_build_aml() support AcpiDevAmlIf interface > > acpi: fdc-isa: replace ISADeviceClass::build_aml with > > AcpiDevAmlIfClass:build_dev_aml > > acpi: parallel port: replace ISADeviceClass::build_aml with > > AcpiDevAmlIfClass:build_dev_aml > > acpi: serial-is: replace ISADeviceClass::build_aml with > > AcpiDevAmlIfClass:build_dev_aml > > acpi: mc146818rtc: replace ISADeviceClass::build_aml with > > AcpiDevAmlIfClass:build_dev_aml > > acpi: pckbd: replace ISADeviceClass::build_aml with > > AcpiDevAmlIfClass:build_dev_aml > > isa-bus: drop no longer used ISADeviceClass::build_aml > > tests: acpi: add and whitelist DSDT.ipmismbus expected blob > > tests: acpi: q35: add test for smbus-ipmi device > > tests: acpi: update expected blob DSDT.ipmismbus > > tests: acpi: whitelist DSDT.ipmismbus expected blob > > ipmi: acpi: use relative path to resource source > > tests: acpi: update expected DSDT.ipmismbus blob > > acpi: ich9-smb: add support for AcpiDevAmlIf interface > > acpi: ipmi: use AcpiDevAmlIf interface to build IPMI device > > descriptors > > q35: acpi: drop not needed PCMachineClass::do_not_add_smb_acpi > > tests: acpi: white-list to be re-factored pc/q35 DSDT > > acpi: pc: isa bridge: use AcpiDevAmlIf interface to build ISA device > > descriptors > > acpi: q35: isa bridge: use AcpiDevAmlIf interface to build ISA device > > descriptors > > tests: acpi: update expected blobs > > tests: acpi: add and white-list DSDT.applesmc expected blob > > tests: acpi: add applesmc testcase > > acpi: applesmc: use AcpiDevAmlIfClass:build_dev_aml to provide > > device's AML > > tests: acpi: update expected blobs > > tests: acpi: white-lists expected DSDT.pvpanic-isa blob > > tests: acpi: add pvpanic-isa: testcase > > acpi: pvpanic-isa: use AcpiDevAmlIfClass:build_dev_aml to provide > > device's AML > > tests: acpi: update expected DSDT.pvpanic-isa blob > > tests: acpi: white-list DSDT.tis.tpm2/DSDT.tis.tpm12 expected blobs > > acpi: pc/q35: tpm-tis: fix TPM device scope > > acpi: pc/q35: remove not needed 'if' condition on pci bus > > acpi: tpm-tis: use AcpiDevAmlIfClass:build_dev_aml to provide device's > > AML > > tests: acpi: update expected DSDT.tis.tpm2/DSDT.tis.tpm12 blobs > > x86: acpi-build: do not include hw/isa/isa.h directly > > > > include/hw/acpi/acpi_aml_interface.h | 40 ++ > > include/hw/acpi/ipmi.h| 9 +- > > include/hw/i386/pc.h | 1 - > > include/hw/isa/isa.h | 15 --- > > include/hw/misc/pvpanic.h | 9 -- > > hw/acpi/acpi_interface.c | 8 ++ > > hw/acpi/ipmi-stub.c | 2 +- > > hw/acpi/ipmi.c| 53 +++- > > hw/acpi/meson.build | 2 +- > > hw/block/fdc-isa.c|
Re: [PATCH 00/35] pc/q35: refactor ISA and SMBUS AML generation
On Mon, May 16, 2022 at 11:25:35AM -0400, Igor Mammedov wrote: > > Series is excerpt form larger refactoring that does > the same for PCI devices, but it's too large at this > point, so I've split off a relatively self-contained > ISA/SMBUS patches into a smaller separate series, and > PCI refactoring will follow up on top of this series > using the same AcpiDevAmlIf interface. > > Series consolidates and unifies how pc/q35 machine > generates AML for ISA and SMBUS devices. It adds > a new more generic interface 'AcpiDevAmlIf' that > replaces ISA specific ISADeviceClass::build_aml > hook and should allow to use the same approach > (i.e. ask a device to provide its own AML) but > not limited to ISA bus. > Series applies AcpiDevAmlIf interface to a few > ISA devices that were already using > ISADeviceClass::build_aml and to devices /tpm, > applesmc,pvpanic,ipmi/ that were generated in > custom way. The AML generation for the later > class is normalized to behave like any other > ISA device that were using ISADeviceClass::build_aml > and converted to interface 'AcpiDevAmlIf'. > It simplifies process of building DSDT and > eliminates custom probing/wiring for those devices > as AML for them is generated at the time ISA/SMBUS > is enumerated. > > Changes to DSDT tables QEMU generates are mostly > contextual where devices scattered across DSDT > are consolidated under respective device that > hosts bus they are attached to. Promoting the ISADeviceClass::build_aml idea to a more general approach certainly makes sense. ISA update is fine. Skimmed the other updates too, looks all sane to me. Acked-by: Gerd Hoffmann take care, Gerd
Re: [PATCH 00/35] pc/q35: refactor ISA and SMBUS AML generation
On Mon, May 16, 2022 at 11:25:35AM -0400, Igor Mammedov wrote: > > Series is excerpt form larger refactoring that does > the same for PCI devices, but it's too large at this > point, so I've split off a relatively self-contained > ISA/SMBUS patches into a smaller separate series, and > PCI refactoring will follow up on top of this series > using the same AcpiDevAmlIf interface. > > Series consolidates and unifies how pc/q35 machine > generates AML for ISA and SMBUS devices. It adds > a new more generic interface 'AcpiDevAmlIf' that > replaces ISA specific ISADeviceClass::build_aml > hook and should allow to use the same approach > (i.e. ask a device to provide its own AML) but > not limited to ISA bus. > Series applies AcpiDevAmlIf interface to a few > ISA devices that were already using > ISADeviceClass::build_aml and to devices /tpm, > applesmc,pvpanic,ipmi/ that were generated in > custom way. The AML generation for the later > class is normalized to behave like any other > ISA device that were using ISADeviceClass::build_aml > and converted to interface 'AcpiDevAmlIf'. > It simplifies process of building DSDT and > eliminates custom probing/wiring for those devices > as AML for them is generated at the time ISA/SMBUS > is enumerated. > > Changes to DSDT tables QEMU generates are mostly > contextual where devices scattered across DSDT > are consolidated under respective device that > hosts bus they are attached to. I like this. Have one further enhancement idea before applying this, sent on list. > PS: > + series adds several ACPI tests for devices >that were missing them. > > Igor Mammedov (35): > acpi: add interface to build device specific AML > acpi: make isa_build_aml() support AcpiDevAmlIf interface > acpi: fdc-isa: replace ISADeviceClass::build_aml with > AcpiDevAmlIfClass:build_dev_aml > acpi: parallel port: replace ISADeviceClass::build_aml with > AcpiDevAmlIfClass:build_dev_aml > acpi: serial-is: replace ISADeviceClass::build_aml with > AcpiDevAmlIfClass:build_dev_aml > acpi: mc146818rtc: replace ISADeviceClass::build_aml with > AcpiDevAmlIfClass:build_dev_aml > acpi: pckbd: replace ISADeviceClass::build_aml with > AcpiDevAmlIfClass:build_dev_aml > isa-bus: drop no longer used ISADeviceClass::build_aml > tests: acpi: add and whitelist DSDT.ipmismbus expected blob > tests: acpi: q35: add test for smbus-ipmi device > tests: acpi: update expected blob DSDT.ipmismbus > tests: acpi: whitelist DSDT.ipmismbus expected blob > ipmi: acpi: use relative path to resource source > tests: acpi: update expected DSDT.ipmismbus blob > acpi: ich9-smb: add support for AcpiDevAmlIf interface > acpi: ipmi: use AcpiDevAmlIf interface to build IPMI device > descriptors > q35: acpi: drop not needed PCMachineClass::do_not_add_smb_acpi > tests: acpi: white-list to be re-factored pc/q35 DSDT > acpi: pc: isa bridge: use AcpiDevAmlIf interface to build ISA device > descriptors > acpi: q35: isa bridge: use AcpiDevAmlIf interface to build ISA device > descriptors > tests: acpi: update expected blobs > tests: acpi: add and white-list DSDT.applesmc expected blob > tests: acpi: add applesmc testcase > acpi: applesmc: use AcpiDevAmlIfClass:build_dev_aml to provide > device's AML > tests: acpi: update expected blobs > tests: acpi: white-lists expected DSDT.pvpanic-isa blob > tests: acpi: add pvpanic-isa: testcase > acpi: pvpanic-isa: use AcpiDevAmlIfClass:build_dev_aml to provide > device's AML > tests: acpi: update expected DSDT.pvpanic-isa blob > tests: acpi: white-list DSDT.tis.tpm2/DSDT.tis.tpm12 expected blobs > acpi: pc/q35: tpm-tis: fix TPM device scope > acpi: pc/q35: remove not needed 'if' condition on pci bus > acpi: tpm-tis: use AcpiDevAmlIfClass:build_dev_aml to provide device's > AML > tests: acpi: update expected DSDT.tis.tpm2/DSDT.tis.tpm12 blobs > x86: acpi-build: do not include hw/isa/isa.h directly > > include/hw/acpi/acpi_aml_interface.h | 40 ++ > include/hw/acpi/ipmi.h| 9 +- > include/hw/i386/pc.h | 1 - > include/hw/isa/isa.h | 15 --- > include/hw/misc/pvpanic.h | 9 -- > hw/acpi/acpi_interface.c | 8 ++ > hw/acpi/ipmi-stub.c | 2 +- > hw/acpi/ipmi.c| 53 +++- > hw/acpi/meson.build | 2 +- > hw/block/fdc-isa.c| 16 ++- > hw/char/parallel.c| 14 ++- > hw/char/serial-isa.c | 14 ++- > hw/i2c/smbus_ich9.c | 15 +++ > hw/i386/acpi-build.c | 171 ++ > hw/i386/pc_piix.c | 1 - > hw/i386/pc_q35.c | 1 - > hw/input/pckbd.c | 14 ++- > hw/ipmi/isa_ipmi_bt.c | 4 + > hw/ipmi/isa_ipmi_kcs.c| 4 + >
[PATCH 00/35] pc/q35: refactor ISA and SMBUS AML generation
Series is excerpt form larger refactoring that does the same for PCI devices, but it's too large at this point, so I've split off a relatively self-contained ISA/SMBUS patches into a smaller separate series, and PCI refactoring will follow up on top of this series using the same AcpiDevAmlIf interface. Series consolidates and unifies how pc/q35 machine generates AML for ISA and SMBUS devices. It adds a new more generic interface 'AcpiDevAmlIf' that replaces ISA specific ISADeviceClass::build_aml hook and should allow to use the same approach (i.e. ask a device to provide its own AML) but not limited to ISA bus. Series applies AcpiDevAmlIf interface to a few ISA devices that were already using ISADeviceClass::build_aml and to devices /tpm, applesmc,pvpanic,ipmi/ that were generated in custom way. The AML generation for the later class is normalized to behave like any other ISA device that were using ISADeviceClass::build_aml and converted to interface 'AcpiDevAmlIf'. It simplifies process of building DSDT and eliminates custom probing/wiring for those devices as AML for them is generated at the time ISA/SMBUS is enumerated. Changes to DSDT tables QEMU generates are mostly contextual where devices scattered across DSDT are consolidated under respective device that hosts bus they are attached to. PS: + series adds several ACPI tests for devices that were missing them. Igor Mammedov (35): acpi: add interface to build device specific AML acpi: make isa_build_aml() support AcpiDevAmlIf interface acpi: fdc-isa: replace ISADeviceClass::build_aml with AcpiDevAmlIfClass:build_dev_aml acpi: parallel port: replace ISADeviceClass::build_aml with AcpiDevAmlIfClass:build_dev_aml acpi: serial-is: replace ISADeviceClass::build_aml with AcpiDevAmlIfClass:build_dev_aml acpi: mc146818rtc: replace ISADeviceClass::build_aml with AcpiDevAmlIfClass:build_dev_aml acpi: pckbd: replace ISADeviceClass::build_aml with AcpiDevAmlIfClass:build_dev_aml isa-bus: drop no longer used ISADeviceClass::build_aml tests: acpi: add and whitelist DSDT.ipmismbus expected blob tests: acpi: q35: add test for smbus-ipmi device tests: acpi: update expected blob DSDT.ipmismbus tests: acpi: whitelist DSDT.ipmismbus expected blob ipmi: acpi: use relative path to resource source tests: acpi: update expected DSDT.ipmismbus blob acpi: ich9-smb: add support for AcpiDevAmlIf interface acpi: ipmi: use AcpiDevAmlIf interface to build IPMI device descriptors q35: acpi: drop not needed PCMachineClass::do_not_add_smb_acpi tests: acpi: white-list to be re-factored pc/q35 DSDT acpi: pc: isa bridge: use AcpiDevAmlIf interface to build ISA device descriptors acpi: q35: isa bridge: use AcpiDevAmlIf interface to build ISA device descriptors tests: acpi: update expected blobs tests: acpi: add and white-list DSDT.applesmc expected blob tests: acpi: add applesmc testcase acpi: applesmc: use AcpiDevAmlIfClass:build_dev_aml to provide device's AML tests: acpi: update expected blobs tests: acpi: white-lists expected DSDT.pvpanic-isa blob tests: acpi: add pvpanic-isa: testcase acpi: pvpanic-isa: use AcpiDevAmlIfClass:build_dev_aml to provide device's AML tests: acpi: update expected DSDT.pvpanic-isa blob tests: acpi: white-list DSDT.tis.tpm2/DSDT.tis.tpm12 expected blobs acpi: pc/q35: tpm-tis: fix TPM device scope acpi: pc/q35: remove not needed 'if' condition on pci bus acpi: tpm-tis: use AcpiDevAmlIfClass:build_dev_aml to provide device's AML tests: acpi: update expected DSDT.tis.tpm2/DSDT.tis.tpm12 blobs x86: acpi-build: do not include hw/isa/isa.h directly include/hw/acpi/acpi_aml_interface.h | 40 ++ include/hw/acpi/ipmi.h| 9 +- include/hw/i386/pc.h | 1 - include/hw/isa/isa.h | 15 --- include/hw/misc/pvpanic.h | 9 -- hw/acpi/acpi_interface.c | 8 ++ hw/acpi/ipmi-stub.c | 2 +- hw/acpi/ipmi.c| 53 +++- hw/acpi/meson.build | 2 +- hw/block/fdc-isa.c| 16 ++- hw/char/parallel.c| 14 ++- hw/char/serial-isa.c | 14 ++- hw/i2c/smbus_ich9.c | 15 +++ hw/i386/acpi-build.c | 171 ++ hw/i386/pc_piix.c | 1 - hw/i386/pc_q35.c | 1 - hw/input/pckbd.c | 14 ++- hw/ipmi/isa_ipmi_bt.c | 4 + hw/ipmi/isa_ipmi_kcs.c| 4 + hw/ipmi/smbus_ipmi.c | 4 + hw/isa/isa-bus.c | 9 +- hw/isa/lpc_ich9.c | 19 +++ hw/isa/piix3.c| 17 +++ hw/misc/applesmc.c| 29 + hw/misc/pvpanic-isa.c | 42 +++ hw/rtc/mc146818rtc.c | 14 ++- hw/tpm/tpm_tis_isa.c