On Thu, 25 Dec 2008 14:36:25 -0700 Grant Grundler <grundler@xxxxxxxxxxxxxxxx> wrote: > > Anything else I can do/provide to troubleshoot this ? > > Two things: > o consider posting some of the original findings on linux-ide and see > if anyone has tested this controller on PPC or IA64. I'm looking for > any other architecture that has "hard fail" behavior like parisc does. > Testing on any other Big Endian HW would be worth hearing about too. > > o write a quick and dirty "hpmc_symbols" script as described above > and run it on the HPMC you provided earlier. > > Debugging this further wil probably require modifying the sata_sil > driver to log (e.g. ktrace) it's activities while under test. Will do, just haven't had time yet. I quickly looked into why the OS HPMC handler wasn't triggered and the issue comes from the fact that the length provided to the PDC is incorrect. The doc states that it should be in bytes while we provide it in words. I've attached a small patch that solves this little issue. Cheers, Guy
OS HPMC handler length needs to be in bytes, not in words. Signed-off-by: Guy Martin <gmsoft@xxxxxxxxxxxx> --- /root/traps.c.orig 2009-01-02 09:20:41.000000000 +0100 +++ arch/parisc/kernel/traps.c 2009-01-02 09:23:47.000000000 +0100 @@ -840,7 +840,7 @@ /* Compute Checksum for HPMC handler */ - length = os_hpmc_end - os_hpmc; + length = (os_hpmc_end - os_hpmc) * sizeof(u32); ivap[7] = length; hpmcp = (u32 *)os_hpmc;