@Matthieu -- thanks for the updated logs.  Thats much better.

>From the logs we can see that this was an illegal access from the
driver:

    Jul 14 11:30:05 matth kernel: [   28.412585] BUG: unable to handle kernel 
paging request at 0000000000001000
    Jul 14 11:30:05 matth kernel: [   28.412779] IP: [<ffffffffa019aa64>] 
rt28xx_init+0x34/0x4c0 [rt2860sta]

Looking at the driver code it looks like we exploded on the read of
MAC_CSR0:

#define MAC_CSR0            0x1000
[...]
static int rt28xx_init(IN struct net_device *net_dev)
[...]
        // Allocate BA Reordering memory
        ba_reordering_resource_init(pAd, MAX_REORDERING_MPDU_NUM);

        // Make sure MAC gets ready.
        index = 0;
        do
        {
                RTMP_IO_READ32(pAd, MAC_CSR0, &MacCsr0);
[...]

If we look at RTMP_IO_READ32() it relies on pAd->CSRBaseAddress being
set:

        (*_pV = readl((void *)((_A)->CSRBaseAddress + MAC_CSR0)));

This is only set in RT28XXNetDevInit(), which is called from
rt28xx_probe() whic is called from rt2860_init_one().

>From the stack we can see that we called rt28xx_init() via
MainVirtualIF_open() which is called when we try to configure a network
interface.  But for us to have a network device to open we must have
probed the device so we likely ran rt28xx_probe() as it is here we
register the netdev:

    INT __devinit   rt28xx_probe(
    [...]
            RT28XXNetDevInit(_dev_p, net_dev, pAd);
    [...]
        status = register_netdev(net_dev);
    [...]
    }

So we would have expected RT28XXNetDevInit() to be called already if we
have a netdev.  However looking at RT28XXNetDevInit() we can see it
first requests the required pci regions:

    BOOLEAN RT28XXNetDevInit(
    [...]
        if (pci_request_regions(pci_dev, print_name))
    [...]
        pAd->CSRBaseAddress = (PUCHAR)net_dev->base_addr;
    [...]
    }

And indeed if we look back at the logs it does appear that the regions
setup may well have failed in this case:

    Jul 14 11:30:00 matth kernel: [   14.222633] rt2860 0000:0a:00.0:
BAR 0: can't reserve mem region [0xbc000000-0xbc00ffff]

We should be checking the return from RT28XXNetDevInit().  Will spin a
patch to add a check here and see if that gets us booting and post some
test kernels shortly.

-- 
I can't load the new kernel 2.6.31-1 or 2.6.31-2 on Ubuntu Karmic because of a 
driver : RT2860
https://bugs.launchpad.net/bugs/396945
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to