linux-next: 1ea0704e (ptep_modify_prot transaction abstraction) breaks no-mmu
the functions added to asm-generic/pgtable.h are only used by mm/mprotect.c (a MMU-only file), but they were not added inside of the CONFIG_MMU ifdef block. since the functions rely on things inside of CONFIG_MMU (the lines just above in pgtable.h), we get build failure on all no-mmu setups:
CC init/main.o
In file included from include/asm/pgtable.h:94,
from include/linux/mm.h:39,
from include/asm/dma.h:39,
from include/linux/bootmem.h:8,
from init/main.c:27:include/asm-generic/pgtable.h: In function '__ptep_modify_prot_start':include/asm-generic/pgtable.h:210: error: implicit declaration of function 'ptep_get_and_clear' include/asm-generic/pgtable.h:210: error: incompatible types in return make[1]: *** [init/main.o] Error 1
make: *** [init/main.o] Error 2
-mike
Quoted 11 lines · Mike Frysinger
the functions added to
asm-generic/pgtable.hare only used bymm/mprotect.c(a MMU-only file), but they were not added inside of theCONFIG_MMUifdef block. since the functions rely on things inside ofCONFIG_MMU(the lines just above inpgtable.h), we get build failure on all no-mmu setups:
CCinit/main.o
In file included frominclude/asm/pgtable.h:94,from include/linux/mm.h:39, from include/asm/dma.h:39, from include/linux/bootmem.h:8, from init/main.c:27:
Quoted 8 lines
include/asm-generic/pgtable.h: In function '__ptep_modify_prot_start':include/asm-generic/pgtable.h:210: error: implicit declaration of function 'ptep_get_and_clear'include/asm-generic/pgtable.h:210: error: incompatible types in return make[1]: *** [init/main.o] Error 1
make: *** [init/main.o] Error 2
-mike
Uh, OK. What does mprotect do on a nommu system? Would it be sufficient to move the definitions of __ptep_modify_prot_start/commit out of a CONFIG_MMU block, or provide separate no-op versions?
J
Quoted 21 lines · Jeremy Fitzhardinge
Quoted 11 lines · Mike Frysinger
the functions added to
asm-generic/pgtable.hare only used bymm/mprotect.c(a MMU-only file), but they were not added inside of theCONFIG_MMUifdef block. since the functions rely on things inside ofCONFIG_MMU(the lines just above inpgtable.h), we get build failure on all no-mmu setups:
CCinit/main.o
In file included frominclude/asm/pgtable.h:94,from include/linux/mm.h:39, from include/asm/dma.h:39, from include/linux/bootmem.h:8, from init/main.c:27:Quoted 8 lines
include/asm-generic/pgtable.h: In function '__ptep_modify_prot_start':include/asm-generic/pgtable.h:210: error: implicit declaration of function 'ptep_get_and_clear'include/asm-generic/pgtable.h:210: error: incompatible types in return make[1]: *** [init/main.o] Error 1
make: *** [init/main.o] Error 2
-mike
Quoted 3 lines
Uh, OK. What does mprotect do on a nommu system? Would it be sufficient to move the definitions of __ptep_modify_prot_start/commit out of a
CONFIG_MMUblock, or provide separate no-op versions?
FYI:
The compile error now moved into Linus' tree, and broke at least the blackfin and m68knommu ports.
Quoted 1 line
J
cu
Adrian
Signature · 4 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon SeedQuoted 19 lines · Jeremy Fitzhardinge
Quoted 11 lines · Mike Frysinger
the functions added to
asm-generic/pgtable.hare only used bymm/mprotect.c(a MMU-only file), but they were not added inside of theCONFIG_MMUifdef block. since the functions rely on things inside ofCONFIG_MMU(the lines just above inpgtable.h), we get build failure on all no-mmu setups:
CCinit/main.o
In file included frominclude/asm/pgtable.h:94,from include/linux/mm.h:39, from include/asm/dma.h:39, from include/linux/bootmem.h:8, from init/main.c:27:Quoted 6 lines
include/asm-generic/pgtable.h: In function '__ptep_modify_prot_start':include/asm-generic/pgtable.h:210: error: implicit declaration of function 'ptep_get_and_clear'include/asm-generic/pgtable.h:210: error: incompatible types in return make[1]: *** [init/main.o] Error 1
make: *** [init/main.o] Error 2
Quoted 1 line
Uh, OK. What does mprotect do on a nommu system?
it depends on the port. by default, i'm pretty sure mprotect on all nommu systems are realistically pretty much noops. the Blackfin can do real protection (CONFIG_MPU), but with significant performance degradation (since the page fault handler is not in hardware nor hardware assisted in any way).
Quoted 3 lines
Would it be sufficient to
move the definitions of __ptep_modify_prot_start/commit out of aCONFIG_MMUblock, or provide separate no-op versions?
simply move them into CONFIG_MMU for now
-mike
PATCH 1/1 mm: fix ptep_modify_* for no-MMU systems
Fixes build problem: the functions added to asm-generic/pgtable.h are only used by mm/mprotect.c (a MMU-only file), but they were not added inside of the CONFIG_MMU ifdef block. since the functions rely on things inside of CONFIG_MMU (the lines just above in pgtable.h), we get build failure on all no-mmu setups:
CC init/main.o
In file included from include/asm/pgtable.h:94,
from include/linux/mm.h:39,
from include/asm/dma.h:39,
from include/linux/bootmem.h:8,
from init/main.c:27:include/asm-generic/pgtable.h: In function '__ptep_modify_prot_start':include/asm-generic/pgtable.h:210: error: implicit declaration of function 'ptep_get_and_clear' include/asm-generic/pgtable.h:210: error: incompatible types in return make[1]: *** [init/main.o] Error 1
make: *** [init/main.o] Error 2
---include/asm-generic/pgtable.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
===================================================================
include/asm-generic/pgtable.h +0 -0
@@ -195,7 +195,6 @@
} return 0; }
-#endif /* CONFIG_MMU */
static inline pte_t __ptep_modify_prot_start(struct mm_struct *mm,
unsigned long addr,
@@ -253,6 +252,7 @@
__ptep_modify_prot_commit(mm, addr, ptep, pte); }
#endif /* __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION */ +#endif /* CONFIG_MMU */
/*
* A facility to provide lazy MMU batching. This allows PTE updates and
Re: [PATCH] mm: fix ptep_modify_* for no-MMU systems
Quoted 12 lines · Jeremy Fitzhardinge
Fixes build problem: the functions added to
asm-generic/pgtable.hare only used bymm/mprotect.c(a MMU-only file), but they were not added inside of theCONFIG_MMUifdef block. since the functions rely on things inside ofCONFIG_MMU(the lines just above inpgtable.h), we get build failure on all no-mmu setups:
CCinit/main.o
In file included frominclude/asm/pgtable.h:94,from include/linux/mm.h:39, from include/asm/dma.h:39, from include/linux/bootmem.h:8, from init/main.c:27:
Quoted 7 lines
include/asm-generic/pgtable.h: In function '__ptep_modify_prot_start':include/asm-generic/pgtable.h:210: error: implicit declaration of function 'ptep_get_and_clear'include/asm-generic/pgtable.h:210: error: incompatible types in return make[1]: *** [init/main.o] Error 1
make: *** [init/main.o] Error 2
...
Thanks, seems to work fine.
cu
Adrian
Signature · 4 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed