Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI This information is Copyright 2009 Sun Microsystems 1. Introduction 1.1. Project/Component Working Name: IRM Framework Extension(s) 1.2. Name of Document Author/Supplier: Author: Prasad Singamsetty 1.3 Date of This Document: 21 September, 2009 4. Technical Description
IRM Framework Extension(s) 1.0 Introduction PSARC/2008/628 introduced the generic Interrupt Resource Management (IRM) feature and it was enabled on SPARC platforms. It also defined DDI and NDI interfaces necessary for creating and managing interrupt resource pool(s). But this feature was not enabled or delivered for x86 platforms. On x86 platforms, the global interrupt resources (vectors) are associated with the local APIC (Advanced Programmable Interrupt Controller) which is a component of CPU. So, the number of interrupt resources in the system scales with the number of CPUs present in the system. Since the number of CPUs present in the system can dynamically change due to CPU hot-plug, CPU offlineing, etc., the available interrupt resource pool can change dynamically. In the current IRM framework there is no interface defined to allow the IRM pool to be resized dynamically. This project will define the additional interface(s) needed in the generic IRM framework and support the IRM feature on x86 platforms. 2.0 Problem Dynamic resizing of IRM pool is not supported with the current IRM framework. This is necessary to enable IRM feature on x86 platforms. 3.0 Technical Details A new NDI interface will be added to the IRM framework that would allow dynamic resizing of an IRM pool by the platform specific nexus drivers. This interface will be available for both x86 and SPARC platforms but it is not needed on SPARC at this time. int ndi_irm_resize_pool(ddi_irm_pool_t *poolp, uint_t size); poolp Pointer to IRM pool size New total number of available vectors in the pool (i.e. new value for ipool_totsz) The ndi_irm_resize_pool() function will reset the pool size to the specified value. If the new pool size is reduced from the previous size then it may trigger resource re-balancing operation by IRM if the number of free vectors is less than the reduction in pool size. 4.0 Interfaces This project exports the following interfaces: Interface Classification Comments ------------------------------------------------------------------- ndi_irm_resize_pool Consol. Private Resize the pool ------------------------------------------------------------------- 5.0 Release Summary Solaris Next, S10 Update Micro/Patch Release 6.0 Man Pages 6.1 ndi_irm_resize_pool NAME ndi_irm_resize_pool - resize the pool size SYNOPSIS #include <sys/types.h> #include <sys/ddi.h> #include <sys/sunndi.h> int ndi_irm_resize_pool(ddi_irm_pool_t *poolp, uint_t size); INTERFACE LEVEL ON Consolidation Private PARAMETERS poolp Pointer to IRM pool size New total number of available vectors in the pool (i.e. new value for ipool_totsz) The ndi_irm_resize_pool() function will reset the pool size to the specified value. If the new pool size is reduced from the previous size then it may trigger resource re-balancing operation by IRM. RETURN VALUES DDI_SUCCESS on success DDI_EINVAL invalid parameters DDI_FAILURE failure to resize the pool (e.g: rebalance operation failed) PLATFORMS x86, SPARC 7.0 Dependencies Enabling IRM feature on x86 platforms is done as a follow on work to the following RFE: CR 6669984 Solaris x86 need to provide large number of interrupt vectors for MSI/MSI-X The reason for this dependency is the inherent limitations on the current implementation of pcplusmp module (APIC module) where the number of vectors available for each interrupt priority level (IPL) is limited to 32, 16 or less in the system. So, having an IRM feature on the current implementation adds no value to the system. NOTE: The current plan is to integrate IRM feature along with the APIC code changes for the above RFE. 8.0 References [1] Interrupt Resource Management http://sac.sfbay/PSARC/2008/628/ [2] Advanced DDI Interrupt Framework http://sac.eng/arc/PSARC/2004/253/ 6. Resources and Schedule 6.4. Steering Committee requested information 6.4.1. Consolidation C-team Name: ON 6.5. ARC review type: FastTrack 6.6. ARC Exposure: open