All of lore.kernel.org
 help / color / mirror / Atom feed
* 2.4.23pre6aa1
@ 2003-10-02 15:26 Andrea Arcangeli
  2003-10-03  0:09 ` 2.4.23pre6aa1 Mathias Kretschmer
                   ` (5 more replies)
  0 siblings, 6 replies; 13+ messages in thread
From: Andrea Arcangeli @ 2003-10-02 15:26 UTC (permalink / raw)
  To: linux-kernel

URL:

	http://www.us.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.23pre6aa1.gz
	http://www.us.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.23pre6aa1/

Probably the most notable new feature is that you can now pass 'desktop'
as parameter to the kernel in lilo to ask the kernel to behave optimally
for a desktop machine. No need of compile time options anymore. For more
experienced users HZ=500/HZ=50/HZ=200 should work fine too, then you can
tune the timeslices by hand but you must know what you're doing.

You can verify everything went well after boot with:

	cat /proc/sys/kernel/{*timeslice,HZ}

This kernel seems to boot fine again on x86-64 too. The merges in pre6
were helpful.

Due the amount of changes you may not want to run this on any production
box (note: not because of the dynamic-hz feature, but because of
everything else, the dynamic-hz is the only one that has no way to break
anything, modulo stuff that would break anyways on ia64 and alpha
already and that you can workaround trivially with HZ=100 if needed).

Only in 2.4.22aa1: 00_config-smp-1
Only in 2.4.22aa1: 00_copy-namespace-1
Only in 2.4.22aa1: 00_panic-console-switch-1
Only in 2.4.22aa1: 00_pgt-cache-leak-2
Only in 2.4.22aa1: 00_read_full_page-get_block-err-2
Only in 2.4.22aa1: 00_sk98lin_2.4.22-20030902-1.gz
Only in 2.4.22aa1: 05_vm_03_vm_tunables-4
Only in 2.4.22aa1: 05_vm_05_zone_accounting-2
Only in 2.4.22aa1: 05_vm_06_swap_out-3
Only in 2.4.22aa1: 05_vm_07_local_pages-4
Only in 2.4.22aa1: 05_vm_09_misc_junk-3
Only in 2.4.22aa1: 05_vm_16_active_free_zone_bhs-1
Only in 2.4.22aa1: 05_vm_20_cleanups-3
Only in 2.4.22aa1: 9999900_request-firmware-1

	Merged in mainline.

Only in 2.4.22aa1: 00_cpu-affinity-syscall-rml-4
Only in 2.4.23pre6aa1: 00_cpu-affinity-syscall-rml-5
Only in 2.4.22aa1: 00_extraversion-29
Only in 2.4.23pre6aa1: 00_extraversion-30
Only in 2.4.22aa1: 00_global-irq-race-1
Only in 2.4.23pre6aa1: 00_global-irq-race-2
Only in 2.4.22aa1: 00_rwsem-fair-38
Only in 2.4.22aa1: 00_rwsem-fair-38-recursive-8
Only in 2.4.23pre6aa1: 00_rwsem-fair-39
Only in 2.4.23pre6aa1: 00_rwsem-fair-39-recursive-8
Only in 2.4.22aa1: 00_silent-stack-overflow-18
Only in 2.4.23pre6aa1: 00_silent-stack-overflow-19
Only in 2.4.22aa1: 00_x86-optimize-apic-irq-and-cacheline-2
Only in 2.4.23pre6aa1: 00_x86-optimize-apic-irq-and-cacheline-3
Only in 2.4.22aa1: 05_vm_22_vm-anon-lru-1
Only in 2.4.23pre6aa1: 05_vm_22_vm-anon-lru-2
Only in 2.4.22aa1: 05_vm_17_rest-10
Only in 2.4.23pre6aa1: 05_vm_26-rest-1
Only in 2.4.22aa1: 05_vm_23_per-cpu-pages-3
Only in 2.4.23pre6aa1: 05_vm_23_per-cpu-pages-4
Only in 2.4.22aa1: 05_vm_24_accessed-ipi-only-smp-1
Only in 2.4.22aa1: 10_lvm-snapshot-check-3
Only in 2.4.23pre6aa1: 10_lvm-snapshot-check-4
Only in 2.4.23pre6aa1: 20_rcu-poll-10
Only in 2.4.22aa1: 20_rcu-poll-9
Only in 2.4.22aa1: 30_irq-balance-15
Only in 2.4.23pre6aa1: 30_irq-balance-16
Only in 2.4.22aa1: 60_net-exports-3
Only in 2.4.23pre6aa1: 60_net-exports-4
Only in 2.4.22aa1: 60_tux-syscall-5
Only in 2.4.23pre6aa1: 60_tux-syscall-6
Only in 2.4.22aa1: 60_tux-sysctl-3
Only in 2.4.23pre6aa1: 60_tux-sysctl-4
Only in 2.4.22aa1: 90_proc-mapped-base-5
Only in 2.4.23pre6aa1: 90_proc-mapped-base-6
Only in 2.4.22aa1: 93_NUMAQ-13
Only in 2.4.23pre6aa1: 93_NUMAQ-14
Only in 2.4.22aa1: 96_inode_read_write-atomic-8
Only in 2.4.23pre6aa1: 96_inode_read_write-atomic-9
Only in 2.4.22aa1: 9900_aio-23.gz
Only in 2.4.23pre6aa1: 9900_aio-24.gz
Only in 2.4.22aa1: 9903_aio-22-ppc-1
Only in 2.4.23pre6aa1: 9903_aio-22-ppc-2
Only in 2.4.22aa1: 9910_shm-largepage-16.gz
Only in 2.4.23pre6aa1: 9910_shm-largepage-17.gz
Only in 2.4.22aa1: 9920_kgdb-11.gz
Only in 2.4.23pre6aa1: 9920_kgdb-12.gz
Only in 2.4.22aa1: 9925_kmsgdump-0.4.4-3.gz
Only in 2.4.23pre6aa1: 9925_kmsgdump-0.4.4-4.gz
Only in 2.4.22aa1: 9950_futex-5.gz
Only in 2.4.23pre6aa1: 9950_futex-6.gz
Only in 2.4.22aa1: 9999_sched_yield_scale-6
Only in 2.4.23pre6aa1: 9999_sched_yield_scale-8
Only in 2.4.22aa1: 9999901_scsi-softirq-2
Only in 2.4.23pre6aa1: 9999901_scsi-softirq-3
Only in 2.4.22aa1: 9999900_ecc-20030225-1.gz
Only in 2.4.23pre6aa1: 9999900_ecc-20030225-2.gz
Only in 2.4.22aa1: 9999900_ikd-2.gz
Only in 2.4.23pre6aa1: 9999900_ikd-4.gz
Only in 2.4.22aa1: 9999900_ipc-rcu-1
Only in 2.4.23pre6aa1: 9999900_ipc-rcu-2
Only in 2.4.22aa1: 9999900_monitor-mwait-1
Only in 2.4.23pre6aa1: 9999900_monitor-mwait-2

	Rediffed.

Only in 2.4.23pre6aa1: 00_do_brk-1

	glitch fixup from Andrew.

Only in 2.4.23pre6aa1: 00_e-nodev-1

	s/NODEV/ENODEV/ fixes from Vojtech.

Only in 2.4.23pre6aa1: 00_get_request_wait-race-1

	Add missing smb_mb().

Only in 2.4.22aa1: 00_log-buf-len-1
Only in 2.4.23pre6aa1: 00_log-buf-len-dynamic-1

	Ported to 2.4.23pre6 to allow the configuration of the
	buffer size at compile time too.

Only in 2.4.23pre6aa1: 00_proc-readlink-1

	Remeber to free tmp buffer (from spender)

Only in 2.4.22aa1: 00_sched-O1-aa-2.4.19rc3-17.gz
Only in 2.4.23pre6aa1: 00_sched-O1-aa-2.4.19rc3-18.gz

	Let the idle load_balance pass to pick any task it find,
	if we go idle it means we've no task left. This fix speeds up number
	crunching up to 100% in some arch. The very same fix incidentally is
	also present in current 2.6.

Only in 2.4.23pre6aa1: 00_sk98lin-char-fix-1

	Count the right number of bytes (not ints).

Only in 2.4.23pre6aa1: 00_sync-buffer-scale-1

	Don't take the bkl (the same paths runs w/o the bkl elsewhere), from
	Chris Mason.

Only in 2.4.23pre6aa1: 01_softirq-nowait-1

	We must really keep executing softirqs or it may take
	a too long time before ksoftirqd gets some cpu time.
	For an embedded device you may want to remove this,
	on a server we need this still.

Only in 2.4.23pre6aa1: 05_vm_27-pte-dirty-bit-in-hardware-1

	This fixes a longstanding bug for a number of archs that haven't the
	dirty bit updated in hardware. For those archs we can't mark the pte
	writeable when it's still in swap cache, unless we don't mark it dirty
	too at the same time. Otherwise the cpu will go ahead writing to the
	page, no fault will happen and the swapcache will be still clean, and
	the data will be lost at the next zeroIO swapout leading to userspace
	data corruption and segfaults during swap. Affected archs are
	alpha/s390/s390x for example.

	This bug was specific to the -aa VM, it couldn't happen
	in mainline. In my tree I optimized the code to exploited
	properties of archs that updates the bit in hardware for the
	first time. Hence the first need of a #define to differentiate the
	two code paths. The logic in the software-dirty-bit case will
	be less efficient of course (that's why there's a difference
	in the first place).

	This is an obvious noop for x86 and x86-64 for example.

	NOTE: the software-dirty-bit code is safe for all archs, the other way
	around not.

Only in 2.4.23pre6aa1: 30_18-busy-inodes-1

	Try to avoid to leave busy inodes in autofs unmount. From Olaf Kirch.
	(original from Trond).

Only in 2.4.23pre6aa1: 30_19-nfs-kill-unlock-1

	Ignore errors on exiting lock cleanups. From Trond.

Only in 2.4.22aa1: 70_xfs-1.3-2.gz
Only in 2.4.23pre6aa1: 70_xfs-1.3-3.gz
Only in 2.4.22aa1: 70_xfs-sysctl-3
Only in 2.4.23pre6aa1: 70_xfs13pre-final-1.gz
Only in 2.4.23pre6aa1: 71_qsort-1
Only in 2.4.22aa1: 71_xfs-VM_IO-1
Only in 2.4.22aa1: 71_xfs-aa-4
Only in 2.4.23pre6aa1: 71_xfs-aa-5
Only in 2.4.23pre6aa1: 71_xfs-mmap-1
Only in 2.4.22aa1: 71_xfs-tuning-1

	XFS 13pre-final merged.

Only in 2.4.23pre6aa1: 9999900_BH_Sync-remove-1

	To really be able to help and not just waste some
	seek and cpu, wait_on_buffer should honour the
	BH_Sync, but this is late in 2.4, and so I prefer
	to get rid of it instead of giving it the full power
	it should have.

Only in 2.4.23pre6aa1: 9999900_soft-float-1

	Trap any usage of the FPU in kernel (needed
	to trap things like schedule_timeout(HZ*0.1)).

Only in 2.4.22aa1: 9999901_aio-network-poll-pipe-1
Only in 2.4.23pre6aa1: 9999901_aio-poll-2

	Leave only the aio-poll functionality because
	the network aio is still unfinished and nobody
	needs the pipe one (AFIK).

Only in 2.4.23pre6aa1: 9999_00_x86_64-suse-1
Only in 2.4.23pre6aa1: 9999_00_x86_64-sys-1
Only in 2.4.23pre6aa1: 9999_00_x86_64-tsc-c0-bandaid-1
Only in 2.4.23pre6aa1: 9999_00_x86_64-warning-1
Only in 2.4.23pre6aa1: 9999_00_x86_64-zone-startpfn-1
Only in 2.4.23pre6aa1: 9999_01_x86_64-aio-bigpages-1
Only in 2.4.23pre6aa1: 9999_01_x86_64-aio-export-1
Only in 2.4.23pre6aa1: 9999_01_x86_64-bitops-1
Only in 2.4.23pre6aa1: 9999_01_x86_64-discontig-pmd-1
Only in 2.4.23pre6aa1: 9999_01_x86_64-epoll-1
Only in 2.4.23pre6aa1: 9999_01_x86_64-fault32-wrap-1
Only in 2.4.23pre6aa1: 9999_01_x86_64-kgdb-1
Only in 2.4.23pre6aa1: 9999_01_x86_64-lvm32-no-checks-1

	Merge x86-64 updates from Andi Kleen.

Only in 2.4.23pre6aa1: 9999_athlon-errata-prefetch-1

	Fix athlon prefetch invalid faults from userspace.
	From Andi Kleen.

Only in 2.4.23pre6aa1: 9999_z-execve-race-1

	Fix race in exit_mmap.

Only in 2.4.23pre6aa1: 9999_z-laptopmode-1

	Allow the first read hitting the disk to flush all the dirty buffers.
	From Jens Axboe.

Only in 2.4.22aa1: 9999900_desktop-4
Only in 2.4.23pre6aa1: 9999_zz-dynamic-timeslice-1
Only in 2.4.23pre6aa1: 9999_zzz-dynamic-hz-1

	HZ is now dynamic, you can boot with HZ=50 HZ=100 HZ=500
	or HZ=1000. However only HZ=100 and HZ=1000 are supported.
	Anything different from HZ=100 can trigger device driver
	bugs (those would already trigger on ia64 and alpha but
	on x86 the amount of drivers in use is larger).

	But wait, you shouldn't use HZ=, you should only pass 'desktop' if you
	want to use the machine to behave as a better desktop and the kernel
	will just do the right thing.

	max-timeslice/min-timeslice tunables are also provided
	as sysctl. Again no need to tune those, just pass
	'desktop' if your machine is a desktop.

	The scheduler has internal heuristics (the avg_sleep for
	example in the o1 scheduler) to try to identify the interactive
	tasks. Since those are heuristics there's also the chance
	of failing. By rescheduling taks at around 100hz even if
	the heuristic fails there's quite a good margin before your
	eye can see it. This should help with video players and games.

Only in 2.4.23pre6aa1: 9999_zzzz-stackoverflow-1

	Prevent overflows from happening on top of softirq. From
	Hugh Dickins.

Andrea - If you prefer relying on open source software, check these links:
	    rsync.kernel.org::pub/scm/linux/kernel/bkcvs/linux-2.[45]/
	    http://www.cobite.com/cvsps/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 2.4.23pre6aa1
  2003-10-02 15:26 2.4.23pre6aa1 Andrea Arcangeli
@ 2003-10-03  0:09 ` Mathias Kretschmer
  2003-10-03  7:41   ` 2.4.23pre6aa1 Andrea Arcangeli
  2003-10-03  0:51 ` 2.4.23pre6aa1 Mike Fedyk
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Mathias Kretschmer @ 2003-10-03  0:09 UTC (permalink / raw)
  To: Andrea Arcangeli; +Cc: linux-kernel

I'm getting the below errors compiling the bttv module.

Also, the commercial OSS sound driver fails to compile against it.
It compiled under -pre6.

Otherwise, it seems to work fine for me.

Let me know, if you need any further info.

Cheers,

Mathias


make[4]: Entering directory `/usr/src/linux-2.4/drivers/media/video'
gcc -D__KERNEL__ -I/usr/src/linux-2.4/include -Wall -Wstrict-prototypes 
-Wno-trigraphs           -O4 -fno-strict-aliasing -fno-common 
-fomit-frame-pointer -pipe -msoft-float -mprefer 
red-stack-boundary=2 -march=pentium3   -nostdinc -iwithprefix include 
-DKBUILD_BASENAM          E=bttv_cards  -c -o bttv-cards.o bttv-cards.c
bttv-cards.c: In function `pvr_boot':
bttv-cards.c:2552: structure has no member named `dev'
bttv-cards.c:2555: warning: implicit declaration of function 
`request_firmware'
bttv-cards.c:2559: `rc' undeclared (first use in this function)
bttv-cards.c:2559: (Each undeclared identifier is reported only once
bttv-cards.c:2559: for each function it appears in.)
bttv-cards.c:2561: dereferencing pointer to incomplete type
bttv-cards.c:2561: dereferencing pointer to incomplete type
bttv-cards.c:2562: warning: implicit declaration of function 
`release_firmware'

Andrea Arcangeli wrote:
> URL:
> 
> 	http://www.us.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.23pre6aa1.gz
> 	http://www.us.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.23pre6aa1/
> 
> Probably the most notable new feature is that you can now pass 'desktop'
> as parameter to the kernel in lilo to ask the kernel to behave optimally
> for a desktop machine. No need of compile time options anymore. For more
> experienced users HZ=500/HZ=50/HZ=200 should work fine too, then you can
> tune the timeslices by hand but you must know what you're doing.
> 
> You can verify everything went well after boot with:
> 
> 	cat /proc/sys/kernel/{*timeslice,HZ}
> 
> This kernel seems to boot fine again on x86-64 too. The merges in pre6
> were helpful.
> 
> Due the amount of changes you may not want to run this on any production
> box (note: not because of the dynamic-hz feature, but because of
> everything else, the dynamic-hz is the only one that has no way to break
> anything, modulo stuff that would break anyways on ia64 and alpha
> already and that you can workaround trivially with HZ=100 if needed).
> 
> Only in 2.4.22aa1: 00_config-smp-1
> Only in 2.4.22aa1: 00_copy-namespace-1
> Only in 2.4.22aa1: 00_panic-console-switch-1
> Only in 2.4.22aa1: 00_pgt-cache-leak-2
> Only in 2.4.22aa1: 00_read_full_page-get_block-err-2
> Only in 2.4.22aa1: 00_sk98lin_2.4.22-20030902-1.gz
> Only in 2.4.22aa1: 05_vm_03_vm_tunables-4
> Only in 2.4.22aa1: 05_vm_05_zone_accounting-2
> Only in 2.4.22aa1: 05_vm_06_swap_out-3
> Only in 2.4.22aa1: 05_vm_07_local_pages-4
> Only in 2.4.22aa1: 05_vm_09_misc_junk-3
> Only in 2.4.22aa1: 05_vm_16_active_free_zone_bhs-1
> Only in 2.4.22aa1: 05_vm_20_cleanups-3
> Only in 2.4.22aa1: 9999900_request-firmware-1
> 
> 	Merged in mainline.
> 
> Only in 2.4.22aa1: 00_cpu-affinity-syscall-rml-4
> Only in 2.4.23pre6aa1: 00_cpu-affinity-syscall-rml-5
> Only in 2.4.22aa1: 00_extraversion-29
> Only in 2.4.23pre6aa1: 00_extraversion-30
> Only in 2.4.22aa1: 00_global-irq-race-1
> Only in 2.4.23pre6aa1: 00_global-irq-race-2
> Only in 2.4.22aa1: 00_rwsem-fair-38
> Only in 2.4.22aa1: 00_rwsem-fair-38-recursive-8
> Only in 2.4.23pre6aa1: 00_rwsem-fair-39
> Only in 2.4.23pre6aa1: 00_rwsem-fair-39-recursive-8
> Only in 2.4.22aa1: 00_silent-stack-overflow-18
> Only in 2.4.23pre6aa1: 00_silent-stack-overflow-19
> Only in 2.4.22aa1: 00_x86-optimize-apic-irq-and-cacheline-2
> Only in 2.4.23pre6aa1: 00_x86-optimize-apic-irq-and-cacheline-3
> Only in 2.4.22aa1: 05_vm_22_vm-anon-lru-1
> Only in 2.4.23pre6aa1: 05_vm_22_vm-anon-lru-2
> Only in 2.4.22aa1: 05_vm_17_rest-10
> Only in 2.4.23pre6aa1: 05_vm_26-rest-1
> Only in 2.4.22aa1: 05_vm_23_per-cpu-pages-3
> Only in 2.4.23pre6aa1: 05_vm_23_per-cpu-pages-4
> Only in 2.4.22aa1: 05_vm_24_accessed-ipi-only-smp-1
> Only in 2.4.22aa1: 10_lvm-snapshot-check-3
> Only in 2.4.23pre6aa1: 10_lvm-snapshot-check-4
> Only in 2.4.23pre6aa1: 20_rcu-poll-10
> Only in 2.4.22aa1: 20_rcu-poll-9
> Only in 2.4.22aa1: 30_irq-balance-15
> Only in 2.4.23pre6aa1: 30_irq-balance-16
> Only in 2.4.22aa1: 60_net-exports-3
> Only in 2.4.23pre6aa1: 60_net-exports-4
> Only in 2.4.22aa1: 60_tux-syscall-5
> Only in 2.4.23pre6aa1: 60_tux-syscall-6
> Only in 2.4.22aa1: 60_tux-sysctl-3
> Only in 2.4.23pre6aa1: 60_tux-sysctl-4
> Only in 2.4.22aa1: 90_proc-mapped-base-5
> Only in 2.4.23pre6aa1: 90_proc-mapped-base-6
> Only in 2.4.22aa1: 93_NUMAQ-13
> Only in 2.4.23pre6aa1: 93_NUMAQ-14
> Only in 2.4.22aa1: 96_inode_read_write-atomic-8
> Only in 2.4.23pre6aa1: 96_inode_read_write-atomic-9
> Only in 2.4.22aa1: 9900_aio-23.gz
> Only in 2.4.23pre6aa1: 9900_aio-24.gz
> Only in 2.4.22aa1: 9903_aio-22-ppc-1
> Only in 2.4.23pre6aa1: 9903_aio-22-ppc-2
> Only in 2.4.22aa1: 9910_shm-largepage-16.gz
> Only in 2.4.23pre6aa1: 9910_shm-largepage-17.gz
> Only in 2.4.22aa1: 9920_kgdb-11.gz
> Only in 2.4.23pre6aa1: 9920_kgdb-12.gz
> Only in 2.4.22aa1: 9925_kmsgdump-0.4.4-3.gz
> Only in 2.4.23pre6aa1: 9925_kmsgdump-0.4.4-4.gz
> Only in 2.4.22aa1: 9950_futex-5.gz
> Only in 2.4.23pre6aa1: 9950_futex-6.gz
> Only in 2.4.22aa1: 9999_sched_yield_scale-6
> Only in 2.4.23pre6aa1: 9999_sched_yield_scale-8
> Only in 2.4.22aa1: 9999901_scsi-softirq-2
> Only in 2.4.23pre6aa1: 9999901_scsi-softirq-3
> Only in 2.4.22aa1: 9999900_ecc-20030225-1.gz
> Only in 2.4.23pre6aa1: 9999900_ecc-20030225-2.gz
> Only in 2.4.22aa1: 9999900_ikd-2.gz
> Only in 2.4.23pre6aa1: 9999900_ikd-4.gz
> Only in 2.4.22aa1: 9999900_ipc-rcu-1
> Only in 2.4.23pre6aa1: 9999900_ipc-rcu-2
> Only in 2.4.22aa1: 9999900_monitor-mwait-1
> Only in 2.4.23pre6aa1: 9999900_monitor-mwait-2
> 
> 	Rediffed.
> 
> Only in 2.4.23pre6aa1: 00_do_brk-1
> 
> 	glitch fixup from Andrew.
> 
> Only in 2.4.23pre6aa1: 00_e-nodev-1
> 
> 	s/NODEV/ENODEV/ fixes from Vojtech.
> 
> Only in 2.4.23pre6aa1: 00_get_request_wait-race-1
> 
> 	Add missing smb_mb().
> 
> Only in 2.4.22aa1: 00_log-buf-len-1
> Only in 2.4.23pre6aa1: 00_log-buf-len-dynamic-1
> 
> 	Ported to 2.4.23pre6 to allow the configuration of the
> 	buffer size at compile time too.
> 
> Only in 2.4.23pre6aa1: 00_proc-readlink-1
> 
> 	Remeber to free tmp buffer (from spender)
> 
> Only in 2.4.22aa1: 00_sched-O1-aa-2.4.19rc3-17.gz
> Only in 2.4.23pre6aa1: 00_sched-O1-aa-2.4.19rc3-18.gz
> 
> 	Let the idle load_balance pass to pick any task it find,
> 	if we go idle it means we've no task left. This fix speeds up number
> 	crunching up to 100% in some arch. The very same fix incidentally is
> 	also present in current 2.6.
> 
> Only in 2.4.23pre6aa1: 00_sk98lin-char-fix-1
> 
> 	Count the right number of bytes (not ints).
> 
> Only in 2.4.23pre6aa1: 00_sync-buffer-scale-1
> 
> 	Don't take the bkl (the same paths runs w/o the bkl elsewhere), from
> 	Chris Mason.
> 
> Only in 2.4.23pre6aa1: 01_softirq-nowait-1
> 
> 	We must really keep executing softirqs or it may take
> 	a too long time before ksoftirqd gets some cpu time.
> 	For an embedded device you may want to remove this,
> 	on a server we need this still.
> 
> Only in 2.4.23pre6aa1: 05_vm_27-pte-dirty-bit-in-hardware-1
> 
> 	This fixes a longstanding bug for a number of archs that haven't the
> 	dirty bit updated in hardware. For those archs we can't mark the pte
> 	writeable when it's still in swap cache, unless we don't mark it dirty
> 	too at the same time. Otherwise the cpu will go ahead writing to the
> 	page, no fault will happen and the swapcache will be still clean, and
> 	the data will be lost at the next zeroIO swapout leading to userspace
> 	data corruption and segfaults during swap. Affected archs are
> 	alpha/s390/s390x for example.
> 
> 	This bug was specific to the -aa VM, it couldn't happen
> 	in mainline. In my tree I optimized the code to exploited
> 	properties of archs that updates the bit in hardware for the
> 	first time. Hence the first need of a #define to differentiate the
> 	two code paths. The logic in the software-dirty-bit case will
> 	be less efficient of course (that's why there's a difference
> 	in the first place).
> 
> 	This is an obvious noop for x86 and x86-64 for example.
> 
> 	NOTE: the software-dirty-bit code is safe for all archs, the other way
> 	around not.
> 
> Only in 2.4.23pre6aa1: 30_18-busy-inodes-1
> 
> 	Try to avoid to leave busy inodes in autofs unmount. From Olaf Kirch.
> 	(original from Trond).
> 
> Only in 2.4.23pre6aa1: 30_19-nfs-kill-unlock-1
> 
> 	Ignore errors on exiting lock cleanups. From Trond.
> 
> Only in 2.4.22aa1: 70_xfs-1.3-2.gz
> Only in 2.4.23pre6aa1: 70_xfs-1.3-3.gz
> Only in 2.4.22aa1: 70_xfs-sysctl-3
> Only in 2.4.23pre6aa1: 70_xfs13pre-final-1.gz
> Only in 2.4.23pre6aa1: 71_qsort-1
> Only in 2.4.22aa1: 71_xfs-VM_IO-1
> Only in 2.4.22aa1: 71_xfs-aa-4
> Only in 2.4.23pre6aa1: 71_xfs-aa-5
> Only in 2.4.23pre6aa1: 71_xfs-mmap-1
> Only in 2.4.22aa1: 71_xfs-tuning-1
> 
> 	XFS 13pre-final merged.
> 
> Only in 2.4.23pre6aa1: 9999900_BH_Sync-remove-1
> 
> 	To really be able to help and not just waste some
> 	seek and cpu, wait_on_buffer should honour the
> 	BH_Sync, but this is late in 2.4, and so I prefer
> 	to get rid of it instead of giving it the full power
> 	it should have.
> 
> Only in 2.4.23pre6aa1: 9999900_soft-float-1
> 
> 	Trap any usage of the FPU in kernel (needed
> 	to trap things like schedule_timeout(HZ*0.1)).
> 
> Only in 2.4.22aa1: 9999901_aio-network-poll-pipe-1
> Only in 2.4.23pre6aa1: 9999901_aio-poll-2
> 
> 	Leave only the aio-poll functionality because
> 	the network aio is still unfinished and nobody
> 	needs the pipe one (AFIK).
> 
> Only in 2.4.23pre6aa1: 9999_00_x86_64-suse-1
> Only in 2.4.23pre6aa1: 9999_00_x86_64-sys-1
> Only in 2.4.23pre6aa1: 9999_00_x86_64-tsc-c0-bandaid-1
> Only in 2.4.23pre6aa1: 9999_00_x86_64-warning-1
> Only in 2.4.23pre6aa1: 9999_00_x86_64-zone-startpfn-1
> Only in 2.4.23pre6aa1: 9999_01_x86_64-aio-bigpages-1
> Only in 2.4.23pre6aa1: 9999_01_x86_64-aio-export-1
> Only in 2.4.23pre6aa1: 9999_01_x86_64-bitops-1
> Only in 2.4.23pre6aa1: 9999_01_x86_64-discontig-pmd-1
> Only in 2.4.23pre6aa1: 9999_01_x86_64-epoll-1
> Only in 2.4.23pre6aa1: 9999_01_x86_64-fault32-wrap-1
> Only in 2.4.23pre6aa1: 9999_01_x86_64-kgdb-1
> Only in 2.4.23pre6aa1: 9999_01_x86_64-lvm32-no-checks-1
> 
> 	Merge x86-64 updates from Andi Kleen.
> 
> Only in 2.4.23pre6aa1: 9999_athlon-errata-prefetch-1
> 
> 	Fix athlon prefetch invalid faults from userspace.
> 	From Andi Kleen.
> 
> Only in 2.4.23pre6aa1: 9999_z-execve-race-1
> 
> 	Fix race in exit_mmap.
> 
> Only in 2.4.23pre6aa1: 9999_z-laptopmode-1
> 
> 	Allow the first read hitting the disk to flush all the dirty buffers.
> 	From Jens Axboe.
> 
> Only in 2.4.22aa1: 9999900_desktop-4
> Only in 2.4.23pre6aa1: 9999_zz-dynamic-timeslice-1
> Only in 2.4.23pre6aa1: 9999_zzz-dynamic-hz-1
> 
> 	HZ is now dynamic, you can boot with HZ=50 HZ=100 HZ=500
> 	or HZ=1000. However only HZ=100 and HZ=1000 are supported.
> 	Anything different from HZ=100 can trigger device driver
> 	bugs (those would already trigger on ia64 and alpha but
> 	on x86 the amount of drivers in use is larger).
> 
> 	But wait, you shouldn't use HZ=, you should only pass 'desktop' if you
> 	want to use the machine to behave as a better desktop and the kernel
> 	will just do the right thing.
> 
> 	max-timeslice/min-timeslice tunables are also provided
> 	as sysctl. Again no need to tune those, just pass
> 	'desktop' if your machine is a desktop.
> 
> 	The scheduler has internal heuristics (the avg_sleep for
> 	example in the o1 scheduler) to try to identify the interactive
> 	tasks. Since those are heuristics there's also the chance
> 	of failing. By rescheduling taks at around 100hz even if
> 	the heuristic fails there's quite a good margin before your
> 	eye can see it. This should help with video players and games.
> 
> Only in 2.4.23pre6aa1: 9999_zzzz-stackoverflow-1
> 
> 	Prevent overflows from happening on top of softirq. From
> 	Hugh Dickins.
> 
> Andrea - If you prefer relying on open source software, check these links:
> 	    rsync.kernel.org::pub/scm/linux/kernel/bkcvs/linux-2.[45]/
> 	    http://www.cobite.com/cvsps/
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 2.4.23pre6aa1
  2003-10-02 15:26 2.4.23pre6aa1 Andrea Arcangeli
  2003-10-03  0:09 ` 2.4.23pre6aa1 Mathias Kretschmer
