Re: [PATCH v1 13/26] s390: Introduce read/write ARM sysreg instructions
From: Janosch Frank
Date: Wed Jun 10 2026 - 05:11:55 EST
On 6/10/26 10:30, Steffen Eiden wrote:
On Tue, Jun 09, 2026 at 05:04:10PM +0200, Janosch Frank wrote:
On 5/29/26 17:55, Steffen Eiden wrote:
Introduce Extract Arm System Register and Store Arm System Register to
enable s390 hosts to read and write system registers for arm64 guests.
The new instructions use the new RIE_H instruction format. Add assembler
macros to create instructions in RIE_H format manually. Add Support for
disassembling the new instructions.
Co-developed-by: Andreas Grapentin <gra@xxxxxxxxxxxxx>
Signed-off-by: Andreas Grapentin <gra@xxxxxxxxxxxxx>
Signed-off-by: Steffen Eiden <seiden@xxxxxxxxxxxxx>
---
arch/s390/include/asm/sae-asm.h | 48 +++++++++++++++++++++++++++
arch/s390/include/asm/sae.h | 58 +++++++++++++++++++++++++++++++++
arch/s390/kernel/dis.c | 1 +
arch/s390/tools/opcodes.txt | 2 ++
4 files changed, 109 insertions(+)
create mode 100644 arch/s390/include/asm/sae-asm.h
[...]
+ * sasr() - Set Arm System Register
+ * @arm_reg: ARM system register identifier; compile-time constant
+ * @val: Value to set
+ * @save_area: Pointer to SAE save area
+ * @flags: Operation flags; compile-time constant
+ *
+ * Sets an ARM system register value.
+ */
+static __always_inline void sasr(unsigned int arm_reg, u64 val,
+ struct kvm_sae_save_area *save_area,
+ u64 flags)
m4 is 4 bits in length, any reason why we use a u64 here?
Same for easr.
No real reason beside my preference of using u64 by default.
Do you want me to change it to u8?
Yes, that makes the potential problem a bit smaller but also:
Since we go through our macro magic I'm not sure if the compiler would complain about values over 4 bits. Did you check for that and if not please do check now.
If it does not complain we need a compile time check. Well maybe we should have one either way until the instruction format is available in compilers just to be safe.
@Christian: Thoughts?