On Thu, Oct 22, 2026 at 02:58:16PM +0200, Markus Armbruster wrote:
> My build of qemu-system-x86_64 has device sgx-epc:
>
> --> {"execute": "qom-list-types", "arguments": {"implements": "sgx-epc"}}
> <-- {"return": [{"name": "sgx-epc", "parent": "device"}]}
>
> The device as a link property to a memory-backend-epc:
>
> --> {"execute": "qom-list-properties", "arguments": {"typename": "sgx-epc"}}
> <-- {"return": [...
> {"name": "memdev", "type": "link<memory-backend-epc>"},
> ...]}
>
> However, type memory-backend-epc does not exist:
>
> --> {"execute": "qom-list-types", "arguments": {"implements":
> "memory-backend"}}
> <-- {"return": [{"name": "memory-backend-ram", "parent": "memory-backend"},
> {"name": "memory-backend-file", "parent": "memory-backend"}, {"name":
> "memory-backend-memfd", "parent": "memory-backend"}, {"name":
> "memory-backend-shm", "parent": "memory-backend"}]}
There is some rather dubious code that conditionally registers
the type
static void register_types(void)
{
int fd = qemu_open_old("/dev/sgx_vepc", O_RDWR);
if (fd >= 0) {
close(fd);
type_register_static(&sgx_epc_backed_info);
}
}
Normal practice is for types to be unconditionally registered. Do we
have any examples outside of this SGX case where we conditionally
register types ? Should we change this to follow normal practice ?
With regards,
Daniel
--
|: https://berrange.com ~~ https://hachyderm.io/@berrange :|
|: https://libvirt.org ~~ https://entangle-photo.org :|
|: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|