* library, the executable area etc).
  */
 struct vm_area_struct {
-       struct mm_struct * vm_mm;       /* The address space we belong to. */
+       /* The first cache line has the info for VMA tree walking. */
+
        unsigned long vm_start;         /* Our start address within vm_mm. */
        unsigned long vm_end;           /* The first byte after our end address
                                           within vm_mm. */
        /* linked list of VM areas per task, sorted by address */
        struct vm_area_struct *vm_next, *vm_prev;
 
-       pgprot_t vm_page_prot;          /* Access permissions of this VMA. */
-       unsigned long vm_flags;         /* Flags, see mm.h. */
-
        struct rb_node vm_rb;
 
        /*
         */
        unsigned long rb_subtree_gap;
 
+       /* Second cache line starts here. */
+
+       struct mm_struct *vm_mm;        /* The address space we belong to. */
+       pgprot_t vm_page_prot;          /* Access permissions of this VMA. */
+       unsigned long vm_flags;         /* Flags, see mm.h. */
+
        /*
         * For areas with an address space and backing store,
         * linkage into the address_space->i_mmap interval tree, or