I am sponsoring the following fast-track on behalf of
Geetanjali Krishna and Jiang Liu, with timeout of 02/13/2009.
The project requests micro/patch binding.

The proposed cfgadm_fw.man man page is in the case folder
in the materials directory.

-----------

Template Version: @(#)onepager.txt 1.35 07/11/07 SMI

1. Introduction
    1.1. Project/Component Working Name:
        Device tree definition for system devices on an x86 System
        to support enabling of hotplug features.

    1.2. Name of Document Author/Supplier:
        Author: Geeta Krishna <geetanjali.krishna at intel.com>
                Gerry Liu <jiang.liu at intel.com>

    1.3. Date of This Document:
        January 29th, 2009

2. Project Summary
   2.1. Project Description:
        This project will scan the ACPI namespace and present an ACPI nexus
        driver on IA.
        It will also create device nodes for cpu, memory and root ports
        (IO Hubs) in cases where the platform supports hotplug of these devices.
        An additional branch will be added to the device tree to populate
        devices not currently enumerated by standard methods.

        The scope could be extended to enumerate other ACPI objects such as 
        buttons and HPETs where today these drivers scan ACPI name space. This
        nexus driver approach provides for a natural fit into the solaris
        driver framework.

   2.2. Risks and Assumptions:
        1. ACPI device enumeration and corresponding device node creation will
        be done only if the OS is ACPI 3.0+ compatible and supports module
        device(ACPI0004).
        2. Hotplug functionality is based on cfgadm framework. 

4. Technical Description:
    4.1.1 Problem Description
        By X86 system devices, we refer to the suite of hardware components
        which are common to x86 platform and play improtant role in the system
        architecture but can not be enumerated/discovered through industry
        standard bus specifications.
        Examples of these X86 system devices include: logical CPU, memory
        device, iommu, IOAPIC, high precesion event timer(HPET), ACPI sleep
        button, ACPI power button etc.

        These X86 system devices are enumerated through firmware methods
        as they can not be enumerated through industry standard bus
        specifications. Some of these firmware methods include SMBIOS table,
        MPS table and ACPI table etc.

        Currently Solaris lacks a uniform way to enumerate all system
        devices, so each device driver needs to take the responsibility to
        probe corresponding devices. For example, iommu driver needs to probe
        iommu hardware, HPET driver needs to probe HPET hardware.

        To use the existing Dynamic Reconfiguration framework, all hotpluggable
        devices need to be enumerated,linked into the device tree and have
        Attachment Points generated for them.

    4.1.2. Proposal
        We are proposing additions and minor re-organization of the current
        Solaris device tree structure on x86 system to achieve the following
        goals:
        1) Provide a system device enumerator based on ACPI specification
        2) Organize system devices into a firmware device subtree
        3) Build a device subtree to reflect hardware topology information if 
           possbile
        4) Provide a nexus driver for pseudo system bus to support all system 
           device drivers and make them DDI compliant.
        5) Generate a device tree which aids in the implementation of
        CPU/Memory/IOH hotplug

    4.1.2.1 Device tree structure when ACPI is disabled or not available
        /devices/fw                     Pseudo nexus node to host system devices
        /devices/fw/cpu at x            Logical CPU
        /devices/pci at x,0             PCI host bridge


    4.1.2.2 Device tree structure for system with CPU/memory/IOH hotplug feature

        /devices/fw                     Pseudo nexus node to host system devices
        /devices/fw/sb at x             Pseudo nexus node for system board
        /devices/fw/sb at x/socket at y Pseudo nexus node to host devices in 
                                        physical CPU
        /devices/fw/sb at x/socket at y/cpu at z        Logical CPU
        /devices/fw/sb at x/socket at y/mem at z        ACPI memory device
        /devices/fw/sb at x/socket at y/ioh at z        IOH embedded in 
physical CPU
        /devices/fw/sb at x/ioh at y            Pseudo nexus node to host 
