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: Thu, 10 Sep 2020 10:12:48 -0700 From: Jacob Pan <jacob.jun.pan@...ux.intel.com> To: Auger Eric <eric.auger@...hat.com> Cc: Jacob Pan <jacob.pan.linux@...il.com>, iommu@...ts.linux-foundation.org, LKML <linux-kernel@...r.kernel.org>, Jean-Philippe Brucker <jean-philippe@...aro.com>, Lu Baolu <baolu.lu@...ux.intel.com>, Joerg Roedel <joro@...tes.org>, David Woodhouse <dwmw2@...radead.org>, "Tian, Kevin" <kevin.tian@...el.com>, Raj Ashok <ashok.raj@...el.com>, Wu Hao <hao.wu@...el.com>, jacob.jun.pan@...ux.intel.com Subject: Re: [PATCH v2 9/9] iommu/vt-d: Store guest PASID during bind On Tue, 1 Sep 2020 19:08:44 +0200 Auger Eric <eric.auger@...hat.com> wrote: > Hi Jacob, > On 8/22/20 6:35 AM, Jacob Pan wrote: > > IOASID core maintains the guest-host mapping in the form of SPID and > > IOASID. This patch assigns the guest PASID (if valid) as SPID while > > binding guest page table with a host PASID. This mapping will be > > used for lookup and notifications. > > > > Signed-off-by: Jacob Pan <jacob.jun.pan@...ux.intel.com> > > --- > > drivers/iommu/intel/svm.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c > > index d8a5efa75095..4c958b1aec4c 100644 > > --- a/drivers/iommu/intel/svm.c > > +++ b/drivers/iommu/intel/svm.c > > @@ -406,6 +406,7 @@ int intel_svm_bind_gpasid(struct iommu_domain > > *domain, struct device *dev, if (data->flags & > > IOMMU_SVA_GPASID_VAL) { svm->gpasid = data->gpasid; > > svm->flags |= SVM_FLAG_GUEST_PASID; > > + ioasid_attach_spid(data->hpasid, > > data->gpasid); > don't you want to handle the returned value? Yes, I also need to add a check for duplicated SPID within a set. > > } > > svm->iommu = iommu; > > /* > > @@ -517,6 +518,7 @@ int intel_svm_unbind_gpasid(struct device *dev, > > int pasid) ioasid_attach_data(pasid, NULL); > > ioasid_notify(pasid, IOASID_UNBIND, > > IOASID_NOTIFY_SET); > > + ioasid_attach_spid(pasid, > > INVALID_IOASID); > So this answers my previous question ;-) but won't it enter the if > (!ioasid_data) path and fail to reset the spid? > Sorry, i am not following. If there is no ioasid_data then there is no SPID to be stored. BTW, I plan to separate the APIs into two. ioasid_attach_spid ioasid_detach_spid Only ioasid_detach_spid will be calling synchronize RCU, then ioasid_attach_spid can be called under spinlock. Thanks, > Eric > > kfree(svm); > > } > > } > > > > _______________________________________________ > iommu mailing list > iommu@...ts.linux-foundation.org > https://lists.linuxfoundation.org/mailman/listinfo/iommu [Jacob Pan]
Powered by blists - more mailing lists