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 AED77C282D1 for ; Thu, 6 Mar 2025 09:25:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1FBD2280003; Thu, 6 Mar 2025 04:25:06 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1ABAD280001; Thu, 6 Mar 2025 04:25:06 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 04BBF280003; Thu, 6 Mar 2025 04:25:05 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id DC55F280001 for ; Thu, 6 Mar 2025 04:25:05 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id A2FF0B87BD for ; Thu, 6 Mar 2025 09:25:08 +0000 (UTC) X-FDA: 83190592296.02.77B3E89 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf19.hostedemail.com (Postfix) with ESMTP id 38CB21A0002 for ; Thu, 6 Mar 2025 09:25:06 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=azUKr6Be; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf19.hostedemail.com: domain of mpenttil@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=mpenttil@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741253106; a=rsa-sha256; cv=none; b=TE9nXbdGB8081MlT4jJG24ccGmdlC0xP5Z9WhFj4PYdYGmwh8kgT/MxDtPhbwJRmWdgm13 1aIiKrwVSzXfvjFxv0daU4ZqF0Enu6JEC0SAjux+SWm+E1ivQ4JNUJY75jsfAniCh8fkY/ KhkwNTsR0kUUvt4w11d/TPljfLijd6Q= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=azUKr6Be; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf19.hostedemail.com: domain of mpenttil@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=mpenttil@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741253106; 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=WM7yWeObA9CF+Z7/sodqheqkakLF4KM63V0xRYX1Nzs=; b=BbXjNvyExhTigu1bCnItJkPSsLt/KA+cJ7C4RFQes17VL9RcikIuODbVMFrLpc1Y+wokDy gqX7DmeFeueWbBwOxs+IkwkYclV0MYVaE6/c9q4TtU3JBA7XrNs5GbE6wwWq772wUmLN2/ GFpT8UseQlzD84i3TBfVBTht6MzRzkQ= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741253105; 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=WM7yWeObA9CF+Z7/sodqheqkakLF4KM63V0xRYX1Nzs=; b=azUKr6BekudV7SzVC6NJ0GyX87ZlDPDP8et4FdB45VdkfP0mz2SxyBJE0OVeQ2geVtC2QM DO9x6So5bdqaMCuEmgGjeCGslpVRHEzt1d6fGYvWfDDm7obhEoh4+A4Q4PoWGsKVEruTym 5cFUVeZhZhxAckP5Q08Rh8v5BO73wj0= Received: from mail-lf1-f71.google.com (mail-lf1-f71.google.com [209.85.167.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-680-1l9Bz3OkMF2sj6N7_vYAkA-1; Thu, 06 Mar 2025 04:25:02 -0500 X-MC-Unique: 1l9Bz3OkMF2sj6N7_vYAkA-1 X-Mimecast-MFC-AGG-ID: 1l9Bz3OkMF2sj6N7_vYAkA_1741253101 Received: by mail-lf1-f71.google.com with SMTP id 2adb3069b0e04-54966c49a34so295444e87.0 for ; Thu, 06 Mar 2025 01:25:01 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741253101; x=1741857901; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=WM7yWeObA9CF+Z7/sodqheqkakLF4KM63V0xRYX1Nzs=; b=MOw2cjm94pwiDXV2ulo0H1nzXT1qoV4Tt0qdG+SMV7cgm2r8yTVD8TcTPWgf2qij2z j9eKzAwyaqtY9xx/O+Qar4aOTGsPxq0fRC6akFBGIf4vx19jdOi4IX4UunvqweiHUmyE RnXSPzps4HYlXx4DJEujWFnP/ftIqhauHtSqOmEI3vloKZSwwr54/FAM+F7iZvbanexr uXDcpGzdBhJ380TKBbcvUcRbeBPhjMjQZIhFzEBmi/Gyz+Zfykiz+9nOMhTYdE/Noily MVhT4AWTe6wpVRxgofLMLObt12INfxoB6oiKH6gXnrMX9YTXb0VlHTomy1ljnlb2vb9C K3oQ== X-Forwarded-Encrypted: i=1; AJvYcCX/DWY5OSo+yB2YTzq0Vbd5ji70rGgWEURFkJPq3bNwiAx8sOWa9+uJLdIKfUiqvcniG2kcENDebw==@kvack.org X-Gm-Message-State: AOJu0YzF3pUz3tiVXF0KYl7w+YzQiJcKErIki5e8QuJje+vWCFWZlCgD LO1p0QUWMHbVdvZAKpx2k74G94r7FF1ZiChkOPm2Vm+VbFwSwcotZ4XWHwZwZ1XILU7L5lfn7FX oNcAEW0Y9+we2l8sdUvfqCueIqc+xR2gRD+QDRl0zmfEIZj4= X-Gm-Gg: ASbGnctj7NVmierboZ3UsN5yv+1w0D9280mxXg4KT3G3uhzdSF5slQCyVJmVllUKVQr 7WH0nSTdpx5b2FrshVDcOuTS9nLufAOYyhzeJ6J8VpZ4ZT/bv5OhQA9cRRQLn++DQIIK3aEHEWN tgSEFJYJ9VJP5N5hIv1jFANZOrM0ITdjBhKZ+i/1UMUEaNh1vFoZA3VOkSgMIQUj1rUUUYJ9LIb SPNQD2mXupmLU7Hu6FWH4kTy+CGodrFRK9rYz08moZ01laC261N7QsGBimjDTUpri+I155K24z4 mDwz3ClkrC6nBeSD+EsN6DWhxkJ7XAFGXsSOeyakyg== X-Received: by 2002:a05:6512:6d2:b0:545:2eca:856 with SMTP id 2adb3069b0e04-5497d330b21mr2679357e87.9.1741253100609; Thu, 06 Mar 2025 01:25:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IEIwq38VGt7y79hXuVQM/A10zAVLGVX2sPPrzqn5KFw8tGh93hCxrMBcCyARSUv3U5pfE1Fzw== X-Received: by 2002:a05:6512:6d2:b0:545:2eca:856 with SMTP id 2adb3069b0e04-5497d330b21mr2679341e87.9.1741253100141; Thu, 06 Mar 2025 01:25:00 -0800 (PST) Received: from [192.168.1.86] (85-23-48-6.bb.dnainternet.fi. [85.23.48.6]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5498ae5904esm118763e87.76.2025.03.06.01.24.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 06 Mar 2025 01:24:59 -0800 (PST) Message-ID: <3dc94555-ae24-407f-8ac3-277b911de5d9@redhat.com> Date: Thu, 6 Mar 2025 11:24:58 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC 04/11] mm/migrate_device: THP migration of zone device pages To: Balbir Singh , linux-mm@kvack.org, akpm@linux-foundation.org Cc: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, Karol Herbst , Lyude Paul , Danilo Krummrich , David Airlie , Simona Vetter , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Shuah Khan , David Hildenbrand , Barry Song , Baolin Wang , Ryan Roberts , Matthew Wilcox , Peter Xu , Zi Yan , Kefeng Wang , Jane Chu , Alistair Popple , Donet Tom References: <20250306044239.3874247-1-balbirs@nvidia.com> <20250306044239.3874247-5-balbirs@nvidia.com> From: =?UTF-8?Q?Mika_Penttil=C3=A4?= In-Reply-To: <20250306044239.3874247-5-balbirs@nvidia.com> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: Ve6Ylm5jmTQhyB0T5Bw3foLlnTfA9o2ckd4381WlSZg_1741253101 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 38CB21A0002 X-Stat-Signature: ubqsp77ymkgzukqpirwcmdshmhdwen6f X-HE-Tag: 1741253106-844603 X-HE-Meta: U2FsdGVkX1+FIqcy0Boo8mahQBzBpNHOLTiEmCpK8Nch/mN/Jje6EG2C/G+3MMi1zIpvAemLiLVIQoYW5qyQFegaWD+/DNmpHaDnK43ZuX/4By7hh3G4VJ2136az7AGcVVS36slykXOOoWeKgWEUyR0Ca8VPQIewrFx56oXRLUaeUtWqjafu1rukHz+hbII0TfyFUs4VLqQogd8Ncx3UC9Wv9AZBEdg6gOINBuIPJbBPQaHlU+gp0KJzAwg9RCnj6eQ88YaM9PqdI9WeFsn1oSWyti12f2e1huIaifSDHSpaBxtYjaKl67MxZkthMpq/4mluuQDCM+7ewBbkxWospPco2ZCMiEmR5saw3k/yA8HuCAK6xvI/sfSdblnxsyyk8MFb8XSdiN1YXcrVWRW04Ujw5T+EAtxHwXoR8XSryXdeyw+f5yXUmUT9UKPhnZT4VcT/55YZPPCd2pubXOhHGm3MaxRyJofZ/pBWVrvSsxkGSOdoEomyaz5DpCJEJCb0pj2lbePXxL5E2PvV8muJmT2ahYyjnAcPAcdmm75407NIsgYGkws2o96oIlwreGLqVUuMq1Zzw87WnT9byxAJRRik5YHPyoLSwL/ztJUUzyO9B7qe/Z2Y7qIjbUTC8XvMMk4K1xJNGatH6sFFG+E2ZRQEPlj4QskqoXs5tIGGUORq8PA2MmHvnjk06kDrRb9h1WPqoI/APPVApz+I1nvKYgWfWGPwx3uBBd2JiK4wIs72vjoWTfWV8fbOOcqsacn4zsUF+qqAgGLPdgOmjrvHmD/RDaJGAu2UEZwB4X5skQQCgonknKKNxv+/WSbg2XuaQT54x5cNcmAfUI6GDTabCcOCVEzHrMFzndJEa9/evkB0hOClMSi5QSjnZcIb39jCjLO9OqGE//feJ+9to5AZC207Z7IXQaSSbaJQDQU3Lwj8XsDsB2ZiJVCb/J2yN3cwQNYD6HO/UnPNf2jBUAA mMIlhx1O XI7Cu2FnXr+tA1u86tYj72fwzWJu547kahcnQM6HG/yCduqwds3xzniXUMeI6Vm4dQ2fKX1U1JMDwXPrpPtxEbfFIj2uXS+nOcHJdCRobVFZGRBDxLtB2yPQVnpRP/7knPZyBRBF5PN37MsSF81wCWZ2BIqYfnkLDC/q178vgIkmQAMiI32L9w0WF3NgDwmeNfW4lfUg5EL3ZpqnSgPStq4RV8emX6j1x18ueFxSYIatdDc4gUerAAnvAA99Toh3z57hAowReFh68eGHq23gO5evQO98P5gSeKqSENbcIofI9Bp++005RujWmGLzY5l6BInhgHo6aTMlb7viVoHp/UZjZdd5Zi2UOOyuy6/Afcr1PlGuPNYl+cWMLjIO3wZCDUiw2ttjTBmjPvfd93Ek0HCpy7+olIdohEwCgf4TZuQlKhAMXv5TVLeRcuCy0MFl5gEslcpuuFmxnfIw= 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: Hi, On 3/6/25 06:42, Balbir Singh wrote: ... > > /* > * The only time there is no vma is when called from > @@ -728,15 +1000,47 @@ static void __migrate_device_pages(unsigned long *src_pfns, > migrate->pgmap_owner); > mmu_notifier_invalidate_range_start(&range); > } > - migrate_vma_insert_page(migrate, addr, newpage, > + > + if ((src_pfns[i] & MIGRATE_PFN_COMPOUND) && > + (!(dst_pfns[i] & MIGRATE_PFN_COMPOUND))) { > + nr = HPAGE_PMD_NR; > + src_pfns[i] &= ~MIGRATE_PFN_COMPOUND; > + src_pfns[i] &= ~MIGRATE_PFN_MIGRATE; > + goto next; > + } > + > + migrate_vma_insert_page(migrate, addr, &dst_pfns[i], > &src_pfns[i]); > - continue; > + goto next; > } > > newfolio = page_folio(newpage); > folio = page_folio(page); > mapping = folio_mapping(folio); > > + /* > + * If THP migration is enabled, check if both src and dst > + * can migrate large pages > + */ > + if (thp_migration_supported()) { > + if ((src_pfns[i] & MIGRATE_PFN_MIGRATE) && > + (src_pfns[i] & MIGRATE_PFN_COMPOUND) && > + !(dst_pfns[i] & MIGRATE_PFN_COMPOUND)) { > + > + if (!migrate) { > + src_pfns[i] &= ~(MIGRATE_PFN_MIGRATE | > + MIGRATE_PFN_COMPOUND); > + goto next; > + } > + src_pfns[i] &= ~MIGRATE_PFN_MIGRATE; This looks strange as is but patch 08 changes this to split and then migrate. > + } else if ((src_pfns[i] & MIGRATE_PFN_MIGRATE) && > + (dst_pfns[i] & MIGRATE_PFN_COMPOUND) && > + !(src_pfns[i] & MIGRATE_PFN_COMPOUND)) { > + src_pfns[i] &= ~MIGRATE_PFN_MIGRATE; Should there be goto next; or similar here also, we are not migrating this src? > + } > + } > + > + > if (folio_is_device_private(newfolio) || > folio_is_device_coherent(newfolio)) { > if (mapping) { > @@ -749,7 +1053,7 @@ static void __migrate_device_pages(unsigned long *src_pfns, > if (!folio_test_anon(folio) || > !folio_free_swap(folio)) { > src_pfns[i] &= ~MIGRATE_PFN_MIGRATE; > - continue; > + goto next; > } > } > } else if (folio_is_zone_device(newfolio)) { > @@ -757,7 +1061,7 @@ static void __migrate_device_pages(unsigned long *src_pfns, > * Other types of ZONE_DEVICE page are not supported. > */ > src_pfns[i] &= ~MIGRATE_PFN_MIGRATE; > - continue; > + goto next; > } > > BUG_ON(folio_test_writeback(folio)); > @@ -769,6 +1073,8 @@ static void __migrate_device_pages(unsigned long *src_pfns, > src_pfns[i] &= ~MIGRATE_PFN_MIGRATE; > else > folio_migrate_flags(newfolio, folio); > +next: > + i += nr; > } > > if (notified) > @@ -899,24 +1205,40 @@ EXPORT_SYMBOL(migrate_vma_finalize); > int migrate_device_range(unsigned long *src_pfns, unsigned long start, > unsigned long npages) > { > - unsigned long i, pfn; > + unsigned long i, j, pfn; > > - for (pfn = start, i = 0; i < npages; pfn++, i++) { > - struct folio *folio; > + i = 0; > + pfn = start; > + while (i < npages) { > + struct page *page = pfn_to_page(pfn); > + struct folio *folio = page_folio(page); > + unsigned int nr = 1; > > folio = folio_get_nontail_page(pfn_to_page(pfn)); > if (!folio) { > src_pfns[i] = 0; > - continue; > + goto next; > } > > if (!folio_trylock(folio)) { > src_pfns[i] = 0; > folio_put(folio); > - continue; > + goto next; > } > > src_pfns[i] = migrate_pfn(pfn) | MIGRATE_PFN_MIGRATE; > + nr = folio_nr_pages(folio); > + if (nr > 1) { > + src_pfns[i] |= MIGRATE_PFN_COMPOUND; > + for (j = 1; j < nr; j++) > + src_pfns[i+j] = 0; > + i += j; > + pfn += j; > + continue; > + } > +next: > + i++; > + pfn++; > } > > migrate_device_unmap(src_pfns, npages, NULL); --Mika