-
Notifications
You must be signed in to change notification settings - Fork 4
wip: update to upstream version 1.0.1 #10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Files under Git control should not be using CR-LF for EOL. Converting to native EOL symbols is handled by the git itself. Remove extra CR-LF terminators from several files that I missed in the commit 0b7e39f ("src, inc: fix CRLF file endings") Fixes: 0b7e39f ("src, inc: fix CRLF file endings") Signed-off-by: Dmitry Baryshkov <[email protected]>
Cleand up unused DSP HAL code that was specific to Android and not used in current implementation. Signed-off-by: Jianping Li <[email protected]>
Files under Git control should not be using CR-LF for EOL. Converting to native EOL symbols is handled by the git itself. Remove extra CR-LF terminators from several files that I missed in the commit 0b7e39f ("src, inc: fix CRLF file endings")
Currently, rpcmem-allocated buffers used in remote calls are not recognized by the RPC kernel driver, resulting in fallback to copy buffers for message passing. This fallback introduces significant performance degradation, which worsens with increasing buffer sizes. This commit ensures that rpcmem-allocated buffers are properly registered with the fastrpc memory framework upon allocation and deregistered upon release. By enabling the kernel driver to identify the associated file descriptors, it avoids the use of copy buffers during remote invocation, thereby improving performance and efficiency. Signed-off-by: Abhinav Parihar <[email protected]>
This PR addresses Issue #215 by removing the unused DSP HAL implementation. The HAL code was Android-specific and not utilized in the current DSP setup. Cleaning it up helps reduce maintenance overhead and improves code clarity. - Verified build passes without HAL dependencies - No functional impact expected Please review and let me know if any additional cleanup is needed.
…rk (#216) Currently, rpcmem-allocated buffers used in remote calls are not recognized by the RPC kernel driver, resulting in fallback to copy buffers for message passing. This fallback introduces significant performance degradation, which worsens with increasing buffer sizes. This commit ensures that rpcmem-allocated buffers are properly registered with the fastrpc memory framework upon allocation and deregistered upon release. By enabling the kernel driver to identify the associated file descriptors, it avoids the use of copy buffers during remote invocation, thereby improving performance and efficiency.
Refactor DSP RPC daemons: unify adsprpcd, cdsprpcd, and sdsprpcd into a single source file This change consolidates the daemon implementations into dsprpcd.c to reduce code duplication and simplify future maintenance. Also unified the restart time handling across all daemons to ensure consistent behavior. HIDL support is removed, as it was Android-specific and not utilized in the current DSP setup. Signed-off-by: Jianping Li <[email protected]>
Have a single dsprpcd.c source file and compile all daemons(adsprpcd, cdsprpcd, sdsprpcd) using that.
This commit introduces a foundational CI pipeline for FastRPC, enabling automated sync, build, and test processes using Docker and AWS infrastructure. Key changes: - Added `aws_s3_helper` composite action to support single/multi-upload and download modes, generate presigned URLs, and manage artifact uploads to S3 - Implemented `build_docker_image` composite action to clone and build the FastRPC Docker image - Created `build` workflow using AWS runner to compile kernel artifacts, package outputs (Image, ramdisk, dtb, modules), and upload to S3 - Developed `build_workspace` composite action to prepare DLKM packaging and integrate with systemd-boot - Added `test_action` composite action to parse artifact URLs, update metadata, inject links into cloudData, and generate LAVA job definitions - Established `test` workflow to trigger LAVA jobs and collect results using the generated job definition This pipeline ensures consistent pre-merge validation and artifact handling for FastRPC development. Signed-off-by: Tharun Kumar Merugu <[email protected]>
Includes the following components: **aws_s3_helper (composite action):** - Supports three modes: single-upload, multi-upload, and download - Uploads files to S3 with dynamic paths based on GitHub context - Generates pre-signed URLs for uploaded files - Outputs a single URL or a JSON file of URLs depending on mode - Uploads presigned_urls.json as an artifact in multi-upload mode **build_docker_image (composite action):** - Clone fastrpc-image repository - Build the docker image using fastrpc-image Dockerfile **build (workflow):** - Uses an AWS runner to build kernel artifacts - Uses pull_docker_image to get docker image - Builds the kernel using a reusable build action - Packages and lists key artifacts (ramdisk, Image, vmlinux, dtb, modules) - Uploads artifacts to S3 using aws_s3_helper - Cleans up workspace and appends a build summary **build_workspace (composite action):** - Downloads required dependencies (ramdisk, systemd-boot) - Builds the kernel using Docker and outputs modules - Packages DLKM into the downloaded ramdisk **test_action (composite action):** - Parses presigned_urls.json to extract artifact URLs - Updates metadata.json and cloudData.json using Docker + jq - Uploads updated metadata to S3 and injects its URL into cloudData - Adds firmware and ramdisk URLs via pre-signed S3 links - Generates a LAVA job definition using a Python script, qualcomm_linux/job_render repository **test (workflow):** - Uses build_docker_image to build docker image - Download artifact URLs list generated by build workflow - Triggers the LAVA job using job definition - Gets the LAVA job results This commit establishes a basic docker-based CI pipeline for FastRPC builds and automated artifact handling via AWS S3
FastRPC library supports 5 domains. There are some products where new domains, GPDSP0 and GPDSP1, are supported. Add changes to support GPDSP domains. Signed-off-by: Ling Xu <[email protected]>
…#233) - Ensures CI uses latest logic from development branch Signed-off-by: Tharun Kumar Merugu <[email protected]>
Fix the build failure for client where the vendor header
fastrpc/rpcmem.h unconditionally includes AEEStdDef.h,
which is not exported by fastrpc project.
.../usr/include/fastrpc/rpcmem.h:7:10: fatal error: AEEStdDef.h: No such file or directory
7 | #include "AEEStdDef.h"
| ^~~~~~~~~~~~~
compilation terminated.
Signed-off-by: Ekansh Gupta <[email protected]>
FastRPC library supports 5 domains. There are some products where new domains, GPDSP0 and GPDSP1, are supported. Add changes to support GPDSP domains.
The fastrpc_test.c now appends testlibdir and testdspdir to LD_LIBRARY_PATH and DSP_LIBRARY_PATH, respectively. Previously, these environment variables were overwritten. Makefile.am was updated to pass -Dtestlibdir and -Dtestdspdir to fastrpc_test.c, enabling correct environment variable construction. Signed-off-by: Vinayak Katoch <[email protected]>
Updated README.md to reflect make install for installation, replacing manual file copying. Simplified running instructions by removing the need to cd to /usr/bin, as files are now in standard system paths. Signed-off-by: Vinayak Katoch <[email protected]>
Updated README.md with clear instructions for pushing files and running fastrpc_test on Linux and Android.
Moved all non-essential logs—such as warnings and non-user-impacting errors—to the RUNTIME level. It retains a single log each for framework initialization and deinitialization, and includes logs for PD creation and handle open/close. Signed-off-by: Vinayak Katoch <[email protected]>
The PRINT_WARN_USE_DOMAINS() macro, along with its conditional Android-specific warning about non-domain usage of FastRPC, has been entirely removed from the codebase. Signed-off-by: Vinayak Katoch <[email protected]>
…ibility (#189) Moved all non-essential logs—such as warnings and non-user-impacting errors—to the RUNTIME level. It retains a single log each for framework initialization and deinitialization, and includes logs for PD creation and handle open/close.
* CI: Switch all reusable workflow references to 'development' branch - Ensures CI uses latest logic from development branch Signed-off-by: Tharun Kumar Merugu <[email protected]> * CI Fix: Ensure proper packaging of ramdisk contents into cpio archive - Added missing directory creation for ramdisk_test before decompression - Ensured only contents of ramdisk_fastrpc are archived (not the folder itself) - Applied safe and consistent cpio and gzip usage - Improved error handling and quoting for robustness Signed-off-by: Tharun Kumar Merugu <[email protected]> --------- Signed-off-by: Tharun Kumar Merugu <[email protected]>
Integrates `make install` with `DESTDIR=${{ inputs.workspace_path }}/artifacts/ramdisk_fastrpc`
to automate the deployment of fastrpc bins, libs, and tests.
This change directly addresses upstream requirements (qualcomm/fastrpc#194)
for specific stub/skeleton placement. It eliminates manual copying,
ensuring proper installation paths essential for `LD_LIBRARY_PATH` and
`DSP_LIBRARY_PATH` configuration.
Resolves intermittent GitHub Actions LAVA test failures caused by incorrect library setup.
Signed-off-by: Tharun Kumar Merugu <[email protected]>
### Summary This PR updates the deployment paths for `fastrpc_test` binaries and resources in the GitHub Actions LAVA test environment to reflect recent changes from qualcomm/fastrpc#194.. It also ensures that environment variables for fastrpc testing are set up correctly, addressing test execution failures in GitHub Actions LAVA due to incorrect library paths. ### Root Cause Recent updates to the fastrpc test framework now require that library stubs and skels reside in: - `/usr/local/lib/fastrpc_test` - `/usr/local/share/fastrpc_test` Previously, these paths were not enforced, leading to test execution failures in the Test environment. ### Changes - Eliminate the manual file copying step - Utilize make install with DESTDIR=${{ inputs.workspace_path }}/artifacts/ramdisk_fastrpc to place the files in the necessary directories ### Reference Upstream PR: qualcomm/fastrpc#194 - Appends `testlibdir` and `testdspdir` to `LD_LIBRARY_PATH` and `DSP_LIBRARY_PATH` - Updates `Makefile.am` to pass correct environment variables - Simplifies installation and run instructions in `README.md` ### Impact This change ensures compatibility with the updated fastrpc test framework and restores test execution.
Remove dependency on the PD_EXCEPTION_LOGGING compile-time flag to ensure PD exception logging is enabled by default. This change allows DSP fatal logs to be redirected to the shared buffer for apps-side logging without requiring explicit flag definition. Signed-off-by: Abhinav Parihar <[email protected]>
- Removed separate `full_matrix` definition. - Consolidated all configuration under a single `build_matrix`. - Included fields: `machine`, `firmware` and `lavaname`. - Removed the logic for extracting the LAVA machine name dynamically. - The machine name is now directly assigned from build_matrix.lavaname, reducing complexity and improving maintainability. Signed-off-by: Tharun Kumar Merugu <[email protected]>
- Updated the `pull_request_target` GitHub Actions workflow. - Ensures correct context and permissions for PR-triggered jobs. - Improves security and reliability for workflows triggered by external contributions. Signed-off-by: Tharun Kumar Merugu <[email protected]>
- Updated `paths-ignore` in GitHub Actions to exclude changes under `.github/**`. - Prevents unnecessary workflow runs for CI configuration-only changes. - Improves efficiency and reduces redundant CI executions. Signed-off-by: Tharun Kumar Merugu <[email protected]>
This PR addresses recent workflow failures in GitHub Actions caused by LAVA token permission issues during pull request events. ### Changes: ✅ **pull_request_target Update:** Ensures workflows triggered by pull requests run in the correct context (base repository), allowing access to required secrets and resolving permission-related test failures. ✅ **paths-ignore Addition:** Excludes .github/** from triggering CI workflows, preventing unnecessary runs for changes limited to workflow or metadata files. These updates improve the reliability, security, and efficiency of the CI pipeline.
Implement automated ABI/API compatibility checks on pull requests targeting development and main branches. Build AArch64 libraries using GNU cross-compilation toolchain, generate ABI dumps with abi-dumper for libadsprpc/libcdsprpc/libsdsprpc, and compare against baseline using abi-compliance-checker. Fail workflow on incompatibilities and upload detailed HTML reports as artifacts. Signed-off-by: Vinayak Katoch <[email protected]>
- Added support for the `qcs6490` target alongside existing `qcs9100` and `qcs8300` targets. - Introduced a new `target` attribute For `qcs6490`, resolved DSP firmware and repo path discrepancy: - DSP firmware search path uses `qcs6490` - Repo folder path uses `qcm6490` - Enhances target flexibility and ensures accurate path resolution for build and test workflows. Signed-off-by: Tharun Kumar Merugu <[email protected]>
- Updated path matching logic to allow matching the target name at any position within the path, not just at the end. - Improves compatibility with diverse directory structures and enhances robustness of target-specific resolution. Signed-off-by: Tharun Kumar Merugu <[email protected]>
- Renamed all four target configuration attributes for better clarity and consistency: - `deviceTree` is now used for the device tree blob name - `linuxFirmware` now refers to the firmware identifier - `lavaDeviceName` now indicates the LAVA machine name - `hexDSPBinary` now represents the Hexagon DSP binary identifier - Updated mappings for all three targets. - Improved the readability and maintainability of build matrix definitions. Signed-off-by: Tharun Kumar Merugu <[email protected]>
Previously, PD exception logging was only enabled when the PD_EXCEPTION_LOGGING compile-time flag was defined. This change enables PD exception logging by default, allowing DSP fatal logs to be redirected to the shared buffer for apps-side logging.
Currently dsprpcd attempts to dlopen() unversioned libraries such as libadsp_default_listener.so, This breaks on distributions like Debian, which only ship ABI-versioned libraries in runtime packages. It also risks binding to a different ABI in the future if a .so.2 is introduced as mentioned in issue-230. This patch updates the default listener library names to include .so.1, and adds a fallback to the unversioned .so for environments that still ship only the unversioned file. Signed-off-by: Thirumalai Nagalingam <[email protected]>
Install AEEStdDef.h, HAP_debug.h and HAP_farf.h that are required by to compile the skel and stub files generated by qaic compiler. qaic compiler includes these header files, however fastrpc does not install these files, fix this by installing the required files. Signed-off-by: Srinivas Kandagatla <[email protected]>
Ensures tlsKey is set up before any components that might rely on it. Prevents redundant or conflicting initialization by removing duplicate pthread_key_create call. Aligns initialization order for improved stability and correctness. Signed-off-by: Aman Pandey <[email protected]>
Fixes #230 - Currently `dsprpcd.c` attempts to `dlopen()` unversioned libraries such as `libadsp_default_listener.so`, This breaks on distributions which only ship ABI-versioned libraries in runtime packages. - It also risks binding to a different ABI in the future if a .so.2 is introduced, as mentioned in #230. This patch updates the default listener library names to include `.so.1` and adds a fallback to the un-versioned `.so` for environments that still ship only the un-versioned file.
When PD exception logging is enabled by default, RootPD daemons will be blocked as adspmsgd_init will wait for listener which is not initialized by the time it is called. Initialize listener before adspmsgd initialization. Signed-off-by: Jianping Li <[email protected]>
When PD exception logging is enabled by default, RootPD daemons will be blocked as adspmsgd_init will wait for listener which is not initialized by the time it is called. Initialize listener before adspmsgd intialization.
…nit (#254) Moved pthread_key_create(&tlsKey, exit_thread) earlier in fastrpc_apps_user_init to ensure thread-local storage is initialized before dependent components. This corrects the previous placement, which could lead to undefined behavior.
Implement automated ABI/API compatibility checks on pull requests targeting development and main branches. Build AArch64 libraries using GNU cross-compilation toolchain, generate ABI dumps with abi-dumper for libadsprpc/libcdsprpc/libsdsprpc, and compare against baseline using abi-compliance-checker. Fail workflow on incompatibilities and upload detailed HTML reports as artifacts.
…dling improvements (#246)
This PR introduces a set of tightly related changes, all aimed at
enabling support for the new **qcs6490** target in the CI pipeline.
While the update touches multiple areas, each change is interdependent
and collectively required to ensure proper integration and functionality
for `qcs6490`.
### Key Changes:
1. **Matrix Consolidation**
- Removed the separate `full_matrix` definition.
- Unified the configuration under a single `build_matrix`, now including
all necessary fields: `machine`, `firmware`, `lavaname`, and `target`.
- This simplifies the pipeline setup and ensures consistent parameter
availability for job naming and test execution.
2. **Target-Specific Enhancements**
- **qcs6490 Support Added**: Enabled support for the `qcs6490` target
alongside existing `sa8775p` and `qcs8300` targets.
- **Target Path Resolution**: For qcs6490, the DSP firmware search path
uses `qcs6490`, while the repo folder path uses `qcm6490`. To handle
this discrepancy, a new `target` attribute is introduced:
```yaml
target:
description: target identifier
type: string
required: true
```
3. **Flexible Matching Logic**
- Updated the path matching logic to allow matching the target name
**anywhere** in the path, rather than only at the end. This improves
compatibility with diverse directory structures.
4. **Simplified LAVA Machine Assignment**
- Removed the logic for extracting the LAVA machine name dynamically.
- The machine name is now directly assigned from
`build_matrix.lavaname`, reducing complexity and improving
maintainability.
5. **Attribute Renaming**
- Standardized all four target configuration attributes for clarity and
consistency:
- `deviceTree`: Device tree blob name
- `linuxFirmware`: Firmware identifier
- `lavaDeviceName`: LAVA machine name
- `hexDSPBinary`: Hexagon DSP binary identifier
---
All these changes are introduced as part of a single PR to ensure
**qcs6490 target support is complete and functional**. Each commit is
tightly coupled and contributes to the overall goal of enabling qcs6490
in a clean and maintainable way.
Install AEEStdDef.h, HAP_debug.h and HAP_farf.h that are required by to compile the skel and stub files generated by qaic compiler. qaic compiler includes these header files, however fastrpc does not install these files, fix this by installing the required files.
This reverts commit a55bb20.
|
Hi @basak-qcom, currently, on Hamoa, the guess-dsp.sh is causing problems as no rules are defined for that platform. Is it possible to either add rule for Hamoa there or move to 1.0.2 which will drop the dependency from guess-dsp.sh? |
|
Hi Ekansh, I'd prefer to move to 1.0.2 as that's needed anyway, but when I tried that last week fastrpc_test failed, I think because it cannot find its own files again following the refactoring of that area of code. I will see if I can figure that out this week. |
lool
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I realize this is draft, but so happy to see the tests land! I wonder if the payloads are non-free-firmware material
I see the patch for SONAME was merged between 1.0.0 and this version, so we don't have to worry about renaming the package with this update
| FastRPC is the Qualcomm-proprietary RPC mechanism used to enable remote | ||
| function calls between the CPU and aDSP. Development package. | ||
| . | ||
| This package provides the FastRPC test suite. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should description or some README mention fastrpc_test?
|
Superseded by #13. |
There's 1.0.2 as well now. We need to catch up and ensure that tests pass. The revert to tests should not be commited, since the tests are missing source code, but they could go into a separate
qcom/debian/latestif it's worth it.