summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/os/ddi_intr_impl.c
diff options
context:
space:
mode:
authoregillett <none@none>2007-08-31 14:35:42 -0700
committeregillett <none@none>2007-08-31 14:35:42 -0700
commitef643aef2b959c3531c1fd9628c4be9ab43eb50f (patch)
tree2739f17775bcabd302b476f6abf5114a9ba9c484 /usr/src/uts/common/os/ddi_intr_impl.c
parent477032463b6ad98ae85035185348e42f6092fe3a (diff)
downloadillumos-gate-ef643aef2b959c3531c1fd9628c4be9ab43eb50f.tar.gz
PSARC/2007/453 MSI-X interrupt limit override
6592959 MSI-X interrupt limit override
Diffstat (limited to 'usr/src/uts/common/os/ddi_intr_impl.c')
-rw-r--r--usr/src/uts/common/os/ddi_intr_impl.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/usr/src/uts/common/os/ddi_intr_impl.c b/usr/src/uts/common/os/ddi_intr_impl.c
index 74c403d0ec..b1678cb144 100644
--- a/usr/src/uts/common/os/ddi_intr_impl.c
+++ b/usr/src/uts/common/os/ddi_intr_impl.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -38,6 +38,8 @@
#include <sys/sunndi.h>
#include <sys/ndi_impldefs.h> /* include prototypes */
+extern uint_t ddi_msix_alloc_limit;
+
/*
* New DDI interrupt framework
*/
@@ -403,3 +405,20 @@ i_ddi_set_msi_msix_cap_ptr(dev_info_t *dip, int cap_ptr)
intr_p->devi_cap_ptr = cap_ptr;
}
#endif
+
+/* ARGSUSED */
+uint_t
+i_ddi_get_msix_alloc_limit(dev_info_t *dip)
+{
+ uint_t msix_alloc_limit = ddi_msix_alloc_limit;
+
+#if defined(__sparc)
+ if (ddi_prop_exists(DDI_DEV_T_ANY, dip, DDI_PROP_NOTPROM |
+ DDI_PROP_DONTPASS, "#msix-request")) {
+ msix_alloc_limit = MAX(DDI_MAX_MSIX_ALLOC,
+ ddi_msix_alloc_limit);
+ }
+#endif
+
+ return (msix_alloc_limit);
+}