1. 22 Aug, 2006 1 commit
    • Tejun Heo's avatar
      [PATCH] ata_piix: fix ghost device probing by honoring PCS present bits · f1a58eca
      Tejun Heo authored
      Move out PCS handling from piix_sata_prereset() into
      piix_sata_present_mask() and use it from newly implemented
      piix_sata_softreset().  Class codes for devices which are indicated to
      be absent by PCS are cleared to ATA_DEV_NONE.  This fixes ghost device
      problem reported on ICH6 and 7.
      
      This patch moves PCS handling from prereset to softreset, which makes
      two behavior changes.
      
      * perform softreset even when PCS indicates no device
      * PCS handling is repeated before retrying softresets due to reset
        failures.
      
      Both behavior changes are intended and more consistent with how other
      drivers behave.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      f1a58eca
  2. 19 Aug, 2006 1 commit
  3. 18 Aug, 2006 8 commits
  4. 17 Aug, 2006 22 commits
  5. 16 Aug, 2006 7 commits
  6. 15 Aug, 2006 1 commit
    • Hans de Goede's avatar
      [PATCH] PATCH: 1 line 2.6.18 bugfix: modpost-64bit-fix.patch · e0e92632
      Hans de Goede authored
      There is a small but annoying bug in scripts/mod/file2alias.c which causes
      it to generate invalid aliases for input devices on 64 bit archs. This causes
      joydev.ko to not be automaticly loaded when inserting a joystick, resulting in
      a non working joystick (for the average user).
      
      In scripts/mod/file2alias.c is the following code for generating the input
      aliases:
      static void do_input(char *alias,
                           kernel_ulong_t *arr, unsigned int min, unsigned int max)
      {
              unsigned int i;
      
              for (i = min; i < max; i++)
                      if (arr[i / BITS_PER_LONG] & (1 << (i%BITS_PER_LONG)))
                              sprintf(alias + strlen(alias), "%X,*", i);
      }
      
      On 32 bits systems, this correctly generates "0,*" for the first alias, "8,*"
      for the second etc.
      
      However on 64 bits it generates: "0,*20,*" resp "8,*28,*" Notice how it adds 20
      + first entry (hex) ! to the list of hex codes, which is 32 more then the first
      entry, thus is because the bit test above wraps at 32 bits instead of 64.
      
      scripts/mod/file2alias.c, line 379 reads:
                      if (arr[i / BITS_PER_LONG] & (1 << (i%BITS_PER_LONG)))
      That should be:
                      if (arr[i / BITS_PER_LONG] & (1L << (i%BITS_PER_LONG)))
      
      Notice the added 'L' after the 1, otherwise that is an 32 bit int instead of a
      64 bit long, and when that int gets shifted >= 32 times, appearantly the number
      by which to shift is wrapped at 5 bits ( % 32) causing it to test a bit 32 bits
      too low.
      
      The patch below makes the nescesarry 1 char change :)
      Signed-off-by: default avatarHans de Goede <j.w.r.degoede@hhs.nl>
      Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      e0e92632