16 years ago[IA64] Support multiple CPUs going through OS_MCA
Russ Anderson [Fri, 18 May 2007 22:17:17 +0000 (17:17 -0500)]
[IA64] Support multiple CPUs going through OS_MCA

Linux does not gracefully deal with multiple processors going
through OS_MCA aa part of the same MCA event.  The first cpu
into OS_MCA grabs the ia64_mca_serialize lock.  Subsequent
cpus wait for that lock, preventing them from reporting in as
rendezvoused.  The first cpu waits 5 seconds then complains
that all the cpus have not rendezvoused.  The first cpu then
handles its MCA and frees up all the rendezvoused cpus and
releases the ia64_mca_serialize lock.  One of the subsequent
cpus going thought OS_MCA then gets the ia64_mca_serialize
lock, waits another 5 seconds and then complains that none of
the other cpus have rendezvoused.

This patch allows multiple CPUs to gracefully go through OS_MCA.

The first CPU into ia64_mca_handler() grabs a mca_count lock.
Subsequent CPUs into ia64_mca_handler() are added to a list of cpus
that need to go through OS_MCA (a bit set in mca_cpu), and report
in as rendezvoused, and but spin waiting their turn.

The first CPU sees everyone rendezvous, handles his MCA, wakes up
one of the other CPUs waiting to process their MCA (by clearing
one mca_cpu bit), and then waits for the other cpus to complete
their MCA handling.  The next CPU handles his MCA and the process
repeats until all the CPUs have handled their MCA.  When the last
CPU has handled it's MCA, it sets monarch_cpu to -1, releasing all
the CPUs.

In testing this works more reliably and faster.

Thanks to Keith Owens for suggesting numerous improvements
to this code.

Signed-off-by: Russ Anderson <>
Signed-off-by: Tony Luck <>
16 years ago[IA64] silence GCC ia64 unused variable warnings
Jes Sorensen [Wed, 11 Jul 2007 15:26:30 +0000 (17:26 +0200)]
[IA64] silence GCC ia64 unused variable warnings

Tell GCC to stop spewing out unnecessary warnings for unused variables
passed to functions as pointers for ia64 files.

Signed-off-by: Jes Sorensen <>
Signed-off-by: Tony Luck <>
16 years ago[IA64] prevent MCA when performing MMIO mmap to PCI config space
Alex Chiang [Wed, 11 Jul 2007 17:02:15 +0000 (11:02 -0600)]
[IA64] prevent MCA when performing MMIO mmap to PCI config space

Example memory map (HP rx7640 with 'default' acpiconfig setting, VGA disabled):
   0x00000000 - 0x3FFFBFFF  supports only WB (cacheable) access

If a user attempts to perform an MMIO mmap (using the PCIIOC_MMAP_IS_MEM ioctl)
to PCI config space (like mmap'ing and accessing memory at 0xA0000),
we will MCA because the kernel will attempt to use a mapping with the UC

So check the memory attribute in kern_mmap and the EFI memmap. If WC is
requested, and WC or UC access is supported for the region, allow it.
Otherwise, use the same attribute the kernel uses.

Updates documentation and test cases as well.

Signed-off-by: Alex Chiang <>
Signed-off-by: Bjorn Helgaas <>
Signed-off-by: Tony Luck <>
16 years ago[IA64] add sn_register_pmi_handler oemcall
Dean Nelson [Wed, 11 Jul 2007 15:22:16 +0000 (10:22 -0500)]
[IA64] add sn_register_pmi_handler oemcall

Add wrapper function to make SN_SAL_REGISTER_PMI_HANDLER ia64_sal_oemcall.

Signed-off-by: Dean Nelson <>
Signed-off-by: Tony Luck <>
16 years ago[IA64] Stop bit for brl instruction
Christian Kandeler [Mon, 9 Jul 2007 14:19:11 +0000 (16:19 +0200)]
[IA64] Stop bit for brl instruction

SDM says that brl instruction must be followed by a stop bit.
Fix instance in BRL_COND_FSYS_BUBBLE_DOWN where it isn't.

Signed-off-by: Christian Kandeler <>
Signed-off-by: Tony Luck <>
16 years ago[IA64] SN: Correct ROM resource length for BIOS copy
John Keller [Mon, 9 Jul 2007 18:42:24 +0000 (11:42 -0700)]
[IA64] SN: Correct ROM resource length for BIOS copy

On SN systems, when setting the IORESOURCE_ROM_BIOS_COPY resource flag,
the resource length should be set to the actual size of the ROM image
so that a call to pci_map_rom() returns the correct size.

Signed-off-by: John Keller <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Tony Luck <>
16 years ago[IA64] Don't set psr.ic and psr.i simultaneously
Tony Luck [Thu, 28 Jun 2007 23:05:34 +0000 (16:05 -0700)]
[IA64] Don't set psr.ic and psr.i simultaneously

It's not a good idea to use "ssm psr.ic | psr.i" to simultaneously
enable interrupts and interrupt state collection, the two bits can
take effect asynchronously, so it is possible for an interrupt to
be serviced while psr.ic is still zero.

Signed-off-by: Tony Luck <>
16 years agoLinux 2.6.22 v2.6.22
Linus Torvalds [Sun, 8 Jul 2007 23:32:17 +0000 (16:32 -0700)]
Linux 2.6.22

Woo-hoo. I'm sure somebody will report a "this doesn't compile, and
I have a new root exploit" five minutes after release, but it still
feels good ;)

Signed-off-by: Linus Torvalds <>
16 years agoMerge
Linus Torvalds [Sun, 8 Jul 2007 19:14:27 +0000 (12:14 -0700)]
Merge /pub/scm/linux/kernel/git/bart/ide-2.6

  qd65xx: fix PIO mode selection
  sis5513: adding PCI-ID

16 years agoFix permission checking for the new utimensat() system call
Linus Torvalds [Sun, 8 Jul 2007 19:02:55 +0000 (12:02 -0700)]
Fix permission checking for the new utimensat() system call

Commit 1c710c896eb461895d3c399e15bb5f20b39c9073 added the utimensat()
system call, but didn't handle the case of checking for the writability
of the target right, when the target was a file descriptor, not a

We cannot use vfs_permission(MAY_WRITE) for that case, and need to
simply check whether the file descriptor is writable.  The oops from
using the wrong function was noticed and narrowed down by Markus

Cc: Ulrich Drepper <>
Cc: Markus Trippelsdorf <>
Cc: Andrew Morton <>
Acked-by: Al Viro <>
Signed-off-by: Linus Torvalds <>
16 years agomm: double mark_page_accessed() in read_cache_page_async()
Peter Zijlstra [Sun, 8 Jul 2007 08:13:06 +0000 (01:13 -0700)]
mm: double mark_page_accessed() in read_cache_page_async()

Fix a post-2.6.21 regression.

read_cache_page_async() has two invocations of mark_page_accessed() which will
launch pages right onto the active list.

Remove the first one, keeping the latter one.  This avoids marking unwanted
pages active (in the retry loop).

Signed-off-by: Peter Zijlstra <>
Acked-by: Nick Piggin <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years agoqd65xx: fix PIO mode selection
Bartlomiej Zolnierkiewicz [Sun, 8 Jul 2007 13:21:58 +0000 (15:21 +0200)]
qd65xx: fix PIO mode selection

PIO4 is a maximum PIO mode supported by a driver.  Using "255" as a max_mode
argument to ide_get_best_pio_mode() could result in wrong timings being used
by a driver (for "pio" equal to 5) or OOPS (for "pio" values > 5 && < 255).

Signed-off-by: Bartlomiej Zolnierkiewicz <>
Acked-by: Sergei Shtylyov <>
Reviewed-by: Alan Cox <>
16 years agosis5513: adding PCI-ID
Uwe Koziolek [Sun, 8 Jul 2007 13:21:58 +0000 (15:21 +0200)]
sis5513: adding PCI-ID

The SiS966 has one additional PCI-ID 1180.

If the chipset is using this PCI-ID, the primary channel is connected to the
first PATA-port. The secondary channel is connected to SATA-ports in IDE
emulation mode.  The legacy IO-ports are used.

The including of the PCI-ID into pata_sis is not sufficient, because the legacy
driver in drivers/ide is initialized before pata_sis.

Signed-off-by: Uwe Koziolek <>
Signed-off-by: Bartlomiej Zolnierkiewicz <>
16 years agoDLM must depend on SYSFS
Adrian Bunk [Sat, 7 Jul 2007 04:14:02 +0000 (06:14 +0200)]
DLM must depend on SYSFS

The dependency of DLM on SYSFS got lost in
commit 6ed7257b46709e87d79ac2b6b819b7e0c9184998 resulting in the
following compile error with CONFIG_DLM=y, CONFIG_SYSFS=n:

<--  snip  -->

  LD      .tmp_vmlinux1
fs/built-in.o: In function `dlm_lockspace_init':
/home/bunk/linux/kernel-2.6/linux-2.6.22-rc6-mm1/fs/dlm/lockspace.c:231: undefined reference to `kernel_subsys'
fs/built-in.o: In function `configfs_init':
/home/bunk/linux/kernel-2.6/linux-2.6.22-rc6-mm1/fs/configfs/mount.c:143: undefined reference to `kernel_subsys'
make[1]: *** [.tmp_vmlinux1] Error 1

<--  snip  -->

Signed-off-by: Adrian Bunk <>
Signed-off-by: Linus Torvalds <>
16 years agoClean up E7520/7320/7525 quirk printk.
Dave Jones [Fri, 6 Jul 2007 18:59:43 +0000 (14:59 -0400)]
Clean up E7520/7320/7525 quirk printk.

The printk level in this printk is bogus, as the previous printk
didn't have a terminating \n resulting in ..

Intel E7520/7320/7525 detected.<6>Disabling irq balancing and affinity

It also never printed a \n at all in the case where we didn't do
the quirk.

Change it to only make noise if it actually does something useful.

Signed-off-by: Dave Jones <>
Signed-off-by: Linus Torvalds <>
16 years agoinclude/linux/kallsyms.h must #include <linux/errno.h>
Adrian Bunk [Fri, 6 Jul 2007 22:54:09 +0000 (00:54 +0200)]
include/linux/kallsyms.h must #include <linux/errno.h>

This patch fixes the following 2.6.22 regression with CONFIG_KALLSYMS=n:

<--  snip  -->

  CC      arch/m32r/kernel/traps.o
In file included from /home/bunk/linux/kernel-2.6/linux-2.6.22-rc6-mm1/arch/m32r/kernel/traps.c:14:
/home/bunk/linux/kernel-2.6/linux-2.6.22-rc6-mm1/include/linux/kallsyms.h: In function 'lookup_symbol_name':
/home/bunk/linux/kernel-2.6/linux-2.6.22-rc6-mm1/include/linux/kallsyms.h:66: error: 'ERANGE' undeclared (first use in this function)
/home/bunk/linux/kernel-2.6/linux-2.6.22-rc6-mm1/include/linux/kallsyms.h:66: error: (Each undeclared identifier is reported only once
/home/bunk/linux/kernel-2.6/linux-2.6.22-rc6-mm1/include/linux/kallsyms.h:66: error: for each function it appears in.)
/home/bunk/linux/kernel-2.6/linux-2.6.22-rc6-mm1/include/linux/kallsyms.h: In function 'lookup_symbol_attrs':
/home/bunk/linux/kernel-2.6/linux-2.6.22-rc6-mm1/include/linux/kallsyms.h:71: error: 'ERANGE' undeclared (first use in this function)
make[2]: *** [arch/m32r/kernel/traps.o] Error 1

<--  snip  -->

Signed-off-by: Adrian Bunk <>
Signed-off-by: Linus Torvalds <>
16 years agoFix use-after-free oops in Bluetooth HID.
David Woodhouse [Sat, 7 Jul 2007 18:58:39 +0000 (14:58 -0400)]
Fix use-after-free oops in Bluetooth HID.

When cleaning up HIDP sessions, we currently close the ACL connection
before deregistering the input device. Closing the ACL connection
schedules a workqueue to remove the associated objects from sysfs, but
the input device still refers to them -- and if the workqueue happens to
run before the input device removal, the kernel will oops when trying to
look up PHYSDEVPATH for the removed input device.

Fix this by deregistering the input device before closing the

Signed-off-by: David Woodhouse <>
Acked-by: Marcel Holtmann <>
Signed-off-by: Linus Torvalds <>
16 years agoslub: remove useless EXPORT_SYMBOL
Christoph Lameter [Fri, 6 Jul 2007 18:17:32 +0000 (11:17 -0700)]
slub: remove useless EXPORT_SYMBOL

kmem_cache_open is static. EXPORT_SYMBOL was leftover from some earlier
time period where kmem_cache_open was usable outside of slub.

(Fixes powerpc build error)

Signed-off-by: Chrsitoph Lameter <>
Cc: Johannes Berg <>
Cc: Benjamin Herrenschmidt <>
Cc: Paul Mackerras <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years agoMAINTAINERS new kernel janitors ml
maximilian attems [Fri, 6 Jul 2007 18:17:32 +0000 (11:17 -0700)]
MAINTAINERS new kernel janitors ml

davem kindly moved the list from osdl to vger.

Signed-of-by: maximilian attems <>
Cc: Alexey Dobriyan <>
Cc: Randy Dunlap <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years agoGEODE: reboot fixup for geode machines with CS5536 boards
Andres Salomon [Fri, 6 Jul 2007 18:17:30 +0000 (11:17 -0700)]
GEODE: reboot fixup for geode machines with CS5536 boards

Writing to MSR 0x51400017 forces a hard reset on CS5536-based machines,
this has the reboot fixup do just that if such a board is detected.

Acked-by: Jordan Crouse <>
Signed-off-by: Andres Salomon <>
Cc: Alan Cox <>
Cc: Andi Kleen <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years agoMerge branch 'master' of
Linus Torvalds [Fri, 6 Jul 2007 17:30:12 +0000 (10:30 -0700)]
Merge branch 'master' of /linux/kernel/git/davem/net-2.6

* 'master' of
  [NETPOLL]: Fixups for 'fix soft lockup when removing module'
  [NET]: net/core/netevent.c should #include <net/netevent.h>
  [NETFILTER]: nf_conntrack_h323: add checking of out-of-range on choices' index values
  [NET] skbuff: remove export of static symbol
  SCTP: Add scope_id validation for link-local binds
  SCTP: Check to make sure file is valid before setting timeout
  SCTP: Fix thinko in sctp_copy_laddrs()

16 years agoMerge branch 'upstream' of git://
Linus Torvalds [Fri, 6 Jul 2007 17:29:33 +0000 (10:29 -0700)]
Merge branch 'upstream' of git://

* 'upstream' of git://
  [MIPS] Fix scheduling latency issue on 24K, 34K and 74K cores
  [MIPS] Add macros to encode processor revisions.
  [MIPS] SMTC: Fix cut'n'paste bug in Kconfig.debug
  [MIPS] Change libgcc-style functions from lib-y to obj-y
  [MIPS] Fix timer/performance interrupt detection
  [MIPS] AP/SP: Avoid triggering the 34K E125 performance issue
  [MIPS] 64-bit TO_PHYS_MASK macro for RM9000 processors

16 years agomm: fixup /proc/vmstat output
Peter Zijlstra [Fri, 6 Jul 2007 11:35:34 +0000 (13:35 +0200)]
mm: fixup /proc/vmstat output

Line up the vmstat_text with zone_stat_item

