piix4: cleanup and improvements
cover piix4: cleanup and improvements
Hi,
This patchset is a cleanup of the PIIX4 PCI-ISA bridge. Lots of devices are moved from MIPS Malta board (which has a PIIX4) to PIIX4, where devices belong. This lets us reuse PIIX4 in other machines, while not loosing any functionality.
Last patch allows adding a new PIIX4 device directly from command line. Note that this will work only as long no other ISA bus already exist on the machine.
Hervé
Hervé Poussineau (15):
fdc: move object structures to header file serial/parallel: move object structures to header file
mc146818rtc: move structure to header file
mc146818rtc: always register rtc to rtc list
piix4: rename some variables in realize function
piix4: add Reset Control Register
piix4: add a i8259 interrupt controller as specified in datasheet
piix4: add a i8257 dma controller as specified in datasheet
piix4: add a i8254 pit controller as specified in datasheet
piix4: add a i8042 keyboard/mouse controller as specified in datasheet
piix4: add a floppy controller, 1 parallel port and 2 serial ports
piix4: add a mc146818rtc controller as specified in datasheet
piix4: add a speaker as specified in datasheet
piix4: rename PIIX4 object to piix4-isa
piix4: we can now instanciate a PIIX4 with -device
hw/block/fdc.c | 101 ------------------------- hw/char/parallel.c | 31 +------- hw/char/serial-isa.c | 13 +--- hw/isa/piix4.c | 167 ++++++++++++++++++++++++++++++++++++----- hw/mips/mips_malta.c | 65 ++++++++-------- hw/ppc/pnv.c | 2 +- hw/timer/mc146818rtc.c | 43 ++--------- include/hw/block/fdc.h | 103 +++++++++++++++++++++++++ include/hw/char/isa.h | 50 ++++++++++++ include/hw/char/serial.h | 1 - include/hw/i386/pc.h | 1 - include/hw/timer/mc146818rtc.h | 29 +++++++ 12 files changed, 373 insertions(+), 233 deletions(-) create mode 100644 include/hw/char/isa.h
Signature · 1 line
2.11.0
PATCH 1/15 fdc: move object structures to header file
We are now able to embed floppy controllers in another object.
--- hw/block/fdc.c | 101 ------------------------------------------------ include/hw/block/fdc.h | 103 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+), 101 deletions(-)
hw/block/fdc.c +0 -101
@@ -61,14 +61,8 @@#define FLOPPY_BUS (obj) OBJECT_CHECK(FloppyBus, (obj), TYPE_FLOPPY_BUS)typedef struct FDCtrl FDCtrl ; -typedef struct FDrive FDrive ;static FDrive *get_drv (FDCtrl *fdctrl,int unit); -typedef struct FloppyBus { -BusState bus; -FDCtrl *fdc; -}FloppyBus ; -static const TypeInfo floppy_bus_info = { .name =TYPE_FLOPPY_BUS , .parent =TYPE_BUS ,
@@ -178,36 +172,6 @@ static FDriveSize drive_size(FloppyDriveType drive)#define FD_SECTOR_SC 2/* Sector size code */ #define FD_RESET_SENSEI_COUNT 4/* Number of sense interrupts on RESET */ -/* Floppy disk drive emulation */ -typedef enum FDiskFlags { -FDISK_DBL_SIDES =0x01 , -}FDiskFlags ; - -struct FDrive { -FDCtrl *fdctrl; -BlockBackend *blk; -BlockConf *conf; -/* Drive status */ -FloppyDriveType drive;/* CMOS drive type */ -uint8_t perpendicular;/* 2.88 MB access mode */ -/* Position */ -uint8_t head; -uint8_t track; -uint8_t sect; -/* Media */ -FloppyDriveType disk;/* Current disk type */ -FDiskFlags flags; -uint8_t last_sect;/* Nb sector per track */ -uint8_t max_track;/* Nb of tracks */ -uint16_t bps;/* Bytes per sector */ -uint8_t ro;/* Is read-only */ -uint8_t media_changed;/* Is media changed */ -uint8_t media_rate;/* Data rate of medium */ - -bool media_validated;/* Have we validated the media? */ -}; - -static FloppyDriveType get_fallback_drive_type (FDrive *drv);/* Hack: FD_SEEK is expected to work on empty drives. However, QEMU
@@ -824,60 +788,6 @@ enum {#define FD_MULTI_TRACK (state) ((state) & FD_STATE_MULTI)#define FD_FORMAT_CMD (state) ((state) & FD_STATE_FORMAT) -struct FDCtrl { -MemoryRegion iomem; -qemu_irq irq; -/* Controller state */ -QEMUTimer *result_timer; -int dma_chann; -uint8_t phase; -IsaDma *dma; -/* Controller's identification */ -uint8_t version; -/* HW */ -uint8_t sra; -uint8_t srb; -uint8_t dor; -uint8_t dor_vmstate;/* only used as temp during vmstate */ -uint8_t tdr; -uint8_t dsr; -uint8_t msr; -uint8_t cur_drv; -uint8_t status0; -uint8_t status1; -uint8_t status2; -/* Command FIFO */ -uint8_t *fifo; -int32_t fifo_size; -uint32_t data_pos; -uint32_t data_len; -uint8_t data_state; -uint8_t data_dir; -uint8_t eot;/* last wanted sector */ -/* States kept only to be returned back */ -/* precompensation */ -uint8_t precomp_trk; -uint8_t config; -uint8_t lock; -/* Power down config (also with status regB access mode */ -uint8_t pwrd; -/* Floppy drives */ -FloppyBus bus; -uint8_t num_floppies; -FDrive drives[MAX_FD ]; -struct { -BlockBackend *blk; -FloppyDriveType type; - } qdev_for_drives[MAX_FD ]; -int reset_sensei; -uint32_t check_media_rate; -FloppyDriveType fallback;/* type=auto failure fallback */ -/* Timers state */ -uint8_t timer0; -uint8_t timer1; -PortioList portio_list; -}; -static FloppyDriveType get_fallback_drive_type (FDrive *drv) {return drv->fdctrl->fallback;
@@ -896,17 +806,6 @@ typedef struct FDCtrlSysBus {#define ISA_FDC (obj) OBJECT_CHECK(FDCtrlISABus, (obj), TYPE_ISA_FDC) -typedef struct FDCtrlISABus { -ISADevice parent_obj; - -uint32_t iobase; -uint32_t irq; -uint32_t dma; -struct FDCtrl state; -int32_t bootindexA; -int32_t bootindexB; -}FDCtrlISABus ; -static uint32_t fdctrl_read (void *opaque,uint32_t reg) {FDCtrl *fdctrl = opaque;
include/hw/block/fdc.h +103 -0
115 lines not on this page · raw message
Signature · 1 line
2.11.0
PATCH 2/15 serial/parallel: move object structures to header file
In reply to Hervé PoussineauWe are now able to embed serial/parallel ports in another object.
--- hw/char/parallel.c | 31 +----------------------------- hw/char/serial-isa.c | 13 +------------ hw/ppc/pnv.c | 2 +- include/hw/char/isa.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ include/hw/char/serial.h | 1 - 5 files changed, 53 insertions(+), 44 deletions(-) create mode 100644 include/hw/char/isa.h
hw/char/parallel.c +1 -30
@@ -28,6 +28,7 @@#include "chardev/char-parallel.h" #include "chardev/char-fe.h" #include "hw/isa/isa.h" +#include "hw/char/isa.h" #include "hw/i386/pc.h" #include "sysemu/sysemu.h"
@@ -67,36 +68,6 @@#define PARA_CTR_SIGNAL (PARA_CTR_SELECT|PARA_CTR_INIT|PARA_CTR_AUTOLF|PARA_CTR_STROBE) -typedef struct ParallelState { -MemoryRegion iomem; -uint8_t dataw; -uint8_t datar; -uint8_t status; -uint8_t control; -qemu_irq irq; -int irq_pending; -CharBackend chr; -int hw_driver; -int epp_timeout; -uint32_t last_read_offset;/* For debugging */ -/* Memory-mapped interface */ -int it_shift; -PortioList portio_list; -}ParallelState ; - -#define TYPE_ISA_PARALLEL "isa-parallel" -#define ISA_PARALLEL (obj) \ - OBJECT_CHECK(ISAParallelState, (obj), TYPE_ISA_PARALLEL) - -typedef struct ISAParallelState { -ISADevice parent_obj; - -uint32_t index; -uint32_t iobase; -uint32_t isairq; -ParallelState state; -}ISAParallelState ; -static void parallel_update_irq (ParallelState *s) {if (s->irq_pending)
hw/char/serial-isa.c +1 -12
@@ -26,18 +26,7 @@#include "qemu/osdep.h" #include "qapi/error.h" #include "hw/char/serial.h" -#include "hw/isa/isa.h" - -#define ISA_SERIAL (obj) OBJECT_CHECK(ISASerialState, (obj), TYPE_ISA_SERIAL) - -typedef struct ISASerialState { -ISADevice parent_obj; - -uint32_t index; -uint32_t iobase; -uint32_t isairq; -SerialState state; -}ISASerialState ; +#include "hw/char/isa.h" static const int isa_serial_io[MAX_SERIAL_PORTS ] = {0x3f8 ,0x2f8 ,0x3e8 ,0x2e8
hw/ppc/pnv.c +1 -1
@@ -41,7 +41,7 @@#include "hw/ppc/pnv_xscom.h" #include "hw/isa/isa.h" -#include "hw/char/serial.h" +#include "hw/char/isa.h" #include "hw/timer/mc146818rtc.h" #include <libfdt.h>
include/hw/char/isa.h new file +50 -0
50 lines not on this page · raw message
include/hw/char/serial.h +0 -1
@@ -95,7 +95,6 @@ SerialState *serial_mm_init(MemoryRegion *address_space, Chardev *chr, enum device_endian end);/* serial-isa.c */ -#define TYPE_ISA_SERIAL "isa-serial"void serial_hds_isa_init (ISABus *bus,int from,int to);#endif
Signature · 1 line
2.11.0
PATCH 3/15 mc146818rtc: move structure to header file
In reply to Hervé PoussineauWe are now able to embed a timer in another object.
--- hw/timer/mc146818rtc.c | 30 ------------------------------ include/hw/timer/mc146818rtc.h | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 30 deletions(-)
hw/timer/mc146818rtc.c +0 -30
@@ -62,36 +62,6 @@#define RTC_CLOCK_RATE 32768#define UIP_HOLD_LENGTH (8 * NANOSECONDS_PER_SECOND / 32768) -#define MC146818_RTC (obj) OBJECT_CHECK(RTCState, (obj), TYPE_MC146818_RTC) - -typedef struct RTCState { -ISADevice parent_obj; - -MemoryRegion io; -uint8_t cmos_data[128 ]; -uint8_t cmos_index; -int32_t base_year; -uint64_t base_rtc; -uint64_t last_update; -int64_t offset; -qemu_irq irq; -int it_shift; -/* periodic timer */ -QEMUTimer *periodic_timer; -int64_t next_periodic_time; -/* update-ended timer */ -QEMUTimer *update_timer; -uint64_t next_alarm_time; -uint16_t irq_reinject_on_ack_count; -uint32_t irq_coalesced; -uint32_t period; -QEMUTimer *coalesced_timer; -Notifier clock_reset_notifier; -LostTickPolicy lost_tick_policy; -Notifier suspend_notifier; -QLIST_ENTRY (RTCState) link; -}RTCState ; -static void rtc_set_time (RTCState *s);static void rtc_update_time (RTCState *s);static void rtc_set_cmos (RTCState *s,const struct tm *tm);
include/hw/timer/mc146818rtc.h +29 -0
@@ -5,6 +5,35 @@#include "hw/timer/mc146818rtc_regs.h" #define TYPE_MC146818_RTC "mc146818rtc" +#define MC146818_RTC (obj) OBJECT_CHECK(RTCState, (obj), TYPE_MC146818_RTC) + +typedef struct RTCState { +ISADevice parent_obj; + +MemoryRegion io; +uint8_t cmos_data[128 ]; +uint8_t cmos_index; +int32_t base_year; +uint64_t base_rtc; +uint64_t last_update; +int64_t offset; +qemu_irq irq; +int it_shift; +/* periodic timer */ +QEMUTimer *periodic_timer; +int64_t next_periodic_time; +/* update-ended timer */ +QEMUTimer *update_timer; +uint64_t next_alarm_time; +uint16_t irq_reinject_on_ack_count; +uint32_t irq_coalesced; +uint32_t period; +QEMUTimer *coalesced_timer; +Notifier clock_reset_notifier; +LostTickPolicy lost_tick_policy; +Notifier suspend_notifier; +QLIST_ENTRY (RTCState) link; +}RTCState ;ISADevice *rtc_init (ISABus *bus,int base_year,qemu_irq intercept_irq);void rtc_set_memory (ISADevice *dev,int addr,int val);
Signature · 1 line
2.11.0
PATCH 4/15 mc146818rtc: always register rtc to rtc list
In reply to Hervé PoussineauWe are not required anymore to use rtc_init() function.
--- hw/timer/mc146818rtc.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
hw/timer/mc146818rtc.c +8 -5
@@ -905,6 +905,13 @@ static void rtc_get_date(Object *obj, struct tm *current_tm, Error **errp)rtc_get_time (s, current_tm); } +static int rtc_initfn (DeviceState *dev) +{ +RTCState *s =MC146818_RTC (dev); +QLIST_INSERT_HEAD (&rtc_devices, s, link); +return 0 ; +} +static void rtc_realizefn (DeviceState *dev,Error **errp) {ISADevice *isadev =ISA_DEVICE (dev);
@@ -973,11 +980,9 @@ ISADevice *rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq) {DeviceState *dev;ISADevice *isadev; -RTCState *s; isadev =isa_create (bus,TYPE_MC146818_RTC ); dev =DEVICE (isadev); - s =MC146818_RTC (isadev);qdev_prop_set_int32 (dev,"base_year" , base_year);qdev_init_nofail (dev);if (intercept_irq) {
@@ -985,7 +990,6 @@ ISADevice *rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq) }else {isa_connect_gpio_out (isadev,0 ,RTC_ISA_IRQ ); } -QLIST_INSERT_HEAD (&rtc_devices, s, link);return isadev; }
@@ -1012,12 +1016,11 @@ static void rtc_class_initfn(ObjectClass *klass, void *data) {DeviceClass *dc =DEVICE_CLASS (klass); + dc->init = rtc_initfn; dc->realize = rtc_realizefn; dc->reset = rtc_resetdev; dc->vmsd = &vmstate_rtc; dc->props = mc146818rtc_properties; -/* Reason: needs to be wired up by rtc_init() */ - dc->user_creatable = false; }static void rtc_finalize (Object *obj)
Signature · 1 line
2.11.0
PATCH 5/15 piix4: rename some variables in realize function
In reply to Hervé PoussineauPIIX4 structure is now 's'
PCI device is now 'pci'
DeviceState is now 'dev'
--- hw/isa/piix4.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
hw/isa/piix4.c +7 -6
@@ -87,16 +87,17 @@ static const VMStateDescription vmstate_piix4 = { } }; -static void piix4_realize (PCIDevice *dev,Error **errp) +static void piix4_realize (PCIDevice *pci,Error **errp) { -PIIX4State *d =PIIX4_PCI_DEVICE (dev); +DeviceState *dev =DEVICE (pci); +PIIX4State *s =DO_UPCAST (PIIX4State, dev, pci); -if (!isa_bus_new (DEVICE (d),pci_address_space (dev), -pci_address_space_io (dev), errp)) { +if (!isa_bus_new (dev,pci_address_space (pci), +pci_address_space_io (pci), errp)) {return ; } - piix4_dev = &d->dev; -qemu_register_reset (piix4_reset, d); + piix4_dev = pci; +qemu_register_reset (piix4_reset, s); }int piix4_init (PCIBus *bus,ISABus **isa_bus,int devfn)
Signature · 1 line
2.11.0
PATCH 6/15 piix4: add Reset Control Register
In reply to Hervé PoussineauThe RCR I/O port (0xcf9) is used to generate a hard reset or a soft reset.
--- hw/isa/piix4.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)
hw/isa/piix4.c +35 -0
@@ -2,6 +2,7 @@* QEMU PIIX4 PCI Bridge Emulation * * Copyright (c) 2006 Fabrice Bellard +* Copyright (c) 2016 Hervé Poussineau * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal
@@ -33,6 +34,10 @@ PCIDevice *piix4_dev;typedef struct PIIX4State {PCIDevice dev; + +/* Reset Control Register */ +MemoryRegion rcr_mem; +uint8_t rcr; }PIIX4State ;#define TYPE_PIIX4_PCI_DEVICE "PIIX4"
@@ -87,6 +92,30 @@ static const VMStateDescription vmstate_piix4 = { } }; +static void piix4_rcr_write (void *opaque,hwaddr addr,uint64_t val, +unsigned int len) +{ +PIIX4State *s = opaque; + +if (val &4 ) { +qemu_system_reset_request (SHUTDOWN_CAUSE_GUEST_RESET ); +return ; + } + s->rcr = val &2 ;/* keep System Reset type only */ +} + +static uint64_t piix4_rcr_read (void *opaque,hwaddr addr,unsigned int len) +{ +PIIX4State *s = opaque; +return s->rcr; +} + +static const MemoryRegionOps piix4_rcr_ops = { + .read = piix4_rcr_read, + .write = piix4_rcr_write, + .endianness =DEVICE_LITTLE_ENDIAN +}; +static void piix4_realize (PCIDevice *pci,Error **errp) {DeviceState *dev =DEVICE (pci);
@@ -96,6 +125,12 @@ static void piix4_realize(PCIDevice *pci, Error **errp) pci_address_space_io(pci), errp)) {return ; } + +memory_region_init_io (&s->rcr_mem,OBJECT (dev), &piix4_rcr_ops, s, +"reset-control" ,1 ); +memory_region_add_subregion_overlap (pci_address_space_io (pci),0xcf9 , + &s->rcr_mem,1 ); + piix4_dev = pci;qemu_register_reset (piix4_reset, s); }
Signature · 1 line
2.11.0
PATCH 7/15 piix4: add a i8259 interrupt controller as specified in datasheet
In reply to Hervé PoussineauAdd ISA irqs as piix4 gpio in, and CPU interrupt request as piix4 gpio out. Remove i8259 instanciated in malta board, to not have it twice.
We can also remove the now unused piix4_init() function.
--- hw/isa/piix4.c | 40 +++++++++++++++++++++++++++++----------- hw/mips/mips_malta.c | 28 ++++++++++++---------------- include/hw/i386/pc.h | 1 - 3 files changed, 41 insertions(+), 28 deletions(-)
hw/isa/piix4.c +29 -11
@@ -34,6 +34,8 @@ PCIDevice *piix4_dev; typedef struct PIIX4State { PCIDevice dev; + qemu_irq cpu_intr; + qemu_irq *isa; /* Reset Control Register */ MemoryRegion rcr_mem;
@@ -92,6 +94,18 @@ static const VMStateDescription vmstate_piix4 = { } }; +static void piix4_request_i8259_irq (void *opaque,int irq,int level) +{ +PIIX4State *s = opaque; +qemu_set_irq (s->cpu_intr, level); +} + +static void piix4_set_i8259_irq (void *opaque,int irq,int level) +{ +PIIX4State *s = opaque; +qemu_set_irq (s->isa[irq], level); +} +static void piix4_rcr_write (void *opaque,hwaddr addr,uint64_t val,unsigned int len) {
@@ -120,28 +134,32 @@ static void piix4_realize(PCIDevice *pci, Error **errp) {DeviceState *dev =DEVICE (pci);PIIX4State *s =DO_UPCAST (PIIX4State, dev, pci); +ISABus *isa_bus; +qemu_irq *i8259_out_irq; -if (!isa_bus_new (dev,pci_address_space (pci), -pci_address_space_io (pci), errp)) { + isa_bus =isa_bus_new (dev,pci_address_space (pci), +pci_address_space_io (pci), errp); +if (!isa_bus) {return ; } +qdev_init_gpio_in_named (dev, piix4_set_i8259_irq,"isa" ,ISA_NUM_IRQS ); +qdev_init_gpio_out_named (dev, &s->cpu_intr,"intr" ,1 ); +memory_region_init_io (&s->rcr_mem,OBJECT (dev), &piix4_rcr_ops, s,"reset-control" ,1 );memory_region_add_subregion_overlap (pci_address_space_io (pci),0xcf9 , &s->rcr_mem,1 ); - piix4_dev = pci; -qemu_register_reset (piix4_reset, s); -} +/* initialize i8259 pic */ + i8259_out_irq =qemu_allocate_irqs (piix4_request_i8259_irq, s,1 ); + s->isa =i8259_init (isa_bus, *i8259_out_irq); -int piix4_init (PCIBus *bus,ISABus **isa_bus,int devfn) -{ -PCIDevice *d; +/* initialize ISA irqs */ +isa_bus_irqs (isa_bus, s->isa); - d =pci_create_simple_multifunction (bus, devfn, true,"PIIX4" ); - *isa_bus =ISA_BUS (qdev_get_child_bus (DEVICE (d),"isa.0" )); -return d->devfn; + piix4_dev = pci; +qemu_register_reset (piix4_reset, s); }static void piix4_class_init (ObjectClass *klass,void *data)
hw/mips/mips_malta.c +12 -16
@@ -96,7 +96,7 @@ typedef struct {SysBusDevice parent_obj;MIPSCPSState *cps; -qemu_irq *i8259; +qemu_irq i8259[16 ]; } MaltaState;static ISADevice *pit;
@@ -998,8 +998,8 @@ void mips_malta_init(MachineState *machine)int64_t kernel_entry, bootloader_run_addr;PCIBus *pci_bus;ISABus *isa_bus; -qemu_irq *isa_irq;qemu_irq cbus_irq, i8259_irq; +PCIDevice *pci;int piix4_devfn;I2CBus *smbus;int i;
@@ -1180,28 +1180,24 @@ void mips_malta_init(MachineState *machine)/* Board ID = 0x420 (Malta Board with CoreLV) */ stl_p (memory_region_get_ram_ptr (bios_copy) +0x10 ,0x00000420 ); -/* -* We have a circular dependency problem: pci_bus depends on isa_irq, -* isa_irq is provided by i8259, i8259 depends on ISA, ISA depends -* on piix4, and piix4 depends on pci_bus. To stop the cycle we have -* qemu_irq_proxy() adds an extra bit of indirection, allowing us -* to resolve the isa_irq -> i8259 dependency after i8259 is initialized. -*/ - isa_irq =qemu_irq_proxy (&s->i8259,16 ); -/* Northbridge */ - pci_bus =gt64120_register (isa_irq); + pci_bus =gt64120_register (s->i8259);/* Southbridge */ ide_drive_get (hd,ARRAY_SIZE (hd)); - piix4_devfn =piix4_init (pci_bus, &isa_bus,80 ); + pci =pci_create_simple_multifunction (pci_bus,PCI_DEVFN (10 ,0 ), + true,"PIIX4" ); + dev =DEVICE (pci); + isa_bus =ISA_BUS (qdev_get_child_bus (dev,"isa.0" )); + piix4_devfn = pci->devfn;/* Interrupt controller */ -/* The 8259 is attached to the MIPS CPU INT0 pin, ie interrupt 2 */ - s->i8259 =i8259_init (isa_bus, i8259_irq); +qdev_connect_gpio_out_named (dev,"intr" ,0 , i8259_irq); +for (i =0 ; i <16 ; i++) { + s->i8259[i] =qdev_get_gpio_in_named (dev,"isa" , i); + } -isa_bus_irqs (isa_bus, s->i8259);pci_piix4_ide_init (pci_bus, hd, piix4_devfn +1 );pci_create_simple (pci_bus, piix4_devfn +2 ,"piix4-usb-uhci" ); smbus = piix4_pm_init(pci_bus, piix4_devfn + 3, 0x1100,
include/hw/i386/pc.h +0 -1
@@ -313,7 +313,6 @@ PCIBus *i440fx_init(const char *host_type, const char *pci_type,PCIBus *find_i440fx (void );/* piix4.c */ extern PCIDevice *piix4_dev; -int piix4_init (PCIBus *bus,ISABus **isa_bus,int devfn);/* vga.c */ enum vga_retrace_method {
Signature · 1 line
2.11.0
PATCH 8/15 piix4: add a i8257 dma controller as specified in datasheet
In reply to Hervé PoussineauRemove i8257 instanciated in malta board, to not have it twice.
--- hw/isa/piix4.c | 3 +++ hw/mips/mips_malta.c | 1 - 2 files changed, 3 insertions(+), 1 deletion(-)
hw/isa/piix4.c +3 -0
@@ -158,6 +158,9 @@ static void piix4_realize(PCIDevice *pci, Error **errp)/* initialize ISA irqs */ isa_bus_irqs (isa_bus, s->isa); +/* DMA */ +DMA_init (isa_bus,0 ); + piix4_dev = pci;qemu_register_reset (piix4_reset, s); }
hw/mips/mips_malta.c +0 -1
@@ -1205,7 +1205,6 @@ void mips_malta_init(MachineState *machine)smbus_eeprom_init (smbus,8 , smbus_eeprom_buf, smbus_eeprom_size);g_free (smbus_eeprom_buf); pit =pit_init (isa_bus,0x40 ,0 ,NULL ); -DMA_init (isa_bus,0 );/* Super I/O */ isa_create_simple (isa_bus,"i8042" );
Signature · 1 line
2.11.0
PATCH 9/15 piix4: add a i8254 pit controller as specified in datasheet
In reply to Hervé PoussineauRemove i8254 instanciated in malta board, to not have it twice.
--- hw/isa/piix4.c | 4 ++++ hw/mips/mips_malta.c | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-)
hw/isa/piix4.c +4 -0
@@ -29,6 +29,7 @@#include "hw/pci/pci.h" #include "hw/isa/isa.h" #include "hw/sysbus.h" +#include "hw/timer/i8254.h" PCIDevice *piix4_dev;
@@ -158,6 +159,9 @@ static void piix4_realize(PCIDevice *pci, Error **errp)/* initialize ISA irqs */ isa_bus_irqs (isa_bus, s->isa); +/* initialize pit */ +pit_init (isa_bus,0x40 ,0 ,NULL ); +/* DMA */ DMA_init (isa_bus,0 );
hw/mips/mips_malta.c +0 -3
@@ -99,8 +99,6 @@ typedef struct {qemu_irq i8259[16 ]; } MaltaState; -static ISADevice *pit; - static struct _loaderparams { int ram_size, ram_low_size; const char *kernel_filename;
@@ -1204,7 +1202,6 @@ void mips_malta_init(MachineState *machine) isa_get_irq(NULL, 9), NULL, 0, NULL);smbus_eeprom_init (smbus,8 , smbus_eeprom_buf, smbus_eeprom_size);g_free (smbus_eeprom_buf); - pit =pit_init (isa_bus,0x40 ,0 ,NULL );/* Super I/O */ isa_create_simple (isa_bus,"i8042" );
Signature · 1 line
2.11.0
PATCH 10/15 piix4: add a i8042 keyboard/mouse controller as specified in datasheet
In reply to Hervé PoussineauRemove i8042 instanciated in malta board, to not have it twice.
--- hw/isa/piix4.c | 3 +++ hw/mips/mips_malta.c | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-)
hw/isa/piix4.c +3 -0
@@ -165,6 +165,9 @@ static void piix4_realize(PCIDevice *pci, Error **errp)/* DMA */ DMA_init (isa_bus,0 ); +/* Super I/O */ +isa_create_simple (isa_bus,"i8042" ); + piix4_dev = pci;qemu_register_reset (piix4_reset, s); }
hw/mips/mips_malta.c +0 -3
@@ -1203,9 +1203,6 @@ void mips_malta_init(MachineState *machine)smbus_eeprom_init (smbus,8 , smbus_eeprom_buf, smbus_eeprom_size);g_free (smbus_eeprom_buf); -/* Super I/O */ -isa_create_simple (isa_bus,"i8042" ); -rtc_init (isa_bus,2000 ,NULL );serial_hds_isa_init (isa_bus,0 ,2 );parallel_hds_isa_init (isa_bus,1 );
Signature · 1 line
2.11.0
PATCH 11/15 piix4: add a floppy controller, 1 parallel port and 2 serial ports
In reply to Hervé PoussineauRemove their instanciation from malta board, to not have them twice. Also, always create a parallel port in Malta board, as requested by PIIX4.
--- hw/isa/piix4.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ hw/mips/mips_malta.c | 32 ++++++++++++++++++++---------- 2 files changed, 78 insertions(+), 10 deletions(-)
hw/isa/piix4.c +56 -0
@@ -28,8 +28,10 @@#include "hw/i386/pc.h" #include "hw/pci/pci.h" #include "hw/isa/isa.h" +#include "hw/char/isa.h" #include "hw/sysbus.h" #include "hw/timer/i8254.h" +#include "qapi/error.h" PCIDevice *piix4_dev;
@@ -38,6 +40,10 @@ typedef struct PIIX4State {qemu_irq cpu_intr;qemu_irq *isa; +FDCtrlISABus floppy; +ISASerialState serial[2 ]; +ISAParallelState parallel; +/* Reset Control Register */ MemoryRegion rcr_mem;uint8_t rcr;
@@ -137,6 +143,8 @@ static void piix4_realize(PCIDevice *pci, Error **errp)PIIX4State *s =DO_UPCAST (PIIX4State, dev, pci);ISABus *isa_bus;qemu_irq *i8259_out_irq; +int i; +Error *err =NULL ; isa_bus =isa_bus_new (dev,pci_address_space (pci),pci_address_space_io (pci), errp);
@@ -168,10 +176,57 @@ static void piix4_realize(PCIDevice *pci, Error **errp)/* Super I/O */ isa_create_simple (isa_bus,"i8042" ); +/* floppy */ +qdev_set_parent_bus (DEVICE (&s->floppy),BUS (isa_bus)); +object_property_set_bool (OBJECT (&s->floppy), true,"realized" , &err); +if (err) { +error_propagate (errp, err); +return ; + } + +/* serial ports (ignore errors) */ +for (i =0 ; i <2 ; i++) { +qdev_set_parent_bus (DEVICE (&s->serial[i]),BUS (isa_bus)); +object_property_set_bool (OBJECT (&s->serial[i]), true,"realized" , &err); +if (err) { +error_propagate (errp, err); +return ; + } + } + +/* parallel port (ignore errors) */ +qdev_set_parent_bus (DEVICE (&s->parallel),BUS (isa_bus)); +object_property_set_bool (OBJECT (&s->parallel), true,"realized" , &err); +if (err) { +error_propagate (errp, err); +return ; + } + piix4_dev = pci;qemu_register_reset (piix4_reset, s); } +static void piix4_init (Object *obj) +{ +PIIX4State *s =PIIX4_PCI_DEVICE (obj); +int i; + +object_initialize (&s->floppy,sizeof (s->floppy),TYPE_ISA_FDC ); +for (i =0 ; i <2 ; i++) { +object_initialize (&s->serial[i],sizeof (s->serial[i]),TYPE_ISA_SERIAL ); + } +object_initialize (&s->parallel,sizeof (s->parallel),TYPE_ISA_PARALLEL ); + +object_property_add_alias (obj,"floppy" ,OBJECT (&s->floppy),"driveA" , + &error_abort); +object_property_add_alias (obj,"serial0" ,OBJECT (&s->serial[0 ]),"chardev" , + &error_abort); +object_property_add_alias (obj,"serial1" ,OBJECT (&s->serial[1 ]),"chardev" , + &error_abort); +object_property_add_alias (obj,"parallel" ,OBJECT (&s->parallel),"chardev" , + &error_abort); +} +static void piix4_class_init (ObjectClass *klass,void *data) {DeviceClass *dc =DEVICE_CLASS (klass);
@@ -195,6 +250,7 @@ static const TypeInfo piix4_info = { .name = TYPE_PIIX4_PCI_DEVICE, .parent = TYPE_PCI_DEVICE, .instance_size = sizeof(PIIX4State), + .instance_init = piix4_init, .class_init = piix4_class_init, .interfaces = (InterfaceInfo []) { {INTERFACE_CONVENTIONAL_PCI_DEVICE },
hw/mips/mips_malta.c +22 -10
@@ -1003,7 +1003,7 @@ void mips_malta_init(MachineState *machine)int i;DriveInfo *dinfo;DriveInfo *hd[MAX_IDE_BUS *MAX_IDE_DEVS ]; -DriveInfo *fd[MAX_FD ]; +DriveInfo *fd;int fl_idx =0 ;int fl_sectors = bios_size >>16 ;int be;
@@ -1026,6 +1026,9 @@ void mips_malta_init(MachineState *machine) serial_hds[i] =qemu_chr_new (label,"null" ); } } +if (!parallel_hds[0 ]) { + parallel_hds[0 ] =qemu_chr_new ("parallel" ,"null" ); + }/* create CPU */ mips_create_cpu (s, machine->cpu_type, &cbus_irq, &i8259_irq);
@@ -1184,9 +1187,25 @@ void mips_malta_init(MachineState *machine)/* Southbridge */ ide_drive_get (hd,ARRAY_SIZE (hd)); - pci =pci_create_simple_multifunction (pci_bus,PCI_DEVFN (10 ,0 ), - true,"PIIX4" ); + pci =pci_create_multifunction (pci_bus,PCI_DEVFN (10 ,0 ), + true,"PIIX4" ); dev =DEVICE (pci); + +/* Floppy */ + fd =drive_get (IF_FLOPPY ,0 ,0 ); +if (fd) { +qdev_prop_set_drive (dev,"floppy" ,blk_by_legacy_dinfo (fd), + &error_fatal); + } + +/* Serial ports */ +qdev_prop_set_chr (dev,"serial0" , serial_hds[0 ]); +qdev_prop_set_chr (dev,"serial1" , serial_hds[1 ]); + +/* Parallel port */ +qdev_prop_set_chr (dev,"parallel" , parallel_hds[0 ]); + +qdev_init_nofail (dev); isa_bus =ISA_BUS (qdev_get_child_bus (dev,"isa.0" )); piix4_devfn = pci->devfn;
@@ -1204,13 +1223,6 @@ void mips_malta_init(MachineState *machine)g_free (smbus_eeprom_buf);rtc_init (isa_bus,2000 ,NULL ); -serial_hds_isa_init (isa_bus,0 ,2 ); -parallel_hds_isa_init (isa_bus,1 ); - -for (i =0 ; i <MAX_FD ; i++) { - fd[i] =drive_get (IF_FLOPPY ,0 , i); - } -fdctrl_init_isa (isa_bus, fd);/* Network card */ network_init (pci_bus);
Signature · 1 line
2.11.0
PATCH 12/15 piix4: add a mc146818rtc controller as specified in datasheet
In reply to Hervé PoussineauRemove mc146818rtc instanciated in malta board, to not have it twice.
--- hw/isa/piix4.c | 12 ++++++++++++ hw/mips/mips_malta.c | 4 ---- 2 files changed, 12 insertions(+), 4 deletions(-)
hw/isa/piix4.c +12 -0
@@ -31,6 +31,7 @@#include "hw/char/isa.h" #include "hw/sysbus.h" #include "hw/timer/i8254.h" +#include "hw/timer/mc146818rtc.h" #include "qapi/error.h" PCIDevice *piix4_dev;
@@ -43,6 +44,7 @@ typedef struct PIIX4State {FDCtrlISABus floppy;ISASerialState serial[2 ];ISAParallelState parallel; +RTCState rtc;/* Reset Control Register */ MemoryRegion rcr_mem;
@@ -202,6 +204,15 @@ static void piix4_realize(PCIDevice *pci, Error **errp)return ; } +/* timer */ +qdev_set_parent_bus (DEVICE (&s->rtc),BUS (isa_bus)); +object_property_set_bool (OBJECT (&s->rtc), true,"realized" , &err); +if (err) { +error_propagate (errp, err); +return ; + } +isa_init_irq (ISA_DEVICE (&s->rtc), &s->rtc.irq,RTC_ISA_IRQ ); + piix4_dev = pci;qemu_register_reset (piix4_reset, s); }
@@ -216,6 +227,7 @@ static void piix4_init(Object *obj)object_initialize (&s->serial[i],sizeof (s->serial[i]),TYPE_ISA_SERIAL ); }object_initialize (&s->parallel,sizeof (s->parallel),TYPE_ISA_PARALLEL ); +object_initialize (&s->rtc,sizeof (s->rtc),TYPE_MC146818_RTC );object_property_add_alias (obj,"floppy" ,OBJECT (&s->floppy),"driveA" , &error_abort);
hw/mips/mips_malta.c +0 -4
@@ -995,7 +995,6 @@ void mips_malta_init(MachineState *machine)uint8_t *smbus_eeprom_buf =g_malloc0 (smbus_eeprom_size);int64_t kernel_entry, bootloader_run_addr;PCIBus *pci_bus; -ISABus *isa_bus;qemu_irq cbus_irq, i8259_irq;PCIDevice *pci;int piix4_devfn;
@@ -1206,7 +1205,6 @@ void mips_malta_init(MachineState *machine)qdev_prop_set_chr (dev,"parallel" , parallel_hds[0 ]);qdev_init_nofail (dev); - isa_bus =ISA_BUS (qdev_get_child_bus (dev,"isa.0" )); piix4_devfn = pci->devfn;/* Interrupt controller */
@@ -1222,8 +1220,6 @@ void mips_malta_init(MachineState *machine)smbus_eeprom_init (smbus,8 , smbus_eeprom_buf, smbus_eeprom_size);g_free (smbus_eeprom_buf); -rtc_init (isa_bus,2000 ,NULL ); -/* Network card */ network_init (pci_bus);
Signature · 1 line
2.11.0
PATCH 13/15 piix4: add a speaker as specified in datasheet
In reply to Hervé Poussineau--- hw/isa/piix4.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
hw/isa/piix4.c +6 -1
@@ -30,6 +30,7 @@#include "hw/isa/isa.h" #include "hw/char/isa.h" #include "hw/sysbus.h" +#include "hw/audio/pcspk.h" #include "hw/timer/i8254.h" #include "hw/timer/mc146818rtc.h" #include "qapi/error.h"
@@ -144,6 +145,7 @@ static void piix4_realize(PCIDevice *pci, Error **errp)DeviceState *dev =DEVICE (pci);PIIX4State *s =DO_UPCAST (PIIX4State, dev, pci);ISABus *isa_bus; +ISADevice *pit;qemu_irq *i8259_out_irq;int i;Error *err =NULL ;
@@ -170,7 +172,10 @@ static void piix4_realize(PCIDevice *pci, Error **errp)isa_bus_irqs (isa_bus, s->isa);/* initialize pit */ -pit_init (isa_bus,0x40 ,0 ,NULL ); + pit =pit_init (isa_bus,0x40 ,0 ,NULL ); + +/* speaker */ +pcspk_init (isa_bus, pit);/* DMA */ DMA_init (isa_bus,0 );
Signature · 1 line
2.11.0
PATCH 14/15 piix4: rename PIIX4 object to piix4-isa
In reply to Hervé PoussineauOther piix4 parts are already named piix4-ide and piix4-usb-uhci.
--- hw/isa/piix4.c | 2 +- hw/mips/mips_malta.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
hw/isa/piix4.c +1 -1
@@ -52,7 +52,7 @@ typedef struct PIIX4State {uint8_t rcr; } PIIX4State; -#define TYPE_PIIX4_PCI_DEVICE "PIIX4" +#define TYPE_PIIX4_PCI_DEVICE "piix4-isa"#define PIIX4_PCI_DEVICE (obj) \ OBJECT_CHECK(PIIX4State, (obj), TYPE_PIIX4_PCI_DEVICE)
hw/mips/mips_malta.c +1 -1
@@ -1187,7 +1187,7 @@ void mips_malta_init(MachineState *machine)ide_drive_get (hd,ARRAY_SIZE (hd)); pci =pci_create_multifunction (pci_bus,PCI_DEVFN (10 ,0 ), - true,"PIIX4" ); + true,"piix4-isa" ); dev =DEVICE (pci);/* Floppy */
Signature · 1 line
2.11.0
PATCH 15/15 piix4: we can now instanciate a PIIX4 with -device
In reply to Hervé PoussineauNote that the PIC master can't be connected to CPU using the command line, but it's not necessary to have a working ISA bus (for I/O, memory and DMA).
--- hw/isa/piix4.c | 6 ------ 1 file changed, 6 deletions(-)
hw/isa/piix4.c +0 -6
@@ -255,12 +255,6 @@ static void piix4_class_init(ObjectClass *klass, void *data) k->class_id =PCI_CLASS_BRIDGE_ISA ; dc->desc ="ISA bridge" ; dc->vmsd = &vmstate_piix4; -/* -* Reason: part of PIIX4 southbridge, needs to be wired up, -* e.g. by mips_malta_init() -*/ - dc->user_creatable = false; - dc->hotpluggable = false; }static const TypeInfo piix4_info = {
Signature · 1 line
2.11.0
This series failed automatic build test. Please find the testing commands and their output below. If you have docker installed, you can probably reproduce it locally.
Hi,
This series failed automatic build test. Please find the testing commands and their output below. If you have docker installed, you can probably reproduce it locally.
Type: series
Message-id: [email protected]
Subject: [Qemu-devel] [PATCH 00/15] piix4: cleanup and improvements
=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
# Let docker tests dump environment info
export SHOW_ENV=1
export J=8
time make docker-test-quick@centos6
time make docker-test-build@min-glib
time make docker-test-mingw@fedora
# iotests is broken now, skip # time make docker-test-block@fedora === TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
* [new tag] patchew/[email protected] -> patchew/[email protected]
Switched to a new branch 'test'5ed40057a5 piix4: we can now instanciate a PIIX4 with -device b2c49d0ca8 piix4: rename PIIX4 object to piix4-isa26d443666f piix4: add a speaker as specified in datasheet65028c8bbb piix4: add a mc146818rtc controller as specified in datasheet 501d9aa697 piix4: add a floppy controller, 1 parallel port and 2 serial ports 0945cbf73f piix4: add a i8042 keyboard/mouse controller as specified in datasheet b9d3570807 piix4: add a i8254 pit controller as specified in datasheet ad1f615d3f piix4: add a i8257 dma controller as specified in datasheet 1314ab36e0 piix4: add a i8259 interrupt controller as specified in datasheet 760f6e599b piix4: add Reset Control Register5c8c78127a piix4: rename some variables in realize function eb2d4312eb mc146818rtc: always register rtc to rtc listfcbaeee277 mc146818rtc: move structure to header filee5b8c0cdf4 serial/parallel: move object structures to header file feae82eb1b fdc: move object structures to header file
=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-y08d_lmb/src/dtc'...
Submodule path 'dtc': checked out '558cd81bdd432769b59bff01240c44f82cfb1a9d'
BUILD centos6
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-y08d_lmb/src'
GEN /var/tmp/patchew-tester-tmp-y08d_lmb/src/docker-src.2017-12-16-04.19.28.29808/qemu.tar
Cloning into '/var/tmp/patchew-tester-tmp-y08d_lmb/src/docker-src.2017-12-16-04.19.28.29808/qemu.tar.vroot'... done.
Your branch is up-to-date with 'origin/test'.
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-y08d_lmb/src/docker-src.2017-12-16-04.19.28.29808/qemu.tar.vroot/dtc'... Submodule path 'dtc': checked out '558cd81bdd432769b59bff01240c44f82cfb1a9d'
Submodule 'ui/keycodemapdb' (git://git.qemu.org/keycodemapdb.git) registered for path 'ui/keycodemapdb' Cloning into '/var/tmp/patchew-tester-tmp-y08d_lmb/src/docker-src.2017-12-16-04.19.28.29808/qemu.tar.vroot/ui/keycodemapdb'... Submodule path 'ui/keycodemapdb': checked out '10739aa26051a5d49d88132604539d3ed085e72e'
COPY RUNNER
RUN test-quick in qemu:centos6
Packages installed:
SDL-devel-1.2.14-7.el6_7.1.x86_64
bison-2.4.1-5.el6.x86_64
bzip2-devel-1.0.5-7.el6_0.x86_64
ccache-3.1.6-2.el6.x86_64
csnappy-devel-0-6.20150729gitd7bc683.el6.x86_64
flex-2.5.35-9.el6.x86_64
gcc-4.4.7-18.el6.x86_64
gettext-0.17-18.el6.x86_64
git-1.7.1-9.el6_9.x86_64
glib2-devel-2.28.8-9.el6.x86_64
libepoxy-devel-1.2-3.el6.x86_64
libfdt-devel-1.4.0-1.el6.x86_64
librdmacm-devel-1.0.21-0.el6.x86_64
lzo-devel-2.03-3.1.el6_5.1.x86_64
make-3.81-23.el6.x86_64
mesa-libEGL-devel-11.0.7-4.el6.x86_64
mesa-libgbm-devel-11.0.7-4.el6.x86_64
package g++ is not installed
pixman-devel-0.32.8-1.el6.x86_64
spice-glib-devel-0.26-8.el6.x86_64
spice-server-devel-0.12.4-16.el6.x86_64
tar-1.23-15.el6_8.x86_64
vte-devel-0.25.1-9.el6.x86_64
xen-devel-4.6.6-2.el6.x86_64
zlib-devel-1.2.3-29.el6.x86_64
Environment variables:
PACKAGES=bison bzip2-devel ccache csnappy-devel flex g++ gcc gettext git glib2-devel libepoxy-devel libfdt-devel librdmacm-devel lzo-devel make mesa-libEGL-devel mesa-libgbm-devel pixman-devel SDL-devel spice-glib-devel spice-server-devel tar vte-devel xen-devel zlib-devel
HOSTNAME=a53459c9d948
MAKEFLAGS= -j8
J=8
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1 PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PWD=/
TARGET_LIST=
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
FEATURES= dtc
DEBUG=
_=/usr/bin/env
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/tmp/qemu-test/install No C++ compiler available; disabling C++ specific optional code
Install prefix /tmp/qemu-test/install BIOS directory /tmp/qemu-test/install/share/qemu firmware path /tmp/qemu-test/install/share/qemu-firmware binary directory /tmp/qemu-test/install/bin
library directory /tmp/qemu-test/install/lib module directory /tmp/qemu-test/install/lib/qemu libexec directory /tmp/qemu-test/install/libexec include directory /tmp/qemu-test/install/include config directory /tmp/qemu-test/install/etc
local state directory /tmp/qemu-test/install/var
Manual directory /tmp/qemu-test/install/share/man ELF interp prefix /usr/gnemul/qemu-%M
Source path /tmp/qemu-test/src
GIT binary git
GIT submodules
C compiler cc
Host C compiler cc
C++ compiler
Objective-C compiler cc
ARFLAGS rv CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g QEMU_CFLAGS -I/usr/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -DNCURSES_WIDECHAR -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all -Wno-missing-braces -I/usr/include/libpng12 -I/usr/include/libdrm -I/usr/include/spice-server -I/usr/include/cacard -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/spice-1 LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g make make install install python python -B smbd /usr/sbin/smbd module support no host CPU x86_64 host big endian no target list x86_64-softmmu aarch64-softmmu gprof enabled no sparse enabled no strip binaries yes profiler no static build no SDL support yes (1.2.14) GTK support yes (2.24.23) GTK GL support no VTE support yes (0.25.1) TLS priority NORMAL GNUTLS support no GNUTLS rnd no libgcrypt no libgcrypt kdf no nettle no nettle kdf no libtasn1 no curses support yes virgl support no curl support no mingw32 support no Audio drivers oss
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
Multipath support no
VNC support yes VNC SASL support no VNC JPEG support yes VNC PNG support yes xen support yes xen ctrl version 40600 pv dom build no brlapi support no bluez support no Documentation no PIE yes vde support no netmap support no Linux AIO support no ATTR/XATTR support yes Install blobs yes KVM support yes HAX support no TCG support yes TCG debug enabled no TCG interpreter no RDMA support yes fdt support yes preadv support yes fdatasync yes madvise yes posix_madvise yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends log spice support yes (0.12.6/0.12.4) rbd support no xfsctl support no smartcard support yes libusb no usb net redir no OpenGL support yes OpenGL dmabufs no libiscsi support no libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info no
QGA MSI support no
seccomp support no
coroutine backend ucontext
coroutine pool yes
debug stack usage no
crypto afalg no
GlusterFS support no
gcov gcov gcov enabled no TPM support yes libssh2 support no TPM passthrough yes TPM emulator yes QOM debugging yes Live block migration yes lzo support yes snappy support no bzip2 support yes
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization no
replication support yes
VxHS block device no
capstone no
mkdir -p dtc/libfdt
GEN x86_64-softmmu/config-devices.mak.tmp
mkdir -p dtc/tests
GEN aarch64-softmmu/config-devices.mak.tmp GEN config-host.h GEN qemu-options.def GEN qmp-commands.h GEN qapi-types.h GEN qapi-visit.h GEN qapi-event.h GEN x86_64-softmmu/config-devices.mak GEN qmp-marshal.c GEN aarch64-softmmu/config-devices.mak GEN qapi-types.c GEN qapi-visit.c GEN qapi-event.c GEN qmp-introspect.h GEN qmp-introspect.c GEN trace/generated-tcg-tracers.h GEN trace/generated-helpers-wrappers.h GEN trace/generated-helpers.h GEN trace/generated-helpers.c GEN module_block.h GEN ui/input-keymap-linux-to-qcode.c GEN ui/input-keymap-qcode-to-qnum.c GEN ui/input-keymap-qnum-to-qcode.c GEN ui/input-keymap-qcode-to-linux.c GEN tests/test-qapi-types.h GEN tests/test-qapi-visit.h GEN tests/test-qmp-commands.h GEN tests/test-qapi-event.h GEN tests/test-qmp-introspect.h GEN trace-root.h GEN util/trace.h GEN crypto/trace.h GEN io/trace.h GEN migration/trace.h GEN block/trace.h GEN chardev/trace.h GEN hw/block/trace.h GEN hw/block/dataplane/trace.h GEN hw/char/trace.h GEN hw/intc/trace.h GEN hw/net/trace.h GEN hw/virtio/trace.h GEN hw/audio/trace.h GEN hw/misc/trace.h GEN hw/scsi/trace.h GEN hw/usb/trace.h GEN hw/nvram/trace.h GEN hw/display/trace.h GEN hw/input/trace.h GEN hw/timer/trace.h GEN hw/dma/trace.h GEN hw/sparc/trace.h GEN hw/sd/trace.h GEN hw/isa/trace.h GEN hw/mem/trace.h GEN hw/i386/trace.h GEN hw/i386/xen/trace.h GEN hw/9pfs/trace.h GEN hw/ppc/trace.h GEN hw/pci/trace.h GEN hw/s390x/trace.h GEN hw/vfio/trace.h GEN hw/acpi/trace.h GEN hw/arm/trace.h GEN hw/alpha/trace.h GEN hw/xen/trace.h GEN hw/ide/trace.h GEN ui/trace.h GEN audio/trace.h GEN net/trace.h GEN target/arm/trace.h GEN target/i386/trace.h GEN target/mips/trace.h GEN target/sparc/trace.h GEN target/s390x/trace.h GEN target/ppc/trace.h GEN qom/trace.h GEN linux-user/trace.h GEN qapi/trace.h GEN accel/tcg/trace.h GEN accel/kvm/trace.h GEN nbd/trace.h GEN scsi/trace.h GEN trace-root.c GEN util/trace.c GEN crypto/trace.c GEN io/trace.c GEN migration/trace.c GEN block/trace.c GEN chardev/trace.c GEN hw/block/trace.c GEN hw/block/dataplane/trace.c GEN hw/char/trace.c GEN hw/intc/trace.c GEN hw/net/trace.c GEN hw/virtio/trace.c GEN hw/audio/trace.c GEN hw/misc/trace.c GEN hw/usb/trace.c GEN hw/scsi/trace.c GEN hw/nvram/trace.c GEN hw/display/trace.c GEN hw/input/trace.c GEN hw/timer/trace.c GEN hw/dma/trace.c GEN hw/sparc/trace.c GEN hw/sd/trace.c GEN hw/isa/trace.c GEN hw/mem/trace.c GEN hw/i386/trace.c GEN hw/i386/xen/trace.c GEN hw/9pfs/trace.c GEN hw/ppc/trace.c GEN hw/pci/trace.c GEN hw/s390x/trace.c GEN hw/vfio/trace.c GEN hw/acpi/trace.c GEN hw/arm/trace.c GEN hw/alpha/trace.c GEN hw/xen/trace.c GEN hw/ide/trace.c GEN ui/trace.c GEN audio/trace.c GEN net/trace.c GEN target/arm/trace.c GEN target/i386/trace.c GEN target/mips/trace.c GEN target/sparc/trace.c GEN target/s390x/trace.c GEN target/ppc/trace.c GEN qom/trace.c GEN linux-user/trace.c GEN qapi/trace.c GEN accel/tcg/trace.c GEN accel/kvm/trace.c GEN nbd/trace.c GEN scsi/trace.c GEN config-all-devices.mak
DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
DEP /tmp/qemu-test/src/dtc/tests/trees.S
DEP /tmp/qemu-test/src/dtc/tests/testutils.c
DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c DEP /tmp/qemu-test/src/dtc/tests/value-labels.c DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c DEP /tmp/qemu-test/src/dtc/tests/check_path.c
DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c DEP /tmp/qemu-test/src/dtc/tests/overlay.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c DEP /tmp/qemu-test/src/dtc/tests/incbin.c
DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c DEP /tmp/qemu-test/src/dtc/tests/path-references.c DEP /tmp/qemu-test/src/dtc/tests/references.c
DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c DEP /tmp/qemu-test/src/dtc/tests/del_node.c
DEP /tmp/qemu-test/src/dtc/tests/del_property.c DEP /tmp/qemu-test/src/dtc/tests/setprop.c
DEP /tmp/qemu-test/src/dtc/tests/set_name.c
DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
DEP /tmp/qemu-test/src/dtc/tests/nop_property.c DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c DEP /tmp/qemu-test/src/dtc/tests/notfound.c
DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c DEP /tmp/qemu-test/src/dtc/tests/char_literal.c DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c DEP /tmp/qemu-test/src/dtc/tests/get_path.c
DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c DEP /tmp/qemu-test/src/dtc/tests/getprop.c
DEP /tmp/qemu-test/src/dtc/tests/get_name.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset.c DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c DEP /tmp/qemu-test/src/dtc/tests/find_property.c DEP /tmp/qemu-test/src/dtc/tests/root_node.c
DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
DEP /tmp/qemu-test/src/dtc/util.c
DEP /tmp/qemu-test/src/dtc/fdtget.c
DEP /tmp/qemu-test/src/dtc/fdtput.c
DEP /tmp/qemu-test/src/dtc/fdtdump.c
LEX convert-dtsv0-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/srcpos.c
BISON dtc-parser.tab.c
DEP /tmp/qemu-test/src/dtc/treesource.c
LEX dtc-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/livetree.c
DEP /tmp/qemu-test/src/dtc/fstree.c
DEP /tmp/qemu-test/src/dtc/flattree.c
DEP /tmp/qemu-test/src/dtc/dtc.c
DEP /tmp/qemu-test/src/dtc/data.c
DEP /tmp/qemu-test/src/dtc/checks.c
DEP convert-dtsv0-lexer.lex.c
DEP dtc-parser.tab.c
DEP dtc-lexer.lex.c
CHK version_gen.h
UPD version_gen.h
DEP /tmp/qemu-test/src/dtc/util.c
CC libfdt/fdt.o
CC libfdt/fdt_ro.o
CC libfdt/fdt_sw.o
CC libfdt/fdt_wip.o
CC libfdt/fdt_rw.o
CC libfdt/fdt_strerror.o
CC libfdt/fdt_addresses.o
CC libfdt/fdt_empty_tree.o
CC libfdt/fdt_overlay.o
AR libfdt/libfdt.a
ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
mkdir -p dtc/libfdt
mkdir -p dtc/tests
CC tests/qemu-iotests/socket_scm_helper.o GEN qga/qapi-generated/qga-qapi-types.h GEN qga/qapi-generated/qga-qmp-commands.h GEN qga/qapi-generated/qga-qapi-types.c GEN qga/qapi-generated/qga-qapi-visit.c GEN qga/qapi-generated/qga-qmp-marshal.c CC qmp-introspect.o GEN qga/qapi-generated/qga-qapi-visit.h CC qapi-types.o CC qapi-visit.o CC qapi-event.o CC qapi/qapi-visit-core.o CC qapi/qapi-dealloc-visitor.o CC qapi/qobject-output-visitor.o CC qapi/qmp-registry.o CC qapi/qobject-input-visitor.o CC qapi/qmp-dispatch.o CC qapi/string-input-visitor.o CC qapi/string-output-visitor.o CC qapi/opts-visitor.o CC qapi/qapi-clone-visitor.o CC qapi/qmp-event.o CC qapi/qapi-util.o CC qobject/qnull.o CC qobject/qnum.o CC qobject/qstring.o CC qobject/qdict.o CC qobject/qlist.o CC qobject/qbool.o CC qobject/qlit.o CC qobject/qjson.o CC qobject/json-lexer.o CC qobject/qobject.o CC qobject/json-streamer.o CC qobject/json-parser.o CC trace/control.o CC trace/qmp.o CC util/osdep.o CC util/cutils.o CC util/unicode.o CC util/qemu-timer-common.o CC util/bufferiszero.o CC util/lockcnt.o CC util/async.o CC util/aiocb.o CC util/thread-pool.o CC util/qemu-timer.o CC util/main-loop.o CC util/iohandler.o CC util/aio-posix.o CC util/compatfd.o CC util/event_notifier-posix.o CC util/mmap-alloc.o CC util/oslib-posix.o CC util/qemu-openpty.o CC util/qemu-thread-posix.o CC util/memfd.o CC util/envlist.o CC util/path.o CC util/module.o CC util/host-utils.o CC util/bitmap.o CC util/bitops.o CC util/hbitmap.o CC util/fifo8.o CC util/acl.o CC util/cacheinfo.o CC util/qemu-error.o CC util/error.o CC util/id.o CC util/iov.o CC util/qemu-config.o CC util/qemu-sockets.o CC util/uri.o CC util/qemu-option.o CC util/notify.o CC util/qemu-progress.o CC util/keyval.o CC util/hexdump.o CC util/crc32c.o CC util/uuid.o CC util/throttle.o CC util/getauxval.o CC util/readline.o CC util/rcu.o CC util/qemu-coroutine.o CC util/qemu-coroutine-lock.o CC util/qemu-coroutine-sleep.o CC util/qemu-coroutine-io.o CC util/coroutine-ucontext.o CC util/buffer.o CC util/base64.o CC util/timed-average.o CC util/log.o CC util/pagesize.o CC util/qht.o CC util/qdist.o CC util/range.o CC util/stats64.o CC util/systemd.o CC trace-root.o CC util/trace.o CC crypto/trace.o CC io/trace.o CC migration/trace.o CC block/trace.o CC chardev/trace.o CC hw/block/dataplane/trace.o CC hw/block/trace.o CC hw/char/trace.o CC hw/net/trace.o CC hw/intc/trace.o CC hw/virtio/trace.o CC hw/audio/trace.o CC hw/misc/trace.o CC hw/usb/trace.o CC hw/scsi/trace.o CC hw/nvram/trace.o CC hw/display/trace.o CC hw/input/trace.o CC hw/dma/trace.o CC hw/timer/trace.o CC hw/sparc/trace.o CC hw/sd/trace.o CC hw/isa/trace.o CC hw/mem/trace.o CC hw/i386/trace.o CC hw/i386/xen/trace.o CC hw/9pfs/trace.o CC hw/ppc/trace.o CC hw/pci/trace.o CC hw/vfio/trace.o CC hw/s390x/trace.o CC hw/acpi/trace.o CC hw/arm/trace.o CC hw/alpha/trace.o CC hw/ide/trace.o CC hw/xen/trace.o CC audio/trace.o CC ui/trace.o CC net/trace.o CC target/arm/trace.o CC target/i386/trace.o CC target/mips/trace.o CC target/sparc/trace.o CC target/s390x/trace.o CC target/ppc/trace.o CC qom/trace.o CC linux-user/trace.o CC qapi/trace.o CC accel/tcg/trace.o CC accel/kvm/trace.o CC nbd/trace.o CC scsi/trace.o CC crypto/pbkdf-stub.o CC stubs/arch-query-cpu-def.o CC stubs/arch-query-cpu-model-expansion.o CC stubs/arch-query-cpu-model-comparison.o CC stubs/arch-query-cpu-model-baseline.o CC stubs/bdrv-next-monitor-owned.o CC stubs/blk-commit-all.o CC stubs/blockdev-close-all-bdrv-states.o CC stubs/clock-warp.o CC stubs/cpu-get-clock.o CC stubs/dump.o CC stubs/cpu-get-icount.o CC stubs/error-printf.o CC stubs/fdset.o CC stubs/gdbstub.o CC stubs/get-vm-name.o CC stubs/iothread.o CC stubs/iothread-lock.o CC stubs/machine-init-done.o CC stubs/is-daemonized.o CC stubs/migr-blocker.o CC stubs/change-state-handler.o CC stubs/monitor.o CC stubs/replay.o CC stubs/notify-event.o CC stubs/qtest.o CC stubs/runstate-check.o CC stubs/set-fd-handler.o CC stubs/slirp.o CC stubs/sysbus.o CC stubs/trace-control.o CC stubs/tpm.o CC stubs/uuid.o CC stubs/vmstate.o CC stubs/vm-stop.o CC stubs/qmp_pc_dimm.o CC stubs/target-monitor-defs.o CC stubs/target-get-monitor-def.o CC stubs/pc_madt_cpu_entry.o CC stubs/vmgenid.o CC stubs/xen-common.o CC stubs/xen-hvm.o CC stubs/pci-host-piix.o CC contrib/ivshmem-client/ivshmem-client.o CC contrib/ivshmem-client/main.o CC contrib/ivshmem-server/ivshmem-server.o CC contrib/ivshmem-server/main.o CC qemu-nbd.o CC block.o CC blockjob.o CC qemu-io-cmds.o CC replication.o CC block/qcow.o CC block/raw-format.o CC block/vdi.o CC block/vmdk.o CC block/cloop.o CC block/bochs.o CC block/vpc.o CC block/vvfat.o CC block/dmg.o CC block/qcow2-refcount.o CC block/qcow2-cluster.o CC block/qcow2-snapshot.o CC block/qcow2.o CC block/qcow2-cache.o CC block/qed.o CC block/qcow2-bitmap.o CC block/qed-table.o CC block/qed-l2-cache.o CC block/qed-cluster.o CC block/qed-check.o CC block/vhdx.o CC block/vhdx-log.o CC block/vhdx-endian.o CC block/quorum.o CC block/parallels.o CC block/blkdebug.o CC block/blkverify.o CC block/blkreplay.o CC block/block-backend.o CC block/snapshot.o CC block/qapi.o CC block/file-posix.o CC block/mirror.o CC block/null.o CC block/commit.o CC block/io.o CC block/throttle-groups.o CC block/nbd.o CC block/nbd-client.o CC block/sheepdog.o CC block/accounting.o CC block/dirty-bitmap.o CC block/write-threshold.o CC block/backup.o CC block/replication.o CC block/throttle.o CC nbd/server.o CC block/crypto.o CC nbd/client.o CC nbd/common.o CC scsi/utils.o CC scsi/pr-manager.o CC scsi/pr-manager-helper.o CC block/dmg-bz2.o CC crypto/init.o CC crypto/hash.o CC crypto/hash-glib.o CC crypto/hmac.o CC crypto/hmac-glib.o CC crypto/aes.o CC crypto/desrfb.o CC crypto/tlscreds.o CC crypto/cipher.o CC crypto/tlscredsanon.o CC crypto/tlscredsx509.o CC crypto/tlssession.o CC crypto/secret.o CC crypto/random-platform.o CC crypto/pbkdf.o CC crypto/ivgen.o CC crypto/ivgen-essiv.o CC crypto/ivgen-plain.o CC crypto/ivgen-plain64.o CC crypto/afsplit.o CC crypto/xts.o CC crypto/block.o CC crypto/block-luks.o CC crypto/block-qcow.o CC io/channel-buffer.o CC io/channel.o CC io/channel-command.o CC io/channel-socket.o CC io/channel-file.o CC io/channel-watch.o CC io/channel-tls.o CC io/channel-websock.o CC io/channel-util.o CC io/dns-resolver.o CC io/net-listener.o CC io/task.o CC qom/object.o CC qom/container.o CC qom/qom-qobject.o CC qom/object_interfaces.o GEN qemu-img-cmds.h CC qemu-io.o CC scsi/qemu-pr-helper.o CC qemu-bridge-helper.o CC blockdev.o CC blockdev-nbd.o CC bootdevice.o CC iothread.o CC qdev-monitor.o CC device-hotplug.o CC os-posix.o CC bt-host.o CC bt-vhci.o CC dma-helpers.o CC vl.o CC tpm.o CC device_tree.o CC qmp-marshal.o CC qmp.o CC hmp.o CC cpus-common.o CC audio/audio.o CC audio/noaudio.o CC audio/wavaudio.o CC audio/mixeng.o CC audio/sdlaudio.o CC audio/ossaudio.o CC audio/spiceaudio.o CC audio/wavcapture.o CC backends/rng.o CC backends/rng-egd.o CC backends/rng-random.o CC backends/tpm.o CC backends/hostmem.o CC backends/hostmem-ram.o CC backends/hostmem-file.o CC backends/cryptodev.o CC backends/cryptodev-builtin.o CC block/stream.o CC chardev/msmouse.o CC chardev/wctablet.o CC chardev/testdev.o CC chardev/spice.o CC disas/arm.o CC disas/i386.o CC fsdev/qemu-fsdev-dummy.o CC fsdev/qemu-fsdev-opts.o CC fsdev/qemu-fsdev-throttle.o CC hw/acpi/core.o CC hw/acpi/piix4.o CC hw/acpi/ich9.o CC hw/acpi/tco.o CC hw/acpi/cpu_hotplug.o CC hw/acpi/pcihp.o CC hw/acpi/memory_hotplug.o CC hw/acpi/cpu.o CC hw/acpi/nvdimm.o CC hw/acpi/vmgenid.o CC hw/acpi/acpi_interface.o CC hw/acpi/bios-linker-loader.o CC hw/acpi/aml-build.o CC hw/acpi/ipmi.o CC hw/acpi/acpi-stub.o CC hw/acpi/ipmi-stub.o CC hw/audio/sb16.o CC hw/audio/es1370.o CC hw/audio/ac97.o CC hw/audio/fmopl.o CC hw/audio/adlib.o CC hw/audio/gus.o CC hw/audio/gusemu_hal.o CC hw/audio/gusemu_mixer.o CC hw/audio/cs4231a.o CC hw/audio/intel-hda.o CC hw/audio/hda-codec.o CC hw/audio/pcspk.o CC hw/audio/wm8750.o CC hw/audio/pl041.o CC hw/audio/lm4549.o CC hw/audio/marvell_88w8618.o CC hw/audio/soundhw.o CC hw/block/block.o CC hw/block/cdrom.o CC hw/block/hd-geometry.o CC hw/block/fdc.o CC hw/block/m25p80.o CC hw/block/nand.o CC hw/block/pflash_cfi01.o CC hw/block/pflash_cfi02.o CC hw/block/xen_disk.o CC hw/block/ecc.o CC hw/block/onenand.o CC hw/bt/core.o CC hw/bt/l2cap.o CC hw/block/nvme.o CC hw/bt/sdp.o CC hw/bt/hci.o CC hw/bt/hid.o CC hw/bt/hci-csr.o CC hw/char/ipoctal232.o CC hw/char/parallel.o CC hw/char/pl011.o CC hw/char/serial.o CC hw/char/serial-isa.o CC hw/char/serial-pci.o CC hw/char/virtio-console.o CC hw/char/xen_console.o CC hw/char/cadence_uart.o
/tmp/qemu-test/src/hw/block/fdc.c:63: error: redefinition of typedef 'FDCtrl' /tmp/qemu-test/src/include/hw/block/fdc.h:11: note: previous declaration of 'FDCtrl' was here
make: *** [hw/block/fdc.o] Error 1
make: *** Waiting for unfinished jobs....
CC hw/char/cmsdk-apb-uart.o
Traceback (most recent call last):
File "./tests/docker/docker.py", line 407, in <module>
sys.exit(main())
File "./tests/docker/docker.py", line 404, in main
return args.cmdobj.run(args, argv)
File "./tests/docker/docker.py", line 261, in run
return Docker().run(argv, args.keep, quiet=args.quiet)
File "./tests/docker/docker.py", line 229, in run
quiet=quiet)
File "./tests/docker/docker.py", line 147, in _do_check
return subprocess.check_call(self._command + cmd, **kwargs)
File "/usr/lib64/python2.7/subprocess.py", line 186, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['docker', 'run', '--label', 'com.qemu.instance.uuid=3df20bfce24211e786ff52540069c830', '-u', '0', '--security-opt', 'seccomp=unconfined', '--rm', '--net=none', '-e', 'TARGET_LIST=', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=8', '-e', 'DEBUG=', '-e', 'SHOW_ENV=1', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/root/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-y08d_lmb/src/docker-src.2017-12-16-04.19.28.29808:/var/tmp/qemu:z,ro', 'qemu:centos6', '/var/tmp/qemu/run', 'test-quick']' returned non-zero exit status 2 make[1]: *** [tests/docker/Makefile.include:129: docker-run] Error 1
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-y08d_lmb/src'
make: *** [tests/docker/Makefile.include:163: docker-run-test-quick@centos6] Error 2
real 2m3.517s
user 0m5.255s
sys 0m4.458s
=== OUTPUT END ===
Test command exited with code: 2
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to [email protected]