250cf776f7
The current enable_sie code sets the mm->context.pgstes bit to tell dup_mm that the new mm should have extended page tables. This bit is also used by the s390 specific page table primitives to decide about the page table layout - which means context.pgstes has two meanings. This can cause any kind of bugs. For example - e.g. shrink_zone can call ptep_clear_flush_young while enable_sie is running. ptep_clear_flush_young will test for context.pgstes. Since enable_sie changed that value of the old struct mm without changing the page table layout ptep_clear_flush_young will do the wrong thing. The solution is to split pgstes into two bits - one for the allocation - one for the current state Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
15 lines
336 B
C
15 lines
336 B
C
#ifndef __MMU_H
|
|
#define __MMU_H
|
|
|
|
typedef struct {
|
|
struct list_head crst_list;
|
|
struct list_head pgtable_list;
|
|
unsigned long asce_bits;
|
|
unsigned long asce_limit;
|
|
int noexec;
|
|
int has_pgste; /* The mmu context has extended page tables */
|
|
int alloc_pgste; /* cloned contexts will have extended page tables */
|
|
} mm_context_t;
|
|
|
|
#endif
|