From nobody Mon Feb 9 11:47:19 2026 Received: from out30-97.freemail.mail.aliyun.com (out30-97.freemail.mail.aliyun.com [115.124.30.97]) (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 4699831328B; Mon, 22 Dec 2025 09:44:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.97 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766396687; cv=none; b=Ru0pK9XlTOTITlWaFFVCTxaunND7OT5/fbFWlLFVfRc89M3CR0eCFPlchjka0C8Iyt2ZUJNURb1rSbEzMalAFtmK5XCj959GPZKVZojJeP9RVkLnDf5s0npWRFHD4OntxMnr4YL27Tl+TC7o/OpaEh6QBnkVGB19TnAnu3k7YKE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766396687; c=relaxed/simple; bh=sIRwoj7+NNLSM5sC8VDFwaBjRhUUpP3NvmW0A1rR1aw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fyC+OmmjVF3iNk9tcUTuSowr1JgUdLoJoJ4zWyOs++OTZO4RbyMRPB7B8hOZyyorqJ4mKI0czL9jtyMbViivfExCq9CLsGi4C7N1gYeWYsotVBe4sW1Iwn8LHBO+KlvZj9fbDlhscUCjdAYLiUy9RmnC3jyIyTLGOC7FAp3WulY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=dUPSGp1a; arc=none smtp.client-ip=115.124.30.97 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="dUPSGp1a" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1766396683; h=From:To:Subject:Date:Message-Id:MIME-Version; bh=AoqWJ1dxlNdJjayDm9oLfOd+l+dPhqJVnP8eZKUK5qI=; b=dUPSGp1aQGGplyBDZicUfylUbCX6nXaSgyxOUwr2SQXF1xNPd15mNubimNBDmU5PGBYfak3V4ct13s7pA8xjX8uNqaCmPYeSkYR/W4CD/qKDzj9KqorbIA9rx7u/udgbuCEoTSGGn9oadl7ezJL1+erQHSyQTpJNVueZUw1WMYs= Received: from localhost(mailfrom:tianruidong@linux.alibaba.com fp:SMTPD_---0WvORvbn_1766396681 cluster:ay36) by smtp.aliyun-inc.com; Mon, 22 Dec 2025 17:44:42 +0800 From: Ruidong Tian To: catalin.marinas@arm.com, will@kernel.org, lpieralisi@kernel.org, guohanjun@huawei.com, sudeep.holla@arm.com, xueshuai@linux.alibaba.com, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, rafael@kernel.org, lenb@kernel.org, tony.luck@intel.com, bp@alien8.de, yazen.ghannam@amd.com, misono.tomohiro@fujitsu.com Cc: tianruidong@linux.alibaba.com Subject: [PATCH v4 15/17] ras: AEST: Add framework to process AEST vendor node Date: Mon, 22 Dec 2025 17:43:49 +0800 Message-Id: <20251222094351.38792-17-tianruidong@linux.alibaba.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20251222094351.38792-1-tianruidong@linux.alibaba.com> References: <20251222094351.38792-1-tianruidong@linux.alibaba.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" AEST table include vendor error node to support the component that do not implement standard Arm RAS architecture[1]. Each vendor node may have their own initialize and interrupt handle function. This patch supply a framework to process vendor error nodes, the vendor process function is binded with vendor HID. [1]: https://developer.arm.com/documentation/ddi0587/latest/ Signed-off-by: Ruidong Tian --- drivers/ras/aest/aest-core.c | 28 +++++++++++++++++++++++++++- drivers/ras/aest/aest.h | 5 +++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/drivers/ras/aest/aest-core.c b/drivers/ras/aest/aest-core.c index 052211ca3e2a..4d20e54832fd 100644 --- a/drivers/ras/aest/aest-core.c +++ b/drivers/ras/aest/aest-core.c @@ -925,6 +925,29 @@ static int aest_setup_irq(struct platform_device *pdev, return 0; } =20 +static struct aest_vendor_match vendor_match[] =3D { + { }, +}; + +static int +aest_vendor_probe(struct aest_device *adev, struct aest_hnode *ahnode) +{ + int i; + struct acpi_aest_node *anode; + + anode =3D list_first_entry(&ahnode->list, struct acpi_aest_node, list); + if (!anode) + return -ENODEV; + + aest_dev_dbg(adev, "Try to probe vendor node %s\n", anode->vendor->acpi_h= id); + for (i =3D 0; i < ARRAY_SIZE(vendor_match); i++) { + if (!strncmp(vendor_match[i].hid, anode->vendor->acpi_hid, 8)) + return vendor_match[i].probe(adev, ahnode); + } + + return -ENODEV; +} + static int aest_device_probe(struct platform_device *pdev) { int ret; @@ -950,7 +973,10 @@ static int aest_device_probe(struct platform_device *p= dev) } init_llist_head(&adev->event_list); =20 - ret =3D aest_init_nodes(adev, ahnode); + if (ahnode->type =3D=3D ACPI_AEST_VENDOR_ERROR_NODE) + ret =3D aest_vendor_probe(adev, ahnode); + else + ret =3D aest_init_nodes(adev, ahnode); if (ret) return ret; =20 diff --git a/drivers/ras/aest/aest.h b/drivers/ras/aest/aest.h index 2f6a7b9ca4ef..304c03839d31 100644 --- a/drivers/ras/aest/aest.h +++ b/drivers/ras/aest/aest.h @@ -244,6 +244,11 @@ static const char *const aest_node_name[] =3D { [ACPI_AEST_PROXY_ERROR_NODE] =3D "proxy", }; =20 +struct aest_vendor_match { + char hid[ACPI_ID_LEN]; + int (*probe)(struct aest_device *adev, struct aest_hnode *anode); +}; + static inline int aest_set_name(struct aest_device *adev, struct aest_hnode *ahnode) { --=20 2.51.2.612.gdc70283dfc