Re: [Xen-devel] [PATCH v12 5/6] IOMMU: move the domain crash logic up to the generic IOMMU layer
>>> On 26.06.16 at 10:58, wrote: > On June 24, 2016 7:48 PM, Tian, Kevin wrote: >> > From: Xu, Quan >> > Sent: Friday, June 24, 2016 1:52 PM >> > >> > From: Quan Xu >> > >> > Signed-off-by: Quan Xu >> > >> > CC: Julien Grall >> > CC: Kevin Tian >> > CC: Feng Wu >> > CC: Jan Beulich >> > CC: Suravee Suthikulpanit >> > --- >> > xen/drivers/passthrough/iommu.c | 30 >> > -- >> > xen/drivers/passthrough/vtd/iommu.c | 11 +++ >> > 2 files changed, 39 insertions(+), 2 deletions(-) >> >> when you say "moving the logic up", I don't see any lines being deleted. >> Looks >> you are just "adding the domain crash logic"? > > Yes, it is 'adding'.. But why don't you do here what the title says? Jan ___ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Re: [Xen-devel] [PATCH v12 5/6] IOMMU: move the domain crash logic up to the generic IOMMU layer
On June 24, 2016 7:48 PM, Tian, Kevin wrote: > > From: Xu, Quan > > Sent: Friday, June 24, 2016 1:52 PM > > > > From: Quan Xu > > > > Signed-off-by: Quan Xu > > > > CC: Julien Grall > > CC: Kevin Tian > > CC: Feng Wu > > CC: Jan Beulich > > CC: Suravee Suthikulpanit > > --- > > xen/drivers/passthrough/iommu.c | 30 > > -- > > xen/drivers/passthrough/vtd/iommu.c | 11 +++ > > 2 files changed, 39 insertions(+), 2 deletions(-) > > when you say "moving the logic up", I don't see any lines being deleted. Looks > you are just "adding the domain crash logic"? Yes, it is 'adding'.. Quan ___ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Re: [Xen-devel] [PATCH v12 5/6] IOMMU: move the domain crash logic up to the generic IOMMU layer
> From: Xu, Quan > Sent: Friday, June 24, 2016 1:52 PM > > From: Quan Xu > > Signed-off-by: Quan Xu > > CC: Julien Grall > CC: Kevin Tian > CC: Feng Wu > CC: Jan Beulich > CC: Suravee Suthikulpanit > --- > xen/drivers/passthrough/iommu.c | 30 > -- > xen/drivers/passthrough/vtd/iommu.c | 11 +++ > 2 files changed, 39 insertions(+), 2 deletions(-) when you say "moving the logic up", I don't see any lines being deleted. Looks you are just "adding the domain crash logic"? ___ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
[Xen-devel] [PATCH v12 5/6] IOMMU: move the domain crash logic up to the generic IOMMU layer
From: Quan Xu Signed-off-by: Quan Xu CC: Julien Grall CC: Kevin Tian CC: Feng Wu CC: Jan Beulich CC: Suravee Suthikulpanit --- xen/drivers/passthrough/iommu.c | 30 -- xen/drivers/passthrough/vtd/iommu.c | 11 +++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/xen/drivers/passthrough/iommu.c b/xen/drivers/passthrough/iommu.c index 7656aeb..d793f5d 100644 --- a/xen/drivers/passthrough/iommu.c +++ b/xen/drivers/passthrough/iommu.c @@ -318,21 +318,47 @@ int iommu_iotlb_flush(struct domain *d, unsigned long gfn, unsigned int page_count) { const struct domain_iommu *hd = dom_iommu(d); +int rc; if ( !iommu_enabled || !hd->platform_ops || !hd->platform_ops->iotlb_flush ) return 0; -return hd->platform_ops->iotlb_flush(d, gfn, page_count); +rc = hd->platform_ops->iotlb_flush(d, gfn, page_count); +if ( unlikely(rc) ) +{ +if ( !d->is_shutting_down && printk_ratelimit() ) +printk(XENLOG_ERR + "d%d: IOMMU IOTLB flush failed: %d, gfn %#lx, page count %u\n", + d->domain_id, rc, gfn, page_count); + +if ( !is_hardware_domain(d) ) +domain_crash(d); +} + +return rc; } int iommu_iotlb_flush_all(struct domain *d) { const struct domain_iommu *hd = dom_iommu(d); +int rc; if ( !iommu_enabled || !hd->platform_ops || !hd->platform_ops->iotlb_flush_all ) return 0; -return hd->platform_ops->iotlb_flush_all(d); +rc = hd->platform_ops->iotlb_flush_all(d); +if ( unlikely(rc) ) +{ +if ( !d->is_shutting_down && printk_ratelimit() ) +printk(XENLOG_ERR + "d%d: IOMMU IOTLB flush all failed: %d\n", + d->domain_id, rc); + +if ( !is_hardware_domain(d) ) +domain_crash(d); +} + +return rc; } int __init iommu_setup(void) diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c index 1b0a0f0..82332c8 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -1847,6 +1847,17 @@ int iommu_pte_flush(struct domain *d, u64 gfn, u64 *pte, } } +if ( unlikely(rc) ) +{ +if ( !d->is_shutting_down && printk_ratelimit() ) +printk(XENLOG_ERR VTDPREFIX + " d%d: IOMMU pages flush failed: %d\n", + d->domain_id, rc); + +if ( !is_hardware_domain(d) ) +domain_crash(d); +} + return rc; } -- 1.9.1 ___ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel