From nobody Mon Jun 8 06:36:55 2026 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11011062.outbound.protection.outlook.com [52.101.62.62]) (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 C800E31F986; Wed, 3 Jun 2026 06:34:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.62 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780468444; cv=fail; b=oAB7LNK8yxkTWVoEQch882XcPXwrZ95HK3t5Q/WpDKtNQBCb8n/RKnqfB7GYrkrUv8jrvZQqDBMebao5nZRuJXEvJjOSJ6VawBpLwUQM+4wklL1QRZfiQcarCaLThr3UrOX7MDK4Kg1raGbMuhpJDSeXlvrqIsM7v5MFEqfheMc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780468444; c=relaxed/simple; bh=URoVmVOvSe3zuk7cDRzzRYIrgyqzoD7+xZzU52FlUZY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=P4UkWOy0xLVYH4lDw0fctZXzK605NmCqZLRsB37+e9aoZdf3LI4Pv0PWQy7uceWegtR62+q2SGyC3GGP2qN8THvoi7NicflKQqEuHrl4unnvJjkOV0Y77upIiekpb1HtPNQB9ctjkt2BLePEJggr1HDrgJNdewky8rxC8jkTE3M= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=NhQpKQyN; arc=fail smtp.client-ip=52.101.62.62 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="NhQpKQyN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GsRqJqpSLA7YUtmhOnbto8N7NYinyeE0/ij7KeqSjr38qylSsFXUWwD/9u2rK8ExLOxV/A6YCxU6EnnOlPtKZ/elyM8SAsoEdbLoHrRQ9YqihdgjB0QvJfvvVAbvPoguwEEzb/OYjiwy7cGDa6BxFtBSSDtUs2PNNiBsC85zxCRhTvAKCS68iK9NOw/oAyiMxElkBDK4a4hWgP3xlxE6sAP9vd6YGP5o87OOwgI2uUciFT6vrD3gACGxIHRawLDa6lLmLaKcQmL/z24zAL6URITHkcuk4IdVfQ3xJuRGXRcb+2lCc1Z4oEK7cdJEsu6c+Dwu/l8J2yNl3XeqvKUfwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=S3QSn3EPaX7cOwFrI5f6ihMmUGWNj2gYP1azKpOS2a0=; b=ZUQie5lmL87HyAJMNRVeNJmddJPMry6KnlNXSVknGHiZeMl1v5TTCCUo5o21tLpAOJ5jwnGkwMZYyx4qNIbzmKGNtpW0RlHER8M8HEzpByyKk656Ac9WPkwvJDORmpfpi86y2WdyU44O/HN+TmJ+C8UkhdjytI7GvJXCDeQNU5AC9n3bkFQfKxQWG3t2mp6hD5CLD6gPA+iSzJ8mM+h3rN+0sQm1gFUpKIIVJTXGQk+/ygpHJL1FwRe9/bdCUP8E5+4M5S64vDzDyrC/F36N6ZAmevvM/BGOvxNIkvrkzo19zLLdPo6ZblbEpsGu60UDJMBo4PzsigvdYxhbGy7p2Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=S3QSn3EPaX7cOwFrI5f6ihMmUGWNj2gYP1azKpOS2a0=; b=NhQpKQyNeFnRFafUuzpPIaGgMQ1pS4qtHSpsLXlNuVIhfKa0bvXwjW3uBf0Me6YEbkMqsI4lQI0Jkwu08SVX6l5Tr6mZxbTAI5XbZYozwKpzM+nZxd208ntX/5wq85tZ9CWX/wrumIMYHxDAMeo7xTgy3LdHudaiaEJ6YncwJxg= Received: from BL1PR13CA0212.namprd13.prod.outlook.com (2603:10b6:208:2bf::7) by DM4PR12MB7552.namprd12.prod.outlook.com (2603:10b6:8:10c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.7; Wed, 3 Jun 2026 06:33:56 +0000 Received: from MN1PEPF0000ECD4.namprd02.prod.outlook.com (2603:10b6:208:2bf:cafe::a0) by BL1PR13CA0212.outlook.office365.com (2603:10b6:208:2bf::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.7 via Frontend Transport; Wed, 3 Jun 2026 06:33:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by MN1PEPF0000ECD4.mail.protection.outlook.com (10.167.242.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Wed, 3 Jun 2026 06:33:55 +0000 Received: from BLRKPRNAYAK.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Wed, 3 Jun 2026 01:33:50 -0500 From: K Prateek Nayak To: "Rafael J. Wysocki" , Len Brown , Borislav Petkov , Mario Limonciello , Yazen Ghannam , , , CC: Vilas Sridharan , K Prateek Nayak Subject: [RFC PATCH 1/3] ACPICA: actbl2.h: ACPI 6.5: PHAT: Add more struct definitions Date: Wed, 3 Jun 2026 06:33:14 +0000 Message-ID: <20260603063317.13665-2-kprateek.nayak@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603063317.13665-1-kprateek.nayak@amd.com> References: <20260603063317.13665-1-kprateek.nayak@amd.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 X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000ECD4:EE_|DM4PR12MB7552:EE_ X-MS-Office365-Filtering-Correlation-Id: 1d05c99e-58ea-4134-4fd7-08dec13a1618 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|376014|1800799024|82310400026|13003099007|18002099003|22082099003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: kfFfNIvx3NmeOpbKL7m7Fo2TqumtjgoZHIqx9lDrJukEooO9BtWz37qibpJO33vYg79ciwrrEKQcqztNIspvOonImuPPgFnUJOFnb+JnL654Gt99CkEoYlSwm7f9aj+qUugwrEVXzNlbrNfzw/CgnYVuivXrFOm3xRXhcQjTqYLxtzUxH//57rc/dpEJdPUXjOAQXlAQJOj3FVLwv6+y8DoZdbSNaRNMdBf2E9Uq2eFXquOz5kTVnHGOAsvtYF2wRtPkY8cTuiaMMsMD0h/ghFno07jgyX/iLeZvV/sH/yvrKvNqe3I3RbYakmxPCDmr6s4CJiTUWZvGpeHhDTTGjN0xdjDJAszSe4qolTkugov80Fwp6uuFNO76pgiKec5vWJFgoQyYDMEO075Q9pJyU1oKp9qoYZEO3d7EP2tv+ot7DntTiuQWvEN3o9mFX9e5Oisz58qD65wDgCgGHYfx6YRbjrMHwiBObQhZYmOyLtadRUGG7j9PO96XCj6Nj/mk2Yfrk16xTrWP2qTb2OBw8jXgW73DM/57uoDJt7eRc0WM6p9pORvo5Rmb7wHVDTG+AKcFAWcmFczIUtCdzwXZGQfZ9YFGFE1HGkV1cApVHb2hxH5puYzhwC3CKi6hK5Lwh03WN96DXYX4lIsLGpOjWbgE42ze5TtvQqrgzb247aT9cnx32+DUpBgTAjv6qoBt X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(1800799024)(82310400026)(13003099007)(18002099003)(22082099003)(11063799006)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 8fRq6SZu7C2GUtpyRj92Wamg+PClMTvVMVKv+rsWleLy/O6h3BJDCPPUQeOD6wySdOlxznIvkqVKif+IFq3ezjAOFRTXXwP6IIk0+zQoQHzqyWGS31PgFnPiTiPPp0NSQaxxoh5JaUK68E0GxZaMPGdbeC3ZfVEK3mnuPAEQ2oJ6xldRXolq9hrll8xCgDlWgNQfBVGZCIiu0pcHSUR4J3RNb8vnl4Xb0JkF4VXNxP2WKiOlTUTjnHRQz7zBXMgy+pb9SYelK8YiEQw/81Tx51xQI4I/s5g0BOwH5FV6g8QWmoza/E4MMblt4e9uh1jgCoqSZa7wsEiFPt9OKn+YvVW7oFh5kimkUjOYOkzDb5qpYrJQDpRiPjlMpVD+Ho3XBR1gscObixds7tw4uI8UKL6Tq/ZXihtx/OCg+dNujaf99r8GU2+Fd4L/pmt1N93E X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2026 06:33:55.5715 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1d05c99e-58ea-4134-4fd7-08dec13a1618 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: MN1PEPF0000ECD4.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7552 Content-Type: text/plain; charset="utf-8" The ACPI Specification v6.5 [1] under Sec. 5.2.31 "Platform Health Assessment Table (PHAT)" listed additional definition for "Device-specific Data" and "Vendor Specific Reset Reason Entry" in Table 5.168 "Reset Reason Health Record Structure" and Table 5.169: "Reset Reason Health Record Vendor Data Entry". Add these definitions as part actbl2.h. The struct definitions will be used in the subsequent commit to implement a generic PHAT parser for vendor entries. Link: https://uefi.org/sites/default/files/resources/ACPI_Spec_6_5_Aug29.pd= f [1] Signed-off-by: K Prateek Nayak --- include/acpi/actbl2.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h index 5c0b55e7b3e4..bff0b92d0c82 100644 --- a/include/acpi/actbl2.h +++ b/include/acpi/actbl2.h @@ -2844,6 +2844,20 @@ struct acpi_phat_health_data { u32 device_specific_offset; /* Zero if no Device-specific data */ }; =20 +struct acpi_phat_device_data { + u8 supported_sources; + u8 source; + u8 sub_source; + u8 reason; + u16 vendor_count; /* Zero if no Vendor specific data */ +}; + +struct acpi_phat_vendor_element { + u8 vendor_guid[16]; + u16 length; + u16 revision; +}; + /* Values for Health field above */ =20 #define ACPI_PHAT_ERRORS_FOUND 0 --=20 2.34.1 From nobody Mon Jun 8 06:36:55 2026 Received: from BYAPR05CU005.outbound.protection.outlook.com (mail-westusazon11010035.outbound.protection.outlook.com [52.101.85.35]) (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 BB9EC30EF86; Wed, 3 Jun 2026 06:34:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.85.35 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780468458; cv=fail; b=OdxbvV3lauwp2F4pJEWmt/1kGpWiS7cAjIcjMJvxT0WasYV05PauLNd2I7Oq3Huj90bEyadUrCtCDap48IJaqbFx3X5MoXaRPko74l66c+rGyfKmCngzDVroh+loVDrdrsee3ZLhgfGbdAPZU0OuvLYR3hiB451W3hrWTEVziXM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780468458; c=relaxed/simple; bh=jmh0wgsF16SIqJ9KqYbKwLi1z6CU4hj+SNnnPx4JN94=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=XXVlQAIsfKbZE99NArT8VpIZ8L0jm2tBU9G+mxcxxNzewFzHk8qxI+5U3lDxk/MEvyfysfI0HzXGy/ykgcwUFWqyrOeTwLBv0gnE+kCsEZqSXgm/prIJoXyep0Y+0zfVRkTQyCytHqX86BmLYnIxZlbK0pCDmG7z+1a+IAmNjSM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=pREW8Juu; arc=fail smtp.client-ip=52.101.85.35 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="pREW8Juu" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Z11JEri/R1VZWthlShOLjMHqcBFHVJBj/EckBuG7FqgUfg8HXDeKPAqxUH6v23evCywbbrZr3gVcAFMz1jQqXnWhqDCAhlk0V5zYQag+T9pCB8CuqyBt/i6X/H7TmT03ckb4hibfw/mhlUKn/F7BwbVbPUAUUm3BnuZX+93foOwB+mtlqdC/dRlJDQIPKHSgpvXbzHH1oUKzNkly3ii4rRd3gcaqrqnMJDa/Xt45L2v26uxJ4rPNvJ2qX7kHMtyw7qPynureSOeVCCQaBGioU4Log0COeKyRg6k8m0MYpfiIpWIq5LATm1C+8D4ST4Smw5wnQ+3YGgRu7PpytG6FHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=1AYHYu3nMeINUmUW1Vkd4kd1kLSfAt0l5wYlEs/eSUM=; b=pWCvga4KtVmKF2WOqmBIQBuaeDT8+mZfGuz0mHSJeLN+n85dAkuAt8pIKUFLcL1p8k7nJ9FWANYlLAMAoWpUJko4q/IaKqFWOYvDWq1OvaH1nqGkG49jkVsJRRLq8aZdhYQtAqM3te7MLhtd+I9s4/UD0lsZt0kYFmz5RBRh0Au8nk9C2noHvrAjG36ruaj4YGnK+i2DbWocws1JnrbfRjQHF9VamyQ8eeiaH9pPO9+TT/GHnHmGbCN6H0PHv7LggW1LswdygHowfiZiY2ANRJ0kmJRSicbmABZupK7wUDZhvjU+jcf3m1yIQHjIddca4l2YIfQR5MqZAzOZB4mlhw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1AYHYu3nMeINUmUW1Vkd4kd1kLSfAt0l5wYlEs/eSUM=; b=pREW8Juu5DeuiTagzsuVQOZWM0VDr3tG4sjlbuDZf1QZtMJWd9BBiHjpkVDtAof1mjKwVkuC+vfIaUSPsBvETvFvqXB6KxC5W74DukTgWZ65ipC0LnycF3+fSVyeDJ0URQiFdvsn1Z3lt74PVnT2Q8frCrueuSSletvZK4E3WWI= Received: from BLAPR03CA0108.namprd03.prod.outlook.com (2603:10b6:208:32a::23) by DS4PR12MB9564.namprd12.prod.outlook.com (2603:10b6:8:27e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.7; Wed, 3 Jun 2026 06:34:11 +0000 Received: from MN1PEPF0000ECDB.namprd02.prod.outlook.com (2603:10b6:208:32a:cafe::70) by BLAPR03CA0108.outlook.office365.com (2603:10b6:208:32a::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.7 via Frontend Transport; Wed, 3 Jun 2026 06:34:11 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by MN1PEPF0000ECDB.mail.protection.outlook.com (10.167.242.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Wed, 3 Jun 2026 06:34:11 +0000 Received: from BLRKPRNAYAK.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Wed, 3 Jun 2026 01:34:07 -0500 From: K Prateek Nayak To: "Rafael J. Wysocki" , Len Brown , Borislav Petkov , Mario Limonciello , Yazen Ghannam , , , CC: Vilas Sridharan , K Prateek Nayak Subject: [RFC PATCH 2/3] ACPI: PHAT: Add generic helper to parse PHAT records Date: Wed, 3 Jun 2026 06:33:15 +0000 Message-ID: <20260603063317.13665-3-kprateek.nayak@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603063317.13665-1-kprateek.nayak@amd.com> References: <20260603063317.13665-1-kprateek.nayak@amd.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 X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000ECDB:EE_|DS4PR12MB9564:EE_ X-MS-Office365-Filtering-Correlation-Id: 6b69965a-12f3-4ecc-aa33-08dec13a1f67 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|82310400026|36860700016|6133799003|56012099006|11063799006|22082099003|18002099003|13003099007; X-Microsoft-Antispam-Message-Info: gTjo7qVSEx43PLC2HgwW3lwkeXFu90nuJmXyfBCeF04s5G8VyovwIapYDH8iX3jz2LvDuVdE0toEK1TVA/duUiwijNji40My+ucy6QGmVmLNyfwqrEhx2Tzh7YHb3lwRzA4VRFC6g8f7v94mkdXjiA9nkODDLYMp2/44Y586lIukf+lEp0f7lAqFxXYMtTrHA66IXbKlYoQGjR1b8mHWDPBJhwRMxs74Lx+HA7JZZg4Wq7DP4PKa3n0s4miphmDmiCJYmelQTLjzrNOVz7mvK6K3L8yesXpnG+ZpBO2DLkCuGyneWD5udKrGGzt3W4Agkw4yq4ZqK6u4/I5/8rP1FI3JLtLnut2sZzrIocFv0ZOWa42wZ/Nxc5VwGno58bTJvQ2KdkISUufT5ILje16kVOtvdRlnr4KvJ2VgdaUrw2sneto8N915iOVWaLvA/SUCJqaHVyffhlq+59mw89LzhBGXktEmomBM4LdlgFptf/75htFoopS6b/YBwdp+J9wk9oOykLROw4NZhe0/SslL5naGPp3Jm+8PEUW3HfrBipMU8KSLzLpwPdJIbEnFd9NZ6UVYRVsfS1JB1+AJs18AKBPZ7FfiDkJME/EhFBHgTMXyLdw6+snRKihu5G/qC52pedCPhrgEHnQ0ZxiK9ydlxvpjiDkUfT2GgatcHw8QgScqR4HJKQYYyQPJMF/m4pKF X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(82310400026)(36860700016)(6133799003)(56012099006)(11063799006)(22082099003)(18002099003)(13003099007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: HogE8WAUwnSQ9Tc3T89bKgIRd2ZdHpcE8rUOuCJkS0QJghWKWIMWJimeUHt1c7fMVBCQTHYy8ZDGZMRQiTUbPtonBavActAhIvMhZ4sBttscA6kiQkHvD6fgCn8F56RmYE8HSHBCUOlfoF8fBPKRF2o/jRrN1PC2z0zrjFAdfOxfvEzUQddz5qR7OuYQMPDHOXknHu8rAxALUgFi4gXJFOd37OAZgp8rI1NWTc712Ppf+uEhTIOVol+mIwetM2iWad29hpo+93KxE1sQ7F5Vmx2xEa7l12kU6JdZoAe+Xer9IxwiFwolUZeCDnfy2+BykA+nRRd4L7j232pLsULR1erpz/+y7IXjIxTRb/Sj1XdJJT9lEgWHmJcMbmjJFQ/A6eCw8hi87Ue+/klHWbH95GnvSLhY3viMuN68apN5N0BNw0oE9PCKghw7cvCqxFD0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2026 06:34:11.1799 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6b69965a-12f3-4ecc-aa33-08dec13a1f67 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: MN1PEPF0000ECDB.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PR12MB9564 Content-Type: text/plain; charset="utf-8" The ACPI Specification v6.5 [1] under Sec. 5.2.31 "Platform Health Assessment Table (PHAT)" provides a well defined data format for reset reason records, including the ones that are vendor specific. Provide a generic helper to locate the vendor specific records and parse them into a buffer that can be consumed by the users. The first user for the interface is added in the subsequent commit with AMD processors using it to parse the s5_RESET_STATUS from PHAT records. Make the Kconfig depend on ACPI && CPU_SUP_AMD to prevent the need for unnecessarily compiling in ACPI PHAT support when not needed. Link: https://uefi.org/sites/default/files/resources/ACPI_Spec_6_5_Aug29.pd= f [1] Signed-off-by: K Prateek Nayak --- drivers/acpi/Kconfig | 11 ++++ drivers/acpi/Makefile | 1 + drivers/acpi/acpi_phat.c | 133 +++++++++++++++++++++++++++++++++++++++ include/linux/acpi.h | 14 +++++ 4 files changed, 159 insertions(+) create mode 100644 drivers/acpi/acpi_phat.c diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index f165d14cf61a..494c757a62d7 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig @@ -607,6 +607,17 @@ config ACPI_PRMT substantially increase computational overhead related to the initialization of some server systems. =20 +config ACPI_PHAT + bool "ACPI PHAT Record parsing support" + depends on X86 && ACPI && CPU_SUP_AMD + default y + help + The Platform Health Assessment Table (PHAT) allows platforms to + expose read-only data for diagnostics and health assessments. + + Enable this feature to access generic helpers for parsing PHAT + data records. + endif # ACPI =20 config X86_PM_TIMER diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile index d1b0affb844f..d6cf252ca4ea 100644 --- a/drivers/acpi/Makefile +++ b/drivers/acpi/Makefile @@ -108,6 +108,7 @@ obj-$(CONFIG_ACPI_SPCR_TABLE) +=3D spcr.o obj-$(CONFIG_ACPI_DEBUGGER_USER) +=3D acpi_dbg.o obj-$(CONFIG_ACPI_PPTT) +=3D pptt.o obj-$(CONFIG_ACPI_PFRUT) +=3D pfr_update.o pfr_telemetry.o +obj-$(CONFIG_ACPI_PHAT) +=3D acpi_phat.o =20 # processor has its own "processor." module_param namespace processor-y :=3D processor_driver.o processor_thermal.o diff --git a/drivers/acpi/acpi_phat.c b/drivers/acpi/acpi_phat.c new file mode 100644 index 000000000000..de612ae018e0 --- /dev/null +++ b/drivers/acpi/acpi_phat.c @@ -0,0 +1,133 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Helpers for parsing Platform Health Assessment Table (PHAT) records. + */ +#include +#include + +#include + +/* + * __phat_get_firmware_health_data() - Internal helper to locate the + * "Reset Reason Health Record" within the Platform Health Assessment + * Table (PHAT). + * + * @table: Pointer to the beginning of PHAT. + * + * Return: A pointer within the @table if "Reset Reason Health Record" + * is found; NULL otherwise. + */ +static struct acpi_phat_health_data * +__phat_get_firmware_health_data(struct acpi_table_phat *table) +{ + unsigned int length =3D table->header.length; + void *header =3D table; + + /* No records. */ + if (length <=3D sizeof(struct acpi_table_header)) + return NULL; + + /* + * Advance to the end of the table header + * where the first record starts. + */ + header +=3D sizeof(struct acpi_table_header); + length -=3D sizeof(struct acpi_table_header); + + /* + * Search for PHAT firmware health data record header + * with type =3D=3D ACPI_PHAT_TYPE_FW_HEALTH_DATA. + */ + while (length) { + struct acpi_phat_health_data *data =3D header; + + if (data->header.type =3D=3D ACPI_PHAT_TYPE_FW_HEALTH_DATA) + return header; + + /* Move to the next header */ + header +=3D data->header.length; + length -=3D data->header.length; + } + + return NULL; +} + +/** + * acpi_phat_get_vendor_reset_reason - Find a "Vendor Specific Reset Reason + * Entry" with the matching @guid from the "Firmware Health Data Record". = If + * successfully located, the function will allocate an object of the size + * "acpi_phat_vendor_element.length" and return a pointer populated with t= he + * content of the record. + * + * @guid: The "Vendor Data ID" of the reset reason record. + * + * Return: A valid pointer to an allocated "acpi_phat_vendor_element" popu= lated + * with the data from the record with matching @guid; an ERR_PTR() otherwi= se if + * no matching records were found, or if the element could not be allocate= d. + * If a valid pointer was returned, the user must call + * acpi_phat_put_vendor_reset_reason() for the object once done to reclaim= the + * allocated memory. + */ +struct acpi_phat_vendor_element *acpi_phat_get_vendor_reset_reason(guid_t = *guid) +{ + struct acpi_table_header *phat_tbl __free(acpi_put_table) =3D NULL; + struct acpi_phat_health_data *fw_health_data; + struct acpi_phat_device_data *dev_data; + acpi_status status; + void *data; + int i; + + status =3D acpi_get_table(ACPI_SIG_PHAT, 0, &phat_tbl); + if (ACPI_FAILURE(status)) + return ERR_PTR(-ENODEV); + + fw_health_data =3D + __phat_get_firmware_health_data((struct acpi_table_phat *)phat_tbl); + if (!fw_health_data) + return ERR_PTR(-ENODEV); + + /* Check if Device-specific data record is present. */ + if (!fw_health_data->device_specific_offset) + return ERR_PTR(-ENODEV); + + dev_data =3D (void *)fw_health_data + fw_health_data->device_specific_off= set; + if (!dev_data->vendor_count) + return ERR_PTR(-ENODEV); + + /* Vendor data starts after Device-specific data */ + data =3D (void *)dev_data + sizeof(*dev_data); + + for (i =3D 0; i <=3D dev_data->vendor_count; ++i) { + struct acpi_phat_vendor_element *vendor_data =3D data; + int length =3D vendor_data->length; + + /* + * Move to the next Vendor specific entry if + * the GUID of entry doesn't match. + */ + if (!guid_equal(guid, (guid_t *)vendor_data->vendor_guid)) { + data +=3D vendor_data->length; + continue; + } + + vendor_data =3D kmalloc(length, GFP_KERNEL); + if (!vendor_data) + return ERR_PTR(-ENOMEM); + + memcpy(vendor_data, data, length); + return vendor_data; + } + + return ERR_PTR(-ENODEV); +} + +/** + * acpi_phat_put_vendor_reset_reason - Reclaim the object allocated by + * acpi_phat_get_vendor_reset_reason(). + * + * @reason: A valid pointer returned by acpi_phat_get_vendor_reset_reason() + */ +void acpi_phat_put_vendor_reset_reason(struct acpi_phat_vendor_element *re= ason) +{ + kfree(reason); +} diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 67effb91fa98..daed1d66ca43 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -1627,6 +1627,20 @@ extern int acpi_ffh_address_space_arch_handler(acpi_= integer *value, static inline void acpi_init_ffh(void) { } #endif =20 +#ifdef CONFIG_ACPI_PHAT +struct acpi_phat_vendor_element *acpi_phat_get_vendor_reset_reason(guid_t = *guid); +void acpi_phat_put_vendor_reset_reason(struct acpi_phat_vendor_element *re= ason); +#else +static inline struct acpi_phat_vendor_element * +acpi_phat_get_vendor_reset_reason(guid_t *guid) +{ + return ERR_PTR(-ENODEV); +} + +static inline void +acpi_phat_put_vendor_reset_reason(struct acpi_phat_vendor_element *reason)= { } +#endif + #ifdef CONFIG_ACPI extern void acpi_device_notify(struct device *dev); extern void acpi_device_notify_remove(struct device *dev); --=20 2.34.1 From nobody Mon Jun 8 06:36:55 2026 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010059.outbound.protection.outlook.com [40.93.198.59]) (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 8A84530EF86; Wed, 3 Jun 2026 06:34:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.59 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780468475; cv=fail; b=bB+KT6QIyMjQu/2rDBKUsbHdYpGncUEMv9HWNF4aEuD1KF7IeG9QgmncrvqRZ5cs2d9yZyTKd4IrPrTO4xrWEdMJ+LrTjA+aaEYJiQ4EMZPHLSojCeaCRWhDawELdP49iPgyZvh+IeAiDKvR6UuOrPj1BvTzL53CbL2HimsmY7M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780468475; c=relaxed/simple; bh=Kjfq0iAB2MyNOw33O9fmj/zU1HHVaacHBC30qGlBN2o=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=phWby+d9Asf4l+RuAQm/U56/7NDEYoUfhVM9gHINT0HHOHuTeCSbJA2Ph7nHPHF9eIuz9b0zJnFobTng5Lhw/32A+0U0aXTKnjwN9CYVyIMZVFE286fsa1Tst71UZHLe4qgHB7oyy7rYmGleTFFwvEx7Apx5s40Fmi5hlBwKz54= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=CrPC3LS6; arc=fail smtp.client-ip=40.93.198.59 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="CrPC3LS6" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rB/MX/lPBoDs1T6GNYOrCQEsWKfZ/kDmRSWXZioMz7rmrHYRr6yCR31pEWqr9iLWwIK5DX5HlcfrnkC0xXd1h685dJg5iQHBvJ2l9jgdfbsu/oxKaelKHpMRX8pZsxeGcN/PNSZAT08SkZ8FPsvgsDbCRHHaNLF/dcsVr421YM3TuXdp0EBENTI+WMJifJPq4VlyHFjzIjK72zeWZI93EGaQ0tGVHOHMAqOQy6tjFPEGCRthEkuGdR2gjT2T5xLfBjs5JAKTc/zD/HazqWfyFd5DmePdVm3nXuVdDdr9ZU1s9E8vNml44+rIDgdlR9y8+9C4gLsw8xrRZCHYaCeBMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=h+eenYNIgHofDTfAQdJeuTg2StyNzSTWiPXC7lv70ug=; b=DYPIoooPVJAty7xGvEbwmwpK7mJudb9PHb8YUMcTSiQgZZnmD0Nss1nIE9M4lSPPVx1vPNERfAE9EjHkrYl7q6SQxMUpbr/ZUhGPtN5LAm24pKGXxo7lP+BQDhlSBGUNPUhehzt0hEBCcNx551Ja30yOanm2pcf7vP8I8A+NeXi9NHUiNCoVLDYBcXttIv+9c8gA0MnQhc1vv6aQEW/G/Kwcdl6DNBiDDD8TFRnUn4ik5sgw2D1CBZLPbnFptaIni73PkdnFYSx7xIsfuaJqV1EBKfTXoJC2T4ksY7PrZI/ajFT/refvukzShMVtER4Q1Y3o5CuGMA9pqo5aQjF0Jg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=h+eenYNIgHofDTfAQdJeuTg2StyNzSTWiPXC7lv70ug=; b=CrPC3LS6DEODS/CZWUyifjV26D5ZvuSKwL80UvUH2ZHpOt76xYAUF2HcoOGHlgB5qZoB9In4/n3AzljREx7X/iMP5lnGc0A9Nr2lbEn0Vr81hjJ9Kb8SJJwvKTjwLx/r8LYn9xrEZKbINPxFCB3FdGAufFcHOEQOrYjqSvXrLHk= Received: from BL0PR05CA0005.namprd05.prod.outlook.com (2603:10b6:208:91::15) by DS7PR12MB6005.namprd12.prod.outlook.com (2603:10b6:8:7c::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.7; Wed, 3 Jun 2026 06:34:28 +0000 Received: from MN1PEPF0000ECD5.namprd02.prod.outlook.com (2603:10b6:208:91:cafe::40) by BL0PR05CA0005.outlook.office365.com (2603:10b6:208:91::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.7 via Frontend Transport; Wed, 3 Jun 2026 06:34:28 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by MN1PEPF0000ECD5.mail.protection.outlook.com (10.167.242.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Wed, 3 Jun 2026 06:34:28 +0000 Received: from BLRKPRNAYAK.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Wed, 3 Jun 2026 01:34:23 -0500 From: K Prateek Nayak To: "Rafael J. Wysocki" , Len Brown , Borislav Petkov , Mario Limonciello , Yazen Ghannam , , , , Thomas Gleixner , "Ingo Molnar" , Dave Hansen , CC: Vilas Sridharan , K Prateek Nayak , "H. Peter Anvin" , Andrew Cooper , Mikhail Paulyshka , Kai Huang , Rong Zhang Subject: [RFC PATCH 3/3] x86/cpu/amd: Fetch S5_RESET_STATUS from PHAT when supported Date: Wed, 3 Jun 2026 06:33:16 +0000 Message-ID: <20260603063317.13665-4-kprateek.nayak@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603063317.13665-1-kprateek.nayak@amd.com> References: <20260603063317.13665-1-kprateek.nayak@amd.com> 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 X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000ECD5:EE_|DS7PR12MB6005:EE_ X-MS-Office365-Filtering-Correlation-Id: 0762d25c-5396-498c-1b85-08dec13a29cf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|36860700016|7416014|376014|921020|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: EYxKBC2wjfGd+xGvAdVj7B7aakWAXHLakQBS8U2i/AXmUN4MV2JXxlPJjaLiNuPcL7wbg00r2dXzW8eHdObTqXh+Vji4jezYY+Pq1ktLxdzx5ai8hxvbbkOTdvwK908SLOBJbgofOsulJGmbHGjex92JL3K6IIqqHNwyJ7xowmZTt2E65SEdOrYxRUWHb4Rp/G3+gcsNKQwKywGLY4QOY6U5IoLm4pjpvypfNnIis1m31ZdtjiA0lnc+wRrss82gZ6rozz6I/ThCE8bDjr1+NMYyGIfO8eM6DkcjpuMUWqXkP8pFW02Ff22sZ9xHet5+1bg1lgCirY1rzYi6gDmlXsN4HsCt5S1VZiSQX7d+jvrCWwBiI1KwhsEwjVADJeJ09CMsZ6hnOlezSjQTR5Onq34oe1W2uumm74XyZQtWn7XlUZpMYCVYM7OxT8B9RXL82DIK1wTzUqMh+VsM3LCBlkfb+4EgGjhzJ+astj/KNsS19ausjMzJRc5vrz/9QMIbZ/lfTdIHhHa5an4eje8GLcNVVWwQAzn0LGuADpI+zhy7ITicDhHyhf1WZ1p6K3jO5z7PeiYWAialpGwALlVl/0TMEBpE0kvNl0emDCHDT+riz427JcLw/U0/5d/jdkc3M6Qpts9xfpR/6IuMbf6t1mLGjqdzXeXDu3e0F9yn5THf3A36IOdT0O7Q0vGftt8mg1AMPrKUpknxsqERjs3g59YGvC6Zq1iT3totSEwzBFxMFmchDnA1buuflvrFKVtBcV0uOaTl+dVCk7ni/perXg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(36860700016)(7416014)(376014)(921020)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1s7RJjGFNa9ecz6bYJo5TGKqlwVsc6Jn/UDJJuZpMtWeecJAWh7P2T3pt+AFDIdsbDhDdwOrT4xq4qj5miYq3r7e4xvONiGyG7o5nKbeaf78T7ttRcQKyiY0iECnis5+f2r91o/1myIAAWLcLVQHp4I3ivRxPzTfrrZ9CbKLtxodCDb/fUm/yTqLS3Hc5fhYWBIHmdGBNjFBr8vFHprZSwMSit1bkqdfslZi2/8ozhRC/VTEZUz5jwYVqFYmNdlpNggcz9b+/gvtUZjm9bPMHSqwHisiSpvMBWrbCERNNPuq/4bMe+isitykwWGM4rskDgFAUWXvExmj4WhoHqF7l5JfrLeWvnLFTzmxf3exUjTyTRLNOB9I004ML5A2YNw3s/xPpugkiK3vCQwnD2D+jheKerAWN7ThIjALYGUeXjHC5FNLYcqbdSDocUF8NoDl X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2026 06:34:28.6525 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0762d25c-5396-498c-1b85-08dec13a29cf X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: MN1PEPF0000ECD5.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB6005 Firmware can consume the S5_RESET_STATUS from the FCH register and the OS may see an incorrect value at the time of boot on certain platforms. Vilas, Yazen noted that S5_RESET_STATUS is also populated in ACPI PHAT on newer AMD platforms which is more reliable than the status from the FCH register. Use the S5_RESET_STATUS from the ACPI PHAT which is described in the "Platform Health Assessment Table (PHAT)" section of "AMD Family 1Ah Models 00h=E2=80=930Fh and Models 10h=E2=80=931Fh ACPI v6.5 Porting Guide" = [1] on supported platform and fallback to the legacy FCH path if the PHAT record is not found. Unlike the FCH register, PHAT only provides a read-only value which cannot be cleared once consumed and will persist across kexec boots. Link: https://docs.amd.com/v/u/en-US/58088_0.90_PUB [1] Suggested-by: Vilas Sridharan Suggested-by: Yazen Ghannam Signed-off-by: K Prateek Nayak --- arch/x86/kernel/cpu/amd.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 2f8e8ff2d000..d3dee7fd4c51 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only #include +#include #include #include #include @@ -11,6 +12,8 @@ #include #include #include + +#include #include #include #include @@ -1342,8 +1345,21 @@ static const char * const s5_reset_reason_txt[] =3D { [31] =3D "a software sync flood event occurred", }; =20 +/* + * "AMD Family 1Ah Models 00h=E2=80=930Fh and Models 10h=E2=80=931Fh ACPI = v6.5 Porting Guide" + * specifies the vendor-specific GUID of FCH::PM::S5_RESET_STATUS record as + * "1f425831-da46-4f65-9296-3c4d44c387ab" alongside the format of reset re= ason. + */ +#define S5_RESET_STATUS_GUID GUID_INIT(0x1f425831, 0xda46, 0x4f65, 0x92, 0= x96,\ + 0x3c, 0x4d, 0x44, 0xc3, 0x87, 0xab) + static __init int print_s5_reset_status_mmio(void) { + struct reset_status_record { + struct acpi_phat_vendor_element header; + u32 s5_reset_status; + } __packed *record; + guid_t guid =3D S5_RESET_STATUS_GUID; void __iomem *addr; u32 value; int i; @@ -1351,6 +1367,23 @@ static __init int print_s5_reset_status_mmio(void) if (!cpu_feature_enabled(X86_FEATURE_ZEN)) return 0; =20 + record =3D (void *)acpi_phat_get_vendor_reset_reason(&guid); + if (!IS_ERR(record)) { + bool record_valid =3D false; + + /* Sanity check before using the parsed record. */ + if (record->header.length =3D=3D sizeof(*record)) { + pr_debug("Using ACPI PHAT record for S5_RESET_STATUS\n"); + value =3D record->s5_reset_status; + record_valid =3D true; + } + + acpi_phat_put_vendor_reset_reason((void *)record); + + if (record_valid) + goto parse_status; + } + addr =3D ioremap(FCH_PM_BASE + FCH_PM_S5_RESET_STATUS, sizeof(value)); if (!addr) return 0; @@ -1374,6 +1407,7 @@ static __init int print_s5_reset_status_mmio(void) iowrite32(value, addr); iounmap(addr); =20 +parse_status: for (i =3D 0; i < ARRAY_SIZE(s5_reset_reason_txt); i++) { if (!(value & BIT(i))) continue; --=20 2.34.1