public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* ohci1394 unhandled interrupts bug in 2.6.14-rc2
@ 2005-10-15 18:55 jbarnes
  2005-10-15 19:39 ` Stefan Richter
  0 siblings, 1 reply; 24+ messages in thread
From: jbarnes @ 2005-10-15 18:55 UTC (permalink / raw)
  To: linux-kernel, linux1394-devel

I've been experiencing a bug in the Fedora kernels for awhile involving
the ohci1394 driver.  If I include the driver in my initrd (causing it
to be loaded at boot time), the IRQ corresponding to my TI OHCI firewire
controller is disabled (message says "Disabling IRQ #11", I think due to
the kernel irq debug code noticing that it hasn't been handled too many
times).  Since this IRQ is shared with my pcmcia, wireless, and usb
devices (don't ask me why it's wired this way, this is a Toshiba
Satellite laptop), nothing important works after the IRQ is disabled.

I've reproduced this problem under 2.6.14-rc2, which includes Al Viro's
latest fix to initialize interrupt handler spinlock (which I was hoping
would fix the problem but didn't).

Is this a known issue?  Does the interrupt handler need to special case
initialization somehow and return IRQ_HANDLED even if there's no event
sometimes?

Thanks,
Jesse

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2
  2005-10-15 18:55 ohci1394 unhandled interrupts bug in 2.6.14-rc2 jbarnes
@ 2005-10-15 19:39 ` Stefan Richter
  2005-10-15 20:29   ` Jesse Barnes
  0 siblings, 1 reply; 24+ messages in thread
From: Stefan Richter @ 2005-10-15 19:39 UTC (permalink / raw)
  To: linux1394-devel; +Cc: jbarnes, linux-kernel

jbarnes@virtuousgeek.org wrote:
> I've been experiencing a bug in the Fedora kernels for awhile involving
> the ohci1394 driver.  If I include the driver in my initrd (causing it
> to be loaded at boot time), the IRQ corresponding to my TI OHCI firewire
> controller is disabled
...
> this is a Toshiba Satellite laptop)

Somebody mentioned this Linux-on-Toshiba-Satellite page recently on 
linux1394-user: http://www.janerob.com/rob/ts5100/index.shtml
The patch available from there was briefly discussed in February:
http://marc.theaimsgroup.com/?l=linux1394-devel&t=110786507900006

Does this patch correct the problem on your machine?
-- 
Stefan Richter
-=====-=-=-= =-=- -====
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2
  2005-10-15 19:39 ` Stefan Richter
@ 2005-10-15 20:29   ` Jesse Barnes
  2005-10-15 20:40     ` new PCI quirk for Toshiba Satellite? Jesse Barnes
                       ` (2 more replies)
  0 siblings, 3 replies; 24+ messages in thread
From: Jesse Barnes @ 2005-10-15 20:29 UTC (permalink / raw)
  To: Stefan Richter; +Cc: linux1394-devel, linux-kernel

On Sat, Oct 15, 2005 at 09:39:06PM +0200, Stefan Richter wrote:
> Somebody mentioned this Linux-on-Toshiba-Satellite page recently on 
> linux1394-user: http://www.janerob.com/rob/ts5100/index.shtml
> The patch available from there was briefly discussed in February:
> http://marc.theaimsgroup.com/?l=linux1394-devel&t=110786507900006
> 
> Does this patch correct the problem on your machine?

Yes, it seems to help.  If I boot up and modprobe the driver with
toshiba=1, everything looks fine (I have no firewire devices to test
with).  If I modprobe it with toshiba=0, the system gets sluggish for a
second then IRQ 11 is disabled.  I had to update the patch though, as
shown below.

I'm not sure if the fix is proper though, maybe this should be handled
as a PCI quirk of this Toshiba board instead?  Either way, some kind of
fix should make it in soon, ideally to 2.6.14 or 2.6.14.1.

Thanks,
Jesse

diff -X linux-2.6.14-rc2/Documentation/dontdiff -Naur linux-2.6.14-rc2.orig/drivers/ieee1394/ohci1394.c linux-2.6.14-rc2/drivers/ieee1394/ohci1394.c
--- linux-2.6.14-rc2.orig/drivers/ieee1394/ohci1394.c	2005-09-19 20:00:41.000000000 -0700
+++ linux-2.6.14-rc2/drivers/ieee1394/ohci1394.c	2005-10-15 12:55:08.000000000 -0700
@@ -169,6 +169,10 @@
 module_param(phys_dma, int, 0644);
 MODULE_PARM_DESC(phys_dma, "Enable physical dma (default = 1).");
 
+static int toshiba __initdata = 0;
+module_param(toshiba, bool, 0);
+MODULE_PARM_DESC(toshiba, "Toshiba Legacy-Free BIOS workaround (default=0).");
+
 static void dma_trm_tasklet(unsigned long data);
 static void dma_trm_reset(struct dma_trm_ctx *d);
 
@@ -3222,14 +3226,28 @@
 	struct hpsb_host *host;
 	struct ti_ohci *ohci;	/* shortcut to currently handled device */
 	unsigned long ohci_base;
+	u16  toshiba_data;
 
 	if (version_printed++ == 0)
 		PRINT_G(KERN_INFO, "%s", version);
 
+	if (toshiba) {
+		dev->current_state = 4;
+		pci_read_config_word(dev, PCI_CACHE_LINE_SIZE, &toshiba_data);
+	}
+
         if (pci_enable_device(dev))
 		FAIL(-ENXIO, "Failed to enable OHCI hardware");
         pci_set_master(dev);
 
+	if (toshiba) {
+		mdelay(10);
+		pci_write_config_word(dev, PCI_CACHE_LINE_SIZE, toshiba_data);
+		pci_write_config_word(dev, PCI_INTERRUPT_LINE, dev->irq);
+		pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, pci_resource_start(dev, 0));
+		pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, pci_resource_start(dev, 1));
+ 	}
+
 	host = hpsb_alloc_host(&ohci1394_driver, sizeof(struct ti_ohci), &dev->dev);
 	if (!host) FAIL(-ENOMEM, "Failed to allocate host structure");
 

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: new PCI quirk for Toshiba Satellite?
  2005-10-15 20:29   ` Jesse Barnes
@ 2005-10-15 20:40     ` Jesse Barnes
  2005-10-20  0:06       ` Greg KH
  2005-10-15 21:02     ` ohci1394 unhandled interrupts bug in 2.6.14-rc2 Stefan Richter
  2005-10-17  7:55     ` Andrew Morton
  2 siblings, 1 reply; 24+ messages in thread
From: Jesse Barnes @ 2005-10-15 20:40 UTC (permalink / raw)
  To: Jesse Barnes
  Cc: Stefan Richter, linux1394-devel, linux-kernel, linux-pci, gregkh

On Sat, Oct 15, 2005 at 01:29:44PM -0700, Jesse Barnes wrote:
> On Sat, Oct 15, 2005 at 09:39:06PM +0200, Stefan Richter wrote:
> > Somebody mentioned this Linux-on-Toshiba-Satellite page recently on 
> > linux1394-user: http://www.janerob.com/rob/ts5100/index.shtml
> > The patch available from there was briefly discussed in February:
> > http://marc.theaimsgroup.com/?l=linux1394-devel&t=110786507900006
> > 
> > Does this patch correct the problem on your machine?
> 
> Yes, it seems to help.  If I boot up and modprobe the driver with
> toshiba=1, everything looks fine (I have no firewire devices to test
> with).  If I modprobe it with toshiba=0, the system gets sluggish for a
> second then IRQ 11 is disabled.  I had to update the patch though, as
> shown below.
> 
> I'm not sure if the fix is proper though, maybe this should be handled
> as a PCI quirk of this Toshiba board instead?  Either way, some kind of
> fix should make it in soon, ideally to 2.6.14 or 2.6.14.1.

[Forwarding on to the PCI maintainers.]

It seems that the PCI config space isn't programmed correctly on these
machines for some reason, so the fix below allows my OHCI device to work
if I pass 'toshiba=1'.  This seems like something that belongs in the
PCI layer instead though, doesn't it?

Thanks,
Jesse

