Re: [GIT PULL] dma-mapping fixes for 5.8
The pull request you sent on Sun, 19 Jul 2020 09:39:27 +0200: > git://git.infradead.org/users/hch/dma-mapping.git tags/dma-mapping-5.8-6 has been merged into torvalds/linux.git: https://git.kernel.org/torvalds/c/8c18fc6344568bdc131436be0345d82da512bfef Thank you! -- Deet-doot-dot, I am a bot. https://korg.wiki.kernel.org/userdoc/prtracker ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
Re: [PATCH v5 09/15] iommu/vt-d: Check ownership for PASIDs from user-space
Hi Yi, On 7/12/20 1:21 PM, Liu Yi L wrote: > When an IOMMU domain with nesting attribute is used for guest SVA, a > system-wide PASID is allocated for binding with the device and the domain. > For security reason, we need to check the PASID passsed from user-space. passed > e.g. page table bind/unbind and PASID related cache invalidation. > > Cc: Kevin Tian > CC: Jacob Pan > Cc: Alex Williamson > Cc: Eric Auger > Cc: Jean-Philippe Brucker > Cc: Joerg Roedel > Cc: Lu Baolu > Signed-off-by: Liu Yi L > Signed-off-by: Jacob Pan > --- > drivers/iommu/intel/iommu.c | 10 ++ > drivers/iommu/intel/svm.c | 7 +-- > 2 files changed, 15 insertions(+), 2 deletions(-) > > diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c > index 4d54198..a9504cb 100644 > --- a/drivers/iommu/intel/iommu.c > +++ b/drivers/iommu/intel/iommu.c > @@ -5436,6 +5436,7 @@ intel_iommu_sva_invalidate(struct iommu_domain *domain, > struct device *dev, > int granu = 0; > u64 pasid = 0; > u64 addr = 0; > + void *pdata; > > granu = to_vtd_granularity(cache_type, inv_info->granularity); > if (granu == -EINVAL) { > @@ -5456,6 +5457,15 @@ intel_iommu_sva_invalidate(struct iommu_domain > *domain, struct device *dev, >(inv_info->granu.addr_info.flags & > IOMMU_INV_ADDR_FLAGS_PASID)) > pasid = inv_info->granu.addr_info.pasid; > > + pdata = ioasid_find(dmar_domain->ioasid_sid, pasid, NULL); > + if (!pdata) { > + ret = -EINVAL; > + goto out_unlock; > + } else if (IS_ERR(pdata)) { > + ret = PTR_ERR(pdata); > + goto out_unlock; > + } > + > switch (BIT(cache_type)) { > case IOMMU_CACHE_INV_TYPE_IOTLB: > /* HW will ignore LSB bits based on address mask */ > diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c > index d2c0e1a..212dee0 100644 > --- a/drivers/iommu/intel/svm.c > +++ b/drivers/iommu/intel/svm.c > @@ -319,7 +319,7 @@ int intel_svm_bind_gpasid(struct iommu_domain *domain, > struct device *dev, > dmar_domain = to_dmar_domain(domain); > > mutex_lock(_mutex); > - svm = ioasid_find(INVALID_IOASID_SET, data->hpasid, NULL); I do not get what the call was supposed to do before that patch? > + svm = ioasid_find(dmar_domain->ioasid_sid, data->hpasid, NULL); > if (IS_ERR(svm)) { > ret = PTR_ERR(svm); > goto out; > @@ -436,6 +436,7 @@ int intel_svm_unbind_gpasid(struct iommu_domain *domain, > struct device *dev, ioasid_t pasid) > { > struct intel_iommu *iommu = intel_svm_device_to_iommu(dev); > + struct dmar_domain *dmar_domain; > struct intel_svm_dev *sdev; > struct intel_svm *svm; > int ret = -EINVAL; > @@ -443,8 +444,10 @@ int intel_svm_unbind_gpasid(struct iommu_domain *domain, > if (WARN_ON(!iommu)) > return -EINVAL; > > + dmar_domain = to_dmar_domain(domain); > + > mutex_lock(_mutex); > - svm = ioasid_find(INVALID_IOASID_SET, pasid, NULL); > + svm = ioasid_find(dmar_domain->ioasid_sid, pasid, NULL); just to make sure, about the locking, can't domain->ioasid_sid change under the hood? Thanks Eric > if (!svm) { > ret = -EINVAL; > goto out; > ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
Re: [PATCH v5 07/15] vfio/type1: Add VFIO_IOMMU_PASID_REQUEST (alloc/free)
Yi, On 7/12/20 1:21 PM, Liu Yi L wrote: > This patch allows user space to request PASID allocation/free, e.g. when > serving the request from the guest. > > PASIDs that are not freed by userspace are automatically freed when the > IOASID set is destroyed when process exits. > > Cc: Kevin Tian > CC: Jacob Pan > Cc: Alex Williamson > Cc: Eric Auger > Cc: Jean-Philippe Brucker > Cc: Joerg Roedel > Cc: Lu Baolu > Signed-off-by: Liu Yi L > Signed-off-by: Yi Sun > Signed-off-by: Jacob Pan > --- > v4 -> v5: > *) address comments from Eric Auger. > *) the comments for the PASID_FREE request is addressed in patch 5/15 of >this series. > > v3 -> v4: > *) address comments from v3, except the below comment against the range >of PASID_FREE request. needs more help on it. > "> +if (req.range.min > req.range.max) > > Is it exploitable that a user can spin the kernel for a long time in > the case of a free by calling this with [0, MAX_UINT] regardless of > their actual allocations?" > https://lore.kernel.org/linux-iommu/20200702151832.048b4...@x1.home/ > > v1 -> v2: > *) move the vfio_mm related code to be a seprate module > *) use a single structure for alloc/free, could support a range of PASIDs > *) fetch vfio_mm at group_attach time instead of at iommu driver open time > --- > drivers/vfio/Kconfig| 1 + > drivers/vfio/vfio_iommu_type1.c | 85 > + > drivers/vfio/vfio_pasid.c | 10 + > include/linux/vfio.h| 6 +++ > include/uapi/linux/vfio.h | 37 ++ > 5 files changed, 139 insertions(+) > > diff --git a/drivers/vfio/Kconfig b/drivers/vfio/Kconfig > index 3d8a108..95d90c6 100644 > --- a/drivers/vfio/Kconfig > +++ b/drivers/vfio/Kconfig > @@ -2,6 +2,7 @@ > config VFIO_IOMMU_TYPE1 > tristate > depends on VFIO > + select VFIO_PASID if (X86) > default n > > config VFIO_IOMMU_SPAPR_TCE > diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c > index ed80104..55b4065 100644 > --- a/drivers/vfio/vfio_iommu_type1.c > +++ b/drivers/vfio/vfio_iommu_type1.c > @@ -76,6 +76,7 @@ struct vfio_iommu { > booldirty_page_tracking; > boolpinned_page_dirty_scope; > struct iommu_nesting_info *nesting_info; > + struct vfio_mm *vmm; > }; > > struct vfio_domain { > @@ -1937,6 +1938,11 @@ static void vfio_iommu_iova_insert_copy(struct > vfio_iommu *iommu, > > static void vfio_iommu_release_nesting_info(struct vfio_iommu *iommu) > { > + if (iommu->vmm) { > + vfio_mm_put(iommu->vmm); > + iommu->vmm = NULL; > + } > + > kfree(iommu->nesting_info); > iommu->nesting_info = NULL; > } > @@ -2071,6 +2077,26 @@ static int vfio_iommu_type1_attach_group(void > *iommu_data, > iommu->nesting_info); > if (ret) > goto out_detach; > + > + if (iommu->nesting_info->features & > + IOMMU_NESTING_FEAT_SYSWIDE_PASID) { > + struct vfio_mm *vmm; > + int sid; > + > + vmm = vfio_mm_get_from_task(current); > + if (IS_ERR(vmm)) { > + ret = PTR_ERR(vmm); > + goto out_detach; > + } > + iommu->vmm = vmm; > + > + sid = vfio_mm_ioasid_sid(vmm); > + ret = iommu_domain_set_attr(domain->domain, > + DOMAIN_ATTR_IOASID_SID, > + ); > + if (ret) > + goto out_detach; > + } > } > > /* Get aperture info */ > @@ -2855,6 +2881,63 @@ static int vfio_iommu_type1_dirty_pages(struct > vfio_iommu *iommu, > return -EINVAL; > } > > +static int vfio_iommu_type1_pasid_alloc(struct vfio_iommu *iommu, > + unsigned int min, > + unsigned int max) > +{ > + int ret = -EOPNOTSUPP; > + > + mutex_lock(>lock); > + if (iommu->vmm) > + ret = vfio_pasid_alloc(iommu->vmm, min, max); > + mutex_unlock(>lock); > + return ret; > +} > + > +static int vfio_iommu_type1_pasid_free(struct vfio_iommu *iommu, > +unsigned int min, > +unsigned int max) > +{ > + int ret = -EOPNOTSUPP; > + > + mutex_lock(>lock); > + if (iommu->vmm) { > + vfio_pasid_free_range(iommu->vmm, min, max); > + ret = 0; > + } > + mutex_unlock(>lock); > + return ret; > +} > + > +static int vfio_iommu_type1_pasid_request(struct vfio_iommu *iommu, > +
Re: [PATCH v5 05/15] vfio: Add PASID allocation/free support
Yi, On 7/12/20 1:21 PM, Liu Yi L wrote: > Shared Virtual Addressing (a.k.a Shared Virtual Memory) allows sharing > multiple process virtual address spaces with the device for simplified > programming model. PASID is used to tag an virtual address space in DMA > requests and to identify the related translation structure in IOMMU. When > a PASID-capable device is assigned to a VM, we want the same capability > of using PASID to tag guest process virtual address spaces to achieve > virtual SVA (vSVA). > > PASID management for guest is vendor specific. Some vendors (e.g. Intel > VT-d) requires system-wide managed PASIDs cross all devices, regardless across? > of whether a device is used by host or assigned to guest. Other vendors > (e.g. ARM SMMU) may allow PASIDs managed per-device thus could be fully > delegated to the guest for assigned devices. > > For system-wide managed PASIDs, this patch introduces a vfio module to > handle explicit PASID alloc/free requests from guest. Allocated PASIDs > are associated to a process (or, mm_struct) in IOASID core. A vfio_mm > object is introduced to track mm_struct. Multiple VFIO containers within > a process share the same vfio_mm object. > > A quota mechanism is provided to prevent malicious user from exhausting > available PASIDs. Currently the quota is a global parameter applied to > all VFIO devices. In the future per-device quota might be supported too. > > Cc: Kevin Tian > CC: Jacob Pan > Cc: Eric Auger > Cc: Jean-Philippe Brucker > Cc: Joerg Roedel > Cc: Lu Baolu > Suggested-by: Alex Williamson > Signed-off-by: Liu Yi L > --- > v4 -> v5: > *) address comments from Eric Auger. > *) address the comments from Alex on the pasid free range support. Added >per vfio_mm pasid r-b tree. >https://lore.kernel.org/kvm/20200709082751.32074...@x1.home/ > > v3 -> v4: > *) fix lock leam in vfio_mm_get_from_task() > *) drop pasid_quota field in struct vfio_mm > *) vfio_mm_get_from_task() returns ERR_PTR(-ENOTTY) when !CONFIG_VFIO_PASID > > v1 -> v2: > *) added in v2, split from the pasid alloc/free support of v1 > --- > drivers/vfio/Kconfig | 5 + > drivers/vfio/Makefile | 1 + > drivers/vfio/vfio_pasid.c | 235 > ++ > include/linux/vfio.h | 28 ++ > 4 files changed, 269 insertions(+) > create mode 100644 drivers/vfio/vfio_pasid.c > > diff --git a/drivers/vfio/Kconfig b/drivers/vfio/Kconfig > index fd17db9..3d8a108 100644 > --- a/drivers/vfio/Kconfig > +++ b/drivers/vfio/Kconfig > @@ -19,6 +19,11 @@ config VFIO_VIRQFD > depends on VFIO && EVENTFD > default n > > +config VFIO_PASID > + tristate > + depends on IOASID && VFIO > + default n > + > menuconfig VFIO > tristate "VFIO Non-Privileged userspace driver framework" > depends on IOMMU_API > diff --git a/drivers/vfio/Makefile b/drivers/vfio/Makefile > index de67c47..bb836a3 100644 > --- a/drivers/vfio/Makefile > +++ b/drivers/vfio/Makefile > @@ -3,6 +3,7 @@ vfio_virqfd-y := virqfd.o > > obj-$(CONFIG_VFIO) += vfio.o > obj-$(CONFIG_VFIO_VIRQFD) += vfio_virqfd.o > +obj-$(CONFIG_VFIO_PASID) += vfio_pasid.o > obj-$(CONFIG_VFIO_IOMMU_TYPE1) += vfio_iommu_type1.o > obj-$(CONFIG_VFIO_IOMMU_SPAPR_TCE) += vfio_iommu_spapr_tce.o > obj-$(CONFIG_VFIO_SPAPR_EEH) += vfio_spapr_eeh.o > diff --git a/drivers/vfio/vfio_pasid.c b/drivers/vfio/vfio_pasid.c > new file mode 100644 > index 000..66e6054e > --- /dev/null > +++ b/drivers/vfio/vfio_pasid.c > @@ -0,0 +1,235 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* > + * Copyright (C) 2020 Intel Corporation. > + * Author: Liu Yi L > + * > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > + > +#define DRIVER_VERSION "0.1" > +#define DRIVER_AUTHOR "Liu Yi L " > +#define DRIVER_DESC "PASID management for VFIO bus drivers" > + > +#define VFIO_DEFAULT_PASID_QUOTA 1000 > +static int pasid_quota = VFIO_DEFAULT_PASID_QUOTA; > +module_param_named(pasid_quota, pasid_quota, uint, 0444); > +MODULE_PARM_DESC(pasid_quota, > + " Set the quota for max number of PASIDs that an application > is allowed to request (default 1000)"); s/ Set/Set > + > +struct vfio_mm_token { > + unsigned long long val; > +}; > + > +struct vfio_mm { > + struct kref kref; > + int ioasid_sid; > + struct mutexpasid_lock; > + struct rb_root pasid_list; > + struct list_headnext; > + struct vfio_mm_tokentoken; > +}; > + > +static struct mutex vfio_mm_lock; > +static struct list_head vfio_mm_list; > + > +struct vfio_pasid { > + struct rb_node node; > + ioasid_tpasid; > +}; > + > +static void vfio_remove_all_pasids(struct vfio_mm *vmm); > + > +/* called with vfio.vfio_mm_lock held */ > +static void vfio_mm_release(struct kref *kref) > +{ > + struct vfio_mm *vmm = container_of(kref,
Re: [PATCH v5 06/15] iommu/vt-d: Support setting ioasid set to domain
Yi, On 7/12/20 1:21 PM, Liu Yi L wrote: > From IOMMU p.o.v., PASIDs allocated and managed by external components > (e.g. VFIO) will be passed in for gpasid_bind/unbind operation. IOMMU > needs some knowledge to check the PASID ownership, hence add an interface > for those components to tell the PASID owner. > > In latest kernel design, PASID ownership is managed by IOASID set where > the PASID is allocated from. This patch adds support for setting ioasid > set ID to the domains used for nesting/vSVA. Subsequent SVA operations > on the PASID will be checked against its IOASID set for proper ownership. Subsequent SVA operations will check the PASID against its IOASID set for proper ownership. > > Cc: Kevin Tian > CC: Jacob Pan > Cc: Alex Williamson > Cc: Eric Auger > Cc: Jean-Philippe Brucker > Cc: Joerg Roedel > Cc: Lu Baolu > Signed-off-by: Liu Yi L > Signed-off-by: Jacob Pan > --- > v4 -> v5: > *) address comments from Eric Auger. > --- > drivers/iommu/intel/iommu.c | 22 ++ > include/linux/intel-iommu.h | 4 > include/linux/iommu.h | 1 + > 3 files changed, 27 insertions(+) > > diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c > index 72ae6a2..4d54198 100644 > --- a/drivers/iommu/intel/iommu.c > +++ b/drivers/iommu/intel/iommu.c > @@ -1793,6 +1793,7 @@ static struct dmar_domain *alloc_domain(int flags) > if (first_level_by_default()) > domain->flags |= DOMAIN_FLAG_USE_FIRST_LEVEL; > domain->has_iotlb_device = false; > + domain->ioasid_sid = INVALID_IOASID_SET; > INIT_LIST_HEAD(>devices); > > return domain; > @@ -6039,6 +6040,27 @@ intel_iommu_domain_set_attr(struct iommu_domain > *domain, > } > spin_unlock_irqrestore(_domain_lock, flags); > break; > + case DOMAIN_ATTR_IOASID_SID: > + { > + int sid = *(int *)data; > + > + if (!(dmar_domain->flags & DOMAIN_FLAG_NESTING_MODE)) { > + ret = -ENODEV; > + break; > + } > + spin_lock_irqsave(_domain_lock, flags); I think the lock should be taken before the DOMAIN_FLAG_NESTING_MODE check. Otherwise, the flags can be theretically changed inbetween the check and the test below? Thanks Eric > + if (dmar_domain->ioasid_sid != INVALID_IOASID_SET && > + dmar_domain->ioasid_sid != sid) { > + pr_warn_ratelimited("multi ioasid_set (%d:%d) setting", > + dmar_domain->ioasid_sid, sid); > + ret = -EBUSY; > + spin_unlock_irqrestore(_domain_lock, flags); > + break; > + } > + dmar_domain->ioasid_sid = sid; > + spin_unlock_irqrestore(_domain_lock, flags); > + break; > + } > default: > ret = -EINVAL; > break; > diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h > index 3f23c26..0d0ab32 100644 > --- a/include/linux/intel-iommu.h > +++ b/include/linux/intel-iommu.h > @@ -549,6 +549,10 @@ struct dmar_domain { > 2 == 1GiB, 3 == 512GiB, 4 == 1TiB */ > u64 max_addr; /* maximum mapped address */ > > + int ioasid_sid; /* > + * the ioasid set which tracks all > + * PASIDs used by the domain. > + */ > int default_pasid; /* >* The default pasid used for non-SVM >* traffic on mediated devices. > diff --git a/include/linux/iommu.h b/include/linux/iommu.h > index 7ca9d48..e84a1d5 100644 > --- a/include/linux/iommu.h > +++ b/include/linux/iommu.h > @@ -124,6 +124,7 @@ enum iommu_attr { > DOMAIN_ATTR_FSL_PAMUV1, > DOMAIN_ATTR_NESTING,/* two stages of translation */ > DOMAIN_ATTR_DMA_USE_FLUSH_QUEUE, > + DOMAIN_ATTR_IOASID_SID, > DOMAIN_ATTR_MAX, > }; > > ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
Re: [PATCH v5 08/15] iommu: Pass domain to sva_unbind_gpasid()
Yi, On 7/12/20 1:21 PM, Liu Yi L wrote: > From: Yi Sun > > Current interface is good enough for SVA virtualization on an assigned > physical PCI device, but when it comes to mediated devices, a physical > device may attached with multiple aux-domains. Also, for guest unbind, > the PASID to be unbind should be allocated to the VM. This check requires > to know the ioasid_set which is associated with the domain. > > So this interface needs to pass in domain info. Then the iommu driver is > able to know which domain will be used for the 2nd stage translation of > the nesting mode and also be able to do PASID ownership check. This patch > passes @domain per the above reason. > > Cc: Kevin Tian > CC: Jacob Pan > Cc: Alex Williamson > Cc: Eric Auger > Cc: Jean-Philippe Brucker > Cc: Joerg Roedel > Cc: Lu Baolu > Signed-off-by: Yi Sun > Signed-off-by: Liu Yi L > --- > v2 -> v3: > *) pass in domain info only > *) use ioasid_t for pasid instead of int type > > v1 -> v2: > *) added in v2. > --- > drivers/iommu/intel/svm.c | 3 ++- > drivers/iommu/iommu.c | 2 +- > include/linux/intel-iommu.h | 3 ++- > include/linux/iommu.h | 3 ++- > 4 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c > index b9a9c55..d2c0e1a 100644 > --- a/drivers/iommu/intel/svm.c > +++ b/drivers/iommu/intel/svm.c > @@ -432,7 +432,8 @@ int intel_svm_bind_gpasid(struct iommu_domain *domain, > struct device *dev, > return ret; > } > > -int intel_svm_unbind_gpasid(struct device *dev, int pasid) > +int intel_svm_unbind_gpasid(struct iommu_domain *domain, > + struct device *dev, ioasid_t pasid) int -> ioasid_t proto change is not described in the commit message, > { > struct intel_iommu *iommu = intel_svm_device_to_iommu(dev); > struct intel_svm_dev *sdev; > diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c > index 7910249..d3e554c 100644 > --- a/drivers/iommu/iommu.c > +++ b/drivers/iommu/iommu.c > @@ -2151,7 +2151,7 @@ int __iommu_sva_unbind_gpasid(struct iommu_domain > *domain, struct device *dev, > if (unlikely(!domain->ops->sva_unbind_gpasid)) > return -ENODEV; > > - return domain->ops->sva_unbind_gpasid(dev, data->hpasid); > + return domain->ops->sva_unbind_gpasid(domain, dev, data->hpasid); > } > EXPORT_SYMBOL_GPL(__iommu_sva_unbind_gpasid); > > diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h > index 0d0ab32..18f292e 100644 > --- a/include/linux/intel-iommu.h > +++ b/include/linux/intel-iommu.h > @@ -738,7 +738,8 @@ extern int intel_svm_enable_prq(struct intel_iommu > *iommu); > extern int intel_svm_finish_prq(struct intel_iommu *iommu); > int intel_svm_bind_gpasid(struct iommu_domain *domain, struct device *dev, > struct iommu_gpasid_bind_data *data); > -int intel_svm_unbind_gpasid(struct device *dev, int pasid); > +int intel_svm_unbind_gpasid(struct iommu_domain *domain, > + struct device *dev, ioasid_t pasid); > struct iommu_sva *intel_svm_bind(struct device *dev, struct mm_struct *mm, >void *drvdata); > void intel_svm_unbind(struct iommu_sva *handle); > diff --git a/include/linux/iommu.h b/include/linux/iommu.h > index e84a1d5..ca5edd8 100644 > --- a/include/linux/iommu.h > +++ b/include/linux/iommu.h > @@ -303,7 +303,8 @@ struct iommu_ops { > int (*sva_bind_gpasid)(struct iommu_domain *domain, > struct device *dev, struct iommu_gpasid_bind_data > *data); > > - int (*sva_unbind_gpasid)(struct device *dev, int pasid); > + int (*sva_unbind_gpasid)(struct iommu_domain *domain, > + struct device *dev, ioasid_t pasid); > > int (*def_domain_type)(struct device *dev); > > Besides Reviewed-by: Eric Auger Eric ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
[GIT PULL] dma-mapping fixes for 5.8
The following changes since commit 0dc589da873b58b70f4caf4b070fb0cf70fdd1dc: Merge tag 'iommu-fixes-v5.8-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu (2020-07-13 12:34:05 -0700) are available in the Git repository at: git://git.infradead.org/users/hch/dma-mapping.git tags/dma-mapping-5.8-6 for you to fetch changes up to d9765e41d8e9ea2251bf73735a2895c8bad546fc: dma-pool: do not allocate pool memory from CMA (2020-07-14 15:46:32 +0200) dma-mapping fixes for 5.8: - ensure we always have fully addressable memory in the dma coherent pool (Nicolas Saenz Julienne) Nicolas Saenz Julienne (5): dma-direct: provide function to check physical memory area validity dma-pool: get rid of dma_in_atomic_pool() dma-pool: introduce dma_guess_pool() dma-pool: make sure atomic pool suits device dma-pool: do not allocate pool memory from CMA include/linux/dma-direct.h | 1 + kernel/dma/direct.c| 2 +- kernel/dma/pool.c | 91 -- 3 files changed, 58 insertions(+), 36 deletions(-) ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu