Re: 2.6.19-rc5-mm1 : probe of 0000:00:1f.2 failed with error -16

From: Remi
Date: Mon Nov 13 2006 - 10:01:19 EST


Alan <alan@xxxxxxxxxxxxxxxxxxx> wrote:

> On Mon, 13 Nov 2006 14:44:37 +0100
> Remi <remi.colinet@xxxxxxx> wrote:
>
> >
> > => Step 4 : then the libata tries to allocate once more the same ressources
> and
> > fails.
> >
> > [<f00e3eed>] ata_pci_init_one+0xad/0x423 [libata]
> > [<f001f9c1>] piix_init_one+0x4b7/0x4d4 [ata_piix]
>
> ata_pci_init_one should have followed the legacy_mode path at this point,

So, doing the following change in drivers/ata/libata-sff.c, function
ata_pci_init_one should fix the problem.

- rc = pci_request_regions(pdev, DRV_NAME);
- if (rc) {
- disable_dev_on_err = 0;
- goto err_out;
- }
-
- if (legacy_mode) {
- if (!request_region(ATA_PRIMARY_CMD, 8, "libata")) {


+ if (!legacy_mode) {
+ rc = pci_request_regions(pdev, DRV_NAME);
+ if (rc) {
+ disable_dev_on_err = 0;
+ goto err_out;
+ }
+ else {
+ if (!request_region(ATA_PRIMARY_CMD, 8, "libata")) {

Going to try it.
But the ioport map is going stay a little bit ugly.

> and the legacy mode path should not be trying to request the legacy
> regions the quirk code already reserved.
>
> I suspect the code should only do the pci_request_regions() call if the
> device on if (!legacy_mode), and the legacy code should
> pci_request_region(pdev, 4, ...);
>

Actually, it seems to be exactly what the code does in the legacy mode.

Thanks,
Remi





-
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/