Summary of changes from v2.6.2-rc1 to v2.6.2-rc2 ============================================ [VIDEO]: kbuildify the promcons_tbl and logo source files [BK] add two helper scripts to Documentation/BK-usage cpcset: copy changset from one repository to another gcapatch: Generate GNU diff of local changes, versus latest upstream (well, GCA...) input: Move keycode definitions around to get as close to 2.4 compatibility as we can at the moment. This also kills KEY_103RD, because PS/2 keyboards don't have it and everyone is expecting to get KEY_BACKSLASH anyway. Fix rawmode generation for PrintScreen key, too. input: Add support for Logitech MX700 mouse. input: Expect only one character in interrupt in i8042.c, this eases the load on the controller (only one status read per interrupt). Also do polling only some time after an interrupt happened. input: Add informational printk()s to atkbd.c input: Add IBM GamePad to the BADPAD list. input: Add backslash and 102nd key to amikbd.c list of scancodes. input: i8042.c: Add exists=0 into an error path, change the mux/aux init order to make some of the probing code (second irq probe) unnecessary. input: Move devfs entries for joystick into /dev/input input: Fixes and updates of the USB ForceFeedback drivers. Added Logitech MOMO FF steering wheel ID. input: Alt-arrow console switch is routinely dropped under high load. This patch fixes it: alt-arrow has to start from console _we want to switch to_, if switch is already pending. input: Added BUS_BLUETOOTH definition for BlueTooth HID devices. [ALPHA] Tidy ELF_HWCAP and ELF_PLATFORM. Provide all relevant platform identifiers up to ev67. [ALPHA] Tidy buglets in sigreturn paths: Don't pretend support for _NSIG_WORDS > 1. Don't verify_area on more memory than we actually care about. Don't fiddle stack_t in do_rt_sigreturn. input: Key 89 is RO, not ROMAJI. input: Bugfixes in atkbd and psmouse-base probing. (use unsigned char param[] in atkbd_event, like everywhere else, use param[0] instead of *param at the same place, properly set serio->private to NULL if probe fails in both atkbd and psmouse, and fix preinitializing of the return buffer in *_command() funcitons.) input: Add support for HP PARISC keyboards to atkbd.c input: Always wait for hid request completion in hiddev before returning to the caller process. [PCMCIA] Add refcounting to struct pcmcia_bus_socket If you perform the following commands in order: # cardctl eject # rmmod yenta_socket # insmod drivers/pcmcia/yenta_socket.ko # killall cardmgr the rmmod ends up freeing the pcmcia_bus_socket while the wait queue is still active. The killall cardmgr cases the the select() to complete, and users to be removed from the "queue" - which ends up writing to freed memory. The following patch adds refcounting to pcmcia_bus_socket so we won't free it until all users have gone. We also add "SOCKET_DEAD" to mark the condition where the socket is no longer present in the system. Note that we don't wake up cardmgr when we remove sockets - unfortunately cardmgr doesn't like receiving errors from read(). Really, cardmgr should treat EIO from read() as a fatal error for that socket, and stop listening for events from it. [PCMCIA] Get rid of racy interruptible_sleep_on() ds.c uses interruptible_sleep_on() without any protection. Use wait_event_interruptible() instead. In addition, fix a bug where threads waiting for cardmgr events to complete were left waiting if cardmgr exited. [PCMCIA] Remove write-only socket_dev No need for a local pointer for the struct device, especially when it is only ever written. If necessary, the device can be accessed using s->parent->dev.dev [PCMCIA] Remove unused variable warnings. Remove unused variable 'i' in fops methods. Fix debug macros which were the sole consumers of this variable. input: Add a missing space in atkbd warning message. input: Make scancode for a Sun5 type keyboard one of those not ignored because of protocol nastiness. [SPARC64]: Move setting of current_thread_info()->cpu to smp_prepare_boot_cpu() input: Properly recompute initial values upon recalibration in joydev. [SPARC64]: Add CONFIG_DEBUG_BOOTMEM option. [SPARC64]: Correctly mask the physical address for remapping the kernel TLB's [SPARC64]: Fix 32-bit execve out_mm error path. Do not pass a NULL mm to mmdrop(). [TTUSB]: ttusb_dec.c needs linux/init.h [SPARC64]: Update defconfig. input: Allow Synaptics packet rate to be controlled by the psmouse_rate= option. input: If we get a byte with timeout or parity flags in psmouse.c, we take the appropriate action. (throw the byte away, reset byte counter, return NAK if acking, and complain). [PATCH] selinux build fix trivial one: uses __init and thus needs linux/init.h [PATCH] video4linux driver documentation update This updates / adds documentation for the bttv, saa7134 and cx88 video4linux drivers. [PATCH] Check for MCE ability before checking registers. Here's a novel idea, check the CPU has machine check capabilities before we start polling registers. I was wondering why my VIA C3 was starting this. Who knows it may solve some of the random crashes I saw there. [PATCH] Elvis^H^H^H^H^HPaul has left the building > Paul Mackerras: > o sort exception tables And as more proof that Paul is leaving us ppc32 folks, *sniff*, the following is needed for PPC32 to compile: [NET]: Do not mark dummy_free_one() __exit in dummy.c driver. [IPV6]: Fix link-local address check in datagram.c [IPV6]: More missing sysctl table sentinels in addrconf.c [IPV6]: Explicity set *dst to NULL at top of ip6_dst_lookup(). [ATM]: [horizon] avoid warning about limited range of data type [SPARC64]: Add missing sched_balance_exec() to 32-bit compat execve(). [IPV6]: Add and use new 'strict' parameter to ip6_chk_addr(). RFC 2461 requires that the source address of Neighbor Discovery messages is an address assigned to the sending interface. Duplicate Address Detection should also be interface specific. We don't, for example, want a node to DoS itself just because it has two interfaces on the same link and both happen to listen to the same multicast group. If there is a true duplicate on the link, the interface doing DAD will notice it anyway. The attached patch adds a 'strict' parameter to ip6_chk_addr() and ip6_get_ifaddr() to allow link-local protocols like ND and DAD to do strict address checks even on addresses with greater scope than link-local. [PATCH] RAID-6 fixes From: "H. Peter Anvin" As expected, when it hit mainline I started getting real bug reports... the attached patch does the following: - Fixes a few x86-64 specific bugs; - Removes MMX and SSE-1 from x86-64 (if we have x86-64 we have SSE-2); - Slightly astracts the integer code to make it easier to add architecture-specific optimizations later (e.g. IA64 once gcc gets better IA64 intrinsics support); - Resurrects the user-space testbench, and makes it not output the known false positive of the D+Q case (D+Q is equivalent to a RAID-5 recovery, so I didn't implement it in the user-space testbench.) [PATCH] document RAID-6 support in mdadm-1.5.0 From: "H. Peter Anvin" This is purely a doc patch saying RAID-6 support is available in mdadm-1.5.0 and the patch is no longer necessary. [PATCH] ppc64: add missing sched_balance_exec() call From: Anton Blanchard We were missing the sched_balance_exec call. Could explain some NUMA scheduling weirdness we were seeing. [PATCH] ppc64: include i2c in config ppc64 doesn't use drivers/Kconfig (it should) so it needs to include i2c by hand. [IPV6]: addrconf_sysctl_forward_strategy() needs to invoke rt6_purge_dflt_routers() too. Fix APIC timer initialization. We used to write fields that were marked RESERVED and that are apparently some old stale timer base. Stop doing that. Verified with Mikael Pettersson, and confirmed to fix ACPI boot-time lockups for a few people. [NET]: Simplify net/flow.c per-cpu handling. The cpu handling in net/core/flow.c is complex: it tries to allocate flow cache as each CPU comes up. It might as well allocate them for each possible CPU at boot. [PATCH] non-integrated local APIC LVTT init compatibility Add back the old i82489DX bits to use timer scaling for the old non-integrated APIC setup. It's possible these bits don't need to be set on i82489DXs, but not having this HW for testing I elected to maintain the old behaviour on these old machines. [XFS] In xfs_bulkstat, we need to do the readahead loop always. SGI Modid: xfs-linux:xfs-kern:164517a [XFS] Fix for large allocation groups, so that extent sizes will not overflow pagebuf lengths. SGI Modid: xfs-linux:xfs-kern:164827a [PATCH] LSI Logic MegaRAID3 PCI ID From: Chris Meadors Add a missing PCI ID. [PATCH] RAID-6 fix for IA-64 From: "H. Peter Anvin" Fix for RAID-6 on IA-64, from Bjorn Helgaas, and verified by me. [PATCH] ppc32: Fixes to the signal context code From: Benjamin Herrenschmidt This patch (which has been in my tree for some time now) does 2 things to the ppc32 signal code: - The new sys_swapcontext() syscall that we added recently (and which is _not_ yet used by glibc, so it's ok to change it slightly at this point, glibc kernel version check will limit us to 2.6.2 or 2.6.3) gets a new context size argument, so we can deal with future context size changes. - When ucontext is get/set/swapped using the above syscall, the TLS (r2) is preserved (it's still saved/restored on signal entry & return though). The equivalent of this patch is already in the ppc64 signal32.c emulation, and it has no effect until glibc is updated to use the new syscall, which should happen soon now, so please apply. [PATCH] Fix rq_for_each_bio() macro again From: Rusty Russell Looks like an obvious typo. Works fine if "bio" is the name of the iterator. [PATCH] PCI probing typo [PATCH] OOSTORE needs MTRR. The centaur CPU init code gets linking errors without it. [PATCH] Reduce stack usage in w9966 driver. 2KB onstack allocation. Nasty. [PATCH] Restore 2.4 MTRR feature. If the CPU doesn't support MTRRs, don't create a /proc/mtrr [PATCH] logic error in aty128fb Negate the expression not the register seems more sensible? [PATCH] Remove unused CONFIG symbol. Grep of the tree only turned up these two uses. [PATCH] Reduce stack usage in ttusb driver. ARM_PACKET_SIZE is 4KB. Ouch. [PATCH] Correct CPUs printout on boot. This currently prints out the maximum number of CPUs the kernel is configured to support, instead of the actual number that the kernel brought up. Which results in odd displays that look like you have more CPUs than you do. [PATCH] Remove useless cruft from ATM HE driver. Echoing changes done in 2.4. (It now has a pci_pool_create backport). [PATCH] logic error in radeonfb. Looks like another instance of a ! in the wrong place. [PATCH] logic error in XFS Yet another misplaced ! by the looks.. [PATCH] DMI updates from 2.4 A lot of the blacklists never made it forward, here's what I found still lying around in my old 2.5 tree when I brought it up to date. I think 2.4 has had more updates since then (and there may be some entries languishing in vendor 2.4 trees), I'll take a peek when I get some spare cycles. [PATCH] Update post-halloween doc url. I did a s/2.5/2.6/ a while ago, as it made more sense when 2.6 appeared. The old URL will continue to work (symlink to the new file). If I move this again, whack me. Fix up he.c misuse of pci_pool_create() that slipped in. [PATCH] md: Fix possible hang in raid shutdown. From: NeilBrown If a raid array was syncing on shutdown, it would hang on shutdown, constantly re-entering md_enter_safemade. This fixes it. [PATCH] Fix CPU hotplug in networking The code directly accessed the "cpucontrol" semaphore used for CPU hotplug. That doesn't work all that well, since the semaphore doesn't even exist on UP. [SUNZILOG]: Fix locking in cases where UART layer has grabbed the lock already. [PATCH] remove mt rainier warning A debug printk was left in there by mistake, it'll get printed for every non-mrw drive. So kill it. [PATCH] Fix up 'linux-dvb' maintainers entry We've created a new e-mail address which is currently an open mailing-list anybody can subscribe to. It's currently watched by the main developers. If spam takes over the list, we might change it to "moderated" or even route it to one single person. [IRDA]: Update dongle api. From Martin Diehl. * change dongle api such that raw r/w and modem line helpers are directly called, not virtual callbacks. [IRDA]: Update actisys-sir driver. From Martin Diehl. * convert to de-virtualized sirdev helpers * improve error path during speed change [IRDA]: Update esr-sir driver. From Martin Diehl. * convert to de-virtualized sirdev helpers * add probably missing dongle power-up operation [IRDA]: Update tekram-sir driver. From Martin Diehl. * increase default write-delay to 150msec * convert to de-virtualized sirdev helpers [IRDA]: Add litelink-sir driver. From Eugene Crosser. * converted for new api from old driver From Martin Diehl. * convert to de-virtualized sirdev helpers * set dongle to 9600 in case of invalid speed instead leaving it in unknown configuration [IRDA]: Add act200l-sir driver. From Martin Diehl. * converted for new api from old driver [IRDA]: Add girbil-sir driver. From Martin Diehl. * converted for new api from old driver [IRDA]: Add ma600-sir driver. From Martin Diehl. * converted for new api from old driver [IRDA]: Add mcp2120-sir driver. From Martin Diehl. * converted for new api from old driver [IRDA]: Add old_belkin-sir driver. From Martin Diehl. * converted for new api from old driver [IRDA]: Kconfig changes to enable new drivers into the build, from Martin Diehl. [PATCH] Fix for aacraid and high memory on 2.6.1 Here is an update to use pci_set_consistent_dma_mask. But since dma_alloc_coherent uses dma_mask instead of consistent one, I left in setting dma_mask as well until the alloc routine changes. drivers/scsi/Kconfig URL update: resource.cx From: Petri Koistinen aic7xxx parallel build From: Justin T. Gibbs [PATCH] aha1542 warning fix Fix this: drivers/scsi/aha1542.c:74: warning: unsigned int format, different type arg (arg 5) [MULTICAST]: multicast loop with include filters fix When sending a multicast and using looping back a copy to the local machine, the interface filter checks can be done before the source address is specified. For an INCLUDE filter, this won't match the allowed sources and the packets won't be delivered locally, even when the ultimate source address chosen is in the allowed list. The patch below fixes the filter checks for both IGMPv3 and MLDv2 to only apply when a source address is available. Thanks to Steven Hessing for reporting the problem and providing a test case for reproducing it. [NET]: Return 'unsigned char *' from *skb_pull*() routines. [IPSEC]: Guard against potentially fatal stack usage for auth_data. [IPV6]: Fix several comment spelling errors and typos. [PATCH] x86-64 merge Mainly lots of bug fixes and a few minor features. One change is that it uses drivers/Kconfig now like i386. This requires a few minor changes in outside Kconfig files which I am sending separately. - Tighten/fix some code in NUMA node discovery - Fix oopses in threaded 32bit coredumps and read correct registers. - Merge with 2.6.2rc1 - Sync arch/x86_64/Kconfig with i386. Uses drivers/Kconfig now. - Remove bcopy export - Fix check for signal stack for 32bit signals - Fix bcopy and exit prototypes for gcc 3.4 - Fix asm contraint in usercopy.c for gcc 3.4 - Use rt_sigreturn, not sigreturn for rt sigreturns. - Pass si_fault address to 32bit - Truncate si_error to 16bit in 32bit emulation to match i386 - Move IA32 flag switching for 32bit executables to flush_thread (code copied from ppc64/sparc64) - Print exception trace for strace too, share code. - Default to 3GB address space for a.out executables - Fix security hole in ptrace. Also fixes some problems with 32bit gdb. - Sync mmap address selection algorithm with mm/mmap.c version - Disable a.out coredumps completely - Fix bug in sigaltstack 32bit emulation. Kylix IDE now works. - Move errata 93/BIOS workaround into fault handler. This should work around USB legacy BIOS bugs too, although not completely (we cannot fix faults injected by SMM into user space 64bit processes) - Quieten some unimplemented 32bit syscall warnings and avoid repeated warnings. - Set LDT segment limit correctly (fixes problems with some modify_ldt user) - Remove obsolete ldt rw lock. - Remove sys32_modify_ldt. The standard sys_modify_ldt is equivalent. - Remove traces of old kgdb support - Merge CFI changes from Jim Houston and some other smaller changes The kernel assembly functions are described with dwarf2 unwind information now, which makes it easier for debuggers to make sense of stack backtraces. The code is only enabled with CONFIG_DEBUG_INFO. Note this implies that when you use CONFIG_DEBUG_INFO you may need an binutils update. - defconfig updated - Readd sleep support code (Pavel Machek) - Drop fusion and flush workarounds from IOMMU code - Add iommu=nofullflush option - Rewrite 32bit emulation for siginfo conversion (Joe Korty) - Allow remapping of scatterlists after unmap. This fixes some problems with the SCSI layer retrying previously mapped sg lists when iommu merging was enabled (it's disabled now by default) - Port HPET rtc device emulation code from i386 [PATCH] Kconfig fixes for x86-64 x86-64 using drivers/Kconfig requires some minor changes. Mostly to disable drivers that do not work. - Mark paride bpck6 not 64bit clean - Disable I2O on 64bit - Mark PNP dependent on ISA - Mark NSP32 driver as not 64bit clean [PATCH] IDE build fix From: Arkadiusz Miskiewicz Both drivers/ide/legacy and drivers/ide/ppc broke because they can no longer include drivers/ide/timing.h. Fix. (Acked by Bart) [PATCH] pdc202xx_new.c: fix PDC20270/1 init on the Xserve Apple machines From: Bartlomiej Zolnierkiewicz From: Benjamin Herrenschmidt Fix initialization of the PDC20270/1 chipsets on the Xserve Apple machines. [PATCH] Array overindexing in w9968cf From: Jean Delvare There are 24 members of this array. [PATCH] DMI update fix From: Dave Jones Fix typo in the recent 2.4 DMI sync-up. [PATCH] The RAW_GETBIND compat_ioctl fails From: James Cross The RAW_GETBIND compatibility ioctl call does convert properly between the 32bit/64bit version of raw_config_request due to a trivial error, and the ioctl call fails. [PATCH] request_firmware(): use del_timer_sync() Avoid a possible timer deletion race. [PATCH] Graphire3 support I got a Wacom Graphire3 for my birthday and unfortunately it didn't work. After some playing around, I noticed the 2.6 kernel needs a few small modifications to make it work. This simple patch adds support for the Wacom Graphire 3. [netdrvr 8139cp] fix NAPI race Andreas Happe writes: > my notebook (hp/compaq nx7000) still crashes when using 8139cp (runs > rock solid with 8139too driver). The computer just locks up, there is no > dmesg output. This has happened since I've got this laptop (around > november '03). It seems 8139cp.c has the race condition of rx_poll and interrupt. NOTE, since I don't have this device, patch is untested. Sorry. [PATCH] Make xircom cardbus handle shared irq Current driver doesn't do shared irq properly. When testing on a laptop here irq 3 get shared between pcmcia slot and tty/IRDA [SERIAL] Eliminate a couple of redundant tests There is no way that tty can be NULL in uart_put_char() and uart_write(). Eliminate these redundant tests. [SERIAL] Fix missing NULL check tty->driver_data or state->port may end up being NULL in uart_close. Make sure that we correctly clean up in this case, rather than oopsing. [SERIAL] Use tty_name() when printing the tty name. [PATCH] i8042 timer fix From: Jim Collette There's an exit path in i8042_interrupt() which forgets to rearm the timer. It can make the mouse die when X is started. [IDE]: Fix compilation warning Linux 2.6.2-rc2