From nobody Tue Sep 29 08:22:34 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 95ADB3D7D8C; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364749; cv=none; b=I0UigLWtVTZop/c4pkaFYqXuw2Bl4lwjU5e7JSv+kzjxMKuQZ4eV54+54aMHJofCWWMbKNbHwWvxSpuj5M0eHdx272SZDZn1zxaKL0YTwo+VLGe0BTB//Y0Foxc7G41+OIwj4CbXLauM0iraIqJ73BBCHQ7bkuo1HNJMbeURpaw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364749; c=relaxed/simple; bh=lQ97HBSAYhAOD4IPcZzjORKwbgRckHRjegeZhwOb/TQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gsnVnTXB66KiKDKwWkii+CutGxT3CV88Vo3FB02rdlMsccBazVUjVmjMKETrSf2TB2L7zze+9AYRpz8F4zpYVqx3F8TL10PffrabH9IuqrPl+4qLBzc23yoEOihZQZNg5bnGGiYhYO+1o+5aeroywPhkkJdDRQYQD3Wsx/2Iois= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=psWU20V0; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="psWU20V0" Received: by smtp.kernel.org (Postfix) with ESMTPS id 3D9E2C2BCFC; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786364749; bh=lQ97HBSAYhAOD4IPcZzjORKwbgRckHRjegeZhwOb/TQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=psWU20V0iHpnxi4M1eB4ou/y5K/z8TduGIIAGShVZ31CctJAjMVGlQ/TEy8i3rklc s2iTUSeQe8fx0sLw65uBsmRcWAtNQo8WXOfJ7+gs+F3pAcYzLXtdxlFg/dmqOAXFgL z1+n8csf5Xkwq157akPdxq6GXTtlHjv6fQYP57m3KsHMj6nJmBY2qf8TrP0RnJHS6g SVL4OPMtj0KvXnGzpOuKkHx6BiYCT0x7fB/89H8XT2aZE/wO8bbmTUkrVo/yMAwFNx kQaQj5ynm8GxlzjRT03/vZWc82AHjudM75B/MFTxsj1Hy2e9U/t4lEbycC09sZsUDn +xhrJVneTpiWA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 19850C5AC82; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 20:25:27 +0800 Subject: [PATCH RFC v7 1/8] mfd: ls2kbmc: Make a copy when parsing mode string Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260810-ls2kbmc-mod-v7-1-8aa0fb5a5462@gmail.com> References: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2931; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=JAJhKtMfhB8SZK77fsh9uMLhohDQu5vL9aOCwD3CkNk=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecNKT+4AJ6Va8UknK3hW35xffmaojMn2sdPtU LquKgXzDuSJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannDSgAKCRCwMePKe/7Z bmcaEADDXkVy2RasE0XdQH0QHqc4G5RBFWV/xC42NSIfnEm6m0VWOG5iZ/t1Km7bT45cNXqKpbv cCd3qgx9UuJ3bf4L7Bjg5h0tk02SympFQftBfPwCAqgCZFHR/cJ+NRUdRNsKjD54mq/QjPvPWZh 4thd9QcyG9wUvKNSoE5zlxIPjlc9TB9jcdU6CV9ZpSbeqfBGEaLEZg+vv7Eeo/HwsnNvw2mhQKd /ywtZd/qdK3SNSqAuebzodAuwp3M8/tXTWUYuhZXUFNZfpR+SKlTrIBeNjGDTcAJ8QDX0pX/kQW s64e3JhdJWgzoqeYZoCJuiFXGPeuoyJLDlihNAqJNDwEelJlmIlgHQWuRDEAbqftZDrlsYOMymi Wp/nFScysvFT9GK6tqiGHaxrYf3Y24RgR772WsGYWo3M8LaeQODOvToh9QWe4kfa2EIGKdst3UU xt91z24kjxSIBwCPZnWmRLsK558+3amMch41F6ETBUF1ab8r6ihHrNIDzohm5/yrt8+yuucGhcx 3WbwH1uJ34fFAsnw3Lj7PB22ZcolJoYVmV/Ykslc+DJJtUg3LRu0kL+BTDANMpMiWont6aGXUKA 9MkdKjBU4roVG9AwAziHSZ1c952EIHGDhosZlcfizKqV2Wzlx8juZtYmadxJCFFgde6re8hBVEP TzsukQkT9+p3YAA== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang When parsing the mode string from BMC, the string is manipulated in-place with strsep(), preventing from parsing it again. Make a copy of the original string and manipulate the copy instead to fix this. Fixes: 0d64f6d1ffe9 ("mfd: ls2kbmc: Introduce Loongson-2K BMC core driver") Signed-off-by: Miao Wang --- drivers/mfd/ls2k-bmc-core.c | 51 +++++++++++++++++++++++++++++++++++++----= ---- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/drivers/mfd/ls2k-bmc-core.c b/drivers/mfd/ls2k-bmc-core.c index 408056bfb2fe757a5bde43775a483a48352e706d..335590392240ba1e13a2bdf6f9f= 4efddec045f40 100644 --- a/drivers/mfd/ls2k-bmc-core.c +++ b/drivers/mfd/ls2k-bmc-core.c @@ -427,34 +427,67 @@ static int ls2k_bmc_init(struct ls2k_bmc_ddata *ddata) */ static int ls2k_bmc_parse_mode(struct pci_dev *pdev, struct simplefb_platf= orm_data *pd) { - char *mode; + /* Assume 64 bytes is enough for the resolution string */ + char mode_buf[64], mode_buf_orig[64]; + char *mode =3D mode_buf; + const void __iomem *mode_base; int depth, ret; =20 /* The last 16M of PCI BAR0 is used to store the resolution string. */ - mode =3D devm_ioremap(&pdev->dev, pci_resource_start(pdev, 0) + SZ_16M, S= Z_16M); - if (!mode) + mode_base =3D ioremap(pci_resource_start(pdev, 0) + SZ_16M, + sizeof(mode_buf)); + if (!mode_base) return -ENOMEM; + memcpy_fromio(mode_buf, mode_base, sizeof(mode_buf) - 1); + mode_buf[sizeof(mode_buf) - 1] =3D '\0'; + iounmap((void __iomem *)mode_base); + memcpy(mode_buf_orig, mode_buf, sizeof(mode_buf_orig)); =20 - /* The resolution field starts with the flag "video=3D". */ + /* The resolution field is required to start with "video=3D". */ if (!strncmp(mode, "video=3D", 6)) mode =3D mode + 6; + else { + ret =3D -EINVAL; + goto invalid_mode; + } =20 - ret =3D kstrtoint(strsep(&mode, "x"), 10, &pd->width); + ret =3D kstrtouint(strsep(&mode, "x"), 10, &pd->width); if (ret) - return ret; + goto invalid_mode; =20 - ret =3D kstrtoint(strsep(&mode, "-"), 10, &pd->height); + if (mode =3D=3D NULL) { + ret =3D -EINVAL; + goto invalid_mode; + } + ret =3D kstrtouint(strsep(&mode, "-"), 10, &pd->height); if (ret) - return ret; + goto invalid_mode; =20 + if (mode =3D=3D NULL) { + ret =3D -EINVAL; + goto invalid_mode; + } ret =3D kstrtoint(strsep(&mode, "@"), 10, &depth); if (ret) - return ret; + goto invalid_mode; + if (depth <=3D 0) { + ret =3D -EINVAL; + goto invalid_mode; + } + if (pd->width > U32_MAX / depth) { + ret =3D -EOVERFLOW; + goto invalid_mode; + } =20 pd->stride =3D pd->width * depth / 8; pd->format =3D depth =3D=3D 32 ? "a8r8g8b8" : "r5g6b5"; =20 return 0; + +invalid_mode: + dev_err(&pdev->dev, "Invalid resolution string: %*pE\n", + (int)strlen(mode_buf_orig), mode_buf_orig); + return ret; } =20 static int ls2k_bmc_probe(struct pci_dev *dev, const struct pci_device_id = *id) --=20 2.49.0 From nobody Tue Sep 29 08:22:34 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9589B3D75BC; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364749; cv=none; b=sl2Hymd3AtJIDlNcwtv0miPX91TKELLlk4R43zlyn9/0KSBW8KewISdygnwdP6/tJ8XLck4b2zw67CteVJB7dhVuCYabAGBLpPQCILhM2+tkkcMTsvhxKPmu1sk7sy4ywjHfHDxZNfewS1R0F9t1y7eTj87n1NHUK9nrvlGkMhg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364749; c=relaxed/simple; bh=Oi4GTcVKmmi1iIXH/BvW+DBC2WkWyHc65XEe4SG8f+4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=a/75BBjuQIRU7AF6qpOzEZswySjydxo/e+duDzDDGv3e3LaZYLZJMOzDblVI2DWNEVlVpr/gvq8oj1ZUZ5v9IsNej40mly31W5joGnqA6rRRMaOA33c4zWk1b6RXeZHgy8BXQfQyCUpgEvf/Skx3L5YqllvyJ/WYDVEkn33VzkI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=CFP8YfrL; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="CFP8YfrL" Received: by smtp.kernel.org (Postfix) with ESMTPS id 51E3CC2BCF7; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786364749; bh=Oi4GTcVKmmi1iIXH/BvW+DBC2WkWyHc65XEe4SG8f+4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=CFP8YfrLIQAYq7Hs6JWfmAAzDS+n3XRUYf0nV4QZ7PLWdklPrVafBOnOuyo2JCjAD zK6vAg8v8yC+K8Fx8988TwJj968xAOVXsF7ivkBPDR8PYpDyxFrxYJXYccYoxy892t YJkUMkEcREfXIMCMLUSSV3XtGlPSZyQe79TB5sCMoMrpJmiMoqwsfOq692Bwy0/cFr vxPOod/+pZJ4TBquKTKiQ6LHg5fW6ThmrqZj8iuFNO9JOW5YFVWt3fmZ0eAY+jQZUF gZUKrW5lRHns98YaglKhBwI66+qEBd4L2W1fCC1iVM4OVvf6jBvEfq7BM0lJdD3VmY B8flzIc/J9BZw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2C04DC5AD55; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 20:25:28 +0800 Subject: [PATCH RFC v7 2/8] mfd: ls2kbmc: Sanity check for the connected pci port Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260810-ls2kbmc-mod-v7-2-8aa0fb5a5462@gmail.com> References: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2625; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=/Lr4vPc1caTNdLxJjHXD0ez/C7ATtTCBQ8ReLhje6Eg=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecNKPjZt+xl/yH7BNWJEpbP4glpsA8CokX6TF TtCPSUlIICJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannDSgAKCRCwMePKe/7Z bltCD/wNdIOPSxG2eRayUsRItKo/KLpfvJJqwuvnkIhjcFZuDYwVv7t3/tLGG4rgo6IzjLRQLph LC9XdVWb+GJzR7VEqXYo0Jo5EEdEdOM+J8Gv36fmiNtHpI4ROxdKDY8IdYSaMocGdpsQNBG/LNT q3txJSvPRMqBQD3XprGYYN9qKZnadLj/DSLGI8kTAZtlQvPZPJaEqNtGe0YN7pOV6xKgyiP3cg3 9IdO0LI331qRk9KuHxt8pJjlZgmpZoTYtwYnCnP4PJFPKUBd/CC9ZJ0TF/jjWQEIPwiFUMZnLid ndBhHniSI+leKytuRNViNJ3mqYOKWWyscH1SVIaUyn3lbvQDe2XkSS0SN8IRnd+aslc8ExqQRCM liZUXMQJPZzdknEnwlNMWpIumKKZNNPlHfbiSJI+YWMqcgfHDV43j5xV1Ps4uuxLd7i8o+ifhA6 F94djMvbJuoVbplZI7impfzbPmw2z08Rx7tDTIMt0Uhv0ByZfEPlILaYr9R+GE3YiPAhTActyx3 6KTW/zyQF8NBD8cnfkBQhAv4YKfvjqibXdM7E4Kn2rhgB27b8NyihfQ11ct6/vht0SYZG8/XYQF zgxnp1uNoAY6hfyDrL8a2V8IUOgTKeyCznz0WONXJlmjmtPddusYL4LRcVTOZj+VetfjPG4rGYy yXfLyrCxRSGZavQ== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang When the bmc resets, the recovery procedure require to reconfigure the parent device. The driver assumes that the parent device should be LS7A. Add a sanity check on initialization to ensure this and prevent from accidentally operating on non-LS7A ports. Fixes: d952bba3fbb5 ("mfd: ls2kbmc: Add Loongson-2K BMC reset function supp= ort") Signed-off-by: Miao Wang --- drivers/mfd/ls2k-bmc-core.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/mfd/ls2k-bmc-core.c b/drivers/mfd/ls2k-bmc-core.c index 335590392240ba1e13a2bdf6f9f4efddec045f40..434db99ee501be8e18de7258af0= f465fc16c0709 100644 --- a/drivers/mfd/ls2k-bmc-core.c +++ b/drivers/mfd/ls2k-bmc-core.c @@ -35,6 +35,15 @@ #define LS2K_IPMI3_RES_START (LS2K_IPMI2_RES_START + LS2K_IPMI_RES_SIZE) #define LS2K_IPMI4_RES_START (LS2K_IPMI3_RES_START + LS2K_IPMI_RES_SIZE) =20 +/* LS7A port Device IDs */ +#define DEV_LS7A1K_PCIE_PORT0 0x7a09 +#define DEV_LS7A1K_PCIE_PORT1 0x7a19 +#define DEV_LS7A1K_PCIE_PORT2 0x7a29 +#define DEV_LS7A2K_PCIE_PORT0 0x7a39 +#define DEV_LS7A2K_PCIE_PORT1 0x7a49 +#define DEV_LS7A2K_PCIE_PORT2 0x7a59 +#define DEV_LS7A2K_PCIE_PORT3 0x7a69 + #define LS7A_PCI_CFG_SIZE 0x100 =20 /* LS7A bridge registers */ @@ -490,6 +499,24 @@ static int ls2k_bmc_parse_mode(struct pci_dev *pdev, s= truct simplefb_platform_da return ret; } =20 +static const struct pci_device_id ls7a_ports[] =3D { + { PCI_DEVICE(PCI_VENDOR_ID_LOONGSON, DEV_LS7A1K_PCIE_PORT0) }, + { PCI_DEVICE(PCI_VENDOR_ID_LOONGSON, DEV_LS7A1K_PCIE_PORT1) }, + { PCI_DEVICE(PCI_VENDOR_ID_LOONGSON, DEV_LS7A1K_PCIE_PORT2) }, + { PCI_DEVICE(PCI_VENDOR_ID_LOONGSON, DEV_LS7A2K_PCIE_PORT0) }, + { PCI_DEVICE(PCI_VENDOR_ID_LOONGSON, DEV_LS7A2K_PCIE_PORT1) }, + { PCI_DEVICE(PCI_VENDOR_ID_LOONGSON, DEV_LS7A2K_PCIE_PORT2) }, + { PCI_DEVICE(PCI_VENDOR_ID_LOONGSON, DEV_LS7A2K_PCIE_PORT3) }, + { } +}; + +static bool ls2k_check_parent(struct pci_dev *dev) +{ + struct pci_dev *parent =3D dev->bus->self; + + return parent && pci_match_id(ls7a_ports, parent) !=3D NULL; +} + static int ls2k_bmc_probe(struct pci_dev *dev, const struct pci_device_id = *id) { struct simplefb_platform_data pd; @@ -501,6 +528,11 @@ static int ls2k_bmc_probe(struct pci_dev *dev, const s= truct pci_device_id *id) if (ret) return ret; =20 + if (!ls2k_check_parent(dev)) { + dev_err(&dev->dev, "Expected to be connected to LS7A PCI-E port\n"); + return -ENODEV; + } + ddata =3D devm_kzalloc(&dev->dev, sizeof(*ddata), GFP_KERNEL); if (!ddata) return -ENOMEM; --=20 2.49.0 From nobody Tue Sep 29 08:22:34 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 95A1E3D7A18; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364749; cv=none; b=kLspmBiVOr3L6CIoYfsD8r1tgQrYz0R5eEpiMHw2OZic1T7BOLvtJ9uLunsjHMFjdp4ZHI8oaEddUdUyk7EyJmj4NIrNwOuTyZTogqLi9CvwwMbh23hUPyXjg8Ut0J+m+/ley7anzdMTzgXVNG0sKZyfAat8jDkfFoVdCct0DXQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364749; c=relaxed/simple; bh=sE76SDyt9tO/Vc836t642bP0UkgFXewo7SBitySNNUs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jXFMxNgF+N8LyiVZk1lYkiQnVO9bq6TUXXLq1YvEw7VxPUEzhzvbqDQAbmgzrG9YSIHFJ0epWRWq7iKKdOCzJgLPCagLOt5zn56DYH0vv+XdoAuWTrcqtcO7AXbFyq9slF28dxLrJRXicipGFIQsiHmPgufieCVbKvHF2OBos44= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BAaEQKRf; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BAaEQKRf" Received: by smtp.kernel.org (Postfix) with ESMTPS id 596CBC2BD00; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786364749; bh=sE76SDyt9tO/Vc836t642bP0UkgFXewo7SBitySNNUs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=BAaEQKRfsOdCD+YJRtmye1xn1vjap4+4NzK57rPZESe0waXXXDic5N74FczErWl51 H8h01/ygOJDE4oXGlpZEdcG1Aoa0mLRXCBkz11siPTWvdss0qrIOpbPdo+tLLOpl4D KMwUFOuH0wg9DhkZPRKLVaMQGauY8hXibsj5WIOm68FRugBvZWPCvLpdWekyr/egRe ydCdZYRUku6JFv+pLuQ1fq4Wj81B4OxnHmMQ2FXGZRdiRuheruoE6WIs1GCRLw8Ye0 LCqSbI/CRgq8iptTyMZvgsS6WdqbiAEYMdtjx12wKwa9s6fmNmQM8VkTbhIlJoIMHp XuYFzAE20N/iA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3CA5EC5B569; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 20:25:29 +0800 Subject: [PATCH RFC v7 3/8] mfd: ls2kbmc: Redraw using exported functions Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260810-ls2kbmc-mod-v7-3-8aa0fb5a5462@gmail.com> References: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1128; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=R0w0JF+qT6VK1lT/PxMrgYCt2zFDY7MivPLY0o0OME8=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecNKPciUeVzBs+cJq+dizhD+R61BPU55TG/7H K5AXW9ZRwOJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannDSgAKCRCwMePKe/7Z biqqEACuDBEsFpFJ5xOZ0RLdrUHcK6Rri3m6X7XbfKbAUsoEiHXOuH3hB0lDQX8FyTSyzpzMFDx n3m/i/BsAbaQwrleSMG8FzPPO9WBAwAFS1UyLPJidYkqh/3RIP+49eB8ylSg3Ie8oWo6iGP4na5 HkKcYAATWe7If+8yaITrvBLoDryn7WgrYUuiwKo/XTqh5xnFI2jvsJoSNA2VzvGjiRYOzE6jtA/ jZf7cWZCR7MQhD7AJFs76WmOl7vxzlaH0lR+jcbDfKzLjqf4I0PQSvFcvXkKHfeH2iXDMWPmGwa O0/cEr69y3JuCZHxhgE0v4b+rqb5jB5oCoOTMmFU9Lbd5cHVMrSnF5SaurBM3sZOMbc4LXw+tyG NVWKblLBO4e6to2y6ewIJBT+uMa0INTMcrVtNYWGg1i2bqPn0rVyxzw70sGvBohz3xJjcvm5RKE s1D6M7dubvsikCLgMoOnHuP2QdJlSKxNiTA8JuUud1pujblS6MNRa/VKtWQq8BtDXbszGgGJMUd IuhOffC43ZzDTMfJMYojOSXc2tFtEfi9NySrc3LHLMXCiczo2BlOjgILlTEKVmot4EmkHvq8A4J eNqvWDri2K6mRhj4FLmjL0UrUyan68nkxR9jlaMStEpHoRabKdC0S1dvTXY5I6QvEEjPCCAWOBA T+t5qswSX2mWJ/Q== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang Use update_screen, i.e. redraw_screen() to trigger the redraw of the current vt. Fixes: d952bba3fbb5 ("mfd: ls2kbmc: Add Loongson-2K BMC reset function supp= ort") Signed-off-by: Miao Wang --- drivers/mfd/ls2k-bmc-core.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/mfd/ls2k-bmc-core.c b/drivers/mfd/ls2k-bmc-core.c index 434db99ee501be8e18de7258af0f465fc16c0709..06ec8143d8cdbe2c8e5a141020d= 96c21b37fa699 100644 --- a/drivers/mfd/ls2k-bmc-core.c +++ b/drivers/mfd/ls2k-bmc-core.c @@ -25,6 +25,7 @@ #include #include #include +#include =20 /* LS2K BMC resources */ #define LS2K_DISPLAY_RES_START (SZ_16M + SZ_2M) @@ -310,7 +311,9 @@ static void ls2k_bmc_events_fn(struct work_struct *work) =20 if (IS_ENABLED(CONFIG_VT)) { /* Re-push the display due to previous PCI-E loss. */ - set_console(vt_move_to_console(MAX_NR_CONSOLES - 1, 1)); + console_lock(); + update_screen(vc_cons[fg_console].d); + console_unlock(); } } =20 --=20 2.49.0 From nobody Tue Sep 29 08:22:34 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A2113A16BA; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364749; cv=none; b=KU3UN1Y4lqO0WbDcmUPuMOeQjbaiIM4Iiw3pWYiQJWsvfFy89qtoNgcQ02GqfLYNSHhewDE+Tu9KjHle7GUi2Ra7PxkPOX/tbLBFmUVjvH3JQPfxtltg/NMD4yBeVdiyrmb13if6wbSCbFRGQD2jORV8qwzqKDsKHlcqV8eXJN0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364749; c=relaxed/simple; bh=YEphmDzGGrkz1uD24ugQVTF/EK5vpaLTme0OyaAw7Fg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=m4Y7ehECBn+XRWRU4gXmdflIFZwwEcgBECSEHuGEBVIZdvW4aSqojLnU2wIPUKyFPq9A9efLeOkmbLxQc2nLsXsxrV99pj6N+UCW3FZcsg/na9SYgrLCW4ieNDiczeS56e88rwkA5rvCwayZ3xMpZSL+ICo5eaq9uCmW+T+hrxE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OIXOBdgM; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="OIXOBdgM" Received: by smtp.kernel.org (Postfix) with ESMTPS id 6289FC2BCFD; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786364749; bh=YEphmDzGGrkz1uD24ugQVTF/EK5vpaLTme0OyaAw7Fg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=OIXOBdgMrpyIMEjUWOotlS9dKL6BlvP010AVaubJhfnKZLTgL+EMj1V08HawtQQcN 8wFX4mZNYyxVXUbIWkQqWMDJVPhdDd8jCiInqkvwXUlPuvLQtQeBKavgnkM9CYQlYt NsmvEzwFZ2LcsYyPr44wjDDq6+jgvhumNT69quaHOGU46EPg+UArYCx/ipZzEZAA1H IbU1HJk9HkdfJYtrW5e7rE0HSrDeSUgGqyY7Oc2ehjarYKwkjryJbvmBqzptX/3IEm onSKlbIpD7l/k0yZA0ICTxS4BVTqsKcTqjQqccvhTzEdmDZMW+nUh0gIF1ihU9NZWC 1K0JuxJ3iV58A== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4F811C5AD7B; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 20:25:30 +0800 Subject: [PATCH RFC v7 4/8] mfd: ls2kbmc: Cancel the work queue on removal Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260810-ls2kbmc-mod-v7-4-8aa0fb5a5462@gmail.com> References: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1480; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=+xbRMJCIp18RIJ0wKO3Pv8PASldwSY769xQI4nSINrw=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecNKq6kBydVq7F6pd2HFIrn9pR8uMJZbcbnwo 8I+wlJ8ch2JAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannDSgAKCRCwMePKe/7Z bsoOD/4zwnIa62jgwLDGu306AceXlq9mXvV6oPrbuJTvcfB6zOOnFCKPTykk/IYqdxEek6k/kdV teyct/Qw/T0pUbA+FrZhnAsqXQgClV/Blsy9djSNbOr2ZNAx8GYt5XGsKswCQ+RL5rXX9aB+Wez j7PxVZU73J8ZdkwN+C2ELpcpZ8iV29cugbuHUoYeof7jbwwwKZW8ZkAXZTYnpCN+pJ+Q5Ca8ONK tfTBp9464Gu+XC38XgrwEzzQeaC5hxOiez6dBKUsX0qHCXmKMIRnCiSuDBx46wDLDfZvY0hBudB I6okS0EW6KYmL/alUStS0bKO7TBu0YcJ9i6xiAtO68+AdrPlXm0EjBd2PU+WYvvFmx8kwcIwHeg Kpu/hzFV/ozuCnSLGca/4CrXV6Bp3uEtH02CzQRGMmOE1E7HIfuM1whVZSCxwKnET4/cu19gD65 8J5v3qO9Q2uuwdwwI4Ta+ruRncZN5AfP+ZS90pGWkAJeH1se+Q5BVqqIJttAyL7HAJZDx2bPSPZ BERlS+9HXaQk8fOlpA8LPe6fBztWifyhUYspOaT33qudat3vMRTenxMZORbZIMQrIEpcg3DtIEQ l5KPiJgboVDRV6skEs3u+HeHBLL88fFUA2q/kGaVRrt+YxkwHD7TDM9dI2zv5WdTOWJIWMvsoau O7aONsnXYm27p1w== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang When the device is being removeed, the work queue should be canceled to avoid any pending work to be executed after the device is removed. Fixes: d952bba3fbb5 ("mfd: ls2kbmc: Add Loongson-2K BMC reset function supp= ort") Signed-off-by: Miao Wang --- drivers/mfd/ls2k-bmc-core.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/mfd/ls2k-bmc-core.c b/drivers/mfd/ls2k-bmc-core.c index 06ec8143d8cdbe2c8e5a141020d96c21b37fa699..5eea53f134215456e0c14345ae4= ebc5b66bd433d 100644 --- a/drivers/mfd/ls2k-bmc-core.c +++ b/drivers/mfd/ls2k-bmc-core.c @@ -375,6 +375,12 @@ static void ls2k_bmc_save_pci_data(struct pci_dev *pde= v, struct ls2k_bmc_ddata * pci_read_config_dword(pdev, PCI_INTERRUPT_LINE, &ddata->bmc_pci_data.inte= rrupt_line); } =20 +static void ls2k_bmc_cancel_wq(void *data) +{ + struct ls2k_bmc_ddata *ddata =3D data; + (void) cancel_work_sync(&ddata->bmc_reset_work); +} + static int ls2k_bmc_init(struct ls2k_bmc_ddata *ddata) { struct pci_dev *pdev =3D to_pci_dev(ddata->dev); @@ -385,6 +391,10 @@ static int ls2k_bmc_init(struct ls2k_bmc_ddata *ddata) =20 INIT_WORK(&ddata->bmc_reset_work, ls2k_bmc_events_fn); =20 + ret =3D devm_add_action_or_reset(ddata->dev, ls2k_bmc_cancel_wq, ddata); + if (ret) + return ret; + ret =3D devm_request_irq(&pdev->dev, pdev->irq, ls2k_bmc_interrupt, IRQF_SHARED | IRQF_TRIGGER_FALLING, "ls2kbmc pcie", ddata); if (ret) { --=20 2.49.0 From nobody Tue Sep 29 08:22:34 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C79C83D8901; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364749; cv=none; b=ExbcoEruWBbPgbBr4or25qnJ/Z/yb+W1RDv2DOcO7sNkvsQBaufTBRU0m67B7ZCrZRzFW2c3aDWLozS7IFosXHgd8fhAuh0wCWyC8H0gyJ2xDU7B/muv58QFrZLq4FEg6yzxwDsxU3jicjF0bbWjpWV5h1VY8RYjdCRyCKWYrgU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364749; c=relaxed/simple; bh=STrnsz8WNMiuyoiZVYpdv4alg8jAQTH4HexAp5WAsoo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hBas+OEv0nDJHEWNPcbBtuOcdpTLgfl7ohdIhQIU2Uc1HcjRBNLfFmLAJCtFHH/+kzEaaCppjUALtrA/6OOTQBHFFZiJ407hBtAwM8490PFF/fbUOncjou5a3y9WMHFhEDjQRKcL/R7PLArPiMFxVNc/rY5rvO+7wNd2xrUTBYw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JNzs0XXr; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="JNzs0XXr" Received: by smtp.kernel.org (Postfix) with ESMTPS id 758D4C4AF0C; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786364749; bh=STrnsz8WNMiuyoiZVYpdv4alg8jAQTH4HexAp5WAsoo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=JNzs0XXr/zc89rw+iMHn+gMdNhwhKPQtuQWxYCudeof3m+5zLL8oFuUbKHKZdLx3X uaaUS8ld5NGbPKGpQa9omFPsMNxeXLsJMRZyk44zlmYBhear+jfmsoiXckT2Kxlw8O vT89gALjd5EWsX6hnCIolNNdWeHlURnxVvalH5zxJbfzHwhw21VR30xNjlRwnXsItf Scd0A2TLx4KpHiFEoYDLof+xPYVh1pPOTCDOdZnENMWLuTDI+jf2DddVeIYsbdeuoo mcSN0qeoUE4nWZmf1Cl7DzlhZPSZ+CcSCunTZmTXcRYkkGz4tPxuexni2/vBlaYlTZ s1XQjwCVHpInw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 61609C5B56C; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 20:25:31 +0800 Subject: [PATCH RFC v7 5/8] ipmi: ls2k: adjust dependency to its mfd driver Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260810-ls2kbmc-mod-v7-5-8aa0fb5a5462@gmail.com> References: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang , Corey Minyard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1757; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=5F0h5Qv+XPb37y2d1dKKxcFdJW7AFH0K1WRgvpNasK8=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecNKD/+ONE0nqfCKPLy1MCc0+MF1LvjZmZFaQ tqJLQY43aSJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannDSgAKCRCwMePKe/7Z bsUaD/4wt/rIkjhA73FhH5uU716uJZ4vyFcMUQMlyG/qA2ZcyiE8fOkKD+yRTFobswUmBSi+b1q 5e/KpFyLA5Y8LdsG9vyUePosVFohtm9+Nv/NZPuLazaTzUq0M9EWBeFdApV/TxiD2Xprd9CBTga dB0QZr7LJIutxeP0fxNdo+SWRoK71P6CrRZJhlWSosnr3RwnWgFo1m56ZGgDdhBFgWn06a14kBm kCFr7hvKuo2WmCrUxldsNR9Z4TXfxqgztgJzP6z1+Nte84Lp9okQUebUjXHjkJ/nXxpkv/5eoIH y6MvB86cgtv2q9p6syPjxWi8z03WG9kjd2VccX2D0ZfmbimiUtCrgEMN2z7BAZ5dLQMvYW0jN5J YeZeVsGIUz0xlpSpnui3LsOi79ajakqWZ1+/uU8gP3zOZ3nr++wrXuhHPrgyR5B2blwnXd+TeVw f+gWM6JPwKTTlY2qc0GcsXOfm/agddullD2XtR+ubT3jyNCCyCnU9TxfY+jiBCM+VgVsCSPtm7e B5iiFVWcTSVYpIKhc0FQSkkyxBuBuV9JK3ek/bEjLHE/9mXF3ULFpejSvDxi0XOgoyunR+/tmUZ /m6LgSZ26oe1hshrxLNsHmGOHisool0I3fVZNzL+Bnmc5svuV3Bppkc8ica7CvNfo+Mp4IGKJn+ K5MjSW0e9QDypgw== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang There is functional dependency between the IPMI driver and its mfd driver. Previously, the dependency was set to "select" from IPMI_LS2K to MFD_LS2K_BMC_CORE. However, the ipmi driver is actually compiled as a part of the ipmi_si module, and IPMI_LS2K is a bool option. Therefore, the dependency "select" will force the mfd driver to be compiled built-in when the ipmi driver is built as a module. This is not desirable. This patch fixes this by declaring a conditional dependency from IPMI_SI to MFD_LS2K_BMC_CORE if IPMI_LS2K is selected. This will allow the mfd driver to be compiled as a module if the ipmi driver is built as a module. The adjustment to Kconfig for the mfd driver will be introduced in the later patch in this series. Fixes: d46651d4e3c0 ("ipmi: Add Loongson-2K BMC support") Acked-by: Corey Minyard Signed-off-by: Miao Wang --- drivers/char/ipmi/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/char/ipmi/Kconfig b/drivers/char/ipmi/Kconfig index 669f7600019747bcd2b37563477cf336f19a0407..07f3308c71616215871a730b87f= 1991d2b502e63 100644 --- a/drivers/char/ipmi/Kconfig +++ b/drivers/char/ipmi/Kconfig @@ -62,6 +62,7 @@ config IPMI_DEVICE_INTERFACE config IPMI_SI tristate 'IPMI System Interface handler' select IPMI_PLAT_DATA + select MFD_LS2K_BMC_CORE if IPMI_LS2K help Provides a driver for System Interfaces (KCS, SMIC, BT). Currently, only KCS and SMIC are supported. If @@ -87,7 +88,6 @@ config IPMI_IPMB config IPMI_LS2K bool 'Loongson-2K IPMI interface' depends on LOONGARCH - select MFD_LS2K_BMC_CORE help Provides a driver for Loongson-2K IPMI interfaces. =20 --=20 2.49.0 From nobody Tue Sep 29 08:22:34 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C87A93D891B; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364749; cv=none; b=pAIFm3jt4k0LQisLVbVY+wCnJ94zNbqQ7RJwRotVSvvTqIAL//L+1nG8wuDtPkbDDx0oQWotyso79+v4fHSV/0bMlmnwfLqmgYDOpJ8Mfv+ETXcy2CJfrT0DmjaxpBhiRFfHsoQDb5tJlZns+bOXZixXp6nd0kOs9RG6R8k5hCA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364749; c=relaxed/simple; bh=vZac1ji0I2lbNpDkmzQP3TJvCTOj42vg2oAMlAK30yA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WR4Pkeb8v7DLDl7uhCp9iVBfCWD3TFyDTLhiLHS0sPHNaNGKeFHsUnEDU+2yuGKFSboMD6KwEC4VVIcTYiQrfeMzqeFKmuItug51twWpvWVwVLJSSOo4NutXcLuzYRIz7GMG7J1jgmg+SfltNH75uSjmVvPJr1S+eJ2mxstpyH0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gkCYCYeh; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gkCYCYeh" Received: by smtp.kernel.org (Postfix) with ESMTPS id 81DCDC2BD04; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786364749; bh=vZac1ji0I2lbNpDkmzQP3TJvCTOj42vg2oAMlAK30yA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=gkCYCYehNEPWk97d+N5GgIlgttDcBotLAPNGOlSKXwwWC40FU7Xogx9VC5KKkCEUI 9g4Fhesq6vTp16e0ro8Dpzcfxj2MYuAyP1algEgsCxtOS6QUVpp0aGoPbC6rcthc6V w6lmkawQTjFj1WgMEpD6t3qv6dfLg2rXHmqciSLRfUWVSWcD0Ga8xIjDo6esGUWd1f Ub9ijizwIYgO116Xg0xxB+W50z8/iNxptJ2DBe/ljWEX7elp/+zVLe6CbY7N2puiw2 lgJ9YGoiasBgDufCJB09AZmG0y80G0bvUG44UyMv7SoJbbtch8yQeNcoVpvL9TRhAL 8/apbTmT2QinQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 70197C5B56A; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 20:25:32 +0800 Subject: [PATCH RFC v7 6/8] mfd: ls2kbmc: Able to be compiled as a module Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260810-ls2kbmc-mod-v7-6-8aa0fb5a5462@gmail.com> References: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=726; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=4cYoUAWfr6lC2eTeoh29c5JZOLqOi/IiHDJf/iiky6g=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecNK0qg/Jrjw9Ll/FOMMe2v4VrXstJSrbKo1T 0g6uyqzZI6JAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannDSgAKCRCwMePKe/7Z bmdXEACUGds/nD1M/ElkbmFm5dpHvSWni1XBM8ta7+UpMn7UJDVmG6j6NP/OnyknmR1f3GuJabc IUiA5y5lM3RtzP3kH0ei8AET0QU++Jqz5spcpfTkPqwl62xexWiK/+FTp8LayV6oFGlWAn6zlVQ 3hazb/MzsEAB+bNSHDtJ1My96tVoczHn560d9jqijiskIadHTn5Kpy123QVwzb61T0ClnAp+tM2 s7AMmKN8PM4fpTCxhgY8wA+4VoKTvBiDYiwX2ebQzx6Owf7oE3qjSZfTV5gEA2JHL7tbNS6DqIX 6Dq50ie5/hb0u9serMr++x+rSh+FUjrGHyowikPS+d8l/LnEbiFKtIErPrN8/+hdtPELSnz50M9 aUdNoY39nNBNwlKuAZuXebaG1VNjxErAw1SeqKerw5KE+51C/s1ilkDLcNSMvmOiOi1y/Q+dzuz SdiBN8/tMRTaDhMylT8+xyt8K48EJr8sBC6QBE+zAzY8ZhrrRQfnxdZr4cUYHc9t1XTKqNt/o6g 3Nduc21OHEAHp8GycA4Oz/ufws6H940Z99eFKkrNUmjIkBLrBIletqLUOc17SLCjbGpz/soSa+S iw95vRAEpWmY/CkRky/9e3YxxMNSKhGQbd88gseh/N1ireVQXiuHRRAjEm8MyNQcjZKi6PAOEm1 NdbW8oyhomPvSqw== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang Make ls2kmc able to be compiled as a module Signed-off-by: Miao Wang --- drivers/mfd/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 763ce6a34782bdd5d2b1a4d840c75b040092d83e..a7a9f97af248c88489dc1203a1b= a05f2ce4827df 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -2494,7 +2494,7 @@ config MFD_LOONGSON_SE which will forward them to the corresponding engine. =20 config MFD_LS2K_BMC_CORE - bool "Loongson-2K Board Management Controller Support" + tristate "Loongson-2K Board Management Controller Support" depends on PCI && ACPI_GENERIC_GSI select MFD_CORE help --=20 2.49.0 From nobody Tue Sep 29 08:22:34 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C78863D88F7; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364749; cv=none; b=TkA74eoCmU46Bv9g8wntZDJK9sXTzR2QKvLY48bcRcbDg6eFYr1KofIvRdylCGC0cRmKpO0cMPFY3GpLtaTnx12nC/m2tgo5o4ABOfEGDwIhfY/JBrECGSAXSCg5Eq49PQSkP+XKq5/MaHVxWnzCfwlBlktH3/R96DPTPwdM+IM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364749; c=relaxed/simple; bh=9rgQcPPYZjjypoUXySh5HLkrDxYI2QsEfEd8fBjEO3Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FLOY+7eHtcgWSSHShMD+DTjP+X3jTCaJ0qM33a4Z6qTF/YNdRL63LAHOj3mMM1EDYu89e6PRLULSygkOETAH4rmRDxghH7EUEF+PuKRjGM1CZSce7xT+Z5c8jARPMl9+ljdHyP00tMXTnwjZ3kzNy4vlELuNuQ+dKg+pIKcme60= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=P/xrzXYs; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="P/xrzXYs" Received: by smtp.kernel.org (Postfix) with ESMTPS id 98051C32782; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786364749; bh=9rgQcPPYZjjypoUXySh5HLkrDxYI2QsEfEd8fBjEO3Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=P/xrzXYsP1s9OrFUsEqkBtBG6TFdkSgIBP/zfq0PgiPpOZEehA5JbST6uDwszLjjL EY+lvXQwyhMM5+QX/4duUODBjjnXHq1aa1LrpSM1k5OU/vAK2tyqY69IPHY9ClmEXg u6zmBj8eYUEYO7+ARUt5ajHk0/3yIOnuHleI+vlVHrG9Jv3HAAoxG2ekMcarXJoGLp oSZVwZ2JSmCl7GN/Il5mK8k4/0NqPxWlziixFb2COa/zzztBr4chnJfsJomYrLi+P3 9QA2PuTFUSvXi73e4O5PjimXXD8cLxVEYt3wvrDxwK+wrSV5ahiBlulr79h78O0xZZ ID/nnfaiMInwg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 83454C5AD7B; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 20:25:33 +0800 Subject: [PATCH RFC v7 7/8] gpiolib: add gpio_device_get_fwnode() helper Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260810-ls2kbmc-mod-v7-7-8aa0fb5a5462@gmail.com> References: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1908; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=TZFM28+jBaBa8iuXdlwWyQ1gE02lWVl9BRxh0Scrj4Y=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecNKChiHV4FlwTC2L0MKnFagxhv07RZPj/lej xw6UtWYSbWJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannDSgAKCRCwMePKe/7Z bgQqEADK17apNRntZZAWqWEN8HBDJt+fUEPafcOrgvFld88aL5msNBZGPSg/fQXZCMliCLcCKs2 gEdC52dfxsJ6W3oezQIuLrLVtqoe2amUvcbBPRegWXJa92F1tzqzuqG7EYGZkU3YRHOCylYJCe9 c0PmDaGXdMOIs6PZb4/vYd2CXvGNGB1It8KtgKBKewwftmC5Li68jL6MCEE4zg/nflUsWCZYaML OYgP2iIyHe7dRtonrZbfqrijbJf6CUynoXGhFhCnjllb+FlUPiVKuG9/PayXqZ0DUdUrZJ2rbsm xToA4tuX2M6DsltHKXmhThmQlERmcRq4ref6JU1iDUccJ7qziXga++GE/vA7PN5Ws9i4K1lWCVI EpCIcjHudXZ/6KdLjotCyDalgAt/hwv4M6lAolEIZMa+oo3wm+QDorOjmjtbqpSbLQk9MTqf4ki f1YwXR09YJfewd2X7yRKOgaOph9fxxQ5Z8g6+ex3EnJOvmrgjYQfrYxQDOK1EzUy/63nYWy+BZ7 y4iJGVcQP+v4w84BXCNPPWMQh/tDzztxhDJPuRV2UaKexhhNBmI7zwVuLWNSBeJ1t2y5ENB7rlO c2iJ4qqgaEgLTvC3XM6YcEsm/3SAIQgckzTGBqTCdvkvL6urUIewESAlMFLAdE+JNGNCWVmu/ye 1VqG35IO5npnHeA== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang Add a helper function to retrieve the fwnode associated with a struct gpio_device. This is useful for drivers that need to access the fwnode of a GPIO device for various purposes, such as creating software nodes or handling GPIOs in a platform-specific manner. Signed-off-by: Miao Wang --- drivers/gpio/gpiolib.c | 13 +++++++++++++ include/linux/gpio/driver.h | 1 + 2 files changed, 14 insertions(+) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index e5fb60111151f6de20b424551acf213fb058e190..3774ebbbe550cdce0989a2d06f2= ab658529c3bab 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -1583,6 +1583,19 @@ struct device *gpio_device_to_device(struct gpio_dev= ice *gdev) } EXPORT_SYMBOL_GPL(gpio_device_to_device); =20 +/** + * gpio_device_get_fwnode() - Retrieve the fwnode of the underlying device. + * @gdev: GPIO device for which to return the fwnode. + * + * Returns: + * The fwnode handle of the underlying device. + */ +struct fwnode_handle *gpio_device_get_fwnode(struct gpio_device *gdev) +{ + return dev_fwnode(gpio_device_to_device(gdev)); +} +EXPORT_SYMBOL_GPL(gpio_device_get_fwnode); + #ifdef CONFIG_GPIOLIB_IRQCHIP =20 /* diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h index 17511434ed077dde8807bd7630c342e146e5230b..4dd9120707ec72a978f5f916cc5= 473a91b65d2b9 100644 --- a/include/linux/gpio/driver.h +++ b/include/linux/gpio/driver.h @@ -641,6 +641,7 @@ DEFINE_FREE(gpio_device_put, struct gpio_device *, if (!IS_ERR_OR_NULL(_T)) gpio_device_put(_T)) =20 struct device *gpio_device_to_device(struct gpio_device *gdev); +struct fwnode_handle *gpio_device_get_fwnode(struct gpio_device *gdev); =20 bool gpiochip_line_is_irq(struct gpio_chip *gc, unsigned int offset); int gpiochip_reqres_irq(struct gpio_chip *gc, unsigned int offset); --=20 2.49.0 From nobody Tue Sep 29 08:22:34 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E25453D952E; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364750; cv=none; b=JP6D9MP/VmKnzJ8p7vQe/Z5VIoxyr+RlNO/7zAaQ+ZLssPWyLaEexwCxtatP0J/esFX4sNr+qOun2FMgPcYoeMLvMvY2Zn3BCn2P/b00oitBk/HSsMYFYgb423yFKNXqHVjGqwaU72uHQspiNV0LM+ysu+YAG8HqhuiiO7Sa6+E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786364750; c=relaxed/simple; bh=4dxdkQP+TZX3IX8qfG+E0MZi+nndkGlnSM/YREv4M2I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HEq4VQIN16difRVUhy3195+9QBzhvtTcQY+jyi9oaemt4moIR/PNkJF8UmwtjpxzfWlBfwmXgfu3HcKFB+7trgJ10+/+n/6dHCFHsSIEBG/nNVaecBay4wOAAD6iHCXFHgXlQt62nLHq5UbYKozeoNatCzYrShFq8Bh0u4xxkdQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZAD7Db3W; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZAD7Db3W" Received: by smtp.kernel.org (Postfix) with ESMTPS id A7A7CC2BCFA; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786364749; bh=4dxdkQP+TZX3IX8qfG+E0MZi+nndkGlnSM/YREv4M2I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=ZAD7Db3WzwB/H5EMzC4wX8ycPpKDFbmX1kSysVBzHfhCNk91X8fI/zSAcSQeXn7q0 Cp/cRyp1E3CtMkgsCaQsHy8Orbr3hZlDYNEQmMA531TfgIMh0Vxsce0av1EnAZ+Apw AY472HsIyS305sN99QBx2Q4odkVvlPNFOkHAJuGp7fup681dKCHSMr6pQ6MhcOhqih vRDlixwyVbGo/ka0UAT900SOHuvgJIFFwWVrTi4O6jmtn0HtXacbutsoTcRKmgVWMZ l0gOGkCStWo0gDh3UX4VUrvYcCxsfl4CTNN3JmzhtHFg0rrrs6v9BhuM/kcTralTCt 6IXVmF6gQEHcA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 96830C5AD55; Mon, 10 Aug 2026 12:25:49 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 20:25:34 +0800 Subject: [PATCH RFC v7 8/8] mfd: ls2kbmc: Capture the reset event of BMC through GPIO Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260810-ls2kbmc-mod-v7-8-8aa0fb5a5462@gmail.com> References: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v7-0-8aa0fb5a5462@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=8496; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=d8mSd9U4xCrG2CuTI+mkc1YS6J0ec5uyza8o9UJA1sA=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecNKcUNCuLwtZIqDHxL7JKiVAxVPhazoKMzFk OgNDVYw2/KJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannDSgAKCRCwMePKe/7Z btBID/4h+5GrGVrKxwlbNMjRHHM/XslMXOO/G5AVx8thtZWkLvizzdvRBKflj39Gx6zmJicNozF 5A3ygRbdDt6UHszKUq4+vyfJQV/2sX4/xkLuTJsLkVIuFiX0vtK04Nbs+mThMQxGvdBVGvG3Yw0 2y7jFGbsQwm+k/sLRoOCEL914avSQiP9lWhv7CRCC+zH3SiWnqgdywWJkOtt57yDDV5fkJxZqAZ ahsQF7sDsSTabf/57TKZQT6xpl+HNIMQCAWm3x+BhBhEQ/7sZSh3/PPZgIGgyd+bVsUd93XKPf/ KU3R+pY1hIEDhexFgI9MktrKmV7CVkXeHku+jdLaW+j8TyxKNV3+wuRVav1zkfdrVcJ73mBEi5q LkDIBQp7cTrfGtMrV8XLhSBrD/EHyxa5lZMloIRVOY3gaDkQ9SXkcTBFjZkHtFE9aMO8608kCFI HvlS0qkozBZuXtDwszfJBPbd9qHh7jg6vM1cCl0omiZatFTOpJxHJLYZkcxJmTCzg7PNk+luEA2 +BY4izr1p0RmJeTn2dYqOWyeGDIViuTOHZCcbGQ0IOwUHt8qB8xjeppwbra3QM/m5frjUgH9LfW 0q3lvqTKxX3ohagQIAcToDvPjDiCZsGbCm9F0duiBobXgIfMlcm/IME4F4GxtYtCp0QAXe2xAsN 5hW0EkEXq35wu7A== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang The reset event of BMC is captured through GPIO. However, this driver bypasses the GPIO framework and directly accesses the GPIO controller through the fixed address. When the same GPIO controller is also exposed through ACPI and probed by the corresponding GPIO driver, there would be a conflict between the two drivers. This patch will try to find the GPIO through declared GPIO pin in the _CRS resources of the ACPI node. If no such delaration is found, the driver will fall back to search for the correct GPIO controller and pin according to the fixed address and pin number. A possible DSDT declaration for the GPIO pin might be as follows: Device (BMC0) { Name (_ADR, ...) // Match the PCI address of the BMC device // \_SB.GPO1 is the ACPI path of the GPIO controller Name (_CRS, ResourceTemplate () { GpioInt (Edge, ActiveLow, Exclusive, PullNone, 0, "\\_SB.GPO1", 0) { 14 // 14 is the GPIO pin number } } Signed-off-by: Miao Wang --- drivers/mfd/ls2k-bmc-core.c | 153 ++++++++++++++++++++++++++++++----------= ---- 1 file changed, 106 insertions(+), 47 deletions(-) diff --git a/drivers/mfd/ls2k-bmc-core.c b/drivers/mfd/ls2k-bmc-core.c index 5eea53f134215456e0c14345ae4ebc5b66bd433d..fd2142d4991a49e49ddaf604a08= 5113614afac6e 100644 --- a/drivers/mfd/ls2k-bmc-core.c +++ b/drivers/mfd/ls2k-bmc-core.c @@ -26,6 +26,10 @@ #include #include #include +#include +#include +#include +#include =20 /* LS2K BMC resources */ #define LS2K_DISPLAY_RES_START (SZ_16M + SZ_2M) @@ -81,18 +85,6 @@ =20 #define PCI_REG_STRIDE 0x4 =20 -#define LS2K_BMC_RESET_GPIO 14 -#define LOONGSON_GPIO_REG_BASE 0x1FE00500 -#define LOONGSON_GPIO_REG_SIZE 0x18 -#define LOONGSON_GPIO_OEN 0x0 -#define LOONGSON_GPIO_FUNC 0x4 -#define LOONGSON_GPIO_INTPOL 0x10 -#define LOONGSON_GPIO_INTEN 0x14 - -#define LOONGSON_IO_INT_BASE 16 -#define LS2K_BMC_RESET_GPIO_INT_VEC (LS2K_BMC_RESET_GPIO % 8) -#define LS2K_BMC_RESET_GPIO_GSI (LOONGSON_IO_INT_BASE + LS2K_BMC_RESET_GP= IO_INT_VEC) - enum { LS2K_BMC_DISPLAY, LS2K_BMC_IPMI0, @@ -186,6 +178,7 @@ struct ls2k_bmc_ddata { struct work_struct bmc_reset_work; struct ls2k_bmc_pci_data bmc_pci_data; struct ls2k_bmc_bridge_pci_data bridge_pci_data; + struct gpio_desc *reset_gpio; }; =20 static bool ls2k_bmc_bar0_addr_is_set(struct pci_dev *pdev) @@ -375,6 +368,82 @@ static void ls2k_bmc_save_pci_data(struct pci_dev *pde= v, struct ls2k_bmc_ddata * pci_read_config_dword(pdev, PCI_INTERRUPT_LINE, &ddata->bmc_pci_data.inte= rrupt_line); } =20 +static int ls2k_bmc_gpiochip_find(struct gpio_chip *gc, const void *data) +{ + struct acpi_device *adev; + struct list_head resource_list; + struct resource_entry *rentry; + struct fwnode_handle *fwnode =3D gpio_device_get_fwnode(gc->gpiodev); + phys_addr_t start_addr =3D (phys_addr_t) data; + int ret, found =3D 0; + + if (!is_acpi_node(fwnode)) + goto out; + + adev =3D to_acpi_device_node(fwnode); + if (!adev) + goto out; + + INIT_LIST_HEAD(&resource_list); + + ret =3D acpi_dev_get_memory_resources(adev, &resource_list); + if (ret < 0) + goto out; + /* + * ACPI memory resources are ordered and only the first one is + * considered by the driver of the expected GPIO controller. So + * here we also only check the first one to see if it matches the + * expected address. + */ + rentry =3D list_first_entry_or_null(&resource_list, struct resource_entry= , node); + if (!rentry) + goto free_resource_list; + if (rentry->res->start =3D=3D start_addr) + found =3D 1; + +free_resource_list: + acpi_dev_free_resource_list(&resource_list); +out: + return found; +} + +static struct gpio_desc *ls2k_bmc_find_gpio(struct ls2k_bmc_ddata *ddata) +{ + /* + * In conventional way, the GPIO should be obtained through ACPI or + * device tree. However, when the information is not available, + * we should find the GPIO according to the convention of the server + * boards with LS2K BMC, the gpio signal reflecting the reset event + * of the BMC should be connected to pin 14 of the GPIO input of + * the first CPU node. The address of that GPIO controller is fixed. + */ + static const phys_addr_t LOONGSON_GPIO_REG_BASE =3D 0x1FE00500; + static const unsigned int LS2K_BMC_RESET_GPIO =3D 14; + int ret; + struct property_entry ls2k_bmc_swnode_properties[2] =3D { }; + + dev_dbg(ddata->dev, "Searching for GPIO chip at address %pa\n", &LOONGSON= _GPIO_REG_BASE); + struct gpio_device *gdev __free(gpio_device_put) =3D + gpio_device_find((void *)LOONGSON_GPIO_REG_BASE, ls2k_bmc_gpiochip_find); + + if (!gdev) { + dev_dbg(ddata->dev, "cannot find GPIO chip at address %pa, deferring\n", + &LOONGSON_GPIO_REG_BASE); + return ERR_PTR(-EPROBE_DEFER); + } + + ls2k_bmc_swnode_properties[0] =3D PROPERTY_ENTRY_GPIO("gpio", + gpio_device_get_fwnode(gdev), LS2K_BMC_RESET_GPIO, GPIO_ACTIVE_HIGH); + + ret =3D device_create_managed_software_node(ddata->dev, ls2k_bmc_swnode_p= roperties, NULL); + if (ret) { + return ERR_PTR(dev_err_probe(ddata->dev, ret, + "Failed to create software node for GPIO reset\n")); + } + + return devm_gpiod_get_index(ddata->dev, NULL, 0, GPIOD_IN); +} + static void ls2k_bmc_cancel_wq(void *data) { struct ls2k_bmc_ddata *ddata =3D data; @@ -384,8 +453,7 @@ static void ls2k_bmc_cancel_wq(void *data) static int ls2k_bmc_init(struct ls2k_bmc_ddata *ddata) { struct pci_dev *pdev =3D to_pci_dev(ddata->dev); - void __iomem *gpio_base; - int gpio_irq, ret, val; + int gpio_irq, ret; =20 ls2k_bmc_save_pci_data(pdev, ddata); =20 @@ -402,44 +470,35 @@ static int ls2k_bmc_init(struct ls2k_bmc_ddata *ddata) return ret; } =20 - gpio_base =3D ioremap(LOONGSON_GPIO_REG_BASE, LOONGSON_GPIO_REG_SIZE); - if (!gpio_base) - return -ENOMEM; - - /* Disable GPIO output */ - val =3D readl(gpio_base + LOONGSON_GPIO_OEN); - writel(val | BIT(LS2K_BMC_RESET_GPIO), gpio_base + LOONGSON_GPIO_OEN); - - /* Enable GPIO functionality */ - val =3D readl(gpio_base + LOONGSON_GPIO_FUNC); - writel(val & ~BIT(LS2K_BMC_RESET_GPIO), gpio_base + LOONGSON_GPIO_FUNC); - - /* Set GPIO interrupts to low-level active */ - val =3D readl(gpio_base + LOONGSON_GPIO_INTPOL); - writel(val & ~BIT(LS2K_BMC_RESET_GPIO), gpio_base + LOONGSON_GPIO_INTPOL); - - /* Enable GPIO interrupts */ - val =3D readl(gpio_base + LOONGSON_GPIO_INTEN); - writel(val | BIT(LS2K_BMC_RESET_GPIO), gpio_base + LOONGSON_GPIO_INTEN); + ddata->reset_gpio =3D devm_gpiod_get_index_optional(&pdev->dev, NULL, 0, = GPIOD_IN); + if (IS_ERR(ddata->reset_gpio)) { + ddata->reset_gpio =3D NULL; + return dev_err_probe(ddata->dev, PTR_ERR(ddata->reset_gpio), + "Failed to get GPIO pin for reset signal\n"); + } + if (ddata->reset_gpio =3D=3D NULL) { + ddata->reset_gpio =3D ls2k_bmc_find_gpio(ddata); + if (IS_ERR(ddata->reset_gpio)) { + ddata->reset_gpio =3D NULL; + return dev_err_probe(ddata->dev, PTR_ERR(ddata->reset_gpio), + "Failed to find GPIO pin for reset signal\n"); + } + } =20 - iounmap(gpio_base); + gpio_irq =3D gpiod_to_irq(ddata->reset_gpio); =20 - /* - * Since gpio_chip->to_irq is not implemented in the Loongson-3 GPIO driv= er, - * acpi_register_gsi() is used to obtain the GPIO IRQ. The GPIO interrupt= is a - * watchdog interrupt that is triggered when the BMC resets. - */ - gpio_irq =3D acpi_register_gsi(NULL, LS2K_BMC_RESET_GPIO_GSI, ACPI_EDGE_S= ENSITIVE, - ACPI_ACTIVE_LOW); if (gpio_irq < 0) - return gpio_irq; + return dev_err_probe(ddata->dev, gpio_irq, + "Failed to get IRQ for GPIO reset signal input\n"); =20 - ret =3D devm_request_irq(ddata->dev, gpio_irq, ls2k_bmc_interrupt, - IRQF_SHARED | IRQF_TRIGGER_FALLING, "ls2kbmc gpio", ddata); - if (ret) - dev_err(ddata->dev, "Failed to request LS2KBMC GPIO IRQ %d.\n", gpio_irq= ); + ret =3D devm_request_irq(&pdev->dev, gpio_irq, ls2k_bmc_interrupt, + IRQF_SHARED | IRQF_TRIGGER_FALLING, "ls2kbmc reset", ddata); + + if (ret !=3D 0) + return dev_err_probe(ddata->dev, ret, + "Failed to request IRQ %d for GPIO reset signal input.\n", + gpio_irq); =20 - acpi_unregister_gsi(LS2K_BMC_RESET_GPIO_GSI); return ret; } =20 --=20 2.49.0