[Qemu-devel] [PATCH v3 0/3] Implement basic MSA functions

David Hildenbrand posted 3 patches 6 years, 7 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170920153016.3858-1-david@redhat.com
Test checkpatch passed
Test docker passed
Test s390x passed
target/s390x/Makefile.objs   |  2 +-
target/s390x/cpu.h           |  2 ++
target/s390x/cpu_models.c    |  4 +++
target/s390x/crypto_helper.c | 65 ++++++++++++++++++++++++++++++++++++++++++
target/s390x/helper.h        |  1 +
target/s390x/insn-data.def   | 15 ++++++++++
target/s390x/internal.h      | 14 +++++++++
target/s390x/mem_helper.c    | 14 ---------
target/s390x/translate.c     | 67 ++++++++++++++++++++++++++++++++++++++++++++
9 files changed, 169 insertions(+), 15 deletions(-)
create mode 100644 target/s390x/crypto_helper.c
[Qemu-devel] [PATCH v3 0/3] Implement basic MSA functions
Posted by David Hildenbrand 6 years, 7 months ago
Some leftover from "target/s390x: tcg improvments + MSA functions".

Implement all basic MSA (cpacf/crypto) instructions <= z13. Only provide
the query subfunction (to query available subfunctions), no actual
de/encryption yet. Good enough to unlock the STFL bits.

I have written kvm-unit-tests for MSA functions and for SPM/IPM. Will
send them out soon. I use the following cpu model to test with an upstream
kernel compiled for z10:

... -cpu qemu,mvcos=on,stfle=on,ldisp=on,ldisphp=on,\
              eimm=on,stckf=on,csst=on,csst2=on,ginste=on,\
              exrl=on,msa-base=on,msa3-base=on,msa4-base=on,msa5-base=on ...

Available on: https://github.com/davidhildenbrand/qemu.git s390x-msa

v2 -> v3:
 - "s390x/tcg: add basic MSA features"
 -- drop one check (fc >= 128) that can due to masking never happen

v1 -> v2:
 - "s390x/tcg: implement spm (SET PROGRAM MASK)"
 -- use tcg_gen_extrl_i64_i32 + tcg_gen_extract_i32
 - "s390x/tcg: move wrap_address() to internal.h"
 -- internal.h instead of cpu.h
 - "s390x/tcg: add basic MSA features"
 -- minor style fixes


David Hildenbrand (3):
  s390x/tcg: implement spm (SET PROGRAM MASK)
  s390x/tcg: move wrap_address() to internal.h
  s390x/tcg: add basic MSA features

 target/s390x/Makefile.objs   |  2 +-
 target/s390x/cpu.h           |  2 ++
 target/s390x/cpu_models.c    |  4 +++
 target/s390x/crypto_helper.c | 65 ++++++++++++++++++++++++++++++++++++++++++
 target/s390x/helper.h        |  1 +
 target/s390x/insn-data.def   | 15 ++++++++++
 target/s390x/internal.h      | 14 +++++++++
 target/s390x/mem_helper.c    | 14 ---------
 target/s390x/translate.c     | 67 ++++++++++++++++++++++++++++++++++++++++++++
 9 files changed, 169 insertions(+), 15 deletions(-)
 create mode 100644 target/s390x/crypto_helper.c

-- 
2.13.5


Re: [Qemu-devel] [PATCH v3 0/3] Implement basic MSA functions
Posted by Cornelia Huck 6 years, 7 months ago
On Wed, 20 Sep 2017 17:30:13 +0200
David Hildenbrand <david@redhat.com> wrote:

> Some leftover from "target/s390x: tcg improvments + MSA functions".
> 
> Implement all basic MSA (cpacf/crypto) instructions <= z13. Only provide
> the query subfunction (to query available subfunctions), no actual
> de/encryption yet. Good enough to unlock the STFL bits.
> 
> I have written kvm-unit-tests for MSA functions and for SPM/IPM. Will
> send them out soon. I use the following cpu model to test with an upstream
> kernel compiled for z10:
> 
> ... -cpu qemu,mvcos=on,stfle=on,ldisp=on,ldisphp=on,\
>               eimm=on,stckf=on,csst=on,csst2=on,ginste=on,\
>               exrl=on,msa-base=on,msa3-base=on,msa4-base=on,msa5-base=on ...
> 
> Available on: https://github.com/davidhildenbrand/qemu.git s390x-msa

I used the following cpu model:

-cpu qemu,eimm=on,ldisp=on,stckf=on,msa-base=on,msa3-base=on,msa4-base=on,msa5-base=on

and got

qemu-system-s390x: warning: 'msa5-base' requires 'kimd-sha-512'.
qemu-system-s390x: warning: 'msa5-base' requires 'klmd-sha-512'.

(It works anyway.)

However,

-cpu qemu,eimm=on,ldisp=on,stckf=on,msa-base=on,msa3-base=on,msa4-base=on,msa5-base=on,kimd-sha-512=on

gives

qemu-system-s390x: can't apply global qemu-s390-cpu.kimd-sha-512=on: Feature 'kimd-sha-512' is not available for CPU model 'z900', it was introduced with later models.

which is a bit confusing.

So I'm wondering whether providing msa5-base without the providing the
algorithms above is sane - or whether it is just enough to satisfy some
kernels.

[Double-checking the various dependencies looks impossible without
access to IBM doc, anyway - I just hope you got it right back then :)]

