From patchwork Tue Mar 11 19:44:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 14012632 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 3A64BC282EC for ; Tue, 11 Mar 2025 19:58:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Type: Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date :Subject:CC:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=H23MZTa9PfhxhiEvruW5o79lf9Zye7dvmLXJYsQIxuw=; b=xEHzdadW+IlL3o1f5z2bSulOtC jiVe373TgiC4BGv7aOGplTEzqAWSp4dV+tFPPTJSEr/MaXr0bkBzNRnBFV+xL18ZYOuT6IuRtLAzk ZOegYTXICPaU9VIAzjcK0QoXSHiUwyShcEA5RcL9Q5ohTAt314kD6m5Zb8HaeGSFOjilBiRFcLZJO BLcjXWJ1y1tHy81vTi6sFV/8vhQc2s7RuTMkJneVQG/ximp7HUDdt6yBB8gAfaAXW1osdqpBTObVq 2UGa5c7e7Jx0f8U/bAtQ5mVyhczLJc6ne13A1XNhZm0YwQNQ3eYySzEIYUGMrVuiamruaZF4QtN2j +P4bqpdQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1ts5jl-00000006qtD-43pX; Tue, 11 Mar 2025 19:58:01 +0000 Received: from mail-dm6nam10on20620.outbound.protection.outlook.com ([2a01:111:f403:2413::620] helo=NAM10-DM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1ts5Xm-00000006oM0-1uM7 for linux-arm-kernel@lists.infradead.org; Tue, 11 Mar 2025 19:45:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FYFo9LfwYbjPWQn1JBUJfqaZkyhGKQsqNFo6Ciel5iC5PM/yLRjNW+UNN3ZDgaVoXcSWSfajq1MQp8wN3YQsQ6DGTqT69wHjNoCM0qUF7jZiu+oS5Nx218jRVvBVJAHKBm02wD2IERGzR+pkSozapBDaZmGTT2lhVlAyy832RR02odXq1XT/S+DKRLX12IV6f2lrXAxOYSiR2dOq6fbuetrg+mYUNNCvR6ewVW65it8nG2vDYqtPxJDkt3r7+OvBmPRgLD5MiVXSmNCciBHahUWbvayFwbVA7HabzPPTLf+hkFvdubPEtTQSaMjYUWo9kQb1VJbo5fHBc+V/ZkCMqg== 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=H23MZTa9PfhxhiEvruW5o79lf9Zye7dvmLXJYsQIxuw=; b=vbNRznMwqdEhhZbynq/urZQyABvRK3C2WPxFYzw62rUOYr+EG+j+F2a2nk3Sz9zNuiO/lnggLFFsQnD1rLMY+qvKOqCvc79XRG775isHeQjR12a0qaboAwBh4Td8rkk7sU/lfmxk3Tw2DulSGTQ6nX9iETTILRqsVqw/MEAPm9RUbE+rHN47YbOKEm/OwKkhRe9JNdnPIv136M0Iqds2Qc/A4Ly1TsyFC4H8g6qsi+vTTtgBzQBVfaj+q1ozNDLNKvMYLNFo1/n5ClRQ9tYjpX683UYZ6ss7Vph0fXa+PRSttH3IAVFPMtfY3Rr1Ef4a2N7QJrMydjxqgJsJ6ThldA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=intel.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=H23MZTa9PfhxhiEvruW5o79lf9Zye7dvmLXJYsQIxuw=; b=SvwT2WZebqX7O0lZ6YmgbdolWIzf625gVNkGHez6Ew/F+DkzGDeXMnfUnCv0CCEaXtvAPr4PvruX+CRltEMrcViMvmtNZEo8JEscx3jQl+uIy1c9YQXeFJQwsIi0WNL8BRKWIcJZWSyVRw2WPB8nJNFUWESI+EAy2dcykV2awpdghbCcH2a1hsEJXRUgTTBPVt2zt4GsBiUAFipNmiHw0IR+TSdgRKERJiniQPcB8plI4pV2GxkB4bhJCMlwgRmDkUCj3d5vLgEi8lMyfbyN7c5AvcTR21ixELWZozr74XbPLnYg5xfCnG+nCgTOVGtwcbDRYNlAgOppVHiw3GfHWA== Received: from BN1PR10CA0008.namprd10.prod.outlook.com (2603:10b6:408:e0::13) by LV8PR12MB9082.namprd12.prod.outlook.com (2603:10b6:408:180::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.27; Tue, 11 Mar 2025 19:45:33 +0000 Received: from BN1PEPF00004687.namprd05.prod.outlook.com (2603:10b6:408:e0:cafe::cd) by BN1PR10CA0008.outlook.office365.com (2603:10b6:408:e0::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8511.26 via Frontend Transport; Tue, 11 Mar 2025 19:45:33 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by BN1PEPF00004687.mail.protection.outlook.com (10.167.243.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.20 via Frontend Transport; Tue, 11 Mar 2025 19:45:33 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Tue, 11 Mar 2025 12:45:23 -0700 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 11 Mar 2025 12:45:23 -0700 Received: from Asurada-Nvidia.nvidia.com (10.127.8.13) by mail.nvidia.com (10.126.190.181) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Tue, 11 Mar 2025 12:45:21 -0700 From: Nicolin Chen To: CC: , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v9 09/14] iommufd/selftest: Add IOMMU_TEST_OP_TRIGGER_VEVENT for vEVENTQ coverage Date: Tue, 11 Mar 2025 12:44:27 -0700 Message-ID: <1ea874d20e56d65e7cfd6e0e8e01bd3dbd038761.1741719725.git.nicolinc@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: MIME-Version: 1.0 X-NV-OnPremToCloud: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00004687:EE_|LV8PR12MB9082:EE_ X-MS-Office365-Filtering-Correlation-Id: baab3fae-4118-406a-90a4-08dd60d54971 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|82310400026|376014|7416014; X-Microsoft-Antispam-Message-Info: 0yzFdU27NVVlxnl3hkNV6SpA5xNAHTjjCwBoCpXujbvTINulfwDIW6PpW2pN1lZ0Uk2aMYaXSo8uGLxSL/MMVZ6qPyBZNaE+sm2nSozgusJXcg7SEnKzHjeq6PlVqRBj7NE7RQvAk3Hc6rFvdnI8x52UJ7AMlkQgryBrbpxpDXHmfBeVIYTUyzV2M9I9kfa8qyZppG7zKUjhgS+I8egNpEyDsq6iw+Avdr0yoDCFKSivoSyt2U08+a4daIHZs2yM5ow9aOeDz8y7MQa6uHwpH8SgDW6LqN5Biz/S1EGBr7OD5LbA3g/BVAC7Z0OrN3Uv7w8xwWJlc22zt+8sRgvUW2fJdDfsN/Us9w0KCBXU8zEDS+SywSkgAW8JQ8Sk9oToezHAClI1s3zpPt04P0XgzJcQ7eCRQaxJxH80uCl3358OcrcJmoB2c/TwVX66YbY0XQIo/YPTBjSyDHGz9KuQYn2y+RpQGKtACS2+rh8aUp1F6PbEvrNui5qDd7FXsG16zQx9XNSOcTebyCl2iUnyAVzEo3bfpAva0+OJFzKAsNH5bEpa7Vg0WsuvNNjj5tFFgG4t5AKREKjOqPsLezwtSsGAL6YPEjGOmRE3XFH+9ReqyL1jaNCYaMyPpvNyPgidOhQpYU82RydZxE7P641GGQhlwsE/HBOiGybFDg+tqOXoyBxfgtQZ4l4s8387sa2APA7ldRvZ+CccQ2AJbXWWgJ6lyTfh31AD0uvnPzbmc680rPf1KFq5bNfLXU6GCpIETpVWPF4ZWYYnfyXZQdhwf4MBSO/1YQSk5ZhiOmJelsgz7ouABBTv60dHNQbHVkw6F5uUuKa1pFi3TuDX0kfdFvp7inOrfjXButj5TxbAVPWxoo6UGmMM/Yk1BZ3sc8jJq0s2dN64VQmy/3v/nuuTpo+Qf+w2E7TrgUGctz2Jn+pAk3bnm6q3y60Mhar1ADk4xLYFhwm7rv84XkKofdLRN8wzP77+JxjUa3phitBciEdDoEcwJr62ammkd5Gf8Tuk/6cWhKbzC5cvI7d9pka01pAmCQof/dopgU8VtkdQcJvMyHJ+sphiPXdrx+49zm3RSm5reQTHOs3tU5iPZ+X71RDcwu7wMG7v7DRW23LPtk7H6sJvbP+iluf3bW/4K197d938E58Pnf+b49mmbA0Rt9iH2AXflT4AR7Z3Cj8TVRinRdvML4dJtsuS1qMpIMcgQ7ISO+zr3a+ZMLOcY/OwVyXnh0lpSNy26NbaASpUKVcYKsN3Ccu12u8+JHviFNolhcNc23EbUFvnZNpSXyq33v0DYXqGfUbltsK9UZSxxSU4aw6URLWKnY1w5T7bGsOeIuOOMj0EnxHQDSmsasX+OO+6WyqTEWkXDF6WhWY+Ht/6033IItw543qgU1MH0hsVkPicxiwb25bWN6z+Zj/qYlc92AAMLdpIQyaw+y445Z/g8d51hgQ7R0trfzw6uqVFLD2J55Nd7wNk3gQi1cx8qOTnZ+y2kuzEpAQXlSeVxPo= X-Forefront-Antispam-Report: CIP:216.228.118.232;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge1.nvidia.com;CAT:NONE;SFS:(13230040)(36860700013)(1800799024)(82310400026)(376014)(7416014);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2025 19:45:33.1083 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: baab3fae-4118-406a-90a4-08dd60d54971 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN1PEPF00004687.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9082 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250311_124538_520549_41E66567 X-CRM114-Status: GOOD ( 11.18 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The handler will get vDEVICE object from the given mdev and convert it to its per-vIOMMU virtual ID to mimic a real IOMMU driver. Reviewed-by: Kevin Tian Signed-off-by: Nicolin Chen --- drivers/iommu/iommufd/iommufd_test.h | 10 ++++++++++ drivers/iommu/iommufd/selftest.c | 30 ++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/drivers/iommu/iommufd/iommufd_test.h b/drivers/iommu/iommufd/iommufd_test.h index a6b7a163f636..87e9165cea27 100644 --- a/drivers/iommu/iommufd/iommufd_test.h +++ b/drivers/iommu/iommufd/iommufd_test.h @@ -24,6 +24,7 @@ enum { IOMMU_TEST_OP_MD_CHECK_IOTLB, IOMMU_TEST_OP_TRIGGER_IOPF, IOMMU_TEST_OP_DEV_CHECK_CACHE, + IOMMU_TEST_OP_TRIGGER_VEVENT, }; enum { @@ -145,6 +146,9 @@ struct iommu_test_cmd { __u32 id; __u32 cache; } check_dev_cache; + struct { + __u32 dev_id; + } trigger_vevent; }; __u32 last; }; @@ -212,4 +216,10 @@ struct iommu_viommu_invalidate_selftest { __u32 cache_id; }; +#define IOMMU_VEVENTQ_TYPE_SELFTEST 0xbeefbeef + +struct iommu_viommu_event_selftest { + __u32 virt_id; +}; + #endif diff --git a/drivers/iommu/iommufd/selftest.c b/drivers/iommu/iommufd/selftest.c index ba84bacbce2e..d55dde28e9bc 100644 --- a/drivers/iommu/iommufd/selftest.c +++ b/drivers/iommu/iommufd/selftest.c @@ -1621,6 +1621,34 @@ static int iommufd_test_trigger_iopf(struct iommufd_ucmd *ucmd, return 0; } +static int iommufd_test_trigger_vevent(struct iommufd_ucmd *ucmd, + struct iommu_test_cmd *cmd) +{ + struct iommu_viommu_event_selftest test = {}; + struct iommufd_device *idev; + struct mock_dev *mdev; + int rc = -ENOENT; + + idev = iommufd_get_device(ucmd, cmd->trigger_vevent.dev_id); + if (IS_ERR(idev)) + return PTR_ERR(idev); + mdev = to_mock_dev(idev->dev); + + down_read(&mdev->viommu_rwsem); + if (!mdev->viommu || !mdev->vdev_id) + goto out_unlock; + + test.virt_id = mdev->vdev_id; + rc = iommufd_viommu_report_event(&mdev->viommu->core, + IOMMU_VEVENTQ_TYPE_SELFTEST, &test, + sizeof(test)); +out_unlock: + up_read(&mdev->viommu_rwsem); + iommufd_put_object(ucmd->ictx, &idev->obj); + + return rc; +} + void iommufd_selftest_destroy(struct iommufd_object *obj) { struct selftest_obj *sobj = to_selftest_obj(obj); @@ -1702,6 +1730,8 @@ int iommufd_test(struct iommufd_ucmd *ucmd) cmd->dirty.flags); case IOMMU_TEST_OP_TRIGGER_IOPF: return iommufd_test_trigger_iopf(ucmd, cmd); + case IOMMU_TEST_OP_TRIGGER_VEVENT: + return iommufd_test_trigger_vevent(ucmd, cmd); default: return -EOPNOTSUPP; }