All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
To: Frederic Barrat <fbarrat@linux.vnet.ibm.com>,
	mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org,
	clombard@linux.vnet.ibm.com, vaibhav@linux.vnet.ibm.com
Cc: benh@kernel.crashing.org, alistair@popple.id.au
Subject: Re: [PATCH 1/2] cxl: Fix driver use count
Date: Mon, 28 Aug 2017 19:35:01 +1000	[thread overview]
Message-ID: <80d9d142-6500-ffcf-3c89-94dde8f1c890@au1.ibm.com> (raw)
In-Reply-To: <20170828084731.14773-1-fbarrat@linux.vnet.ibm.com>

On 28/08/17 18:47, Frederic Barrat wrote:
> cxl keeps a driver use count, which is used with the hash memory model
> on p8 to know when to upgrade local TLBIs to global and to trigger
> callbacks to manage the MMU for PSL8.
> 
> If a process opens a context and closes without attaching or fails the
> attachment, the driver use count is never decremented. As a
> consequence, TLB invalidations remain global, even if there are no
> active cxl contexts.
> 
> We should increment the driver use count when the process is attaching
> to the cxl adapter, and not on open. It's not needed before the
> adapter starts using the context and the use count is decremented on
> the detach path, so it makes more sense.
> 
> It affects only the user api. The kernel api is already doing The
> Right Thing.
> 
> Signed-off-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
> Cc: stable@vger.kernel.org # v4.2+
> Fixes: 7bb5d91a4dda ("cxl: Rework context lifetimes")

A couple of comment typos.

Acked-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>

> ---
>   drivers/misc/cxl/api.c  | 4 ++++
>   drivers/misc/cxl/file.c | 8 +++++++-
>   2 files changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/misc/cxl/api.c b/drivers/misc/cxl/api.c
> index 1a138c83f877..e0dfd1eadd70 100644
> --- a/drivers/misc/cxl/api.c
> +++ b/drivers/misc/cxl/api.c
> @@ -336,6 +336,10 @@ int cxl_start_context(struct cxl_context *ctx, u64 wed,
>   			mmput(ctx->mm);
>   	}
>   
> +	/*
> +	 * Increment driver use count. Enables global TLBIs for hash
> +	 * and callacks to handle the segment table

callbacks

> +	 */
>   	cxl_ctx_get();
>   
>   	if ((rc = cxl_ops->attach_process(ctx, kernel, wed, 0))) {
> diff --git a/drivers/misc/cxl/file.c b/drivers/misc/cxl/file.c
> index 0761271d68c5..b76a491a485d 100644
> --- a/drivers/misc/cxl/file.c
> +++ b/drivers/misc/cxl/file.c
> @@ -95,7 +95,6 @@ static int __afu_open(struct inode *inode, struct file *file, bool master)
>   
>   	pr_devel("afu_open pe: %i\n", ctx->pe);
>   	file->private_data = ctx;
> -	cxl_ctx_get();
>   
>   	/* indicate success */
>   	rc = 0;
> @@ -225,6 +224,12 @@ static long afu_ioctl_start_work(struct cxl_context *ctx,
>   	if (ctx->mm)
>   		mmput(ctx->mm);
>   
> +	/*
> +	 * Increment driver use count. Enables global TLBIs for hash
> +	 * and callacks to handle the segment table

callbacks

> +	 */
> +	cxl_ctx_get();
> +
>   	trace_cxl_attach(ctx, work.work_element_descriptor, work.num_interrupts, amr);
>   
>   	if ((rc = cxl_ops->attach_process(ctx, false, work.work_element_descriptor,
> @@ -233,6 +238,7 @@ static long afu_ioctl_start_work(struct cxl_context *ctx,
>   		cxl_adapter_context_put(ctx->afu->adapter);
>   		put_pid(ctx->pid);
>   		ctx->pid = NULL;
> +		cxl_ctx_put();
>   		cxl_context_mm_count_put(ctx);
>   		goto out;
>   	}
> 

-- 
Andrew Donnellan              OzLabs, ADL Canberra
andrew.donnellan@au1.ibm.com  IBM Australia Limited

      parent reply	other threads:[~2017-08-28  9:35 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-28  8:47 [PATCH 1/2] cxl: Fix driver use count Frederic Barrat
2017-08-28  8:47 ` [PATCH 2/2] cxl: Enable global TLBIs for cxl contexts Frederic Barrat
2017-08-28 12:03   ` Benjamin Herrenschmidt
2017-08-28 17:37     ` Frederic Barrat
2017-08-28 20:49       ` Benjamin Herrenschmidt
2017-08-28  9:35 ` Andrew Donnellan [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=80d9d142-6500-ffcf-3c89-94dde8f1c890@au1.ibm.com \
    --to=andrew.donnellan@au1.ibm.com \
    --cc=alistair@popple.id.au \
    --cc=benh@kernel.crashing.org \
    --cc=clombard@linux.vnet.ibm.com \
    --cc=fbarrat@linux.vnet.ibm.com \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=vaibhav@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.