[CRIU] ppc64le soft dirty tracking on 4.14

Andrei Vagin avagin at virtuozzo.com
Wed Oct 4 02:01:37 MSK 2017


On Mon, Sep 25, 2017 at 06:08:26PM +0200, Adrian Reber wrote:
> Hello Laurent,
> 
> I had a closer look and soft dirty tracking works correctly. I was just
> confused by the page size. The file was 65536 and not the expected
> 4096.
> 
> CRIU still cannot detect if CONFIG_MEM_SOFT_DIRTY is enabled or not.
> The check always returns true and the criu pre-dump command is always
> successful. In the case where CONFIG_MEM_SOFT_DIRTY=n CRIU still does
> pre-dumps but it seems to always dump the complete memory.

I think it is a bug in a kernel and it can be fixed by a patch like
this:


--- a/arch/powerpc/include/asm/book3s/64/pgtable.h
+++ b/arch/powerpc/include/asm/book3s/64/pgtable.h
@@ -78,7 +78,12 @@
  */
 #define _PAGE_PA_MAX           53
 
+#ifdef CONFIG_MEM_SOFT_DIRTY
 #define _PAGE_SOFT_DIRTY       _RPAGE_SW3 /* software: software dirty tracking */
+#elif
+#define _PAGE_SOFT_DIRTY       0
+#endif
+
 #define _PAGE_SPECIAL          _RPAGE_SW2 /* software: special page */
 #define _PAGE_DEVMAP           _RPAGE_SW1 /* software: ZONE_DEVICE page */
 #define __HAVE_ARCH_PTE_DEVMAP

I haven't try to test it, just got an idea from arch/x86/include/asm/pgtable_types.h.

Without this patch, the kernel has some logic about _PAGE_SOFT_DIRTY,
even when CONFIG_MEM_SOFT_DIRTY isn't set.


> 
> 'criu/criu check --feature mem_dirty_track' is always successful.
> 
> Disabling CONFIG_PPC_RADIX_MMU makes also no difference to me.
> 
> So it seems the check for CONFIG_MEM_SOFT_DIRTY in CRIU on ppc64le is
> broken. The kernel does that right thing.
> 
> 		Adrian
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu


More information about the CRIU mailing list