Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp2832657rdb; Fri, 22 Sep 2023 09:29:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFv0zi9xipx6lTNyMoiq3Oqqsxxn1rl0hFH0nf+8hJcMGXa67QV7hvq6UoTlXDChDrTTwPF X-Received: by 2002:a54:4790:0:b0:3a7:2390:3583 with SMTP id o16-20020a544790000000b003a723903583mr157486oic.38.1695400170479; Fri, 22 Sep 2023 09:29:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695400170; cv=none; d=google.com; s=arc-20160816; b=F1wBbUj2PBv+0mctuxoQOqnHVB7NiNzN7AKTpZ4r5rou4AUt6iYU7bfIpOQ1NIjkWF LGSyM48ums8tsWTZMq62k62ZSfqOsmHEvcjwv3nP99SzlmxkTVmZXAQWUJqs1oLl6QsW ldU+fhAm1/IaEG6/b94SsWdXivKp7w9dgC7t2gn7hgQ6leO/ZE9zZmQd+2hKG08Uc6S0 53w1mGisFjuoEYIk8U/Eu97sAjw26on971YZsUVjvMJ50+IF4BJJswK85vFvVa8SH/FL wAAgSvaWeiP/2f/jLIKQxLiRsvxoqsFw9Y1vWQypDcExXfko6Ax/VSuHK8agfBO6YxoO zTow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from :dkim-signature; bh=7eyIb7lKDJwsdidMLPGj2HCRCGXL1RdAvXGmM4zqz54=; fh=b5RQsolWA7Om7D8jYziyNnj/aZY68JQNKdeN0rkML2s=; b=OwwN3U1O2V7xepOSznyAZqJo2pM20xdDgXKUTSu3Shupth7QiKpBE0axxTtcMVxd0B Q/QVJ8vfUm7Vqrd8rHmgloxLIRWkLx/avTjW+KKPr+BA2rIcNUTW7dq4aJFG8Lq1WcXE 7oe4LqkO2mq3v3ZddgffQNVM2hDebXkbhWpINb2FYKAatyUG0BYhhwhe4n7iS+J56ri9 E43iOfhCyyhz/NFkd3XAMbTH8gvXXFXDAGo7lzmZIlqh2hv7GNzWJTjGZGHFjSYhx/SS IUY10qDH2geOyvHUIxwuiKJnppUZjtX/Jzr41qtUoFOs8ya3Sox6Tj9rDHkrnrwP3vdK o0gQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=pB+Sn79w; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=mediatek.com Return-Path: Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id m1-20020a656a01000000b0057749f3cbe1si4512158pgu.673.2023.09.22.09.29.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Sep 2023 09:29:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=pB+Sn79w; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=mediatek.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 44C3A831A33D; Fri, 22 Sep 2023 02:54:52 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231998AbjIVJyj (ORCPT + 99 others); Fri, 22 Sep 2023 05:54:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54370 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229663AbjIVJyh (ORCPT ); Fri, 22 Sep 2023 05:54:37 -0400 Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 608E5194; Fri, 22 Sep 2023 02:54:24 -0700 (PDT) X-UUID: fe012622592d11ee8051498923ad61e6-20230922 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Type:MIME-Version:Message-ID:Date:Subject:CC:To:From; bh=7eyIb7lKDJwsdidMLPGj2HCRCGXL1RdAvXGmM4zqz54=; b=pB+Sn79w4QP2yxDZ8CHJM9lGFzU146EH+zHhQbdxLi60Zfzdeq3mzjACTncQNKyRwh6HG1vtExLOlF1BdhjaQrrcZDOgI9qJcNb8ES2HTsBdOhutE/PAEweNlf38rdbMTFxx74iHcIGNmIwmF/jLPMhxGEbfxTq/3OW3mYnkUTI=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.32,REQID:553c8447-96ab-4b04-a5c4-f9fb10966fb9,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:0 X-CID-META: VersionHash:5f78ec9,CLOUDID:1ac556c3-1e57-4345-9d31-31ad9818b39f,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:102,TC:nil,Content:0,EDM:-3,IP:nil,U RL:0,File:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO, DKR:0,DKP:0,BRR:0,BRE:0 X-CID-BVR: 0 X-CID-BAS: 0,_,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-UUID: fe012622592d11ee8051498923ad61e6-20230922 Received: from mtkmbs10n2.mediatek.inc [(172.21.101.183)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1656327549; Fri, 22 Sep 2023 17:54:16 +0800 Received: from mtkmbs13n2.mediatek.inc (172.21.101.108) by MTKMBS14N1.mediatek.inc (172.21.101.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Fri, 22 Sep 2023 17:54:14 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkmbs13n2.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Fri, 22 Sep 2023 17:54:14 +0800 From: Pablo Sun To: Chaotian Jing , Ulf Hansson , Matthias Brugger , AngeloGioacchino Del Regno , , , , CC: Pablo Sun Subject: [PATCH v1] mmc: mtk-sd: Use readl_poll_timeout_atomic in msdc_reset_hw Date: Fri, 22 Sep 2023 17:53:48 +0800 Message-ID: <20230922095348.22182-1-pablo.sun@mediatek.com> X-Mailer: git-send-email 2.18.0 MIME-Version: 1.0 Content-Type: text/plain X-TM-AS-Product-Ver: SMEX-14.0.0.3152-9.1.1006-23728.005 X-TM-AS-Result: No-10--2.723900-8.000000 X-TMASE-MatchedRID: 6QBcT7wcRsRvitkUzhYBjXTnOygHVQpO7yWPaQc4INRh2fnHe1cil3o4 yKeg8X9ygjknrxu7OUiNj7XtNYzGtcEF95g58PMZi/b+LxU2p45Ag1IWH8kbY99RlPzeVuQQ3oz JRX7b4NmqPbMuMCi6h4Ay6p60ZV62SwOSQ/fMiOrdB/CxWTRRu3aDLLDbFMGFfUadd7N1arKJeW +qZhvjB+0IrX0f+ReSjoE+g/57DJoQkGmQTYDw+jFh8TQbyenjgrCX/PEu4TDrHUK6UmomFyYKa 1BmIhZZgITnGkK0NFNRskXKHhdfKpij9M86UwHhsKHfMTjCprwNQJGvyiKf6Q== X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--2.723900-8.000000 X-TMASE-Version: SMEX-14.0.0.3152-9.1.1006-23728.005 X-TM-SNTS-SMTP: BA674A7FBD61D5BE8CE30A6057F748C730D889939DCE9B09EAD473DD2F74FB752000:8 X-MTK: N X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Fri, 22 Sep 2023 02:54:52 -0700 (PDT) Use atomic readl_poll_timeout_atomic, because msdc_reset_hw may be invoked in IRQ handler in the following context: msdc_irq() -> msdc_cmd_done() -> msdc_reset_hw() The following kernel BUG stack trace can be observed on Genio 1200 EVK after initializing MSDC1 hardware during kernel boot: [ 1.187441] BUG: scheduling while atomic: swapper/0/0/0x00010002 [ 1.189157] Modules linked in: [ 1.204633] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W 5.15.42-mtk+modified #1 [ 1.205713] Hardware name: MediaTek Genio 1200 EVK-P1V2-EMMC (DT) [ 1.206484] Call trace: [ 1.206796] dump_backtrace+0x0/0x1ac [ 1.207266] show_stack+0x24/0x30 [ 1.207692] dump_stack_lvl+0x68/0x84 [ 1.208162] dump_stack+0x1c/0x38 [ 1.208587] __schedule_bug+0x68/0x80 [ 1.209056] __schedule+0x6ec/0x7c0 [ 1.209502] schedule+0x7c/0x110 [ 1.209915] schedule_hrtimeout_range_clock+0xc4/0x1f0 [ 1.210569] schedule_hrtimeout_range+0x20/0x30 [ 1.211148] usleep_range_state+0x84/0xc0 [ 1.211661] msdc_reset_hw+0xc8/0x1b0 [ 1.212134] msdc_cmd_done.isra.0+0x4ac/0x5f0 [ 1.212693] msdc_irq+0x104/0x2d4 [ 1.213121] __handle_irq_event_percpu+0x68/0x280 [ 1.213725] handle_irq_event+0x70/0x15c [ 1.214230] handle_fasteoi_irq+0xb0/0x1a4 [ 1.214755] handle_domain_irq+0x6c/0x9c [ 1.215260] gic_handle_irq+0xc4/0x180 [ 1.215741] call_on_irq_stack+0x2c/0x54 [ 1.216245] do_interrupt_handler+0x5c/0x70 [ 1.216782] el1_interrupt+0x30/0x80 [ 1.217242] el1h_64_irq_handler+0x1c/0x2c [ 1.217769] el1h_64_irq+0x78/0x7c [ 1.218206] cpuidle_enter_state+0xc8/0x600 [ 1.218744] cpuidle_enter+0x44/0x5c [ 1.219205] do_idle+0x224/0x2d0 [ 1.219624] cpu_startup_entry+0x30/0x80 [ 1.220129] rest_init+0x108/0x134 [ 1.220568] arch_call_rest_init+0x1c/0x28 [ 1.221094] start_kernel+0x6c0/0x700 [ 1.221564] __primary_switched+0xc0/0xc8 Fixes: ffaea6ebfe9c ("mmc: mtk-sd: Use readl_poll_timeout instead of open-coded polling") Signed-off-by: Pablo Sun --- drivers/mmc/host/mtk-sd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c index 5392200cfdf7..97f7c3d4be6e 100644 --- a/drivers/mmc/host/mtk-sd.c +++ b/drivers/mmc/host/mtk-sd.c @@ -669,11 +669,11 @@ static void msdc_reset_hw(struct msdc_host *host) u32 val; sdr_set_bits(host->base + MSDC_CFG, MSDC_CFG_RST); - readl_poll_timeout(host->base + MSDC_CFG, val, !(val & MSDC_CFG_RST), 0, 0); + readl_poll_timeout_atomic(host->base + MSDC_CFG, val, !(val & MSDC_CFG_RST), 0, 0); sdr_set_bits(host->base + MSDC_FIFOCS, MSDC_FIFOCS_CLR); - readl_poll_timeout(host->base + MSDC_FIFOCS, val, - !(val & MSDC_FIFOCS_CLR), 0, 0); + readl_poll_timeout_atomic(host->base + MSDC_FIFOCS, val, + !(val & MSDC_FIFOCS_CLR), 0, 0); val = readl(host->base + MSDC_INT); writel(val, host->base + MSDC_INT); -- 2.18.0