[Qemu-devel] Re: [PATCH 11/15] kvm: Rework inner loop of kvm_cpu_exec

2011-03-12 Thread Jan Kiszka
On 2011-03-11 22:34, Marcelo Tosatti wrote:
 On Sat, Mar 05, 2011 at 07:12:50PM +0100, Jan Kiszka wrote:
 @@ -956,7 +956,6 @@ int kvm_cpu_exec(CPUState *env)
  abort();
  }
  
 -ret = 0; /* exit loop */
  switch (run-exit_reason) {

 Better keep ret assignment here so default behaviour is to 
 exit loop? EXCP_INTERRUPT.

 There is no real default behavior: in two cases we stay in the loop, in
 two others we leave, and the rest obtains ret from a return value.
 Moreover, if a new case misses to set ret, the compiler will complain.

 Jan
 
 It will not complain because ret is used to store return value
 of KVM_RUN.
 

Right, I'll disentangle this duplicate use of 'ret' (writing patches is
likely much better than watching more news this morning...).

Jan



signature.asc
Description: OpenPGP digital signature


[Qemu-devel] Re: [PATCH 11/15] kvm: Rework inner loop of kvm_cpu_exec

2011-03-11 Thread Marcelo Tosatti
On Sat, Mar 05, 2011 at 07:12:50PM +0100, Jan Kiszka wrote:
  @@ -956,7 +956,6 @@ int kvm_cpu_exec(CPUState *env)
   abort();
   }
   
  -ret = 0; /* exit loop */
   switch (run-exit_reason) {
  
  Better keep ret assignment here so default behaviour is to 
  exit loop? EXCP_INTERRUPT.
 
 There is no real default behavior: in two cases we stay in the loop, in
 two others we leave, and the rest obtains ret from a return value.
 Moreover, if a new case misses to set ret, the compiler will complain.
 
 Jan

It will not complain because ret is used to store return value
of KVM_RUN.




[Qemu-devel] Re: [PATCH 11/15] kvm: Rework inner loop of kvm_cpu_exec

2011-03-05 Thread Marcelo Tosatti
On Fri, Mar 04, 2011 at 11:20:08AM +0100, Jan Kiszka wrote:
 Let kvm_cpu_exec return EXCP_* values consistently and generate those
 codes already inside its inner loop. This means we will now re-enter the
 kernel while ret == 0.
 
 Update kvm_handle_internal_error accordingly, but keep
 kvm_arch_handle_exit untouched, it will be converted in a separate step.
 
 Signed-off-by: Jan Kiszka jan.kis...@siemens.com
 ---
  kvm-all.c |   26 ++
  1 files changed, 14 insertions(+), 12 deletions(-)
 
 diff --git a/kvm-all.c b/kvm-all.c
 index 2952499..cc652cf 100644
 --- a/kvm-all.c
 +++ b/kvm-all.c
 @@ -848,7 +848,7 @@ static int kvm_handle_internal_error(CPUState *env, 
 struct kvm_run *run)
  fprintf(stderr, emulation failure\n);
  if (!kvm_arch_stop_on_emulation_error(env)) {
  cpu_dump_state(env, stderr, fprintf, CPU_DUMP_CODE);
 -return 0;
 +return EXCP_INTERRUPT;
  }
  }
  /* FIXME: Should trigger a qmp message to let management know
 @@ -947,7 +947,7 @@ int kvm_cpu_exec(CPUState *env)
  
  if (ret == -EINTR || ret == -EAGAIN) {
  DPRINTF(io window exit\n);
 -ret = 0;
 +ret = EXCP_INTERRUPT;
  break;
  }
  
 @@ -956,7 +956,6 @@ int kvm_cpu_exec(CPUState *env)
  abort();
  }
  
 -ret = 0; /* exit loop */
  switch (run-exit_reason) {

Better keep ret assignment here so default behaviour is to 
exit loop? EXCP_INTERRUPT.



[Qemu-devel] Re: [PATCH 11/15] kvm: Rework inner loop of kvm_cpu_exec

2011-03-05 Thread Jan Kiszka
On 2011-03-05 17:05, Marcelo Tosatti wrote:
 On Fri, Mar 04, 2011 at 11:20:08AM +0100, Jan Kiszka wrote:
 Let kvm_cpu_exec return EXCP_* values consistently and generate those
 codes already inside its inner loop. This means we will now re-enter the
 kernel while ret == 0.

 Update kvm_handle_internal_error accordingly, but keep
 kvm_arch_handle_exit untouched, it will be converted in a separate step.

 Signed-off-by: Jan Kiszka jan.kis...@siemens.com
 ---
  kvm-all.c |   26 ++
  1 files changed, 14 insertions(+), 12 deletions(-)

 diff --git a/kvm-all.c b/kvm-all.c
 index 2952499..cc652cf 100644
 --- a/kvm-all.c
 +++ b/kvm-all.c
 @@ -848,7 +848,7 @@ static int kvm_handle_internal_error(CPUState *env, 
 struct kvm_run *run)
  fprintf(stderr, emulation failure\n);
  if (!kvm_arch_stop_on_emulation_error(env)) {
  cpu_dump_state(env, stderr, fprintf, CPU_DUMP_CODE);
 -return 0;
 +return EXCP_INTERRUPT;
  }
  }
  /* FIXME: Should trigger a qmp message to let management know
 @@ -947,7 +947,7 @@ int kvm_cpu_exec(CPUState *env)
  
  if (ret == -EINTR || ret == -EAGAIN) {
  DPRINTF(io window exit\n);
 -ret = 0;
 +ret = EXCP_INTERRUPT;
  break;
  }
  
 @@ -956,7 +956,6 @@ int kvm_cpu_exec(CPUState *env)
  abort();
  }
  
 -ret = 0; /* exit loop */
  switch (run-exit_reason) {
 
 Better keep ret assignment here so default behaviour is to 
 exit loop? EXCP_INTERRUPT.

There is no real default behavior: in two cases we stay in the loop, in
two others we leave, and the rest obtains ret from a return value.
Moreover, if a new case misses to set ret, the compiler will complain.

Jan



signature.asc
Description: OpenPGP digital signature