Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3860615pxj; Tue, 15 Jun 2021 10:10:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxAIkuMWraAc/BN8jsdao5PNpiEzzO8rvy7uMi6DiVIIXEEQ1UFRNFFMAjjRQPVSJh1bR1Z X-Received: by 2002:a17:906:5acf:: with SMTP id x15mr667799ejs.74.1623777023475; Tue, 15 Jun 2021 10:10:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623777023; cv=none; d=google.com; s=arc-20160816; b=XviBIT2z68YUfo5+KZtrf1AijLRBOdoyzvC4liaM7D86x7I7mPMqS33PBCXZRWYsQ3 dbLNkk6MNr7CWt5TV5dGehufNBEG0uq4hRVcs2tzuvW4WaBnl82/ywzdRch6zG+HHMLL UQwCjKpow1W2fSm6mUYMVI931TQJCh1rQptl2SViJsHt6kbTenWqKa0Bg+Hj8RCp7S3O /LnvKbKKCffvoSZaq47YFI+HvNI9NGqlaUQy6q5rKyAY6fC18niCImK7QwYxxGDoo/Nq 4AGcyKo/jbMOOLm6kKJOn8Km7kzO14iPdiNY0w7o2R2w8TSi+tmPPLcS6aWHU07Xlw/C Cr8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=fxFJ8F5wFRtfo7OksH0dnx/qgCS/3wAqtxSdAeOy92I=; b=LPj3JXUj4rpaQUyhjUdXoEXuFUtJxESvLQpeT4JEk5Q7gLND544QHgiVRhuhHugpyz b0aOVpfiPGNH92gVPr7AB1n0M1G7ljRMZf8DJd46KW8656GeDVAvkQgaueuess0cJVIs MJRFsn4irq8eonA7FKhQz8TY3yVi5eLYN4fi+f8bMd1/NZHL4iDHv5yRpgZS8OW3ZkAZ ncpE56snNroqfsWt9KDtDpnf2r+JxyFciJmP61JXuhYmx9Yn8IUf9AtV+mYF2J3iKzq4 a2TfwJj2btDU3HgpCbaATX3+8LbQDVy7m8eYpfccMONOjOjJELco1QZVMx2/kwcmZCnv 6yFA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@quicinc.com header.s=qcdkim header.b=BcRJBYoU; 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=quicinc.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f21si4080334ejj.567.2021.06.15.10.09.59; Tue, 15 Jun 2021 10:10:23 -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; dkim=fail header.i=@quicinc.com header.s=qcdkim header.b=BcRJBYoU; 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=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231216AbhFORLC (ORCPT + 99 others); Tue, 15 Jun 2021 13:11:02 -0400 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:10212 "EHLO alexa-out-sd-01.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230012AbhFORKz (ORCPT ); Tue, 15 Jun 2021 13:10:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1623776930; x=1655312930; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=e9j78rdWwk4Kd0aCMBvspRHOURninHxcAIXEA5TcovU=; b=BcRJBYoU4+eCjUqoJ1M7ZMjuz+TJJrjwIC2YAbCRIbwOUfdgJpBW/wM8 kTj23NYT8WGP889BBTtnGkTjEra9vpjyN1EnwDUniXIz/4cxmEpdlYqlU +3Zac/CRndHXAXChhwpdWbozz9ZaPuXYcARtgqldia+MAzzzIqjbHcT/N w=; Received: from unknown (HELO ironmsg02-sd.qualcomm.com) ([10.53.140.142]) by alexa-out-sd-01.qualcomm.com with ESMTP; 15 Jun 2021 10:08:50 -0700 X-QCInternal: smtphost Received: from nasanexm03e.na.qualcomm.com ([10.85.0.48]) by ironmsg02-sd.qualcomm.com with ESMTP/TLS/AES256-SHA; 15 Jun 2021 10:08:50 -0700 Received: from th-lint-040.qualcomm.com (10.80.80.8) by nasanexm03e.na.qualcomm.com (10.85.0.48) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Tue, 15 Jun 2021 10:08:50 -0700 From: Georgi Djakov To: , CC: , , , , , , , Subject: [PATCH v6 02/15] iommu: Add an unmap_pages() op for IOMMU drivers Date: Tue, 15 Jun 2021 10:08:20 -0700 Message-ID: <1623776913-390160-3-git-send-email-quic_c_gdjako@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1623776913-390160-1-git-send-email-quic_c_gdjako@quicinc.com> References: <1623776913-390160-1-git-send-email-quic_c_gdjako@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nasanexm03e.na.qualcomm.com (10.85.0.48) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "Isaac J. Manjarres" Add a callback for IOMMU drivers to provide a path for the IOMMU framework to call into an IOMMU driver, which can call into the io-pgtable code, to unmap a virtually contiguous range of pages of the same size. For IOMMU drivers that do not specify an unmap_pages() callback, the existing logic of unmapping memory one page block at a time will be used. Signed-off-by: Isaac J. Manjarres Suggested-by: Will Deacon Signed-off-by: Will Deacon Acked-by: Lu Baolu Signed-off-by: Georgi Djakov --- include/linux/iommu.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 32d448050bf7..25a844121be5 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -181,6 +181,7 @@ struct iommu_iotlb_gather { * @detach_dev: detach device from an iommu domain * @map: map a physically contiguous memory region to an iommu domain * @unmap: unmap a physically contiguous memory region from an iommu domain + * @unmap_pages: unmap a number of pages of the same size from an iommu domain * @flush_iotlb_all: Synchronously flush all hardware TLBs for this domain * @iotlb_sync_map: Sync mappings created recently using @map to the hardware * @iotlb_sync: Flush all queued ranges from the hardware TLBs and empty flush @@ -231,6 +232,9 @@ struct iommu_ops { phys_addr_t paddr, size_t size, int prot, gfp_t gfp); size_t (*unmap)(struct iommu_domain *domain, unsigned long iova, size_t size, struct iommu_iotlb_gather *iotlb_gather); + size_t (*unmap_pages)(struct iommu_domain *domain, unsigned long iova, + size_t pgsize, size_t pgcount, + struct iommu_iotlb_gather *iotlb_gather); void (*flush_iotlb_all)(struct iommu_domain *domain); void (*iotlb_sync_map)(struct iommu_domain *domain, unsigned long iova, size_t size);