Promote to 1.0.6#73
Conversation
Newer compiler versions include various improvements, ranging from codegen and support for newer arch extensions to improved warning messages, which help keep the code less buggy. Discourage the use of the six year old GCC 7.5, in favor of using whatever newest revision the user's distribution decides to ship. Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Create systemd service files for DSP RPC daemons (aDSP, cDSP, gDSP, sDSP) with device-conditional startup. Each service uses After directives to ensure proper ordering with corresponding device units (dev-fastrpc-*-device and dev-fastrpc-*-secure.device),and ConditionPathExists directives to conditionally start only when at least one of the device paths exists (/dev/fastrpc-* or /dev/fastrpc-*-secure). Includes automatic restart on failure with 5-second delay between attempts. Services are enabled for multi-user.target. Signed-off-by: Vinayak Katoch <vkatoch@qti.qualcomm.com>
Configure systemd unit directory through DISTCHECK_CONFIGURE_FLAGS to avoid permission denied errors during distcheck. Signed-off-by: Vinayak Katoch <vkatoch@qti.qualcomm.com>
Create systemd service files for DSP RPC daemons (aDSP, cDSP, gDSP, sDSP) with device-conditional startup. Each service uses After directives to ensure proper ordering with corresponding device units (dev-fastrpc-\*-device and dev-fastrpc-\*-secure.device),and ConditionPathExists directives to conditionally start only when at least one of the device paths exists (/dev/fastrpc-\* or /dev/fastrpc-\*-secure). Includes automatic restart on failure with 5-second delay between attempts. Services are enabled for multi-user.target. Fixes: #245
Add generated gdsprpcd file to .gitignore. Signed-off-by: Ekansh Gupta <ekansh.gupta@oss.qualcomm.com>
- Updated `runs-on` to use self-hosted runner group: `GHA-fastrpc-Prd-SelfHosted-RG` - Use AWS runners to support uploading artifacts to the configured S3 location Signed-off-by: Tharun Kumar Merugu <mtharu@qti.qualcomm.com>
Add generated gdsprpcd file to .gitignore.
To streamline the bug reporting process, ask some questions upfront. Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
To streamline the bug reporting process, ask some questions upfront.
**Summary** - Updated runs-on to use the self-hosted runner group: GHA-fastrpc-Prd-SelfHosted-RG - Configured AWS runners to support uploading artifacts to the designated S3 location. **Why This Change?** - Track changes and results generated from the repository - Maintain backward compatibility at the repo level - Display these details in the [Armor](https://armor.qualcomm.com/public-overview/public_headers) dashboard for better visibility **Impact** - Ensures seamless artifact uploads to S3 using AWS runners. - Enhances observability and traceability for CI/CD workflows. - No breaking changes introduced; backward compatibility is preserved. CRs-Fixed: 4400385
Clean up unused PM QoS implementation. PM QoS is not supported by fastrpc driver, so related code is removed. Signed-off-by: Jianping Li <jianping.li@oss.qualcomm.com>
Add a systemd unit file for the audiopd RPC daemon, allowing the aDSP to load modules dynamically as needed. This supports features such as runtime loading of decoder modules for compress‑offload audio playback. Signed-off-by: Sairamreddy Bojja <sbojja@qti.qualcomm.com>
Add a systemd service to manage the audiopd RPC daemon to support dynamic module loading on the aDSP.
This PR addresses issue #225 by removing unused PM QoS code. Changes include: - Removal of PM_Qos-related fastrpc code - Cleanup of associated headers and macros - Verified that no active components depend on the removed code - This cleanup improves maintainability and aligns with the current usage patterns of fastRPC Fixes #225.
Poll job state via lavacli inside Docker Handle cancelled/incomplete states and enforce 2‑hour timeout On completion, fetch results and determine pass/fail Update GitHub summary with job status, job ID, and URL Prevent incorrect reporting when jobs fail early or never finish Signed-off-by: Tharun Kumar Merugu <mtharu@qti.qualcomm.com>
Standard glibc does not provide BSD-specific string functions like strlcpy and strlcat, which are needed for safe string operations. Android includes these functions natively, but Linux GNU builds require an external library to provide them. Add dependency on libbsd-overlay for non-Android targets to provide the missing BSD functions. Configure the build system to detect and link against libbsd when building for Linux GNU platforms. Signed-off-by: Vinayak Katoch <vkatoch@qti.qualcomm.com>
Add libbsd-dev:arm64 to ARM64 workflows (build_linux_arm64.yml, codeql.yml, abi-compat.yml) and ensure libbsd-dev is in build_linux_gnu.yml to resolve configure errors during compilation. Signed-off-by: Vinayak Katoch <vkatoch@qti.qualcomm.com>
Check for libbsd on non-Android targets and export BSD_CFLAGS and BSD_LIBS. Include BSD flags in CFLAGS and link BSD libs alongside YAML libs. Add libbsd-dev:arm64 to ARM64 workflows and ensure libbsd-dev is in build_linux_gnu.yml. ## Technical Details @BSD_CFLAGS@ adds the BSD include path (e.g., `-isystem /usr/include/bsd`). With libbsd-overlay, when `<string.h>` is included, the BSD header chain is pulled in indirectly through the overlay mechanism. As a result, the compiler sees the strlcpy/strlcat prototypes and no longer warns about implicit declarations, without requiring an explicit `#include <bsd/string.h>`. ## Changes - **configure.ac**: Added PKG_CHECK_MODULES for libbsd-overlay on non-Android builds - **src/Makefile.am**: Added @BSD_CFLAGS@ to LIBDSPRPC_CFLAGS and @BSD_LIBS@ to library link flags - **Workflows**: Updated CI workflows to install libbsd-dev package for Linux builds Fixes: #265
Document required dependencies (libyaml, libmd, libbsd) for cross-compiling FastRPC on Ubuntu. Include step-by-step build instructions with proper cross-compilation configuration for aarch64-linux-gnu target to resolve dependency missing failures during the build process. Signed-off-by: Vinayak Katoch <vkatoch@qti.qualcomm.com>
Some may send the RPC_PM_QOS control-domain command. The current driver does not support PM QoS operations, so return a false success to preserve compatibility and avoid triggering unexpected failures. Signed-off-by: Jianping Li <jianping.li@oss.qualcomm.com>
- Introduces GitHub Actions workflow to build the Linux kernel using the FastRPC Docker image - Runs weekly every Sunday at midnight UTC - Builds kernel from qcom-next branch of qualcomm-linux/kernel - Uploads compressed artifacts for debugging and validation Signed-off-by: Tharun Kumar Merugu <mtharu@qti.qualcomm.com>
This workflow is an adapted copy of this workflow : https://github.com/qualcomm-linux/pkg-template/blob/main/.github/workflows/to_paste_in_upstream/pkg-build-pr-check.yml With this workflow in position, a PR in the upstream project repo (this one) triggers a build or the sister package repo. The special repo variable PKG_REPO_GITHUB_NAME will need to be set. See visit https://github.com/qualcomm-linux/pkg-template for more info about this whole CI workflow Signed-off-by: Simon Beaudoin <sbeaudoi@qti.qualcomm.com>
This workflow is an adapted copy of this workflow : https://github.com/qualcomm-linux/pkg-template/blob/main/.github/workflows/to_paste_in_upstream/pkg-build-pr-check.yml With this workflow in position, a PR in the upstream project repo (this one) triggers a build or the sister package repo (in this case, it will be https://github.com/qualcomm-linux/pkg-fastrpc). The special repo variable PKG_REPO_GITHUB_NAME will need to be set to "qualcomm-linux/pkg-fastrpc" in this repo for this to work. See visit https://github.com/qualcomm-linux/pkg-template for more info about this whole CI workflow. When a PR is open in this repo, this workflow will in turn call this one : https://github.com/qualcomm-linux/qcom-build-utils/blob/main/.github/workflows/qcom-upstream-pr-pkg-build-reusable-workflow.yml What it will do is try to compile the debian package from the "qualcomm-linux/pkg-fastrpc" but with the changes from the PR opened on this side added in order to test that the debian package will still build if this PR were to be merged. Ultimately, there will be even more tests downstream from that, like integration tests in a whole distro.
Some may send the RPC_PM_QOS control-domain command. The current driver does not support PM QoS operations, so return a false success to preserve compatibility and avoid triggering unexpected failures.
This change updates the workflow to: - Check LAVA job status using lavacli inside the Docker container - Handle additional states such as Cancelled, Incomplete, or timeout (>2 hours) - Wait until the job reaches Finished before proceeding - Fetch test results on completion and set pass/fail summary in GitHub Actions - Update the step summary with job ID, URL, and final status This improves reliability of LAVA-triggered test pipelines and prevents workflows from hanging or reporting incorrect results.
## Summary This PR adds a new GitHub Actions workflow that performs a weekly kernel build using the FastRPC Docker image. The workflow automatically builds the Linux kernel from the `qcom-next` branch of the `qualcomm-linux/kernel` repository and uploads the generated artifacts. ## Key Features - Weekly scheduled run (`cron: 0 0 * * 0`) - Builds kernel using custom FastRPC Docker environment - Zips and uploads all build artifacts for downstream testing - Ensures automated, consistent kernel snapshots for validation ## Verification The workflow has been successfully tested and verified in the staging environment. You can review the successful run here: 🔗 **Staging Run:** https://github.com/qualcomm-linux-stg/fastrpc/actions/runs/21269727139 ## Why This Change? - Provides regular kernel builds aligned with upstream changes - Enables automated testing and faster detection of regressions - Ensures stable and reproducible artifact availability for the team ## Notes - Workflow triggers automatically every Sunday at midnight UTC - No changes to existing workflows or build logic outside this addition
-This change adds support for a precompiled kernel image by implementing a nightly kernel build workflow that compiles the kernel once and uploads the resulting artifacts to S3. PR workflows are updated to download these nightly artifacts when generating the ramdisk, removing the need to rebuild the kernel within every PR. -This eliminates repeated kernel rebuilds across PRs, significantly reducing CI time, compute usage, and kernel‑related failure noise. Signed-off-by: Tharun Kumar Merugu <mtharu@qti.qualcomm.com>
Document required dependencies (libyaml, libmd, libbsd) for cross-compiling FastRPC on Ubuntu. Include step-by-step build instructions with proper cross-compilation configuration for aarch64-linux-gnu target to resolve dependency missing failures during the build process. Fixes: #274
Autotools expects library dependencies to be specified via *_LIBADD,
not LDFLAGS. Placing -ldl -lm and $(USE_LOG) in *_LIBADD ensures
libtool orders them after objects and before dependent libs, and
prevents it from treating dependent libs as linker flags.
This fixes a non-Android link failure on aarch64 where libtool tried
to load a .la for BSD and errored with:
libtool: error: '/usr/aarch64-linux-gnu/lib/libbsd.la' is not a
valid libtool archive
By moving these flags into lib{adsp,cdsp,sdsp,gdsp}rpc_la_LIBADD and
keeping LDFLAGS limited to versioning, the link completes cleanly
across targets.
Signed-off-by: Abhinav Parihar <parihar@qti.qualcomm.com>
remote_mmap64_internal() currently uses the MMAP_64 ioctl for all mapping flags. However, MMAP_64 is only supported for specific use cases such as adding pages or mapping the remote heap. Update remote_mmap64_internal() to route only ADSP_MMAP_ADD_PAGES and ADSP_MMAP_REMOTE_HEAP_ADDR through the MMAP_64 ioctl. All other flags now fall back to fastrpc_mmap_internal(), which provides broader backend support. Because the use of fastrpc_mmap_internal has been moved inside remote_mmap64_internal, the application of fastrpc_mmap_internal in apps_mem_imp.c will be reverted. Signed-off-by: Jianping Li <jianping.li@oss.qualcomm.com>
Replace pull_request_target with pull_request in PR workflows to follow GitHub security practices and avoid elevated permissions during PR validation.
Carrying 2 fixes 1. Initialize apps_std earlier to ensure it is available before being used by config and listener paths. 2. guard against refcount underflow in fastrpc session put
DSP runtime logs emitted by adspmsgd are currently written to stdout using printf(), which causes them to be routed to the console instead of systemd journal on Linux systems. Add support for routing logs via syslog when USE_SYSLOG is enabled, and use platform-specific logging backends where applicable. This ensures that runtime DSP logs are correctly captured by journalctl on Linux while preserving existing Android logging behavior. Fallback to stdout is retained for non-Android and non-syslog builds.
remote_mmap64_internal() currently uses the MMAP_64 ioctl for all mapping flags. However, MMAP_64 is only supported for specific use cases such as adding pages or mapping the remote heap. Update remote_mmap64_internal() to route only ADSP_MMAP_ADD_PAGES and ADSP_MMAP_REMOTE_HEAP_ADDR through the MMAP_64 ioctl. All other flags now fall back to fastrpc_mmap_internal(), which provides broader backend support. Because the use of fastrpc_mmap_internal has been moved inside remote_mmap64_internal, the application of fastrpc_mmap_internal in apps_mem_imp.c will be reverted.
GDSP0_DOMAIN_ID and GDSP1_DOMAIN_ID are internal platform-specific constants not part of the Hexagon SDK API. Move them out of the inc/remote.h into inc/fastrpc_common.h to align remote.h with the Hexagon SDK remote.h surface.
Use portable PRIx64 and PRId64 format specifiers from inttypes.h instead of %llx and %lld for uint64_t and int64_t types. This fixes compiler warnings on platforms where these types are defined as 'long' rather than 'long long'. Signed-off-by: Loïc Minier <loic.minier@oss.qualcomm.com>
The fopen_from_dirlist function was incorrectly modifying its const char* dirList parameter. Fix this by creating a local copy of the directory list, preserving the const contract with callers. Signed-off-by: Loïc Minier <loic.minier@oss.qualcomm.com>
Eliminate warnings caused by the use of the same buffer as both source and destination in string operations. Changes: - fastrpc_apps_user.c: Replace strlcpy(pdName, pdName, len) with a direct null-termination to truncate string in place - mod_table.c: Replace snprintf(tmp, ..., tmp) with strlcat to append the "_system.so" suffix without buffer overlap Signed-off-by: Loïc Minier <loic.minier@oss.qualcomm.com>
Remove the "bail" label by replacing the goto with an early return as the unused label was causing warnings. Signed-off-by: Loïc Minier <loic.minier@oss.qualcomm.com>
Remove unused GDSP library variable definitions from Makefile.am that were causing automake warnings. GDSP daemon correctly shares the CDSP libraries rather than building separate GDSP-specific libraries. Add comments ahead of gdsp => cdsp usage to make it clear these are by design. Signed-off-by: Loïc Minier <loic.minier@oss.qualcomm.com>
Handle return values from write() calls to ftrace trace_marker_fd to avoid warnings from -Wunused-result warnings. For the begin trace marker, check if the write succeeded before setting trace_enabled to ensure we only write the end marker if the begin marker was successfully written. For the end trace marker, capture the return value in an unused variable since this is in the cleanup code path. Signed-off-by: Loïc Minier <loic.minier@oss.qualcomm.com>
Add --enable-stricter configure flag to enable security hardening and strict warning flags based on Debian's dpkg-buildflags defaults. This helps compatibility with distros and allows detecting more issues during development. Use --enable-stricter in CI workflow to catch regressions early. Signed-off-by: Loïc Minier <loic.minier@oss.qualcomm.com>
Remove unused 'pn' and 'pnn' variables that were declared but never used in the remote_munmap64 function as part of f68b30a; fixes build warning. Signed-off-by: Loïc Minier <loic.minier@oss.qualcomm.com>
Various build warning fixes, and improvements to CI builds flags. - **Fix format string warnings for 64-bit integer types** - **Fix const qualifier warnings from fopen_from_dirlist** - **Fix -Wrestrict warnings due to overlapping buffers** - **Fix -Wint-in-bool-context warnings in _ALLOCATE** - **Fix unused label warnings in dsprpcd daemons** - **Fix GDSP library build configuration** - **Fix unused result warnings for trace marker writes** - **Add and use --enable-stricter configure flag** - **Remove unused userspace allocation check** Fixes: #329
systemd derives unit names from device paths by replacing each '/' with '-' and escaping any literal '-' in the path as '\x2d'. So for /dev/fastrpc-* nodes the correct device unit name for e.g. /dev/fastrpc-adsp is dev-fastrpc\x2dadsp.device, not dev-fastrpc-adsp.device (which would refer to /dev/fastrpc/adsp). Fix all seven service files accordingly. Without this the After= ordering constraints were silently ignored. Signed-off-by: Loïc Minier <loic.minier@oss.qualcomm.com>
Set up udev rules to enable FastRPC access through the fastrpc group. Non-secure device nodes use root:fastrpc ownership and 0660 permissions to allow daemon and client access without root. Leave secure device nodes unchanged to preserve default ownership and permissions. Changes to secure node handling will be addressed separately. Set SYSTEMD_WANTS for device-triggered daemon start and add audiopd service trigger for ADSP devices. Add configure support for installing udev rules and sysusers configuration to create the fastrpc group. Document user/group requirements in README.md. Signed-off-by: Loïc Minier <loic.minier@oss.qualcomm.com> Signed-off-by: Ekansh Gupta <ekansh.gupta@oss.qualcomm.com>
Services are automatically started when device nodes appear, so attempting to starting services again on multi-user.target will not do anything since these depend on the device nodes being present and either won't start or would have already started. Signed-off-by: Loïc Minier <loic.minier@oss.qualcomm.com>
Use PKG_CHECK_VAR to query systemd.pc for the installation directory for systemd system unit files. Signed-off-by: Loïc Minier <loic.minier@oss.qualcomm.com>
The *rpcd daemons are system services that should be started with the fastrpc group by udev/systemd, not user commands. Move them to sbin following standard FHS conventions. Fix the hardcoding of these pathnames in service files to be properly generated by generating them dynamically. Signed-off-by: Loïc Minier <loic.minier@oss.qualcomm.com>
Converge systemd services from Debian packaging with upstream ones with fastrpc user/group. - **files: fix device unit names in After= dependencies** - **files: run daemons as dedicated fastrpc user** - **files: add udev rules and fastrpc user/group**
This commit pulls in upstream changes from 'v1.0.6' into the Debian packaging branch. Since upstream project might have content of their own in their .github/ folder (because they have CI stuff on their side), it's important to NOT pick up .github/ folder from upstream, and only leave the .github/ folder from debian packaging branch. The same applies to debian/ folder if upstream has one (which is rare but possible). This commit was generated automatically by qcom-build-utils/scripts/merge_debian_packaging_upstream. Signed-off-by: GitHub Service Bot <githubservice@qti.qualcomm.com>
Signed-off-by: GitHub Service Bot <githubservice@qti.qualcomm.com>
Add libbsd-dev to Build-Depends for libbsd-overlay pkg-config checks introduced in upstream 1.0.6. Signed-off-by: Simon Beaudoin <sbeaudoi@qti.qualcomm.com>
Adjust fastrpc-support.install to pick daemons from usr/sbin. Update not-installed entries for upstream-installed files that are not packaged in this branch. Signed-off-by: Simon Beaudoin <sbeaudoi@qti.qualcomm.com>
|
Robie Basak (@basak-qcom) Robie, ekansh reached out to me to get this working; he asked to support the ubuntu noble distro. I therefore went and created the branch qcom/ubuntu/noble from qcom/ubuntu/trixie which was pegged at 1.0.2 Then, I prepped the branch by doing a changelog cleanup ( Then, I ran the promotion workflow on the qcom/ubuntu/noble branch for upstream tag v1.0.6 Then, I had to do a couple of things to get the get the pkg-promote workflows green:
After these adjustments, the noble promote/build path with the current pkg-workflows succeeded. Now, I remember we had talked about that gbp.conf file a long time ago and the convo just died, but then with this its coming back to the surface. I think we should drop that gbp.conf file. The standard says upstream/%(version)s is the default assumed schema, which I followed, and therefore it makes no sense to declare an override in a gbp.conf, no?. The idea is to really not need it at all in my opition, this way we avoid the mess of having such defaults be overriden in some repos / branches and not other. Now, the failing test is due to the ingestion of upstream repo commits which contain bad emails.. I think we are going to have to deal with this scenario which is coming up often now, but for this we can ignore it |
|
Thanks for the support and detailed summary Simon Beaudoin (@simonbeaudoin0935) ! |
|
adding Jianping (@Jianping-Li) to review as he has tried v1.0.6 locally |
| @@ -1,5 +1,5 @@ | |||
| debian/adsprpcd.service usr/lib/systemd/system/ | |||
| debian/cdsprpcd.service usr/lib/systemd/system/ | |||
There was a problem hiding this comment.
I noticed it doesn't install:
systemd services
usr/lib/systemd/system/*.service
udev + sysusers
usr/lib/udev/rules.d/60-fastrpc.rules
usr/lib/sysusers.d/fastrpc.conf
daemons
usr/sbin/adsprpcd usr/sbin
usr/sbin/cdsprpcd usr/sbin
usr/sbin/sdsprpcd usr/sbin
usr/sbin/gdsprpcd usr/sbin
These files are required for creating the fastrpc group, setting FastRPC device permissions, enabling DMA heap access, and automatically starting the RPC daemons through udev/systemd.
Could you please check whether these files are being installed elsewhere in the new packaging? I don't see them in the fastrpc-support.install change.
Loïc Minier (lool)
left a comment
There was a problem hiding this comment.
Please note the new build-dep in the debian/changelog and drop the debian/ service files if you can; I'd prefer landing this in debian/latest first, then merging to noble.
| Section: misc | ||
| Priority: optional | ||
| Build-Depends: debhelper-compat (= 13), libyaml-dev, pkgconf | ||
| Build-Depends: debhelper-compat (= 13), libyaml-dev, libbsd-dev, pkgconf |
There was a problem hiding this comment.
This change must me mentioned in debian/changelog
| @@ -1,4 +1,13 @@ | |||
| usr/bin/gdsprpcd | |||
| usr/sbin/gdsprpcd | |||
| lib/systemd/system/adsprpcd.service | |||
There was a problem hiding this comment.
I've spent some time so that upstream fastrpc would install the right files:
- systemd services
- systemd file to create relevant user/groups
- udev rules
They should fit together and supersede what we had to do in the packaging. The idea is that each distro should not have to reinvent how fastrpc should be running.
When a new upstream release adding these comes out, we should drop the packaging workarounds for systemd services, udev etc. and use the upstream versions (like for the usr/sbin pathnames, which I also sent upstream :)).
Automated promotion PR
This PR was generated by
pkg-promoteto move this package repo to upstream tagv1.0.6.Summary
qcom/ubuntu/nobleupstream/latest/upstream/1.0.6debian/pr/1.0.6-11.0.6-1(UNRELEASED)Reviewer checklist
Buildworkflow is green.Flow
--- config: themeVariables: 'gitInv2': '#ff0000' gitGraph: parallelCommits: true rotateCommitLabel: true --- gitGraph BT: branch qcom/ubuntu/noble order: 1 branch upstream-main order: 4 branch upstream/latest order: 3 checkout main commit id: 'Unrelated history: workflows, doc' checkout upstream-main commit checkout upstream-main commit commit id: 'release' tag: 'v1.0.6' checkout upstream/latest commit id: 'previous stuff' merge upstream-main id: 'Filtered .github/debian folders' tag: 'upstream/1.0.6' checkout qcom/ubuntu/noble commit commit commit branch debian/pr/1.0.6-1 order: 2 merge upstream/latest id: 'Merged Upstream' commit id: 'Changelog version update' type: HIGHLIGHT