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 76BE9C71121 for ; Wed, 28 Aug 2024 20:14:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C96396B0082; Wed, 28 Aug 2024 16:14:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C46636B0083; Wed, 28 Aug 2024 16:14:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B0DB26B0085; Wed, 28 Aug 2024 16:14:05 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 995FE6B0082 for ; Wed, 28 Aug 2024 16:14:05 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 5A910C0723 for ; Wed, 28 Aug 2024 20:14:05 +0000 (UTC) X-FDA: 82502755650.30.FD16E2D Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by imf21.hostedemail.com (Postfix) with ESMTP id 762AB1C001E for ; Wed, 28 Aug 2024 20:14:03 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=fJHVz0uQ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf21.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.221.41 as permitted sender) smtp.mailfrom=mjguzik@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724875945; 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=hDhRF3a1TWvDvUzGxnSYhDAvIHT22WKK+VnaRoNWpX8=; b=1zBdaTStaJVmIpEYIKG6aFa5Xb6rTIU1me+8VUzxPQkyk0qgBzYnt2y9otNWWSjZ1cHG+M Txh6L/JeyPxZ57WdV4JbX9F876/Nv56anSIMhIcbGKJtsPkRXXC4eEgI3ddkpH9567m9l4 nE5c9vg3VgtCLXwvbs5m5QpZtWwfPgM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724875945; a=rsa-sha256; cv=none; b=GGUsgEBYLmuNehCsuVu1LlMGUy0oLIlpF+xEb4qZ5LsINhIwx5uvRoTZL2Nci0s2d+v19p jA0qifudGsm9QDpb8F9jPOOA9wcCwL0WcBhAmqBk44PeNUwYnN0wK04u4kiwSz/WtkJG6Q PkJA0WZjG+lqeec3A2N3vzqAwYQtrvk= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=fJHVz0uQ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf21.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.221.41 as permitted sender) smtp.mailfrom=mjguzik@gmail.com Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-371a92d8c90so3704323f8f.3 for ; Wed, 28 Aug 2024 13:14:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724876042; x=1725480842; 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=hDhRF3a1TWvDvUzGxnSYhDAvIHT22WKK+VnaRoNWpX8=; b=fJHVz0uQxsZr/+2PWWY3XhGhpKfvPSo/Y9cMMbZeCnRpLE2hrXz+3Ug/x9/deDPbee lDz3mpHJMGLKhNgk1UY/MDcmPct8UbYDZqCxWDuqhFF7QiTxwDkPhC8QmKMRWtX0Opmv iBgEuuokJ6NgrMaVSxGa7SuYb+xRDYMRlsmlt5mbIR9HoZAONkGpzsMZY+UebpUTRjKT 3N9FkFZgGtu2vtOGRcXdX08RKUZuiLkxl9r+KmntBCfAHHoUb2+GQ1YAGzg8IU0SoXal xTdbVNOC4KGFsmCs00bV4+sOcyEMGg8ed/AJdA0Klvssf9hJbuloeXynZmn3nOSnlUWw xYsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724876042; x=1725480842; 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=hDhRF3a1TWvDvUzGxnSYhDAvIHT22WKK+VnaRoNWpX8=; b=aKrYZ5l/0SM/BeYh1YZEDNQLpGgoKh/uB2z/FP4rC3gZFLBccod+wn/Dd/TbxKFR40 iYaELAu8m4npbzU2HvlmG/gULzGCnNZVpF5ArhQGl1O+xrUzTnnMBBtHv694aervjwI9 tqZHZbfmKt5M06JhVMBNNHHi05Nm76zsb6IwERlN4kNCC3R/wO/Lx6q6yokuFR6R9OJD jfPcSPWf0efhxhh4EE6j7+NCcSZXgQVHDDcBR0G9ltTDo7o/ZFjxE4oNyxscZBe/o64X 7jM/JeD+ApLUMR73KeOktw/aHWIB2yy8fx01z5Y7xBqecsceQNGGt6odj9IfafKHrpUa tPEA== X-Forwarded-Encrypted: i=1; AJvYcCWamFZ6nv2GZ/YvuiBoRoH7ZHt9yfbjEGXH5EJSIyNiM4ty9MMTgvUe2zxscb7VOA1QIycdC8nxsQ==@kvack.org X-Gm-Message-State: AOJu0YzSvyaWdeWvcQsMQC1kx5rBhUa4aXhV9s2XOymIzhgc2lIJWBvo oOMxI13zVvjoGvCZhVKPXPK0SxPnPVB2Wwplxl5tDpfbNpPOg3mCJK6G65+FFjGOX+oG3IO0Tq1 G/HDZgqpasLOt9bWmeAkziPrj3Fw= X-Google-Smtp-Source: AGHT+IG2/4LLqNcmPGBSp3apsRIuJxUkG7hn1rGxzpIJ00o3ezT5tylYduiNcb2XIGOnNfejSpwmPdt+N/acB+CmPWM= X-Received: by 2002:a5d:6606:0:b0:371:8ed7:49e9 with SMTP id ffacd0b85a97d-3749b548f9fmr431328f8f.26.1724876041552; Wed, 28 Aug 2024 13:14:01 -0700 (PDT) MIME-Version: 1.0 References: <20240828160704.1425767-1-mjguzik@gmail.com> <20240828124929.db332259c2afad1e9e545b1f@linux-foundation.org> In-Reply-To: <20240828124929.db332259c2afad1e9e545b1f@linux-foundation.org> From: Mateusz Guzik Date: Wed, 28 Aug 2024 22:13:49 +0200 Message-ID: Subject: Re: [PATCH] mm/hugetlb: sort out global lock annotations To: Andrew Morton Cc: muchun.song@linux.dev, dave@stgolabs.net, linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 762AB1C001E X-Stat-Signature: q1n4egwri5jbhz7ko4e7fz8geawbq9bm X-Rspam-User: X-HE-Tag: 1724876043-922327 X-HE-Meta: U2FsdGVkX1+wTqwnHbumlLfDqMJ5gI44b1ASRK0z0X6rkc8RfyXLey4Q9WPqtn0Bke/uTXv2hYbQtaM6UGAtePjcevKTGA1moluKb9xIK6CfyYJww0LDx+exxfV6vyU7bRFEg5yTyRfnkBr5+Gbn1AFhp4pOTwNc5080SeJUVYK0CErlH2QMspWhGq9rysr2Dl3gwYVOrYbdsUc3v2bVMwRzLaQQM/HXCIopNbZBxiUF2D1BC5TFRTqokjIfbKISyj4yStMDSNYKhPRqsOzq3SpJRLMoUIO2vXeBJQ33o71K7SwtyoFZib8rqoIyLivWjYnh0d+TwBgH0l2yVtDNejoQuX+gmrF5HVJLFFmbYgcv+yZwfS2RCybRYSd31bd9Eysnb+wXJ0TIVn12O7RbgPrggUYzEs/YD+wyDV1aDdvy0Ncffei+IFXtiSknRk1oLHmx6SoDxWu4cK27w8/sc6zZCJWFKHrZnJeWk0N00XKkkrnJzxgJpfVfkabV341ajeDjmUTx+1Y39ByelFQ1+1XKtOXKP7tj+hGjF0ANZcGpVcN4acljzaq7mJmyNHEYzKjObEUoEej0ON9Hldrfzok0tSvqNAm+NkwTqnpooAZ2qOTqA6KslWbTs2JVXCB4K6GsGl6EdcBCGealBUu0GX2H6HoIUvAN+/cEoYO/T5pvp1rjs8MJMYi1P2orqn/JoGCftxQGaps1AHBLSL7L2HHSsSU0J1Tg9KwBW4zFWqo9hbEvFEd/ZDoHydLiqDppTB5HhXBTRQfeF6PhfrZThQQtknJ2avp1leoFFyHGqTlTe8bGNQrMNL622bcijP1WGlHmfu5ovlIn1S0j3fwCNyV3r7zn7VO64lVpGZJEqjrD3AUmRXF8C5iWlK++5yWHSrhoIUU+sV7l9e1Jvy/3P9DNyQh97mYrkPVfjBXACfNr9v6bRdU7QHIP8Z+llmXNM+PigxQ4yUd0ImuSZXx GLl7nilm wIweZHzjrhGfhAy8HTd7dnQ10oMc5PvYYBtIlkvX8ZTjo/mx96EtVVuDj7kKJu8H5aHYAEcnczZk6qolIEm8U/cTlXMschVdFCRZHWKbkzkmTsKTHf28k0ErzTpAQkyblvZge09aXS+Dd/pRxfRHZHKtG6miuhFvrXM44ibPBisOPwyaWOCsNAqazZCm8VWcBZlgEfgVw+c5+Bw+x2iaYLt2QQ50sThNc0dDwlsffj282jJYxNrZN8wzS8KxJOVSQeUNoYNnFjmrhP952tXoqZ4fGX4wHqWx8O+2M+fJ6E4/xLXm/JdoKC/x94TYzz1PKhXUfuP6szvE7Qgkve9S+84IS8m/QrsTg6Fg33FegbFdEnvJjxTZ/rgBfdQ== 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 Wed, Aug 28, 2024 at 9:49=E2=80=AFPM Andrew Morton wrote: > > On Wed, 28 Aug 2024 18:07:04 +0200 Mateusz Guzik wrot= e: > > > The mutex array pointer shares a cacheline with the spinlock: > > ffffffff84187480 B hugetlb_fault_mutex_table > > ffffffff84187488 B hugetlb_lock > > Fair enough. My x86_64 defconfig now has > > num_fault_mutexes: > .zero 4 > .globl hugetlb_lock > .section .data..cacheline_aligned,"aw" > .align 64 > .type hugetlb_lock, @object > .size hugetlb_lock, 4 > hugetlb_lock: > .zero 4 > .section .init.data > .align 32 > .type default_hugepages_in_node, @object > .size default_hugepages_in_node, 256 > default_hugepages_in_node: > .zero 256 > .type parsed_default_hugepagesz, @object > .size parsed_default_hugepagesz, 1 > > which looks good. > > > --- a/mm/hugetlb.c > > +++ b/mm/hugetlb.c > > @@ -72,14 +72,14 @@ static unsigned int default_hugepages_in_node[MAX_N= UMNODES] __initdata; > > * Protects updates to hugepage_freelists, hugepage_activelist, nr_hug= e_pages, > > * free_huge_pages, and surplus_huge_pages. > > */ > > -DEFINE_SPINLOCK(hugetlb_lock); > > +__cacheline_aligned_in_smp DEFINE_SPINLOCK(hugetlb_lock); > > > > /* > > * Serializes faults on the same logical page. This is used to > > * prevent spurious OOMs when the hugepage pool is fully utilized. > > */ > > -static int num_fault_mutexes; > > -struct mutex *hugetlb_fault_mutex_table ____cacheline_aligned_in_smp; > > +static __ro_after_init int num_fault_mutexes; > > +__ro_after_init struct mutex *hugetlb_fault_mutex_table; > > It's conventional (within MM, at least) to put the section thing at the > end of the definition, so tweak: > > --- a/mm/hugetlb.c~mm-hugetlb-sort-out-global-lock-annotations-fix > +++ a/mm/hugetlb.c > @@ -72,14 +72,14 @@ static unsigned int default_hugepages_in > * Protects updates to hugepage_freelists, hugepage_activelist, nr_huge_= pages, > * free_huge_pages, and surplus_huge_pages. > */ > -__cacheline_aligned_in_smp DEFINE_SPINLOCK(hugetlb_lock); > +DEFINE_SPINLOCK(hugetlb_lock) __cacheline_aligned_in_smp; > I tried things in this order and this does not compile for me: In file included from ./arch/x86/include/asm/current.h:10, from ./arch/x86/include/asm/preempt.h:7, from ./include/linux/preempt.h:79, from ./include/linux/spinlock.h:56, from ./include/linux/mmzone.h:8, from ./include/linux/gfp.h:7, from ./include/linux/mm.h:7, from mm/hugetlb.c:8: ./include/linux/cache.h:80:3: error: expected =E2=80=98,=E2=80=99 or =E2=80= =98;=E2=80=99 before =E2=80=98__attribute__=E2=80=99 80 | __attribute__((__aligned__(SMP_CACHE_BYTES), \ | ^~~~~~~~~~~~~ ./include/linux/cache.h:86:36: note: in expansion of macro =E2=80=98__cache= line_aligned=E2=80=99 86 | #define __cacheline_aligned_in_smp __cacheline_aligned | ^~~~~~~~~~~~~~~~~~~ mm/hugetlb.c:75:31: note: in expansion of macro =E2=80=98__cacheline_aligne= d_in_smp=E2=80=99 75 | DEFINE_SPINLOCK(hugetlb_lock) __cacheline_aligned_in_smp; | ^~~~~~~~~~~~~~~~~~~~~~~~~~ I'm at next-20240828 with gcc 13.2.0 > /* > * Serializes faults on the same logical page. This is used to > * prevent spurious OOMs when the hugepage pool is fully utilized. > */ > -static __ro_after_init int num_fault_mutexes; > -__ro_after_init struct mutex *hugetlb_fault_mutex_table; > +static int num_fault_mutexes __ro_after_init; > +struct mutex *hugetlb_fault_mutex_table __ro_after_init; > > /* Forward declaration */ > static int hugetlb_acct_memory(struct hstate *h, long delta); > _ > > --=20 Mateusz Guzik