2003-11-28 04:16:05

by William Lee Irwin III

[permalink] [raw]
Subject: pgcl-2.6.0-test5-bk3-17

This is a forward port of Hugh Dickins' patch to implement ABI-
preserving large software PAGE_SIZE support, effectively "large VM
blocksize". It's also been called "subpages". "pgcl" is an abbreviation
for "page clustering", after the historical but different BSD notion.

This is meant to make memory management more efficient by reducing the
number of objects to manage, as well as establishing more physical
contiguity of memory by keeping it pieces larger than what individual
ptes map. This very noticeably reduces the space requirements for
mem_map[]. I hope to eventually demonstrate further advantages like
larger fs blocksize support and reduced sglist length requirements.

This release features a rewrite of all the fault handling logic, done
to incorporate a forward port of hugh's original fault handlers. This
should perform much better than prior releases as they efficiently
implement COW unsharing's trivial case and have bounded search overhead,
though there is clearly a lot of room for further optimization.

Tested for basic userspace functionality on a 256MB Thinkpad T21 and a
32GB NUMA-Q with 32KB PAGE_SIZE. It does break when you push it, though
it does run init scripts, most programs, and some benchmarks here.

Available from:
ftp://ftp.kernel.org/pub/linux/kernel/people/wli/vm/pgcl/

Incremental patches for all stages of the rewrite as well as cumulative
diffs vs. 2.6.0-test5-bk3 and 2.6.0-test5 are also available there.

Errata:
(1) the CONFIG_PAGE_CLUSTER==0/PAGE_MMUCOUNT==1 case is nonfunctional
(2) some oopsen zwane found while running KDE
(3) some mysterious preempt imbalance(s)
(4) drivers and fs's are essentially totally unaudited, probably broken
(5) non-i386 are all broken
(6) CONFIG_DEBUG_HIGHMEM is nonfunctional
(7) CONFIG_DEBUG_PAGEALLOC is nonfunctional
(8) many, many more

TODO:
(1) merge to current
(2) sweep drivers/fs's
(3) optimize and rework kmap_atomic_sg() API to not impact CONFIG_NOHIGHMEM
(4) clean up potentially-removable code impacts (e.g. debug code)
(5) rework pagetable allocation
(6) rework/optimize rmap interaction
(7) rework TLB invalidations
(8) fix all bugs (as usual)
(9) eventually play with ia64's 32-bit emulation


-- wli


2003-11-28 07:21:53

by William Lee Irwin III

[permalink] [raw]
Subject: Re: pgcl-2.6.0-test5-bk3-17

On Thu, Nov 27, 2003 at 08:15:58PM -0800, William Lee Irwin III wrote:
> This is a forward port of Hugh Dickins' patch to implement ABI-
> preserving large software PAGE_SIZE support, effectively "large VM
> blocksize". It's also been called "subpages". "pgcl" is an abbreviation
> for "page clustering", after the historical but different BSD notion.

Now also ported to 2.6.0-test11:
ftp://ftp.kernel.org/pub/linux/kernel/people/wli/vm/pgcl/pgcl-2.6.0-test11-1.gz

This also corrects some PAGE_SHIFT instances that crept into mm/mmap.c
while I wasn't looking and drops sym2 driver changes.


-- wli

2003-11-28 23:52:11

by William Lee Irwin III

[permalink] [raw]
Subject: Re: pgcl-2.6.0-test5-bk3-17

On Thu, Nov 27, 2003 at 08:15:58PM -0800, William Lee Irwin III wrote:
>> This is a forward port of Hugh Dickins' patch to implement ABI-
>> preserving large software PAGE_SIZE support, effectively "large VM
>> blocksize". It's also been called "subpages". "pgcl" is an abbreviation
>> for "page clustering", after the historical but different BSD notion.

On Thu, Nov 27, 2003 at 11:21:48PM -0800, William Lee Irwin III wrote:
> Now also ported to 2.6.0-test11:
> ftp://ftp.kernel.org/pub/linux/kernel/people/wli/vm/pgcl/pgcl-2.6.0-test11-1.gz
> This also corrects some PAGE_SHIFT instances that crept into mm/mmap.c
> while I wasn't looking and drops sym2 driver changes.

