get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.1/patches/2228254/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2228254,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2228254/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20260424173151.371134-11-harsimransingh.tungal@arm.com/",
    "project": {
        "id": 18,
        "url": "http://patchwork.ozlabs.org/api/1.1/projects/18/?format=api",
        "name": "U-Boot",
        "link_name": "uboot",
        "list_id": "u-boot.lists.denx.de",
        "list_email": "u-boot@lists.denx.de",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null
    },
    "msgid": "<20260424173151.371134-11-harsimransingh.tungal@arm.com>",
    "date": "2026-04-24T17:31:49",
    "name": "[10/12] doc: arm64: document FF-A runtime path for EFI variables",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "f2b6baf4aa1fd4fc38909c44f572fd52a322efb6",
    "submitter": {
        "id": 88701,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/88701/?format=api",
        "name": "Harsimran Singh Tungal",
        "email": "harsimransingh.tungal@arm.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20260424173151.371134-11-harsimransingh.tungal@arm.com/mbox/",
    "series": [
        {
            "id": 501471,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/501471/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=501471",
            "date": "2026-04-24T17:31:50",
            "name": "arm64: FF-A runtime transport for EFI variables",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/501471/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2228254/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2228254/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<u-boot-bounces@lists.denx.de>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=foss header.b=Fy2NWnc2;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)",
            "phobos.denx.de;\n dmarc=fail (p=none dis=none) header.from=arm.com",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de",
            "phobos.denx.de;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n unprotected) header.d=arm.com header.i=@arm.com header.b=\"Fy2NWnc2\";\n\tdkim-atps=neutral",
            "phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=arm.com",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=harsimransingh.tungal@arm.com"
        ],
        "Received": [
            "from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g2yQl0zKsz1yHS\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 26 Apr 2026 04:04:47 +1000 (AEST)",
            "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 22440844C7;\n\tSat, 25 Apr 2026 20:02:48 +0200 (CEST)",
            "by phobos.denx.de (Postfix, from userid 109)\n id 66C4A842BF; Sat, 25 Apr 2026 19:01:52 +0200 (CEST)",
            "from foss.arm.com (foss.arm.com [217.140.110.172])\n by phobos.denx.de (Postfix) with ESMTP id A97C4843B9\n for <u-boot@lists.denx.de>; Sat, 25 Apr 2026 19:01:46 +0200 (CEST)",
            "from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])\n by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C712435AA;\n Fri, 24 Apr 2026 10:32:48 -0700 (PDT)",
            "from e132995.arm.com (unknown [10.57.64.144])\n by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D687C3F7B4;\n Fri, 24 Apr 2026 10:32:52 -0700 (PDT)"
        ],
        "X-Spam-Checker-Version": "SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de",
        "X-Spam-Level": "",
        "X-Spam-Status": "No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,\n SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;\n t=1777051974; bh=HaZ3VkhkxqMUI+U5fRnMQjFpzpaiSuGGDdcIvhtHOD0=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=Fy2NWnc2dYoWpiZ9E8BOClQeVhna3FPR1NhpRbiyWWGSBNo1SF7zALEAauoC+X1CP\n 9hZ9lq5ODParJ4m70NR0eAtw77AnwLeTULYSwGVuF1NoITPwwsO+uphu/DOj8gj+SJ\n 9eoTx/b744Y0IQlH5jJ8nMlUooI+N3BAKiFDKdFI=",
        "From": "Harsimran Singh Tungal <harsimransingh.tungal@arm.com>",
        "To": "u-boot@lists.denx.de",
        "Cc": "Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>,\n Tom Rini <trini@konsulko.com>,\n Ilias Apalodimas <ilias.apalodimas@linaro.org>,\n Heinrich Schuchardt <xypron.glpk@gmx.de>,\n Hugues Kamba Mpiana <hugues.kambampiana@arm.com>,\n Simon Glass <sjg@chromium.org>,\n Harsimran Singh Tungal <harsimransingh.tungal@arm.com>",
        "Subject": "[PATCH 10/12] doc: arm64: document FF-A runtime path for EFI\n variables",
        "Date": "Fri, 24 Apr 2026 18:31:49 +0100",
        "Message-Id": "<20260424173151.371134-11-harsimransingh.tungal@arm.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20260424173151.371134-1-harsimransingh.tungal@arm.com>",
        "References": "<20260424173151.371134-1-harsimransingh.tungal@arm.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-Mailman-Approved-At": "Sat, 25 Apr 2026 20:02:44 +0200",
        "X-BeenThere": "u-boot@lists.denx.de",
        "X-Mailman-Version": "2.1.39",
        "Precedence": "list",
        "List-Id": "U-Boot discussion <u-boot.lists.denx.de>",
        "List-Unsubscribe": "<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>",
        "List-Archive": "<https://lists.denx.de/pipermail/u-boot/>",
        "List-Post": "<mailto:u-boot@lists.denx.de>",
        "List-Help": "<mailto:u-boot-request@lists.denx.de?subject=help>",
        "List-Subscribe": "<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>",
        "Errors-To": "u-boot-bounces@lists.denx.de",
        "Sender": "\"U-Boot\" <u-boot-bounces@lists.denx.de>",
        "X-Virus-Scanned": "clamav-milter 0.103.8 at phobos.denx.de",
        "X-Virus-Status": "Clean"
    },
    "content": "Document how EFI runtime variables use FF-A MM communication\n\nDescribe the FF-A runtime layer on arm64 and how EFI variable\nruntime services use the FF-A transport and shared MM buffer.\nAlso clarify armffa command scope and link to the FF-A doc.\n\nSigned-off-by: Harsimran Singh Tungal <harsimransingh.tungal@arm.com>\n---\n doc/arch/arm64.ffa.rst   | 92 +++++++++++++++++++++++++++++++++++++---\n doc/usage/cmd/armffa.rst | 11 +++++\n 2 files changed, 96 insertions(+), 7 deletions(-)",
    "diff": "diff --git a/doc/arch/arm64.ffa.rst b/doc/arch/arm64.ffa.rst\nindex f966f8ba6af..ff0efb7da1d 100644\n--- a/doc/arch/arm64.ffa.rst\n+++ b/doc/arch/arm64.ffa.rst\n@@ -15,10 +15,10 @@ application in S-EL0, or a Trusted OS in S-EL1.\n The U-Boot FF-A support (the bus) implements the interfaces to communicate\n with partitions in the Secure world aka Secure partitions (SPs).\n \n-The FF-A support specifically focuses on communicating with SPs that\n-isolate portions of EFI runtime services that must run in a protected\n-environment which is inaccessible by the Host OS or Hypervisor.\n-Examples of such services are set/get variables.\n+U-Boot's FF-A bus support exposes an optional transport that EFI runtime\n+services can use to communicate with Secure Partitions. Through this\n+interface, EFI services (such as variable access) can request or exchange\n+data with the Secure World using FF-A.\n \n The FF-A support uses the SMC ABIs defined by the FF-A specification to:\n \n@@ -26,13 +26,13 @@ The FF-A support uses the SMC ABIs defined by the FF-A specification to:\n - Access an SP's service through communication protocols\n   e.g. EFI MM communication protocol\n \n-At this stage of development only EFI boot-time services are supported.\n-Runtime support will be added in future developments.\n-\n The U-Boot FF-A support provides the following parts:\n \n - A Uclass driver providing generic FF-A methods.\n - An Arm FF-A device driver providing Arm-specific methods and reusing the Uclass methods.\n+- An optional runtime FF-A transport (toggled via CONFIG_ARM_FFA_RT_MODE) that is\n+  resident after ExitBootServices() and enables EFI runtime variable services\n+  via FF-A helpers and a shared MM communication buffer.\n - A sandbox emulator for Arm FF-A, emulates the FF-A side of the Secure World and provides\n   FF-A ABIs inspection methods.\n - An FF-A sandbox device driver for FF-A communication with the emulated Secure World.\n@@ -69,6 +69,12 @@ CONFIG_ARM_FFA_TRANSPORT\n     When using an Arm 64-bit platform, the Arm FF-A driver will be used.\n     When using sandbox, the sandbox FF-A emulator and FF-A sandbox driver will be used.\n \n+CONFIG_ARM_FFA_RT_MODE\n+    Enables the FF-A runtime transport. This option depends on\n+    CONFIG_ARM_FFA_TRANSPORT and CONFIG_EFI_LOADER, and is enabled by default.\n+    When enabled, a minimal set of FF-A operations remains available after\n+    ExitBootServices().\n+\n FF-A ABIs under the hood\n ------------------------\n \n@@ -158,6 +164,77 @@ they want to use (32-bit vs 64-bit). Selecting the protocol means using\n the 32-bit or 64-bit version of FFA_MSG_SEND_DIRECT_{REQ, RESP}.\n The calling convention between U-Boot and the secure world stays the same: SMC32.\n \n+FF-A runtime support for EFI variables\n+--------------------------------------\n+\n+U-Boot provides an FF-A runtime transport to keep a minimal set of FF-A operations\n+available after ExitBootServices(). This runtime transport is enabled with\n+CONFIG_ARM_FFA_RT_MODE. The runtime helpers and data are marked with\n+``__efi_runtime`` / ``__efi_runtime_data`` through the\n+``__ffa_runtime`` / ``__ffa_runtime_data`` aliases in\n+``include/arm_ffa_runtime.h``.\n+\n+Runtime context is enabled at ExitBootServices(), and the following prerequisites\n+are prepared during FF-A bus probe:\n+\n+- The U-Boot FF-A endpoint ID is discovered at boot time with FFA_ID_GET and\n+  stored in the runtime private data.\n+- An ExitBootServices() event is registered by the runtime transport to enable\n+  the runtime context with ffa_enable_runtime_context() when EFI transitions\n+  to runtime.\n+\n+At runtime, the driver model is no longer available. Runtime users should\n+use the runtime interface ffa_sync_send_receive_runtime(), which internally\n+verifies the runtime context before issuing FF-A calls.\n+\n+EFI variable services over FF-A\n+-------------------------------\n+\n+When CONFIG_EFI_MM_COMM_TEE and CONFIG_ARM_FFA_TRANSPORT are enabled, U-Boot\n+routes EFI variable services to an MM Secure Partition (SP) over FF-A.\n+The MM SP is discovered at boot time using FFA_PARTITION_INFO_GET and its\n+partition ID is cached in runtime data.\n+\n+The data path uses a shared MM communication buffer and a door-bell style\n+direct message:\n+\n+- The communication buffer is located at CONFIG_FFA_SHARED_MM_BUF_ADDR and\n+  sized by CONFIG_FFA_SHARED_MM_BUF_SIZE.\n+- CONFIG_FFA_SHARED_MM_BUF_OFFSET is sent in the FF-A direct message payload\n+  to indicate where the data begins.\n+- The buffer is filled by memcpy(), the cache is flushed before notifying the\n+  MM SP, and later the buffer is reused directly with only the shared-buffer\n+  range invalidated (invalidate_dcache_range()) to avoid whole-cache\n+  invalidation.\n+\n+After ExitBootServices(), EFI SetVariable()/GetVariable() call paths use the\n+runtime MM communication helpers:\n+\n+- get_comm_buf() switches to the static shared buffer\n+- mm_communicate_runtime() selects FF-A transport when the runtime context\n+  is enabled\n+- ffa_mm_communicate_runtime() issues FFA_MSG_SEND_DIRECT_{REQ,RESP} through\n+  ffa_sync_send_receive_runtime()\n+\n+Configuration notes\n+-------------------\n+\n+Enable FF-A transport and MM communication:\n+\n+- CONFIG_ARM_FFA_TRANSPORT\n+- CONFIG_ARM_FFA_RT_MODE\n+- CONFIG_EFI_MM_COMM_TEE\n+\n+CONFIG_ARM_FFA_RT_MODE is enabled by default. It turns on MM communication for\n+EFI runtime and may be disabled when EFI services over FF-A are not required\n+after ExitBootServices().\n+\n+Configure the shared MM communication buffer:\n+\n+- CONFIG_FFA_SHARED_MM_BUF_ADDR\n+- CONFIG_FFA_SHARED_MM_BUF_SIZE\n+- CONFIG_FFA_SHARED_MM_BUF_OFFSET\n+\n Requirements for user drivers\n -----------------------------\n \n@@ -256,6 +333,7 @@ For example, when using FF-A with Corstone-1000, debug logs enabled, the output\n Contributors\n ------------\n    * Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>\n+   * Harsimran Singh Tungal <harsimransingh.tungal@arm.com>\n \n .. _`FF-A v1.0 specification`: https://documentation-service.arm.com/static/5fb7e8a6ca04df4095c1d65e\n .. _`SMC Calling Convention v1.2 specification`: https://documentation-service.arm.com/static/5f8edaeff86e16515cdbe4c6\ndiff --git a/doc/usage/cmd/armffa.rst b/doc/usage/cmd/armffa.rst\nindex dbe4d5bc842..2b865f88015 100644\n--- a/doc/usage/cmd/armffa.rst\n+++ b/doc/usage/cmd/armffa.rst\n@@ -39,6 +39,17 @@ The command also allows to gather secure partitions information and ping these\n \n The command is also helpful in testing the communication with secure partitions.\n \n+Notes\n+-----\n+\n+armffa is a boot-time test command. It relies on the FF-A driver model device\n+(UCLASS_FFA) and is not intended for EFI runtime use after\n+ExitBootServices().\n+\n+armffa does not provide EFI variable operations. For more information about\n+using EFI runtime SetVariable() and GetVariable() over FF-A please see\n+:doc:`../../arch/arm64.ffa`.\n+\n Example\n -------\n \n",
    "prefixes": [
        "10/12"
    ]
}