summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/ddi_intr_impl.h
diff options
context:
space:
mode:
authorEvan Yan <Evan.Yan@Sun.COM>2009-07-08 12:59:05 +0800
committerEvan Yan <Evan.Yan@Sun.COM>2009-07-08 12:59:05 +0800
commit09b1eac246a4e627fcbd1ce5bf8005746cbe45ea (patch)
tree93e222c6801d3c9f0232a908d59d09d0175cbecc /usr/src/uts/common/sys/ddi_intr_impl.h
parent050c4bfe6b1d1f7437af48ce2b7670e840e94f97 (diff)
downloadillumos-gate-09b1eac246a4e627fcbd1ce5bf8005746cbe45ea.tar.gz
PSARC/2009/340 Interrupt affinity interfaces and PCITool enhancements
6796906 Interfaces needed for querying and re-targetting msi-x interrupts 6805710 px driver should support re-targetting MSI-X interrupts 6849547 PCITool enhancements 6851623 ddi_intr_enable() and ddi_intr_disable() fails randomly for dup interrupt.
Diffstat (limited to 'usr/src/uts/common/sys/ddi_intr_impl.h')
-rw-r--r--usr/src/uts/common/sys/ddi_intr_impl.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/usr/src/uts/common/sys/ddi_intr_impl.h b/usr/src/uts/common/sys/ddi_intr_impl.h
index 71c1d1849d..de4cd40d81 100644
--- a/usr/src/uts/common/sys/ddi_intr_impl.h
+++ b/usr/src/uts/common/sys/ddi_intr_impl.h
@@ -62,7 +62,9 @@ typedef enum {
DDI_INTROP_CLRMASK, /* 17 clear mask */
DDI_INTROP_GETPENDING, /* 18 get pending interrupt */
DDI_INTROP_NAVAIL, /* 19 get num of available interrupts */
- DDI_INTROP_GETPOOL /* 20 get resource management pool */
+ DDI_INTROP_GETPOOL, /* 20 get resource management pool */
+ DDI_INTROP_GETTARGET, /* 21 get target for a given intr(s) */
+ DDI_INTROP_SETTARGET /* 22 set target for a given intr(s) */
} ddi_intr_op_t;
/* Version number used in the handles */
@@ -112,6 +114,14 @@ typedef struct ddi_intr_handle_impl {
void *ih_private; /* Platform specific data */
uint_t ih_scratch1; /* Scratch1: #interrupts */
void *ih_scratch2; /* Scratch2: flag/h_array */
+
+ /*
+ * The ih_target field may not reflect the actual target that is
+ * currently being used for the given interrupt. This field is just a
+ * snapshot taken either during ddi_intr_add_handler() or
+ * ddi_intr_get/set_affinity() calls.
+ */
+ ddi_intr_target_t ih_target; /* Target ID */
} ddi_intr_handle_impl_t;
/* values for ih_state (strictly for interrupt handle) */