- 30 1月, 2016 1 次提交
-
-
由 Stefan Agner 提交于
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: NStefan Agner <stefan@agner.ch> Acked-by: NSuman Anna <s-anna@ti.com> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 26 11月, 2015 1 次提交
-
-
由 Suman Anna 提交于
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: NSuman Anna <s-anna@ti.com> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 18 6月, 2015 1 次提交
-
-
由 Ohad Ben-Cohen 提交于
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: Nkbuild test robot <fengguang.wu@intel.com> Cc: Dave Gerlach <d-gerlach@ti.com> Cc: Suman Anna <s-anna@ti.com> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 17 6月, 2015 2 次提交
-
-
由 Suman Anna 提交于
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: NSuman Anna <s-anna@ti.com> Signed-off-by: NDave Gerlach <d-gerlach@ti.com> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Dave Gerlach 提交于
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 40e575b1 ("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: NDave Gerlach <d-gerlach@ti.com> Signed-off-by: NSuman Anna <s-anna@ti.com> [fix order of Signed-off-by tags] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 02 5月, 2015 1 次提交
-
-
由 Suman Anna 提交于
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: NSuman Anna <s-anna@ti.com> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 12 3月, 2015 1 次提交
-
-
由 Suman Anna 提交于
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: NSuman Anna <s-anna@ti.com> [small change in the commit title and in a single comment] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 01 7月, 2013 2 次提交
-
-
由 Thomas Meyer 提交于
Use kmemdup instead of kmalloc + memcpy. Signed-off-by: NThomas Meyer <thomas@m3y3r.de> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Suman Anna 提交于
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: NSuman Anna <s-anna@ti.com> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 30 6月, 2013 1 次提交
-
-
由 Wei Yongjun 提交于
Set 'ret' to -EINVAL when needed, so a sensible return value is returned on errors. Signed-off-by: NWei Yongjun <yongjun_wei@trendmicro.com.cn> [fix additional instances of this bug as well, update commit log] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 24 4月, 2013 1 次提交
-
-
由 Masanari Iida 提交于
Fix typo in printk and comments within various drivers. Signed-off-by: NMasanari Iida <standby24x7@gmail.com> Signed-off-by: NJiri Kosina <jkosina@suse.cz>
-
- 07 4月, 2013 5 次提交
-
-
由 Robert Tivy 提交于
If rproc_alloc isn't given a firmware name, look for a default one using the "rproc-%s-fw" template. Signed-off-by: NRobert Tivy <rtivy@ti.com> [add commit log, document change, use snprintf, minor style change] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Sjur Brændeland 提交于
Set the vring addresses in the resource table so that the remote device can read the actual addresses used. Signed-off-by: NSjur Brændeland <sjur.brandeland@stericsson.com> Acked-by: NIdo Yariv <ido@wizery.com> [rebase] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Sjur Brændeland 提交于
Support virtio configuration space and device status. The virtio device can now access the resource table in shared memory. Signed-off-by: NSjur Brændeland <sjur.brandeland@stericsson.com> Acked-by: NIdo Yariv <ido@wizery.com> [rebase and style changes] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Ohad Ben-Cohen 提交于
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: NSjur Brændeland <sjur.brandeland@stericsson.com> Acked-by: NIdo Yariv <ido@wizery.com> [rebase, terminology and style changes] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Sjur Brændeland 提交于
Simplify handling of max_notifyid by simply counting the number of vrings. Signed-off-by: NSjur Brændeland <sjur.brandeland@stericsson.com> Acked-by: NIdo Yariv <ido@wizery.com> [small terminology changes] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 05 4月, 2013 3 次提交
-
-
由 Sjur Brændeland 提交于
Combine the almost identical functions rproc_handle_virtio_rsc and rproc_handle_boot_rsc. Signed-off-by: NSjur Brændeland <sjur.brandeland@stericsson.com> Acked-by: NIdo Yariv <ido@wizery.com> [small terminology and style changes] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Sjur Brændeland 提交于
Remove the vdev entry from the list before freeing it, otherwise rproc->vdevs will explode. Cc: stable@vger.kernel.org Signed-off-by: NSjur Brændeland <sjur.brandeland@stericsson.com> Acked-by: NIdo Yariv <ido@wizery.com> [edit subject, minor commit log edit, cc stable] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Suman Anna 提交于
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, 15fc6110 "remoteproc: convert to idr_alloc()". Signed-off-by: NSuman Anna <s-anna@ti.com> Acked-by: NTejun Heo <tj@kernel.org> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 28 2月, 2013 2 次提交
-
-
由 Tejun Heo 提交于
Convert to the much saner new idr interface. Signed-off-by: NTejun Heo <tj@kernel.org> Cc: Ohad Ben-Cohen <ohad@wizery.com> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
由 Tejun Heo 提交于
idr_destroy() can destroy idr by itself and idr_remove_all() is being deprecated. Drop its usage. Signed-off-by: NTejun Heo <tj@kernel.org> Cc: Ohad Ben-Cohen <ohad@wizery.com> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 02 10月, 2012 2 次提交
-
-
由 Emil Goode 提交于
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: NEmil Goode <emilgoode@gmail.com> [fix commit log typos] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Dan Carpenter 提交于
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: NDan Carpenter <dan.carpenter@oracle.com> [ohad: revise commit log] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 19 9月, 2012 1 次提交
-
-
由 Sjur Brændeland 提交于
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: NSjur Brændeland <sjur.brandeland@stericsson.com> [ohad: rebase, slightly edit commit log] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 18 9月, 2012 3 次提交
-
-
由 Fernando Guzman Lugo 提交于
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: NFernando Guzman Lugo <fernando.lugo@ti.com> [ohad: some white space, commentary and commit log changes] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Fernando Guzman Lugo 提交于
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: NFernando 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: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Fernando Guzman Lugo 提交于
Allow low-level remoteproc drivers to report rproc crashes by exporting a new rproc_report_crash() function (invoking this from non-rproc drivers is probably wrong, and should be carefully scrutinized if ever needed). rproc_report_crash() can be called from any context; it offloads the tasks of handling the crash to a separate thread. Handling the crash from a separate thread is helpful because: - Ability to call invoke rproc_report_crash() from atomic context, due to the fact that many crashes trigger an interrupt, so this function can be called directly from ISR context. - Avoiding deadlocks which could happen if rproc_report_crash() is called from a function which indirectly holds the rproc lock. Handling the crash might involve: - Remoteproc register dump - Remoteproc stack dump - Remoteproc core dump - Saving Remoteproc traces so they can be read after the crash - Reseting the remoteproc in order to make it functional again (hard recovery) Right now, we only print the crash type which was detected, and only the mmufault type is supported. Remoteproc low-level drivers can add more types when needed. Signed-off-by: NFernando Guzman Lugo <fernando.lugo@ti.com> [ohad: some commentary, white space and commit log changes] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 15 7月, 2012 4 次提交
-
-
由 Sjur Brændeland 提交于
Firmware handling is made customizable. This is done by creating a separate ops structure for the firmware functions that depends on a particular firmware format (such as ELF). The ELF functions are default used unless the HW driver explicitly injects another firmware handler by updating rproc->fw_ops. The function rproc_da_to_va() is exported, as custom firmware handlers may need to use this function. Signed-off-by: NSjur Brændeland <sjur.brandeland@stericsson.com> [ohad: namespace fixes, whitespace fixes, style fixes] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Sjur Brændeland 提交于
Prepare for introduction of custom firmware loaders by moving all ELF related handling into a separate file. The functions: rproc_find_rsc_table(), rproc_fw_sanity_check(), rproc_find_rsc_table() and rproc_get_boot_addr() are moved to the new file remoteproc_elf_loader.c. The function rproc_da_to_va() is made non-static and is declared in remoteproc_internal.h No functional changes are introduced in this patch. Signed-off-by: NSjur Brændeland <sjur.brandeland@stericsson.com> [ohad: rebase, fix kerneldoc, put prototypes in remoteproc_internal.h] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Sjur Brændeland 提交于
Prepare for introduction of custom firmware loaders by moving the function operating on ELF data-structures into separate functions. Move lookup of the boot_addr in the ELF binary to the function rproc_get_boot_addr(). Signed-off-by: NSjur Brændeland <sjur.brandeland@stericsson.com> [rproc_get_boot_addr's kerneldoc: add missing @rproc line] [rproc_get_boot_addr's kerneldoc: minor style changes] Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Sjur Brændeland 提交于
Prepare for introduction of custom firmware loaders by changing the functions rproc_find_rcs_table() and rproc_load_segments() to use struct firmware as parameter. When the custom loader framework is introduced all calls into the firmware specific function must use struct firmware as parameter. Signed-off-by: NSjur Brændeland <sjur.brandeland@stericsson.com> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 06 7月, 2012 6 次提交
-
-
由 Ohad Ben-Cohen 提交于
To make remoteproc's API more intuitive for developers, we adopt the driver core's naming, i.e. alloc -> add -> del -> put. We'll also add register/unregister when their first user shows up. Otherwise - there's no functional change here. Suggested by Russell King <linux@arm.linux.org.uk>. Cc: Russell King <linux@arm.linux.org.uk> Cc: Fernando Guzman Lugo <fernando.lugo@ti.com> Cc: Sjur Brændeland <sjur.brandeland@stericsson.com> Reviewed-by: NLinus Walleij <linus.walleij@linaro.org> Acked-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Ohad Ben-Cohen 提交于
Remove rproc_get_by_name() and rproc_put(), and the associated remoteproc infrastructure that supports it (i.e. klist and friends), because: 1. No one uses them 2. Using them is highly discouraged, and any potential user will be deeply scrutinized and encouraged to move. If a user, that absolutely can't live with the direct boot/shutdown model, does show up one day, then bringing this functionality back is going to be trivial. At this point though, keeping this functionality around is way too much of a maintenance burden. Cc: Sjur Brændeland <sjur.brandeland@stericsson.com> Cc: Loic Pallardy <loic.pallardy@stericsson.com> Cc: Ludovic BARRE <ludovic.barre@stericsson.com> Cc: Michal Simek <monstr@monstr.eu> Cc: Fernando Guzman Lugo <fernando.lugo@ti.com> Cc: Suman Anna <s-anna@ti.com> Cc: Mark Grosen <mgrosen@ti.com> Acked-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Ohad Ben-Cohen 提交于
Publish carveout addresses on non-iommu setups too. Reported-and-acked-by: NSjur Brændeland <sjur.brandeland@stericsson.com> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Ohad Ben-Cohen 提交于
Simplify the unregister/free interfaces, and make them easier to understand and use, by moving to a symmetric and consistent alloc() -> register() -> unregister() -> free() flow. To create and register an rproc instance, one needed to invoke rproc_alloc() followed by rproc_register(). To unregister and free an rproc instance, one now needs to invoke rproc_unregister() followed by rproc_free(). Cc: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Ohad Ben-Cohen 提交于
Now that every rproc instance contains a device, we don't need a kref anymore to maintain the refcount of the rproc instances: that's what device are good with! This patch removes the now-redundant kref, and switches to {get, put}_device instead of kref_{get, put}. We also don't need the kref's release function anymore, and instead, we just utilize the class's release handler (which is now responsible for all memory de-allocations). Cc: Stephen Boyd <sboyd@codeaurora.org> Cc: Fernando Guzman Lugo <fernando.lugo@ti.com> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
由 Ohad Ben-Cohen 提交于
For each registered rproc, maintain a generic remoteproc device whose parent is the low level platform-specific device (commonly a pdev, but it may certainly be any other type of device too). With this in hand, the resulting device hierarchy might then look like: omap-rproc.0 | - remoteproc0 <---- new ! | - virtio0 | - virtio1 | - rpmsg0 | - rpmsg1 | - rpmsg2 Where: - omap-rproc.0 is the low level device that's bound to the driver which invokes rproc_register() - remoteproc0 is the result of this patch, and will be added by the remoteproc framework when rproc_register() is invoked - virtio0 and virtio1 are vdevs that are registered by remoteproc when it realizes that they are supported by the firmware of the physical remote processor represented by omap-rproc.0 - rpmsg0, rpmsg1 and rpmsg2 are rpmsg devices that represent rpmsg channels, and are registerd by the rpmsg bus when it gets notified about their existence Technically, this patch: - changes 'struct rproc' to contain this generic remoteproc.x device - creates a new "remoteproc" type, to which this new generic remoteproc.x device belong to. - adds a super simple enumeration method for the indices of the remoteproc.x devices - updates all dev_* messaging to use the generic remoteproc.x device instead of the low level platform-specific device - updates all dma_* allocations to use the parent of remoteproc.x (where the platform-specific memory pools, most commonly CMA, are to be found) Adding this generic device has several merits: - we can now add remoteproc runtime PM support simply by hooking onto the new "remoteproc" type - all remoteproc log messages will now carry a common name prefix instead of having a platform-specific one - having a device as part of the rproc struct makes it possible to simplify refcounting (see subsequent patch) Thanks to Stephen Boyd <sboyd@codeaurora.org> for suggesting and discussing these ideas in one of the remoteproc review threads and to Fernando Guzman Lugo <fernando.lugo@ti.com> for trying them out with the (upcoming) runtime PM support for remoteproc. Cc: Fernando Guzman Lugo <fernando.lugo@ti.com> Reviewed-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 04 7月, 2012 1 次提交
-
-
由 Ohad Ben-Cohen 提交于
Dynamically allocate the vrings' DMA when the remote processor is about to be powered on (i.e. when ->find_vqs() is invoked), and release them as soon as it is powered off (i.e. when ->del_vqs() is invoked). The obvious and immediate benefit is better memory utilization, since memory for the vrings is now only allocated when the relevant remote processor is used. Additionally, this approach also makes recovery of a (crashing) remote processor easier: one just needs to remove the relevant vdevs, and the entire vrings cleanup takes place automagically. Tested-by: NFernando Guzman Lugo <fernando.lugo@ti.com> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
-
- 10 6月, 2012 2 次提交
-
-
由 Sjur Brændeland 提交于
If rproc_find_rsc_table() fails, rproc_fw_boot() must set return-value before jumping to clean_up label. Otherwise no error value is returned. Signed-off-by: NSjur Brændeland <sjur.brandeland@stericsson.com> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com> Cc: stable@vger.kernel.org
-
由 Sjur Brændeland 提交于
Fix compile warnings from GCC 4.6.1 when printing values of type size_t. drivers/remoteproc/remoteproc_core.c:251:6: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 4 has type ‘size_t’ [-Wformat] drivers/remoteproc/remoteproc_core.c:938:9: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 4 has type ‘size_t’ [-Wformat] drivers/remoteproc/remoteproc_core.c:1023:2: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘size_t’ [-Wformat] Signed-off-by: NSjur Brændeland <sjur.brandeland@stericsson.com> Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com> Cc: stable@vger.kernel.org
-