https://bugzilla.kernel.org/show_bug.cgi?id=15701
Summary: Linux should ignore Producer/Consumer bit in _CRS Address Space descriptors Product: ACPI Version: 2.5 Kernel Version: 2.6.34-rc3 Platform: All OS/Version: Linux Tree: Mainline Status: NEW Severity: normal Priority: P1 Component: Config-Other AssignedTo: acpi_config-ot...@kernel-bugs.osdl.org ReportedBy: bjorn.helg...@hp.com Regression: No In the ACPI PCI host bridge driver, the arch-specific code parses _CRS resources to learn the windows forwarded to the PCI bus. Both ia64 and x86 follow section 6.4.3.5 of ACPI spec 4.0, which says that Bit[0] of Byte 4 in QWord, DWord, Word, and Extended Address Space Descriptors is a "Consumer/Producer" bit. This bit is set if the device consumes the resource, and clear if the device produces and consumes it, i.e., if the device forwards the resource to a downstream bus. However, it is rumored that BIOSes have not used the Consumer/Producer bit consistently, and the bit was documented as "Ignored" in ACPI 2.0c. The bit was added back in 3.0, but this apparently was a mistake. I experimented with Windows Server 2008 R2 in a qemu environment, running SeaBIOS, where I could modify the _CRS description and see how Windows handled it. The PCI host bridge windows should be described as ResourceProducer, and the HPET registers should be described as ResourceConsumer. As shown here, I modified the SeaBIOS DSDT to reverse both flags, so the bridge window is a Consumer and the HPET registers are a Producer: Device(PCI0) { Name (_HID, EisaId ("PNP0A03")) Name (_CRS, ResourceTemplate () { ... DWordMemory (ResourceConsumer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, 0x00000000, // Address Space Granularity 0xE0000000, // Address Range Minimum 0xFEBFFFFF, // Address Range Maximum 0x00000000, // Address Translation Offset 0x1EC00000, // Address Length ,, , AddressRangeMemory, TypeStatic) }) } Device(HPET) { Name(_HID, EISAID("PNP0103")) Name(_CRS, ResourceTemplate() { DWordMemory( ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, 0x00000000, 0xFED00000, 0xFED003FF, 0x00000000, 0x00000400 /* 1K memory: FED00000 - FED003FF */ ) }) } The attachments of Windows Device Manager screenshots show that Windows interpreted the bridge ResourceConsumer as a window and the HPET ResourceProducer as normal registers. PCI devices, e.g., the NIC and VGA, inside the ResourceConsumer range worked normally. -- Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are watching the assignee of the bug. ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ acpi-bugzilla mailing list acpi-bugzilla@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla