qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] linux-user: Support explicit targets for PowerP


From: Laurent Vivier
Subject: Re: [Qemu-devel] [PATCH] linux-user: Support explicit targets for PowerPC
Date: Tue, 7 Nov 2017 16:27:38 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0

Le 07/11/2017 à 16:20, Aaron Sierra a écrit :
> ----- Original Message -----
>> From: "Laurent Vivier" <address@hidden>
>> Sent: Tuesday, November 7, 2017 3:24:52 AM
> 
>> Le 07/11/2017 à 03:50, Aaron Sierra a écrit :
>>> Enable building PowerPC targets supporting a specific CPU, without
>>> having to set QEMU_CPU via the environment. For example these build
>>> targets (and many more) become available:
>>>
>>> qemu-ppc.e500mc qemu-ppc.e500v2 qemu-ppc.e5500 qemu-ppc.e600
>>> qemu-ppc.e6500
>>>
>>> These (statically compiled) binaries have proven useful for
>>> emulating PowerPC CPUs within Docker containers, where it's hard to
>>> reliably define environment variables that are available for every
>>> process.
>>>
>>
>> An other idea would be to extract the default cpu from argv[0].
>>
>> We don't change the default CPU at compile time, but we check the binary
>> name:
>> - if it's qemu-ppc, let's use the default cpu for qemu-ppc
>> - if it's not qemu-ppc, but something like qemu-ppc.XXX, let's set the
>> CPU to XXX. For instance "qemu-ppc.e600" will be a shortcut for
>> "qemu-ppc -cpu e600". [1]
>>
>> I think it's easy to implement and don't change the default behavior of
>> qemu. And you can use hardlink to define several binaries with different
>> defaults (like busybox)
> 
> Laurent,
> 
> I had that thought, too, as being the cleanest and simplest to implement,
> but it didn't work out as a practical solution. Having execution depend
> on the name of the file would require a lot of tuning of magics, masks,
> and interpreters in /proc/sys/fs/binfmt_misc to get the behavior that I
> depend on. It would require one entry per binary.
> 
> With the implementation that I've proposed, I only need two fairly generic
> entries (ppc and ppc64) stock from Ubuntu's qemu-user-static package.
> With Docker it's trivial to bind <any_path>/qemu-ppc.e500mc to
> /usr/bin/qemu-ppc-static within the container. Which gives me complete
> control over how the container is emulated.

So I (sadly) think the wrapper is the best solution...

write a C statically linked program that call the qemu-user-static with
the good "-cpu" value.

Something like:

https://github.com/parazyd/qemu-wrapper/blob/master/qemu-wrapper.c

Laurent



reply via email to

[Prev in Thread] Current Thread [Next in Thread]