can anyone make available the whole usIII source tree from
perforce please
John Baldwin
jhb at freebsd.org
Mon Feb 23 12:17:36 PST 2009
On Monday 23 February 2009 1:15:34 pm Marius Strobl wrote:
> On Mon, Feb 23, 2009 at 09:05:22AM -0500, John Baldwin wrote:
> > On Sunday 22 February 2009 12:02:30 pm Marius Strobl wrote:
> > > On Wed, Feb 18, 2009 at 01:24:00AM +0100, Florian Smeets wrote:
> > > > On 04.02.2009 15:16 Uhr, Craig Butler wrote:
> > > > >Hi Marius,
> > > > >
> > > > >Thanks for all your hard work and pointers so far. I have compiled
and
> > > > >installed the new kernel (cas is statically compiled in).
Unfortunately
> > > > >its panic'ing on boot with the following;
> > > > >
> > > > >cas0:<Sun Cassini+ Gigabit Ethernet> at device 10.0 on pci0
> > > > >panic: trap: memory address not aligned
> > > > >cpuid = 0
> > > > >Uptime: 1s
> > > > >
> > > >
> > > > FWIW, i compiled a kernel with these changes and the cards probe fine.
> > > >
> > > > cas0: <NS DP83065 Saturn Gigabit Ethernet> mem 0x2000000-0x21fffff at
> > > > device 0.0 on pci1
> > > > miibus1: <MII bus> on cas0
> > > > cas0: 16kB RX FIFO, 9kB TX FIFO
> > > > cas0: Ethernet address: 00:03:ba:XX:XX:XX
> > > > cas0: [ITHREAD]
> > > > cas1: <NS DP83065 Saturn Gigabit Ethernet> mem 0x2400000-0x25fffff at
> > > > device 1.0 on pci1
> > > > miibus2: <MII bus> on cas1
> > > > cas1: 16kB RX FIFO, 9kB TX FIFO
> > > > cas1: Ethernet address: 00:03:ba:XX:XX:XX
> > > > cas1: [ITHREAD]
> > > >
> > > > I don't have a cable connected yet, as the machine is remote, but I'll
> > > > be sure to test it soon.
> > > >
> > >
> > > FYI, the above panic likely isn't a problem of cas(4) but
> > > arises from the fact that the resource of that NIC starts
> > > at 0 according to its BAR, which is somewhat uncommon but
> > > nevertheless should work yet seems to trigger a bug at
> > > some other level.
> >
> > The PCI bus driver assumes a BAR of 0 is an invalid resource. There are
many
> > systems that use 0 to disable a BAR. I have no idea if "0" is a magic
value
> > to disable an individual BAR in the PCI spec itself, however.
> >
>
> I'm aware of the former, my understanding of the pci(4) code
> is that it won't pre-allocate such a resource but modulo bugs
> treats it normally when a driver allocates it though.
No, what will happen is that we don't create a resource list entry for it
since it is zero. Then, when pci_alloc_resource() is called, it will see
that there isn't a resource list entry and will attempt to allocate a fresh
resource range for the BAR and assign it to the BAR. Perhaps we need to have
some var in <machine/_param.h> to indicate if 0 is a valid BAR address or
not. Also, see pci_delete_resource() which assumes it can completely wipe a
BAR by writing 0 to it. But you would need to patch pci_add_map() in a
couple of places where it is testing base == 0 to basically ignore those
tests to get it to use the 0 - N range.
--
John Baldwin
More information about the freebsd-sparc64
mailing list