PSARC 2004/253 Advanced DDI Interrupt Framework Submitter: Govinda Tatti Issues for inception (10/27/2004): jdc-1 Syntax error: 20q3 says Update, but 20q1 says minor release binding. Which is it? jdc-2 20q9: are changes to intrstat or the probes it uses needed? jdc-3 20q14: bus_*_intrspec and bus_intr_ctl are Consolidation Private, aren't they? Why Obsolete when you could just remove? Are others using these despite the lack of stability and documentation? jdc-4 Are the resource management functions needed for DR on SPARC? jdc-5 What's the distinction between DDI_FAILURE and DDI_EINVAL? jdc-6 How does one get the mask status? Or is that the caller's problem? If I'm about to do ddi_intr_set_mask in some function, I may want to check if it's currently masked, so I know to avoid ddi_intr_clr_mask on the way out. jdc-7 How does the new arg2 value work with ddi_intr_trigger_softintr? If I call that function multiple times with the same ddi_softint_handle_t, but different arg2 values, are those events queued up somewhere and delivered as separate invocations of the handler, or are previous undelivered values of arg2 forgotten? (The old model with ddi_trigger_softintr was clear -- as it carried no information.) jdc-8 Nits: Can I do ddi_intr_dup_handler on something allocated by ddi_add_intr? I'm guessing "no," as ddi_intr_handle_t is not ddi_iblock_cookie_t. jdc-9 Nits: Is DDI_INTR_TYPE_* meant to be enumerated? (What happened to 3?) Are all the new ddi_* functions Stable? jdc-10 Nits: I assume that ddi_intr_unregister_callback can block if the callback is active. Similar for ddi_intr_remove_handler and ddi_intr_remove_softint. jdc-11 Nits: Does ddi_intr_alloc return DDI_SUCCESS in the behavior == 0 && *actualp == 0 case? It doesn't give a return value. jdc-12 Nits: ddi_inter_get_pri says that the value is "typically" in the defined range. What does it mean if it's not? sz-1 Nit: 20q #1: should be a "micro" change to qualify for update release. sz-2 20q #15: what version information are you talking about? sz-3 Which interfaces belong to phase 1 vs. phase 2? What's the consequence if phase 2 is not delivered? sz-4 ddi_inter_get_navail(): any issues with concurrent device attach? sz-5 Nit: ddi_inter_cb_t(): why two args? Same with ddi_intr_handler_t(). sz-6 Nit: ddi_intr_free(): block free as well? sz-7 ddi_intr_alloc(): what's the return code if no interrupt is allocated and actualp is filled in? sz-8 Q: when should driver "mask" an interrupt vs. disable? sz-9 New softint routines: what's the value add? Are you making the old ones obsolete?