The PSL needs to see all TLBI pertinent to the memory contexts used on the cxl adapter. For the hash memory model, it was done by making all TLBIs global as soon as the cxl driver is in us. For radix, we need something similar, but we can refine and only convert to global the invalidations for contexts actually used by the device.
So mark the contexts being attached to the cxl adapter as requiring global TLBIs. Signed-off-by: Frederic Barrat <fbar...@linux.vnet.ibm.com> --- drivers/misc/cxl/api.c | 5 ++++- drivers/misc/cxl/file.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/misc/cxl/api.c b/drivers/misc/cxl/api.c index 1a138c83f877..86b2ad86fdee 100644 --- a/drivers/misc/cxl/api.c +++ b/drivers/misc/cxl/api.c @@ -347,7 +347,10 @@ int cxl_start_context(struct cxl_context *ctx, u64 wed, cxl_context_mm_count_put(ctx); goto out; } - +#ifdef CONFIG_PPC_BOOK3S_64 + if (ctx->mm) + mm_context_set_global_tlbi(&ctx->mm->context); +#endif ctx->status = STARTED; out: mutex_unlock(&ctx->status_mutex); diff --git a/drivers/misc/cxl/file.c b/drivers/misc/cxl/file.c index 17b433f1ce23..c7ead488eee2 100644 --- a/drivers/misc/cxl/file.c +++ b/drivers/misc/cxl/file.c @@ -239,7 +239,10 @@ static long afu_ioctl_start_work(struct cxl_context *ctx, cxl_context_mm_count_put(ctx); goto out; } - +#ifdef CONFIG_PPC_BOOK3S_64 + if (ctx->mm) + mm_context_set_global_tlbi(&ctx->mm->context); +#endif ctx->status = STARTED; rc = 0; out: -- 2.11.0