lkml.org 
[lkml]   [2004]   [Mar]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] x86_64 VIA chipset IOAPIC fix
    Hi Andi & Len,

    Sorry for cross posting all over the place, I tried to CC some people who have
    been bugged by this bug.

    I finally got the IOAPIC working on my eMachines m6805 amd64 laptop with the
    following patch. I have not tried it on any other machines, so can you guys
    please check the sanity and make the necessary changes if needed?

    This fixes at least ACPI bug 2090:

    http://bugme.osdl.org/show_bug.cgi?id=2090

    Might fix some other x86 VIA bugs too?

    To turn it on, apic still needs to be specified in the kernel cmdline:

    root=/dev/hda3 ro psmouse.proto=imps apic console=tty0

    Now cat /proc/interrupts shows:

    0: 70843 IO-APIC-edge timer
    1: 9 IO-APIC-edge i8042
    2: 0 XT-PIC cascade
    8: 0 IO-APIC-edge rtc
    10: 0 IO-APIC-level acpi
    12: 44 IO-APIC-edge i8042
    14: 2734 IO-APIC-edge ide0
    15: 19 IO-APIC-edge ide1
    17: 0 IO-APIC-level yenta
    18: 0 IO-APIC-level eth0
    21: 565 IO-APIC-level ehci_hcd, uhci_hcd, uhci_hcd, uhci_hcd
    22: 0 IO-APIC-level VIA8233
    23: 6 IO-APIC-level eth1
    NMI: 12
    LOC: 70752
    ERR: 0
    MIS: 0

    And things are just working :)

    Regards,

    Tony

    And here's the patch, it's against 2.6.5-rc2:

    diff -Nru a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
    --- a/drivers/acpi/pci_link.c Wed Feb 25 21:11:46 2004
    +++ b/drivers/acpi/pci_link.c Wed Mar 24 18:47:48 2004
    @@ -402,10 +402,8 @@
    ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Unable to read status\n"));
    return_VALUE(result);
    }
    - if (!link->device->status.enabled) {
    - ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Link disabled\n"));
    - return_VALUE(-ENODEV);
    - }
    + if (!link->device->status.enabled)
    + ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Link disabled: VIA chipset? Trying to continue\n"));

    /* Make sure the active IRQ is the one we requested. */
    result = acpi_pci_link_try_get_current(link, irq);
    @@ -415,11 +413,9 @@

    if (link->irq.active != irq) {
    ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
    - "Attempt to enable at IRQ %d resulted in IRQ %d\n",
    - irq, link->irq.active));
    - link->irq.active = 0;
    - acpi_ut_evaluate_object (link->handle, "_DIS", 0, NULL);
    - return_VALUE(-ENODEV);
    + "Attempt to enable at IRQ %d resulted in IRQ %d: VIA chipset? Using irq %d\n",
    + irq, link->irq.active, irq));
    + link->irq.active = irq;
    }

    ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Set IRQ %d\n", link->irq.active));
    \
     
     \ /
      Last update: 2005-03-22 14:01    [W:0.029 / U:0.584 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site