Received: by 2002:a05:6a10:eb17:0:0:0:0 with SMTP id hx23csp3856554pxb; Tue, 7 Sep 2021 09:01:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwwB4tv6SVPCDFXfHDj4jmWyIPj/ZwXMGlDjGaigpabHfPYfPr33HOGt6peMZttQbcUOWKF X-Received: by 2002:aa7:dcc2:: with SMTP id w2mr190167edu.192.1631030472284; Tue, 07 Sep 2021 09:01:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631030472; cv=none; d=google.com; s=arc-20160816; b=k60rTkpoNwXS8408q2jEwZWzuqjrtFvG5XspWExNeDU7kBpHKxY7cp4goKwzqTYCBN VeZXlT8MwXgCrNdxj3IAjr2COnY14aFFCHpLu03rEcSROKK4FuIWnNBO1NqiKI1nftdz jOtS8QGC0UYZZ4WP34kM6dJHYRaXsTOAvn5xqGfliWEQvasMO/U7KdwAffIYtNKgmz+8 IFbkQbLsN6z+hFbE0OnRm/LkM2j3Nmaql1/3eiBC91I2ShLzfMOSuUDJIM/8ZnDwsIZl F8VFJhKaJedRr0IAiQ9JCH08WT7szm1OPGY0KKLhczvp8ZA+1yv5e1NAOIJc799+NtW6 zE3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=/ZQJjOoD3mNC+hhsFfHvwGVcs7NP64MDgOeuokyGqbo=; b=lHW0/sDFQQGOc7DnIS13PzCZqWiLbVsB/TRNrds5p4tk2jYoKkjOq9XU4grv44xpZT L/QuECoMoqoLYt0vjBvQ4/l+Zfec6BbbuzA+x9qUj9Lv8mZXggcCoyuLQgR1MlE8yiww JsOqYxcLIepQC4jARrwI23WKVnQjRRVUHynMC16UY08apNFUs06WSJKdw0VveEnQeOvz iIpOLacq6Ihpnhz+7/y4xn5Yo0mKPXlACNTQhmGXL0JMClFawEuZwXusJBrYwFviTN5I XCTpjkR6KfbmDYzPzZfTT1AnGMD2WITzRdU5VZpjpD9AfVGRfXeJucKtBG802I7m7613 Z6Ag== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r13si12084542edq.502.2021.09.07.09.00.46; Tue, 07 Sep 2021 09:01:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344901AbhIGPH1 (ORCPT + 99 others); Tue, 7 Sep 2021 11:07:27 -0400 Received: from mga07.intel.com ([134.134.136.100]:18081 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231362AbhIGPH0 (ORCPT ); Tue, 7 Sep 2021 11:07:26 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10099"; a="283929189" X-IronPort-AV: E=Sophos;i="5.85,274,1624345200"; d="scan'208";a="283929189" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Sep 2021 08:05:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,274,1624345200"; d="scan'208";a="538008820" Received: from chenyu-desktop.sh.intel.com ([10.239.158.176]) by FMSMGA003.fm.intel.com with ESMTP; 07 Sep 2021 08:05:26 -0700 From: Chen Yu To: linux-acpi@vger.kernel.org Cc: linux-kernel@vger.kernel.org, "Rafael J. Wysocki" , Len Brown , Dan Williams , Andy Shevchenko , Aubrey Li , Ashok Raj , Chen Yu Subject: [PATCH 0/5][RFC] Introduce Platform Firmware Runtime Update and Telemetry drivers Date: Tue, 7 Sep 2021 23:08:33 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org High Service Level Agreements (SLAs) requires that the system runs without service interruptions. Generally, system firmware provides runtime services such as RAS(Reliability, Availability and Serviceability) features, UEFI runtime services and ACPI services. Currently if there is any firmware code changes in these code area, the system firmware update and reboot is required. Example of bug fix could be wrong register size or location of the register. This means customer services are not available during the firmware upgrade, which could approach several minutes, resulting in not able to meet SLAs. Intel provides a mechanism named Management Mode Runtime Update to help the users update the firmware without having to reboot[1]. This series provides the following facilities. 1. Perform a runtime firmware driver update and activate. 2. Ability to inject firmware code at runtime, for dynamic instrumentation. 3. Facility to retrieve logs from runtime firmware update and activate telemetry. (The telemetry is based on runtime firmware update: it records the logs during runtime update(code injection and driver update). The Management Mode Runtime Update OS Interface Specification[1] provides two ACPI device objects to interface with system firmware to perform these updates. This patch series introduces the drivers for those ACPI devices. [1] https://uefi.org/sites/default/files/resources/Intel_MM_OS_Interface_Spec_Rev100.pdf Chen Yu (5): Documentation: Introduce Platform Firmware Runtime Update documentation efi: Introduce EFI_FIRMWARE_MANAGEMENT_CAPSULE_HEADER and corresponding structures drivers/acpi: Introduce Platform Firmware Runtime Update device driver drivers/acpi: Introduce Platform Firmware Runtime Update Telemetry selftests/pfru: add test for Platform Firmware Runtime Update and Telemetry .../userspace-api/ioctl/ioctl-number.rst | 1 + Documentation/x86/pfru.rst | 98 ++++ drivers/acpi/Kconfig | 1 + drivers/acpi/Makefile | 1 + drivers/acpi/pfru/Kconfig | 29 + drivers/acpi/pfru/Makefile | 3 + drivers/acpi/pfru/pfru_telemetry.c | 412 +++++++++++++ drivers/acpi/pfru/pfru_update.c | 544 ++++++++++++++++++ include/linux/efi.h | 50 ++ include/uapi/linux/pfru.h | 152 +++++ tools/testing/selftests/Makefile | 1 + tools/testing/selftests/pfru/Makefile | 7 + tools/testing/selftests/pfru/config | 2 + tools/testing/selftests/pfru/pfru.h | 152 +++++ tools/testing/selftests/pfru/pfru_test.c | 324 +++++++++++ 15 files changed, 1777 insertions(+) create mode 100644 Documentation/x86/pfru.rst create mode 100644 drivers/acpi/pfru/Kconfig create mode 100644 drivers/acpi/pfru/Makefile create mode 100644 drivers/acpi/pfru/pfru_telemetry.c create mode 100644 drivers/acpi/pfru/pfru_update.c create mode 100644 include/uapi/linux/pfru.h create mode 100644 tools/testing/selftests/pfru/Makefile create mode 100644 tools/testing/selftests/pfru/config create mode 100644 tools/testing/selftests/pfru/pfru.h create mode 100644 tools/testing/selftests/pfru/pfru_test.c -- 2.25.1