On Wed, Sep 18, 2019 at 06:06:34PM +0200, Cédric Le Goater wrote: > The NVT space is 19 bits wide, giving a maximum of 512K per chip. When > dispatched on a HW thread, the NVT identifier of a vCPU is pushed/stored > in the CAM line (word2) of the thread interrupt context. Ok, that's interesting, but how does it lead to this patch? Connect the dots, please. > > Signed-off-by: Cédric Le Goater > --- > include/hw/ppc/xive.h | 5 ----- > include/hw/ppc/xive_regs.h | 21 +++++++++++++++++++++ > 2 files changed, 21 insertions(+), 5 deletions(-) > > diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h > index a461753f5da5..794dfcaae0f8 100644 > --- a/include/hw/ppc/xive.h > +++ b/include/hw/ppc/xive.h > @@ -469,11 +469,6 @@ void xive_tctx_pic_print_info(XiveTCTX *tctx, Monitor *mon); > Object *xive_tctx_create(Object *cpu, XiveRouter *xrtr, Error **errp); > void xive_tctx_ipb_update(XiveTCTX *tctx, uint8_t ring, uint8_t ipb); > > -static inline uint32_t xive_nvt_cam_line(uint8_t nvt_blk, uint32_t nvt_idx) > -{ > - return (nvt_blk << 19) | nvt_idx; > -} > - > /* > * KVM XIVE device helpers > */ > diff --git a/include/hw/ppc/xive_regs.h b/include/hw/ppc/xive_regs.h > index 08c8bf7172e2..3d7b6fd09664 100644 > --- a/include/hw/ppc/xive_regs.h > +++ b/include/hw/ppc/xive_regs.h > @@ -251,4 +251,25 @@ typedef struct XiveNVT { > > #define xive_nvt_is_valid(nvt) (be32_to_cpu((nvt)->w0) & NVT_W0_VALID) > > +/* > + * The VP number space in a block is defined by the END_W6_NVT_INDEX > + * field of the XIVE END > + */ > +#define XIVE_NVT_SHIFT 19 > + > +static inline uint32_t xive_nvt_cam_line(uint8_t nvt_blk, uint32_t nvt_idx) > +{ > + return (nvt_blk << XIVE_NVT_SHIFT) | nvt_idx; > +} > + > +static inline uint32_t xive_nvt_idx(uint32_t cam_line) > +{ > + return cam_line & ((1 << XIVE_NVT_SHIFT) - 1); > +} > + > +static inline uint32_t xive_nvt_blk(uint32_t cam_line) > +{ > + return (cam_line >> XIVE_NVT_SHIFT) & 0xf; > +} > + > #endif /* PPC_XIVE_REGS_H */ -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson