cvs commit: src/sys/amd64/amd64 mptable_pci.c msi.c nexus.c src/sys/amd64/include intr_machdep.h src/sys/amd64/pci pci_bus.c src/sys/dev/acpica acpi_pcib_acpi.c acpi_pcib_pci.c src/sys/dev/pci pci.c pci_if.m pci_pci.c pci_private.h pcib_if.m ...

John Baldwin jhb at freebsd.org
Wed May 2 18:16:32 UTC 2007


On Wednesday 02 May 2007 01:50:36 pm John Baldwin wrote:
> jhb         2007-05-02 17:50:36 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/amd64/amd64      mptable_pci.c msi.c nexus.c 
>     sys/amd64/include    intr_machdep.h 
>     sys/amd64/pci        pci_bus.c 
>     sys/dev/acpica       acpi_pcib_acpi.c acpi_pcib_pci.c 
>     sys/dev/pci          pci.c pci_if.m pci_pci.c pci_private.h 
>                          pcib_if.m pcib_private.h pcivar.h 
>     sys/i386/i386        mptable_pci.c msi.c nexus.c 
>     sys/i386/include     intr_machdep.h 
>     sys/i386/pci         pci_bus.c 
>   Log:
>   Revamp the MSI/MSI-X code a bit to achieve two main goals:
>   - Simplify the amount of work that has be done for each architecture by
>     pushing more of the truly MI code down into the PCI bus driver.
>   - Don't bind MSI-X indicies to IRQs so that we can allow a driver to map
>     multiple MSI-X messages into a single IRQ when handling a message
>     shortage.
>   
>   The changes include:
>   - Add a new pcib_if method: PCIB_MAP_MSI() which is called by the PCI bus
>     to calculate the address and data values for a given MSI/MSI-X IRQ.
>     The x86 nexus drivers map this into a call to a new 'msi_map()' function
>     in msi.c that does the mapping.

Another benefit to this change is that we can let PCI bridge drivers futz with 
the address and data values if needed.  One case where this is needed is the 
HT2000 chipset which apparently is too brain-damaged to use the default MSI 
address window on x86.  We can patch pcib_map_msi() to update the address 
value for the workaround address window given in the errata so that devices 
behind those bridges can now work.

-- 
John Baldwin


More information about the cvs-all mailing list