On Mon, Oct 3, 2022 at 8:42 AM Sean Christopherson <seanjc@xxxxxxxxxx> wrote: > > On Mon, Sep 26, 2022, Vishal Annapurve wrote: > > On Wed, Sep 21, 2022 at 1:54 PM David Matlack <dmatlack@xxxxxxxxxx> wrote: > > > > > > On Thu, Sep 15, 2022 at 12:04:43AM +0000, Vishal Annapurve wrote: > > > > diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/testing/selftests/kvm/include/kvm_util_base.h > > > > index 98edbbda9f97..73cfee3ebd76 100644 > > > > --- a/tools/testing/selftests/kvm/include/kvm_util_base.h > > > > +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h > > > > @@ -839,4 +839,8 @@ static inline int __vm_disable_nx_huge_pages(struct kvm_vm *vm) > > > > */ > > > > void kvm_selftest_arch_init(void); > > > > > > > > +/* > > > > + * API to execute architecture specific setup after loading the vm elf. > > > > > > It's not a "vm elf" per-se, it's "loading the elf into the VM". How > > > about: > > > > > > /* > > > * API to execute arch-specific logic after loading the selftest ELF image > > > * into the VM. > > > */ > > > > > > > Ack. Will update this in the next series. > > Even better, call it from __vm_create() and name it something like > kvm_arch_vm_post_create(). Like David said, while the hook has a dependency on > being called after loading the ELF image, the action that arch code is expected > to take doesn't have anything to do with loading the ELF image. > > And then instead of introducing an arch hook with no implementation, the patch that > adds the hook can instead use it to replace the x86-64 #ifdef in __vm_create(). > Today upstream kernel selftests don't have scenarios where kvm_vm_elf_load can get called directly outside ___vm_create but there are selftests that are up for review [1], [2] that may call kvm_vm_elf_load directly. Above suggestion will not work in this scenario, is it suitable to assume that all the callers of kvm_vm_elf_load will eventually execute kvm_arch_vm_post_create? [1] https://lore.kernel.org/lkml/20220810152033.946942-12-pgonda@xxxxxxxxxx/ [2] https://lore.kernel.org/lkml/20220819174659.2427983-1-vannapurve@xxxxxxxxxx/T/#u > diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c > index dafe4471a6c7..593dfadb662e 100644 > --- a/tools/testing/selftests/kvm/lib/kvm_util.c > +++ b/tools/testing/selftests/kvm/lib/kvm_util.c > @@ -298,9 +298,8 @@ struct kvm_vm *__vm_create(enum vm_guest_mode mode, uint32_t nr_runnable_vcpus, > > kvm_vm_elf_load(vm, program_invocation_name); > > -#ifdef __x86_64__ > - vm_create_irqchip(vm); > -#endif > + kvm_arch_vm_post_create(vm); > + > return vm; > } > >