All d-cache entries related to memory that a cell will use after reset
or that a destructed cell was using are irrelevant now. Invalidate them
so that nothing leaks from/to other cells or previous sessions of the
same cell.

CC: Marc Zyngier <marc.zyng...@arm.com>
CC: Mark Rutland <mark.rutl...@arm.com>
Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>
---
 hypervisor/arch/arm/control.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/hypervisor/arch/arm/control.c b/hypervisor/arch/arm/control.c
index 4c5b63a..8b34fcf 100644
--- a/hypervisor/arch/arm/control.c
+++ b/hypervisor/arch/arm/control.c
@@ -352,6 +352,8 @@ void arch_cell_destroy(struct cell *cell)
        unsigned int cpu;
        struct per_cpu *percpu;
 
+       arm_cell_dcaches_flush(cell, DCACHE_INVALIDATE);
+
        for_each_cpu(cpu, cell->cpu_set) {
                percpu = per_cpu(cpu);
                /* Re-assign the physical IDs for the root cell */
@@ -366,6 +368,7 @@ void arch_cell_destroy(struct cell *cell)
 
 void arch_cell_reset(struct cell *cell)
 {
+       arm_cell_dcaches_flush(cell, DCACHE_INVALIDATE);
 }
 
 /* Note: only supports synchronous flushing as triggered by config_commit! */
-- 
Siemens AG, Corporate Technology, CT RDA ITP SES-DE
Corporate Competence Center Embedded Linux

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jailhouse-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to