[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5c7f6092-9358-08ac-5341-2364637c2008@huawei.com>
Date: Tue, 28 Mar 2017 17:53:38 +0800
From: gengdongjiu <gengdongjiu@...wei.com>
To: Tyler Baicar <tbaicar@...eaurora.org>,
<christoffer.dall@...aro.org>, <marc.zyngier@....com>,
<pbonzini@...hat.com>, <rkrcmar@...hat.com>,
<linux@...linux.org.uk>, <catalin.marinas@....com>,
<will.deacon@....com>, <rjw@...ysocki.net>, <lenb@...nel.org>,
<matt@...eblueprint.co.uk>, <robert.moore@...el.com>,
<lv.zheng@...el.com>, <nkaje@...eaurora.org>,
<zjzhang@...eaurora.org>, <mark.rutland@....com>,
<james.morse@....com>, <akpm@...ux-foundation.org>,
<eun.taik.lee@...sung.com>, <sandeepa.s.prabhu@...il.com>,
<labbott@...hat.com>, <shijie.huang@....com>,
<rruigrok@...eaurora.org>, <paul.gortmaker@...driver.com>,
<tn@...ihalf.com>, <fu.wei@...aro.org>, <rostedt@...dmis.org>,
<bristot@...hat.com>, <linux-arm-kernel@...ts.infradead.org>,
<kvmarm@...ts.cs.columbia.edu>, <kvm@...r.kernel.org>,
<linux-kernel@...r.kernel.org>, <linux-acpi@...r.kernel.org>,
<linux-efi@...r.kernel.org>, <devel@...ica.org>,
<Suzuki.Poulose@....com>, <punit.agrawal@....com>,
<astone@...hat.com>, <harba@...eaurora.org>,
<hanjun.guo@...aro.org>, <john.garry@...wei.com>,
<shiju.jose@...wei.com>, <joe@...ches.com>,
<wuquanming@...wei.com>, <huangshaoyu@...wei.com>
Subject: Re: [PATCH V13 10/10] arm/arm64: KVM: add guest SEA support
Hi,
On 2017/3/22 6:47, Tyler Baicar wrote:
> + fault_ipa = kvm_vcpu_get_fault_ipa(vcpu);
> +
> + /* The host kernel will handle the synchronous external abort. There
> + * is no need to pass the error into the guest.
> + */
> + if (is_abort_synchronous(fault_status))
> + sea_status = handle_guest_sea((unsigned long)fault_ipa,
> + kvm_vcpu_get_hsr(vcpu));
>
> is_iabt = kvm_vcpu_trap_is_iabt(vcpu);
> - if (unlikely(!is_iabt && kvm_vcpu_dabt_isextabt(vcpu))) {
> + if (unlikely(!is_iabt && kvm_vcpu_dabt_isextabt(vcpu)) && sea_status) {
> kvm_inject_vabt(vcpu);
> return 1;
> }
After the host kernel correctly handle the synchronous external abort, the sea_status
will return 0, so the code logical will be continue go-no, whether it is better directly return
after correctly handle the SEA? such as below.
if (unlikely(!is_iabt && kvm_vcpu_dabt_isextabt(vcpu)) && sea_status) {
kvm_inject_vabt(vcpu);
return 1;
} else
return 1;
>
> - fault_ipa = kvm_vcpu_get_fault_ipa(vcpu);
> -
> trace_kvm_guest_fault(*vcpu_pc(vcpu), kvm_vcpu_get_hsr(vcpu),
> kvm_vcpu_get_hfar(vcpu), fault_ipa);
>
> - /* Check the stage-2 fault is trans. fault or write fault */
> - fault_status = kvm_vcpu_trap_get_fault_type(vcpu);
> if (fault_status != FSC_FAULT && fault_status != FSC_PERM &&
Powered by blists - more mailing lists