summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--share/man/man9/Makefile5
-rw-r--r--share/man/man9/pci_intr_map.920
2 files changed, 19 insertions, 6 deletions
diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile
index 54e35a34e43..bd56daca2f2 100644
--- a/share/man/man9/Makefile
+++ b/share/man/man9/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.165 2011/04/05 21:37:07 deraadt Exp $
+# $OpenBSD: Makefile,v 1.166 2011/05/21 21:29:20 kettenis Exp $
# $NetBSD: Makefile,v 1.4 1996/01/09 03:23:01 thorpej Exp $
# Makefile for section 9 (kernel function and variable) manual pages.
@@ -228,7 +228,8 @@ MLINKS+=mutex.9 mtx_enter_try.9
MLINKS+=namei.9 lookup.9 namei.9 relookup.9 namei.9 NDINIT.9
MLINKS+=pci_conf_read.9 pci_conf_write.9 pci_conf_read.9 pci_make_tag.9 \
pci_conf_read.9 pci_decompose_tag.9
-MLINKS+=pci_intr_map.9 pci_intr_string.9 pci_intr_map.9 pci_intr_line.9 \
+MLINKS+=pci_intr_map.8 pci_intr_map_msi.9 pci_intr_map.9 pci_intr_string.9 \
+ pci_intr_map.9 pci_intr_line.9 \
pci_intr_map.9 pci_intr_establish.9 \
pci_intr_map.9 pci_intr_disestablish.9
MLINKS+=pfind.9 pgfind.9
diff --git a/share/man/man9/pci_intr_map.9 b/share/man/man9/pci_intr_map.9
index dda89e70782..c5fac9f76d5 100644
--- a/share/man/man9/pci_intr_map.9
+++ b/share/man/man9/pci_intr_map.9
@@ -1,4 +1,4 @@
-.\" $OpenBSD: pci_intr_map.9,v 1.10 2010/03/26 19:30:40 jmc Exp $
+.\" $OpenBSD: pci_intr_map.9,v 1.11 2011/05/21 21:29:20 kettenis Exp $
.\"
.\" Copyright (c) 2005 Michael Shalayeff
.\" All rights reserved.
@@ -15,11 +15,12 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: March 26 2010 $
+.Dd $Mdocdate: May 21 2011 $
.Dt PCI_INTR_MAP 9
.Os
.Sh NAME
.Nm pci_intr_map ,
+.Nm pci_intr_map_msi ,
.Nm pci_intr_line ,
.Nm pci_intr_string ,
.Nm pci_intr_establish ,
@@ -34,6 +35,8 @@
.Ft int
.Fn pci_intr_map "struct pci_attach_args *paa" "pci_intr_handle_t *ih"
.Ft int
+.Fn pci_intr_map_msi "struct pci_attach_args *paa" "pci_intr_handle_t *ih"
+.Ft int
.Fn pci_intr_line "pci_intr_handle_t ih"
.Ft const char *
.Fn pci_intr_string "pci_chipset_tag_t pc" "pci_intr_handle_t ih"
@@ -50,7 +53,9 @@ An architect type is provided by the machine-dependent
code
.Va pci_intr_handle_t ,
to be initialised by
-.Fn pci_intr_map .
+.Fn pci_intr_map
+or
+.Fn pci_intr_map_msi .
.Pp
The
.Fn pci_intr_map
@@ -58,6 +63,13 @@ function should be called first to establish a mapping between a PCI
pin and the interrupt controller's interrupt vector.
This process may include resolving the mapping through
firmware-provided information.
+For devices that support Message Signaled Interrupts (MSI) the
+.Fn pci_intr_map_msi
+function should be called instead. This function can fail if the
+system does not support MSI.
+In that case
+.Fn pci_intr_map
+should be called to fall back on classic PCI interrupts.
.Pp
Having initialised the
.Va pci_intr_handle_t
@@ -97,7 +109,7 @@ xxxattach(struct device *parent, struct device *self, void *aux)
\&...
- if (pci_intr_map(pa, &ih)) {
+ if (pci_intr_map_msi(pa, &ih) && pci_intr_map(pa, &ih)) {
printf(": can't map interrupt\en");
bus_space_unmap(sc->iot, sc->ioh, size);
return;