Re: oops in bk pull (oct 03)

Linus Torvalds (torvalds@transmeta.com)
Fri, 4 Oct 2002 19:00:58 -0700 (PDT)


On Fri, 4 Oct 2002, Linus Torvalds wrote:
>
> I think that is the real issue. We're mapping something - probably a host
> bridge - at address 0, and then accessing RAM (which is also is mapped at
> PCI address 0) and the host bridge is unhappy.
>
> So excluding the change is probably the right thing to do - it's just
> fundamentally buggy to blindly put a base register at zero.

The more I think about this, the more convinced I am this is the case. We
just _mustn't_ set up a live PCI window at address 0, and expect it to not
cause confusion.

Also, we've seen before that we must not blindly disable a PCI window
either, since that will kill the system when the host bridge is disabled
and there is any pending DMA, for example (*). We saw that earlier in the
2.4.x tree - some host bridges will just ignore the disable (which means
that then we'd trigger the zero-base bug), and others will honour the
disable (which in turn will cause the DMA and other random problems).

This is all probably dependently on host bridge / MCH behaviour, so it
probably works fine on 90%+ of all machines, but clearly breaks enough to
not be a viable approach in general.

Ergo, the patch that looked so simple at first glance was really broken
for a number of really subtle reasons.

Linus

(*) And pending DMA is actually _normal_ on PC's at early bootup when we
enumerate the PCI system - it's how USB keyboard and mouse emulation is
done, together with SMI support in the BIOS.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/