Messages in this thread Patch in this message | | | Date | Wed, 24 Mar 2004 13:08:49 -0500 | From | Jeff Garzik <> | Subject | Re: [BUG] sata_via broken by recent libata updates |
| |
Sergey Vlasov wrote: > Hello! > > After updating from 2.4.25-libata1 to 2.4.25-libata9 the sata_via > driver stopped working. The module loads and even seems to detect > the presense of drives, but the SCSI-emulation devices are not > registered: [...] > Seems that the problem is caused by changes in the device > initialization - calling ata_device_add() from svia_init_one() does > not work (at least with the 2.4.x SCSI layer). The following patch > solves the initialization problem: > > --- kernel-source-2.4.25/drivers/scsi/sata_via.c.sata_via-init-fix 2004-03-22 14:03:31 +0300 > +++ kernel-source-2.4.25/drivers/scsi/sata_via.c 2004-03-24 16:27:50 +0300 > @@ -264,9 +264,7 @@ static int svia_init_one (struct pci_dev > > pci_set_master(pdev); > > - /* FIXME: check ata_device_add return value */ > - ata_device_add(probe_ent); > - kfree(probe_ent); > + ata_add_to_probe_list(probe_ent); > > return 0;
Ah, indeed. A bug in the 2.4 backport. Seems to be present in sata_sis too.
Thanks for spotting, I just checked in the attached patch.
Jeff
# This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/03/24 13:07:52-05:00 jgarzik@redhat.com # [libata] Fix probing bug in VIA, SiS drivers # # Some 2.6 code leaked into the 2.4 backport. # # Spotted by Sergey Vlasov. # # drivers/scsi/sata_via.c # 2004/03/24 13:07:50-05:00 jgarzik@redhat.com +1 -3 # [libata] Fix probing bug in VIA, SiS drivers # # Some 2.6 code leaked into the 2.4 backport. # # Spotted by Sergey Vlasov. # # drivers/scsi/sata_sis.c # 2004/03/24 13:07:50-05:00 jgarzik@redhat.com +1 -3 # [libata] Fix probing bug in VIA, SiS drivers # # Some 2.6 code leaked into the 2.4 backport. # # Spotted by Sergey Vlasov. # diff -Nru a/drivers/scsi/sata_sis.c b/drivers/scsi/sata_sis.c --- a/drivers/scsi/sata_sis.c Wed Mar 24 13:08:01 2004 +++ b/drivers/scsi/sata_sis.c Wed Mar 24 13:08:01 2004 @@ -182,9 +182,7 @@ pci_set_master(pdev); pci_enable_intx(pdev); - /* FIXME: check ata_device_add return value */ - ata_device_add(probe_ent); - kfree(probe_ent); + ata_add_to_probe_list(probe_ent); return 0; diff -Nru a/drivers/scsi/sata_via.c b/drivers/scsi/sata_via.c --- a/drivers/scsi/sata_via.c Wed Mar 24 13:08:01 2004 +++ b/drivers/scsi/sata_via.c Wed Mar 24 13:08:01 2004 @@ -264,9 +264,7 @@ pci_set_master(pdev); - /* FIXME: check ata_device_add return value */ - ata_device_add(probe_ent); - kfree(probe_ent); + ata_add_to_probe_list(probe_ent); return 0; | |