summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_hibernate.c
diff options
context:
space:
mode:
authormlarkin <mlarkin@openbsd.org>2013-10-20 09:44:17 +0000
committermlarkin <mlarkin@openbsd.org>2013-10-20 09:44:17 +0000
commitbb6f96804b1b920fbf98c38c85b0c1398e33e403 (patch)
tree621504f64feb6f201dcf2641b69a761ce1b4fb96 /sys/kern/subr_hibernate.c
parentSMEP (on Ivy Bridge and later CPUs) require page protections that include (diff)
downloadwireguard-openbsd-bb6f96804b1b920fbf98c38c85b0c1398e33e403.tar.xz
wireguard-openbsd-bb6f96804b1b920fbf98c38c85b0c1398e33e403.zip
Flush the cache after bouncing the inflate page to the piglet.
Fixes resume time stream corruption seen on x230 with large (16GB) unhibernation
Diffstat (limited to 'sys/kern/subr_hibernate.c')
-rw-r--r--sys/kern/subr_hibernate.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/kern/subr_hibernate.c b/sys/kern/subr_hibernate.c
index 03eb09e1884..a2c8d03ebc6 100644
--- a/sys/kern/subr_hibernate.c
+++ b/sys/kern/subr_hibernate.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: subr_hibernate.c,v 1.62 2013/10/20 09:27:39 mlarkin Exp $ */
+/* $OpenBSD: subr_hibernate.c,v 1.63 2013/10/20 09:44:17 mlarkin Exp $ */
/*
* Copyright (c) 2011 Ariane van der Steldt <ariane@stack.nl>
@@ -1316,6 +1316,7 @@ hibernate_copy_chunk_to_piglet(paddr_t img_cur, vaddr_t piglet, size_t size)
src += ct;
dest += ct;
}
+ wbinvd();
/* Copy remaining pages */
while (src < size + img_cur) {
@@ -1327,6 +1328,9 @@ hibernate_copy_chunk_to_piglet(paddr_t img_cur, vaddr_t piglet, size_t size)
src += ct;
dest += ct;
}
+
+ hibernate_flush();
+ wbinvd();
}
/*