Re: ohci1394 unhandled interrupts bug in 2.6.14-rc2

From: Andrew Morton
Date: Mon Oct 17 2005 - 03:01:01 EST


Jesse Barnes <jbarnes@xxxxxxxxxxxxxxxx> 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 ?

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