1. 03 Apr, 2012 15 commits
    • Eric Dumazet's avatar
      tcp: allow splice() to build full TSO packets · 2f533844
      Eric Dumazet authored
      vmsplice()/splice(pipe, socket) call do_tcp_sendpages() one page at a
      time, adding at most 4096 bytes to an skb. (assuming PAGE_SIZE=4096)
      
      The call to tcp_push() at the end of do_tcp_sendpages() forces an
      immediate xmit when pipe is not already filled, and tso_fragment() try
      to split these skb to MSS multiples.
      
      4096 bytes are usually split in a skb with 2 MSS, and a remaining
      sub-mss skb (assuming MTU=1500)
      
      This makes slow start suboptimal because many small frames are sent to
      qdisc/driver layers instead of big ones (constrained by cwnd and packets
      in flight of course)
      
      In fact, applications using sendmsg() (adding an additional memory copy)
      instead of vmsplice()/splice()/sendfile() are a bit faster because of
      this anomaly, especially if serving small files in environments with
      large initial [c]wnd.
      
      Call tcp_push() only if MSG_MORE is not set in the flags parameter.
      
      This bit is automatically provided by splice() internals but for the
      last page, or on all pages if user specified SPLICE_F_MORE splice()
      flag.
      
      In some workloads, this can reduce number of sent logical packets by an
      order of magnitude, making zero-copy TCP actually faster than
      one-copy :)
      Reported-by: default avatarTom Herbert <therbert@google.com>
      Cc: Nandita Dukkipati <nanditad@google.com>
      Cc: Neal Cardwell <ncardwell@google.com>
      Cc: Tom Herbert <therbert@google.com>
      Cc: Yuchung Cheng <ycheng@google.com>
      Cc: H.K. Jerry Chu <hkchu@google.com>
      Cc: Maciej Żenczykowski <maze@google.com>
      Cc: Mahesh Bandewar <maheshb@google.com>
      Cc: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail&gt;com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2f533844
    • David Woodhouse's avatar
      ppp: Don't stop and restart queue on every TX packet · e675f0cc
      David Woodhouse authored
      For every transmitted packet, ppp_start_xmit() will stop the netdev
      queue and then, if appropriate, restart it. This causes the TX softirq
      to run, entirely gratuitously.
      
      This is "only" a waste of CPU time in the normal case, but it's actively
      harmful when the PPP device is a TEQL slave — the wakeup will cause the
      offending device to receive the next TX packet from the TEQL queue, when
      it *should* have gone to the next slave in the list. We end up seeing
      large bursts of packets on just *one* slave device, rather than using
      the full available bandwidth over all slaves.
      
      This patch fixes the problem by *not* unconditionally stopping the queue
      in ppp_start_xmit(). It adds a return value from ppp_xmit_process()
      which indicates whether the queue should be stopped or not.
      
      It *doesn't* remove the call to netif_wake_queue() from
      ppp_xmit_process(), because other code paths (especially from
      ppp_output_wakeup()) need it there and it's messy to push it out to the
      other callers to do it based on the return value. So we leave it in
      place — it's a no-op in the case where the queue wasn't stopped, so it's
      harmless in the TX path.
      Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e675f0cc
    • Eric Dumazet's avatar
      net: fix /proc/net/dev regression · 2def16ae
      Eric Dumazet authored
      Commit f04565dd (dev: use name hash for dev_seq_ops) added a second
      regression, as some devices are missing from /proc/net/dev if many
      devices are defined.
      
      When seq_file buffer is filled, the last ->next/show() method is
      canceled (pos value is reverted to value prior ->next() call)
      
      Problem is after above commit, we dont restart the lookup at right
      position in ->start() method.
      
      Fix this by removing the internal 'pos' pointer added in commit, since
      we need to use the 'loff_t *pos' provided by seq_file layer.
      
      This also reverts commit 5cac98dd (net: Fix corruption
      in /proc/*/net/dev_mcast), since its not needed anymore.
      Reported-by: default avatarBen Greear <greearb@candelatech.com>
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Cc: Mihai Maruseac <mmaruseac@ixiacom.com>
      Tested-by: default avatarBen Greear <greearb@candelatech.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2def16ae
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes-intel' of git://people.freedesktop.org/~airlied/linux · 01627d96
      Linus Torvalds authored
      Pull drm update from Dave Airlie:
       "This pull just contains a forward of the Intel fixes from Daniel.
      
        The only annoyance is the RC6 enable, which really should have made
        -next, but since Ubuntu are shipping it I reckon its getting a good
        testing now by the time 3.4 comes out.
      
        The pull from Daniel contains his pull message to me:
      
          "A few patches for 3.4, major part is 3 regression fixes:
           - ppgtt broke hibernate on snb/ivb.  Somehow our QA claims that it
             still works, which is why this has not been caught earlier.
           - ppgtt flails in combination with dmar.  I kinda expected this one :(
           - fence handling bugfix for gen2/3.  Iirc this one is about a year
             old, fix curtesy Chris Wilson.  I've created an shockingly simple
             i-g-t test to catch this in the future."
      
           Wrt regressions I've just got a report that gmbus (newly enabled
           again in 3.4) is a bit noisy.  I'm looking into this atm.
      
           Also included are the rc6 enable patches for snb from Eugeni.  I
           wanted to include these in the main 3.4 pull but screwed it up.
           Please hit me.  Imo these kind of patches really should go in
           before -rc1, but in thise case rc6 has brought us tons of press and
           guinea pigs^W^W testers and ubuntu is already running with it.  So
           I estimate a pretty small chance for this to blow up.
      
           And some smaller things:
            - two minor locking snafus
            - server gt2 ivb pciid
            - 2 patches to sanitize the register state left behind by the bios
              some more
            - 2 new quirk entries
            - cs readback trick against missed IRQs from ivb also enabled on snb
            - sprite fix from Jesse"
      
      Let's see if the "enable RC6 on sandybridge" finally works and sticks.
      I've been enabling it by hand (i915.i915_enable_rc6=1) for several
      months on my Macbook Air, and it definitely makes a difference (and has
      worked for me).  But every time we enabled it before it showed some odd
      hw buglet for *somebody*.
      
      This time it's all good, I'm sure.
      
      * 'drm-fixes-intel' of git://people.freedesktop.org/~airlied/linux:
        drm/i915: treat src w & h as fixed point in sprite handling code
        drm/i915: no-lvds quirk on MSI DC500
        drm/i915: Add lock on drm_helper_resume_force_mode
        drm/i915: don't leak struct_mutex lock on ppgtt init failures
        drm/i915: disable ppgtt on snb when dmar is enabled
        drm/i915: add Ivy Bridge GT2 Server entries
        drm/i915: properly clear SSC1 bit in the pch refclock init code
        drm/i915: apply CS reg readback trick against missed IRQ on snb
        drm/i915: quirk away broken OpRegion VBT
        drm/i915: enable plain RC6 on Sandy Bridge by default
        drm/i915: allow to select rc6 modes via kernel parameter
        drm/i915: Mark untiled BLT commands as fenced on gen2/3
        drm/i915: properly restore the ppgtt page directory on resume
        drm/i915: Sanitize BIOS debugging bits from PIPECONF
      01627d96
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · e1a7eb08
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Mainly nouveau fixes, one for a regressions in -rc1, fixes for booting
        on a ppc G5, and a Kconfig fix.  Two radeon fixes, one oops, one s/r
        fix.  One udl mmap fix.  And one core drm fix to stop bad fbdev apps
        overwriting bits of ram."
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm: Validate requested virtual size against allocated fb size
        drm/radeon: Don't dereference possibly-NULL pointer.
        mm, drm/udl: fixup vma flags on mmap
        drm/radeon/kms: fix fans after resume
        nouveau/bios: Fix tracking of BIOS image data
        nouveau: Fix crash when pci_ram_rom() returns a size of 0
        drm/nouveau: select POWER_SUPPLY
        drm/nouveau: inform userspace of relaxed kernel subchannel requirements
        Revert "drm/nouveau: inform userspace of new kernel subchannel requirements"
        drm/nouveau: oops, create m2mf for nvd9 too
      e1a7eb08
    • Linus Torvalds's avatar
      Merge branch 'next' of git://git.monstr.eu/linux-2.6-microblaze · 464662b9
      Linus Torvalds authored
      Pull arch/microblaze fixes from Michal Simek.
      
      * 'next' of git://git.monstr.eu/linux-2.6-microblaze:
        microblaze: Fix ret_from_fork declaration
        microblaze: Do not use tlb_skip in early_printk
        microblaze: Add missing headers caused by disintegration asm/system.h
        microblaze: Fix stack usage in PAGE_SIZE copy_tofrom_user
        microblaze: Fix tlb_skip variable on noMMU system
        microblaze: Fix __futex_atomic_op macro register usage
      464662b9
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · 1e649afd
      Linus Torvalds authored
      Pull m68k fixes from Geert Uytterhoeven:
       "Here are a few fixes for the m68k architecture.  Nothing fancy this
        time, just a build fix for the asm/system.h disintegration, and two
        fixes for missing platform checks (one got in during last merge
        window), which can cause crashes in multi-platform kernels."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k/q40: Add missing platform check before registering platform devices
        m68k/mac: Add missing platform check before registering platform devices
        m68k: include asm/cmpxchg.h in our m68k atomic.h
      1e649afd
    • Dave Airlie's avatar
      Merge branch 'drm-intel-fixes' of... · e37acc0f
      Dave Airlie authored
      Merge branch 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel into drm-intel-fixes
      
      From Daniel Vetter:
      
      "A few patches for 3.4, major part is 3 regression fixes:
      - ppgtt broke hibernate on snb/ivb. Somehow our QA claims that it still
       works, which is why this has not been caught earlier.
      - ppgtt flails in combination with dmar. I kinda expected this one :(
      - fence handling bugfix for gen2/3. Iirc this one is about a year old, fix
       curtesy Chris Wilson. I've created an shockingly simple i-g-t test to
       catch this in the future.
      
      Wrt regressions I've just got a report that gmbus (newly enabled again in
      3.4) is a bit noisy. I'm looking into this atm.
      
      Also included are the rc6 enable patches for snb from Eugeni. I wanted to
      include these in the main 3.4 pull but screwed it up. Please hit me. Imo
      these kind of patches really should go in before -rc1, but in thise case
      rc6 has brought us tons of press and guinea pigs^W^W testers and ubuntu is
      already running with it. So I estimate a pretty small chance for this to
      blow up.
      
      And some smaller things:
      - two minor locking snafus
      - server gt2 ivb pciid
      - 2 patches to sanitize the register state left behind by the bios some
       more
      - 2 new quirk entries
      - cs readback trick against missed IRQs from ivb also enabled on snb
      - sprite fix from Jesse"
      
      * 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel:
        drm/i915: treat src w & h as fixed point in sprite handling code
        drm/i915: no-lvds quirk on MSI DC500
        drm/i915: Add lock on drm_helper_resume_force_mode
        drm/i915: don't leak struct_mutex lock on ppgtt init failures
        drm/i915: disable ppgtt on snb when dmar is enabled
        drm/i915: add Ivy Bridge GT2 Server entries
        drm/i915: properly clear SSC1 bit in the pch refclock init code
        drm/i915: apply CS reg readback trick against missed IRQ on snb
        drm/i915: quirk away broken OpRegion VBT
        drm/i915: enable plain RC6 on Sandy Bridge by default
        drm/i915: allow to select rc6 modes via kernel parameter
        drm/i915: Mark untiled BLT commands as fenced on gen2/3
        drm/i915: properly restore the ppgtt page directory on resume
        drm/i915: Sanitize BIOS debugging bits from PIPECONF
      e37acc0f
    • Chris Wilson's avatar
      drm: Validate requested virtual size against allocated fb size · 62fb376e
      Chris Wilson authored
      mplayer -vo fbdev tries to create a screen that is twice as tall as the
      allocated framebuffer for "doublebuffering". By default, and all in-tree
      users, only sufficient memory is allocated and mapped to satisfy the
      smallest framebuffer and the virtual size is no larger than the actual.
      For these users, we should therefore reject any userspace request to
      create a screen that requires a buffer larger than the framebuffer
      originally allocated.
      
      References: https://bugs.freedesktop.org/show_bug.cgi?id=38138Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      62fb376e
    • Jesse Barnes's avatar
      drm/i915: treat src w & h as fixed point in sprite handling code · b4db1e35
      Jesse Barnes authored
      This was missed when we converted the source values to 16.16 fixed point.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      Tested-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      b4db1e35
    • Anisse Astier's avatar
      drm/i915: no-lvds quirk on MSI DC500 · 97effadb
      Anisse Astier authored
      This hardware doesn't have an LVDS, it's a desktop box. Fix incorrect
      LVDS detection.
      
      Cc: stable@kernel.org
      Signed-off-by: default avatarAnisse Astier <anisse@astier.eu>
      Acked-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      97effadb
    • Sean Paul's avatar
      drm/i915: Add lock on drm_helper_resume_force_mode · 927a2f11
      Sean Paul authored
      i915_drm_thaw was not locking the mode_config lock when calling
      drm_helper_resume_force_mode. When there were multiple wake sources,
      this caused FDI training failure on SNB which in turn corrupted the
      display.
      Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: stable@kernel.org
      Signed-Off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      927a2f11
    • Daniel Vetter's avatar
    • Linus Torvalds's avatar
      Merge branch 'drm-prime-dmabuf-initial' of git://people.freedesktop.org/~airlied/linux · 7d6e1cb7
      Linus Torvalds authored
      Pull dma-buf prime support from Dave Airlie:
       "This isn't a majorly urgent thing to have, but we'd like to set the
        stage for working on dma-buf support in the drm drivers for the next
        merge window, so I'd like to push in the initial submission now so
        people have something that we can build on top of.  The code just
        introduces the user interface and internal helper functions for
        drivers to use.
      
        We have driver support under development for i915, nouveau, udl on x86
        and exynos, omapdrm on arm, which we would be aiming for the next
        merge window."
      
      In the -rc1 announcement I asked for people who would use this to
      comment on it, and got severa "Yes please" from people for this and for
      HSI (that I merged earlier).
      
      So far crickets on pohmelfs and the DMA-mapping infrastructure.
      
      * 'drm-prime-dmabuf-initial' of git://people.freedesktop.org/~airlied/linux:
        drm: base prime/dma-buf support (v5)
      7d6e1cb7
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · ed359a3b
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Provide device string properly for USB i2400m wimax devices, also
          don't OOPS when providing firmware string.  From Phil Sutter.
      
       2) Add support for sh_eth SH7734 chips, from Nobuhiro Iwamatsu.
      
       3) Add another device ID to USB zaurus driver, from Guan Xin.
      
       4) Loop index start in pool vector iterator is wrong causing MAC to not
          get configured in bnx2x driver, fix from Dmitry Kravkov.
      
       5) EQL driver assumes HZ=100, fix from Eric Dumazet.
      
       6) Now that skb_add_rx_frag() can specify the truesize increment
          separately, do so in f_phonet and cdc_phonet, also from Eric
          Dumazet.
      
       7) virtio_net accidently uses net_ratelimit() not only on the kernel
          warning but also the statistic bump, fix from Rick Jones.
      
       8) ip_route_input_mc() uses fixed init_net namespace, oops, use
          dev_net(dev) instead.  Fix from Benjamin LaHaise.
      
       9) dev_forward_skb() needs to clear the incoming interface index of the
          SKB so that it looks like a new incoming packet, also from Benjamin
          LaHaise.
      
      10) iwlwifi mistakenly initializes a channel entry as 2GHZ instead of
          5GHZ, fix from Stanislav Yakovlev.
      
      11) Missing kmalloc() return value checks in orinoco, from Santosh
          Nayak.
      
      12) ath9k doesn't check for HT capabilities in the right way, it is
          checking ht_supported instead of the ATH9K_HW_CAP_HT flag.  Fix from
          Sujith Manoharan.
      
      13) Fix x86 BPF JIT emission of 16-bit immediate field of AND
          instructions, from Feiran Zhuang.
      
      14) Avoid infinite loop in GARP code when registering sysfs entries.
          From David Ward.
      
      15) rose protocol uses memcpy instead of memcmp in a device address
          comparison, oops.  Fix from Daniel Borkmann.
      
      16) Fix build of lpc_eth due to dev_hw_addr_rancom() interface being
          renamed to eth_hw_addr_random().  From Roland Stigge.
      
      17) Make ipv6 RTM_GETROUTE interpret RTA_IIF attribute the same way
          that ipv4 does.  Fix from Shmulik Ladkani.
      
      18) via-rhine has an inverted bit test, causing suspend/resume
          regressions.  Fix from Andreas Mohr.
      
      19) RIONET assumes 4K page size, fix from Akinobu Mita.
      
      20) Initialization of imask register in sky2 is buggy, because bits are
          "or'd" into an uninitialized local variable.  Fix from Lino
          Sanfilippo.
      
      21) Fix FCOE checksum offload handling, from Yi Zou.
      
      22) Fix VLAN processing regression in e1000, from Jiri Pirko.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (52 commits)
        sky2: dont overwrite settings for PHY Quick link
        tg3: Fix 5717 serdes powerdown problem
        net: usb: cdc_eem: fix mtu
        net: sh_eth: fix endian check for architecture independent
        usb/rtl8150 : Remove duplicated definitions
        rionet: fix page allocation order of rionet_active
        via-rhine: fix wait-bit inversion.
        ipv6: Fix RTM_GETROUTE's interpretation of RTA_IIF to be consistent with ipv4
        net: lpc_eth: Fix rename of dev_hw_addr_random
        net/netfilter/nfnetlink_acct.c: use linux/atomic.h
        rose_dev: fix memcpy-bug in rose_set_mac_address
        Fix non TBI PHY access; a bad merge undid bug fix in a previous commit.
        net/garp: avoid infinite loop if attribute already exists
        x86 bpf_jit: fix a bug in emitting the 16-bit immediate operand of AND
        bonding: emit event when bonding changes MAC
        mac80211: fix oper channel timestamp updation
        ath9k: Use HW HT capabilites properly
        MAINTAINERS: adding maintainer for ipw2x00
        net: orinoco: add error handling for failed kmalloc().
        net/wireless: ipw2x00: fix a typo in wiphy struct initilization
        ...
      ed359a3b
  2. 02 Apr, 2012 25 commits