Re: [Qemu-devel] [PATCH v3 0/3] Implement basic MSA functions
Posted by David Hildenbrand 6 years, 7 months ago
On 21.09.2017 10:23, Cornelia Huck wrote:
> On Wed, 20 Sep 2017 17:30:13 +0200
> David Hildenbrand <david@redhat.com> wrote:
> 
>> Some leftover from "target/s390x: tcg improvments + MSA functions".
>>
>> Implement all basic MSA (cpacf/crypto) instructions <= z13. Only provide
>> the query subfunction (to query available subfunctions), no actual
>> de/encryption yet. Good enough to unlock the STFL bits.
>>
>> I have written kvm-unit-tests for MSA functions and for SPM/IPM. Will
>> send them out soon. I use the following cpu model to test with an upstream
>> kernel compiled for z10:
>>
>> ... -cpu qemu,mvcos=on,stfle=on,ldisp=on,ldisphp=on,\
>>               eimm=on,stckf=on,csst=on,csst2=on,ginste=on,\
>>               exrl=on,msa-base=on,msa3-base=on,msa4-base=on,msa5-base=on ...
>>
>> Available on: https://github.com/davidhildenbrand/qemu.git s390x-msa
> 
> I used the following cpu model:
> 
> -cpu qemu,eimm=on,ldisp=on,stckf=on,msa-base=on,msa3-base=on,msa4-base=on,msa5-base=on
> 
> and got
> 
> qemu-system-s390x: warning: 'msa5-base' requires 'kimd-sha-512'.
> qemu-system-s390x: warning: 'msa5-base' requires 'klmd-sha-512'.
> 

Yes, I am aware of that and it is on my todo list. Shouldn't matter for
now as it is completely optional and not enabled as default.

> (It works anyway.)
> 
> However,
> 
> -cpu qemu,eimm=on,ldisp=on,stckf=on,msa-base=on,msa3-base=on,msa4-base=on,msa5-base=on,kimd-sha-512=on
> 
> gives
> 
> qemu-system-s390x: can't apply global qemu-s390-cpu.kimd-sha-512=on: Feature 'kimd-sha-512' is not available for CPU model 'z900', it was introduced with later models.
> 
> which is a bit confusing.

Due to the way we hack up the qemu cpu model, allowing to set features
that are theoretically not possible (just to have some way of enabling
them before we can change the qemu model to something never).

> 
> So I'm wondering whether providing msa5-base without the providing the
> algorithms above is sane - or whether it is just enough to satisfy some
> kernels.
> 
> [Double-checking the various dependencies looks impossible without
> access to IBM doc, anyway - I just hope you got it right back then :)]
> 

We can take care of that later (if at all relevant).

-- 

Thanks,

David

Re: [Qemu-devel] [PATCH v3 0/3] Implement basic MSA functions
Posted by Cornelia Huck 6 years, 7 months ago
On Wed, 20 Sep 2017 17:30:13 +0200
David Hildenbrand <david@redhat.com> wrote:

> Some leftover from "target/s390x: tcg improvments + MSA functions".
> 
> Implement all basic MSA (cpacf/crypto) instructions <= z13. Only provide
> the query subfunction (to query available subfunctions), no actual
> de/encryption yet. Good enough to unlock the STFL bits.
> 
> I have written kvm-unit-tests for MSA functions and for SPM/IPM. Will
> send them out soon. I use the following cpu model to test with an upstream
> kernel compiled for z10:
> 
> ... -cpu qemu,mvcos=on,stfle=on,ldisp=on,ldisphp=on,\
>               eimm=on,stckf=on,csst=on,csst2=on,ginste=on,\
>               exrl=on,msa-base=on,msa3-base=on,msa4-base=on,msa5-base=on ...
> 
> Available on: https://github.com/davidhildenbrand/qemu.git s390x-msa
> 
> v2 -> v3:
>  - "s390x/tcg: add basic MSA features"
>  -- drop one check (fc >= 128) that can due to masking never happen
> 
> v1 -> v2:
>  - "s390x/tcg: implement spm (SET PROGRAM MASK)"
>  -- use tcg_gen_extrl_i64_i32 + tcg_gen_extract_i32
>  - "s390x/tcg: move wrap_address() to internal.h"
>  -- internal.h instead of cpu.h
>  - "s390x/tcg: add basic MSA features"
>  -- minor style fixes
> 
> 
> David Hildenbrand (3):
>   s390x/tcg: implement spm (SET PROGRAM MASK)
>   s390x/tcg: move wrap_address() to internal.h
>   s390x/tcg: add basic MSA features
> 
>  target/s390x/Makefile.objs   |  2 +-
>  target/s390x/cpu.h           |  2 ++
>  target/s390x/cpu_models.c    |  4 +++
>  target/s390x/crypto_helper.c | 65 ++++++++++++++++++++++++++++++++++++++++++
>  target/s390x/helper.h        |  1 +
>  target/s390x/insn-data.def   | 15 ++++++++++
>  target/s390x/internal.h      | 14 +++++++++
>  target/s390x/mem_helper.c    | 14 ---------
>  target/s390x/translate.c     | 67 ++++++++++++++++++++++++++++++++++++++++++++
>  9 files changed, 169 insertions(+), 15 deletions(-)
>  create mode 100644 target/s390x/crypto_helper.c
> 

Thanks, applied.