1. 04 11月, 2008 4 次提交
    • E
      libata: Fix a potential race condition in ata_scsi_park_show() · a464189d
      Elias Oltmanns 提交于
      Peter Moulder has pointed out that there is a slight chance that a
      negative value might be passed to jiffies_to_msecs() in
      ata_scsi_park_show(). This is fixed by saving the value of jiffies in a
      local variable, thus also reducing code since the volatile variable
      jiffies is accessed only once.
      Signed-off-by: NElias Oltmanns <eo@nebensachen.de>
      Signed-off-by: Tejun Heo <tj.kernel.org>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      a464189d
    • T
      sata_nv: fix generic, nf2/3 detection regression · 3c324283
      Tejun Heo 提交于
      All three flavors of sata_nv's are different in how their hardreset
      behaves.
      
      * generic: Hardreset is not reliable.  Link often doesn't come online
        after hardreset.
      
      * nf2/3: A little bit better - link comes online with longer debounce
        timing.  However, nf2/3 can't reliable wait for the first D2H
        Register FIS, so it can't wait for device readiness or classify the
        device after hardreset.  Follow-up SRST required.
      
      * ck804: Hardreset finally works.
      
      The core layer change to prefer hardreset and follow up changes
      exposed the above issues and caused various detection regressions for
      all three flavors.  This patch, hopefully, fixes all the known issues
      and should make sata_nv error handling more reliable.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      3c324283
    • M
      sata_via: restore vt*_prepare_host error handling · 554d491d
      Marcin Slusarz 提交于
      commit b9d5b89b (sata_via: fix support
      for 5287) accidently (?) removed vt*_prepare_host error handling - restore it
      
      catched by gcc:
      drivers/ata/sata_via.c: In function 'svia_init_one':
      drivers/ata/sata_via.c:567: warning: 'host' may be used uninitialized in this function
      Signed-off-by: NMarcin Slusarz <marcin.slusarz@gmail.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Joseph Chan <JosephChan@via.com.tw>
      Cc: Jeff Garzik <jgarzik@redhat.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      554d491d
    • M
      sata_promise: add ATA engine reset to reset ops · cadef677
      Mikael Pettersson 提交于
      Promise ATA engines need to be reset when errors occur.
      That's currently done for errors detected by sata_promise itself,
      but it's not done for errors like timeouts detected outside of
      the low-level driver.
      
      The effect of this omission is that a timeout tends to result
      in a sequence of failed COMRESETs after which libata EH gives
      up and disables the port. At that point the port's ATA engine
      hangs and even reloading the driver will not resume it.
      
      To fix this, make sata_promise override ->hardreset on SATA
      ports with code which calls pdc_reset_port() on the port in
      question before calling libata's hardreset. PATA ports don't
      use ->hardreset, so for those we override ->softreset instead.
      Signed-off-by: NMikael Pettersson <mikpe@it.uu.se>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      cadef677
  2. 03 11月, 2008 7 次提交
  3. 02 11月, 2008 6 次提交
  4. 31 10月, 2008 23 次提交
    • K
      i915: use io-mapping interfaces instead of a variety of mapping kludges · 0839ccb8
      Keith Packard 提交于
      Impact: optimize/clean-up the IO mapping implementation of the i915 DRM driver
      
      Switch the i915 device aperture mapping to the io-mapping interface, taking
      advantage of the cleaner API to extend it across all of the mapping uses,
      including both pwrite and relocation updates.
      
      This dramatically improves performance on 64-bit kernels which were using
      the same slow path as 32-bit non-HIGHMEM kernels prior to this patch.
      Signed-off-by: NKeith Packard <keithp@keithp.com>
      Signed-off-by: NEric Anholt <eric@anholt.net>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      0839ccb8
    • I
      bpa10x: free sk_buff with kfree_skb · cbafe312
      Ilpo Järvinen 提交于
      Inspired by Sergio Luis' similar patches, I finally found
      a case which is trivial enough that spatch won't choke
      on it.
      Signed-off-by: NIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
      Acked-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cbafe312
    • M
      sh: Fix up the shared IRQ demuxer's control bit testing logic. · a8884e34
      Michael Trimarchi 提交于
      Correct the interrupt handler in sh4 serial device, return the correct
      value and check for what is anabled in the SCSCR register. The sh7722 is
      broken just sending a break using minicom.
      Signed-off-by: NMichael Trimarchi <trimarchimichael@yahoo.it>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      a8884e34
    • M
      Define SCSPTR1 for SH 7751R · 7abc404a
      Matt Fleming 提交于
      After the recent commit to kill off SCI/SCIF special casing SH 7751R
      fails to compile with CONFIG_SH_RTS7751R2D set. This is because SCSPTR1
      is undefined. Take the value for SCSPTR1 from the SH7751R Group Hardware
      Manual.
      Signed-off-by: NMatt Fleming <mjf@gentoo.org>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      7abc404a
    • N
      sh: Add sci_rxd_in of SH4-202 · 961e9ff9
      Nobuhiro Iwamatsu 提交于
      SH4-202 doesn't have SCSXX1. But it is treated so that there is SCSPTR1 in
      current code. This patch add sci_rxd_in of SH4-202.
      Signed-off-by: NNobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      961e9ff9
    • N
      sh: Change register name SCSPTR to SCSPTR2 · aeffd54a
      Nobuhiro Iwamatsu 提交于
      This change a name of SCSPTR used in sci_rxd_in of SH5-101.
      SCSPTR is not declared and will become the error.
      Signed-off-by: NNobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      aeffd54a
    • D
      net: Really remove all of LOOPBACK_TSO code. · 3a8af722
      David S. Miller 提交于
      As noticed by Saikiran Madugula, commit 7447ef63
      ("loopback: Remove rest of LOOPBACK_TSO code.") got rid of
      emulate_large_send_offload() but didn't get rid of the call
      site as well.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3a8af722
    • R
      net: delete excess kernel-doc notation · ad1d967c
      Randy Dunlap 提交于
      Remove excess kernel-doc function parameters from networking header
      & driver files:
      
      Warning(include/net/sock.h:946): Excess function parameter or struct member 'sk' description in 'sk_filter_release'
      Warning(include/linux/netdevice.h:1545): Excess function parameter or struct member 'cpu' description in 'netif_tx_lock'
      Warning(drivers/net/wan/z85230.c:712): Excess function parameter or struct member 'regs' description in 'z8530_interrupt'
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ad1d967c
    • D
      pppoe: Fix socket leak. · 263e69cb
      David S. Miller 提交于
      Move SKB trim before we lookup the socket so we don't have to
      put it on failure.
      
      Based upon an initial patch by Jarek Poplawski and suggestions
      from Herbert Xu.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      263e69cb
    • J
      libata: add whitelist for devices with known good pata-sata bridges · 9ce8e307
      Jens Axboe 提交于
      libata currently imposes a UDMA5 max transfer rate and 200 sector max
      transfer size for SATA devices that sit behind a pata-sata bridge. Lots
      of devices have known good bridges that don't need this limit applied.
      The MTRON SSD disks are such devices. Transfer rates are increased by
      20-30% with the restriction removed.
      
      So add a "blacklist" entry for the MTRON devices, with a flag indicating
      that the bridge is known good.
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      9ce8e307
    • T
      sata_via: fix support for 5287 · b9d5b89b
      Tejun Heo 提交于
      5287 used to be treated as vt6420 but it didn't work.  It's new family
      of controllers called vt8251 which hosts four SATA ports as M/S of the
      two ATA ports.  This configuration is rather peculiar in that although
      the M/S devices are on the same port, each have its own SCR (or
      equivalent link status/control) registers which screws up the
      port-link-device hierarchy assumed by libata.  Another controller
      which falls into this category is ata_piix w/ SIDPR access.
      
      libata now has facility to deal with this class of controllers named
      slave_link.  A low level driver for such controllers can just call
      ata_slave_link_init() on the respective ports and libata will handle
      all the difficult parts like following up with single SRST after
      hardresetting both ports.
      
      This patch creates new controller class vt8251, implements slave_link
      aware init sequence and config space based SCR access for it and moves
      5287 to the new class.
      
      This patch is based on Joseph Chan's larger patch which was created
      before slave_link was implemented in libata.
      
        http://thread.gmane.org/gmane.linux.kernel.commits.mm/40640Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Joseph Chan <JosephChan@via.com.tw>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      b9d5b89b
    • R
      libata: Avoid overflow in ata_tf_to_lba48() when tf->hba_lbal > 127 · ba14a9c2
      Roland Dreier 提交于
      In ata_tf_to_lba48(), when evaluating
      
      	(tf->hob_lbal & 0xff) << 24
      
      the expression is promoted to signed int (since int can hold all values
      of u8).  However, if hob_lbal is 128 or more, then it is treated as a
      negative signed value and sign-extended when promoted to u64 to | into
      sectors, which leads to the MSB 32 bits of section getting set
      incorrectly.
      
      For example, Phillip O'Donnell <phillip.odonnell@gmail.com> reported
      that a 1.5GB drive caused:
      
          ata3.00: HPA detected: current 2930277168, native 18446744072344861488
      
      where 2930277168 == 0xAEA87B30 and 18446744072344861488 == 0xffffffffaea87b30
      which shows the problem when hob_lbal is 0xae.
      
      Fix this by adding a cast to u64, just as is used by for hob_lbah and
      hob_lbam in the function.
      Reported-by: NPhillip O'Donnell <phillip.odonnell@gmail.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      ba14a9c2
    • R
      ATA: remove excess kernel-doc notation · 5b97fbd0
      Randy Dunlap 提交于
      Remove excess kernel-doc function parameter notation from drivers/ata/:
      
      Warning(drivers/ata/libata-core.c:1622): Excess function parameter or struct member 'fn' description in 'ata_pio_queue_task'
      Warning(drivers/ata/libata-core.c:4655): Excess function parameter or struct member 'err_mask' description in 'ata_qc_complete'
      Warning(drivers/ata/ata_piix.c:751): Excess function parameter or struct member 'udma' description in 'do_pata_set_dmamode'
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      5b97fbd0
    • J
      OF-device: Don't overwrite numa_node in device registration · 6098e2ee
      Jeremy Kerr 提交于
      Currently, the numa_node of OF-devices will be overwritten during
      device_register, which simply sets the node to -1.  On cell machines,
      this means that devices can't find their IOMMU, which is referenced
      through the device's numa node.
      
      Set the numa node for OF devices with no parent, and use the
      lower-level device_initialize and device_add functions, so that the
      node is preserved.
      
      We can remove the call to set_dev_node in of_device_alloc, as it
      will be overwritten during register.
      Signed-off-by: NJeremy Kerr <jk@ozlabs.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      6098e2ee
    • T
      gianfar: Don't reset TBI<->SerDes link if it's already up · bdb59f94
      Trent Piepho 提交于
      The link may be up already via the chip's reset strapping, or though action
      of U-Boot, or from the last time the interface was brought up.  Resetting
      the link causes it to go down for several seconds.  This can significantly
      increase the time from power-on to DHCP completion and a device being
      accessible to the network.
      Signed-off-by: NTrent Piepho <tpiepho@freescale.com>
      Acked-by: NAndy Fleming <afleming@freescale.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      bdb59f94
    • T
      gianfar: Fix race in TBI/SerDes configuration · c132419e
      Trent Piepho 提交于
      The init_phy() function attaches to the PHY, then configures the
      SerDes<->TBI link (in SGMII mode).  The TBI is on the MDIO bus with the PHY
      (sort of) and is accessed via the gianfar's MDIO registers, using the
      functions gfar_local_mdio_read/write(), which don't do any locking.
      
      The previously attached PHY will start a work-queue on a timer, and
      probably an irq handler as well, which will talk to the PHY and thus use
      the MDIO bus.  This uses phy_read/write(), which have locking, but not
      against the gfar_local_mdio versions.
      
      The result is that PHY code will try to use the MDIO bus at the same time
      as the SerDes setup code, corrupting the transfers.
      
      Setting up the SerDes before attaching to the PHY will insure that there is
      no race between the SerDes code and *our* PHY, but doesn't fix everything.
      Typically the PHYs for all gianfar devices are on the same MDIO bus, which
      is associated with the first gianfar device.  This means that the first
      gianfar's SerDes code could corrupt the MDIO transfers for a different
      gianfar's PHY.
      
      The lock used by phy_read/write() is contained in the mii_bus structure,
      which is pointed to by the PHY.  This is difficult to access from the
      gianfar drivers, as there is no link between a gianfar device and the
      mii_bus which shares the same MDIO registers.  As far as the device layer
      and drivers are concerned they are two unrelated devices (which happen to
      share registers).
      
      Generally all gianfar devices' PHYs will be on the bus associated with the
      first gianfar.  But this might not be the case, so simply locking the
      gianfar's PHY's mii bus might not lock the mii bus that the SerDes setup
      code is going to use.
      
      We solve this by having the code that creates the gianfar platform device
      look in the device tree for an mdio device that shares the gianfar's
      registers.  If one is found the ID of its platform device is saved in the
      gianfar's platform data.
      
      A new function in the gianfar mii code, gfar_get_miibus(), can use the bus
      ID to search through the platform devices for a gianfar_mdio device with
      the right ID.  The platform device's driver data is the mii_bus structure,
      which the SerDes setup code can use to lock the current bus.
      Signed-off-by: NTrent Piepho <tpiepho@freescale.com>
      CC: Andy Fleming <afleming@freescale.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      c132419e
    • D
      at91_ether: request/free GPIO for PHY interrupt · 71527ef4
      David Brownell 提交于
      When the at91_ether driver is using a GPIO for its PHY interrupt,
      be sure to request (and later, if needed, free) that GPIO.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      71527ef4
    • C
      amd8111e: fix dma_free_coherent context · e83603fd
      Chunbo Luo 提交于
      Acoording commit aa24886e,
      dma_free_coherent() need irqs enabled.
      
      This patch fix following warning messages:
      
      WARNING: at linux/arch/x86/kernel/pci-dma.c:376 dma_free_coherent+0xaa/0xb0()
      
      Call Trace:
       [<ffffffff8023f80f>] warn_on_slowpath+0x5f/0x90
       [<ffffffff80496ffa>] ? __kfree_skb+0x3a/0xa0
       [<ffffffff802a4723>] ? discard_slab+0x23/0x40
       [<ffffffff8021274a>] dma_free_coherent+0xaa/0xb0
       [<ffffffff8043668f>] amd8111e_close+0x10f/0x1b0
       [<ffffffff8049f3ae>] dev_close+0x5e/0xb0
       [<ffffffff8049efa1>] dev_change_flags+0xa1/0x1e0
       [<ffffffff806b2171>] ic_close_devs+0x36/0x4e
       [<ffffffff806b29ee>] ip_auto_config+0x581/0x10f3
       [<ffffffff803a6e19>] ? kobject_add+0x69/0x90
       [<ffffffff803a698a>] ? kobject_get+0x1a/0x30
       [<ffffffff803a785b>] ? kobject_uevent+0xb/0x10
       [<ffffffff803a6c62>] ? kset_register+0x52/0x60
       [<ffffffff803a6f9b>] ? kset_create_and_add+0x6b/0xa0
       [<ffffffff804e2e74>] ? tcp_ca_find+0x24/0x50
       [<ffffffff806b246d>] ? ip_auto_config+0x0/0x10f3
       [<ffffffff8020903c>] _stext+0x3c/0x150
       [<ffffffff802772d3>] ? register_irq_proc+0xd3/0xf0
       [<ffffffff802f0000>] ? mb_cache_create+0x80/0x1f0
       [<ffffffff80688693>] kernel_init+0x141/0x1b8
       [<ffffffff80688552>] ? kernel_init+0x0/0x1b8
       [<ffffffff8020d609>] child_rip+0xa/0x11
       [<ffffffff80688552>] ? kernel_init+0x0/0x1b8
       [<ffffffff80688552>] ? kernel_init+0x0/0x1b8
       [<ffffffff8020d5ff>] ? child_rip+0x0/0x11
      Signed-off-by: NChunbo Luo <chunbo.luo@windriver.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      e83603fd
    • J
      atl1: fix vlan tag regression · dc5596d9
      Jay Cliburn 提交于
      Commit 401c0aab introduced a regression
      in the atl1 driver by storing the VLAN tag in the wrong TX descriptor
      field.
      
      This patch causes the VLAN tag to be stored in its proper location.
      Tested-by: NRamon Casellas <ramon.casellas@cttc.es>
      Signed-off-by: NJay Cliburn <jacliburn@bellsouth.net>
      Cc: stable@kernel.org
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      dc5596d9
    • M
      SMC91x: delete unused local variable "lp" · 51ac3bef
      Mike Frysinger 提交于
      Signed-off-by: NMike Frysinger <vapier@gentoo.org>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      51ac3bef
    • B
      myri10ge: fix stop/go mmio ordering · 6824a105
      Brice Goglin 提交于
      Use mmiowb() to ensure "stop" and "go" commands are sent in order on ia64.
      Signed-off-by: NBrice Goglin <brice@myri.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      6824a105
    • A
      bonding: fix panic when taking bond interface down before removing module · ce39a800
      Andy Gospodarek 提交于
      A panic was discovered with bonding when using mode 5 or 6 and trying to
      remove the slaves from the bond after the interface was taken down.
      When calling 'ifconfig bond0 down' the following happens:
      
          bond_close()
              bond_alb_deinitialize()
                  tlb_deinitialize()
      		kfree(bond_info->tx_hashtbl)
                      bond_info->tx_hashtbl = NULL
      
      Unfortunately if there are still slaves in the bond, when removing the
      module the following happens:
      
          bonding_exit()
              bond_free_all()
                  bond_release_all()
                      bond_alb_deinit_slave()
                          tlb_clear_slave()
                              tx_hash_table = BOND_ALB_INFO(bond).tx_hashtbl
      			u32 next_index = tx_hash_table[index].next
      
      As you might guess we panic when trying to access a few entries into the
      table that no longer exists.
      
      I experimented with several options (like moving the calls to
      tlb_deinitialize somewhere else), but it really makes the most sense to
      be part of the bond_close routine.  It also didn't seem logical move
      tlb_clear_slave around too much, so the simplest option seems to add a
      check in tlb_clear_slave to make sure we haven't already wiped the
      tx_hashtbl away before searching for all the non-existent hash-table
      entries that used to point to the slave as the output interface.
      Signed-off-by: NAndy Gospodarek <andy@greyhouse.net>
      Signed-off-by: NJay Vosburgh <fubar@us.ibm.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      ce39a800
    • J
      bonding: Clean up resource leaks · a434e43f
      Jay Vosburgh 提交于
      This patch reworks the resource free logic performed at the time
      a bonding device is released.  This (a) closes two resource leaks, one
      for workqueues and one for multicast lists, and (b) improves commonality
      of code between the "destroy one" and "destroy all" paths by performing
      final free activity via destructor instead of explicitly (and differently)
      in each path.
      
      "Sean E. Millichamp" <sean@bruenor.org> reported the workqueue
      leak, and included a different patch.
      Signed-off-by: NJay Vosburgh <fubar@us.ibm.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      a434e43f