[Skiboot] [PATCH] Add documentation for OPAL_PCI_TCE_KILL

Stewart Smith stewart at linux.vnet.ibm.com
Fri Jul 8 18:09:58 AEST 2016


Signed-off-by: Stewart Smith <stewart at linux.vnet.ibm.com>
---
 doc/opal-api/opal-pci-tce-kill-126.txt | 55 ++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)
 create mode 100644 doc/opal-api/opal-pci-tce-kill-126.txt

diff --git a/doc/opal-api/opal-pci-tce-kill-126.txt b/doc/opal-api/opal-pci-tce-kill-126.txt
new file mode 100644
index 000000000000..e774966ae5fd
--- /dev/null
+++ b/doc/opal-api/opal-pci-tce-kill-126.txt
@@ -0,0 +1,55 @@
+OPAL_PCI_TCE_KILL
+-----------------
+
+int64_t opal_pci_tce_kill(uint64_t phb_id,
+			  uint32_t kill_type,
+			  uint32_t pe_num,
+			  uint32_t tce_size,
+			  uint64_t dma_addr,
+			  uint32_t npages)
+
+An abstraction around TCE kill. This allows host OS kernels to use an OPAL
+call if they don't know the model specific invalidation method.
+
+Where kill_type is one of:
+enum {
+     OPAL_PCI_TCE_KILL_PAGES,
+     OPAL_PCI_TCE_KILL_PE,
+     OPAL_PCI_TCE_KILL_ALL,
+};
+
+Not all PHB types currently support this abstraction. It is supported in
+PHB4, which means from POWER9 onwards it will be present.
+
+Returns:
+OPAL_PARAMETER: if phb_id is invalid (or similar)
+OPAL_UNSUPPORTED: if PHB model doesn't support this call. This is likely
+		  true for systems before POWER9/PHB4.
+		  Do *NOT* rely on this call existing for systems prior to
+		  POWER9 (i.e. PHB4).
+
+Example code (from linux/arch/powerpc/platforms/powernv/pci-ioda.c)
+
+static inline void pnv_pci_ioda2_tce_invalidate_pe(struct pnv_ioda_pe *pe)
+{
+	struct pnv_phb *phb = pe->phb;
+
+	if (phb->model == PNV_PHB_MODEL_PHB3 && phb->regs)
+	   pnv_pci_phb3_tce_invalidate_pe(pe);
+	else
+	   opal_pci_tce_kill(phb->opal_id, OPAL_PCI_TCE_KILL_PE,
+			     pe->pe_number, 0, 0, 0);
+}
+
+and
+
+struct pnv_phb *phb = pe->phb;
+unsigned int shift = tbl->it_page_shift;
+if (phb->model == PNV_PHB_MODEL_PHB3 && phb->regs)
+	pnv_pci_phb3_tce_invalidate(pe, rm, shift,
+				    index, npages);
+else
+	opal_pci_tce_kill(phb->opal_id,
+			  OPAL_PCI_TCE_KILL_PAGES,
+			  pe->pe_number, 1u << shift,
+			  index << shift, npages);
-- 
2.1.4



More information about the Skiboot mailing list