@ 2003-10-03  0:51 ` Mike Fedyk
  2003-10-03  7:37   ` 2.4.23pre6aa1 Andrea Arcangeli
  2003-10-03 10:15 ` 2.4.23pre6aa1: HZ not constant? Eyal Lebedinsky
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Mike Fedyk @ 2003-10-03  0:51 UTC (permalink / raw)
  To: Andrea Arcangeli; +Cc: linux-kernel

On Thu, Oct 02, 2003 at 05:26:48PM +0200, Andrea Arcangeli wrote:
> Only in 2.4.23pre6aa1: 05_vm_27-pte-dirty-bit-in-hardware-1
> 
> 	This fixes a longstanding bug for a number of archs that haven't the
> 	dirty bit updated in hardware. For those archs we can't mark the pte
> 	writeable when it's still in swap cache, unless we don't mark it dirty
> 	too at the same time. Otherwise the cpu will go ahead writing to the
> 	page, no fault will happen and the swapcache will be still clean, and
> 	the data will be lost at the next zeroIO swapout leading to userspace
> 	data corruption and segfaults during swap. Affected archs are
> 	alpha/s390/s390x for example.
> 
> 	This bug was specific to the -aa VM, it couldn't happen
> 	in mainline. In my tree I optimized the code to exploited
> 	properties of archs that updates the bit in hardware for the
> 	first time. Hence the first need of a #define to differentiate the
> 	two code paths. The logic in the software-dirty-bit case will
> 	be less efficient of course (that's why there's a difference
> 	in the first place).

What does rmap do in this case then?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 2.4.23pre6aa1
  2003-10-03  0:51 ` 2.4.23pre6aa1 Mike Fedyk
