[Top][All Lists]
[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
[Qemu-devel] [PATCH 01/26] Clean up PowerPC SLB handling code, David Gibson, 2011/03/16
[Qemu-devel] [PATCH 02/26] Allow qemu_devtree_setprop() to take arbitrary values, David Gibson, 2011/03/16
[Qemu-devel] [PATCH 04/26] Implement PowerPC slbmfee and slbmfev instructions, David Gibson, 2011/03/16
[Qemu-devel] [PATCH 05/26] Implement missing parts of the logic for the POWER PURR, David Gibson, 2011/03/16