.de Sc
\\s-1\\$1\\s0\\$2
..
.ds cA 2004/253
.ds aR \s-1PSARC\s0
.LP
.so /shared/sac/Tools/lib/amac
.Co
.ds LF \fI\*(aR/\*(cA\fP
.ds RF \fICopyright 2005 Sun Microsystems, Inc.\fP
.if n .ds CF
.IP \fBSubject:\fP 15
Advanced DDI Interrupt Framework
.IP "\fBSubmitted by:\fP" 15
Govinda Tatti
.IP \fBFile:\fP 15
\*(aR/\*(cA/opinion.ms
.IP \fBDate:\fP 15
February 2nd, 2005
.IP "\fBCommittee:\fP" 15
Shudong Z. (opinion written by Ed G.), James Carlson,
Bill Sommerfeld, Gary Winiger.
.IP "\fBProduct Approval Committee:\fP" 15
Solaris PAC
.br
solaris-pac-opinion@sun.com
.pn 2
.NH
Summary
.LP
This project provides an advanced DDI interrupt framework.
It is required in order to support PCI Express buses; the prior DDI framework
does not support them.
.NH
Decision & Precedence Information
.LP
This project is approved as specified in reference [1].
.LP
The project may be delivered in a micro/patch release of Solaris.
.LP
.NH
Interfaces
.LP
\." this information, listing imported interfaces in a separate table from
\." interfaces being exported.  Two skeleton tables appear below; fill them in
The project exports the following interfaces.
.if n .ne 8
.if t .ne 3
.TS H
box;
c s s
l | l | l.
Interfaces Exported
_
Interface	Classification	Comments
_
.TH
bus_intr_op	Consolidation Private	added
BUSO_REV_8	Consolidation Private
_
bus_get_intrspec	Consolidation Private	removed
bus_add_intrspec	Consolidation Private
bus_remove_intrspec	Consolidation Private
bus_intr_ctl	Consolidation Private
_
ddi_intr_add_handler(9f)	Evolving	added
ddi_intr_add_softint(9f)	Evolving
ddi_intr_alloc(9f)	Evolving
ddi_intr_block_disable(9f)	Evolving
ddi_intr_block_enable(9f)	Evolving
ddi_intr_cancel_management_cb(9f)	Evolving
ddi_intr_clr_mask(9f)	Evolving
ddi_intr_disable(9f)	Evolving
ddi_intr_disale_management_cb(9f)	Evolving
ddi_intr_dup_handler(9f)	Evolving
ddi_intr_enable(9f)	Evolving
ddi_intr_enable_management_cb(9f)	Evolving
ddi_intr_free(9f)	Evolving
ddi_intr_get_cap(9f)	Evolving
ddi_intr_get_hilevel_pri(9f)	Evolving
ddi_intr_get_navail(9f)	Evolving
ddi_intr_get_nintrs(9f)	Evolving
ddi_intr_get_pending(9f)	Evolving
ddi_intr_get_pri(9f)	Evolving
ddi_intr_get_softint_pri(9f)	Evolving
ddi_intr_get_supported_types(9f)	Evolving
ddi_intr_register_management_cb(9f)	Evolving
ddi_intr_remove_handler(9f)	Evolving
ddi_intr_remove_softint(9f)	Evolving
ddi_intr_set_cap(9f)	Evolving
ddi_intr_set_mask(9f)	Evolving
ddi_intr_set_pri(9f)	Evolving
ddi_intr_set_softint_pri(9f)	Evolving
ddi_intr_trigger_softint(9f)	Evolving
ddi_intr_unregister_management_cb(9f)	Evolving
_
(ddi_intr_handler_t)()	Evolving	added
(ddi_intr_cb_t)()	Evolving
ddi_intr_cb_id_t;	Evolving
ddi_intr_management_op_t	Evolving
ddi_intr_handle_t;	Evolving
ddi_softint_handle_t;	Evolving
_
DDI_INTR_ALLOC_NORMAL	Evolving	added
DDI_INTR_ALLOC_STRICT	Evolving
DDI_INTR_FLAG_BLOCK	Evolving
DDI_INTR_FLAG_EDGE	Evolving
DDI_INTR_FLAG_LEVEL	Evolving
DDI_INTR_FLAG_MASKABLE	Evolving
DDI_INTR_FLAG_PENDING	Evolving
DDI_INTR_M_DISABLE	Evolving
DDI_INTR_M_ENABLE	Evolving
DDI_INTR_PRI_MAX	Evolving
DDI_INTR_PRI_MIN	Evolving
DDI_INTR_SOFTPRI_DEFAULT	Evolving
DDI_INTR_SOFTPRI_MAX	Evolving
DDI_INTR_SOFTPRI_MIN	Evolving
DDI_INTR_TYPE_FIXED	Evolving
DDI_INTR_TYPE_MSI	Evolving
DDI_INTR_TYPE_MSIX	Evolving
_
ddi_add_intr(9f)	Evolving	retained
ddi_add_softintr(9f)	Evolving
ddi_dev_nintrs(9f)	Evolving
ddi_get_iblock_cookie(9f)	Evolving
ddi_get_soft_iblock_cookie(9f)	Evolving
ddi_iblock_cookie(9s)	Evolving
ddi_idevice_cookie(9s)	Evolving
ddi_intr_hilevel(9f)	Evolving
ddi_remove_intr(9f)	Evolving
ddi_remove_softintr(9f)	Evolving
ddi_trigger_softintr(9f)	Evolving
T{
interrupt handlers with a single argument
T}	Evolving
.TE
.NH
Opinion
.LP
The committee raised a number of small points with the project team,
all of which but the two detailed below were answered in satisfactory fashion
during the inception review.
Clarifications were made to the specification to address the remaining points.
.NH 2
Mask Status
.LP
The committee asked about managing the mask state within a driver.
The updated spec clarifies that the individual drivers must maintain their own
view of the mask state, but that the framework is in ultimate control of the
mask state, and may do other than what the driver requests for its own
purposes.
No new interface was deemed necessary to support this functionality.
.NH 2
\f(CWarg2\fP of \f(CWddi_intr_trigger_softint()\fP
.LP
The committee asked about the behavior of the
\f(CWddi_intr_trigger_softint()\fP
function, when called multiple times with the same
\f(CWddi_softint_handle_t\fP
but differing
\f(CWarg2\fP
values.
The updated spec reflects the project team's reevaluation of the function, in
which they largely retained the existing behavior.
The team's response to the query posed during the inception review (see
reference [2]) describes the improvements made to the implementation, while
retaining the interface.
.NH
Minority Opinion(s)
.LP
None.
.NH
Advisory Information
.LP
None.
.NH
Appendices
.NH 2
Appendix A: Technical Changes Required
.LP
\." The formatting that works best is:
None.
.NH 2
Appendix B: Technical Changes Advised
.LP
None.
.NH 2
Appendix C: Reference Material
.LP
All path names are relative to the case directory (\*(aR/\*(cA).
.IP 1
Project Specification
.br
File: final.materials/ddi-interrupts
.IP 2
Responses to AIs from Inception
.br
File: final.materials/psarc_ais
