Andrew Morton [Wed, 4 Feb 2004 02:44:38 +0000 (18:44 -0800)]
[PATCH] md: Change the way the name of an md device is printed in error messages.
From: NeilBrown <neilb@cse.unsw.edu.au>
Instead of using ("md%d", mdidx(mddev)), we now use ("%s", mdname(mddev))
where mdname is the disk_name field in the associated gendisk structure.
This allows future flexability in naming.
Andrew Morton [Wed, 4 Feb 2004 02:44:11 +0000 (18:44 -0800)]
[PATCH] md: Move the test in preferred_minor to where it is used.
From: NeilBrown <neilb@cse.unsw.edu.au>
A RAID superblock can indicate which minor number the array should be
assembled under. As this is only meaningful when doing auto-start, we move
the test for it being in the valid range to the place where auto-start
happens. When an array is started any other way, it doesn't matter what
value is here.
Andrew Morton [Wed, 4 Feb 2004 02:43:53 +0000 (18:43 -0800)]
[PATCH] Fix deep stack usage in ncpfs
From: Petr Vandrovec <vandrove@vc.cvut.cz>
Arjan van de Ven pointed out to me there are no checks on name component
lengths in ncpfs, so potentially 4KB regions could be allocated on stack,
leading to the user controlled stack overflow.
It was using variable-sized arrays, so this snuck past the static
stack-usage checking tools.
As NCP is limited to 255 bytes on components, we can simple limit these
local variables to 256 bytes, and after this stack usage looks more
acceptable. Length checking occurs inside ncp_vol2io, during
iocharset->codepage conversion.
As a side effect support for multibyte codepages now works as it should,
instead of returning -EINVAL whenever filename in 'codepage' encoding was
longer than in 'iocharset'.
Other part fixes typo where atime change updated ctime and not atime field.
Andrew Morton [Wed, 4 Feb 2004 02:43:35 +0000 (18:43 -0800)]
[PATCH] initialise cpu_vm_mask in init_mm
From: Anton Blanchard <anton@samba.org>
Some architectures use cpu_vm_mask to optimise TLB flushes. On ppc64 we
are now using a common flush infrastructure that handles both userspace and
kernelspace (vmalloc) pages. In order to avoid triggering this
optimisation we need to mark the init mm as having scheduled on all cpus.
Things currently work by luck (we check for the cpu only having run on the
local cpu, and the field is initialised to 0), but it would be safer to
initialise it CPU_MASK_ALL.
Andrew Morton [Wed, 4 Feb 2004 02:43:18 +0000 (18:43 -0800)]
[PATCH] remove valid_addr_bitmap
From: William Lee Irwin III <wli@holomorphy.com>
->valid_addr_bitmap is initialized nowhere. Any kern_addr_valid() testing
it returns 0 unconditionally.
This patch converts kern_addr_valid() implementations using it to return 0
as per the above and removes it from structures and zone initialization.
Untested (not even compiletested), though a similar patch also nuking
d_validate() was in use in -wli for several months.
Andrew Morton [Wed, 4 Feb 2004 02:43:00 +0000 (18:43 -0800)]
[PATCH] fix blockdev --getro for sr, sd, ide-floppy
From: John McKell <mckellj@iomega.com>
This 2.6.1 patch works by setting gendisk->policy to the correct value
during initialization as the various drivers decide whether or not the disk
is writeable. This patch persuades "blockdev --getro ..." to correctly
report the read-only state of a newly inserted disk. This patch applies to
sr.c, sd.c and ide-floppy.c. ide-cd.c already has this functionality built
into it.
Using an Iomega Zip drive as the test case...
Without the patch, I always see:
$ sudo blockdev --getro /dev/sda
0
$
That's only correct for writeable disks though. Only when the patch
is applied do I see a write-protected disk described correctly:
Andrew Morton [Wed, 4 Feb 2004 02:42:42 +0000 (18:42 -0800)]
[PATCH] Make naming of parititions in sysfs match /proc/partitions.
From: Neil Brown <neilb@cse.unsw.edu.au>
In fs/partitions/check.c there are two pieces of code that add a
partition number to a block-device name:
- the 'disk_name' function
- a snprintf in add_partitions.
'disk_name' inserts a 'p' before the partition number if the device
name ends with a digit. The snprintf in add_partitions doesn't.
This patch rectifies this anomoly so that names in sysfs can be
parsed more reliably.
This has been extensively discussed. It will probably break the external
`iostat' tool. But only for disks whose name ends in a digit, which appears
to be only DAC960.
Andrew Morton [Wed, 4 Feb 2004 02:41:50 +0000 (18:41 -0800)]
[PATCH] vmalloc address offset fix
From: Anton Blanchard <anton@samba.org>
Paul wrote a patch to use some of the rmap infrastructure to flush TLB
entries on ppc64. When testing it we found a problem in vmalloc where it
sets up the pte -> address mapping incorrectly. We clear the top bits of
the address but then forget to pass in the full address to
pte_alloc_kernel. The end result is the address in page->index is
truncated.
I fixed it in a similar way to how zeromap_pmd_range etc does it. I'm
guessing no one uses the rmap hooks on vmalloc pages yet, so havent seen
this problem.
Andrew Morton [Wed, 4 Feb 2004 02:41:41 +0000 (18:41 -0800)]
[PATCH] Allow software_suspend to fail
From: Pavel Machek <pavel@ucw.cz>
software_suspend() can fail for quite a lot of reasons (for example not
enough swapspace). However current interface returned void, so you could
not propagate error back to userland. This fixes it. Plus
__read_suspend_image() is only done during init time, so we might as well
mark it __init.
Andrew Morton [Wed, 4 Feb 2004 02:41:31 +0000 (18:41 -0800)]
[PATCH] Trivial cleanups for swsusp
From: Pavel Machek <pavel@ucw.cz>
This kills unused part of struct and fixes spelling.
It also fixes codingstyle a bit, converts "can not happen" panic into BUG_ON
(fill_suspend_header() allocates no memory so panic is meaningless) and adds
check for sizeof (struct link) [if that is not PAGE_SIZE, we have *bad*
problem, better check early].
Andrew Morton [Wed, 4 Feb 2004 02:41:10 +0000 (18:41 -0800)]
[PATCH] EDD: read disk80 MBR signature, export through edd module
From: Matt Domsch <Matt_Domsch@dell.com>
There are 4 bytes in the MSDOS master boot record, at offset 0x1b8,
which may contain a per-system-unique signature. By first writing a unique
signature to each disk in the system, then rebooting, and then reading the
MBR to get the signature for the boot disk (int13 dev 80h), userspace may
use it to compare against disks it knows as named /dev/[hs]d[a-z], and thus
determine which disk is the BIOS boot disk, thus where the /boot, / and
boot loaders should be placed.
This is useful in the case where the BIOS is not EDD3.0 compliant, thus
doesn't provide the PCI bus/dev/fn and IDE/SCSI location of the boot disk,
yet you need to know which disk is the boot disk. It's most useful in OS
installers.
This patch retrieves the signature from the disk in setup.S, stores it in a
space reserved in the empty_zero_page, copies it somewhere safe in setup.c,
and exports it via /sys/firmware/edd/int13_disk80/mbr_signature in edd.c.
Code is covered under CONFIG_EDD=[ym].
Andrew Morton [Wed, 4 Feb 2004 02:40:32 +0000 (18:40 -0800)]
[PATCH] add readX_relaxed() interface
From: jbarnes@sgi.com (Jesse Barnes)
Here's the patch to add the new _relaxed variants for PIO read accesses.
It's been ack'd by gregkh and Grant Grundler, and I think it's ready to
go.
PCI ordering rules also guarantee that PIO read responses arrive after any
outstanding DMA writes on that bus, since for some devices the result of a
readb() call may signal to the driver that a DMA transaction is complete. In
many cases, however, the driver may want to indicate that the next readb()
call has no relation to any previous DMA writes performed by the device. The
driver can use the readb_relaxed() for these cases, although only some
platforms will honor the relaxed semantics.
Andrew Morton [Wed, 4 Feb 2004 02:40:05 +0000 (18:40 -0800)]
[PATCH] bitmap parsing/printing routines, version 4
From: Joe Korty <joe.korty@ccur.com>
1) the version in 2.6.1 is broken, doesn't work on 64bit big endian
machines at all. This needed fixing. I thought it best to fix by
rewriting the printer/parser with an algorithm that is naturally endian &
sizeof(long) resistant.
2) I wanted all digits to print, eg, 0000ffff,00000004 not ffff,4.
3) I wanted exactly NR_CPUS bits to print (or whatever the bitmap size is
in bits, and not have what is displayed rounded up to the nearest full
byte, as the current version did.
4) The bitmap printer and parser should be part of bitmap.[ch] with syntax
and semantics to match. The original lib/mask.c versions did not
recognize this commonality.
Andrew Morton [Wed, 4 Feb 2004 02:39:47 +0000 (18:39 -0800)]
[PATCH] gcc-3.5: arch/i386/kernel/traps.c
++nmi_count(cpu);
arch/i386/kernel/traps.c: In function `do_nmi':
arch/i386/kernel/traps.c:552: error: invalid lvalue in increment
and
include/linux/netdevice.h: In function `__netif_rx_schedule':
include/linux/netdevice.h:818: error: invalid lvalue in assignment
include/linux/netdevice.h: In function `netif_rx_reschedule':
include/linux/netdevice.h:842: error: invalid lvalue in assignment
This fix will probably reintroduce unused variable warnings...
Andrew Morton [Wed, 4 Feb 2004 02:39:30 +0000 (18:39 -0800)]
[PATCH] gcc-3.5: drivers/video/cfbimgblt.c
drivers/video/cfbimgblt.c: In function `color_imageblit':
drivers/video/cfbimgblt.c:140: error: invalid lvalue in assignment
drivers/video/cfbimgblt.c: In function `slow_imageblit':
drivers/video/cfbimgblt.c:206: error: invalid lvalue in assignment
Andrew Morton [Wed, 4 Feb 2004 02:39:20 +0000 (18:39 -0800)]
[PATCH] gcc-3.5: drivers/video/riva/fbdev.c
drivers/video/riva/fbdev.c: In function `rivafb_load_cursor_image':
drivers/video/riva/fbdev.c:498: error: invalid lvalue in increment
drivers/video/riva/fbdev.c:499: error: invalid lvalue in increment
drivers/video/riva/fbdev.c: In function `rivafb_imageblit':
drivers/video/riva/fbdev.c:1440: error: invalid lvalue in increment
drivers/video/riva/fbdev.c:1449: error: invalid lvalue in increment
Andrew Morton [Wed, 4 Feb 2004 02:38:45 +0000 (18:38 -0800)]
[PATCH] gcc-3.5: advansys.c
drivers/scsi/advansys.c: In function `advansys_reset':
drivers/scsi/advansys.c:6022: error: invalid lvalue in assignment
drivers/scsi/advansys.c:6045: error: invalid lvalue in assignment
drivers/scsi/advansys.c: In function `advansys_interrupt':
drivers/scsi/advansys.c:6314: error: invalid lvalue in assignment
drivers/scsi/advansys.c: In function `asc_scsi_done_list':
drivers/scsi/advansys.c:6386: error: invalid lvalue in assignment
drivers/scsi/advansys.c: In function `asc_enqueue':
drivers/scsi/advansys.c:7437: error: invalid lvalue in assignment
drivers/scsi/advansys.c:7445: error: invalid lvalue in assignment
drivers/scsi/advansys.c:7448: error: invalid lvalue in assignment
drivers/scsi/advansys.c: In function `asc_dequeue_list':
drivers/scsi/advansys.c:7569: error: invalid lvalue in assignment
drivers/scsi/advansys.c: In function `asc_rmqueue':
drivers/scsi/advansys.c:7647: error: invalid lvalue in assignment
drivers/scsi/advansys.c:7648: error: invalid lvalue in assignment
Andrew Morton [Wed, 4 Feb 2004 02:38:36 +0000 (18:38 -0800)]
[PATCH] gcc-3.5: drivers/scsi/53c700
In file included from drivers/scsi/53c700.c:140:
drivers/scsi/53c700.h: In function `NCR_700_set_SXFER':
drivers/scsi/53c700.h:106: error: invalid lvalue in assignment
drivers/scsi/53c700.h:107: error: invalid lvalue in assignment
drivers/scsi/53c700.h: In function `NCR_700_set_depth':
drivers/scsi/53c700.h:116: error: invalid lvalue in assignment
drivers/scsi/53c700.h:117: error: invalid lvalue in assignment
drivers/scsi/53c700.h: In function `NCR_700_set_flag':
drivers/scsi/53c700.h:137: error: invalid lvalue in assignment
drivers/scsi/53c700.h: In function `NCR_700_clear_flag':
drivers/scsi/53c700.h:142: error: invalid lvalue in assignment
Andrew Morton [Wed, 4 Feb 2004 02:38:09 +0000 (18:38 -0800)]
[PATCH] gcc-3.5: PCMCIA
include/pcmcia/mem_op.h: In function `copy_from_pc':
include/pcmcia/mem_op.h:85: error: invalid lvalue in assignment
include/pcmcia/mem_op.h:85: error: invalid lvalue in assignment
include/pcmcia/mem_op.h: In function `copy_to_pc':
include/pcmcia/mem_op.h:97: error: invalid lvalue in assignment
include/pcmcia/mem_op.h:97: error: invalid lvalue in assignment
include/pcmcia/mem_op.h: In function `copy_pc_to_user':
include/pcmcia/mem_op.h:109: error: invalid lvalue in assignment
include/pcmcia/mem_op.h:109: error: invalid lvalue in assignment
include/pcmcia/mem_op.h: In function `copy_user_to_pc':
include/pcmcia/mem_op.h:124: error: invalid lvalue in assignment
include/pcmcia/mem_op.h:124: error: invalid lvalue in assignment
Andrew Morton [Wed, 4 Feb 2004 02:38:01 +0000 (18:38 -0800)]
[PATCH] gcc-3.5: DVB
drivers/media/dvb/frontends/ves1820.c: In function `ves1820_setup_reg0':
drivers/media/dvb/frontends/ves1820.c:244: error: invalid lvalue in assignment
drivers/media/dvb/frontends/ves1820.c:244: error: invalid lvalue in assignment
drivers/media/dvb/frontends/ves1820.c: In function `ves1820_attach':
drivers/media/dvb/frontends/ves1820.c:541: error: invalid lvalue in assignment
drivers/media/dvb/frontends/ves1820.c:541: error: invalid lvalue in assignment
drivers/media/dvb/frontends/ves1820.c:544: error: invalid lvalue in assignment
drivers/media/dvb/frontends/ves1820.c:544: error: invalid lvalue in assignment
drivers/media/dvb/frontends/ves1820.c:545: error: invalid lvalue in assignment
drivers/media/dvb/frontends/ves1820.c:545: error: invalid lvalue in assignment
drivers/media/dvb/frontends/ves1820.c:546: error: invalid lvalue in assignment
drivers/media/dvb/frontends/ves1820.c:546: error: invalid lvalue in assignment
drivers/media/dvb/frontends/ves1820.c:547: error: invalid lvalue in assignment
drivers/media/dvb/frontends/ves1820.c:547: error: invalid lvalue in assignment
Andrew Morton [Wed, 4 Feb 2004 02:36:59 +0000 (18:36 -0800)]
[PATCH] gcc-3.5: drivers/atm/he.c
drivers/atm/he.c: In function `he_init_one':
drivers/atm/he.c:383: error: invalid lvalue in assignment
drivers/atm/he.c: In function `he_open':
drivers/atm/he.c:2364: error: invalid lvalue in assignment
Andrew Morton [Wed, 4 Feb 2004 02:36:50 +0000 (18:36 -0800)]
[PATCH] gcc-3.5: drivers/atm/idt77105.c
drivers/atm/idt77105.c: In function `idt77105_start':
drivers/atm/idt77105.c:268: error: invalid lvalue in assignment
drivers/atm/idt77105.c: In function `idt77105_stop':
drivers/atm/idt77105.c:346: error: invalid lvalue in assignment
Andrew Morton [Wed, 4 Feb 2004 02:36:41 +0000 (18:36 -0800)]
[PATCH] gcc-3.5: drivers/atm/eni.c
drivers/atm/eni.c: In function `eni_close':
drivers/atm/eni.c:1878: error: invalid lvalue in assignment
drivers/atm/eni.c: In function `eni_open':
drivers/atm/eni.c:1894: error: invalid lvalue in assignment
drivers/atm/eni.c:1905: error: invalid lvalue in assignment
drivers/atm/eni.c: In function `eni_init_one':
drivers/atm/eni.c:2233: error: invalid lvalue in assignment
Andrew Morton [Wed, 4 Feb 2004 02:36:23 +0000 (18:36 -0800)]
[PATCH] gcc-3.5: drivers/atm/fore200e.c
drivers/atm/fore200e.c: In function `fore200e_open':
drivers/atm/fore200e.c:1420: error: invalid lvalue in assignment
drivers/atm/fore200e.c: In function `fore200e_register':
drivers/atm/fore200e.c:2485: error: invalid lvalue in assignment
Andrew Morton [Wed, 4 Feb 2004 02:36:05 +0000 (18:36 -0800)]
[PATCH] gcc-3.5: iphase.c
drivers/atm/iphase.c: In function `open_tx':
drivers/atm/iphase.c:1757: error: invalid lvalue in assignment
drivers/atm/iphase.c: In function `ia_close':
drivers/atm/iphase.c:2674: error: invalid lvalue in assignment
drivers/atm/iphase.c: In function `ia_open':
drivers/atm/iphase.c:2687: error: invalid lvalue in assignment
drivers/atm/iphase.c:2703: error: invalid lvalue in assignment
drivers/atm/iphase.c: In function `ia_init_one':
drivers/atm/iphase.c:3199: error: invalid lvalue in assignment
Andrew Morton [Wed, 4 Feb 2004 02:35:56 +0000 (18:35 -0800)]
[PATCH] gcc-3.5: intermezzo
fs/intermezzo/dir.c: In function `presto_prep':
fs/intermezzo/intermezzo_fs.h:414: sorry, unimplemented: inlining failed in call to 'presto_is_read_only': function body not available
fs/intermezzo/presto.c: In function `izo_mark_cache':
fs/intermezzo/presto.c:341: error: invalid lvalue in assignment
fs/intermezzo/presto.c:342: error: invalid lvalue in assignment
Andrew Morton [Wed, 4 Feb 2004 02:35:28 +0000 (18:35 -0800)]
[PATCH] gcc-3.5: vxfs fixes
fs/freevxfs/vxfs.h:33:10: warning: extra tokens at end of #ident directive
fs/freevxfs/vxfs_extern.h:75: sorry, unimplemented: inlining failed in call to 'vxfs_put_page': function body not available
Andrew Morton [Wed, 4 Feb 2004 02:35:18 +0000 (18:35 -0800)]
[PATCH] gcc-3.5: zatm.c fix
drivers/atm/zatm.c: In function `zatm_close':
drivers/atm/zatm.c:1371: error: invalid lvalue in assignment
drivers/atm/zatm.c: In function `zatm_open':
drivers/atm/zatm.c:1386: error: invalid lvalue in assignment
drivers/atm/zatm.c:1398: error: invalid lvalue in assignment
drivers/atm/zatm.c: In function `zatm_module_init':
drivers/atm/zatm.c:1600: error: invalid lvalue in assignment
Andrew Morton [Wed, 4 Feb 2004 02:34:51 +0000 (18:34 -0800)]
[PATCH] gcc-3.5: i810_accel fix
drivers/video/i810/i810_accel.c: In function `i810fb_init_ringbuffer':
drivers/video/i810/i810_accel.c:30: sorry, unimplemented: inlining failed in call to 'flush_cache': function body not available
Andrew Morton [Wed, 4 Feb 2004 02:34:42 +0000 (18:34 -0800)]
[PATCH] gcc-3.5: parport warnings
drivers/pnp/pnpbios/core.c: In function `pnpbios_probe_system':
drivers/pnp/pnpbios/core.c:438: warning: use of cast expressions as lvalues is deprecated
Andrew Morton [Wed, 4 Feb 2004 02:34:33 +0000 (18:34 -0800)]
[PATCH] gcc-3.5: sound/core/seq/seq_clientmgr.c
sound/core/seq/seq_clientmgr.c: In function `snd_seq_open':
sound/core/seq/seq_clientmgr.c:331: warning: use of cast expressions as lvalues is deprecated
Andrew Morton [Wed, 4 Feb 2004 02:34:24 +0000 (18:34 -0800)]
[PATCH] More 3.4 compilation fixes
From: Jan Hubicka <jh@suse.cz>
GCC now converts sprintf (a,"%s",b) to strcpy. This lose on kernel as
strcpy is not inlined and not present in library, so one gets linker
failure. It seems to make sense to apply this optimization by hand.
Andrew Morton [Wed, 4 Feb 2004 02:34:15 +0000 (18:34 -0800)]
[PATCH] Fix inlining failure (all GCCs) in parport
From: Jan Hubicka <jh@suse.cz>
GCC never inline extern inline function redefined by new body (because it is
not clear what body one should choose)
parport contains such duplicated functions for apparently no good reasons.
Both copies differ slightly, not sure whether it is intentional or just
garbage.
Andrew Morton [Wed, 4 Feb 2004 02:33:12 +0000 (18:33 -0800)]
[PATCH] gcc-3.5: pcm_misc.c warnings
sound/core/pcm_misc.c:557: warning: use of cast expressions as lvalues is deprecated
sound/core/pcm_misc.c:568: warning: use of cast expressions as lvalues is deprecated
sound/core/pcm_misc.c:569: warning: use of cast expressions as lvalues is deprecated
sound/core/pcm_misc.c:570: warning: use of cast expressions as lvalues is deprecated
sound/core/pcm_misc.c:586: warning: use of cast expressions as lvalues is deprecated
sound/core/pcm_misc.c:596: warning: use of cast expressions as lvalues is deprecated
Andrew Morton [Wed, 4 Feb 2004 02:32:55 +0000 (18:32 -0800)]
[PATCH] gcc-3.5: #ident fixes
arch/i386/kernel/msr.c:1:10: warning: extra tokens at end of #ident directive
arch/i386/kernel/cpuid.c:1:10: warning: extra tokens at end of #ident directive
Andrew Morton [Wed, 4 Feb 2004 02:32:36 +0000 (18:32 -0800)]
[PATCH] string fixes for gcc 3.4
From: Andi Kleen <ak@muc.de>
gcc 3.4 optimizes sprintf(foo,"%s",string) into strcpy. Unfortunately that
isn't seen by the inliner and linux/i386 has no out-of-line strcpy so you
end up with a linker error.
This patch adds out of line copies for most string functions to avoid this.
Actually it doesn't export them to modules yet, that would be the next
step.
BTW In my opinion we shouldn't use inline string functions at all. The
__builtin_str* in modern gcc are better (I used them very successfully on
x86-64) and for the bigger functions like strrchr,strtok et.al. it just
doesn't make any sense to inline them or even code them in assembler.
Also fix the bcopy prototype gcc was complaining about.
Andrew Morton [Wed, 4 Feb 2004 02:32:27 +0000 (18:32 -0800)]
[PATCH] Fix more gcc 3.4 warnings
From: Andi Kleen <ak@muc.de>
Just many more warning fixes for a gcc 3.4 snapshot.
It warns for a lot of things now, e.g. for ?: and ({ ... }) and casts as
lvalues. And for functions marked inline in headers, but no body.
Actually there are more warnings, i stopped fixing at some point. Some of
the warnings seem to be dubious (e.g. the binfmt_elf.c one, which looks
more like a compiler bug to me)
I also fixed the _exit() prototype to be void because gcc was complaining
about this.
Andrew Morton [Wed, 4 Feb 2004 02:32:18 +0000 (18:32 -0800)]
[PATCH] sisfb update
From: Thomas Winischhofer <thomas@winischhofer.net>
sisfb is simply broken in current 2.6.x. This patch updates sisfb to the
current development version which no less than 11 months ahead of the version
in the kernel.
Updated includes
- many fixes (duh)
- support for new chipsets (661, 741, 760)
- support for new video bridges (301C, 302ELV)
- removal of all offending fp code (as discussed earlier this month)
- a lot of code clean-up (which is the main reason for its size)
Andrew Morton [Wed, 4 Feb 2004 02:32:08 +0000 (18:32 -0800)]
[PATCH] kbuild: Unmangle include options for gcc
From: Sam Ravnborg <sam@ravnborg.org>
When utilising the make O=... option the include options for gcc were
mangled even when absolute paths was used. Also remove duplication of
CPPFLAGS. They were assigned twice. [It is still possible for
architectures to modify CPPFLAGS].
This patch allows xconfig to be build with make O=... xconfig.It will also
help development of external modules with absolute paths for their -I
options.
Note: As a side effect a full recompile of the kernel takes place due to
changes in number of gcc options.
Andrew Morton [Wed, 4 Feb 2004 02:31:59 +0000 (18:31 -0800)]
[PATCH] ia32 MSI vector handling fix
From: "Nakajima, Jun" <jun.nakajima@intel.com>
To get the vector-based interrupt handling work, we need to give the vector
number to device drivers instead of the IRQ if IRQ < 16. It was not
happening for SCI, and the patch fixes it. In many cases, the IRQ for SCI is
9, and the problem was not detected, but one particular machine exposed the
bug.
Andrew Morton [Wed, 4 Feb 2004 02:31:50 +0000 (18:31 -0800)]
[PATCH] lock_cpu_hotplug only if CONFIG_CPU_HOTPLUG
From: Rusty Russell <rusty@rustcorp.com.au>
The cpucontrol mutex is not required when no cpus can go up and down.
Andrew wrote a wrapper for it to avoid #ifdefs, this expands that to only
be defined for CONFIG_HOTPLUG_CPU, and uses it everywhere.
The only downside is that the cpucontrol lock was overloaded by my recent
patch to net/core/flow.c to protect it from reentrance, so this
reintroduces the local flow_flush_sem. This code isn't speed critical, so
taking two locks when CONFIG_HOTPLUG_CPU=y is not really an issue.
Andrew Morton [Wed, 4 Feb 2004 02:31:31 +0000 (18:31 -0800)]
[PATCH] quiet down SMP boot messages
From: Jes Sorensen <jes@trained-monkey.org>
I'd like to propose the following for 2.6.1-mm/2.6.2. On systems with a
large number of CPUs the number of printk's flowing by for each CPU
booting starts becoming a real console hog.
The following patch eliminates a couple of them (already sent a patch to
David for the ia64 specific ones) as well as changes the
"Building zonelist : X" in "Built Y zonelists". IMHO it doesn't make any
sense to print for each zonelist since it's run in a for loop running
from 0 to Y-1 anyway.
The patch nukes a few new printk's that were introduced with the
scheduler changes to the NUMA code in -mm3, if these are still needed
then I won't fight for that part of the patch.
Andrew Morton [Wed, 4 Feb 2004 02:30:59 +0000 (18:30 -0800)]
[PATCH] Make PPC601_SYNC_FIX depend on pmac||prep
From: Tom Rini <trini@kernel.crashing.org>
The following has been approved by Paul, FWIW.
The following patch makes PPC601_SYNC_FIX depend on PPC_PMAC || PPC_PREP.
It used to depend on ALL_PPC I believe, but this was (at least
semi-intentionally I gather) backed out. The last time this was discussed,
the only platforms old enough to have a 601 to support were pmacs and
preps, so it makes some sense to only ask for these machines.
Andrew Morton [Wed, 4 Feb 2004 02:30:23 +0000 (18:30 -0800)]
[PATCH] Fix race in sched_exit()
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
Fix a race on sleep_avg in sched_exit().
The symptom I saw on 64-bit s390 has been a fixpoint divide exception
because sleep_avg had a value > NS_MAX_SLEEP_AVG. I tracked it down and
the problem is sched_exit which recalculates the parents sleep average
without taking the runqueue lock. schedule() subtracts run_time from
sleep_avg of the previous process. This can turn out negative and is
corrected shortly after the subtraction but that is already too late.
sched_exit() already read the negative value an miscalculated the parents
sleep_avg -> bang.
I fixed this by adding task_rq_lock/task_rq_unlock to sched_exit().
Linus Torvalds [Tue, 3 Feb 2004 11:36:36 +0000 (03:36 -0800)]
Linux 2.6.2 aka "Feisty Dunnart"
See http://www.cse.unsw.edu.au/~gernot/persona/hobbies/dunnart.html
for more information about Dunnarts, in case you've never heard of
them before. Courtesy of Gernot Heiser.