Messages in this thread Patch in this message | | | Date | Thu, 27 Sep 2007 13:54:43 +0900 | From | Tejun Heo <> | Subject | Re: sata_sil24 broken since 2.6.23-rc4-mm1 |
| |
Torsten Kaiser wrote: > Comparing the driver/ata directory from rc3-mm1 and rc4-mm1 the > following change looked the most suspicions to me: > http://git.kernel.org/?p=linux/kernel/git/jgarzik/libata-dev.git;a=blobdiff;f=drivers/ata/sata_sil24.c;h=3dcb223117be9739ee04d70b6bfc776a4b839a3f;hp=e0cd31aa8002350add53ba6ff07493e503275244;hb=020bc1bd8d369a77bd9379cd9763ac0057651753;hpb=8d4bdf8087e682df98bdb856f6ad451bf6d597e7 > > That after rc4-mm1 the sata_sil24.c did not change anymore also > matches the occurrence of the error. > > To confirm my theorie I exchanged the sata_sil24.c from rc8-mm1 with > the version from rc3-mm1. > I was able to boot the resulting kernel successfully 5 times, without > the error happening again.
Thanks a lot for chasing down the problem. The changed code is address initialization path and it's weird that it causes intermittent failures, not a consistent one.
Anyways, does the attached patch fix the problem?
-- tejun diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c index 3831920..dc3ddcb 100644 --- a/drivers/ata/sata_sil24.c +++ b/drivers/ata/sata_sil24.c @@ -1117,6 +1117,7 @@ static int sil24_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) host->ports[i]->ioaddr.cmd_addr = port; host->ports[i]->ioaddr.scr_addr = port + PORT_SCONTROL; + ata_std_ports(&ap->ioaddr); ata_port_pbar_desc(ap, SIL24_HOST_BAR, -1, "host"); ata_port_pbar_desc(ap, SIL24_PORT_BAR, offset, "port"); | |