On Tue, 3 Nov 2015, at 02:25 AM, Shannon Zhao wrote: > Hi Graeme, > > On 2015/11/2 18:39, Graeme Gregory wrote: > > According to ACPI specification 6.2.17 _CCA (Cache Coherency Attribute) > > this attribute is compulsary on ARM systems. Add this attribute to > > the PCI host bridges as required. > > > > To ACPI 5.1 this object is not compulsory and if not supplied it has > default value for it. But to ACPI 6.0 it must be supplied on ARM systems. > Regarding this change, ACPI 6.0 fixes 5.1 for this object, right? >
Hi Shannon, the wording in ACPI 5.1 is "On ARM based systems, the _CCA object must be supplied all such devices." So is not functionally different from 6.0. Graeme > > Without this the kernel will produce the error > > [Firmware Bug]: PCI device 0000:00:00.0 fail to setup DMA. > > > > Signed-off-by: Graeme Gregory <graeme.greg...@linaro.org> > > --- > > hw/arm/virt-acpi-build.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c > > index 1aaff1f..1430125 100644 > > --- a/hw/arm/virt-acpi-build.c > > +++ b/hw/arm/virt-acpi-build.c > > @@ -180,6 +180,7 @@ static void acpi_dsdt_add_pci(Aml *scope, const > > MemMapEntry *memmap, int irq, > > aml_append(dev, aml_name_decl("_ADR", aml_int(0))); > > aml_append(dev, aml_name_decl("_UID", aml_string("PCI0"))); > > aml_append(dev, aml_name_decl("_STR", aml_unicode("PCIe 0 Device"))); > > + aml_append(dev, aml_name_decl("_CCA", aml_int(1))); > > > > /* Declare the PCI Routing Table. */ > > Aml *rt_pkg = aml_package(nr_pcie_buses * PCI_NUM_PINS); > > > > -- > Shannon > >