Re: [Fwd: Re: long-term regression - Parallel Port broken?]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Saturday 21 July 2007 08:09:11 pm david@xxxxxxx wrote:
> On Fri, 6 Jul 2007, Bjorn Helgaas wrote:
> > Ultimately, you should have CONFIG_ACPI=y and CONFIG_PNPACPI=y, and you
> > should not have to boot with "noisapnp" or "pnpacpi=off".  My guess is
> > that you only need "pnpacpi=off" to work around the current problem.
> 
> these two options are enabled and pnpacpi=off does solve the problem.
> ...
> there's now a dmesg.pnpacpi_off which works, and you are correct that the 
> dmesg that's there is the non working one.

Thanks.  Here's what I glean from that.  With no arguments, it doesn't work:

    parport_pc 00:0a: reported by Plug and Play ACPI
    parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRISTATE,COMPAT,ECP,DMA]
    parport0: Printer, Brother HL-5040 series
    lp0: using parport0 (interrupt-driven).

With pnpacpi=off, it works:

    parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE]
    parport0: irq 7 detected
    parport0: Printer, Brother HL-5040 series
    lp0: using parport0 (polling).

With pnpacpi=off, or a kernel without PNPACPI, we just probe at 0x378
and use the port in polling mode, and it works.

PNPACPI claims the device supports interrupts, so we try to use it in
interrupt mode, and it doesn't work.  It's possible that ACPI is lying
to us, and the interrupt really doesn't work.  Or maybe the interrupt
*does* work, but the BIOS left it half-configured.

Could you try the attached patch and collect the dmesg log and contents
of /proc/interrupts?

Thanks,
  Bjorn

Index: w/drivers/pnp/pnpacpi/core.c
===================================================================
--- w.orig/drivers/pnp/pnpacpi/core.c	2007-07-24 15:05:25.000000000 -0600
+++ w/drivers/pnp/pnpacpi/core.c	2007-07-24 15:29:50.000000000 -0600
@@ -216,6 +216,13 @@
 	pnp_add_device(dev);
 	num ++;
 
+	if (dev->active) {
+		printk("%s: configuring %s (%s)\n", __FUNCTION__, dev->dev.bus_id, dev_id->id);
+		pnp_disable_dev(dev);
+		pnp_init_resource_table(&dev->res);
+		pnp_activate_dev(dev);
+	}
+
 	return AE_OK;
 err1:
 	kfree(dev_id);
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux