All of lore.kernel.org
 help / color / mirror / Atom feed
From: gengdongjiu <gengdongjiu@huawei.com>
To: "vladimir.murzin" <vladimir.murzin@arm.com>,
	"marc.zyngier" <marc.zyngier@arm.com>,
	"christoffer.dall" <christoffer.dall@linaro.org>,
	pbonzini <pbonzini@redhat.com>, rkrcmar <rkrcmar@redhat.com>,
	linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
	kvmarm <kvmarm@lists.cs.columbia.edu>, kvm <kvm@vger.kernel.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	"suzuki.poulose" <suzuki.poulose@arm.com>,
	"mark.rutland" <mark.rutland@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>
Cc: Huangshaoyu <huangshaoyu@huawei.com>,
	"Zhanghaibin \(Euler\)" <zhanghaibin7@huawei.com>
Subject: re: [PATCH] arm64: KVM: VHE: save and restore some PSTATE bits
Date: Wed, 6 Sep 2017 22:09:59 +0000	[thread overview]
Message-ID: <etPan.59b07235.3d9ddf9d.4a29@localhost> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 3860 bytes --]

The negative effect is that kernel can not access kernel space adress through copy_to/from_user even KERNEL_DS is set
发件人:vladimir.murzin
收件人:耿东久,marc.zyngier,christoffer.dall,pbonzini,rkrcmar,linux-arm-kernel,kvmarm,kvm,linux-kernel,suzuki.poulose,mark.rutland,Catalin Marinas
抄送:James.Morse,张海斌,黄韶宇
时间:2017-09-06 23:19:38
主题:Re: [PATCH] arm64: KVM: VHE: save and restore some PSTATE bits

On 06/09/17 16:08, gengdongjiu wrote:
> It is similar with the PAN,when the guest traps to el2,it will reset the pstate.PAN <http://pstate.PAN> to 0, and continue run。In fact the host pstate.UAO <http://pstate.UAO> can be 1, but guest change it to 0 when trap to EL2。so after swich to host,need to check whether set pstate.UAO <http://pstate.UAO> again。

What negative effect do you see with change UAO to 0 (i.e. do not override)?

P. S.
Please, avoid HTML and top posting

Vladimir

> *发件人:*Vladimir Murzin
> *收件人:*耿东久,marc.zyngier,christoffer.dall@linaro.org,pbonzini@redhat.com,rkrcmar@redhat.com,linux-arm-kernel@lists.infradead.org,kvmarm@lists.cs.columbia.edu,kvm@vger.kernel.org,linux-kernel,suzuki.poulose@arm.com,mark.rutland@arm.com,Catalin Marinas
> *抄送:*James Morse,张海斌,黄韶宇
> *时间:*2017-09-06 22:41:09
> *主题:*Re: [PATCH] arm64: KVM: VHE: save and restore some PSTATE bits
>
> On 06/09/17 15:10, gengdongjiu wrote:
>> Hi, Vladimir
>>
>>>>> Do you see effect of "PAN is unexpectedly enabled"?
>>>> In fact I did not encounter this case, but I think it can exist.
>>>> I think if host OS dynamically disable PAN, it wants the host kernel access the user space address space not through copy_to/from_user
>>> API.
>>>> Now if it is unexpectedly enabled, when host kernel still accesses the user space address,  it will happen MMU fault exception.
>>>
>>> And this is expected! The only allowed channel for kernel <-> user is uaccess API.
>>>
>>> I guess that you have test (and that great!) which violates that rule (for testing purpose, why not?) and now you are trying to fit kernel into
>>> it...
>>
>>
>> If you think that makes sense for it, we do not consider the paste.PAN in the world-switch.
>> For the pstate.UAO issue, do you agree my fixing or you have other suggestion?  Also to other reviewer. Thanks.
>
> It would help if you give precise description on "pstate.UAO issue".
>
> Thanks
> Vladimir
>
>>
>> diff --git a/arch/arm64/kvm/hyp/sysreg-sr.c b/arch/arm64/kvm/hyp/sysreg-sr.c
>> index 9341376..c3dd761 100644
>> --- a/arch/arm64/kvm/hyp/sysreg-sr.c
>> +++ b/arch/arm64/kvm/hyp/sysreg-sr.c
>> @@ -21,6 +21,8 @@
>>  #include <asm/kvm_asm.h>
>>  #include <asm/kvm_hyp.h>
>>
>> +#include <asm/exec.h>
>>
>>  /* Yes, this does nothing, on purpose */
>>  static void __hyp_text __sysreg_do_nothing(struct kvm_cpu_context *ctxt) { }
>>
>> @@ -121,8 +123,13 @@ static void __hyp_text __sysreg_restore_state(struct kvm_cpu_context *ctxt)
>>         write_sysreg_el1(ctxt->gp_regs.spsr[KVM_SPSR_EL1],spsr);
>>  }
>>
>> +static void __hyp_text __sysreg_restore_state_vhe(struct kvm_cpu_context *ctxt)
>> +{
>> +    uao_thread_switch(current);
>> +}
>> +
>>  static hyp_alternate_select(__sysreg_call_restore_host_state,
>> -                           __sysreg_restore_state, __sysreg_do_nothing,
>> +                           __sysreg_restore_state, __sysreg_restore_state_vhe,
>>                             ARM64_HAS_VIRT_HOST_EXTN);
>>
>>  void __hyp_text __sysreg_restore_host_state(struct kvm_cpu_context *ctxt)
>>
>>
>>>
>>> Cheers
>>> Vladimir
>>>
>>>>
>>>>
>>>>>
>>>>> Cheers
>>>>> Vladimir
>>>>>
>>>>>>
>>>>>>>
>>>>>>> Cheers
>>>>>>> Vladimir
>>>>>>>
>>>>>>> .
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> .
>>>>>
>>>>
>>>>
>>
>


