1. 09 9月, 2014 5 次提交
  2. 31 8月, 2014 1 次提交
  3. 27 8月, 2014 1 次提交
    • M
      regmap: Fix handling of volatile registers for format_write() chips · 5844a8b9
      Mark Brown 提交于
      A previous over-zealous factorisation of code means that we only treat
      registers as volatile if they are readable. For most devices this is fine
      since normally most registers can be read and volatility implies
      readability but for format_write() devices where there is no readback from
      the hardware and we use volatility to mean simply uncacheability this means
      that we end up treating all registers as cacheble.
      
      A bigger refactoring of the code to clarify this is in order but as a fix
      make a minimal change and only check readability when checking volatility
      if there is no format_write() operation defined for the device.
      Signed-off-by: NMark Brown <broonie@linaro.org>
      Tested-by: NLars-Peter Clausen <lars@metafoo.de>
      Cc: stable@vger.kernel.org
      5844a8b9
  4. 26 8月, 2014 1 次提交
    • L
      regmap: Fix regcache debugfs initialization · 5e0cbe78
      Lars-Peter Clausen 提交于
      Commit 6cfec04b ("regmap: Separate regmap dev initialization") moved the
      regmap debugfs initialization after regcache initialization. This means
      that the regmap debugfs directory is not created yet when the cache
      initialization runs and so any debugfs files registered by the regcache are
      created in the debugfs root directory rather than the debugfs directory of
      the regmap instance. Fix this by adding a separate callback for the
      regcache debugfs initialization which will be called after the parent
      debugfs entry has been created.
      
      Fixes: 6cfec04b (regmap: Separate regmap dev initialization)
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      Cc: stable@vger.kernel.org
      5e0cbe78
  5. 07 8月, 2014 9 次提交
  6. 29 7月, 2014 1 次提交
  7. 26 7月, 2014 4 次提交
  8. 24 7月, 2014 1 次提交
  9. 18 7月, 2014 1 次提交
  10. 12 7月, 2014 1 次提交
    • G
      platform_get_irq: Revert to platform_get_resource if of_irq_get fails · aff008ad
      Guenter Roeck 提交于
      Commits 9ec36caf (of/irq: do irq resolution in platform_get_irq)
      and ad69674e (of/irq: do irq resolution in platform_get_irq_byname)
      change the semantics of platform_get_irq and platform_get_irq_byname
      to always rely on devicetree information if devicetree is enabled
      and if a devicetree node is attached to the device. The functions
      now return an error if the devicetree data does not include interrupt
      information, even if the information is available as platform resource
      data.
      
      This causes mfd client drivers to fail if the interrupt number is
      passed via platform resources. Therefore, if of_irq_get fails, try
      platform_get_resource as method of last resort. This restores the
      original functionality for drivers depending on platform resources
      to get irq information.
      
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Grant Likely <grant.likely@linaro.org>
      Cc: Grygorii Strashko <grygorii.strashko@ti.com>
      Signed-off-by: NGuenter Roeck <linux@roeck-us.net>
      Acked-by: NRob Herring <robh@kernel.org>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      aff008ad
  11. 09 7月, 2014 8 次提交
    • K
      driver core: platform: add device binding path 'driver_override' · 3d713e0e
      Kim Phillips 提交于
      Needed by platform device drivers, such as the upcoming
      vfio-platform driver, in order to bypass the existing OF, ACPI,
      id_table and name string matches, and successfully be able to be
      bound to any device, like so:
      
      echo vfio-platform > /sys/bus/platform/devices/fff51000.ethernet/driver_override
      echo fff51000.ethernet > /sys/bus/platform/devices/fff51000.ethernet/driver/unbind
      echo fff51000.ethernet > /sys/bus/platform/drivers_probe
      
      This mimics "PCI: Introduce new device binding path using
      pci_dev.driver_override", which is an interface enhancement
      for more deterministic PCI device binding, e.g., when in the
      presence of hotplug.
      Reviewed-by: NAlex Williamson <alex.williamson@redhat.com>
      Reviewed-by: NAlexander Graf <agraf@suse.de>
      Reviewed-by: NStuart Yoder <stuart.yoder@freescale.com>
      Signed-off-by: NKim Phillips <kim.phillips@freescale.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3d713e0e
    • Y
      driver core/platform: remove unused implicit padding in platform_object · 1cec24c5
      Yann Droneaud 提交于
      Up to 7 bytes are wasted at the end of struct platform_object
      in the form of padding after name field: unfortunately this
      padding is not used when allocating the memory to hold the
      name.
      
      This patch converts name array from name[1] to C99 flexible
      array name[] (equivalent to name[0]) so that no padding is
      required by the presence of this field. Memory allocation
      is updated to take care of allocating an additional byte for
      the NUL terminating character.
      
      Built on Fedora 20, using GCC 4.8, for ARM, i386, SPARC64 and
      x86_64 architectures, the data structure layout can be reported
      with following command:
      
        $ pahole drivers/base/platform.o \
                 --recursive             \
                 --class_name device,pdev_archdata,platform_device,platform_object
      
      Please find below some comparisons of structure layout for arm,
      i386, sparc64 and x86_64 architecture before and after the patch.
      
        --- obj-arm/drivers/base/platform.o.pahole.v3.15-rc7-79-gfe45736f	2014-05-30 10:32:06.290960701 +0200
        +++ obj-arm/drivers/base/platform.o.pahole.v3.15-rc7-80-g2cdb06858d71	2014-05-30 11:26:20.851988347 +0200
        @@ -81,10 +81,9 @@
           /* XXX last struct has 4 bytes of padding */
      
        	/* --- cacheline 6 boundary (384 bytes) was 8 bytes ago --- */
        -	char                       name[1];              /*   392     1 */
        +	char                       name[0];              /*   392     0 */
      
        -	/* size: 400, cachelines: 7, members: 2 */
        -	/* padding: 7 */
        +	/* size: 392, cachelines: 7, members: 2 */
         	/* paddings: 1, sum paddings: 4 */
        -	/* last cacheline: 16 bytes */
        +	/* last cacheline: 8 bytes */
         };
      
        --- obj-i386/drivers/base/platform.o.pahole.v3.15-rc7-79-gfe45736f 2014-05-30 10:32:06.305960691 +0200
        +++ obj-i386/drivers/base/platform.o.pahole.v3.15-rc7-80-g2cdb06858d71 2014-05-30 11:26:20.875988332 +0200
        @@ -73,9 +73,8 @@
         struct platform_object {
         	struct platform_device     pdev;                 /*     0   396 */
         	/* --- cacheline 6 boundary (384 bytes) was 12 bytes ago --- */
        -	char                       name[1];              /*   396     1 */
        +	char                       name[0];              /*   396     0 */
      
        -	/* size: 400, cachelines: 7, members: 2 */
        -	/* padding: 3 */
        -	/* last cacheline: 16 bytes */
        +	/* size: 396, cachelines: 7, members: 2 */
        +	/* last cacheline: 12 bytes */
         };
      
        --- obj-sparc64/drivers/base/platform.o.pahole.v3.15-rc7-79-gfe45736f 2014-05-30 10:32:06.406960625 +0200
        +++ obj-sparc64/drivers/base/platform.o.pahole.v3.15-rc7-80-g2cdb06858d71 2014-05-30 11:26:20.971988269 +0200
        @@ -94,9 +94,8 @@
         struct platform_object {
         	struct platform_device     pdev;                 /*     0  2208 */
         	/* --- cacheline 34 boundary (2176 bytes) was 32 bytes ago --- */
        -	char                       name[1];              /*  2208     1 */
        +	char                       name[0];              /*  2208     0 */
      
        -	/* size: 2216, cachelines: 35, members: 2 */
        -	/* padding: 7 */
        -	/* last cacheline: 40 bytes */
        +	/* size: 2208, cachelines: 35, members: 2 */
        +	/* last cacheline: 32 bytes */
         };
      
        --- obj-x86_64/drivers/base/platform.o.pahole.v3.15-rc7-79-gfe45736f 2014-05-30 10:32:06.432960608 +0200
        +++ obj-x86_64/drivers/base/platform.o.pahole.v3.15-rc7-80-g2cdb06858d71 2014-05-30 11:26:21.000988250 +0200
        @@ -84,9 +84,8 @@
         struct platform_object {
         	struct platform_device     pdev;                 /*     0   720 */
         	/* --- cacheline 11 boundary (704 bytes) was 16 bytes ago --- */
        -	char                       name[1];              /*   720     1 */
        +	char                       name[0];              /*   720     0 */
      
        -	/* size: 728, cachelines: 12, members: 2 */
        -	/* padding: 7 */
        -	/* last cacheline: 24 bytes */
        +	/* size: 720, cachelines: 12, members: 2 */
        +	/* last cacheline: 16 bytes */
         };
      
      Changes from v5 [1]:
      - dropped dma_mask allocation changes and only kept padding
        removal changes (name array length set to 0).
      
      Changes from v4 [2]:
      [by Emil Goode <emilgoode@gmail.com>:]
      - Split v4 of the patch into two separate patches.
      - Generated new object file size and data structure layout info.
      - Updated the changelog message.
      
      Changes from v3 [3]:
      - fixed commit message so that git am doesn't fail.
      
      Changes from v2 [4]:
      - move 'dma_mask' to platform_object so that it's always
        allocated and won't leak on release; remove all previously
        added support functions.
      - use C99 flexible array member for 'name' to remove padding
        at the end of platform_object.
      
      Changes from v1 [5]:
      - remove unneeded kfree() from error path
      - add reference to author/commit adding allocation of dmamask
      
      Changes from v0 [6]:
      - small rewrite to squeeze the patch to a bare minimal
      
      [1] http://lkml.kernel.org/r/1401122483-31603-2-git-send-email-emilgoode@gmail.com
          http://lkml.kernel.org/r/1401122483-31603-1-git-send-email-emilgoode@gmail.com
          http://lkml.kernel.org/r/1401122483-31603-3-git-send-email-emilgoode@gmail.com
      
      [2] http://lkml.kernel.org/r/1390817152-30898-1-git-send-email-ydroneaud@opteya.com
          https://patchwork.kernel.org/patch/3541871/
      
      [3] http://lkml.kernel.org/r/1390771138-28348-1-git-send-email-ydroneaud@opteya.com
          https://patchwork.kernel.org/patch/3540081/
      
      [4] http://lkml.kernel.org/r/1389683909-17495-1-git-send-email-ydroneaud@opteya.com
          https://patchwork.kernel.org/patch/3484411/
      
      [5] http://lkml.kernel.org/r/1389649085-7365-1-git-send-email-ydroneaud@opteya.com
          https://patchwork.kernel.org/patch/3480961/
      
      [6] http://lkml.kernel.org/r/1386886207-2735-1-git-send-email-ydroneaud@opteya.com
      
      Cc: Emil Goode <emilgoode@gmail.com>
      Cc: Dan Carpenter <dan.carpenter@oracle.com>
      Cc: Shawn Guo <shawn.guo@freescale.com>
      Cc: Sascha Hauer <kernel@pengutronix.de>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Olof Johansson <olof@lixom.net>
      Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
      Signed-off-by: NYann Droneaud <ydroneaud@opteya.com>
      Acked-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1cec24c5
    • L
      firmware loader: inform direct failure when udev loader is disabled · c868edf4
      Luis R. Rodriguez 提交于
      Now that the udev firmware loader is optional request_firmware()
      will not provide any information on the kernel ring buffer if
      direct firmware loading failed and udev firmware loading is disabled.
      If no information is needed request_firmware_direct() should be used
      for optional firmware, at which point drivers can take on the onus
      over informing of any failures, if udev firmware loading is disabled
      though we should at the very least provide some sort of information
      as when the udev loader was enabled by default back in the days.
      
      With this change with a simple firmware load test module [0]:
      
      Example output without FW_LOADER_USER_HELPER_FALLBACK
      
      platform fake-dev.0: Direct firmware load for fake.bin failed
      with error -2
      
      Example with FW_LOADER_USER_HELPER_FALLBACK
      
      platform fake-dev.0: Direct firmware load for fake.bin failed with error -2
      platform fake-dev.0: Falling back to user helper
      
      Without this change without FW_LOADER_USER_HELPER_FALLBACK we
      get no output logged upon failure.
      
      Cc: Tom Gundersen <teg@jklm.no>
      Cc: Ming Lei <ming.lei@canonical.com>
      Cc: Abhay Salunke <Abhay_Salunke@dell.com>
      Cc: Stefan Roese <sr@denx.de>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Kay Sievers <kay@vrfy.org>
      Signed-off-by: NLuis R. Rodriguez <mcgrof@suse.com>
      Reviewed-by: NTakashi Iwai <tiwai@suse.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c868edf4
    • F
      firmware: replace ALIGN(PAGE_SIZE) by PAGE_ALIGN · a76040d8
      Fabian Frederick 提交于
      use mm.h definition
      
      Cc: Ming Lei <ming.lei@canonical.com>
      Signed-off-by: NFabian Frederick <fabf@skynet.be>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a76040d8
    • D
      firmware: read firmware size using i_size_read() · 6af6b163
      Dmitry Kasatkin 提交于
      There is no need to read attr because inode structure contains size
      of the file. Use i_size_read() instead.
      Signed-off-by: NDmitry Kasatkin <d.kasatkin@samsung.com>
      Acked-by: NMing Lei <ming.lei@canonical.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6af6b163
    • T
      firmware loader: allow disabling of udev as firmware loader · 5a1379e8
      Takashi Iwai 提交于
      [The patch was originally proposed by Tom Gundersen, and rewritten
       afterwards by me; most of changelogs below borrowed from Tom's
       original patch -- tiwai]
      
      Currently (at least) the dell-rbu driver selects FW_LOADER_USER_HELPER,
      which means that distros can't really stop loading firmware through
      udev without breaking other users (though some have).
      
      Ideally we would remove/disable the udev firmware helper in both the
      kernel and in udev, but if we were to disable it in udev and not the
      kernel, the result would be (seemingly) hung kernels as no one would
      be around to cancel firmware requests.
      
      This patch allows udev firmware loading to be disabled while still
      allowing non-udev firmware loading, as done by the dell-rbu driver, to
      continue working. This is achieved by only using the fallback
      mechanism when the uevent is suppressed.
      
      The patch renames the user-selectable Kconfig from FW_LOADER_USER_HELPER
      to FW_LOADER_USER_HELPER_FALLBACK, and the former is reverse-selected
      by the latter or the drivers that need userhelper like dell-rbu.
      
      Also, the "default y" is removed together with this change, since it's
      been deprecated in udev upstream, thus rather better to disable it
      nowadays.
      
      Tested with
          FW_LOADER_USER_HELPER=n
          LATTICE_ECP3_CONFIG=y
          DELL_RBU=y
      and udev without the firmware loading support, but I don't have the
      hardware to test the lattice/dell drivers, so additional testing would
      be appreciated.
      Reviewed-by: NTom Gundersen <teg@jklm.no>
      Cc: Ming Lei <ming.lei@canonical.com>
      Cc: Abhay Salunke <Abhay_Salunke@dell.com>
      Cc: Stefan Roese <sr@denx.de>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Kay Sievers <kay@vrfy.org>
      Tested-by: NBalaji Singh <B_B_Singh@DELL.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5a1379e8
    • M
      fence: dma-buf cross-device synchronization (v18) · e941759c
      Maarten Lankhorst 提交于
      A fence can be attached to a buffer which is being filled or consumed
      by hw, to allow userspace to pass the buffer without waiting to another
      device.  For example, userspace can call page_flip ioctl to display the
      next frame of graphics after kicking the GPU but while the GPU is still
      rendering.  The display device sharing the buffer with the GPU would
      attach a callback to get notified when the GPU's rendering-complete IRQ
      fires, to update the scan-out address of the display, without having to
      wake up userspace.
      
      A driver must allocate a fence context for each execution ring that can
      run in parallel. The function for this takes an argument with how many
      contexts to allocate:
        + fence_context_alloc()
      
      A fence is transient, one-shot deal.  It is allocated and attached
      to one or more dma-buf's.  When the one that attached it is done, with
      the pending operation, it can signal the fence:
        + fence_signal()
      
      To have a rough approximation whether a fence is fired, call:
        + fence_is_signaled()
      
      The dma-buf-mgr handles tracking, and waiting on, the fences associated
      with a dma-buf.
      
      The one pending on the fence can add an async callback:
        + fence_add_callback()
      
      The callback can optionally be cancelled with:
        + fence_remove_callback()
      
      To wait synchronously, optionally with a timeout:
        + fence_wait()
        + fence_wait_timeout()
      
      When emitting a fence, call:
        + trace_fence_emit()
      
      To annotate that a fence is blocking on another fence, call:
        + trace_fence_annotate_wait_on(fence, on_fence)
      
      A default software-only implementation is provided, which can be used
      by drivers attaching a fence to a buffer when they have no other means
      for hw sync.  But a memory backed fence is also envisioned, because it
      is common that GPU's can write to, or poll on some memory location for
      synchronization.  For example:
      
        fence = custom_get_fence(...);
        if ((seqno_fence = to_seqno_fence(fence)) != NULL) {
          dma_buf *fence_buf = seqno_fence->sync_buf;
          get_dma_buf(fence_buf);
      
          ... tell the hw the memory location to wait ...
          custom_wait_on(fence_buf, seqno_fence->seqno_ofs, fence->seqno);
        } else {
          /* fall-back to sw sync * /
          fence_add_callback(fence, my_cb);
        }
      
      On SoC platforms, if some other hw mechanism is provided for synchronizing
      between IP blocks, it could be supported as an alternate implementation
      with it's own fence ops in a similar way.
      
      enable_signaling callback is used to provide sw signaling in case a cpu
      waiter is requested or no compatible hardware signaling could be used.
      
      The intention is to provide a userspace interface (presumably via eventfd)
      later, to be used in conjunction with dma-buf's mmap support for sw access
      to buffers (or for userspace apps that would prefer to do their own
      synchronization).
      
      v1: Original
      v2: After discussion w/ danvet and mlankhorst on #dri-devel, we decided
          that dma-fence didn't need to care about the sw->hw signaling path
          (it can be handled same as sw->sw case), and therefore the fence->ops
          can be simplified and more handled in the core.  So remove the signal,
          add_callback, cancel_callback, and wait ops, and replace with a simple
          enable_signaling() op which can be used to inform a fence supporting
          hw->hw signaling that one or more devices which do not support hw
          signaling are waiting (and therefore it should enable an irq or do
          whatever is necessary in order that the CPU is notified when the
          fence is passed).
      v3: Fix locking fail in attach_fence() and get_fence()
      v4: Remove tie-in w/ dma-buf..  after discussion w/ danvet and mlankorst
          we decided that we need to be able to attach one fence to N dma-buf's,
          so using the list_head in dma-fence struct would be problematic.
      v5: [ Maarten Lankhorst ] Updated for dma-bikeshed-fence and dma-buf-manager.
      v6: [ Maarten Lankhorst ] I removed dma_fence_cancel_callback and some comments
          about checking if fence fired or not. This is broken by design.
          waitqueue_active during destruction is now fatal, since the signaller
          should be holding a reference in enable_signalling until it signalled
          the fence. Pass the original dma_fence_cb along, and call __remove_wait
          in the dma_fence_callback handler, so that no cleanup needs to be
          performed.
      v7: [ Maarten Lankhorst ] Set cb->func and only enable sw signaling if
          fence wasn't signaled yet, for example for hardware fences that may
          choose to signal blindly.
      v8: [ Maarten Lankhorst ] Tons of tiny fixes, moved __dma_fence_init to
          header and fixed include mess. dma-fence.h now includes dma-buf.h
          All members are now initialized, so kmalloc can be used for
          allocating a dma-fence. More documentation added.
      v9: Change compiler bitfields to flags, change return type of
          enable_signaling to bool. Rework dma_fence_wait. Added
          dma_fence_is_signaled and dma_fence_wait_timeout.
          s/dma// and change exports to non GPL. Added fence_is_signaled and
          fence_enable_sw_signaling calls, add ability to override default
          wait operation.
      v10: remove event_queue, use a custom list, export try_to_wake_up from
          scheduler. Remove fence lock and use a global spinlock instead,
          this should hopefully remove all the locking headaches I was having
          on trying to implement this. enable_signaling is called with this
          lock held.
      v11:
          Use atomic ops for flags, lifting the need for some spin_lock_irqsaves.
          However I kept the guarantee that after fence_signal returns, it is
          guaranteed that enable_signaling has either been called to completion,
          or will not be called any more.
      
          Add contexts and seqno to base fence implementation. This allows you
          to wait for less fences, by testing for seqno + signaled, and then only
          wait on the later fence.
      
          Add FENCE_TRACE, FENCE_WARN, and FENCE_ERR. This makes debugging easier.
          An CONFIG_DEBUG_FENCE will be added to turn off the FENCE_TRACE
          spam, and another runtime option can turn it off at runtime.
      v12:
          Add CONFIG_FENCE_TRACE. Add missing documentation for the fence->context
          and fence->seqno members.
      v13:
          Fixup CONFIG_FENCE_TRACE kconfig description.
          Move fence_context_alloc to fence.
          Simplify fence_later.
          Kill priv member to fence_cb.
      v14:
          Remove priv argument from fence_add_callback, oops!
      v15:
          Remove priv from documentation.
          Explicitly include linux/atomic.h.
      v16:
          Add trace events.
          Import changes required by android syncpoints.
      v17:
          Use wake_up_state instead of try_to_wake_up. (Colin Cross)
          Fix up commit description for seqno_fence. (Rob Clark)
      v18:
          Rename release_fence to fence_release.
          Move to drivers/dma-buf/.
          Rename __fence_is_signaled and __fence_signal to *_locked.
          Rename __fence_init to fence_init.
          Make fence_default_wait return a signed long, and fix wait ops too.
      Signed-off-by: NMaarten Lankhorst <maarten.lankhorst@canonical.com>
      Signed-off-by: Thierry Reding <thierry.reding@gmail.com> #use smp_mb__before_atomic()
      Acked-by: NSumit Semwal <sumit.semwal@linaro.org>
      Acked-by: NDaniel Vetter <daniel@ffwll.ch>
      Reviewed-by: NRob Clark <robdclark@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e941759c
    • M
  12. 05 7月, 2014 1 次提交
  13. 03 7月, 2014 3 次提交
  14. 24 6月, 2014 1 次提交
  15. 11 6月, 2014 1 次提交
    • T
      PM / sleep: trace events for device PM callbacks · e8bca479
      Todd E Brandt 提交于
      Adds two trace events which supply the same info that initcall_debug
      provides, but via ftrace instead of dmesg. The existing initcall_debug
      calls require the pm_print_times_enabled var to be set (either via
      sysfs or via the kernel cmd line). The new trace events provide all the
      same info as the initcall_debug prints but with less overhead, and also
      with coverage of device prepare and complete device callbacks.
      
      These events replace the device_pm_report_time event (which has been
      removed). device_pm_callback_start is called first and provides the device
      and callback info. device_pm_callback_end is called after with the
      device name and error info. The time and pid are gathered from the trace
      data headers.
      Signed-off-by: NTodd Brandt <todd.e.brandt@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      e8bca479
  16. 07 6月, 2014 1 次提交
    • T
      PM / sleep: trace events for suspend/resume · bb3632c6
      Todd E Brandt 提交于
      Adds trace events that give finer resolution into suspend/resume. These
      events are graphed in the timelines generated by the analyze_suspend.py
      script. They represent large areas of time consumed that are typical to
      suspend and resume.
      
      The event is triggered by calling the function "trace_suspend_resume"
      with three arguments: a string (the name of the event to be displayed
      in the timeline), an integer (case specific number, such as the power
      state or cpu number), and a boolean (where true is used to denote the start
      of the timeline event, and false to denote the end).
      
      The suspend_resume trace event reproduces the data that the machine_suspend
      trace event did, so the latter has been removed.
      Signed-off-by: NTodd Brandt <todd.e.brandt@intel.com>
      Acked-by: NSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      bb3632c6