From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7301CC54E71 for ; Fri, 22 Mar 2024 12:44:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID: References:Mime-Version:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=40KFAhrBx5XtN1eWQzAF8uI78ethn9+GMQqXi+BI2Kc=; b=kYbFFK1vPivfFedb3uC5bsAxqP QCLSHPUH35DokLVbRYNi0x2Wc3klNIltvMvlUTQUkwnP0BPpJb+wmC5SkEwAECvRabHc1X4PV+Y7h hAWbuFg/pe9piU3fIUkdHc+BL37KBipHj1nj3XR6FeLRtMdGis6J0UBoNUFCeg0aeYaHgaVgSpQXs suNwkTVyARm0w+7Vu/+1PsqEmtTruBprPK5EhRF4ftVbxBLPW98SMnwI+7AKLMKV5y+j90B58Tb/f /XB+JBf/fmBs5b+kvENkTYmjrTxc0NXyRORVZZ3fjHOCWJu+SYyfl1QhGhKjw2F0PlLkYoK8CoB3I yzjSHK0A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rneFw-00000007B1D-3mBr; Fri, 22 Mar 2024 12:44:20 +0000 Received: from mail-wr1-x449.google.com ([2a00:1450:4864:20::449]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rneFn-00000007Awy-3vnw for linux-arm-kernel@lists.infradead.org; Fri, 22 Mar 2024 12:44:13 +0000 Received: by mail-wr1-x449.google.com with SMTP id ffacd0b85a97d-34196261b54so951727f8f.1 for ; Fri, 22 Mar 2024 05:44:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1711111444; x=1711716244; darn=lists.infradead.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=+8cb/JElUFHNMOSO0hj2Q7csN4h6JfrSorkGcltJjfs=; b=g+1S0KFz6GeQkwzvfMyU6QVsRb4qWn9wCAjetsBuNWEZE69MRdGHhAxN1qoDhXOLdV lcfuDZissrjzp0TsVDxJBRNXbNMClGxDXnbvblxbdKgQZ3AC/mykxFtJv9vzsELXr4J0 5Iz/gaT3+C/2rLLSaTU/O1xLkSBv/kDGCxoOYV4J+XDwT0x4ZSaWXSvm+6QlmDBV9okU PJ1jkxEpDwjtNFoXBjLygU7r+ySjE4dBZdIJv1EeT0+YlYqA2fIqyZPHkjZi/ClNReMj IR4WpF83qijP9SRxe3SJ3Xv0Bhn50IdcUQlaCWHWsE2ad8uVk3WdrD5ecBBnikqdNY2f OY6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711111444; x=1711716244; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+8cb/JElUFHNMOSO0hj2Q7csN4h6JfrSorkGcltJjfs=; b=c+IwCWmOtQjwmTq9sTpBkhqCYM1IHWoHcyCojwmn/ILb/+E6FCNY5752QL0wevM52Y Fky7w3+EXinJqDZ+zf7JyrPcTmGB1sQT+SCeFLvPK+pKK01AI49UebeliVa+X7W4dyEc bI5JcOcTCjWs1pL1jv/YKdZbIg4Fu3mGegPBTRXrgceoy8cbq93pfYtbqtAlUQPtjxPE H77FHjlgQLkJwcn859YKik+oyZVkMr1XWS9eg77kxpSiADKcAnrM6dJMAvt8PHgI145M dhfg4MJjvK7uAqfFg3IfPkzRz5tTTPEDWgzRPUznGpzDEeb9EuBfjceK+TdilLj7S+5A uqfw== X-Forwarded-Encrypted: i=1; AJvYcCUSWO1s8Zb+D27gNiYhMkxUI1mkDOtEhO3MLi3L0hdro5R69oVzDK/9HmbzuaNkYN0h2Wa2wwxyw8+7C/VhHp1PdeJsDnzw6WwO5kMYrvZ/JW741d4= X-Gm-Message-State: AOJu0Ywak5L5SkYY8XkslnWXM1s9Ym1Kxdh0RJRrnYJ2u2L+Lm32nbYD DduLEDARNeaJ3/MymGC1JI/GxFDGUkN8Yu6OHlTt9R779zNmhcNE6VKgqTveG9/gpdDwkmtfeS9 j5+jpkGvR78QXbXE8WAH6aQGxSA== X-Google-Smtp-Source: AGHT+IHvj0UU8M976GVx3IfLiLrCo0XzB/01QI1sAsqph0orYlVs+PZ3CRX/Ahi7ItrF5KZEgwszuCw6akj/+SxlRsw= X-Received: from sebkvm.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:cd5]) (user=sebastianene job=sendgmr) by 2002:adf:f50b:0:b0:341:ba6a:6996 with SMTP id q11-20020adff50b000000b00341ba6a6996mr1855wro.7.1711111444641; Fri, 22 Mar 2024 05:44:04 -0700 (PDT) Date: Fri, 22 Mar 2024 12:43:03 +0000 In-Reply-To: <20240322124303.309423-1-sebastianene@google.com> Mime-Version: 1.0 References: <20240322124303.309423-1-sebastianene@google.com> X-Mailer: git-send-email 2.44.0.396.g6e790dbe36-goog Message-ID: <20240322124303.309423-2-sebastianene@google.com> Subject: [PATCH 2/2] KVM: arm64: Allow only the specified FF-A calls to be forwarded to TZ From: Sebastian Ene To: catalin.marinas@arm.com, james.morse@arm.com, jean-philippe@linaro.org, maz@kernel.org, oliver.upton@linux.dev, qperret@google.com, qwandor@google.com, sebastianene@google.com, suzuki.poulose@arm.com, tabba@google.com, will@kernel.org, yuzenghui@huawei.com Cc: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kernel-team@android.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240322_054411_999429_B61AB085 X-CRM114-Status: GOOD ( 13.46 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The previous logic used a deny list to filter the FF-A calls. Because of this, some of the calls escaped the check and they were forwarded by default to Trustzone. (eg. FFA_MSG_SEND_DIRECT_REQ was denied but the 64 bit version of the call was not). Modify the logic to use an allowlist and allow only the calls specified in the filter function to be proxied to TZ from the hypervisor. Signed-off-by: Sebastian Ene --- arch/arm64/kvm/hyp/nvhe/ffa.c | 46 +++++++++++++++++------------------ 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c index 320f2eaa14a9..fc4f04209618 100644 --- a/arch/arm64/kvm/hyp/nvhe/ffa.c +++ b/arch/arm64/kvm/hyp/nvhe/ffa.c @@ -580,35 +580,35 @@ static void do_ffa_mem_reclaim(struct arm_smccc_res *res, ffa_to_smccc_res(res, ret); } -/* - * Is a given FFA function supported, either by forwarding on directly - * or by handling at EL2? - */ static bool ffa_call_supported(u64 func_id) { switch (func_id) { - /* Unsupported memory management calls */ - case FFA_FN64_MEM_RETRIEVE_REQ: - case FFA_MEM_RETRIEVE_RESP: - case FFA_MEM_RELINQUISH: - case FFA_MEM_OP_PAUSE: - case FFA_MEM_OP_RESUME: - case FFA_MEM_FRAG_RX: - case FFA_FN64_MEM_DONATE: - /* Indirect message passing via RX/TX buffers */ - case FFA_MSG_SEND: - case FFA_MSG_POLL: - case FFA_MSG_WAIT: - /* 32-bit variants of 64-bit calls */ + /* Discovery functions */ + case FFA_FEATURES: + case FFA_ID_GET: + case FFA_VERSION: + case FFA_PARTITION_INFO_GET: + + /* Memory management calls */ + case FFA_FN64_RXTX_MAP: + case FFA_RXTX_UNMAP: + case FFA_MEM_SHARE: + case FFA_FN64_MEM_SHARE: + case FFA_MEM_RECLAIM: + case FFA_MEM_LEND: + case FFA_FN64_MEM_LEND: + case FFA_MEM_FRAG_TX: + + /* State management */ + case FFA_RUN: + + /* Message passing */ case FFA_MSG_SEND_DIRECT_REQ: - case FFA_MSG_SEND_DIRECT_RESP: - case FFA_RXTX_MAP: - case FFA_MEM_DONATE: - case FFA_MEM_RETRIEVE_REQ: - return false; + case FFA_FN64_MSG_SEND_DIRECT_REQ: + return true; } - return true; + return false; } static bool do_ffa_features(struct arm_smccc_res *res, -- 2.44.0.396.g6e790dbe36-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel