Broadcomm BCM4401-B0 and memory upgrade issue.

lyubich_freebsd lyubich-freebsd1 at gmx.net
Sun Jan 29 14:18:20 PST 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

I applied the suggested changes.
I got the following message when I load the if_bfe driver.

vm_page_alloc_config: alignment must be a power of 2

After that the kernel panics and system reboots.

I think, if I can specified the allignment correctly, it should work.
Tell me, how to do this, and I will try it again.

Regards,
LM

> 
> static int
> bfe_dma_alloc(device_t dev)
> {
>         struct bfe_softc *sc;
>         int error, i;
>  
>         sc = device_get_softc(dev);
>  
>         /* parent tag */
>         error = bus_dma_tag_create(NULL,  /* parent */
>                         PAGE_SIZE, 0,             /* 
> alignment, boundary */
>                         BUS_SPACE_MAXADDR,        /* lowaddr */
>                         BUS_SPACE_MAXADDR_32BIT,  /* highaddr */
>                         NULL, NULL,               /* filter, 
> filterarg */
>                         MAXBSIZE,                 /* maxsize */
>                         BUS_SPACE_UNRESTRICTED,   /* num of 
> segments */
>                         BUS_SPACE_MAXSIZE_32BIT,  /* max 
> segment size */
>                         BUS_DMA_ALLOCNOW,         /* flags */
>                         NULL, NULL,               /* 
> lockfunc, lockarg */
>                         &sc->bfe_parent_tag);
> 
> - Change it to look like this:
> 
> static int
> bfe_dma_alloc(device_t dev)
> {
>         struct bfe_softc *sc;
>         int error, i;
>  
>         sc = device_get_softc(dev);
>  
>         /* parent tag */
>         error = bus_dma_tag_create(NULL,  /* parent */
>                         PAGE_SIZE, 0,             /* 
> alignment, boundary */
>   /* change this -> */  0x3E7FFFFF /*BUS_SPACE_MAXADDR*/,     
>    /* lowaddr */
>                         BUS_SPACE_MAXADDR_32BIT,  /* highaddr */
>                         NULL, NULL,               /* filter, 
> filterarg */
>                         MAXBSIZE,                 /* maxsize */
>                         BUS_SPACE_UNRESTRICTED,   /* num of 
> segments */
>                         BUS_SPACE_MAXSIZE_32BIT,  /* max 
> segment size */
>                         BUS_DMA_ALLOCNOW,         /* flags */
>                         NULL, NULL,               /* 
> lockfunc, lockarg */
>                         &sc->bfe_parent_tag);
> 
> - Save if_bfe.c
> - Recompile if_bfe.ko and/or your kernel, test it, and report 
> back what
>   happens.
> 
> Wait, let me say that last part again: REPORT BACK WHAT 
> HAPPENS! I hate it when I send people things to test and they 
> vanish into a black hole, never to be heard from again.
> 
> I suspect this chipset has a DMA limitation that prevents it 
> from performing DMA to/from any addresses outside the first 
> 1GB of RAM.
> Curiously, I ran into this with a Linksys wireless NIC with 
> the NDISulator, which is based on a Broadcom chipset too 
> (802.11b only).
> 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (MingW32)

iD8DBQFD3T87KOV0oHioLCARAvxGAKCn4FieqHpPBD7+6vOm+taaLjfZlgCgk2WR
5H7hLglq++SV8eaiujVL6cE=
=L2Ut
-----END PGP SIGNATURE-----



More information about the freebsd-stable mailing list