[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <68a5df32-82de-1f07-5ea2-52ecf1c17e63@linux.intel.com>
Date: Thu, 11 May 2023 09:25:42 +0800
From: Binbin Wu <binbin.wu@...ux.intel.com>
To: Chao Gao <chao.gao@...el.com>
Cc: kvm@...r.kernel.org, linux-kernel@...r.kernel.org,
seanjc@...gle.com, pbonzini@...hat.com, kai.huang@...el.com,
robert.hu@...ux.intel.com
Subject: Re: [PATCH v8 1/6] KVM: x86: Consolidate flags for __linearize()
On 5/10/2023 3:42 PM, Chao Gao wrote:
> On Wed, May 10, 2023 at 02:06:06PM +0800, Binbin Wu wrote:
>> Define a 32-bit parameter and consolidate the two bools into it.
>>
>> __linearize() has two bool parameters write and fetch. And new flag
>> will be needed to support new feature (e.g. LAM needs a flag to skip
>> address untag under some conditions).
>>
>> No functional change intended.
>>
>> In the follow-up patches, the new parameter will be extended for LAM.
>>
>> Signed-off-by: Binbin Wu <binbin.wu@...ux.intel.com>
> Reviewed-by: Chao Gao <chao.gao@...el.com>
>
> one nit below
>
>> ---
>> arch/x86/kvm/emulate.c | 19 +++++++++++++------
>> arch/x86/kvm/kvm_emulate.h | 4 ++++
>> 2 files changed, 17 insertions(+), 6 deletions(-)
>>
>> diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
>> index 936a397a08cd..9508836e8a35 100644
>> --- a/arch/x86/kvm/emulate.c
>> +++ b/arch/x86/kvm/emulate.c
>> @@ -687,8 +687,8 @@ static unsigned insn_alignment(struct x86_emulate_ctxt *ctxt, unsigned size)
>> static __always_inline int __linearize(struct x86_emulate_ctxt *ctxt,
>> struct segmented_address addr,
>> unsigned *max_size, unsigned size,
>> - bool write, bool fetch,
>> - enum x86emul_mode mode, ulong *linear)
>> + u32 flags, enum x86emul_mode mode,
>> + ulong *linear)
>> {
>> struct desc_struct desc;
>> bool usable;
>> @@ -696,6 +696,8 @@ static __always_inline int __linearize(struct x86_emulate_ctxt *ctxt,
>> u32 lim;
>> u16 sel;
>> u8 va_bits;
>> + bool fetch = !!(flags & X86EMUL_F_FETCH);
>> + bool write = !!(flags & X86EMUL_F_WRITE);
>>
>> la = seg_base(ctxt, addr.seg) + addr.ea;
>> *max_size = 0;
>> @@ -757,7 +759,11 @@ static int linearize(struct x86_emulate_ctxt *ctxt,
>> ulong *linear)
>> {
>> unsigned max_size;
>> - return __linearize(ctxt, addr, &max_size, size, write, false,
>> + u32 flags = 0;
>> +
>> + if (write)
>> + flags |= X86EMUL_F_WRITE;
> this can be more dense:
>
> u32 flags = write ? X86EMUL_F_WRITE : 0;
Thanks, will update it.
Powered by blists - more mailing lists