aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederic Barrat <fbarrat@linux.ibm.com>2021-08-25 17:04:08 +0200
committerVasant Hegde <hegdevasant@linux.vnet.ibm.com>2021-08-27 12:13:11 +0530
commit2b0b6a1a002e4532b3c48b2923f5ee7ed08c4a48 (patch)
treef9223afc52a9428d081ab7fb1386bc9b6f77394c
parentcd12ea6d8e1f384ef22c50777cb06b059fc3734c (diff)
downloadskiboot-2b0b6a1a002e4532b3c48b2923f5ee7ed08c4a48.zip
skiboot-2b0b6a1a002e4532b3c48b2923f5ee7ed08c4a48.tar.gz
skiboot-2b0b6a1a002e4532b3c48b2923f5ee7ed08c4a48.tar.bz2
phb4/5: Escalate page-level TCE kills
An hw issue was found on P10 (HW560152) where a page-level TCE kill can be dropped if there are enough TCE kill requests already being processed. The net effect is that data integrity is not guaranteed. The circumvention is to stay away from page-level kills and escalate those to PE kills. Which hurts performance. It also affects P9. Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com> Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
-rw-r--r--hw/phb4.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/hw/phb4.c b/hw/phb4.c
index 79083d4..ddaa18f 100644
--- a/hw/phb4.c
+++ b/hw/phb4.c
@@ -1051,6 +1051,14 @@ static int64_t phb4_tce_kill(struct phb *phb, uint32_t kill_type,
uint64_t val;
int64_t rc;
+ /*
+ * HW560152: a page-level kill can be dropped if the
+ * processing queue is backed-up, which can cause data
+ * integrity issues
+ */
+ if (kill_type == OPAL_PCI_TCE_KILL_PAGES)
+ kill_type = OPAL_PCI_TCE_KILL_PE;
+
sync();
switch(kill_type) {
case OPAL_PCI_TCE_KILL_PAGES: