Port-amd64 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: constraints on rbus_min_start?
On Sun, 6 Jan 2008 09:06:42 +0000
David Laight <david%l8s.co.uk@localhost> wrote:
> On Sun, Jan 06, 2008 at 12:22:23AM -0500, Steven M. Bellovin wrote:
> > >
> > >For amd64 (and i386 with PAE) the address allocated almost
> > >certainly has to be inside the 'address hole' below 4GB.
> > >
> > This raises more questions than it answers. If I understand the
> > problem correctly, the "hole" is reserved for memory-mapped PCI
> > devices. Can the Cardbus range overlap that? If so, how? Assorted
> > web pages list the hole with various address ranges from 3.5G-4G to
> > 3.75G to 4G. How can I tell how much of that is allocated?
>
> Cardbus is PCI :-)
Right...
> The only way to determine the used addresses is to enumerate all the
> devices. That is potentially dangerous since you have to rewrite the
> BARs with a base address of 0 in order to determine the size.
> Presumably the NetBSD PCI device grope code will have done this
> during boot and remembered the addresses that are in use.
Which should, then, be in some data structure somewhere...
>
> > On a more pragmatic and more immediate note, what should I set it
> > to manually? I have a 3G machine; I haven't yet found a setting
> > that will avoid messages like these in dmesg:
> >
> > cbb0 at pci6 dev 0 function 0: Ricoh 5C476 PCI-CardBus bridge (rev.
> > 0xba) cbb0: can't map socket base address 0xf8300000
> > cbb0: can't map socket base address 0xffffffff804e8a0f: io mode
> > cbb0: interrupting at ioapic0 pin 16 (irq 10)
> > cardslot0 at cbb0 slot 0 flags 0
>
> Those error messages don't look right for the error you claim to be
> seeing. Failing to 'map' an address tends to imply that it has
> allocated one (and 0xf8300000 looks reasonable) but there are
> problems assigning it a KVA. The io address of 0xffffffff804e8a0f
> certainly looks bogus - possibly only sign extended from 32 to 64
> bits somewhere!
>
Hmm... I did indeed forget to specify unsigned in my value for it, but
I'm not convinced that that did it. Still, it's easy enough to change
and fix my part -- but there may be a sign extension problem
elsewhere. (I have to specify *something* explicitly, since the
default of 2G is clearly wrong on a 3GB machine.)
--Steve Bellovin, http://www.cs.columbia.edu/~smb
Home |
Main Index |
Thread Index |
Old Index