PSARC Questions Version 1.22 1. What is the proposal being presented for review? * Give an overview of the project and its phase(s). The main goal of this project is to deliver a generic common hotplug framework to Solaris users, a foundation which can support the hotplug functionality for any hotpluggable bus and also, to support device migration functionality in virtualization environment through virtual hotplug. This new Solaris hotplug framework is a state machine based, which includes generic hotplug states and provides various generic common hotplug interfaces, which includes: o Management Interfaces Generic or Bus specific hotplug admin applications including GUIs can be written using these interfaces. o Hotplug Event Interfaces Hotplug-aware users such as drivers, kernel modules and hotplug aware applications can receive both synchronous and asynchronous hotplug events. o Device Driver Interfaces Device drivers can work with the hotplug framework to participate in hotplug activities such as surprise removal, hot replacement, dynamic resource balancing, error handling. o Hotplug Controller Driver (HPC) Interfaces HPC drivers will communicate with the hotplug framework through these interfaces. New HPC driver can be written easily for any hotpluggable bus. This project will be delivered in multiple phases and these phases are: Phase-I: - Basic hotplug framework features and interfaces - Virtual hotplug support for PCIe devices - Physical hotplug support for PCIe (Native, ACPI) and PCI (SHPC based) devices. - New hotplug CLI (including daemon and library) and a new cfgadm plugin to support cfgadm (1M) to work with the new hotplug framework. Phase-II: - Hotplug events through Device Contract and LDI frameworks - New hotplug DDI interfaces for device drivers - New PCI resource allocator and a common PCI Configurator with support for Dynamic resource re-balancing - Support hotplug FMA for PCIe devices Phase-III: - Support for Express Card - Support for GUI admin tool * Describe the exposure (OpenSolaris), scope and type of review desired (overview, full case, etc.) This is a full case, with the first phase of the project tracked by PSARC 2008/181. The subsequent components of the project will be raised in future cases with this case as a back drop. Further this is a full case with open exposure. * Indicate the release binding requested by the project team. See: http://www.opensolaris.org/os/community/arc/policies/release-taxonomy/ This case seeking Patch release binding and targeted for Solaris Nevada and Solaris 10 update releases. * What are the project's deliverables? This project's deliverables will be delivered through Solaris WOS. All the kernel related deliverables will be delivered through existing binaries such as genunix, pcie misc module and other PCIe nexus drivers. | The following headers file will also be delivered: | SUNWhea: | ------- | - /usr/include/sys/hotplug/ddi_hp.h | - /usr/include/sys/hotplug/ddi_hp_impl.h | | This project will also deliver some new userland binaries. Please see | section 4.3 of "Userland Components of Solaris Hotplug" document (file: | shp-userland.txt). | * How does this project align with existing or proposed ARC cases? The existing cfgadm (1M) and its libcfgadm plugins for DR and hotplug features will remain unchanged. But to integrate support for the new hotplug connectors defined by the Solaris Hotplug Framework into the existing cfgadm framework, a new libcfgadm plugin is required. For more information, please see section 3.4 of shp-userland.txt. Other existing userland modules such as hal (5), prtdiag (PICL) will remain unchanged since the Solaris Hotplug Framework will continue to generate current sysevents for all hotplug connectors. 2. Describe user interactions. * Are new user interfaces being proposed, or existing interfaces being changed? New CLI usr/sbin/hotplug is added along with new library and daemon. Plus, existing cfgadm (1M) will be extended to work with new solaris hotplug framework through new plugin SHPC. * Explain the similarities in proposed interfaces with existing OS user interfaces (Solaris, Linux, Windows, etc.). | It is a new CLI invented by the project team. If compared with the | existing cfgadm(1M) tool in Solaris, the new tool is based on the new | hotplug framework and supports virtual hotplug and physical hotplug via | one consistent user interface. cfgadm does not support virtual hotplug. | | The project team does not investigate the tools in OSes other than Solaris. * Are there any install time changes? There are no install time changes. 3. What are the exported (defined by your project) and imported (defined by another project that your project then references) interfaces or protocols and their respective stability levels? See: http://www.opensolaris.org/os/community/arc/policies/interface-taxonomy/ | 3.1 Kernel Interfaces | Please see section 3.5 of "Solaris Hotplug Framework: Architecture and Design" | document (file: shp-overview.pdf). | | 3.2 Userland Interfaces | Please see section 4.1 and 4.2 of "Userland Components of Solaris Hotplug" | document (file: shp-userland.txt). | * Is there a versioning scheme in place? There is no versioning for any userland interfaces. On the bus op interface, we are adding new bus_hp_op interface and also, incrementing BUSO_REV version. Our approach is to fail earlier version nexus drivers. * Has the team secured interface contracts where necessary? | No contracts are needed because this project does not depend on interfaces | needing contracts set. * Use an ARC prescribed interface table format. See sections 3.1 through 3.3. 4. Describe any dependencies on hardware (e.g. SPARC exclusive), and on other projects within Solaris. No hardware dependencies. 5. Projects need to be aware of the overall security of the system and how their components affect it. Which parts of this project are critical to the security of the system to avoid such unintended consequences such as unauthorized system entry, unauthorized access to or modification of data, elevation of privilege, denial of service, violation of labeled security, ...? Does this project require elevated privilege? | First phase of this project will introduce new hotplug (1M) CLI, and | it will conform to RBAC. Only users with proper authorizations are able | to perform a specific operation via this CLI. Details see the documents | of userland software stack of this project. 6. Describe means of observing project functionality and performance, by an end user or by a system administrator. | Project functionality information is available via a new CLI hotplug (1M). 7. How does the project deal with faults and interruptions? Initialization and restarting? In principle, on faults and interruptions, we should return the system back to what it was before the execution of the command. In the case of hotplug (1M), appropriate error message will be displayed to the end user. The project team will take all the efforts to make the error messages clear, precise and succinct. In the case of library API's appropriate error message will be returned to the caller. Hotplug FMA for PCIe devices (including surprise removal) will be supported in the next phase of this project. See section 1.4 of shp-overview.pdf 8. How does the project interact with Solaris virtualization technologies (xVM, LDOMs, zones, Branded zones, SunCluster, etc.)? In principle, this technology should work from within xVM and LDOMs. There are no known impediments to use within a SunCluster environment for this component. The project team will work with the SunCluster team to make sure the two technologies are sufficiently tested. This can be used on systems with non-global zones installed as well as in non-global zones themselves. 9. Does this project require administration (i.e., configuration or management)? If so, * How is the project administered, and what sort of review process has this user interface undergone? The new /usr/sbin/hotplug (1M) will be used. The subcommands provided by hotplug will be reviewed on opensolaris. In addition, the existing cfgadm (1M) will continue to be supported to work with the new Solaris hotplug framework. * Is there a means of aggregating management and/or configuration with other related projects? No. This project will introduce be a new stand alone CLI. * Does this project deliver its own administration along with the other components, or is this project an administration interface for other projects? Yes, it provides a new administrative interface to configure and unconfigure both physical and virtually hotplugged devices. * Are there any external (to Solaris) management interfaces to consider, or being consumed? No. 10. Have you reviewed the Policies and Best Practices? Are there any exceptions this project needs? See http://www.opensolaris.org/os/community/arc/policies/ http://www.opensolaris.org/os/community/arc/bestpractices/ After reviewing the Policies and Best Practices, no exceptions are required for this project. Reference: o Solaris Hotplug Project - Webpage http://pcie.sfbay/hotplug o Documents - One Pager http://sac.sfbay/arc/PSARC/2008/181/20080306_govinda.tatti - Overall Proposal | http://sac.sfbay/arc/PSARC/2008/181/commitment.materials/shp-overview.pdf - Userland Hotplug Software | http://sac.sfbay/arc/PSARC/2008/181/commitment.materials/shp-userland.pdf - Man pages | http://sac.sfbay/arc/PSARC/2008/181/commitment.materials/hotplug.1m.txt | http://sac.sfbay/arc/PSARC/2008/181/commitment.materials/libhotplug.3lib.txt - Slides | http://sac.sfbay/arc/PSARC/2008/181/commitment.materials/shp-slides.pdf o ARC cases PSARC/1993/687 Hot Plugging PSARC/1996/285 DR for CPU/Memory Boards PSARC/1998/327 PCI Hotplug Support PSARC/1998/460 RCM Framework PSARC/1999/122 PCI Bus Resource Allocator PSARC/1999/135 Solaris 8 RAS Enhancements PSARC/1999/287 Solaris Embedded Fcode Interpreter PSARC/1999/322 System Event Framework PSARC/1999/686 Promote PCI Hotplug Interfaces PSARC/2000/085 Extensions for PCI Hotplug Framework PSARC/2000/218 RCM Framework Enhancements PSARC/2000/295 PICL Event Interfaces PSARC/2000/298 PCI Hotplug slot registration policy PSARC/2000/532 State Model for Device Information Nodes PSARC/2002/315 cPCI Autoconfiguration Support PSARC/2003/193 Solaris Contracts and restart agreements FWARC/2005/048 1275 Bindings for PCI Express Interconnect PSARC/2005/375 PCI Hotplug Extensions for PCIe PSARC/2006/037 PCI Express Hotplug Framework Interrupt Interfaces FWARC/2006/198 PCI Hotplug Resource Preallocation PSARC/2007/197 ZFS Hotplug PSARC/2007/290 Retire Agent for IO devices o Aliases mailto:ddi-hp-iteam@sun.com - Solaris Hotplug Framework Dev Team