Messages in this thread | | | Date | Wed, 04 Aug 1999 16:53:25 -0400 | From | Peter Rival <> | Subject | Re: 2.3.13-pre4 tweeks |
| |
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> Richard Henderson wrote: <blockquote TYPE=CITE>On Wed, Aug 04, 1999 at 08:04:23AM -0400, Peter Rival wrote:</blockquote> <snip> <blockquote TYPE=CITE>> smp.c:48: section attribute not allowed for `bits' <p>... I didn't build an smp kernel. Doh! Yes, I use __cacheline_aligned <br>on a structure element, which means the section attribute needs to <br>come off the definition.</blockquote>
<p><br>Okay...easy enough. Now the next fun part: (don't worry - it gets better ;) <p><tt>make -C arch/alpha/kernel</tt> <br><tt>make[1]: Entering directory `/usr/src/linux/arch/alpha/kernel'</tt> <br><tt>gcc -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -D__SMP__ -pipe -mno-fp-regs -ffixed-8 -c -o smp.o smp.c</tt> <br><tt>smp.c: In function `flush_tlb_mm':</tt> <br><tt>smp.c:874: structure has no member named `count'</tt> <br><tt>smp.c: In function `flush_tlb_page':</tt> <br><tt>smp.c:906: structure has no member named `count'</tt> <br><tt>make[1]: *** [smp.o] Error 1</tt> <br><tt>make[1]: Leaving directory `/usr/src/linux/arch/alpha/kernel'</tt> <br><tt>make: *** [_dir_arch/alpha/kernel] Error 2</tt> <p>Which is caused by code such as this:<tt></tt> <p><tt>void</tt> <br><tt>flush_tlb_mm(struct mm_struct *mm)</tt> <br><tt>{</tt> <br><tt> if (mm == current->mm) {</tt> <br><tt> flush_tlb_current(mm);</tt> <br><tt> if (atomic_read(&mm->mm_count) == 1)</tt> <br><tt> return;</tt> <br><tt> } else</tt> <br><tt> flush_tlb_other(mm);</tt><tt></tt> <p><tt> if (smp_call_function(ipi_flush_tlb_mm, mm, 1, 1)) {</tt> <br><tt> printk(KERN_CRIT "flush_tlb_mm: timed out\n");</tt> <br><tt> }</tt> <br><tt>}</tt> <br><tt></tt> <p>Looks like it hasn't been updated for the new <tt>struct mm_struct</tt> implementation yet. I _think_ it's supposed to look something like this, but I'm not sure: <p><tt>void</tt> <br><tt>flush_tlb_mm(struct mm_struct *mm)</tt> <br><tt>{</tt> <br><tt> if (mm == current->active_mm &&</tt> <br><tt> atomic_read(&mm->mm_users) == 1 &&</tt> <br><tt> (mm->cpu_vm_mask == (1UL << smp_processor_id())))</tt> <br><tt> goto local_flush_tlb;</tt><tt></tt> <p><tt> if (smp_call_function(ipi_flush_tlb_mm, mm, 1, 1)) {</tt> <br><tt> printk(KERN_CRIT "flush_tlb_mm: timed out\n");</tt> <br><tt> }</tt><tt></tt> <p><tt>local_flush_tlb:</tt> <br><tt> flush_tlb_other(mm);</tt> <br><tt>}</tt> <p>(This was mostly stolen from the sparc64 version...I'm still digesting Linus' message about how this new task schtuff works...I hate not being able to work on Linux full time...*groan*) <p>I'd imagine the code is mostly the same type of transition for <tt>flush_tlb_page</tt>, but I'm not positive. <p> - Pete <p>P.S. Should I mention that a mikasa (at least) wedges after the "freeing initial memory" message under pre-4 plus this diff, or just keep that to myself? ;)</html>
| |