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

Re: Oops when insmod rtl8192ce

From: Hubert Liao <hidden>
Date: 2011-07-29 01:21:38
Also in: linux-wireless, lkml

Possibly related (same subject, not in this thread)

2011/7/28 Larry Finger [off-list ref]:
On 07/28/2011 02:06 AM, hubert Liao wrote:
quoted
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.
I have added the full dmesg output on bugzilla.
thanks.
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