Age | Commit message (Collapse) | Author |
|
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
|
|
|
|
Open the storage devices as O_SYNC, to make sure modem writes aren't
lingering in the event of power loss or sudden reboot.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
Using git describe on upstream source,
For example,
$ git describe --match v0.* --tags UPSTREAM_BRANCH
v0.2-35-g1cc12d3
Will be transform into 0.2+35g1cc12d3 and then add debian_revision.
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
|
|
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
|
|
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
|
|
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
|
|
Use storage_close() to free up the shadow buffers as well, to avoid any
lingering allocations.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
We're not joining the start and stop threads, so create them in detached
state to avoid having their resources lingering.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
According to valgrind the modalias read from the remoteproc device is
not NUL-terminated, so do this to avoid reading in the weeds.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
Include the reason for the failure to update the "state" sysfs
attribtue in the error message.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
|
|
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
|
|
The old mechanism searched for remoteproc instances from the
qcom_q6v5_mss driver, but in modern platforms the MSA based remoteproc
model has been replaced by the PAS based one. As such we use the common
qcom_q6v5_pas driver - as with other subsystems.
Use the modalias to find remoteproc drivers with the mpss-pas or mss-pil
compatible to find these, and fall back to the old heuristics if this
fails.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
Attempting to shut down a system with rmtfs running without an
associated remoteproc results in systemd waiting forever for the
remoteproc code to never signal that it's done.
Instead exit immediately when signalled, when there's no associated
remoteproc.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
|
|
Building rmtfs on AOSP, we see a lot of the following:
warning: arithmetic on a pointer to void is a GNU extension
Fix this by casting the void* ptrs to char* when doing pointer
arithmatic.
Signed-off-by: John Stultz <john.stultz@linaro.org>
[AmitP: Fixed cherry-pick conflicts and updated commit log]
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
Instead of hardcoding BY_PARTLABEL_PATH for AOSP,
reuse -o option as suggested by Bjorn to expand John's
patch to find correct partition by-name on newer
kernels (which is /dev/block/platform/soc*/*.*/by-name).
For example: On db845c running v5.4+ kernel we run:
rmtfs -o /dev/block/platform/soc@0/1d84000.ufshc/by-name -P -r -s
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
/dev/qcom_rmtfs_mem0 fd is required to share the data.
Fixes: 9ef260ba6f55 ("ANDROID: Add Android support")
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
* Add Android.bp makefile to build rmtfs for AOSP.
* libudev is not supported on AOSP so read
/sys/class/rmtfs sysfs entries directly.
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
|
|
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
|
|
|
|
Systemd has a default restart policy of 5 retries so wait
1 second in each retry because if is too fast will fail to
start properly.
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
|
|
When -s option is specified rmtfs handled the start of rproc
but at init may be the /sys entries are not fully populated yet
due to module load/setup so exit with 1 and let systemd restart
the service.
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
|
|
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
|
|
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
|
|
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
|
|
|
|
Upon populating the shadow_buf the no fd is associated with the rmtfd.
Therefor the next open request will conclude that the rmtfd is available
and use the same entry. Fix this by checking for both associated fd and
shadow_buf in the open call.
Fixes: c35633ab2312 ("storage: Allow read only backing storage")
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
Add rmtfs.service and install this.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
Add sigterm/sigint handlers to enable graceful rmtfs server
bringdown on first instance of SIGINT/SIGTERM. Start/Stop the
remoteproc instance on RMTFS service up and SIGINT/SIGTERM
respectively. Force quit on second instance of SIGINT/SIGTERM.
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
[bjorn: Pipe for event loop signaling, reworked /sys traversal]
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
Most devices has partitions named modemst1, modemst2, fsg and fsc
backing the rmtfs. Add a new argument '-P' to get the storage
implementation to use these partitions directly instead of files.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
Add a new argument '-r' to prevent writes back to the backing storage.
This is useful for experimenting with the remote storage, without having
the files overwritten.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
Pass "struct rmtfd" instead of file descriptors in the interface. This
cleans up the api a little bit, but more importantly allow us to
associate additional things with the remote file descriptors.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
The caller (and caller_id) are really "remote file descriptors", so
rename them based on this.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
Instead of relying on an initial lseek, use pread/pwrite. This creates a
cleaner interface towards the storage.c implementation, allowing us to
provide a memory-only implementation of the backing storage.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
Enable the specification of storage paths other than /boot, using
a new -o command line argument. Getoptify the command line arguments
for better processing.
|
|
Currently, in order to back the EFS storage with a regular file,
those files have to be pre-allocated, and with their correct size.
This is especially problematic when preparing a minimal FSG, since
we do not know ahead of time what size to pre-allocate.
Allow reads that go beyond the end of the backing storage to simply
read zeroes. When a write comes in, the file will be automatically
expanded to the correct size. (And should really only be written
if a full sector was pulled out of the modem). For solutions
that use partitions instead of files, this change should be a no-op.
|
|
Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
|
|
|
|
This patch addresses the following compiler warnings on unused function:
rmtfs.c:24:22: warning: unused function 'cpu_to_le32' [-Wunused-function]
static inline __le32 cpu_to_le32(uint32_t x) { return htole32(x); }
^
rmtfs.c:25:24: warning: unused function 'le32_to_cpu' [-Wunused-function]
static inline uint32_t le32_to_cpu(__le32 x) { return le32toh(x); }
^
|
|
The 'phys_address' argument of rmtfs_mem_read() and rmtfs_mem_write() is
an 'unsigned long' type value, which is then passed to the
'phys_address' argument of rmtfs_mem_ptr(), which is an 'unsigned int'
type value. This patch fixes the mismatch.
Signed-off-by: Ben Chan <benchan@chromium.org>
|
|
I see warnings like this:
sharedmem.c:89:44: warning: incompatible pointer types passing 'uint64_t *' (aka 'unsigned long long *') to parameter of type 'unsigned long *' [-Wincompatible-pointer-types]
Since 'unsigned long' might actually be smaller than 'uint64_t', we
should really upgrade to 'unsigned long long' parsing.
At the same time, the existing error handling was wrong: it should have
been looking for ULONG_MAX (per the man page). Convert that to
ULLONG_MAX to fix that bug while we're at it.
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
|
|
The caller might have specified CFLAGS or LDFLAGS. Let's respect those.
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
|
|
Also a fix to error-reporting for opening the storage.
|
|
Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
|
|
Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
|
|
Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
|
|
This is now needed since new upstream release.
Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
|