1. 08 Jan, 2009 40 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://neil.brown.name/md · 894bcdfb
      Linus Torvalds authored
      * 'for-linus' of git://neil.brown.name/md:
        md: don't retry recovery of raid1 that fails due to error on source drive.
        md: Allow md devices to be created by name.
        md: make devices disappear when they are no longer needed.
        md: centralise all freeing of an 'mddev' in 'md_free'
        md: move allocation of ->queue from mddev_find to md_probe
        md: need another print_sb for mdp_superblock_1
        md: use list_for_each_entry macro directly
        md: raid0: make hash_spacing and preshift sector-based.
        md: raid0: Represent the size of strip zones in sectors.
        md: raid0 create_strip_zones(): Add KERN_INFO/KERN_ERR to printk's.
        md: raid0 create_strip_zones(): Make two local variables sector-based.
        md: raid0: Represent zone->zone_offset in sectors.
        md: raid0: Represent device offset in sectors.
        md: raid0_make_request(): Replace local variable block by sector.
        md: raid0_make_request(): Remove local variable chunk_size.
        md: raid0_make_request(): Replace chunksize_bits by chunksect_bits.
        md: use sysfs_notify_dirent to notify changes to md/sync_action.
        md: fix bitmap-on-external-file bug.
      894bcdfb
    • Linus Torvalds's avatar
      Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev · a419df8a
      Linus Torvalds authored
      * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
        libata: clean up the SFF code for coding style
        libata: Add 32bit PIO support
        [libata] ahci: Withdraw IGN_SERR_INTERNAL for SB800 SATA
        pata_hpt366: reimplement mode programming
        [libata] pata_hpt3x3: correct _freeze() function declaration
        libata: Add special ata_pio_need_iordy() handling for Compact Flash.
        pata_platform: __pata_platform_remove() shouldn't be in discard section
        sata_sil24: remove unused sil24_port_multiplier
        [libata] ahci: Add SATA GEN3 related messages
        ata_piix: save, use saved and restore IOCFG
        pata_ali: Fix and workaround for FIFO DMA bug
        pata_ali: force initialise a few bits
        pata_hpt3x3: Workarounds for chipset
      a419df8a
    • Alan Cox's avatar
      libata: clean up the SFF code for coding style · 0fe40ff8
      Alan Cox authored
      Signed-off-by: default avatarAlan Cox <alan@redhat.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      0fe40ff8
    • Alan Cox's avatar
      libata: Add 32bit PIO support · 871af121
      Alan Cox authored
      This matters for some controllers and in one or two cases almost doubles
      PIO performance. Add a bmdma32 operations set we can inherit and activate
      it for some controllers
      Signed-off-by: default avatarAlan Cox <alan@redhat.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      871af121
    • Shane Huang's avatar
      [libata] ahci: Withdraw IGN_SERR_INTERNAL for SB800 SATA · e427fe04
      Shane Huang authored
      There is an issue in ATI SB600/SB700 SATA that PxSERR.E should not be
      set on some conditions, which will lead to many SATA ODD error messages.
      commit 55a61604 is the workaround.
      Since SB800 fixed this HW issue, IGN_SERR_INTERNAL should be withdrawn
      for SB800.
      Signed-off-by: default avatarShane Huang <shane.huang@amd.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      e427fe04
    • NeilBrown's avatar
      md: don't retry recovery of raid1 that fails due to error on source drive. · 4044ba58
      NeilBrown authored
      If a raid1 has only one working drive and it has a sector which
      gives an error on read, then an attempt to recover onto a spare will
      fail, but as the single remaining drive is not removed from the
      array, the recovery will be immediately re-attempted, resulting
      in an infinite recovery loop.
      
      So detect this situation and don't retry recovery once an error
      on the lone remaining drive is detected.
      
      Allow recovery to be retried once every time a spare is added
      in case the problem wasn't actually a media error.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      4044ba58
    • NeilBrown's avatar
      md: Allow md devices to be created by name. · efeb53c0
      NeilBrown authored
      Using sequential numbers to identify md devices is somewhat artificial.
      Using names can be a lot more user-friendly.
      
      Also, creating md devices by opening the device special file is a bit
      awkward.
      
      So this patch provides a new option for creating and naming devices.
      
      Writing a name such as "md_home" to
          /sys/modules/md_mod/parameters/new_array
      will cause an array with that name to be created.  It will appear in
      /sys/block/ /proc/partitions and /proc/mdstat as 'md_home'.
      It will have an arbitrary minor number allocated.
      
      md devices that a created by an open are destroyed on the last
      close when the device is inactive.
      For named md devices, they will not be destroyed until the array
      is explicitly stopped, either with the STOP_ARRAY ioctl or by
      writing 'clear' to /sys/block/md_XXXX/md/array_state.
      
      The name of the array must start 'md_' to avoid conflict with
      other devices.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      efeb53c0
    • NeilBrown's avatar
      md: make devices disappear when they are no longer needed. · d3374825
      NeilBrown authored
      Currently md devices, once created, never disappear until the module
      is unloaded.  This is essentially because the gendisk holds a
      reference to the mddev, and the mddev holds a reference to the
      gendisk, this a circular reference.
      
      If we drop the reference from mddev to gendisk, then we need to ensure
      that the mddev is destroyed when the gendisk is destroyed.  However it
      is not possible to hook into the gendisk destruction process to enable
      this.
      
      So we drop the reference from the gendisk to the mddev and destroy the
      gendisk when the mddev gets destroyed.  However this has a
      complication.
      Between the call
         __blkdev_get->get_gendisk->kobj_lookup->md_probe
      and the call
         __blkdev_get->md_open
      
      there is no obvious way to hold a reference on the mddev any more, so
      unless something is done, it will disappear and gendisk will be
      destroyed prematurely.
      
      Also, once we decide to destroy the mddev, there will be an unlockable
      moment before the gendisk is unlinked (blk_unregister_region) during
      which a new reference to the gendisk can be created.  We need to
      ensure that this reference can not be used.  i.e. the ->open must
      fail.
      
      So:
       1/  in md_probe we set a flag in the mddev (hold_active) which
           indicates that the array should be treated as active, even
           though there are no references, and no appearance of activity.
           This is cleared by md_release when the device is closed if it
           is no longer needed.
           This ensures that the gendisk will survive between md_probe and
           md_open.
      
       2/  In md_open we check if the mddev we expect to open matches
           the gendisk that we did open.
           If there is a mismatch we return -ERESTARTSYS and modify
           __blkdev_get to retry from the top in that case.
           In the -ERESTARTSYS sys case we make sure to wait until
           the old gendisk (that we succeeded in opening) is really gone so
           we loop at most once.
      
      Some udev configurations will always open an md device when it first
      appears.   If we allow an md device that was just created by an open
      to disappear on an immediate close, then this can race with such udev
      configurations and result in an infinite loop the device being opened
      and closed, then re-open due to the 'ADD' even from the first open,
      and then close and so on.
      So we make sure an md device, once created by an open, remains active
      at least until some md 'ioctl' has been made on it.  This means that
      all normal usage of md devices will allow them to disappear promptly
      when not needed, but the worst that an incorrect usage will do it
      cause an inactive md device to be left in existence (it can easily be
      removed).
      
      As an array can be stopped by writing to a sysfs attribute
        echo clear > /sys/block/mdXXX/md/array_state
      we need to use scheduled work for deleting the gendisk and other
      kobjects.  This allows us to wait for any pending gendisk deletion to
      complete by simply calling flush_scheduled_work().
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      d3374825
    • NeilBrown's avatar
      md: centralise all freeing of an 'mddev' in 'md_free' · a21d1504
      NeilBrown authored
      md_free is the .release handler for the md kobj_type.
      So it makes sense to release all the objects referenced by
      the mddev in there, rather than just prior to calling kobject_put
      for what we think is the last time.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      a21d1504
    • NeilBrown's avatar
      md: move allocation of ->queue from mddev_find to md_probe · 8b765398
      NeilBrown authored
      It is more balanced to just do simple initialisation in mddev_find,
      which allocates and links a new md device, and leave all the
      more sophisticated allocation to md_probe (which calls mddev_find).
      md_probe already allocated the gendisk.  It should allocate the
      queue too.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      8b765398
    • Cheng Renquan's avatar
      md: need another print_sb for mdp_superblock_1 · cd2ac932
      Cheng Renquan authored
      md_print_devices is called in two code path: MD_BUG(...), and md_ioctl
      with PRINT_RAID_DEBUG.  it will dump out all in use md devices
      information;
      
      However, it wrongly processed two types of superblock in one:
      
      The header file <linux/raid/md_p.h> has defined two types of superblock,
      struct mdp_superblock_s (typedefed with mdp_super_t) according to md with
      metadata 0.90, and struct mdp_superblock_1 according to md with metadata
      1.0 and later,
      
      These two types of superblock are very different,
      
      The md_print_devices code processed them both in mdp_super_t, that would
      lead to wrong informaton dump like:
      
      	[ 6742.345877]
      	[ 6742.345887] md:	**********************************
      	[ 6742.345890] md:	* <COMPLETE RAID STATE PRINTOUT> *
      	[ 6742.345892] md:	**********************************
      	[ 6742.345896] md1: <ram7><ram6><ram5><ram4>
      	[ 6742.345907] md: rdev ram7, SZ:00065472 F:0 S:1 DN:3
      	[ 6742.345909] md: rdev superblock:
      	[ 6742.345914] md:  SB: (V:0.90.0) ID:<42ef13c7.598c059a.5f9f1645.801e9ee6> CT:4919856d
      	[ 6742.345918] md:     L5 S00065472 ND:4 RD:4 md1 LO:2 CS:65536
      	[ 6742.345922] md:     UT:4919856d ST:1 AD:4 WD:4 FD:0 SD:0 CSUM:b7992907 E:00000001
      	[ 6742.345924]      D  0:  DISK<N:0,(1,8),R:0,S:6>
      	[ 6742.345930]      D  1:  DISK<N:1,(1,10),R:1,S:6>
      	[ 6742.345933]      D  2:  DISK<N:2,(1,12),R:2,S:6>
      	[ 6742.345937]      D  3:  DISK<N:3,(1,14),R:3,S:6>
      	[ 6742.345942] md:     THIS:  DISK<N:3,(1,14),R:3,S:6>
      	...
      	[ 6742.346058] md0: <ram3><ram2><ram1><ram0>
      	[ 6742.346067] md: rdev ram3, SZ:00065472 F:0 S:1 DN:3
      	[ 6742.346070] md: rdev superblock:
      	[ 6742.346073] md:  SB: (V:1.0.0) ID:<369aad81.00000000.00000000.00000000> CT:9a322a9c
      	[ 6742.346077] md:     L-1507699579 S976570180 ND:48 RD:0 md0 LO:65536 CS:196610
      	[ 6742.346081] md:     UT:00000018 ST:0 AD:131048 WD:0 FD:8 SD:0 CSUM:00000000 E:00000000
      	[ 6742.346084]      D  0:  DISK<N:-1,(-1,-1),R:-1,S:-1>
      	[ 6742.346089]      D  1:  DISK<N:-1,(-1,-1),R:-1,S:-1>
      	[ 6742.346092]      D  2:  DISK<N:-1,(-1,-1),R:-1,S:-1>
      	[ 6742.346096]      D  3:  DISK<N:-1,(-1,-1),R:-1,S:-1>
      	[ 6742.346102] md:     THIS:  DISK<N:0,(0,0),R:0,S:0>
      	...
      	[ 6742.346219] md:	**********************************
      	[ 6742.346221]
      
      Here md1 is metadata 0.90.0, and md0 is metadata 1.2
      
      After some more code to distinguish these two types of superblock, in this patch,
      
      it will generate dump information like:
      
      	[ 7906.755790]
      	[ 7906.755799] md:	**********************************
      	[ 7906.755802] md:	* <COMPLETE RAID STATE PRINTOUT> *
      	[ 7906.755804] md:	**********************************
      	[ 7906.755808] md1: <ram7><ram6><ram5><ram4>
      	[ 7906.755819] md: rdev ram7, SZ:00065472 F:0 S:1 DN:3
      	[ 7906.755821] md: rdev superblock (MJ:0):
      	[ 7906.755826] md:  SB: (V:0.90.0) ID:<3fca7a0d.a612bfed.5f9f1645.801e9ee6> CT:491989f3
      	[ 7906.755830] md:     L5 S00065472 ND:4 RD:4 md1 LO:2 CS:65536
      	[ 7906.755834] md:     UT:491989f3 ST:1 AD:4 WD:4 FD:0 SD:0 CSUM:00fb52ad E:00000001
      	[ 7906.755836]      D  0:  DISK<N:0,(1,8),R:0,S:6>
      	[ 7906.755842]      D  1:  DISK<N:1,(1,10),R:1,S:6>
      	[ 7906.755845]      D  2:  DISK<N:2,(1,12),R:2,S:6>
      	[ 7906.755849]      D  3:  DISK<N:3,(1,14),R:3,S:6>
      	[ 7906.755855] md:     THIS:  DISK<N:3,(1,14),R:3,S:6>
      	...
      	[ 7906.755972] md0: <ram3><ram2><ram1><ram0>
      	[ 7906.755981] md: rdev ram3, SZ:00065472 F:0 S:1 DN:3
      	[ 7906.755984] md: rdev superblock (MJ:1):
      	[ 7906.755989] md:  SB: (V:1) (F:0) Array-ID:<5fbcf158:55aa:5fbe:9a79:1e939880dcbd>
      	[ 7906.755990] md:    Name: "DG5:0" CT:1226410480
      	[ 7906.755998] md:       L5 SZ130944 RD:4 LO:2 CS:128 DO:24 DS:131048 SO:8 RO:0
      	[ 7906.755999] md:     Dev:00000003 UUID: 9194d744:87f7:a448:85f2:7497b84ce30a
      	[ 7906.756001] md:       (F:0) UT:1226410480 Events:0 ResyncOffset:-1 CSUM:0dbcd829
      	[ 7906.756003] md:         (MaxDev:384)
      	...
      	[ 7906.756113] md:	**********************************
      	[ 7906.756116]
      
      this md0 (metadata 1.2) information dumping is exactly according to struct
      mdp_superblock_1.
      Signed-off-by: default avatarCheng Renquan <crquan@gmail.com>
      Cc: Neil Brown <neilb@suse.de>
      Cc: Dan Williams <dan.j.williams@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      cd2ac932
    • Cheng Renquan's avatar
      md: use list_for_each_entry macro directly · 159ec1fc
      Cheng Renquan authored
      The rdev_for_each macro defined in <linux/raid/md_k.h> is identical to
      list_for_each_entry_safe, from <linux/list.h>, it should be defined to
      use list_for_each_entry_safe, instead of reinventing the wheel.
      
      But some calls to each_entry_safe don't really need a safe version,
      just a direct list_for_each_entry is enough, this could save a temp
      variable (tmp) in every function that used rdev_for_each.
      
      In this patch, most rdev_for_each loops are replaced by list_for_each_entry,
      totally save many tmp vars; and only in the other situations that will call
      list_del to delete an entry, the safe version is used.
      Signed-off-by: default avatarCheng Renquan <crquan@gmail.com>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      159ec1fc
    • Andre Noll's avatar
      md: raid0: make hash_spacing and preshift sector-based. · ccacc7d2
      Andre Noll authored
      This patch renames the hash_spacing and preshift members of struct
      raid0_private_data to spacing and sector_shift respectively and
      changes the semantics as follows:
      
      We always have spacing = 2 * hash_spacing. In case
      sizeof(sector_t) > sizeof(u32) we also have sector_shift = preshift + 1
      while sector_shift = preshift = 0 otherwise.
      
      Note that the values of nb_zone and zone are unaffected by these changes
      because in the sector_div() preceeding the assignement of these two
      variables both arguments double.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      ccacc7d2
    • Andre Noll's avatar
      md: raid0: Represent the size of strip zones in sectors. · 83838ed8
      Andre Noll authored
      This completes the block -> sector conversion of struct strip_zone.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      83838ed8
    • Andre Noll's avatar
      md: raid0 create_strip_zones(): Add KERN_INFO/KERN_ERR to printk's. · 0825b87a
      Andre Noll authored
      This patch consists only of these trivial changes.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      0825b87a
    • Andre Noll's avatar
      md: raid0 create_strip_zones(): Make two local variables sector-based. · 6b8796cc
      Andre Noll authored
      current_offset and curr_zone_offset stored the corresponding offsets
      as 1K quantities. Rename them to current_start and curr_zone_start
      to match the naming of struct strip_zone and store the offsets as
      sector counts.
      
      Also, add KERN_INFO to the printk() affected by this change to make
      checkpatch happy.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      6b8796cc
    • Andre Noll's avatar
      md: raid0: Represent zone->zone_offset in sectors. · 6199d3db
      Andre Noll authored
      For the same reason as in the previous patch, rename it from zone_offset
      to zone_start.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      6199d3db
    • Andre Noll's avatar
      md: raid0: Represent device offset in sectors. · 019c4e2f
      Andre Noll authored
      Rename zone->dev_offset to zone->dev_start to make sure all users
      have been converted.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      019c4e2f
    • Andre Noll's avatar
      md: raid0_make_request(): Replace local variable block by sector. · e0f06868
      Andre Noll authored
      This change already simplifies the code a bit.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      e0f06868
    • Andre Noll's avatar
      md: raid0_make_request(): Remove local variable chunk_size. · a4712005
      Andre Noll authored
      We might as well use chunk_sects instead.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      a4712005
    • Andre Noll's avatar
      md: raid0_make_request(): Replace chunksize_bits by chunksect_bits. · 1b7fdf8f
      Andre Noll authored
      As ffz(~(2 * x)) = ffz(~x) + 1, we have
      
      	chunksect_bits = chunksize_bits + 1.
      
      Fixup all users accordingly.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      1b7fdf8f
    • NeilBrown's avatar
      md: use sysfs_notify_dirent to notify changes to md/sync_action. · 0c3573f1
      NeilBrown authored
      There is no compelling need for this, but sysfs_notify_dirent is a
      nicer interface and the change is good for consistency.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      0c3573f1
    • NeilBrown's avatar
      md: fix bitmap-on-external-file bug. · 53845270
      NeilBrown authored
      commit a2ed9615
      fixed a bug with 'internal' bitmaps, but in the process broke
      'in a file' bitmaps.  So they are broken in 2.6.28
      
      This fixes it, and needs to go in 2.6.28-stable.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Cc: stable@kernel.org
      53845270
    • Tejun Heo's avatar
      pata_hpt366: reimplement mode programming · 6ecb6f25
      Tejun Heo authored
      Reimplement mode programming logic of pata_hpt366 such that it's
      identical to that of IDE hpt366 driver.  The differences were...
      
      * pata_hpt366 used 0xCFFF8FFFF to mask pio modes and 0x3FFFFFFF dma
        modes.  IDE hpt366 uses 0xC1F8FFFF for PIO, 0x303800FF for MWDMA and
        0x30070000 for UDMA.
      
      * pata_hpt366 doesn't set 0x08000000 for PIO unless it's already set
        and always turns it on for MWDMA/UDMA.  IDE hpt366 doesn't bother
        with the bit.  It always uses what was there.
      
      * IDE hpt366 always clears 0xC0000000.  pata_hpt366 doesn't.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      6ecb6f25
    • Jeff Garzik's avatar
    • David Daney's avatar
      libata: Add special ata_pio_need_iordy() handling for Compact Flash. · 5c18c4d2
      David Daney authored
      According to the Compact Flash specification r4.1, PIO modes 5 and 6
      do not use iordy.
      Signed-off-by: default avatarDavid Daney <ddaney@caviumnetworks.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      5c18c4d2
    • Sonic Zhang's avatar
      pata_platform: __pata_platform_remove() shouldn't be in discard section · 78a7ba47
      Sonic Zhang authored
      --
        UPD     include/linux/compile.h
      `___pata_platform_remove' referenced in section `__ksymtab_gpl' of
      drivers/built-in.o: defined in discarded section `.devexit.text' of
      drivers/built-in.o
      make: *** [.tmp_vmlinux1] Error 1
      --
      
      __pata_platform_remove() should not be in discarded section
      __pata_platform_remove(struct device *dev) is invoked in both
      pata_platform.c and pata_of_platform.c by reomve function defined in
      discarded section ".devexit.text". An exported function should not be put
      into discarded section.
      Signed-off-by: default avatarSonic Zhang <sonic.zhang@analog.com>
      Signed-off-by: default avatarBryan Wu <cooloney@kernel.org>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      78a7ba47
    • Grant Grundler's avatar
      sata_sil24: remove unused sil24_port_multiplier · 1564a187
      Grant Grundler authored
      AFAICT, struct sil24_port_multiplier isn't used anywhere. Remove it.
      Signed-off-by: default avatarGrant Grundler <grundler@google.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      1564a187
    • Shane Huang's avatar
      [libata] ahci: Add SATA GEN3 related messages · 8522ee25
      Shane Huang authored
      The present AHCI driver seems to support SATA GEN 3 speed, but the related
      messages should be modified.
      Signed-off-by: default avatarShane Huang <shane.huang@amd.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      8522ee25
    • Tejun Heo's avatar
      ata_piix: save, use saved and restore IOCFG · 2852bcf7
      Tejun Heo authored
      Certain ACPI implementations mess up IOCFG on _STM making libata
      detect cable type incorrectly after a suspend/resume cycle.  This
      patch makes ata_piix save IOCFG on attach, use the saved value for
      things which aren't dynamic and restore it on detach so that the next
      driver also gets the BIOS initialized value.
      
      This patch contains the following changes.
      
      * makes ich_pata_cable_detect() use saved_iocfg.
      
      * make piix_iocfg_bit18_quirk() take @host and use saved_iocfg.
      
      * hpriv allocation moved upwards to save iocfg before doing anything
        else.
      
      This fixes bz#11879.  Andreas Mohr reported and diagnosed the problem.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Andreas Mohr <andi@lisas.de>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      2852bcf7
    • Alan Cox's avatar
      pata_ali: Fix and workaround for FIFO DMA bug · fc80902f
      Alan Cox authored
      In very obscure cases this can cause problems. We need to help the hardware
      out a bit to avoid DMA problems on a reset.
      Signed-off-by: default avatarAlan Cox <alan@redhat.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      fc80902f
    • Alan Cox's avatar
      pata_ali: force initialise a few bits · 1b2c357c
      Alan Cox authored
      We can't assume some of the setup here on non x86 boxes.
      Signed-off-by: default avatarAlan Cox <alan@redhat.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      1b2c357c
    • Alan Cox's avatar
      pata_hpt3x3: Workarounds for chipset · 978ff6db
      Alan Cox authored
      Correct the DMA bit flags (UDMA and MWDMA were swapped)
      Add workarounds so that we clear ERR and INTR bits before issuing a DMA
      Add workarounds so that we stop a live DMA before touching the CTL register
      Signed-off-by: default avatarAlan Cox <alan@redhat.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      978ff6db
    • Arjan van de Ven's avatar
      async: make async_synchronize_full() more serializing · 33b04b93
      Arjan van de Ven authored
      turns out that there are real problems with allowing async
      tasks that are scheduled from async tasks to run after
      the async_synchronize_full() returns.
      
      This patch makes the _full more strict and a complete
      synchronization. Later I might need to add back a lighter
      form of synchronization for other uses.. but not right now.
      Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      33b04b93
    • Linus Torvalds's avatar
      Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc · 85da1fb5
      Linus Torvalds authored
      * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (53 commits)
        serial: Add driver for the Cell Network Processor serial port NWP device
        powerpc: enable dynamic ftrace
        powerpc/cell: Fix the prototype of create_vma_map()
        powerpc/mm: Make clear_fixmap() actually work
        powerpc/kdump: Use ppc_save_regs() in crash_setup_regs()
        powerpc: Export cacheable_memzero as its now used in a driver
        powerpc: Fix missing semicolons in mmu_decl.h
        powerpc/pasemi: local_irq_save uses an unsigned long
        powerpc/cell: Fix some u64 vs. long types
        powerpc/cell: Use correct types in beat files
        powerpc: Use correct type in prom_init.c
        powerpc: Remove unnecessary casts
        mtd/ps3vram: Use _PAGE_NO_CACHE in memory ioremap
        mtd/ps3vram: Use msleep in waits
        mtd/ps3vram: Use proper kernel types
        mtd/ps3vram: Cleanup ps3vram driver messages
        mtd/ps3vram: Remove ps3vram debug routines
        mtd/ps3vram: Add modalias support to the ps3vram driver
        mtd/ps3vram: Add ps3vram driver for accessing video RAM as MTD
        powerpc: Fix iseries drivers build failure without CONFIG_VIOPATH
        ...
      85da1fb5
    • Coly Li's avatar
      fix similar typos to successfull · 73ac36ea
      Coly Li authored
      When I review ocfs2 code, find there are 2 typos to "successfull".  After
      doing grep "successfull " in kernel tree, 22 typos found totally -- great
      minds always think alike :)
      
      This patch fixes all the similar typos. Thanks for Randy's ack and comments.
      Signed-off-by: default avatarColy Li <coyli@suse.de>
      Acked-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Acked-by: default avatarRoland Dreier <rolandd@cisco.com>
      Cc: Jeremy Kerr <jk@ozlabs.org>
      Cc: Jeff Garzik <jeff@garzik.org>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Theodore Ts'o <tytso@mit.edu>
      Cc: Mark Fasheh <mfasheh@suse.com>
      Cc: Vlad Yasevich <vladislav.yasevich@hp.com>
      Cc: Sridhar Samudrala <sri@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      73ac36ea
    • Roel Kluin's avatar
      Make various things static · da2bdf9a
      Roel Kluin authored
      Building an allnoconfig kernel, sparse asked whether these could be
      static, so I checked, and they are only used in the file where they are
      declared.
      Signed-off-by: default avatarRoel Kluin <roel.kluin@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      da2bdf9a
    • Wu Fengguang's avatar
      generic swap(): dcache: use swap() instead of private do_switch() · 9a8d5bb4
      Wu Fengguang authored
      Use the new generic implementation.
      Signed-off-by: default avatarWu Fengguang <fengguang.wu@intel.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9a8d5bb4
    • Wu Fengguang's avatar
      generic swap(): sched: remove local swap() macro · df4927bf
      Wu Fengguang authored
      Use the new generic implementation.
      Signed-off-by: default avatarWu Fengguang <wfg@linux.intel.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      df4927bf
    • Wu Fengguang's avatar
      generic swap(): ext4: remove local swap() macro · 97e133b4
      Wu Fengguang authored
      Use the new generic implementation.
      Signed-off-by: default avatarWu Fengguang <fengguang.wu@intel.com>
      Cc: Theodore Ts'o <tytso@mit.edu>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      97e133b4