lkml.org 
[lkml]   [2018]   [May]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v5 5/7] ocxl: Expose the thread_id needed for wait on POWER9
    From
    Date
    On 11/05/18 16:13, Alastair D'Silva wrote:
    > From: Alastair D'Silva <alastair@d-silva.org>
    >
    > In order to successfully issue as_notify, an AFU needs to know the TID
    > to notify, which in turn means that this information should be
    > available in userspace so it can be communicated to the AFU.
    >
    > Signed-off-by: Alastair D'Silva <alastair@d-silva.org>

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

    Comments below.

    > +#ifdef CONFIG_PPC64
    > +static long afu_ioctl_enable_p9_wait(struct ocxl_context *ctx,
    > + struct ocxl_ioctl_p9_wait __user *uarg)
    > +{
    > + struct ocxl_ioctl_p9_wait arg;
    > +
    > + memset(&arg, 0, sizeof(arg));
    > +
    > + if (cpu_has_feature(CPU_FTR_P9_TIDR)) {
    > + enum ocxl_context_status status;
    > +
    > + // Locks both status & tidr
    > + mutex_lock(&ctx->status_mutex);
    > + if (!ctx->tidr) {
    > + if (set_thread_tidr(current))
    > + return -ENOENT;
    > +
    > + ctx->tidr = current->thread.tidr;
    > + }
    > +
    > + status = ctx->status;
    > + mutex_unlock(&ctx->status_mutex);
    > +
    > + if (status == ATTACHED) {
    > + int rc;
    > + struct link *link = ctx->afu->fn->link;
    > +
    > + rc = ocxl_link_update_pe(link, ctx->pasid, ctx->tidr);
    > + if (rc)
    > + return rc;
    > + }
    > +
    > + arg.thread_id = ctx->tidr;
    > + } else
    > + return -ENOENT;

    I didn't pick this up before - please please please use braces on both
    sides of the if here.

    > +
    > + if (copy_to_user(uarg, &arg, sizeof(arg)))
    > + return -EFAULT;
    > +
    > + return 0;
    > +}
    > +#endif

    > diff --git a/include/misc/ocxl.h b/include/misc/ocxl.h
    > index 51ccf76db293..9ff6ddc28e22 100644
    > --- a/include/misc/ocxl.h
    > +++ b/include/misc/ocxl.h
    > @@ -188,6 +188,15 @@ extern int ocxl_link_add_pe(void *link_handle, int pasid, u32 pidr, u32 tidr,
    > void (*xsl_err_cb)(void *data, u64 addr, u64 dsisr),
    > void *xsl_err_data);
    >
    > +/**
    > + * Update values within a Process Element
    > + *
    > + * link_handle: the link handle associated with the process element
    > + * pasid: the PASID for the AFU context
    > + * tid: the new thread id for the process element
    > + */
    > +extern int ocxl_link_update_pe(void *link_handle, int pasid, __u16 tid);

    My earlier comment about __u16 vs u16 applies for this declaration (and
    the body declaration) as well

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

    \
     
     \ /
      Last update: 2018-05-31 06:43    [W:3.603 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site