sun microsystems Systems Architecture Committee _________________________________________________________________ Subject: Advanced DDI Interrupt Framework Submitted by: Govinda Tatti File: PSARC/2004/253/opinion.ms Date: February 2nd, 2005 Committee: Shudong Z. (opinion written by Ed G.), James Carlson, Bill Sommerfeld, Gary Winiger. Product Approval Committee: Solaris PAC solaris-pac-opinion@sun.com 1. Summary 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. 2. Decision & Precedence Information This project is approved as specified in reference [1]. The project may be delivered in a micro/patch release of Solaris. 3. Interfaces The project exports the following interfaces. __________________________________________________________________________ | Interfaces Exported | |_____________________________________|_______________________|__________| |Interface | Classification | Comments| |_____________________________________|_______________________|__________| |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 | | |_____________________________________|_______________________|__________| PSARC/2004/253 Copyright 2005 Sun Microsystems, Inc. - 2 - __________________________________________________________________________ | Interfaces Exported | |_____________________________________|_______________________|__________| |Interface | Classification | Comments| |_____________________________________|_______________________|__________| |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 | | |_____________________________________|_______________________|__________| PSARC/2004/253 Copyright 2005 Sun Microsystems, Inc. - 3 - __________________________________________________________________________ | Interfaces Exported | |_____________________________________|_______________________|__________| |Interface | Classification | Comments| |_____________________________________|_______________________|__________| |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 | | |interrupt handlers with a single| Evolving | | |argument | | | |_____________________________________|_______________________|__________| 4. Opinion The committee raised a number of small points with the pro- ject 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. 4.1. Mask Status 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. 4.2. arg2 of ddi_intr_trigger_softint() The committee asked about the behavior of the ddi_intr_trigger_softint() function, when called multiple times with the same ddi_softint_handle_t but differing arg2 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 PSARC/2004/253 Copyright 2005 Sun Microsystems, Inc. - 4 - retaining the interface. 5. Minority Opinion(s) None. 6. Advisory Information None. 7. Appendices 7.1. Appendix A: Technical Changes Required None. 7.2. Appendix B: Technical Changes Advised None. 7.3. Appendix C: Reference Material All path names are relative to the case directory (PSARC/2004/253). 1 Project Specification File: final.materials/ddi-interrupts 2 Responses to AIs from Inception File: final.materials/psarc_ais PSARC/2004/253 Copyright 2005 Sun Microsystems, Inc.