From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: preview of in kernel irqchip live migration support Date: Tue, 24 Jul 2007 12:46:42 +0300 Message-ID: <46A5CA82.3040105@qumranet.com> References: <10EA09EFD8728347A513008B6B0DA77A01D15BAB@pdsmsx411.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org To: "Dong, Eddie" Return-path: In-Reply-To: <10EA09EFD8728347A513008B6B0DA77A01D15BAB-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org Dong, Eddie wrote: > This patch is only for idea collection so far. > The dilemma is that how to export the pic/IOAPIC/apic state data > structure > to user and make sure it has same/similar structure in user level. > Otherwise a > convert is a must and we must maintain the converter. > > I think we have to have a converter, we can't tie the kernel to qemu or vice versa. It's just a series of assignments, I don't see an issue with it. > With this, PIC only guest can do live migration successfully. We can > extend > APIC side seamlessly. > > BTW, there is potential issue in IDT_Vectoring. The fix IMO is to retry > vm_stop at user level > to make sure no pending IDT_vectoring. > I agree. How do we tell userspace we need to retry, though? A field in kvm_run? A field in the lapic state? > Pls comments. Also I will temply off this week, Qing He may continue. > > Thx,eddie > > > diff --git a/include/linux/kvm.h b/include/linux/kvm.h > index 5307ba3..4eee80d 100644 > --- a/include/linux/kvm.h > +++ b/include/linux/kvm.h > @@ -51,6 +51,44 @@ struct kvm_irq_level { > __u32 level; > }; > > +/* for KVM_GET_IRQCHIP / KVM_SET_IRQCHIP */ > +struct kvm_pic_state { > + __u8 last_irr; /* edge detection */ > + __u8 irr; /* interrupt request register */ > + __u8 imr; /* interrupt mask register */ > + __u8 isr; /* interrupt service register */ > + __u8 priority_add; /* highest irq priority */ > + __u8 irq_base; > + __u8 read_reg_select; > + __u8 poll; > + __u8 special_mask; > + __u8 init_state; > + __u8 auto_eoi; > + __u8 rotate_on_auto_eoi; > + __u8 special_fully_nested_mode; > + __u8 init4; /* true if 4 byte init */ > + __u8 elcr; /* PIIX edge/trigger selection */ > + __u8 elcr_mask; > + struct kvm_pic *pics_state; > +}; > You can't have this pointer in the userspace interface. Also, please ensure that sizeof(struct kvm_pic_state) does not change in 32/64 bit environments, since it gets embedded in the ioctl number. -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/