Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp917439pxf; Wed, 7 Apr 2021 15:02:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwuWbPbOuw3s1apMb/0N2I6+3jpQZAcOx1V2D+IwSI31mtwwRkdYY/jC4ZnBn9jKv5IFJ2v X-Received: by 2002:a17:90a:7d16:: with SMTP id g22mr5138784pjl.195.1617832927045; Wed, 07 Apr 2021 15:02:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617832927; cv=none; d=google.com; s=arc-20160816; b=bRAlzEf4OnA4D281EOzc2uIb5aQ2mCqyRJmnPWnqNX0cgOEQasiEPy3tfv48NTFU51 TUz0f3PJWDk9C3prpwAMUOWMbvY1S3Kgt44EjTFKJir8hti/K93mC08u9Oe8hNhi2/IH EZbYlMfz7HsAXghAlkHVCUk9bZpwAWB/ZkRfIJA13ScW+iFeu4ldjg9Jv8WmFCQogZJf Errw1p7K2GAQc4eP3QYmWPJ06uuf46NTCwg3sUlwDpES9nmXu9Eg7ngDUce8LjEAcM4G KPdEEP7XIg04bRHFrETzYP4ink+oVjelu6FFu3iVi2vOp7ZKV31mZaYJtUxHmMLcBmEu QcZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=eLGdfRR8dFUPs6F0J+bXLPIWOTYTSqto3gw+6TNn31g=; b=I9nGEUnludD48fpL1E67lwWWN7Ik626KPn3Ty0up1Zj1iLVBdQOocaw5MA3JHdM180 89mOCNfRDag6AjXnZrP1PbDPWDUBmhTNcQVBLZDFv8avm9B3oclss34PnMOEFSgrSDwO gGpWpSeu6UGCV4QMlacfUVcDkfEvZoqOZTGmPCvMBkhxyDQ6/dX9Unrv6VwRGxNcBgUq XIPo0cVEb3B1o8phhaieeErtqMF/fxZyHjFRvUX0bIFjhwiUgZGt6a7+/4u6qNfC1BWN sJTcpuGnMvHft6BI0MYoKWIRy3vVL2r6QOX9EFz61Np2qsouQ5U/BSNiD3r2gMzTU2rG v7hA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 91si25501516ple.0.2021.04.07.15.01.55; Wed, 07 Apr 2021 15:02:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1356226AbhDGU1J (ORCPT + 99 others); Wed, 7 Apr 2021 16:27:09 -0400 Received: from outbound-smtp47.blacknight.com ([46.22.136.64]:43121 "EHLO outbound-smtp47.blacknight.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1356207AbhDGU0T (ORCPT ); Wed, 7 Apr 2021 16:26:19 -0400 Received: from mail.blacknight.com (pemlinmail01.blacknight.ie [81.17.254.10]) by outbound-smtp47.blacknight.com (Postfix) with ESMTPS id 24D0DFB3F0 for ; Wed, 7 Apr 2021 21:26:07 +0100 (IST) Received: (qmail 17805 invoked from network); 7 Apr 2021 20:26:07 -0000 Received: from unknown (HELO stampy.112glenside.lan) (mgorman@techsingularity.net@[84.203.22.4]) by 81.17.254.9 with ESMTPA; 7 Apr 2021 20:26:06 -0000 From: Mel Gorman To: Linux-MM , Linux-RT-Users Cc: LKML , Chuck Lever , Jesper Dangaard Brouer , Matthew Wilcox , Thomas Gleixner , Peter Zijlstra , Ingo Molnar , Michal Hocko , Oscar Salvador , Mel Gorman Subject: [PATCH 09/11] mm/page_alloc: Explicitly acquire the zone lock in __free_pages_ok Date: Wed, 7 Apr 2021 21:24:21 +0100 Message-Id: <20210407202423.16022-10-mgorman@techsingularity.net> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210407202423.16022-1-mgorman@techsingularity.net> References: <20210407202423.16022-1-mgorman@techsingularity.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org __free_pages_ok() disables IRQs before calling a common helper free_one_page() that acquires the zone lock. While this is safe, it unnecessarily disables IRQs on PREEMPT_RT kernels. This patch explicitly acquires the lock with spin_lock_irqsave instead of relying on a helper. This removes the last instance of local_irq_save() in page_alloc.c. Signed-off-by: Mel Gorman --- mm/page_alloc.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 1bb5b522a0f9..d94ec53367bd 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1559,21 +1559,18 @@ static void __free_pages_ok(struct page *page, unsigned int order, unsigned long flags; int migratetype; unsigned long pfn = page_to_pfn(page); + struct zone *zone = page_zone(page); if (!free_pages_prepare(page, order, true)) return; migratetype = get_pfnblock_migratetype(page, pfn); - /* - * TODO FIX: Disable IRQs before acquiring IRQ-safe zone->lock - * and protect vmstat updates. - */ - local_irq_save(flags); + spin_lock_irqsave(&zone->lock, flags); __count_vm_events(PGFREE, 1 << order); - free_one_page(page_zone(page), page, pfn, order, migratetype, - fpi_flags); - local_irq_restore(flags); + migratetype = check_migratetype_isolated(zone, page, pfn, migratetype); + __free_one_page(page, pfn, zone, order, migratetype, fpi_flags); + spin_unlock_irqrestore(&zone->lock, flags); } void __free_pages_core(struct page *page, unsigned int order) -- 2.26.2