[Skiboot] [PATCH] Add opal_msg_type OPAL_MSG_HOTPLUG

Lei YU mine260309 at gmail.com
Thu Jan 17 16:05:04 AEDT 2019


This message is used to notify kernel about an PCIe hotplug event occurs
on slots connected directly to CPU.

Updated doc/pci-slot.rst to describe the details of the usage of this
event.

Signed-off-by: Lei YU <mine260309 at gmail.com>
---
 doc/pci-slot.rst   | 12 ++++++++++++
 include/opal-api.h |  1 +
 2 files changed, 13 insertions(+)

diff --git a/doc/pci-slot.rst b/doc/pci-slot.rst
index fd3fd7d..7790175 100644
--- a/doc/pci-slot.rst
+++ b/doc/pci-slot.rst
@@ -66,6 +66,7 @@ Property                    Definition
 ibm,reset-by-firmware       Boolean indicating whether the slot reset should be done in firmware
 ibm,slot-pluggable          Boolean indicating whether the slot is pluggable
 ibm,slot-surprise-pluggable Boolean indicating whether the slot supports surprise hotplug
+ibm,slot-use-hotplug-event  Boolean indicating whether the slot shall use opal message to handle hotplug
 ibm,slot-broken-pdc         Boolean indicating whether PDC (Presence Detection Change) is broken
 ibm,slot-power-ctl          Boolean indicating whether the slot has power control
 ibm,slot-wired-lanes        The number of hardware lanes that are wired
@@ -105,6 +106,17 @@ removed or added accordingly, without actually changing the slot's power state.
 The API call will return OPAL_SUCCESS immediately and no further asynchronous
 message will be sent.
 
+In case of a slot directly connected to CPU instead of PCIe switch, there is no
+hotplug interrupt generated by switch. The property "ibm,slot-use-hotplug-event"
+is added to support this case. Typically a GPIO interrupt is generated from the
+peripheral device and sent to CPU. Skiboot then handles the interrupt, retrieves
+the hotplug status, and then sends an opal message to kernel with parameters of
+   * An integer indicating the slot id
+   * A boolean indicating if the device is plugged out or in
+
+Example:
+    opal_queue_msg(OPAL_MSG_HOTPLUG, NULL, NULL, <slot_id>, <0|1>);
+
 PCI Slot on Apollo and Firenze
 ------------------------------
 
diff --git a/include/opal-api.h b/include/opal-api.h
index 5f397c8..a262054 100644
--- a/include/opal-api.h
+++ b/include/opal-api.h
@@ -547,6 +547,7 @@ enum opal_msg_type {
 	OPAL_MSG_DPO		= 5,
 	OPAL_MSG_PRD		= 6,
 	OPAL_MSG_OCC		= 7,
+	OPAL_MSG_HOTPLUG	= 8,    /* params[0] = slot id, param[1] = 0 out, 1 in */
 	OPAL_MSG_TYPE_MAX,
 };
 
-- 
2.7.4



More information about the Skiboot mailing list