From patchwork Fri Mar 7 13:54:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 14006521 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 85B09C19F32 for ; Fri, 7 Mar 2025 13:54:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1BAE86B0096; Fri, 7 Mar 2025 08:54:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E16FD6B009C; Fri, 7 Mar 2025 08:54:20 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9A64C6B0088; Fri, 7 Mar 2025 08:54:20 -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 5041E280002 for ; Fri, 7 Mar 2025 08:54:20 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 4FA6E80B9D for ; Fri, 7 Mar 2025 13:54:21 +0000 (UTC) X-FDA: 83194899522.26.00FC409 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf28.hostedemail.com (Postfix) with ESMTP id 8B4FEC000B for ; Fri, 7 Mar 2025 13:54:19 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=bCVkhALH; spf=none (imf28.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741355659; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=HxorfBgE1Uv1byaGENr7pDp1WuWnctNAqk3G3c3CU84=; b=ZZ+RMrt/rErPxLA7KMQtbObD7MIE8Gw8wwZbo1tY/gHTwpkiP+LTnnqIqedXRrTAi6gu3m +u7su0lFF34BpRbDioGUlE6UinPw3ld7MnHLc8eyETAyu807bjNqlKtI51F6P3NasBR56a iOQJcrz74gr0vjfiFlHqPVlhhUU9lz8= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=bCVkhALH; spf=none (imf28.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741355659; a=rsa-sha256; cv=none; b=V16w0g7KCz+NQXKxnLCYDFEvaQ4LS5+wiMzOiwpEh9JBBfWkRE8d92OiZxjcnfABKJVqC0 mmxp42QZCgwVm10LgGTB2aqXOzzBg8o2TCrqONnXIz2eBFZV0RYiIGsMzmFrO8H9aXOEjf YqvdglawGRcoGJ89ix9KZ5JuqYp6Fjg= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=HxorfBgE1Uv1byaGENr7pDp1WuWnctNAqk3G3c3CU84=; b=bCVkhALHyYVYY1ZRHBnGCe1QqL 8t9wy2R3quPKYY4KBJyKMDggEYqBMvyCoNB8ICvghWixxhaz2jHMV6kVsIBsS+bOqoviiM8jrxF93 KK7250g/MVmbkejykejPIZUR7m1LWlifvA2DGHN9yI6tQfjMfPBUXmF/5ACR0oDEtKoUqUhDtY5EP qLR1PHgla+HM0OaedXb5zEhjTMpfsPsUkAk/EYR0zSWDnyo9UaJNpVmVJeHbpksEvmq8VwlSllVEm FPc66REQWUxZNFcxxaKY7WUBtHPkb9W77w4/IYg+4Xb6ET1gl7Tnsyb1P0/KRqSHbLzl4c8QG/TFQ dVrqbC0A==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tqY9Y-0000000CXGh-2pLo; Fri, 07 Mar 2025 13:54:16 +0000 From: "Matthew Wilcox (Oracle)" To: linux-fsdevel@vger.kernel.org Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, intel-gfx@lists.freedesktop.org Subject: [PATCH 09/11] i915: Use writeback_iter() Date: Fri, 7 Mar 2025 13:54:09 +0000 Message-ID: <20250307135414.2987755-10-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250307135414.2987755-1-willy@infradead.org> References: <20250307135414.2987755-1-willy@infradead.org> MIME-Version: 1.0 X-Stat-Signature: ehbqtcpjwep3o7jfxfzcr4uwmoomia63 X-Rspamd-Queue-Id: 8B4FEC000B X-Rspamd-Server: rspam06 X-Rspam-User: X-HE-Tag: 1741355659-237564 X-HE-Meta: U2FsdGVkX195yexYD6U1rytb1QT2zGenkbL7PnkyNf6kjQqxD/sRhj2diEebjHcauUMvoS6i5XIlb+Xypvd/IjvBAvcqdSmv1E3MQGiqeYNt8GBA37ZFjL6Rkvxnuc21zB5RBeZ8dK6YBGhnFR0L+6fWCoU7Zoh7H4DvNpc2IRR7b5ebzG9xKVH+bVxXVbyJ3S3CcG8f8AmJ0cup7dEcFQLXjJIkV3iB6LOXblwnupAlXJt1q4iWBrKPxqh42APOxvVs355wPfmHxOU/v22wxkzeG7ZiAiWbC8sD54HPEu4siBZBymXG0L2zJP3f5F1Eb0gPh3oYyfIkVa94P1dMTFNxDs1JkMDBZ6x4luOX1u9dEuUuV5/CLXpSni5RxS7H6JJJSSyLC4FDDxSE3ApfvU10E+GQUTKLRzEZelLi0LuTldWw07Eg1sz0gE7KEqrInRcLLPDNrWIap4kpriLa+2jk9BCvjTssJkKeJOzBOIBPHiwnzdnlFf/JQsOIro8VJQOjvX90GyKRiwjRCpWZUB+r3zW2s7RWwAqoei3pXT9C/HaA8+nTutLVQ9nkJaSCpVUBzkH5oHlIqZxDdXZGcdz+d3LSV6yTjafuTkl6I8F9bFgia7sUOqwXh6DCqYDGe6UWLASfxdtYogHVasI/eSnjbW3uxaAa5wltG3815WFr+YPRzNQfU+qlGVca23/nKkiVMC7Zu6a6MzeZ+cc0GyvyJWRcMZn8x+2YxBWh97WqRHenl4F+Yp5HYm4jXprhrzQStgAvE9bXjaH2mbWl0V2sIiNv5YybGZpaUGm1Hv595dTZWpytzpdtEMJna4vRuMXbutSf5eZ6lrf55uNMEfa96U4tfYJbHO3Uc8rr819KTDBH+B7UkcZOJk1kjcGgCSmcqFIglX97P/HS9zYVP2P383SHiK/0A5Q6iv+gpEmtWWSK9T9DQFHdtOH/CGcMc8oRQdGgnzIHyxg8tkD S0DJBwhZ TQaN/T/rPD7Tx1vzYuifdfHYGmLThN/AB2obBpzrrnmjjp6Ss1PVypqD31UK/DA5uHWnMH2/MLOmxNyHtjcvPsUKH9wqPUUjE/Ivl+cXTSe8iJCAtyBy0O5HqajswwV6r63lhs7ovuiTOvKqscA8JxmB4QzwV9qtGxYj6Y0Upq6PH3nx8owqHDs0lWOUz8MK4hzTJXNZDwn7rQS7zGwLsTn6BOuKFFaMgWn9fgHtfwaNl/GPmsAJc58ErhBcMvZKu5d2H9kjs2t/z8wwLDwAWi+FYpJbo16FAYM6w 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: Convert from an inefficient loop to the standard writeback iterator. Signed-off-by: Matthew Wilcox (Oracle) --- drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 32 ++++++----------------- 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c index ae3343c81a64..5e784db9f315 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c @@ -305,36 +305,20 @@ void __shmem_writeback(size_t size, struct address_space *mapping) .range_end = LLONG_MAX, .for_reclaim = 1, }; - unsigned long i; + struct folio *folio = NULL; + int error = 0; /* * Leave mmapings intact (GTT will have been revoked on unbinding, - * leaving only CPU mmapings around) and add those pages to the LRU + * leaving only CPU mmapings around) and add those folios to the LRU * instead of invoking writeback so they are aged and paged out * as normal. */ - - /* Begin writeback on each dirty page */ - for (i = 0; i < size >> PAGE_SHIFT; i++) { - struct page *page; - - page = find_lock_page(mapping, i); - if (!page) - continue; - - if (!page_mapped(page) && clear_page_dirty_for_io(page)) { - int ret; - - SetPageReclaim(page); - ret = mapping->a_ops->writepage(page, &wbc); - if (!PageWriteback(page)) - ClearPageReclaim(page); - if (!ret) - goto put; - } - unlock_page(page); -put: - put_page(page); + while ((folio = writeback_iter(mapping, &wbc, folio, &error))) { + if (folio_mapped(folio)) + folio_redirty_for_writepage(&wbc, folio); + else + error = shmem_writeout(folio, &wbc); } }