Re: [Alternative][PATCH] ACPI / PCI: Set root bridge ACPI handle in advance
From: Yinghai Lu <yinghai@kernel.org>
Date: 2012-12-27 00:10:39
Also in:
linux-pci, lkml
On Wed, Dec 26, 2012 at 2:36 PM, Rafael J. Wysocki [off-list ref] wrote:
On Wednesday, December 26, 2012 12:41:05 PM Yinghai Lu wrote:quoted
On Wed, Dec 26, 2012 at 12:16 PM, Yinghai Lu [off-list ref] wrote:quoted
On Wed, Dec 26, 2012 at 12:10 PM, Bjorn Helgaas [off-list ref] wrote:quoted
Do you have a reference for this? I think this might have been true in the past, but I don't think it's true for any version of gcc we support for building Linux.http://lkml.indiana.edu/hypermail/linux/kernel/0804.3/3600.htmlthe problem is already addressed by: | commit f9d14250071eda9972e4c9cea745a11185952114 | Author: Linus Torvalds [off-list ref] | Date: Fri Jan 2 09:29:43 2009 -0800 | | Disallow gcc versions 4.1.{0,1} | | These compiler versions are known to miscompile __weak functions and | thus generate kernels that don't necessarily work correctly. If a weak | function is int he same compilation unit as a caller, gcc may end up | inlining it, and thus binding the weak function too early. | | See | | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27781 | | for details. so it is ok to put the __weak in the same file now.Cool, thanks for checking and for the ACK!
wait, we have some problem on systems that root bus is not exported via DSDT ...
one of my nehalem system that have uncore cpu devices are not exported via ACPI.
also there will be problem that system is booting with acpi=off.
+int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge)
+{
+ struct pci_sysdata *sd = bridge->bus->sysdata;
+ struct pci_root_info *info = container_of(sd, struct pci_root_info, sd);
+
+ ACPI_HANDLE_SET(&bridge->dev, info->bridge->handle);
+ return 0;
+}
will get wrong info...via sd... as their sd is standalone
Thanks
Yinghai