From: Michael Ellerman <mpe@ellerman.id.au>
To: Daniel Axtens <dja@axtens.net>,
Haren Myneni <haren@linux.ibm.com>,
herbert@gondor.apana.org.au
Cc: mikey@neuling.org, sukadev@linux.vnet.ibm.com,
linuxppc-dev@lists.ozlabs.org, linux-crypto@vger.kernel.org,
npiggin@gmail.com
Subject: Re: [PATCH v4 3/9] powerpc/vas: Add VAS user space API
Date: Mon, 23 Mar 2020 23:15:48 +1100 [thread overview]
Message-ID: <878sjrclmz.fsf@mpe.ellerman.id.au> (raw)
In-Reply-To: <878sjrwm72.fsf@dja-thinkpad.axtens.net>
Daniel Axtens <dja@axtens.net> writes:
> Haren Myneni <haren@linux.ibm.com> writes:
>
>> On power9, userspace can send GZIP compression requests directly to NX
>> once kernel establishes NX channel / window with VAS. This patch provides
>> user space API which allows user space to establish channel using open
>> VAS_TX_WIN_OPEN ioctl, mmap and close operations.
>>
>> Each window corresponds to file descriptor and application can open
>> multiple windows. After the window is opened, VAS_TX_WIN_OPEN icoctl to
>> open a window on specific VAS instance, mmap() system call to map
>> the hardware address of engine's request queue into the application's
>> virtual address space.
>>
>> Then the application can then submit one or more requests to the the
>> engine by using the copy/paste instructions and pasting the CRBs to
>> the virtual address (aka paste_address) returned by mmap().
>>
>> Only NX GZIP coprocessor type is supported right now and allow GZIP
>> engine access via /dev/crypto/nx-gzip device node.
>>
>> Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
>> Signed-off-by: Haren Myneni <haren@linux.ibm.com>
>> ---
>> arch/powerpc/include/asm/vas.h | 11 ++
>> arch/powerpc/platforms/powernv/Makefile | 2 +-
>> arch/powerpc/platforms/powernv/vas-api.c | 257 ++++++++++++++++++++++++++++
>> arch/powerpc/platforms/powernv/vas-window.c | 6 +-
>> arch/powerpc/platforms/powernv/vas.h | 2 +
>> 5 files changed, 274 insertions(+), 4 deletions(-)
>> create mode 100644 arch/powerpc/platforms/powernv/vas-api.c
>>
>> diff --git a/arch/powerpc/include/asm/vas.h b/arch/powerpc/include/asm/vas.h
>> index f93e6b0..e064953 100644
>> --- a/arch/powerpc/include/asm/vas.h
>> +++ b/arch/powerpc/include/asm/vas.h
>> @@ -163,4 +163,15 @@ struct vas_window *vas_tx_win_open(int vasid, enum vas_cop_type cop,
>> */
>> int vas_paste_crb(struct vas_window *win, int offset, bool re);
>>
>> +/*
>> + * Register / unregister coprocessor type to VAS API which will be exported
>> + * to user space. Applications can use this API to open / close window
>> + * which can be used to send / receive requests directly to cooprcessor.
>> + *
>> + * Only NX GZIP coprocessor type is supported now, but this API can be
>> + * used for others in future.
>> + */
>> +int vas_register_coproc_api(struct module *mod);
>> +void vas_unregister_coproc_api(void);
>> +
>> #endif /* __ASM_POWERPC_VAS_H */
>> diff --git a/arch/powerpc/platforms/powernv/Makefile b/arch/powerpc/platforms/powernv/Makefile
>> index 395789f..fe3f0fb 100644
>> --- a/arch/powerpc/platforms/powernv/Makefile
>> +++ b/arch/powerpc/platforms/powernv/Makefile
>> @@ -17,7 +17,7 @@ obj-$(CONFIG_MEMORY_FAILURE) += opal-memory-errors.o
>> obj-$(CONFIG_OPAL_PRD) += opal-prd.o
>> obj-$(CONFIG_PERF_EVENTS) += opal-imc.o
>> obj-$(CONFIG_PPC_MEMTRACE) += memtrace.o
>> -obj-$(CONFIG_PPC_VAS) += vas.o vas-window.o vas-debug.o vas-fault.o
>> +obj-$(CONFIG_PPC_VAS) += vas.o vas-window.o vas-debug.o vas-fault.o vas-api.o
>> obj-$(CONFIG_OCXL_BASE) += ocxl.o
>> obj-$(CONFIG_SCOM_DEBUGFS) += opal-xscom.o
>> obj-$(CONFIG_PPC_SECURE_BOOT) += opal-secvar.o
>> diff --git a/arch/powerpc/platforms/powernv/vas-api.c b/arch/powerpc/platforms/powernv/vas-api.c
>> new file mode 100644
>> index 0000000..7d049af
>> --- /dev/null
>> +++ b/arch/powerpc/platforms/powernv/vas-api.c
>> @@ -0,0 +1,257 @@
...
>> +
>> +static int coproc_mmap(struct file *fp, struct vm_area_struct *vma)
>> +{
>> + struct vas_window *txwin = fp->private_data;
>> + unsigned long pfn;
>> + u64 paste_addr;
>> + pgprot_t prot;
>> + int rc;
>> +
>> + if ((vma->vm_end - vma->vm_start) > PAGE_SIZE) {
>
> I think you said this should be 4096 rather than 64k, regardless of what
> PAGE_SIZE you are compiled with?
You can't mmap less than a page, a page is PAGE_SIZE bytes.
So if that checked for 4K explicitly it would prevent mmap on 64K
kernels always, which seems like not what you want?
cheers
next prev parent reply other threads:[~2020-03-23 12:18 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-23 3:41 [PATCH v4 0/9] crypto/nx: Enable GZIP engine and provide userpace API Haren Myneni
2020-03-23 4:00 ` [PATCH v4 1/9] powerpc/vas: Initialize window attributes for GZIP coprocessor type Haren Myneni
2020-03-23 4:01 ` [PATCH v4 2/9] powerpc/vas: Define VAS_TX_WIN_OPEN ioctl API Haren Myneni
2020-03-23 4:02 ` [PATCH v4 3/9] powerpc/vas: Add VAS user space API Haren Myneni
2020-03-23 7:43 ` Daniel Axtens
2020-03-23 12:15 ` Michael Ellerman [this message]
2020-03-23 13:32 ` Daniel Axtens
2020-03-24 3:41 ` Michael Ellerman
2020-03-25 3:48 ` Haren Myneni
2020-03-23 4:03 ` [PATCH v4 4/9] crypto/nx: Initialize coproc entry with kzalloc Haren Myneni
2020-03-23 6:30 ` Herbert Xu
2020-03-23 4:03 ` [PATCH v4 5/9] crypto/nx: Rename nx-842-powernv file name to nx-common-powernv Haren Myneni
2020-03-23 6:31 ` Herbert Xu
2020-03-23 4:04 ` [PATCH v4 6/9] crypto/NX: Make enable code generic to add new GZIP compression type Haren Myneni
2020-03-23 6:31 ` Herbert Xu
2020-03-23 4:05 ` [PATCH v4 7/9] crypto/nx: Enable and setup " Haren Myneni
2020-03-23 6:31 ` Herbert Xu
2020-03-23 4:06 ` [PATCH v4 8/9] crypto/nx: Remove 'pid' in vas_tx_win_attr struct Haren Myneni
2020-03-23 6:31 ` Herbert Xu
2020-03-23 4:06 ` [PATCH v4 9/9] Documentation/powerpc: VAS API Haren Myneni
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=878sjrclmz.fsf@mpe.ellerman.id.au \
--to=mpe@ellerman.id.au \
--cc=dja@axtens.net \
--cc=haren@linux.ibm.com \
--cc=herbert@gondor.apana.org.au \
--cc=linux-crypto@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mikey@neuling.org \
--cc=npiggin@gmail.com \
--cc=sukadev@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox