1. 23 Aug, 2004 40 commits
    • Andrew Morton's avatar
      [PATCH] memory-backed inodes fix · af583a5b
      Andrew Morton authored
      If an inode is backed by a memory-backed backing_dev, and it is not a blockdev
      inode, we can skip the entire superblock duwing writeback scanning.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      af583a5b
    • Neil Brown's avatar
      [PATCH] multipath readahead fix fix · 14bf6f7e
      Neil Brown authored
      Make sure the right errno is return from a readahead error in multipath
      Signed-off-by: default avatarNeil Brown <neilb@cse.unsw.edu.au>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      14bf6f7e
    • Brian King's avatar
      [PATCH] handle blk_queue_tags_resize() allocation failures · 83df3be7
      Brian King authored
      Fixes blk_queue_resize_tags to properly handle allocation failures.
      
      Currently, if a memory allocation failure occurs during
      blk_queue_resize_tags, the tag map ends up getting freed, which should
      not happen.  The old tag map should be preserved and only the resize
      should fail.
      Signed-off-by: default avatarJens Axboe <axboe@suse.de>
      Signed-off-by: default avatarBrian King <brking@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      83df3be7
    • Brian King's avatar
      [PATCH] blk_resize_tags() fix · 1111a1db
      Brian King authored
      init_tag_map should not initialize the busy_list, refcnt, or busy fields in
      the tag map since blk_queue_resize_tags can call it while requests are
      active.  Patch moves this initialization into blk_queue_init_tags.
      Signed-off-by: default avatarJens Axboe <axboe@suse.de>
      Signed-off-by: default avatarBrian King <brking@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      1111a1db
    • Brian King's avatar
      [PATCH] blk_queue_free_tags() fix · ff2087ea
      Brian King authored
      This is a resend of three ll_rw_blk patches related to tagged queuing.
      
      Currently blk_queue_free_tags cannot be called with ops outstanding.  The
      scsi_tcq API defined to LLD scsi drivers allows for scsi_deactivate_tcq to
      be called (which calls blk_queue_free_tags) with ops outstanding.  Change
      blk_queue_free_tags to no longer free the tags, but rather just disable
      tagged queuing and also modify blk_queue_init_tags to handle re-enabling
      tagged queuing after it has been disabled.
      Signed-off-by: default avatarJens Axboe <axboe@suse.de>
      Signed-off-by: default avatarBrian King <brking@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      ff2087ea
    • Jens Axboe's avatar
      [PATCH] ext3 barrier support · eee1a8c4
      Jens Axboe authored
      Mount with "mount -o barrier=1" to enable barriers.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      eee1a8c4
    • Chris Mason's avatar
      [PATCH] reiserfs v3 barrier support · b63cf84e
      Chris Mason authored
      Add reiserfs support for flush barriers, mount with -o barrier=flush to enable
      them.  Barriers are triggered on fsync and for log commits.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      b63cf84e
    • Chris Mason's avatar
      [PATCH] add BH_Eopnotsupp for testing async barrier failures · d16b94fe
      Chris Mason authored
      In order for filesystems to detect asynchronous ordered write failures for
      buffers sent via submit_bh, they need a bit they can test for in the buffer
      head.  This adds BH_Eopnotsupp and the related buffer operations
      
      end_buffer_write_sync is changed to avoid a printk for BH_Eoptnotsupp
      related failures, since the FS is responsible for a retry.
      
      sync_dirty_buffer is changed to test for BH_Eopnotsupp and return
      -EOPNOTSUPP to the caller
      
      Some of this came from Jens Axboe
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      d16b94fe
    • Andrew Morton's avatar
      [PATCH] make sync_dirty_buffer() return something useful · a88cff7f
      Andrew Morton authored
      Make sync_dirty_buffer() return the result of its syncing.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      a88cff7f
    • Jens Axboe's avatar
      [PATCH] disk barriers: MD · 681bf63d
      Jens Axboe authored
      md bits
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      681bf63d
    • Jens Axboe's avatar
      [PATCH] disk barriers: devicemapper · 48944053
      Jens Axboe authored
      dm bits
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      48944053
    • Jens Axboe's avatar
      [PATCH] disk barriers: scsi · 91173b0c
      Jens Axboe authored
      scsi bits
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      91173b0c
    • Jens Axboe's avatar
      [PATCH] disk barriers: IDE · 5e9dbcaa
      Jens Axboe authored
      ide bits
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      5e9dbcaa
    • Jens Axboe's avatar
      [PATCH] disk barriers: core · d2a82856
      Jens Axboe authored
      IDE disk barrier core.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      d2a82856
    • Davide Libenzi's avatar
      [PATCH] ptrace single-stepping fix · 1e11a6c0
      Davide Libenzi authored
      This patch permits a ptrace process on x86 to "see" the instruction following
      the INT #80h op.  This has been tested on 2.6.6 using the appended test
      source.  Running over this:
      
      80485a9:       b8 14 00 00 00          mov    $0x14,%eax
      80485ae:       cd 80                   int    $0x80
      80485b0:       89 45 ec                mov    %eax,0xffffffec(%ebp)
      80485b3:       eb f4                   jmp    80485a9 <main+0x85>
      
      it produces:
      
      waiting ...
      done: pid=12387  status=1407
      sig=5
      EIP=0x080485a9
      waiting ...
      done: pid=12387  status=1407
      sig=5
      EIP=0x080485ae
      waiting ...
      done: pid=12387  status=1407
      sig=5
      EIP=0x080485b0
      waiting ...
      done: pid=12387  status=1407
      sig=5
      EIP=0x080485b3
      
      (Andi says: "I think this patch is a bad idea.  The ptrace handling is
      traditionally fragile (I remember when merging a rather simple patch from IBM
      for DR allocation long ago into the suse it broke several debuggers).  If you
      really want to do that wait for 2.7.")
      
      
      test-program.c:
      
      #include <stdio.h>
      #include <stdlib.h>
      #include <signal.h>
      #include <unistd.h>
      #include <errno.h>
      #include <sys/types.h>
      #include <sys/ptrace.h>
      #include <sys/wait.h>
      #include <linux/user.h>
      #include <linux/unistd.h>
      
      int main(int ac, char **av) {
      	int i, status, res;
      	long start, end;
      	pid_t cpid, pid;
      	struct user_regs_struct ur;
      	struct sigaction sa;
      
      	sigemptyset(&sa.sa_mask);
      	sa.sa_flags = 0;
      	sa.sa_handler = SIG_DFL;
      	sigaction(SIGCHLD, &sa, NULL);
      
      	printf("nargs=%d\n", ac);
      	if (ac == 1)
      		goto tracer;
      
      	printf("arg=%s\n", av[1]);
      loop:
      	__asm__ volatile ("int $0x80"
      			  : "=a" (res)
      			  : "0" (__NR_getpid));
      	goto loop;
      endloop:
      	exit(0);
      
      tracer:
      	if ((cpid = fork()) != 0)
      		goto parent;
      
      	printf("child=%d\n", getpid());
      	ptrace(PTRACE_TRACEME, 0, NULL, NULL);
      
      	execl(av[0], av[0], "child", NULL);
      
      	exit(0);
      
      parent:
      	start = (long) &&loop;
      	end = (long) &&endloop;
      
      	printf("pchild=%d\n", cpid);
      
      	for (;;) {
      		pid = wait(&status);
      		if (pid != cpid)
      			continue;
      		res = WSTOPSIG(status);
      		if (ptrace(PTRACE_GETREGS, pid, NULL, &ur)) {
      			printf("[%d] error: ptrace(PTRACE_GETREGS, %d)\n",
      			       pid, pid);
      			return 1;
      		}
      
      		if (ptrace(PTRACE_SINGLESTEP, pid, NULL, res != SIGTRAP ? res: 0)) {
      			perror("ptrace(PTRACE_SINGLESTEP)");
      			return 1;
      		}
      
      		if (ur.eip >= start && ur.eip <= end)
      			break;
      	}
      
      	for (i = 0; i < 15; i++) {
      		printf("waiting ...\n");
      		pid = wait(&status);
      		printf("done: pid=%d  status=%d\n", pid, status);
      		if (pid != cpid)
      			continue;
      		res = WSTOPSIG(status);
      		printf("sig=%d\n", res);
      		if (ptrace(PTRACE_GETREGS, pid, NULL, &ur)) {
      			printf("[%d] error: ptrace(PTRACE_GETREGS, %d)\n",
      			       pid, pid);
      			return 1;
      		}
      
      		printf("EIP=0x%08x\n", ur.eip);
      
      		if (ptrace(PTRACE_SINGLESTEP, pid, NULL, res != SIGTRAP ? res: 0)) {
      			perror("ptrace(PTRACE_SINGLESTEP)");
      			return 1;
      		}
      	}
      
      	if (ptrace(PTRACE_CONT, cpid, NULL, SIGKILL)) {
      		perror("ptrace(PTRACE_SINGLESTEP)");
      		return 1;
      	}
      
      	return 0;
      }
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      1e11a6c0
    • Keith Owens's avatar
      [PATCH] i386 oops output: dump preceding code · c49d427d
      Keith Owens authored
      This teaches the i386 oops dumper to dump opcodes preceding and after the
      offending EIP.  Supporting code against ksymoops has been tested and produces
      output like the below.
      
      Support for this was added to ksymoops-2.4.9.
      
      Note that ksymoops will guarantee that the disassembly after the <eip> value
      is always in sync - if the disassembly from the start of the Code: line does
      not sync up with the EIP address ksymoops will perform the resync.
      
      
      Warning (merge_maps): no symbols in merged map
      Mar 18 23:47:36 vmm kernel: kernel BUG at fs/open.c:802!
      Mar 18 23:47:36 vmm kernel: invalid operand: 0000 [#1]
      Mar 18 23:47:36 vmm kernel: CPU:    0
      Mar 18 23:47:36 vmm kernel: EIP:    0060:[<c014fedf>] VLI    Not tainted
      Using defaults from ksymoops -t elf32-i386 -a i386
      Mar 18 23:47:36 vmm kernel: EFLAGS: 00010246
      Mar 18 23:47:36 vmm kernel: eax: ccdfb900   ebx: 4001020d   ecx: 00000000   edx: 0000007b
      Mar 18 23:47:36 vmm kernel: esi: 00000000   edi: bfffdd70   ebp: ccdfdfbc   esp: ccdfdfb0
      Mar 18 23:47:36 vmm kernel: ds: 007b   es: 007b   ss: 0068
      Mar 18 23:47:36 vmm kernel: Stack: 4001020d 00000000 bfffdd70 ccdfc000 c0109213 4001020d 00000000 00000003
      Mar 18 23:47:36 vmm kernel:        00000000 bfffdd70 bfffdc88 00000005 0000007b 0000007b 00000005 4000ef94
      Mar 18 23:47:36 vmm kernel:        00000073 00000206 bfffdbd8 0000007b
      Mar 18 23:47:36 vmm kernel: Call Trace:
      Mar 18 23:47:36 vmm kernel:  [<c0109213>] syscall_call+0x7/0xb
      Mar 18 23:47:36 vmm kernel: Code: 14 98 f0 81 41 04 00 00 00 01 5b 89 ec 5d c3 90 b8 00 e0 ff ff 21 e0 55 89 e5 57 56 53 8b 00 81 b8 e4 01 00 00 0f 27 00 00 75 08 <0f> 0b 22 03 85 18 2f c0 8b 45 08 50 e8 30 d4 00 00 89 c7 83 c4 
      
      
      >>EIP; c014fedf No symbols available   <=====
      
      Trace; c0109213 No symbols available
      
      This architecture has variable length instructions, decoding before eip
      is unreliable, take these instructions with a pinch of salt.
      
      Code;  c014feb4 No symbols available
      00000000 <_EIP>:
      Code;  c014feb4 No symbols available
         0:   14 98                     adc    $0x98,%al
      Code;  c014feb6 No symbols available
         2:   f0 81 41 04 00 00 00      lock addl $0x1000000,0x4(%ecx)
      Code;  c014febd No symbols available
         9:   01
      Code;  c014febe No symbols available
         a:   5b                        pop    %ebx
      Code;  c014febf No symbols available
         b:   89 ec                     mov    %ebp,%esp
      Code;  c014fec1 No symbols available
         d:   5d                        pop    %ebp
      Code;  c014fec2 No symbols available
         e:   c3                        ret  
      Code;  c014fec3 No symbols available
         f:   90                        nop  
      Code;  c014fec4 No symbols available
        10:   b8 00 e0 ff ff            mov    $0xffffe000,%eax
      Code;  c014fec9 No symbols available
        15:   21 e0                     and    %esp,%eax
      Code;  c014fecb No symbols available
        17:   55                        push   %ebp
      Code;  c014fecc No symbols available
        18:   89 e5                     mov    %esp,%ebp
      Code;  c014fece No symbols available
        1a:   57                        push   %edi
      Code;  c014fecf No symbols available
        1b:   56                        push   %esi
      Code;  c014fed0 No symbols available
        1c:   53                        push   %ebx
      Code;  c014fed1 No symbols available
        1d:   8b 00                     mov    (%eax),%eax
      Code;  c014fed3 No symbols available
        1f:   81 b8 e4 01 00 00 0f      cmpl   $0x270f,0x1e4(%eax)
      Code;  c014feda No symbols available
        26:   27 00 00
      Code;  c014fedd No symbols available
        29:   75 08                     jne    33 <_EIP+0x33> c014fee7 No symbols available
      
      This decode from eip onwards should be reliable
      
      Code;  c014fedf No symbols available
      00000000 <_EIP>:
      Code;  c014fedf No symbols available   <=====
         0:   0f 0b                     ud2a      <=====
      Code;  c014fee1 No symbols available
         2:   22 03                     and    (%ebx),%al
      Code;  c014fee3 No symbols available
         4:   85 18                     test   %ebx,(%eax)
      Code;  c014fee5 No symbols available
         6:   2f                        das  
      Code;  c014fee6 No symbols available
         7:   c0 8b 45 08 50 e8 30      rorb   $0x30,0xe8500845(%ebx)
      Code;  c014feed No symbols available
         e:   d4 00                     aam    $0x0
      Code;  c014feef No symbols available
        10:   00                        .byte 0x0
      Code;  c014fef0 No symbols available
        11:   89 c7                     mov    %eax,%edi
      Code;  c014fef2 No symbols available
        13:   83                        .byte 0x83
      Code;  c014fef3 No symbols available
        14:   c4                        .byte 0xc4
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      c49d427d
    • Andrey Panin's avatar
      [PATCH] fix visws kernel build · 54611f47
      Andrey Panin authored
        CC      arch/i386/kernel/cpu/intel.o
      In file included from arch/i386/kernel/cpu/intel.c:19:
      include/asm-i386/mach-visws/mach_apic.h: In function `cpu_present_to_apicid':
      include/asm-i386/mach-visws/mach_apic.h:67: error: `BAD_APICID' undeclared (first use in this function)
      include/asm-i386/mach-visws/mach_apic.h:67: error: (Each undeclared identifier is reported only once
      include/asm-i386/mach-visws/mach_apic.h:67: error: for each function it appears in.)
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      54611f47
    • Santiago Leon's avatar
      [PATCH] ibmveth: add memory barrier for hypervisor synchronisation · 47ebb0cf
      Santiago Leon authored
      This patch adds a memory barrier to ensure synchronization with the
      hypervisor (and avoid a panic when the hypervisor is halfway through
      writing to the descriptor).  It also removes an unnecessary check that is
      flawed anyway because the value can change between the atomic_inc() and the
      assert.
      Signed-off-by: default avatarSantiago Leon <santil@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      47ebb0cf
    • Santiago Leon's avatar
      [PATCH] ibmveth: hypervisor return value fix · b56e3ff0
      Santiago Leon authored
      This patch checks for the LongBusy return code from the hypervisor, and 
      retries the operation (which is what the hypervisor expects the driver
      to do). Please apply.
      Signed-off-by: default avatarSantiago Leon <santil@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      b56e3ff0
    • Dave Hansen's avatar
      [PATCH] ibmveth: race fixes · aed86616
      Dave Hansen authored
      This patch fixes a race condition that would panic the kernel when
      replenishing a buffer pool.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      aed86616
    • Santiago Leon's avatar
      [PATCH] ibmveth: module tag fixes · 01fbd2dc
      Santiago Leon authored
      This and the following three patches contain bug fixes found in the
      stabilization of SLES9.
      
      This patch adds a call to MODULE_VERSION and changes the MODULE_AUTHOR call
      to me (obviously with Dave Larson's permission).  It also increments the
      version number to keep track of the bug fixes.  Please apply.
      Signed-off-by: default avatarSantiago Leon <santil@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      01fbd2dc
    • Ryan S. Arnold's avatar
      [PATCH] HVCS fixes · c8c90ab1
      Ryan S. Arnold authored
      Here are a set of HVCS (drivers/char/hvcs.c) fixes that were suggested by Jeff
      Garzik on July 29th in his review of this driver as well as some other fixes
      for problems I found while reviewing the driver.  These are all relatively
      minor, but necessary.
      
      - Cleaned up curly braces on single line conditional blocks.
      
      - Replaced debug memset(...,0x3F,...) with memset(...,0x00,...).
      
      - Removed explicit '= 0' after static int declarations since these default
        to zero.
      
      - Removed list_for_each_safe() instances and replaced with
        list_for_each_entry() which cut down on amt of code.  The 'safe' version is
        un-needed now that the driver is using spinlocks.
      
      - Changed spin_lock_irqsave() to spin_lock() when locking hvcs_structs_lock
        and hvcs_pi_lock since these are not touched in an int handler.
      
      - changed spin_lock_irqsave() to spin_lock() in interrupt handler.
      
      - Initialized hvcs_structs_lock and hvcs_pi_lock to SPIN_LOCK_UNLOCKED at
        declaration tiem rather than in hvcs_module_init().
      
      - Added spin_lock around list_del() in destroy_hvcs_struct() to protect the
        list traversal from deletion.  The original omission was an oversight.
      
      - Removed '= NULL' from pointer declarations since they are initialized NULL
        by default.
      
      - Removed wmb() instance from hvcs_try_write().  They probably aren't needed
        with locking in place.
      
      - Added check and cleanup for hvcs_pi_buff = kmalloc() in
        hvcs_module_init().
      
      - Exposed hvcs_struct.index via a sysfs attribute so that the coupling
        between /dev/hvcs* and a vty-server can be systematically determined.
      
      - Moved kobject_put() in hvcs_open() outside of the
        spin_unlock_irqrestore().
      
      - In hvcs_probe() changed kmalloc(sizeof(*hvcsd),...) to
        kmalloc(sizeof(struct hvcs_struct)) because hvcsd references a NULL pointer
        at the time of kmalloc.
      
      - Incremented the HVCS_DRIVER_VERSION to 1.3.1
      
      arch/ppc64/kernel/hvcserver.c:
      
      - Changed function documentation of EXPORTed functions to comply with proper
        kernel-doc documentation style.
      
      - Changed 'unsigned int' types to 'uint32_t' to comply with how unit
        addresses and partition IDs are handled in other arch/ppc64 vterm code.
      
      - Cleaned up curly braces on single line conditional blocks.
      
      include/asm-ppc64/hvcserver.h:
      
      - Added kernel-doc style documentation for hvcs_partner_info struct.
      
      - changed 'unsigned int' types to 'uint32_t' to comply with how unit
        addresses and partition IDs are handled in other arch/ppc64 vterm code.
      Signed-off-by: default avatarRyan S. Arnold <rsa@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      c8c90ab1
    • Dave Boutcher's avatar
      [PATCH] ppc64: mf_proc file position fix · 0463210d
      Dave Boutcher authored
      arch/ppc64/kernel/mf_proc.c uses a bad interface for moving along file
      position in a proc_write routine.  This quit working altogether in 2.6.8.
      Patch to fix.  And I did a quick scan of the kernel to see if anyone else
      was similarly broken...apparantly not :-)
      
      Fixes a broken update of f_pos in a proc file write routine.
      Signed-off-by: default avatarDave Boutcher <sleddog@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      0463210d
    • Paul Mackerras's avatar
      [PATCH] ppc64: Use correct buffer size in RTAS call · 9f3f3558
      Paul Mackerras authored
      Firmware expects the size of the buffer that you hand it when you ask it
      for information about a hardware error to be of a very specific size, but
      different versions of firmware appearently expect different sizes; using
      the wrong size results in a painful, hard-to-debug crash in firmware.  Benh
      provided a patch for this some months ago, but appreantly missed this code
      path.  This patch sets up the log buffer size dynamically; it also fixes a
      bug with the return code not being handled correctly.
      Signed-off-by: default avatarLinas Vepstas <linas@austin.ibm.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      9f3f3558
    • Paul Mackerras's avatar
      [PATCH] ppc64: Extend ioremap/iounmap infrastructure · 78d51cf8
      Paul Mackerras authored
      The patch below implements the ability to query outstanding imalloc regions
      for a given virtual address range.  (Imalloc is the allocator of virtual
      space for ioremap.) The patch extends im_get_area() to allow a region
      criterion of IM_REGION_SUPERSET.  For a particular "superset" virtual
      address and size passed into im_get_area(), the function returns the first
      outstanding region that is contained within this superset region.
      
      The patch also changes iounmap_explicit() to allow for the unmapping of all
      regions that fit under a "superset".
      
      This ability is necessary for dynamic (runtime) removal of pci host bridges
      (PHBs).  For a PHB removal, the platform specification (the RPA) requires
      that all of its children slots already be dynamically removed.  Each of
      these slot-level removals has fractured the imalloc region assigned to the
      PHB at boot.  At PHB removal time, it is necessary to iounmap() the
      remaining artifacts of the initial PHB region.
      Signed-off-by: default avatarJohn Rose <johnrose@austin.ibm.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      78d51cf8
    • Stephen Rothwell's avatar
      [PATCH] ppc64 iSeries virtual DVD-RAM · 14925120
      Stephen Rothwell authored
      This patch adds the ability to use DVD-RAM drives to the iSeries virtual
      cdrom driver.  This version adresses (hopefully) Jens comments on the
      previous one.
      Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      14925120
    • Paul Mackerras's avatar
      [PATCH] ppc64: better little-endian bitops · ec2a9baf
      Paul Mackerras authored
      Below patch reuses the big-endian bitops for the little endian ones, and
      moves the ext2_{set,clear}_bit_atomic functions to be truly atomic instead
      of lock based.
      
      This requires that the bitmaps passed to the ext2_* bitop functions are
      8-byte aligned.  I have been assured that they will be 512-byte or
      1024-byte aligned, and sparc and ppc32 also impose an alignment requirement
      on the bitmap.
      Signed-off-by: default avatarOlof Johansson <olof@austin.ibm.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      ec2a9baf
    • Paul Mackerras's avatar
      [PATCH] ppc64: rtas_call was calling kmalloc too early · e7af9387
      Paul Mackerras authored
      At present rtas_call() can be called before the kmalloc subsystem is
      initialized, and if RTAS reports a hardware error, the code tries to do a
      kmalloc to make a copy of the error report.  This patch changes it so that
      we don't do the kmalloc in that situation.
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      e7af9387
    • Linas Vepstas's avatar
      08b38d38
    • Nathan Lynch's avatar
      [PATCH] ppc64: tweak schedule_timeout in __cpu_die · 292ae129
      Nathan Lynch authored
      The current code does schedule_timeout(HZ) when waiting for a cpu to die,
      which is a bit coarse and tends to limit the "throughput" of my stress
      tests :)
      
      Change the HZ timeout to HZ/5, increase the number of tries to 25 so the
      overall wait time is similar.  In practice, I've never seen the loop need
      more than two iterations.
      Signed-off-by: default avatarNathan Lynch <nathanl@austin.ibm.com>
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      292ae129
    • Olof Johansson's avatar
      [PATCH] ppc64: switch screen_info init to C99 · 37cfbd31
      Olof Johansson authored
      Minor cleanup: Use C99 initializers for the screen_info struct.
      Signed-off-by: default avatarOlof Johansson <olof@austin.ibm.com>
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      37cfbd31
    • David Gibson's avatar
      [PATCH] ppc64: bolted SLB entry for iSeries · d983cfb9
      David Gibson authored
      Tested, at least basically, on Power4 iSeries with shared processors, on
      Power4 pSeries and RS64 (non-SLB) iSeries machines.
      
      On pSeries SLB machines we "bolt" an SLB entry for the first segment of the
      vmalloc() area into the SLB, to reduce the SLB miss rate.  This caused
      problems, so was disabled, on iSeries because the bolted entry was not
      restored properly on shared processor switch.  This patch adds information
      about the bolted vmalloc segment to the lpar map, which should be restored
      on shared processor switch.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      d983cfb9
    • Hollis Blanchard's avatar
      [PATCH] ppc64: HVSI driver · 9024871d
      Hollis Blanchard authored
      This is a console driver for IBM's p5 servers; please consider it for
      inclusion.  I've addressed all the comments I've received so far.
      Signed-off-by: default avatarHollis Blanchard <hollisb@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      9024871d
    • Srivatsa Vaddagiri's avatar
      [PATCH] ppc64: Fix v_regs pointer setup · 923bf111
      Srivatsa Vaddagiri authored
      During some signal test, we found that v_regs pointer was not setup
      correctly.  v_regs was made to point to itself, as a result of which the
      pointer was corrupted when vec registers were copied over.  When the signal
      handler returned, restore_sigcontext tried derefering the invalid pointer
      and in the process killed the app with SIGSEGV.
      Signed-off-by: default avatarSrivatsa Vaddagiri <vatsa@in.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      923bf111
    • Paul Mackerras's avatar
      [PATCH] ppc64: Reduce verbosity of RTAS error logs · 0cc8f1e0
      Paul Mackerras authored
      Currently on pSeries systems the kernel will print out a hex dump of any
      error events reported by the platform at boot time.  These can be rather
      large and are practically incomprehensible to humans.  With this patch, the
      kernel will by default print a 1-line summary for each error reported with
      the severity, type, etc.  printed as text strings.  The old behaviour is
      still available by using the rtasmsgs=on kernel command line option.  The
      patch also renames some RTAS-specific symbols to start with "RTAS_".
      Signed-off-by: default avatarNathan Fontenot <nfont@austin.ibm.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      0cc8f1e0
    • Paul Mackerras's avatar
      [PATCH] ppc64 Fix unbalanced pci_dev_put in EEH code · 7c1645c5
      Paul Mackerras authored
      The EEH code currently can end up doing an extra pci_dev_put() in the case
      where we hot-unplug a card for which we are ignoring EEH errors (e.g.  a
      graphics card).  This patch fixes that problem by only maintaining a
      reference to the PCI device if we have entered any of its resource
      addresses into our address -> PCI device cache.  This patch is based on an
      earlier patch by Linas Vepstas.
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      7c1645c5
    • Paul Mackerras's avatar
      [PATCH] ppc64: log firmware errors during boot · 8a163c94
      Paul Mackerras authored
      Firmware can report errors at any time, and not atypically during boot. 
      However, these reports were being discarded until th rtasd comes up, which
      occurs fairly late in the boot cycle.  As a result, firmware errors during
      boot were being silently ignored.
      Signed-off-by: default avatarLinas Vepstas <linas@linas.org>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      8a163c94
    • David Gibson's avatar
      [PATCH] ppc64: C99 initializers in INIT_THREAD · cab74470
      David Gibson authored
      Fairly trivial PPC64 cleanup.  This patch makes the ppc64 INIT_THREAD
      #define use C99 initializers, which will make it less likely to get broken
      if we need to change thread_struct.
      Signed-off-by: default avatarDavid Gibson <dwg@au1.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      cab74470
    • Paul Mackerras's avatar
      [PATCH] ppc64: fix idle loop for offline cpu · b83f8c40
      Paul Mackerras authored
      In the default_idle and dedicated_idle loops, there are some inner loops
      out of which we should break if the cpu is marked offline.  Otherwise, it
      is possible for the cpu to get stuck and never actually go offline.
      shared_idle is unaffected.
      Signed-off-by: default avatarNathan Lynch <nathanl@austin.ibm.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      b83f8c40
    • Paul Mackerras's avatar
      [PATCH] ppc64: Don't call scheduler on offline cpu · 8861f2cb
      Paul Mackerras authored
      When taking a cpu offline, once the cpu has been removed from
      cpu_online_map, it is not supposed to service any more interrupts.  This
      presents a problem on ppc64 because we cannot truly disable the
      decrementer.  There used to be cpu_is_offline() checks in several scheduler
      functions (e.g.  rebalance_tick()) which papered over this issue, but these
      checks were removed recently.  So with recent 2.6 kernels, an attempt to
      offline a cpu can result in a crash in find_busiest_group().  This patch
      prevents such crashes.
      Signed-off-by: default avatarNathan Lynch <nathanl@austin.ibm.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      8861f2cb