Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3159150pxj; Mon, 31 May 2021 22:14:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxcCbw5q0sZbjs24tbZEB1PtQ2W+cZwVveZqgsiv+C8KQpWiqFKsWY05EROpHBKKU20yFpE X-Received: by 2002:a05:6402:5174:: with SMTP id d20mr30357105ede.248.1622524473448; Mon, 31 May 2021 22:14:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622524473; cv=none; d=google.com; s=arc-20160816; b=diW02EJ+6MD6UDUHpSg5hcHKkFnujyhqwmkrVCQFIttkjms+ajlM9KBDnDIcEvtL0p arcW3SQ9I+7wZ27d/vzAuKx8EWpfzv1/QiFn2bBPW6pMTSBxBtaHN8JmxLqRzB+nU9lp 3DUe+R13qTPEaItyAw6shtR4z6mM6Y8YD9UK/1iFaYRQUt7txyxlrgCTgMyKItUNwWHz iJrCumcoki88VFEpfSoqgCT/bomasns+QqByyp92AaxQ2tk2rm0EjVLyUw7qR3vAkp1S Uk9zM2XUsOitrMK1g9+1tfL8CIxwLe/iAhxbGyDCFvI43+5+k+NY+KvCqUbO3M9Xm+HP caWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :to:subject:cc:ironport-sdr:ironport-sdr; bh=ukaOQg3jRTCCr5y/ftJzsQ/oQ1TbD8n8JDLA9CW4mSg=; b=SpPvCm9T44lvOvIFWhxyRuZCxKn9uLkac6v4r3BPjNN7Z7a9iJMHpPNzhfhsOfa1pk l5yo3WuNej0EJ3vyt60Mp6t4PxhONFThM4FSzJikvyn8iTvlbtwGG75ZXsq9J64hTDrS dNcj5Mf6wB/D8KWUXYTVsrLwMzDtohxArhszYG+f/e0tJgS7MurJwYlj247FWrW/tktn 1NrL6Odh6Sl1umiFRTimTLBKrmouQCpPn3XaCV6WLEbv6j1u7/uexZdBHGejomqAGIhw Kx46iHXZBSxw/aQR2+wv1BrVxhEaJtXr9pQ7j6AcPyMQ3kLCwXC64YcW8P25LQ2iZZ/7 lctw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id jt10si6894086ejc.483.2021.05.31.22.14.10; Mon, 31 May 2021 22:14:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231928AbhFAFN3 (ORCPT + 99 others); Tue, 1 Jun 2021 01:13:29 -0400 Received: from mga11.intel.com ([192.55.52.93]:10932 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230009AbhFAFN3 (ORCPT ); Tue, 1 Jun 2021 01:13:29 -0400 IronPort-SDR: vmffTixqHfbCYJCuDr82n1SEw8NpYHUhs9TNW3AZaoJ+hXQjSF+h8R0fySksLD7dLGSnKCnT9F +9YU6MZHhIFQ== X-IronPort-AV: E=McAfee;i="6200,9189,10001"; a="200459999" X-IronPort-AV: E=Sophos;i="5.83,239,1616482800"; d="scan'208";a="200459999" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2021 22:11:48 -0700 IronPort-SDR: 2u84hOhaJd6strBWTEy1SyIBU8ZG0t9ohTKiepOBGgZdaA3rUcLdkxYaa5xaivPzcblATQnkGx tGSQqDI4DQEw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,239,1616482800"; d="scan'208";a="632747255" Received: from allen-box.sh.intel.com (HELO [10.239.159.105]) ([10.239.159.105]) by fmsmga006.fm.intel.com with ESMTP; 31 May 2021 22:11:42 -0700 Cc: baolu.lu@linux.intel.com, Eric Auger , Jonathan Corbet , "Raj, Ashok" , "Liu, Yi L" , "Wu, Hao" , "Jiang, Dave" , Jacob Pan , Jean-Philippe Brucker , David Gibson , Kirti Wankhede , Robin Murphy , Zenghui Yu , "wanghaibin.wang@huawei.com" Subject: Re: [RFC] /dev/ioasid uAPI proposal To: Shenming Lu , "Tian, Kevin" , LKML , Joerg Roedel , Jason Gunthorpe , David Woodhouse , "iommu@lists.linux-foundation.org" , "kvm@vger.kernel.org" , "Alex Williamson (alex.williamson@redhat.com)" , Jason Wang References: From: Lu Baolu Message-ID: Date: Tue, 1 Jun 2021 13:10:34 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Shenming, On 6/1/21 12:31 PM, Shenming Lu wrote: > On 2021/5/27 15:58, Tian, Kevin wrote: >> /dev/ioasid provides an unified interface for managing I/O page tables for >> devices assigned to userspace. Device passthrough frameworks (VFIO, vDPA, >> etc.) are expected to use this interface instead of creating their own logic to >> isolate untrusted device DMAs initiated by userspace. >> >> This proposal describes the uAPI of /dev/ioasid and also sample sequences >> with VFIO as example in typical usages. The driver-facing kernel API provided >> by the iommu layer is still TBD, which can be discussed after consensus is >> made on this uAPI. >> >> It's based on a lengthy discussion starting from here: >> https://lore.kernel.org/linux-iommu/20210330132830.GO2356281@nvidia.com/ >> >> It ends up to be a long writing due to many things to be summarized and >> non-trivial effort required to connect them into a complete proposal. >> Hope it provides a clean base to converge. >> > > [..] > >> >> /* >> * Page fault report and response >> * >> * This is TBD. Can be added after other parts are cleared up. Likely it >> * will be a ring buffer shared between user/kernel, an eventfd to notify >> * the user and an ioctl to complete the fault. >> * >> * The fault data is per I/O address space, i.e.: IOASID + faulting_addr >> */ > > Hi, > > It seems that the ioasid has different usage in different situation, it could > be directly used in the physical routing, or just a virtual handle that indicates > a page table or a vPASID table (such as the GPA address space, in the simple > passthrough case, the DMA input to IOMMU will just contain a Stream ID, no > Substream ID), right? > > And Baolu suggested that since one device might consume multiple page tables, > it's more reasonable to have one fault handler per page table. By this, do we > have to maintain such an ioasid info list in the IOMMU layer? As discussed earlier, the I/O page fault and cache invalidation paths will have "device labels" so that the information could be easily translated and routed. So it's likely the per-device fault handler registering API in iommu core can be kept, but /dev/ioasid will be grown with a layer to translate and propagate I/O page fault information to the right consumers. If things evolve in this way, probably the SVA I/O page fault also needs to be ported to /dev/ioasid. > > Then if we add host IOPF support (for the GPA address space) in the future > (I have sent a series for this but it aimed for VFIO, I will convert it for > IOASID later [1] :-)), how could we find the handler for the received fault > event which only contains a Stream ID... Do we also have to maintain a > dev(vPASID)->ioasid mapping in the IOMMU layer? > > [1] https://lore.kernel.org/patchwork/cover/1410223/ Best regards, baolu