> diff -X linux-2.6.14-rc2/Documentation/dontdiff -Naur linux-2.6.14-rc2.orig/drivers/ieee1394/ohci1394.c linux-2.6.14-rc2/drivers/ieee1394/ohci1394.c
> --- linux-2.6.14-rc2.orig/drivers/ieee1394/ohci1394.c	2005-09-19 20:00:41.000000000 -0700
> +++ linux-2.6.14-rc2/drivers/ieee1394/ohci1394.c	2005-10-15 12:55:08.000000000 -0700
> @@ -169,6 +169,10 @@
>  module_param(phys_dma, int, 0644);
>  MODULE_PARM_DESC(phys_dma, "Enable physical dma (default = 1).");
>  
> +static int toshiba __initdata = 0;
> +module_param(toshiba, bool, 0);
> +MODULE_PARM_DESC(toshiba, "Toshiba Legacy-Free BIOS workaround (default=0).");
> +
>  static void dma_trm_tasklet(unsigned long data);
>  static void dma_trm_reset(struct dma_trm_ctx *d);
>  
> @@ -3222,14 +3226,28 @@
>  	struct hpsb_host *host;
>  	struct ti_ohci *ohci;	/* shortcut to currently handled device */
>  	unsigned long ohci_base;
> +	u16  toshiba_data;
>  
>  	if (version_printed++ == 0)
>  		PRINT_G(KERN_INFO, "%s", version);
>  
> +	if (toshiba) {
> +		dev->current_state = 4;
> +		pci_read_config_word(dev, PCI_CACHE_LINE_SIZE, &toshiba_data);
> +	}
> +
>          if (pci_enable_device(dev))
>  		FAIL(-ENXIO, "Failed to enable OHCI hardware");
>          pci_set_master(dev);
>  
> +	if (toshiba) {
> +		mdelay(10);
> +		pci_write_config_word(dev, PCI_CACHE_LINE_SIZE, toshiba_data);
> +		pci_write_config_word(dev, PCI_INTERRUPT_LINE, dev->irq);
> +		pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, pci_resource_start(dev, 0));
> +		pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, pci_resource_start(dev, 1));
> + 	}
> +
>  	host = hpsb_alloc_host(&ohci1394_driver, sizeof(struct ti_ohci), &dev->dev);
>  	if (!host) FAIL(-ENOMEM, "Failed to allocate host structure");
>  
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2
  2005-10-15 20:29   ` Jesse Barnes
  2005-10-15 20:40     ` new PCI quirk for Toshiba Satellite? Jesse Barnes
@ 2005-10-15 21:02     ` Stefan Richter
  2005-10-15 21:59       ` Jesse Barnes
  2005-10-17  7:55     ` Andrew Morton
  2 siblings, 1 reply; 24+ messages in thread
From: Stefan Richter @ 2005-10-15 21:02 UTC (permalink / raw)
  To: linux1394-devel; +Cc: Jesse Barnes, linux-kernel

Jesse Barnes wrote:
> On Sat, Oct 15, 2005 at 09:39:06PM +0200, Stefan Richter wrote:
>>Somebody mentioned this Linux-on-Toshiba-Satellite page recently on 
>>linux1394-user: http://www.janerob.com/rob/ts5100/index.shtml
>>The patch available from there was briefly discussed in February:
>>http://marc.theaimsgroup.com/?l=linux1394-devel&t=110786507900006
> 
> Yes, it seems to help.  If I boot up and modprobe the driver with
> toshiba=1, everything looks fine (I have no firewire devices to test
> with).  If I modprobe it with toshiba=0, the system gets sluggish for a
> second then IRQ 11 is disabled.  I had to update the patch though,

What about the PCI_CACHE_LINE_SIZE read/write?

Jody McIntyre wrote on 2005-02-09:
| Can you try the fix without
| pci_write_config_word(dev,PCI_CACHE_LINE_SIZE,toshiba_pcls);
| or pci_read_config_word(dev,PCI_CACHE_LINE_SIZE,&toshiba_pcls);
| and report if it still works?
|
| If it doesn't work, try leaving those lines out but adding
| pci_clear_mwi(dev);
| after the mdelay(), on the off chance that the device thinks mwi is on.
|
| The correct fix for this, if possible, is actually a pci quirk instead
| of the dmi-based approach, but if reading PCI_CACHE_LINE_SIZE before
| pci_enable_device() really is necessary, this will be rather difficult.
[ http://marc.theaimsgroup.com/?l=linux1394-devel&m=110797909807519 ]
-- 
Stefan Richter
-=====-=-=-= =-=- -====
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2
  2005-10-15 21:02     ` ohci1394 unhandled interrupts bug in 2.6.14-rc2 Stefan Richter
@ 2005-10-15 21:59       ` Jesse Barnes
  0 siblings, 0 replies; 24+ messages in thread
From: Jesse Barnes @ 2005-10-15 21:59 UTC (permalink / raw)
  To: Stefan Richter; +Cc: linux1394-devel, linux-kernel

On Sat, Oct 15, 2005 at 11:02:48PM +0200, Stefan Richter wrote:
> What about the PCI_CACHE_LINE_SIZE read/write?
> 
> Jody McIntyre wrote on 2005-02-09:
> | Can you try the fix without
> | pci_write_config_word(dev,PCI_CACHE_LINE_SIZE,toshiba_pcls);
> | or pci_read_config_word(dev,PCI_CACHE_LINE_SIZE,&toshiba_pcls);
> | and report if it still works?
> |
> | If it doesn't work, try leaving those lines out but adding
> | pci_clear_mwi(dev);
> | after the mdelay(), on the off chance that the device thinks mwi is on.
> |
> | The correct fix for this, if possible, is actually a pci quirk instead
> | of the dmi-based approach, but if reading PCI_CACHE_LINE_SIZE before
> | pci_enable_device() really is necessary, this will be rather difficult.
> [ http://marc.theaimsgroup.com/?l=linux1394-devel&m=110797909807519 ]

It looks like it is.

I removed the PCI_CACHE_LINE_SIZE read and write, and that didn't work.
I added in a pci_clear_mwi(dev) and that didn't work either.  It looks
like the whole patch that I posted earlier is required.

Thanks,
Jesse

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2
  2005-10-15 20:29   ` Jesse Barnes
  2005-10-15 20:40     ` new PCI quirk for Toshiba Satellite? Jesse Barnes
  2005-10-15 21:02     ` ohci1394 unhandled interrupts bug in 2.6.14-rc2 Stefan Richter
@ 2005-10-17  7:55     ` Andrew Morton
  2005-10-17  9:35       ` Stefan Richter
  2 siblings, 1 reply; 24+ messages in thread
From: Andrew Morton @ 2005-10-17  7:55 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: stefanr, linux1394-devel, linux-kernel

Jesse Barnes <jbarnes@virtuousgeek.org> wrote:
>
> diff -X linux-2.6.14-rc2/Documentation/dontdiff -Naur linux-2.6.14-rc2.orig/drivers/ieee1394/ohci1394.c linux-2.6.14-rc2/drivers/ieee1394/ohci1394.c
> --- linux-2.6.14-rc2.orig/drivers/ieee1394/ohci1394.c	2005-09-19 20:00:41.000000000 -0700
> +++ linux-2.6.14-rc2/drivers/ieee1394/ohci1394.c	2005-10-15 12:55:08.000000000 -0700
> @@ -169,6 +169,10 @@
>  module_param(phys_dma, int, 0644);
>  MODULE_PARM_DESC(phys_dma, "Enable physical dma (default = 1).");
>  
> +static int toshiba __initdata = 0;
> +module_param(toshiba, bool, 0);
> +MODULE_PARM_DESC(toshiba, "Toshiba Legacy-Free BIOS workaround (default=0).");
> +
>  static void dma_trm_tasklet(unsigned long data);
>  static void dma_trm_reset(struct dma_trm_ctx *d);
>  
> @@ -3222,14 +3226,28 @@
>  	struct hpsb_host *host;
>  	struct ti_ohci *ohci;	/* shortcut to currently handled device */
>  	unsigned long ohci_base;
> +	u16  toshiba_data;
>  
>  	if (version_printed++ == 0)
>  		PRINT_G(KERN_INFO, "%s", version);
>  
> +	if (toshiba) {
> +		dev->current_state = 4;
> +		pci_read_config_word(dev, PCI_CACHE_LINE_SIZE, &toshiba_data);
> +	}
> +
>          if (pci_enable_device(dev))
>  		FAIL(-ENXIO, "Failed to enable OHCI hardware");
>          pci_set_master(dev);
>  
> +	if (toshiba) {
> +		mdelay(10);
> +		pci_write_config_word(dev, PCI_CACHE_LINE_SIZE, toshiba_data);
> +		pci_write_config_word(dev, PCI_INTERRUPT_LINE, dev->irq);
> +		pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, pci_resource_start(dev, 0));
> +		pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, pci_resource_start(dev, 1));
> + 	}
> +
>  	host = hpsb_alloc_host(&ohci1394_driver, sizeof(struct ti_ohci), &dev->dev);
>  	if (!host) FAIL(-ENOMEM, "Failed to allocate host structure");

