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/