Looks like I missed the update to the Committed_AS accounting in exec.c
during the conversion. The reduced granularity on RLIMIT_STACK, stack
fault alignment, and the argument size Committed_AS accounting bothers
me. I should teach copy_folio() etc. to cope with unaligned pages, but
there appears to be some pain wrt. how far and wide to hunt for ptes
(i.e. this requires some design effort).

I do the swap bits a bit differently from the original, so the
swapfile accounting needs a unit conversion.

This also arranges for pr_debug()-based logging of Committed_AS
accounting, which is useful while this thing is still prototypical in
nature, but will eventually get removed for "production" patch posting
along with several other things of a similar nature.


-- wli


diff -prauN pgcl-2.6.0-test11-1/fs/exec.c pgcl-2.6.0-test11-2/fs/exec.c
--- pgcl-2.6.0-test11-1/fs/exec.c 2003-11-27 21:55:19.000000000 -0800
+++ pgcl-2.6.0-test11-2/fs/exec.c 2003-11-28 15:25:51.000000000 -0800
@@ -417,7 +417,7 @@ int setup_arg_pages(struct linux_binprm
#else
stack_base = STACK_TOP - MAX_ARG_PAGES * PAGE_SIZE;
mm->arg_start = bprm->p + stack_base;
- arg_size = STACK_TOP - (MMUPAGE_MASK & (unsigned long) mm->arg_start);
+ arg_size = STACK_TOP - (PAGE_MASK & (unsigned long) mm->arg_start);
#endif

bprm->p += stack_base;
diff -prauN pgcl-2.6.0-test11-1/include/linux/mman.h pgcl-2.6.0-test11-2/include/linux/mman.h
--- pgcl-2.6.0-test11-1/include/linux/mman.h 2003-11-26 12:43:05.000000000 -0800
+++ pgcl-2.6.0-test11-2/include/linux/mman.h 2003-11-28 15:26:08.000000000 -0800
@@ -14,18 +14,42 @@ extern int sysctl_overcommit_memory;
extern int sysctl_overcommit_ratio;
extern atomic_t vm_committed_space;

+#define vm_acct_memory(pages) \
+do { \
+ long __pages__ = (pages); \
+ pr_debug("%d: vm_acct_memory(%ld) in %s at %s:%d\n", \
+ current->pid, \
+ __pages__, \
+ __FUNCTION__, \
+ __FILE__, \
+ __LINE__); \
+ __vm_acct_memory(__pages__); \
+} while (0)
+
+#define vm_unacct_memory(pages) \
+do { \
+ long __pages__ = (pages); \
+ pr_debug("%d: vm_unacct_memory(%ld) in %s at %s:%d\n", \
+ current->pid, \
+ __pages__, \
+ __FUNCTION__, \
+ __FILE__, \
+ __LINE__); \
+ __vm_unacct_memory(__pages__); \
+} while (0)
+
#ifdef CONFIG_SMP
-extern void vm_acct_memory(long pages);
+void __vm_acct_memory(long pages);
#else
-static inline void vm_acct_memory(long pages)
+static inline void __vm_acct_memory(long pages)
{
atomic_add(pages, &vm_committed_space);
}
#endif

-static inline void vm_unacct_memory(long pages)
+static inline void __vm_unacct_memory(long pages)
{
- vm_acct_memory(-pages);
+ __vm_acct_memory(-pages);
}

/*
diff -prauN pgcl-2.6.0-test11-1/include/linux/security.h pgcl-2.6.0-test11-2/include/linux/security.h
--- pgcl-2.6.0-test11-1/include/linux/security.h 2003-11-26 12:44:57.000000000 -0800
+++ pgcl-2.6.0-test11-2/include/linux/security.h 2003-11-28 15:26:01.000000000 -0800
@@ -84,6 +84,18 @@ struct nfsctl_arg;
struct sched_param;
struct swap_info_struct;

+#define security_vm_enough_memory(pages) \
+({ \
+ long __pages__ = (pages); \
+ pr_debug("%d: vm_enough_memory(%ld) in %s at %s:%d\n", \
+ current->pid, \
+ __pages__, \
+ __FUNCTION__, \
+ __FILE__, \
+ __LINE__); \
+ __security_vm_enough_memory(__pages__); \
+})
+
#ifdef CONFIG_SECURITY

/**
@@ -1245,7 +1257,7 @@ static inline int security_syslog(int ty
return security_ops->syslog(type);
}

-static inline int security_vm_enough_memory(long pages)
+static inline int __security_vm_enough_memory(long pages)
{
return security_ops->vm_enough_memory(pages);
}
@@ -1911,7 +1923,7 @@ static inline int security_syslog(int ty
return cap_syslog(type);
}

-static inline int security_vm_enough_memory(long pages)
+static inline int __security_vm_enough_memory(long pages)
{
return cap_vm_enough_memory(pages);
}
diff -prauN pgcl-2.6.0-test11-1/mm/swap.c pgcl-2.6.0-test11-2/mm/swap.c
--- pgcl-2.6.0-test11-1/mm/swap.c 2003-11-27 21:55:21.000000000 -0800
+++ pgcl-2.6.0-test11-2/mm/swap.c 2003-11-28 14:14:50.000000000 -0800
@@ -367,7 +367,7 @@ unsigned int pagevec_lookup(struct pagev

static DEFINE_PER_CPU(long, committed_space) = 0;

-void vm_acct_memory(long pages)
+void __vm_acct_memory(long pages)
{
long *local;

@@ -380,7 +380,7 @@ void vm_acct_memory(long pages)
}
preempt_enable();
}
-EXPORT_SYMBOL(vm_acct_memory);
+EXPORT_SYMBOL(__vm_acct_memory);
#endif

#ifdef CONFIG_SMP
diff -prauN pgcl-2.6.0-test11-1/mm/swapfile.c pgcl-2.6.0-test11-2/mm/swapfile.c
--- pgcl-2.6.0-test11-1/mm/swapfile.c 2003-11-27 21:55:21.000000000 -0800
+++ pgcl-2.6.0-test11-2/mm/swapfile.c 2003-11-28 01:23:45.000000000 -0800
@@ -1151,8 +1151,8 @@ asmlinkage long sys_swapoff(const char _
swap_list_unlock();
goto out_dput;
}
- if (!security_vm_enough_memory(p->pages))
- vm_unacct_memory(p->pages);
+ if (!security_vm_enough_memory(PAGE_MMUCOUNT*p->pages))
+ vm_unacct_memory(PAGE_MMUCOUNT*p->pages);
else {
err = -ENOMEM;
swap_list_unlock();

2003-11-30 01:12:59

by William Lee Irwin III

[permalink] [raw]
Subject: Re: pgcl-2.6.0-test5-bk3-17

On Thu, Nov 27, 2003 at 11:21:48PM -0800, William Lee Irwin III wrote:
> Now also ported to 2.6.0-test11:
> ftp://ftp.kernel.org/pub/linux/kernel/people/wli/vm/pgcl/pgcl-2.6.0-test11-1.gz
> This also corrects some PAGE_SHIFT instances that crept into mm/mmap.c
> while I wasn't looking and drops sym2 driver changes.

Quick performance and functionality test on a 32x/64GB 700MHz P-III.
Compressed dmesg attached. Not sure where the SCSI error came from.

This seems to show that reworking the rmap interaction is a pressing
performance issue (however pressing kernel compiles can be considered
to be, never mind all the actual bugs) since the rmap functions are
burning more cpu time than bitblitting luserspace. Unfortunately there
isn't really enough disk for on-disk dbench etc. so I resorted to ramfs,
whose readdir() etc. methods appear not to be very well parallelized. I
should probably have tried ext2 on loop on ramfs or some such nonsense.

The good news is that it does still run on the thing even after all of
the massive shakeups, rewrites, and time since my last boot on it in May.


Kernel compile on ext2:

$ time make -s -j bzImage > /dev/null
arch/i386/boot/setup.S: Assembler messages:
arch/i386/boot/setup.S:168: Warning: value 0x77dfffff truncated to 0x77dfffff
Root device is (8, 2)
Boot sector 512 bytes.
Setup is 2538 bytes.
System is 1117 kB
make -s -j bzImage > /dev/null 712.96s user 284.86s system 1140% cpu 1:27.46 total

6094329 total 3.8079
5787061 default_idle 90422.8281
85912 __page_remove_rmap 298.3056
38331 page_remove_rmap 140.9228
28287 copy_folio 88.3969
19051 page_add_rmap 79.3792
14709 __copy_to_user_ll 131.3304
7078 __copy_user_intel 40.2159
6901 __copy_from_user_ll 61.6161
5704 __page_add_rmap 22.2812
4710 __d_lookup 17.3162
4259 zap_pte_range 3.6464
4127 schedule 2.5288
3940 rmap_add_folio 14.4853
3852 kmap_atomic 8.0250
3258 kmem_cache_free 33.9375
3053 clear_page_tables 3.3476
2079 try_to_wake_up 4.0605
2012 find_get_page 31.4375
1815 current_kernel_time 22.6875
1638 kmap_atomic_sg 4.0950
1627 path_lookup 4.6222


dbench on ramfs:

$ time dbench 32
32 clients started
0 62477 296.11 MB/sec
Throughput 296.11 MB/sec 32 procs
dbench 32 20.60s user 989.43s system 2674% cpu 37.767 total

2328901 total 1.4552
1335226 default_idle 20862.9062
415966 .text.lock.libfs 2298.1547
168210 .text.lock.dec_and_lock 15291.8182
157310 .text.lock.dcache 291.3148
70329 dcache_readdir 146.5188
23983 atomic_dec_and_lock 347.5797
21502 __copy_to_user_ll 191.9821
18555 .text.lock.file_table 157.2458
16183 __copy_from_user_ll 144.4911
11169 d_alloc 23.2688
11055 filldir64 40.6434
6661 d_instantiate 69.3854
5826 __d_lookup 21.4191
5405 path_lookup 15.3551
4545 path_release 71.0156
3728 file_move 58.2500
3537 d_delete 18.4219
3336 fd_install 52.1250
3220 simple_prepare_write 20.1250
3081 call_rcu 48.1406
2704 vfs_readdir 21.1250


SDET 32 profile:

4605683 total 2.8778
3480214 default_idle 54378.3438
212021 page_remove_rmap 779.4890
163508 __page_remove_rmap 567.7361
98710 page_add_rmap 411.2917
87944 copy_folio 274.8250
31101 __page_add_rmap 121.4883
20883 simple_prepare_write 130.5188
19818 copy_page_range 15.6788
18555 .text.lock.dcache 34.3611
18277 zap_pte_range 15.6481
17973 rmap_add_folio 66.0772
17932 .text.lock.dec_and_lock 1630.1818
17816 __d_lookup 65.5000
17680 __down 78.9286
16517 __copy_to_user_ll 147.4732
11960 atomic_dec_and_lock 173.3333
11795 release_pages 36.8594
11256 kmap_atomic 23.4500
9696 kmem_cache_free 101.0000
9622 copy_mm 9.5456
9371 .text.lock.libfs 51.7735


SDET 128 profile:

19885416 total 12.4250
10870694 default_idle 169854.5938
1868923 page_remove_rmap 6871.0404
1722495 __page_remove_rmap 5980.8854
991381 page_add_rmap 4130.7542
619755 __down 2766.7634
403192 copy_folio 1259.9750
172220 __page_add_rmap 672.7344
164246 rmap_add_folio 603.8456
161239 __wake_up 2015.4875
123047 __d_lookup 452.3787
121684 schedule 74.5613
120902 zap_pte_range 103.5120
101418 __copy_to_user_ll 905.5179
99572 copy_page_range 78.7753
95709 simple_prepare_write 598.1812
76676 atomic_dec_and_lock 1111.2464
66245 remove_shared_vm_struct 517.5391
64159 path_lookup 182.2699
61922 release_pages 193.5062
61415 copy_mm 60.9276
61356 clear_page_tables 67.2763


I could probably use suggestions for a more mergeable method of
mitigating the rmap functions' overheads than the currently
available mm/rmap.c rewrites.

In more relevant news, I've started taking stabs at the rvmalloc()
mess and drm, with copious help from Zwane.


-- wli


Attachments:
(No filename) (6.84 kB)
64G.test11.log.gz (9.61 kB)
64G.pgcl.test11.log.gz
Download all attachments

2003-11-30 16:43:14

by William Lee Irwin III

[permalink] [raw]
Subject: Re: pgcl-2.6.0-test5-bk3-17

On Thu, Nov 27, 2003 at 11:21:48PM -0800, William Lee Irwin III wrote:
> Now also ported to 2.6.0-test11:
> ftp://ftp.kernel.org/pub/linux/kernel/people/wli/vm/pgcl/pgcl-2.6.0-test11-1.gz
> This also corrects some PAGE_SHIFT instances that crept into mm/mmap.c
> while I wasn't looking and drops sym2 driver changes.

I wonder if this would be enough to get sysenter support going again.
I've not got a sysenter-capable userspace around, so I can't really
test this myself.

vs. pgcl-2.6.0-test11-5


-- wli


diff -prauN pgcl-2.6.0-test11-5/include/asm-i386/elf.h pgcl-2.6.0-test11-6/include/asm-i386/elf.h
--- pgcl-2.6.0-test11-5/include/asm-i386/elf.h 2003-11-27 21:55:19.000000000 -0800
+++ pgcl-2.6.0-test11-6/include/asm-i386/elf.h 2003-11-30 07:34:34.000000000 -0800
@@ -132,17 +132,11 @@ extern int dump_task_extended_fpu (struc
#define VSYSCALL_ENTRY ((unsigned long) &__kernel_vsyscall)
extern void __kernel_vsyscall;

-/*
- * Something in pgcl broke vsyscalls. Until that's tracked down,
- * work around it with this:
- */
-#if 0
#define ARCH_DLINFO \
do { \
NEW_AUX_ENT(AT_SYSINFO, VSYSCALL_ENTRY); \
NEW_AUX_ENT(AT_SYSINFO_EHDR, VSYSCALL_BASE); \
} while (0)
-#endif /* 0 */

/*
* These macros parameterize elf_core_dump in fs/binfmt_elf.c to write out
@@ -152,7 +146,6 @@ do { \
* Dumping its extra ELF program headers includes all the other information
* a debugger needs to easily find how the vsyscall DSO was being used.
*/
-#if 0
#define ELF_CORE_EXTRA_PHDRS (VSYSCALL_EHDR->e_phnum)
#define ELF_CORE_WRITE_EXTRA_PHDRS \
do { \
@@ -166,7 +159,7 @@ do { \
if (phdr.p_type == PT_LOAD) { \
BUG_ON(ofs != 0); \
ofs = phdr.p_offset = offset; \
- phdr.p_memsz = PAGE_ALIGN(phdr.p_memsz); \
+ phdr.p_memsz = MMUPAGE_ALIGN(phdr.p_memsz); \
phdr.p_filesz = phdr.p_memsz; \
offset += phdr.p_filesz; \
} \
@@ -185,10 +178,9 @@ do { \
for (i = 0; i < VSYSCALL_EHDR->e_phnum; ++i) { \
if (vsyscall_phdrs[i].p_type == PT_LOAD) \
DUMP_WRITE((void *) vsyscall_phdrs[i].p_vaddr, \
- PAGE_ALIGN(vsyscall_phdrs[i].p_memsz)); \
+ MMUPAGE_ALIGN(vsyscall_phdrs[i].p_memsz)); \
} \
} while (0)
-#endif /* 0 */

#endif /* __KERNEL__ */

diff -prauN pgcl-2.6.0-test11-5/include/asm-i386/fixmap.h pgcl-2.6.0-test11-6/include/asm-i386/fixmap.h
--- pgcl-2.6.0-test11-5/include/asm-i386/fixmap.h 2003-11-27 21:55:19.000000000 -0800
+++ pgcl-2.6.0-test11-6/include/asm-i386/fixmap.h 2003-11-30 06:39:57.000000000 -0800
@@ -21,6 +21,11 @@
#ifdef CONFIG_HIGHMEM
#include <linux/threads.h>
#include <asm/kmap_types.h>
+#ifdef CONFIG_HIGHMEM4G
+#include <asm/pgtable-2level.h>
+#else
+#include <asm/pgtable-3level.h>
+#endif
#endif

/*
@@ -49,6 +54,7 @@
#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))
#define LAST_PKMAP 1024
#define LAST_PKMAP_MASK (LAST_PKMAP-1)
+#define PKMAP_MASK (~((1 << PMD_SHIFT) - 1))

/*
* FIXADDR stuff is used by highmem.c for kmapping, and various
@@ -62,7 +68,7 @@
* and I didn't care enough to conserve PAGE_SIZE - MMUPAGE_SIZE
* worth of virtualspace.
*/
-#define FIXADDR_TOP (-PAGE_SIZE)
+#define FIXADDR_TOP (-MMUPAGE_SIZE)
#define __FIXADDR_SIZE (__end_of_permanent_fixed_addresses << MMUPAGE_SHIFT)
#define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE)

@@ -70,13 +76,8 @@
#define __virt_to_fix(x) ((FIXADDR_TOP - ((x) & MMUPAGE_MASK)) >> MMUPAGE_SHIFT)

enum fixed_addresses {
-#ifdef CONFIG_HIGHMEM
/* reserved pte's for temporary kernel mappings */
- FIX_KMAP_BEGIN = 1,
- FIX_KMAP_END = FIX_KMAP_BEGIN+((KM_TYPE_NR*NR_CPUS+1)*PAGE_MMUCOUNT)-1,
- FIX_PKMAP_BEGIN,
- FIX_PKMAP_END = FIX_PKMAP_BEGIN + (LAST_PKMAP+1)*PAGE_MMUCOUNT - 1,
-#endif
+ FIX_HOLE,
FIX_VSYSCALL,
#ifdef CONFIG_X86_LOCAL_APIC
FIX_APIC_BASE, /* local (CPU) APIC) -- required for SMP or not */
@@ -107,6 +108,12 @@ enum fixed_addresses {
FIX_BTMAP_END = __end_of_permanent_fixed_addresses,
FIX_BTMAP_BEGIN = FIX_BTMAP_END + NR_FIX_BTMAPS - 1,
FIX_WP_TEST,
+#ifdef CONFIG_HIGHMEM
+ FIX_KMAP_BEGIN = __virt_to_fix(__fix_to_virt(FIX_WP_TEST+1) & PAGE_MASK) - PAGE_MMUCOUNT + 1,
+ FIX_KMAP_END = FIX_KMAP_BEGIN+((KM_TYPE_NR*NR_CPUS+1)*PAGE_MMUCOUNT)-1,
+ FIX_PKMAP_BEGIN = __virt_to_fix(__fix_to_virt(FIX_KMAP_END+1) & PKMAP_MASK) - PAGE_MMUCOUNT + 1,
+ FIX_PKMAP_END = FIX_PKMAP_BEGIN + (LAST_PKMAP+1)*PAGE_MMUCOUNT - 1,
+#endif
__end_of_fixed_addresses
};

@@ -129,7 +136,7 @@ extern void __set_fixmap (enum fixed_add
* acting like user mode such as get_user_pages.
*/
#define FIXADDR_USER_START (__fix_to_virt(FIX_VSYSCALL))
-#define FIXADDR_USER_END (FIXADDR_USER_START + PAGE_SIZE)
+#define FIXADDR_USER_END (FIXADDR_USER_START + MMUPAGE_SIZE)


extern void __this_fixmap_does_not_exist(void);

2003-11-30 18:47:33

by Zwane Mwaikambo

[permalink] [raw]
Subject: Re: pgcl-2.6.0-test5-bk3-17

On Sun, 30 Nov 2003, William Lee Irwin III wrote:

> On Thu, Nov 27, 2003 at 11:21:48PM -0800, William Lee Irwin III wrote:
> > Now also ported to 2.6.0-test11:
> > ftp://ftp.kernel.org/pub/linux/kernel/people/wli/vm/pgcl/pgcl-2.6.0-test11-1.gz
> > This also corrects some PAGE_SHIFT instances that crept into mm/mmap.c
> > while I wasn't looking and drops sym2 driver changes.
>
> I wonder if this would be enough to get sysenter support going again.
> I've not got a sysenter-capable userspace around, so I can't really
> test this myself.
>
> vs. pgcl-2.6.0-test11-5

Brilliant!

Linux arusha.mastecende.com 2.6.0-test11-pgcl #4 SMP Sun Nov 30 13:30:51 EST 2003 i686 i686 i386 GNU/Linux

tcsh S C0155C8D 0 1132 1131 (NOTLB)
def85e60 00000086 def8b29c c0155c8d def85e44 def85e9c c060b940 c013010f
0001c1ec 00000000 c1143640 00008734 ff21d58e 00000019 dea41fd0 0000000e
fff24fc0 00000008 7fffffff c1657d7c de7f9000 c0131035 dc21bfcc c1119338
Call Trace:
[<c0155c8d>] private_folio_page+0x1d/0x2c0
[<c013010f>] __mod_timer+0x10f/0x360
[<c0131035>] schedule_timeout+0xb5/0xc0
[<c032cc53>] read_chan+0x2b3/0xc50
[<c011d1f1>] do_page_fault+0x5b1/0x871
[<c0121830>] default_wake_function+0x0/0x20
[<c032dfc1>] set_termios+0x111/0x180
[<c0121830>] default_wake_function+0x0/0x20
[<c0326c3b>] tty_read+0x15b/0x1a0
[<c0326ae0>] tty_read+0x0/0x1a0
[<c0326ae0>] tty_read+0x0/0x1a0
[<c016ac9c>] vfs_read+0xac/0xf0
[<c016aead>] sys_read+0x2d/0x50
[<c0109719>] sysenter_past_esp+0x52/0x79

2003-11-30 18:50:12

by William Lee Irwin III

[permalink] [raw]
Subject: Re: pgcl-2.6.0-test5-bk3-17

On Sun, Nov 30, 2003 at 01:46:24PM -0500, Zwane Mwaikambo wrote:
> Brilliant!
> Linux arusha.mastecende.com 2.6.0-test11-pgcl #4 SMP Sun Nov 30 13:30:51 EST 2003 i686 i686 i386 GNU/Linux
> tcsh S C0155C8D 0 1132 1131 (NOTLB)
> def85e60 00000086 def8b29c c0155c8d def85e44 def85e9c c060b940 c013010f
> 0001c1ec 00000000 c1143640 00008734 ff21d58e 00000019 dea41fd0 0000000e
> fff24fc0 00000008 7fffffff c1657d7c de7f9000 c0131035 dc21bfcc c1119338
> Call Trace:
[...]
> [<c0121830>] default_wake_function+0x0/0x20
> [<c032dfc1>] set_termios+0x111/0x180
> [<c0121830>] default_wake_function+0x0/0x20
> [<c0326c3b>] tty_read+0x15b/0x1a0
> [<c0326ae0>] tty_read+0x0/0x1a0
> [<c0326ae0>] tty_read+0x0/0x1a0
> [<c016ac9c>] vfs_read+0xac/0xf0
> [<c016aead>] sys_read+0x2d/0x50
> [<c0109719>] sysenter_past_esp+0x52/0x79

I'll call this pgcl-2.6.0-test11-6, then.

-- wli