It would be really really preferable if we could find some automatic way of
doing this.  Is it possible to use DMI matching, like
arch/i386/kernel/acpi/sleep.c:acpisleep_dmi_table ?


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2
  2005-10-17  7:55     ` Andrew Morton
@ 2005-10-17  9:35       ` Stefan Richter
  2005-10-17  9:42         ` Andrew Morton
  0 siblings, 1 reply; 24+ messages in thread
From: Stefan Richter @ 2005-10-17  9:35 UTC (permalink / raw)
  To: linux1394-devel, linux-kernel; +Cc: Andrew Morton, Jesse Barnes

Andrew Morton wrote:
> Jesse Barnes <jbarnes@virtuousgeek.org> wrote:
> 
>>diff -X linux-2.6.14-rc2/Documentation/dontdiff -Naur linux-2.6.14-rc2.orig/drivers/ieee1394/ohci1394.c linux-2.6.14-rc2/drivers/ieee1394/ohci1394.c
>>--- linux-2.6.14-rc2.orig/drivers/ieee1394/ohci1394.c	2005-09-19 20:00:41.000000000 -0700
>>+++ linux-2.6.14-rc2/drivers/ieee1394/ohci1394.c	2005-10-15 12:55:08.000000000 -0700
[...]
>>+module_param(toshiba, bool, 0);
>>+MODULE_PARM_DESC(toshiba, "Toshiba Legacy-Free BIOS workaround (default=0).");
[...]
> It would be really really preferable if we could find some automatic way of
> doing this.

I agree.

>  Is it possible to use DMI matching, like
> arch/i386/kernel/acpi/sleep.c:acpisleep_dmi_table ?

Earlier forms of the patch do DMI matching:
http://marc.theaimsgroup.com/?l=linux1394-devel&m=110790513206094
http://www.janerob.com/rob/ts5100/tosh-1394.patch
[short-circuited by if (1) at the second URL]

Of course we don't have a complete picture of which models are affected 
though.
-- 
Stefan Richter
-=====-=-=-= =-=- =---=
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2
  2005-10-17  9:35       ` Stefan Richter
@ 2005-10-17  9:42         ` Andrew Morton
  2005-10-17 10:03           ` Stefan Richter
  2005-10-17 12:48           ` rob
  0 siblings, 2 replies; 24+ messages in thread
From: Andrew Morton @ 2005-10-17  9:42 UTC (permalink / raw)
  To: Stefan Richter; +Cc: linux1394-devel, linux-kernel, jbarnes, rob

Stefan Richter <stefanr@s5r6.in-berlin.de> wrote:
>
> Andrew Morton wrote:
> > Jesse Barnes <jbarnes@virtuousgeek.org> wrote:
> > 
> >>diff -X linux-2.6.14-rc2/Documentation/dontdiff -Naur linux-2.6.14-rc2.orig/drivers/ieee1394/ohci1394.c linux-2.6.14-rc2/drivers/ieee1394/ohci1394.c
> >>--- linux-2.6.14-rc2.orig/drivers/ieee1394/ohci1394.c	2005-09-19 20:00:41.000000000 -0700
> >>+++ linux-2.6.14-rc2/drivers/ieee1394/ohci1394.c	2005-10-15 12:55:08.000000000 -0700
> [...]
> >>+module_param(toshiba, bool, 0);
> >>+MODULE_PARM_DESC(toshiba, "Toshiba Legacy-Free BIOS workaround (default=0).");
> [...]
> > It would be really really preferable if we could find some automatic way of
> > doing this.
> 
> I agree.
> 
> >  Is it possible to use DMI matching, like
> > arch/i386/kernel/acpi/sleep.c:acpisleep_dmi_table ?
> 
> Earlier forms of the patch do DMI matching:
> http://marc.theaimsgroup.com/?l=linux1394-devel&m=110790513206094
> http://www.janerob.com/rob/ts5100/tosh-1394.patch
> [short-circuited by if (1) at the second URL]

Rob, can you finish that patch off and send it?

> Of course we don't have a complete picture of which models are affected 
> though.

I suppose we could do both.  As people are found who need the module
parameter, we grab their DMI strings and add them to the table?


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2
  2005-10-17  9:42         ` Andrew Morton
@ 2005-10-17 10:03           ` Stefan Richter
  2005-10-17 16:30             ` Jesse Barnes
  2005-10-17 12:48           ` rob
  1 sibling, 1 reply; 24+ messages in thread
From: Stefan Richter @ 2005-10-17 10:03 UTC (permalink / raw)
  To: linux1394-devel, linux-kernel; +Cc: Andrew Morton, jbarnes, rob

Andrew Morton wrote:
> Stefan Richter <stefanr@s5r6.in-berlin.de> wrote:
>>Of course we don't have a complete picture of which models are affected 
>>though.
> 
> I suppose we could do both.  As people are found who need the module
> parameter, we grab their DMI strings and add them to the table?

Jesse, what DMI_PRODUCT_NAME matches your laptop?
-- 
Stefan Richter
-=====-=-=-= =-=- =---=
http://arcgraph.de/sr/


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2
  2005-10-17  9:42         ` Andrew Morton
  2005-10-17 10:03           ` Stefan Richter
@ 2005-10-17 12:48           ` rob
  2005-10-17 15:58             ` Stefan Richter
  1 sibling, 1 reply; 24+ messages in thread
From: rob @ 2005-10-17 12:48 UTC (permalink / raw)
  To: Andrew Morton, Stefan Richter; +Cc: linux1394-devel, linux-kernel, jbarnes


On Mon, 17 Oct 2005 02:42:19 -0700, Andrew Morton wrote
> Stefan Richter <stefanr@s5r6.in-berlin.de> wrote:

> > Earlier forms of the patch do DMI matching:
> > http://marc.theaimsgroup.com/?l=linux1394-devel&m=110790513206094
> > http://www.janerob.com/rob/ts5100/tosh-1394.patch
> > [short-circuited by if (1) at the second URL]
> 
> Rob, can you finish that patch off and send it?

Sorry, I was advised that this should be correctly handled as a pci-quirk
(Jody McIntyre <scjody@modernduck.com>), and subsequently my laptop
motherboard died so I have no way of taking it further.  The responses I got
indicated that the code works as is for the followiung laptops


> System Vendor: TOSHIBA
> Product Name: S5100-501
> Version: PS510E-00NV7-EN


System Vendor: TOSHIBA
Product Name: S5200-801
Version: PS520E-31P1D-GR

Manufacturer: TOSHIBA
Product Name: Satellite 5200
Version: PS520C-31P0EP

Manufacturer: TOSHIBA
Product Name: Satellite 5205
Version: PS522U-XK00YV

Manufacturer: TOSHIBA
Product Name: S5100-603
Version: PS511E-05328-GR

toshiba satellite 5005-S504

Toshiba Satellite 5105-s607


rob.


--
Open WebMail Project (http://openwebmail.org)




^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2
  2005-10-17 12:48           ` rob
@ 2005-10-17 15:58             ` Stefan Richter
  2005-10-18  5:32               ` rob
  0 siblings, 1 reply; 24+ messages in thread
From: Stefan Richter @ 2005-10-17 15:58 UTC (permalink / raw)
  To: linux1394-devel, linux-kernel; +Cc: rob, Andrew Morton, jbarnes, Jody McIntyre

rob wrote:
> On Mon, 17 Oct 2005 02:42:19 -0700, Andrew Morton wrote
>>Stefan Richter <stefanr@s5r6.in-berlin.de> wrote:
>>>Earlier forms of the patch do DMI matching:
>>>http://marc.theaimsgroup.com/?l=linux1394-devel&m=110790513206094
>>>http://www.janerob.com/rob/ts5100/tosh-1394.patch
>>>[short-circuited by if (1) at the second URL]
>>
>>Rob, can you finish that patch off and send it?
> 
> Sorry, I was advised that this should be correctly handled as a pci-quirk
> (Jody McIntyre <scjody@modernduck.com>),

Since Jesse found that we really need to read & write back the 
PCI_CACHE_LINE_SIZE, I gather the workaround has to stay in ohci1394 
(and should be triggered by dmi_check_system), doesn't it?

> and subsequently my laptop
> motherboard died so I have no way of taking it further.

We should be able to finish it.

