2002-08-28 04:07:04

by Andrew Morton

[permalink] [raw]
Subject: 2.5.32-mm1

URL: http://www.zip.com.au/~akpm/linux/patches/2.5/2.5.32/2.5.32-mm1/

Since 2.5.31-mm1:

- A bunch of things from 2.5.31-mm1 were merged.

- The BKL consolidation patch is dropped because Linus did it too.

- The `might_sleep()' debug patch lost its supporting infrastructure
and I've dropped it for now.

- The configurable PAGE_OFFSET patch ran aground on some kbuild changes and
needs some more work.

- The following patches have been added

discontig-cleanup-1.patch
discontig-cleanup-2.patch
writeback-thresholds.patch
buffer-strip.patch
daniel-rmap-speedup.patch
rmap-speedup.patch
wli-highpte.patch


func-fix.patch
gcc-2.91.66 does not support __func__

ext3-htree.patch
Indexed directories for ext3

misc.patch
page_alloc.c fixlets

tlb-speedup.patch
Reduce typical global TLB invalidation frequency by 35%

buffer-slab-align.patch
Don't align the buffer_head slab on hardware cacheline boundaries

zone-rename.patch
Rename zone_struct->zone, zonelist_struct->zonelist. Remove zone_t,
zonelist_t.

per-zone-lru.patch
Per-zone page LRUs

per-zone-lock.patch
Per-zone LRU list locking

l1-max-size.patch
Infrastructure for determining the maximum L1 cache size which the kernel
may have to support.

zone-lock-alignment.patch
Pad struct zone to ensure that the lru and buddy locks are in separate
cachelines.

put_page_cleanup.patch
Clean up put_page() and page_cache_release().

anon-batch-free.patch
Batched freeing and de-LRUing of anonymous pages

writeback-sync.patch
Writeback fixes and tuneups

ext3-inode-allocation.patch
Fix an ext3 deadlock

ext3-o_direct.patch
O_DIRECT support for ext3.

discontig-paddr_to_pfn.patch
Convert page pointers into pfns for i386 NUMA

discontig-setup_arch.patch
Rework setup_arch() for i386 NUMA

discontig-mem_init.patch
Restructure mem_init for i386 NUMA

discontig-i386-numa.patch
discontigmem support for i386 NUMA

cleanup-mem_map-1.patch
Clean up lots of open-coded uese of mem_map[]. For ia32 NUMA

zone-pages-reporting.patch
Fix the boot-time reporting of each zone's available pages

enospc-recovery-fix.patch
Fix the __block_write_full_page() error path.

fix-faults.patch
Back out the initial work for atomic copy_*_user()

spin-lock-check.patch
spinlock/rwlock checking infrastructure

copy_user_atomic.patch

kmap_atomic_reads.patch
Use kmap_atomic() for generic_file_read()

kmap_atomic_writes.patch
Use kmap_atomic() for generic_file_write()

throttling-fix.patch
Fix throttling of heavy write()rs.

dirty-state-accounting.patch
Make the global dirty memory accounting more accurate

rd-cleanup.patch
Cleanup and fix the ramdisk driver (doesn't work right yet)

discontig-cleanup-1.patch
i386 discontigmem coding cleanups

discontig-cleanup-2.patch
i386 discontigmem cleanups

writeback-thresholds.patch
Downward adjustments to the default dirty memory thresholds

buffer-strip.patch
Limit the consumption of ZONE_NORMAL by buffer_heads

daniel-rmap-speedup.patch
Hashed locking for rmap pte_chains

rmap-speedup.patch
rmap pte_chain space and CPU reductions

wli-highpte.patch
Resurrect CONFIG_HIGHPTE - ia32 pagetables in highmem


2002-08-28 13:19:26

by Heinz Diehl

[permalink] [raw]
Subject: Re: 2.5.32-mm1

On Tue Aug 27 2002, Andrew Morton wrote:

[....]
make[1]: Entering directory /usr/src/linux/init'
Generating /usr/src/linux/include/linux/compile.h (updated)
gcc -Wp,-MD,./.version.o.d -D__KERNEL__ -I/usr/src/linux/include -Wall
-Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer
-fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2
-march=k6 -nostdinc -iwithprefix include -DKBUILD_BASENAME=version
-c -o version.o version.c
ld -m elf_i386 -r -o init.o main.o version.o do_mounts.o
make[1]: Leaving directory /usr/src/linux/init'
ld -m elf_i386 -T arch/i386/vmlinux.lds -e stext
arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/init.o
--start-group arch/i386/kernel/kernel.o arch/i386/mm/mm.o
kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o security/built-in.o
/usr/src/linux/arch/i386/lib/lib.a lib/lib.a
/usr/src/linux/arch/i386/lib/lib.a drivers/built-in.o
sound/sound.o arch/i386/pci/pci.o net/network.o --end-group -o vmlinux
fs/fs.o: In function recalc_bh_state':
fs/fs.o(.text+0x5932): undefined reference to cpu_possible'
make: *** [vmlinux] Error 1
chiara:/usr/src/linux #

--
# Heinz Diehl, 68259 Mannheim, Germany

2002-08-28 16:31:35

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.5.32-mm1

Heinz Diehl wrote:
>
> ...
> fs/fs.o(.text+0x5932): undefined reference to cpu_possible'

Bah. Sorry about that. cpu_possible() appears to be undefined
for uniprocessor builds.

How about this?

--- 2.5.32/include/linux/smp.h~cpu_possible Wed Aug 28 09:43:05 2002
+++ 2.5.32-akpm/include/linux/smp.h Wed Aug 28 09:44:00 2002
@@ -108,6 +108,9 @@ static inline int register_cpu_notifier(
static inline void unregister_cpu_notifier(struct notifier_block *nb)
{
}
+
+#define cpu_possible(cpu) ((cpu) == 0)
+
#endif /* !SMP */

#define get_cpu() ({ preempt_disable(); smp_processor_id(); })
--- 2.5.32/fs/buffer.c~cpu_possible Wed Aug 28 09:43:09 2002
+++ 2.5.32-akpm/fs/buffer.c Wed Aug 28 09:44:17 2002
@@ -22,6 +22,7 @@
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/mm.h>
+#include <linux/smp.h>
#include <linux/percpu.h>
#include <linux/slab.h>
#include <linux/smp_lock.h>

.

2002-08-28 17:48:39

by Heinz Diehl

[permalink] [raw]
Subject: Re: 2.5.32-mm1

On Wed Aug 28 2002, Andrew Morton wrote:

> How about this?
[....]

Now it compiles and runs fine, thanks!

Although there are several error messages appearing in dmesg related to
ide-scsi, but I guess this is a general 2.5.32 issue:

[....]
hda: SAMSUNG SV4002H, ATA DISK drive
hdc: CD-540E, ATAPI CD/DVD-ROM drive
hdd: CD-W54E, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
blk: queue c02c7e84, I/O limit 4095Mb (mask 0xffffffff)
hda: host protected area => 1
hda: 78242976 sectors (40060 MB) w/2048KiB Cache, CHS=4870/255/63, UDMA(33)
hda: hda1 hda2 hda3 < hda5 hda6 hda7 >
hdc:ide-scsi: unsup command: dev 16:00: REQ_CMD REQ_STARTED sector 0,
nr/cnr 8/1

end_request: I/O error, dev 16:00, sector 0
Buffer I/O error on device ide1(22,0), logical block 0
ide-scsi: unsup command: dev 16:00: REQ_CMD REQ_STARTED sector 1, nr/cnr
7/1

end_request: I/O error, dev 16:00, sector 1
Buffer I/O error on device ide1(22,0), logical block 1
ide-scsi: unsup command: dev 16:00: REQ_CMD REQ_STARTED sector 2, nr/cnr
6/1

end_request: I/O error, dev 16:00, sector 2
Buffer I/O error on device ide1(22,0), logical block 2

[....]

--
# Heinz Diehl, 68259 Mannheim, Germany

2002-08-28 22:18:08

by Randy Hron

[permalink] [raw]
Subject: Re: 2.5.32-mm1

2.5.32-mm1 fixes some page allocation failures on 3.75 GB
quad xeon. 2.5.32 vanilla had a lot of these:

page allocation failure. order:0, mode:0x50

The page alloc failures began showing up in the first few minutes
of testing (dbench). 2.5.32 stopped responding after about 4
hours of testing.

2.5.32-mm1 has been testing for over 14 hours with no
page allocation failures.

2.5.32 didn't have page alloc failures on uniprocessor 384 MB
machine during 22 hours of testing.
--
Randy Hron
http://home.earthlink.net/~rwhron/kernel/bigbox.html

2002-08-29 02:26:00

by Rusty Russell

[permalink] [raw]
Subject: Re: 2.5.32-mm1

In message <[email protected]> you write:
> Heinz Diehl wrote:
> >
> > ...
> > fs/fs.o(.text+0x5932): undefined reference to cpu_possible'
>
> Bah. Sorry about that. cpu_possible() appears to be undefined
> for uniprocessor builds.

Yes.

> +
> +#define cpu_possible(cpu) ((cpu) == 0)
> +

This is fine: techically it's:
BUG_ON(cpu != 0);

Since you can never invoke cpu_possible(cpu) or cpu_online(cpu) for
cpu >= NR_CPUS.

Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.

2002-08-29 06:49:25

by Rusty Russell

[permalink] [raw]
Subject: Re: 2.5.32-mm1

In message <[email protected]> you write:
> I just deleted the cpu_possible() test - changed it to loop
> across NR_CPUS.

Still, it's a good idea to have a UP version, and fix that naked
reference to "cpu" in cpu_online() which just makes me damn nervous.

Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.

Name: cpu_possible for UP
Author: Rusty Russell
Status: Trivial

D: This patch defines cpu_possible() for non-SMP.

diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.32/include/linux/smp.h working-2.5.32-cpu-possible/include/linux/smp.h
--- linux-2.5.32/include/linux/smp.h 2002-08-28 09:29:53.000000000 +1000
+++ working-2.5.32-cpu-possible/include/linux/smp.h 2002-08-29 15:30:49.000000000 +1000
@@ -94,9 +94,10 @@ int cpu_up(unsigned int cpu);
static inline void smp_send_reschedule(int cpu) { }
static inline void smp_send_reschedule_all(void) { }
#define cpu_online_map 1
-#define cpu_online(cpu) ({ cpu; 1; })
+#define cpu_online(cpu) ({ BUG_ON((cpu) != 0); 1; })
#define num_online_cpus() 1
#define num_booting_cpus() 1
+#define cpu_possible(i) ({ BUG_ON((cpu) != 0); 1; })

struct notifier_block;

2002-09-01 02:51:08

by Rusty Russell

[permalink] [raw]
Subject: Re: 2.5.32-mm1

In message <[email protected]> you write:
>
> In your patch, you have:
>
> +#define cpu_possible(i) ({ BUG_ON((cpu) != 0);
1; })
>
>
> Shouldn't the cpu match the i in the arg list?

Err.. no, I was just checking how many people read my patches.

Linus, please apply,
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.

Name: cpu_possible for UP
Author: Rusty Russell
Status: Trivial

D: This patch defines cpu_possible() for non-SMP.

diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.32/include/linux/smp.h working-2.5.32-cpu-possible/include/linux/smp.h
--- linux-2.5.32/include/linux/smp.h 2002-08-28 09:29:53.000000000 +1000
+++ working-2.5.32-cpu-possible/include/linux/smp.h 2002-08-29 15:30:49.000000000 +1000
@@ -94,9 +94,10 @@ int cpu_up(unsigned int cpu);
static inline void smp_send_reschedule(int cpu) { }
static inline void smp_send_reschedule_all(void) { }
#define cpu_online_map 1
-#define cpu_online(cpu) ({ cpu; 1; })
+#define cpu_online(cpu) ({ BUG_ON((cpu) != 0); 1; })
#define num_online_cpus() 1
#define num_booting_cpus() 1
+#define cpu_possible(cpu) ({ BUG_ON((cpu) != 0); 1; })

struct notifier_block;