@ 2003-10-03  7:37   ` Andrea Arcangeli
  0 siblings, 0 replies; 13+ messages in thread
From: Andrea Arcangeli @ 2003-10-03  7:37 UTC (permalink / raw)
  To: linux-kernel

On Thu, Oct 02, 2003 at 05:51:16PM -0700, Mike Fedyk wrote:
> On Thu, Oct 02, 2003 at 05:26:48PM +0200, Andrea Arcangeli wrote:
> > Only in 2.4.23pre6aa1: 05_vm_27-pte-dirty-bit-in-hardware-1
> > 
> > 	This fixes a longstanding bug for a number of archs that haven't the
> > 	dirty bit updated in hardware. For those archs we can't mark the pte
> > 	writeable when it's still in swap cache, unless we don't mark it dirty
> > 	too at the same time. Otherwise the cpu will go ahead writing to the
> > 	page, no fault will happen and the swapcache will be still clean, and
> > 	the data will be lost at the next zeroIO swapout leading to userspace
> > 	data corruption and segfaults during swap. Affected archs are
> > 	alpha/s390/s390x for example.
> > 
> > 	This bug was specific to the -aa VM, it couldn't happen
> > 	in mainline. In my tree I optimized the code to exploited
> > 	properties of archs that updates the bit in hardware for the
> > 	first time. Hence the first need of a #define to differentiate the
> > 	two code paths. The logic in the software-dirty-bit case will
> > 	be less efficient of course (that's why there's a difference
> > 	in the first place).
> 
> What does rmap do in this case then?

no idea, but likely it wasn't affected. This was an ultra optimization I
did, it was very aggressive and it broke the archs with the pte-dirty
bit handled in software.

this is also the proof that the pte_* abstraction is not trasparent at
all, and we definitely need a compile time #define to differentiate the
two cases (I added it in the above patch for x86 and x86-64 and as said
above this patch is infact an obvious noop for those two archs).

This is the code that broke it. the 'page' pointed by the pte is an
exclusive page at that point, it means it's not shared by any other
"mm" and it's of course an anonymous page. It can be in the swapcache or
not, it doesn't make any difference (if it's not in the swapcache it's
guaranteed to be marked PG_dirty at the phyiscal level).

		if (write_access)
			pte = pte_mkdirty(pte);
		if (vma->vm_flags & VM_WRITE)
			pte = pte_mkwrite(pte);

This code is perfectly correct and it's more efficient than the
software-dirty-bitflag because it avoids a copy-on-write page fault if
this was a read access. If it was a read access we want to mark the pte
writeable but not dirty, so if the page is still in the swapcache and
nobody writes to it, we can swap out it zerocost. And at the same time
we avoid any copy-on-write pagefault if somebody writes later to the
page after we instantiated the mapping.

This is instead the version needed by archs with the dirty bit in
software like ppc/s390/s390x/ppc64/alpha (there maybe more).

		if (write_access)
			pte = pte_mkdirty(pte_mkwrite(pte));

On these archs we simply can't mark the pte writeable if we don't mark
it dirty too, or somebody can write to the swappage and we would never
notice, and the kernel would think it can swapout zerocost (swapcache
still clean), while it really should do the I/O in that case.

The bug wasn't too bad, just a segfault or data corruption in userspace
during heavy swapping. The kernel was stable, there's no way to crash
the kernel forgetting a dirty bit. So it was also hardly noticeable. And
if you had zero swap it simply couldn't trigger because no swapcache
could be allocated. So the workaround swapoff -a is 100% reliable.

Andrea - If you prefer relying on open source software, check these links:
	    rsync.kernel.org::pub/scm/linux/kernel/bkcvs/linux-2.[45]/
	    http://www.cobite.com/cvsps/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 2.4.23pre6aa1
  2003-10-03  0:09 ` 2.4.23pre6aa1 Mathias Kretschmer
@ 2003-10-03  7:41   ` Andrea Arcangeli
  0 siblings, 0 replies; 13+ messages in thread
From: Andrea Arcangeli @ 2003-10-03  7:41 UTC (permalink / raw)
  To: Mathias Kretschmer; +Cc: linux-kernel

On Thu, Oct 02, 2003 at 08:09:28PM -0400, Mathias Kretschmer wrote:
> I'm getting the below errors compiling the bttv module.
> 
> Also, the commercial OSS sound driver fails to compile against it.
> It compiled under -pre6.
> 
> Otherwise, it seems to work fine for me.
> 
> Let me know, if you need any further info.

did you configure pre6 mainline with CONFIG_FW_LOADER = y ?

Andrea - If you prefer relying on open source software, check these links:
	    rsync.kernel.org::pub/scm/linux/kernel/bkcvs/linux-2.[45]/
	    http://www.cobite.com/cvsps/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 2.4.23pre6aa1: HZ not constant?
  2003-10-02 15:26 2.4.23pre6aa1 Andrea Arcangeli
  2003-10-03  0:09 ` 2.4.23pre6aa1 Mathias Kretschmer
  2003-10-03  0:51 ` 2.4.23pre6aa1 Mike Fedyk
@ 2003-10-03 10:15 ` Eyal Lebedinsky
  2003-10-03 12:02   ` Andrea Arcangeli
  2003-10-03 14:26 ` 2.4.23pre6aa1: scsi/pcmcia qlogic does not build Eyal Lebedinsky
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Eyal Lebedinsky @ 2003-10-03 10:15 UTC (permalink / raw)
  To: Andrea Arcangeli; +Cc: linux-kernel

I am getting failures like this:

tr.c:81: initializer element is not constant
make[3]: *** [tr.o] Error 1
make[3]: Leaving directory
`/data2/usr/local/src/linux-2.4-pre-aa/net/802'


ecc.c:43: initializer element is not constant
ecc.c:1495: warning: function declaration isn't a prototype
make[2]: *** [ecc.o] Error 1
make[2]: Leaving directory
`/data2/usr/local/src/linux-2.4-pre-aa/drivers/char'

where the problem is a file level definition like
	static var = HZ;

and it seems that HZ is not anymore valid here (see include/linux/hz.h).

I have:
# CONFIG_DEBUG_KERNEL is not set

My gcc is 2.95 (Debian stable/woody).

--
Eyal Lebedinsky (eyal@eyal.emu.id.au) <http://samba.org/eyal/>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 2.4.23pre6aa1: HZ not constant?
  2003-10-03 10:15 ` 2.4.23pre6aa1: HZ not constant? Eyal Lebedinsky
@ 2003-10-03 12:02   ` Andrea Arcangeli
  0 siblings, 0 replies; 13+ messages in thread
From: Andrea Arcangeli @ 2003-10-03 12:02 UTC (permalink / raw)
  To: Eyal Lebedinsky; +Cc: linux-kernel

On Fri, Oct 03, 2003 at 08:15:41PM +1000, Eyal Lebedinsky wrote:
> I am getting failures like this:
> 
> tr.c:81: initializer element is not constant
> make[3]: *** [tr.o] Error 1
> make[3]: Leaving directory
> `/data2/usr/local/src/linux-2.4-pre-aa/net/802'
> 
> 
> ecc.c:43: initializer element is not constant
> ecc.c:1495: warning: function declaration isn't a prototype
> make[2]: *** [ecc.o] Error 1
> make[2]: Leaving directory
> `/data2/usr/local/src/linux-2.4-pre-aa/drivers/char'
> 
> where the problem is a file level definition like
> 	static var = HZ;
> 
> and it seems that HZ is not anymore valid here (see include/linux/hz.h).

HZ isn't known at compile time anymore, you pass it to the kernel as
parameter dynamically.

the way to fix it is:

1) if the 'static var' variable is somehow visible to userspace then
   use USER_HZ and the user_to_kenrel_hz/user_to_kernel_hz_overflow
   (the latter is more efficient, it introduces zero branches , but it gives
   wrong results for very big inputs, it's ideal for sysctl set to
   things like 5*USER_HZ or anyways smaller than 2G/HZ ~= 1million).
2) if the static var is not visible to userspace (either via sysctl
   or module parameter) then we can just initialize it dynamically

