DragonFly BSD
DragonFly users List (threaded) for 2005-02
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: xl device doesn't work with ACPI enabled under -current and -stable


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Thu, 3 Feb 2005 13:06:59 -0800 (PST)

    I think I found the issue.  Look at this:

found-> vendor=0x10b7, dev=0x9200, revid=0x78
        bus=2, slot=0, func=0
        class=02-00-00, hdrtype=0x00, mfdev=0
        subordinatebus=0        secondarybus=0
        intpin=a, irq=11
found-> vendor=0x104c, dev=0xac51, revid=0x00
        bus=2, slot=1, func=0
        class=06-07-00, hdrtype=0x02, mfdev=1
        subordinatebus=4        secondarybus=4
        intpin=a, irq=255

    The issue is that slot 0 appears to be configured for irq 11 already.
    slot 1 is configured for irq 255 (i.e. unconfigured).

    This is causing the pci_alloc_resource() in bus/pci/pci.c to assume
    that XL0 is already routed (and it is).

    But then when CBB0 comes along, the irq is not routed, so 
    pci_alloc_resource() calls PCIB_ROUTE_INTERRUPT().  PCIB_ROUTE_INTERRUPT()
    has *NO* clue that it *MUST* use irq 11 (because xl0 and cbb0 share the
    same int pin), so it goes and allocates irq 3.  

    Now XL0's irq 11 assignment is wrong.

    I think we need to make the PCIB subsystem aware that the intpin is
    ALREADY allocated to irq 11.  I think what this means is that we have
    to call PCIB_ROUTE_INTERRUPT() and we have to add another argument to
    the call to pass in intline.  Either that or we unconditionally
    call PCIB_ROUTE_INTERRUPT() as is and allow it to reassign XL0's
    IRQ.

						-Matt




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