[-- Attachment #1.2: Type: text/html, Size: 6823 bytes --]

[-- Attachment #2: Type: text/plain, Size: 151 bytes --]

_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

WARNING: multiple messages have this Message-ID (diff)
From: gengdongjiu <gengdongjiu@huawei.com>
To: "vladimir.murzin" <vladimir.murzin@arm.com>,
	"marc.zyngier" <marc.zyngier@arm.com>,
	"christoffer.dall" <christoffer.dall@linaro.org>,
	pbonzini <pbonzini@redhat.com>, rkrcmar <rkrcmar@redhat.com>,
	linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
	kvmarm <kvmarm@lists.cs.columbia.edu>, kvm <kvm@vger.kernel.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	"suzuki.poulose" <suzuki.poulose@arm.com>,
	"mark.rutland" <mark.rutland@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>
Cc: Huangshaoyu <huangshaoyu@huawei.com>,
	"Zhanghaibin (Euler)" <zhanghaibin7@huawei.com>
Subject: re: [PATCH] arm64: KVM: VHE: save and restore some PSTATE bits
Date: Wed, 6 Sep 2017 22:09:59 +0000	[thread overview]
Message-ID: <etPan.59b07235.3d9ddf9d.4a29@localhost> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 3860 bytes --]

The negative effect is that kernel can not access kernel space adress through copy_to/from_user even KERNEL_DS is set
发件人:vladimir.murzin
收件人:耿东久,marc.zyngier,christoffer.dall,pbonzini,rkrcmar,linux-arm-kernel,kvmarm,kvm,linux-kernel,suzuki.poulose,mark.rutland,Catalin Marinas
抄送:James.Morse,张海斌,黄韶宇
时间:2017-09-06 23:19:38
主题:Re: [PATCH] arm64: KVM: VHE: save and restore some PSTATE bits

On 06/09/17 16:08, gengdongjiu wrote:
> It is similar with the PAN,when the guest traps to el2,it will reset the pstate.PAN <http://pstate.PAN> to 0, and continue run。In fact the host pstate.UAO <http://pstate.UAO> can be 1, but guest change it to 0 when trap to EL2。so after swich to host,need to check whether set pstate.UAO <http://pstate.UAO> again。

What negative effect do you see with change UAO to 0 (i.e. do not override)?

P. S.
Please, avoid HTML and top posting

Vladimir

> *发件人:*Vladimir Murzin
> *收件人:*耿东久,marc.zyngier,christoffer.dall@linaro.org,pbonzini@redhat.com,rkrcmar@redhat.com,linux-arm-kernel@lists.infradead.org,kvmarm@lists.cs.columbia.edu,kvm@vger.kernel.org,linux-kernel,suzuki.poulose@arm.com,mark.rutland@arm.com,Catalin Marinas
> *抄送:*James Morse,张海斌,黄韶宇
> *时间:*2017-09-06 22:41:09
> *主题:*Re: [PATCH] arm64: KVM: VHE: save and restore some PSTATE bits
>
> On 06/09/17 15:10, gengdongjiu wrote:
>> Hi, Vladimir
>>
>>>>> Do you see effect of "PAN is unexpectedly enabled"?
>>>> In fact I did not encounter this case, but I think it can exist.
>>>> I think if host OS dynamically disable PAN, it wants the host kernel access the user space address space not through copy_to/from_user
>>> API.
>>>> Now if it is unexpectedly enabled, when host kernel still accesses the user space address,  it will happen MMU fault exception.
>>>
>>> And this is expected! The only allowed channel for kernel <-> user is uaccess API.
>>>
>>> I guess that you have test (and that great!) which violates that rule (for testing purpose, why not?) and now you are trying to fit kernel into
>>> it...
>>
>>
>> If you think that makes sense for it, we do not consider the paste.PAN in the world-switch.
>> For the pstate.UAO issue, do you agree my fixing or you have other suggestion?  Also to other reviewer. Thanks.
>
> It would help if you give precise description on "pstate.UAO issue".
>
> Thanks
> Vladimir
>
>>
>> diff --git a/arch/arm64/kvm/hyp/sysreg-sr.c b/arch/arm64/kvm/hyp/sysreg-sr.c
>> index 9341376..c3dd761 100644
>> --- a/arch/arm64/kvm/hyp/sysreg-sr.c
>> +++ b/arch/arm64/kvm/hyp/sysreg-sr.c
>> @@ -21,6 +21,8 @@
>>  #include <asm/kvm_asm.h>
>>  #include <asm/kvm_hyp.h>
>>
>> +#include <asm/exec.h>
>>
>>  /* Yes, this does nothing, on purpose */
>>  static void __hyp_text __sysreg_do_nothing(struct kvm_cpu_context *ctxt) { }
>>
>> @@ -121,8 +123,13 @@ static void __hyp_text __sysreg_restore_state(struct kvm_cpu_context *ctxt)
>>         write_sysreg_el1(ctxt->gp_regs.spsr[KVM_SPSR_EL1],spsr);
>>  }
>>
>> +static void __hyp_text __sysreg_restore_state_vhe(struct kvm_cpu_context *ctxt)
>> +{
>> +    uao_thread_switch(current);
>> +}
>> +
>>  static hyp_alternate_select(__sysreg_call_restore_host_state,
>> -                           __sysreg_restore_state, __sysreg_do_nothing,
>> +                           __sysreg_restore_state, __sysreg_restore_state_vhe,
>>                             ARM64_HAS_VIRT_HOST_EXTN);
>>
>>  void __hyp_text __sysreg_restore_host_state(struct kvm_cpu_context *ctxt)
>>
>>
>>>
>>> Cheers
>>> Vladimir
>>>
>>>>
>>>>
>>>>>
>>>>> Cheers
>>>>> Vladimir
>>>>>
>>>>>>
>>>>>>>
>>>>>>> Cheers
>>>>>>> Vladimir
>>>>>>>
>>>>>>> .
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> .
>>>>>
>>>>
>>>>
>>
>


