Re: [PATCH] PIIX: fix 82371MX enablebits
From: Alan Cox
Date: Thu May 11 2006 - 17:08:53 EST
On Gwe, 2006-05-12 at 00:32 +0400, Sergei Shtylyov wrote:
> Erm, simplex stuff shouldn't be touched at all since the chip is not
> DMA-capable. The same should be true about the native/legacy mode...
Native/legacy appplies to PIO too, and predates DMA stuff. Read
ide_setup_pci_baseregs and you'll see the problem. I hit that with
pata_mpiix and similar assumptions copied into libata and when I tried
the piix driver on the laptop I have.
> > Finally the PIIX driver pokes several registers it doesn't even have.
>
> Hm, as I can see, it avoids touching anything at all on MPIIX. This may
> rather be said of PIIX -- this chip didn't have SIDETIM register yet, so slave
> tuning won't work on it...
It avoids it for the MPIIX but not the early PIIX chip. And you can do
slave timing just fine, you need to flip the timings when you flip drive
which is how pata_mpiix does it and pata_oldpiix.
> There's no great need in splitting, just the separate tune_chipset()
> functions for PIIX/MPIIX and the rest of the crowd would suffice, IMHO...
Have fun 8) Having been there and done that already the list of bugs in
the piix driver is huge. Good to see someone beginning on it. However
you need more than to skip tuning and you need to reload the timings on
master/slave switches to get any performance.
If you want to fight the PIIX driver then other stuff I fixed in
pata_piix included
- Touching UDMA registers not found on earlier UDMA chips
- Setting IORDY on the wrong modes
- Setting prefetch/postwrite related options on devices it isnt safe for
(ATAPI shouldn't set PPE0 etc)
There's a nice Intel manual on the PIIX/ICH tuning rules separate to the
chip docs btw, I found it really helpful, dunno if you've already got a
copy.
Alan
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/