qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] Re: [PATCH 03/26] Add a hook to allow hypercalls to be


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] Re: [PATCH 03/26] Add a hook to allow hypercalls to be emulated on PowerPC
Date: Wed, 16 Mar 2011 16:58:41 +0000

On Wed, Mar 16, 2011 at 1:46 PM, Alexander Graf <address@hidden> wrote:
> On 03/16/2011 05:56 AM, David Gibson wrote:
>>
>> From: David Gibson<address@hidden>
>>
>> PowerPC and POWER chips since the POWER4 and 970 have a special
>> hypervisor mode, and a corresponding form of the system call
>> instruction which traps to the hypervisor.
>>
>> qemu currently has stub implementations of hypervisor mode.  That
>> is, the outline is there to allow qemu to run a PowerPC hypervisor
>> under emulation.  There are a number of details missing so this
>> won't actually work at present, but the idea is there.
>>
>> What there is no provision at all, is for qemu to instead emulate
>> the hypervisor itself.  That is to have hypercalls trap into qemu
>> and their result be emulated from qemu, rather than running
>> hypervisor code within the emulated system.
>>
>> Hypervisor hardware aware KVM implementations are in the works and
>> it would  be useful for debugging and development to also allow
>> full emulation of the same para-virtualized guests as such a KVM.
>>
>> Therefore, this patch adds a hook which will allow a machine to
>> set up emulation of hypervisor calls.
>>
>> Signed-off-by: David Gibson<address@hidden>
>> ---
>>  target-ppc/cpu.h    |    2 ++
>>  target-ppc/helper.c |    4 ++++
>>  2 files changed, 6 insertions(+), 0 deletions(-)
>>
>> diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
>> index a20c132..eaddc27 100644
>> --- a/target-ppc/cpu.h
>> +++ b/target-ppc/cpu.h
>> @@ -692,6 +692,8 @@ struct CPUPPCState {
>>      int bfd_mach;
>>      uint32_t flags;
>>      uint64_t insns_flags;
>> +    void (*emulate_hypercall)(CPUState *, void *);
>> +    void *hcall_opaque;
>>
>>      int error_code;
>>      uint32_t pending_interrupts;
>> diff --git a/target-ppc/helper.c b/target-ppc/helper.c
>> index 2094ca3..19aa067 100644
>> --- a/target-ppc/helper.c
>> +++ b/target-ppc/helper.c
>> @@ -2152,6 +2152,10 @@ static inline void powerpc_excp(CPUState *env, int
>> excp_model, int excp)
>>      case POWERPC_EXCP_SYSCALL:   /* System call exception
>>    */
>>          dump_syscall(env);
>>          lev = env->error_code;
>> +       if ((lev == 1)&&  env->emulate_hypercall) {
>> +           env->emulate_hypercall(env, env->hcall_opaque);
>> +           return;
>> +       }
>
> Tabs! Please go through all your patches and make sure there are no tabs in
> there :(.

scripts/checkpatch.pl is there to automate style checking.  That's the
easiest way to check patches before submitting them.

Stefan



reply via email to

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