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 04122C52D7C for ; Fri, 9 Aug 2024 17:24:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6DA2F6B0089; Fri, 9 Aug 2024 13:24:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 662D76B0098; Fri, 9 Aug 2024 13:24:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5032D6B00A1; Fri, 9 Aug 2024 13:24:03 -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 31BAB6B0089 for ; Fri, 9 Aug 2024 13:24:03 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 6B0D91C4BC9 for ; Fri, 9 Aug 2024 17:24:02 +0000 (UTC) X-FDA: 82433379924.22.B450A98 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) by imf10.hostedemail.com (Postfix) with ESMTP id 9E453C002C for ; Fri, 9 Aug 2024 17:24:00 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=tlyzY7dV; spf=pass (imf10.hostedemail.com: domain of axelrasmussen@google.com designates 209.85.221.54 as permitted sender) smtp.mailfrom=axelrasmussen@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=1723224175; 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=4QdjlOHuBnkWT9u/9CGI9uaBMM/Qi29TBnTB7AP5Y7M=; b=uW5jVUrw1pggiIeFdQTxtgXUGtGvrEmBpjt+bhMYH82lefogVPaEgM8W9lqfjkyGXJkJnb EE9sekgUvxd4bObDfIRtPrxyMJCNHka76wBlVVNvUZ0UraY/Tuq+caC3D6TCJOxKAOB9rx inkEwH+vL/ilhNaaZcSu4i0R4fb+brA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1723224175; a=rsa-sha256; cv=none; b=yAExpoiztHYwqLlUaDYSp91IGUAQFL7vHBRJmsw5Iu1CT/oqyefp8EnYxXzpb9WWS2Wq21 u6sMt8XXaYRPxnqRj3RrIrHthW6wp03ykfz0O5CviX8T5IvQMZXIxMnNSAYoIalSuhsqJU XCFMa68647vDTEma/vhVX5q2jwxd1Xk= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=tlyzY7dV; spf=pass (imf10.hostedemail.com: domain of axelrasmussen@google.com designates 209.85.221.54 as permitted sender) smtp.mailfrom=axelrasmussen@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-3683f56b9bdso1501332f8f.1 for ; Fri, 09 Aug 2024 10:24:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1723224239; x=1723829039; 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=4QdjlOHuBnkWT9u/9CGI9uaBMM/Qi29TBnTB7AP5Y7M=; b=tlyzY7dVCQlJ79r1vBmEXcWl3X6dBvAXTsyl+h9N6tedNNOiMnitZzTx83VO+vErjP HIiKjz//UsehUSnQ2yKGt+2mjRnvhG+KqdqPZjadCdKp1xFWu0uFCuphvEX/tqhi4Y6H D3b7T9tMOrKvfrsmmws9D3LHfeDbk+VvPL9zISU+ODNoSI4ptne/4+PGrxqG9vp42GcO YyRcWTGfifoOdI9/fyJHBQliM/G4aU9sRPktkFJBbIuyicVaxqQas45lPhcwt2itjTWJ RQTUv7ZxRF7RIy4Oux88h/NdDPbB82aWNsQXESEDSnOBoHPmo/bm/7q4AaczgZQhferq XTzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723224239; x=1723829039; 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=4QdjlOHuBnkWT9u/9CGI9uaBMM/Qi29TBnTB7AP5Y7M=; b=f1xm8/rEQcW7YaGUkbwyEyuf6OHesuhZ2FhtpcL0cUVI4qCDoNJP7tfl0I65zw18vc 6AwGAWjhutbFCRs8J5bNDt2T+aSvGC7kwpjW7bpMfdaQDR4VgChtVPG2CIRcFm39e1J7 VvPIIVqdDHCNNN1v+DhXIyXteTh+gJRxYWI+Duo8T9V/SOzDwzllEqB2L34+eWfW2rOK ICFv7Nj8C8Q/Nydvk+hnNZmpHI/EYBwERAe1+TiPoDDy0mB8T74GSzVu+Se6TWvB/nPE 6zzJaJHy7m14WZF5B22HFg/plaTri/9wPyGNwBsuOiLgwNolZ/LSvOY18z2YimBt7g3F EgXQ== X-Gm-Message-State: AOJu0YzWzuZu1HSUn4IzSuMm9wUL6/96fv6sOtcNJwOS6VRuSl7EhX/h ZMR5LP0Xz6oUGQaLKDwkKv1vEIBLwAQlP7rORptJARBqmtPIsj1pfNgOK1XMOP1R7lmaLq0bNtu UI91QbJpzMkJNeGPh6eOxrdLLNlRH9vaYjYQh X-Google-Smtp-Source: AGHT+IGV1vzsTB3E9qHHAZ2PxwMColOAwLwBW9dzPhmi0xSxisZYI7WVPSVv2jYwNAL5k0yIXCNHSXuqEEMn/3swSXc= X-Received: by 2002:a05:6000:d04:b0:365:f52f:cd44 with SMTP id ffacd0b85a97d-36d61cd2059mr1603070f8f.57.1723224238792; Fri, 09 Aug 2024 10:23:58 -0700 (PDT) MIME-Version: 1.0 References: <20240809160909.1023470-1-peterx@redhat.com> <20240809160909.1023470-11-peterx@redhat.com> In-Reply-To: <20240809160909.1023470-11-peterx@redhat.com> From: Axel Rasmussen Date: Fri, 9 Aug 2024 10:23:20 -0700 Message-ID: Subject: Re: [PATCH 10/19] KVM: Use follow_pfnmap API To: Peter Xu Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Sean Christopherson , Oscar Salvador , Jason Gunthorpe , linux-arm-kernel@lists.infradead.org, x86@kernel.org, Will Deacon , Gavin Shan , Paolo Bonzini , Zi Yan , Andrew Morton , Catalin Marinas , Ingo Molnar , Alistair Popple , Borislav Petkov , David Hildenbrand , Thomas Gleixner , kvm@vger.kernel.org, Dave Hansen , Alex Williamson , Yan Zhao Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 9E453C002C X-Stat-Signature: 4xwuxhfffbac9qcg3qg7xke75jn9y117 X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1723224240-713934 X-HE-Meta: U2FsdGVkX197dXYIV1UZkl8xMPSRajZ3Oxl4X3OjT4sQeGurrj0bKI/aLogOngHhx4vlmUhAveGhlG7nknZEMcMOiiMcWtNq7n7PWARPUxtSStaFqRefV6uHE5NaS+M8+eXq88Kx/EjQzOmUXH/TBozqYDI0USQ/d1TmhZRcM6MN0mL9kQUsvFR4qcsWu4gH0fIuTkN2uzNzq4lcdoN3r0iosdTGfAGAEtHr687GD/7y3Z8I7o/Hwg/fp7+VOtwG1vkpPHA8y1YKPT2LI+Y+nS5r+mcXnhY36c/1IOE0jl4QnN2L2MC3lRoBEUe+/DaNCdBcUMR2SbrUMEQq2Rd40M8CbjHddbl4Yuk2//M3MRdiql0U5BTM6PK6WUqDEKq/fIMmg5bB2SApv6XUIrdDNcDeEhusuP8wqeQwybXuZO/fCTA9nP6FTWwZqLrhkcFN/csa4QFh/AcudJjbTklzOYTC1hP3tl3ry53loBRtS2IatuQbXih52b51PkwULqQErIF9yD5/dMIVK069NDFnsLLnAnIUeLf3RqeqFv29DxRclnfwjWHNP01lv8KjvzjXF85JYdkEqmzaiYF/eHs7V2yNUqFuUzO84vr2qklFfmPj5U5YyjBbeqeQuVYfLKwvNXST1upkcJMc5DvJ0rxANj5M3oCuoZ/Anvc+js1REuyjofxHrJHH+FhwlAKgf6cnCU1LvmMWSuKd06rifPNeJ4xEjtZfHwGf2UVuRuwIHwTKWUxhRytypDEire9YtlaYZNzS47tZXGaeUKP8q1soFtQrnEfmub9D0LuQZNXcAOn5kg0uhmf6rsRTCuDE5dYV6fi1F+7iUMJ8bqwo85yOFAH6iSm0wEG8ffrXRPBpMVbI6h4Ljkellurng2Mm3KKhdMHrLcHD4V3l9PSRCpNB7M72J+xwEZz2Wd8AYStG7GRqZ2EcNSNcEhZ5/Ybfwk2e+aEg8vYqL+IXiR4NPJs Eaj/f7P6 YJh8K0ghBG6Ji+eaHS6k2gTbNtmMnkUnM2mgLuhyExC4bA/V3rkCmHWtevP79yX/HEQibzczyemERAO0k7gdHX/giiOWqApnjsgp8/xQLX1yine/0h6VVNnfIOKLkRl1ixvmFdjnx3woYALQHbCXeexNQvR8vFiF4c5mi4fQN8ohMsHBBQ488lDFSrkyHWHbbg2UAIEO6HGhEDmTwPJ2rc0rmeMHc7rPhu26Y40UcroiFhdTZdwsBE9RJ+C8UG+hZdaZgWJTWZUAEQfE= 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 Fri, Aug 9, 2024 at 9:09=E2=80=AFAM Peter Xu wrote: > > Use the new pfnmap API to allow huge MMIO mappings for VMs. The rest wor= k > is done perfectly on the other side (host_pfn_mapping_level()). I don't think it has to be done in this series, but a future optimization to consider is having follow_pfnmap just tell the caller about the mapping level directly. It already found this information as part of its walk. I think there's a possibility to simplify KVM / avoid it having to do its own walk again later. > > > Cc: Paolo Bonzini > Cc: Sean Christopherson > Signed-off-by: Peter Xu > --- > virt/kvm/kvm_main.c | 19 +++++++------------ > 1 file changed, 7 insertions(+), 12 deletions(-) > > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index d0788d0a72cc..9fb1c527a8e1 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -2862,13 +2862,11 @@ static int hva_to_pfn_remapped(struct vm_area_str= uct *vma, > unsigned long addr, bool write_fault, > bool *writable, kvm_pfn_t *p_pfn) > { > + struct follow_pfnmap_args args =3D { .vma =3D vma, .address =3D a= ddr }; > kvm_pfn_t pfn; > - pte_t *ptep; > - pte_t pte; > - spinlock_t *ptl; > int r; > > - r =3D follow_pte(vma, addr, &ptep, &ptl); > + r =3D follow_pfnmap_start(&args); > if (r) { > /* > * get_user_pages fails for VM_IO and VM_PFNMAP vmas and = does > @@ -2883,21 +2881,19 @@ static int hva_to_pfn_remapped(struct vm_area_str= uct *vma, > if (r) > return r; > > - r =3D follow_pte(vma, addr, &ptep, &ptl); > + r =3D follow_pfnmap_start(&args); > if (r) > return r; > } > > - pte =3D ptep_get(ptep); > - > - if (write_fault && !pte_write(pte)) { > + if (write_fault && !args.writable) { > pfn =3D KVM_PFN_ERR_RO_FAULT; > goto out; > } > > if (writable) > - *writable =3D pte_write(pte); > - pfn =3D pte_pfn(pte); > + *writable =3D args.writable; > + pfn =3D args.pfn; > > /* > * Get a reference here because callers of *hva_to_pfn* and > @@ -2918,9 +2914,8 @@ static int hva_to_pfn_remapped(struct vm_area_struc= t *vma, > */ > if (!kvm_try_get_pfn(pfn)) > r =3D -EFAULT; > - > out: > - pte_unmap_unlock(ptep, ptl); > + follow_pfnmap_end(&args); > *p_pfn =3D pfn; > > return r; > -- > 2.45.0 >