On 7/13/22 13:54, Víctor Colombo wrote:
This patch series implements the 4 instructions added in Power ISA 3.1B: - hashchk - hashst - hashchkp - hashstp To build it, you need to apply the following patches on top of master: <20220701133507.740619-2-lucas.couti...@eldorado.org.br> <20220701133507.740619-3-lucas.couti...@eldorado.org.br> <20220712193741.59134-2-leandro.lup...@eldorado.org.br> <20220712193741.59134-3-leandro.lup...@eldorado.org.br> Working branch for ease of use can be found here: https://github.com/PPC64/qemu/tree/vccolombo-hash-to-send-v3 What do you think about the choice to implement the hash algorithm from the ground up, following the SIMON-like algorithm presented in Power ISA? IIUC, this algorithm is not the same as the original[1]. Other options would be to use other algorithm already implemented in QEMU, or even make this instruction a nop for all Power versions. Also, I was thinking about using the call to spr_register_kvm() in init_proc_POWER10 to initialize the registers with a random value. I'm not sure what is the behavior here, I would expect that is the job of the OS to set the regs, but looks like KVM is not exporting them, so they are always 0 (?). Does anyone have any insight on this?
This happens because KVM on POWER10 isn't handling these registers appropriately. We are probably missing kernel/kvm code to do so. Since KVM on POWER10 is on an uncertain spot at this moment I wouldn't worry too much about it. Making the regs read/write work in TCG is good enough for now. Daniel
v1->v2: - Split the patch in 2 - Rebase to master v2->v3: - Split patches in 3 - the new patch (patch 1) is separating the kvm header changes [Cornelia] [1] https://eprint.iacr.org/2013/404.pdf Víctor Colombo (3): linux-headers/asm-powerpc/kvm.h: Add HASHKEYR and HASHPKEYR in headers target/ppc: Implement hashst and hashchk target/ppc: Implement hashstp and hashchkp linux-headers/asm-powerpc/kvm.h | 3 + target/ppc/cpu.h | 2 + target/ppc/cpu_init.c | 7 ++ target/ppc/excp_helper.c | 82 ++++++++++++++++++++++ target/ppc/helper.h | 4 ++ target/ppc/insn32.decode | 10 +++ target/ppc/translate.c | 5 ++ target/ppc/translate/fixedpoint-impl.c.inc | 34 +++++++++ 8 files changed, 147 insertions(+)