This is the relevant fix for the above two problems. Please try again
and let me know if something else doesn't compile. Thanks!

--- x/drivers/char/ecc.c.~1~	2003-10-02 15:08:07.000000000 +0200
+++ x/drivers/char/ecc.c	2003-10-03 13:52:16.000000000 +0200
@@ -40,7 +40,7 @@
 #define max(a,b)	((a)>(b)?(a):(b))
 
 static int ecc_scrub = -1;
-static int ecc_ticks = HZ;
+static int ecc_ticks = USER_HZ;
 
 static spinlock_t ecc_lock = SPIN_LOCK_UNLOCKED;
 static int proc_ram_valid = 0;
@@ -1410,7 +1410,7 @@ static void check_ecc(unsigned long dumm
 	if (cs.clear_err)
 		cs.clear_err();
 
-	ecc_timer.expires = jiffies + ecc_ticks;
+	ecc_timer.expires = jiffies + user_to_kernel_hz_overflow(ecc_ticks);
 	add_timer(&ecc_timer);
 
 	spin_unlock (&ecc_lock);
@@ -1616,8 +1616,8 @@ static int __init ecc_init(void) 
 	spin_lock_bh (&ecc_lock);
 
 	printk(KERN_INFO "ECC: monitor version %s\n", ECC_VER);
-	if (ecc_ticks != HZ)
-		printk(KERN_INFO "ECC: interval=%d ticks\n", ecc_ticks);
+	if (user_to_kernel_hz_overflow(ecc_ticks) != HZ)
+		printk(KERN_INFO "ECC: interval=%d ticks\n", user_to_kernel_hz_overflow(ecc_ticks));
 
 	for (loop=0;loop<MAX_BANKS;loop++) {
 		bank[loop].endaddr = 0;
@@ -1650,7 +1650,7 @@ static int __init ecc_init(void) 
 
 	init_timer(&ecc_timer);
 	ecc_timer.function = check_ecc;
-	ecc_timer.expires = jiffies + ecc_ticks;
+	ecc_timer.expires = jiffies + user_to_kernel_hz_overflow(ecc_ticks);
 	add_timer(&ecc_timer);
 	ecc_timer_valid = 1;
 
@@ -1688,7 +1688,7 @@ MODULE_LICENSE("GPL");
 MODULE_PARM(ecc_scrub, "i");
 MODULE_PARM_DESC(ecc_scrub, "Force ECC scrubbing: 0=off 1=on");
 MODULE_PARM(ecc_ticks, "i");
-MODULE_PARM_DESC(ecc_ticks, "Timer interval (default HZ)");
+MODULE_PARM_DESC(ecc_ticks, "Timer interval (default USER_HZ)");
 
 module_init(ecc_init);
 module_exit(ecc_exit);
--- x/net/802/tr.c.~1~	2003-06-13 22:07:42.000000000 +0200
+++ x/net/802/tr.c	2003-10-03 13:59:02.000000000 +0200
@@ -69,7 +69,7 @@ struct rif_cache_s {	
 static rif_cache rif_table[RIF_TABLE_SIZE];
 static spinlock_t rif_lock = SPIN_LOCK_UNLOCKED;
 
-#define RIF_TIMEOUT 60*10*HZ
+#define RIF_TIMEOUT 60*10*USER_HZ
 #define RIF_CHECK_INTERVAL 60*HZ
 
 /*
@@ -78,7 +78,8 @@ static spinlock_t rif_lock = SPIN_LOCK_U
  
 static struct timer_list rif_timer;
 
-int sysctl_tr_rif_timeout = RIF_TIMEOUT;
+int __sysctl_tr_rif_timeout = RIF_TIMEOUT;
+#define sysctl_tr_rif_timeout user_to_kernel_hz_overflow(__sysctl_tr_rif_timeout)
 
 /*
  *	Put the headers on a token ring packet. Token ring source routing
@@ -545,7 +546,7 @@ static int rif_get_info(char *buffer,cha
 
 static int __init rif_init(void)
 {
-	rif_timer.expires  = RIF_TIMEOUT;
+	rif_timer.expires  = user_to_kernel_hz_overflow(RIF_TIMEOUT);
 	rif_timer.data     = 0L;
 	rif_timer.function = rif_check_expire;
 	init_timer(&rif_timer);
--- x/net/802/sysctl_net_802.c.~1~	2003-03-15 03:25:18.000000000 +0100
+++ x/net/802/sysctl_net_802.c	2003-10-03 13:59:19.000000000 +0200
@@ -19,9 +19,9 @@ ctl_table e802_table[] = {
 };
 
 #ifdef CONFIG_TR
-extern int sysctl_tr_rif_timeout;
+extern int __sysctl_tr_rif_timeout;
 ctl_table tr_table[] = {
-	{NET_TR_RIF_TIMEOUT, "rif_timeout", &sysctl_tr_rif_timeout, sizeof(int),
+	{NET_TR_RIF_TIMEOUT, "rif_timeout", &__sysctl_tr_rif_timeout, sizeof(int),
 	 0644, NULL, &proc_dointvec},
 	{0}
 };

Side note: there is no way that dynamic-hz could destabilize the kernel
(assuming you don't pass HZ != 100 at boot time which can trigger bugs
that would trigger anyways already on alpha or ia64). Every failure will
always happen at compile time (the worst one was HZ*0.1, but that's now
trapped by the -msoft-float, idea from Andi). I designed it strictly
that way, if you enable the CONFIG_DEBUG_HZ = y then even a reader of HZ
before the kernel parsing at boot initializes it will be safe defaulted
to USER_HZ and will only generate an harmless printk (this is useful to
port it to other archs).  However it's recommended to leave
CONFIG_DEBUG_HZ = n since enabling it would decrease performance due the
additional sanity checking. While dyanmic-hz with debugging disabled is
definitely not measurable in any benchmark and it allows to run true
desktop multimedia with a guarantee of timeslices that provides a
rescheduling rate higher than 50hz, that is the only way to reliably
fool our eyes. The scheduler heuristics still play an important role but
any heuristic isn't infallible and we can't depend on it. A desktop
isn't computing anyways, boosting the reschedule rate is perfectly
acceptable and the right thing to do IMHO.

Once somebody will start shipping cpus with address space numbers in the
tlb (no brainer and needed _huge_ hardware optimization), the slowdown
will be even less.

BTW, there's a -aa NUMA specific bug that is crashing my x86-64 in half
an hour (it's related to the paddr stuff needed for 32bit numa with PAE,
this mean 32bit NUMA is also unused), so don't compile a numa kernel,
select smp only. Next release should work fine with numa too.

> I have:
> # CONFIG_DEBUG_KERNEL is not set

that's ok, it's not related to this.

Andrea - If you prefer relying on open source software, check these links:
	    rsync.kernel.org::pub/scm/linux/kernel/bkcvs/linux-2.[45]/
	    http://www.cobite.com/cvsps/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 2.4.23pre6aa1: scsi/pcmcia qlogic does not build
  2003-10-02 15:26 2.4.23pre6aa1 Andrea Arcangeli
                   ` (2 preceding siblings ...)
  2003-10-03 10:15 ` 2.4.23pre6aa1: HZ not constant? Eyal Lebedinsky
@ 2003-10-03 14:26 ` Eyal Lebedinsky
  2003-10-03 16:26   ` Andrea Arcangeli
  2003-10-04  6:26 ` 2.4.23pre6aa1 Norberto Bensa
  2003-10-05  2:50 ` 2.4.23pre6aa1 Marcelo Tosatti
  5 siblings, 1 reply; 13+ messages in thread
From: Eyal Lebedinsky @ 2003-10-03 14:26 UTC (permalink / raw)
  To: Andrea Arcangeli; +Cc: linux-kernel

gcc -D__KERNEL__ -I/data2/usr/local/src/linux-2.4-pre-aa/include -Wall
-Wstrict-
prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common 
-fomit-frame-poi
nter -pipe -msoft-float -mpreferred-stack-boundary=2 -march=i686
-malign-functio
ns=4 -DMODULE -DMODVERSIONS -include
/data2/usr/local/src/linux-2.4-pre-aa/inclu
de/linux/modversions.h  -nostdinc -iwithprefix include
-DKBUILD_BASENAME=qlogicf
as -DPCMCIA -D__NO_VERSION__ -c -o qlogicfas.o ../qlogicfas.c
../qlogicfas.c: In function `qlogicfas_detect':
../qlogicfas.c:650: warning: passing arg 1 of
`scsi_unregister_R2c5e5a25' from incompatible pointer type
ld -m elf_i386 -r -o qlogic_cs.o qlogic_stub.o qlogicfas.o
qlogicfas.o: In function `init_module':
qlogicfas.o(.text+0xe40): multiple definition of `init_module'
qlogic_stub.o(.text+0x770): first defined here
ld: Warning: size of symbol `init_module' changed from 77 to 58 in
qlogicfas.o
qlogicfas.o: In function `cleanup_module':
qlogicfas.o(.text+0xe80): multiple definition of `cleanup_module'
qlogic_stub.o(.text+0x7c0): first defined here
ld: Warning: size of symbol `cleanup_module' changed from 40 to 16 in
qlogicfas.o
make[3]: *** [qlogic_cs.o] Error 1
make[3]: Leaving directory
`/data2/usr/local/src/linux-2.4-pre-aa/drivers/scsi/pcmcia'

A broken build?

--
Eyal Lebedinsky (eyal@eyal.emu.id.au) <http://samba.org/eyal/>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 2.4.23pre6aa1: scsi/pcmcia qlogic does not build
  2003-10-03 14:26 ` 2.4.23pre6aa1: scsi/pcmcia qlogic does not build Eyal Lebedinsky
@ 2003-10-03 16:26   ` Andrea Arcangeli
  0 siblings, 0 replies; 13+ messages in thread
From: Andrea Arcangeli @ 2003-10-03 16:26 UTC (permalink / raw)
  To: Eyal Lebedinsky; +Cc: linux-kernel

On Sat, Oct 04, 2003 at 12:26:43AM +1000, Eyal Lebedinsky wrote:
> gcc -D__KERNEL__ -I/data2/usr/local/src/linux-2.4-pre-aa/include -Wall
> -Wstrict-
> prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common 
> -fomit-frame-poi
> nter -pipe -msoft-float -mpreferred-stack-boundary=2 -march=i686
> -malign-functio
> ns=4 -DMODULE -DMODVERSIONS -include
> /data2/usr/local/src/linux-2.4-pre-aa/inclu
> de/linux/modversions.h  -nostdinc -iwithprefix include
> -DKBUILD_BASENAME=qlogicf
> as -DPCMCIA -D__NO_VERSION__ -c -o qlogicfas.o ../qlogicfas.c
> ../qlogicfas.c: In function `qlogicfas_detect':
> ../qlogicfas.c:650: warning: passing arg 1 of
> `scsi_unregister_R2c5e5a25' from incompatible pointer type
> ld -m elf_i386 -r -o qlogic_cs.o qlogic_stub.o qlogicfas.o
> qlogicfas.o: In function `init_module':
> qlogicfas.o(.text+0xe40): multiple definition of `init_module'
> qlogic_stub.o(.text+0x770): first defined here
> ld: Warning: size of symbol `init_module' changed from 77 to 58 in
> qlogicfas.o
> qlogicfas.o: In function `cleanup_module':
> qlogicfas.o(.text+0xe80): multiple definition of `cleanup_module'
> qlogic_stub.o(.text+0x7c0): first defined here
> ld: Warning: size of symbol `cleanup_module' changed from 40 to 16 in
> qlogicfas.o
> make[3]: *** [qlogic_cs.o] Error 1
> make[3]: Leaving directory
> `/data2/usr/local/src/linux-2.4-pre-aa/drivers/scsi/pcmcia'
> 
> A broken build?

it's a real compilation bug (not a mistake of your toolchain). The
init_module function is defined both in qlogic_stub.c and in qlogicfas.c
that imports scsi_module.c. One of the two has to go away or it can't
link due a name clash across two objects.

after a first look I'm unsure what's the right fix. I guess the init
module of the _cs has to get priority over the scsi_module.c. so
basically you could hack something to disable the include of
scsi_module.c from the other file. This assumes the _cs init_module will
eventually register the scsi device too from the pcmcia callback.

However this should be a generic problem not introduced by my changes.
Is there any scsi or pcmcia person interested in fixing it?

Andrea - If you prefer relying on open source software, check these links:
	    rsync.kernel.org::pub/scm/linux/kernel/bkcvs/linux-2.[45]/
	    http://www.cobite.com/cvsps/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 2.4.23pre6aa1
  2003-10-02 15:26 2.4.23pre6aa1 Andrea Arcangeli
                   ` (3 preceding siblings ...)
  2003-10-03 14:26 ` 2.4.23pre6aa1: scsi/pcmcia qlogic does not build Eyal Lebedinsky
@ 2003-10-04  6:26 ` Norberto Bensa
  2003-10-05  2:50 ` 2.4.23pre6aa1 Marcelo Tosatti
  5 siblings, 0 replies; 13+ messages in thread
From: Norberto Bensa @ 2003-10-04  6:26 UTC (permalink / raw)
  To: Andrea Arcangeli, linux-kernel

[-- Attachment #1: signed data --]
[-- Type: text/plain, Size: 399 bytes --]

Hi Andrea,

Andrea Arcangeli wrote:
> URL:
>
> 	http://www.us.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.2
>3pre6aa1.gz

find kernel -path '*/pcmcia/*' -name '*.o' | xargs -i -r ln -sf ../{} pcmcia
if [ -r System.map ]; then /sbin/depmod -ae -F System.map  2.4.23; fi
depmod: *** Unresolved symbols in /lib/modules/2.4.23/kernel/fs/xfs/xfs.o
depmod:         qsort

Regards,
Norberto

[-- Attachment #2: signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 2.4.23pre6aa1
  2003-10-02 15:26 2.4.23pre6aa1 Andrea Arcangeli
                   ` (4 preceding siblings ...)
  2003-10-04  6:26 ` 2.4.23pre6aa1 Norberto Bensa
@ 2003-10-05  2:50 ` Marcelo Tosatti
  2003-10-05  9:23   ` 2.4.23pre6aa1 Andrea Arcangeli
  5 siblings, 1 reply; 13+ messages in thread
From: Marcelo Tosatti @ 2003-10-05  2:50 UTC (permalink / raw)
  To: Andrea Arcangeli; +Cc: linux-kernel



On Thu, 2 Oct 2003, Andrea Arcangeli wrote:

> URL:
> Only in 2.4.23pre6aa1: 00_e-nodev-1
> 
> 	s/NODEV/ENODEV/ fixes from Vojtech.
> 
> Only in 2.4.23pre6aa1: 00_get_request_wait-race-1
> 
> 	Add missing smb_mb().

> Only in 2.4.23pre6aa1: 00_proc-readlink-1
> 
> 	Remeber to free tmp buffer (from spender)
> 
> Only in 2.4.23pre6aa1: 00_sync-buffer-scale-1
> 
> 	Don't take the bkl (the same paths runs w/o the bkl elsewhere), from
> 	Chris Mason.
> 
> Only in 2.4.23pre6aa1: 01_softirq-nowait-1
> 
> 	We must really keep executing softirqs or it may take
> 	a too long time before ksoftirqd gets some cpu time.
> 	For an embedded device you may want to remove this,
> 	on a server we need this still.
> 
> Only in 2.4.23pre6aa1: 30_19-nfs-kill-unlock-1
> 
> 	Ignore errors on exiting lock cleanups. From Trond.
> 
> Only in 2.4.23pre6aa1: 9999900_BH_Sync-remove-1
> 
> 	To really be able to help and not just waste some
> 	seek and cpu, wait_on_buffer should honour the
> 	BH_Sync, but this is late in 2.4, and so I prefer
> 	to get rid of it instead of giving it the full power
> 	it should have.
> 
> Only in 2.4.23pre6aa1: 9999_z-execve-race-1
> 
> 	Fix race in exit_mmap.

Andrea,

What about trying to merge this in mainline ? 

Will I have to look at them and merge them manually like I did with the VM 
changes ? 

:/


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 2.4.23pre6aa1
  2003-10-05  2:50 ` 2.4.23pre6aa1 Marcelo Tosatti
@ 2003-10-05  9:23   ` Andrea Arcangeli
  2003-10-09 20:40     ` 2.4.23pre6aa1 Marcelo Tosatti
  0 siblings, 1 reply; 13+ messages in thread
From: Andrea Arcangeli @ 2003-10-05  9:23 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: linux-kernel

On Sat, Oct 04, 2003 at 11:50:07PM -0300, Marcelo Tosatti wrote:
> 
> 
> On Thu, 2 Oct 2003, Andrea Arcangeli wrote:
> 
> > URL:
> > Only in 2.4.23pre6aa1: 00_e-nodev-1
> > 
> > 	s/NODEV/ENODEV/ fixes from Vojtech.
> > 
> > Only in 2.4.23pre6aa1: 00_get_request_wait-race-1
> > 
> > 	Add missing smb_mb().
> 
> > Only in 2.4.23pre6aa1: 00_proc-readlink-1
> > 
> > 	Remeber to free tmp buffer (from spender)
> > 
> > Only in 2.4.23pre6aa1: 00_sync-buffer-scale-1
> > 
> > 	Don't take the bkl (the same paths runs w/o the bkl elsewhere), from
> > 	Chris Mason.
> > 
> > Only in 2.4.23pre6aa1: 01_softirq-nowait-1
> > 
> > 	We must really keep executing softirqs or it may take
> > 	a too long time before ksoftirqd gets some cpu time.
> > 	For an embedded device you may want to remove this,
> > 	on a server we need this still.
> > 
> > Only in 2.4.23pre6aa1: 30_19-nfs-kill-unlock-1
> > 
> > 	Ignore errors on exiting lock cleanups. From Trond.
> > 
> > Only in 2.4.23pre6aa1: 9999900_BH_Sync-remove-1
> > 
> > 	To really be able to help and not just waste some
> > 	seek and cpu, wait_on_buffer should honour the
> > 	BH_Sync, but this is late in 2.4, and so I prefer
> > 	to get rid of it instead of giving it the full power
> > 	it should have.
> > 
> > Only in 2.4.23pre6aa1: 9999_z-execve-race-1
> > 
> > 	Fix race in exit_mmap.
> 
> Andrea,
> 
> What about trying to merge this in mainline ? 
> 
> Will I have to look at them and merge them manually like I did with the VM 
> changes ? 

I recall I sent one of these to you privately already (though not all of
them). the ones to merge are these:

	00_e-nodev-1
	00_get_request_wait-race-1
	00_proc-readlink-1
	00_sync-buffer-scale-1
	30_19-nfs-kill-unlock-1
	9999900_BH_Sync-remove-1
	9999_z-execve-race-1

I benchmarked BH_Sync as a worthless logic, it increases cpu usage and
slowdown I/O a little due suprious unplugs, basically it makes no sense
until we change wait_on_buffer not to call run_task_queue if the BH is
BH_Sync, but personally I prefer to nuke it than to go mangle
wait_on_buffer, it wouldn't be a huge optimization anyways (and it's a
noop without more than one spindle running).

as you know I tried to fix the execve race w/o removing the fast path,
but the lazy tlb code didn't work correctly, I'm unsure exactly what
went wrong with it. The above fix is obviously safe instead and it
indeed works fine. I'll be busy today and early next week. If something
doesn't apply cleanly let me know and I can fix it for you.

the checksum fix as well doesn't need to be merged since the bug was
fixed on a 2.4.19 based kernel, but 2.4.20 already has an alternate fix,
but I believe the fix Andi did is much better since it's zerocost for
the common aligned case, we only must avoid generating an invalid page
fault, reading garbage from the next page has always been safe, since
the garbage will be discared by the asm. So I'm evaluating if to drop
the fix in 2.4.20 and to retain only Andi's one for performance reason.
It's obvious Andi's fix won't alter performance for the 99% of common
cases so personally I prefer it.

thanks!

Andrea - If you prefer relying on open source software, check these links:
	    rsync.kernel.org::pub/scm/linux/kernel/bkcvs/linux-2.[45]/
	    http://www.cobite.com/cvsps/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 2.4.23pre6aa1
  2003-10-05  9:23   ` 2.4.23pre6aa1 Andrea Arcangeli
@ 2003-10-09 20:40     ` Marcelo Tosatti
  0 siblings, 0 replies; 13+ messages in thread
From: Marcelo Tosatti @ 2003-10-09 20:40 UTC (permalink / raw)
  To: Andrea Arcangeli; +Cc: Marcelo Tosatti, linux-kernel, Jens Axboe



On Sun, 5 Oct 2003, Andrea Arcangeli wrote:

> > > Only in 2.4.23pre6aa1: 00_get_request_wait-race-1
> > > 
> > > 	Add missing smb_mb().

Ok I see you add smp_mb() in get_request_wait_wakeup()... Can you please 
explain me in more detail why this is required? 

> > > Only in 2.4.23pre6aa1: 00_proc-readlink-1
> > > 
> > > 	Remeber to free tmp buffer (from spender)

Merged.

> > > 
> > > Only in 2.4.23pre6aa1: 00_sync-buffer-scale-1
> > > 
> > > 	Don't take the bkl (the same paths runs w/o the bkl elsewhere), from
> > > 	Chris Mason.

I prefer not applying this one.

> > > Only in 2.4.23pre6aa1: 01_softirq-nowait-1
> > > 
> > > 	We must really keep executing softirqs or it may take
> > > 	a too long time before ksoftirqd gets some cpu time.
> > > 	For an embedded device you may want to remove this,
> > > 	on a server we need this still.
> > > 
> > > Only in 2.4.23pre6aa1: 30_19-nfs-kill-unlock-1
> > > 
> > > 	Ignore errors on exiting lock cleanups. From Trond.

Talked with Trond and he has other fixes pending... Should have them by 
the weekend.

> > > Only in 2.4.23pre6aa1: 9999900_BH_Sync-remove-1
> > > 
> > > 	To really be able to help and not just waste some
> > > 	seek and cpu, wait_on_buffer should honour the
> > > 	BH_Sync, but this is late in 2.4, and so I prefer
> > > 	to get rid of it instead of giving it the full power
> > > 	it should have.
> > > 
> > > Only in 2.4.23pre6aa1: 9999_z-execve-race-1
> > > 
> > > 	Fix race in exit_mmap.
>
> I recall I sent one of these to you privately already (though not all of
> them). the ones to merge are these:
> 
> 	00_e-nodev-1
> 	00_get_request_wait-race-1
> 	00_proc-readlink-1
> 	00_sync-buffer-scale-1
> 	30_19-nfs-kill-unlock-1
> 	9999900_BH_Sync-remove-1
> 	9999_z-execve-race-1
> 
> I benchmarked BH_Sync as a worthless logic, it increases cpu usage and
> slowdown I/O a little due suprious unplugs, basically it makes no sense
> until we change wait_on_buffer not to call run_task_queue if the BH is
> BH_Sync, but personally I prefer to nuke it than to go mangle
> wait_on_buffer, it wouldn't be a huge optimization anyways (and it's a
> noop without more than one spindle running).

I want to look with more time into this one...

> as you know I tried to fix the execve race w/o removing the fast path,
> but the lazy tlb code didn't work correctly, I'm unsure exactly what
> went wrong with it. The above fix is obviously safe instead and it
> indeed works fine. I'll be busy today and early next week. If something
> doesn't apply cleanly let me know and I can fix it for you.

Thats merged as well.

Apart from this there's a huge pile of fixes all over in -aa. It would be
good if we had them merged in.


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2003-10-09 20:47 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-10-02 15:26 2.4.23pre6aa1 Andrea Arcangeli
2003-10-03  0:09 ` 2.4.23pre6aa1 Mathias Kretschmer
2003-10-03  7:41   ` 2.4.23pre6aa1 Andrea Arcangeli
2003-10-03  0:51 ` 2.4.23pre6aa1 Mike Fedyk
2003-10-03  7:37   ` 2.4.23pre6aa1 Andrea Arcangeli
2003-10-03 10:15 ` 2.4.23pre6aa1: HZ not constant? Eyal Lebedinsky
2003-10-03 12:02   ` Andrea Arcangeli
2003-10-03 14:26 ` 2.4.23pre6aa1: scsi/pcmcia qlogic does not build Eyal Lebedinsky
2003-10-03 16:26   ` Andrea Arcangeli
2003-10-04  6:26 ` 2.4.23pre6aa1 Norberto Bensa
2003-10-05  2:50 ` 2.4.23pre6aa1 Marcelo Tosatti
2003-10-05  9:23   ` 2.4.23pre6aa1 Andrea Arcangeli
2003-10-09 20:40     ` 2.4.23pre6aa1 Marcelo Tosatti

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.