Date: Wed, 2 May 2007 14:16:22 -0400 From: John Baldwin <jhb@freebsd.org> To: src-committers@freebsd.org Cc: cvs-src@freebsd.org, cvs-all@freebsd.org Subject: Re: 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 ... Message-ID: <200705021416.22715.jhb@freebsd.org> In-Reply-To: <200705021750.l42HoaMj067787@repoman.freebsd.org> References: <200705021750.l42HoaMj067787@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200705021416.22715.jhb>