Subject: Re: Fwd: [PATCH v4 03/18] cxl: Define process problem state area at attach time only

From: Manoj Kumar <[email-masked]>
Date: Sun, 21 Feb 2016 15:45:54 -0600

Reviewed-by: Manoj Kumar <[email-masked]>

---
Manoj Kumar

> Subject: [PATCH v4 03/18] cxl: Define process problem state area at
> attach time only
> Date: Tue, 16 Feb 2016 22:38:56 +0100
> From: Frederic Barrat <[email-masked]>
> To: [email-masked], [email-masked],
> [email-masked], [email-masked]
>
> Cxl kernel API was defining the process problem state area during

Suggestion:
Cxl -> CXL

> context initialization, making it possible to map the problem state
> area before attaching the context. This won't work on a powerVM
> guest. So force the logical behavior, like in userspace: attach first,
> then map the problem state area.
> Remove calls to cxl_assign_psn_space during init. The function is
> already called on the attach paths.
>
> Co-authored-by: Christophe Lombard <[email-masked]>
> Signed-off-by: Frederic Barrat <[email-masked]>
> Signed-off-by: Christophe Lombard <[email-masked]>
> ---
>   drivers/misc/cxl/api.c | 11 ++---------
>   1 file changed, 2 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/misc/cxl/api.c b/drivers/misc/cxl/api.c
> index ea3eeb7..b45d857 100644
> --- a/drivers/misc/cxl/api.c
> +++ b/drivers/misc/cxl/api.c
> @@ -51,8 +51,6 @@ struct cxl_context *cxl_dev_context_init(struct
> pci_dev *dev)
>       if (rc)
>           goto err_mapping;
>
> -    cxl_assign_psn_space(ctx);
> -
>       return ctx;
>
>   err_mapping:
> @@ -207,7 +205,6 @@ EXPORT_SYMBOL_GPL(cxl_stop_context);
>   void cxl_set_master(struct cxl_context *ctx)
>   {
>       ctx->master = true;
> -    cxl_assign_psn_space(ctx);
>   }
>   EXPORT_SYMBOL_GPL(cxl_set_master);
>
> @@ -325,15 +322,11 @@ EXPORT_SYMBOL_GPL(cxl_start_work);
>
>   void __iomem *cxl_psa_map(struct cxl_context *ctx)
>   {
> -    struct cxl_afu *afu = ctx->afu;
> -    int rc;
> -
> -    rc = cxl_afu_check_and_enable(afu);
> -    if (rc)
> +    if (ctx->status != STARTED)
>           return NULL;
>
>       pr_devel("%s: psn_phys%llx size:%llx\n",
> -         __func__, afu->psn_phys, afu->adapter->ps_size);
> +        __func__, ctx->psn_phys, ctx->psn_size);
>       return ioremap(ctx->psn_phys, ctx->psn_size);
>   }
>   EXPORT_SYMBOL_GPL(cxl_psa_map);