[Pdbg] [PATCH] P8 ADU: Fix access sizes
Amitay Isaacs
amitay at ozlabs.org
Fri Sep 27 14:54:39 AEST 2019
Reviewed-by: Amitay Isaacs <amitay at ozlabs.org>
On Fri, 2019-09-27 at 13:20 +1000, Alistair Popple wrote:
> Commit 302f249d95f0 ("adu: Add arugments for block size") introduced
> the ability to specify an access size for the POWER8 and POWER9 ADU
> functions for cache-inhibited access.
>
> On POWER8 the ADU control register TSIZE encoding is slightly
> different than for POWER9. Unfortunately the code for P8 was copied
> from the P9 version but the encoding was not updated. This resulted
> in
> ADU putmem commands writing twice as much memory as they were
> supposed
> to on POWER8.
>
> Signed-off-by: Alistair Popple <alistair at popple.id.au>
> ---
> libpdbg/adu.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/libpdbg/adu.c b/libpdbg/adu.c
> index 25f08cd..df610a7 100644
> --- a/libpdbg/adu.c
> +++ b/libpdbg/adu.c
> @@ -344,7 +344,7 @@ static int p8_adu_getmem(struct mem *adu,
> uint64_t addr, uint64_t *data,
> if (ci) {
> /* Do cache inhibited access */
> ctrl_reg = SETFIELD(P8_FBC_ALTD_TTYPE, ctrl_reg,
> P8_TTYPE_CI_PARTIAL_READ);
> - block_size = (blog2(block_size) + 1) << 1;
> + block_size = (blog2(block_size) + 1);
> } else {
> ctrl_reg = SETFIELD(P8_FBC_ALTD_TTYPE, ctrl_reg,
> P8_TTYPE_DMA_PARTIAL_READ);
> block_size = 0;
> @@ -405,10 +405,9 @@ int p8_adu_putmem(struct mem *adu, uint64_t
> addr, uint64_t data, int size,
> if (ci) {
> /* Do cache inhibited access */
> ctrl_reg = SETFIELD(P8_FBC_ALTD_TTYPE, ctrl_reg,
> P8_TTYPE_CI_PARTIAL_WRITE);
> - block_size = (blog2(block_size) + 1) << 1;
> + block_size = (blog2(block_size) + 1);
> } else {
> ctrl_reg = SETFIELD(P8_FBC_ALTD_TTYPE, ctrl_reg,
> P8_TTYPE_DMA_PARTIAL_WRITE);
> - block_size <<= 1;
> }
> ctrl_reg = SETFIELD(P8_FBC_ALTD_TSIZE, ctrl_reg, block_size);
>
> --
> 2.20.1
>
Amitay.
--
Do what you like to do. It will probably turn out to be what you do best.
More information about the Pdbg
mailing list