enum zone_stat_item {
/* First 128 byte cacheline (assuming 64 bit words) */

We current have nr_active and nr_inactive reversed.

[ "OK with patch, though using initializers canbe handy to prevent such
   things in future:

static const char * const vmstat_text[] = {
[NR_FREE_PAGES] = "nr_free_pages",
 - Alexey ]

Signed-off-by: Peter Zijlstra <>
Acked-by: Alexey Dobriyan <>
Signed-off-by: Linus Torvalds <>
16 years agopotential compiler error, irqfunc caller sites update
Yoann Padioleau [Fri, 6 Jul 2007 09:39:56 +0000 (02:39 -0700)]
potential compiler error, irqfunc caller sites update

In 7d12e780e003f93433d49ce78cfedf4b4c52adc5 David Howells performed
this evolution:
 "IRQ: Maintain regs pointer globally rather than passing to IRQ handlers"

He correctly updated many of the function definitions that were using this
extra regs pointer parameter but forgot to update some caller sites of
those functions.  The reason the modifications was not properly done on all
drivers is that some drivers were rarely compiled because they are for
AMIGA, or that some code sites were inside #ifdefs where the option is not
set or inside #if 0.

Here is the semantic patch that found the occurences
and fixed the problem.

@ rule1 @
identifier fn;
identifier irq, dev_id;
typedef irqreturn_t;

static irqreturn_t fn(int irq, void *dev_id)

identifier rule1.fn;
expression E1, E2, E3;

 fn(E1, E2
-   ,E3

Signed-off-by: Yoann Padioleau <>
Cc: "David S. Miller" <>
Cc: Jeff Garzik <>
Cc: Greg KH <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years agoi386: es7000 build breakage fix
Vivek Goyal [Fri, 6 Jul 2007 09:39:55 +0000 (02:39 -0700)]
i386: es7000 build breakage fix

o Commit 1833d6bc72893265f22addd79cf52e6987496e0f broke the build if
  compiled with CONFIG_ES7000=y and CONFIG_X86_GENERICARCH=n

arch/i386/kernel/built-in.o(.init.text+0x4fa9): In function `acpi_parse_madt':
: undefined reference to `acpi_madt_oem_check'
arch/i386/kernel/built-in.o(.init.text+0x7406): In function `smp_read_mpc':
: undefined reference to `mps_oem_check'
arch/i386/kernel/built-in.o(.init.text+0x8990): In function
: undefined reference to `enable_apic_mode'
make: *** [.tmp_vmlinux1] Error 1

o Fix the build issue. Provided the definitions of missing functions.

o Don't have ES7000 machine. Only compile tested.

Cc: Len Brown <>
Cc: Natalie Protasevich <>
Cc: Roland Dreier <>
Cc: Andi Kleen <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years agoPNP SMCf010 quirk: work around Toshiba Portege 4000 ACPI issues
Bjorn Helgaas [Fri, 6 Jul 2007 09:39:54 +0000 (02:39 -0700)]
PNP SMCf010 quirk: work around Toshiba Portege 4000 ACPI issues

When we enable the SMCf010 IR device, the Toshiba Portege 4000 BIOS claims
the device is working, but it really isn't configured correctly.  The BIOS
*will* configure it, but only if we call _SRS after (1) reversing the order
of the SIR and FIR I/O port regions and (2) changing the IRQ from
active-high to active-low.

This patch addresses the 2.6.22 regression:
    "no irda0 interface (2.6.21 was OK), smsc does not find chip"

I tested this on a Portege 4000.  The smsc-ircc2 driver correctly detects
the device, and "irattach irda0 -s && irdadump" shows transmitted and
received packets.

Signed-off-by: Bjorn Helgaas <>
Cc: Andrey Borzenkov <>
Cc: Samuel Ortiz <>
Cc: "Linus Walleij (LD/EAB)" <>
Cc: Michal Piotrowski <>
Cc: Adam Belay <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years agofix logic error in ipc compat semctl()
Alexander Graf [Fri, 6 Jul 2007 09:39:53 +0000 (02:39 -0700)]
fix logic error in ipc compat semctl()

When calling a semctl(IPC_STAT) without IPC_64 the check if the memory is
unevaluated.  This patch fixes this.

Signed-off-by: Alexander Graf <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years agox86_64: fix headers_install
David Woodhouse [Fri, 6 Jul 2007 09:39:52 +0000 (02:39 -0700)]
x86_64: fix headers_install

A bug in headers_install for ARCH=x86_64 yields an asm/ directory full of
files all of which are using the same #ifdef guard, "__ASM_STUB_" with no
postfix.  So the second and later asm files #included in the same C file
(often through standard headers like ioctl.h) yields no symbols.

Strangeness with the Ubuntu 'tell me if I support something that's not
explcitly mentioned in POSIX, and I'll strip it out' shell, I believe.

We don't need the 'export' but we do need a semicolon at the end of the
FNAME line:

Signed-off-by: David Woodhouse <>
Signed-off-by: Rob Landley <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years agoMTRR: Fix race causing set_mtrr to go into infinite loop
Loic Prylli [Fri, 6 Jul 2007 09:39:52 +0000 (02:39 -0700)]
MTRR: Fix race causing set_mtrr to go into infinite loop

Processors synchronization in set_mtrr requires the .gate field to be set
after .count field is properly initialized.  Without an explicit barrier,
the compiler was reordering those memory stores.  That was sometimes
causing a processor (in ipi_handler) to see the .gate change and decrement
.count before the latter is set by set_mtrr() (which then hangs in a
infinite loop with irqs disabled).

Signed-off-by: Loic Prylli <>
Cc: Andi Kleen <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years agoi386: fix regression, endless loop in ptrace singlestep over an int80
Jason Wessel [Fri, 6 Jul 2007 09:39:50 +0000 (02:39 -0700)]
i386: fix regression, endless loop in ptrace singlestep over an int80

The commit 635cf99a80f4ebee59d70eb64bb85ce829e4591f introduced a
regression.  Executing a ptrace single step after certain int80
accesses will infinitely loop and never advance the PC.

The TIF_SINGLESTEP check should be done on the return from the syscall
and not before it.

I loops on each single step on the pop right after the int80 which writes out
to the console.  At that point you can issue as many single steps as you want
and it will not advance any further.

The test case is below:

/* Test whether singlestep through an int80 syscall works.
#define _GNU_SOURCE
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ptrace.h>
#include <sys/wait.h>
#include <sys/mman.h>
#include <asm/user.h>
#include <string.h>

static int child, status;
static struct user_regs_struct regs;

static void do_child()
char str[80] = "child: int80 test\n";

ptrace(PTRACE_TRACEME, 0, 0, 0);
kill(getpid(), SIGUSR1);
asm ("int $0x80" : : "a" (20)); /* getpid */

static void do_parent()
unsigned long eip, expected = 0;
waitpid(child, &status, 0);
if (WIFEXITED(status) || WIFSIGNALED(status))

if (WIFSTOPPED(status)) {
ptrace(PTRACE_GETREGS, child, 0, &regs);
eip = regs.eip;
if (expected)
fprintf(stderr, "child stop @ %08lx, expected %08lx %s\n",
eip, expected,
eip == expected ? "" : " <== ERROR");

if (*(unsigned short *)eip == 0x80cd) {
fprintf(stderr, "int 0x80 at %08x\n", (unsigned int)eip);
expected = eip + 2;
} else
expected = 0;

goto again;

int main(int argc, char * const argv[])
child = fork();
if (child)
return 0;

Signed-off-by: Jason Wessel <>
Cc: Jeremy Fitzhardinge <>
Cc: <>
Cc: Chuck Ebbert <>
Acked-by: Andi Kleen <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years agoFix elf_core_dump() when writing arch specific notes (spu coredumps)
Michael Ellerman [Fri, 6 Jul 2007 09:39:49 +0000 (02:39 -0700)]
Fix elf_core_dump() when writing arch specific notes (spu coredumps)

elf_core_dump() supports dumping arch specific ELF notes, via the #define
ELF_CORE_WRITE_EXTRA_NOTES.  Currently the only user of this is the powerpc
spu coredump code.

There is a bug in the handling of foffset WRT the arch notes, which causes
us to erroneously increment foffset by the size of the arch notes, leaving
a block of zeroes in the file, and causing all subsequent data in the file
to be at <supposed position> + <arch note size>.  eg:

  LOAD  0x050000 0x00100000 0x00000000 0x20000 0x20000 R E 0x10000

Tells us we should have a chunk of data at 0x50000.  The truth is the data
is at 0x90dbc = 0x50000 + 0x40dbc (the size of the arch notes).

This bug prevents gdb from reading the core file correctly.

The simplest fix is to simply remember the size of the arch notes, and add
it to foffset after we've written the arch notes.  The only drawback is
that if the arch code doesn't write as many bytes as it said it would, we
end up with a broken core dump again.  For now I think that's a reasonable

Tested on a Cell blade, gdb no longer complains about the core file being

While I'm here I should point out that the spu coredump code does not work
if we're dumping to a pipe - we'll have to wait for 23 to fix that.

Signed-off-by: Michael Ellerman <>
Acked-by: Arnd Bergmann <>
Acked-by: Benjamin Herrenschmidt <>
Acked-by: Paul Mackerras <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years ago[MIPS] Fix scheduling latency issue on 24K, 34K and 74K cores
Ralf Baechle [Wed, 20 Jun 2007 23:22:34 +0000 (00:22 +0100)]
[MIPS] Fix scheduling latency issue on 24K, 34K and 74K cores

The idle loop goes to sleep using the WAIT instruction if !need_resched().
This has is suffering from from a race condition that if if just after
need_resched has returned 0 an interrupt might set TIF_NEED_RESCHED but
we've just completed the test so go to sleep anyway.  This would be
trivial to fix by just disabling interrupts during that sequence as in:

        if (!need_resched())

but the processor architecture leaves it undefined if a processor calling
WAIT with interrupts disabled will ever restart its pipeline and indeed
some processors have made use of the freedom provided by the architecture
definition.  This has been resolved and the Config7.WII bit indicates that
the use of WAIT is safe on 24K, 24KE and 34K cores.  It also is safe on
74K starting revision 2.1.0 so enable the use of WAIT with interrupts
disabled for 74K based on a c0_prid of at least that.

Signed-off-by: Ralf Baechle <>
16 years ago[MIPS] Add macros to encode processor revisions.
Ralf Baechle [Fri, 6 Jul 2007 13:40:05 +0000 (14:40 +0100)]
[MIPS] Add macros to encode processor revisions.

Older processors used to encode processor version and revision in two
4-bit bitfields, the 4K seems to simply count up and even newer MTI cores
have switched to use the 8-bits as 3:3:2 bitfield with the last field as
the patch number.

Signed-off-by: Ralf Baechle <>
Ralf Baechle [Thu, 5 Jul 2007 07:14:21 +0000 (08:14 +0100)]

The RM7000 processors and the E9000 cores have a bug (though PMC-Sierra
opposes it being called that) where invalid instructions in the same
I-cache line worth of instructions being fetched may case spurious

The workaround for this was only enabled for E9000 cores; enable it also
for all RM7000-based platforms.

Signed-off-by: Ralf Baechle <>
16 years ago[MIPS] SMTC: Fix cut'n'paste bug in Kconfig.debug
Ralf Baechle [Thu, 5 Jul 2007 16:39:48 +0000 (17:39 +0100)]
[MIPS] SMTC: Fix cut'n'paste bug in Kconfig.debug

This effectivly turned the SMTC_IDLE_HOOK_DEBUG debug option into a no-op.

Signed-off-by: Ralf Baechle <>
16 years ago[MIPS] Change libgcc-style functions from lib-y to obj-y
Ralf Baechle [Tue, 26 Jun 2007 18:19:00 +0000 (20:19 +0200)]
[MIPS] Change libgcc-style functions from lib-y to obj-y

Reported by Eugene Surovegin <>.

If only modules were users of these functions they did not get linked into
the kernel proper, so later module loads would fail as well.

Signed-off-by: Ralf Baechle <>
16 years ago[MIPS] Fix timer/performance interrupt detection
Chris Dearman [Thu, 21 Jun 2007 11:59:57 +0000 (12:59 +0100)]
[MIPS] Fix timer/performance interrupt detection

Signed-off-by: Chris Dearman <>
Signed-off-by: Ralf Baechle <>
16 years ago[MIPS] AP/SP: Avoid triggering the 34K E125 performance issue
Ralf Baechle [Thu, 7 Jun 2007 07:44:32 +0000 (08:44 +0100)]
[MIPS] AP/SP: Avoid triggering the 34K E125 performance issue

C0_status doesn't need to be initialized at this point anyway; the register
will be initialized later.

Signed-off-by: Ralf Baechle <>
16 years ago[MIPS] 64-bit TO_PHYS_MASK macro for RM9000 processors
Andrew Sharp [Fri, 23 Mar 2007 19:15:18 +0000 (12:15 -0700)]
[MIPS] 64-bit TO_PHYS_MASK macro for RM9000 processors

Signed-off-by: Andrew Sharp <>
Signed-off-by: Ralf Baechle <>
16 years ago[NETPOLL]: Fixups for 'fix soft lockup when removing module'
Jarek Poplawski [Fri, 6 Jul 2007 00:42:44 +0000 (17:42 -0700)]
[NETPOLL]: Fixups for 'fix soft lockup when removing module'

>From my recent patch:

> >    #1
> >    Until kernel ver. 2.6.21 (including) cancel_rearming_delayed_work()
> >    required a work function should always (unconditionally) rearm with
> >    delay > 0 - otherwise it would endlessly loop. This patch replaces
> >    this function with cancel_delayed_work(). Later kernel versions don't
> >    require this, so here it's only for uniformity.

But Oleg Nesterov <> found:

> But 2.6.22 doesn't need this change, why it was merged?
> In fact, I suspect this change adds a race,

His description was right (thanks), so this patch reverts #1.

Signed-off-by: Jarek Poplawski <>
Signed-off-by: David S. Miller <>
16 years ago[NET]: net/core/netevent.c should #include <net/netevent.h>
Adrian Bunk [Fri, 6 Jul 2007 00:06:21 +0000 (17:06 -0700)]
[NET]: net/core/netevent.c should #include <net/netevent.h>

Every file should include the headers containing the prototypes for
its global functions.

Signed-off-by: Adrian Bunk <>
Signed-off-by: David S. Miller <>
16 years ago[NETFILTER]: nf_conntrack_h323: add checking of out-of-range on choices' index values
Jing Min Zhao [Fri, 6 Jul 2007 00:05:01 +0000 (17:05 -0700)]
[NETFILTER]: nf_conntrack_h323: add checking of out-of-range on choices' index values

Choices' index values may be out of range while still encoded in the fixed
length bit-field. This bug may cause access to undefined types (NULL
pointers) and thus crashes (Reported by Zhongling Wen).

This patch also adds checking of decode flag when decoding SEQUENCEs.

Signed-off-by: Jing Min Zhao <>
Signed-off-by: Patrick McHardy <>
Signed-off-by: David S. Miller <>
16 years ago[NET] skbuff: remove export of static symbol
Johannes Berg [Fri, 6 Jul 2007 00:03:09 +0000 (17:03 -0700)]
[NET] skbuff: remove export of static symbol

skb_clone_fraglist is static so it shouldn't be exported.

Signed-off-by: Johannes Berg <>
Signed-off-by: David S. Miller <>
16 years agoSCTP: Add scope_id validation for link-local binds
Vlad Yasevich [Tue, 3 Jul 2007 18:29:23 +0000 (14:29 -0400)]
SCTP: Add scope_id validation for link-local binds

SCTP currently permits users to bind to link-local addresses,
but doesn't verify that the scope id specified at bind matches
the interface that the address is configured on.  It was report
that this can hang a system.

Signed-off-by: Vlad Yasevich <>
Signed-off-by: David S. Miller <>
16 years agoSCTP: Check to make sure file is valid before setting timeout
Vlad Yasevich [Tue, 3 Jul 2007 16:47:40 +0000 (12:47 -0400)]
SCTP: Check to make sure file is valid before setting timeout

In-kernel sockets created with sock_create_kern don't usually
have a file and file descriptor allocated to them.  As a result,
when SCTP tries to check the non-blocking flag, we Oops when
dereferencing a NULL file pointer.

Signed-off-by: Vlad Yasevich <>
Signed-off-by: David S. Miller <>
16 years agoSCTP: Fix thinko in sctp_copy_laddrs()
Vlad Yasevich [Tue, 3 Jul 2007 16:43:12 +0000 (12:43 -0400)]
SCTP: Fix thinko in sctp_copy_laddrs()

Correctly dereference bytes_copied in sctp_copy_laddrs().
I totally must have spaced when doing this.

Signed-off-by: Vlad Yasevich <>
Signed-off-by: David S. Miller <>
16 years agoMerge
Linus Torvalds [Thu, 5 Jul 2007 23:10:16 +0000 (16:10 -0700)]

  [ARM] always allow dump_stack() to produce a backtrace
  [ARM] Fix non-page aligned boot time mappings
  [ARM] 4458/1: pxa: Fix CKEN usage and hence fix pxa suspend/resume
  [ARM] 4454/1: Use word accesses in Versatile PCI config reads

16 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Thu, 5 Jul 2007 22:55:37 +0000 (15:55 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/dtor/input

* 'for-linus' of git://
  Input: document some of keycodes
  Input: add a new EV_SW SW_RADIO event, for radio switches on laptops
  Input: serio - take drv_mutex in serio_cleanup()
  Input: atkbd - use printk_ratelimit for spurious ACK messages
  Input: atkbd - throttle LED switching
  Input: i8042 - add HP Pavilion ZT1000 to the MUX blacklist

16 years agoMerge branch 'merge' of git://
Linus Torvalds [Thu, 5 Jul 2007 22:55:00 +0000 (15:55 -0700)]
Merge branch 'merge' of git://git./linux/kernel/git/paulus/powerpc

* 'merge' of git://
  [POWERPC] Update defconfigs
  [POWERPC] Uninline and export virq_to_hw() for the pasemi_mac driver
  [POWERPC] Fix PMI breakage in cbe_cbufreq driver
  [POWERPC] Disable old EMAC driver in arch/powerpc

16 years agoFix slab redzone alignment
David Woodhouse [Thu, 5 Jul 2007 01:26:44 +0000 (21:26 -0400)]
Fix slab redzone alignment

Commit b46b8f19c9cd435ecac4d9d12b39d78c137ecd66 fixed a couple of bugs
by switching the redzone to 64 bits. Unfortunately, it neglected to
ensure that the _second_ redzone, after the slab object, is aligned
correctly. This caused illegal instruction faults on sparc32, which for
some reason not entirely clear to me are not trapped and fixed up.

Two things need to be done to fix this:
  - increase the object size, rounding up to alignof(long long) so
    that the second redzone can be aligned correctly.
  - If SLAB_STORE_USER is set but alignof(long long)==8, allow a
    full 64 bits of space for the user word at the end of the buffer,
    even though we may not _use_ the whole 64 bits.

This patch should be a no-op on any 64-bit architecture or any 32-bit
architecture where alignof(long long) == 4. Of the others, it's tested
on ppc32 by myself and a very similar patch was tested on sparc32 by
Mark Fortescue, who reported the new problem.

Also, fix the conditions for FORCED_DEBUG, which hadn't been adjusted to
the new sizes. Again noticed by Mark.

Signed-off-by: David Woodhouse <>
Signed-off-by: Linus Torvalds <>
16 years ago[ARM] always allow dump_stack() to produce a backtrace
Russell King [Thu, 5 Jul 2007 18:59:51 +0000 (19:59 +0100)]
[ARM] always allow dump_stack() to produce a backtrace

Don't make this dependent on CONFIG_DEBUG_KERNEL - if we hit a WARN_ON
we need the stack trace to work out how we got to that point.

Signed-off-by: Russell King <>
16 years agoRemove the blink driver
Linus Torvalds [Wed, 4 Jul 2007 22:24:39 +0000 (15:24 -0700)]
Remove the blink driver

Yeah, we could have just disabled it, but there's work on a new one that
isn't as fundamentally broken, so there really doesn't seem to be any
point in keeping it around.

The recent timer cleanup broke the only valid use, and when I say
"valid", I obviously mean "totally broken".  So it's not like it works,
or really even can work in the current format that uses the unsafe
"panic" LED blinking routines..

Signed-off-by: Linus Torvalds <>
16 years ago[ARM] Fix non-page aligned boot time mappings
Russell King [Wed, 4 Jul 2007 20:16:33 +0000 (21:16 +0100)]
[ARM] Fix non-page aligned boot time mappings

AT91SAM9260 stopped booting with the recent changes to MM
initialisation - it was asking for a non-aligned virtual address
which caused loops to be non-terminal.  Fix this by rounding
virtual addresses down, but remember to include the offset in
the length, and round the length up to the following page.

This means that asking for a mapping of 4K starting at 2K into
a page maps two pages as one would expect.

Signed-off-by: Russell King <>
16 years agoMerge branch 'upstream' of git://
Linus Torvalds [Wed, 4 Jul 2007 16:26:44 +0000 (09:26 -0700)]
Merge branch 'upstream' of git://

* 'upstream' of git://
  [MIPS] VSMP: Fix initialization ordering bug.
  [MIPS] Add whitelists for
  [MIPS] die(): Properly declare as non-returning
  [MIPS] Fix include wrapper symbol definitions in IP32 code.

16 years ago[MIPS] VSMP: Fix initialization ordering bug.
Ralf Baechle [Tue, 3 Jul 2007 16:25:58 +0000 (18:25 +0200)]
[MIPS] VSMP: Fix initialization ordering bug.

Signed-off-by: Ralf Baechle <>
16 years ago[MIPS] Add whitelists for
Atsushi Nemoto [Tue, 29 May 2007 14:30:04 +0000 (23:30 +0900)]
[MIPS] Add whitelists for

Signed-off-by: Atsushi Nemoto <>
Signed-off-by: Ralf Baechle <>
16 years ago[MIPS] die(): Properly declare as non-returning
Maciej W. Rozycki [Tue, 29 May 2007 14:03:56 +0000 (15:03 +0100)]
[MIPS] die(): Properly declare as non-returning

 This marks the declaration of die() correctly, removing "control reaches
end of non-void function" warnings from non-void functions that die() at
the end.

Signed-off-by: Maciej W. Rozycki <>
Signed-off-by: Ralf Baechle <>
16 years ago[MIPS] Fix include wrapper symbol definitions in IP32 code.
Kumba [Fri, 25 May 2007 06:26:47 +0000 (02:26 -0400)]
[MIPS] Fix include wrapper symbol definitions in IP32 code.

Some IP35 defines snuck into some IP32-specific code during the DMA re-write.

Signed-off-by: Joshua Kinard <>
Signed-off-by: Ralf Baechle <>
16 years ago[JFFS2] Fix readinode failure when read_dnode() detects CRC failure.
David Woodhouse [Tue, 3 Jul 2007 20:51:19 +0000 (16:51 -0400)]
[JFFS2] Fix readinode failure when read_dnode() detects CRC failure.

We should have stopped returning 1 from read_dnode() to indicate
failure. We can just mark the damn thing obsolete immediately. But I
missed a case where we don't.

Signed-off-by: David Woodhouse <>
16 years agoRemove some unused variables
Linus Torvalds [Wed, 4 Jul 2007 01:27:53 +0000 (18:27 -0700)]
Remove some unused variables

When Andi reverted the HPET resource reservation (in commit
0f8dc2f06560e2ca126d1670a24126ba08357d38), he didn't remove the now
unused variables, which just causes gcc to be noisy.

Signed-off-by: Linus Torvalds <>
16 years agodio: remove bogus refcounting BUG_ON
Zach Brown [Tue, 3 Jul 2007 22:28:55 +0000 (15:28 -0700)]
dio: remove bogus refcounting BUG_ON

Badari Pulavarty reported a case of this BUG_ON is triggering during
testing.  It's completely bogus and should be removed.

It's trying to notice if we left references to the dio hanging around in
the sync case.  They should have been dropped as IO completed while this
path was in dio_await_completion().  This condition will also be
checked, via some twisty logic, by the BUG_ON(ret != -EIOCBQUEUED) a few
lines lower.  So to start this BUG_ON() is redundant.

More fatally, it's dereferencing dio-> after having dropped its
reference.  It's only safe to dereference the dio after releasing the
lock if the final reference was just dropped.  Another CPU might free
the dio in bio completion and reuse the memory after this path drops the
dio lock but before the BUG_ON() is evaluated.

This patch passed aio+dio regression unit tests and aio-stress on ext3.

Signed-off-by: Zach Brown <>
Cc: Badari Pulavarty <>
Cc: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years agoRevert perfctr reservation to 2.6.21 state
Andi Kleen [Tue, 3 Jul 2007 23:38:13 +0000 (01:38 +0200)]
Revert perfctr reservation to 2.6.21 state

With this change it works again when the nmi watchdog is disabled.

Signed-off-by: Andi Kleen <>
Cc: Björn Steinbrink <>
Cc: Stephane Eranian <>
Cc: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years agoRevert HPET resource reservation
Andi Kleen [Fri, 29 Jun 2007 14:16:36 +0000 (16:16 +0200)]
Revert HPET resource reservation

Matthias Lenk reports that the PCI subsystem would move the HPET on
SB400/SB600-based systems, where the HPET is in BAR1 of the SMbus

The reason? The ACPI layer registered the PCI MMIO range as being busy
too early, before PCI enumeration had happened, causing the PCI layer to
decide that it should relocate the resources somewhere else.

Firmware resources should be marked busy _after_ the PCI enumeration and
probing has happened, not before.

Remove the too-early reservation, we'll fix it up to do it properly
later.  In the meantime, this solves the regression.

Tested-by: Matthias Lenk <>
Cc: Aaron Durbin <>
Cc: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
16 years agoMerge
Linus Torvalds [Tue, 3 Jul 2007 20:58:49 +0000 (13:58 -0700)]
Merge /pub/scm/linux/kernel/git/bart/ide-2.6

  ide: ide_scan_pcibus(): check __pci_register_driver return value
  ide: pdc202xx_new PLL input clock fix
  it821x: fix incorrect SWDMA mask
  amd74xx: resume fix
  hpt366: use correct enablebits for HPT36x
  hpt366: blacklist MAXTOR STM3320620A for UltraDMA/66
  ide: Fix a theoretical Ooops case
  ide: never called printk statement in ide-taskfile.c::wait_drive_not_busy

16 years agoMerge branch 'master' of ssh://
Linus Torvalds [Tue, 3 Jul 2007 20:58:03 +0000 (13:58 -0700)]
Merge branch 'master' of ssh:///linux/kernel/git/mchehab/v4l-dvb

* 'master' of ssh://
  V4L/DVB (5822): Fix the return value in ttpci_budget_init()
  V4L/DVB (5818): CinergyT2: fix flush_workqueue() vs work->func() deadlock
  V4L/DVB (5816): Cx88-blackbird: fix vidioc_g_tuner never ending list of tuners
  V4L/DVB (5808): Bttv: fix v4l1 breaking the driver

16 years agoSLUB: Make lockdep happy by not calling add_partial with interrupts enabled during...
Christoph Lameter [Tue, 3 Jul 2007 16:31:04 +0000 (09:31 -0700)]
SLUB: Make lockdep happy by not calling add_partial with interrupts enabled during bootstrap

If we move the local_irq_enable() to the end of the function then
add_partial() in early_kmem_cache_node_alloc() will be called
with interrupts disabled like during regular operations.

This makes lockdep happy.

Signed-off-by: Christoph Lameter <>
Tested-by: Andre Noll <>
Acked-by: Ingo Molnar <>
Signed-off-by: Linus Torvalds <>
16 years agoNTP: remove clock_was_set() call to prevent deadlock
Thomas Gleixner [Tue, 3 Jul 2007 18:05:20 +0000 (20:05 +0200)]
NTP: remove clock_was_set() call to prevent deadlock

The clock_was_set() call in seconds_overflow() which happens only when
leap seconds are inserted / deleted is wrong in two aspects:

1. it results in a call to on_each_cpu() with interrupts disabled
2. it is potential deadlock source vs. call_lock in smp_call_function()

The only possible side effect of the removal might be, that an absolute
CLOCK_REALTIME timer fires 1 second too late, in the rare case of leap
second deletion and an absolute CLOCK_REALTIME timer which expires in
the affected time frame. It will never fire too early.

This was probably observed by the reporter of a June 30th -> July 1st

A similar problem was observed by Dave Jones, who provided a screen shot
with a lockdep back trace, which allowed to analyse the problem.

Signed-off-by: Thomas Gleixner <>
Acked-by: Ingo Molnar <>
Signed-off-by: Linus Torvalds <>
16 years agoide: ide_scan_pcibus(): check __pci_register_driver return value
Andrew Morton [Tue, 3 Jul 2007 20:28:36 +0000 (22:28 +0200)]
ide: ide_scan_pcibus(): check __pci_register_driver return value

drivers/ide/setup-pci.c: In function 'ide_scan_pcibus':
drivers/ide/setup-pci.c:879: warning: ignoring return value of '__pci_register_driver', declared with attribute warn_unused_result

Signed-off-by: Andrew Morton <>
Signed-off-by: Bartlomiej Zolnierkiewicz <>
16 years agoide: pdc202xx_new PLL input clock fix
Albert Lee [Tue, 3 Jul 2007 20:28:36 +0000 (22:28 +0200)]
ide: pdc202xx_new PLL input clock fix

Recently the PLL input clock of Promise 2027x is sometimes detected
higher than expected (e.g. 20.027 MHz compared to 16.714 MHz).
It seems sometimes the mdelay() function is not as precise as it
used to be. Per Alan's advice, HT or power management might affect
the precision of mdelay().

This patch calls gettimeofday() to measure the time elapsed and
calculate the PLL input clock accordingly.

Signed-off-by: Albert Lee <>
Cc: Alan Cox <>
Cc: Bahadir Balban <>
Acked-by: Sergei Shtylyov <>
Signed-off-by: Bartlomiej Zolnierkiewicz <>
16 years agoit821x: fix incorrect SWDMA mask
Bartlomiej Zolnierkiewicz [Tue, 3 Jul 2007 20:28:35 +0000 (22:28 +0200)]
it821x: fix incorrect SWDMA mask

SWDMA modes are unsupported by it821x.  Attempts to tune SWDMA modes always
fail (due to sanity check in ->speedproc) and result in PIO being tuned.

* Fix incorrect SWDMA mask so core code won't try these modes and will just
  tune PIO if no other DMA modes are available.

* Bump driver version.

Signed-off-by: Bartlomiej Zolnierkiewicz <>
Acked-by: Sergei Shtylyov <>
16 years agoamd74xx: resume fix
Bartlomiej Zolnierkiewicz [Tue, 3 Jul 2007 20:28:35 +0000 (22:28 +0200)]
amd74xx: resume fix

* Driver can't skip programming transfer mode on the device in amd_set_drive()
  (similar fix has been applied to via82cxxx driver ages ago).

* While at it remove redundant warning (ide_config_drive_speed() already
  produces more valuable one).

* Bump driver version.

Signed-off-by: Bartlomiej Zolnierkiewicz <>
16 years agohpt366: use correct enablebits for HPT36x
Sergei Shtylyov [Tue, 3 Jul 2007 20:28:35 +0000 (22:28 +0200)]
hpt366: use correct enablebits for HPT36x

The HPT36x chips finally turned out to have the channel enable bits -- however,
badly implemented.  Make use of them despite it's probably only going to burden
the driver's code -- assuming both channels are always enabled by the HighPoint
BIOS anyway...

Signed-off-by: Sergei Shtylyov <>
Acked-by: Linas Vepstas <>
Signed-off-by: Bartlomiej Zolnierkiewicz <>
16 years agohpt366: blacklist MAXTOR STM3320620A for UltraDMA/66
Sergei Shtylyov [Tue, 3 Jul 2007 20:28:35 +0000 (22:28 +0200)]
hpt366: blacklist MAXTOR STM3320620A for UltraDMA/66

Add the MAXTOR STM3320620A drive into the UltraDMA/66 mode blacklist
for the HPT36x chips.

Signed-off-by: Sergei Shtylyov <>
Acked-by: Linas Vepstas <>
Signed-off-by: Bartlomiej Zolnierkiewicz <>
16 years agoide: Fix a theoretical Ooops case
Alan Cox [Tue, 3 Jul 2007 20:28:35 +0000 (22:28 +0200)]
ide: Fix a theoretical Ooops case

Found by a static analyser. It is in theory possible we dereference
dev->id when it has become invalid. Re-order to avoid this.

Not needed for new-ide as we no longer support the crazy exabyte nest stuff

Signed-off-by: Alan Cox <>
Cc: Andrew Morton <>
Signed-off-by: Bartlomiej Zolnierkiewicz <>
16 years agoide: never called printk statement in ide-taskfile.c::wait_drive_not_busy
Masatake YAMATO [Tue, 3 Jul 2007 20:28:34 +0000 (22:28 +0200)]
ide: never called printk statement in ide-taskfile.c::wait_drive_not_busy

Look at wait_drive_not_busy in drivers/ide/ide-taskfile.c:

    static u8 wait_drive_not_busy(ide_drive_t *drive)
            ide_hwif_t *hwif = HWIF(drive);
            int retries = 100;
            u8 stat;

             * Last sector was transfered, wait until drive is ready.
             * This can take up to 10 usec, but we will wait max 1 ms
             * (drive_cmd_intr() waits that long).
            while (((stat = hwif->INB(IDE_STATUS_REG)) & BUSY_STAT) && retries--)

            if (!retries)
                    printk(KERN_ERR "%s: drive still BUSY!\n", drive->name);

            return stat;

`printk' is never called because `retries' never holds zero at the
outside of `while' loop: when `retries' holds zero at the while's loop
condition, `retries' will hold -1 at the if condition.

Signed-off-by: Masatake YAMATO <>
Cc: Chuck Ebbert <>
Signed-off-by: Bartlomiej Zolnierkiewicz <>
16 years agoV4L/DVB (5822): Fix the return value in ttpci_budget_init()
Hartmut Birr [Mon, 2 Jul 2007 16:39:41 +0000 (13:39 -0300)]
V4L/DVB (5822): Fix the return value in ttpci_budget_init()

if the call to budget_register() fails in ttpci_budget_int(),
ttpci_budget_init() returns success. The attached patch will
fix this problem.

Signed-off-by: Hartmut Birr <>
Signed-off-by: Michael Krufky <>
Signed-off-by: Mauro Carvalho Chehab <>
16 years agoV4L/DVB (5818): CinergyT2: fix flush_workqueue() vs work->func() deadlock
Oleg Nesterov [Mon, 2 Jul 2007 15:26:20 +0000 (12:26 -0300)]
V4L/DVB (5818): CinergyT2: fix flush_workqueue() vs work->func() deadlock

Spotted and tested by Thomas Sattler <>.

cinergyT2.c does cancel_delayed_work() + flush_scheduled_work() while
holding cinergyt2->sem. This leads to deadlock because work->func()
needs the same mutex to complete. Another bug is that this code in fact
can't reliably stop the re-arming delayed_work.

Convert this code to use cancel_rearming_delayed_work() and move it
out of ->sem. Another mutex, ->wq_sem, was added to protect against the
concurrent open/resume.

This patch is a horrible hack to fix the lockup which happens in practice.
As Dmitry Torokhov pointed out this driver has other problems and needs
further changes.

Signed-off-by: Oleg Nesterov <>
Signed-off-by: Mauro Carvalho Chehab <>
16 years agoV4L/DVB (5816): Cx88-blackbird: fix vidioc_g_tuner never ending list of tuners
Jelle Foks [Mon, 21 May 2007 17:56:17 +0000 (14:56 -0300)]
V4L/DVB (5816): Cx88-blackbird: fix vidioc_g_tuner never ending list of tuners

v4l-info and other programs would loop indefinitely while querying the
tuners for cx88-blackbird cards.

The cause was that vidioc_g_tuner didn't return an error value for
qctrl->id != 0, making the application think there is a never ending
list of tuners...

This patch adds the same index check as done in vidioc_g_tuner() in

Signed-off-by: Jelle Foks <>
Signed-off-by: Michael Krufky <>
Signed-off-by: Mauro Carvalho Chehab <>
16 years agoV4L/DVB (5808): Bttv: fix v4l1 breaking the driver
Trent Piepho [Tue, 3 Jul 2007 18:08:10 +0000 (15:08 -0300)]
V4L/DVB (5808): Bttv: fix v4l1 breaking the driver

If one uses a V4L *one* application, such as vlc or mplayer's v4l driver, as
the first user after the driver is loaded, the driver wedges itself and will
never capture properly.  Even if one uses a V4L2 application later, it still
won't work.

If one uses a V4L *two* application first, such as tvtime or mplayer's v4l2
driver, then the driver will be ok.  One can then run a V4L1 application, and
it will work.

It turns out the problem is with norm changing and the crop support that was
added in 2.6.21.  The driver defaults to PAL, and keeps the last norm it was
set too across opens.  If one changes the norm via V4L1, the cropping
parameters are not reset like they should be, and they'll remain broken across
device opens.

This patch removes the direct setting of btv->tvnorm in the V4L1 ioctl
VIDIOCSCHAN handler.  The norm is set via the existing call to set_input(),
which calls set_tvnorm(), which will reset the cropping values now that it is
able to detect the norm change.

Signed-off-by: Trent Piepho <>
Signed-off-by: Michael Krufky <>
Signed-off-by: Mauro Carvalho Chehab <>
16 years agopata_pcmcia: Switch to ata_sff_port_start
Alan Cox [Tue, 3 Jul 2007 14:14:05 +0000 (15:14 +0100)]
pata_pcmcia: Switch to ata_sff_port_start

PCMCIA doesn't use DMA and as this driver is used on many platforms we
don't want it to fail on those that define the DMA alloc API as a NULL

Signed-off-by: Alan Cox <>
Signed-off-by: Jeff Garzik <>
16 years agopata_pdc202xx_old: Correct cable detect logic
Alan Cox [Tue, 3 Jul 2007 14:15:13 +0000 (15:15 +0100)]
pata_pdc202xx_old: Correct cable detect logic

We got it backwards and now the other detects are fixed it shows up

Signed-off-by: Alan Cox <>
Signed-off-by: Jeff Garzik <>
16 years agoata_generic: Check the right register for the DMA enabled flags
Alan Cox [Tue, 3 Jul 2007 14:11:30 +0000 (15:11 +0100)]
ata_generic: Check the right register for the DMA enabled flags

Mirrors change in IT821X

Signed-off-by: Alan Cox <>
Signed-off-by: Jeff Garzik <>
16 years agopata_ali: fix UDMA settings
Chuck Ebbert [Mon, 25 Jun 2007 23:13:32 +0000 (19:13 -0400)]
pata_ali: fix UDMA settings

This patch was found to fix some of the problems with the
pata_ali driver.

Signed-off-by: Jeff Garzik <>
16 years agosata_mv: PCI-ID for Adaptec 1430SA SATA Controller
Florian Attenberger [Mon, 2 Jul 2007 15:09:29 +0000 (17:09 +0200)]
sata_mv: PCI-ID for Adaptec 1430SA SATA Controller

Signed-off-by: Florian Attenberger <>
Signed-off-by: Jeff Garzik <>
16 years agolibata: fix assigned IRQ reporting
Tejun Heo [Mon, 2 Jul 2007 16:38:47 +0000 (01:38 +0900)]
libata: fix assigned IRQ reporting

host->irq and host->irq2 should be set before ata_host_register() for
IRQ reporting to work.  Move up host->irq assignment in
ata_host_activate() and add it to ata_pci_init_one() native path and

The port info printing in ata_host_register() doesn't fit all the
different controllers.  It should probably be moved out to LLDs with
some helpers in the future.

Signed-off-by: Tejun Heo <>
Signed-off-by: Jeff Garzik <>
16 years agoACPI: fix acpi_osi=!Linux
Len Brown [Tue, 3 Jul 2007 03:57:45 +0000 (23:57 -0400)]
ACPI: fix acpi_osi=!Linux

Need to check for special case "acpi_osi=!Linux" before handling the
general case "acpi_osi=!*", or it will have no effect.

Signed-off-by: Len Brown <>
Signed-off-by: Linus Torvalds <>
16 years agoMerge branch 'for-linus' of
Linus Torvalds [Tue, 3 Jul 2007 04:05:35 +0000 (21:05 -0700)]
Merge branch 'for-linus' of /linux/kernel/git/roland/infiniband

* 'for-linus' of
  IPoIB/cm: Partial error clean up unmaps wrong address
  mlx4_core: Add new Mellanox device IDs

16 years agoMerge branch 'master' of
Linus Torvalds [Tue, 3 Jul 2007 04:05:14 +0000 (21:05 -0700)]
Merge branch 'master' of /linux/kernel/git/cooloney/blackfin-2.6

* 'master' of
  Blackfin arch: remove zero-sized include/asm-blackfin/macros.h
  Blackfin arch: update board defconfig files
  Blackfin arch: Fix up remaining printks with proper log levels
  Blackfin arch: Add proper -mcpu option according to the cpu and silicon revision configuration

16 years agoMerge branch 'upstream-linus2' of
Linus Torvalds [Tue, 3 Jul 2007 04:04:36 +0000 (21:04 -0700)]
Merge branch 'upstream-linus2' of /linux/kernel/git/jgarzik/libata-dev

* 'upstream-linus2' of
  [libata] sata_nv: undo merge error

16 years agoMerge branch 'upstream-linus' of
Linus Torvalds [Tue, 3 Jul 2007 04:01:38 +0000 (21:01 -0700)]
Merge branch 'upstream-linus' of /linux/kernel/git/jgarzik/netdev-2.6

* 'upstream-linus' of
  3c589_cs: fix local_bh_enable warning
  RESEND [PATCH 3/3] NetXen: Graceful teardown of interface and hardware upon module unload
  drivers/net/ns83820.c: fix a check-after-use
  net/usb/cdc_ether minor sparse cleanup
  RESEND [PATCH 2/3] NetXen: Support per PCI-function interrupt mask registers
  RESEND [PATCH 1/3] NetXen: Fix issue of MSI not working correctly
  dm9601: Return 0 from bind() on success
  Update MAINTAINERS for USB network devices
  usbnet: Zero padding byte if there is tail room in skb
  dm9601: HW header size shouldn't be included in packet length
  starfire list alpha as 64 bit arch
  myri10ge: SET_NETDEV_DEV()
  gianfar: Fix typo bug introduced by move to udp_hdr()
  [PATCH] libertas: remove private ioctls
  [PATCH] libertas: fix WPA associations by handling ENABLE_RSN correctly
  [PATCH] libertas: kill wlan_scan_process_results
  [PATCH] libertas: style fixes

16 years agoMerge branch 'upstream-linus' of
Linus Torvalds [Tue, 3 Jul 2007 04:01:13 +0000 (21:01 -0700)]
Merge branch 'upstream-linus' of /linux/kernel/git/jgarzik/libata-dev

* 'upstream-linus' of
  libata: PATA-mode fixes for sis_sata
  libata: add HTS541616J9SA00 to NCQ blacklist
  sata_nv: allow changing queue depth
  sata_inic162x: disable LBA48 devices
  libata: remove reading alt_status from ata_hsm_qc_complete()
  libata: pata_pdc2027x PLL input clock fix
  scsi disk help file is not complete

16 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Tue, 3 Jul 2007 03:59:54 +0000 (20:59 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/ieee1394/linux1394-2.6

* 'for-linus' of git://
  firewire: add Kconfig help on building both stacks
  firewire: fix async reception on big endian machines

16 years agoIPoIB/cm: Partial error clean up unmaps wrong address
Ralph Campbell [Fri, 29 Jun 2007 18:37:56 +0000 (11:37 -0700)]
IPoIB/cm: Partial error clean up unmaps wrong address

If a page can't be allocated for the frag list of a skb, the code to
unmap the partially allocated list is off by one.  For exaple, if
'frags' equals one, i == 0, and the alloc_page() fails, then the old
loop would have unmapped mapping[1] which is uninitialized.  The same
would happen if the call to ib_dma_map_page() failed.

Signed-off-by: Ralph Campbell <>
Acked-by: Michael S. Tsirkin <>
Signed-off-by: Roland Dreier <>
16 years agomlx4_core: Add new Mellanox device IDs
Jack Morgenstein [Mon, 2 Jul 2007 14:36:18 +0000 (17:36 +0300)]
mlx4_core: Add new Mellanox device IDs

Add new IDs for PCIe gen2 devices.

Signed-off-by: Jack Morgenstein <>
Signed-off-by: Roland Dreier <>
16 years agoBlackfin arch: remove zero-sized include/asm-blackfin/macros.h
Marco Roeland [Tue, 3 Jul 2007 00:25:50 +0000 (08:25 +0800)]
Blackfin arch: remove zero-sized include/asm-blackfin/macros.h

 This file accidentally got truncated instead of deleted in commit df30b11.

Signed-off-by: Marco Roeland <>
Cc: Robert P. J. Day <>
Cc: Jeff Garzik <>
Cc: Jesper Juhl <>
Cc: Alex Riesen <>
Cc: Robin Getz <>
Acked-by: Bryan Wu <>
16 years ago[libata] sata_nv: undo merge error
Jeff Garzik [Mon, 2 Jul 2007 22:12:19 +0000 (18:12 -0400)]
[libata] sata_nv: undo merge error

Only the ADMA entry was supposed to be able to change queue depth.

Signed-off-by: Jeff Garzik <>
16 years ago3c589_cs: fix local_bh_enable warning
Patrick McHardy [Mon, 2 Jul 2007 14:08:28 +0000 (16:08 +0200)]
3c589_cs: fix local_bh_enable warning

Russell King wrote:
> Having upgraded from 2.6.16 to 2.6.22-rc6, I'm now seeing the following.
> Looks like netfilter is calling local_bh_enable() with IRQs disabled,
> which would appear to be illegal.  Thankfully, this is a warn-once
> warning.
> WARNING: at /home/rmk/git/linux-2.6-rmk/kernel/softirq.c:138 local_bh_enable()
> [...]
> [<c01447fc>] (nf_conntrack_destroy+0x0/0x2c) from [<c012c05c>] (__kfree_skb+0xd0/0x100)
> [<c012bf8c>] (__kfree_skb+0x0/0x100) from [<c012c0d8>] (kfree_skb+0x4c/0x50)
>  r5:c12a3800 r4:00000300
> [<c012c08c>] (kfree_skb+0x0/0x50) from [<bf03cbb0>] (el3_start_xmit+0xb8/0xd0 [3c589_cs])
> [<bf03caf8>] (el3_start_xmit+0x0/0xd0 [3c589_cs]) from [<c01324dc>] (dev_hard_start_xmit+0x1a8/0x244)
>  r7:c12a3800 r6:c1a9aa00 r5:c1a9aa00 r4:c12a3800
> [<c0132334>] (dev_hard_start_xmit+0x0/0x244) from [<c013fcc0>] (__qdisc_run+0xb0/0x198)

Thats a bug in the 3c589_cs driver. Patch attached.

Signed-off-by: Patrick McHardy <>
Signed-off-by: Jeff Garzik <>
16 years agolibata: PATA-mode fixes for sis_sata
Uwe Koziolek [Thu, 14 Jun 2007 21:40:43 +0000 (23:40 +0200)]
libata: PATA-mode fixes for sis_sata

Changed PATA handler for PATA-ports used by sata_sis.
This patch was originally submitted by Jeff Garzik.

Added PCI-ID 1180 for SiS966 Controller in pata_sis.
The 1180 mode is fully compatible to other SiS PATA-controller.

The PCI-ID 1183 is SATA in PATA-emulation, but not fully compatible
to SiS5513/5518. sata_sis.c is forwarding this ID to pata_sis.
1183 is not working if simply added to pata_sis.
This handling fixes issues with SiS968.

Signed-off-by: Uwe Koziolek <>
Signed-off-by: Jeff Garzik <>
16 years agolibata: add HTS541616J9SA00 to NCQ blacklist
Tejun Heo [Mon, 25 Jun 2007 02:28:59 +0000 (11:28 +0900)]
libata: add HTS541616J9SA00 to NCQ blacklist

Another member of HTS5416* family doing spurious NCQ completion.

Signed-off-by: Tejun Heo <>
Cc: Enrico Sardi <>
Signed-off-by: Jeff Garzik <>
16 years agosata_nv: allow changing queue depth
Robert Hancock [Fri, 29 Jun 2007 00:52:24 +0000 (18:52 -0600)]
sata_nv: allow changing queue depth

The sata_nv driver was missing the change_queue_depth hook in the SCSI host
template which the other NCQ-capable libata drivers had. This made it impossible
to change the queue depth by user request. Add this in.

Signed-off-by: Robert Hancock <>
Signed-off-by: Jeff Garzik <>