1. 12 5月, 2010 17 次提交
    • H
      PCI: aerdrv: introduce is_error_source · c887275e
      Hidetoshi Seto 提交于
      Take core part of find_device_iter() to make a new function
      is_error_source() that checks given device has report an error
      or not.
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Reviewed-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      c887275e
    • H
      PCI: aerdrv: rework find_source_device · 98ca3964
      Hidetoshi Seto 提交于
      Return bool to indicate that the source device is found or not.
      This allows us to skip calling aer_process_err_devices() if we can.
      
      And move dev_printk for debug into this function.
      
      v2: return bool instead of int
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Reviewed-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      98ca3964
    • H
      PCI: aerdrv: make aer_{en,dis}able_rootport static · 843f4697
      Hidetoshi Seto 提交于
      These functions are only called from init/remove path of aerdrv,
      so move them from aerdrv_core.c to aerdrv.c, to make them static.
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Reviewed-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      843f4697
    • H
      PCI: aerdrv: cleanup inconsistent functions · 460d298d
      Hidetoshi Seto 提交于
      This cleanup solves some minor naming issues by removing unuseful
      function aer_delete_rootport() and by renaming disable_root_aer()
      to aer_disable_rootport().
      
      - Inconsistent location of alloc & free:
         The struct rpc is allocated in aer_alloc_rpc() at aerdrv.c
         while it is implicitly freed in aer_delete_rootport() at
         aerdrv_core.c.
      
      - Inconsistent function name:
         It makes a bit confusion that aer_delete_rootport() is seemed
         to be paired with aer_enable_rootport(), i.e. there is neither
         "add" against "delete" nor "disable" against "enable".
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Reviewed-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      460d298d
    • H
      PCI: aerdrv: RsvdP of PCI_ERR_ROOT_COMMAND · c6d34edd
      Hidetoshi Seto 提交于
      Handle preserved bits properly.
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Reviewed-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      c6d34edd
    • H
    • M
      PCI: return correct value when writing to the "reset" attribute · 447c5dd7
      Michal Schmidt 提交于
      A successful write() to the "reset" sysfs attribute should return the
      number of bytes written, not 0. Otherwise userspace (bash) retries the
      write over and over again.
      Acked-by: NMichael S. Tsirkin <mst@redhat.com>
      Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: NMichal Schmidt <mschmidt@redhat.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      447c5dd7
    • J
      PCI: change PCI_MSI help text to recommend enabling · 3196180a
      Jesse Barnes 提交于
      Most current machines have no problem with this, and in fact many devices and
      features work best (or only!) with MSI.
      Reported-by: NPetteri Räty <betelgeuse@gentoo.org>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      3196180a
    • A
      resource: shared I/O region support · 8b6d043b
      Alan Cox 提交于
      SuperIO devices share regions and use lock/unlock operations to chip
      select.  We therefore need to be able to request a resource and wait for
      it to be freed by whichever other SuperIO device currently hogs it.
      Right now you have to poll which is horrible.
      
      Add a MUXED field to IO port resources. If the MUXED field is set on the
      resource and on the request (via request_muxed_region) then we block
      until the previous owner of the muxed resource releases their region.
      
      This allows us to implement proper resource sharing and locking for
      superio chips using code of the form
      
      enable_my_superio_dev() {
      	request_muxed_region(0x44, 0x02, "superio:watchdog");
      	outb() ..sequence to enable chip
      }
      
      disable_my_superio_dev() {
      	outb() .. sequence of disable chip
      	release_region(0x44, 0x02);
      }
      Signed-off-by: NGiel van Schijndel <me@mortis.eu>
      Signed-off-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      8b6d043b
    • T
      x86/PCI: Convert pci_config_lock to raw_spinlock · d19f61f0
      Thomas Gleixner 提交于
      pci_config_lock must be a real spinlock in preempt-rt. Convert it to
      raw_spinlock. No change for !RT kernels.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      d19f61f0
    • T
      PCI: Convert pci_lock to raw_spinlock · 511dd98c
      Thomas Gleixner 提交于
      pci_lock must be a real spinlock in preempt-rt. Convert it to
      raw_spinlock. No change for !RT kernels.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      511dd98c
    • A
      PCI: clearing wakeup flags not needed · 52b265a1
      Alan Stern 提交于
      This patch (as1353) removes a couple of unnecessary assignments from
      the PCI core.  The should_wakeup flag is naturally initialized to 0;
      there's no need to clear it.
      Acked-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      52b265a1
    • A
      PCI: create function symlinks in /sys/bus/pci/slots/N/ · 75568f80
      Alex Chiang 提交于
      Create convenience symlinks in sysfs, linking slots to device
      functions, and vice versa. These links make it easier for users to
      figure out which devices actually live in what slots.
      
      For example:
      
      sapphire:/sys/bus/pci/slots # ls
      1  10  2  3  4  5  6  7  8  9
      
      sapphire:/sys/bus/pci/slots # ls -l 3
      total 0
      -r--r--r-- 1 root root 65536 Aug 18 14:10 address
      lrwxrwxrwx 1 root root     0 Aug 18 14:10 function0 ->
      ../../../../devices/pci0000:23/0000:23:01.0
      lrwxrwxrwx 1 root root     0 Aug 18 14:10 function1 ->
      ../../../../devices/pci0000:23/0000:23:01.1
      
      sapphire:/sys/bus/pci/slots # ls -l 3/function0/slot
      lrwxrwxrwx 1 root root 0 Aug 18 14:13 3/function0/slot ->
      ../../../bus/pci/slots/3
      
      The original form of this patch was written by Matthew Wilcox,
      and was enhanced to include links from the sysfs slots/ directory
      pointing back at the device functions.
      
      Cc: willy@linux.intel.com
      Signed-off-by: NAlex Chiang <achiang@hp.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      75568f80
    • L
      Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 · fc2a093e
      Linus Torvalds 提交于
      * 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
        drm/radeon: Fix 3 regressions - since buffer rework
      fc2a093e
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 · 9fc282ba
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
        net: Fix FDDI and TR config checks in ipv4 arp and LLC.
        IPv4: unresolved multicast route cleanup
        mac80211: remove association work when processing deauth request
        ar9170: wait for asynchronous firmware loading
        ipv4: udp: fix short packet and bad checksum logging
        phy: Fix initialization in micrel driver.
        sctp: Fix a race between ICMP protocol unreachable and connect()
        veth: Dont kfree_skb() after dev_forward_skb()
        IPv6: fix IPV6_RECVERR handling of locally-generated errors
        net/gianfar: drop recycled skbs on MTU change
        iwlwifi: work around passive scan issue
      9fc282ba
    • D
      CacheFiles: Fix occasional EIO on call to vfs_unlink() · c61ea31d
      David Howells 提交于
      Fix an occasional EIO returned by a call to vfs_unlink():
      
      	[ 4868.465413] CacheFiles: I/O Error: Unlink failed
      	[ 4868.465444] FS-Cache: Cache cachefiles stopped due to I/O error
      	[ 4947.320011] CacheFiles: File cache on md3 unregistering
      	[ 4947.320041] FS-Cache: Withdrawing cache "mycache"
      	[ 5127.348683] FS-Cache: Cache "mycache" added (type cachefiles)
      	[ 5127.348716] CacheFiles: File cache on md3 registered
      	[ 7076.871081] CacheFiles: I/O Error: Unlink failed
      	[ 7076.871130] FS-Cache: Cache cachefiles stopped due to I/O error
      	[ 7116.780891] CacheFiles: File cache on md3 unregistering
      	[ 7116.780937] FS-Cache: Withdrawing cache "mycache"
      	[ 7296.813394] FS-Cache: Cache "mycache" added (type cachefiles)
      	[ 7296.813432] CacheFiles: File cache on md3 registered
      
      What happens is this:
      
       (1) A cached NFS file is seen to have become out of date, so NFS retires the
           object and immediately acquires a new object with the same key.
      
       (2) Retirement of the old object is done asynchronously - so the lookup/create
           to generate the new object may be done first.
      
           This can be a problem as the old object and the new object must exist at
           the same point in the backing filesystem (i.e. they must have the same
           pathname).
      
       (3) The lookup for the new object sees that a backing file already exists,
           checks to see whether it is valid and sees that it isn't.  It then deletes
           that file and creates a new one on disk.
      
       (4) The retirement phase for the old file is then performed.  It tries to
           delete the dentry it has, but ext4_unlink() returns -EIO because the inode
           attached to that dentry no longer matches the inode number associated with
           the filename in the parent directory.
      
      The trace below shows this quite well.
      
      	[md5sum] ==> __fscache_relinquish_cookie(ffff88002d12fb58{NFS.fh,ffff88002ce62100},1)
      	[md5sum] ==> __fscache_acquire_cookie({NFS.server},{NFS.fh},ffff88002ce62100)
      
      NFS has retired the old cookie and asked for a new one.
      
      	[kslowd] ==> fscache_object_state_machine({OBJ52,OBJECT_ACTIVE,24})
      	[kslowd] <== fscache_object_state_machine() [->OBJECT_DYING]
      	[kslowd] ==> fscache_object_state_machine({OBJ53,OBJECT_INIT,0})
      	[kslowd] <== fscache_object_state_machine() [->OBJECT_LOOKING_UP]
      	[kslowd] ==> fscache_object_state_machine({OBJ52,OBJECT_DYING,24})
      	[kslowd] <== fscache_object_state_machine() [->OBJECT_RECYCLING]
      
      The old object (OBJ52) is going through the terminal states to get rid of it,
      whilst the new object - (OBJ53) - is coming into being.
      
      	[kslowd] ==> fscache_object_state_machine({OBJ53,OBJECT_LOOKING_UP,0})
      	[kslowd] ==> cachefiles_walk_to_object({ffff88003029d8b8},OBJ53,@68,)
      	[kslowd] lookup '@68'
      	[kslowd] next -> ffff88002ce41bd0 positive
      	[kslowd] advance
      	[kslowd] lookup 'Es0g00og0_Nd_XCYe3BOzvXrsBLMlN6aw16M1htaA'
      	[kslowd] next -> ffff8800369faac8 positive
      
      The new object has looked up the subdir in which the file would be in (getting
      dentry ffff88002ce41bd0) and then looked up the file itself (getting dentry
      ffff8800369faac8).
      
      	[kslowd] validate 'Es0g00og0_Nd_XCYe3BOzvXrsBLMlN6aw16M1htaA'
      	[kslowd] ==> cachefiles_bury_object(,'@68','Es0g00og0_Nd_XCYe3BOzvXrsBLMlN6aw16M1htaA')
      	[kslowd] remove ffff8800369faac8 from ffff88002ce41bd0
      	[kslowd] unlink stale object
      	[kslowd] <== cachefiles_bury_object() = 0
      
      It then checks the file's xattrs to see if it's valid.  NFS says that the
      auxiliary data indicate the file is out of date (obvious to us - that's why NFS
      ditched the old version and got a new one).  CacheFiles then deletes the old
      file (dentry ffff8800369faac8).
      
      	[kslowd] redo lookup
      	[kslowd] lookup 'Es0g00og0_Nd_XCYe3BOzvXrsBLMlN6aw16M1htaA'
      	[kslowd] next -> ffff88002cd94288 negative
      	[kslowd] create -> ffff88002cd94288{ffff88002cdaf238{ino=148247}}
      
      CacheFiles then redoes the lookup and gets a negative result in a new dentry
      (ffff88002cd94288) which it then creates a file for.
      
      	[kslowd] ==> cachefiles_mark_object_active(,OBJ53)
      	[kslowd] <== cachefiles_mark_object_active() = 0
      	[kslowd] === OBTAINED_OBJECT ===
      	[kslowd] <== cachefiles_walk_to_object() = 0 [148247]
      	[kslowd] <== fscache_object_state_machine() [->OBJECT_AVAILABLE]
      
      The new object is then marked active and the state machine moves to the
      available state - at which point NFS can start filling the object.
      
      	[kslowd] ==> fscache_object_state_machine({OBJ52,OBJECT_RECYCLING,20})
      	[kslowd] ==> fscache_release_object()
      	[kslowd] ==> cachefiles_drop_object({OBJ52,2})
      	[kslowd] ==> cachefiles_delete_object(,OBJ52{ffff8800369faac8})
      
      The old object, meanwhile, goes on with being retired.  If allocation occurs
      first, cachefiles_delete_object() has to wait for dir->d_inode->i_mutex to
      become available before it can continue.
      
      	[kslowd] ==> cachefiles_bury_object(,'@68','Es0g00og0_Nd_XCYe3BOzvXrsBLMlN6aw16M1htaA')
      	[kslowd] remove ffff8800369faac8 from ffff88002ce41bd0
      	[kslowd] unlink stale object
      	EXT4-fs warning (device sda6): ext4_unlink: Inode number mismatch in unlink (148247!=148193)
      	CacheFiles: I/O Error: Unlink failed
      	FS-Cache: Cache cachefiles stopped due to I/O error
      
      CacheFiles then tries to delete the file for the old object, but the dentry it
      has (ffff8800369faac8) no longer points to a valid inode for that directory
      entry, and so ext4_unlink() returns -EIO when de->inode does not match i_ino.
      
      	[kslowd] <== cachefiles_bury_object() = -5
      	[kslowd] <== cachefiles_delete_object() = -5
      	[kslowd] <== fscache_object_state_machine() [->OBJECT_DEAD]
      	[kslowd] ==> fscache_object_state_machine({OBJ53,OBJECT_AVAILABLE,0})
      	[kslowd] <== fscache_object_state_machine() [->OBJECT_ACTIVE]
      
      (Note that the above trace includes extra information beyond that produced by
      the upstream code).
      
      The fix is to note when an object that is being retired has had its object
      deleted preemptively by a replacement object that is being created, and to
      skip the second removal attempt in such a case.
      Reported-by: NGreg M <gregm@servu.net.au>
      Reported-by: NMark Moseley <moseleymark@gmail.com>
      Reported-by: NRomain DEGEZ <romain.degez@smartjog.com>
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      c61ea31d
    • A
      ACPI: sleep: eliminate duplicate entries in acpisleep_dmi_table[] · 7d6fb7bd
      Alex Chiang 提交于
      Duplicate entries ended up acpisleep_dmi_table[] by accident.
      They don't hurt functionality, but they are ugly, so let's get
      rid of them.
      
      Cc: stable@kernel.org
      Signed-off-by: NAlex Chiang <achiang@canonical.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      7d6fb7bd
  2. 11 5月, 2010 5 次提交
  3. 10 5月, 2010 7 次提交
  4. 08 5月, 2010 11 次提交