[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v5 12/12] xen/arm: Suspend/resume IOMMU on Xen suspend/resume
From: Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx> This is done using generic iommu_suspend/resume functions that cause IOMMU driver specific suspend/resume handlers to be called for enabled IOMMU (if one has suspend/resume driver handlers implemented). These handlers work only when IPMMU-VMSA is used; otherwise, we return an error during system suspend requests. Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx> Signed-off-by: Mykola Kvach <mykola_kvach@xxxxxxxx> Tested-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@xxxxxxxx> --- xen/arch/arm/suspend.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/xen/arch/arm/suspend.c b/xen/arch/arm/suspend.c index b5398e5ca6..cb86426ebd 100644 --- a/xen/arch/arm/suspend.c +++ b/xen/arch/arm/suspend.c @@ -4,6 +4,7 @@ #include <asm/suspend.h> #include <xen/console.h> #include <xen/cpu.h> +#include <xen/iommu.h> #include <xen/llc-coloring.h> #include <xen/sched.h> @@ -49,6 +50,13 @@ static long system_suspend(void *data) time_suspend(); + status = iommu_suspend(); + if ( status ) + { + system_state = SYS_STATE_resume; + goto resume_time; + } + local_irq_save(flags); status = gic_suspend(); if ( status ) @@ -105,6 +113,10 @@ static long system_suspend(void *data) resume_irqs: local_irq_restore(flags); + + iommu_resume(); + + resume_time: time_resume(); resume_nonboot_cpus: @@ -140,6 +152,15 @@ int host_system_suspend(void) return -ENOSYS; } + /* TODO: drop check once suspend/resume support for SMMU is implemented */ +#ifndef CONFIG_IPMMU_VMSA + if ( iommu_enabled ) + { + dprintk(XENLOG_ERR, "IOMMU is enabled, suspend not supported yet\n"); + return -ENOSYS; + } +#endif + /* * system_suspend should be called when Dom0 finalizes the suspend * procedure from its boot core (VCPU#0). However, Dom0's VCPU#0 could -- 2.48.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |