Skip to content

Commit

Permalink
Fix libata resource conflict for legacy mode
Browse files Browse the repository at this point in the history
When the libata is trying to handle legacy ide ports (0x1f0 for instance), it
doesn't take care if the resource has childs or not.
The result is that this situation :
0100-01fe : pnp 00:09
  0170-0177 : libata
  01f0-01f7 : libata

is seen as conflict, which is wrong.
The proposed fix is to detect childs and in this case, look at which child is
conflicting.

Signed-off-by: Arnaud Patard <apatard@mandriva.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Arnaud Patard authored and Jeff Garzik committed Sep 19, 2006
1 parent 95064a7 commit cb60736
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions drivers/scsi/libata-bmdma.c
Original file line number Diff line number Diff line change
Expand Up @@ -1016,11 +1016,14 @@ int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_info,
res.start = 0x1f0;
res.end = 0x1f0 + 8 - 1;
conflict = ____request_resource(&ioport_resource, &res);
while (conflict->child)
conflict = ____request_resource(conflict, &res);
if (!strcmp(conflict->name, "libata"))
legacy_mode |= (1 << 0);
else {
disable_dev_on_err = 0;
printk(KERN_WARNING "ata: 0x1f0 IDE port busy\n");
printk(KERN_WARNING "ata: 0x1f0 IDE port busy\n" \
"ata: conflict with %s\n", conflict->name);
}
} else
legacy_mode |= (1 << 0);
Expand All @@ -1030,11 +1033,14 @@ int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_info,
res.start = 0x170;
res.end = 0x170 + 8 - 1;
conflict = ____request_resource(&ioport_resource, &res);
while (conflict->child)
conflict = ____request_resource(conflict, &res);
if (!strcmp(conflict->name, "libata"))
legacy_mode |= (1 << 1);
else {
disable_dev_on_err = 0;
printk(KERN_WARNING "ata: 0x170 IDE port busy\n");
printk(KERN_WARNING "ata: 0x170 IDE port busy\n" \
"ata: conflict with %s\n", conflict->name);
}
} else
legacy_mode |= (1 << 1);
Expand Down

0 comments on commit cb60736

Please sign in to comment.