From patchwork Tue Jul 2 05:02:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: thington X-Patchwork-Id: 13718947 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 2E582C3065C for ; Tue, 2 Jul 2024 05:02:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8D8416B008A; Tue, 2 Jul 2024 01:02:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 888556B008C; Tue, 2 Jul 2024 01:02:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 750226B0092; Tue, 2 Jul 2024 01:02:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 530776B008A for ; Tue, 2 Jul 2024 01:02:26 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id B8399A0795 for ; Tue, 2 Jul 2024 05:02:25 +0000 (UTC) X-FDA: 82293616650.02.785607E Received: from m16.mail.126.com (m16.mail.126.com [220.197.31.8]) by imf17.hostedemail.com (Postfix) with ESMTP id 321A84001A for ; Tue, 2 Jul 2024 05:02:21 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=126.com header.s=s110527 header.b="R 21i3Jz"; spf=pass (imf17.hostedemail.com: domain of shaohaojize@126.com designates 220.197.31.8 as permitted sender) smtp.mailfrom=shaohaojize@126.com; dmarc=pass (policy=none) header.from=126.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1719896520; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=KLQ5SKLcZAqD7W46jMiPfkBCcMNMfesYc/jtz15O8iU=; b=qWe3fYWl++xk3g078YZ/TfeblZOWgG9MTtr98XZ6ykT60c49XuUBT8lA9sWov92OnG143v 8MP9QFf//6a6y3w746T88USI1FQvrZJIbDMpb4URM+6UBPmudjHzEkLHo/Q9JcjO/JBeuX m5eSZTpQLA/SpFoW5E91q/PZgaFfrHc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1719896520; a=rsa-sha256; cv=none; b=zU7/63p6Yb36u07QTuVtleWEo3i6p6fAN/qO3sPd5XrRUSM8xa0y6O95Y7vrMNL0dY45Gw uYZ2sH6ojXw4PxZzTNNV/HMJ5jCcalX/ycRokRUDozeJueir9QWQF+rqVj2qMDxVP6xKpQ /gqGWwYeuJVl3Xs4w+atQ8kIHsgQM28= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=126.com header.s=s110527 header.b="R 21i3Jz"; spf=pass (imf17.hostedemail.com: domain of shaohaojize@126.com designates 220.197.31.8 as permitted sender) smtp.mailfrom=shaohaojize@126.com; dmarc=pass (policy=none) header.from=126.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=Date:From:Subject:Content-Type:MIME-Version: Message-ID; bh=KLQ5SKLcZAqD7W46jMiPfkBCcMNMfesYc/jtz15O8iU=; b=R 21i3JzMFrcIoKNAeT5G80RFfb8kvmlLpPNRZzD9KQM+/1rUtBbO+u8x2l+MOTiPU bGy/QrYStV4Y/DSaGAgHthGh89M350uGIf63nzMRqxxDwbUd8O1chsnQPNM1Eghv elHsMhksTNugbgZjmw/xJtep0KC9hn2am8cgptlbb4= Received: from shaohaojize$126.com ( [223.246.217.187] ) by ajax-webmail-wmsvr-41-114 (Coremail) ; Tue, 2 Jul 2024 13:02:13 +0800 (CST) X-Originating-IP: [223.246.217.187] Date: Tue, 2 Jul 2024 13:02:13 +0800 (CST) From: thington To: "akpm@linux-foundation.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , zhang.chuna@h3c.com Cc: Jiaoxupo , Bailin , Zhangzhansheng , wangyu , Zhangzhengming , zhang.chuna@h3c.com Subject: [PATCH] mm: fix kmap_high deadlock V2 X-Priority: 3 X-Mailer: Coremail Webmail Server Version XT5.0.14 build 20230109(dcb5de15) Copyright (c) 2002-2024 www.mailtech.cn 126com In-Reply-To: <7caa255fa5fe4e8e9c6a05084a1faf72@h3c.com> References: <7caa255fa5fe4e8e9c6a05084a1faf72@h3c.com> X-NTES-SC: AL_Qu2aC/SSuU0o5SCQbOkXm0YXgu4+XMW1ufwn3Y5UOJ80ky7xwyAvR2ZAI1XVy8ShDCKgqQGecAVI5sR+W5BCUa3xCEkzwZXihTNHp0IL0VbH MIME-Version: 1.0 Message-ID: <4f69441a.4a3d.19071d26866.Coremail.shaohaojize@126.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: _____wD3_8PViYNmX8MYAA--.56073W X-CM-SenderInfo: pvkd0xpdrmx6bh6rjloofrz/1tbimgMQQmVLcLVU+gACsM X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== X-Stat-Signature: p4qgxepo7zys1fcf9txax1jbfzhbke8b X-Rspamd-Queue-Id: 321A84001A X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1719896541-741087 X-HE-Meta: U2FsdGVkX198soDYzhIoELpNl1hZvPoHi6jBUK+bMuBlyHQLBAj0yPeIII6HmkrjhSTdSkvHnT9AvsNXdPVGl/cfQ2Gcmc4mJtTlX9KK1AlOJwbFBVVMcRfvBUX6ZkPHT93BaNOC0AXvOUDuqvR4sR/JWBGBbkO7H1+t1koEy/JfJlpBCefrV4PgEWSICl/O80nYQApFpnjTkeBMX2LskQZSXuBiiYYNkc3EUdtRVSvj7gBWRsFo3ib7GwrENnsMBZuAuzcntXylcra0dcV77EvwNhD6TCnkhcAu/WBWqQ407FkvWo/iWPtMfUOO3KQYiAWBnu7SGRDHtfTEU79eIdgFo0oDCuRd/mBIqzZuhdOLjzpP/keb6zKREOZCBXE8c4O5FBLly/zrbOxM8GJ5DHv0aiSssh+NbsNKseqawq/5q7ZtPxV5wNlGhKvHxOBRUCB5m2Mug/gEO6M/m4fsrnN+LWFADZUKnwTNtC0BIt2EjBwGYt65athLnp/I07g9ORZe3kvZcVXw5aQsrbzxVoALH2tzCmrJsTANJ06qRFtaoyTAA1fwAjhuSgzB22vPMOAuNnml3xgmKbFfZydB0qCtbLzMs1+qafLC3Za0kGOqo0AnWuxP3xdVTm75n9rOItXutvZKcEbSAGbg3FGFUPrPAGyUaQ2fZgq9pSzGqM4UcOhCi9xY/R/VB6hNB0xKQrccFtQhZmO6K049IoYMOa8bhi3UxqqkeC+lEFpJHTZBOLYG1tPgCDYTYebKPaTA7Ayhg5GKjm7CT8y0OgdwXIn0i+NwbkF9IoofZY9ZIJrTW4Q0GmjqM068JKa7E3QVcvqCDgLEPjoXn0I99BqAAA7zZvYUSSkbhLHErh0L2gqg4TaOAV1AmscNuj8FAsyowpASHAWRAnXy1yKhM91npso+lcIW+i65DQPt9OOoTRs8l7x9Gtve8BLrBKKRj2w/ojcSZe3QGgKW4LIUKpU PxRK+qos Z9zbIG5WqFpw4iKbL3TNESD9ozzPUoF26BFuKbc2l0m51uRnfL0gKKS9OlFFq9hflUGxczHPNL9xdB8FBnOLp+ucHeTE+qjYjVQB+0TMJMwXd02p8qBX/n3GyR77kp0kyAdzzaCxZR6Cfvog9onqCU1WzVW65d+pFJUmcJz1HAoPhi1hj0NfOKEG6mIlStvPwfYSfdDFnXsXyVV9m9J2KYLVcikHjhU18U7PYd4SX2d6iYxrXHiHj/OOCUWCgLfHOG5XKp4jSQi08qBcgBCHBkbaTXEiXZfu4dydZK7/JHUAwe8dasjagmUAnxrsOPYngkJ6aApIHyBzDYJBUkv7Hah6slYZyt7nSOmWdqdGV5REHjYvWWWJpUaj+47nMcWGZYBTwQdAHHfK2KHErETLneoAFrP1VbR4yozOWo1DwEFF2hwAE/TgU4Qp/6hztfb3IVXLvcDtnJwIb8ePnTfzWPmkqj8tOnbJd1pPX4ppM81bRKS5bYPCJwps2a/d++jpnnmp2IcMMfOch5nSHRlau1n/niGjD+oG/RWqv1r/U18QJC+6u1fM+oPa0BI0096QZwAorO/3TaAtmZWAEfvoNP51SIuR4MOIb4kL4dQBLR/ndgF+oqMkY+L+rqzl3URbylSo0 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: From: "zhang.chun" I work with zhangzhansheng(from h3c) find that some situation may casue deadlock when we use kmap_high and kmap_XXX or kumap_xxx between differt cores at the same time, kmap_high->map_new_virtual-> flush_all_zero_pkmaps->flush_tlb_kernel_range->on_each_cpu. On this condition, kmap_high hold the kmap_lock,wait the other cores respond to ipi. But the others may disable irq and wait kmap_lock, this is some deadlock condition. I think it's necessary to give kmap_lock before call flush_tlb_kernel_range. Like this: spin_unlock(&kmap_lock); flush_tlb_kernel_range(xxx); spin_lock(&kmap_lock); CPU 0: cpu 1: kmap_xxx() { xxx irq_disable(); kmap_high(); spin_lock(&kmap_lock) xxx yyyyyyy spin_unlock(&kmap_lock) irq_enable(); } kmap_high detail: kmap_high() { zzz spin_lock(&kmap_lock) map_new_virtual-> flush_all_zero_pkmaps-> flush_tlb_kernel_range-> on_each_cpu /* if cpu 1 irq_disabled, the cpu 1 cannot ack, then cpu 0 and cpu 1 may hangup. */ spin_unlock(&kmap_lock) zzz } Signed-off-by: zhangchun Reviewed-by: zhangzhengming --- mm/highmem.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) -- 2.34.1 diff --git a/mm/highmem.c b/mm/highmem.c index bd48ba4..841b370 100644 --- a/mm/highmem.c +++ b/mm/highmem.c @@ -220,8 +220,11 @@ static void flush_all_zero_pkmaps(void) set_page_address(page, NULL); need_flush = 1; } - if (need_flush) + if (need_flush) { + spin_unlock(&kmap_lock); flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP)); + spin_lock(&kmap_lock); + } } void __kmap_flush_unused(void)