[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] x86/emul: dedup hvmemul_cpuid() and pv_emul_cpuid()
commit ae0e5f204cb42440e244419e6a92f7fd90eb25bb Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Thu Jul 19 16:40:06 2018 +0000 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Fri May 17 16:37:46 2019 +0100 x86/emul: dedup hvmemul_cpuid() and pv_emul_cpuid() They are identical, so provide a single x86emul_cpuid() instead. As x86_emulate() now only uses the ->cpuid() hook for real CPUID instructions, the hook can be omitted from all special-purpose emulation ops. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/arch/x86/hvm/emulate.c | 13 ++----------- xen/arch/x86/mm/shadow/hvm.c | 1 - xen/arch/x86/pv/emul-priv-op.c | 10 +--------- xen/arch/x86/pv/ro-page-fault.c | 3 --- xen/arch/x86/x86_emulate.c | 8 ++++++++ xen/arch/x86/x86_emulate/x86_emulate.h | 2 ++ xen/include/asm-x86/hvm/emulate.h | 2 -- xen/include/asm-x86/mm.h | 2 -- 8 files changed, 13 insertions(+), 28 deletions(-) diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c index 0c63a517e8..8659c89862 100644 --- a/xen/arch/x86/hvm/emulate.c +++ b/xen/arch/x86/hvm/emulate.c @@ -2156,13 +2156,6 @@ static int hvmemul_wbinvd( return X86EMUL_OKAY; } -int hvmemul_cpuid(uint32_t leaf, uint32_t subleaf, - struct cpuid_leaf *res, struct x86_emulate_ctxt *ctxt) -{ - guest_cpuid(current, leaf, subleaf, res); - return X86EMUL_OKAY; -} - static int hvmemul_get_fpu( enum x86_emulate_fpu_type type, struct x86_emulate_ctxt *ctxt) @@ -2361,7 +2354,7 @@ static const struct x86_emulate_ops hvm_emulate_ops = { .read_msr = hvmemul_read_msr, .write_msr = hvmemul_write_msr, .wbinvd = hvmemul_wbinvd, - .cpuid = hvmemul_cpuid, + .cpuid = x86emul_cpuid, .get_fpu = hvmemul_get_fpu, .put_fpu = hvmemul_put_fpu, .invlpg = hvmemul_invlpg, @@ -2388,7 +2381,7 @@ static const struct x86_emulate_ops hvm_emulate_ops_no_write = { .read_msr = hvmemul_read_msr, .write_msr = hvmemul_write_msr_discard, .wbinvd = hvmemul_wbinvd_discard, - .cpuid = hvmemul_cpuid, + .cpuid = x86emul_cpuid, .get_fpu = hvmemul_get_fpu, .put_fpu = hvmemul_put_fpu, .invlpg = hvmemul_invlpg, @@ -2474,13 +2467,11 @@ int hvm_emulate_one_mmio(unsigned long mfn, unsigned long gla) .read = x86emul_unhandleable_rw, .insn_fetch = hvmemul_insn_fetch, .write = mmcfg_intercept_write, - .cpuid = hvmemul_cpuid, }; static const struct x86_emulate_ops hvm_ro_emulate_ops_mmio = { .read = x86emul_unhandleable_rw, .insn_fetch = hvmemul_insn_fetch, .write = mmio_ro_emulated_write, - .cpuid = hvmemul_cpuid, }; struct mmio_ro_emulate_ctxt mmio_ro_ctxt = { .cr2 = gla }; struct hvm_emulate_ctxt ctxt; diff --git a/xen/arch/x86/mm/shadow/hvm.c b/xen/arch/x86/mm/shadow/hvm.c index bf9fd20770..c6469c846c 100644 --- a/xen/arch/x86/mm/shadow/hvm.c +++ b/xen/arch/x86/mm/shadow/hvm.c @@ -297,7 +297,6 @@ const struct x86_emulate_ops hvm_shadow_emulator_ops = { .insn_fetch = hvm_emulate_insn_fetch, .write = hvm_emulate_write, .cmpxchg = hvm_emulate_cmpxchg, - .cpuid = hvmemul_cpuid, }; /**************************************************************************/ diff --git a/xen/arch/x86/pv/emul-priv-op.c b/xen/arch/x86/pv/emul-priv-op.c index aedec5f795..b20d79c7a3 100644 --- a/xen/arch/x86/pv/emul-priv-op.c +++ b/xen/arch/x86/pv/emul-priv-op.c @@ -1122,14 +1122,6 @@ static int _wbinvd(struct x86_emulate_ctxt *ctxt) return X86EMUL_OKAY; } -int pv_emul_cpuid(uint32_t leaf, uint32_t subleaf, - struct cpuid_leaf *res, struct x86_emulate_ctxt *ctxt) -{ - guest_cpuid(current, leaf, subleaf, res); - - return X86EMUL_OKAY; -} - static int validate(const struct x86_emulate_state *state, struct x86_emulate_ctxt *ctxt) { @@ -1233,7 +1225,7 @@ static const struct x86_emulate_ops priv_op_ops = { .write_xcr = x86emul_write_xcr, .read_msr = read_msr, .write_msr = write_msr, - .cpuid = pv_emul_cpuid, + .cpuid = x86emul_cpuid, .wbinvd = _wbinvd, }; diff --git a/xen/arch/x86/pv/ro-page-fault.c b/xen/arch/x86/pv/ro-page-fault.c index 9d4913d932..fa358a62e7 100644 --- a/xen/arch/x86/pv/ro-page-fault.c +++ b/xen/arch/x86/pv/ro-page-fault.c @@ -259,7 +259,6 @@ static const struct x86_emulate_ops ptwr_emulate_ops = { .write = ptwr_emulated_write, .cmpxchg = ptwr_emulated_cmpxchg, .validate = pv_emul_is_mem_write, - .cpuid = pv_emul_cpuid, }; /* Write page fault handler: check if guest is trying to modify a PTE. */ @@ -308,7 +307,6 @@ static const struct x86_emulate_ops mmio_ro_emulate_ops = { .insn_fetch = ptwr_emulated_read, .write = mmio_ro_emulated_write, .validate = pv_emul_is_mem_write, - .cpuid = pv_emul_cpuid, }; static const struct x86_emulate_ops mmcfg_intercept_ops = { @@ -316,7 +314,6 @@ static const struct x86_emulate_ops mmcfg_intercept_ops = { .insn_fetch = ptwr_emulated_read, .write = mmcfg_intercept_write, .validate = pv_emul_is_mem_write, - .cpuid = pv_emul_cpuid, }; /* Check if guest is trying to modify a r/o MMIO page. */ diff --git a/xen/arch/x86/x86_emulate.c b/xen/arch/x86/x86_emulate.c index b1dfc9f261..d0d52c93c1 100644 --- a/xen/arch/x86/x86_emulate.c +++ b/xen/arch/x86/x86_emulate.c @@ -158,6 +158,14 @@ int x86emul_write_dr(unsigned int reg, unsigned long val, } #endif /* CONFIG_PV */ +int x86emul_cpuid(uint32_t leaf, uint32_t subleaf, + struct cpuid_leaf *res, struct x86_emulate_ctxt *ctxt) +{ + guest_cpuid(current, leaf, subleaf, res); + + return X86EMUL_OKAY; +} + /* * Local variables: * mode: C diff --git a/xen/arch/x86/x86_emulate/x86_emulate.h b/xen/arch/x86/x86_emulate/x86_emulate.h index 398df5ff09..08645762cc 100644 --- a/xen/arch/x86/x86_emulate/x86_emulate.h +++ b/xen/arch/x86/x86_emulate/x86_emulate.h @@ -725,6 +725,8 @@ int x86emul_read_dr(unsigned int reg, unsigned long *val, struct x86_emulate_ctxt *ctxt); int x86emul_write_dr(unsigned int reg, unsigned long val, struct x86_emulate_ctxt *ctxt); +int x86emul_cpuid(uint32_t leaf, uint32_t subleaf, + struct cpuid_leaf *res, struct x86_emulate_ctxt *ctxt); #endif diff --git a/xen/include/asm-x86/hvm/emulate.h b/xen/include/asm-x86/hvm/emulate.h index 26a01e83a4..b39a1a0331 100644 --- a/xen/include/asm-x86/hvm/emulate.h +++ b/xen/include/asm-x86/hvm/emulate.h @@ -76,8 +76,6 @@ void hvm_emulate_init_per_insn( unsigned int insn_bytes); void hvm_emulate_writeback( struct hvm_emulate_ctxt *hvmemul_ctxt); -int hvmemul_cpuid(uint32_t leaf, uint32_t subleaf, - struct cpuid_leaf *res, struct x86_emulate_ctxt *ctxt); struct segment_register *hvmemul_get_seg_reg( enum x86_segment seg, struct hvm_emulate_ctxt *hvmemul_ctxt); diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h index 6faa563167..c72e329506 100644 --- a/xen/include/asm-x86/mm.h +++ b/xen/include/asm-x86/mm.h @@ -541,8 +541,6 @@ extern int mmcfg_intercept_write(enum x86_segment seg, void *p_data, unsigned int bytes, struct x86_emulate_ctxt *ctxt); -int pv_emul_cpuid(uint32_t leaf, uint32_t subleaf, - struct cpuid_leaf *res, struct x86_emulate_ctxt *ctxt); int audit_adjust_pgtables(struct domain *d, int dir, int noisy); -- generated by git-patchbot for /home/xen/git/xen.git#staging _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |