qdev: Implement qdev_create_fake_machine() for user emulation

When a QDev instance is realized, qdev_get_machine() ends up called.
In the next commit, qdev_get_machine() will require a "machine"
container to be always present. To satisfy this QOM containers design,
Implement qdev_create_fake_machine() which creates a fake "machine"
container for user emulation.

On system emulation, qemu_create_machine() is called from qemu_init().
For user emulation, since the TCG accelerator always calls
tcg_init_machine(), we use it to hook our fake machine creation.

Suggested-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Acked-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20250102211800.79235-2-philmd@linaro.org>
This commit is contained in:
Philippe Mathieu-Daudé 2025-01-02 14:50:19 +01:00
parent ad1ea5ffa1
commit 558ee1ede6
4 changed files with 37 additions and 1 deletions

View file

@ -46,3 +46,4 @@ system_ss.add(files(
'vm-change-state-handler.c',
'clock-vmstate.c',
))
user_ss.add(files('qdev-user.c'))