- Use more CONFIG Makefile switches for qtests
- Get rid of global_qtests in some more qtests - typedef cleanups - Fixes for compiling with Clang - Force C standard to gnu99 - Don't use -nographic in qtests -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQIcBAABAgAGBQJcRrXBAAoJEC7Z13T+cC21wq0P/jpawNBkGvBje8wEi/8hcAzw iacZePdBjbVUhSAE7JAc+SqZQgvirjYVP3j6f1u15S5FmTpGNhbcyKUrQbtFn9cg inOr5kYtoj3k9g6YPb2WD7zXX5RW6AzgjORTZnlRi0eWemfW0BKPHV0TLs9JxtAR 08k4JgGksx4itrh+Y7h9T0iorBByCvnevFPiRQThcf82DP3J9HhdKCtOAN/jVIb6 HDb5dNMMkvy4lO7tgYZUHWVwO4t2Hh/5upDsp28Tlsx3Bw3e0vdPm2fkGpmp77U2 O7GDkxKJrPBw4VvNSxh9piVM8vWovIvO0irPao8H7ZcRFQXBiPsV/DTbmXei2YUV j3c7s4TFerbIYHKRphUmY2ok6VClaZQPs+vl7QU6BXQLEgS+aVKfIoLOxHpOOPcq x11ppsreWxZ3FQWIBgeV4CicO7l3eS8m/l9qIbesb3ChBeWR8DeriQ+a/lQ7gHLt rGemVuvpzIIHDj8vwJhpzOI6ecJB4ucA9aA67dMET57pic74uabS/LnqmNs88vYH nHT2gPZbzZCRg2wsP8RcAV4aooYqwMpKvuxBwbXgQC4UUjLtq6NPQIcwRVRr73dF 6xoB1M9THPr/N5SrCSH4b2mB3exJrzBTu/cjFqwileW62zYF8G2dhgKAVWASghJi 0ecexmiZOl3XH9GXXbGL =X/Yb -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2019-01-22' into staging - Use more CONFIG Makefile switches for qtests - Get rid of global_qtests in some more qtests - typedef cleanups - Fixes for compiling with Clang - Force C standard to gnu99 - Don't use -nographic in qtests # gpg: Signature made Tue 22 Jan 2019 06:18:41 GMT # gpg: using RSA key 2ED9D774FE702DB5 # gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" # gpg: aka "Thomas Huth <thuth@redhat.com>" # gpg: aka "Thomas Huth <huth@tuxfamily.org>" # gpg: aka "Thomas Huth <th.huth@posteo.de>" # Primary key fingerprint: 27B8 8847 EEE0 2501 18F3 EAB9 2ED9 D774 FE70 2DB5 * remotes/huth-gitlab/tags/pull-request-2019-01-22: (26 commits) tests: remove rule for nonexisting qdev-monitor-test tests/hexloader-test: Don't pass -nographic to the QEMU under test configure: Force the C standard to gnu99 seccomp: Work-around GCC 4.x bug in gnu99 mode block: Work-around a bug in libiscsi 1.9.0 when used in gnu99 mode linux-user: Fix compilation with clang 3.4 virtio-net: Fix VirtIONet typedef redefinition ppc: Fix duplicated typedefs to be able to compile with Clang in gnu99 mode ppc: Move spapr-related prototypes from xics.h into a seperate header file ui/console: Remove PixelFormat from qemu/typedefs.h ui/console: Remove MouseTransformInfo from qemu/typedefs.h ui/console: Remove DisplayState/DisplaySurface from "qemu/typedefs.h" ui/console: Remove QemuDmaBuf from "qemu/typedefs.h" audio: Remove AudioState from "qemu/typedefs.h" hw/i386: Remove PCMachineClass from "qemu/typedefs.h" hw/char/serial: Remove SerialState from "qemu/typedefs.h" hw/bt: Remove HCIInfo from "qemu/typedefs.h" hw/i2c/smbus: Remove SMBusDevice from "qemu/typedefs.h" hw/ide/ahci: Remove AllwinnerAHCIState from "qemu/typedefs.h" hw/pcmcia: Remove PCMCIACardState from "qemu/typedefs.h" ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
851aa0a5a8
|
@ -191,7 +191,7 @@ struct SWVoiceCap {
|
||||||
QLIST_ENTRY (SWVoiceCap) entries;
|
QLIST_ENTRY (SWVoiceCap) entries;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct AudioState {
|
typedef struct AudioState {
|
||||||
struct audio_driver *drv;
|
struct audio_driver *drv;
|
||||||
void *drv_opaque;
|
void *drv_opaque;
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ struct AudioState {
|
||||||
int nb_hw_voices_out;
|
int nb_hw_voices_out;
|
||||||
int nb_hw_voices_in;
|
int nb_hw_voices_in;
|
||||||
int vm_running;
|
int vm_running;
|
||||||
};
|
} AudioState;
|
||||||
|
|
||||||
extern const struct mixeng_volume nominal_volume;
|
extern const struct mixeng_volume nominal_volume;
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,9 @@
|
||||||
/* Conflict between scsi/utils.h and libiscsi! :( */
|
/* Conflict between scsi/utils.h and libiscsi! :( */
|
||||||
#define SCSI_XFER_NONE ISCSI_XFER_NONE
|
#define SCSI_XFER_NONE ISCSI_XFER_NONE
|
||||||
#include <iscsi/iscsi.h>
|
#include <iscsi/iscsi.h>
|
||||||
|
#define inline __attribute__((gnu_inline)) /* required for libiscsi v1.9.0 */
|
||||||
#include <iscsi/scsi-lowlevel.h>
|
#include <iscsi/scsi-lowlevel.h>
|
||||||
|
#undef inline
|
||||||
#undef SCSI_XFER_NONE
|
#undef SCSI_XFER_NONE
|
||||||
QEMU_BUILD_BUG_ON((int)SCSI_XFER_NONE != (int)ISCSI_XFER_NONE);
|
QEMU_BUILD_BUG_ON((int)SCSI_XFER_NONE != (int)ISCSI_XFER_NONE);
|
||||||
|
|
||||||
|
|
5
configure
vendored
5
configure
vendored
|
@ -107,6 +107,9 @@ update_cxxflags() {
|
||||||
-Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
|
-Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
|
||||||
-Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
|
-Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
|
||||||
;;
|
;;
|
||||||
|
-std=gnu99)
|
||||||
|
QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }"-std=gnu++98"
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
|
QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
|
||||||
;;
|
;;
|
||||||
|
@ -584,7 +587,7 @@ ARFLAGS="${ARFLAGS-rv}"
|
||||||
# left shift of signed integers is well defined and has the expected
|
# left shift of signed integers is well defined and has the expected
|
||||||
# 2s-complement style results. (Both clang and gcc agree that it
|
# 2s-complement style results. (Both clang and gcc agree that it
|
||||||
# provides these semantics.)
|
# provides these semantics.)
|
||||||
QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
|
QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv -std=gnu99 $QEMU_CFLAGS"
|
||||||
QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
|
QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
|
||||||
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
|
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
|
||||||
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
|
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include "sysemu/kvm.h"
|
#include "sysemu/kvm.h"
|
||||||
#include "hw/ppc/spapr.h"
|
#include "hw/ppc/spapr.h"
|
||||||
#include "hw/ppc/xics.h"
|
#include "hw/ppc/xics.h"
|
||||||
|
#include "hw/ppc/xics_spapr.h"
|
||||||
#include "kvm_ppc.h"
|
#include "kvm_ppc.h"
|
||||||
#include "qemu/config-file.h"
|
#include "qemu/config-file.h"
|
||||||
#include "qemu/error-report.h"
|
#include "qemu/error-report.h"
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include "qemu/timer.h"
|
#include "qemu/timer.h"
|
||||||
#include "hw/ppc/spapr.h"
|
#include "hw/ppc/spapr.h"
|
||||||
#include "hw/ppc/xics.h"
|
#include "hw/ppc/xics.h"
|
||||||
|
#include "hw/ppc/xics_spapr.h"
|
||||||
#include "hw/ppc/fdt.h"
|
#include "hw/ppc/fdt.h"
|
||||||
#include "qapi/visitor.h"
|
#include "qapi/visitor.h"
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include "hw/ppc/spapr.h"
|
#include "hw/ppc/spapr.h"
|
||||||
#include "hw/ppc/spapr_xive.h"
|
#include "hw/ppc/spapr_xive.h"
|
||||||
#include "hw/ppc/xics.h"
|
#include "hw/ppc/xics.h"
|
||||||
|
#include "hw/ppc/xics_spapr.h"
|
||||||
#include "sysemu/kvm.h"
|
#include "sysemu/kvm.h"
|
||||||
|
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
#include "exec/memory.h"
|
#include "exec/memory.h"
|
||||||
#include "target/arm/cpu-qom.h"
|
#include "target/arm/cpu-qom.h"
|
||||||
|
#include "hw/pcmcia.h"
|
||||||
|
|
||||||
/* Interrupt numbers */
|
/* Interrupt numbers */
|
||||||
# define PXA2XX_PIC_SSP3 0
|
# define PXA2XX_PIC_SSP3 0
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
#define UART_FIFO_LENGTH 16 /* 16550A Fifo Length */
|
#define UART_FIFO_LENGTH 16 /* 16550A Fifo Length */
|
||||||
|
|
||||||
struct SerialState {
|
typedef struct SerialState {
|
||||||
uint16_t divider;
|
uint16_t divider;
|
||||||
uint8_t rbr; /* receive register */
|
uint8_t rbr; /* receive register */
|
||||||
uint8_t thr; /* transmit holding register */
|
uint8_t thr; /* transmit holding register */
|
||||||
|
@ -77,7 +77,7 @@ struct SerialState {
|
||||||
|
|
||||||
QEMUTimer *modem_status_poll;
|
QEMUTimer *modem_status_poll;
|
||||||
MemoryRegion io;
|
MemoryRegion io;
|
||||||
};
|
} SerialState;
|
||||||
|
|
||||||
extern const VMStateDescription vmstate_serial;
|
extern const VMStateDescription vmstate_serial;
|
||||||
extern const MemoryRegionOps serial_io_ops;
|
extern const MemoryRegionOps serial_io_ops;
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
/* Devices that have nowhere better to go. */
|
/* Devices that have nowhere better to go. */
|
||||||
|
|
||||||
#include "hw/hw.h"
|
#include "hw/hw.h"
|
||||||
|
#include "ui/console.h"
|
||||||
|
|
||||||
/* smc91c111.c */
|
/* smc91c111.c */
|
||||||
void smc91c111_init(NICInfo *, uint32_t, qemu_irq);
|
void smc91c111_init(NICInfo *, uint32_t, qemu_irq);
|
||||||
|
|
|
@ -35,6 +35,8 @@
|
||||||
#define SMBUS_DEVICE_GET_CLASS(obj) \
|
#define SMBUS_DEVICE_GET_CLASS(obj) \
|
||||||
OBJECT_GET_CLASS(SMBusDeviceClass, (obj), TYPE_SMBUS_DEVICE)
|
OBJECT_GET_CLASS(SMBusDeviceClass, (obj), TYPE_SMBUS_DEVICE)
|
||||||
|
|
||||||
|
typedef struct SMBusDevice SMBusDevice;
|
||||||
|
|
||||||
typedef struct SMBusDeviceClass
|
typedef struct SMBusDeviceClass
|
||||||
{
|
{
|
||||||
I2CSlaveClass parent_class;
|
I2CSlaveClass parent_class;
|
||||||
|
|
|
@ -96,7 +96,7 @@ struct PCMachineState {
|
||||||
* way we can use 1GByte pages in the host.
|
* way we can use 1GByte pages in the host.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
struct PCMachineClass {
|
typedef struct PCMachineClass {
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
MachineClass parent_class;
|
MachineClass parent_class;
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ struct PCMachineClass {
|
||||||
|
|
||||||
/* use DMA capable linuxboot option rom */
|
/* use DMA capable linuxboot option rom */
|
||||||
bool linuxboot_dma_enabled;
|
bool linuxboot_dma_enabled;
|
||||||
};
|
} PCMachineClass;
|
||||||
|
|
||||||
#define TYPE_PC_MACHINE "generic-pc-machine"
|
#define TYPE_PC_MACHINE "generic-pc-machine"
|
||||||
#define PC_MACHINE(obj) \
|
#define PC_MACHINE(obj) \
|
||||||
|
|
|
@ -73,13 +73,13 @@ typedef struct SysbusAHCIState {
|
||||||
#define ALLWINNER_AHCI_MMIO_OFF 0x80
|
#define ALLWINNER_AHCI_MMIO_OFF 0x80
|
||||||
#define ALLWINNER_AHCI_MMIO_SIZE 0x80
|
#define ALLWINNER_AHCI_MMIO_SIZE 0x80
|
||||||
|
|
||||||
struct AllwinnerAHCIState {
|
typedef struct AllwinnerAHCIState {
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
SysbusAHCIState parent_obj;
|
SysbusAHCIState parent_obj;
|
||||||
/*< public >*/
|
/*< public >*/
|
||||||
|
|
||||||
MemoryRegion mmio;
|
MemoryRegion mmio;
|
||||||
uint32_t regs[ALLWINNER_AHCI_MMIO_SIZE/4];
|
uint32_t regs[ALLWINNER_AHCI_MMIO_SIZE/4];
|
||||||
};
|
} AllwinnerAHCIState;
|
||||||
|
|
||||||
#endif /* HW_IDE_AHCI_H */
|
#endif /* HW_IDE_AHCI_H */
|
||||||
|
|
|
@ -31,6 +31,8 @@
|
||||||
#define PS2_MOUSE_BUTTON_SIDE 0x08
|
#define PS2_MOUSE_BUTTON_SIDE 0x08
|
||||||
#define PS2_MOUSE_BUTTON_EXTRA 0x10
|
#define PS2_MOUSE_BUTTON_EXTRA 0x10
|
||||||
|
|
||||||
|
typedef struct PS2State PS2State;
|
||||||
|
|
||||||
/* ps2.c */
|
/* ps2.c */
|
||||||
void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg);
|
void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg);
|
||||||
void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg);
|
void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg);
|
||||||
|
|
|
@ -18,13 +18,13 @@ typedef struct PCMCIASocket {
|
||||||
#define PCMCIA_CARD_CLASS(cls) \
|
#define PCMCIA_CARD_CLASS(cls) \
|
||||||
OBJECT_CLASS_CHECK(PCMCIACardClass, cls, TYPE_PCMCIA_CARD)
|
OBJECT_CLASS_CHECK(PCMCIACardClass, cls, TYPE_PCMCIA_CARD)
|
||||||
|
|
||||||
struct PCMCIACardState {
|
typedef struct PCMCIACardState {
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
DeviceState parent_obj;
|
DeviceState parent_obj;
|
||||||
/*< public >*/
|
/*< public >*/
|
||||||
|
|
||||||
PCMCIASocket *slot;
|
PCMCIASocket *slot;
|
||||||
};
|
} PCMCIACardState;
|
||||||
|
|
||||||
typedef struct PCMCIACardClass {
|
typedef struct PCMCIACardClass {
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
|
|
|
@ -8,15 +8,16 @@
|
||||||
#include "hw/mem/pc-dimm.h"
|
#include "hw/mem/pc-dimm.h"
|
||||||
#include "hw/ppc/spapr_ovec.h"
|
#include "hw/ppc/spapr_ovec.h"
|
||||||
#include "hw/ppc/spapr_irq.h"
|
#include "hw/ppc/spapr_irq.h"
|
||||||
|
#include "hw/ppc/spapr_xive.h" /* For sPAPRXive */
|
||||||
|
#include "hw/ppc/xics.h" /* For ICSState */
|
||||||
|
|
||||||
struct VIOsPAPRBus;
|
struct VIOsPAPRBus;
|
||||||
struct sPAPRPHBState;
|
struct sPAPRPHBState;
|
||||||
struct sPAPRNVRAM;
|
struct sPAPRNVRAM;
|
||||||
|
|
||||||
typedef struct sPAPREventLogEntry sPAPREventLogEntry;
|
typedef struct sPAPREventLogEntry sPAPREventLogEntry;
|
||||||
typedef struct sPAPREventSource sPAPREventSource;
|
typedef struct sPAPREventSource sPAPREventSource;
|
||||||
typedef struct sPAPRPendingHPT sPAPRPendingHPT;
|
typedef struct sPAPRPendingHPT sPAPRPendingHPT;
|
||||||
typedef struct ICSState ICSState;
|
|
||||||
typedef struct sPAPRXive sPAPRXive;
|
|
||||||
|
|
||||||
#define HPTE64_V_HPTE_DIRTY 0x0000000000000040ULL
|
#define HPTE64_V_HPTE_DIRTY 0x0000000000000040ULL
|
||||||
#define SPAPR_ENTRY_POINT 0x100
|
#define SPAPR_ENTRY_POINT 0x100
|
||||||
|
|
|
@ -41,8 +41,6 @@ bool spapr_xive_irq_claim(sPAPRXive *xive, uint32_t lisn, bool lsi);
|
||||||
bool spapr_xive_irq_free(sPAPRXive *xive, uint32_t lisn);
|
bool spapr_xive_irq_free(sPAPRXive *xive, uint32_t lisn);
|
||||||
void spapr_xive_pic_print_info(sPAPRXive *xive, Monitor *mon);
|
void spapr_xive_pic_print_info(sPAPRXive *xive, Monitor *mon);
|
||||||
|
|
||||||
typedef struct sPAPRMachineState sPAPRMachineState;
|
|
||||||
|
|
||||||
void spapr_xive_hcall_init(sPAPRMachineState *spapr);
|
void spapr_xive_hcall_init(sPAPRMachineState *spapr);
|
||||||
void spapr_dt_xive(sPAPRMachineState *spapr, uint32_t nr_servers, void *fdt,
|
void spapr_dt_xive(sPAPRMachineState *spapr, uint32_t nr_servers, void *fdt,
|
||||||
uint32_t phandle);
|
uint32_t phandle);
|
||||||
|
|
|
@ -200,13 +200,6 @@ void ics_pic_print_info(ICSState *ics, Monitor *mon);
|
||||||
void ics_resend(ICSState *ics);
|
void ics_resend(ICSState *ics);
|
||||||
void icp_resend(ICPState *ss);
|
void icp_resend(ICPState *ss);
|
||||||
|
|
||||||
typedef struct sPAPRMachineState sPAPRMachineState;
|
|
||||||
|
|
||||||
void spapr_dt_xics(sPAPRMachineState *spapr, uint32_t nr_servers, void *fdt,
|
|
||||||
uint32_t phandle);
|
|
||||||
int xics_kvm_init(sPAPRMachineState *spapr, Error **errp);
|
|
||||||
void xics_spapr_init(sPAPRMachineState *spapr);
|
|
||||||
|
|
||||||
Object *icp_create(Object *cpu, const char *type, XICSFabric *xi,
|
Object *icp_create(Object *cpu, const char *type, XICSFabric *xi,
|
||||||
Error **errp);
|
Error **errp);
|
||||||
|
|
||||||
|
|
37
include/hw/ppc/xics_spapr.h
Normal file
37
include/hw/ppc/xics_spapr.h
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
/*
|
||||||
|
* QEMU PowerPC pSeries Logical Partition (aka sPAPR) hardware System Emulator
|
||||||
|
*
|
||||||
|
* PAPR Virtualized Interrupt System, aka ICS/ICP aka xics
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010, 2011 David Gibson, IBM Corporation.
|
||||||
|
*
|
||||||
|
* 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 XICS_SPAPR_H
|
||||||
|
#define XICS_SPAPR_H
|
||||||
|
|
||||||
|
#include "hw/ppc/spapr.h"
|
||||||
|
|
||||||
|
void spapr_dt_xics(sPAPRMachineState *spapr, uint32_t nr_servers, void *fdt,
|
||||||
|
uint32_t phandle);
|
||||||
|
int xics_kvm_init(sPAPRMachineState *spapr, Error **errp);
|
||||||
|
void xics_spapr_init(sPAPRMachineState *spapr);
|
||||||
|
|
||||||
|
#endif /* XICS_SPAPR_H */
|
|
@ -106,7 +106,6 @@ typedef struct VirtioNetRscSeg {
|
||||||
NetClientState *nc;
|
NetClientState *nc;
|
||||||
} VirtioNetRscSeg;
|
} VirtioNetRscSeg;
|
||||||
|
|
||||||
struct VirtIONet;
|
|
||||||
typedef struct VirtIONet VirtIONet;
|
typedef struct VirtIONet VirtIONet;
|
||||||
|
|
||||||
/* Chain is divided by protocol(ipv4/v6) and NetClientInfo */
|
/* Chain is divided by protocol(ipv4/v6) and NetClientInfo */
|
||||||
|
@ -136,7 +135,7 @@ typedef struct VirtIONetQueue {
|
||||||
struct VirtIONet *n;
|
struct VirtIONet *n;
|
||||||
} VirtIONetQueue;
|
} VirtIONetQueue;
|
||||||
|
|
||||||
typedef struct VirtIONet {
|
struct VirtIONet {
|
||||||
VirtIODevice parent_obj;
|
VirtIODevice parent_obj;
|
||||||
uint8_t mac[ETH_ALEN];
|
uint8_t mac[ETH_ALEN];
|
||||||
uint16_t status;
|
uint16_t status;
|
||||||
|
@ -186,7 +185,7 @@ typedef struct VirtIONet {
|
||||||
int announce_counter;
|
int announce_counter;
|
||||||
bool needs_vnet_hdr_swap;
|
bool needs_vnet_hdr_swap;
|
||||||
bool mtu_bypass_backend;
|
bool mtu_bypass_backend;
|
||||||
} VirtIONet;
|
};
|
||||||
|
|
||||||
void virtio_net_set_netclient_name(VirtIONet *n, const char *name,
|
void virtio_net_set_netclient_name(VirtIONet *n, const char *name,
|
||||||
const char *type);
|
const char *type);
|
||||||
|
|
|
@ -113,6 +113,10 @@
|
||||||
#define GCC_FMT_ATTR(n, m)
|
#define GCC_FMT_ATTR(n, m)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __has_warning
|
||||||
|
#define __has_warning(x) 0 /* compatibility with non-clang compilers */
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __has_feature
|
#ifndef __has_feature
|
||||||
#define __has_feature(x) 0 /* compatibility with non-clang compilers */
|
#define __has_feature(x) 0 /* compatibility with non-clang compilers */
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -8,8 +8,6 @@
|
||||||
typedef struct AdapterInfo AdapterInfo;
|
typedef struct AdapterInfo AdapterInfo;
|
||||||
typedef struct AddressSpace AddressSpace;
|
typedef struct AddressSpace AddressSpace;
|
||||||
typedef struct AioContext AioContext;
|
typedef struct AioContext AioContext;
|
||||||
typedef struct AllwinnerAHCIState AllwinnerAHCIState;
|
|
||||||
typedef struct AudioState AudioState;
|
|
||||||
typedef struct BdrvDirtyBitmap BdrvDirtyBitmap;
|
typedef struct BdrvDirtyBitmap BdrvDirtyBitmap;
|
||||||
typedef struct BdrvDirtyBitmapIter BdrvDirtyBitmapIter;
|
typedef struct BdrvDirtyBitmapIter BdrvDirtyBitmapIter;
|
||||||
typedef struct BlockBackend BlockBackend;
|
typedef struct BlockBackend BlockBackend;
|
||||||
|
@ -26,8 +24,6 @@ typedef struct DeviceListener DeviceListener;
|
||||||
typedef struct DeviceState DeviceState;
|
typedef struct DeviceState DeviceState;
|
||||||
typedef struct DirtyBitmapSnapshot DirtyBitmapSnapshot;
|
typedef struct DirtyBitmapSnapshot DirtyBitmapSnapshot;
|
||||||
typedef struct DisplayChangeListener DisplayChangeListener;
|
typedef struct DisplayChangeListener DisplayChangeListener;
|
||||||
typedef struct DisplayState DisplayState;
|
|
||||||
typedef struct DisplaySurface DisplaySurface;
|
|
||||||
typedef struct DriveInfo DriveInfo;
|
typedef struct DriveInfo DriveInfo;
|
||||||
typedef struct Error Error;
|
typedef struct Error Error;
|
||||||
typedef struct EventNotifier EventNotifier;
|
typedef struct EventNotifier EventNotifier;
|
||||||
|
@ -36,7 +32,6 @@ typedef struct FWCfgEntry FWCfgEntry;
|
||||||
typedef struct FWCfgIoState FWCfgIoState;
|
typedef struct FWCfgIoState FWCfgIoState;
|
||||||
typedef struct FWCfgMemState FWCfgMemState;
|
typedef struct FWCfgMemState FWCfgMemState;
|
||||||
typedef struct FWCfgState FWCfgState;
|
typedef struct FWCfgState FWCfgState;
|
||||||
typedef struct HCIInfo HCIInfo;
|
|
||||||
typedef struct HVFX86EmulatorState HVFX86EmulatorState;
|
typedef struct HVFX86EmulatorState HVFX86EmulatorState;
|
||||||
typedef struct I2CBus I2CBus;
|
typedef struct I2CBus I2CBus;
|
||||||
typedef struct I2SCodec I2SCodec;
|
typedef struct I2SCodec I2SCodec;
|
||||||
|
@ -56,7 +51,6 @@ typedef struct MigrationIncomingState MigrationIncomingState;
|
||||||
typedef struct MigrationState MigrationState;
|
typedef struct MigrationState MigrationState;
|
||||||
typedef struct Monitor Monitor;
|
typedef struct Monitor Monitor;
|
||||||
typedef struct MonitorDef MonitorDef;
|
typedef struct MonitorDef MonitorDef;
|
||||||
typedef struct MouseTransformInfo MouseTransformInfo;
|
|
||||||
typedef struct MSIMessage MSIMessage;
|
typedef struct MSIMessage MSIMessage;
|
||||||
typedef struct NetClientState NetClientState;
|
typedef struct NetClientState NetClientState;
|
||||||
typedef struct NetFilterState NetFilterState;
|
typedef struct NetFilterState NetFilterState;
|
||||||
|
@ -76,19 +70,14 @@ typedef struct PCIExpressDevice PCIExpressDevice;
|
||||||
typedef struct PCIExpressHost PCIExpressHost;
|
typedef struct PCIExpressHost PCIExpressHost;
|
||||||
typedef struct PCIHostDeviceAddress PCIHostDeviceAddress;
|
typedef struct PCIHostDeviceAddress PCIHostDeviceAddress;
|
||||||
typedef struct PCIHostState PCIHostState;
|
typedef struct PCIHostState PCIHostState;
|
||||||
typedef struct PCMachineClass PCMachineClass;
|
|
||||||
typedef struct PCMachineState PCMachineState;
|
typedef struct PCMachineState PCMachineState;
|
||||||
typedef struct PCMCIACardState PCMCIACardState;
|
|
||||||
typedef struct PixelFormat PixelFormat;
|
|
||||||
typedef struct PostcopyDiscardState PostcopyDiscardState;
|
typedef struct PostcopyDiscardState PostcopyDiscardState;
|
||||||
typedef struct Property Property;
|
typedef struct Property Property;
|
||||||
typedef struct PropertyInfo PropertyInfo;
|
typedef struct PropertyInfo PropertyInfo;
|
||||||
typedef struct PS2State PS2State;
|
|
||||||
typedef struct QBool QBool;
|
typedef struct QBool QBool;
|
||||||
typedef struct QDict QDict;
|
typedef struct QDict QDict;
|
||||||
typedef struct QEMUBH QEMUBH;
|
typedef struct QEMUBH QEMUBH;
|
||||||
typedef struct QemuConsole QemuConsole;
|
typedef struct QemuConsole QemuConsole;
|
||||||
typedef struct QemuDmaBuf QemuDmaBuf;
|
|
||||||
typedef struct QEMUFile QEMUFile;
|
typedef struct QEMUFile QEMUFile;
|
||||||
typedef struct QemuLockable QemuLockable;
|
typedef struct QemuLockable QemuLockable;
|
||||||
typedef struct QemuMutex QemuMutex;
|
typedef struct QemuMutex QemuMutex;
|
||||||
|
@ -107,9 +96,7 @@ typedef struct QObject QObject;
|
||||||
typedef struct QString QString;
|
typedef struct QString QString;
|
||||||
typedef struct RAMBlock RAMBlock;
|
typedef struct RAMBlock RAMBlock;
|
||||||
typedef struct Range Range;
|
typedef struct Range Range;
|
||||||
typedef struct SerialState SerialState;
|
|
||||||
typedef struct SHPCDevice SHPCDevice;
|
typedef struct SHPCDevice SHPCDevice;
|
||||||
typedef struct SMBusDevice SMBusDevice;
|
|
||||||
typedef struct SSIBus SSIBus;
|
typedef struct SSIBus SSIBus;
|
||||||
typedef struct uWireSlave uWireSlave;
|
typedef struct uWireSlave uWireSlave;
|
||||||
typedef struct VirtIODevice VirtIODevice;
|
typedef struct VirtIODevice VirtIODevice;
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
/* BT HCI info */
|
/* BT HCI info */
|
||||||
|
|
||||||
struct HCIInfo {
|
typedef struct HCIInfo {
|
||||||
int (*bdaddr_set)(struct HCIInfo *hci, const uint8_t *bd_addr);
|
int (*bdaddr_set)(struct HCIInfo *hci, const uint8_t *bd_addr);
|
||||||
void (*cmd_send)(struct HCIInfo *hci, const uint8_t *data, int len);
|
void (*cmd_send)(struct HCIInfo *hci, const uint8_t *data, int len);
|
||||||
void (*sco_send)(struct HCIInfo *hci, const uint8_t *data, int len);
|
void (*sco_send)(struct HCIInfo *hci, const uint8_t *data, int len);
|
||||||
|
@ -11,7 +11,7 @@ struct HCIInfo {
|
||||||
void *opaque;
|
void *opaque;
|
||||||
void (*evt_recv)(void *opaque, const uint8_t *data, int len);
|
void (*evt_recv)(void *opaque, const uint8_t *data, int len);
|
||||||
void (*acl_recv)(void *opaque, const uint8_t *data, int len);
|
void (*acl_recv)(void *opaque, const uint8_t *data, int len);
|
||||||
};
|
} HCIInfo;
|
||||||
|
|
||||||
/* bt-host.c */
|
/* bt-host.c */
|
||||||
struct HCIInfo *bt_host_hci(const char *id);
|
struct HCIInfo *bt_host_hci(const char *id);
|
||||||
|
|
|
@ -65,13 +65,13 @@ void qemu_remove_led_event_handler(QEMUPutLEDEntry *entry);
|
||||||
|
|
||||||
void kbd_put_ledstate(int ledstate);
|
void kbd_put_ledstate(int ledstate);
|
||||||
|
|
||||||
struct MouseTransformInfo {
|
typedef struct MouseTransformInfo {
|
||||||
/* Touchscreen resolution */
|
/* Touchscreen resolution */
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
/* Calibration values as used/generated by tslib */
|
/* Calibration values as used/generated by tslib */
|
||||||
int a[7];
|
int a[7];
|
||||||
};
|
} MouseTransformInfo;
|
||||||
|
|
||||||
void hmp_mouse_set(Monitor *mon, const QDict *qdict);
|
void hmp_mouse_set(Monitor *mon, const QDict *qdict);
|
||||||
|
|
||||||
|
@ -121,17 +121,7 @@ struct QemuConsoleClass {
|
||||||
|
|
||||||
#define QEMU_ALLOCATED_FLAG 0x01
|
#define QEMU_ALLOCATED_FLAG 0x01
|
||||||
|
|
||||||
struct PixelFormat {
|
typedef struct DisplaySurface {
|
||||||
uint8_t bits_per_pixel;
|
|
||||||
uint8_t bytes_per_pixel;
|
|
||||||
uint8_t depth; /* color depth in bits */
|
|
||||||
uint32_t rmask, gmask, bmask, amask;
|
|
||||||
uint8_t rshift, gshift, bshift, ashift;
|
|
||||||
uint8_t rmax, gmax, bmax, amax;
|
|
||||||
uint8_t rbits, gbits, bbits, abits;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct DisplaySurface {
|
|
||||||
pixman_format_code_t format;
|
pixman_format_code_t format;
|
||||||
pixman_image_t *image;
|
pixman_image_t *image;
|
||||||
uint8_t flags;
|
uint8_t flags;
|
||||||
|
@ -140,7 +130,7 @@ struct DisplaySurface {
|
||||||
GLenum gltype;
|
GLenum gltype;
|
||||||
GLuint texture;
|
GLuint texture;
|
||||||
#endif
|
#endif
|
||||||
};
|
} DisplaySurface;
|
||||||
|
|
||||||
typedef struct QemuUIInfo {
|
typedef struct QemuUIInfo {
|
||||||
/* geometry */
|
/* geometry */
|
||||||
|
@ -179,7 +169,7 @@ struct QEMUGLParams {
|
||||||
int minor_ver;
|
int minor_ver;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct QemuDmaBuf {
|
typedef struct QemuDmaBuf {
|
||||||
int fd;
|
int fd;
|
||||||
uint32_t width;
|
uint32_t width;
|
||||||
uint32_t height;
|
uint32_t height;
|
||||||
|
@ -187,7 +177,9 @@ struct QemuDmaBuf {
|
||||||
uint32_t fourcc;
|
uint32_t fourcc;
|
||||||
uint32_t texture;
|
uint32_t texture;
|
||||||
bool y0_top;
|
bool y0_top;
|
||||||
};
|
} QemuDmaBuf;
|
||||||
|
|
||||||
|
typedef struct DisplayState DisplayState;
|
||||||
|
|
||||||
typedef struct DisplayChangeListenerOps {
|
typedef struct DisplayChangeListenerOps {
|
||||||
const char *dpy_name;
|
const char *dpy_name;
|
||||||
|
|
|
@ -53,6 +53,16 @@
|
||||||
|
|
||||||
/* -------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
typedef struct PixelFormat {
|
||||||
|
uint8_t bits_per_pixel;
|
||||||
|
uint8_t bytes_per_pixel;
|
||||||
|
uint8_t depth; /* color depth in bits */
|
||||||
|
uint32_t rmask, gmask, bmask, amask;
|
||||||
|
uint8_t rshift, gshift, bshift, ashift;
|
||||||
|
uint8_t rmax, gmax, bmax, amax;
|
||||||
|
uint8_t rbits, gbits, bbits, abits;
|
||||||
|
} PixelFormat;
|
||||||
|
|
||||||
PixelFormat qemu_pixelformat_from_pixman(pixman_format_code_t format);
|
PixelFormat qemu_pixelformat_from_pixman(pixman_format_code_t format);
|
||||||
pixman_format_code_t qemu_default_pixman_format(int bpp, bool native_endian);
|
pixman_format_code_t qemu_default_pixman_format(int bpp, bool native_endian);
|
||||||
pixman_format_code_t qemu_drm_format_to_pixman(uint32_t drm_format);
|
pixman_format_code_t qemu_drm_format_to_pixman(uint32_t drm_format);
|
||||||
|
|
|
@ -474,17 +474,13 @@ static inline int access_ok(int type, abi_ulong addr, abi_ulong size)
|
||||||
* functions than host-endian unaligned load/store plus tswapN.
|
* functions than host-endian unaligned load/store plus tswapN.
|
||||||
* - The pragmas are necessary only to silence a clang false-positive
|
* - The pragmas are necessary only to silence a clang false-positive
|
||||||
* warning: see https://bugs.llvm.org/show_bug.cgi?id=39113 .
|
* warning: see https://bugs.llvm.org/show_bug.cgi?id=39113 .
|
||||||
* - We have to disable -Wpragmas warnings to avoid a complaint about
|
|
||||||
* an unknown warning type from older compilers that don't know about
|
|
||||||
* -Waddress-of-packed-member.
|
|
||||||
* - gcc has bugs in its _Pragma() support in some versions, eg
|
* - gcc has bugs in its _Pragma() support in some versions, eg
|
||||||
* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83256 -- so we only
|
* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83256 -- so we only
|
||||||
* include the warning-suppression pragmas for clang
|
* include the warning-suppression pragmas for clang
|
||||||
*/
|
*/
|
||||||
#ifdef __clang__
|
#if defined(__clang__) && __has_warning("-Waddress-of-packed-member")
|
||||||
#define PRAGMA_DISABLE_PACKED_WARNING \
|
#define PRAGMA_DISABLE_PACKED_WARNING \
|
||||||
_Pragma("GCC diagnostic push"); \
|
_Pragma("GCC diagnostic push"); \
|
||||||
_Pragma("GCC diagnostic ignored \"-Wpragmas\""); \
|
|
||||||
_Pragma("GCC diagnostic ignored \"-Waddress-of-packed-member\"")
|
_Pragma("GCC diagnostic ignored \"-Waddress-of-packed-member\"")
|
||||||
|
|
||||||
#define PRAGMA_REENABLE_PACKED_WARNING \
|
#define PRAGMA_REENABLE_PACKED_WARNING \
|
||||||
|
|
|
@ -41,7 +41,8 @@ struct QemuSeccompSyscall {
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct scmp_arg_cmp sched_setscheduler_arg[] = {
|
const struct scmp_arg_cmp sched_setscheduler_arg[] = {
|
||||||
SCMP_A1(SCMP_CMP_NE, SCHED_IDLE)
|
/* was SCMP_A1(SCMP_CMP_NE, SCHED_IDLE), but expanded due to GCC 4.x bug */
|
||||||
|
{ .arg = 1, .op = SCMP_CMP_NE, .datum_a = SCHED_IDLE }
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct QemuSeccompSyscall blacklist[] = {
|
static const struct QemuSeccompSyscall blacklist[] = {
|
||||||
|
|
|
@ -1177,8 +1177,9 @@ do { \
|
||||||
|
|
||||||
typedef struct PPCVirtualHypervisor PPCVirtualHypervisor;
|
typedef struct PPCVirtualHypervisor PPCVirtualHypervisor;
|
||||||
typedef struct PPCVirtualHypervisorClass PPCVirtualHypervisorClass;
|
typedef struct PPCVirtualHypervisorClass PPCVirtualHypervisorClass;
|
||||||
typedef struct XiveTCTX XiveTCTX;
|
|
||||||
typedef struct ICPState ICPState;
|
struct XiveTCTX;
|
||||||
|
struct ICPState;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PowerPCCPU:
|
* PowerPCCPU:
|
||||||
|
@ -1197,8 +1198,8 @@ struct PowerPCCPU {
|
||||||
int vcpu_id;
|
int vcpu_id;
|
||||||
uint32_t compat_pvr;
|
uint32_t compat_pvr;
|
||||||
PPCVirtualHypervisor *vhyp;
|
PPCVirtualHypervisor *vhyp;
|
||||||
ICPState *icp;
|
struct ICPState *icp;
|
||||||
XiveTCTX *tctx;
|
struct XiveTCTX *tctx;
|
||||||
void *machine_data;
|
void *machine_data;
|
||||||
int32_t node_id; /* NUMA node this CPU belongs to */
|
int32_t node_id; /* NUMA node this CPU belongs to */
|
||||||
PPCHash64Options *hash64_opts;
|
PPCHash64Options *hash64_opts;
|
||||||
|
|
|
@ -167,13 +167,13 @@ check-qtest-pci-$(CONFIG_NE2000_PCI) += tests/ne2000-test$(EXESUF)
|
||||||
check-qtest-pci-$(CONFIG_NVME_PCI) += tests/nvme-test$(EXESUF)
|
check-qtest-pci-$(CONFIG_NVME_PCI) += tests/nvme-test$(EXESUF)
|
||||||
check-qtest-pci-$(CONFIG_AC97) += tests/ac97-test$(EXESUF)
|
check-qtest-pci-$(CONFIG_AC97) += tests/ac97-test$(EXESUF)
|
||||||
check-qtest-pci-$(CONFIG_ES1370) += tests/es1370-test$(EXESUF)
|
check-qtest-pci-$(CONFIG_ES1370) += tests/es1370-test$(EXESUF)
|
||||||
check-qtest-pci-y += $(check-qtest-virtio-y)
|
check-qtest-pci-$(CONFIG_VIRTIO) += $(check-qtest-virtio-y)
|
||||||
check-qtest-pci-$(CONFIG_IPACK) += tests/tpci200-test$(EXESUF)
|
check-qtest-pci-$(CONFIG_IPACK) += tests/tpci200-test$(EXESUF)
|
||||||
check-qtest-pci-$(CONFIG_IPACK) += $(check-qtest-ipack-y)
|
check-qtest-pci-$(CONFIG_IPACK) += $(check-qtest-ipack-y)
|
||||||
check-qtest-pci-y += tests/display-vga-test$(EXESUF)
|
check-qtest-pci-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
|
||||||
check-qtest-pci-$(CONFIG_HDA) += tests/intel-hda-test$(EXESUF)
|
check-qtest-pci-$(CONFIG_HDA) += tests/intel-hda-test$(EXESUF)
|
||||||
check-qtest-pci-$(CONFIG_IVSHMEM_DEVICE) += tests/ivshmem-test$(EXESUF)
|
check-qtest-pci-$(CONFIG_IVSHMEM_DEVICE) += tests/ivshmem-test$(EXESUF)
|
||||||
check-qtest-pci-y += tests/megasas-test$(EXESUF)
|
check-qtest-pci-$(CONFIG_MEGASAS_SCSI_PCI) += tests/megasas-test$(EXESUF)
|
||||||
|
|
||||||
check-qtest-i386-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
|
check-qtest-i386-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF)
|
||||||
check-qtest-i386-y += tests/fdc-test$(EXESUF)
|
check-qtest-i386-y += tests/fdc-test$(EXESUF)
|
||||||
|
@ -185,9 +185,9 @@ check-qtest-i386-y += tests/bios-tables-test$(EXESUF)
|
||||||
check-qtest-i386-$(CONFIG_SGA) += tests/boot-serial-test$(EXESUF)
|
check-qtest-i386-$(CONFIG_SGA) += tests/boot-serial-test$(EXESUF)
|
||||||
check-qtest-i386-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
|
check-qtest-i386-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
|
||||||
check-qtest-i386-y += tests/rtc-test$(EXESUF)
|
check-qtest-i386-y += tests/rtc-test$(EXESUF)
|
||||||
check-qtest-i386-y += tests/ipmi-kcs-test$(EXESUF)
|
check-qtest-i386-$(CONFIG_ISA_IPMI_KCS) += tests/ipmi-kcs-test$(EXESUF)
|
||||||
# Disabled temporarily as it fails intermittently especially under NetBSD VM
|
# Disabled temporarily as it fails intermittently especially under NetBSD VM
|
||||||
# check-qtest-i386-y += tests/ipmi-bt-test$(EXESUF)
|
# check-qtest-i386-$(CONFIG_ISA_IPMI_BT) += tests/ipmi-bt-test$(EXESUF)
|
||||||
check-qtest-i386-y += tests/i440fx-test$(EXESUF)
|
check-qtest-i386-y += tests/i440fx-test$(EXESUF)
|
||||||
check-qtest-i386-y += tests/fw_cfg-test$(EXESUF)
|
check-qtest-i386-y += tests/fw_cfg-test$(EXESUF)
|
||||||
check-qtest-i386-y += tests/drive_del-test$(EXESUF)
|
check-qtest-i386-y += tests/drive_del-test$(EXESUF)
|
||||||
|
@ -250,22 +250,22 @@ check-qtest-ppc-y += tests/boot-order-test$(EXESUF)
|
||||||
check-qtest-ppc-y += tests/prom-env-test$(EXESUF)
|
check-qtest-ppc-y += tests/prom-env-test$(EXESUF)
|
||||||
check-qtest-ppc-y += tests/drive_del-test$(EXESUF)
|
check-qtest-ppc-y += tests/drive_del-test$(EXESUF)
|
||||||
check-qtest-ppc-y += tests/boot-serial-test$(EXESUF)
|
check-qtest-ppc-y += tests/boot-serial-test$(EXESUF)
|
||||||
check-qtest-ppc-y += tests/m48t59-test$(EXESUF)
|
check-qtest-ppc-$(CONFIG_M48T59) += tests/m48t59-test$(EXESUF)
|
||||||
|
|
||||||
check-qtest-ppc64-y += $(check-qtest-ppc-y)
|
check-qtest-ppc64-y += $(check-qtest-ppc-y)
|
||||||
check-qtest-ppc64-y += tests/spapr-phb-test$(EXESUF)
|
check-qtest-ppc64-$(CONFIG_PSERIES) += tests/spapr-phb-test$(EXESUF)
|
||||||
check-qtest-ppc64-y += tests/pnv-xscom-test$(EXESUF)
|
check-qtest-ppc64-$(CONFIG_POWERNV) += tests/pnv-xscom-test$(EXESUF)
|
||||||
check-qtest-ppc64-y += tests/migration-test$(EXESUF)
|
check-qtest-ppc64-y += tests/migration-test$(EXESUF)
|
||||||
check-qtest-ppc64-y += tests/rtas-test$(EXESUF)
|
check-qtest-ppc64-$(CONFIG_PSERIES) += tests/rtas-test$(EXESUF)
|
||||||
check-qtest-ppc64-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
|
check-qtest-ppc64-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
|
||||||
check-qtest-ppc64-$(CONFIG_USB_OHCI) += tests/usb-hcd-ohci-test$(EXESUF)
|
check-qtest-ppc64-$(CONFIG_USB_OHCI) += tests/usb-hcd-ohci-test$(EXESUF)
|
||||||
check-qtest-ppc64-$(CONFIG_USB_UHCI) += tests/usb-hcd-uhci-test$(EXESUF)
|
check-qtest-ppc64-$(CONFIG_USB_UHCI) += tests/usb-hcd-uhci-test$(EXESUF)
|
||||||
check-qtest-ppc64-$(CONFIG_USB_XHCI_NEC) += tests/usb-hcd-xhci-test$(EXESUF)
|
check-qtest-ppc64-$(CONFIG_USB_XHCI_NEC) += tests/usb-hcd-xhci-test$(EXESUF)
|
||||||
check-qtest-ppc64-y += $(check-qtest-virtio-y)
|
check-qtest-ppc64-$(CONFIG_VIRTIO) += $(check-qtest-virtio-y)
|
||||||
check-qtest-ppc64-$(CONFIG_SLIRP) += tests/test-netfilter$(EXESUF)
|
check-qtest-ppc64-$(CONFIG_SLIRP) += tests/test-netfilter$(EXESUF)
|
||||||
check-qtest-ppc64-$(CONFIG_POSIX) += tests/test-filter-mirror$(EXESUF)
|
check-qtest-ppc64-$(CONFIG_POSIX) += tests/test-filter-mirror$(EXESUF)
|
||||||
check-qtest-ppc64-$(CONFIG_RTL8139_PCI) += tests/test-filter-redirector$(EXESUF)
|
check-qtest-ppc64-$(CONFIG_RTL8139_PCI) += tests/test-filter-redirector$(EXESUF)
|
||||||
check-qtest-ppc64-y += tests/display-vga-test$(EXESUF)
|
check-qtest-ppc64-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF)
|
||||||
check-qtest-ppc64-y += tests/numa-test$(EXESUF)
|
check-qtest-ppc64-y += tests/numa-test$(EXESUF)
|
||||||
check-qtest-ppc64-$(CONFIG_IVSHMEM_DEVICE) += tests/ivshmem-test$(EXESUF)
|
check-qtest-ppc64-$(CONFIG_IVSHMEM_DEVICE) += tests/ivshmem-test$(EXESUF)
|
||||||
check-qtest-ppc64-y += tests/cpu-plug-test$(EXESUF)
|
check-qtest-ppc64-y += tests/cpu-plug-test$(EXESUF)
|
||||||
|
@ -748,7 +748,6 @@ tests/qom-test$(EXESUF): tests/qom-test.o
|
||||||
tests/test-hmp$(EXESUF): tests/test-hmp.o
|
tests/test-hmp$(EXESUF): tests/test-hmp.o
|
||||||
tests/machine-none-test$(EXESUF): tests/machine-none-test.o
|
tests/machine-none-test$(EXESUF): tests/machine-none-test.o
|
||||||
tests/drive_del-test$(EXESUF): tests/drive_del-test.o $(libqos-virtio-obj-y)
|
tests/drive_del-test$(EXESUF): tests/drive_del-test.o $(libqos-virtio-obj-y)
|
||||||
tests/qdev-monitor-test$(EXESUF): tests/qdev-monitor-test.o $(libqos-pc-obj-y)
|
|
||||||
tests/nvme-test$(EXESUF): tests/nvme-test.o $(libqos-pc-obj-y)
|
tests/nvme-test$(EXESUF): tests/nvme-test.o $(libqos-pc-obj-y)
|
||||||
tests/pvpanic-test$(EXESUF): tests/pvpanic-test.o
|
tests/pvpanic-test$(EXESUF): tests/pvpanic-test.o
|
||||||
tests/i82801b11-test$(EXESUF): tests/i82801b11-test.o
|
tests/i82801b11-test$(EXESUF): tests/i82801b11-test.o
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
#include "standard-headers/linux/qemu_fw_cfg.h"
|
#include "standard-headers/linux/qemu_fw_cfg.h"
|
||||||
|
|
||||||
/* TODO actually test the results and get rid of this */
|
/* TODO actually test the results and get rid of this */
|
||||||
#define qmp_discard_response(...) qobject_unref(qmp(__VA_ARGS__))
|
#define qmp_discard_response(qs, ...) qobject_unref(qtest_qmp(qs, __VA_ARGS__))
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const char *args;
|
const char *args;
|
||||||
|
@ -27,31 +27,30 @@ typedef struct {
|
||||||
|
|
||||||
static void test_a_boot_order(const char *machine,
|
static void test_a_boot_order(const char *machine,
|
||||||
const char *test_args,
|
const char *test_args,
|
||||||
uint64_t (*read_boot_order)(void),
|
uint64_t (*read_boot_order)(QTestState *),
|
||||||
uint64_t expected_boot,
|
uint64_t expected_boot,
|
||||||
uint64_t expected_reboot)
|
uint64_t expected_reboot)
|
||||||
{
|
{
|
||||||
uint64_t actual;
|
uint64_t actual;
|
||||||
|
QTestState *qts;
|
||||||
|
|
||||||
global_qtest = qtest_initf("-nodefaults%s%s %s",
|
qts = qtest_initf("-nodefaults%s%s %s", machine ? " -M " : "",
|
||||||
machine ? " -M " : "",
|
machine ?: "", test_args);
|
||||||
machine ?: "",
|
actual = read_boot_order(qts);
|
||||||
test_args);
|
|
||||||
actual = read_boot_order();
|
|
||||||
g_assert_cmphex(actual, ==, expected_boot);
|
g_assert_cmphex(actual, ==, expected_boot);
|
||||||
qmp_discard_response("{ 'execute': 'system_reset' }");
|
qmp_discard_response(qts, "{ 'execute': 'system_reset' }");
|
||||||
/*
|
/*
|
||||||
* system_reset only requests reset. We get a RESET event after
|
* system_reset only requests reset. We get a RESET event after
|
||||||
* the actual reset completes. Need to wait for that.
|
* the actual reset completes. Need to wait for that.
|
||||||
*/
|
*/
|
||||||
qmp_eventwait("RESET");
|
qtest_qmp_eventwait(qts, "RESET");
|
||||||
actual = read_boot_order();
|
actual = read_boot_order(qts);
|
||||||
g_assert_cmphex(actual, ==, expected_reboot);
|
g_assert_cmphex(actual, ==, expected_reboot);
|
||||||
qtest_quit(global_qtest);
|
qtest_quit(qts);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_boot_orders(const char *machine,
|
static void test_boot_orders(const char *machine,
|
||||||
uint64_t (*read_boot_order)(void),
|
uint64_t (*read_boot_order)(QTestState *),
|
||||||
const boot_order_test *tests)
|
const boot_order_test *tests)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -64,16 +63,16 @@ static void test_boot_orders(const char *machine,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t read_mc146818(uint16_t port, uint8_t reg)
|
static uint8_t read_mc146818(QTestState *qts, uint16_t port, uint8_t reg)
|
||||||
{
|
{
|
||||||
outb(port, reg);
|
qtest_outb(qts, port, reg);
|
||||||
return inb(port + 1);
|
return qtest_inb(qts, port + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t read_boot_order_pc(void)
|
static uint64_t read_boot_order_pc(QTestState *qts)
|
||||||
{
|
{
|
||||||
uint8_t b1 = read_mc146818(0x70, 0x38);
|
uint8_t b1 = read_mc146818(qts, 0x70, 0x38);
|
||||||
uint8_t b2 = read_mc146818(0x70, 0x3d);
|
uint8_t b2 = read_mc146818(qts, 0x70, 0x3d);
|
||||||
|
|
||||||
return b1 | (b2 << 8);
|
return b1 | (b2 << 8);
|
||||||
}
|
}
|
||||||
|
@ -109,16 +108,16 @@ static void test_pc_boot_order(void)
|
||||||
test_boot_orders(NULL, read_boot_order_pc, test_cases_pc);
|
test_boot_orders(NULL, read_boot_order_pc, test_cases_pc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t read_m48t59(uint64_t addr, uint16_t reg)
|
static uint8_t read_m48t59(QTestState *qts, uint64_t addr, uint16_t reg)
|
||||||
{
|
{
|
||||||
writeb(addr, reg & 0xff);
|
qtest_writeb(qts, addr, reg & 0xff);
|
||||||
writeb(addr + 1, reg >> 8);
|
qtest_writeb(qts, addr + 1, reg >> 8);
|
||||||
return readb(addr + 3);
|
return qtest_readb(qts, addr + 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t read_boot_order_prep(void)
|
static uint64_t read_boot_order_prep(QTestState *qts)
|
||||||
{
|
{
|
||||||
return read_m48t59(0x80000000 + 0x74, 0x34);
|
return read_m48t59(qts, 0x80000000 + 0x74, 0x34);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const boot_order_test test_cases_prep[] = {
|
static const boot_order_test test_cases_prep[] = {
|
||||||
|
@ -133,9 +132,9 @@ static void test_prep_boot_order(void)
|
||||||
test_boot_orders("prep", read_boot_order_prep, test_cases_prep);
|
test_boot_orders("prep", read_boot_order_prep, test_cases_prep);
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t read_boot_order_pmac(void)
|
static uint64_t read_boot_order_pmac(QTestState *qts)
|
||||||
{
|
{
|
||||||
QFWCFG *fw_cfg = mm_fw_cfg_init(global_qtest, 0xf0000510);
|
QFWCFG *fw_cfg = mm_fw_cfg_init(qts, 0xf0000510);
|
||||||
|
|
||||||
return qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_DEVICE);
|
return qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_DEVICE);
|
||||||
}
|
}
|
||||||
|
@ -158,9 +157,9 @@ static void test_pmac_newworld_boot_order(void)
|
||||||
test_boot_orders("mac99", read_boot_order_pmac, test_cases_fw_cfg);
|
test_boot_orders("mac99", read_boot_order_pmac, test_cases_fw_cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t read_boot_order_sun4m(void)
|
static uint64_t read_boot_order_sun4m(QTestState *qts)
|
||||||
{
|
{
|
||||||
QFWCFG *fw_cfg = mm_fw_cfg_init(global_qtest, 0xd00000510ULL);
|
QFWCFG *fw_cfg = mm_fw_cfg_init(qts, 0xd00000510ULL);
|
||||||
|
|
||||||
return qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_DEVICE);
|
return qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_DEVICE);
|
||||||
}
|
}
|
||||||
|
@ -170,9 +169,9 @@ static void test_sun4m_boot_order(void)
|
||||||
test_boot_orders("SS-5", read_boot_order_sun4m, test_cases_fw_cfg);
|
test_boot_orders("SS-5", read_boot_order_sun4m, test_cases_fw_cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t read_boot_order_sun4u(void)
|
static uint64_t read_boot_order_sun4u(QTestState *qts)
|
||||||
{
|
{
|
||||||
QFWCFG *fw_cfg = io_fw_cfg_init(global_qtest, 0x510);
|
QFWCFG *fw_cfg = io_fw_cfg_init(qts, 0x510);
|
||||||
|
|
||||||
return qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_DEVICE);
|
return qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_DEVICE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,65 +48,68 @@ static const TestCase test_cases[] = {
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
static uint8_t isa_inb(const TestCase *test, uint16_t addr)
|
static uint8_t isa_inb(QTestState *qts, const TestCase *test, uint16_t addr)
|
||||||
{
|
{
|
||||||
uint8_t value;
|
uint8_t value;
|
||||||
if (test->isa_base == -1) {
|
if (test->isa_base == -1) {
|
||||||
value = inb(addr);
|
value = qtest_inb(qts, addr);
|
||||||
} else {
|
} else {
|
||||||
value = readb(test->isa_base + addr);
|
value = qtest_readb(qts, test->isa_base + addr);
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint16_t isa_inw(const TestCase *test, uint16_t addr)
|
static uint16_t isa_inw(QTestState *qts, const TestCase *test, uint16_t addr)
|
||||||
{
|
{
|
||||||
uint16_t value;
|
uint16_t value;
|
||||||
if (test->isa_base == -1) {
|
if (test->isa_base == -1) {
|
||||||
value = inw(addr);
|
value = qtest_inw(qts, addr);
|
||||||
} else {
|
} else {
|
||||||
value = readw(test->isa_base + addr);
|
value = qtest_readw(qts, test->isa_base + addr);
|
||||||
}
|
}
|
||||||
return test->bswap ? bswap16(value) : value;
|
return test->bswap ? bswap16(value) : value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t isa_inl(const TestCase *test, uint16_t addr)
|
static uint32_t isa_inl(QTestState *qts, const TestCase *test, uint16_t addr)
|
||||||
{
|
{
|
||||||
uint32_t value;
|
uint32_t value;
|
||||||
if (test->isa_base == -1) {
|
if (test->isa_base == -1) {
|
||||||
value = inl(addr);
|
value = qtest_inl(qts, addr);
|
||||||
} else {
|
} else {
|
||||||
value = readl(test->isa_base + addr);
|
value = qtest_readl(qts, test->isa_base + addr);
|
||||||
}
|
}
|
||||||
return test->bswap ? bswap32(value) : value;
|
return test->bswap ? bswap32(value) : value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void isa_outb(const TestCase *test, uint16_t addr, uint8_t value)
|
static void isa_outb(QTestState *qts, const TestCase *test, uint16_t addr,
|
||||||
|
uint8_t value)
|
||||||
{
|
{
|
||||||
if (test->isa_base == -1) {
|
if (test->isa_base == -1) {
|
||||||
outb(addr, value);
|
qtest_outb(qts, addr, value);
|
||||||
} else {
|
} else {
|
||||||
writeb(test->isa_base + addr, value);
|
qtest_writeb(qts, test->isa_base + addr, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void isa_outw(const TestCase *test, uint16_t addr, uint16_t value)
|
static void isa_outw(QTestState *qts, const TestCase *test, uint16_t addr,
|
||||||
|
uint16_t value)
|
||||||
{
|
{
|
||||||
value = test->bswap ? bswap16(value) : value;
|
value = test->bswap ? bswap16(value) : value;
|
||||||
if (test->isa_base == -1) {
|
if (test->isa_base == -1) {
|
||||||
outw(addr, value);
|
qtest_outw(qts, addr, value);
|
||||||
} else {
|
} else {
|
||||||
writew(test->isa_base + addr, value);
|
qtest_writew(qts, test->isa_base + addr, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void isa_outl(const TestCase *test, uint16_t addr, uint32_t value)
|
static void isa_outl(QTestState *qts, const TestCase *test, uint16_t addr,
|
||||||
|
uint32_t value)
|
||||||
{
|
{
|
||||||
value = test->bswap ? bswap32(value) : value;
|
value = test->bswap ? bswap32(value) : value;
|
||||||
if (test->isa_base == -1) {
|
if (test->isa_base == -1) {
|
||||||
outl(addr, value);
|
qtest_outl(qts, addr, value);
|
||||||
} else {
|
} else {
|
||||||
writel(test->isa_base + addr, value);
|
qtest_writel(qts, test->isa_base + addr, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,161 +117,161 @@ static void isa_outl(const TestCase *test, uint16_t addr, uint32_t value)
|
||||||
static void test_endianness(gconstpointer data)
|
static void test_endianness(gconstpointer data)
|
||||||
{
|
{
|
||||||
const TestCase *test = data;
|
const TestCase *test = data;
|
||||||
|
QTestState *qts;
|
||||||
|
|
||||||
global_qtest = qtest_initf("-M %s%s%s -device pc-testdev",
|
qts = qtest_initf("-M %s%s%s -device pc-testdev", test->machine,
|
||||||
test->machine,
|
test->superio ? " -device " : "",
|
||||||
test->superio ? " -device " : "",
|
test->superio ?: "");
|
||||||
test->superio ?: "");
|
isa_outl(qts, test, 0xe0, 0x87654321);
|
||||||
isa_outl(test, 0xe0, 0x87654321);
|
g_assert_cmphex(isa_inl(qts, test, 0xe0), ==, 0x87654321);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x87654321);
|
g_assert_cmphex(isa_inw(qts, test, 0xe2), ==, 0x8765);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8765);
|
g_assert_cmphex(isa_inw(qts, test, 0xe0), ==, 0x4321);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe0), ==, 0x4321);
|
g_assert_cmphex(isa_inb(qts, test, 0xe3), ==, 0x87);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe3), ==, 0x87);
|
g_assert_cmphex(isa_inb(qts, test, 0xe2), ==, 0x65);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe2), ==, 0x65);
|
g_assert_cmphex(isa_inb(qts, test, 0xe1), ==, 0x43);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe1), ==, 0x43);
|
g_assert_cmphex(isa_inb(qts, test, 0xe0), ==, 0x21);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe0), ==, 0x21);
|
|
||||||
|
|
||||||
isa_outw(test, 0xe2, 0x8866);
|
isa_outw(qts, test, 0xe2, 0x8866);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x88664321);
|
g_assert_cmphex(isa_inl(qts, test, 0xe0), ==, 0x88664321);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8866);
|
g_assert_cmphex(isa_inw(qts, test, 0xe2), ==, 0x8866);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe0), ==, 0x4321);
|
g_assert_cmphex(isa_inw(qts, test, 0xe0), ==, 0x4321);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe3), ==, 0x88);
|
g_assert_cmphex(isa_inb(qts, test, 0xe3), ==, 0x88);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe2), ==, 0x66);
|
g_assert_cmphex(isa_inb(qts, test, 0xe2), ==, 0x66);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe1), ==, 0x43);
|
g_assert_cmphex(isa_inb(qts, test, 0xe1), ==, 0x43);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe0), ==, 0x21);
|
g_assert_cmphex(isa_inb(qts, test, 0xe0), ==, 0x21);
|
||||||
|
|
||||||
isa_outw(test, 0xe0, 0x4422);
|
isa_outw(qts, test, 0xe0, 0x4422);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x88664422);
|
g_assert_cmphex(isa_inl(qts, test, 0xe0), ==, 0x88664422);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8866);
|
g_assert_cmphex(isa_inw(qts, test, 0xe2), ==, 0x8866);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe0), ==, 0x4422);
|
g_assert_cmphex(isa_inw(qts, test, 0xe0), ==, 0x4422);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe3), ==, 0x88);
|
g_assert_cmphex(isa_inb(qts, test, 0xe3), ==, 0x88);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe2), ==, 0x66);
|
g_assert_cmphex(isa_inb(qts, test, 0xe2), ==, 0x66);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe1), ==, 0x44);
|
g_assert_cmphex(isa_inb(qts, test, 0xe1), ==, 0x44);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe0), ==, 0x22);
|
g_assert_cmphex(isa_inb(qts, test, 0xe0), ==, 0x22);
|
||||||
|
|
||||||
isa_outb(test, 0xe3, 0x87);
|
isa_outb(qts, test, 0xe3, 0x87);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x87664422);
|
g_assert_cmphex(isa_inl(qts, test, 0xe0), ==, 0x87664422);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8766);
|
g_assert_cmphex(isa_inw(qts, test, 0xe2), ==, 0x8766);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe3), ==, 0x87);
|
g_assert_cmphex(isa_inb(qts, test, 0xe3), ==, 0x87);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe2), ==, 0x66);
|
g_assert_cmphex(isa_inb(qts, test, 0xe2), ==, 0x66);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe1), ==, 0x44);
|
g_assert_cmphex(isa_inb(qts, test, 0xe1), ==, 0x44);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe0), ==, 0x22);
|
g_assert_cmphex(isa_inb(qts, test, 0xe0), ==, 0x22);
|
||||||
|
|
||||||
isa_outb(test, 0xe2, 0x65);
|
isa_outb(qts, test, 0xe2, 0x65);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x87654422);
|
g_assert_cmphex(isa_inl(qts, test, 0xe0), ==, 0x87654422);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8765);
|
g_assert_cmphex(isa_inw(qts, test, 0xe2), ==, 0x8765);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe0), ==, 0x4422);
|
g_assert_cmphex(isa_inw(qts, test, 0xe0), ==, 0x4422);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe3), ==, 0x87);
|
g_assert_cmphex(isa_inb(qts, test, 0xe3), ==, 0x87);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe2), ==, 0x65);
|
g_assert_cmphex(isa_inb(qts, test, 0xe2), ==, 0x65);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe1), ==, 0x44);
|
g_assert_cmphex(isa_inb(qts, test, 0xe1), ==, 0x44);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe0), ==, 0x22);
|
g_assert_cmphex(isa_inb(qts, test, 0xe0), ==, 0x22);
|
||||||
|
|
||||||
isa_outb(test, 0xe1, 0x43);
|
isa_outb(qts, test, 0xe1, 0x43);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x87654322);
|
g_assert_cmphex(isa_inl(qts, test, 0xe0), ==, 0x87654322);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8765);
|
g_assert_cmphex(isa_inw(qts, test, 0xe2), ==, 0x8765);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe0), ==, 0x4322);
|
g_assert_cmphex(isa_inw(qts, test, 0xe0), ==, 0x4322);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe3), ==, 0x87);
|
g_assert_cmphex(isa_inb(qts, test, 0xe3), ==, 0x87);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe2), ==, 0x65);
|
g_assert_cmphex(isa_inb(qts, test, 0xe2), ==, 0x65);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe1), ==, 0x43);
|
g_assert_cmphex(isa_inb(qts, test, 0xe1), ==, 0x43);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe0), ==, 0x22);
|
g_assert_cmphex(isa_inb(qts, test, 0xe0), ==, 0x22);
|
||||||
|
|
||||||
isa_outb(test, 0xe0, 0x21);
|
isa_outb(qts, test, 0xe0, 0x21);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x87654321);
|
g_assert_cmphex(isa_inl(qts, test, 0xe0), ==, 0x87654321);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8765);
|
g_assert_cmphex(isa_inw(qts, test, 0xe2), ==, 0x8765);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe0), ==, 0x4321);
|
g_assert_cmphex(isa_inw(qts, test, 0xe0), ==, 0x4321);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe3), ==, 0x87);
|
g_assert_cmphex(isa_inb(qts, test, 0xe3), ==, 0x87);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe2), ==, 0x65);
|
g_assert_cmphex(isa_inb(qts, test, 0xe2), ==, 0x65);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe1), ==, 0x43);
|
g_assert_cmphex(isa_inb(qts, test, 0xe1), ==, 0x43);
|
||||||
g_assert_cmphex(isa_inb(test, 0xe0), ==, 0x21);
|
g_assert_cmphex(isa_inb(qts, test, 0xe0), ==, 0x21);
|
||||||
qtest_quit(global_qtest);
|
qtest_quit(qts);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_endianness_split(gconstpointer data)
|
static void test_endianness_split(gconstpointer data)
|
||||||
{
|
{
|
||||||
const TestCase *test = data;
|
const TestCase *test = data;
|
||||||
|
QTestState *qts;
|
||||||
|
|
||||||
global_qtest = qtest_initf("-M %s%s%s -device pc-testdev",
|
qts = qtest_initf("-M %s%s%s -device pc-testdev", test->machine,
|
||||||
test->machine,
|
test->superio ? " -device " : "",
|
||||||
test->superio ? " -device " : "",
|
test->superio ?: "");
|
||||||
test->superio ?: "");
|
isa_outl(qts, test, 0xe8, 0x87654321);
|
||||||
isa_outl(test, 0xe8, 0x87654321);
|
g_assert_cmphex(isa_inl(qts, test, 0xe0), ==, 0x87654321);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x87654321);
|
g_assert_cmphex(isa_inw(qts, test, 0xe2), ==, 0x8765);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8765);
|
g_assert_cmphex(isa_inw(qts, test, 0xe0), ==, 0x4321);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe0), ==, 0x4321);
|
|
||||||
|
|
||||||
isa_outw(test, 0xea, 0x8866);
|
isa_outw(qts, test, 0xea, 0x8866);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x88664321);
|
g_assert_cmphex(isa_inl(qts, test, 0xe0), ==, 0x88664321);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8866);
|
g_assert_cmphex(isa_inw(qts, test, 0xe2), ==, 0x8866);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe0), ==, 0x4321);
|
g_assert_cmphex(isa_inw(qts, test, 0xe0), ==, 0x4321);
|
||||||
|
|
||||||
isa_outw(test, 0xe8, 0x4422);
|
isa_outw(qts, test, 0xe8, 0x4422);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x88664422);
|
g_assert_cmphex(isa_inl(qts, test, 0xe0), ==, 0x88664422);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8866);
|
g_assert_cmphex(isa_inw(qts, test, 0xe2), ==, 0x8866);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe0), ==, 0x4422);
|
g_assert_cmphex(isa_inw(qts, test, 0xe0), ==, 0x4422);
|
||||||
|
|
||||||
isa_outb(test, 0xeb, 0x87);
|
isa_outb(qts, test, 0xeb, 0x87);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x87664422);
|
g_assert_cmphex(isa_inl(qts, test, 0xe0), ==, 0x87664422);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8766);
|
g_assert_cmphex(isa_inw(qts, test, 0xe2), ==, 0x8766);
|
||||||
|
|
||||||
isa_outb(test, 0xea, 0x65);
|
isa_outb(qts, test, 0xea, 0x65);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x87654422);
|
g_assert_cmphex(isa_inl(qts, test, 0xe0), ==, 0x87654422);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8765);
|
g_assert_cmphex(isa_inw(qts, test, 0xe2), ==, 0x8765);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe0), ==, 0x4422);
|
g_assert_cmphex(isa_inw(qts, test, 0xe0), ==, 0x4422);
|
||||||
|
|
||||||
isa_outb(test, 0xe9, 0x43);
|
isa_outb(qts, test, 0xe9, 0x43);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x87654322);
|
g_assert_cmphex(isa_inl(qts, test, 0xe0), ==, 0x87654322);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8765);
|
g_assert_cmphex(isa_inw(qts, test, 0xe2), ==, 0x8765);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe0), ==, 0x4322);
|
g_assert_cmphex(isa_inw(qts, test, 0xe0), ==, 0x4322);
|
||||||
|
|
||||||
isa_outb(test, 0xe8, 0x21);
|
isa_outb(qts, test, 0xe8, 0x21);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x87654321);
|
g_assert_cmphex(isa_inl(qts, test, 0xe0), ==, 0x87654321);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8765);
|
g_assert_cmphex(isa_inw(qts, test, 0xe2), ==, 0x8765);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe0), ==, 0x4321);
|
g_assert_cmphex(isa_inw(qts, test, 0xe0), ==, 0x4321);
|
||||||
qtest_quit(global_qtest);
|
qtest_quit(qts);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_endianness_combine(gconstpointer data)
|
static void test_endianness_combine(gconstpointer data)
|
||||||
{
|
{
|
||||||
const TestCase *test = data;
|
const TestCase *test = data;
|
||||||
|
QTestState *qts;
|
||||||
|
|
||||||
global_qtest = qtest_initf("-M %s%s%s -device pc-testdev",
|
qts = qtest_initf("-M %s%s%s -device pc-testdev", test->machine,
|
||||||
test->machine,
|
test->superio ? " -device " : "",
|
||||||
test->superio ? " -device " : "",
|
test->superio ?: "");
|
||||||
test->superio ?: "");
|
isa_outl(qts, test, 0xe0, 0x87654321);
|
||||||
isa_outl(test, 0xe0, 0x87654321);
|
g_assert_cmphex(isa_inl(qts, test, 0xe8), ==, 0x87654321);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe8), ==, 0x87654321);
|
g_assert_cmphex(isa_inw(qts, test, 0xea), ==, 0x8765);
|
||||||
g_assert_cmphex(isa_inw(test, 0xea), ==, 0x8765);
|
g_assert_cmphex(isa_inw(qts, test, 0xe8), ==, 0x4321);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe8), ==, 0x4321);
|
|
||||||
|
|
||||||
isa_outw(test, 0xe2, 0x8866);
|
isa_outw(qts, test, 0xe2, 0x8866);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe8), ==, 0x88664321);
|
g_assert_cmphex(isa_inl(qts, test, 0xe8), ==, 0x88664321);
|
||||||
g_assert_cmphex(isa_inw(test, 0xea), ==, 0x8866);
|
g_assert_cmphex(isa_inw(qts, test, 0xea), ==, 0x8866);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe8), ==, 0x4321);
|
g_assert_cmphex(isa_inw(qts, test, 0xe8), ==, 0x4321);
|
||||||
|
|
||||||
isa_outw(test, 0xe0, 0x4422);
|
isa_outw(qts, test, 0xe0, 0x4422);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe8), ==, 0x88664422);
|
g_assert_cmphex(isa_inl(qts, test, 0xe8), ==, 0x88664422);
|
||||||
g_assert_cmphex(isa_inw(test, 0xea), ==, 0x8866);
|
g_assert_cmphex(isa_inw(qts, test, 0xea), ==, 0x8866);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe8), ==, 0x4422);
|
g_assert_cmphex(isa_inw(qts, test, 0xe8), ==, 0x4422);
|
||||||
|
|
||||||
isa_outb(test, 0xe3, 0x87);
|
isa_outb(qts, test, 0xe3, 0x87);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe8), ==, 0x87664422);
|
g_assert_cmphex(isa_inl(qts, test, 0xe8), ==, 0x87664422);
|
||||||
g_assert_cmphex(isa_inw(test, 0xea), ==, 0x8766);
|
g_assert_cmphex(isa_inw(qts, test, 0xea), ==, 0x8766);
|
||||||
|
|
||||||
isa_outb(test, 0xe2, 0x65);
|
isa_outb(qts, test, 0xe2, 0x65);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe8), ==, 0x87654422);
|
g_assert_cmphex(isa_inl(qts, test, 0xe8), ==, 0x87654422);
|
||||||
g_assert_cmphex(isa_inw(test, 0xea), ==, 0x8765);
|
g_assert_cmphex(isa_inw(qts, test, 0xea), ==, 0x8765);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe8), ==, 0x4422);
|
g_assert_cmphex(isa_inw(qts, test, 0xe8), ==, 0x4422);
|
||||||
|
|
||||||
isa_outb(test, 0xe1, 0x43);
|
isa_outb(qts, test, 0xe1, 0x43);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe8), ==, 0x87654322);
|
g_assert_cmphex(isa_inl(qts, test, 0xe8), ==, 0x87654322);
|
||||||
g_assert_cmphex(isa_inw(test, 0xea), ==, 0x8765);
|
g_assert_cmphex(isa_inw(qts, test, 0xea), ==, 0x8765);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe8), ==, 0x4322);
|
g_assert_cmphex(isa_inw(qts, test, 0xe8), ==, 0x4322);
|
||||||
|
|
||||||
isa_outb(test, 0xe0, 0x21);
|
isa_outb(qts, test, 0xe0, 0x21);
|
||||||
g_assert_cmphex(isa_inl(test, 0xe8), ==, 0x87654321);
|
g_assert_cmphex(isa_inl(qts, test, 0xe8), ==, 0x87654321);
|
||||||
g_assert_cmphex(isa_inw(test, 0xea), ==, 0x8765);
|
g_assert_cmphex(isa_inw(qts, test, 0xea), ==, 0x8765);
|
||||||
g_assert_cmphex(isa_inw(test, 0xe8), ==, 0x4321);
|
g_assert_cmphex(isa_inw(qts, test, 0xe8), ==, 0x4321);
|
||||||
qtest_quit(global_qtest);
|
qtest_quit(qts);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
|
|
|
@ -23,7 +23,7 @@ static void hex_loader_test(void)
|
||||||
const unsigned int base_addr = 0x00010000;
|
const unsigned int base_addr = 0x00010000;
|
||||||
|
|
||||||
QTestState *s = qtest_initf(
|
QTestState *s = qtest_initf(
|
||||||
"-M vexpress-a9 -nographic -device loader,file=tests/data/hex-loader/test.hex");
|
"-M vexpress-a9 -device loader,file=tests/data/hex-loader/test.hex");
|
||||||
|
|
||||||
for (i = 0; i < 256; ++i) {
|
for (i = 0; i < 256; ++i) {
|
||||||
uint8_t val = qtest_readb(s, base_addr + i);
|
uint8_t val = qtest_readb(s, base_addr + i);
|
||||||
|
|
|
@ -63,14 +63,15 @@ static uint64_t pnv_xscom_addr(const PnvChip *chip, uint32_t pcba)
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t pnv_xscom_read(const PnvChip *chip, uint32_t pcba)
|
static uint64_t pnv_xscom_read(QTestState *qts, const PnvChip *chip,
|
||||||
|
uint32_t pcba)
|
||||||
{
|
{
|
||||||
return readq(pnv_xscom_addr(chip, pcba));
|
return qtest_readq(qts, pnv_xscom_addr(chip, pcba));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_xscom_cfam_id(const PnvChip *chip)
|
static void test_xscom_cfam_id(QTestState *qts, const PnvChip *chip)
|
||||||
{
|
{
|
||||||
uint64_t f000f = pnv_xscom_read(chip, 0xf000f);
|
uint64_t f000f = pnv_xscom_read(qts, chip, 0xf000f);
|
||||||
|
|
||||||
g_assert_cmphex(f000f, ==, chip->cfam_id);
|
g_assert_cmphex(f000f, ==, chip->cfam_id);
|
||||||
}
|
}
|
||||||
|
@ -78,11 +79,11 @@ static void test_xscom_cfam_id(const PnvChip *chip)
|
||||||
static void test_cfam_id(const void *data)
|
static void test_cfam_id(const void *data)
|
||||||
{
|
{
|
||||||
const PnvChip *chip = data;
|
const PnvChip *chip = data;
|
||||||
|
QTestState *qts;
|
||||||
|
|
||||||
global_qtest = qtest_initf("-M powernv,accel=tcg -cpu %s",
|
qts = qtest_initf("-M powernv,accel=tcg -cpu %s", chip->cpu_model);
|
||||||
chip->cpu_model);
|
test_xscom_cfam_id(qts, chip);
|
||||||
test_xscom_cfam_id(chip);
|
qtest_quit(qts);
|
||||||
qtest_quit(global_qtest);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -94,7 +95,7 @@ static void test_cfam_id(const void *data)
|
||||||
|
|
||||||
#define PNV_XSCOM_EX_DTS_RESULT0 0x50000
|
#define PNV_XSCOM_EX_DTS_RESULT0 0x50000
|
||||||
|
|
||||||
static void test_xscom_core(const PnvChip *chip)
|
static void test_xscom_core(QTestState *qts, const PnvChip *chip)
|
||||||
{
|
{
|
||||||
uint32_t first_core_dts0 = PNV_XSCOM_EX_DTS_RESULT0;
|
uint32_t first_core_dts0 = PNV_XSCOM_EX_DTS_RESULT0;
|
||||||
uint64_t dts0;
|
uint64_t dts0;
|
||||||
|
@ -105,7 +106,7 @@ static void test_xscom_core(const PnvChip *chip)
|
||||||
first_core_dts0 |= PNV_XSCOM_P9_EC_BASE(chip->first_core);
|
first_core_dts0 |= PNV_XSCOM_P9_EC_BASE(chip->first_core);
|
||||||
}
|
}
|
||||||
|
|
||||||
dts0 = pnv_xscom_read(chip, first_core_dts0);
|
dts0 = pnv_xscom_read(qts, chip, first_core_dts0);
|
||||||
|
|
||||||
g_assert_cmphex(dts0, ==, 0x26f024f023f0000ull);
|
g_assert_cmphex(dts0, ==, 0x26f024f023f0000ull);
|
||||||
}
|
}
|
||||||
|
@ -113,11 +114,11 @@ static void test_xscom_core(const PnvChip *chip)
|
||||||
static void test_core(const void *data)
|
static void test_core(const void *data)
|
||||||
{
|
{
|
||||||
const PnvChip *chip = data;
|
const PnvChip *chip = data;
|
||||||
|
QTestState *qts;
|
||||||
|
|
||||||
global_qtest = qtest_initf("-M powernv,accel=tcg -cpu %s",
|
qts = qtest_initf("-M powernv,accel=tcg -cpu %s", chip->cpu_model);
|
||||||
chip->cpu_model);
|
test_xscom_core(qts, chip);
|
||||||
test_xscom_core(chip);
|
qtest_quit(qts);
|
||||||
qtest_quit(global_qtest);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void add_test(const char *name, void (*test)(const void *data))
|
static void add_test(const char *name, void (*test)(const void *data))
|
||||||
|
|
Loading…
Reference in a new issue