From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6B7B015B135 for ; Fri, 10 Jul 2026 06:12:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783663974; cv=none; b=MLkecPxx54oV+Tk4nkpWLNy63lzNHHooyeMyvNbJicOAVmU3CDF49oYblmiNzOs/VL+krgnWGx3779C8Oq7njY8+NafI45yl3ZVrrE0Y7Lya+gde0e/fOq5o1FnQJW8yIWDAN+XtDiGDt5Tmk7Uvz4dLxKQ9GIOeZCWpTty1GkM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783663974; c=relaxed/simple; bh=yjbIpwgU2Zj1HVfX6Dd0Me70Vk9eclTlWalWqrmLzL4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Qh/9sVjCR2WMA4imJkrUlzlNLat4QYLsc1Q1e1IhOHDjeo269GAhs8Rk4blQr9N8GlpJDMnG2UnuPYJPU+OLcxh5Wo3NDURWnbCJ/nS5+rGj1iSKc+GP9Z0H+i9Nz09M2IrbWywGaJPPqC50MURDv09jiUORstF7tZSwqVynctw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=starlabs.systems; spf=pass smtp.mailfrom=starlabs.systems; dkim=pass (2048-bit key) header.d=starlabs-systems.20251104.gappssmtp.com header.i=@starlabs-systems.20251104.gappssmtp.com header.b=PP3mgvs+; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=starlabs.systems Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starlabs.systems Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=starlabs-systems.20251104.gappssmtp.com header.i=@starlabs-systems.20251104.gappssmtp.com header.b="PP3mgvs+" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-493b27c7451so19996005e9.0 for ; Thu, 09 Jul 2026 23:12:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=starlabs-systems.20251104.gappssmtp.com; s=20251104; t=1783663968; x=1784268768; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=RFeGRRPQZVOki974wWm87DCFrdCzIceMO+kkeAPTDHU=; b=PP3mgvs+SpPmW+yyRaFXAr8s0Rx0KdrVnY0P91sA533cW0oaT5OwO/jx4z3UlcsUfH +F3lQpqzWiFFsJ9Zw9oqYevTWjFVD2O47IngzYO/dtCnhkc7aWDRiZec5ft8YcBF/vsy nRPa2sQLStZA9I0yMFidR3xdTeyjsDVTXdhVsb2zHkx2cBgNck19tRWVTIGdg3Z7dgAX qPfkmdtXu+FIx0zymwcKBCcRYKKZzLl1Yrrg3ODsmIUlp0xo9YDAVh7k2rQwdaOEzhGA Xna/XPPHxpJwprsj6HgumR/1bENUeJBoBJay6i9RApSNMOzdeV0Wf5E0PjRBzdYWJKCi 6ieg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783663968; x=1784268768; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=RFeGRRPQZVOki974wWm87DCFrdCzIceMO+kkeAPTDHU=; b=ElBjot1/Xpa6vQ1TcSt60qwyqnza/rtMg57uaoKrqlecoRA4ez29JNl+zlnA3K1eLZ 1WAUGT33DFNYAdXYtD5p1IkIqQo3FzsgBc14+EaR6zRMKmyolrT57uxqcdJopw9cZynQ 0ezfW7/iLTozk788sq8AK+VIvrYpE8jPGgykonYnxJvZoGvlvxjRFoNtkRo+vtGByHwJ w5OXFfGHGH7AAqdnFgOJ0A1foNikr/un+N7/D9ugNE7S+K+Gp11mq0QTycVD5s4JKXdN eXeg7mdfZX+Zqj+PBmYU9VSXx1g7lN17y4ovKuWLpT9irYxxYi1I5k8MvKJCiydogb1H E33Q== X-Forwarded-Encrypted: i=1; AHgh+RqM1XSvcGv2My2BBcuQgQS1BFIdhy44fM6p5bQjBU4VjwPSGK6ld1uqjjhtC4MDK/uiza498wDujPJMge0=@vger.kernel.org X-Gm-Message-State: AOJu0Yw+dox7soQ/IazP/QjUpMIZ+7az4MwRdKyYrJaSTFRNq96gWtwa U2RvHgq521j5jD2Rz1N2dhib5/fAQO8P/NMgBZ5lxyDJ8xII7tIidc9oTnO37W+LHQ== X-Gm-Gg: AfdE7clJ9yuEr+QIKQPgHhgP9T4fgdruQ9eHw1EcQ0ixiqv4J9yVjfKMvyofAeu6efU Xf6o/YPHqTNHRLPrWi7JA+QM8H6H+qHinxzc8wgAwDhDr7DLPsyb4/UAmhNIEpRSwglzOP3ZZE8 CGuvuRDl1POp/BTcoaty4tNz2cMvD0d+mJSUODJATn/E9L5GAAFktqVXI3ILDzP+QHGO5qdFAMK IVVoCAWTEeLSGtdu/JcrlqgKFHwko791fdFYUVUGaCs0z4Njfv5QZpS4hTlZBgDCXrvI0r17Z2Z IKhTxAmyqsRIhEKzh5G0j8awC1IpW/hVkoyw5w1xcAF1eFxzt3ApFfrt/WwG+rpitpj/wTQJBAW VnX+v2jqF1bSgzEl2fIX/Lwa0ncnEsOOnRQ1/feZYCoF15SQ4/gxt8cRZ1nMWoHH2cc6AZn5QEp XypqcAJRJhQP2qHoTXKk7so0Mzc9tZMovKCsvg5uw= X-Received: by 2002:a05:600c:46cd:b0:492:6f5c:fd8c with SMTP id 5b1f17b1804b1-493f2b3fedcmr18248765e9.15.1783663968225; Thu, 09 Jul 2026 23:12:48 -0700 (PDT) Received: from horizon ([217.155.46.38]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493eb6f3dcdsm110345675e9.3.2026.07.09.23.12.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jul 2026 23:12:47 -0700 (PDT) From: Sean Rhodes To: Tzung-Bi Shih Cc: Hans de Goede , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Corentin Chary , "Luke D. Jones" , Denis Benato , Prasanth Ksr , Jorge Lopez , Mark Pearson , "Derek J. Clark" , Joshua Grisham , Sean Rhodes , "Michael S. Tsirkin" , Huacai Chen , Chen-Yu Tsai , Florian Fainelli , linux-kernel@vger.kernel.org, platform-driver-x86@vger.kernel.org, Dell.Client.Kernel@dell.com, Brian Norris , Julius Werner , Thomas Zimmermann , Javier Martinez Canillas , Titouan Ameline de Cadeville , Kees Cook , chrome-platform@lists.linux.dev Subject: [PATCH v3 0/3] coreboot CFR firmware attributes Date: Fri, 10 Jul 2026 07:12:43 +0100 Message-ID: X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Hi, This series adds a coreboot CFR firmware-attributes driver. v3 addresses Julius's review feedback that this does not belong under platform/x86. The driver now lives under drivers/firmware/coreboot/, next to the existing coreboot table consumers. To support that, the firmware-attributes class helper is moved from drivers/platform/x86 to drivers/firmware. The series also renames drivers/firmware/google to drivers/firmware/coreboot, because the drivers in that directory are coreboot table drivers rather than Google-specific firmware drivers. The existing CONFIG_GOOGLE_* symbols are intentionally kept to avoid user configuration churn. The CFR driver uses the existing firmware-attributes ABI. It exposes runtime EFI variable-backed boolean, enum and integer options, skips suppressed, volatile, dependency-gated and non-runtime options, and keeps read-only or inactive options read-only in sysfs. For CFR runtime-apply metadata using APM_CNT, x86 systems can apply a setting immediately after writing the EFI variable. Non-x86 builds keep the EFI write and report pending_reboot. Changes in v3: - Move the driver from platform/x86 to drivers/firmware/coreboot. - Split out the firmware-attributes class helper move. - Rename drivers/firmware/google to drivers/firmware/coreboot. - Keep CONFIG_GOOGLE_* symbols unchanged. - Keep coreboot bus internals private to drivers/firmware/coreboot. - Keep CFR record definitions private to the CFR driver. - Avoid rewriting EFI variables when userspace writes the current value. Testing: - Tested on a Star Labs Byte with firmware 26.07 and the driver built as a module against Linux 6.17. - Verified runtime APM_CNT apply with power_led. - Verified reboot-needed behavior with debug_level. - Built x86 objects with W=1 for the CFR/coreboot/helper path and touched platform-x86 firmware-attributes users. - Built ARM64 objects with clang for the CFR/coreboot/helper path. - Passed git diff --check and scripts/checkpatch.pl --strict. Sean Rhodes (3): firmware: Move firmware attributes class helper firmware: Rename google firmware directory to coreboot firmware: coreboot: Add CFR firmware attributes driver MAINTAINERS | 18 +- drivers/firmware/Kconfig | 5 +- drivers/firmware/Makefile | 3 +- drivers/firmware/{google => coreboot}/Kconfig | 19 +- .../firmware/{google => coreboot}/Makefile | 1 + drivers/firmware/{google => coreboot}/cbmem.c | 0 drivers/firmware/coreboot/coreboot-cfr.c | 1068 +++++++++++++++++ .../{google => coreboot}/coreboot_table.c | 0 .../{google => coreboot}/coreboot_table.h | 0 .../framebuffer-coreboot.c | 0 drivers/firmware/{google => coreboot}/gsmi.c | 0 .../memconsole-coreboot.c | 0 .../memconsole-x86-legacy.c | 0 .../{google => coreboot}/memconsole.c | 0 .../{google => coreboot}/memconsole.h | 6 +- drivers/firmware/{google => coreboot}/vpd.c | 0 .../{google => coreboot}/vpd_decode.c | 0 .../{google => coreboot}/vpd_decode.h | 0 .../firmware_attributes_class.c | 2 +- drivers/platform/x86/Kconfig | 3 - drivers/platform/x86/Makefile | 2 - drivers/platform/x86/asus-armoury.c | 2 +- .../x86/dell/dell-wmi-sysman/sysman.c | 2 +- drivers/platform/x86/hp/hp-bioscfg/bioscfg.c | 2 +- drivers/platform/x86/lenovo/think-lmi.c | 2 +- drivers/platform/x86/lenovo/wmi-other.c | 2 +- drivers/platform/x86/samsung-galaxybook.c | 2 +- .../linux/firmware_attributes.h | 6 +- 28 files changed, 1120 insertions(+), 25 deletions(-) rename drivers/firmware/{google => coreboot}/Kconfig (83%) rename drivers/firmware/{google => coreboot}/Makefile (92%) rename drivers/firmware/{google => coreboot}/cbmem.c (100%) create mode 100644 drivers/firmware/coreboot/coreboot-cfr.c rename drivers/firmware/{google => coreboot}/coreboot_table.c (100%) rename drivers/firmware/{google => coreboot}/coreboot_table.h (100%) rename drivers/firmware/{google => coreboot}/framebuffer-coreboot.c (100%) rename drivers/firmware/{google => coreboot}/gsmi.c (100%) rename drivers/firmware/{google => coreboot}/memconsole-coreboot.c (100%) rename drivers/firmware/{google => coreboot}/memconsole-x86-legacy.c (100%) rename drivers/firmware/{google => coreboot}/memconsole.c (100%) rename drivers/firmware/{google => coreboot}/memconsole.h (82%) rename drivers/firmware/{google => coreboot}/vpd.c (100%) rename drivers/firmware/{google => coreboot}/vpd_decode.c (100%) rename drivers/firmware/{google => coreboot}/vpd_decode.h (100%) rename drivers/{platform/x86 => firmware}/firmware_attributes_class.c (94%) rename drivers/platform/x86/firmware_attributes_class.h => include/linux/firmware_attributes.h (60%)