[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Building QEMU as a shared library
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: Building QEMU as a shared library |
Date: |
Thu, 23 Dec 2021 10:49:46 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.0 |
Hi Peter,
On 12/15/21 11:10, Peter Maydell wrote:
> On Wed, 15 Dec 2021 at 08:18, Amir Gonnen <amir.gonnen@neuroblade.ai> wrote:
>> My goal is to simulate a mixed architecture system.
>>
>> Today QEMU strongly assumes that the simulated system is a *single
>> architecture*.
>> Changing this assumption and supporting mixed architecture in QEMU proved to
>> be
>> non-trivial and may require significant development effort. Common code such
>> as
>> TCG and others explicitly include architecture specific header files, for
>> example.
>
> Yeah. This is definitely something we'd like to fix some day. It's
> the approach I would prefer for getting multi-architecture machines.
Am I understanding correctly your preference would be *not* using shared
libraries, but having a monolithic process able to use any configuration
of heterogeneous architectures?
What are your thoughts on Daniel idea to where (IIUC) cores can are
external processes wired via vhost-user. One problem is not all
operating systems supported provide this possibility.
>> Instead, I would like to suggest a new approach we use at Neuroblade to
>> achieve this:
>> Build QEMU as a shared library that can be loaded and used directly in a
>> larger simulation.
>> Today we build qemu-system-nios2 shared library and load it from
>> qemu-system-x86_64 in order
>> to simulate an x86_64 system that also consists of multiple nios2 cores.
>> In our simulation, two independent "main" functions are running on different
>> threads, and
>> simulation synchronization is reduced to synchronizing threads.
>
> I agree with Stefan that you should go ahead and send the code as
> an RFC patchset, but I feel like there is a lot of work required
> to really get the codebase into a state where it is a clean
> shared library...
>
> -- PMM
>