On Tue, Apr 20, 2021 at 06:27:38PM +0000, Lucas Mateus Martins Araujo e Castro wrote: > > > > ________________________________ > > >> spapr_hcall.c: > >> function h_enter call ppc_hash64_hpte_page_shift_noslb, ppc_hash64_map_hptes and ppc_hash64_unmap_hptes > >> function remove_hpte call ppc_hash64_map_hptes, ppc_hash64_unmap_hptes and ppc_hash64_tlb_flush_hpte > >> function h_protect call ppc_hash64_map_hptes, ppc_hash64_unmap_hptes and ppc_hash64_tlb_flush_hpte > >> function h_read call ppc_hash64_map_hptes and ppc_hash64_unmap_hptes > >> function rehash_hpte call ppc_hash64_hpte_page_shift_noslb > >> function rehash_hpt call ppc_hash64_map_hptes and ppc_hash64_unmap_hptes > > > >h_enter, remove_hpte, h_protect, h_read and rehash_hpte should never > >be called for a KVM guest (KVM will intercept the relevant hcalls > >before they reach qemu). I think it would make sense to split of a > >TCG only portion of spapr_hcall.c into a new file. You'll then > >probably need !TCG stubs for those hypercalls, which should trip a > >fatal error (if KVM hasn't handled the calls, there's nothing we can > >do that will salvage the situation). > > Besides the aforementioned functions, will all spapr hypercalls > beginning with H_* be intercepted (and therefore, should trip a > fatal error in the KVM-only file) or only a subset of these > functions will be intercepted? No, only a few hcalls will be KVM intercepted. There are basically two categories: 1) hcalls which *must* be implemented in KVM, because qemu doesn't have access to the KVM data structures to implement them. I think this is pretty much just the MMU related hypercalls. 2) performance critical hcalls where we have a KVM accelerated implementation, but *could* be implemented in qemu (and in a few cases the kernel fast path will fall back to the qemu slow path sometimes) > If the latter is there an interval of > opcodes that'll be intercepted? No. The opcode numbers aren't defined by KVM or qemu, they're from from PAPR/PowerVM and have no bearing on how concerns are divided in the KVM/qemu world. I'd start by only separating hypercall implementations which are actively causing you problems (calling into TCG code is a strong hint that its in category (1)). -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson