aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/remoteproc/remoteproc_core.c
Commit message (Collapse)AuthorAge
* remoteproc: Refactor rproc module lockingBjorn Andersson2016-10-03
| | | | | | | | | Lock the implementation as we hand out references to client drivers rather than when they try to boot the remote processor. This allows auto-booting remote processors to be shut down by unloading their module, in addition to first unbinding them. Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: Split driver and consumer dereferencingBjorn Andersson2016-10-03
| | | | | | | | | | In order to be able to lock a rproc driver implementations only when used by a client, we must differ between the dereference operation of a client and the implementation itself. This patch brings no functional change. Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: Correct resource handling upon boot failureBjorn Andersson2016-10-03
| | | | | | | | | The freeing of resources will attempt to clear values previously set in the cached resource table, so make sure to free the table after we have cleaned up the resources. Fixes: 988d204cdaf6 ("remoteproc: Move handling of cached table to boot/shutdown") Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: Drop unnecessary NULL checkBjorn Andersson2016-09-19
| | | | | | | | rproc_alloc() will make sure that the "firmware" pointer is either a driver supplied value or pointing to a generated firmware filename, it can't be NULL. So drop the extra check in the rproc_boot() path. Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: core: transform struct fw_rsc_vdev_vring reserved field in paLoic PALLARDY2016-09-06
| | | | | | | | | | | | | | | | In current implementation, struct fw_rsc_vdev_vring which describes vring resource in firmware resource table owns only device address, because it assumes that host is responsible of vring allocation and only device address is needed by coprocessor. But if vrings need to be fixed in system memory map for any reasons (security, SoC charactieristics...), physical address is needed exatly identified the memory chunck by host. For that let's transform reserved field of struct fw_rsc_vdev_vring to pa (physical address). Signed-off-by: Loic Pallardy <loic.pallardy@st.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: Only update table_ptr if we have a loaded tableBjorn Andersson2016-08-18
| | | | | | | | In the case that we have a resource table, but not a loaded one we should leave the table_ptr intact, as subsequent resource handling could otherwise dereference the NULL pointer. Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: Move handling of cached table to boot/shutdownBjorn Andersson2016-08-18
| | | | | | | | | | | As we moved the vdev handling to the main boot/shutdown code path we can further simplify the resource table handling by moving the parsing spet to boot as well. The lifespan of the resource table is changed to live from rproc_boot() to rproc_shutdown(). Cc: Lee Jones <lee.jones@linaro.org> Cc: Loic Pallardy <loic.pallardy@st.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: Move vdev handling to boot/shutdownBjorn Andersson2016-08-18
| | | | | | | | | | | | | The newly introduced "always-on" flag allows us to stop giving the vdevs special treatment. The ordering of resource allocation and life cycle of the remote processor is kept intact. This allows us to mark a remote processor with vdevs to not boot unless explicitly requested to do so by a client driver. Cc: Lee Jones <lee.jones@linaro.org> Cc: Loic Pallardy <loic.pallardy@st.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: Calculate max_notifyid during loadBjorn Andersson2016-08-18
| | | | | | | | | | The calculation of max_notifyid must only be done before we call start() on the remoteproc drivers, so move the calculation to be part of the loading steps. Cc: Lee Jones <lee.jones@linaro.org> Cc: Loic Pallardy <loic.pallardy@st.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: Introduce auto-boot flagBjorn Andersson2016-08-18
| | | | | | | | | | | | | | Introduce an "auto-boot" flag on rprocs to make it possible to flag remote processors without vdevs to automatically boot once the firmware is found. Preserve previous behavior of the wkup_m3 processor being explicitly booted by a consumer. Cc: Lee Jones <lee.jones@linaro.org> Cc: Loic Pallardy <loic.pallardy@st.com> Cc: Suman Anna <s-anna@ti.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: print hex numbers with a leading 0x formatAnna, Suman2016-08-13
| | | | | | | | | | There are couple of debug statements that are printing hexadecimal numbers without the leading 0x. Fix these and use the standard 0x%x format specifier so that there is no confusion when looking at the traces. Signed-off-by: Suman Anna <s-anna@ti.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: align code with open parenthesisAnna, Suman2016-08-13
| | | | | | | | | This patch fixes the existing alignment checkpatch check warnings of the type "Alignment should match open parenthesis" in the remoteproc core source files. Signed-off-by: Suman Anna <s-anna@ti.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: use variable names for sizeof() operatorAnna, Suman2016-08-13
| | | | | | | | | Fix the code formatting to use the kernel preferred style of using the actual variables to determize the size using the sizeof() operator. Signed-off-by: Suman Anna <s-anna@ti.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: fix couple of minor typosAnna, Suman2016-08-13
| | | | | | | | Fix couple of minor mis-spelled words in all the remoteproc source files. Signed-off-by: Suman Anna <s-anna@ti.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: use proper format-specifier for printing dma_addr_tAnna, Suman2016-08-13
| | | | | | | | | | The dma_addr_t types can be printed properly using the %pad printk format-specifier, there is no need to resort to the unsigned long long type-casting to deal with different possible type sizes. Signed-off-by: Suman Anna <s-anna@ti.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: core: Remove pointless OOM printLee Jones2016-08-10
| | | | | | | | These types of error prints are superfluous. The system will pick up on OOM issues and let the user know. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: core: Trivial: Improve error checking, spelling and debug printsLee Jones2016-08-10
| | | | | | | Trivial patch to clean up a couple of minor misgivings. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: core: Ensure error message is clearLee Jones2016-08-10
| | | | | | | | | | | | | | | | | Before this patch, the dma_alloc_coherent() failure path printed out: "dma_alloc_coherent err: 16760832" ... alluding to the Linux error code being 16760832, but seeing as Linux error codes are all negative, this looks like a signed/unsigned issue. In fact, the message is trying to print the length of the requested memory region. Let's clear that up. While we're at it, let's standardise the way 'len' is printed. In all other locations 'len' is in hex prefixed by a '0x' for clarity. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: Fix potential race condition in rproc_addDave Gerlach2016-06-14
| | | | | | | | | | | | | | | rproc_add adds the newly created remoteproc to a list for use by rproc_get_by_phandle and then does some additional processing to finish adding the remoteproc. This leaves a small window of time in which the rproc is available in the list but not yet fully initialized, so if another driver comes along and gets a handle to the rproc, it will be invalid. Rearrange the code in rproc_add to make sure the rproc is added to the list only after it has been successfuly initialized. Fixes: fec47d863587 ("remoteproc: introduce rproc_get_by_phandle API") Cc: stable@vger.kernel.org Signed-off-by: Dave Gerlach <d-gerlach@ti.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: Add additional crash reasonsBjorn Andersson2016-05-12
| | | | | | | | The Qualcomm WCNSS can crash by watchdog or a fatal software error. Add these types to the list of remoteproc crash reasons. Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: core: Make the loaded resource table optionalBjorn Andersson2016-05-12
| | | | | | | | | Remote processors like the ones found in the Qualcomm SoCs does not have a resource table passed to them, so make it optional by only populating it if it does exist. Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: core: Task sync during rproc_fw_boot()Lee Jones2016-05-06
| | | | | | | | | | | | | | | By default, rproc_fw_boot() needs to wait for rproc to be configured, but a race may occur when using rpmsg/virtio. In this case, it can be called locally in a safe manor. This patch represents two usecases: - External call (via exported rproc_boot()), which waits - Internal call can use 'nowait' version of rproc_boot() Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com> Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
* remoteproc: report error if resource table doesn't existStefan Agner2016-01-29
| | | | | | | | | | Currently, if the resource table is completely missing in the firmware, powering up the remoteproc fails silently. Add a message indicating that the resource table is missing in the firmware. Signed-off-by: Stefan Agner <stefan@agner.ch> Acked-by: Suman Anna <s-anna@ti.com> Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* remoteproc: fix memory leak of remoteproc ida cache layersSuman Anna2015-11-26
| | | | | | | | | | | | | | | | | The remoteproc core uses a static ida named rproc_dev_index for assigning an automatic index number to a registered remoteproc. The ida core may allocate some internal idr cache layers and ida bitmap upon any ida allocation, and all these layers are truely freed only upon the ida destruction. The rproc_dev_index ida is not destroyed at present, leading to a memory leak when using the remoteproc core as a module and atleast one rproc device is registered and unregistered. Fix this by invoking ida_destroy() in the remoteproc core module exit. Signed-off-by: Suman Anna <s-anna@ti.com> Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* remoteproc: fix !CONFIG_OF build breakageOhad Ben-Cohen2015-06-18
| | | | | | | | | | | | | Fix this: drivers/remoteproc/remoteproc_core.c: In function 'rproc_get_by_phandle': >> drivers/remoteproc/remoteproc_core.c:1167:2: error: implicit declaration of function 'of_find_node_by_phandle' [-Werror=implicit-function-declaration] np = of_find_node_by_phandle(phandle); Reported-by: kbuild test robot <fengguang.wu@intel.com> Cc: Dave Gerlach <d-gerlach@ti.com> Cc: Suman Anna <s-anna@ti.com> Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* remoteproc: add a rproc ops for performing address translationSuman Anna2015-06-17
| | | | | | | | | | | | | | | | | | | | | | | The rproc_da_to_va API is currently used to perform any device to kernel address translations to meet the different needs of the remoteproc core/drivers (eg: loading). The functionality is achieved within the remoteproc core, and is limited only for carveouts allocated within the core. A new rproc ops, da_to_va, is added to provide flexibility to platform implementations to perform the address translation themselves when the above conditions cannot be met by the implementations. The rproc_da_to_va() API is extended to invoke this ops if present, and fallback to regular processing if the platform implementation cannot provide the translation. This will allow any remoteproc implementations to translate addresses for dedicated memories like internal memories. While at this, also update the rproc_da_to_va() documentation since it is an exported function. Signed-off-by: Suman Anna <s-anna@ti.com> Signed-off-by: Dave Gerlach <d-gerlach@ti.com> Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* remoteproc: introduce rproc_get_by_phandle APIDave Gerlach2015-06-16
| | | | | | | | | | | | | | | | Allow users of remoteproc the ability to get a handle to an rproc by passing a phandle supplied in the user's device tree node. This is useful in situations that require manual booting of the rproc. This patch uses the code removed by commit 40e575b1d0b3 ("remoteproc: remove the get_by_name/put API") for the ref counting but is modified to use a simple list and locking mechanism and has rproc_get_by_name replaced with an rproc_get_by_phandle API. Signed-off-by: Dave Gerlach <d-gerlach@ti.com> Signed-off-by: Suman Anna <s-anna@ti.com> [fix order of Signed-off-by tags] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* remoteproc: fix various checkpatch warningsSuman Anna2015-05-02
| | | | | | | | | | | | | Fix all the checkpatch warnings in the core remoteproc code. The fixes cover the following warnings: 1. WARNING: void function return statements are not generally useful 2. WARNING: Possible unnecessary 'out of memory' message 3. WARNING: line over 80 characters 4. WARNING: braces {} are not necessary for single statement blocks 5. WARNING: Unnecessary space before function pointer arguments Signed-off-by: Suman Anna <s-anna@ti.com> Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* remoteproc: add IOMMU hardware capability flagSuman Anna2015-03-12
| | | | | | | | | | | | | | | | | | | | | | | | | | The remoteproc framework currently relies on iommu_present() on the bus the device is on, to perform MMU management. However, this logic doesn't scale for multi-arch, especially for processors that do not have an IOMMU. Replace this logic instead by using a h/w capability flag for the presence of IOMMU in the rproc structure. This issue is seen on OMAP platforms when trying to add a remoteproc driver for a small Cortex M3 called the WkupM3 used for suspend / resume management on TI AM335/AM437x SoCs. This processor does not have an MMU. Same is the case with another processor subsystem PRU-ICSS on AM335/AM437x. All these are platform devices, and the current iommu_present check will not scale for the same kernel image to support OMAP4/OMAP5 and AM335/AM437x. The existing platform implementation drivers - OMAP remoteproc, STE Modem remoteproc and DA8xx remoteproc, are updated as well to properly configure the newly added rproc field. Cc: Robert Tivy <rtivy@ti.com> Cc: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Suman Anna <s-anna@ti.com> [small change in the commit title and in a single comment] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* remoteproc: Cocci spatch "memdup.spatch"Thomas Meyer2013-07-01
| | | | | | | Use kmemdup instead of kmalloc + memcpy. Signed-off-by: Thomas Meyer <thomas@m3y3r.de> Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* remoteproc: free carveout memories only after unmapping themSuman Anna2013-07-01
| | | | | | | | | | | | | | It is not preferable to have the allocated pages for carveout memories freed before they are unmapped. The code that deals with the cleanup of carveout memories is therefore moved after the corresponding mapping entries were cleaned up. This is mostly a no-op since the remote processors are already stopped when the cleanup function is called, but this will make the cleanup code follow the exact reverse path of allocation. Signed-off-by: Suman Anna <s-anna@ti.com> Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* remoteproc: fix error return code in rproc_fw_boot()Wei Yongjun2013-06-30
| | | | | | | | | Set 'ret' to -EINVAL when needed, so a sensible return value is returned on errors. Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> [fix additional instances of this bug as well, update commit log] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* Merge tag 'remoteproc-3.10' of ↵Linus Torvalds2013-05-07
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/ohad/remoteproc Pull remoteproc update from Ohad Ben-Cohen: - Some refactoring, cleanups and small improvements from Sjur Brændeland. The improvements are mainly about better supporting varios virtio properties (such as virtio's config space, status and features). I now see that I messed up while commiting one of Sjur's patches and erroneously put myself as the author, as well as letting a nasty typo sneak in. I will not fix this in order to avoid rebasing the patches. Sjur - sorry! - A new remoteproc driver for OMAP-L13x (technically a DaVinci platform) from Robert Tivy. - Extend OMAP support to OMAP5 as well, from Vincent Stehlé. - Fix Kconfig VIRTUALIZATION dependency, from Suman Anna (a non-critical fix which arrived late during the rc cycle). * tag 'remoteproc-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/ohad/remoteproc: remoteproc: fix kconfig dependencies for VIRTIO remoteproc/davinci: add a remoteproc driver for OMAP-L13x DSP remoteproc: support default firmware name in rproc_alloc() remoteproc/omap: support OMAP5 too remoteproc: set vring addresses in resource table remoteproc: support virtio config space. remoteproc: perserve resource table data remoteproc: calculate max_notifyid by counting vrings remoteproc: code cleanup of resource parsing remoteproc: parse STE-firmware and find resource table address remoteproc: add find_loaded_rsc_table firmware ops remoteproc: refactor rproc_elf_find_rsc_table()
| * remoteproc: support default firmware name in rproc_alloc()Robert Tivy2013-04-07
| | | | | | | | | | | | | | | | | | If rproc_alloc isn't given a firmware name, look for a default one using the "rproc-%s-fw" template. Signed-off-by: Robert Tivy <rtivy@ti.com> [add commit log, document change, use snprintf, minor style change] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
| * remoteproc: set vring addresses in resource tableSjur Brændeland2013-04-07
| | | | | | | | | | | | | | | | | | | | Set the vring addresses in the resource table so that the remote device can read the actual addresses used. Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com> Acked-by: Ido Yariv <ido@wizery.com> [rebase] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
| * remoteproc: support virtio config space.Sjur Brændeland2013-04-07
| | | | | | | | | | | | | | | | | | | | Support virtio configuration space and device status. The virtio device can now access the resource table in shared memory. Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com> Acked-by: Ido Yariv <ido@wizery.com> [rebase and style changes] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
| * remoteproc: perserve resource table dataOhad Ben-Cohen2013-04-07
| | | | | | | | | | | | | | | | | | | | | | Copy resource table from first to second firmware loading. After firmware is loaded to memory, update the vdevs resource pointer to the resource table kept in device memory. Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com> Acked-by: Ido Yariv <ido@wizery.com> [rebase, terminology and style changes] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
| * remoteproc: calculate max_notifyid by counting vringsSjur Brændeland2013-04-07
| | | | | | | | | | | | | | | | | | | | Simplify handling of max_notifyid by simply counting the number of vrings. Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com> Acked-by: Ido Yariv <ido@wizery.com> [small terminology changes] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
| * remoteproc: code cleanup of resource parsingSjur Brændeland2013-04-05
| | | | | | | | | | | | | | | | | | | | Combine the almost identical functions rproc_handle_virtio_rsc and rproc_handle_boot_rsc. Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com> Acked-by: Ido Yariv <ido@wizery.com> [small terminology and style changes] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* | Merge branch 'for-linus' of ↵Linus Torvalds2013-04-30
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial Pull trivial tree updates from Jiri Kosina: "Usual stuff, mostly comment fixes, typo fixes, printk fixes and small code cleanups" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (45 commits) mm: Convert print_symbol to %pSR gfs2: Convert print_symbol to %pSR m32r: Convert print_symbol to %pSR iostats.txt: add easy-to-find description for field 6 x86 cmpxchg.h: fix wrong comment treewide: Fix typo in printk and comments doc: devicetree: Fix various typos docbook: fix 8250 naming in device-drivers pata_pdc2027x: Fix compiler warning treewide: Fix typo in printks mei: Fix comments in drivers/misc/mei treewide: Fix typos in kernel messages pm44xx: Fix comment for "CONFIG_CPU_IDLE" doc: Fix typo "CONFIG_CGROUP_CGROUP_MEMCG_SWAP" mmzone: correct "pags" to "pages" in comment. kernel-parameters: remove outdated 'noresidual' parameter Remove spurious _H suffixes from ifdef comments sound: Remove stray pluses from Kconfig file radio-shark: Fix printk "CONFIG_LED_CLASS" doc: put proper reference to CONFIG_MODULE_SIG_ENFORCE ...
| * | treewide: Fix typo in printk and commentsMasanari Iida2013-04-24
| |/ | | | | | | | | | | | | Fix typo in printk and comments within various drivers. Signed-off-by: Masanari Iida <standby24x7@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | remoteproc: fix error path of handle_vdevSjur Brændeland2013-04-05
| | | | | | | | | | | | | | | | | | | | | | Remove the vdev entry from the list before freeing it, otherwise rproc->vdevs will explode. Cc: stable@vger.kernel.org Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com> Acked-by: Ido Yariv <ido@wizery.com> [edit subject, minor commit log edit, cc stable] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* | remoteproc: fix the error check for idr_allocSuman Anna2013-04-05
|/ | | | | | | | | | | The new idr_alloc interface returns the allocated id back on success, so fix the error path to check for negative values. This was missed out in the newer idr interface adoption patch, 15fc611 "remoteproc: convert to idr_alloc()". Signed-off-by: Suman Anna <s-anna@ti.com> Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* remoteproc: convert to idr_alloc()Tejun Heo2013-02-27
| | | | | | | | | Convert to the much saner new idr interface. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Ohad Ben-Cohen <ohad@wizery.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* remoteproc: don't use idr_remove_all()Tejun Heo2013-02-27
| | | | | | | | | | idr_destroy() can destroy idr by itself and idr_remove_all() is being deprecated. Drop its usage. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Ohad Ben-Cohen <ohad@wizery.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* remoteproc: Fix use of format specifyerEmil Goode2012-10-02
| | | | | | | | | | | | | | | | | | | | | | | The dma_addr_t type can be either u32 or u64 depending on the configuration. We should use a format specifyer for the larger type and explicitly cast to it. Sparse warnings: drivers/remoteproc/remoteproc_core.c:234:2: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 6 has type ‘dma_addr_t’ [-Wformat] drivers/remoteproc/remoteproc_core.c:596:2: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 5 has type ‘dma_addr_t’ [-Wformat] drivers/remoteproc/remoteproc_core.c:634:3: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 5 has type ‘dma_addr_t’ [-Wformat] Signed-off-by: Emil Goode <emilgoode@gmail.com> [fix commit log typos] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* remoteproc: fix a potential NULL-dereference on cleanupDan Carpenter2012-10-02
| | | | | | | | | | | | We only need to allocate mapping if there is an IOMMU domain. Otherwise, when the mappings are released, the assumption that an IOMMU domain is there will crash and burn. CC: stable@vger.kernel.org Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> [ohad: revise commit log] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* remtoteproc: maintain max notifyidSjur Brændeland2012-09-18
| | | | | | | | | | | | Some of the rproc drivers (STE modem specifically) needs to know the range of the notification IDs used for notifying the device. Maintain a variable in struct rproc holding the largest allocated notification id, so low-level rproc drivers could access it. Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com> [ohad: rebase, slightly edit commit log] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* remoteproc: create a 'recovery' debugfs entryFernando Guzman Lugo2012-09-18
| | | | | | | | | | | | | | | | | | | | | | | | | | Add a 'recovery' debugfs entry to dynamically disable/enable recovery at runtime. This is useful when one is trying to debug an rproc crash; without it, a recovery will immediately take place, making it harder to debug the crash. Contributions from Subramaniam Chanderashekarapuram. Examples: - disabling recovery: $ echo disabled > <debugfs>/remoteproc/remoteproc0/recovery - in case you want to recover a crash, but keep recovery disabled (useful in debugging sessions when you expect additional crashes you want to debug): $ echo recover > <debugfs>/remoteproc/remoteproc0/recovery - enabling recovery: $ echo enabled > <debugfs>/remoteproc/remoteproc0/recovery Signed-off-by: Fernando Guzman Lugo <fernando.lugo@ti.com> [ohad: some white space, commentary and commit log changes] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
* remoteproc: add actual recovery implementationFernando Guzman Lugo2012-09-18
| | | | | | | | | | | | | Add rproc_trigger_recovery() which takes care of the recovery itself, by removing, and re-adding, all of the remoteproc's virtio devices. This resets all virtio users of the remote processor, during which the remote processor is powered off and on again. Signed-off-by: Fernando Guzman Lugo <fernando.lugo@ti.com> [ohad: introduce rproc_add_virtio_devices to avoid 1.copying code 2.anomaly] [ohad: some white space, naming and commit log changes] Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>