Thread (4 messages) 4 messages, 3 authors, 2011-07-29

Re: Oops when insmod rtl8192ce

From: Larry Finger <hidden>
Date: 2011-07-28 14:56:21
Also in: linux-wireless, lkml

Possibly related (same subject, not in this thread)

On 07/28/2011 02:06 AM, hubert Liao wrote:
2011/7/27 John W. Linville[off-list ref]:
quoted
On Wed, Jul 27, 2011 at 05:20:15PM +0800, hubert Liao wrote:
quoted
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?
I added a request to the bugzilla entry to post the full dmesg output there. 
Perhaps there is some clue in the bus setup.

Larry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help