>>> On Sun, Apr 22, 2007 at  5:04 AM, in message <[EMAIL PROTECTED]>,
Avi Kivity <[EMAIL PROTECTED]> wrote: 
> Gregory Haskins wrote:
>> Signed- off- by: Gregory Haskins <[EMAIL PROTECTED]>
>> ---
>>
>>  drivers/kvm/Makefile   |    2 
>>  drivers/kvm/kernint.c  |  168 +++++
>>  drivers/kvm/kvm.h      |   14 
>>  drivers/kvm/kvm_main.c |  142 +++++
>>  drivers/kvm/lapic.c    | 1472 
> ++++++++++++++++++++++++++++++++++++++++++++++++
>>  include/linux/kvm.h    |   16 -
>>  6 files changed, 1808 insertions(+), 6 deletions(- )
>>
>> diff -- git a/drivers/kvm/Makefile b/drivers/kvm/Makefile
>> index 540afbc..1aad737 100644
>> ---  a/drivers/kvm/Makefile
>> +++ b/drivers/kvm/Makefile
>> @@ - 2,7 +2,7 @@
>>  # Makefile for Kernel- based Virtual Machine module
>>  #
>>  
>> - kvm- objs := kvm_main.o mmu.o x86_emulate.o userint.o
>> +kvm- objs := kvm_main.o mmu.o x86_emulate.o userint.o lapic.o kernint.o
>>  obj- $(CONFIG_KVM) += kvm.o
>>  kvm- intel- objs = vmx.o
>>  obj- $(CONFIG_KVM_INTEL) += kvm- intel.o
>> diff -- git a/drivers/kvm/kernint.c b/drivers/kvm/kernint.c
>> new file mode 100644
>> index 0000000..979a4aa
>> ---  /dev/null
>> +++ b/drivers/kvm/kernint.c
>> @@ - 0,0 +1,168 @@
>> +/*
>> + * Kernel Interrupt IRQ device
>> + *
>> + * Provides a model for connecting in- kernel interrupt resources to a VCPU.
>> + * 
>> + * A typical modern x86 processor has the concept of an internal Local- 
>> APIC 
>> + * and some external signal pins.  The way in which interrupts are injected 
> is
>> + * dependent on whether software enables the LAPIC or not.  When enabled,
>> + * interrupts are acknowledged through the LAPIC.  Otherwise they are 
> through
>> + * an externally connected PIC (typically an i8259 on the BSP)  
>> + *
>> + * Copyright (C) 2007 Novell
>> + *
>> + * Authors:
>> + *   Gregory Haskins <[EMAIL PROTECTED]>
>> + *
>> + * This work is licensed under the terms of the GNU GPL, version 2.  See
>> + * the COPYING file in the top- level directory.
>> + *
>> + */
>> +
>> +#include "kvm.h"
>> +
>> +extern int kvm_kern_lapic_init(struct kvm_vcpu *vcpu, 
>> +                           struct kvm_irqdevice *irq_dev);
>> +struct kvm_kernint {
>> +    spinlock_t                    lock;
>> +    atomic_t                      ref_count;
>> +    struct kvm_vcpu              *vcpu;
>> +    struct kvm_irqdevice         *self_irq;
>> +    struct kvm_irqdevice         *ext_irq;
>> +    struct kvm_irqdevice          apic_irq;
>> +    struct kvm_lapic             *apic_dev;
>> +
>> +};
>>   
> 
> This is nice.  I don't think a ref count is really necessary though, as 
> the configuration is fairly static.

Ack.

> 
>>  struct kvm_stat {
>> @@ - 570,6 +574,9 @@ extern struct kvm_arch_ops *kvm_arch_ops;
>>  int kvm_init_arch(struct kvm_arch_ops *ops, struct module *module);
>>  void kvm_exit_arch(void);
>>  
>> +int kvm_apicbus_send(struct kvm *kvm, int dest, int trig_mode, int level, 
>> +                 int dest_mode, int delivery_mode, int vector);
>> +
>>   
> 
> Pack'em into a struct?

I see no reason why not.  I'll make this change.

> 
> 
> [... actual lapic code ...]
> 
>>  struct kvm_cpuid_entry {
>>      __u32 function;
>>      __u32 eax;
>> @@ - 284,6 +295,9 @@ struct kvm_signal_mask {
>>  #define KVM_CREATE_VCPU           _IO(KVMIO,  0x41)
>>  #define KVM_GET_DIRTY_LOG         _IOW(KVMIO, 0x42, struct kvm_dirty_log)
>>  #define KVM_SET_MEMORY_ALIAS      _IOW(KVMIO, 0x43, struct 
> kvm_memory_alias)
>> +#define KVM_ENABLE_KERNEL_PIC     _IOW(KVMIO, 0x44, __u32)
>> +#define KVM_ISA_INTERRUPT         _IOW(KVMIO, 0x45, struct kvm_interrupt)
>> +#define KVM_APIC_MSG                  _IOW(KVMIO, 0x46, struct kvm_apic_msg)
>>  
>>  /*
>>   * ioctls for vcpu fds
>> @@ - 302,5 +316,5 @@ struct kvm_signal_mask {
>>  #define KVM_SET_SIGNAL_MASK       _IOW(KVMIO,  0x8b, struct 
> kvm_signal_mask)
>>  #define KVM_GET_FPU               _IOR(KVMIO,  0x8c, struct kvm_fpu)
>>  #define KVM_SET_FPU               _IOW(KVMIO,  0x8d, struct kvm_fpu)
>> -
>> +#define KVM_APIC_RESET                _IO(KVMIO,   0x8e)
>>  #endif
>>
>>   
> 
> You need to advertise the lapic ioctls via KVM_CHECK_EXTENSION.

Ack.

> 
> Overall looks good.

Thanks!
-Greg




-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to