From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012004.outbound.protection.outlook.com [52.101.48.4]) (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 A2F601EE7C6 for ; Wed, 21 Jan 2026 14:27:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.4 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769005623; cv=fail; b=oqvwN20FgEfsm8L0JqtsDI46GYlZtsk4/yAx03fAtnt4zT7SVuTXx8PtWVm5Lz7atF2tjwl1dxD20n7qunKGUO21tq5d8zO0+5MWISK1zNQ+ElX9vxH7etTCqNyAQXq1p0k92tnLjrH+IxqB7uXKF0gJbWcKVmiI9qgApbV8ngA= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769005623; c=relaxed/simple; bh=RnsFMgyWlnwb/iEGK3m5A4YcHr4DRIzM/uX1qARfSnw=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=qMJ9J97En+6hFl7HKSUkxy0OHD7yduqalBdL2lGFKqeteYpcLyAVUEewJI48BkcgxUTeV3/IQmlUUqN4jNwVK6JikooX0H2tjra17C9oqUyhYDu3DXlxBlVCebU6KZIJNsK+Vs1jKRT8HOVYzr6Gs67Z0LbksuG1aaUoVA0E8UU= 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=qHlC/7Be; arc=fail smtp.client-ip=52.101.48.4 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="qHlC/7Be" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=V3b38XhI7FsZDPIs/zkYEXNMoCeJKJhRjXmRxXiergM4kF32nUkg2L6FZGdNJ+7MbVxy4a0kY37/gTxY2sxxX/L/rBNObxY3376e9LiVNKcFkYYamcOxf2hE9+A5Nd3+QYNLNDK3z+Q3O0mrF2B5hucsPPJh+5p+YotdX7RvgrGjqMnANvDI243OEtj2NcCSMtb/DowbEr+byMW9+yz5Tw/t4c2kKXNRknyZI8/N9aLLPe/V3no1zS3u9pCYbxr9OdSIFEXE3cFSk4VDqp5qlGLxt8RCfEiFtplauD5x9pfSI0lWfHtsQ7cqeY4XBPZx2OjTCTvzJwenSWdyYj4uaw== 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=mv1DPUtXr0LoCT6IGhfgfCVLU7BVHlVlEUpV/Mv3T1c=; b=BR/SbtcYVi7PRyNILBmPFzXpRkrtLQ1k12+ET8Ye4RpzRun55jWG6D2Tti49yO5KnvU62twGAKSUDNHOSUVjJHZzfbdNhSXyGCBB+BVlxAj5EoaaPCIutcWWtNHsn2mXXPldk2CNAZD4I1dn5MR3o4+oHr2kYu2d4+bdI+nz7CJUmMzTd4gXytd17Jl9B0uYtelOnf20uRCEKFwBkgUDSYVy14Evzxj/HXPM7zQYhneV9PXW/BqbXJpV3NlBsaxhr/Dmq1r//eFdVw6EuV9s1jF45RSCgRL4ZrqCCKhk+VzrEwqpb0KEGa4sQ4s9rWQ//X3K4qXT6HKIX+W3JtzmlQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none 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=mv1DPUtXr0LoCT6IGhfgfCVLU7BVHlVlEUpV/Mv3T1c=; b=qHlC/7BetB9t5mXu46bXIkgEvP3GQ49d+VNzVdBm2HB+CW2Z9GaWOLT94clmZEglsFuegth4QrQD+cCe1iVxbMVe9a7JF+D5ELzXJy1j/r1U+hkOSqirOL+97lOQiqeqibJYhvvMCDv+kqEhVsiCFzoo2ATWezLXjEcnTcrZjzw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from DM4PR12MB6373.namprd12.prod.outlook.com (2603:10b6:8:a4::7) by CH3PR12MB9315.namprd12.prod.outlook.com (2603:10b6:610:1cf::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.9; Wed, 21 Jan 2026 14:26:58 +0000 Received: from DM4PR12MB6373.namprd12.prod.outlook.com ([fe80::12f7:eff:380b:589f]) by DM4PR12MB6373.namprd12.prod.outlook.com ([fe80::12f7:eff:380b:589f%6]) with mapi id 15.20.9542.008; Wed, 21 Jan 2026 14:26:58 +0000 Date: Wed, 21 Jan 2026 09:26:54 -0500 From: Yazen Ghannam To: "Mario Limonciello (AMD)" Cc: Jean Delvare , linux-kernel@vger.kernel.org, Borislav Petkov Subject: Re: [PATCH v4 6/6] x86/CPU/AMD: Print AGESA string from DMI additional information entry Message-ID: <20260121142654.GA1784626@yaz-khff2.amd.com> References: <20260121060431.432350-1-superm1@kernel.org> <20260121060431.432350-7-superm1@kernel.org> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260121060431.432350-7-superm1@kernel.org> X-ClientProxiedBy: MN0PR05CA0028.namprd05.prod.outlook.com (2603:10b6:208:52c::12) To DM4PR12MB6373.namprd12.prod.outlook.com (2603:10b6:8:a4::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR12MB6373:EE_|CH3PR12MB9315:EE_ X-MS-Office365-Filtering-Correlation-Id: 0c51a9d0-c46e-4d5f-2a8d-08de58f92229 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?6E7L/ip3ZyRQOiODxYgBRNQEKiwQb2z37SXQ5/4VMGdIAgUNPArMcoarG7ch?= =?us-ascii?Q?iYIzMX3ol74z3/d1xjByVg5sVHkWKBRjALC0jLUXa18/Hc/ScMpWPxZczvJt?= =?us-ascii?Q?10e8mst71lMGedeI3ie+1wfSmcYZcim8pK4FeA5VnBIJPD4FQ+uApebl9DFA?= =?us-ascii?Q?SZ/qWfO9VLBhrAqMmUoyCsT/4Ds+gUd9hlWUE4o9NP86VQISc7KC1WpWzWlX?= =?us-ascii?Q?hyallQrzMF/LveSL/oi6VGhQwcCLKgShn6SV1hI4A6p/cKFRlJKCpF11kHmR?= =?us-ascii?Q?SM1kZnHW1HgZ6uQphntSY9kP4kxraR/G0XHVqVLCVzR7DVermADMn2bo7SdB?= =?us-ascii?Q?Lv1/Lv1SZJ7k0MuDWdfBviUAPwCBLEVrc/42hnMntxPw49cPBm3MlyE8UyS9?= =?us-ascii?Q?Q3QCF3b//1J4GNVMqtzsrERWBkQD+2CAJXyLE1bMd1efEpx4hVnMq4ycG2vs?= =?us-ascii?Q?BLUYTw3Ac4TICCTwKUWgyHpeYWG3MoqFLCuaO8kyVakFihphQ2G/5cPWk3Y5?= =?us-ascii?Q?Kzg5Ggzh1CVKgLkglo3PMRE+dVNaN3O2uwtvg5Es1uHaFKUjG2LFJN/EIYv2?= =?us-ascii?Q?J25cryO55QnbUv4XxAt8Ehz1JB24xC4qZDsFktr19oxbidgzU4iAEKOUAwtt?= =?us-ascii?Q?Clqf6V7PGuppssjilpaA+FIaRI+6i4NawTsS+iCakhiCQGw2l3fD0lyXsD4C?= =?us-ascii?Q?9gf3oIHSCj3z0cSzopNvU5h6C/M/r6RoRxYmsBRp6GRBf4gqMxF1JEsY6QCw?= =?us-ascii?Q?Cg3DCoOFEPvP/6rBMN1+oUbOHKjSWBmICcYJLRaZDdbNZu7lY22cfa+7rlx1?= =?us-ascii?Q?NgeklEqDFAkZ2bwu4rEmw2OOZgaaEfxQ+vC7fnkbmU8O/ls+ZxHC+3S0dL0i?= =?us-ascii?Q?o+xKM6GSaNeyrFJi+kYOpgn/bPJ2hdimSiJKV0GoI4og7LR7f3lRU2MY1H1a?= =?us-ascii?Q?eyikUuoBxMdIwfR+XmpgT5OXNBvj+yY406dlv4vGwAjQKGLC9rc2k6Cw+jOY?= =?us-ascii?Q?VRus+pWYCMHd+CjVEqoWEe4YhUJ68N/I6nZbShtZZrkh2TNxtI1axCDgXKFA?= =?us-ascii?Q?EwIXgRztVdxo2dnNwGMoaq0xzyrWwvaERlcHJUg6cJWSzoDvUWCmCf1oR8VA?= =?us-ascii?Q?lEJMVU4u55Okj4vkLAhuKtx9oSJxXnV7kq9GXwBhs0+o4lGwoMMwGxb7NyHV?= =?us-ascii?Q?ITZm8HWfUWrs1y3+0lntl8BwrR+KTxOOcFevGdXZxRMdfqwScqCYpspnUjHk?= =?us-ascii?Q?R8wDJpeF1vDfjyIUYuLNgRZc8frgUaVZlY6yf6JLKy/iYSBm6j8HVE6Uifpg?= =?us-ascii?Q?0Bc/i5HdwfosNCdvoQEiIfse/WlorGHT8Cha2+CuT14C/ueE8nOze7K3zIlm?= =?us-ascii?Q?g7UD1+gzV9YD6N3fJ8CC9+JYcSgLMLjU0O1SzLBoyiZlUGXxRw4O+JQTeqb7?= =?us-ascii?Q?fWQAwPvqIeVodFbc2E3WxSJmIi6Ywk83H+M/I7dFopEsml179Ni6L29kI0rn?= =?us-ascii?Q?MKY/Esw6EfM0HynrGyzb22BtWk3x3YmUK76AXCRwc1DrgpkZuokQdK+1fr1f?= =?us-ascii?Q?D6JuOm5mbaHBws4ABmc=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR12MB6373.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?akR8rIf/wDX3c1ZYmbP2mj4to9qofQgC1e5al0LCh+CN9mrTzasnHRSc3Z3L?= =?us-ascii?Q?ZFNoOPqZ5kaZPI/wnNn+0Ya4leP7NO+gKd4Rx2PZ4J3D/BAFanzCc5agQu0u?= =?us-ascii?Q?Qhanx/OOS2Snj93wylquiOGSK2/6ckv2PFSJzer2kQEPlz8iNR5mzOTvG+w1?= =?us-ascii?Q?iPiRoOh3NHCZZMYGzRQLXpN9hn55nH/CfEAfUCy4fYB4926JSy3QeLUFJ35H?= =?us-ascii?Q?fRaoqf/WR+AD1HiCEGsPRvMs5sWsZVCq6nGZdsWAZu6V81DU3zeDu7E0ObHs?= =?us-ascii?Q?AV0YBvOv4g+31qdX7zX72F93X+dJOiSWb/wIGLbYr+o6AQfwXQ8Lv8WLUbIU?= =?us-ascii?Q?VdyBmWBHJcUoxJBEbEYN3dauBItPe4XjQzmn47r80QWVWc6gQQjVJJTUVQgJ?= =?us-ascii?Q?3VAsc8Ao7HrK0v4ymY0u+lKjAuEs0hlau7HJeorc1G81rhx9fLFd1FwX/DtC?= =?us-ascii?Q?rMZhLleXt0oMAkJetO4pOzvnw+m3HrqQcxJBrkxl65q0KWw8oGIAPStIYVZf?= =?us-ascii?Q?puJwJkcBPpli+dtLwewmWQaYTTlDAQ6fa1dpubDwfsXPnQOy3QnJxKWdZvm1?= =?us-ascii?Q?QRsV3/qheDqrKKZM8C0iTIKq5xAfy2h2Yq7h7s83fhwBlHPp+xvJAFqK35Bq?= =?us-ascii?Q?mA945WcrAAdFOHu9++lJsLue6osQlp2lcHa0ic12OURwQX0EmTjJr8DAXbbM?= =?us-ascii?Q?2vEjQ5VpWbfD6Cy/w4W61Z3QbiuMpIByhCPJT1+VUMqcXLA4Xj7/husIhzsi?= =?us-ascii?Q?FF/j+AMt7QIQ1srouaDR5E0guevI3OTrBq9CG5ippE4SrH6tFJlzRKjXGUbo?= =?us-ascii?Q?zDTTYcySMNuBtc/FW2IuHGwtYXcElVKcOeiYLh4dUSDAtPQY9ULR+8CGRG7p?= =?us-ascii?Q?k7ZQl41YwCZwYp9NtFfKmYXaZXsKhBQA17JWOeTAkrBV6IHex3+4niDyhRLP?= =?us-ascii?Q?yW15xg6+vhdfjQjLUPUpRRq3mGlqK2e3ghMJ4Wv1LupPPsRd2Fl6FMXtE1pI?= =?us-ascii?Q?hTx6cTZi+Gj4qbbzOr5zK2NmxrdE0F8LsAXyUCoscup7KJiMwYkq2gZJ4EIb?= =?us-ascii?Q?f0jftD9xvI1e+AT/XxGfSt0gUiefEHfZoZ+Rwqlwq1O8NhNF+0E6LtL8HlV0?= =?us-ascii?Q?SsPGc7xOHKbBHBBlHbgMDRUMop5IpnGpiyvKwqlEmQaIV/3dYF4Znhqb38xD?= =?us-ascii?Q?2jOjUDpyRE3SqPzfjTiMvAvtW90Js/sXA3pESYFNtkrvyBFnGihjtRY4SWtQ?= =?us-ascii?Q?6gw1oUVixg0rxBhfjR2jl0R4YiyxK05df/VmPF5tklkpyHM1RnspA03dRnvE?= =?us-ascii?Q?/AvshVkfccg23Nx60VUfduqqw5r/5LPVmoArk8As34wJL8dr7080LxL96cpk?= =?us-ascii?Q?zS+sSKBHVepIMqD3xG5BdNXIx6dMPTBA+NwvRINgZ/L5ZM/G1GP51e3+mBzn?= =?us-ascii?Q?w/oTE3awN8Z1+c9VxGhSoPPZlp0cU/TdjpgiMelHIa3sWm1VurZZri1cNSwO?= =?us-ascii?Q?3sH1GZEc/l3HGGa75DqyCDYtIbrEf8Aqw7jomp/tCihf4yqdfTEtPT5P7Ytb?= =?us-ascii?Q?95jjQTUaQ3U6FLAOaO8nsCQLN7BnCBzp2hdXe8cni79ECZ75u4I/lb3pSerC?= =?us-ascii?Q?TAu26FXAHwjKo0SnyorZRVs76tE7a/D3xbqBesEYwo4XAj8fJaAvvjye/dAX?= =?us-ascii?Q?fPs+JV1yn53c44tKVJ2g46g27vh/+J/JsMuJpo7XcDnIFAkRyS+/GujHEBBZ?= =?us-ascii?Q?8EQzsyMcnQ=3D=3D?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0c51a9d0-c46e-4d5f-2a8d-08de58f92229 X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB6373.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jan 2026 14:26:57.9262 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Q91iFcjjZf68LWhz4mf4gqukvrvmed6mP3FjOjGWgDj5X3rXZrrA236M/Nr1oo0vQbefNB4LpiEv6hkyGJCs7g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9315 On Wed, Jan 21, 2026 at 12:04:31AM -0600, Mario Limonciello (AMD) wrote: > From: Yazen Ghannam > > Type 40 entries (Additional Information) are summarized in section 7.41 > as part of the SMBIOS specification. Generally, these entries aren't > interesting to save. > > However on some AMD Zen systems, the AGESA version is stored here. This > is useful to save to the kernel message logs for debugging. It can be > used to cross-reference issues. > > Implement an iterator for the Additional Information entries. Use this > to find and print the AGESA string. Do so in AMD code, since the use > case is AMD-specific. > > Signed-off-by: Yazen Ghannam > Co-developed-by: "Mario Limonciello (AMD)" > Signed-off-by: "Mario Limonciello (AMD)" > --- > v4: > * New patch (based upon older versions though) > --- > arch/x86/kernel/cpu/amd.c | 53 +++++++++++++++++++++++++++++++++++++ > drivers/firmware/dmi_scan.c | 3 ++- > include/linux/dmi.h | 18 +++++++++++++ > 3 files changed, 73 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c > index c19c4ee74dd1f..5cd60855a85b0 100644 > --- a/arch/x86/kernel/cpu/amd.c > +++ b/arch/x86/kernel/cpu/amd.c > @@ -3,6 +3,7 @@ > > #include > #include > +#include > #include > #include > #include > @@ -1406,3 +1407,55 @@ static __init int print_s5_reset_status_mmio(void) > return 0; > } > late_initcall(print_s5_reset_status_mmio); > + > +static void __init amd_dmi_scan_additional(const struct dmi_header *d, void *p) > +{ > + struct dmi_a_info *info = (struct dmi_a_info *)d; > + void *next, *end; > + > + /* > + * DMI Additional Info table has a 'count' field. But it's not very > + * helpful since the entries are variable length. So don't use it. > + */ > + if (info->header.type != DMI_ENTRY_ADDITIONAL || > + info->header.length < DMI_A_INFO_MIN_SIZE) > + return; > + > + /* > + * Get the first entry. > + * The minimum table size guarantees at least one entry is present. > + */ > + next = (void *)(info + 1); > + end = (void *)info + info->header.length; > + > + do { > + struct dmi_a_info_entry *entry; > + const char *string_ptr; > + > + entry = (struct dmi_a_info_entry *)next; > + > + /* > + * Not much can be done to validate data. At least the entry > + * length shouldn't be 0. > + */ > + if (!entry->length) > + return; > + > + string_ptr = dmi_string_nosave(&info->header, entry->str_num); > + > + /* Only one AGESA string is expected. */ > + if (!strncmp(string_ptr, "AGESA", 5)) { > + pr_info("%s\n", string_ptr); > + break; > + } > + > + next += entry->length; > + } while (end - next >= DMI_A_INFO_ENT_MIN_SIZE); > +} > + > +static __init int print_dmi_agesa(void) > +{ > + dmi_walk(amd_dmi_scan_additional, NULL); > + return 0; > +} > +late_initcall(print_dmi_agesa); > diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c > index ed6235ac576b6..a3f7dabd49554 100644 > --- a/drivers/firmware/dmi_scan.c > +++ b/drivers/firmware/dmi_scan.c > @@ -47,7 +47,7 @@ static struct dmi_memdev_info { > static int dmi_memdev_nr; > static int dmi_memdev_populated_nr __initdata; > > -static const char * __init dmi_string_nosave(const struct dmi_header *dm, u8 s) > +const char *dmi_string_nosave(const struct dmi_header *dm, u8 s) > { > const u8 *bp = ((u8 *) dm) + dm->length; > const u8 *nsp; > @@ -66,6 +66,7 @@ static const char * __init dmi_string_nosave(const struct dmi_header *dm, u8 s) > > return dmi_empty_string; > } > +EXPORT_SYMBOL_GPL(dmi_string_nosave); > > static const char * __init dmi_string(const struct dmi_header *dm, u8 s) > { > diff --git a/include/linux/dmi.h b/include/linux/dmi.h > index 2eedf44e68012..b7865fa387ccb 100644 > --- a/include/linux/dmi.h > +++ b/include/linux/dmi.h > @@ -91,6 +91,21 @@ struct dmi_device { > void *device_data; /* Type specific data */ > }; > > +#define DMI_A_INFO_ENT_MIN_SIZE 0x6 > +struct dmi_a_info_entry { > + u8 length; > + u16 handle; > + u8 offset; > + u8 str_num; > + u8 value[]; > +} __packed; > + > +#define DMI_A_INFO_MIN_SIZE 0xB > +struct dmi_a_info { > + struct dmi_header header; > + u8 count; > +} __packed; > + > #ifdef CONFIG_DMI > > struct dmi_dev_onboard { > @@ -120,6 +135,7 @@ extern void dmi_memdev_name(u16 handle, const char **bank, const char **device); > extern u64 dmi_memdev_size(u16 handle); > extern u8 dmi_memdev_type(u16 handle); > extern u16 dmi_memdev_handle(int slot); > +const char *dmi_string_nosave(const struct dmi_header *dm, u8 s); > > #else > > @@ -153,6 +169,8 @@ static inline u8 dmi_memdev_type(u16 handle) { return 0x0; } > static inline u16 dmi_memdev_handle(int slot) { return 0xffff; } > static inline const struct dmi_system_id * > dmi_first_match(const struct dmi_system_id *list) { return NULL; } > +static inline const char * > + dmi_string_nosave(const struct dmi_header *dm, u8 s) { return dmi_empty_string; } > The dmi_empty_string needs to be moved to this header file from dmi_scan.c. Otherwise, there's a build issue as the test bot reported. Thanks, Yazen