04 Nov, 2015

1 commit


27 Oct, 2015

1 commit


23 Oct, 2015

2 commits

  • The mailbox framework controls the transmission queue and requires
    either its controller implementations or clients to run the state
    machine for the Tx queue. The OMAP mailbox controller uses a Tx-ready
    interrupt as the equivalent of a Tx-done interrupt to run this Tx
    queue state-machine.

    The WkupM3 processor on AM33xx and AM43xx SoCs is used to offload
    certain PM tasks, like doing the necessary operations for Device
    PM suspend/resume or for entering lower c-states during cpuidle.

    The CPUIdle on AM33xx requires the messages to be sent without
    having to trigger the Tx-ready interrupts, as the interrupt
    would immediately terminate the CPUIdle operation. Support for
    this has been added by introducing a DT quirk, "ti,mbox-send-noirq"
    and using it to modify the normal OMAP mailbox controller behavior
    on the sub-mailboxes used to communicate with the WkupM3 remote
    processor. This also requires the wkup_m3_ipc driver to adjust
    its mailbox usage logic to run the Tx state machine.

    NOTE:
    - AM43xx does not communicate with WkupM3 for CPU Idle, so is
    not affected by this behavior. But, it uses the same IPC driver
    for PM suspend/resume functionality, so requires the quirk as
    well, because of changes to the common wkup_m3_ipc driver.

    Signed-off-by: Dave Gerlach
    [s-anna@ti.com: revise logic and update comments/patch description]
    Signed-off-by: Suman Anna
    Signed-off-by: Jassi Brar

    Dave Gerlach
     
  • Kbuild test robot reported some Sparse warnings to the tune of:

    sparse: incorrect type in argument 6 (different address spaces)
    expected void const *buf
    got void [noderef] *mmio

    This was due to passing variables tagged with the Sparse cookie
    '__iomem' through into memcpy() and print_hex_dump() without
    adequate protection or casting. These issues were fixed in a
    previous patch suppressing the warnings, but the issue is indeed
    still present.

    This patch fixes the warnings in the correct way, i.e. by using
    the purposely authored memcpy_{from,to}io() derivatives in the
    memcpy() case and casting the memory address to (void *) and
    forcing Sparse to ignore to ignore it in the print_hex_dump()
    case [NB: This is also what the memcpy() derivatives do].

    Reported-by: Peter Griffin
    Signed-off-by: Lee Jones
    Signed-off-by: Jassi Brar

    Lee Jones
     

17 Oct, 2015

3 commits


16 Oct, 2015

1 commit


06 Sep, 2015

1 commit


02 Sep, 2015

1 commit

  • Pull power management and ACPI updates from Rafael Wysocki:
    "From the number of commits perspective, the biggest items are ACPICA
    and cpufreq changes with the latter taking the lead (over 50 commits).

    On the cpufreq front, there are many cleanups and minor fixes in the
    core and governors, driver updates etc. We also have a new cpufreq
    driver for Mediatek MT8173 chips.

    ACPICA mostly updates its debug infrastructure and adds a number of
    fixes and cleanups for a good measure.

    The Operating Performance Points (OPP) framework is updated with new
    DT bindings and support for them among other things.

    We have a few updates of the generic power domains framework and a
    reorganization of the ACPI device enumeration code and bus type
    operations.

    And a lot of fixes and cleanups all over.

    Included is one branch from the MFD tree as it contains some
    PM-related driver core and ACPI PM changes a few other commits are
    based on.

    Specifics:

    - ACPICA update to upstream revision 20150818 including method
    tracing extensions to allow more in-depth AML debugging in the
    kernel and a number of assorted fixes and cleanups (Bob Moore, Lv
    Zheng, Markus Elfring).

    - ACPI sysfs code updates and a documentation update related to AML
    method tracing (Lv Zheng).

    - ACPI EC driver fix related to serialized evaluations of _Qxx
    methods and ACPI tools updates allowing the EC userspace tool to be
    built from the kernel source (Lv Zheng).

    - ACPI processor driver updates preparing it for future introduction
    of CPPC support and ACPI PCC mailbox driver updates (Ashwin
    Chaugule).

    - ACPI interrupts enumeration fix for a regression related to the
    handling of IRQ attribute conflicts between MADT and the ACPI
    namespace (Jiang Liu).

    - Fixes related to ACPI device PM (Mika Westerberg, Srinidhi
    Kasagar).

    - ACPI device registration code reorganization to separate the
    sysfs-related code and bus type operations from the rest (Rafael J
    Wysocki).

    - Assorted cleanups in the ACPI core (Jarkko Nikula, Mathias Krause,
    Andy Shevchenko, Rafael J Wysocki, Nicolas Iooss).

    - ACPI cpufreq driver and ia64 cpufreq driver fixes and cleanups (Pan
    Xinhui, Rafael J Wysocki).

    - cpufreq core cleanups on top of the previous changes allowing it to
    preseve its sysfs directories over system suspend/resume (Viresh
    Kumar, Rafael J Wysocki, Sebastian Andrzej Siewior).

    - cpufreq fixes and cleanups related to governors (Viresh Kumar).

    - cpufreq updates (core and the cpufreq-dt driver) related to the
    turbo/boost mode support (Viresh Kumar, Bartlomiej Zolnierkiewicz).

    - New DT bindings for Operating Performance Points (OPP), support for
    them in the OPP framework and in the cpufreq-dt driver plus related
    OPP framework fixes and cleanups (Viresh Kumar).

    - cpufreq powernv driver updates (Shilpasri G Bhat).

    - New cpufreq driver for Mediatek MT8173 (Pi-Cheng Chen).

    - Assorted cpufreq driver (speedstep-lib, sfi, integrator) cleanups
    and fixes (Abhilash Jindal, Andrzej Hajda, Cristian Ardelean).

    - intel_pstate driver updates including Skylake-S support, support
    for enabling HW P-states per CPU and an additional vendor bypass
    list entry (Kristen Carlson Accardi, Chen Yu, Ethan Zhao).

    - cpuidle core fixes related to the handling of coupled idle states
    (Xunlei Pang).

    - intel_idle driver updates including Skylake Client support and
    support for freeze-mode-specific idle states (Len Brown).

    - Driver core updates related to power management (Andy Shevchenko,
    Rafael J Wysocki).

    - Generic power domains framework fixes and cleanups (Jon Hunter,
    Geert Uytterhoeven, Rajendra Nayak, Ulf Hansson).

    - Device PM QoS framework update to allow the latency tolerance
    setting to be exposed to user space via sysfs (Mika Westerberg).

    - devfreq support for PPMUv2 in Exynos5433 and a fix for an incorrect
    exynos-ppmu DT binding (Chanwoo Choi, Javier Martinez Canillas).

    - System sleep support updates (Alan Stern, Len Brown, SungEun Kim).

    - rockchip-io AVS support updates (Heiko Stuebner).

    - PM core clocks support fixup (Colin Ian King).

    - Power capping RAPL driver update including support for Skylake H/S
    and Broadwell-H (Radivoje Jovanovic, Seiichi Ikarashi).

    - Generic device properties framework fixes related to the handling
    of static (driver-provided) property sets (Andy Shevchenko).

    - turbostat and cpupower updates (Len Brown, Shilpasri G Bhat,
    Shreyas B Prabhu)"

    * tag 'pm+acpi-4.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (180 commits)
    cpufreq: speedstep-lib: Use monotonic clock
    cpufreq: powernv: Increase the verbosity of OCC console messages
    cpufreq: sfi: use kmemdup rather than duplicating its implementation
    cpufreq: drop !cpufreq_driver check from cpufreq_parse_governor()
    cpufreq: rename cpufreq_real_policy as cpufreq_user_policy
    cpufreq: remove redundant 'policy' field from user_policy
    cpufreq: remove redundant 'governor' field from user_policy
    cpufreq: update user_policy.* on success
    cpufreq: use memcpy() to copy policy
    cpufreq: remove redundant CPUFREQ_INCOMPATIBLE notifier event
    cpufreq: mediatek: Add MT8173 cpufreq driver
    dt-bindings: mediatek: Add MT8173 CPU DVFS clock bindings
    PM / Domains: Fix typo in description of genpd_dev_pm_detach()
    PM / Domains: Remove unusable governor dummies
    PM / Domains: Make pm_genpd_init() available to modules
    PM / domains: Align column headers and data in pm_genpd_summary output
    powercap / RAPL: disable the 2nd power limit properly
    tools: cpupower: Fix error when running cpupower monitor
    PM / OPP: Drop unlikely before IS_ERR(_OR_NULL)
    PM / OPP: Fix static checker warning (broken 64bit big endian systems)
    ...

    Linus Torvalds
     

