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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0D96BD17123 for ; Mon, 21 Oct 2024 18:17:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:Cc:To:From:Subject:Message-ID:References:Mime-Version: In-Reply-To:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=/aTJKIPGdXYIQ4z1/mPhLVqGYb++KmSjcoFUbuTd6EE=; b=iUwOXLx9SqI2PSdonL8pDxMujc /DrSMK3RQhXPnA0yGuItYZIbwER2HXMCwHQr3Ji1vE5o/4tyMFgBQ35mLwF+jtUQnySDE28WSwkF5 4YJjEm3DZkJT/maCq3qv/WGfF3QlSqtu0Zo6j83x1/Gwsbw9N4/nWjznuEf6a+l1nqiktV5mD7+2X qOdpJai1Es4/TBnsEBGFhsV/piJ1YrsSTL2/L0byqRHb899xOyq+qS2UmIi9iLQWTUR+nP0zrGmqW bR6rR2zqYegrz3zgW6XNYsCLWbjI4+kkKZvVlzc30/icv0CwT1BbKd6yqu4IqptQasysfSl2fvD/P lcCEp+jA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t2wxi-00000008HPv-0rZ2; Mon, 21 Oct 2024 18:17:02 +0000 Received: from mail-yw1-x1149.google.com ([2607:f8b0:4864:20::1149]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t2wtz-00000008Gdl-26KH for linux-arm-kernel@lists.infradead.org; Mon, 21 Oct 2024 18:13:13 +0000 Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-6e32b43e053so71787777b3.1 for ; Mon, 21 Oct 2024 11:13:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1729534389; x=1730139189; darn=lists.infradead.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=/aTJKIPGdXYIQ4z1/mPhLVqGYb++KmSjcoFUbuTd6EE=; b=sw7MSl85+W5LK+7+b72UkvuMVSIusI/hlAZzwX9bNBTcWWoptBVZ4rKy7+wKM/zUjs waY1nTWD1bwYMEZ1Q88ORnu1TS0RWaSRc/NSrUH+813OdDeVk3wO3X0bbtS0vG9zw0CL OCY2grFSUFy+Gho5qfzJitCKrfrp0coG7fi6jT6fldCEcilBfe8yQbZuENOlXKr8FriL m0/Y3tI+SeFYIc6NtcAML3dASt4qnoV9SATbrds/3TXRMI9dK8YGABELvTeFw5Eju1+U JZzw6FouC/MVUIEU5DgooNF3qPxU7kKllP6a7h9k28PFocbmObe8FV3K71BZ/BXaYgtF vfAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729534389; x=1730139189; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=/aTJKIPGdXYIQ4z1/mPhLVqGYb++KmSjcoFUbuTd6EE=; b=X8lBTRUUy5ZHmVm2Gvp3Q48hV5D50LQ54SkHVCIEwRnLzZvVYOvAwZgkefVz16Tu6x JevqWzAflNxp7Wct9Dx1cMKdAXSuT8BmGIpA9eiLAh/bYNQsaSo5XPW1w/tKHaV/VR/N DfKBGyNhK3+nG6WPZyupGGELZ+DCZmQIQD/hlncji2PGDKq0Is5WmmqoYMO1AHG+2hPV y/Fpv6WRx0FW+FHWzSRTlWtvGMHO0CSVvhgCLkRmXaqUxGQpjxU9zBAtrPp4FxfixPdU 3GbEy2bDZIj9u0gEVcD5bkw8ryCneR5GUrSS0rQgBnqWc4zU3d/H/HIFRT2f0ldTh7yA Lu5g== X-Forwarded-Encrypted: i=1; AJvYcCXi+msKMT+I/G/5Rv4j98TkV6kuFqaXEf2rI28vcwXLUTNXferFUA047m0vzItwsOnb+SlHi8h+z9KPQ0nS1pkO@lists.infradead.org X-Gm-Message-State: AOJu0Yz8DVIV2wekmMkXPSX9NgWqV75p14aFTYDKWUNunsDNXmowbGCD alUhBF4is98PsxbTQ6i26tSCCjcsyRGOxhtM7y94DZJRT1Whpm/cdN97Gax52gWv/hBa7Lo+KZy tVw== X-Google-Smtp-Source: AGHT+IGB051RPG0qZ1hHpRMmy9gqDX/0GH7so+xa+rGGnhbzxuPrj+6CH4debSRqPENvRC2d7Upq2p/funE= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:9d:3983:ac13:c240]) (user=seanjc job=sendgmr) by 2002:a25:8389:0:b0:e2b:e955:d58a with SMTP id 3f1490d57ef6-e2be955d949mr2592276.7.1729534389536; Mon, 21 Oct 2024 11:13:09 -0700 (PDT) Date: Mon, 21 Oct 2024 11:13:08 -0700 In-Reply-To: Mime-Version: 1.0 References: <20241010182427.1434605-1-seanjc@google.com> <20241010182427.1434605-35-seanjc@google.com> Message-ID: Subject: Re: [PATCH v13 34/85] KVM: Get writable mapping for __kvm_vcpu_map() only when necessary From: Sean Christopherson To: Yan Zhao Cc: Paolo Bonzini , Marc Zyngier , Oliver Upton , Tianrui Zhao , Bibo Mao , Huacai Chen , Michael Ellerman , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, "Alex =?utf-8?Q?Benn=C3=A9e?=" , David Matlack , David Stevens , Andrew Jones Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241021_111311_700191_6FC3A69F X-CRM114-Status: GOOD ( 20.42 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Mon, Oct 21, 2024, Yan Zhao wrote: > On Thu, Oct 10, 2024 at 11:23:36AM -0700, Sean Christopherson wrote: > > When creating a memory map for read, don't request a writable pfn from = the > > primary MMU. While creating read-only mappings can be theoretically sl= ower, > > as they don't play nice with fast GUP due to the need to break CoW befo= re > > mapping the underlying PFN, practically speaking, creating a mapping is= n't > > a super hot path, and getting a writable mapping for reading is weird a= nd > > confusing. > >=20 > > Tested-by: Alex Benn=C3=A9e > > Signed-off-by: Sean Christopherson > > --- > > virt/kvm/kvm_main.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > >=20 > > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > > index 080740f65061..b845e9252633 100644 > > --- a/virt/kvm/kvm_main.c > > +++ b/virt/kvm/kvm_main.c > > @@ -3122,7 +3122,7 @@ int __kvm_vcpu_map(struct kvm_vcpu *vcpu, gfn_t g= fn, struct kvm_host_map *map, > > struct kvm_follow_pfn kfp =3D { > > .slot =3D gfn_to_memslot(vcpu->kvm, gfn), > > .gfn =3D gfn, > > - .flags =3D FOLL_WRITE, > > + .flags =3D writable ? FOLL_WRITE : 0, > > .refcounted_page =3D &map->pinned_page, > > .pin =3D true, > > }; > When writable is false, could we set ".pin =3D false," ? Hmm, maybe? I can't imagine anything would actually break, but unless FOLL= _PIN implies writing, my preference would still be to pin the page so that KVM a= lways pins when accessing the actual data of a page. > Also not sure if ".map_writable =3D NULL" is missing. Doh, my previous response was slightly wrong, it's implicitly initialized t= o NULL, not false. I forgot map_writable is a pointer to a bool.