* Proposed solution
It seems that the only solution is to make use of the PCS presence bits somehow. It is know that 6300ESB family of controllers have flaky presence bits (ata_piix marks them with PIIX_FLAG_IGNORE_PCS), but I couldn't find any document/errata for PCS bits for any other controllers. So, we can use PCS for all !PIIX_FLAG_IGNORE_PCS controllers or take a conservative approach and make use of it only on cases where ghosting problem is reported (ICH7 and 8, I guess. Can anyone test 6?).
Please note that we already use some use of the PCS value when probing SATA port. If its value is zero, we skip the port. It's done this way mainly due to historical reasons - until recently ata_piix didn't have MAP tables to map PM/PS/SM/SS to specific ports thus used the PCS values in rougher form.
Jeff, what do you think?