Internal virtual machines can be used to sandbox code such as EFI Runtime Services. However, some implementations of those Runtime Services rely on handlers placed in the Secure World (e.g: SoftIron Overdrive 1000) and need access to SMC calls. This patch modifies the Hypervisor Configuration Register to avoid trapping SMC calls of internal virtual machines. Normal userspace VMs are not affected by this patch. Note: Letting Runtime Services VMs access EL3 without control can potentially be a security threat on its own. An alternative would be to forward SMC calls selectively from inside handle_smc. However, this would require some level of knowledge of the SMC calls arguments and EFI Runtime Services implementations. Signed-off-by: Florent Revest <florent.revest@xxxxxxx> --- arch/arm64/include/asm/kvm_emulate.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h index fe39e68..4b46cd0 100644 --- a/arch/arm64/include/asm/kvm_emulate.h +++ b/arch/arm64/include/asm/kvm_emulate.h @@ -49,6 +49,9 @@ static inline void vcpu_reset_hcr(struct kvm_vcpu *vcpu) vcpu->arch.hcr_el2 |= HCR_E2H; if (test_bit(KVM_ARM_VCPU_EL1_32BIT, vcpu->arch.features)) vcpu->arch.hcr_el2 &= ~HCR_RW; + + if (!vcpu->kvm->mm) + vcpu->arch.hcr_el2 &= ~HCR_TSC; } static inline unsigned long vcpu_get_hcr(struct kvm_vcpu *vcpu) -- 1.9.1 IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html