> The responses I got
> indicated that the code works as is for the followiung laptops
> 
>>System Vendor: TOSHIBA
>>Product Name: S5100-501
>>Version: PS510E-00NV7-EN
> 
> System Vendor: TOSHIBA
> Product Name: S5200-801
> Version: PS520E-31P1D-GR
> 
> Manufacturer: TOSHIBA
> Product Name: Satellite 5200
> Version: PS520C-31P0EP
> 
> Manufacturer: TOSHIBA
> Product Name: Satellite 5205
> Version: PS522U-XK00YV
> 
> Manufacturer: TOSHIBA
> Product Name: S5100-603
> Version: PS511E-05328-GR
> 
> toshiba satellite 5005-S504
> 
> Toshiba Satellite 5105-s607

Thanks a lot for the survey. Do they all _need_ the patch, or do some of 
them need it and the others are just not harmed by the patch?

Does anybody know a DMI_PRODUCT_NAME of a Libretto L1? Something like 
PAL1060TNMM or PAL1060TNCM?
-- 
Stefan Richter
-=====-=-=-= =-=- =---=
http://arcgraph.de/sr/



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2
  2005-10-17 10:03           ` Stefan Richter
@ 2005-10-17 16:30             ` Jesse Barnes
  2005-10-17 18:50               ` Stefan Richter
  0 siblings, 1 reply; 24+ messages in thread
From: Jesse Barnes @ 2005-10-17 16:30 UTC (permalink / raw)
  To: Stefan Richter; +Cc: linux1394-devel, linux-kernel, Andrew Morton, rob

On Monday, October 17, 2005 3:03 am, Stefan Richter wrote:
> Andrew Morton wrote:
> > Stefan Richter <stefanr@s5r6.in-berlin.de> wrote:
> >>Of course we don't have a complete picture of which models are
> >> affected though.
> >
> > I suppose we could do both.  As people are found who need the module
> > parameter, we grab their DMI strings and add them to the table?
>
> Jesse, what DMI_PRODUCT_NAME matches your laptop?

I'll have to check when I get home, is the relevant info from the "System 
Information" section of the dmidecode output?

Jesse

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2
  2005-10-17 16:30             ` Jesse Barnes
@ 2005-10-17 18:50               ` Stefan Richter
  2005-10-19 17:54                 ` Jesse Barnes
  0 siblings, 1 reply; 24+ messages in thread
From: Stefan Richter @ 2005-10-17 18:50 UTC (permalink / raw)
  To: linux1394-devel, linux-kernel; +Cc: Jesse Barnes, Andrew Morton, rob

Jesse Barnes wrote:
>>Jesse, what DMI_PRODUCT_NAME matches your laptop?
> 
> I'll have to check when I get home, is the relevant info from the "System 
> Information" section of the dmidecode output?

AFAICT yes. Although I wonder if there is a better suited part of the 
DMI table to look at. From what Rob posted, we could simply match 
{DMI_SYS_VENDOR, "TOSHIBA"} && {DMI_PRODUCT_VERSION, "PS5"} which 
probably catches all Satellite 5xxx's. I hope this isn't too general.

I also wonder how 1394 CardBus cards would react on this patch in 
affected Toshibas...

| +	toshiba = dmi_check_system(extra_init_dmi_table);
| +	if (toshiba) {
| +	        PRINT_G(KERN_INFO, "Toshiba %s detected, enabling extra 
initialization code",
| +			dmi_get_system_info(DMI_PRODUCT_NAME));
| +	        dev->current_state = 4;
| +		pci_read_config_word(dev, PCI_CACHE_LINE_SIZE, &toshiba_pcls);
| +	}
...
|	if (pci_enable_device(dev))
|  		FAIL(-ENXIO, "Failed to enable OHCI hardware");
...
| +	if (toshiba) {
| +	        mdelay(10);
| +	        pci_write_config_word(dev, PCI_CACHE_LINE_SIZE, toshiba_pcls);
| +	        pci_write_config_word(dev, PCI_INTERRUPT_LINE, dev->irq);
| +	        pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, 
pci_resource_start(dev, 0));
| +	        pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, 
pci_resource_start(dev, 1));
| +	}
...
|	pci_set_master(dev);

-- 
Stefan Richter
-=====-=-=-= =-=- =---=
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2
  2005-10-17 15:58             ` Stefan Richter
@ 2005-10-18  5:32               ` rob
  0 siblings, 0 replies; 24+ messages in thread
From: rob @ 2005-10-18  5:32 UTC (permalink / raw)
  To: Stefan Richter, linux1394-devel, linux-kernel
  Cc: Andrew Morton, jbarnes, Jody McIntyre

On Mon, 17 Oct 2005 17:58:10 +0200, Stefan Richter wrote
...
> > Toshiba Satellite 5105-s607
> 
> Thanks a lot for the survey. Do they all _need_ the patch, or do 
> some of them need it and the others are just not harmed by the patch?

they all need the patch to modprobe without errors, not all had firewire
devices to test with.

> Does anybody know a DMI_PRODUCT_NAME of a Libretto L1? Something 
> like PAL1060TNMM or PAL1060TNCM?

Might try John Belmonte <john at neggie.net>, he has an L5 and runs a website
for it.

rob.


