Alistair,

On Mon, Jul 13, 2026 at 7:11 AM Alistair Francis <[email protected]>
wrote:

> On Fri, Jul 10, 2026 at 10:23 PM Subrahmanya Lingappa
> <[email protected]> wrote:
> >
> > From: Subrahmanya Lingappa <[email protected]>
> >
> > Add a meson option and config probe for librpmi so RISC-V machines can
> > opt into RPMI support when the library is available. Keep the dependency
> > optional so default builds without librpmi continue to work.
> >
> > Signed-off-by: Subrahmanya Lingappa <
> [email protected]>
>
> Can we add some documentation of how get librpmi support to work? Do I
> just apt/dnf/pacman/apk install it? Do I need a certain version?
>
>   Yes, good point. The v2 docs only said that librpmi must be installed so
  pkg-config can find librpmi.pc, which is too terse. I will expand the
docs to
  state that QEMU requires librpmi 1.0.0 or newer,
  show source install steps from the upstream librpmi repo, and mention the
  Debian/RPM package targets provided by librpmi, while it's also documented
  in detail within librpmi repo.

 Subrahmanya

Alistair
>
> > ---
> >  Kconfig.host                  |  3 +++
> >  meson.build                   | 14 ++++++++++++++
> >  meson_options.txt             |  2 ++
> >  scripts/meson-buildoptions.sh |  3 +++
> >  4 files changed, 22 insertions(+)
> >
> > diff --git a/Kconfig.host b/Kconfig.host
> > index 933425c74b..6f98dadb2e 100644
> > --- a/Kconfig.host
> > +++ b/Kconfig.host
> > @@ -8,6 +8,9 @@ config LINUX
> >  config LIBCBOR
> >      bool
> >
> > +config LIBRPMI
> > +    bool
> > +
> >  config GNUTLS
> >      bool
> >
> > diff --git a/meson.build b/meson.build
> > index 19e123423b..103b4649b8 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -2005,6 +2005,17 @@ if lzo.found() and not cc.links('''
> >    endif
> >  endif
> >
> > +librpmi = not_found
> > +if not get_option('librpmi').auto() or have_system
> > +  librpmi = dependency('librpmi', required: get_option('librpmi'),
> > +                       method: 'pkg-config')
> > +  if librpmi.found() and not cc.has_header_symbol('librpmi.h',
> > +
> 'rpmi_service_group_logging_create',
> > +                                                  dependencies: librpmi)
> > +    error('librpmi support requires the RPMI logging service group API')
> > +  endif
> > +endif
> > +
> >  numa = not_found
> >  if not get_option('numa').auto() or have_system or have_tools
> >    numa = cc.find_library('numa', has_headers: ['numa.h'],
> > @@ -2427,6 +2438,7 @@ config_host_data.set('CONFIG_LINUX', host_os ==
> 'linux')
> >  config_host_data.set('CONFIG_POSIX', host_os != 'windows')
> >  config_host_data.set('CONFIG_WIN32', host_os == 'windows')
> >  config_host_data.set('CONFIG_LZO', lzo.found())
> > +config_host_data.set('CONFIG_LIBRPMI', librpmi.found())
> >  config_host_data.set('CONFIG_MPATH', mpathpersist.found())
> >  config_host_data.set('CONFIG_BLKIO', blkio.found())
> >  if blkio.found()
> > @@ -3258,6 +3270,7 @@ host_kconfig = \
> >    (multiprocess_allowed ? ['CONFIG_MULTIPROCESS_ALLOWED=y'] : []) + \
> >    (vfio_user_server_allowed ? ['CONFIG_VFIO_USER_SERVER_ALLOWED=y'] :
> []) + \
> >    (hv_balloon ? ['CONFIG_HV_BALLOON_POSSIBLE=y'] : []) + \
> > +  (librpmi.found() ? ['CONFIG_LIBRPMI=y'] : []) + \
> >    (have_rust ? ['CONFIG_HAVE_RUST=y'] : [])
> >
> >  ignored = [ 'TARGET_XML_FILES', 'TARGET_ABI_DIR' ]
> > @@ -4971,6 +4984,7 @@ summary_info += {'TPM support':       have_tpm}
> >  summary_info += {'IGVM support':      igvm}
> >  summary_info += {'libssh support':    libssh}
> >  summary_info += {'lzo support':       lzo}
> > +summary_info += {'librpmi support':   librpmi}
> >  summary_info += {'snappy support':    snappy}
> >  summary_info += {'bzip2 support':     libbzip2}
> >  summary_info += {'lzfse support':     liblzfse}
> > diff --git a/meson_options.txt b/meson_options.txt
> > index a07cb47d35..9f773a7886 100644
> > --- a/meson_options.txt
> > +++ b/meson_options.txt
> > @@ -204,6 +204,8 @@ option('lzfse', type : 'feature', value : 'auto',
> >         description: 'lzfse support for DMG images')
> >  option('lzo', type : 'feature', value : 'auto',
> >         description: 'lzo compression support')
> > +option('librpmi', type : 'feature', value : 'auto',
> > +       description: 'RISC-V RPMI support')
> >  option('pvg', type: 'feature', value: 'auto',
> >         description: 'macOS paravirtualized graphics support')
> >  option('rbd', type : 'feature', value : 'auto',
> > diff --git a/scripts/meson-buildoptions.sh
> b/scripts/meson-buildoptions.sh
> > index c003985047..e8a20068e7 100644
> > --- a/scripts/meson-buildoptions.sh
> > +++ b/scripts/meson-buildoptions.sh
> > @@ -140,6 +140,7 @@ meson_options_help() {
> >    printf "%s\n" '  libkeyutils     Linux keyutils support'
> >    printf "%s\n" '  libnfs          libnfs block device driver'
> >    printf "%s\n" '  libpmem         libpmem support'
> > +  printf "%s\n" '  librpmi         RISC-V RPMI support'
> >    printf "%s\n" '  libssh          ssh block device support'
> >    printf "%s\n" '  libudev         Use libudev to enumerate host
> devices'
> >    printf "%s\n" '  libusb          libusb support for USB passthrough'
> > @@ -376,6 +377,8 @@ _meson_option_parse() {
> >      --disable-libnfs) printf "%s" -Dlibnfs=disabled ;;
> >      --enable-libpmem) printf "%s" -Dlibpmem=enabled ;;
> >      --disable-libpmem) printf "%s" -Dlibpmem=disabled ;;
> > +    --enable-librpmi) printf "%s" -Dlibrpmi=enabled ;;
> > +    --disable-librpmi) printf "%s" -Dlibrpmi=disabled ;;
> >      --enable-libssh) printf "%s" -Dlibssh=enabled ;;
> >      --disable-libssh) printf "%s" -Dlibssh=disabled ;;
> >      --enable-libudev) printf "%s" -Dlibudev=enabled ;;
> > --
> > 2.43.0
> >
> >
>

Reply via email to