diff for duplicates of <02a401d3e90f$cdb0be90$69123bb0$@d-silva.org> diff --git a/a/1.txt b/N1/1.txt index c8de314..6629da4 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -2,7 +2,8 @@ > -----Original Message----- > From: Frederic Barrat <fbarrat@linux.ibm.com> > Sent: Friday, 11 May 2018 7:25 PM -> To: Alastair D'Silva <alastair@au1.ibm.com>; linuxppc-dev@lists.ozlabs.org +> To: Alastair D'Silva <alastair@au1.ibm.com>; = +linuxppc-dev@lists.ozlabs.org > Cc: linux-kernel@vger.kernel.org; linux-doc@vger.kernel.org; > mikey@neuling.org; vaibhav@linux.vnet.ibm.com; > aneesh.kumar@linux.vnet.ibm.com; malat@debian.org; @@ -11,50 +12,59 @@ > gregkh@linuxfoundation.org; arnd@arndb.de; > andrew.donnellan@au1.ibm.com; fbarrat@linux.vnet.ibm.com; > corbet@lwn.net; Alastair D'Silva <alastair@d-silva.org> -> Subject: Re: [PATCH v5 5/7] ocxl: Expose the thread_id needed for wait on +> Subject: Re: [PATCH v5 5/7] ocxl: Expose the thread_id needed for wait = +on > POWER9 -> -> -> -> Le 11/05/2018 à 08:13, Alastair D'Silva a écrit : +>=20 +>=20 +>=20 +> Le 11/05/2018 =C3=A0 08:13, Alastair D'Silva a =C3=A9crit : > > From: Alastair D'Silva <alastair@d-silva.org> > > -> > In order to successfully issue as_notify, an AFU needs to know the TID +> > 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> > > --- -> -> Ok, so we keep the limitation of having only one thread per context able to -> call 'wait', even though we don't have to worry about depleting the pool of -> TIDs any more. I think that's acceptable, though we don't really have a reason +>=20 +> Ok, so we keep the limitation of having only one thread per context = +able to +> call 'wait', even though we don't have to worry about depleting the = +pool of +> TIDs any more. I think that's acceptable, though we don't really have = +a reason > to justify it any more. Any reason you want to keep it that way? -> +>=20 -No strong reason, just trying to minimise the amount of changes. We can always expand the scope later, if we have a use-case for it. +No strong reason, just trying to minimise the amount of changes. We can = +always expand the scope later, if we have a use-case for it. > Fred -> -> +>=20 +>=20 > > drivers/misc/ocxl/context.c | 5 ++- -> > drivers/misc/ocxl/file.c | 53 +++++++++++++++++++++++++++++++ +> > drivers/misc/ocxl/file.c | 53 = ++++++++++++++++++++++++++++++++ > > drivers/misc/ocxl/link.c | 36 +++++++++++++++++++++ > > drivers/misc/ocxl/ocxl_internal.h | 1 + > > include/misc/ocxl.h | 9 ++++++ > > include/uapi/misc/ocxl.h | 8 +++++ > > 6 files changed, 111 insertions(+), 1 deletion(-) > > -> > diff --git a/drivers/misc/ocxl/context.c b/drivers/misc/ocxl/context.c +> > diff --git a/drivers/misc/ocxl/context.c = +b/drivers/misc/ocxl/context.c > > index 909e8807824a..95f74623113e 100644 > > --- a/drivers/misc/ocxl/context.c > > +++ b/drivers/misc/ocxl/context.c -> > @@ -34,6 +34,8 @@ int ocxl_context_init(struct ocxl_context *ctx, struct +> > @@ -34,6 +34,8 @@ int ocxl_context_init(struct ocxl_context *ctx, = +struct > ocxl_afu *afu, > > mutex_init(&ctx->xsl_error_lock); > > mutex_init(&ctx->irq_lock); > > idr_init(&ctx->irq_idr); -> > + ctx->tidr = 0; +> > + ctx->tidr =3D 0; > > + > > /* > > * Keep a reference on the AFU to make sure it's valid for the @@ -65,20 +75,22 @@ No strong reason, just trying to minimise the amount of changes. We can always e > > > > + // Locks both status & tidr > > mutex_lock(&ctx->status_mutex); -> > if (ctx->status != OPENED) { -> > rc = -EIO; -> > @@ -72,7 +75,7 @@ int ocxl_context_attach(struct ocxl_context *ctx, u64 +> > if (ctx->status !=3D OPENED) { +> > rc =3D -EIO; +> > @@ -72,7 +75,7 @@ int ocxl_context_attach(struct ocxl_context *ctx, = +u64 > amr) > > } > > -> > rc = ocxl_link_add_pe(ctx->afu->fn->link, ctx->pasid, +> > rc =3D ocxl_link_add_pe(ctx->afu->fn->link, ctx->pasid, > > - current->mm->context.id, 0, amr, current->mm, > > + current->mm->context.id, ctx->tidr, amr, current- > >mm, > > xsl_fault_error, ctx); > > if (rc) > > goto out; -> > diff --git a/drivers/misc/ocxl/file.c b/drivers/misc/ocxl/file.c index +> > diff --git a/drivers/misc/ocxl/file.c b/drivers/misc/ocxl/file.c = +index > > 038509e5d031..eb409a469f21 100644 > > --- a/drivers/misc/ocxl/file.c > > +++ b/drivers/misc/ocxl/file.c @@ -112,22 +124,22 @@ No strong reason, just trying to minimise the amount of changes. We can always e > > + if (set_thread_tidr(current)) > > + return -ENOENT; > > + -> > + ctx->tidr = current->thread.tidr; +> > + ctx->tidr =3D current->thread.tidr; > > + } > > + -> > + status = ctx->status; +> > + status =3D ctx->status; > > + mutex_unlock(&ctx->status_mutex); > > + -> > + if (status == ATTACHED) { +> > + if (status =3D=3D ATTACHED) { > > + int rc; -> > + struct link *link = ctx->afu->fn->link; +> > + struct link *link =3D ctx->afu->fn->link; > > + -> > + rc = ocxl_link_update_pe(link, ctx->pasid, ctx->tidr); +> > + rc =3D ocxl_link_update_pe(link, ctx->pasid, ctx->tidr); > > + if (rc) > > + return rc; > > + } > > + -> > + arg.thread_id = ctx->tidr; +> > + arg.thread_id =3D ctx->tidr; > > + } else > > + return -ENOENT; > > + @@ -138,58 +150,62 @@ No strong reason, just trying to minimise the amount of changes. We can always e > > +} > > +#endif > > + -> > #define CMD_STR(x) (x == OCXL_IOCTL_ATTACH ? "ATTACH" : +> > #define CMD_STR(x) (x =3D=3D OCXL_IOCTL_ATTACH ? "ATTACH" : > \ -> > x == OCXL_IOCTL_IRQ_ALLOC ? "IRQ_ALLOC" : \ -> > x == OCXL_IOCTL_IRQ_FREE ? "IRQ_FREE" : +> > x =3D=3D OCXL_IOCTL_IRQ_ALLOC ? "IRQ_ALLOC" : \ +> > x =3D=3D OCXL_IOCTL_IRQ_FREE ? "IRQ_FREE" : > \ -> > x == OCXL_IOCTL_IRQ_SET_FD ? "IRQ_SET_FD" : +> > x =3D=3D OCXL_IOCTL_IRQ_SET_FD ? "IRQ_SET_FD" : > \ -> > x == OCXL_IOCTL_GET_METADATA ? +> > x =3D=3D OCXL_IOCTL_GET_METADATA ? > "GET_METADATA" : \ -> > + x == OCXL_IOCTL_ENABLE_P9_WAIT ? +> > + x =3D=3D OCXL_IOCTL_ENABLE_P9_WAIT ? > "ENABLE_P9_WAIT" : \ > > "UNKNOWN") > > -> > static long afu_ioctl(struct file *file, unsigned int cmd, @@ -186,6 -> > +232,13 @@ static long afu_ioctl(struct file *file, unsigned int cmd, +> > static long afu_ioctl(struct file *file, unsigned int cmd, @@ = +-186,6 +> > +232,13 @@ static long afu_ioctl(struct file *file, unsigned int = +cmd, > > (struct ocxl_ioctl_metadata __user *) args); > > break; > > > > +#ifdef CONFIG_PPC64 > > + case OCXL_IOCTL_ENABLE_P9_WAIT: -> > + rc = afu_ioctl_enable_p9_wait(ctx, +> > + rc =3D afu_ioctl_enable_p9_wait(ctx, > > + (struct ocxl_ioctl_p9_wait __user *) args); > > + break; > > +#endif > > + > > default: -> > rc = -EINVAL; +> > rc =3D -EINVAL; > > } -> > diff --git a/drivers/misc/ocxl/link.c b/drivers/misc/ocxl/link.c index +> > diff --git a/drivers/misc/ocxl/link.c b/drivers/misc/ocxl/link.c = +index > > 656e8610eec2..88876ae8f330 100644 > > --- a/drivers/misc/ocxl/link.c > > +++ b/drivers/misc/ocxl/link.c -> > @@ -544,6 +544,42 @@ int ocxl_link_add_pe(void *link_handle, int pasid, +> > @@ -544,6 +544,42 @@ int ocxl_link_add_pe(void *link_handle, int = +pasid, > u32 pidr, u32 tidr, > > } > > EXPORT_SYMBOL_GPL(ocxl_link_add_pe); > > > > +int ocxl_link_update_pe(void *link_handle, int pasid, __u16 tid) { -> > + struct link *link = (struct link *) link_handle; -> > + struct spa *spa = link->spa; +> > + struct link *link =3D (struct link *) link_handle; +> > + struct spa *spa =3D link->spa; > > + struct ocxl_process_element *pe; > > + int pe_handle, rc; > > + > > + if (pasid > SPA_PASID_MAX) > > + return -EINVAL; > > + -> > + pe_handle = pasid & SPA_PE_MASK; -> > + pe = spa->spa_mem + pe_handle; +> > + pe_handle =3D pasid & SPA_PE_MASK; +> > + pe =3D spa->spa_mem + pe_handle; > > + > > + mutex_lock(&spa->spa_lock); > > + -> > + pe->tid = tid; +> > + pe->tid =3D tid; > > + > > + /* > > + * The barrier makes sure the PE is updated @@ -203,7 +219,7 @@ No strong reason, just trying to minimise the amount of changes. We can always e > > + * On powerpc, the entry needs to be cleared from the context > > + * cache of the NPU. > > + */ -> > + rc = pnv_ocxl_spa_remove_pe_from_cache(link->platform_data, +> > + rc =3D pnv_ocxl_spa_remove_pe_from_cache(link->platform_data, > pe_handle); > > + WARN_ON(rc); > > + @@ -213,7 +229,7 @@ No strong reason, just trying to minimise the amount of changes. We can always e > > + > > int ocxl_link_remove_pe(void *link_handle, int pasid) > > { -> > struct link *link = (struct link *) link_handle; diff --git +> > struct link *link =3D (struct link *) link_handle; diff --git > > a/drivers/misc/ocxl/ocxl_internal.h > > b/drivers/misc/ocxl/ocxl_internal.h > > index 5d421824afd9..a32f2151029f 100644 @@ -231,7 +247,8 @@ No strong reason, just trying to minimise the amount of changes. We can always e > > 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 +> > @@ -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); @@ -245,9 +262,11 @@ No strong reason, just trying to minimise the amount of changes. We can always e > > +ocxl_link_update_pe(void *link_handle, int pasid, __u16 tid); > > + > > /* -> > * Remove a Process Element from the Shared Process Area for a link +> > * Remove a Process Element from the Shared Process Area for a = +link > > */ -> > diff --git a/include/uapi/misc/ocxl.h b/include/uapi/misc/ocxl.h index +> > diff --git a/include/uapi/misc/ocxl.h b/include/uapi/misc/ocxl.h = +index > > 0af83d80fb3e..561e6f0dfcb7 100644 > > --- a/include/uapi/misc/ocxl.h > > +++ b/include/uapi/misc/ocxl.h @@ -276,14 +295,8 @@ No strong reason, just trying to minimise the amount of changes. We can always e > > > > #endif /* _UAPI_MISC_OCXL_H */ > > -> -> +>=20 +>=20 > --- > This email has been checked for viruses by AVG. > http://www.avg.com - - --- -To unsubscribe from this list: send the line "unsubscribe linux-doc" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/a/content_digest b/N1/content_digest index 289bec6..21f8ea5 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -28,7 +28,8 @@ "> -----Original Message-----\n" "> From: Frederic Barrat <fbarrat@linux.ibm.com>\n" "> Sent: Friday, 11 May 2018 7:25 PM\n" - "> To: Alastair D'Silva <alastair@au1.ibm.com>; linuxppc-dev@lists.ozlabs.org\n" + "> To: Alastair D'Silva <alastair@au1.ibm.com>; =\n" + "linuxppc-dev@lists.ozlabs.org\n" "> Cc: linux-kernel@vger.kernel.org; linux-doc@vger.kernel.org;\n" "> mikey@neuling.org; vaibhav@linux.vnet.ibm.com;\n" "> aneesh.kumar@linux.vnet.ibm.com; malat@debian.org;\n" @@ -37,50 +38,59 @@ "> gregkh@linuxfoundation.org; arnd@arndb.de;\n" "> andrew.donnellan@au1.ibm.com; fbarrat@linux.vnet.ibm.com;\n" "> corbet@lwn.net; Alastair D'Silva <alastair@d-silva.org>\n" - "> Subject: Re: [PATCH v5 5/7] ocxl: Expose the thread_id needed for wait on\n" + "> Subject: Re: [PATCH v5 5/7] ocxl: Expose the thread_id needed for wait =\n" + "on\n" "> POWER9\n" - "> \n" - "> \n" - "> \n" - "> Le 11/05/2018 \303\240 08:13, Alastair D'Silva a \303\251crit :\n" + ">=20\n" + ">=20\n" + ">=20\n" + "> Le 11/05/2018 =C3=A0 08:13, Alastair D'Silva a =C3=A9crit :\n" "> > From: Alastair D'Silva <alastair@d-silva.org>\n" "> >\n" - "> > In order to successfully issue as_notify, an AFU needs to know the TID\n" + "> > In order to successfully issue as_notify, an AFU needs to know the =\n" + "TID\n" "> > to notify, which in turn means that this information should be\n" "> > available in userspace so it can be communicated to the AFU.\n" "> >\n" "> > Signed-off-by: Alastair D'Silva <alastair@d-silva.org>\n" "> > ---\n" - "> \n" - "> Ok, so we keep the limitation of having only one thread per context able to\n" - "> call 'wait', even though we don't have to worry about depleting the pool of\n" - "> TIDs any more. I think that's acceptable, though we don't really have a reason\n" + ">=20\n" + "> Ok, so we keep the limitation of having only one thread per context =\n" + "able to\n" + "> call 'wait', even though we don't have to worry about depleting the =\n" + "pool of\n" + "> TIDs any more. I think that's acceptable, though we don't really have =\n" + "a reason\n" "> to justify it any more. Any reason you want to keep it that way?\n" - "> \n" + ">=20\n" "\n" - "No strong reason, just trying to minimise the amount of changes. We can always expand the scope later, if we have a use-case for it.\n" + "No strong reason, just trying to minimise the amount of changes. We can =\n" + "always expand the scope later, if we have a use-case for it.\n" "\n" "> Fred\n" - "> \n" - "> \n" + ">=20\n" + ">=20\n" "> > drivers/misc/ocxl/context.c | 5 ++-\n" - "> > drivers/misc/ocxl/file.c | 53 +++++++++++++++++++++++++++++++\n" + "> > drivers/misc/ocxl/file.c | 53 =\n" + "+++++++++++++++++++++++++++++++\n" "> > drivers/misc/ocxl/link.c | 36 +++++++++++++++++++++\n" "> > drivers/misc/ocxl/ocxl_internal.h | 1 +\n" "> > include/misc/ocxl.h | 9 ++++++\n" "> > include/uapi/misc/ocxl.h | 8 +++++\n" "> > 6 files changed, 111 insertions(+), 1 deletion(-)\n" "> >\n" - "> > diff --git a/drivers/misc/ocxl/context.c b/drivers/misc/ocxl/context.c\n" + "> > diff --git a/drivers/misc/ocxl/context.c =\n" + "b/drivers/misc/ocxl/context.c\n" "> > index 909e8807824a..95f74623113e 100644\n" "> > --- a/drivers/misc/ocxl/context.c\n" "> > +++ b/drivers/misc/ocxl/context.c\n" - "> > @@ -34,6 +34,8 @@ int ocxl_context_init(struct ocxl_context *ctx, struct\n" + "> > @@ -34,6 +34,8 @@ int ocxl_context_init(struct ocxl_context *ctx, =\n" + "struct\n" "> ocxl_afu *afu,\n" "> > \tmutex_init(&ctx->xsl_error_lock);\n" "> > \tmutex_init(&ctx->irq_lock);\n" "> > \tidr_init(&ctx->irq_idr);\n" - "> > +\tctx->tidr = 0;\n" + "> > +\tctx->tidr =3D 0;\n" "> > +\n" "> > \t/*\n" "> > \t * Keep a reference on the AFU to make sure it's valid for the\n" @@ -91,20 +101,22 @@ "> >\n" "> > +\t// Locks both status & tidr\n" "> > \tmutex_lock(&ctx->status_mutex);\n" - "> > \tif (ctx->status != OPENED) {\n" - "> > \t\trc = -EIO;\n" - "> > @@ -72,7 +75,7 @@ int ocxl_context_attach(struct ocxl_context *ctx, u64\n" + "> > \tif (ctx->status !=3D OPENED) {\n" + "> > \t\trc =3D -EIO;\n" + "> > @@ -72,7 +75,7 @@ int ocxl_context_attach(struct ocxl_context *ctx, =\n" + "u64\n" "> amr)\n" "> > \t}\n" "> >\n" - "> > \trc = ocxl_link_add_pe(ctx->afu->fn->link, ctx->pasid,\n" + "> > \trc =3D ocxl_link_add_pe(ctx->afu->fn->link, ctx->pasid,\n" "> > -\t\t\tcurrent->mm->context.id, 0, amr, current->mm,\n" "> > +\t\t\tcurrent->mm->context.id, ctx->tidr, amr, current-\n" "> >mm,\n" "> > \t\t\txsl_fault_error, ctx);\n" "> > \tif (rc)\n" "> > \t\tgoto out;\n" - "> > diff --git a/drivers/misc/ocxl/file.c b/drivers/misc/ocxl/file.c index\n" + "> > diff --git a/drivers/misc/ocxl/file.c b/drivers/misc/ocxl/file.c =\n" + "index\n" "> > 038509e5d031..eb409a469f21 100644\n" "> > --- a/drivers/misc/ocxl/file.c\n" "> > +++ b/drivers/misc/ocxl/file.c\n" @@ -138,22 +150,22 @@ "> > +\t\t\tif (set_thread_tidr(current))\n" "> > +\t\t\t\treturn -ENOENT;\n" "> > +\n" - "> > +\t\t\tctx->tidr = current->thread.tidr;\n" + "> > +\t\t\tctx->tidr =3D current->thread.tidr;\n" "> > +\t\t}\n" "> > +\n" - "> > +\t\tstatus = ctx->status;\n" + "> > +\t\tstatus =3D ctx->status;\n" "> > +\t\tmutex_unlock(&ctx->status_mutex);\n" "> > +\n" - "> > +\t\tif (status == ATTACHED) {\n" + "> > +\t\tif (status =3D=3D ATTACHED) {\n" "> > +\t\t\tint rc;\n" - "> > +\t\t\tstruct link *link = ctx->afu->fn->link;\n" + "> > +\t\t\tstruct link *link =3D ctx->afu->fn->link;\n" "> > +\n" - "> > +\t\t\trc = ocxl_link_update_pe(link, ctx->pasid, ctx->tidr);\n" + "> > +\t\t\trc =3D ocxl_link_update_pe(link, ctx->pasid, ctx->tidr);\n" "> > +\t\t\tif (rc)\n" "> > +\t\t\t\treturn rc;\n" "> > +\t\t}\n" "> > +\n" - "> > +\t\targ.thread_id = ctx->tidr;\n" + "> > +\t\targ.thread_id =3D ctx->tidr;\n" "> > +\t} else\n" "> > +\t\treturn -ENOENT;\n" "> > +\n" @@ -164,58 +176,62 @@ "> > +}\n" "> > +#endif\n" "> > +\n" - "> > #define CMD_STR(x) (x == OCXL_IOCTL_ATTACH ? \"ATTACH\" :\n" + "> > #define CMD_STR(x) (x =3D=3D OCXL_IOCTL_ATTACH ? \"ATTACH\" :\n" "> \t\t\\\n" - "> > \t\t\tx == OCXL_IOCTL_IRQ_ALLOC ? \"IRQ_ALLOC\" :\t\\\n" - "> > \t\t\tx == OCXL_IOCTL_IRQ_FREE ? \"IRQ_FREE\" :\n" + "> > \t\t\tx =3D=3D OCXL_IOCTL_IRQ_ALLOC ? \"IRQ_ALLOC\" :\t\\\n" + "> > \t\t\tx =3D=3D OCXL_IOCTL_IRQ_FREE ? \"IRQ_FREE\" :\n" "> \t\\\n" - "> > \t\t\tx == OCXL_IOCTL_IRQ_SET_FD ? \"IRQ_SET_FD\" :\n" + "> > \t\t\tx =3D=3D OCXL_IOCTL_IRQ_SET_FD ? \"IRQ_SET_FD\" :\n" "> \t\\\n" - "> > \t\t\tx == OCXL_IOCTL_GET_METADATA ?\n" + "> > \t\t\tx =3D=3D OCXL_IOCTL_GET_METADATA ?\n" "> \"GET_METADATA\" :\t\\\n" - "> > +\t\t\tx == OCXL_IOCTL_ENABLE_P9_WAIT ?\n" + "> > +\t\t\tx =3D=3D OCXL_IOCTL_ENABLE_P9_WAIT ?\n" "> \"ENABLE_P9_WAIT\" :\t\\\n" "> > \t\t\t\"UNKNOWN\")\n" "> >\n" - "> > static long afu_ioctl(struct file *file, unsigned int cmd, @@ -186,6\n" - "> > +232,13 @@ static long afu_ioctl(struct file *file, unsigned int cmd,\n" + "> > static long afu_ioctl(struct file *file, unsigned int cmd, @@ =\n" + "-186,6\n" + "> > +232,13 @@ static long afu_ioctl(struct file *file, unsigned int =\n" + "cmd,\n" "> > \t\t\t\t(struct ocxl_ioctl_metadata __user *) args);\n" "> > \t\tbreak;\n" "> >\n" "> > +#ifdef CONFIG_PPC64\n" "> > +\tcase OCXL_IOCTL_ENABLE_P9_WAIT:\n" - "> > +\t\trc = afu_ioctl_enable_p9_wait(ctx,\n" + "> > +\t\trc =3D afu_ioctl_enable_p9_wait(ctx,\n" "> > +\t\t\t\t(struct ocxl_ioctl_p9_wait __user *) args);\n" "> > +\t\tbreak;\n" "> > +#endif\n" "> > +\n" "> > \tdefault:\n" - "> > \t\trc = -EINVAL;\n" + "> > \t\trc =3D -EINVAL;\n" "> > \t}\n" - "> > diff --git a/drivers/misc/ocxl/link.c b/drivers/misc/ocxl/link.c index\n" + "> > diff --git a/drivers/misc/ocxl/link.c b/drivers/misc/ocxl/link.c =\n" + "index\n" "> > 656e8610eec2..88876ae8f330 100644\n" "> > --- a/drivers/misc/ocxl/link.c\n" "> > +++ b/drivers/misc/ocxl/link.c\n" - "> > @@ -544,6 +544,42 @@ int ocxl_link_add_pe(void *link_handle, int pasid,\n" + "> > @@ -544,6 +544,42 @@ int ocxl_link_add_pe(void *link_handle, int =\n" + "pasid,\n" "> u32 pidr, u32 tidr,\n" "> > }\n" "> > EXPORT_SYMBOL_GPL(ocxl_link_add_pe);\n" "> >\n" "> > +int ocxl_link_update_pe(void *link_handle, int pasid, __u16 tid) {\n" - "> > +\tstruct link *link = (struct link *) link_handle;\n" - "> > +\tstruct spa *spa = link->spa;\n" + "> > +\tstruct link *link =3D (struct link *) link_handle;\n" + "> > +\tstruct spa *spa =3D link->spa;\n" "> > +\tstruct ocxl_process_element *pe;\n" "> > +\tint pe_handle, rc;\n" "> > +\n" "> > +\tif (pasid > SPA_PASID_MAX)\n" "> > +\t\treturn -EINVAL;\n" "> > +\n" - "> > +\tpe_handle = pasid & SPA_PE_MASK;\n" - "> > +\tpe = spa->spa_mem + pe_handle;\n" + "> > +\tpe_handle =3D pasid & SPA_PE_MASK;\n" + "> > +\tpe =3D spa->spa_mem + pe_handle;\n" "> > +\n" "> > +\tmutex_lock(&spa->spa_lock);\n" "> > +\n" - "> > +\tpe->tid = tid;\n" + "> > +\tpe->tid =3D tid;\n" "> > +\n" "> > +\t/*\n" "> > +\t * The barrier makes sure the PE is updated\n" @@ -229,7 +245,7 @@ "> > +\t * On powerpc, the entry needs to be cleared from the context\n" "> > +\t * cache of the NPU.\n" "> > +\t */\n" - "> > +\trc = pnv_ocxl_spa_remove_pe_from_cache(link->platform_data,\n" + "> > +\trc =3D pnv_ocxl_spa_remove_pe_from_cache(link->platform_data,\n" "> pe_handle);\n" "> > +\tWARN_ON(rc);\n" "> > +\n" @@ -239,7 +255,7 @@ "> > +\n" "> > int ocxl_link_remove_pe(void *link_handle, int pasid)\n" "> > {\n" - "> > \tstruct link *link = (struct link *) link_handle; diff --git\n" + "> > \tstruct link *link =3D (struct link *) link_handle; diff --git\n" "> > a/drivers/misc/ocxl/ocxl_internal.h\n" "> > b/drivers/misc/ocxl/ocxl_internal.h\n" "> > index 5d421824afd9..a32f2151029f 100644\n" @@ -257,7 +273,8 @@ "> > 51ccf76db293..9ff6ddc28e22 100644\n" "> > --- a/include/misc/ocxl.h\n" "> > +++ b/include/misc/ocxl.h\n" - "> > @@ -188,6 +188,15 @@ extern int ocxl_link_add_pe(void *link_handle, int\n" + "> > @@ -188,6 +188,15 @@ extern int ocxl_link_add_pe(void *link_handle, =\n" + "int\n" "> pasid, u32 pidr, u32 tidr,\n" "> > \t\tvoid (*xsl_err_cb)(void *data, u64 addr, u64 dsisr),\n" "> > \t\tvoid *xsl_err_data);\n" @@ -271,9 +288,11 @@ "> > +ocxl_link_update_pe(void *link_handle, int pasid, __u16 tid);\n" "> > +\n" "> > /*\n" - "> > * Remove a Process Element from the Shared Process Area for a link\n" + "> > * Remove a Process Element from the Shared Process Area for a =\n" + "link\n" "> > */\n" - "> > diff --git a/include/uapi/misc/ocxl.h b/include/uapi/misc/ocxl.h index\n" + "> > diff --git a/include/uapi/misc/ocxl.h b/include/uapi/misc/ocxl.h =\n" + "index\n" "> > 0af83d80fb3e..561e6f0dfcb7 100644\n" "> > --- a/include/uapi/misc/ocxl.h\n" "> > +++ b/include/uapi/misc/ocxl.h\n" @@ -302,16 +321,10 @@ "> >\n" "> > #endif /* _UAPI_MISC_OCXL_H */\n" "> >\n" - "> \n" - "> \n" + ">=20\n" + ">=20\n" "> ---\n" "> This email has been checked for viruses by AVG.\n" - "> http://www.avg.com\n" - "\n" - "\n" - "--\n" - "To unsubscribe from this list: send the line \"unsubscribe linux-doc\" in\n" - "the body of a message to majordomo@vger.kernel.org\n" - More majordomo info at http://vger.kernel.org/majordomo-info.html + > http://www.avg.com -5f79c737dcb50a923a5537e8650130fd98e457017c93e681324f0512e69ec1f0 +e627c37dc179f1af3ea7c09305be56540ef3e86c50079d07603814c97d2070cc
diff --git a/a/1.txt b/N2/1.txt index c8de314..5fe4e73 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -281,9 +281,3 @@ No strong reason, just trying to minimise the amount of changes. We can always e > --- > This email has been checked for viruses by AVG. > http://www.avg.com - - --- -To unsubscribe from this list: send the line "unsubscribe linux-doc" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/a/content_digest b/N2/content_digest index 289bec6..eb9b2eb 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -306,12 +306,6 @@ "> \n" "> ---\n" "> This email has been checked for viruses by AVG.\n" - "> http://www.avg.com\n" - "\n" - "\n" - "--\n" - "To unsubscribe from this list: send the line \"unsubscribe linux-doc\" in\n" - "the body of a message to majordomo@vger.kernel.org\n" - More majordomo info at http://vger.kernel.org/majordomo-info.html + > http://www.avg.com -5f79c737dcb50a923a5537e8650130fd98e457017c93e681324f0512e69ec1f0 +4c305b0278f7bd05ccbc4848d74e22844aa71774ed1b827ee3b0983c2492d0be
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.