Message ID | 1379019689-21467-1-git-send-email-linux@rainbow-software.org |
---|---|
State | Not Applicable |
Delegated to: | David Miller |
Headers | show |
On Thursday 12 September 2013 23:01:29 Ondrej Zary wrote: > The test for 2nd I/O port validity is broken (reversed): > On devices with no control port, the driver attempts to use invalid port 0, > resulting in logs full of bad_io_access errors. > On devices with control port, the driver does not use it. > > Signed-off-by: Ondrej Zary <linux@rainbow-software.org> > --- > drivers/ata/pata_isapnp.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/drivers/ata/pata_isapnp.c b/drivers/ata/pata_isapnp.c > index 4bceb88..b33d1f9 100644 > --- a/drivers/ata/pata_isapnp.c > +++ b/drivers/ata/pata_isapnp.c > @@ -78,7 +78,7 @@ static int isapnp_init_one(struct pnp_dev *idev, const > struct pnp_device_id *dev > > ap->ioaddr.cmd_addr = cmd_addr; > > - if (pnp_port_valid(idev, 1) == 0) { > + if (pnp_port_valid(idev, 1)) { > ctl_addr = devm_ioport_map(&idev->dev, > pnp_port_start(idev, 1), 1); > ap->ioaddr.altstatus_addr = ctl_addr; With this patch, the ATA port works fine if there is a device connected to it. However, it takes ages to boot if there are no devices connected. Looks like the driver retries IDENTIFY command for both slave and master drives in a hope that the devices are there. log: [ 7.692344] pata_isapnp 01:01.02: [io 0x01e8-0x01ef] [ 7.692474] pata_isapnp 01:01.02: [io 0x0168-0x016f] [ 7.692644] pata_isapnp 01:01.02: [irq 10] [ 7.695012] pata_isapnp 01:01.02: activated [ 7.751153] scsi2 : pata_isapnp [ 7.751781] ata3: PATA max PIO0 cmd 0x168 ctl 0x0 irq 10 [ 12.751446] ata3.01: qc timeout (cmd 0xec) [ 12.751571] ata3.01: failed to IDENTIFY (I/O error, err_mask=0x5) [ 22.752270] ata3.01: qc timeout (cmd 0xec) [ 22.752396] ata3.01: failed to IDENTIFY (I/O error, err_mask=0x5) [ 52.754737] ata3.01: qc timeout (cmd 0xec) [ 52.754861] ata3.01: failed to IDENTIFY (I/O error, err_mask=0x5) [ 57.755149] ata3.00: qc timeout (cmd 0xec) [ 57.755275] ata3.00: failed to IDENTIFY (I/O error, err_mask=0x5) [ 67.755974] ata3.00: qc timeout (cmd 0xec) [ 67.756099] ata3.00: failed to IDENTIFY (I/O error, err_mask=0x5)
On Thu, Sep 12, 2013 at 11:01:29PM +0200, Ondrej Zary wrote: > The test for 2nd I/O port validity is broken (reversed): > On devices with no control port, the driver attempts to use invalid port 0, > resulting in logs full of bad_io_access errors. > On devices with control port, the driver does not use it. > > Signed-off-by: Ondrej Zary <linux@rainbow-software.org> Applied to libata/for-3.13. Thanks.
Hello. On 23-09-2013 1:42, Tejun Heo wrote: >> The test for 2nd I/O port validity is broken (reversed): >> On devices with no control port, the driver attempts to use invalid port 0, >> resulting in logs full of bad_io_access errors. >> On devices with control port, the driver does not use it. >> Signed-off-by: Ondrej Zary <linux@rainbow-software.org> > Applied to libata/for-3.13. Why only 3.13? Isn't it a simple fix? > Thanks. WBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Sep 23, 2013 at 04:51:16PM +0400, Sergei Shtylyov wrote: > >Applied to libata/for-3.13. > > Why only 3.13? Isn't it a simple fix? Hmmm, maybe, the driver is such low impact, I don't think it matters either way; otherwise, it should be marked -stable too. It's a driver which shouldn't be enabled by default by distros and I didn't think it'd be worthwhile to create any traffic for it. That said, if there's a reason this matters, I'd be happy to add -stable and push it through ASAP. Thanks.
On Monday 23 September 2013 15:00:42 Tejun Heo wrote: > On Mon, Sep 23, 2013 at 04:51:16PM +0400, Sergei Shtylyov wrote: > > >Applied to libata/for-3.13. > > > > Why only 3.13? Isn't it a simple fix? > > Hmmm, maybe, the driver is such low impact, I don't think it matters > either way; otherwise, it should be marked -stable too. It's a driver > which shouldn't be enabled by default by distros and I didn't think > it'd be worthwhile to create any traffic for it. That said, if > there's a reason this matters, I'd be happy to add -stable and push it > through ASAP. > > Thanks. At least Debian ships pata_isapnp.ko. Some distros probably stopped building the driver because it was broken.
diff --git a/drivers/ata/pata_isapnp.c b/drivers/ata/pata_isapnp.c index 4bceb88..b33d1f9 100644 --- a/drivers/ata/pata_isapnp.c +++ b/drivers/ata/pata_isapnp.c @@ -78,7 +78,7 @@ static int isapnp_init_one(struct pnp_dev *idev, const struct pnp_device_id *dev ap->ioaddr.cmd_addr = cmd_addr; - if (pnp_port_valid(idev, 1) == 0) { + if (pnp_port_valid(idev, 1)) { ctl_addr = devm_ioport_map(&idev->dev, pnp_port_start(idev, 1), 1); ap->ioaddr.altstatus_addr = ctl_addr;
The test for 2nd I/O port validity is broken (reversed): On devices with no control port, the driver attempts to use invalid port 0, resulting in logs full of bad_io_access errors. On devices with control port, the driver does not use it. Signed-off-by: Ondrej Zary <linux@rainbow-software.org> --- drivers/ata/pata_isapnp.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)