diff mbox series

phb4: Disable TCE cache line buffer

Message ID 20210129092207.667519-1-fbarrat@linux.ibm.com
State Accepted
Headers show
Series phb4: Disable TCE cache line buffer | expand

Commit Message

Frederic Barrat Jan. 29, 2021, 9:22 a.m. UTC
This patch implements a circumvention for HW557787. It disables the
TCE cache line buffer as, under heavy loads, there's a possibility of
an entry being re-allocated incorrectly.

Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
---
 hw/phb4.c           | 1 +
 include/phb4-regs.h | 1 +
 2 files changed, 2 insertions(+)

Comments

Vasant Hegde Feb. 12, 2021, 5:29 a.m. UTC | #1
On 1/29/21 2:52 PM, Frederic Barrat wrote:
> This patch implements a circumvention for HW557787. It disables the
> TCE cache line buffer as, under heavy loads, there's a possibility of
> an entry being re-allocated incorrectly.
> 
> Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>

Thanks! Merged to master as 15b93a301.

-Vasant


> ---
>   hw/phb4.c           | 1 +
>   include/phb4-regs.h | 1 +
>   2 files changed, 2 insertions(+)
> 
> diff --git a/hw/phb4.c b/hw/phb4.c
> index e7758d34..6788abd2 100644
> --- a/hw/phb4.c
> +++ b/hw/phb4.c
> @@ -5303,6 +5303,7 @@ static void phb4_init_hw(struct phb4 *p)
> 
>   	/* Init_17 - PHB Control */
>   	val = PHB_CTRLR_IRQ_PGSZ_64K;
> +	val |= PHB_CTRLR_TCE_CLB_DISABLE; // HW557787 circumvention
>   	val |= SETFIELD(PHB_CTRLR_TVT_ADDR_SEL, 0ull, TVT_2_PER_PE);
>   	if (PHB4_CAN_STORE_EOI(p))
>   		val |= PHB_CTRLR_IRQ_STORE_EOI;
> diff --git a/include/phb4-regs.h b/include/phb4-regs.h
> index d3b0aac4..b6e77874 100644
> --- a/include/phb4-regs.h
> +++ b/include/phb4-regs.h
> @@ -110,6 +110,7 @@
>   #define     TVT_4_PER_PE		1
>   #define     TVT_8_PER_PE		2
>   #define     TVT_16_PER_PE		3
> +#define   PHB_CTRLR_TCE_CLB_DISABLE	PPC_BIT(21)
>   #define   PHB_CTRLR_DMA_RD_SPACING	PPC_BITMASK(28,31)
>   #define PHB_AIB_FENCE_CTRL		0x860
>   #define PHB_TCE_TAG_ENABLE		0x868
>
diff mbox series

Patch

diff --git a/hw/phb4.c b/hw/phb4.c
index e7758d34..6788abd2 100644
--- a/hw/phb4.c
+++ b/hw/phb4.c
@@ -5303,6 +5303,7 @@  static void phb4_init_hw(struct phb4 *p)
 
 	/* Init_17 - PHB Control */
 	val = PHB_CTRLR_IRQ_PGSZ_64K;
+	val |= PHB_CTRLR_TCE_CLB_DISABLE; // HW557787 circumvention
 	val |= SETFIELD(PHB_CTRLR_TVT_ADDR_SEL, 0ull, TVT_2_PER_PE);
 	if (PHB4_CAN_STORE_EOI(p))
 		val |= PHB_CTRLR_IRQ_STORE_EOI;
diff --git a/include/phb4-regs.h b/include/phb4-regs.h
index d3b0aac4..b6e77874 100644
--- a/include/phb4-regs.h
+++ b/include/phb4-regs.h
@@ -110,6 +110,7 @@ 
 #define     TVT_4_PER_PE		1
 #define     TVT_8_PER_PE		2
 #define     TVT_16_PER_PE		3
+#define   PHB_CTRLR_TCE_CLB_DISABLE	PPC_BIT(21)
 #define   PHB_CTRLR_DMA_RD_SPACING	PPC_BITMASK(28,31)
 #define PHB_AIB_FENCE_CTRL		0x860
 #define PHB_TCE_TAG_ENABLE		0x868