Skip to content
  1. Apr 15, 2007
  2. Apr 10, 2007
    • Suleiman Souhlal's avatar
      ide: correctly prevent IDE timer expiry function to run if request was already handled · 23450319
      Suleiman Souhlal authored
      
      
      It is possible for the timer expiry function to run even though the
      request has already been handled: ide_timer_expiry() only checks that
      the handler is not NULL, but it is possible that we have handled a
      request (thus clearing the handler) and then started a new request
      (thus starting the timer again, and setting a handler). 
      
      A simple way to exhibit this is to set the DMA timeout to 1 jiffy and
      run dd: The kernel will panic after a few minutes because
      ide_timer_expiry() tries to add a timer when it's already active.
      
      To fix this, we simply add a request generation count that gets
      incremented at every interrupt, and check in ide_timer_expiry() that
      we have not already handled a new interrupt before running the expiry
      function.
      
      Signed-off-by: default avatarSuleiman Souhlal <suleiman@google.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      23450319
  3. Apr 09, 2007
  4. Apr 07, 2007
    • Ingo Molnar's avatar
      [PATCH] high-res timers: resume fix · 995f054f
      Ingo Molnar authored
      
      
      Soeren Sonnenburg reported that upon resume he is getting
      this backtrace:
      
       [<c0119637>] smp_apic_timer_interrupt+0x57/0x90
       [<c0142d30>] retrigger_next_event+0x0/0xb0
       [<c0104d30>] apic_timer_interrupt+0x28/0x30
       [<c0142d30>] retrigger_next_event+0x0/0xb0
       [<c0140068>] __kfifo_put+0x8/0x90
       [<c0130fe5>] on_each_cpu+0x35/0x60
       [<c0143538>] clock_was_set+0x18/0x20
       [<c0135cdc>] timekeeping_resume+0x7c/0xa0
       [<c02aabe1>] __sysdev_resume+0x11/0x80
       [<c02ab0c7>] sysdev_resume+0x47/0x80
       [<c02b0b05>] device_power_up+0x5/0x10
      
      it turns out that on resume we mistakenly re-enable interrupts too
      early.  Do the timer retrigger only on the current CPU.
      
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Acked-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Acked-by: default avatarSoeren Sonnenburg <kernel@nn7.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      995f054f
  5. Apr 06, 2007
  6. Apr 05, 2007
  7. Apr 04, 2007
  8. Apr 02, 2007
  9. Apr 01, 2007
  10. Mar 31, 2007
  11. Mar 30, 2007
  12. Mar 29, 2007
  13. Mar 28, 2007
  14. Mar 27, 2007
  15. Mar 26, 2007
    • Russ Cox's avatar
      [PATCH] Add const to pointer qualifiers for __chk_user_ptr and __chk_io_ptr. · 04a39523
      Russ Cox authored
      
      
      Change prototypes for __chk_user_ptr and __chk_io_ptr to take const
      void* instead of void*, so that code can pass "const void *" to them.
      
      (Right now sparse does not warn about passing const void* to void*
      functions, but that is a separate bug that I believe Josh is working on,
      and once sparse does check this, the changed prototypes will be
      necessary.)
      
      Signed-off-by: default avatarRuss Cox <rsc@swtch.com>
      Signed-off-by: default avatarJosh Triplett <josh@freedesktop.org>
      Acked-by: default avatarChristopher Li <sparse@chrisli.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      04a39523
    • Suleiman Souhlal's avatar
      ide: use correct IDE error recovery · 513daadd
      Suleiman Souhlal authored
      
      
      IDE error recovery is using IDLE IMMEDIATE if the drive is busy or has DRQ set.
      This violates the ATA spec (can only send IDLE IMMEDIATE when drive is not
      busy) and really hoses up some drives (modern drives will not be able to
      recover using this error handling).  The correct thing to do is issue a SRST
      followed by a SET FEATURES command.  This is what Western Digital recommends
      for error recovery and what Western Digital says Windows does.  It also does
      not violate the ATA spec as far as I can tell.
      
      Bart:
      * port the patch over the current tree
      * undo the recalibration code removal
      * send SET FEATURES command after checking for good drive status
      * don't check whether the current request is of REQ_TYPE_ATA_{CMD,TASK}
        type because we need to send SET FEATURES before handling any requests
      * some pre-ATA4 drives require INITIALIZE DEVICE PARAMETERS command before
        other commands (except IDENTIFY) so send SET FEATURES only if there are
        no pending drive->special requests
      * update comments and patch description
      * any bugs introduced by this patch are mine and not Suleiman's :-)
      
      Signed-off-by: default avatarSuleiman Souhlal <suleiman@google.com>
      Acked-by: default avatarAlan Cox <alan@redhat.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      513daadd
    • Heiko Carstens's avatar
      [S390] Fix TCP/UDP pseudo header checksum computation. · afbc1e99
      Heiko Carstens authored
      
      
      git commit f994aae1 changed the
      function declaration of csum_tcpudp_nofold. Argument types were
      changed from unsigned long to __be32 (unsigned int). Therefore we
      lost the implicit type conversion that zeroed the upper half of the
      registers that are used to pass parameters. Since the inline assembly
      relied on this we ended up adding random values and wrong checksums
      were created.
      Showed only up on machines with more than 4GB since gcc produced code
      where the registers that are used to pass 'saddr' and 'daddr' previously
      contained addresses before calling this function.
      Fix this by using 32 bit arithmetics and convert code to C, since gcc
      produces better code than these hand-optimized versions.
      
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      afbc1e99
Loading