From patchwork Thu Dec 16 17:47:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christophe Leroy X-Patchwork-Id: 1569333 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JFKMr0D99z9sRK for ; Fri, 17 Dec 2021 04:48:07 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4JFKMq1wDmz3bbF for ; Fri, 17 Dec 2021 04:48:07 +1100 (AEDT) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=csgroup.eu (client-ip=2a01:111:f400:7e18::609; helo=fra01-pr2-obe.outbound.protection.outlook.com; envelope-from=christophe.leroy@csgroup.eu; receiver=) Received: from FRA01-PR2-obe.outbound.protection.outlook.com (mail-pr2fra01on0609.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e18::609]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4JFKMc31ckz2yJF for ; Fri, 17 Dec 2021 04:47:54 +1100 (AEDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IIZH/FnoDlsMslOXFtDB02ifnwZUkTD0xhCVNRfxsynmMJukj+lvo4D5mid5jrxHY+Wr39u7UhSvVKwjPRVll66c4mnwACYATLoeT+fygReFad0EbyIHkXmYscrIUJIlq6isiM+OFZdxiR7SLuMSuSjc+c7c9EabXJb1L3cA3/qT6UlR0/MOlOwNHSFGwfYaGm3BqP0e2bXIEWsZy7rzGI5p84FblIb23mB0ZtSTlmD3mp5QQ1RpmPX8l2RC6L3H8SBhxRO0A/37GCmJYCXG3Da/1SbpgP1m/khfMBQxL2CCUQDOE/bknmSjHCi/qejQ/C74CN+wfe177LdaeZV5gw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ZNCU92j9qgjTOOtwQjgdmBFdzmujqbrzEVNjgl8UNDk=; b=IjQIFC4Uf8cVgXpHff+34YEt0aVlwc0bL+vzbje+hxP+QIGnS9Lk7oiUoGmq55ldqROd6GZL5136j2pQI3A2E5ym9nugjovqLrW0ILEOHiekAq8QHvjW8/ot5t8XgOCgLyKF3LtwZ0fbkNpWzyW7c9lUtmfwlwezhDQyMlEYPTGZjGhFDm1PnfbmSfE1J6vabAhYX8IjPw3vDRYQeDOH8aXaGxHzww7SJSc5uubdilCZxqUlx75G6vM8isZp8wWhbX2YEDsLxPNtznhv4v+6W9OqFF0tlds+staNLq9OFEqOeKTA90uaIbQhtxZHm0MWhPDAGaIvLNnZH1Vtt5X4Og== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=csgroup.eu; dmarc=pass action=none header.from=csgroup.eu; dkim=pass header.d=csgroup.eu; arc=none Received: from MR1P264MB2980.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:3d::7) by MRXP264MB0040.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:18::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.16; Thu, 16 Dec 2021 17:47:33 +0000 Received: from MR1P264MB2980.FRAP264.PROD.OUTLOOK.COM ([fe80::30e4:16d5:f514:b8f8]) by MR1P264MB2980.FRAP264.PROD.OUTLOOK.COM ([fe80::30e4:16d5:f514:b8f8%2]) with mapi id 15.20.4801.015; Thu, 16 Dec 2021 17:47:33 +0000 From: Christophe Leroy To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman Subject: [PATCH v2 1/2] powerpc/set_memory: Avoid spinlock recursion in change_page_attr() Thread-Topic: [PATCH v2 1/2] powerpc/set_memory: Avoid spinlock recursion in change_page_attr() Thread-Index: AQHX8qUBgZlGk5AZtkeEGUMOS24Aew== Date: Thu, 16 Dec 2021 17:47:33 +0000 Message-ID: <112b55c5fe019fefc284e3361772b00345fa0967.1639676816.git.christophe.leroy@csgroup.eu> Accept-Language: fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=csgroup.eu; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 55fae6c4-bfab-4981-6ec5-08d9c0bc23d2 x-ms-traffictypediagnostic: MRXP264MB0040:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:741; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: XRTDJK6KpVIizi9xR1QnHiK4gRF4n04Y8XZyH7I4t2fp+OJNJ5QBGj4t9rT7Um7JL1o3IxUN7kT2j3xmzhebM3QYPAHhjC54iyKg7Mh1X2W+o6Rr6H+3T8le/bnBOx1jme5sDLLXnZ5RtSYc/vzgBHApvQvteTbVd6rvcmm5YOsINdId8aVtua4tERz5518l6SGZiYLIHSIMqBaVWcuTaiiWNmSU8mePTFyYuR/uMKI/AnB9ptMACQ7AHfVQ1phY6ZTI2f4JLxHgasXUoRncbPDKaUky1ORRfbqLrMawoTcMSEbvZ2W3aYyO4ZSOWbajLy47IcydU5Byda1apyjQYjTyyKytuH0gbatEMpHKxEO8VqoxsjbHFneM4B8SCEjHWkr5br0CmnvTyGU3HSI1zB1Lu3POX3kiDJqJrsucVuJt43qL/IVYcTQCtztyb1lr4Za5PKrNS3bYz0BK9lI+yN1gW6z0L3kWAXl8oR0OexjoqvnJBuRs9+0zhhRC4Hwr1+TrBwnBky7aNt+6U8+RH0yfEDtDjyOcwpHnDFsLmAub3DZGrcfn6/n90ehZsahTFRgNchmwlXXalRX7DVhjPVaq056p/+/YBuLu2eNLyPTmsh3wJcyk4LfsXU2A/qrk4ji2lpi8gJ2zxACnpiza7VgMvL/fe9vkfroT1aEWpNPqeN9mm4QHDndDnUwGTfpfwQU6UnYtlR+oWqHrOAVjdIxnXueWHI6/wu9vEzAl4w7JFnyiK6J3Nm2Zmk+hPkivIEvfHN7vy7SdStLVuGDjkuZCd7ZIV48zZ9sZ3ozYSdo= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MR1P264MB2980.FRAP264.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(366004)(38100700002)(66556008)(54906003)(26005)(508600001)(8936002)(36756003)(2616005)(316002)(66946007)(110136005)(5660300002)(8676002)(71200400001)(966005)(122000001)(6512007)(91956017)(83380400001)(2906002)(86362001)(66446008)(6506007)(64756008)(38070700005)(186003)(6486002)(76116006)(44832011)(66476007)(4326008); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?a6sg6mO/ePGeXAkw9MZSrr2?= =?iso-8859-1?q?wCrDKAlR4hK7XiU1I+/V1UtrygLWazg82x1YnPqA2hHCpjmag8UcYX/0MSbU?= =?iso-8859-1?q?cXAONpZWSdKG4QgXoqNKBGDbx+8SyzIgy7NG7uPA0H1vCTk+kAp6LjVFE42b?= =?iso-8859-1?q?mW7jWu9e7SoYAqrfLaNSrZ8h9FwroflR8FAzVB0Y/4iXNB//yvBpksp2SZDG?= =?iso-8859-1?q?SzTErWcKCe4Rway9+sZoIl/56fzj/jIHcuzpe1gvJ6wpDPVaQIGMCmEzB7JY?= =?iso-8859-1?q?VsQL7jKFgfuMJA0MpwNF9h9tDKhp6HAdw2ERuZkDKUMfGDpL1SwHH8jjx14Z?= =?iso-8859-1?q?zsp1g/YPZv4riU1b2XuO3hTdiNQKw1jkvhTQFiyiMGdihJbGFnY5DNTBA3/Q?= =?iso-8859-1?q?a49naQs7JYMUlSRIXb2svmwmq0N0KooqgodYz0qUNNU8zaYJ9SZmzt+nqbby?= =?iso-8859-1?q?2WO92ZmYSqUG+n1zZEpjFi2frUcL7fAJy6s0T73dONvg+HkG50Y+1UeNcQfr?= =?iso-8859-1?q?1C0S5MNtmbr2k7XXt7OZev8Dtyig8TKMZ0VDOzSRINQ1FJsyeDCkJpKmHqaq?= =?iso-8859-1?q?hG5hulhABfFDSSvvHZYmN33vLUOlalnkHrMcAjsE/P5swLIQJj8nXRf9dA4l?= =?iso-8859-1?q?JW4gRfNxO2qsBYy95/Cb998GCsOiw82LCKibAg/EpjR1x7vIKvL/5EiysLQR?= =?iso-8859-1?q?9f09DQimuQFe6f1wSVJogQpPA8KAA/zGEY2rWR3L0SuybvgrBKi5AuKrvsnc?= =?iso-8859-1?q?ZHnDEHUiQeKFII1IqVfvrYL/oMvJZAzpyTlFsZCKBpw5vm72e9SJRjwGlqi2?= =?iso-8859-1?q?oa+q8+zsukJL6eUBMv/m5AMFuxIV+4kcgh0AhgXUSKSEbSNjE1RaNcZurmwk?= =?iso-8859-1?q?IEFixy71Pb/LGxZ4mfVPFmz+GTC4TEDDAYATGaIoOUcxRn3tH5m8HQQZyAol?= =?iso-8859-1?q?zcHe/JO+WdD8B53RaLVC4iu/cJnKeuD6HWv47BcSlCJCmFW/TCXGbKKF6AYa?= =?iso-8859-1?q?tnd0lWQAxrhbuNglWYBFAeNZzmf3yAyX9gtUjPSXLM6Akgo9txdH2tAvMCdD?= =?iso-8859-1?q?j5qbznNEpuah/ct2Y/FpKz6a/wwPiql1UKpox0nYMIhPIGGeiFGdMYxCjeyW?= =?iso-8859-1?q?VXmY2Iu0TUiZfTpP4Z7reShgjFDWKaY819pqjLiEbTgLH0nuwUOn/hqFklRy?= =?iso-8859-1?q?/aVwtLk0u7Av/ijZhAJjKWHTTKnMBuv08+aE8ry8xgwz3plMGhsfnG9vwkUL?= =?iso-8859-1?q?saT+HjlqVYiZhGApNX5JOG7fojcJZ9kCASD0VigTmIsoz5/t+ZTE6hOOrA0A?= =?iso-8859-1?q?MCjN7ePKfrHFMVW4hZtHaAzR5l30HlyB7WdsX+VnLvHrdDZFOu9X7C29a+kZ?= =?iso-8859-1?q?P2MSYy2hzi7k7jNLod484Vo/Uod+jrErkxtmyA54fnhIGJDz31tGkuzd2wII?= =?iso-8859-1?q?PXTGmvkeBi0R3R9XxJ5f3WFE/6NkKP2ELioEgG0y7o7AF3n2wJwn4xPxUvzm?= =?iso-8859-1?q?US/pVEZ4Tm2rQ85uUYaSYKH9vJAHYKigRnkRvM5DwelkhVbf4UGbEFyHFRhz?= =?iso-8859-1?q?NqveLA7JVXmHVNG5GGVYNJ5c8yQbHKIr8WmuI/Dc6Z1UAUCUuUfKWTxUeI8e?= =?iso-8859-1?q?eUozdmFkdukx/NDSW8sqgm/O5/yqksEZwOZmfXwp+p19LQCoAWOcs1e6U/mF?= =?iso-8859-1?q?D2pjUfsy4VreuKoODzDV9umOhZyIQcvOG1OiQ1AUvl1TuuixfGaMs2buHr6R?= =?iso-8859-1?q?/Pt0=3D?= MIME-Version: 1.0 X-OriginatorOrg: csgroup.eu X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MR1P264MB2980.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 55fae6c4-bfab-4981-6ec5-08d9c0bc23d2 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2021 17:47:33.5978 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9914def7-b676-4fda-8815-5d49fb3b45c8 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: tY3AdsZPbRoyG8OTMFdtb6TeKTvtEpxvevttWZO9GHejmzC9gd6CpsPH6ZKzviHnX1XQYPlQRrW39UQvi1W3aHcZq8UQs3cPbGshlIp4R8w= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRXP264MB0040 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Maxime Bizon , "linuxppc-dev@lists.ozlabs.org" , "linux-kernel@vger.kernel.org" Errors-To: linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Commit 1f9ad21c3b38 ("powerpc/mm: Implement set_memory() routines") included a spin_lock() to change_page_attr() in order to safely perform the three step operations. But then commit 9f7853d7609d ("powerpc/mm: Fix set_memory_*() against concurrent accesses") modify it to use pte_update() and do the operation atomically. In the meantime, Maxime reported some spinlock recursion. [ 15.351649] BUG: spinlock recursion on CPU#0, kworker/0:2/217 [ 15.357540] lock: init_mm+0x3c/0x420, .magic: dead4ead, .owner: kworker/0:2/217, .owner_cpu: 0 [ 15.366563] CPU: 0 PID: 217 Comm: kworker/0:2 Not tainted 5.15.0+ #523 [ 15.373350] Workqueue: events do_free_init [ 15.377615] Call Trace: [ 15.380232] [e4105ac0] [800946a4] do_raw_spin_lock+0xf8/0x120 (unreliable) [ 15.387340] [e4105ae0] [8001f4ec] change_page_attr+0x40/0x1d4 [ 15.393413] [e4105b10] [801424e0] __apply_to_page_range+0x164/0x310 [ 15.400009] [e4105b60] [80169620] free_pcp_prepare+0x1e4/0x4a0 [ 15.406045] [e4105ba0] [8016c5a0] free_unref_page+0x40/0x2b8 [ 15.411979] [e4105be0] [8018724c] kasan_depopulate_vmalloc_pte+0x6c/0x94 [ 15.418989] [e4105c00] [801424e0] __apply_to_page_range+0x164/0x310 [ 15.425451] [e4105c50] [80187834] kasan_release_vmalloc+0xbc/0x134 [ 15.431898] [e4105c70] [8015f7a8] __purge_vmap_area_lazy+0x4e4/0xdd8 [ 15.438560] [e4105d30] [80160d10] _vm_unmap_aliases.part.0+0x17c/0x24c [ 15.445283] [e4105d60] [801642d0] __vunmap+0x2f0/0x5c8 [ 15.450684] [e4105db0] [800e32d0] do_free_init+0x68/0x94 [ 15.456181] [e4105dd0] [8005d094] process_one_work+0x4bc/0x7b8 [ 15.462283] [e4105e90] [8005d614] worker_thread+0x284/0x6e8 [ 15.468227] [e4105f00] [8006aaec] kthread+0x1f0/0x210 [ 15.473489] [e4105f40] [80017148] ret_from_kernel_thread+0x14/0x1c Remove the spin_lock() in change_page_attr(). Reported-by: Maxime Bizon Link: https://lore.kernel.org/all/20211212112152.GA27070@sakura/ Cc: Russell Currey Signed-off-by: Christophe Leroy Tested-by: Maxime Bizon --- arch/powerpc/mm/pageattr.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/arch/powerpc/mm/pageattr.c b/arch/powerpc/mm/pageattr.c index edea388e9d3f..308adc51da9d 100644 --- a/arch/powerpc/mm/pageattr.c +++ b/arch/powerpc/mm/pageattr.c @@ -30,8 +30,6 @@ static int change_page_attr(pte_t *ptep, unsigned long addr, void *data) long action = (long)data; pte_t pte; - spin_lock(&init_mm.page_table_lock); - pte = ptep_get(ptep); /* modify the PTE bits as desired, then apply */ @@ -61,8 +59,6 @@ static int change_page_attr(pte_t *ptep, unsigned long addr, void *data) flush_tlb_kernel_range(addr, addr + PAGE_SIZE); - spin_unlock(&init_mm.page_table_lock); - return 0; }