vmbase,pvmfw: aarch64: Clean dcache to PoC not PoU Some SoCs (with a unified cache before the PoC) might not flush the data to main memory when performing CMOs to PoU so perform them to PoC. Test: b/434562039#comment35 Bug: 434562039 Bug: 455777515 Flag: EXEMPT CVE_FIX (cherry picked from commit a6f64040dba5a3aae3f67c68e2a754a5c946610d) Cherrypick-From: https://googleplex-android-review.googlesource.com/q/commit:ab5f74693d42e114af5ac238cca0bcb4b17698ac Merged-In: Id2398e9bcf8dcf7f7a10d254d8eb411d39e109db Change-Id: Id2398e9bcf8dcf7f7a10d254d8eb411d39e109db
diff --git a/guest/pvmfw/src/arch/aarch64/payload.rs b/guest/pvmfw/src/arch/aarch64/payload.rs index 77e9a31..8c2242e 100644 --- a/guest/pvmfw/src/arch/aarch64/payload.rs +++ b/guest/pvmfw/src/arch/aarch64/payload.rs
@@ -91,7 +91,7 @@ "b.lo 0b", // Flush d-cache over .data & .bss (including skipped region). - "0: dc cvau, {cache_line}", + "0: dc cvac, {cache_line}", "add {cache_line}, {cache_line}, {dcache_line_size}", "cmp {cache_line}, {scratch_end}", "b.lo 0b", @@ -103,7 +103,7 @@ "b.lo 0b", // Flush d-cache over stack region. - "0: dc cvau, {cache_line}", + "0: dc cvac, {cache_line}", "add {cache_line}, {cache_line}, {dcache_line_size}", "cmp {cache_line}, {stack_end}", "b.lo 0b", @@ -115,7 +115,7 @@ "b.lo 0b", // Flush d-cache over EH stack region. - "0: dc cvau, {cache_line}", + "0: dc cvac, {cache_line}", "add {cache_line}, {cache_line}, {dcache_line_size}", "cmp {cache_line}, {eh_stack_end}", "b.lo 0b",
diff --git a/libs/libvmbase/src/arch.rs b/libs/libvmbase/src/arch.rs index 29d3a32..e25745b 100644 --- a/libs/libvmbase/src/arch.rs +++ b/libs/libvmbase/src/arch.rs
@@ -47,7 +47,7 @@ let end = start + size; let start = crate::util::unchecked_align_down(start, line_size); for line in (start..end).step_by(line_size) { - crate::dc!("cvau", line); + crate::dc!("cvac", line); } } else { compile_error!("Unsupported target_arch")