1. 20 Oct, 2005 17 commits
  2. 19 Oct, 2005 2 commits
    • Tony Lindgren's avatar
      [ARM] 3024/1: Add cpu_v6_proc_fin · 67c5587a
      Tony Lindgren authored
      Patch from Tony Lindgren
      
      Machine restart calls cpu_proc_fin() to clean and disable
      cache, and turn off interrupts. This patch adds proper
      cpu_v6_proc_fin.
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      67c5587a
    • Seth, Rohit's avatar
      [PATCH] Handle spurious page fault for hugetlb region · 3359b54c
      Seth, Rohit authored
      The hugetlb pages are currently pre-faulted.  At the time of mmap of
      hugepages, we populate the new PTEs.  It is possible that HW has already
      cached some of the unused PTEs internally.  These stale entries never
      get a chance to be purged in existing control flow.
      
      This patch extends the check in page fault code for hugepages.  Check if
      a faulted address falls with in size for the hugetlb file backing it.
      We return VM_FAULT_MINOR for these cases (assuming that the arch
      specific page-faulting code purges the stale entry for the archs that
      need it).
      Signed-off-by: default avatarRohit Seth <rohit.seth@intel.com>
      
      [ This is apparently arguably an ia64 port bug. But the code won't
        hurt, and for now it fixes a real problem on some ia64 machines ]
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      3359b54c
  3. 18 Oct, 2005 15 commits
  4. 17 Oct, 2005 6 commits
    • Eric Dumazet's avatar
      [PATCH] rcu: keep rcu callback event counter · 5ee832db
      Eric Dumazet authored
      This makes call_rcu() keep track of how many events there are on the RCU
      list, and cause a reschedule event when the list gets too long.
      
      This helps keep RCU event lists down.
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      5ee832db
    • Jeff Garzik's avatar
      [PATCH] Fix and clean up quirk_intel_ide_combined() configuration · cc675230
      Jeff Garzik authored
      This change makes quirk_intel_ide_combined() dependent on the precise
      conditions under which it is needed:
      
      * IDE is built in
      * IDE SATA option is not set
      * ata_piix or ahci drivers are enabled
      
      This fixes an issue where some modular configurations would not cause
      the quirk to be enabled.
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      Signed-off-by: default avatarLinus torvalds <torvalds@osdl.org>
      cc675230
    • Oleg Nesterov's avatar
      [PATCH] posix-timers: fix task accounting · 47d6b083
      Oleg Nesterov authored
      Make sure we release the task struct properly when releasing pending
      timers.
      
      release_task() does write_lock_irq(&tasklist_lock), so it can't race
      with run_posix_cpu_timers() on any cpu.
      Signed-off-by: default avatarOleg Nesterov <oleg@tv-sign.ru>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      47d6b083
    • Trond Myklebust's avatar
      [PATCH] NFS: Fix Oopsable/unnecessary i_count manipulations in nfs_wait_on_inode() · 6ce96917
      Trond Myklebust authored
      Oopsable since nfs_wait_on_inode() can get called as part of iput_final().
      
      Unnecessary since the caller had better be damned sure that the inode won't
      disappear from underneath it anyway.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      6ce96917
    • Trond Myklebust's avatar
      [PATCH] NFS: Fix cache consistency races · b3c52da3
      Trond Myklebust authored
      If the data cache has been marked as potentially invalid by nfs_refresh_inode,
      we should invalidate it rather than assume that changes are due to our own
      activity.
      
      Also ensure that we always start with a valid cache before declaring it
      to be protected by a delegation.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      b3c52da3
    • Christian Krause's avatar
      [PATCH] USB: fix bug in handling of highspeed usb HID devices · 13b58ee5
      Christian Krause authored
      During the development of an USB device I found a bug in the handling of
      Highspeed HID devices in the kernel.
      
      What happened?
      
      Highspeed HID devices are correctly recognized and enumerated by the
      kernel. But even if usbhid kernel module is loaded, no HID reports are
      received by the kernel.
      
      The output of the hardware USB analyzer told me that the host doesn't
      even poll for interrupt IN transfers (even the "interrupt in" USB
      transfer are polled by the host).
      
      After some debugging in hid-core.c I've found the reason.
      
      In case of a highspeed device, the endpoint interval is re-calculated in
      driver/usb/input/hid-core.c:
      
      line 1669:
                   /* handle potential highspeed HID correctly */
                   interval = endpoint->bInterval;
                   if (dev->speed == USB_SPEED_HIGH)
                         interval = 1 << (interval - 1);
      
      Basically this calculation is correct (refer to USB 2.0 spec, 9.6.6).
      This new calculated value of "interval" is used as input for
      usb_fill_int_urb:
      
      line 1685:
      
                  usb_fill_int_urb(hid->urbin, dev, pipe, hid->inbuf, 0,
                         hid_irq_in, hid, interval);
      
      Unfortunately the same calculation as above is done a second time in
      usb_fill_int_urb in the file include/linux/usb.h:
      
      line 933:
              if (dev->speed == USB_SPEED_HIGH)
                      urb->interval = 1 << (interval - 1);
              else
                      urb->interval = interval;
      
      This means, that if the endpoint descriptor (of a high speed device)
      specifies e.g. bInterval = 7, the urb->interval gets the value:
      
      hid-core.c: interval = 1 << (7-1) = 0x40 = 64
      urb->interval = 1 << (interval -1) = 1 << (63) = integer overflow
      
      Because of this the value of urb->interval is sometimes negative and is
      rejected in core/urb.c:
      line 353:
                      /* too small? */
                      if (urb->interval <= 0)
                              return -EINVAL;
      
      The conclusion is, that the recalculaton of the interval (which is
      necessary for highspeed) should not be made twice, because this is
      simply wrong. ;-)
      
      Re-calculation in usb_fill_int_urb makes more sense, because it is the
      most general approach. So it would make sense to remove it from
      hid-core.c.
      
      Because in hid-core.c the interval variable is only used for calling
      usb_fill_int_urb, it is no problem to remove the highspeed
      re-calculation in this file.
      Signed-off-by: default avatarChristian Krause <chkr@plauener.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      13b58ee5