From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42842) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WkuWB-0000gA-Ck for qemu-devel@nongnu.org; Thu, 15 May 2014 08:12:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WkuW2-0005gb-2V for qemu-devel@nongnu.org; Thu, 15 May 2014 08:12:11 -0400 Date: Thu, 15 May 2014 15:10:50 +0300 From: "Michael S. Tsirkin" Message-ID: <20140515121050.GB22874@redhat.com> References: <20140515114943.B2D392F44B@mono.eik.bme.hu> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140515114943.B2D392F44B@mono.eik.bme.hu> Subject: Re: [Qemu-devel] [PATCH v4] serial-pci: Set prog interface field of pci config to 16550 compatible List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: BALATON Zoltan Cc: qemu-trivial@nongnu.org, Paolo Bonzini , Michael Tokarev , qemu-devel@nongnu.org, Gerd Hoffmann On Thu, Feb 27, 2014 at 02:05:05AM +0100, BALATON Zoltan wrote: > Signed-off-by: BALATON Zoltan Applied, thanks for your persistence! > --- > > v2: resubmission after pc-2.1 is added with the multiport case > v3: added compatibility check to avoid changing earlier than pc-2.1 > v4: renamed compat property to prog_if > > hw/char/serial-pci.c | 7 +++++++ > include/hw/i386/pc.h | 15 +++++++++++++++ > 2 files changed, 22 insertions(+) > > diff --git a/hw/char/serial-pci.c b/hw/char/serial-pci.c > index 991c99f..acccc9c 100644 > --- a/hw/char/serial-pci.c > +++ b/hw/char/serial-pci.c > @@ -34,6 +34,7 @@ > typedef struct PCISerialState { > PCIDevice dev; > SerialState state; > + uint8_t prog_if; > } PCISerialState; > > typedef struct PCIMultiSerialState { > @@ -44,6 +45,7 @@ typedef struct PCIMultiSerialState { > SerialState state[PCI_SERIAL_MAX_PORTS]; > uint32_t level[PCI_SERIAL_MAX_PORTS]; > qemu_irq *irqs; > + uint8_t prog_if; > } PCIMultiSerialState; > > static int serial_pci_init(PCIDevice *dev) > @@ -60,6 +62,7 @@ static int serial_pci_init(PCIDevice *dev) > return -1; > } > > + pci->dev.config[PCI_CLASS_PROG] = pci->prog_if; > pci->dev.config[PCI_INTERRUPT_PIN] = 0x01; > s->irq = pci_allocate_irq(&pci->dev); > > @@ -101,6 +104,7 @@ static int multi_serial_pci_init(PCIDevice *dev) > assert(pci->ports > 0); > assert(pci->ports <= PCI_SERIAL_MAX_PORTS); > > + pci->dev.config[PCI_CLASS_PROG] = pci->prog_if; > pci->dev.config[PCI_INTERRUPT_PIN] = 0x01; > memory_region_init(&pci->iobar, OBJECT(pci), "multiserial", 8 * pci->ports); > pci_register_bar(&pci->dev, 0, PCI_BASE_ADDRESS_SPACE_IO, &pci->iobar); > @@ -177,12 +181,14 @@ static const VMStateDescription vmstate_pci_multi_serial = { > > static Property serial_pci_properties[] = { > DEFINE_PROP_CHR("chardev", PCISerialState, state.chr), > + DEFINE_PROP_UINT8("prog_if", PCISerialState, prog_if, 0x02), > DEFINE_PROP_END_OF_LIST(), > }; > > static Property multi_2x_serial_pci_properties[] = { > DEFINE_PROP_CHR("chardev1", PCIMultiSerialState, state[0].chr), > DEFINE_PROP_CHR("chardev2", PCIMultiSerialState, state[1].chr), > + DEFINE_PROP_UINT8("prog_if", PCIMultiSerialState, prog_if, 0x02), > DEFINE_PROP_END_OF_LIST(), > }; > > @@ -191,6 +197,7 @@ static Property multi_4x_serial_pci_properties[] = { > DEFINE_PROP_CHR("chardev2", PCIMultiSerialState, state[1].chr), > DEFINE_PROP_CHR("chardev3", PCIMultiSerialState, state[2].chr), > DEFINE_PROP_CHR("chardev4", PCIMultiSerialState, state[3].chr), > + DEFINE_PROP_UINT8("prog_if", PCIMultiSerialState, prog_if, 0x02), > DEFINE_PROP_END_OF_LIST(), > }; > > diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h > index 32a7687..552fbd8 100644 > --- a/include/hw/i386/pc.h > +++ b/include/hw/i386/pc.h > @@ -271,6 +271,21 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *); > .driver = "apic",\ > .property = "version",\ > .value = stringify(0x11),\ > + },\ > + {\ > + .driver = "pci-serial",\ > + .property = "prog_if",\ > + .value = stringify(0),\ > + },\ > + {\ > + .driver = "pci-serial-2x",\ > + .property = "prof_if",\ > + .value = stringify(0),\ > + },\ > + {\ > + .driver = "pci-serial-4x",\ > + .property = "prog_if",\ > + .value = stringify(0),\ > } > > #define PC_COMPAT_1_7 \ > -- > 1.8.1.5