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-src
mailing list