Applied Nick's suggestions and added a new patch for the Cause bits issue. I'm thinking maybe the approach of crashing L1 when L2 tries to access a facility that L0 has denied is too heavy-handed. But on the other hand, if L1 were to access the facility itself, the same thing would happen and L2 runs "inside of L1" in a sense. Currently, both L0 and L1s handle only msgsndp. All other HV Facility Unavailable causes are already met with a Program interrupt. Changes since v2: - removed the sanitise functions - moved the entry code into a new load_l2_hv_regs and the exit code into the existing save_hv_return_state - new patch: removes the cause bits when L0 has disabled the corresponding facility v2: - made the change more generic, not only applies to hfscr anymore; - sanitisation is now done directly on the vcpu struct, l2_hv is left unchanged; https://lkml.kernel.org/r/20210406214645.3315819-1-farosas@xxxxxxxxxxxxx v1: https://lkml.kernel.org/r/20210305231055.2913892-1-farosas@xxxxxxxxxxxxx Fabiano Rosas (2): KVM: PPC: Book3S HV: Sanitise vcpu registers in nested path KVM: PPC: Book3S HV: Stop forwarding all HFSCR cause bits to L1 arch/powerpc/kvm/book3s_hv_nested.c | 72 ++++++++++++++++++++--------- 1 file changed, 51 insertions(+), 21 deletions(-) -- 2.29.2