|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [Qemu-devel] [PATCH v5 12/24] hw: acpi: Export the MCFG getter
On Thu, 22 Nov 2018 00:21:06 +0100
Samuel Ortiz <sameo@xxxxxxxxxxxxxxx> wrote:
> Hi Igor,
>
> On Thu, Nov 15, 2018 at 01:36:58PM +0100, Igor Mammedov wrote:
> > On Mon, 5 Nov 2018 02:40:35 +0100
> > Samuel Ortiz <sameo@xxxxxxxxxxxxxxx> wrote:
> >
> > > From: Yang Zhong <yang.zhong@xxxxxxxxx>
> > >
> > > The ACPI MCFG getter is not x86 specific and could be called from
> > > anywhere within generic ACPI API, so let's export it.
> > So far it's x86 or more exactly q35 specific thing,
> It's property based, and it's using a generic PCIE property afaict.
> So it's up to each machine type to define those properties.
> I'm curious here: What's the idiomatic way to define a machine
> setting/attribute/property, let each instance define it or not, and
> make it available at run time?
> Would you be getting the PCI host pointer from the ACPI build state and
> getting that information back from there?
Cleaner way would be make arm/virt board set PCIE_HOST_MCFG_BASE/
PCIE_HOST_MCFG_SIZE properties and then use common build_mcfg()(in aml-build.c).
Something like this:
acpi_setup_reduced()
AcpiMcfgInfo mcfg_info = {
.base = object_property_get_uint(pcie, PCIE_HOST_MCFG_BASE, NULL),
.size = object_property_get_uint(pcie, PCIE_HOST_MCFG_SIZE, NULL)
};
acpi_build() {
build_mcfg("MCFG", &info);
}
}
and for legacy q35
acpi_build() {
if (pcie) {
AcpiMcfgInfo mcfg_info = {
.base = object_property_get_uint(pcie, PCIE_HOST_MCFG_BASE, NULL),
.size = object_property_get_uint(pcie, PCIE_HOST_MCFG_SIZE, NULL)
};
if (mcfg_info.base != PCIE_BASE_ADDR_UNMAPPED)
build_mcfg("MCFG", &info);
else
/* move comment here why we are doing it */
build_mcfg("QEMU", &info);
}
}
The thing I don't like about acpi_get_mcfg() is that it
does lookup acpi_get_i386_pci_host() each time it's called
and judges if it's PCI-E host by presence of properties.
I'd rather be explicit where PCI host be fetched once somewhere
in acpi_setup() or possibly passed down from the board as an argument
and board telling to i386/acpi_setup() if it's PCI or PCI-E host
so we don't have to guess it in acpi code.
> Cheers,
> Samuel.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |