diff options
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.rst | 64 |
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; |