lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 29 Apr 2019 11:00:51 +0100 From: Jean-Philippe Brucker <jean-philippe.brucker@....com> To: Auger Eric <eric.auger@...hat.com>, Jacob Pan <jacob.jun.pan@...ux.intel.com> Cc: "iommu@...ts.linux-foundation.org" <iommu@...ts.linux-foundation.org>, LKML <linux-kernel@...r.kernel.org>, Joerg Roedel <joro@...tes.org>, David Woodhouse <dwmw2@...radead.org>, Alex Williamson <alex.williamson@...hat.com>, Yi Liu <yi.l.liu@...el.com>, "Tian, Kevin" <kevin.tian@...el.com>, Raj Ashok <ashok.raj@...el.com>, Christoph Hellwig <hch@...radead.org>, Lu Baolu <baolu.lu@...ux.intel.com>, Andriy Shevchenko <andriy.shevchenko@...ux.intel.com> Subject: Re: [PATCH v2 11/19] iommu/vt-d: Replace Intel specific PASID allocator with IOASID On 27/04/2019 09:38, Auger Eric wrote: >>>> --- a/drivers/iommu/intel-iommu.c >>>> +++ b/drivers/iommu/intel-iommu.c >>>> @@ -5153,7 +5153,7 @@ static void auxiliary_unlink_device(struct >>>> dmar_domain *domain, domain->auxd_refcnt--; >>>> >>>> if (!domain->auxd_refcnt && domain->default_pasid > 0) >>>> - intel_pasid_free_id(domain->default_pasid); >>>> + ioasid_free(domain->default_pasid); >>>> } >>>> >>>> static int aux_domain_add_dev(struct dmar_domain *domain, >>>> @@ -5171,9 +5171,8 @@ static int aux_domain_add_dev(struct >>>> dmar_domain *domain, if (domain->default_pasid <= 0) { >>>> int pasid; >>>> >>>> - pasid = intel_pasid_alloc_id(domain, PASID_MIN, >>>> - >>>> pci_max_pasids(to_pci_dev(dev)), >>>> - GFP_KERNEL); >>>> + pasid = ioasid_alloc(NULL, PASID_MIN, >>>> pci_max_pasids(to_pci_dev(dev)) - 1, >>>> + domain); >>>> if (pasid <= 0) { >>> ioasid_t is a uint and returns INVALID_IOASID on error. Wouldn't it be >>> simpler to make ioasid_alloc return an int? >> Well, I think we still want the full uint range - 1(INVALID_IOASID). >> Intel uses 20bit but I think SMMUs use 32 bits for streamID? I >> should just check >> if (pasid == INVALID_IOASID) { > Jean-Philippe may correct me but SMMU uses 20b SubstreamId which is a > superset of PASIDs. StreamId is 32b. Right, we use 20 bits for PASIDs (== SubstreamID really). Given the choices that vendors are making for PASIDs (a global namespace rather than per-VM), I wouldn't be surprised if they extend the size of PASIDs in a couple of years, so I added the typedef ioasid_t to ease a possible change from 32-bit to 64 in the future. Thanks, Jean
Powered by blists - more mailing lists