Skip to content
  1. Nov 09, 2012
    • Andrew Morton's avatar
      revert "epoll: support for disabling items, and a self-test app" · a80a6b85
      Andrew Morton authored
      Revert commit 03a7beb5
      
       ("epoll: support for disabling items, and a
      self-test app") pending resolution of the issues identified by Michael
      Kerrisk, copied below.
      
      We'll revisit this for 3.8.
      
      : I've taken a look at this patch as it currently stands in 3.7-rc1, and
      : done a bit of testing. (By the way, the test program
      : tools/testing/selftests/epoll/test_epoll.c does not compile...)
      :
      : There are one or two places where the behavior seems a little strange,
      : so I have a question or two at the end of this mail. But other than
      : that, I want to check my understanding so that the interface can be
      : correctly documented.
      :
      : Just to go though my understanding, the problem is the following
      : scenario in a multithreaded application:
      :
      : 1. Multiple threads are performing epoll_wait() operations,
      :    and maintaining a user-space cache that contains information
      :    corresponding to each file descriptor being monitored by
      :    epoll_wait().
      :
      : 2. At some point, a thread wants to delete (EPOLL_CTL_DEL)
      :    a file descriptor from the epoll interest list, and
      :    delete the corresponding record from the user-space cache.
      :
      : 3. The problem with (2) is that some other thread may have
      :    previously done an epoll_wait() that retrieved information
      :    about the fd in question, and may be in the middle of using
      :    information in the cache that relates to that fd. Thus,
      :    there is a potential race.
      :
      : 4. The race can't solved purely in user space, because doing
      :    so would require applying a mutex across the epoll_wait()
      :    call, which would of course blow thread concurrency.
      :
      : Right?
      :
      : Your solution is the EPOLL_CTL_DISABLE operation. I want to
      : confirm my understanding about how to use this flag, since
      : the description that has accompanied the patches so far
      : has been a bit sparse
      :
      : 0. In the scenario you're concerned about, deleting a file
      :    descriptor means (safely) doing the following:
      :    (a) Deleting the file descriptor from the epoll interest list
      :        using EPOLL_CTL_DEL
      :    (b) Deleting the corresponding record in the user-space cache
      :
      : 1. It's only meaningful to use this EPOLL_CTL_DISABLE in
      :    conjunction with EPOLLONESHOT.
      :
      : 2. Using EPOLL_CTL_DISABLE without using EPOLLONESHOT in
      :    conjunction is a logical error.
      :
      : 3. The correct way to code multithreaded applications using
      :    EPOLL_CTL_DISABLE and EPOLLONESHOT is as follows:
      :
      :    a. All EPOLL_CTL_ADD and EPOLL_CTL_MOD operations should
      :       should EPOLLONESHOT.
      :
      :    b. When a thread wants to delete a file descriptor, it
      :       should do the following:
      :
      :       [1] Call epoll_ctl(EPOLL_CTL_DISABLE)
      :       [2] If the return status from epoll_ctl(EPOLL_CTL_DISABLE)
      :           was zero, then the file descriptor can be safely
      :           deleted by the thread that made this call.
      :       [3] If the epoll_ctl(EPOLL_CTL_DISABLE) fails with EBUSY,
      :           then the descriptor is in use. In this case, the calling
      :           thread should set a flag in the user-space cache to
      :           indicate that the thread that is using the descriptor
      :           should perform the deletion operation.
      :
      : Is all of the above correct?
      :
      : The implementation depends on checking on whether
      : (events & ~EP_PRIVATE_BITS) == 0
      : This replies on the fact that EPOLL_CTL_AD and EPOLL_CTL_MOD always
      : set EPOLLHUP and EPOLLERR in the 'events' mask, and EPOLLONESHOT
      : causes those flags (as well as all others in ~EP_PRIVATE_BITS) to be
      : cleared.
      :
      : A corollary to the previous paragraph is that using EPOLL_CTL_DISABLE
      : is only useful in conjunction with EPOLLONESHOT. However, as things
      : stand, one can use EPOLL_CTL_DISABLE on a file descriptor that does
      : not have EPOLLONESHOT set in 'events' This results in the following
      : (slightly surprising) behavior:
      :
      : (a) The first call to epoll_ctl(EPOLL_CTL_DISABLE) returns 0
      :     (the indicator that the file descriptor can be safely deleted).
      : (b) The next call to epoll_ctl(EPOLL_CTL_DISABLE) fails with EBUSY.
      :
      : This doesn't seem particularly useful, and in fact is probably an
      : indication that the user made a logic error: they should only be using
      : epoll_ctl(EPOLL_CTL_DISABLE) on a file descriptor for which
      : EPOLLONESHOT was set in 'events'. If that is correct, then would it
      : not make sense to return an error to user space for this case?
      
      Cc: Michael Kerrisk <mtk.manpages@gmail.com>
      Cc: "Paton J. Lewis" <palewis@adobe.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a80a6b85
    • Joe Perches's avatar
      checkpatch: improve network block comment style checking · c24f9f19
      Joe Perches authored
      
      
      Some comment styles in net and drivers/net are flagged inappropriately.
      
      Avoid proclaiming inline comments like:
      	int a = b;	/* some comment */
      and block comments like:
      	/*********************
      	 * some comment
      	 ********************/
      are defective.
      
      Tested with
      $ cat drivers/net/t.c
      /* foo */
      
      /*
       * foo
       */
      
      /* foo
       */
      
      /* foo
       * bar */
      
      /****************************
       * some long block comment
       ***************************/
      
      struct foo {
      	int bar;	/* another test */
      };
      $
      
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Reported-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
      Cc: David Miller <davem@davemloft.net>
      Cc: Stephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c24f9f19
  2. Nov 05, 2012
  3. Nov 04, 2012
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-3.7-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · d4164973
      Linus Torvalds authored
      Pull NFS client bugfixes from Trond Myklebust:
      
       - Fix a bunch of deadlock situations:
         * State recovery can deadlock if we fail to release sequence ids
           before scheduling the recovery thread.
         * Calling deactivate_super() from an RPC workqueue thread can
           deadlock because of the call to rpc_shutdown_client.
      
       - Display the device name correctly in /proc/*/mounts
      
       - Fix a number of incorrect error return values:
         * When NFSv3 mounts fail due to a timeout.
         * On NFSv4.1 backchannel setup failure
         * On NFSv4 open access checks
      
       - pnfs_find_alloc_layout() must check the layout pointer for NULL
      
       - Fix a regression in the legacy DNS resolved
      
      * tag 'nfs-for-3.7-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
        NFS4: nfs4_opendata_access should return errno
        NFSv4: Initialise the NFSv4.1 slot table highest_used_slotid correctly
        SUNRPC: return proper errno from backchannel_rqst
        NFS: add nfs_sb_deactive_async to avoid deadlock
        nfs: Show original device name verbatim in /proc/*/mount{s,info}
        nfsv3: Make v3 mounts fail with ETIMEDOUTs instead EIO on mountd timeouts
        nfs: Check whether a layout pointer is NULL before free it
        NFS: fix bug in legacy DNS resolver.
        NFSv4: nfs4_locku_done must release the sequence id
        NFSv4.1: We must release the sequence id when we fail to get a session slot
        NFS: Wait for session recovery to finish before returning
      d4164973
    • Linus Torvalds's avatar
      Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux · 225ff868
      Linus Torvalds authored
      Pull thermal management & ACPI update from Zhang Rui,
      
      Ho humm.  Normally these things go through Len.  But it's just three
      small fixes, I guess I can pull directly too.
      
      * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux:
        exynos4_tmu_driver_ids should be exynos_tmu_driver_ids.
        ACPI video: Ignore errors after _DOD evaluation.
        thermal: solve compilation errors in rcar_thermal
      225ff868
    • Linus Torvalds's avatar
      Merge branch 'i2c-embedded/for-current' of git://git.pengutronix.de/git/wsa/linux · 209c510e
      Linus Torvalds authored
      Pull i2c embedded fixes from Wolfram Sang:
       "Two patches are usual stuff.
      
        The bigger patch is needed to correct a wrong decision made in this
        merge window.  We hoped to get the PIOQUEUE mode in the mxs driver
        working with DMA, but it turned out to be too broken (leading to data
        loss), so we now think it is best to remove it entirely and work only
        with DMA now.  The patch should be in 3.7.  IMO, so users never get
        the chance to use both modes in parallel."
      
      * 'i2c-embedded/for-current' of git://git.pengutronix.de/git/wsa/linux:
        i2c: tegra: set irq name as device name
        i2c-nomadik: Fixup clock handling
        i2c: mxs: remove broken PIOQUEUE support
      209c510e
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 53f9313f
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Scattered selection of fixes:
      
         - radeon: load detect fixes from SuSE/AMD
         - intel: misc i830, sdvo regression, vesafb kickoff ums fix
         - exynos: maintainers entry update + fixes
         - udl: fix stride scanout issue
      
        it's slightly bigger than I'd probably like, but nothing looked
        dangerous enough to hold off on."
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/udl: fix stride issues scanning out stride != width*bpp
        drm/radeon: add load detection support for ext DAC on R200 (v2)
        DRM/radeon: For single CRTC GPUs move handling of CRTC_CRT_ON to crtc_dpms().
        DRM/Radeon: Fix TV DAC Load Detection for single CRTC chips.
        DRM/Radeon: Clean up code in TV DAC load detection.
        drm/radeon: fix ATPX function documentation
        drivers/gpu/drm/radeon/evergreen_cs.c: Remove unnecessary semicolon
        DRM/Radeon: On DVI-I use Load Detection when EDID is bogus.
        DRM/Radeon: Fix primary DAC Load Detection for RV100 chips.
        DRM/Radeon: Fix Load Detection on legacy primary DAC.
        drm: exynos: removed warning due to missing typecast for mixer driver data
        drm/exynos: add support for ARCH_MULTIPLATFORM
        MAINTAINERS: Add git repository for Exynos DRM
        drm/exynos: fix display on issue
        drm/i915: Only kick out vesafb if we takeover the fbcon with KMS
        drm/i915: be less verbose about inability to provide vendor backlight
        drm/i915: clear the entire sdvo infoframe buffer
        drm/i915: VGA needs to be on pipe A on i830M
        drm/i915: fix overlay on i830M
      53f9313f
  4. Nov 03, 2012
  5. Nov 02, 2012
    • David Howells's avatar
      FRV: Fix the new-style kernel_thread() stuff · e7aa51b2
      David Howells authored
      The kernel_thread() changes for FRV don't work, and FRV fails to boot,
      starting with:
      
      	commit 02ce496f
      
      
      	Author: Al Viro <viro@zeniv.linux.org.uk>
      	Date:   Tue Sep 18 22:18:51 2012 -0400
      	Subject: frv: split ret_from_fork, simplify kernel_thread() a lot
      
      The problem is that the userspace registers are completely cleared when a
      kernel thread is created and all subsequent user threads are then copied from
      that.  Unfortunately, however, the TBR and PSR registers are restored from the
      pt_regs and the values they should be set to are clobbered by the memset.
      
      Instead, copy across the old user registers as normal, and then merely alter
      GR8 and GR9 in it if we're going to execute a kernel thread.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      e7aa51b2
    • David Howells's avatar
      FRV: Fix the preemption handling · 1ee6f566
      David Howells authored
      
      
      Fix the preemption handling in FRV code where the PREEMPT_ACTIVE value is
      incorrectly loaded into the threadinfo flags rather than the threadinfo
      preemption count.
      
      Unfortunately, the code cannot be simply converted to use
      preempt_schedule_irq() as is because FRV uses virtual interrupt disablement to
      cut down on the cost of actually disabling interrupts and thus
      local_irq_enable() doesn't actually enable interrupts.
      
      Reported-by: default avatarAl Viro <viro@ZenIV.linux.org.uk>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Al Viro <viro@ZenIV.linux.org.uk>
      1ee6f566
    • David Howells's avatar
      FRV: gcc-4.1.2 also inlines weak functions · eded09cc
      David Howells authored
      
      
      gcc-4.1.2 inlines weak functions, which causes FRV to fail when the dummy
      thread_info_cache_init() gets inlined into start_kernel().
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      eded09cc
    • David Howells's avatar
      FRV: Don't objcopy the GNU build_id note · 5f0231d9
      David Howells authored
      
      
      Don't let objcopy transfer the GNU build_id note into the loadable image as it
      is located at address 0 and the image ends up >3G in size.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      5f0231d9
    • David Howells's avatar
      FRV: Add missing linux/export.h #inclusions · a5788caa
      David Howells authored
      
      
      Add missing linux/export.h #inclusions to the FRV arch.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      a5788caa
    • Laxman Dewangan's avatar
      i2c: tegra: set irq name as device name · 91b370a0
      Laxman Dewangan authored
      
      
      When watching the irqs name of tegra i2c, all instances
      irq name shows as tegra_i2c.
      
      Passing the device name properly to have the irq names with
      instance like tegra-i2c.0, tegra-i2c.1 etc.
      
      Signed-off-by: default avatarLaxman Dewangan <ldewangan@nvidia.com>
      Acked-by: default avatarJean Delvare <khali@linux-fr.org>
      Signed-off-by: default avatarWolfram Sang <w.sang@pengutronix.de>
      91b370a0
    • Philippe Begnic's avatar
      i2c-nomadik: Fixup clock handling · 817315f5
      Philippe Begnic authored
      
      
      Make sure to clk_prepare as well as clk_enable.
      
      Signed-off-by: default avatarPhilippe Begnic <philippe.begnic@stericsson.com>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarWolfram Sang <w.sang@pengutronix.de>
      817315f5
    • Wolfram Sang's avatar
      i2c: mxs: remove broken PIOQUEUE support · 82fa63bd
      Wolfram Sang authored
      
      
      This I2C master can do DMA and PIOQUEUE (PIO with FIFO). Originally,
      only PIOQUEUE was supported and it had issues, then DMA support was added
      this cycle. The original intention was to keep PIOQUEUE since it has
      less overhead what is nice for small transfers. However, runtime
      switching between PIOQEUE and DMA depending on the transfer size never
      worked despite a lot of trying. Since PIOQUEUE mode itself was flaky
      (polling at places where interrupts failed to work) and the
      implementation also imposed a size limit for transfers, it is best to
      remove the support, so users don't fall over its limitations. It also
      makes the driver a lot cleaner and more robust. If somebody really wants
      less overhead, plain PIO mode could still be implemented with the
      addidtional advantage that this mode is also available on MX23, too.
      
      Signed-off-by: default avatarWolfram Sang <w.sang@pengutronix.de>
      Reviewed-by: default avatarMarek Vasut <marex@denx.de>
      82fa63bd
    • Linus Torvalds's avatar
      Merge tag 'xtensa-next-20121101' of git://github.com/czankel/xtensa-linux · c660b8f9
      Linus Torvalds authored
      Pull Xtensa fixes from Chris Zankel:
       "Some important bug fixes.
      
        With the change to uapi, there was a bug introduced that results in an
        empty syscall table (mult-inclusion bug).  Switching to the generic
        thread/execve allowed us to fix a bug we had in vfork()."
      
      * tag 'xtensa-next-20121101' of git://github.com/czankel/xtensa-linux:
        xtensa: switch to generic sys_execve()
        xtensa: switch to generic kernel_execve()
        xtensa: switch to generic kernel_thread()
        xtensa: reset windowbase/windowstart when cloning the VM
        xtensa: use physical addresses for bus addresses
        xtensa: allow multi-inclusion for uapi/unistd.h
      c660b8f9
    • Dave Airlie's avatar
      drm/udl: fix stride issues scanning out stride != width*bpp · 3916e1d7
      Dave Airlie authored
      
      
      When buffer sharing with the i915 and using a 1680x1050 monitor,
      the i915 gives is a 6912 buffer for the 6720 width, the code doesn't
      render this properly as it uses one value to set the base address for
      reading from the vmap and for where to start on the device.
      
      This fixes it by calculating the values correctly for the device and
      for the pixmap. No idea how I haven't seen this before now.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      3916e1d7
    • Jamie Lentin's avatar
      hwmon: Only include of_match_table with CONFIG_OF_GPIO · eaa7cc60
      Jamie Lentin authored
      
      
      The following fixes build errors on sparc. Without any DT support,
      of_match_ptr is NULL and the below is a no-op. However, if just
      CONFIG_OF is defined then so is of_match_ptr.
      
      All useful parts of the gpio-fan DT support rely on CONFIG_OF_GPIO
      anyway, so of_match_table should too.
      
      Signed-off-by: default avatarJamie Lentin <jm@lentin.co.uk>
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      eaa7cc60
    • Dave Airlie's avatar
      Merge branch 'exynos-drm-fixes' of... · a2e4919a
      Dave Airlie authored
      Merge branch 'exynos-drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-fixes
      
      Inki writes:
      "As I posted before, we have added a new git repository for Exynos drm
      to MAINTAINERS file so change it to new one like below,
         from git://git.infradead.org/users/kmpark/linux-samsung
         to git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos
      
      And this pull request includes the following:
      - fix display on issue when user requested dpms mode changing.
      - add git repository for Exynos drm to MAINTAINERS file.
      - add support for ARCH_MULTIPLATFORM.
      - and code clean."
      
      * 'exynos-drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos:
        drm: exynos: removed warning due to missing typecast for mixer driver data
        drm/exynos: add support for ARCH_MULTIPLATFORM
        MAINTAINERS: Add git repository for Exynos DRM
        drm/exynos: fix display on issue
      a2e4919a