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 CDD53C636D4 for ; Mon, 6 Feb 2023 17:35:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3C0926B0073; Mon, 6 Feb 2023 12:35:08 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 36EF26B0074; Mon, 6 Feb 2023 12:35:08 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2105F6B0075; Mon, 6 Feb 2023 12:35:08 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 11BEB6B0073 for ; Mon, 6 Feb 2023 12:35:08 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id C8DA0C093C for ; Mon, 6 Feb 2023 17:35:07 +0000 (UTC) X-FDA: 80437567854.20.460E6C5 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf13.hostedemail.com (Postfix) with ESMTP id 9B2882000A for ; Mon, 6 Feb 2023 17:35:05 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=BS9M2uee; spf=pass (imf13.hostedemail.com: domain of david@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=david@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1675704905; 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=jM3yz1/CdNW/7tihG2/pnV5Gi2gFkXA+A8kzq/11fxc=; b=VdPiVqpDZ3Y8nN4cTlS1yz9wiDOYUgRihGQUXsed91cZHAgRZ3x9oH71c9b9gcr0SZawDv tLbQWIkB1BLFjj4wHEhcng5aDS4jbojlQdz0t0X/Kr6nggV3i0BrFK9kNvWuABnbhaktZ+ FD3wexgX4mI3usWZuO75K53nwiUTJew= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=BS9M2uee; spf=pass (imf13.hostedemail.com: domain of david@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=david@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1675704905; a=rsa-sha256; cv=none; b=gCz5wiY7xPsXiD2+TYEzhEXe8zNJK7ys2HY1EjT58y7xeq2t9neg2Vr7cKsb0MKzbzSsZQ 5A51hysJr85VdB1vxu4deqhNk5V8N9jQUbc7NDUoMXckl6MMHZsFwgASe+24t+oYXn+xQc c79eEJf+PjXs0iR+01vsUMw9uxKK3Dg= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1675704905; h=from:from: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; bh=jM3yz1/CdNW/7tihG2/pnV5Gi2gFkXA+A8kzq/11fxc=; b=BS9M2ueebuhuIJFsewQyKYbmJx4YGeyoVbCfiXMeVx49ZcBkFkgEjqGftaEjAqP0aYdiu2 CQjLCF3RBkk3iihPKpOs19QU0fsL87zY0xlh7tTGDhg4FnuA985NFUiYHUQUqKZ9az0cJW 935f+o2Wf1lQFqQU7Xf8CJeWMGltlgM= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-48-1p-sQlFpNsmueZSa8ZCkng-1; Mon, 06 Feb 2023 12:35:03 -0500 X-MC-Unique: 1p-sQlFpNsmueZSa8ZCkng-1 Received: by mail-wm1-f72.google.com with SMTP id m3-20020a05600c3b0300b003dfdc6021bcso5867964wms.3 for ; Mon, 06 Feb 2023 09:35:03 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:subject:organization:from :references:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=jM3yz1/CdNW/7tihG2/pnV5Gi2gFkXA+A8kzq/11fxc=; b=aNWK6XVAKBBM/g2Y8giO+KvGce++5B4pCYWYuqjPGKuX0BHqZSyDcyfT/X64ftifkf vE9ejf+gu/9+MteUA/4n5d8oZkqqH8PxXOLup1E6FkPxz1anFk/Fco876O5n7UTN/EA3 zrUvAtNDK3Zh4qDxWrivTvhsyE93sjoGFpGUmssNSiE3WipVFuV3NA6QjphvcmaYyzv6 ReaC9xSW6mXAQVRhnKi2/BCyQKHjl9h4v5FZINQ1ZPCpjRt4Uth6gpy2pwgTXkiEp68b KJpOYMZwyCemD2iTHbHNrXHIPboukFtrUVCm3Fdmc08SEi2HDh1Q62dMnRG+m7lgOClR vIdA== X-Gm-Message-State: AO0yUKVACrxew1P3jqIw7eR/GNzGkTc9moqQSNPBcui3hiNgGL+tVR8P OcmkODNd2Rrzn1AzsaN6EZlI6w9Dpg2ewW67JdYfsSUnYt69tCykhiVC4s4rUxArGPbeOHuaa8n idNxUmbJtTWY= X-Received: by 2002:a05:600c:16c8:b0:3e0:185:e935 with SMTP id l8-20020a05600c16c800b003e00185e935mr448957wmn.36.1675704902595; Mon, 06 Feb 2023 09:35:02 -0800 (PST) X-Google-Smtp-Source: AK7set+uB2XUdfZvUQlDLJAYh28qbHQBnf/zKcbzmnpBb70gs28e0FOse9YPSkXj8czzEyVJfiKYKg== X-Received: by 2002:a05:600c:16c8:b0:3e0:185:e935 with SMTP id l8-20020a05600c16c800b003e00185e935mr448942wmn.36.1675704902281; Mon, 06 Feb 2023 09:35:02 -0800 (PST) Received: from ?IPV6:2003:cb:c704:6200:8129:46d3:fa82:23f8? (p200300cbc7046200812946d3fa8223f8.dip0.t-ipconnect.de. [2003:cb:c704:6200:8129:46d3:fa82:23f8]) by smtp.gmail.com with ESMTPSA id w15-20020a05600c474f00b003db0bb81b6asm12464340wmo.1.2023.02.06.09.35.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 06 Feb 2023 09:35:01 -0800 (PST) Message-ID: <92db3808-8553-6f51-d181-2bbb14f1ccf2@redhat.com> Date: Mon, 6 Feb 2023 18:35:00 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 To: Matthew Wilcox Cc: "Yin, Fengwei" , linux-mm@kvack.org, dave.hansen@intel.com, tim.c.chen@intel.com, ying.huang@intel.com References: <20230206140639.538867-1-fengwei.yin@intel.com> <20230206140639.538867-4-fengwei.yin@intel.com> <7c8d3d2c-35e3-5be4-684b-4b991a0adb8e@redhat.com> <400c5fb6-11ae-7771-07e0-538ebe652b2a@redhat.com> <9131d33a-1640-e29e-1ad0-2fb69572bf28@redhat.com> From: David Hildenbrand Organization: Red Hat Subject: Re: [RFC PATCH v4 3/4] mm: add do_set_pte_range() In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 9B2882000A X-Stat-Signature: 658xqn3y9kqi4h8cbknt6nugf68kijsn X-Rspam-User: X-HE-Tag: 1675704905-950541 X-HE-Meta: U2FsdGVkX1+ejhVlVevRcK4OSyF7k3R4sA2snDjEeCCz0ZHxRqkjm5Nbv8WTUH0VduuFXPft6Z8U+N+NDxQqKV6rR9w4dxjOBIsECYgDKqPaRdB4dBss/7kYO4K9JsLwMONOak565Wb6QJwGhmbL1tj6MCddk3V8N/C0I8cUc//2+aj4eVVTfSzlNfHnhQCzdkJMJU9PrMyXnQkM+UL0n+wyOC2nFyHzH2LrhxhS/rmKyb0OkpUQcUPe676zlbEdocsoZ76WMdmDWpzym88jjC7xwrvRdaNi9NVWOS41m9uBYQwSHJJgdoyum1CeCRLNr526yobz7suD+jIfCEJKSDoeeckCSF+pB1MmrOWBjcnz1Va1wI1bNVjuM9t7zlxPtNpgM/2sx/Ap1fhdEiPa5Z2bOTKrsfCQW4i6jRtF4bDz83UHP6ud9GdCJLmdMaIMVg6ClvyxmO8EcJDjHjYrUdU/Npc7Lbkgz7u8Y9P+s64TcI26OVHmokvi/KNQ0fu6AWvbejrOFnKP01vQovVTZbC4FxwgMrJ67eBYcxFwUwKsSRcskEAHqdhmk/W6im5i1H3rdaLQLRLg9XMO0qeF5TLQTn3/HsMLalrTv3i8mIcXZy4eejf266Wdg/01DHia5zA/Ub4FhRuiiMn7CsXogTL+Gnb90kicljqm2UbSceiHLMYAHlyJL2Gp8DVVPaizPCsX1h3nHu213MwkT2mif0rCm5/BsG0mYjsWSsjNmVGURs4MmHfIn6NE3uJ7hYNlD0U0Ezu3/ZxHvzEkr2w90ch3hIdHYtM+W7q00skUdkJPjvCIYjhXMPIwYyBI6lzsR9gzOWO6B/GFnYu+ftGhdoFtJk0PNsvaHMDNVQSAYUz2tJl/c86tr+I/uIitriRMDT6cFDygbb2WJI6lWXc3jYIftw85eKFvN0bEFsSxqRO10coXDxlq+47kd28rYsVVO1v/gSYwApBoQKbKM8y ZXsMZN+Z UONDksJNHljUn/tt1b+mCZSuT6gqL/S3Ed16j3gra33WRvh6UiJlTcR8PuZ3Sz8ArqGkSyX19fevKbQjrV/R/MVGGG1/cc2ygnOZJVYZeXKhDUCE0xh/kpPXqFM/iAk2gDiJtcEJP+X3SX9ooNdUhkMXt8HlqhuBztpVD+mWbAAgfu8efyAdOwLpsAbqUt6qLiJP6vgpQcsolXOvBnhuaoj+4DZUkYNGBjf4RMSV1owUD/F+YuA8nDJLS2BSJrUiBjDTqXGOvdQ5jWuB25EBb2yIk/ZRIvBAF3xKPYd3eV/DjXQTeafqf24wLlDZu3tXIZIRxhAMm+pfvzKbnDE2mXp87CA084Rjn2eWNMfGweNeXYUJVv/OJ1xqy2nlg6bjmL2ZUa7Cagcw00wQPd2+w0g0na3mXFOAhdk3AbJMuGPY0QzNK9YsPQChHs4zwjFlZhiwa 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: On 06.02.23 18:10, Matthew Wilcox wrote: > On Mon, Feb 06, 2023 at 05:49:20PM +0100, David Hildenbrand wrote: >> We have >> >> + if (!cow) { >> + folio_add_file_rmap_range(folio, start, nr, vma, false); >> + add_mm_counter(vma->vm_mm, mm_counter_file(page), nr); >> + } else { >> + /* >> + * rmap code is not ready to handle COW with anonymous >> + * large folio yet. Capture and warn if large folio >> + * is given. >> + */ >> + VM_WARN_ON_FOLIO(folio_test_large(folio), folio); >> + } >> >> now. >> >> What are we supposed to add instead on the else branch instead that would be >> correct in the future? Or not look weird? > > Right now, I think this patch should look something like this. > > diff --git a/mm/memory.c b/mm/memory.c > index 7a04a1130ec1..2f6173f83d8b 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -4257,15 +4257,18 @@ vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page) > } > #endif > > -void do_set_pte(struct vm_fault *vmf, struct page *page, unsigned long addr) > +void set_pte_range(struct vm_fault *vmf, struct folio *folio, > + struct page *page, unsigned int nr, unsigned long addr) > { > struct vm_area_struct *vma = vmf->vma; > bool uffd_wp = pte_marker_uffd_wp(vmf->orig_pte); > bool write = vmf->flags & FAULT_FLAG_WRITE; > bool prefault = vmf->address != addr; > pte_t entry; > + unsigned int i; > > - flush_icache_page(vma, page); > + for (i = 0; i < nr; i++) > + flush_icache_page(vma, page + i); > entry = mk_pte(page, vma->vm_page_prot); > > if (prefault && arch_wants_old_prefaulted_pte()) > @@ -4279,14 +4282,15 @@ void do_set_pte(struct vm_fault *vmf, struct page *page, unsigned long addr) > entry = pte_mkuffd_wp(entry); > /* copy-on-write page */ > if (write && !(vma->vm_flags & VM_SHARED)) { > - inc_mm_counter(vma->vm_mm, MM_ANONPAGES); > - page_add_new_anon_rmap(page, vma, addr); > - lru_cache_add_inactive_or_unevictable(page, vma); > + add_mm_counter(vma->vm_mm, MM_ANONPAGES, nr); > + VM_BUG_ON_FOLIO(folio, nr != 1); ^ what I asked for (WARN would be sufficient for IMHO). I don't precisely care how precisely we tell the educated reader that this function only handles this special case (I could even be convinced that a comment is good enough ;) ). > + folio_add_new_anon_rmap(folio, vma, addr); > + folio_add_lru_vma(folio, vma); > } else { > - inc_mm_counter(vma->vm_mm, mm_counter_file(page)); > - page_add_file_rmap(page, vma, false); > + add_mm_counter(vma->vm_mm, mm_counter_file(page), nr); > + folio_add_file_rmap_range(folio, page, nr, vma, false); > } > - set_pte_at(vma->vm_mm, addr, vmf->pte, entry); > + set_ptes(vma->vm_mm, addr, vmf->pte, entry, nr); > } > > static bool vmf_pte_changed(struct vm_fault *vmf) > @@ -4359,7 +4363,9 @@ vm_fault_t finish_fault(struct vm_fault *vmf) > > /* Re-check under ptl */ > if (likely(!vmf_pte_changed(vmf))) { > - do_set_pte(vmf, page, vmf->address); > + struct folio *folio = page_folio(page); > + > + set_pte_range(vmf, folio, page, 1, vmf->address); > > /* no need to invalidate: a not-present page won't be cached */ > update_mmu_cache(vma, vmf->address, vmf->pte); > >> Go on, scream louder at me, I don't care. > > I'm not even shouting. I just think you're wrong ;-) > Good ;) -- Thanks, David / dhildenb