From: Lennert B. <bu...@gn...> - 2001-03-04 20:12:52
Attachments:
stackoverflow.gz
|
Hi, [subj] happened a few mins ago on a vanilla 2.4.2 with umlnetfast patch and the IRQ patch I posted before. I got debugging working again (!!), so I've included a backtrace. cheers, Lennert |
From: Jeff D. <jd...@ka...> - 2001-03-04 22:28:20
|
bu...@gn... said: > [subj] happened a few mins ago on a vanilla 2.4.2 with umlnetfast > patch and the IRQ patch I posted before. I got debugging working again > (!!), so I've included a backtrace. I know about this one. I have a fix for it which inexplicably doesn't work :-( If you (or anyone else for that matter) wants to take a whack at it, take a look at the #ifdef-ed out section of fix_range in arch/um/kernel/tlb.c and make it work. The basic problem is that UML keeps a shadow set of page tables which reflect the process maps in the host. This is compared to the current->mm->pgd page tables at context switch time to see what maps need to be changed. The problem with that is that pages need to be allocated for the page tables occasionally. If the context switch happened because the system was short of memory, and the shadow page tables need another page, it will context switch there, too. And it will try the same context switch because the first one never finished. So, that switch will recurse until it runs out of stack. The fix is to use some unused bits in the pte to mark ptes out of date. The bits are there in include/asm-um/pgtable.h along with the macros to use them. The problem is that when I turn everything on, I get strange segfaults on the vmalloc area. I haven't figured it out, so I've left the support latent for now. Jeff |
From: Lennert B. <bu...@gn...> - 2001-03-12 19:07:57
|
Hi, This is what I get when I naively try to compile it in: gcc -Wl,-T,/data/uml/linux-2.4.2-uml/arch/um/link.ld -o linux -static \ /data/uml/linux-2.4.2-uml/arch/um/main.o vmlinux.o -L/usr/lib vmlinux.o: In function `fix_range': /data/uml/linux-2.4.2-uml/arch/um/kernel/tlb.c:62: undefined reference to `pte_newpage' /data/uml/linux-2.4.2-uml/arch/um/kernel/tlb.c:69: undefined reference to `pte_newprot' collect2: ld returned 1 exit status make: *** [linux] Error 1 [buytenh@brutus linux-2.4.2-uml]$ I can't find references to these functions anywhere else.. ideas? cheers, Lennert On Sun, Mar 04, 2001 at 06:41:10PM -0500, Jeff Dike wrote: > > [subj] happened a few mins ago on a vanilla 2.4.2 with umlnetfast > > patch and the IRQ patch I posted before. I got debugging working again > > (!!), so I've included a backtrace. > > I know about this one. > > I have a fix for it which inexplicably doesn't work :-( > > If you (or anyone else for that matter) wants to take a whack at it, take a > look at the #ifdef-ed out section of fix_range in arch/um/kernel/tlb.c and > make it work. > > The basic problem is that UML keeps a shadow set of page tables which reflect > the process maps in the host. This is compared to the current->mm->pgd page > tables at context switch time to see what maps need to be changed. The > problem with that is that pages need to be allocated for the page tables > occasionally. > > If the context switch happened because the system was short of memory, and the > shadow page tables need another page, it will context switch there, too. And > it will try the same context switch because the first one never finished. So, > that switch will recurse until it runs out of stack. > > The fix is to use some unused bits in the pte to mark ptes out of date. The > bits are there in include/asm-um/pgtable.h along with the macros to use them. > > The problem is that when I turn everything on, I get strange segfaults on the > vmalloc area. > > I haven't figured it out, so I've left the support latent for now. > > Jeff > > > > _______________________________________________ > User-mode-linux-devel mailing list > Use...@li... > http://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel |
From: Jeff D. <jd...@ka...> - 2001-03-12 19:35:52
|
bu...@gn... said: > /data/uml/linux-2.4.2-uml/arch/um/kernel/tlb.c:62: undefined reference to `pte_newpage' > /data/uml/linux-2.4.2-uml/arch/um/kernel/tlb.c:69: undefined reference to `pte_newprot' Those should have been there. Anyway, they are just like pte_read and friends, except they test _PAGE_NEWPAGE and _PAGE_NEWPROT, respectively. Also, remove the commented line of code from set_pte in arch/asm/pgtable.h. Jeff |
From: Lennert B. <bu...@gn...> - 2001-03-15 19:05:41
|
On Mon, Mar 12, 2001 at 03:49:27PM -0500, Jeff Dike wrote: > > /data/uml/linux-2.4.2-uml/arch/um/kernel/tlb.c:62: undefined reference to `pte_newpage' > > /data/uml/linux-2.4.2-uml/arch/um/kernel/tlb.c:69: undefined reference to `pte_newprot' > > Those should have been there. Anyway, they are just like pte_read and > friends, except they test _PAGE_NEWPAGE and _PAGE_NEWPROT, respectively. Ok. > Also, remove the commented line of code from set_pte in arch/asm/pgtable.h. Remove the comment you mean? What I have now is http://www.math.leidenuniv.nl/~buytenh/uml/pte-1.diff. It gives me this most interesting error message on boot: "Protecting a page: Bad address", and then "Kernel panic: protect failed". I have a feeling I'm doing something wrong :) This is all way past me anyway, so I'm just giving up on this. cheers, Lennert |