Re: [Qemu-devel] [PATCH 3/3] Add KVM support to QEMU

2008-10-28 Thread Anthony Liguori

Hollis Blanchard wrote:

Just a quick skim...

On Tue, Oct 28, 2008 at 3:13 PM, Anthony Liguori <[EMAIL PROTECTED]> wrote:
  

+int kvm_cpu_exec(CPUState *env)
+{
+struct kvm_run *run = env->kvm_run;
+int ret;
+
+dprintf("kvm_cpu_exec()\n");
+
+do {
+kvm_arch_pre_run(env, run);
+
+if ((env->interrupt_request & CPU_INTERRUPT_EXIT)) {
+dprintf("interrupt exit requested\n");
+ret = 0;
+break;
+}
+
+dprintf("setting tpr\n");
+run->cr8 = cpu_get_apic_tpr(env);



This belongs in the arch_pre_run hook above.
  


Good catch, I've updated the patch.


How did you decide which exit handlers should go into
architecture-specific code? Looking at just the KVM architecture set:
  


Based on whether the implementation required target-specific code.


IO: x86 and ia64, not PowerPC or s390
  


cpu_{in,out}[bwl] are defined in vl.c and are available for all 
architectures.  They are no-ops on most architectures because they are 
never used.



MMIO: everybody except s390
  


cpu_physical_memory_rw() is defined by everyone.


DCRs: PowerPC only
  


This will have to be an architecture specific handler.


IRQ window: not sure
  


It's a no-op implementation.  I would think that this would be needed on 
PPC.  If you want to inject an interrupt, but the guest is unable to 
handle an interrupt, you need to exit to userspace when the guest 
re-enables interrupts.  Otherwise, you may never return to userspace for 
the interrupt to be injected.


How do you handle that now?  Does PPC have something that makes this 
unnecessary?


Regards,

Anthony Liguori


-Hollis
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Qemu-devel] [PATCH 3/3] Add KVM support to QEMU

2008-10-28 Thread Hollis Blanchard
Just a quick skim...

On Tue, Oct 28, 2008 at 3:13 PM, Anthony Liguori <[EMAIL PROTECTED]> wrote:
> +int kvm_cpu_exec(CPUState *env)
> +{
> +struct kvm_run *run = env->kvm_run;
> +int ret;
> +
> +dprintf("kvm_cpu_exec()\n");
> +
> +do {
> +kvm_arch_pre_run(env, run);
> +
> +if ((env->interrupt_request & CPU_INTERRUPT_EXIT)) {
> +dprintf("interrupt exit requested\n");
> +ret = 0;
> +break;
> +}
> +
> +dprintf("setting tpr\n");
> +run->cr8 = cpu_get_apic_tpr(env);

This belongs in the arch_pre_run hook above.

> +ret = kvm_vcpu_ioctl(env, KVM_RUN, 0);
> +kvm_arch_post_run(env, run);
> +
> +if (ret == -EINTR || ret == -EAGAIN) {
> +dprintf("io window exit\n");
> +ret = 0;
> +break;
> +}
> +
> +if (ret < 0) {
> +dprintf("kvm run failed %s\n", strerror(-ret));
> +abort();
> +}
> +
> +ret = 0; /* exit loop */
> +switch (run->exit_reason) {
> +case KVM_EXIT_IO:
> +dprintf("handle_io\n");
> +ret = kvm_handle_io(env, run->io.port,
> +(uint8_t *)run + run->io.data_offset,
> +run->io.direction,
> +run->io.size,
> +run->io.count);
> +break;
> +case KVM_EXIT_MMIO:
> +dprintf("handle_mmio\n");
> +cpu_physical_memory_rw(run->mmio.phys_addr,
> +   run->mmio.data,
> +   run->mmio.len,
> +   run->mmio.is_write);
> +ret = 1;
> +break;
> +case KVM_EXIT_IRQ_WINDOW_OPEN:
> +dprintf("irq_window_open\n");
> +break;
> +case KVM_EXIT_SHUTDOWN:
> +dprintf("shutdown\n");
> +qemu_system_reset_request();
> +ret = 1;
> +break;
> +case KVM_EXIT_UNKNOWN:
> +dprintf("kvm_exit_unknown\n");
> +break;
> +case KVM_EXIT_FAIL_ENTRY:
> +dprintf("kvm_exit_fail_entry\n");
> +break;
> +case KVM_EXIT_EXCEPTION:
> +dprintf("kvm_exit_exception\n");
> +break;
> +case KVM_EXIT_DEBUG:
> +dprintf("kvm_exit_debug\n");
> +break;
> +default:
> +dprintf("kvm_arch_handle_exit\n");
> +ret = kvm_arch_handle_exit(env, run);
> +break;
> +}
> +} while (ret > 0);
> +
> +return ret;
> +}

How did you decide which exit handlers should go into
architecture-specific code? Looking at just the KVM architecture set:
IO: x86 and ia64, not PowerPC or s390
MMIO: everybody except s390
DCRs: PowerPC only
IRQ window: not sure

-Hollis
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html