On Thursday, December 27, 2012 02:31:09 PM Rafael J. Wysocki wrote: > On Thursday, December 27, 2012 01:47:22 PM Rafael J. Wysocki wrote: > > On Wednesday, December 26, 2012 04:10:32 PM Yinghai Lu wrote: > > > On Wed, Dec 26, 2012 at 2:36 PM, Rafael J. Wysocki <rjw@xxxxxxx> wrote: > > > > On Wednesday, December 26, 2012 12:41:05 PM Yinghai Lu wrote: > > > >> On Wed, Dec 26, 2012 at 12:16 PM, Yinghai Lu <yinghai@xxxxxxxxxx> wrote: > > > >> > On Wed, Dec 26, 2012 at 12:10 PM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote: > > > >> >> 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.html > > > >> > > > >> the problem is already addressed by: > > > >> > > > >> | commit f9d14250071eda9972e4c9cea745a11185952114 > > > >> | Author: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > > > >> | 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 > > > > Yes, it will be called in all code paths leading to acpi_create_root_bus(), > > not only the ones started by pci_acpi_scan_root(). Well, too bad. > > s/acpi_create_root_bus/pci_create_root_bus/ > > Sorry. > > > By the way, that illustrates nicely why I generally have concerns about __weak > > stuff and similar tricks. > > > > Bjorn, I had tried to use the approach you suggested, but it didn't work. > > I thought about fixing that, but everything I could come up with turned out to > > be too complicated, so I'm inclined to use the previous version after all: > > > > https://patchwork.kernel.org/patch/1889221/ > > > > that has been acked by Yinghai, Greg and Peter already. I think I know how to avoid the __weak thing without doing what the first version did. I'll post a new version of the patch shortly. Thanks, Rafael -- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center. -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html