linux-crypto.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  reply	other threads:[~2020-03-23 12:15 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 \
    --subject='Re: [PATCH v4 3/9] powerpc/vas: Add VAS user space API' \
    /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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).