--
Open WebMail Project (http://openwebmail.org)


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2
  2005-10-17 18:50               ` Stefan Richter
@ 2005-10-19 17:54                 ` Jesse Barnes
  0 siblings, 0 replies; 24+ messages in thread
From: Jesse Barnes @ 2005-10-19 17:54 UTC (permalink / raw)
  To: Stefan Richter; +Cc: linux1394-devel, linux-kernel, Andrew Morton, rob

On Monday, October 17, 2005 11:50 am, Stefan Richter wrote:
> Jesse Barnes wrote:
> >>Jesse, what DMI_PRODUCT_NAME matches your laptop?
> >
> > I'll have to check when I get home, is the relevant info from the
> > "System Information" section of the dmidecode output?
>
> AFAICT yes. Although I wonder if there is a better suited part of the
> DMI table to look at. From what Rob posted, we could simply match
> {DMI_SYS_VENDOR, "TOSHIBA"} && {DMI_PRODUCT_VERSION, "PS5"} which
> probably catches all Satellite 5xxx's. I hope this isn't too general.
>
> I also wonder how 1394 CardBus cards would react on this patch in
> affected Toshibas...

It should be harmless, right?  I don't have any way of testing since I 
don't have such a card myself.  Here's the dmidecode output from my 
machine.

Thanks,
Jesse

# dmidecode 2.7
SMBIOS 2.3 present.
45 structures occupying 1419 bytes.
Table at 0x000EB160.

Handle 0x0000, DMI type 0, 20 bytes.
BIOS Information
        Vendor: TOSHIBA
        Version: Version 1.20
        Release Date: 01/24/2005
        Address: 0xEB000
        Runtime Size: 84 kB
        ROM Size: 512 kB
        Characteristics:
                ISA is supported
                PCI is supported
                PC Card (PCMCIA) is supported
                PNP is supported
                APM is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                Boot from CD is supported
                BIOS ROM is socketed
                EDD is supported
                Japanese floppy for NEC 9800 1.2 MB is supported (int 
13h)
                3.5"/720 KB floppy services are supported (int 13h)
                3.5"/2.88 MB floppy services are supported (int 13h)
                Print screen service is supported (int 5h)
                8042 keyboard services are supported (int 9h)
                Serial services are supported (int 14h)
                Printer services are supported (int 17h)
                CGA/mono video services are supported (int 10h)
                ACPI is supported
                USB legacy is supported
                LS-120 boot is supported
                ATAPI Zip drive boot is supported
                Smart battery is supported
                Function key-initiated network boot is supported

Handle 0x0001, DMI type 1, 25 bytes.
System Information
        Manufacturer: TOSHIBA
        Product Name: Satellite M45
        Version: PSM40U-01X001
        Serial Number: 15106102Q
        UUID: 60178840-7169-11D9-A70E-00A0D1BB8852
        Wake-up Type: Power Switch

Handle 0x0002, DMI type 2, 17 bytes.
Base Board Information
        Manufacturer: TOSHIBA
        Product Name: Portable PC
        Version: Version A0
        Serial Number: 0000000000
        Asset Tag: Not Specified
        Features: None
        Location In Chassis: Not Specified
        Chassis Handle: 0x0000
        Type: Other
        Contained Object Handles: 0

Handle 0x0003, DMI type 3, 17 bytes.
Chassis Information
        Manufacturer: TOSHIBA
        Type: Portable
        Lock: Not Present
        Version: Version 1.0
        Serial Number: 00000000
        Asset Tag: 0000000000
        Boot-up State: Safe
        Power Supply State: Safe
        Thermal State: Safe
        Security Status: None
        OEM Information: 0x00000000

Handle 0x0004, DMI type 4, 32 bytes.
Processor Information
        Socket Designation: mFCPGA
        Type: Central Processor
        Family: Pentium M
        Manufacturer: GenuineIntelation
        ID: FF F9 E9 AF 00 00 00 00
        Signature: Type 3, Family 4073, Model 159, Stepping 15
        Flags: None
        Version: Pentium(R) M
        Voltage: 2.9 V
        External Clock: 133 MHz
        Max Speed: 1733 MHz
        Current Speed: 1733 MHz
        Status: Populated, Enabled
        Upgrade: None
        L1 Cache Handle: 0x0005
        L2 Cache Handle: 0x0006
        L3 Cache Handle: Not Provided

Handle 0x0005, DMI type 7, 19 bytes.
Cache Information
        Socket Designation: L1 Cache
        Configuration: Enabled, Not Socketed, Level 1
        Operational Mode: Write Back
        Location: Internal
        Installed Size: 32 KB
        Maximum Size: 32 KB
        Supported SRAM Types:
                Burst
                Pipeline Burst
                Asynchronous
        Installed SRAM Type: Burst
        Speed: Unknown
        Error Correction Type: None
        System Type: Unknown
        Associativity: Unknown

Handle 0x0006, DMI type 7, 19 bytes.
Cache Information
        Socket Designation: L2 Cache
        Configuration: Enabled, Not Socketed, Level 2
        Operational Mode: Write Back
        Location: External
        Installed Size: 2048 KB
        Maximum Size: 2048 KB
        Supported SRAM Types:
                Burst
                Pipeline Burst
                Asynchronous
        Installed SRAM Type: Burst
        Speed: Unknown
        Error Correction Type: None
        System Type: Unknown
        Associativity: Unknown

Handle 0x0007, DMI type 8, 9 bytes.
Port Connector Information
        Internal Reference Designator: Serial Port
        Internal Connector Type: None
        External Reference Designator: J16
        External Connector Type: DB-9 male
        Port Type: Serial Port 16550A Compatible

Handle 0x0008, DMI type 8, 9 bytes.
Port Connector Information
        Internal Reference Designator: Parallel Port
        Internal Connector Type: None
        External Reference Designator: J20
        External Connector Type: DB-25 male
        Port Type: Parallel Port ECP/EPP

Handle 0x0009, DMI type 8, 9 bytes.
Port Connector Information
        Internal Reference Designator: Kbd Connector
        Internal Connector Type: None
        External Reference Designator: J8
        External Connector Type: PS/2
        Port Type: Keyboard Port

Handle 0x000A, DMI type 8, 9 bytes.
Port Connector Information
        Internal Reference Designator: Mouse Conn.
        Internal Connector Type: None
        External Reference Designator: J9
        External Connector Type: PS/2
        Port Type: Mouse Port

Handle 0x000B, DMI type 8, 9 bytes.
Port Connector Information
        Internal Reference Designator: USB Conn.
        Internal Connector Type: None
        External Reference Designator: J12
        External Connector Type: Other
        Port Type: USB

Handle 0x000C, DMI type 8, 9 bytes.
Port Connector Information
        Internal Reference Designator: Dock Conn.
        Internal Connector Type: None
        External Reference Designator: J6
        External Connector Type: Other
        Port Type: Other

Handle 0x000D, DMI type 8, 9 bytes.
Port Connector Information
        Internal Reference Designator: VGA Conn.
        Internal Connector Type: None
        External Reference Designator: J7
        External Connector Type: Other
        Port Type: Other

Handle 0x000E, DMI type 8, 9 bytes.
Port Connector Information
        Internal Reference Designator: DC Input
        Internal Connector Type: None
        External Reference Designator: J35
        External Connector Type: Other
        Port Type: Other

Handle 0x000F, DMI type 8, 9 bytes.
Port Connector Information
        Internal Reference Designator: IrDA Port
        Internal Connector Type: None
        External Reference Designator: U1
        External Connector Type: Infrared
        Port Type: Other

Handle 0x0010, DMI type 8, 9 bytes.
Port Connector Information
        Internal Reference Designator: CardBus Conn.
        Internal Connector Type: None
        External Reference Designator: J26
        External Connector Type: Other
        Port Type: Cardbus

Handle 0x0011, DMI type 9, 13 bytes.
System Slot Information
        Designation: ISA Slot
        Type: 16-bit ISA
        Current Usage: Available
        Length: Long
        Characteristics: Unknown

Handle 0x0012, DMI type 9, 13 bytes.
System Slot Information
        Designation: PCI Slot
        Type: 32-bit PCI
        Current Usage: Available
        Length: Long
        ID: 4
        Characteristics: Unknown

Handle 0x0013, DMI type 10, 16 bytes.
On Board Device 1 Information
        Type: Other
        Status: Disabled
        Description: ECP Port
On Board Device 2 Information
        Type: Other
        Status: Disabled
        Description: 16550 UART
On Board Device 3 Information
        Type: Other
        Status: Disabled
        Description: IrDA Port
On Board Device 4 Information
        Type: Other
        Status: Enabled
        Description: CardBus Bridge
On Board Device 5 Information
        Type: Other
        Status: Enabled
        Description: IDE Controller
On Board Device 6 Information
        Type: Video
        Status: Enabled
        Description: Itl

Handle 0x0014, DMI type 11, 5 bytes.
OEM Strings
        String 1: PSM40U-01X001,SQ003520,11V

Handle 0x0015, DMI type 12, 5 bytes.
System Configuration Options
        Option 1: TOSHIBA

Handle 0x0016, DMI type 13, 22 bytes.
BIOS Language Information
        Installable Languages: 1
                en|US|iso8859-1
        Currently Installed Language: en|US|iso8859-1

Handle 0x0017, DMI type 16, 15 bytes.
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: None
        Maximum Capacity: 2 GB
        Error Information Handle: 0x001D
        Number Of Devices: 2

Handle 0x0018, DMI type 16, 15 bytes.
Physical Memory Array
        Location: System Board Or Motherboard
        Use: Video Memory
        Error Correction Type: None
        Maximum Capacity: 64 MB
        Error Information Handle: Not Provided
        Number Of Devices: 1

Handle 0x0019, DMI type 16, 15 bytes.
Physical Memory Array
        Location: System Board Or Motherboard
        Use: Flash Memory
        Error Correction Type: None
        Maximum Capacity: 512 kB
        Error Information Handle: Not Provided
        Number Of Devices: 1

Handle 0x001A, DMI type 16, 15 bytes.
Physical Memory Array
        Location: System Board Or Motherboard
        Use: Cache Memory
        Error Correction Type: None
        Maximum Capacity: 2 MB
        Error Information Handle: Not Provided
        Number Of Devices: 1

Handle 0x001B, DMI type 17, 23 bytes.
Memory Device
        Array Handle: 0x0017
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 512 MB
        Form Factor: SODIMM
        Set: Unknown
        Locator: DRAM Slot 0
        Bank Locator: Banks 0/1
        Type: DDR
        Type Detail: EDO
        Speed: 333 MHz (3.0 ns)

Handle 0x001C, DMI type 17, 23 bytes.
Memory Device
        Array Handle: 0x0017
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: No Module Installed
        Form Factor: SODIMM
        Set: Unknown
        Locator: DRAM Slot 1
        Bank Locator: Banks 2/3
        Type: DDR
        Type Detail: EDO
        Speed: 333 MHz (3.0 ns)

Handle 0x001D, DMI type 18, 23 bytes.
32-bit Memory Error Information
        Type: Unknown
        Granularity: Memory Partition Level
        Operation: Unknown
        Vendor Syndrome: Unknown
        Memory Array Address: Unknown
        Device Address: Unknown
        Resolution: Unknown

Handle 0x001E, DMI type 19, 15 bytes.
Memory Array Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x0001FFFFFFF
        Range Size: 512 MB
        Physical Array Handle: 0x0017
        Partition Width: 0

Handle 0x001F, DMI type 20, 19 bytes.
Memory Device Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x00003FFFFFF
        Range Size: 64 MB
        Physical Device Handle: 0x001B
        Memory Array Mapped Address Handle: 0x0003
        Partition Row Position: <OUT OF SPEC>

Handle 0x0020, DMI type 20, 19 bytes.
Memory Device Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x00003FFFFFF
        Range Size: 64 MB
        Physical Device Handle: 0x001C
        Memory Array Mapped Address Handle: 0x0003
        Partition Row Position: <OUT OF SPEC>

Handle 0x0021, DMI type 21, 7 bytes.
Built-in Pointing Device
        Type: Mouse
        Interface: PS/2
        Buttons: 2

Handle 0x0022, DMI type 22, 26 bytes.
Portable Battery
        Location: Smart Battery Conn J37
        Manufacturer: Duracell
        Manufacture Date: 01/06/97
        Serial Number: 0042
        Name: DR36
        Design Capacity: Unknown
        Design Voltage: 12 mV
        SBDS Version: V1.0
        Maximum Error: Unknown
        SBDS Chemistry: Not Specified
        OEM-specific Information: 0x00000000

Handle 0x0023, DMI type 23, 13 bytes.
System Reset
        Status: Disabled
        Watchdog Timer: Not Present

Handle 0x0024, DMI type 24, 5 bytes.
Hardware Security
        Power-On Password Status: Disabled
        Keyboard Password Status: Not Implemented
        Administrator Password Status: Disabled
        Front Panel Reset Status: Not Implemented

Handle 0x0025, DMI type 25, 9 bytes.
        System Power Controls
        Next Scheduled Power-on: *-* 00:00:00

Handle 0x0026, DMI type 26, 22 bytes.
Voltage Probe
        Description: Voltage Probe Description
        Location: Unknown
        Status: Unknown
        Maximum Value: Unknown
        Minimum Value: Unknown
        Resolution: Unknown
        Tolerance: Unknown
        Accuracy: Unknown
        OEM-specific Information: 0x00000000
        Nominal Value: 0.000 V

Handle 0x0027, DMI type 27, 14 bytes.
Cooling Device
        Temperature Probe Handle: 0x0028
        Type: Unknown
        Status: Unknown
        OEM-specific Information: 0x00000000
        Nominal Speed: 0 rpm

Handle 0x0028, DMI type 28, 22 bytes.
Temperature Probe
        Description: Temperature Probe Description
        Location: Unknown
        Status: Unknown
        Maximum Value: Unknown
        Minimum Value Unknown
        Resolution: Unknown
        Tolerance: Unknown
        Accuracy: Unknown
        OEM-specific Information: 0x00000000
        Nominal Value: 0.0 deg C

Handle 0x0029, DMI type 29, 22 bytes.
Electrical Current Probe
        Description: Electrical Probe Description
        Location: Unknown
        Status: Unknown
        Maximum Value: Unknown
        Minimum Value: Unknown
        Resolution: Unknown
        Tolerance: Unknown
        Accuracy: Unknown
        OEM-specific Information: 0x00000000
        Nominal Value: 0.000 A

Handle 0x002A, DMI type 30, 6 bytes.
Out-of-band Remote Access
        Manufacturer Name: Manufacturer Name
        Inbound Connection: Disabled
        Outbound Connection: Disabled

Handle 0x002B, DMI type 32, 11 bytes.
System Boot Information
        Status: No errors detected

Handle 0x002C, DMI type 127, 4 bytes.
End Of Table


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: new PCI quirk for Toshiba Satellite?
  2005-10-15 20:40     ` new PCI quirk for Toshiba Satellite? Jesse Barnes
@ 2005-10-20  0:06       ` Greg KH
  2005-10-20 18:32         ` Stefan Richter
  0 siblings, 1 reply; 24+ messages in thread
From: Greg KH @ 2005-10-20  0:06 UTC (permalink / raw)
  To: Jesse Barnes
  Cc: Jesse Barnes, Stefan Richter, linux1394-devel, linux-kernel,
	linux-pci, gregkh

On Sat, Oct 15, 2005 at 01:40:40PM -0700, Jesse Barnes wrote:
> On Sat, Oct 15, 2005 at 01:29:44PM -0700, Jesse Barnes wrote:
> > On Sat, Oct 15, 2005 at 09:39:06PM +0200, Stefan Richter wrote:
> > > Somebody mentioned this Linux-on-Toshiba-Satellite page recently on 
> > > linux1394-user: http://www.janerob.com/rob/ts5100/index.shtml
> > > The patch available from there was briefly discussed in February:
> > > http://marc.theaimsgroup.com/?l=linux1394-devel&t=110786507900006
> > > 
> > > Does this patch correct the problem on your machine?
> > 
> > Yes, it seems to help.  If I boot up and modprobe the driver with
> > toshiba=1, everything looks fine (I have no firewire devices to test
> > with).  If I modprobe it with toshiba=0, the system gets sluggish for a
> > second then IRQ 11 is disabled.  I had to update the patch though, as
> > shown below.
> > 
> > I'm not sure if the fix is proper though, maybe this should be handled
> > as a PCI quirk of this Toshiba board instead?  Either way, some kind of
> > fix should make it in soon, ideally to 2.6.14 or 2.6.14.1.
> 
> [Forwarding on to the PCI maintainers.]
> 
> It seems that the PCI config space isn't programmed correctly on these
> machines for some reason, so the fix below allows my OHCI device to work
> if I pass 'toshiba=1'.  This seems like something that belongs in the
> PCI layer instead though, doesn't it?

Yes, looks like it should be a pci quirk instead.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: new PCI quirk for Toshiba Satellite?
  2005-10-20  0:06       ` Greg KH
@ 2005-10-20 18:32         ` Stefan Richter
  2005-10-21 18:38           ` Jesse Barnes
  0 siblings, 1 reply; 24+ messages in thread
From: Stefan Richter @ 2005-10-20 18:32 UTC (permalink / raw)
  To: linux1394-devel, linux-kernel, linux-pci
  Cc: Greg KH, Jesse Barnes, Jesse Barnes, gregkh

Greg KH wrote:
> On Sat, Oct 15, 2005 at 01:40:40PM -0700, Jesse Barnes wrote:
>>>On Sat, Oct 15, 2005 at 09:39:06PM +0200, Stefan Richter wrote:
>>>>Somebody mentioned this Linux-on-Toshiba-Satellite page recently on 
>>>>linux1394-user: http://www.janerob.com/rob/ts5100/index.shtml
>>>>The patch available from there was briefly discussed in February:
>>>>http://marc.theaimsgroup.com/?l=linux1394-devel&t=110786507900006
...
>>It seems that the PCI config space isn't programmed correctly on these
>>machines for some reason, so the fix below allows my OHCI device to work
>>if I pass 'toshiba=1'.  This seems like something that belongs in the
>>PCI layer instead though, doesn't it?
> 
> Yes, looks like it should be a pci quirk instead.

I gather from DMI info provided by Rob and Jesse that affected machines 
could be determined by dmi_check_system() using these two checks:
   - DMI_SYS_VENDOR contains "TOSHIBA" && DMI_PRODUCT_VERSION contains
     "PS5", i.e. most of Satellite 5xxx, as well as
   - DMI_SYS_VENDOR contains "TOSHIBA" && DMI_PRODUCT_VERSION contains
     "PSM4", i.e. all Satellite M4x.
A few more series are probably affected too.

http://marc.theaimsgroup.com/?l=linux-kernel&m=112955338318326
http://marc.theaimsgroup.com/?l=linux-kernel&m=112974457930368
http://linux.toshiba-dme.co.jp/linux/eng/speclist.php3

BTW, the author of the initial incarnation of the patch is this person:
http://nemaru.at.infoseek.co.jp/1394.html
-- 
Stefan Richter
-=====-=-=-= =-=- =-=--
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: new PCI quirk for Toshiba Satellite?
  2005-10-20 18:32         ` Stefan Richter
@ 2005-10-21 18:38           ` Jesse Barnes
  2005-10-21 20:13             ` Stefan Richter
  0 siblings, 1 reply; 24+ messages in thread
From: Jesse Barnes @ 2005-10-21 18:38 UTC (permalink / raw)
  To: Stefan Richter, bcollins
  Cc: linux1394-devel, linux-kernel, linux-pci, Greg KH, scjody, gregkh

[-- Attachment #1: Type: text/plain, Size: 3403 bytes --]

On Thursday, October 20, 2005 11:32 am, Stefan Richter wrote:
> Greg KH wrote:
> > On Sat, Oct 15, 2005 at 01:40:40PM -0700, Jesse Barnes wrote:
> >> It seems that the PCI config space isn't programmed correctly on
> >> these machines for some reason, so the fix below allows my OHCI
> >> device to work if I pass 'toshiba=1'.  This seems like something
> >> that belongs in the PCI layer instead though, doesn't it?
> >
> > Yes, looks like it should be a pci quirk instead.
>
> I gather from DMI info provided by Rob and Jesse that affected
> machines could be determined by dmi_check_system() using these two
> checks: - DMI_SYS_VENDOR contains "TOSHIBA" && DMI_PRODUCT_VERSION
> contains "PS5", i.e. most of Satellite 5xxx, as well as
>    - DMI_SYS_VENDOR contains "TOSHIBA" && DMI_PRODUCT_VERSION contains
>      "PSM4", i.e. all Satellite M4x.
> A few more series are probably affected too.
>
> http://marc.theaimsgroup.com/?l=linux-kernel&m=112955338318326
> http://marc.theaimsgroup.com/?l=linux-kernel&m=112974457930368
> http://linux.toshiba-dme.co.jp/linux/eng/speclist.php3
>
> BTW, the author of the initial incarnation of the patch is this
> person: http://nemaru.at.infoseek.co.jp/1394.html

Stefan, is a PCI quirk addition possible or do we have to use 
dmi_check_system in the ohci driver itself (since we have to reprogram 
the cache line size in addition to the other registers)?

Something like this is what you had in mind (please forgive the word 
wrapping)?  In ohci1394.c somewhere:

> struct tosh_config_data {
> 	struct pci_dev *dev;
> 	u16 cache_line_size;
> };
>
> int ohci1394_toshiba_reprogram_config(struct dmi_system_id *d)
> {
> 	struct tosh_config_data *data = d->driver_data;
>
> 	mdelay(10);
> 	pci_write_config_word(data->dev, PCI_CACHE_LINE_SIZE,
> 			      data->cache_line_size);
> 	pci_write_config_word(data->dev, PCI_INTERRUPT_LINE, data->dev->irq);
> 	pci_write_config_dword(data->dev, PCI_BASE_ADDRESS_0,
> 			       pci_resource_start(data->dev, 0));
> 	pci_write_config_dword(data->dev, PCI_BASE_ADDRESS_1,
> 			       pci_resource_start(data->dev, 1));
> }

And then in ohci1394_pci_probe():

> struct tosh_config_data tosh_data;
> tosh_data.dev = dev;
> pci_read_config_word(dev, PCI_CACHE_LINE_SIZE,
> 		     &tosh_data.cache_line_size);
> static struct dmi_system_id __initdata toshiba_ohci1394_dmi_table[] =
> { {	/* Handle lack of config space programming on Toshiba laptops */
> .callback = ohci1394_toshiba_reprogram_config,
> 		.ident = "Toshiba PS5 based laptop",
> 		.matches = {
> 			DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
> 			DMI_MATCH(DMI_PRODUCT_VERSION, "PS5"),
> 		},
> 		.driver_data = &tosh_data;
> 	},
> 	{
> 		.callback = ohci1394_toshiba_reprogram_config,
> 		.ident = "Toshiba PSM4 based laptop",
> 		.matches = {
> 			DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
> 			DMI_MATCH(DMI_PRODUCT_VERSION, "PSM4"),
> 		},
> 		.driver_data = &tosh_data;
> 	},
> }
>
> dmi_check_system(toshiba_ohci1394_dmi_table);

But then what about the dev->current_state = 4?  Is that necessary?

And is anyone going to put together a patch for this, or should I do it?  
It would be great to have fixed either in 2.6.14 or 2.6.14.1 given that 
it breaks my laptop everytime I upgrade my kernel and forget to delete 
the ieee1394 devices from my initrd.

Jody or Ben, any comment?  I've attached the patch I most recently tested 
for reference.

Thanks,
Jesse

[-- Attachment #2: ohci-toshiba-fix-2.patch --]
[-- Type: text/x-diff, Size: 1649 bytes --]

diff -X linux-2.6.14-rc2/Documentation/dontdiff -Naur linux-2.6.14-rc2.orig/drivers/ieee1394/ohci1394.c linux-2.6.14-rc2/drivers/ieee1394/ohci1394.c
--- linux-2.6.14-rc2.orig/drivers/ieee1394/ohci1394.c	2005-09-19 20:00:41.000000000 -0700
+++ linux-2.6.14-rc2/drivers/ieee1394/ohci1394.c	2005-10-15 12:55:08.000000000 -0700
@@ -169,6 +169,10 @@
 module_param(phys_dma, int, 0644);
 MODULE_PARM_DESC(phys_dma, "Enable physical dma (default = 1).");
 
+static int toshiba __initdata = 0;
+module_param(toshiba, bool, 0);
+MODULE_PARM_DESC(toshiba, "Toshiba Legacy-Free BIOS workaround (default=0).");
+
 static void dma_trm_tasklet(unsigned long data);
 static void dma_trm_reset(struct dma_trm_ctx *d);
 
@@ -3222,14 +3226,28 @@
 	struct hpsb_host *host;
 	struct ti_ohci *ohci;	/* shortcut to currently handled device */
 	unsigned long ohci_base;
+	u16  toshiba_data;
 
 	if (version_printed++ == 0)
 		PRINT_G(KERN_INFO, "%s", version);
 
+	if (toshiba) {
+		dev->current_state = 4;
+		pci_read_config_word(dev, PCI_CACHE_LINE_SIZE, &toshiba_data);
+	}
+
         if (pci_enable_device(dev))
 		FAIL(-ENXIO, "Failed to enable OHCI hardware");
         pci_set_master(dev);
 
+	if (toshiba) {
+		mdelay(10);
+		pci_write_config_word(dev, PCI_CACHE_LINE_SIZE, toshiba_data);
+		pci_write_config_word(dev, PCI_INTERRUPT_LINE, dev->irq);
+		pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, pci_resource_start(dev, 0));
+		pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, pci_resource_start(dev, 1));
+ 	}
+
 	host = hpsb_alloc_host(&ohci1394_driver, sizeof(struct ti_ohci), &dev->dev);
 	if (!host) FAIL(-ENOMEM, "Failed to allocate host structure");
 

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: new PCI quirk for Toshiba Satellite?
  2005-10-21 18:38           ` Jesse Barnes
@ 2005-10-21 20:13             ` Stefan Richter
  2005-10-24 17:45               ` Jesse Barnes
  0 siblings, 1 reply; 24+ messages in thread
From: Stefan Richter @ 2005-10-21 20:13 UTC (permalink / raw)
  To: linux1394-devel, linux-kernel, linux-pci
  Cc: Jesse Barnes, bcollins, Greg KH, scjody, gregkh

Jesse Barnes wrote:
> Stefan, is a PCI quirk addition possible or do we have to use 
> dmi_check_system in the ohci driver itself (since we have to reprogram 
> the cache line size in addition to the other registers)?

I am not familiar with the PCI subsystem, thus cannot advise how to 
handle it best nor wanted to post a patch myself (yet).

[...]
>>		.callback = ohci1394_toshiba_reprogram_config,
>>		.ident = "Toshiba PSM4 based laptop",
>>		.matches = {
>>			DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
>>			DMI_MATCH(DMI_PRODUCT_VERSION, "PSM4"),
>>		},
>>		.driver_data = &tosh_data;

It seems to me, using the .callback and .driver_data doesn't make it 
cleaner and leaner.

> But then what about the dev->current_state = 4?  Is that necessary?

It is necessary; at least if the workaround resides in ohci1394. 
Otherwise the controller won't come back after a suspend/ resume cycle. 
(See Rob's post from February, 
http://marc.theaimsgroup.com/?m=110786495210243 ) Maybe there is another 
way to do that if the workaround was moved to pci/quirks.c.

[...]
> +	if (toshiba) {
> +		dev->current_state = 4;
> +		pci_read_config_word(dev, PCI_CACHE_LINE_SIZE, &toshiba_data);
> +	}
> +
>          if (pci_enable_device(dev))
>  		FAIL(-ENXIO, "Failed to enable OHCI hardware");
>          pci_set_master(dev);
>  
> +	if (toshiba) {
> +		mdelay(10);
> +		pci_write_config_word(dev, PCI_CACHE_LINE_SIZE, toshiba_data);
[...]

pci_set_master(dev) can be moved below the second part of the Toshiba 
workaround. That means AFAIU, the 2nd part of the Toshiba workaround can 
be moved out of ohci1394 into pci_fixup_device() which is called from 
pci_enable_device(), to be called as a DECLARE_PCI_FIXUP_ENABLE hook.

The first part of the workaround, i.e. caching the cache line size, for 
example by means of a static variable, would have to go into an 
_FIXUP_EARLY, _FIXUP_HEADER, or _FIXUP_FINAL hook. I am not sure yet 
about which type of hook to use.

Furthermore, everything which belongs to the workaround should IMO be 
enclosed by #ifdef SOME_SENSIBLE_MACRO. This avoids kernel bloat for any 
target which is surely not a Toshiba laptop. Rob used an #if 
defined(__i386__).
-- 
Stefan Richter
-=====-=-=-= =-=- =-=-=
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: new PCI quirk for Toshiba Satellite?
  2005-10-21 20:13             ` Stefan Richter
@ 2005-10-24 17:45               ` Jesse Barnes
  2005-10-24 18:07                 ` Jesse Barnes
  2005-10-24 18:21                 ` Stefan Richter
  0 siblings, 2 replies; 24+ messages in thread
From: Jesse Barnes @ 2005-10-24 17:45 UTC (permalink / raw)
  To: Stefan Richter
  Cc: linux1394-devel, linux-kernel, linux-pci, bcollins, Greg KH,
	scjody, gregkh

On Friday, October 21, 2005 1:13 pm, Stefan Richter wrote:
> Jesse Barnes wrote:
> > Stefan, is a PCI quirk addition possible or do we have to use
> > dmi_check_system in the ohci driver itself (since we have to
> > reprogram the cache line size in addition to the other registers)?
>
> I am not familiar with the PCI subsystem, thus cannot advise how to
> handle it best nor wanted to post a patch myself (yet).

Ok, I'll update Rob's patch to the latest tree and send it on (I hadn't 
seen it yet when I wrote my version).

> It seems to me, using the .callback and .driver_data doesn't make it
> cleaner and leaner.

I agree, I thought it was necessary since I hadn't looked at 
dmi_check_system and didn't know if it had a return value I could check.  
Rob's patch looks much simpler and nicer.

> > But then what about the dev->current_state = 4?  Is that necessary?
>
> It is necessary; at least if the workaround resides in ohci1394.
> Otherwise the controller won't come back after a suspend/ resume
> cycle. (See Rob's post from February,
> http://marc.theaimsgroup.com/?m=110786495210243 ) Maybe there is
> another way to do that if the workaround was moved to pci/quirks.c.

Having it all in the driver probably makes the most sense if we have to 
have code there anyway.  Otherwise future users may have to check both 
places if things break again in another configuration.

> Furthermore, everything which belongs to the workaround should IMO be
> enclosed by #ifdef SOME_SENSIBLE_MACRO. This avoids kernel bloat for
> any target which is surely not a Toshiba laptop. Rob used an #if
> defined(__i386__).

Checks against the compiler defined arch are usually wrong since users 
could be cross compiling, and I'd like to avoid an ifdef altogether.  I 
think we can make the code collapse entirely by fixing linux/dmi.h.  If 
we remove the !defined(CONFIG_X86_64) check around the extern of 
dmi_check_system, all other arches will have it defined to simply return 
0, causing gcc to remove the dead conditional in ohci1394.c.

Anyway, I'll refresh that patch, test it, and send it on to Andrew, 
hopefully tonight.

Thanks,
Jesse

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: new PCI quirk for Toshiba Satellite?
  2005-10-24 17:45               ` Jesse Barnes
@ 2005-10-24 18:07                 ` Jesse Barnes
  2005-10-24 18:21                 ` Stefan Richter
  1 sibling, 0 replies; 24+ messages in thread
From: Jesse Barnes @ 2005-10-24 18:07 UTC (permalink / raw)
  To: Stefan Richter
  Cc: linux1394-devel, linux-kernel, linux-pci, bcollins, Greg KH,
	scjody, gregkh

On Monday, October 24, 2005 10:45 am, Jesse Barnes wrote:
> Checks against the compiler defined arch are usually wrong since users
> could be cross compiling, and I'd like to avoid an ifdef altogether. 
> I think we can make the code collapse entirely by fixing linux/dmi.h. 
> If we remove the !defined(CONFIG_X86_64) check around the extern of
> dmi_check_system, all other arches will have it defined to simply
> return 0, causing gcc to remove the dead conditional in ohci1394.c.

Duh, I don't even think we have to do anything to dmi.h, it should work 
as described above as it stands now.  All we have to do is 
unconditionally add dmi.h to ohci1394.c and use the dmi stuff there; on 
x86 it'll do something, on other arches it should compile out just fine.

Jesse

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: new PCI quirk for Toshiba Satellite?
  2005-10-24 17:45               ` Jesse Barnes
  2005-10-24 18:07                 ` Jesse Barnes
@ 2005-10-24 18:21                 ` Stefan Richter
  2005-10-24 21:09                   ` Ivan Kokshaysky
  1 sibling, 1 reply; 24+ messages in thread
From: Stefan Richter @ 2005-10-24 18:21 UTC (permalink / raw)
  To: linux1394-devel, linux-kernel, linux-pci
  Cc: Jesse Barnes, bcollins, Greg KH, scjody, gregkh

Jesse Barnes wrote:
> On Friday, October 21, 2005 1:13 pm, Stefan Richter wrote:
>>Jesse Barnes wrote:
>>>But then what about the dev->current_state = 4?  Is that necessary?
>>
>>It is necessary; at least if the workaround resides in ohci1394.
>>Otherwise the controller won't come back after a suspend/ resume
>>cycle. (See Rob's post from February,
>>http://marc.theaimsgroup.com/?m=110786495210243 ) Maybe there is
>>another way to do that if the workaround was moved to pci/quirks.c.
> 
> Having it all in the driver probably makes the most sense if we have to 
> have code there anyway.  Otherwise future users may have to check both 
> places if things break again in another configuration.

No, better move it to pci/quirks.c. I may be wrong (again) but I think
everything of the workaround can be done there.

>>Furthermore, everything which belongs to the workaround should IMO be
>>enclosed by #ifdef SOME_SENSIBLE_MACRO. This avoids kernel bloat for
>>any target which is surely not a Toshiba laptop. Rob used an #if
>>defined(__i386__).
> 
> Checks against the compiler defined arch are usually wrong since users 
> could be cross compiling, and I'd like to avoid an ifdef altogether.

Once the workaround is in pci/quirks.c, a single #ifdef would suffice
(if it is still of any benefit there).
-- 
Stefan Richter
-=====-=-=-= =-=- ==---
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: new PCI quirk for Toshiba Satellite?
  2005-10-24 18:21                 ` Stefan Richter
@ 2005-10-24 21:09                   ` Ivan Kokshaysky
  0 siblings, 0 replies; 24+ messages in thread
From: Ivan Kokshaysky @ 2005-10-24 21:09 UTC (permalink / raw)
  To: Stefan Richter
  Cc: linux1394-devel, linux-kernel, linux-pci, Jesse Barnes, bcollins,
	Greg KH, scjody, gregkh

On Mon, Oct 24, 2005 at 08:21:06PM +0200, Stefan Richter wrote:
> Once the workaround is in pci/quirks.c, a single #ifdef would suffice
> (if it is still of any benefit there).

Such an obviously i386-specific quirk should go into
arch/i386/pci/fixup.c.

Ivan.

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2005-10-24 21:09 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-15 18:55 ohci1394 unhandled interrupts bug in 2.6.14-rc2 jbarnes
2005-10-15 19:39 ` Stefan Richter
2005-10-15 20:29   ` Jesse Barnes
2005-10-15 20:40     ` new PCI quirk for Toshiba Satellite? Jesse Barnes
2005-10-20  0:06       ` Greg KH
2005-10-20 18:32         ` Stefan Richter
2005-10-21 18:38           ` Jesse Barnes
2005-10-21 20:13             ` Stefan Richter
2005-10-24 17:45               ` Jesse Barnes
2005-10-24 18:07                 ` Jesse Barnes
2005-10-24 18:21                 ` Stefan Richter
2005-10-24 21:09                   ` Ivan Kokshaysky
2005-10-15 21:02     ` ohci1394 unhandled interrupts bug in 2.6.14-rc2 Stefan Richter
2005-10-15 21:59       ` Jesse Barnes
2005-10-17  7:55     ` Andrew Morton
2005-10-17  9:35       ` Stefan Richter
2005-10-17  9:42         ` Andrew Morton
2005-10-17 10:03           ` Stefan Richter
2005-10-17 16:30             ` Jesse Barnes
2005-10-17 18:50               ` Stefan Richter
2005-10-19 17:54                 ` Jesse Barnes
2005-10-17 12:48           ` rob
2005-10-17 15:58             ` Stefan Richter
2005-10-18  5:32               ` rob

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox