{"id":19240342,"url":"https://github.com/riscv-software-src/librpmi","last_synced_at":"2026-05-20T05:14:06.794Z","repository":{"id":243991928,"uuid":"813591489","full_name":"riscv-software-src/librpmi","owner":"riscv-software-src","description":"Reference implementation of RPMI specification as a library.","archived":false,"fork":false,"pushed_at":"2025-02-28T03:41:32.000Z","size":433,"stargazers_count":9,"open_issues_count":3,"forks_count":9,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-01T11:50:33.745Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/riscv-software-src.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING.BSD","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-11T11:16:27.000Z","updated_at":"2025-03-10T05:03:08.000Z","dependencies_parsed_at":"2024-06-22T16:18:18.847Z","dependency_job_id":"4c3a4414-1bea-4133-af75-009c1ec67edb","html_url":"https://github.com/riscv-software-src/librpmi","commit_stats":null,"previous_names":["riscv-software-src/librpmi"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riscv-software-src%2Flibrpmi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riscv-software-src%2Flibrpmi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riscv-software-src%2Flibrpmi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riscv-software-src%2Flibrpmi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/riscv-software-src","download_url":"https://codeload.github.com/riscv-software-src/librpmi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250023572,"owners_count":21362426,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T17:07:03.005Z","updated_at":"2026-05-20T05:14:06.789Z","avatar_url":"https://github.com/riscv-software-src.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"## librpmi - RPMI Protocol Implementation\n\n## Introduction\nThe librpmi is an implementation of [RISC-V Platform Management Interface](https://github.com/riscv-non-isa/riscv-rpmi).\n\nThe librpmi implements RPMI shared memory transport, RPMI message protocol and\nvarious Service groups and Services as defined in the RPMI specification.\n\n\u003cimg src=\"docs/assets/librpmi-arch.png\" alt=\"librpmi high level architecture\" width=\"600\"/\u003e\n\nThe librpmi can be used by - \n1. RISC-V platform vendors to implement RPMI services in their\nplatform microcontroller firmware.\n\n2. System-level partitions to implement RPMI services running as\nseparate OpenSBI domain\n\n3. Hypervisors/emulators/simulators to emulate RPMI services for the Guest/VM\n\n### Features\n- RPMI Transport (shared memory)\n\t- Multiple RPMI shared memory based transports capability.\n\t- Configurable transport where service groups can be enabled or disabled\n    for specific transport (except Base group).\n- RPMI Service Groups\n  - [x] Base\n  - [x] System Reset\n  - [x] System Suspend\n  - [x] Hart State Management\n  - [x] Clock\n  - [x] CPPC\n - Platform HAL interface.\n - Test framework to test librpmi which is easy to extend and add more service\n group test cases.\n - HTML and PDF documentation generated by doxygen.\n\n\u003e The librpmi is a new project and is in development. More capabilities and\nservice groups will be added soon.\n\n## Development\nThe librpmi supports GNU Make and comes with a simple Makefile that generates\n`librpmi.a`, shared library objects (`librpmi.so.*`), and test applications\nunder the `build` directory.\n\n### librpmi.a and shared library objects\n```\n// defaut without debug logs and tests, compiler optimizations are on\nmake\n\n// Enable debug logs and build tests, compiler optimizations are off\nmake LIBRPMI_TEST=y LIBRPMI_DEBUG=y\n\n// Cross compilation\nmake CROSS_COMPILE=\u003ccompiler prefix\u003e\n```\nBy default, `make` generates:\n- `build/librpmi.a`\n- `build/librpmi.so.\u003cmajor\u003e.\u003cminor\u003e.\u003cpatch\u003e`\n- symlinks `build/librpmi.so.\u003csoversion\u003e` and `build/librpmi.so`\n\nThe platform vendors may also integrate librpmi sources directly into the\nplatform microcontroller firmware and extend firmware build system to\nbuild the librpmi sources rather than using `librpmi.a`.\n\n## Packaging\nThe repository can build Debian and RPM packages for systems that want to\nconsume librpmi as an installed library instead of integrating the source tree\nor manually copying build artifacts. These packages provide a repeatable way to\ninstall the runtime library, development files, and source content needed by\ndownstream projects such as emulators, hypervisors, firmware build flows, and\ndistribution packaging pipelines.\n\nDebian packages can be built with:\n```shell\nmake deb-pkg\n```\n\nThis stages the Debian packaging from `packaging/debian` and writes the package\noutputs under `build/deb`. The generated packages are:\n- `librpmi0`: runtime shared library (`librpmi.so.*`).\n- `librpmi-dev`: headers, static library, linker symlink, and `pkg-config`\n  metadata for building applications against librpmi.\n- `librpmi-src`: source content installed under `/usr/src/librpmi` for users\n  that need to inspect or rebuild the library sources.\n\nInstall the generated Debian packages with:\n```shell\nsudo dpkg -i build/deb/librpmi0_*.deb \\\n             build/deb/librpmi-dev_*.deb \\\n             build/deb/librpmi-src_*.deb\n```\n\nRPM packages can be built with:\n```shell\nmake rpm-pkg\n```\n\nThis uses `packaging/rpm/librpmi.spec` and writes the RPM build tree under\n`build/rpmbuild`. The generated RPM packages are:\n- `librpmi`: runtime shared library (`librpmi.so.*`).\n- `librpmi-devel`: headers, static library, linker symlink, and `pkg-config`\n  metadata for building applications against librpmi.\n- `librpmi-source`: source content installed under `/usr/src/librpmi`.\n\nInstall the generated RPM packages with the system package manager, for example:\n```shell\nsudo dnf install build/rpmbuild/RPMS/*/*.rpm\n```\n\n## Documentation\nThe librpmi supports doxygen which can generate both html and pdf\ndocumentation under `build\\docs` directory.\n```\nmake docs\n```\n\nThis generates pdf file `build/docs/latex/refman.pdf` and html documentation\nat `build/docs/html`.\n\n## Test\nBuild test binaries -\n```shell\nmake LIBRPMI_TEST=y\n```\nRun tests -\n```shell\nmake check\n```\nRefer: [README in test folder](test/README.md)\n\n## Project process\n\n- [Contributing guide](CONTRIBUTING.md)\n- [Maintainers](MAINTAINERS.md)\n- [Release process](RELEASE.md)\n\n## License\n\nThe librpmi is provided under [2-Clause BSD License](COPYING.BSD)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Friscv-software-src%2Flibrpmi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Friscv-software-src%2Flibrpmi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Friscv-software-src%2Flibrpmi/lists"}