device in IOH
                                        except PCI host bridge
        /devices/fw/sb at x/hpet at y           High precesion event timer
        /devices/fw/sb at x/slpbtn at y ACPI sleep button
        /devices/fw/sb at x/pwrbtn at y ACPI power button
        /devices/pci at x,0             PCI host bridge

    4.1.2.3 Attachment point for CPU/memory/IOH Hotplug
        Attachment points will be created only for nodes that are hot pluggable.
        This can vary from platform to platform and the information is 
        available from the ACPI table. Examples of possible Attachment Points
        are:
        i) System board is hot pluggable. Socket on the board is hotpluggable. 
        AP              Device Minor Node               Configuration Node
        sbx             /devices/fw:sbx                 /dev/cfg/sbx
        sbx::sockety            -                       /dev/cfg/sbx/sockety
        ii) Socket is hot pluggable. Non-embedded IOH is hotpluggable. System 
        board is not hot pluggable. 
        AP              Device Minor Node               Configuration Node
        sockety         /devices/fw/sbx:socket          /dev/cfg/sbx/sockety
        iohy            /devices/fw/sbx:iohy            /dev/cfg/iohy

    4.1.2.4 Device node properties
        Properties for all device nodes created by acpi device enumerator:
        compatible
        device_type
        unit-address
 
        Properties for device nodes if corresponding ACPI object exists:
        acpi-namespace (if corresponding ACPI object exists)
    
        Properties for device nodes if it or its children comsume hw resources:
        reg
        assigned-addresses
        #size-cells
        #address-cells
         ranges
        Note: Some of these properties will not be available if the system
        is booted with ACPI disabled.

    4.2. Bug/RFE Number(s):
        None
    
    4.3. In Scope:
        Hotplug support on IA

    4.4. Out of Scope:
        NA
    
    4.5. Interfaces:

|______________________|________________________|______________________________|
|Interface             |  Classification        |  Comments                    |
|______________________|________________________|______________________________|
| /platform/i86pc/     |                        |                              |
| kernel/misc/acpidev  | Project Private        |  ACPI device enumerator      |
| /platform/i86pc/     |                        |                              |
| kernel/misc/amd64/   |                        |                              |
| acpidev              |                        |                              |
|                      |                        |                              |
|/usr/include/sys/     |                        |                              |
| acpidev.h            |  Project/Private       | Header file for ACPI device  |
|                      |                        |        enumerator            |
|______________________|________________________|______________________________|
| /platform/i86pc/     |                        |                              |
| kernel/drv/acpinex   | Project Private        |  Bus driver for ACPI virtual
| /platform/i86pc/     |                        |  bus                         |
| kernel/drv/amd64/    |                        |                              |
| acpinex              |                        |                              |
| /platform/i86pc/     |                        |                              |
| kernel/drv/acpinex.conf|   Project  Private   | Driver conf file             |
|__________________|____________________________|______________________________|


Interface               Classification   Comments
-----------------------------------------------------------------------------
/devices/fw             Cons Priv       Pseudo nexus node to host system devices

/devices/fw/sb at x     Cons Priv       Pseudo nexus node for system board

/devices/fw/sb at x/    Cons Priv       Pseudo nexus node to host devices in 
socket at y                                     physical CPU

/devices/fw/sb at x/    Cons Priv        Logical CPU
socket at y/cpu at z

/devices/fw/sb at x/    Cons Priv       ACPI memory device
socket at y/mem at z

/devices/fw/sb at x/    Cons Priv       IOH embedded in physical CPU
socket at y/ioh at z
/devices/fw/sb at x/ioh at y    Cons Priv       Pseudo nexus node to host 
device in IOH
                                        except PCI host bridge


    4.6. Doc Impact:
        cfgadm_fw(1M) man page will be added. This will be similiar to
        cfgadm_sbd(1M) with x86 specific platform information
       
        cfgadm(1M) will need to be modified to point to cfgadm_fw(1M)

    4.11. Security Impact:
        None
    
    4.12. Dependencies:
        ACPI 3.0+ compatibility

5. Reference Documents:
    None

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


Reply via email to