1. 28 Nov, 2008 2 commits
  2. 27 Nov, 2008 4 commits
  3. 23 Nov, 2008 4 commits
  4. 22 Nov, 2008 1 commit
  5. 21 Nov, 2008 5 commits
  6. 20 Nov, 2008 3 commits
    • Alexander van Heukelum's avatar
      x86: clean up after: move entry_64.S register saving out of the macros · dcd072e2
      Alexander van Heukelum authored
      This add-on patch to x86: move entry_64.S register saving out
      of the macros visually cleans up the appearance of the code by
      introducing some basic helper macro's. It also adds some cfi
      annotations which were missing.
      Signed-off-by: default avatarAlexander van Heukelum <heukelum@fastmail.fm>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      dcd072e2
    • Alexander van Heukelum's avatar
      x86: move entry_64.S register saving out of the macros · d99015b1
      Alexander van Heukelum authored
      Here is a combined patch that moves "save_args" out-of-line for
      the interrupt macro and moves "error_entry" mostly out-of-line
      for the zeroentry and errorentry macros.
      
      The save_args function becomes really straightforward and easy
      to understand, with the possible exception of the stack switch
      code, which now needs to copy the return address of to the
      calling function. Normal interrupts arrive with ((~vector)-0x80)
      on the stack, which gets adjusted in common_interrupt:
      
      <common_interrupt>:
      (5)  addq   $0xffffffffffffff80,(%rsp)		/* -> ~(vector) */
      (4)  sub    $0x50,%rsp				/* space for registers */
      (5)  callq  ffffffff80211290 <save_args>
      (5)  callq  ffffffff80214290 <do_IRQ>
      <ret_from_intr>:
           ...
      
      An apic interrupt stub now look like this:
      
      <thermal_interrupt>:
      (5)  pushq  $0xffffffffffffff05			/* ~(vector) */
      (4)  sub    $0x50,%rsp				/* space for registers */
      (5)  callq  ffffffff80211290 <save_args>
      (5)  callq  ffffffff80212b8f <smp_thermal_interrupt>
      (5)  jmpq   ffffffff80211f93 <ret_from_intr>
      
      Similarly the exception handler register saving function becomes
      simpler, without the need of any parameter shuffling. The stub
      for an exception without errorcode looks like this:
      
      <overflow>:
      (6)  callq  *0x1cad12(%rip)        # ffffffff803dd448 <pv_irq_ops+0x38>
      (2)  pushq  $0xffffffffffffffff			/* no syscall */
      (4)  sub    $0x78,%rsp				/* space for registers */
      (5)  callq  ffffffff8030e3b0 <error_entry>
      (3)  mov    %rsp,%rdi				/* pt_regs pointer */
      (2)  xor    %esi,%esi				/* no error code */
      (5)  callq  ffffffff80213446 <do_overflow>
      (5)  jmpq   ffffffff8030e460 <error_exit>
      
      And one for an exception with errorcode like this:
      
      <segment_not_present>:
      (6)  callq  *0x1cab92(%rip)        # ffffffff803dd448 <pv_irq_ops+0x38>
      (4)  sub    $0x78,%rsp				/* space for registers */
      (5)  callq  ffffffff8030e3b0 <error_entry>
      (3)  mov    %rsp,%rdi				/* pt_regs pointer */
      (5)  mov    0x78(%rsp),%rsi			/* load error code */
      (9)  movq   $0xffffffffffffffff,0x78(%rsp)	/* no syscall */
      (5)  callq  ffffffff80213209 <do_segment_not_present>
      (5)  jmpq   ffffffff8030e460 <error_exit>
      
      Unfortunately, this last type is more than 32 bytes. But the total space
      savings due to this patch is about 2500 bytes on an smp-configuration,
      and I think the code is clearer than it was before. The tested kernels
      were non-paravirt ones (i.e., without the indirect call at the top of
      the exception handlers).
      
      Anyhow, I tested this patch on top of a recent -tip. The machine
      was an 2x4-core Xeon at 2333MHz. Measured where the delays between
      (almost-)adjacent rdtsc instructions. The graphs show how much
      time is spent outside of the program as a function of the measured
      delay. The area under the graph represents the total time spent
      outside the program. Eight instances of the rdtsctest were
      started, each pinned to a single cpu. The histogams are added.
      For each kernel two measurements were done: one in mostly idle
      condition, the other while running "bonnie++ -f", bound to cpu 0.
      Each measurement took 40 minutes runtime. See the attached graphs
      for the results. The graphs overlap almost everywhere, but there
      are small differences.
      Signed-off-by: default avatarAlexander van Heukelum <heukelum@fastmail.fm>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      d99015b1
    • Ingo Molnar's avatar
      Merge branch 'x86/cleanups' into x86/irq · c032a2de
      Ingo Molnar authored
      [ merged x86/cleanups into x86/irq to enable a wider IRQ entry code
        patch to be applied, which depends on a cleanup patch in x86/cleanups. ]
      c032a2de
  7. 18 Nov, 2008 2 commits
    • Ingo Molnar's avatar
      Merge branch 'x86/urgent' into x86/cleanups · cbe9ee00
      Ingo Molnar authored
      cbe9ee00
    • Ingo Molnar's avatar
      x86, PEBS/DS: fix code flow in ds_request() · 10db4ef7
      Ingo Molnar authored
      this compiler warning:
      
        arch/x86/kernel/ds.c: In function 'ds_request':
        arch/x86/kernel/ds.c:368: warning: 'context' may be used uninitialized in this function
      
      Shows that the code flow in ds_request() is buggy - it goes into
      the unlock+release-context path even when the context is not allocated
      yet.
      
      First allocate the context, then do the other checks.
      
      Also, take care with GFP allocations under the ds_lock spinlock.
      
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      10db4ef7
  8. 17 Nov, 2008 4 commits
  9. 16 Nov, 2008 2 commits
    • Yinghai Lu's avatar
      x86: fix es7000 compiling · d3c6aa1e
      Yinghai Lu authored
      Impact: fix es7000 build
      
        CC      arch/x86/kernel/es7000_32.o
      arch/x86/kernel/es7000_32.c: In function find_unisys_acpi_oem_table:
      arch/x86/kernel/es7000_32.c:255: error: implicit declaration of function acpi_get_table_with_size
      arch/x86/kernel/es7000_32.c:261: error: implicit declaration of function early_acpi_os_unmap_memory
      arch/x86/kernel/es7000_32.c: In function unmap_unisys_acpi_oem_table:
      arch/x86/kernel/es7000_32.c:277: error: implicit declaration of function __acpi_unmap_table
      make[1]: *** [arch/x86/kernel/es7000_32.o] Error 1
      
      we applied one patch out of order...
      
      | commit a73aaedd
      | Author: Yinghai Lu <yhlu.kernel@gmail.com>
      | Date:   Sun Sep 14 02:33:14 2008 -0700
      |
      |    x86: check dsdt before find oem table for es7000, v2
      |
      |    v2: use __acpi_unmap_table()
      
      that patch need:
      
      	x86: use early_ioremap in __acpi_map_table
      	x86: always explicitly map acpi memory
      	acpi: remove final __acpi_map_table mapping before setting acpi_gbl_permanent_mmap
      	acpi/x86: introduce __apci_map_table, v4
      
      submitted to the ACPI tree but not upstream yet.
      
      fix it until those patches applied, need to revert this one
      Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      d3c6aa1e
    • Markus Metzger's avatar
      x86, bts: fix unlock problem in ds.c · d1f1e9c0
      Markus Metzger authored
      Fix a problem where ds_request() returned an error without releasing the
      ds lock.
      Reported-by: default avatarStephane Eranian <eranian@gmail.com>
      Signed-off-by: default avatarMarkus Metzger <markus.t.metzger@gmail.com>
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      d1f1e9c0
  10. 15 Nov, 2008 13 commits
    • Linus Torvalds's avatar
      Linux 2.6.28-rc5 · 9bf1a244
      Linus Torvalds authored
      9bf1a244
    • Al Viro's avatar
      Fix inotify watch removal/umount races · 8f7b0ba1
      Al Viro authored
      Inotify watch removals suck violently.
      
      To kick the watch out we need (in this order) inode->inotify_mutex and
      ih->mutex.  That's fine if we have a hold on inode; however, for all
      other cases we need to make damn sure we don't race with umount.  We can
      *NOT* just grab a reference to a watch - inotify_unmount_inodes() will
      happily sail past it and we'll end with reference to inode potentially
      outliving its superblock.
      
      Ideally we just want to grab an active reference to superblock if we
      can; that will make sure we won't go into inotify_umount_inodes() until
      we are done.  Cleanup is just deactivate_super().
      
      However, that leaves a messy case - what if we *are* racing with
      umount() and active references to superblock can't be acquired anymore?
      We can bump ->s_count, grab ->s_umount, which will almost certainly wait
      until the superblock is shut down and the watch in question is pining
      for fjords.  That's fine, but there is a problem - we might have hit the
      window between ->s_active getting to 0 / ->s_count - below S_BIAS (i.e.
      the moment when superblock is past the point of no return and is heading
      for shutdown) and the moment when deactivate_super() acquires
      ->s_umount.
      
      We could just do drop_super() yield() and retry, but that's rather
      antisocial and this stuff is luser-triggerable.  OTOH, having grabbed
      ->s_umount and having found that we'd got there first (i.e.  that
      ->s_root is non-NULL) we know that we won't race with
      inotify_umount_inodes().
      
      So we could grab a reference to watch and do the rest as above, just
      with drop_super() instead of deactivate_super(), right? Wrong.  We had
      to drop ih->mutex before we could grab ->s_umount.  So the watch
      could've been gone already.
      
      That still can be dealt with - we need to save watch->wd, do idr_find()
      and compare its result with our pointer.  If they match, we either have
      the damn thing still alive or we'd lost not one but two races at once,
      the watch had been killed and a new one got created with the same ->wd
      at the same address.  That couldn't have happened in inotify_destroy(),
      but inotify_rm_wd() could run into that.  Still, "new one got created"
      is not a problem - we have every right to kill it or leave it alone,
      whatever's more convenient.
      
      So we can use idr_find(...) == watch && watch->inode->i_sb == sb as
      "grab it and kill it" check.  If it's been our original watch, we are
      fine, if it's a newcomer - nevermind, just pretend that we'd won the
      race and kill the fscker anyway; we are safe since we know that its
      superblock won't be going away.
      
      And yes, this is far beyond mere "not very pretty"; so's the entire
      concept of inotify to start with.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Acked-by: default avatarGreg KH <greg@kroah.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8f7b0ba1
    • Huang Weiyi's avatar
      LIS3LV02Dx: remove unused #include <version.h> · 0d3b7100
      Huang Weiyi authored
      The file(s) below do not use LINUX_VERSION_CODE nor KERNEL_VERSION.
        drivers/hwmon/lis3lv02d.c
      
      This patch removes the said #include <version.h>.
      Signed-off-by: default avatarHuang Weiyi <weiyi.huang@gmail.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0d3b7100
    • Linus Torvalds's avatar
      Merge branch 'sh/for-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 · 537a2f88
      Linus Torvalds authored
      * 'sh/for-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6:
        serial: sh-sci: Reorder the SCxTDR write after the TDxE clear.
        sh: __copy_user function can corrupt the stack in case of exception
        sh: Fixed the TMU0 reload value on resume
        sh: Don't factor in PAGE_OFFSET for valid_phys_addr_range() check.
        sh: early printk port type fix
        i2c: fix i2c-sh_mobile rx underrun
        sh: Provide a sane valid_phys_addr_range() to prevent TLB reset with PMB.
        usb: r8a66597-hcd: fix wrong data access in SuperH on-chip USB
        fix sci type for SH7723
        serial: sh-sci: fix cannot work SH7723 SCIFA
        sh: Handle fixmap TLB eviction more coherently.
      537a2f88
    • Linus Torvalds's avatar
      Merge branch 'doc-subdirs' of git://git.kernel.org/pub/scm/linux/kernel/git/rdunlap/linux-docs · fab349cc
      Linus Torvalds authored
      * 'doc-subdirs' of git://git.kernel.org/pub/scm/linux/kernel/git/rdunlap/linux-docs:
        Create/use more directory structure in the Documentation/ tree.
      fab349cc
    • Martin Schwidefsky's avatar
      Add 'pr_fmt()' format modifier to pr_xyz macros. · d091c2f5
      Martin Schwidefsky authored
      A common reason for device drivers to implement their own printk macros
      is the lack of a printk prefix with the standard pr_xyz macros.
      Introduce a pr_fmt() macro that is applied for every pr_xyz macro to the
      format string.
      
      The most common use of the pr_fmt macro would be to add the name of the
      device driver to all pr_xyz messages in a source file.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d091c2f5
    • Linus Torvalds's avatar
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 · 6ca2cb99
      Linus Torvalds authored
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6:
        V4L/DVB (9624): CVE-2008-5033: fix OOPS on tvaudio when controlling bass/treble
        V4L/DVB (9623): tvaudio: Improve debug msg by printing something more human
        V4L/DVB (9622): tvaudio: Improve comments and remove a unneeded prototype
        V4L/DVB (9621): Avoid writing outside shadow.bytes[] array
        V4L/DVB (9620): tvaudio: use a direct reference for chip description
        V4L/DVB (9619): tvaudio: update initial comments
        V4L/DVB (9618): tvaudio: add additional logic to avoid OOPS
        V4L/DVB (9617): tvtime: remove generic_checkmode callback
        V4L/DVB (9616): tvaudio: cleanup - group all callbacks together
        V4L/DVB (9615): tvaudio: instead of using a magic number, use ARRAY_SIZE
        V4L/DVB (9613): tvaudio: fix a memory leak
      6ca2cb99
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 · 01133148
      Linus Torvalds authored
      * 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
        [S390] fix s390x_newuname
        [S390] dasd: log sense for fatal errors
        [S390] cpu topology: fix locking
        [S390] cio: Fix refcount after moving devices.
        [S390] ftrace: fix kernel stack backchain walking
        [S390] ftrace: disable tracing on idle psw
        [S390] lockdep: fix compile bug
        [S390] kvm_s390: Fix oops in virtio device detection with "mem="
        [S390] sclp: emit error message if assign storage fails
        [S390] Fix range for add_active_range() in setup_memory()
      01133148
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 · c98114db
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:
        [SCSI] dpt_i2o: fix transferred data length for scsi_set_resid()
        [SCSI] scsi_error regression: Fix idempotent command handling
        [SCSI] zfcp: Fix hexdump data in s390dbf traces
        [SCSI] zfcp: fix erp timeout cleanup for port open requests
        [SCSI] zfcp: Wait for port scan to complete when setting adapter online
        [SCSI] zfcp: Fix cast warning
        [SCSI] zfcp: Fix request list handling in error path
        [SCSI] zfcp: fix mempool usage for status_read requests
        [SCSI] zfcp: fix req_list_locking.
        [SCSI] zfcp: Dont clear reference from SCSI device to unit
        [SCSI] qla2xxx: Update version number to 8.02.01-k9.
        [SCSI] qla2xxx: Return a FAILED status when abort mailbox-command fails.
        [SCSI] qla2xxx: Do not honour max_vports from firmware for 2G ISPs and below.
        [SCSI] qla2xxx: Use pci_disable_rom() to manipulate PCI config space.
        [SCSI] qla2xxx: Correct Atmel flash-part handling.
        [SCSI] megaraid: fix mega_internal_command oops
      c98114db
    • David Woodhouse's avatar
      Revert "x86: blacklist DMAR on Intel G31/G33 chipsets" · 52168e60
      David Woodhouse authored
      This reverts commit e51af663, which was
      wrongly hoovered up and submitted about a month after a better fix had
      already been merged.
      
      The better fix is commit cbda1ba8
      ("PCI/iommu: blacklist DMAR on Intel G31/G33 chipsets"), where we do
      this blacklisting based on the DMI identification for the offending
      motherboard, since sometimes this chipset (or at least a chipset with
      the same PCI ID) apparently _does_ actually have an IOMMU.
      Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      52168e60
    • KOSAKI Motohiro's avatar
      mm: remove unevictable's show_page_path · 748f1a2e
      KOSAKI Motohiro authored
      Hugh Dickins reported show_page_path() is buggy and unsafe because
      
       - lack dput() against d_find_alias()
       - don't concern vma->vm_mm->owner == NULL
       - lack lock_page()
      
      it was only for debugging, so rather than trying to fix it, just remove
      it now.
      Reported-by: default avatarHugh Dickins <hugh@veritas.com>
      Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
      Signed-off-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      CC: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
      CC: Rik van Riel <riel@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      748f1a2e
    • Geert Uytterhoeven's avatar
      misc: C2port needs <linux/sched.h> · fb751098
      Geert Uytterhoeven authored
      m68k allmodconfig:
      
      | drivers/misc/c2port/core.c: In function 'c2port_reset':
      | drivers/misc/c2port/core.c:73: error: dereferencing pointer to incomplete type
      | drivers/misc/c2port/core.c: In function 'c2port_strobe_ck':
      | drivers/misc/c2port/core.c:91: error: dereferencing pointer to incomplete type
      
      Include <linux/sched.h> to fix it, as m68k's local_irq_enable() needs to know
      about struct task_struct.
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      fb751098