I'm sponsoring the following case on behalf of Michael Corcoran.
The proposal I believe qualifies for self-review approval but
I can upgrade this upgrade should anyone think otherwise.

The case requests minor binding only as there is
no intention to back-port these interfaces.

------------------


1. Introduction
     1.1. Project/Component Working Name:
      CPU hotplug for x86 systems

     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:
     06 August, 2009

4. Technical Description
Name:           PSMI extension for state save and restore
Submitter:      Geeta Krishna
Owner:          Geeta Krishna
Interest:       
Status:         waiting fast-track

Background:

Previous cases on Intel PSMI interface:
     PSARC 1993/042     Solaris/x86 MP Support
     PSARC 1994/441     PSMI for Power PC
     PSARC 1995/422     PSMI Extensions
     PSARC 1997/310     PSMI Version 1.2
     PSARC 2004/239     x86 PSMI Extensions for Higher Resolution Timer
     PSARC 2004/418     SM Extension for soft poweroff on Solaris x86
     PSARC 2005/091     PSMI Extension for ADII
     PSARC 2006/632     PSMI extension for state save and restore


Proposal:

1. New control entry point is needed for supporting CPU hotplug operations.

A CPU control entry point will be added to psm_ops structure and the PSM
version will be incremented to 1.7 from 1.6. The CPU control entry point
and relative data structure are defined as below:

typedef enum psm_cpu_op_e {
         PSM_CPU_ADD = 1,
         PSM_CPU_REMOVE,
         PSM_CPU_STOP
} psm_cpu_op_t;

typedef struct psm_cpu_request {
         psm_cpu_op_t pcr_cmd;
         union {
                 struct {
                         processorid_t cpuid;
                         void *argp;
                 } cpu_add;
                 struct {
                         processorid_t cpuid;
                 } cpu_remove;
                 struct {
                         processorid_t cpuid;
                         void *ctx;
                 } cpu_stop;
         } req;
} psm_cpu_request_t;

int     (*psm_cpu_ops)(psm_cpu_request_t *reqp);

This CPU control interface supports following operations :

PSM_CPU_ADD:    add a logical CPU to PSM layer and allocate processor id.
PSM_CPU_REMOVE: remove a logical CPU from PSM layer and free processor id.
PSM_CPU_STOP:   power off logical CPU.

2. Enhancement to platform dependent interfaces

To support CPU hotplug, following interfaces and data structure will be
added to platform dependent interfaces in uts/i86pc/sys/machsystm.h.

typedef enum mach_cpu_add_arg_type {
         MACH_CPU_ARG_LOCAL_APIC,
         MACH_CPU_ARG_LOCAL_X2APIC,
} mach_cpu_add_arg_type_t;

typedef struct mach_cpu_add_arg {
         mach_cpu_add_arg_type_t         type;
         union {
                 struct {
                         uint32_t        apic_id;
                         uint32_t        proc_id;
                 } apic;
         } arg;
} mach_cpu_add_arg_t;

extern int mach_cpu_stop(cpu_t *, void *);
extern int mach_cpu_add(mach_cpu_add_arg_t *, processorid_t *);
extern int mach_cpu_remove(processorid_t);
These interfaces will call psm_cpu_ops in psm_ops.

The new *psm_ops* structure will be in effect if PSMI_1_7 is defined.
PSMI_1_7 will include the extensions defined in PSMI_1_6 interface.

Backward binary compatibility for the PSM will be preserved
through the check of version of PSM in the kernel.


Interface levels:

The project exports the following interfaces:

PSMI Interface changes for version 1.7:

Interface:              Classification          Comments

psm_cpu_ops             Consolidation Private   psm_ops struct member

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