1. 23 Jun, 2011 30 commits
  2. 23 May, 2011 10 commits
    • Greg Kroah-Hartman's avatar
      Linux 2.6.32.41 · f9a11ede
      Greg Kroah-Hartman authored
      f9a11ede
    • Ben Hutchings's avatar
      netxen: Remove references to unified firmware file · 59b85444
      Ben Hutchings authored
      Commit c23a103f wrongly introduced
      references to the unified firmware file "phanfw.bin", which is not
      supported by netxen in 2.6.32.  The driver reports this filename when
      loading firmware from flash, and includes a MODULE_FIRMWARE hint for
      the filename even though it will never use it.
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      59b85444
    • Thomas Jarosch's avatar
      vmxnet3: Fix inconsistent LRO state after initialization · a7c1523f
      Thomas Jarosch authored
      commit ebde6f8a upstream.
      
      During initialization of vmxnet3, the state of LRO
      gets out of sync with netdev->features.
      
      This leads to very poor TCP performance in a IP forwarding
      setup and is hitting many VMware users.
      
      Simplified call sequence:
      1. vmxnet3_declare_features() initializes "adapter->lro" to true.
      
      2. The kernel automatically disables LRO if IP forwarding is enabled,
      so vmxnet3_set_flags() gets called. This also updates netdev->features.
      
      3. Now vmxnet3_setup_driver_shared() is called. "adapter->lro" is still
      set to true and LRO gets enabled again, even though
      netdev->features shows it's disabled.
      
      Fix it by updating "adapter->lro", too.
      
      The private vmxnet3 adapter flags are scheduled for removal
      in net-next, see commit a0d2730c
      "net: vmxnet3: convert to hw_features".
      
      Patch applies to 2.6.37 / 2.6.38 and 2.6.39-rc6.
      
      Please CC: comments.
      Signed-off-by: default avatarThomas Jarosch <thomas.jarosch@intra2net.com>
      Acked-by: default avatarStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      a7c1523f
    • Bjørn Mork's avatar
      megaraid_sas: Sanity check user supplied length before passing it to dma_alloc_coherent() · 1ff463a1
      Bjørn Mork authored
      commit 98cb7e44 upstream.
      
      The ioc->sgl[i].iov_len value is supplied by the ioctl caller, and can be
      zero in some cases.  Assume that's valid and continue without error.
      
      Fixes (multiple individual reports of the same problem for quite a while):
      
      http://marc.info/?l=linux-ide&m=128941801715301
      http://bugs.debian.org/604627
      http://www.mail-archive.com/linux-poweredge@dell.com/msg02575.html
      
      megasas: Failed to alloc kernel SGL buffer for IOCTL
      
      and
      
      [   69.162538] ------------[ cut here ]------------
      [   69.162806] kernel BUG at /build/buildd/linux-2.6.32/lib/swiotlb.c:368!
      [   69.163134] invalid opcode: 0000 [#1] SMP
      [   69.163570] last sysfs file: /sys/devices/system/cpu/cpu3/cache/index2/shared_cpu_map
      [   69.163975] CPU 0
      [   69.164227] Modules linked in: fbcon tileblit font bitblit softcursor vga16fb vgastate ioatdma radeon ttm drm_kms_helper shpchp drm i2c_algo_bit lp parport floppy pata_jmicron megaraid_sas igb dca
      [   69.167419] Pid: 1206, comm: smartctl Tainted: G        W  2.6.32-25-server #45-Ubuntu X8DTN
      [   69.167843] RIP: 0010:[<ffffffff812c4dc5>]  [<ffffffff812c4dc5>] map_single+0x255/0x260
      [   69.168370] RSP: 0018:ffff88081c0ebc58  EFLAGS: 00010246
      [   69.168655] RAX: 000000000003bffc RBX: 00000000ffffffff RCX: 0000000000000002
      [   69.169000] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88001dffe000
      [   69.169346] RBP: ffff88081c0ebcb8 R08: 0000000000000000 R09: ffff880000030840
      [   69.169691] R10: 0000000000100000 R11: 0000000000000000 R12: 0000000000000000
      [   69.170036] R13: 00000000ffffffff R14: 0000000000000001 R15: 0000000000200000
      [   69.170382] FS:  00007fb8de189720(0000) GS:ffff88001de00000(0000) knlGS:0000000000000000
      [   69.170794] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   69.171094] CR2: 00007fb8dd59237c CR3: 000000081a790000 CR4: 00000000000006f0
      [   69.171439] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [   69.171784] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      [   69.172130] Process smartctl (pid: 1206, threadinfo ffff88081c0ea000, task ffff88081a760000)
      [   69.194513] Stack:
      [   69.205788]  0000000000000034 00000002817e3390 0000000000000000 ffff88081c0ebe00
      [   69.217739] <0> 0000000000000000 000000000003bffc 0000000000000000 0000000000000000
      [   69.241250] <0> 0000000000000000 00000000ffffffff ffff88081c5b4080 ffff88081c0ebe00
      [   69.277310] Call Trace:
      [   69.289278]  [<ffffffff812c52ac>] swiotlb_alloc_coherent+0xec/0x130
      [   69.301118]  [<ffffffff81038b31>] x86_swiotlb_alloc_coherent+0x61/0x70
      [   69.313045]  [<ffffffffa002d0ce>] megasas_mgmt_fw_ioctl+0x1ae/0x690 [megaraid_sas]
      [   69.336399]  [<ffffffffa002d748>] megasas_mgmt_ioctl_fw+0x198/0x240 [megaraid_sas]
      [   69.359346]  [<ffffffffa002f695>] megasas_mgmt_ioctl+0x35/0x50 [megaraid_sas]
      [   69.370902]  [<ffffffff81153b12>] vfs_ioctl+0x22/0xa0
      [   69.382322]  [<ffffffff8115da2a>] ? alloc_fd+0x10a/0x150
      [   69.393622]  [<ffffffff81153cb1>] do_vfs_ioctl+0x81/0x410
      [   69.404696]  [<ffffffff8155cc13>] ? do_page_fault+0x153/0x3b0
      [   69.415761]  [<ffffffff811540c1>] sys_ioctl+0x81/0xa0
      [   69.426640]  [<ffffffff810121b2>] system_call_fastpath+0x16/0x1b
      [   69.437491] Code: fe ff ff 48 8b 3d 74 38 76 00 41 bf 00 00 20 00 e8 51 f5 d7 ff 83 e0 ff 48 05 ff 07 00 00 48 c1 e8 0b 48 89 45 c8 e9 13 fe ff ff <0f> 0b eb fe 0f 1f 80 00 00 00 00 55 48 89 e5 48 83 ec 20 4c 89
      [   69.478216] RIP  [<ffffffff812c4dc5>] map_single+0x255/0x260
      [   69.489668]  RSP <ffff88081c0ebc58>
      [   69.500975] ---[ end trace 6a2181b634e2abc7 ]---
      Reported-by: default avatarBokhan Artem <aptem@ngs.ru>
      Reported by: Marc-Christian Petersen <m.c.p@gmx.de>
      Signed-off-by: default avatarBjørn Mork <bjorn@mork.no>
      Cc: Michael Benz <Michael.Benz@lsi.com>
      Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      1ff463a1
    • Julia Lawall's avatar
      x86, mce, AMD: Fix leaving freed data in a list · c114f7a7
      Julia Lawall authored
      commit d9a5ac9e upstream.
      
      b may be added to a list, but is not removed before being freed
      in the case of an error.  This is done in the corresponding
      deallocation function, so the code here has been changed to
      follow that.
      
      The sematic match that finds this problem is as follows:
      (http://coccinelle.lip6.fr/)
      
      // <smpl>
      @@
      expression E,E1,E2;
      identifier l;
      @@
      
      *list_add(&E->l,E1);
      ... when != E1
          when != list_del(&E->l)
          when != list_del_init(&E->l)
          when != E = E2
      *kfree(E);// </smpl>
      Signed-off-by: default avatarJulia Lawall <julia@diku.dk>
      Cc: Borislav Petkov <borislav.petkov@amd.com>
      Cc: Robert Richter <robert.richter@amd.com>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Andreas Herrmann <andreas.herrmann3@amd.com>
      Link: http://lkml.kernel.org/r/1305294731-12127-1-git-send-email-julia@diku.dkSigned-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      c114f7a7
    • Youquan Song's avatar
      x86, apic: Fix spurious error interrupts triggering on all non-boot APs · 8e743dbf
      Youquan Song authored
      commit e503f9e4 upstream.
      
      This patch fixes a bug reported by a customer, who found
      that many unreasonable error interrupts reported on all
      non-boot CPUs (APs) during the system boot stage.
      
      According to Chapter 10 of Intel Software Developer Manual
      Volume 3A, Local APIC may signal an illegal vector error when
      an LVT entry is set as an illegal vector value (0~15) under
      FIXED delivery mode (bits 8-11 is 0), regardless of whether
      the mask bit is set or an interrupt actually happen. These
      errors are seen as error interrupts.
      
      The initial value of thermal LVT entries on all APs always reads
      0x10000 because APs are woken up by BSP issuing INIT-SIPI-SIPI
      sequence to them and LVT registers are reset to 0s except for
      the mask bits which are set to 1s when APs receive INIT IPI.
      
      When the BIOS takes over the thermal throttling interrupt,
      the LVT thermal deliver mode should be SMI and it is required
      from the kernel to keep AP's LVT thermal monitoring register
      programmed as such as well.
      
      This issue happens when BIOS does not take over thermal throttling
      interrupt, AP's LVT thermal monitor register will be restored to
      0x10000 which means vector 0 and fixed deliver mode, so all APs will
      signal illegal vector error interrupts.
      
      This patch check if interrupt delivery mode is not fixed mode before
      restoring AP's LVT thermal monitor register.
      Signed-off-by: default avatarYouquan Song <youquan.song@intel.com>
      Acked-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
      Acked-by: default avatarYong Wang <yong.y.wang@intel.com>
      Cc: hpa@linux.intel.com
      Cc: joe@perches.com
      Cc: jbaron@redhat.com
      Cc: trenn@suse.de
      Cc: kent.liu@intel.com
      Cc: chaohong.guo@intel.com
      Link: http://lkml.kernel.org/r/1303402963-17738-1-git-send-email-youquan.song@intel.comSigned-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      8e743dbf
    • Thomas Gleixner's avatar
      tick: Clear broadcast active bit when switching to oneshot · f56541cf
      Thomas Gleixner authored
      commit 07f4beb0 upstream.
      
      The first cpu which switches from periodic to oneshot mode switches
      also the broadcast device into oneshot mode. The broadcast device
      serves as a backup for per cpu timers which stop in deeper
      C-states. To avoid starvation of the cpus which might be in idle and
      depend on broadcast mode it marks the other cpus as broadcast active
      and sets the brodcast expiry value of those cpus to the next tick.
      
      The oneshot mode broadcast bit for the other cpus is sticky and gets
      only cleared when those cpus exit idle. If a cpu was not idle while
      the bit got set in consequence the bit prevents that the broadcast
      device is armed on behalf of that cpu when it enters idle for the
      first time after it switched to oneshot mode.
      
      In most cases that goes unnoticed as one of the other cpus has usually
      a timer pending which keeps the broadcast device armed with a short
      timeout. Now if the only cpu which has a short timer active has the
      bit set then the broadcast device will not be armed on behalf of that
      cpu and will fire way after the expected timer expiry. In the case of
      Christians bug report it took ~145 seconds which is about half of the
      wrap around time of HPET (the limit for that device) due to the fact
      that all other cpus had no timers armed which expired before the 145
      seconds timeframe.
      
      The solution is simply to clear the broadcast active bit
      unconditionally when a cpu switches to oneshot mode after the first
      cpu switched the broadcast device over. It's not idle at that point
      otherwise it would not be executing that code.
      
      [ I fundamentally hate that broadcast crap. Why the heck thought some
        folks that when going into deep idle it's a brilliant concept to
        switch off the last device which brings the cpu back from that
        state? ]
      
      Thanks to Christian for providing all the valuable debug information!
      Reported-and-tested-by: default avatarChristian Hoffmann <email@christianhoffmann.info>
      Cc: John Stultz <johnstul@us.ibm.com>
      Link: http://lkml.kernel.org/r/%3Calpine.LFD.2.02.1105161105170.3078%40ionos%3ESigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      f56541cf
    • john stultz's avatar
      clocksource: Install completely before selecting · a83b90b7
      john stultz authored
      commit e05b2efb upstream.
      
      Christian Hoffmann reported that the command line clocksource override
      with acpi_pm timer fails:
      
       Kernel command line: <SNIP> clocksource=acpi_pm
       hpet clockevent registered
       Switching to clocksource hpet
       Override clocksource acpi_pm is not HRT compatible.
       Cannot switch while in HRT/NOHZ mode.
      
      The watchdog code is what enables CLOCK_SOURCE_VALID_FOR_HRES, but we
      actually end up selecting the clocksource before we enqueue it into
      the watchdog list, so that's why we see the warning and fail to switch
      to acpi_pm timer as requested. That's particularly bad when we want to
      debug timekeeping related problems in early boot.
      
      Put the selection call last.
      Reported-by: default avatarChristian Hoffmann <email@christianhoffmann.info>
      Signed-off-by: default avatarJohn Stultz <johnstul@us.ibm.com>
      Link: http://lkml.kernel.org/r/%3C1304558210.2943.24.camel%40work-vm%3ESigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      a83b90b7
    • Borislav Petkov's avatar
      x86, AMD: Fix ARAT feature setting again · d9f6223c
      Borislav Petkov authored
      commit 14fb57dc upstream.
      
      Trying to enable the local APIC timer on early K8 revisions
      uncovers a number of other issues with it, in conjunction with
      the C1E enter path on AMD. Fixing those causes much more churn
      and troubles than the benefit of using that timer brings so
      don't enable it on K8 at all, falling back to the original
      functionality the kernel had wrt to that.
      Reported-and-bisected-by: default avatarNick Bowler <nbowler@elliptictech.com>
      Cc: Boris Ostrovsky <Boris.Ostrovsky@amd.com>
      Cc: Andreas Herrmann <andreas.herrmann3@amd.com>
      Cc: Greg Kroah-Hartman <greg@kroah.com>
      Cc: Hans Rosenfeld <hans.rosenfeld@amd.com>
      Cc: Nick Bowler <nbowler@elliptictech.com>
      Cc: Joerg-Volker-Peetz <jvpeetz@web.de>
      Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      Link: http://lkml.kernel.org/r/1305636919-31165-3-git-send-email-bp@amd64.orgSigned-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      d9f6223c
    • Borislav Petkov's avatar
      Revert "x86, AMD: Fix APIC timer erratum 400 affecting K8 Rev.A-E processors" · 88c38c2b
      Borislav Petkov authored
      commit 328935e6 upstream.
      
      This reverts commit e20a2d20, as it crashes
      certain boxes with specific AMD CPU models.
      
      Moving the lower endpoint of the Erratum 400 check to accomodate
      earlier K8 revisions (A-E) opens a can of worms which is simply
      not worth to fix properly by tweaking the errata checking
      framework:
      
      * missing IntPenging MSR on revisions < CG cause #GP:
      
      http://marc.info/?l=linux-kernel&m=130541471818831
      
      * makes earlier revisions use the LAPIC timer instead of the C1E
      idle routine which switches to HPET, thus not waking up in
      deeper C-states:
      
      http://lkml.org/lkml/2011/4/24/20
      
      Therefore, leave the original boundary starting with K8-revF.
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      88c38c2b