Cover Letter Detail
Show a cover letter.
GET /api/1.2/covers/2234242/?format=api
{ "id": 2234242, "url": "http://patchwork.ozlabs.org/api/1.2/covers/2234242/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/cover/20260507130956.34441-1-fengchengwen@huawei.com/", "project": { "id": 28, "url": "http://patchwork.ozlabs.org/api/1.2/projects/28/?format=api", "name": "Linux PCI development", "link_name": "linux-pci", "list_id": "linux-pci.vger.kernel.org", "list_email": "linux-pci@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260507130956.34441-1-fengchengwen@huawei.com>", "list_archive_url": null, "date": "2026-05-07T13:09:50", "name": "[v7,0/6] vfio/pci: Add PCIe TPH support", "submitter": { "id": 92756, "url": "http://patchwork.ozlabs.org/api/1.2/people/92756/?format=api", "name": "fengchengwen", "email": "fengchengwen@huawei.com" }, "mbox": "http://patchwork.ozlabs.org/project/linux-pci/cover/20260507130956.34441-1-fengchengwen@huawei.com/mbox/", "series": [ { "id": 503179, "url": "http://patchwork.ozlabs.org/api/1.2/series/503179/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=503179", "date": "2026-05-07T13:09:53", "name": "vfio/pci: Add PCIe TPH support", "version": 7, "mbox": "http://patchwork.ozlabs.org/series/503179/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/2234242/comments/", "headers": { "Return-Path": "\n <linux-pci+bounces-54077-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-pci@vger.kernel.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=huawei.com header.i=@huawei.com header.a=rsa-sha256\n header.s=dkim header.b=kJdjxynh;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-54077-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=huawei.com header.i=@huawei.com\n header.b=\"kJdjxynh\"", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=113.46.200.216", "smtp.subspace.kernel.org;\n dmarc=pass (p=quarantine dis=none) header.from=huawei.com", "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=huawei.com" ], "Received": [ "from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\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 4gBCVs2R3pz1y04\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 07 May 2026 23:18:29 +1000 (AEST)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 09DBD30779D2\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 7 May 2026 13:10:15 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 762AD3F65FB;\n\tThu, 7 May 2026 13:10:10 +0000 (UTC)", "from canpmsgout01.his.huawei.com (canpmsgout01.his.huawei.com\n [113.46.200.216])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 73B9E36CDFE;\n\tThu, 7 May 2026 13:10:07 +0000 (UTC)", "from mail.maildlp.com (unknown [172.19.162.144])\n\tby canpmsgout01.his.huawei.com (SkyGuard) with ESMTPS id 4gBC8P6q4Mz1T4Fx;\n\tThu, 7 May 2026 21:02:29 +0800 (CST)", "from kwepemk500009.china.huawei.com (unknown [7.202.194.94])\n\tby mail.maildlp.com (Postfix) with ESMTPS id 0D0594056D;\n\tThu, 7 May 2026 21:10:03 +0800 (CST)", "from localhost.localdomain (10.50.163.32) by\n kwepemk500009.china.huawei.com (7.202.194.94) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.1544.11; Thu, 7 May 2026 21:10:02 +0800" ], "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1778159410; cv=none;\n b=Zdp7MFWuNqrjG+CFGD9IRGjKTf9s3panpLKBQLFIR00zOAx3igMkyE5z3sAju1hoKh1YzAICLyh1LgLgjiLG0RPM4wXM5QPWKDBz7kpgIomO3FQIhHLKcWNMtWz1XVs4MQQHlXf9E41zYIQMoU18DgR9T6vVtPSxHc5OJGBuWjc=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1778159410; c=relaxed/simple;\n\tbh=7a7vQfQ6lzTtJHY1EQoPWt4LHQQ8wnQjBLXBUbEGjls=;\n\th=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type;\n b=X+GaPhtc/vizBd4//3KMXkRN7h1pNjQOUqXp6JTtdkurtyw++SSFUc25qaFzp0Q2ga99c+ASKr+c5+Bd5C1UUuD6KeXR1uDWtK8ZBGcdmmZj89HLBlJ8vH/Z4/8CdLUmskAmzNOjUx2YvcSYDDXmhsfk8Cr1XeauSsygfoJHZpM=", "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=quarantine dis=none) header.from=huawei.com;\n spf=pass smtp.mailfrom=huawei.com;\n dkim=pass (1024-bit key) header.d=huawei.com header.i=@huawei.com\n header.b=kJdjxynh; arc=none smtp.client-ip=113.46.200.216", "dkim-signature": "v=1; a=rsa-sha256; d=huawei.com; s=dkim;\n\tc=relaxed/relaxed; q=dns/txt;\n\th=From;\n\tbh=Sixmsk+HVoyoSFiyyDd0fBahO6caxF8ZaHIkupIc1W8=;\n\tb=kJdjxynhSYbkzJWndCLuUNDFMDGmTBMOyi1kVugJE6ORThJGYOZ8rA0lwqldl1O48So2hQN/b\n\te840wwDIEfF/kiM9dZvdBFsKaw5bzAguXubzZhErAAgbETN49BiCelFJnBD4/hYHcZryoWo58Sj\n\tYvRA3l0WGk7TXXNLObm+pHk=", "From": "Chengwen Feng <fengchengwen@huawei.com>", "To": "<alex@shazbot.org>, <jgg@ziepe.ca>", "CC": "<wathsala.vithanage@arm.com>, <helgaas@kernel.org>, <wei.huang2@amd.com>,\n\t<wangzhou1@hisilicon.com>, <wangyushan12@huawei.com>,\n\t<liuyonglong@huawei.com>, <kvm@vger.kernel.org>, <linux-pci@vger.kernel.org>", "Subject": "[PATCH v7 0/6] vfio/pci: Add PCIe TPH support", "Date": "Thu, 7 May 2026 21:09:50 +0800", "Message-ID": "<20260507130956.34441-1-fengchengwen@huawei.com>", "X-Mailer": "git-send-email 2.17.1", "Precedence": "bulk", "X-Mailing-List": "linux-pci@vger.kernel.org", "List-Id": "<linux-pci.vger.kernel.org>", "List-Subscribe": "<mailto:linux-pci+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-pci+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "Content-Type": "text/plain", "X-ClientProxiedBy": "kwepems100001.china.huawei.com (7.221.188.238) To\n kwepemk500009.china.huawei.com (7.202.194.94)" }, "content": "This patchset enables userspace control over PCIe TPH steering tags,\nmotivated by the following considerations:\n\n1. Why userspace needs the capability to control steering tags:\n When PCIe devices are fully owned by userspace workloads such as DPDK\n and SPDK, only userspace has full knowledge of core binding policies\n and traffic distribution strategies. Without this series, userspace\n cannot enable TPH or configure steering tags, leaving built-in PCIe\n performance optimizations unused in high-throughput polling I/O\n scenarios.\n\n2. Why this interface must be implemented in VFIO:\n VFIO is the standard, secure community solution for granting full\n PCIe device ownership to userspace. Existing kernel TPH interfaces\n are designed purely for in-kernel drivers. For user-owned devices,\n VFIO provides the only isolated and correct path to expose per-device\n TPH management.\n \nTPH supports both IV and DS modes. Since device-specific (DS) TPH mode\nintroduces cross-VM isolation risks such as untrusted guests programming\narbitrary steering tags to impact other domains, so a new module parameter\n`enable_unsafe_tph_ds_mode` is added. It defaults to off, and blocks all\nunsafe DS-mode TPH operations when disabled.\n\nTo restrict abuse of SET_ST and prevent arbitrary steering tag programming\nfrom userspace, the interface only accepts explicit CPU ID, memory type\nand index inputs. The kernel resolves the corresponding steering tag\ninternally before programming, limiting userspace to controlled,\nindex-based configuration.\n\nBased on earlier RFC work by Wathsala Vithanage\n\nv7:\n- Address Bjorn's comment on [1/6] commit.\n- Don't report ds mode defaultly (enable_unsafe_tph_ds_mode=0)\n- Fix Sashiko review comments:\n 1. pcie_tph_get_st_table_loc()'s stub return 0\n 2. Tph ioctl argsz validation wrong use offsetofend\n 3. Disable TPH when device was taken-over/close to/by userspace\n 4. Serialize all TPH operations under vdev->igate to prevent hardware\n control and bitfield races.\n 5. Check unused ioctl field to be zero.\nv6:\n- Address Alex's comment on [1/6] commit.\n- Fix Sashiko review comments:\n Add tph_cap validation for pcie_tph_get_st_modes/st_table_loc.\n Add argsz validation for each op cmd.\n Move disable tph from ioctl-reset to register.\n Verify reserved field for get/set ST op.\n Fix ABI mismatch due to pointer arithmetic of get/st ST op.\nv5:\n- Fix pcie_tph_get_st_table_loc() field extraction bug\n- Add disable TPH in vfio_pci_ioctl_reset() to clean software state\nv4:\n- Address Jason's comment of restrict device-specific mode under module\n param control.\n- Rename module param to enable_unsafe_tph_ds_mode\nv3:\n- Add module param enable_unsafe_tph_ds to guard unsafe usage\n of TPH device-specific mode with no ST table\nv2:\n- Export pcie_tph_get_st_modes()\n- Add detailed comment for UAPI structures and operations\n- Add batch entry limit VFIO_TPH_MAX_ENTRIES\n- Improve robustness and error handling\n\nChengwen Feng (6):\n PCI/TPH: Fix pcie_tph_get_st_table_loc() field extraction\n PCI/TPH: Export pcie_tph_get_st_modes() for external use\n vfio/pci: Add PCIe TPH interface with capability query\n vfio/pci: Add PCIe TPH enable/disable support\n vfio/pci: Add PCIe TPH GET_ST interface\n vfio/pci: Add PCIe TPH SET_ST interface\n\n drivers/pci/tph.c | 26 ++-\n drivers/vfio/pci/vfio_pci.c | 13 +-\n drivers/vfio/pci/vfio_pci_core.c | 264 ++++++++++++++++++++++++++++++-\n include/linux/pci-tph.h | 7 +\n include/linux/vfio_pci_core.h | 3 +-\n include/uapi/linux/vfio.h | 131 +++++++++++++++\n 6 files changed, 433 insertions(+), 11 deletions(-)" }