1. 19 6月, 2015 17 次提交
    • H
      acer-wmi: Port to new backlight interface selection API · 9a65f0df
      Hans de Goede 提交于
      Port the backlight selection logic to the new backlight interface
      selection API.
      
      This commit also removes various obsolete pr_xxx messages related to
      backlight interface selection. These are obsolete because they assume
      there is only a vendor or acpi backlight driver and no other choice.
      Also they are not necessary, if the user wants to know which backlight
      interfaces are registered a simple "ls /sys/class/backlight" suffices.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Reviewed-by: NLee, Chun-Yi <jlee@suse.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      9a65f0df
    • H
      ACPI / video: Fix acpi_video _register vs _unregister_backlight race · 2a8b18e9
      Hans de Goede 提交于
      It is possible for a native backlight driver to load while
      acpi_video_register is running, which may lead to
      acpi_video_unregister_backlight being called while acpi_video_register
      is running and the 2 racing against eachother.
      
      The register_count variable protects against this, but not in a thread
      safe manner, this commit adds locking to make this thread safe.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      2a8b18e9
    • H
      ACPI / video: Move dmi_check_system from module_init to acpi_video_register · 7ee33baa
      Hans de Goede 提交于
      When builtin there is no guarantee in which order module_init functions
      are run, so acpi_video_register() may get called from the i915 driver
      (if it is also builtin) before acpi_video_init() gets called, resulting
      in the dmi quirks not yet being parsed.
      
      This commit moves the dmi_check_system() call to acpi_video_register(),
      so that we can be sure the dmi quirks have always been applied before
      probing.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      7ee33baa
    • H
      ACPI / video: Move backlight notifier to video_detect.c · 93a291df
      Hans de Goede 提交于
      Move the unregistering of the acpi backlight interface on registering of a
      native backlight from video.c to video_detect.c where it belongs.
      
      Note this removes support for re-registering the acpi backlight interface
      when the native interface goes away. In practice this never happens and
      it needlessly complicates the code.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      93a291df
    • H
      ACPI / video: Port to new backlight interface selection API · 3bd6bce3
      Hans de Goede 提交于
      Most of the patch is moving the dmi quirks for forcing use of the
      acpi-video / the native backlight interface to video_detect.c.
      
      What remains is a nice cleanup.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      3bd6bce3
    • H
      drm: i915: Port to new backlight interface selection API · da882e5a
      Hans de Goede 提交于
      This results in a nice cleanup, as we can replace the complicated logic
      from should_ignore_backlight_request() with a simple check for the type
      being native.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      da882e5a
    • H
      acpi-video-detect: Unregister acpi_video backlight when dmi quirks are added · 5fd677b7
      Hans de Goede 提交于
      Make acpi_video_set_dmi_backlight_type() call
      acpi_video_unregister_backlight() when the new dmi quirk results in
      the desired backlight interface being of a type other then
      acpi_backlight_video.
      
      This avoid the need for the second if in the following construction
      which is currently found in many platform/x86 drivers:
      
      	if (prefer_vendor_quirk)
      		acpi_video_dmi_promote_vendor();
      
      	if (!acpi_video_backlight_support())
      		acpi_video_unregister_backlight()
      
      This second if-block will be removed from the platform drivers as part
      of their conversion to the new backlight interface selection API.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      5fd677b7
    • H
      acpi-video-detect: Rewrite backlight interface selection logic · 87521e16
      Hans de Goede 提交于
      Currently we have 2 kernel commandline options + dmi-quirks in 3 places all
      interacting (in interesting ways) to select which which backlight interface
      to use. On the commandline we've acpi_backlight=[video|vendor] and
      video.use_native_backlight=[0|1]. DMI quirks we have in
      acpi/video-detect.c, acpi/video.c and drivers/platform/x86/*.c .
      
      This commit is the first step to cleaning this up, replacing the 2 cmdline
      options with just acpi_backlight=[video|vendor|native|none], and adds a
      new API to video_detect.c to reflect this.
      
      Follow up commits will also move other related code, like unregistering the
      acpi_video backlight interface if it was registered before other drivers
      which take priority over it are loaded, to video_detect.c where this
      logic really belongs.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      87521e16
    • H
      acpi-video-detect: video: Make video_detect code part of the video module · 14ca7a47
      Hans de Goede 提交于
      This is a preparation patch for the backlight interface selection logic
      cleanup, there are 2 reasons to not always build the video_detect code
      into the kernel:
      
      1) In order for the video_detect.c to also deal with / select native
      backlight interfaces on win8 systems, instead of doing this in video.c
      where it does not belong, video_detect.c needs to call into the backlight
      class code. Which cannot be done if it is builtin and the blacklight class
      is not.
      
      2) Currently all the platform/x86 drivers which have quirks to prefer
      the vendor driver over acpi-video call acpi_video_unregister_backlight()
      to remove the acpi-video backlight interface, this logic really belongs
      in video_detect.c, which will cause video_detect.c to depend on symbols of
      video.c and video.c already depends on video_detect.c symbols, so they
      really need to be a single module.
      
      Note that this commits make 2 changes so as to maintain 100% kernel
      commandline compatibility:
      
      1) The __setup call for the acpi_backlight= handling is moved to
         acpi/util.c as __setup may only be used by code which is alwasy builtin
      2) video.c is renamed to acpi_video.c so that it can be combined with
         video_detect.c into video.ko
      
      This commit also makes changes to drivers/platform/x86/Kconfig to ensure
      that drivers which use acpi_video_backlight_support() from video_detect.c,
      will not be built-in when acpi_video is not built in. This also changes
      some "select" uses to "depends on" to avoid dependency loops.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      14ca7a47
    • H
      acpi-video-detect: Move acpi_osi_is_win8 to osl.c · a87878ba
      Hans de Goede 提交于
      acpi_osi_is_win8 needs access to acpi_gbl_osi_data which is not exported,
      so move it to osl.c. Alternatively we could export acpi_gbl_osi_data but
      that seems undesirable.
      
      This allows video_detect.c to be build as a module, besides that
      acpi_osi_is_win8() is something which does not really belong in
      video_detect.c in the first place.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      a87878ba
    • H
      acpi-video-detect: Move acpi_is_video_device() to acpi/scan.c · adc8bb8e
      Hans de Goede 提交于
      This allows video_detect.c to be build as a module, this is a preparation
      patch for the backlight interface selection logic cleanup.
      
      Note this commit also causes acpi_is_video_device() to always be build
      indepedent of CONFIG_ACPI_VIDEO, as there is no reason to make its
      building depend on CONFIG_ACPI_VIDEO.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      adc8bb8e
    • H
      acpi-video-detect: Make acpi_video_get_capabilities a private function · fb105d96
      Hans de Goede 提交于
      acpi_video_get_capabilities() is only used inside video_detect.c so make
      it static. While at it also remove the prototype for the non existent
      acpi_video_display_switch_support function from acpi.h
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      fb105d96
    • H
      acpi-video-detect: Remove the unused acpi_video_dmi_demote_vendor() function · 7f3b62cf
      Hans de Goede 提交于
      Remove the now unused acpi_video_dmi_demote_vendor() function, this was
      never a proper counter part of acpi_video_dmi_promote_vendor() since
      the calls to acpi_video_dmi_promote_vendor() are not counted.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      7f3b62cf
    • H
      apple-gmux: Stop using acpi_video_dmi_demote_vendor() · a341b8ab
      Hans de Goede 提交于
      acpi_video_dmi_demote_vendor() is going away as part of the cleanup of
      the code for determinging which backlight class driver(s) to register.
      
      The call to acpi_video_dmi_demote_vendor() was meant to undo the call to
      acpi_video_dmi_promote_vendor() when the gmux device is removed, this is
      questionable though since the promote call sets a flag, not a counter, so
      the demote call may undo a promoto done elsewhere. Moreover in practice
      this is a nop since the gmux device is never removed, and the flag is only
      checked when acpi/video.ko gets loaded, so even if the user manually
      removes apple-gmux the demote call is still a nop as video.ko will already
      have loaded by this time.
      
      Also note that none of the other users of acpi_video_dmi_promote_vendor()
      use acpi_video_dmi_demote_vendor().
      
      If we ever encounter a system with a gmux where the acpi-video interface
      should be used, then the proper fix would be to dmi-blacklist the gmux
      driver on that system.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      a341b8ab
    • H
      samsung-laptop: Use acpi_video_unregister_backlight instead of acpi_video_unregister · acf5493c
      Hans de Goede 提交于
      acpi_video_unregister() not only unregisters the acpi-video backlight
      interface but also unregisters the acpi video bus event listener, causing
      e.g. brightness hotkey presses to no longer generate keypress events.
      
      The unregistering of the acpi video bus event listener usually is
      undesirable, which by itself is a good reason to switch to
      acpi_video_unregister_backlight().
      
      Another problem with using acpi_video_unregister() rather then using
      acpi_video_unregister_backlight() is that on systems with an intel video
      opregion (most systems) and a broken_acpi_video quirk, whether or not
      the acpi video bus event listener actually gets unregistered depends on
      module load ordering:
      
      Scenario a:
      1) acpi/video.ko gets loaded (*), does not do acpi_video_register as there
         is an intel opregion.
      2) intel.ko gets loaded, calls acpi_video_register() which registers both
         the listener and the acpi backlight interface
      3) samsung-laptop.ko gets loaded, calls acpi_video_unregister() causing
         both the listener and the acpi backlight interface to unregister
      
      Scenario b:
      1) acpi/video.ko gets loaded (*), does not do acpi_video_register as there
         is an intel opregion.
      2) samsung-laptop.ko gets loaded, calls acpi_video_dmi_promote_vendor(),
         calls acpi_video_unregister(), which is a nop since acpi_video_register
         has not yet been called
      2) intel.ko gets loaded, calls acpi_video_register() which registers
         the listener, but does not register the acpi backlight interface due to
         the call to the preciding call to acpi_video_dmi_promote_vendor()
      
      *) acpi/video.ko always loads first as both other modules depend on it.
      
      So we end up with or without an acpi video bus event listener depending
      on module load ordering, not good.
      
      Switching to using acpi_video_unregister_backlight() means that independ
      of ordering we will always have an acpi video bus event listener fixing
      this.
      
      Note that this commit means that systems without an intel video opregion,
      and systems which were hitting scenario a wrt module load ordering, are
      now getting an acpi video bus event listener while before they were not!
      
      On some systems this may cause the brightness hotkeys to start generating
      keypresses while before they were not (good), while on other systems this
      may cause the brightness hotkeys to generate multiple keypress events for
      a single press (not so good). Since on most systems the acpi video bus is
      the canonical source for brightness events I believe that the latter case
      will needs to be handled on a case by case basis by filtering out the
      duplicate keypresses at the other source for them.
      
      Cc: Corentin Chary <corentin.chary@gmail.com>
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      acf5493c
    • H
      asus-wmi: Use acpi_video_unregister_backlight instead of acpi_video_unregister · 4c27febf
      Hans de Goede 提交于
      acpi_video_unregister() not only unregisters the acpi-video backlight
      interface but also unregisters the acpi video bus event listener, causing
      e.g. brightness hotkey presses to no longer generate keypress events.
      
      The unregistering of the acpi video bus event listener usually is
      undesirable, which by itself is a good reason to switch to
      acpi_video_unregister_backlight().
      
      Another problem with using acpi_video_unregister() rather then using
      acpi_video_unregister_backlight() is that on systems with an intel video
      opregion (most systems) and a wmi_backlight_power quirk, whether or not
      the acpi video bus event listener actually gets unregistered depends on
      module load ordering:
      
      Scenario a:
      1) acpi/video.ko gets loaded (*), does not do acpi_video_register as there
         is an intel opregion.
      2) intel.ko gets loaded, calls acpi_video_register() which registers both
         the listener and the acpi backlight interface
      3) asus-wmi.ko gets loaded, calls acpi_video_unregister() causing both
         the listener and the acpi backlight interface to unregister
      
      Scenario b:
      1) acpi/video.ko gets loaded (*), does not do acpi_video_register as there
         is an intel opregion.
      2) asus-wmi.ko gets loaded, calls acpi_video_dmi_promote_vendor(),
         calls acpi_video_unregister(), which is a nop since acpi_video_register
         has not yet been called
      2) intel.ko gets loaded, calls acpi_video_register() which registers
         the listener, but does not register the acpi backlight interface due to
         the call to the preciding call to acpi_video_dmi_promote_vendor()
      
      *) acpi/video.ko always loads first as both other modules depend on it.
      
      So we end up with or without an acpi video bus event listener depending
      on module load ordering, not good.
      
      Switching to using acpi_video_unregister_backlight() means that independ
      of ordering we will always have an acpi video bus event listener fixing
      this.
      
      Note that this commit means that systems without an intel video opregion,
      and systems which were hitting scenario a wrt module load ordering, are
      now getting an acpi video bus event listener while before they were not!
      
      On some systems this may cause the brightness hotkeys to start generating
      keypresses while before they were not (good), while on other systems this
      may cause the brightness hotkeys to generate multiple keypress events for
      a single press (not so good). Since on most systems the acpi video bus is
      the canonical source for brightness events I believe that the latter case
      will needs to be handled on a case by case basis by filtering out the
      duplicate keypresses at the other source for them.
      
      Cc: Corentin Chary <corentin.chary@gmail.com>
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      4c27febf
    • H
      apple_gmux: Use acpi_video_unregister_backlight instead of acpi_video_unregister · 10bffa65
      Hans de Goede 提交于
      acpi_video_unregister() not only unregisters the acpi-video backlight
      interface but also unregisters the acpi video bus event listener, causing
      e.g. brightness hotkey presses to no longer generate keypress events.
      
      The unregistering of the acpi video bus event listener usually is
      undesirable, which by itself is a good reason to switch to
      acpi_video_unregister_backlight().
      
      Another problem with using acpi_video_unregister() rather then using
      acpi_video_unregister_backlight() is that on systems with an intel video
      opregion (most systems) whether or not the acpi video bus event listener
      actually gets unregistered depends on module load ordering:
      
      Scenario a:
      1) acpi/video.ko gets loaded (*), does not do acpi_video_register as there
         is an intel opregion.
      2) intel.ko gets loaded, calls acpi_video_register() which registers both
         the listener and the acpi backlight interface
      3) apple-gmux.ko gets loaded, calls acpi_video_unregister() causing both
         the listener and the acpi backlight interface to unregister
      
      Scenario b:
      1) acpi/video.ko gets loaded (*), does not do acpi_video_register as there
         is an intel opregion.
      2) apple-gmux.ko gets loaded, calls acpi_video_dmi_promote_vendor(),
         calls acpi_video_unregister(), which is a nop since acpi_video_register
         has not yet been called
      2) intel.ko gets loaded, calls acpi_video_register() which registers
         the listener, but does not register the acpi backlight interface due to
         the call to the preciding call to acpi_video_dmi_promote_vendor()
      
      *) acpi/video.ko always loads first as both other modules depend on it.
      
      So we end up with or without an acpi video bus event listener depending
      on module load ordering, not good.
      
      Switching to using acpi_video_unregister_backlight() means that independ
      of ordering we will always have an acpi video bus event listener fixing
      this.
      
      Note that this commit means that systems without an intel video opregion,
      and systems which were hitting scenario a wrt module load ordering, are
      now getting an acpi video bus event listener while before they were not!
      
      On some systems this may cause the brightness hotkeys to start generating
      keypresses while before they were not (good), while on other systems this
      may cause the brightness hotkeys to generate multiple keypress events for
      a single press (not so good). Since on most systems the acpi video bus is
      the canonical source for brightness events I believe that the latter case
      will needs to be handled on a case by case basis by filtering out the
      duplicate keypresses at the other source for them.
      
      Cc: Seth Forshee <seth.forshee@canonical.com>
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      10bffa65
  2. 15 6月, 2015 4 次提交
  3. 13 6月, 2015 1 次提交
  4. 12 6月, 2015 7 次提交
    • D
      iommu/vt-d: Only enable extended context tables if PASID is supported · c83b2f20
      David Woodhouse 提交于
      Although the extended tables are theoretically a completely orthogonal
      feature to PASID and anything else that *uses* the newly-available bits,
      some of the early hardware has problems even when all we do is enable
      them and use only the same bits that were in the old context tables.
      
      For now, there's no motivation to support extended tables unless we're
      going to use PASID support to do SVM. So just don't use them unless
      PASID support is advertised too. Also add a command-line bailout just in
      case later chips also have issues.
      
      The equivalent problem for PASID support has already been fixed with the
      upcoming VT-d spec update and commit bd00c606 ("iommu/vt-d: Change
      PASID support to bit 40 of Extended Capability Register"), because the
      problematic platforms use the old definition of the PASID-capable bit,
      which is now marked as reserved and meaningless.
      
      So with this change, we'll magically start using ECS again only when we
      see the new hardware advertising "hey, we have PASID support and we
      actually tested it this time" on bit 40.
      
      The VT-d hardware architect has promised that we are not going to have
      any reason to support ECS *without* PASID any time soon, and he'll make
      sure he checks with us before changing that.
      
      In the future, if hypothetical new features also use new bits in the
      context tables and can be seen on implementations *without* PASID support,
      we might need to add their feature bits to the ecs_enabled() macro.
      Signed-off-by: NDavid Woodhouse <David.Woodhouse@intel.com>
      c83b2f20
    • N
      md: make sure MD_RECOVERY_DONE is clear before starting recovery/resync · ea358cd0
      NeilBrown 提交于
      MD_RECOVERY_DONE is normally cleared by md_check_recovery after a
      resync etc finished.  However it is possible for raid5_start_reshape
      to race and start a reshape before MD_RECOVERY_DONE is cleared.  This
      can lean to multiple reshapes running at the same time, which isn't
      good.
      
      To make sure it is cleared before starting a reshape, and also clear
      it when reaping a thread, just to be safe.
      Signed-off-by: NNeilBrown  <neilb@suse.de>
      ea358cd0
    • N
      md: Close race when setting 'action' to 'idle'. · 8e8e2518
      NeilBrown 提交于
      Checking ->sync_thread without holding the mddev_lock()
      isn't really safe, even after flushing the workqueue which
      ensures md_start_sync() has been run.
      
      While this code is waiting for the lock, md_check_recovery could reap
      the thread itself, and then start another thread (e.g. recovery might
      finish, then reshape starts).  When this thread gets the lock
      md_start_sync() hasn't run so it doesn't get reaped, but
      MD_RECOVERY_RUNNING gets cleared.  This allows two threads to start
      which leads to confusion.
      
      So don't both if MD_RECOVERY_RUNNING isn't set, but if it is do
      the flush and the test and the reap all under the mddev_lock to
      avoid any race with md_check_recovery.
      Signed-off-by: NNeilBrown <neilb@suse.de>
      Fixes: 6791875e ("md: make reconfig_mutex optional for writes to md sysfs files.")
      Cc: stable@vger.kernel.org (v4.0+)
      8e8e2518
    • N
      md: don't return 0 from array_state_store · c008f1d3
      NeilBrown 提交于
      Returning zero from a 'store' function is bad.
      The return value should be either len length of the string
      or an error.
      
      So use 'len' if 'err' is zero.
      
      Fixes: 6791875e ("md: make reconfig_mutex optional for writes to md sysfs files.")
      Signed-off-by: NNeilBrown <neilb@suse.de>
      Cc: stable@vger.kernel (v4.0+)
      c008f1d3
    • K
      dmaengine: Fix choppy sound because of unimplemented resume · 88d04643
      Krzysztof Kozlowski 提交于
      Some drivers implement only pause operation (no resuming). Example is
      pl330 where pause is needed for getting residuum. pl330 does not support
      resume operation, transfer must be stopped after pause.
      
      However for slaves this is exposed always as "pause and resume" which
      introduces subtle errors on Odroid U3 board (Exynos4412 with pl330).
      After adding pause function to pl330 driver the audio playback
      (utilizing DMA) gets choppy after some time (approximately 24 hours).
      
      Fix this by exposing "cmd_pause" if and only if pause and resume are
      implemented.
      Signed-off-by: NKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Reported-by: gabriel@unseen.is
      Reported-by: NMarek Szyprowski <m.szyprowski@samsung.com>
      Cc: <stable@vger.kernel.org>
      Fixes: 88987d2c ("dmaengine: pl330: add DMA_PAUSE feature")
      Acked-by: NMaxime Ripard <maxime.ripard@free-electrons.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      88d04643
    • R
      net: igb: fix the start time for periodic output signals · 58c98be1
      Richard Cochran 提交于
      When programming the start of a periodic output, the code wrongly places
      the seconds value into the "low" register and the nanoseconds into the
      "high" register.  Even though this is backwards, it slipped through my
      testing, because the re-arming code in the interrupt service routine is
      correct, and the signal does appear starting with the second edge.
      
      This patch fixes the issue by programming the registers correctly.
      Signed-off-by: NRichard Cochran <richardcochran@gmail.com>
      Reviewed-by: NJacob Keller <jacob.e.keller@intel.com>
      Acked-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      58c98be1
    • R
      block: pmem: Add dependency on HAS_IOMEM · b6f2098f
      Richard Weinberger 提交于
      Not all architectures have io memory.
      
      Fixes:
      drivers/block/pmem.c: In function ‘pmem_alloc’:
      drivers/block/pmem.c:146:2: error: implicit declaration of function ‘ioremap_nocache’ [-Werror=implicit-function-declaration]
        pmem->virt_addr = ioremap_nocache(pmem->phys_addr, pmem->size);
        ^
      drivers/block/pmem.c:146:18: warning: assignment makes pointer from integer without a cast [enabled by default]
        pmem->virt_addr = ioremap_nocache(pmem->phys_addr, pmem->size);
                        ^
      drivers/block/pmem.c:182:2: error: implicit declaration of function ‘iounmap’ [-Werror=implicit-function-declaration]
        iounmap(pmem->virt_addr);
        ^
      Signed-off-by: NRichard Weinberger <richard@nod.at>
      Reviewed-by: NRoss Zwisler <ross.zwisler@linux.intel.com>
      Signed-off-by: NJens Axboe <axboe@fb.com>
      b6f2098f
  5. 11 6月, 2015 9 次提交
    • M
      drm/radeon: Make sure radeon_vm_bo_set_addr always unreserves the BO · ee18e599
      Michel Dänzer 提交于
      Some error paths didn't unreserve the BO. This resulted in a deadlock
      down the road on the next attempt to reserve the (still reserved) BO.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90873
      Cc: stable@vger.kernel.org
      Reviewed-by: NChristian König <christian.koenig@amd.com>
      Signed-off-by: NMichel Dänzer <michel.daenzer@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      ee18e599
    • A
      Revert "drm/radeon: adjust pll when audio is not enabled" · ebb9bf18
      Alex Deucher 提交于
      This reverts commit 7fe04d6f.
      
      Fixes some systems at the expense of others.  Need to properly
      fix the pll divider selection.
      
      bug:
      https://bugzilla.kernel.org/show_bug.cgi?id=99651
      
      Cc: stable@vger.kernel.org
      ebb9bf18
    • A
      Revert "drm/radeon: don't share plls if monitors differ in audio support" · 6fb3c025
      Alex Deucher 提交于
      This reverts commit a10f0df0.
      
      Fixes some systems at the expense of others.  Need to properly
      fix the pll divider selection.
      
      bug:
      https://bugzilla.kernel.org/show_bug.cgi?id=99651
      
      Cc: stable@vger.kernel.org
      6fb3c025
    • J
      drm/radeon: fix freeze for laptop with Turks/Thames GPU. · 6dfd1972
      Jérôme Glisse 提交于
      Laptop with Turks/Thames GPU will freeze if dpm is enabled. It seems
      the SMC engine is relying on some state inside the CP engine. CP needs
      to chew at least one packet for it to get in good state for dynamic
      power management.
      
      This patch simply disabled and re-enable DPM after the ring test which
      is enough to avoid the freeze.
      Signed-off-by: NJérôme Glisse <jglisse@redhat.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      6dfd1972
    • D
      ntb: initialize max_mw for Atom before using it · ebaad132
      Daniel Verkamp 提交于
      Commit ab760a0c (ntb: Adding split BAR support for Haswell platforms)
      changed ntb_device's mw from a fixed-size array into a pointer that is
      allocated based on limits.max_mw; however, on Atom platforms, max_mw
      is not initialized until ntb_device_setup(), which happens after the
      allocation.
      
      Fill out max_mw in ntb_atom_detect() to match ntb_xeon_detect(); this
      happens before the use of max_mw in the ndev->mw allocation.
      
      Fixes a null pointer dereference on Atom platforms with ntb hardware.
      
      v2: fix typo (mw_max should be max_mw)
      Signed-off-by: NDaniel Verkamp <daniel.verkamp@intel.com>
      Acked-by: NDave Jiang <dave.jiang@intel.com>
      Signed-off-by: NJon Mason <jdmason@kudzu.us>
      ebaad132
    • G
      enic: fix memory leak in rq_clean · 8b13b4e0
      Govindarajulu Varadarajan 提交于
      When incoming packet qualifies for rx_copybreak, we copy the data to newly
      allocated skb. We do not free/unmap the original buffer. At this point driver
      assumes this buffer is unallocated. When enic_rq_alloc_buf() is called for
      buffer allocation, it checks if buf->os_buf is NULL. If its not NULL that means
      buffer can be re-used.
      
      When vnic_rq_clean() is called for freeing all rq buffers, and if the
      rx_copybreak reused buffer falls outside the used desc, we do not free the
      buffer. The following trace is observer when dma-debug is enabled.
      
      Fix is to walk through complete ring and clean if buffer is present.
      
      [   40.555386] ------------[ cut here ]------------
      [   40.555396] WARNING: CPU: 0 PID: 491 at lib/dma-debug.c:971 dma_debug_device_change+0x188/0x1f0()
      [   40.555400] pci 0000:06:00.0: DMA-API: device driver has pending DMA allocations while released from device [count=4]
                     One of leaked entries details: [device address=0x00000000ff4cc040] [size=9018 bytes] [mapped with DMA_FROM_DEVICE] [mapped as single]
      [   40.555402] Modules linked in: nfsv3 nfs_acl rpcsec_gss_krb5 auth_rpcgss oid_registry nfsv4 dns_resolver coretemp intel_rapl iosf_mbi x86_pkg_temp_thermal intel_powerclamp kvm_intel kvm crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lrw joydev mousedev gf128mul hid_generic glue_helper mgag200 usbhid ttm hid drm_kms_helper drm ablk_helper syscopyarea sysfillrect sysimgblt i2c_algo_bit i2c_core iTCO_wdt cryptd mac_hid evdev pcspkr sb_edac edac_core tpm_tis iTCO_vendor_support ipmi_si wmi tpm ipmi_msghandler shpchp lpc_ich processor acpi_power_meter hwmon button ac sch_fq_codel nfs lockd grace sunrpc fscache sd_mod ehci_pci ehci_hcd megaraid_sas usbcore scsi_mod usb_common enic(-) crc32c_generic crc32c_intel btrfs xor raid6_pq ext4 crc16 mbcache jbd2
      [   40.555467] CPU: 0 PID: 491 Comm: rmmod Not tainted 4.1.0-rc7-ARCH-01305-gf59b71f #118
      [   40.555469] Hardware name: Cisco Systems Inc UCSB-B200-M4/UCSB-B200-M4, BIOS B200M4.2.2.2.23.061220140128 06/12/2014
      [   40.555471]  0000000000000000 00000000e2f8a5b7 ffff880275f8bc48 ffffffff8158d6f0
      [   40.555474]  0000000000000000 ffff880275f8bca0 ffff880275f8bc88 ffffffff8107b04a
      [   40.555477]  ffff8802734e0000 0000000000000004 ffff8804763fb3c0 ffff88027600b650
      [   40.555480] Call Trace:
      [   40.555488]  [<ffffffff8158d6f0>] dump_stack+0x4f/0x7b
      [   40.555492]  [<ffffffff8107b04a>] warn_slowpath_common+0x8a/0xc0
      [   40.555494]  [<ffffffff8107b0d5>] warn_slowpath_fmt+0x55/0x70
      [   40.555498]  [<ffffffff812fa408>] dma_debug_device_change+0x188/0x1f0
      [   40.555503]  [<ffffffff8109aaef>] notifier_call_chain+0x4f/0x80
      [   40.555506]  [<ffffffff8109aecb>] __blocking_notifier_call_chain+0x4b/0x70
      [   40.555510]  [<ffffffff8109af06>] blocking_notifier_call_chain+0x16/0x20
      [   40.555514]  [<ffffffff813f8066>] __device_release_driver+0xf6/0x120
      [   40.555518]  [<ffffffff813f8b08>] driver_detach+0xc8/0xd0
      [   40.555523]  [<ffffffff813f7c59>] bus_remove_driver+0x59/0xe0
      [   40.555527]  [<ffffffff813f93a0>] driver_unregister+0x30/0x70
      [   40.555534]  [<ffffffff8131532d>] pci_unregister_driver+0x2d/0xa0
      [   40.555542]  [<ffffffffa0200ec2>] enic_cleanup_module+0x10/0x14e [enic]
      [   40.555547]  [<ffffffff8110158f>] SyS_delete_module+0x1cf/0x280
      [   40.555551]  [<ffffffff811e284e>] ? ____fput+0xe/0x10
      [   40.555554]  [<ffffffff810980ec>] ? task_work_run+0xbc/0xf0
      [   40.555558]  [<ffffffff815930ee>] system_call_fastpath+0x12/0x71
      [   40.555561] ---[ end trace 4988cadc77c2b236 ]---
      [   40.555562] Mapped at:
      [   40.555563]  [<ffffffff812fa865>] debug_dma_map_page+0x95/0x150
      [   40.555566]  [<ffffffffa01f4a88>] enic_rq_alloc_buf+0x1b8/0x360 [enic]
      [   40.555570]  [<ffffffffa01f7658>] enic_open+0xf8/0x820 [enic]
      [   40.555574]  [<ffffffff8148d50e>] __dev_open+0xce/0x150
      [   40.555579]  [<ffffffff8148d851>] __dev_change_flags+0xa1/0x170
      Signed-off-by: NGovindarajulu Varadarajan <_govind@gmx.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8b13b4e0
    • G
      enic: check return value for stat dump · 19b596bd
      Govindarajulu Varadarajan 提交于
      We do not check the return value of enic_dev_stats_dump(). If allocation
      fails, we will hit NULL pointer reference.
      
      Return only if memory allocation fails. For other failures, we return the
      previously recorded values.
      Signed-off-by: NGovindarajulu Varadarajan <_govind@gmx.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      19b596bd
    • G
      enic: unlock napi busy poll before unmasking intr · 6286e828
      Govindarajulu Varadarajan 提交于
      There is a small window between vnic_intr_unmask() and enic_poll_unlock_napi().
      In this window if an irq occurs and napi is scheduled on different cpu, it tries
      to acquire enic_poll_lock_napi() and hits the following WARN_ON message.
      
      Fix is to unlock napi_poll before unmasking the interrupt.
      
      [  781.121746] ------------[ cut here ]------------
      [  781.121789] WARNING: CPU: 1 PID: 0 at drivers/net/ethernet/cisco/enic/vnic_rq.h:228 enic_poll_msix_rq+0x36a/0x3c0 [enic]()
      [  781.121834] Modules linked in: nfsv3 nfs_acl rpcsec_gss_krb5 auth_rpcgss oid_registry nfsv4 dns_resolver coretemp intel_rapl iosf_mbi x86_pkg_temp_thermal intel_powerclamp kvm_intel kvm crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel mgag200 ttm drm_kms_helper joydev aes_x86_64 lrw drm gf128mul mousedev glue_helper sb_edac ablk_helper iTCO_wdt iTCO_vendor_support evdev ipmi_si syscopyarea sysfillrect sysimgblt i2c_algo_bit i2c_core edac_core lpc_ich mac_hid cryptd pcspkr ipmi_msghandler shpchp tpm_tis acpi_power_meter tpm wmi processor hwmon button ac sch_fq_codel nfs lockd grace sunrpc fscache hid_generic usbhid hid ehci_pci ehci_hcd sd_mod megaraid_sas usbcore scsi_mod usb_common enic crc32c_generic crc32c_intel btrfs xor raid6_pq ext4 crc16 mbcache jbd2
      [  781.122176] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.1.0-rc6-ARCH-00040-gc46a024e-dirty #106
      [  781.122210] Hardware name: Cisco Systems Inc UCSB-B200-M4/UCSB-B200-M4, BIOS B200M4.2.2.2.23.061220140128 06/12/2014
      [  781.122252]  0000000000000000 bddbbc9d655ec96e ffff880277e43da8 ffffffff81583fe8
      [  781.122286]  0000000000000000 0000000000000000 ffff880277e43de8 ffffffff8107acfa
      [  781.122319]  ffff880272c01000 ffff880273f18000 ffff880273f1a100 0000000000000000
      [  781.122352] Call Trace:
      [  781.122364]  <IRQ>  [<ffffffff81583fe8>] dump_stack+0x4f/0x7b
      [  781.122399]  [<ffffffff8107acfa>] warn_slowpath_common+0x8a/0xc0
      [  781.122425]  [<ffffffff8107ae2a>] warn_slowpath_null+0x1a/0x20
      [  781.122455]  [<ffffffffa01fa9ca>] enic_poll_msix_rq+0x36a/0x3c0 [enic]
      [  781.122487]  [<ffffffff8148525a>] net_rx_action+0x22a/0x370
      [  781.122512]  [<ffffffff8107ed3d>] __do_softirq+0xed/0x2d0
      [  781.122537]  [<ffffffff8107f06e>] irq_exit+0x7e/0xa0
      [  781.122560]  [<ffffffff8158c424>] do_IRQ+0x64/0x100
      [  781.122582]  [<ffffffff8158a42e>] common_interrupt+0x6e/0x6e
      [  781.122605]  <EOI>  [<ffffffff810bd331>] ? cpu_startup_entry+0x121/0x480
      [  781.122638]  [<ffffffff810bd2fc>] ? cpu_startup_entry+0xec/0x480
      [  781.122667]  [<ffffffff810f2ed3>] ? clockevents_register_device+0x113/0x1f0
      [  781.122698]  [<ffffffff81050ab6>] start_secondary+0x196/0x1e0
      [  781.122723] ---[ end trace cec2e9dd3af7b9db ]---
      Signed-off-by: NGovindarajulu Varadarajan <_govind@gmx.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6286e828
    • W
      zram: clear disk io accounting when reset zram device · d7ad41a1
      Weijie Yang 提交于
      Clear zram disk io accounting when resetting the zram device.  Otherwise
      the residual io accounting stat will affect the diskstat in the next
      zram active cycle.
      Signed-off-by: NWeijie Yang <weijie.yang@samsung.com>
      Acked-by: NSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Acked-by: NMinchan Kim <minchan@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      d7ad41a1
  6. 09 6月, 2015 2 次提交
    • H
      SSB: Fix handling of ssb_pmu_get_alp_clock() · 36f6ea2b
      Hauke Mehrtens 提交于
      Dan Carpenter reported missing brackets which resulted in reading a
      wrong crystalfreq value. I also noticed that the result of this
      function is ignored.
      Reported-By: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NHauke Mehrtens <hauke@hauke-m.de>
      Signed-off-by: NMichael Buesch <m@bues.ch>
      Cc: davem@davemloft.net
      Cc: netdev@vger.kernel.org
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/10536/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      36f6ea2b
    • J
      drm/i915: Fix DDC probe for passive adapters · 3f5f1554
      Jani Nikula 提交于
      Passive DP->DVI/HDMI dongles on DP++ ports show up to the system as HDMI
      devices, as they do not have a sink device in them to respond to any AUX
      traffic. When probing these dongles over the DDC, sometimes they will
      NAK the first attempt even though the transaction is valid and they
      support the DDC protocol. The retry loop inside of
      drm_do_probe_ddc_edid() would normally catch this case and try the
      transaction again, resulting in success.
      
      That, however, was thwarted by the fix for [1]:
      
      commit 9292f37e
      Author: Eugeni Dodonov <eugeni.dodonov@intel.com>
      Date:   Thu Jan 5 09:34:28 2012 -0200
      
          drm: give up on edid retries when i2c bus is not responding
      
      This added code to exit immediately if the return code from the
      i2c_transfer function was -ENXIO in order to reduce the amount of time
      spent in waiting for unresponsive or disconnected devices. That was
      possible because the underlying i2c bit banging algorithm had retries of
      its own (which, of course, were part of the reason for the bug the
      commit fixes).
      
      Since its introduction in
      
      commit f899fc64
      Author: Chris Wilson <chris@chris-wilson.co.uk>
      Date:   Tue Jul 20 15:44:45 2010 -0700
      
          drm/i915: use GMBUS to manage i2c links
      
      we've been flipping back and forth enabling the GMBUS transfers, but
      we've settled since then. The GMBUS implementation does not do any
      retries, however, bailing out of the drm_do_probe_ddc_edid() retry loop
      on first encounter of -ENXIO. This, combined with Eugeni's commit, broke
      the retry on -ENXIO.
      
      Retry GMBUS once on -ENXIO on first message to mitigate the issues with
      passive adapters.
      
      This patch is based on the work, and commit message, by Todd Previte
      <tprevite@gmail.com>.
      
      [1] https://bugs.freedesktop.org/show_bug.cgi?id=41059
      
      v2: Don't retry if using bit banging.
      
      v3: Move retry within gmbux_xfer, retry only on first message.
      
      v4: Initialize GMBUS0 on retry (Ville).
      
      v5: Take index reads into account (Ville).
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85924
      Cc: Todd Previte <tprevite@gmail.com>
      Cc: stable@vger.kernel.org
      Tested-by: Oliver Grafe <oliver.grafe@ge.com> (v2)
      Tested-by: NJim Bride <jim.bride@linux.intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      3f5f1554