diff options
author | Frederic Barrat <fbarrat@linux.ibm.com> | 2021-08-25 17:04:08 +0200 |
---|---|---|
committer | Vasant Hegde <hegdevasant@linux.vnet.ibm.com> | 2021-08-27 12:13:11 +0530 |
commit | 2b0b6a1a002e4532b3c48b2923f5ee7ed08c4a48 (patch) | |
tree | f9223afc52a9428d081ab7fb1386bc9b6f77394c | |
parent | cd12ea6d8e1f384ef22c50777cb06b059fc3734c (diff) | |
download | skiboot-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.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -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: |