rmtfs.service fails to run with pull #35 when creation of the
qcom_rmtfs_mem* device is delayed.
Update the startup flow to trigger the service only after the
qcom_rmtfs_mem* node becomes available, using udev rules.
Signed-off-by: Pradeep P V K <pradeep.pragallapati@oss.qualcomm.com>
Allow having the rmtfs service present but not started on devices
which don't have a /dev/qcom_rmtfs_mem1 by starting only if this
node is present. This allows creating generic images, without
reporting an error because the service can't start when the device
node is lacking.
Fixes: #34
Reported-by: Agathe Porte <agathe.porte@oss.qualcomm.com>
Signed-off-by: Loïc Minier <loic.minier@oss.qualcomm.com>
OnePlus and Oppo devices with Qualcomm modems request OEM NV backup
partitions at /oem/nvbk/static and /oem/nvbk/dynamic. Without these
mappings, the modem crashes approximately 40 seconds after boot when it
fails to access the OEM NV data.
The partitions map to the oem_stanvbk and oem_dycnvbk partlabels which
are present on OnePlus/Oppo devices.
Some OxygenOS firmware versions also request /oppo/oem_partion (note:
the spelling is from the firmware) which maps to the same oem_stanvbk
partition.
Tested on OnePlus 7T (hotdogb) running postmarketOS with Qualcomm
SM8150 and OxygenOS Android 10 modem firmware.
Signed-off-by: Malte Schababerle <m.schababerle@gmail.com>
Commit 2ee01bf ("storage: Try opening the slot-suffixed partition")
introduced a bug where option '-o' is incorrectly specified as having no
argument. Therefore, passing -o with a path incorrectly sets that path
to the default '/boot' one as optarg evaluates to NULL. Fix this by
telling getopt that we expect an argument.
Fixes: 2ee01bf ("storage: Try opening the slot-suffixed partition")
Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
The partition /boot/modem_study needs to be served on the Milos/SM7635
Fairphone (Gen. 6) smartphone.
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
Some devices ship 2 copies of remote partitions (see e.g. #22), which
the current code can't cope with.
Add parsing of a slot suffix (via '-S', single character) and if
passed, retry opening partition (via a partlabel) with it.
Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Since rmtfs typically provides resources for wireless and modem-related
processors, it's important to ensure that this service starts before
and stops after NetworkManager.
On platforms like QCOM RB1, this sequencing prevents the Wi-Fi interface(s)
from being left in a dangling state while NetworkManager attempts to tear
down the interface(s):
https://github.com/qualcomm-linux/qcom-deb-images/issues/40#issuecomment-2944265370
The 'Before' dependency directive is ignored if NetworkManager is disabled or absent.
Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
The QRTR nameserver has been built into the kernel for years now, drop
the dependency since qrtr-ns.service won't do anything anyways.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
The EFS data can either be in a partition or a filesystem path. The rmtfs
allows both, but there is only a systemd service to use the former.
Add another systemd service that does the latter. By default, the EFS path
is /var/lib/rmtfs (which is the directory used by msm-cros-efs-loader.sh
and other tools that extract the EFS data) but this can be changed during
build by setting the RMTFS_EFS_PATH environment variable.
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
GCC version 13.2.1 20231205 complains about the following:
cc -Wall -g -O2 -c -o storage.o storage.c
In function ‘rmtfs_iovec’,
inlined from ‘handle_rmtfs’ at rmtfs.c:403:4:
rmtfs.c:224:12: warning: ‘is_write’ may be used uninitialized [-Wmaybe-uninitialized]
224 | if (is_write)
| ^
rmtfs.c: In function ‘handle_rmtfs’:
rmtfs.c:158:17: note: ‘is_write’ was declared here
158 | uint8_t is_write;
| ^
In function ‘rmtfs_iovec’,
inlined from ‘handle_rmtfs’ at rmtfs.c:403:4:
rmtfs.c:225:17: warning: ‘rmtfd’ may be used uninitialized [-Wmaybe-uninitialized]
225 | storage_sync(rmtfd);
| ^~~~~~~~~~~~~~~~~~~
rmtfs.c: In function ‘handle_rmtfs’:
rmtfs.c:154:23: note: ‘rmtfd’ was declared here
154 | struct rmtfd *rmtfd;
| ^~~~~
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>