Re: Please revert: PCI: fix IDE legacy mode resources

Alan Cox
2007-12-09T22:29:23Z

> Quite possibly, though as I said in practice, what we did so far
> happened to "just work" on pretty much everything we were faced with
> (which iirc is basically winbond and VIA controllers, possibly a few
> others).
>
> Anyway, I'll scrub around. Again, I'm not saying the approach is wrong
> in the generic code.

I think the generic code is right, up to the MIPS stuff. What the MIPS
stuff is doing wants looking at further. If it simply can't address
legacy ports them it should set

CONFIG_NO_ATA_LEGACY

and be robust to such resource mappings. The CONFIG option tells libata
to skip over controllers in legacy mode.

For switching quirks you should be fixing the class code in an early
fixup. The early fixups are run before we do the BAR processing. You must
however remember to update dev->class as well as the PCI register if you
do so.

See quirk_svwkrs_csb5ide() for a correct worked example going in the
other direction. If you follow that for the PPC quirks but going native
then you will get desired results, although you want to check/know the BAR
resources are sane, or clear them as part of the process.

So in summary:
- MIPS resource/bar bit may be wrong - if so lets revert that
- Rest of the logic is just fine, but you may need to move your
quirks to be 'early' ones.

Alan