2011/7/27 John W. Linville <linville@xxxxxxxxxxxxx>: > On Wed, Jul 27, 2011 at 05:20:15PM +0800, hubert Liao wrote: >> Hi, >> >> We got an oops when insmod rtl8192ce module (the board is an ARM soc), >> accroding the oops message, find it's because in rtl_pci_probe() called >> _rtl_pci_find_adapter(), >> in this funcation, the pdev->bus->self is a NULL pointer . >> >> static boot _rtl_pci_find_adapter(strcut pci_dev *dev, >> struct ieee80211_hw *hw) >> { >> >> struct pci_dev *bridge_pdev = pdev->bus->self; //line 1601 >> ... >> >> pcipriv->ndis_adapter.pcibridge_vendorid = bridge_pdev->vendor; <-- [oops >> here] line 1700 >> >> ... >> } >> >> here, I just want to know why the bus->self is NULL? > > pdev is coming straight from what is passed to the PCI probe routine. > It seems like pdev->bus->self should already be set before that > happens. > Yes, I think it should be initialized when added the pci bus bridge, I have checked the mach-kirkwood(my board is arch/arm/mach-kirkwood) pcie related code, and I think when system initialized should call kirkwood_pcie_init() -> kirkwood_pcie_scan_bus() -> pci_scan_bus() -> pci_bus_add_devices() if the pci_bus->self was initialized in pci_bus_add_devices()? Maybe the code is too complex for me , I really can not find where set the “->self" member? > Please open a bug at bugzilla.kernel.org to help us keep track of > this -- thanks! > I have committed it the url, https://bugzilla.kernel.org/show_bug.cgi?id=40212 > John > -- > John W. Linville Someday the world will need a hero, and you > linville@xxxxxxxxxxxxx might be all we have. Be ready. > -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html