Received: by 2002:a25:f815:0:0:0:0:0 with SMTP id u21csp927360ybd; Wed, 26 Jun 2019 08:14:08 -0700 (PDT) X-Google-Smtp-Source: APXvYqzY+i1TlxZD6dQYUHZtBlch1YXsCDdhyHvmesNEwlUXYTi7TtEeFIS1YHjSQdQM7u5D8Xd7 X-Received: by 2002:a17:902:b487:: with SMTP id y7mr5902514plr.219.1561562048213; Wed, 26 Jun 2019 08:14:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561562048; cv=none; d=google.com; s=arc-20160816; b=tqu7BKhAV4Y68f5FHm5SyjhAf5MAfo8AggrbdJqc8CXCe5+00zuCS5k3lQaV4JGnxG 0DcXJbqOa5qygaEEgj8TjoRHuuQGV9xW+2CV34VPdEHMHzt2gvlqdbebaeRUAWS/mBdf u+yC++4o2LFoKf0lI7fwOB0zXJh6N9SMp0gYbzsuYfx75u5Wyr+UMGOaAOCVMKbvQhFs 1xJPheJyIL6SB8q8QDMoyX12In9gRzetktfw9VERt2yT9YcLYzerd6Cbeldt8CwOO2v0 1lzfD0pe4yVr9M/XmcVCE6RZ0HkDo2tClZjW22gsi4Vzj+deV+y9sj7ozvaKwwBCjzJQ fyhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:cc :to:from; bh=wyOGTRitbt7uHLK7W4rMrwgcZ+0kxuu/hrmv9Y4LUYw=; b=e10AnRwn4LRj+HFwgKA9exHlVhYLMDKZzC+spavzn37VQhapTQE14Ie/5KpotNKLRm IQH9uDqPGgZ93ta3z99HcxfnSs7s00H9lu6bD/OsnN2+FdUcGd2U1man348EZsOEXSeY e5dvPwodQqcj0cpcnyML67XyTKa79uQ4oL2CUs1Vvu1TXZsj6BXQldeTcZ8vhVXnnacO eZM5QHM+LCKmL8OmJcGWRU3ijq5THUgN4+zVkNuUb1rKCecAYbauiTbSqmNK3aseeeRl klZyAQr8mpcmiALhgsD9OOnO3MnHpvQ1w69ynrDWMhgzHILK4DtBVtwuxtGTDU5/mr5w 8G/A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k3si3379026pls.146.2019.06.26.08.13.50; Wed, 26 Jun 2019 08:14:08 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728176AbfFZPNl (ORCPT + 99 others); Wed, 26 Jun 2019 11:13:41 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:19082 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726157AbfFZPNk (ORCPT ); Wed, 26 Jun 2019 11:13:40 -0400 Received: from DGGEMS406-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id 3E7BB3290C7B21BAE097; Wed, 26 Jun 2019 23:13:37 +0800 (CST) Received: from S00345302A-PC.china.huawei.com (10.202.227.237) by DGGEMS406-HUB.china.huawei.com (10.3.19.206) with Microsoft SMTP Server id 14.3.439.0; Wed, 26 Jun 2019 23:13:29 +0800 From: Shameer Kolothum To: , , CC: , , , , , , , Shameer Kolothum Subject: [PATCH v7 0/6] vfio/type1: Add support for valid iova list management Date: Wed, 26 Jun 2019 16:12:42 +0100 Message-ID: <20190626151248.11776-1-shameerali.kolothum.thodi@huawei.com> X-Mailer: git-send-email 2.12.0.windows.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.202.227.237] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is to revive this series which almost made to 4.18 but got dropped as Alex found an issue[1] with IGD and USB devices RMRR region being reported as reserved regions. Thanks to Eric for his work here[2]. It provides a way to exclude these regions while reporting the valid iova regions and this respin make use of that. Please note that I don't have a platform to verify the reported RMRR issue and appreciate testing on those platforms. Thanks, Shameer [1] https://lkml.org/lkml/2018/6/5/760 [2] https://lore.kernel.org/patchwork/cover/1083072/ v6-->v7 -Rebased to 5.2-rc6 + Eric's patches -Added logic to exclude IOMMU_RESV_DIRECT_RELAXABLE reserved memory region type(patch #2). -Dropped patch #4 of v6 as it is already part of mainline. -Addressed "container with only an mdev device will have an empty list" case(patches 4/6 & 5/6 - Suggested by Alex) Old ---- This series introduces an iova list associated with a vfio iommu. The list is kept updated taking care of iommu apertures, and reserved regions. Also this series adds checks for any conflict with existing dma mappings whenever a new device group is attached to the domain. User-space can retrieve valid iova ranges using VFIO_IOMMU_GET_INFO ioctl capability chains. Any dma map request outside the valid iova range will be rejected. v5 --> v6 -Rebased to 4.17-rc1 -Changed the ordering such that previous patch#7 "iommu/dma: Move PCI window region reservation back...") is now patch #4. This will avoid any bisection issues pointed out by Alex. -Added Robins's Reviewed-by tag for patch#4 v4 --> v5 Rebased to next-20180315. -Incorporated the corner case bug fix suggested by Alex to patch #5. -Based on suggestions by Alex and Robin, added patch#7. This moves the PCI window reservation back in to DMA specific path. This is to fix the issue reported by Eric[1]. v3 --> v4 Addressed comments received for v3. -dma_addr_t instead of phys_addr_t -LIST_HEAD() usage. -Free up iova_copy list in case of error. -updated logic in filling the iova caps info(patch #5) RFCv2 --> v3 Removed RFC tag. Addressed comments from Alex and Eric: - Added comments to make iova list management logic more clear. - Use of iova list copy so that original is not altered in case of failure. RFCv1 --> RFCv2 Addressed comments from Alex: -Introduced IOVA list management and added checks for conflicts with existing dma map entries during attach/detach. Shameer Kolothum (6): vfio/type1: Introduce iova list and add iommu aperture validity check vfio/type1: Check reserve region conflict and update iova list vfio/type1: Update iova list on detach vfio/type1: check dma map request is within a valid iova range vfio/type1: Add IOVA range capability support vfio/type1: remove duplicate retrieval of reserved regions drivers/vfio/vfio_iommu_type1.c | 510 +++++++++++++++++++++++++++++++- include/uapi/linux/vfio.h | 23 ++ 2 files changed, 520 insertions(+), 13 deletions(-) -- 2.17.1