Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3860719pxj; Tue, 15 Jun 2021 10:10:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz9lkHLpTWkFTuyY1JB/h6C6fAPXNHkJjnCTIxDnblijoD3mPu1Qzn+f/qGvxGdCLbVAMO3 X-Received: by 2002:a17:906:560c:: with SMTP id f12mr563400ejq.503.1623777030086; Tue, 15 Jun 2021 10:10:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623777030; cv=none; d=google.com; s=arc-20160816; b=ZJ07guFzABCNo6QNRPsy1iLmNoVbKMp8N8IXdTFpWhjCIsQ6pr1F2HS3M+iT7RGKN7 Kwrg6APRy8Z2HfNL26ftpOho+5/mN9UiDj1AL9jqUfELjpNhDn7y7BWnGBsBtVZVo2R0 9NHnAu8az0kdhorf4QrfVD5SeWGODjouqrmIVqgeu6RGGsWVSuTfGbs22p6cJQ3wT/7H 6NNjdDHN35ka2sAEuZ3PR6K7ZZSo6PnyvRkMHVZ/NwmbET8loAGvxIICdCcOkhJp6pJm RmGgZqPWlTo5SdiuzeqNnbAyL6TH71/oL2AEOcu1+C4SU9KBTMrSZg46lTdCNDVHl0wp ylig== 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=GdRes6/PpbsxIuhhq2Bc7f0z0yKVe+PiwOmk9XpzGDU=; b=J5NkttX6pllTDN4BMiifW7CM6f00Iip9FEvapEC745x+5BIJ/8GmNjg/SxhG7VV0h3 a0f+uSZHmyCywD8mlvE2ufPcf8Q5qzhNRGhSc3KxJqxhvJSmkDS4GJctk043aMvtz08+ ThIY59aBs0h/J98JN5x7yBPJnDB5xaW7yFfTKDST3L/hghiSmbt6o1njgZXTnSzb3ugA PzSI/+IxJZTbAgv3lG9MIGJdZG+XrmvCyEDkvAkIwwtO8lR1cRjhhf5PgmD5zrktBNnA aTXmNOxuJJE6f5x1HKUdE53/D/DNMPupd0baGCxoClW70/PFAoFr0xw38lyK+Q6VFnZy VGuA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@quicinc.com header.s=qcdkim header.b=zGGvVvgG; 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 l5si14999336edr.217.2021.06.15.10.10.07; Tue, 15 Jun 2021 10:10:30 -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=zGGvVvgG; 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 S231332AbhFORLF (ORCPT + 99 others); Tue, 15 Jun 2021 13:11:05 -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 S230151AbhFORKz (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=1623776931; x=1655312931; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=D6IUBGYQqCLcl7dcGiUkl6UUi4wbJwdxmuWA7BYn2qc=; b=zGGvVvgGBVHQmkR+b9TOIMX9JgYm4i0FCbc7XY5tcygCifkPMD8uanzO DzR7LWrDZOv+prm/g3muFSKPdkv79qyqXnaoPJntqm9T0ZH76utOtkdY2 6CdVnCpuZnMeSlD0rW2qqoZbbqT4haLt/W9iqWc/I+QRRTx5ZMtu1mUet M=; 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 04/15] iommu: Add a map_pages() op for IOMMU drivers Date: Tue, 15 Jun 2021 10:08:22 -0700 Message-ID: <1623776913-390160-5-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 map a physically contiguous rnage of pages of the same size. For IOMMU drivers that do not specify a map_pages() callback, the existing logic of mapping memory one page block at a time will be used. Signed-off-by: Isaac J. Manjarres Suggested-by: Will Deacon Acked-by: Lu Baolu Signed-off-by: Georgi Djakov --- include/linux/iommu.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 25a844121be5..d7989d4a7404 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -180,6 +180,8 @@ struct iommu_iotlb_gather { * @attach_dev: attach device to an iommu domain * @detach_dev: detach device from an iommu domain * @map: map a physically contiguous memory region to an iommu domain + * @map_pages: map a physically contiguous set of pages of the same size 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 @@ -230,6 +232,9 @@ struct iommu_ops { void (*detach_dev)(struct iommu_domain *domain, struct device *dev); int (*map)(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t size, int prot, gfp_t gfp); + int (*map_pages)(struct iommu_domain *domain, unsigned long iova, + phys_addr_t paddr, size_t pgsize, size_t pgcount, + int prot, gfp_t gfp, size_t *mapped); 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,