* 2.6.0-test11-wli-1 @ 2003-12-04 20:01 William Lee Irwin III 2003-12-04 21:01 ` 2.6.0-test11-wli-1 William Lee Irwin III ` (4 more replies) 0 siblings, 5 replies; 13+ messages in thread From: William Lee Irwin III @ 2003-12-04 20:01 UTC (permalink / raw) To: linux-kernel Successfully tested on a Thinkpad T21. Any feedback regarding performance would be very helpful. Desktop users should notice top(1) is faster, kernel hackers that kernel compiles are faster, and highmem users should see much less per-process lowmem overhead. This release is vastly cleaned up compared to the test8 release, and features the wchan and major/minor fault accounting fixes. I still need to fold the anobjrmap fixes into the original patches and find some alternative way for smbfs and ncpfs to do whatever d_validate() was doing for them. I also need to find a coherent way to incorporate the cleanups for pte caching suggested by akpm without bloating the pte cache on lowmem boxen (but nothing radical like 4/4 or pgcl). It's also worth noting that the patches "originally due" to someone were just plucked off of the list by me (in some cases, they just first implemented of the idea), so be sure to ascribe all the credit to them, and all the bugs to me. I wasn't sure of a complete (or even partial) list of those to credit for top-down vma allocation, hence "various", though it was jejb who described the glibc workaround. Available from: ftp://ftp.kernel.org/pub/linux/kernel/people/wli/kernels/2.6.0-test11/ -- wli 1: highpmd -- originally due to aa as part of pte-highmem -- from scratch implementation based on 2.6 highpte 2: O(1) buffered_rmqueue() 3: i386 pte caching 4: O(lg(n)) proc_pid_readdir()/proc_task_readdir() 5: O(1) proc_pid_statm() -- originally due to bcrl 6: kmap_atomic() microoptimizations 7: compile-time mapping->page_lock type selection 8: 4KB i386 stacks -- originally due to bcrl 9: objrmap -- originally due to dmc/mbligh 10: RCU mapping->i_shared_lock 11: anobjrmap, phase 1 -- originally due to hugh 12: anobjrmap, phase 2 -- originally due to hugh 13: anobjrmap, phase 3 -- originally due to hugh 14: anobjrmap, phase 4 -- originally due to hugh 15: anobjrmap, phase 5 -- originally due to hugh 16: RCU anon->lock 17: convert copy_strings() to use kmap_atomic() instead of kmap() 18: increase page allocator batch counts 19: node-local i386 per_cpu areas 20: CONFIG_MMAP_TOPDOWN, top-down vma allocation -- various prior implementations 21: anobjrmap fixes 22: increase static vfs hashtable and VM array sizes 23: intermezzo 4KB stack fixes -- due to muli 24: /proc/ BKL gunk plus page wait hashtable sizing adjustment 25: invalidate_inodes() speedup -- originally due to Kirill Korotaev 26: fix the anobjrmap fix and adjust page_alloc.c inlining 27: remove ->valid_addr_bitmap, kern_addr_valid(), and d_validate() 28: fix wchan accounting 29: fix major/minor fault accounting 30: remove mm->swap_address ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.6.0-test11-wli-1 2003-12-04 20:01 2.6.0-test11-wli-1 William Lee Irwin III @ 2003-12-04 21:01 ` William Lee Irwin III 2003-12-04 22:58 ` 2.6.0-test11-wli-1 Muli Ben-Yehuda ` (3 subsequent siblings) 4 siblings, 0 replies; 13+ messages in thread From: William Lee Irwin III @ 2003-12-04 21:01 UTC (permalink / raw) To: linux-kernel On Thu, Dec 04, 2003 at 12:01:20PM -0800, William Lee Irwin III wrote: > was doing for them. I also need to find a coherent way to incorporate > the cleanups for pte caching suggested by akpm without bloating the > pte cache on lowmem boxen Maybe the pte caching cleanups should go something like this: diff -prauN wli-2.6.0-test11-30/arch/i386/mm/pgtable.c wli-2.6.0-test11-31/arch/i386/mm/pgtable.c --- wli-2.6.0-test11-30/arch/i386/mm/pgtable.c 2003-12-04 07:36:00.000000000 -0800 +++ wli-2.6.0-test11-31/arch/i386/mm/pgtable.c 2003-12-04 12:57:16.000000000 -0800 @@ -1,5 +1,6 @@ /* * linux/arch/i386/mm/pgtable.c + * highpte-compatible pte caching, William Irwin, IBM, June 2003 */ #include <linux/config.h> @@ -13,6 +14,7 @@ #include <linux/slab.h> #include <linux/pagemap.h> #include <linux/spinlock.h> +#include <linux/init.h> #include <asm/system.h> #include <asm/pgtable.h> @@ -176,7 +178,7 @@ static inline struct page *pte_alloc_rea unsigned long flags; struct page *page = NULL; - smp_local_irq_save(flags); + local_irq_save(flags); if (tlb->nr_pte_ready) { int z; for (z = MAX_ZONE_ID - 1; z >= 0; --z) { @@ -193,7 +195,7 @@ static inline struct page *pte_alloc_rea tlb->ready_count[z]--; tlb->nr_pte_ready--; } - smp_local_irq_restore(flags); + local_irq_restore(flags); put_cpu(); return page; } @@ -305,7 +307,7 @@ static void shrink_cpu_pagetable_cache(v high = !!(gfp_mask & __GFP_HIGHMEM); cpu = get_cpu(); tlb = &per_cpu(mmu_gathers, cpu); - smp_local_irq_save(flags); + local_irq_save(flags); if (tlb->nr_pte_active || tlb->nr_nonpte) tlb_flush(tlb); @@ -342,11 +344,11 @@ static void shrink_cpu_pagetable_cache(v free_pages_bulk(zone_table[zone], head, 0); } - smp_local_irq_restore(flags); + local_irq_restore(flags); put_cpu(); } -void shrink_pagetable_cache(int gfp_mask) +static int shrink_pagetable_cache(int nr_to_scan, unsigned int gfp_mask) { BUG_ON(irqs_disabled()); @@ -357,8 +359,17 @@ void shrink_pagetable_cache(int gfp_mask smp_call_function(shrink_cpu_pagetable_cache, (void *)gfp_mask, 1, 1); preempt_enable(); + return 1; } +static __init int init_pagetable_cache_shrinker(void) +{ + set_shrinker(1, shrink_pagetable_cache); + return 0; +} + +__initcall(init_pagetable_cache_shrinker); + #define GLIBC_BUFFER (32*1024*1024) /* diff -prauN wli-2.6.0-test11-30/fs/dcache.c wli-2.6.0-test11-31/fs/dcache.c --- wli-2.6.0-test11-30/fs/dcache.c 2003-12-04 08:30:37.000000000 -0800 +++ wli-2.6.0-test11-31/fs/dcache.c 2003-12-04 12:39:07.000000000 -0800 @@ -657,6 +657,9 @@ static int shrink_dcache_memory(int nr, int nr_unused; const int unused_ratio = 1; + if (gfp_mask & __GFP_HIGHMEM) + return 0; + if (nr) { /* * Nasty deadlock avoidance. diff -prauN wli-2.6.0-test11-30/fs/dquot.c wli-2.6.0-test11-31/fs/dquot.c --- wli-2.6.0-test11-30/fs/dquot.c 2003-11-26 12:44:45.000000000 -0800 +++ wli-2.6.0-test11-31/fs/dquot.c 2003-12-04 12:39:42.000000000 -0800 @@ -386,6 +386,9 @@ static int shrink_dqcache_memory(int nr, { int ret; + if (gfp_mask & __GFP_HIGHMEM) + return 0; + spin_lock(&dq_list_lock); if (nr) prune_dqcache(nr); diff -prauN wli-2.6.0-test11-30/fs/inode.c wli-2.6.0-test11-31/fs/inode.c --- wli-2.6.0-test11-30/fs/inode.c 2003-12-04 08:20:27.000000000 -0800 +++ wli-2.6.0-test11-31/fs/inode.c 2003-12-04 12:41:30.000000000 -0800 @@ -467,6 +467,9 @@ static void prune_icache(int nr_to_scan) */ static int shrink_icache_memory(int nr, unsigned int gfp_mask) { + if (gfp_mask & __GFP_HIGHMEM) + return 0; + if (nr) { /* * Nasty deadlock avoidance. We may hold various FS locks, diff -prauN wli-2.6.0-test11-30/fs/mbcache.c wli-2.6.0-test11-31/fs/mbcache.c --- wli-2.6.0-test11-30/fs/mbcache.c 2003-11-26 12:45:49.000000000 -0800 +++ wli-2.6.0-test11-31/fs/mbcache.c 2003-12-04 12:40:57.000000000 -0800 @@ -176,6 +176,9 @@ mb_cache_shrink_fn(int nr_to_scan, unsig struct list_head *l, *ltmp; int count = 0; + if (gfp_mask & __GFP_HIGHMEM) + return 0; + spin_lock(&mb_cache_spinlock); list_for_each(l, &mb_cache_list) { struct mb_cache *cache = diff -prauN wli-2.6.0-test11-30/fs/xfs/quota/xfs_qm.c wli-2.6.0-test11-31/fs/xfs/quota/xfs_qm.c --- wli-2.6.0-test11-30/fs/xfs/quota/xfs_qm.c 2003-11-26 12:42:54.000000000 -0800 +++ wli-2.6.0-test11-31/fs/xfs/quota/xfs_qm.c 2003-12-04 12:38:37.000000000 -0800 @@ -2206,6 +2206,8 @@ xfs_qm_shake(int nr_to_scan, unsigned in { int ndqused, nfree, n; + if (gfp_mask & __GFP_HIGHMEM) + return 0; if (!(gfp_mask & __GFP_WAIT)) return 0; if (!xfs_Gqm) diff -prauN wli-2.6.0-test11-30/include/asm-i386/pgtable.h wli-2.6.0-test11-31/include/asm-i386/pgtable.h --- wli-2.6.0-test11-30/include/asm-i386/pgtable.h 2003-12-04 08:30:37.000000000 -0800 +++ wli-2.6.0-test11-31/include/asm-i386/pgtable.h 2003-12-04 12:52:58.000000000 -0800 @@ -45,9 +45,6 @@ void pgd_dtor(void *, kmem_cache_t *, un void pgtable_cache_init(void); void paging_init(void); -#define HAVE_ARCH_PAGETABLE_CACHE -void shrink_pagetable_cache(int gfp_mask); - #endif /* !__ASSEMBLY__ */ /* diff -prauN wli-2.6.0-test11-30/include/asm-i386/system.h wli-2.6.0-test11-31/include/asm-i386/system.h --- wli-2.6.0-test11-30/include/asm-i386/system.h 2003-12-03 18:30:38.000000000 -0800 +++ wli-2.6.0-test11-31/include/asm-i386/system.h 2003-12-04 12:50:45.000000000 -0800 @@ -461,18 +461,6 @@ struct alt_instr { /* For spinlocks etc */ #define local_irq_save(x) __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (x): /* no input */ :"memory") -#ifdef CONFIG_SMP -#define smp_local_irq_save(x) local_irq_save(x) -#define smp_local_irq_restore(x) local_irq_restore(x) -#define smp_local_irq_disable() local_irq_disable() -#define smp_local_irq_enable() local_irq_enable() -#else -#define smp_local_irq_save(x) do { (void)(x); } while (0) -#define smp_local_irq_restore(x) do { (void)(x); } while (0) -#define smp_local_irq_disable() do { } while (0) -#define smp_local_irq_enable() do { } while (0) -#endif /* CONFIG_SMP */ - /* * disable hlt during certain critical i/o operations */ diff -prauN wli-2.6.0-test11-30/include/asm-i386/tlb.h wli-2.6.0-test11-31/include/asm-i386/tlb.h --- wli-2.6.0-test11-30/include/asm-i386/tlb.h 2003-12-03 18:30:38.000000000 -0800 +++ wli-2.6.0-test11-31/include/asm-i386/tlb.h 2003-12-04 12:50:45.000000000 -0800 @@ -115,7 +115,7 @@ void tlb_flush_mmu(struct mmu_gather *tl tlb->need_flush = 0; tlb_flush(tlb); - smp_local_irq_save(flags); + local_irq_save(flags); if (tlb->nr_nonpte) { free_pages_and_swap_cache(tlb->nonpte, tlb->nr_nonpte); @@ -135,7 +135,7 @@ void tlb_flush_mmu(struct mmu_gather *tl if (tlb->nr_pte_ready >= NR_PTE) tlb_flush_ready(tlb); - smp_local_irq_restore(flags); + local_irq_restore(flags); } static inline @@ -172,13 +172,13 @@ void tlb_remove_page(struct mmu_gather * { unsigned long flags; - smp_local_irq_save(flags); + local_irq_save(flags); tlb->need_flush = 1; if (PagePTE(page)) tlb_remove_pte_page(tlb, page); else tlb_remove_nonpte_page(tlb, page); - smp_local_irq_restore(flags); + local_irq_restore(flags); } #endif /* _I386_TLB_H */ diff -prauN wli-2.6.0-test11-30/mm/vmscan.c wli-2.6.0-test11-31/mm/vmscan.c --- wli-2.6.0-test11-30/mm/vmscan.c 2003-12-04 07:13:42.000000000 -0800 +++ wli-2.6.0-test11-31/mm/vmscan.c 2003-12-04 12:52:58.000000000 -0800 @@ -845,10 +845,6 @@ shrink_caches(struct zone *classzone, in return ret; } -#ifndef HAVE_ARCH_PAGETABLE_CACHE -#define shrink_pagetable_cache(gfp_mask) do { } while (0) -#endif - /* * This is the main entry point to direct page reclaim. * @@ -901,17 +897,12 @@ int try_to_free_pages(struct zone *cz, */ wakeup_bdflush(total_scanned); - /* shoot down some pagetable caches before napping */ - shrink_pagetable_cache(gfp_mask); - /* Take a nap, wait for some writeback to complete */ blk_congestion_wait(WRITE, HZ/10); - if (cz - cz->zone_pgdat->node_zones < ZONE_HIGHMEM) { - shrink_slab(total_scanned, gfp_mask); - if (reclaim_state) { - nr_reclaimed += reclaim_state->reclaimed_slab; - reclaim_state->reclaimed_slab = 0; - } + shrink_slab(total_scanned, gfp_mask); + if (reclaim_state) { + nr_reclaimed += reclaim_state->reclaimed_slab; + reclaim_state->reclaimed_slab = 0; } } if ((gfp_mask & __GFP_FS) && !(gfp_mask & __GFP_NORETRY)) @@ -958,11 +949,12 @@ static int balance_pgdat(pg_data_t *pgda for (priority = DEF_PRIORITY; priority; priority--) { int all_zones_ok = 1; - for (i = 0; i < pgdat->nr_zones; i++) { + for (i = pgdat->nr_zones - 1; i >= 0; i--) { struct zone *zone = pgdat->node_zones + i; int nr_mapped = 0; int max_scan; int to_reclaim; + int gfp_mask; if (zone->all_unreclaimable && priority != DEF_PRIORITY) continue; @@ -981,13 +973,20 @@ static int balance_pgdat(pg_data_t *pgda max_scan = to_reclaim * 2; if (max_scan < SWAP_CLUSTER_MAX) max_scan = SWAP_CLUSTER_MAX; - to_free -= shrink_zone(zone, max_scan, GFP_KERNEL, + + if (i < ZONE_HIGHMEM) + gfp_mask = GFP_KERNEL; + else + gfp_mask = GFP_HIGHUSER; + + + to_free -= shrink_zone(zone, max_scan, gfp_mask, to_reclaim, &nr_mapped, ps, priority); - if (i < ZONE_HIGHMEM) { - reclaim_state->reclaimed_slab = 0; - shrink_slab(max_scan + nr_mapped, GFP_KERNEL); - to_free -= reclaim_state->reclaimed_slab; - } + + reclaim_state->reclaimed_slab = 0; + shrink_slab(max_scan + nr_mapped, gfp_mask); + to_free -= reclaim_state->reclaimed_slab; + if (zone->all_unreclaimable) continue; if (zone->pages_scanned > zone->present_pages * 2) @@ -995,10 +994,8 @@ static int balance_pgdat(pg_data_t *pgda } if (all_zones_ok) break; - if (to_free > 0) { - shrink_pagetable_cache(GFP_HIGHUSER); + if (to_free > 0) blk_congestion_wait(WRITE, HZ/10); - } } for (i = 0; i < pgdat->nr_zones; i++) { ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.6.0-test11-wli-1 2003-12-04 20:01 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-04 21:01 ` 2.6.0-test11-wli-1 William Lee Irwin III @ 2003-12-04 22:58 ` Muli Ben-Yehuda 2003-12-04 23:21 ` 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-05 8:14 ` 2.6.0-test11-wli-1 Hugang ` (2 subsequent siblings) 4 siblings, 1 reply; 13+ messages in thread From: Muli Ben-Yehuda @ 2003-12-04 22:58 UTC (permalink / raw) To: William Lee Irwin III, linux-kernel [-- Attachment #1: Type: text/plain, Size: 599 bytes --] On Thu, Dec 04, 2003 at 12:01:20PM -0800, William Lee Irwin III wrote: > Successfully tested on a Thinkpad T21. Any feedback regarding > performance would be very helpful. Desktop users should notice top(1) > is faster, kernel hackers that kernel compiles are faster, and highmem > users should see much less per-process lowmem overhead. Compiles and boots fine with a minimal .config on my thinkpad R30 sacrificial machine. Cheers, Muli -- Muli Ben-Yehuda http://www.mulix.org | http://mulix.livejournal.com/ "the nucleus of linux oscillates my world" - gccbot@#offtopic [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.6.0-test11-wli-1 2003-12-04 22:58 ` 2.6.0-test11-wli-1 Muli Ben-Yehuda @ 2003-12-04 23:21 ` William Lee Irwin III 0 siblings, 0 replies; 13+ messages in thread From: William Lee Irwin III @ 2003-12-04 23:21 UTC (permalink / raw) To: Muli Ben-Yehuda; +Cc: linux-kernel On Thu, Dec 04, 2003 at 12:01:20PM -0800, William Lee Irwin III wrote: >> Successfully tested on a Thinkpad T21. Any feedback regarding >> performance would be very helpful. Desktop users should notice top(1) >> is faster, kernel hackers that kernel compiles are faster, and highmem >> users should see much less per-process lowmem overhead. On Fri, Dec 05, 2003 at 12:58:29AM +0200, Muli Ben-Yehuda wrote: > Compiles and boots fine with a minimal .config on my thinkpad R30 > sacrificial machine. Good to hear; I hope the various performance improvements (as they're intended to be, at least) do something for the R30. -- wli ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.6.0-test11-wli-1 2003-12-04 20:01 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-04 21:01 ` 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-04 22:58 ` 2.6.0-test11-wli-1 Muli Ben-Yehuda @ 2003-12-05 8:14 ` Hugang 2003-12-05 9:10 ` 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-08 13:57 ` 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-09 23:35 ` 2.6.0-test11-wli-1 William Lee Irwin III 4 siblings, 1 reply; 13+ messages in thread From: Hugang @ 2003-12-05 8:14 UTC (permalink / raw) To: William Lee Irwin III, linux-kernel On Thu, 4 Dec 2003 12:01:20 -0800 William Lee Irwin III <wli@holomorphy.com> wrote: > Successfully tested on a Thinkpad T21. Any feedback regarding > performance would be very helpful. Desktop users should notice top(1) > is faster, kernel hackers that kernel compiles are faster, and highmem > users should see much less per-process lowmem overhead. I got this in ppc. fs/built-in.o: In function `proc_task_readdir': fs/built-in.o(.text+0x2ff44): undefined reference to `__cmpdi2' fs/built-in.o(.text+0x2ff44): relocation truncated to fit: R_PPC_REL24 __cmpdi2 fs/built-in.o(.text+0x2ff6c): undefined reference to `__cmpdi2' fs/built-in.o(.text+0x2ff6c): relocation truncated to fit: R_PPC_REL24 __cmpdi2 make: *** [.tmp_vmlinux1] Error 1 apply the patch should fix it. Index: fs/proc/base.c =================================================================== --- fs/proc/base.c (revision 3) +++ fs/proc/base.c (working copy) @@ -1673,12 +1673,13 @@ struct inode *inode = dentry->d_inode; int retval = -ENOENT; ino_t ino; + unsigned long pos = filp->f_pos; /* avoiding "long long" filp->f_pos */ if (!pid_alive(proc_task(inode))) goto out; retval = 0; - switch (filp->f_pos) { + switch (pos) { case 0: ino = inode->i_ino; if (filldir(dirent, ".", 1, filp->f_pos, ino, DT_DIR) < 0) -- Hu Gang / Steve Email : hugang@soulinfo.com, steve@soulinfo.com GPG FinePrint : 4099 3F1D AE01 1817 68F7 D499 A6C2 C418 86C8 610E GPG Public Key: http://soulinfo.com/~hugang/HuGang.asc MSN# : huganglinux@hotmail.com [9:00AM - 5:30PM +8:00] RLU# : 204016 [1999] (Register Linux User) ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.6.0-test11-wli-1 2003-12-05 8:14 ` 2.6.0-test11-wli-1 Hugang @ 2003-12-05 9:10 ` William Lee Irwin III 0 siblings, 0 replies; 13+ messages in thread From: William Lee Irwin III @ 2003-12-05 9:10 UTC (permalink / raw) To: Hugang; +Cc: linux-kernel On Thu, 4 Dec 2003 12:01:20 -0800 William Lee Irwin III <wli@holomorphy.com> wrote: >> Successfully tested on a Thinkpad T21. Any feedback regarding >> performance would be very helpful. Desktop users should notice top(1) >> is faster, kernel hackers that kernel compiles are faster, and highmem >> users should see much less per-process lowmem overhead. On Fri, Dec 05, 2003 at 04:14:51PM +0800, Hugang wrote: > I got this in ppc. > fs/built-in.o: In function `proc_task_readdir': > fs/built-in.o(.text+0x2ff44): undefined reference to `__cmpdi2' > fs/built-in.o(.text+0x2ff44): relocation truncated to fit: R_PPC_REL24 __cmpdi2 > fs/built-in.o(.text+0x2ff6c): undefined reference to `__cmpdi2' > fs/built-in.o(.text+0x2ff6c): relocation truncated to fit: R_PPC_REL24 __cmpdi2 > make: *** [.tmp_vmlinux1] Error 1 Thanks, I'll pick that up. -- wli ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.6.0-test11-wli-1 2003-12-04 20:01 2.6.0-test11-wli-1 William Lee Irwin III ` (2 preceding siblings ...) 2003-12-05 8:14 ` 2.6.0-test11-wli-1 Hugang @ 2003-12-08 13:57 ` William Lee Irwin III 2003-12-08 14:03 ` 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-09 23:35 ` 2.6.0-test11-wli-1 William Lee Irwin III 4 siblings, 1 reply; 13+ messages in thread From: William Lee Irwin III @ 2003-12-08 13:57 UTC (permalink / raw) To: linux-kernel On Thu, Dec 04, 2003 at 12:01:20PM -0800, William Lee Irwin III wrote: > Successfully tested on a Thinkpad T21. Any feedback regarding > performance would be very helpful. Desktop users should notice top(1) > is faster, kernel hackers that kernel compiles are faster, and highmem > users should see much less per-process lowmem overhead. Woops, I missed the target by a few bytes. Probably a bit overwrought: -- wli diff -prauN wli-2.6.0-test11-36/include/asm-i386/processor.h wli-2.6.0-test11-37/include/asm-i386/processor.h --- wli-2.6.0-test11-36/include/asm-i386/processor.h 2003-12-03 19:40:24.000000000 -0800 +++ wli-2.6.0-test11-37/include/asm-i386/processor.h 2003-12-07 06:36:51.000000000 -0800 @@ -497,11 +497,19 @@ void show_trace(struct task_struct *task unsigned long get_wchan(struct task_struct *task); #define THREAD_SIZE_LONGS (THREAD_SIZE/sizeof(unsigned long)) +#define KSTK_TOP(info) \ +({ \ + unsigned long *__ptr = (unsigned long *)(info); \ + (unsigned long)(&__ptr[THREAD_SIZE_LONGS]); \ +}) + #define task_pt_regs(task) \ ({ \ - unsigned long *__ptr = (unsigned long *)(task)->thread_info; \ - (struct pt_regs *)(&__ptr[THREAD_SIZE_LONGS-1]); \ + struct pt_regs *__regs__; \ + __regs__ = (struct pt_regs *)KSTK_TOP((task)->thread_info); \ + __regs__ - 1; \ }) + #define KSTK_EIP(task) (task_pt_regs(task)->eip) #define KSTK_ESP(task) (task_pt_regs(task)->esp) ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.6.0-test11-wli-1 2003-12-08 13:57 ` 2.6.0-test11-wli-1 William Lee Irwin III @ 2003-12-08 14:03 ` William Lee Irwin III 0 siblings, 0 replies; 13+ messages in thread From: William Lee Irwin III @ 2003-12-08 14:03 UTC (permalink / raw) To: linux-kernel On Thu, Dec 04, 2003 at 12:01:20PM -0800, William Lee Irwin III wrote: >> Successfully tested on a Thinkpad T21. Any feedback regarding >> performance would be very helpful. Desktop users should notice top(1) >> is faster, kernel hackers that kernel compiles are faster, and highmem >> users should see much less per-process lowmem overhead. On Mon, Dec 08, 2003 at 05:57:37AM -0800, William Lee Irwin III wrote: > Woops, I missed the target by a few bytes. Probably a bit overwrought: These THREAD_SIZE bits are cropping up all over. -- wli --- wli-2.6.0-test11-37/arch/i386/kernel/traps.c 2003-11-26 12:43:09.000000000 -0800 +++ wli-2.6.0-test11-38/arch/i386/kernel/traps.c 2003-12-08 04:58:08.000000000 -0800 @@ -119,7 +119,7 @@ void show_trace_task(struct task_struct unsigned long esp = tsk->thread.esp; /* User space on another CPU? */ - if ((esp ^ (unsigned long)tsk->thread_info) & (PAGE_MASK<<1)) + if ((esp ^ (unsigned long)tsk->thread_info) & ~(THREAD_SIZE - 1)) return; show_trace(tsk, (unsigned long *)esp); } ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.6.0-test11-wli-1 2003-12-04 20:01 2.6.0-test11-wli-1 William Lee Irwin III ` (3 preceding siblings ...) 2003-12-08 13:57 ` 2.6.0-test11-wli-1 William Lee Irwin III @ 2003-12-09 23:35 ` William Lee Irwin III 2003-12-09 23:59 ` 2.6.0-test11-wli-1 Zwane Mwaikambo 4 siblings, 1 reply; 13+ messages in thread From: William Lee Irwin III @ 2003-12-09 23:35 UTC (permalink / raw) To: linux-kernel On Thu, Dec 04, 2003 at 12:01:20PM -0800, William Lee Irwin III wrote: > Successfully tested on a Thinkpad T21. Any feedback regarding > performance would be very helpful. Desktop users should notice top(1) > is faster, kernel hackers that kernel compiles are faster, and highmem > users should see much less per-process lowmem overhead. Bill Davidsen reported an issue where compiled kernel images aren't properly distinguished from mainline kernels' by installation scripts. The following patch should resolve this: -- wli diff -prauN wli-2.6.0-test11-37/Makefile wli-2.6.0-test11-38/Makefile --- wli-2.6.0-test11-37/Makefile 2003-11-26 12:44:43.000000000 -0800 +++ wli-2.6.0-test11-38/Makefile 2003-12-09 15:32:53.000000000 -0800 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 0 -EXTRAVERSION = -test11 +EXTRAVERSION = -test11-wli-1 # *DOCUMENTATION* # To see a list of typical targets execute "make help" ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.6.0-test11-wli-1 2003-12-09 23:35 ` 2.6.0-test11-wli-1 William Lee Irwin III @ 2003-12-09 23:59 ` Zwane Mwaikambo 2003-12-11 1:42 ` 2.6.0-test11-wli-1 bill davidsen 0 siblings, 1 reply; 13+ messages in thread From: Zwane Mwaikambo @ 2003-12-09 23:59 UTC (permalink / raw) To: William Lee Irwin III; +Cc: linux-kernel On Tue, 9 Dec 2003, William Lee Irwin III wrote: > On Thu, Dec 04, 2003 at 12:01:20PM -0800, William Lee Irwin III wrote: > > Successfully tested on a Thinkpad T21. Any feedback regarding > > performance would be very helpful. Desktop users should notice top(1) > > is faster, kernel hackers that kernel compiles are faster, and highmem > > users should see much less per-process lowmem overhead. > > Bill Davidsen reported an issue where compiled kernel images aren't > properly distinguished from mainline kernels' by installation scripts. > > The following patch should resolve this: Argh, i've been screaming about this for ages... ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.6.0-test11-wli-1 2003-12-09 23:59 ` 2.6.0-test11-wli-1 Zwane Mwaikambo @ 2003-12-11 1:42 ` bill davidsen 2003-12-11 2:10 ` 2.6.0-test11-wli-1 William Lee Irwin III 0 siblings, 1 reply; 13+ messages in thread From: bill davidsen @ 2003-12-11 1:42 UTC (permalink / raw) To: linux-kernel In article <Pine.LNX.4.58.0312091859330.2313@montezuma.fsmlabs.com>, Zwane Mwaikambo <zwane@arm.linux.org.uk> wrote: | On Tue, 9 Dec 2003, William Lee Irwin III wrote: | | > On Thu, Dec 04, 2003 at 12:01:20PM -0800, William Lee Irwin III wrote: | > > Successfully tested on a Thinkpad T21. Any feedback regarding | > > performance would be very helpful. Desktop users should notice top(1) | > > is faster, kernel hackers that kernel compiles are faster, and highmem | > > users should see much less per-process lowmem overhead. | > | > Bill Davidsen reported an issue where compiled kernel images aren't | > properly distinguished from mainline kernels' by installation scripts. | > | > The following patch should resolve this: | | Argh, i've been screaming about this for ages... Look, I'm a big boy now, I should be smart enough to *check* this, because every once in a while other people (you know who you are) do it too. My fault, I just noted it because other people may not be backed up as well as I am and shoot their only working kernel. -- bill davidsen <davidsen@tmr.com> CTO, TMR Associates, Inc Doing interesting things with little computers since 1979. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.6.0-test11-wli-1 2003-12-11 1:42 ` 2.6.0-test11-wli-1 bill davidsen @ 2003-12-11 2:10 ` William Lee Irwin III 2003-12-11 2:30 ` 2.6.0-test11-wli-1 Mike Fedyk 0 siblings, 1 reply; 13+ messages in thread From: William Lee Irwin III @ 2003-12-11 2:10 UTC (permalink / raw) To: bill davidsen; +Cc: linux-kernel On Tue, 9 Dec 2003, William Lee Irwin III wrote: >|> Bill Davidsen reported an issue where compiled kernel images aren't >|> properly distinguished from mainline kernels' by installation scripts. >|> The following patch should resolve this: Zwane Mwaikambo <zwane@arm.linux.org.uk> wrote: >| Argh, i've been screaming about this for ages... On Thu, Dec 11, 2003 at 01:42:00AM +0000, bill davidsen wrote: > Look, I'm a big boy now, I should be smart enough to *check* this, > because every once in a while other people (you know who you are) do it > too. My fault, I just noted it because other people may not be backed up > as well as I am and shoot their only working kernel. You don't have to run into it to report it. =) At any rate, I hope it does prevent confusion elsewhere. -- wli ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: 2.6.0-test11-wli-1 2003-12-11 2:10 ` 2.6.0-test11-wli-1 William Lee Irwin III @ 2003-12-11 2:30 ` Mike Fedyk 0 siblings, 0 replies; 13+ messages in thread From: Mike Fedyk @ 2003-12-11 2:30 UTC (permalink / raw) To: William Lee Irwin III, bill davidsen, linux-kernel On Wed, Dec 10, 2003 at 06:10:31PM -0800, William Lee Irwin III wrote: > You don't have to run into it to report it. =) At any rate, I hope it does > prevent confusion elsewhere. Especially if there is a wli-2 or 3. :) ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2003-12-11 2:30 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2003-12-04 20:01 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-04 21:01 ` 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-04 22:58 ` 2.6.0-test11-wli-1 Muli Ben-Yehuda 2003-12-04 23:21 ` 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-05 8:14 ` 2.6.0-test11-wli-1 Hugang 2003-12-05 9:10 ` 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-08 13:57 ` 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-08 14:03 ` 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-09 23:35 ` 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-09 23:59 ` 2.6.0-test11-wli-1 Zwane Mwaikambo 2003-12-11 1:42 ` 2.6.0-test11-wli-1 bill davidsen 2003-12-11 2:10 ` 2.6.0-test11-wli-1 William Lee Irwin III 2003-12-11 2:30 ` 2.6.0-test11-wli-1 Mike Fedyk
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).