From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ot1-f73.google.com (mail-ot1-f73.google.com [209.85.210.73]) (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 C59673ACA5D for ; Tue, 24 Feb 2026 18:25:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.73 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771957545; cv=none; b=PcymnBE2a6O9EgL8N4zC0oGYZj1XzaZXSKpPktfLUwcw++okSIvHPlJyUABH4AJl/J4aLKVmZbTTjYHaHOwb8RwmTlXTDFmlvhMmwoYuLomPrIZP5oAFIOqyYFXgUV3iilYu8AIiaUlfP6bkGjrCGywc9rv78PJrvhX+kruW1ac= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771957545; c=relaxed/simple; bh=D5cFtGr3FjZqUbVXZMPOo8EQG+SRoqsZOQDRNB7YSGs=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=ps98Ojkn2eGNctDANKiUpBdDqq/9uk3WdVajIOUbUwStwQczcyEi6njfajuu2sJ6EfCNBR9O/1lfAvkc4G7VqiLQodhueiB8se12Bv8DpUD+0jXp7ZoiCTRAS8H2+DFNItko/y4fmAd9AgYOFAe9yOFLxUttK2PkeoeV+SCNECg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--rananta.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=V5QBS5Ab; arc=none smtp.client-ip=209.85.210.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--rananta.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="V5QBS5Ab" Received: by mail-ot1-f73.google.com with SMTP id 46e09a7af769-7d49709f87aso59377831a34.1 for ; Tue, 24 Feb 2026 10:25:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1771957543; x=1772562343; darn=vger.kernel.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=76o1BjsM23otY5E0m8PR5i+qHZGjPQ7/pAlHnOvU6/4=; b=V5QBS5AbtCx2PLzN/JCQwQ3qAKELMjp0IMKTUfsWBqcBiimlB/60UaGaDeF4T3eue4 0gWasYsigQaO5HUjO5b5V4ZERjisJdleBhAjbnPuxM5cTD5B6LDko+1aSdNPtGGloJx8 fqBKMGavbdJZCISKWUfN9rHkvGJnPnPs0mXN/RT2DNjPpXrBwMYu8P8HXOf5B5dQJRzJ HqaJiqfH2dm0pBZnVTXt5qmXHfjFIwKhZwlLhcUl1GOkaH7Nh3+W+AvskRFTFBoeycDb M1s1jX0ha9gOM7c+6vtEcIe/AFBnRjojdkeanWWODcGVLnjpsiSyL5D9LYr8GQ43LWej OGTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771957543; x=1772562343; 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=76o1BjsM23otY5E0m8PR5i+qHZGjPQ7/pAlHnOvU6/4=; b=pSlv/EyhwXfezXp8intw9TQL/dyfBJOPq+nd8OXGfLeNMK3BANanePZXAKEvQwXoTG Teksr6kna6UL9iTR+KSMWx9k/csLrjfeppMKDtG8eCnvU8lcJWbXEVJv+0stHLcQqk6h jYCjDo+Ese7eEbPUgKSG8ZgB0Fpcs7Zq1gVoAom0F6YlVILBZ6J8IoSVpbQMvPrJOdVL AliZDuSNPdP4eCv2C5c/TOYXV96apYn2hJITGHcjcn6OrFlWhqc5B2JiurQX6zQ2GDy8 4huTDFMZVHrCehfjl8P+c+XOPpmzDR2fi7Qf3FiIteLZw8nClsaYnYzatJX4pNO7EOaq fRUg== X-Forwarded-Encrypted: i=1; AJvYcCUZtRmezCLjtmzmXrppiPmX44bkfoOuH36IKK5O3oEDJdAyGUAfBwGWAT012UB3qCdJXJ/c7ZDNCjOBcqw=@vger.kernel.org X-Gm-Message-State: AOJu0Yzv4reFHP9eNMic1ACuhwqoOIqCfeOkNMwL6avkEnGl+/bdnPro 4KdWoFZEqgoYgk0uPoRy3xKOfp1vBLt5S5U/YiH/8J8n/+pbDNN1Xdm08GLK5Z37YAKkUihHpep ckcsvH/yKhA== X-Received: from iluf4.prod.google.com ([2002:a05:6e02:b44:b0:4b4:b52c:62e]) (user=rananta job=prod-delivery.src-stubby-dispatcher) by 2002:a4a:e909:0:b0:679:8861:f58c with SMTP id 006d021491bc7-679c45080c7mr6970843eaf.39.1771957542675; Tue, 24 Feb 2026 10:25:42 -0800 (PST) Date: Tue, 24 Feb 2026 18:25:30 +0000 In-Reply-To: <20260224182532.3914470-1-rananta@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260224182532.3914470-1-rananta@google.com> X-Mailer: git-send-email 2.53.0.414.gf7e9f6c205-goog Message-ID: <20260224182532.3914470-7-rananta@google.com> Subject: [PATCH v4 6/8] vfio: selftests: Add helper to set/override a vf_token From: Raghavendra Rao Ananta To: David Matlack , Alex Williamson Cc: Vipin Sharma , Josh Hilke , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Raghavendra Rao Ananta Content-Type: text/plain; charset="UTF-8" Add a helper function, vfio_device_set_vf_token(), to set or override a vf_token. Not only at init, but a vf_token can also be set via the VFIO_DEVICE_FEATURE ioctl, by setting the VFIO_DEVICE_FEATURE_PCI_VF_TOKEN flag. Hence, add an API to utilize this functionality from the test code. The subsequent commit will use this to test the functionality of this method to set the vf_token. Signed-off-by: Raghavendra Rao Ananta --- .../lib/include/libvfio/vfio_pci_device.h | 2 ++ .../selftests/vfio/lib/vfio_pci_device.c | 34 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/tools/testing/selftests/vfio/lib/include/libvfio/vfio_pci_device.h b/tools/testing/selftests/vfio/lib/include/libvfio/vfio_pci_device.h index 898de032fed5a..4ebdc00e20fca 100644 --- a/tools/testing/selftests/vfio/lib/include/libvfio/vfio_pci_device.h +++ b/tools/testing/selftests/vfio/lib/include/libvfio/vfio_pci_device.h @@ -129,4 +129,6 @@ void vfio_container_set_iommu(struct vfio_pci_device *device); void vfio_pci_cdev_open(struct vfio_pci_device *device, const char *bdf); int __vfio_device_bind_iommufd(int device_fd, int iommufd, const char *vf_token); +void vfio_device_set_vf_token(int fd, const char *vf_token); + #endif /* SELFTESTS_VFIO_LIB_INCLUDE_LIBVFIO_VFIO_PCI_DEVICE_H */ diff --git a/tools/testing/selftests/vfio/lib/vfio_pci_device.c b/tools/testing/selftests/vfio/lib/vfio_pci_device.c index 142b13a77ab83..f15065f531562 100644 --- a/tools/testing/selftests/vfio/lib/vfio_pci_device.c +++ b/tools/testing/selftests/vfio/lib/vfio_pci_device.c @@ -109,6 +109,40 @@ static void vfio_pci_irq_get(struct vfio_pci_device *device, u32 index, ioctl_assert(device->fd, VFIO_DEVICE_GET_IRQ_INFO, irq_info); } +static int vfio_device_feature_ioctl(int fd, u32 flags, void *data, + size_t data_size) +{ + u8 buffer[sizeof(struct vfio_device_feature) + data_size] = {}; + struct vfio_device_feature *feature = (void *)buffer; + + memcpy(feature->data, data, data_size); + + feature->argsz = sizeof(buffer); + feature->flags = flags; + + return ioctl(fd, VFIO_DEVICE_FEATURE, feature); +} + +static void vfio_device_feature_set(int fd, u16 feature, void *data, size_t data_size) +{ + u32 flags = VFIO_DEVICE_FEATURE_SET | feature; + int ret; + + ret = vfio_device_feature_ioctl(fd, flags, data, data_size); + VFIO_ASSERT_EQ(ret, 0, "Failed to set feature %u\n", feature); +} + +void vfio_device_set_vf_token(int fd, const char *vf_token) +{ + uuid_t token_uuid = {0}; + + VFIO_ASSERT_NOT_NULL(vf_token, "vf_token is NULL"); + VFIO_ASSERT_EQ(uuid_parse(vf_token, token_uuid), 0); + + vfio_device_feature_set(fd, VFIO_DEVICE_FEATURE_PCI_VF_TOKEN, + token_uuid, sizeof(uuid_t)); +} + static void vfio_pci_region_get(struct vfio_pci_device *device, int index, struct vfio_region_info *info) { -- 2.53.0.414.gf7e9f6c205-goog