26 Aug, 2015

1 commit

  • PCC is made selectable only by clients which use it. e.g. CPPC
    Default it to disabled so that it is not included accidentally on
    platforms which dont use it.

    Signed-off-by: Ashwin Chaugule
    Reviewed-by: Al Stone
    Signed-off-by: Rafael J. Wysocki

    Ashwin Chaugule
     

25 Aug, 2015

1 commit

  • This change initializes the PCC Mailbox earlier than
    the ACPI processor driver. This enables drivers introduced
    in follow up patches (e.g. CPPC) to be probed via the ACPI
    processor driver interface. The CPPC probe requires the PCC
    channel to be initialized for it to query each CPUs performance
    capabilities.

    Signed-off-by: Ashwin Chaugule
    Reviewed-by: Al Stone
    Signed-off-by: Rafael J. Wysocki

    Ashwin Chaugule
     

10 Aug, 2015

2 commits

  • Since the mailbox core users hrtimers now, it can handle much higher
    resolutions. We can reduce the txpoll_period to 1 ms as the transmit
    usually takes just few microseconds.

    Reported-and-suggested-by: Juri Lelli
    Signed-off-by: Sudeep Holla
    Signed-off-by: Jassi Brar

    Sudeep Holla
     
  • The mailbox core uses jiffy based timer to handle polling for the
    transmit completion. If the client/protocol have/support notification
    of the last packet transmit completion via ACK packet, then we tick the
    Tx state machine immediately in the callback. However if the client
    doesn't support that mechanism we might end-up waiting for atleast a
    jiffy even though the remote is ready to receive the next request.

    This patch switches the timer used for that polling from jiffy-based
    to hrtimer-based so that we can support polling at much higher time
    resolution.

    Reported-and-suggested-by: Juri Lelli
    Signed-off-by: Sudeep Holla
    Signed-off-by: Jassi Brar

    Sudeep Holla
     

07 Aug, 2015

1 commit


05 Aug, 2015

1 commit


03 Jul, 2015

