From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:43398) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RloXF-0004gP-Qd for qemu-devel@nongnu.org; Fri, 13 Jan 2012 16:19:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RloXE-0000tJ-6u for qemu-devel@nongnu.org; Fri, 13 Jan 2012 16:19:41 -0500 Received: from e5.ny.us.ibm.com ([32.97.182.145]:37596) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RloXE-0000tC-1E for qemu-devel@nongnu.org; Fri, 13 Jan 2012 16:19:40 -0500 Received: from /spool/local by e5.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 13 Jan 2012 16:19:39 -0500 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q0DLJZod305450 for ; Fri, 13 Jan 2012 16:19:36 -0500 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q0DLJZ1j028597 for ; Fri, 13 Jan 2012 14:19:35 -0700 Message-ID: <4F109FE4.3020707@us.ibm.com> Date: Fri, 13 Jan 2012 15:19:32 -0600 From: Anthony Liguori MIME-Version: 1.0 References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v6 09/18] i8259: Factor out base class for KVM reuse List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: kvm@vger.kernel.org, "Michael S. Tsirkin" , Marcelo Tosatti , qemu-devel , Blue Swirl , Avi Kivity On 01/13/2012 11:35 AM, Jan Kiszka wrote: > Analogously to the APIC, we will reuse some parts of the user space > i8259 model for KVM. In this case it is a common device state, a common > vmstate, the property list, a reset core and some init bits. > > This also introduces a common helper to instantiate a single i8259 chip > from the cascade-creating i8259_init function. > > Signed-off-by: Jan Kiszka > --- > diff --git a/hw/i8259_internal.h b/hw/i8259_internal.h > new file mode 100644 > index 0000000..aedd55f > --- /dev/null > +++ b/hw/i8259_internal.h > @@ -0,0 +1,76 @@ > +/* > + * QEMU 8259 - internal interfaces > + * > + * Copyright (c) 2011 Jan Kiszka, Siemens AG > + * > + * Permission is hereby granted, free of charge, to any person obtaining a copy > + * of this software and associated documentation files (the "Software"), to deal > + * in the Software without restriction, including without limitation the rights > + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell > + * copies of the Software, and to permit persons to whom the Software is > + * furnished to do so, subject to the following conditions: > + * > + * The above copyright notice and this permission notice shall be included in > + * all copies or substantial portions of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, > + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN > + * THE SOFTWARE. > + */ > + > +#ifndef QEMU_I8259_INTERNAL_H > +#define QEMU_I8259_INTERNAL_H > + > +#include "hw.h" > +#include "pc.h" > +#include "isa.h" > + > +typedef struct PICCommonState PICCommonState; > + > +struct PICCommonState { > + ISADevice dev; > + uint8_t last_irr; /* edge detection */ > + uint8_t irr; /* interrupt request register */ > + uint8_t imr; /* interrupt mask register */ > + uint8_t isr; /* interrupt service register */ > + uint8_t priority_add; /* highest irq priority */ > + uint8_t irq_base; > + uint8_t read_reg_select; > + uint8_t poll; > + uint8_t special_mask; > + uint8_t init_state; > + uint8_t auto_eoi; > + uint8_t rotate_on_auto_eoi; > + uint8_t special_fully_nested_mode; > + uint8_t init4; /* true if 4 byte init */ > + uint8_t single_mode; /* true if slave pic is not initialized */ > + uint8_t elcr; /* PIIX edge/trigger selection*/ > + uint8_t elcr_mask; > + qemu_irq int_out[1]; > + uint32_t master; /* reflects /SP input pin */ > + uint32_t iobase; > + uint32_t elcr_addr; > + MemoryRegion base_io; > + MemoryRegion elcr_io; > +}; > + > +#define PIC_VMSTATE_VERSION 1 > + > +extern const VMStateDescription vmstate_pic_common; > + > +#define PIC_PROPERTIES_COMMON(cont_type, cont_var) \ > + DEFINE_PROP_HEX32("iobase", cont_type, cont_var.iobase, -1), \ > + DEFINE_PROP_HEX32("elcr_addr", cont_type, cont_var.elcr_addr, -1), \ > + DEFINE_PROP_HEX8("elcr_mask", cont_type, cont_var.elcr_mask, -1), \ > + DEFINE_PROP_BIT("master", cont_type, cont_var.master, 0, false) > + > +void pic_init_common(PICCommonState *s); > +void pic_reset_common(PICCommonState *s); > + > +ISADevice *i8259_init_chip(const char *name, ISABus *bus, bool master); Same feedback here re: i8259_qdev_register(). Regards, Anthony Liguori > +#endif /* !QEMU_I8259_INTERNAL_H */