On Tue, Jun 4, 2019 at 2:35 PM Tomer Tayar <[email protected]> wrote: > > The trace buffer address is 40 bits wide. > The end of the buffer is set in the RWP register (lower 32 bits), and in > the RWPHI register (upper 8 bits). > Currently only the lower 32 bits are read, and this patch fixes it and > concatenates the upper 8 bits to the output address. > > Signed-off-by: Tomer Tayar <[email protected]> > --- > drivers/misc/habanalabs/goya/goya_coresight.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/drivers/misc/habanalabs/goya/goya_coresight.c > b/drivers/misc/habanalabs/goya/goya_coresight.c > index 39f62ce72660..d7ec7ad84cc6 100644 > --- a/drivers/misc/habanalabs/goya/goya_coresight.c > +++ b/drivers/misc/habanalabs/goya/goya_coresight.c > @@ -425,8 +425,18 @@ static int goya_config_etr(struct hl_device *hdev, > WREG32(base_reg + 0x28, 0); > WREG32(base_reg + 0x304, 0); > > - if (params->output_size >= sizeof(u32)) > - *(u32 *) params->output = RREG32(base_reg + 0x18); > + if (params->output_size >= sizeof(u64)) { > + u32 rwp, rwphi; > + > + /* > + * The trace buffer address is 40 bits wide. The end > of > + * the buffer is set in the RWP register (lower 32 > + * bits), and in the RWPHI register (upper 8 bits). > + */ > + rwp = RREG32(base_reg + 0x18); > + rwphi = RREG32(base_reg + 0x3c) & 0xff; > + *(u64 *) params->output = ((u64) rwphi << 32) | rwp; > + } > } > > return 0; > -- > 2.17.1 >
This patch is: Reviewed-by: Oded Gabbay <[email protected]> applied to -fixes

