From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A2D6BC3DA49 for ; Tue, 23 Jul 2024 21:25:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E4B606B0083; Tue, 23 Jul 2024 17:25:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DD3526B0085; Tue, 23 Jul 2024 17:25:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C740F6B0088; Tue, 23 Jul 2024 17:25:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id A5BB16B0083 for ; Tue, 23 Jul 2024 17:25:30 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 25DB7120327 for ; Tue, 23 Jul 2024 21:25:30 +0000 (UTC) X-FDA: 82372298820.23.25F2EC3 Received: from mail-yw1-f174.google.com (mail-yw1-f174.google.com [209.85.128.174]) by imf14.hostedemail.com (Postfix) with ESMTP id 61449100015 for ; Tue, 23 Jul 2024 21:25:28 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=DOnRrrou; spf=pass (imf14.hostedemail.com: domain of sagis@google.com designates 209.85.128.174 as permitted sender) smtp.mailfrom=sagis@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721769904; a=rsa-sha256; cv=none; b=AJ2DhgEpG4V/cVuq7WAcVoxtRa0V7IS7NstBSHHJxl75RNhlY5ywmU1YG9JSL7oa/0Sqpv T5VYyJ+rr2H4PAfYV8X6S9D3y+NggdKrYRJGgzp0Ij10zijrWahmbmIT41kCubmwTDesTH ZTiegKeICOB7lzwSKZVj/UDVsDEbGK0= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=DOnRrrou; spf=pass (imf14.hostedemail.com: domain of sagis@google.com designates 209.85.128.174 as permitted sender) smtp.mailfrom=sagis@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1721769904; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=rZJgCArp64eiMbqCXaN875D3c6qRuqIaB/kMh068BtM=; b=gedZ/goWTs03xGhwbXFSf3ckKxPoAp7GP1EvoDUi4vyGEa8tKXOhKV2zTbx1fbyX2Sz1pd VYODpHJnYLLCUokJGcplQ9I2LBm73sj1rK7UKYY5WkjY1NCji9fCAIY7ijB6Q69tYCQ4+c IrzYMTWwvfARC5BqNeaz9Iw1pOUMzb4= Received: by mail-yw1-f174.google.com with SMTP id 00721157ae682-651da7c1531so56355087b3.0 for ; Tue, 23 Jul 2024 14:25:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1721769927; x=1722374727; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=rZJgCArp64eiMbqCXaN875D3c6qRuqIaB/kMh068BtM=; b=DOnRrrouxy1eZKZXcUQzzRc+OABGsvBR3OLa2I/j9MjOPskqZmADbih9MqLIJNqfUI U/KVqOmNWDCY7YIxldlSULqdqbi/gYm3wAF26uwCP9h9o0kAN5l6zs52heXH2aI7C1Ty iU9fCOGshKCJfgx6Z0rXvSadQCDUVp+w9X89ecmgWoU802fSc0sPEqvMCjRvWA3FUo0Y qFQX+M4+YVnkEuAKRhuN4v4GCNtDT9PNr1tdmrqgh0CL25DxeQc+QFQOepMc+66tVYQV aglls6u5bCMeWwSkrzrO9iMN+daFNZqd6FJhkpB210mE2bH9vcoWwaBC1XBHsO4Y78Iv hOFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721769927; x=1722374727; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rZJgCArp64eiMbqCXaN875D3c6qRuqIaB/kMh068BtM=; b=ilDyzn61HVPUNYsnZIzfFVtwLGZoiQcMca/mGkIHj3K3EcDsKkAxID4MmrQF082rRP 52w3+MubfcTe2bkLZ63KmkiJ4nxbkVQQtHi0g2iHG1xrRJ+5X1pqQPf1tzG9qgQk8knt IOTpNyWR7SCHKCdoFItwg/N3cLrTTzlcJXQV2tkUDvmOTQdLx/PF/XDCZX+vpQk2Wet/ aKQvHkg/gfMKb3VY0BM8EcmITeCFzptrlvOW3sqWh7qwwmk+plHc65ztEJGyP3V6UOMT zYV5sY0ViwZzYspgJ98vNVIOjdUjRFCxiAPDFmlIA85wi8slUGpMi/vFDvBTuqx9eZkk veZA== X-Forwarded-Encrypted: i=1; AJvYcCUPOCGJEemlMxCua6ySwa1qXy2M39pE5X1ueHW64pnI6ds2wBlHo06W6jYdSjPffHlqsmsImePwTB1P/eBsd8AxOSs= X-Gm-Message-State: AOJu0YwRb09qL7k8NAoWGK3WdoTC1NjLV0ZK5z1wuKwOcEwuQOUypOXS tHELRteiMy/ajNOLwJNNyiZpplSFetCtA88Ob9LElXa7YfE9GpGIoUlcEZ+UNnaI1JSj0RRQ7gz /aiGVE6D7v6fYfYFv6n+q6I5db1eVoTfv2Zrm X-Google-Smtp-Source: AGHT+IGCV768j+YrEEm95b1T/ToEhs2+KD4YZsH39PZjohbKCe4xW674YxKBoDDwcCaLP5X/JLfj7nNNUwK9WrlPfmo= X-Received: by 2002:a05:6902:274a:b0:e03:629f:5c41 with SMTP id 3f1490d57ef6-e087b9e7ab9mr8610694276.55.1721769926984; Tue, 23 Jul 2024 14:25:26 -0700 (PDT) MIME-Version: 1.0 References: <20231212204647.2170650-1-sagis@google.com> <20231212204647.2170650-5-sagis@google.com> <5749ff16-ca81-440d-85f0-62a1c3a572d0@linux.intel.com> In-Reply-To: <5749ff16-ca81-440d-85f0-62a1c3a572d0@linux.intel.com> From: Sagi Shahar Date: Tue, 23 Jul 2024 16:25:14 -0500 Message-ID: Subject: Re: [RFC PATCH v5 04/29] KVM: selftests: Refactor steps in vCPU descriptor table initialization To: Binbin Wu Cc: linux-kselftest@vger.kernel.org, Ackerley Tng , Ryan Afranji , Erdem Aktas , Isaku Yamahata , Sean Christopherson , Paolo Bonzini , Shuah Khan , Peter Gonda , Haibo Xu , Chao Peng , Vishal Annapurve , Roger Wang , Vipin Sharma , jmattson@google.com, dmatlack@google.com, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: isizdpxfspezp4d5aqp7mn3yeqw45ddr X-Rspamd-Queue-Id: 61449100015 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1721769928-430069 X-HE-Meta: U2FsdGVkX18zsyhn25ZHCk1uiOjqpK77pOXOsCrx/SWIHlJ81uMaag1fSaQS6J4N32WTKr23ydslYfV29o3kCqt48MBO95EXHte31hDcjDImoCcYoqRCFHQjS7keEeKV5kIkqIHXx/MlfAgs7+F4CwAvjDsqmhuGYMwVQAvh0yJ2XlvlrrWor9AQpQ03eyfWrKrp3reLtrarbhTJmGHuOt6LvGE7GlojcsKOqkapVm7xBpWsB2mdwnoYqgR4R99DemtkLjQP5sD47L+c4vCoPRfK6i1xts4BVdpKyBSgN6IoxEfBCqzaDuC464Qj6kMm7QOgFUeo0QXZpt6uFBZpbNKNCrQ4WigM47G719wB2QrKR9KBSEPxbnpJJ6glxS0ZBqgmheevGqIEU6RP2g1+ARlfTU7bLxvnVYUePFZFGGmhb2XDCl7HMM1ldd4EESLNIrgPXTVMJ0XTshSL+QlY3VbAozUF21M6dhil1A8P1SjrqCw+eQfQspJ24ON462DVRYqulyMIDCg/YWS38T3ap+3YDQ/PhEeYXL+nyiOyN2GZUBWxkuOU2HFHoA9KRbkZrozEl3JhSNlKNXSGjCDrwmTrE1ROPjrfSiHtoJdOjWu6usvWS/FHXzeeXNkcC1FmG+yuWBqu8Cqhn0G647HijahFoW3vguRINo0IOnyW68KVAqCfnKJQwBGsVMT+mft+cFgyBeL2fn2bVRq78ca/Od1IVWCitfwXm9Ve4b8qulM72H/eAQN0s/GAqmO/AuySLxKVpPx0SO/QLmFo5b0OTSI36W1dfQHBy33w+FOCEvLXk55DX5sjxP3ibkoTOgYDzLXgZouXq8Cm5sln3IY841bo0eRUrK/VDLgNjKdDa8plAJ2BBvIXf19V6vo7YMsRU/mxfZQsxFYb3eZjQ83IuUwAy7HFzScapp0JrCpGZmWdPLXu5GQLQ4I+noYcTFbq5hDQRGqk0sect50P2oG 7QxpGdYP 9ZuU+tjFqZOxNcq//5c/2ow5+tSXOdt4leBLdXM9QXxbCTMqIRE4VT1z5sOj1qlZ6vjRckYj85eJZYXebXmGqC2e8vXp3VyIwkWf/snHpjcmi1qjXZUY3m74OAn/APzBFhWoF++rGi2+tInYjn7ghKyJPDaYH1y5Jztuwv46q0Z6J/3jS6cgfFTHBgBryKfhBZgJ4lS31GoD0peQUEqzmgqxj96pfbBy7mB82TRKgJt+pO5CaS6cDRX3sySGcFDeqYXlSlkqejgA/n+H6jUDsG5NtvA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, Feb 20, 2024 at 11:43=E2=80=AFPM Binbin Wu wrote: > > > > On 12/13/2023 4:46 AM, Sagi Shahar wrote: > > From: Ackerley Tng > > > > Split the vCPU descriptor table initialization process into a few > > steps and expose them: > > > > + Setting up the IDT > > + Syncing exception handlers into the guest > > > > In kvm_setup_idt(), we conditionally allocate guest memory for vm->idt > > to avoid double allocation when kvm_setup_idt() is used after > > vm_init_descriptor_tables(). > > > > Signed-off-by: Ackerley Tng > > Signed-off-by: Ryan Afranji > > Signed-off-by: Sagi Shahar > > --- > > .../selftests/kvm/include/x86_64/processor.h | 2 ++ > > .../selftests/kvm/lib/x86_64/processor.c | 19 ++++++++++++++++--= - > > 2 files changed, 18 insertions(+), 3 deletions(-) > > > > diff --git a/tools/testing/selftests/kvm/include/x86_64/processor.h b/t= ools/testing/selftests/kvm/include/x86_64/processor.h > > index 0b8855d68744..5c4e9a27d9e2 100644 > > --- a/tools/testing/selftests/kvm/include/x86_64/processor.h > > +++ b/tools/testing/selftests/kvm/include/x86_64/processor.h > > @@ -1089,6 +1089,8 @@ struct idt_entry { > > uint32_t offset2; uint32_t reserved; > > }; > > > > +void kvm_setup_idt(struct kvm_vm *vm, struct kvm_dtable *dt); > > +void sync_exception_handlers_to_guest(struct kvm_vm *vm); > > void vm_init_descriptor_tables(struct kvm_vm *vm); > > void vcpu_init_descriptor_tables(struct kvm_vcpu *vcpu); > > void vm_install_exception_handler(struct kvm_vm *vm, int vector, > > diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools= /testing/selftests/kvm/lib/x86_64/processor.c > > index b6b9438e0a33..566d82829da4 100644 > > --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c > > +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c > > @@ -1155,19 +1155,32 @@ void vm_init_descriptor_tables(struct kvm_vm *v= m) > > DEFAULT_CODE_SELECTOR); > > } > > > > +void kvm_setup_idt(struct kvm_vm *vm, struct kvm_dtable *dt) > > +{ > > + if (!vm->idt) > > + vm->idt =3D vm_vaddr_alloc_page(vm); > > IDT is allocated in DATA memslot in current code, but here, when using > vm_vaddr_alloc_page(), it will be allocated in TEST_DATA memslot. > > Do we need to follow the current code to use > __vm_vaddr_alloc_page(vm, MEM_REGION_DATA) instead? This code is no longer needed after Sean's refactor in "[PATCH 00/18] KVM: selftests: Clean up x86's DT initialization" https://lore.kernel.org/lkml/20240314232637.2538648-1-seanjc@google.com/ > > > + > > + dt->base =3D vm->idt; > > + dt->limit =3D NUM_INTERRUPTS * sizeof(struct idt_entry) - 1; > > +} > > + > > +void sync_exception_handlers_to_guest(struct kvm_vm *vm) > > +{ > > + *(vm_vaddr_t *)addr_gva2hva(vm, (vm_vaddr_t)(&exception_handlers)= ) =3D vm->handlers; > > +} > > + > > void vcpu_init_descriptor_tables(struct kvm_vcpu *vcpu) > > { > > struct kvm_vm *vm =3D vcpu->vm; > > struct kvm_sregs sregs; > > > > vcpu_sregs_get(vcpu, &sregs); > > - sregs.idt.base =3D vm->idt; > > - sregs.idt.limit =3D NUM_INTERRUPTS * sizeof(struct idt_entry) - 1= ; > > + kvm_setup_idt(vcpu->vm, &sregs.idt); > > sregs.gdt.base =3D vm->gdt; > > sregs.gdt.limit =3D getpagesize() - 1; > > kvm_seg_set_kernel_data_64bit(NULL, DEFAULT_DATA_SELECTOR, &sregs= .gs); > > vcpu_sregs_set(vcpu, &sregs); > > - *(vm_vaddr_t *)addr_gva2hva(vm, (vm_vaddr_t)(&exception_handlers)= ) =3D vm->handlers; > > + sync_exception_handlers_to_guest(vm); > > } > > > > void vm_install_exception_handler(struct kvm_vm *vm, int vector, >