[-- Attachment #1.2: Type: text/html, Size: 6823 bytes --]

[-- Attachment #2: Type: text/plain, Size: 151 bytes --]

_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

             reply	other threads:[~2017-09-06 22:09 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-06 22:09 gengdongjiu [this message]
2017-09-06 22:09 ` [PATCH] arm64: KVM: VHE: save and restore some PSTATE bits gengdongjiu
  -- strict thread matches above, loose matches on Subject: below --
2017-09-06 14:10 gengdongjiu
2017-09-06 14:10 ` gengdongjiu
2017-09-06 14:10 ` gengdongjiu
2017-09-06 14:40 ` Vladimir Murzin
2017-09-06 14:40   ` Vladimir Murzin
2017-09-06 14:40   ` Vladimir Murzin
2017-09-06 14:40   ` Vladimir Murzin
2017-09-06 15:08   ` gengdongjiu
2017-09-06 15:08     ` gengdongjiu
2017-09-06 15:19     ` Vladimir Murzin
2017-09-06 15:19       ` Vladimir Murzin
2017-09-05 18:58 gengdongjiu
2017-09-05 18:58 ` gengdongjiu
2017-09-05 18:58 ` gengdongjiu
2017-09-06  5:26 ` gengdongjiu
2017-09-06  5:26   ` gengdongjiu
2017-09-06  5:26   ` gengdongjiu
2017-09-06  5:26   ` gengdongjiu
2017-09-06  8:17 ` Marc Zyngier
2017-09-06  8:17   ` Marc Zyngier
2017-09-06  8:17   ` Marc Zyngier
2017-09-06  9:32   ` gengdongjiu
2017-09-06  9:32     ` gengdongjiu
2017-09-06  9:32     ` gengdongjiu
2017-09-06  9:32     ` gengdongjiu
2017-09-06  9:41     ` Vladimir Murzin
2017-09-06  9:41       ` Vladimir Murzin
2017-09-06  9:41       ` Vladimir Murzin
2017-09-06 10:35       ` gengdongjiu
2017-09-06 10:35         ` gengdongjiu
2017-09-06 10:35         ` gengdongjiu
2017-09-06 10:35         ` gengdongjiu
2017-09-06 12:00         ` Vladimir Murzin
2017-09-06 12:00           ` Vladimir Murzin
2017-09-06 12:00           ` Vladimir Murzin
2017-09-06 12:14           ` gengdongjiu
2017-09-06 12:14             ` gengdongjiu
2017-09-06 12:14             ` gengdongjiu
2017-09-06 12:14             ` gengdongjiu
2017-09-06 12:30             ` Vladimir Murzin
2017-09-06 12:30               ` Vladimir Murzin
2017-09-06 12:30               ` Vladimir Murzin
2017-09-06 12:44               ` gengdongjiu
2017-09-06 12:44                 ` gengdongjiu
2017-09-06 12:44                 ` gengdongjiu
2017-09-06 12:44                 ` gengdongjiu
2017-09-06 13:00                 ` Vladimir Murzin
2017-09-06 13:00                   ` Vladimir Murzin
2017-09-06 13:00                   ` Vladimir Murzin
2017-09-06 12:32           ` gengdongjiu
2017-09-06 12:32             ` gengdongjiu
2017-09-06 12:32             ` gengdongjiu
2017-09-06 12:32             ` gengdongjiu
2017-09-06  9:49     ` gengdongjiu
2017-09-06  9:49       ` gengdongjiu
2017-09-06  9:49       ` gengdongjiu
2017-09-06  9:49       ` gengdongjiu
2017-09-06 20:49 ` kbuild test robot
2017-09-06 20:49   ` kbuild test robot
2017-09-06 20:49   ` kbuild test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=etPan.59b07235.3d9ddf9d.4a29@localhost \
    --to=gengdongjiu@huawei.com \
    --cc=catalin.marinas@arm.com \
    --cc=christoffer.dall@linaro.org \
    --cc=huangshaoyu@huawei.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    --cc=suzuki.poulose@arm.com \
    --cc=vladimir.murzin@arm.com \
    --cc=zhanghaibin7@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.