aboutsummaryrefslogtreecommitdiffstats
path: root/roms/skiboot/doc/opal-api/opal-pci-set-peltv-32.rst
diff options
context:
space:
mode:
Diffstat (limited to 'roms/skiboot/doc/opal-api/opal-pci-set-peltv-32.rst')
-rw-r--r--roms/skiboot/doc/opal-api/opal-pci-set-peltv-32.rst64
1 files changed, 64 insertions, 0 deletions
diff --git a/roms/skiboot/doc/opal-api/opal-pci-set-peltv-32.rst b/roms/skiboot/doc/opal-api/opal-pci-set-peltv-32.rst
new file mode 100644
index 000000000..acb2d479a
--- /dev/null
+++ b/roms/skiboot/doc/opal-api/opal-pci-set-peltv-32.rst
@@ -0,0 +1,64 @@
+.. _OPAL_PCI_SET_PELTV:
+
+OPAL_PCI_SET_PELTV
+==================
+
+.. code-block:: c
+
+ #define OPAL_PCI_SET_PELTV 32
+
+ int64_t opal_pci_set_peltv(uint64_t phb_id, uint32_t parent_pe,
+ uint32_t child_pe, uint8_t state);
+
+**WARNING:** This documentation comes from an old source and is possibly not up
+to date with OPALv3. Rely on this documentation only as a starting point,
+use the source (and update the docs).
+
+
+This call sets the PELTV of a parent PE to add or remove a PE number as a PE
+within that parent PE domain. The host must call this function for each child
+of a parent PE.
+
+``phb_id``
+ is the value from the PHB node ibm,opal-phbid property
+
+``parent_pe``
+ is the PE number of a PE that is higher in the PCI hierarchy
+ to other PEs, such that an error involving this parent PE should cause a
+ collateral PE freeze for PEs below this PE in the PCI hierarchy. For example
+ a switch upstream bridge is a PE that is parent to PEs reached through that
+ upstream bridge such that an error involving the upstream bridge
+ (e.g, ERR_FATAL) should cause the PHB to freeze all other PEs below that
+ upstream bridge (e.g., a downstream bridge, or devices below a downstream
+ bridge).
+
+``child_pe``
+ is the PE number of a PE that is lower in the PCI hierarchy
+ than another PE, such that an error involving that other PE should cause a
+ collateral PE freeze for this child PE. For example a device below a
+ downstream bridge of a PCIE switch is a child PE that downstream bridge PE
+ and the upstream bridge PE of that switch -- an ERR_Fatal from either bridge
+ should result in a collateral freeze of that device PE.
+
+.. code-block:: c
+
+ enum OpalPeltvAction {
+ OPAL_REMOVE_PE_FROM_DOMAIN = 0,
+ OPAL_ADD_PE_TO_DOMAIN = 1
+ };
+
+**OPAL Implementation Note:**
+**WARNING TODO**: *CHECK IF THIS IS CORRECT FOR skiboot:*
+For ibm,opal-ioda2, OPAL sets the PELTV bit in all RTT entries for the parent
+PE when the state argument is '1'. OPAL clears the PELTV bit in all RTT
+entries for the parent PE when the state argument is '0' and setting the child
+PE bit in the parent PELTV results in an all-zeros value for that PELTV.
+
+Return value:
+
+.. code-block:: c
+
+ if (!phb)
+ return OPAL_PARAMETER;
+ if (!phb->ops->set_peltv)
+ return OPAL_UNSUPPORTED;