1 commit

  • …scm/linux/kernel/git/paulg/linux

    Pull module_init replacement part two from Paul Gortmaker:
    "Replace module_init with appropriate alternate initcall in non
    modules.

    This series converts non-modular code that is using the module_init()
    call to hook itself into the system to instead use one of our
    alternate priority initcalls.

    Unlike the previous series that used device_initcall and hence was a
    runtime no-op, these commits change to one of the alternate initcalls,
    because (a) we have them and (b) it seems like the right thing to do.

    For example, it would seem logical to use arch_initcall for arch
    specific setup code and fs_initcall for filesystem setup code.

    This does mean however, that changes in the init ordering will be
    taking place, and so there is a small risk that some kind of implicit
    init ordering issue may lie uncovered. But I think it is still better
    to give these ones sensible priorities than to just assign them all to
    device_initcall in order to exactly preserve the old ordering.

    Thad said, we have already made similar changes in core kernel code in
    commit c96d6660dc65 ("kernel: audit/fix non-modular users of
    module_init in core code") without any regressions reported, so this
    type of change isn't without precedent. It has also got the same
    local testing and linux-next coverage as all the other pull requests
    that I'm sending for this merge window have got.

    Once again, there is an unused module_exit function removal that shows
    up as an outlier upon casual inspection of the diffstat"

    * tag 'module_init-alternate_initcall-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
    x86: perf_event_intel_pt.c: use arch_initcall to hook in enabling
    x86: perf_event_intel_bts.c: use arch_initcall to hook in enabling
    mm/page_owner.c: use late_initcall to hook in enabling
    lib/list_sort: use late_initcall to hook in self tests
    arm: use subsys_initcall in non-modular pl320 IPC code
    powerpc: don't use module_init for non-modular core hugetlb code
    powerpc: use subsys_initcall for Freescale Local Bus
    x86: don't use module_init for non-modular core bootflag code
    netfilter: don't use module_init/exit in core IPV4 code
    fs/notify: don't use module_init for non-modular inotify_user code
    mm: replace module_init usages with subsys_initcall in nommu.c

    Linus Torvalds
     

17 Jun, 2015

1 commit

  • The drivers/mailbox/pl320-ipc.o is dependent on config PL320_MBOX
    which is declared as a bool. Hence the code is never going to be
    modular. So using module_init as an alias for __initcall can be
    somewhat misleading.

    Fix this up now, so that we can relocate module_init from
    init.h into module.h in the future. If we don't do this, we'd
    have to add module.h to obviously non-modular code, and that
    would be a worse thing. Also add an inclusion of init.h, as
    that was previously implicit.

    Note that direct use of __initcall is discouraged, vs. one
    of the priority categorized subgroups. As __initcall gets
    mapped onto device_initcall, our use of subsys_initcall (which
    seems to make sense for IPC code) will thus change this
    registration from level 6-device to level 4-subsys (i.e. slightly
    earlier). However no impact of that small difference is expected.

    Cc: Russell King
    Cc: linux-arm-kernel@lists.infradead.org
    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     

13 Jun, 2015

1 commit

  • With the VC reader blocked and the ARM writing, MAIL0_STA reads empty
    permanently while MAIL1_STA goes from empty (0x40000000) to non-empty
    (0x00000001-0x00000007) to full (0x80000008).

    This bug ended up having no effect on us, because all of our
    transactions in the client driver were synchronous and under a mutex.

    Suggested-by: Phil Elwell
    Signed-off-by: Eric Anholt
    Acked-by: Stephen Warren
    Signed-off-by: Jassi Brar

    Eric Anholt
     

12 Jun, 2015

2 commits

  • This patch supplies a new framework API; mbox_request_channel_byname().

    It works by supplying the usual client pointer as the first argument and
    a string as the second. The API will search the client's node for a
    'mbox-names' property then request a channel in the normal way using the
    requested string's index as the expected second 'index' argument.

    Signed-off-by: Lee Jones
    Signed-off-by: Jassi Brar

    Lee Jones
     
  • This mailbox driver provides a single mailbox channel to write 32-bit
    values to the VPU and get a 32-bit response. The Raspberry Pi
    firmware uses this mailbox channel to implement firmware calls, while
    Roku 2 (despite being derived from the same firmware tree) doesn't.

    The driver was originally submitted by Lubomir, based on the
    out-of-tree 2708 mailbox driver. Eric Anholt fixed it up for
    upstreaming, with the major functional change being that it now has no
    notion of multiple channels (since that is a firmware-dependent
    concept) and instead the raspberrypi-firmware driver will do that
    bit-twiddling in its own messages.
    [Jassi: made the 'mbox_chan_ops' struct as const and removed a redundant
    variable]

    Signed-off-by: Lubomir Rintel
    Signed-off-by: Craig McGeachie
    Signed-off-by: Eric Anholt
    Acked-by: Stephen Warren
    Signed-off-by: Jassi Brar

    Lubomir Rintel
     

12 May, 2015

3 commits

  • mbox_request_channel() currently returns EBUSY in the event the controller
    is not present or if of_xlate() fails, but in neither case is EBUSY really
    appropriate. Return EPROBE_DEFER if the controller is not yet present
    and change of_xlate() to return an ERR_PTR instead of NULL so that the
    error can be propagated back to the caller of mbox_request_channel().

    Signed-off-by: Benson Leung
    Signed-off-by: Andrew Bresticker
    Acked-by: Suman Anna
    Reviewed-by: Jon Hunter
    Tested-by: Jon Hunter
    Signed-off-by: Jassi Brar

    Benson Leung
     
  • The mailbox controller's channel ops ought to be read-only. Update
    all the mailbox drivers to make their mbox_chan_ops const as well.

    Signed-off-by: Andrew Bresticker
    Cc: Ashwin Chaugule
    Cc: Ley Foon Tan
    Acked-by: Suman Anna
    Signed-off-by: Jassi Brar

    Andrew Bresticker
     
  • Not all architectures have io memory.

    Fixes:
    drivers/built-in.o: In function `altera_mbox_probe':
    mailbox-altera.c:(.text+0x409fd2): undefined reference to `devm_ioremap_resource'

    Signed-off-by: Richard Weinberger
    Signed-off-by: Jassi Brar

    Richard Weinberger
     

17 Mar, 2015

1 commit


04 Mar, 2015

1 commit

  • Previously the PCC driver depended on the client
    side to map the communication space base address. This region
    was was then used in the PCC driver and the client side.
    The client side used this region to read and write its data
    and the PCC driver used it to only write the PCC command.
    Removing this split simplifies the PCC driver a lot. This patch
    moves all communication region read/writes to the client side.
    The PCC clients can now drive the PCC mailbox controller via the
    mbox_client_txdone() method.

    Signed-off-by: Ashwin Chaugule

    Ashwin Chaugule
     

12 Feb, 2015

1 commit


06 Feb, 2015

3 commits


05 Feb, 2015

1 commit


15 Dec, 2014

1 commit

  • Pull driver core update from Greg KH:
    "Here's the set of driver core patches for 3.19-rc1.

    They are dominated by the removal of the .owner field in platform
    drivers. They touch a lot of files, but they are "simple" changes,
    just removing a line in a structure.

    Other than that, a few minor driver core and debugfs changes. There
    are some ath9k patches coming in through this tree that have been
    acked by the wireless maintainers as they relied on the debugfs
    changes.

    Everything has been in linux-next for a while"

    * tag 'driver-core-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (324 commits)
    Revert "ath: ath9k: use debugfs_create_devm_seqfile() helper for seq_file entries"
    fs: debugfs: add forward declaration for struct device type
    firmware class: Deletion of an unnecessary check before the function call "vunmap"
    firmware loader: fix hung task warning dump
    devcoredump: provide a one-way disable function
    device: Add dev__once variants
    ath: ath9k: use debugfs_create_devm_seqfile() helper for seq_file entries
    ath: use seq_file api for ath9k debugfs files
    debugfs: add helper function to create device related seq_file
    drivers/base: cacheinfo: remove noisy error boot message
    Revert "core: platform: add warning if driver has no owner"
    drivers: base: support cpu cache information interface to userspace via sysfs
    drivers: base: add cpu_device_create to support per-cpu devices
    topology: replace custom attribute macros with standard DEVICE_ATTR*
    cpumask: factor out show_cpumap into separate helper function
    driver core: Fix unbalanced device reference in drivers_probe
    driver core: fix race with userland in device_add()
    sysfs/kernfs: make read requests on pre-alloc files use the buffer.
    sysfs/kernfs: allow attributes to request write buffer be pre-allocated.
    fs: sysfs: return EGBIG on write if offset is larger than file size
    ...

    Linus Torvalds
     

27 Nov, 2014

4 commits

  • ACPI 5.0+ spec defines a generic mode of communication
    between the OS and a platform such as the BMC. This medium
    (PCC) is typically used by CPPC (ACPI CPU Performance management),
    RAS (ACPI reliability protocol) and MPST (ACPI Memory power
    states).

    This patch adds PCC support as a Mailbox Controller. As of
    ACPI v5.1 there is no provision for clients to lookup mailbox
    controllers in a way that Linux expects. e.g. in DT the clients
    can list the mailboxes they can associate with in the DT binding
    and then provide a unique index to lookup a channel within a mailbox.
    Since the ACPI spec doesn't have anything similar, we introduce a
    mailbox controller specific API so that when the client calls it,
    we know to lookup in the context of a specific controller. This
    also helps in keeping a consistent interface across DT and ACPI
    for such drivers.

    This patch implements basic PCC support using the ACPI v5.1
    structures. IRQ mode support will be provided as follow up patches.

    Signed-off-by: Ashwin Chaugule
    Reviewed-by: Mark Brown
    Reviewed-by: Arnd Bergmann
    Signed-off-by: Jassi Brar

    Ashwin Chaugule
     
  • The OMAP mailbox driver and its existing clients (remoteproc
    for OMAP4+) are adapted to use the generic mailbox framework.

    The main changes for the adaptation are:
    - The tasklet used for Tx is replaced with the state machine from
    the generic mailbox framework. The workqueue used for processing
    the received messages stays intact for minimizing the effects on
    the OMAP mailbox clients.
    - The existing exported client API, omap_mbox_get, omap_mbox_put and
    omap_mbox_send_msg are deleted, as the framework provides equivalent
    functionality. A OMAP-specific omap_mbox_request_channel is added
    though to support non-DT way of requesting mailboxes.
    - The OMAP mailbox driver is integrated with the mailbox framework
    through the proper implementations of mbox_chan_ops, except for
    .last_tx_done and .peek_data. The OMAP mailbox driver does not need
    these ops, as it is completely interrupt driven.
    - The OMAP mailbox driver uses a custom of_xlate controller ops that
    allows phandles for the pargs specifier instead of indexing to avoid
    any channel registration order dependencies.
    - The new framework does not support multiple clients operating on a
    single channel, so the reference counting logic is simplified.
    - The remoteproc driver (current client) is adapted to use the new API.
    The notifier callbacks used within this client is replaced with the
    regular callbacks from the newer framework.
    - The exported OMAP mailbox API are limited to omap_mbox_save_ctx,
    omap_mbox_restore_ctx, omap_mbox_enable_irq & omap_mbox_disable_irq,
    with the signature modified to take in the new mbox_chan handle instead
    of the OMAP specific omap_mbox handle. The first 2 will be removed when
    the OMAP mailbox driver is adapted to runtime_pm. The other exported
    API omap_mbox_request_channel will be removed once existing legacy
    users are converted to DT.

    Signed-off-by: Suman Anna
    Cc: Ohad Ben-Cohen
    Signed-off-by: Jassi Brar

    Suman Anna
     
  • If the mailbox controller expects the payload is in place before
    initiating the transmit, then it's impossible to reuse the list
    maintained by core mailbox code currently. Maintaining another list
    for sending the message in the controller seems totally unnecessary
    as core mailbox library already provides that feature.

    This patch introduces tx_prepare callback in mbox_client which
    can be used by the core mailbox library before initiating the
    transaction through mbox->ops->send_data. The client driver can
    implement this callback to ensure the payload is copied to the
    shared memory.

    Signed-off-by: Sudeep Holla
    Cc: Arnd Bergmann
    Signed-off-by: Jassi Brar

    Sudeep Holla
     
  • poll_txdone() will unconditionally re-arm the polling timer if there was
    an active request, even if the active request completed and no other
    requests were submitted. This is fixed by:
    - only re-arming the timer if the controller reported that the current
    transmission has not completed, and,
    - moving the call to poll_txdone() into msg_submit() so that the
    controller gets polled (and the timer re-armed, if necessary) whenever
    a new message is submitted.

    Signed-off-by: Andrew Bresticker
    Reviewed-by: Thierry Reding
    Signed-off-by: Jassi Brar

    Andrew Bresticker
     

04 Nov, 2014

1 commit


22 Oct, 2014

1 commit

  • Pull mailbox framework from Jassi Brar:
    "A framework for Mailbox controllers and clients have been cooking for
    more than a year now.

    Everybody in the CC list had been copied on patchset revisions and
    most of them have made sounds of approval, though just one concrete
    Reviewed-by. The patchset has also been in linux-next for a couple of
    weeks now and no conflict has been reported. The framework has the
    backing of at least 5 platforms, though I can't say if/when they
    upstream their drivers (some businesses have 'changed')"

    (Further acked-by by Arnd Bergmann and Suman Anna in the pull request
    thread)

    * 'mailbox-for-linus' of git://git.linaro.org/landing-teams/working/fujitsu/integration:
    dt: mailbox: add generic bindings
    doc: add documentation for mailbox framework
    mailbox: Introduce framework for mailbox
    mailbox: rename pl320-ipc specific mailbox.h

    Linus Torvalds
     

20 Oct, 2014

1 commit


08 Oct, 2014

1 commit

  • Introduce common framework for client/protocol drivers and
    controller drivers of Inter-Processor-Communication (IPC).

    Client driver developers should have a look at
    include/linux/mailbox_client.h to understand the part of
    the API exposed to client drivers.
    Similarly controller driver developers should have a look
    at include/linux/mailbox_controller.h

    Reviewed-by: Mark Brown
    Signed-off-by: Jassi Brar

    Jassi Brar