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@xxxxxxxxxxxxxxx> Reviewed-by: Chao Gao <chao.gao@xxxxxxxxx> 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;