On 24 Oct 2000, Eric W. Biederman wrote:
> "David S. Miller" <davem@redhat.com> writes:
> >
> > I bet PCI allows no such thing, thus to be totally safe I would
> > conditionalize this feature on the specific bridge. Ie. only allow
> > it for this bridge type, because I bet it is just some bug in the
> > the address comparators which makes the bridge interpret zero ranges
> > as "forward and respond to everything".
>
> I'm not certain of the details but I do know that it is legal.
> To date I've only heard of it on ISA bridges, in particular the PIIXE.
All ISA bridges use subtractive decode (== listen to whether somebody else
claims it, and if not, take it yourself), and that's part of the spec.
However, there can obviously be only one subtractive decoder on a bus:
otherwise they'd end up fighting over the requests that don't have anybody
on the primary bus.
HOWEVER, you could potentially have multiple subtractive decoders if you
have multiple buses, and that's actually kind of what my pseudo-patch
tries to allow for. I'd like to see what the lspci outout is, but it is
possible that the docking bridge is behind another PCI bridge, which would
make subtractive decoding legal.
The other alternative is that the docking bridge also is the ISA bridge,
and knows where the ISA space is (not that hard - ISA IO space is
0x100-0x3ff, and ISA memory space is basically limited to 0xA0000-1M now
that there are no machines with less than 16MB of RAM any more), and then
acts as _one_ subtractive bridge, but forwards it to two different buses
depending on what the range was.
So there does seem to be "legal" ways of doing what the bridge may be
doing. I'd still like to see what the PCI details on that system are, and
if possible get some documentation on that particular bridge to see what
that says..
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Tue Oct 31 2000 - 21:00:16 EST