Re: [PATCH] 2.6.0-test9 Fix oops in quirk_via_bridge

Russell King
2003-10-31T09:49:59Z

On Fri, Oct 31, 2003 at 05:42:07PM +0800, Michael Clark wrote:
> Strangely making the quirk and its data __devinit solves the problem
> (as is most of the other stuff in pci/quirks.c). Not sure if it is
> the correct fix but it works for me. ie. why did I get the oops
> in the first place? as the quirks data was global and not marked
> for an __init section.

The function was marked as __init. I'd strongly recommend against
marking the data with __devinitdata since its used elsewhere in the
kernel by non-init code.

> --- linux-2.6.0-test9/drivers/pci/quirks.c 2003-10-31 16:49:25.000000000 +0800
> +++ linux-2.6.0-test9-mc/drivers/pci/quirks.c 2003-10-31 16:49:57.000000000 +0800
> @@ -644,9 +644,9 @@
> * VIA northbridges care about PCI_INTERRUPT_LINE
> */
>
> -int interrupt_line_quirk;
> +__devinitdata int interrupt_line_quirk;
>
> -static void __init quirk_via_bridge(struct pci_dev *pdev)
> +static void __devinit quirk_via_bridge(struct pci_dev *pdev)
> {
> if(pdev->devfn == 0)
> interrupt_line_quirk = 1;
>

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/
2.6 Serial core