From bb756eebdac6fd24e8919e2c43f7d2c8c4091f59 Mon Sep 17 00:00:00 2001 From: RajithaY Date: Tue, 25 Apr 2017 03:31:15 -0700 Subject: Adding qemu as a submodule of KVMFORNFV This Patch includes the changes to add qemu as a submodule to kvmfornfv repo and make use of the updated latest qemu for the execution of all testcase Change-Id: I1280af507a857675c7f81d30c95255635667bdd7 Signed-off-by:RajithaY --- qemu/include/sysemu/accel.h | 61 ---- qemu/include/sysemu/arch_init.h | 40 --- qemu/include/sysemu/balloon.h | 28 -- qemu/include/sysemu/block-backend.h | 196 ------------- qemu/include/sysemu/blockdev.h | 67 ----- qemu/include/sysemu/bt.h | 20 -- qemu/include/sysemu/char.h | 412 -------------------------- qemu/include/sysemu/cpus.h | 29 -- qemu/include/sysemu/device_tree.h | 171 ----------- qemu/include/sysemu/dma.h | 220 -------------- qemu/include/sysemu/dump-arch.h | 31 -- qemu/include/sysemu/dump.h | 199 ------------- qemu/include/sysemu/hostmem.h | 67 ----- qemu/include/sysemu/iothread.h | 39 --- qemu/include/sysemu/kvm.h | 526 ---------------------------------- qemu/include/sysemu/kvm_int.h | 39 --- qemu/include/sysemu/memory_mapping.h | 85 ------ qemu/include/sysemu/numa.h | 35 --- qemu/include/sysemu/os-posix.h | 62 ---- qemu/include/sysemu/os-win32.h | 184 ------------ qemu/include/sysemu/qtest.h | 39 --- qemu/include/sysemu/replay.h | 136 --------- qemu/include/sysemu/rng-random.h | 22 -- qemu/include/sysemu/rng.h | 93 ------ qemu/include/sysemu/seccomp.h | 21 -- qemu/include/sysemu/sysemu.h | 258 ----------------- qemu/include/sysemu/tpm.h | 45 --- qemu/include/sysemu/tpm_backend.h | 232 --------------- qemu/include/sysemu/tpm_backend_int.h | 43 --- qemu/include/sysemu/watchdog.h | 53 ---- qemu/include/sysemu/xen-mapcache.h | 55 ---- 31 files changed, 3508 deletions(-) delete mode 100644 qemu/include/sysemu/accel.h delete mode 100644 qemu/include/sysemu/arch_init.h delete mode 100644 qemu/include/sysemu/balloon.h delete mode 100644 qemu/include/sysemu/block-backend.h delete mode 100644 qemu/include/sysemu/blockdev.h delete mode 100644 qemu/include/sysemu/bt.h delete mode 100644 qemu/include/sysemu/char.h delete mode 100644 qemu/include/sysemu/cpus.h delete mode 100644 qemu/include/sysemu/device_tree.h delete mode 100644 qemu/include/sysemu/dma.h delete mode 100644 qemu/include/sysemu/dump-arch.h delete mode 100644 qemu/include/sysemu/dump.h delete mode 100644 qemu/include/sysemu/hostmem.h delete mode 100644 qemu/include/sysemu/iothread.h delete mode 100644 qemu/include/sysemu/kvm.h delete mode 100644 qemu/include/sysemu/kvm_int.h delete mode 100644 qemu/include/sysemu/memory_mapping.h delete mode 100644 qemu/include/sysemu/numa.h delete mode 100644 qemu/include/sysemu/os-posix.h delete mode 100644 qemu/include/sysemu/os-win32.h delete mode 100644 qemu/include/sysemu/qtest.h delete mode 100644 qemu/include/sysemu/replay.h delete mode 100644 qemu/include/sysemu/rng-random.h delete mode 100644 qemu/include/sysemu/rng.h delete mode 100644 qemu/include/sysemu/seccomp.h delete mode 100644 qemu/include/sysemu/sysemu.h delete mode 100644 qemu/include/sysemu/tpm.h delete mode 100644 qemu/include/sysemu/tpm_backend.h delete mode 100644 qemu/include/sysemu/tpm_backend_int.h delete mode 100644 qemu/include/sysemu/watchdog.h delete mode 100644 qemu/include/sysemu/xen-mapcache.h (limited to 'qemu/include/sysemu') diff --git a/qemu/include/sysemu/accel.h b/qemu/include/sysemu/accel.h deleted file mode 100644 index a74b2faf5..000000000 --- a/qemu/include/sysemu/accel.h +++ /dev/null @@ -1,61 +0,0 @@ -/* QEMU accelerator interfaces - * - * Copyright (c) 2014 Red Hat Inc - * - * 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 HW_ACCEL_H -#define HW_ACCEL_H - -#include "qom/object.h" - -typedef struct AccelState { - /*< private >*/ - Object parent_obj; -} AccelState; - -typedef struct AccelClass { - /*< private >*/ - ObjectClass parent_class; - /*< public >*/ - - const char *opt_name; - const char *name; - int (*available)(void); - int (*init_machine)(MachineState *ms); - bool *allowed; -} AccelClass; - -#define TYPE_ACCEL "accel" - -#define ACCEL_CLASS_SUFFIX "-" TYPE_ACCEL -#define ACCEL_CLASS_NAME(a) (a ACCEL_CLASS_SUFFIX) - -#define ACCEL_CLASS(klass) \ - OBJECT_CLASS_CHECK(AccelClass, (klass), TYPE_ACCEL) -#define ACCEL(obj) \ - OBJECT_CHECK(AccelState, (obj), TYPE_ACCEL) -#define ACCEL_GET_CLASS(obj) \ - OBJECT_GET_CLASS(AccelClass, (obj), TYPE_ACCEL) - -extern int tcg_tb_size; - -int configure_accelerator(MachineState *ms); - -#endif diff --git a/qemu/include/sysemu/arch_init.h b/qemu/include/sysemu/arch_init.h deleted file mode 100644 index c38892fec..000000000 --- a/qemu/include/sysemu/arch_init.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef QEMU_ARCH_INIT_H -#define QEMU_ARCH_INIT_H - -#include "qmp-commands.h" -#include "qemu/option.h" - -enum { - QEMU_ARCH_ALL = -1, - QEMU_ARCH_ALPHA = (1 << 0), - QEMU_ARCH_ARM = (1 << 1), - QEMU_ARCH_CRIS = (1 << 2), - QEMU_ARCH_I386 = (1 << 3), - QEMU_ARCH_M68K = (1 << 4), - QEMU_ARCH_LM32 = (1 << 5), - QEMU_ARCH_MICROBLAZE = (1 << 6), - QEMU_ARCH_MIPS = (1 << 7), - QEMU_ARCH_PPC = (1 << 8), - QEMU_ARCH_S390X = (1 << 9), - QEMU_ARCH_SH4 = (1 << 10), - QEMU_ARCH_SPARC = (1 << 11), - QEMU_ARCH_XTENSA = (1 << 12), - QEMU_ARCH_OPENRISC = (1 << 13), - QEMU_ARCH_UNICORE32 = (1 << 14), - QEMU_ARCH_MOXIE = (1 << 15), - QEMU_ARCH_TRICORE = (1 << 16), -}; - -extern const uint32_t arch_type; - -void select_soundhw(const char *optarg); -void do_acpitable_option(const QemuOpts *opts); -void do_smbios_option(QemuOpts *opts); -void cpudef_init(void); -void audio_init(void); -int kvm_available(void); -int xen_available(void); - -CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp); - -#endif diff --git a/qemu/include/sysemu/balloon.h b/qemu/include/sysemu/balloon.h deleted file mode 100644 index 3f976b49e..000000000 --- a/qemu/include/sysemu/balloon.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Balloon - * - * Copyright IBM, Corp. 2008 - * - * Authors: - * Anthony Liguori - * - * This work is licensed under the terms of the GNU GPL, version 2. See - * the COPYING file in the top-level directory. - * - */ - -#ifndef _QEMU_BALLOON_H -#define _QEMU_BALLOON_H - -#include "qapi-types.h" - -typedef void (QEMUBalloonEvent)(void *opaque, ram_addr_t target); -typedef void (QEMUBalloonStatus)(void *opaque, BalloonInfo *info); - -int qemu_add_balloon_handler(QEMUBalloonEvent *event_func, - QEMUBalloonStatus *stat_func, void *opaque); -void qemu_remove_balloon_handler(void *opaque); -bool qemu_balloon_is_inhibited(void); -void qemu_balloon_inhibit(bool state); - -#endif diff --git a/qemu/include/sysemu/block-backend.h b/qemu/include/sysemu/block-backend.h deleted file mode 100644 index c62b6fe96..000000000 --- a/qemu/include/sysemu/block-backend.h +++ /dev/null @@ -1,196 +0,0 @@ -/* - * QEMU Block backends - * - * Copyright (C) 2014 Red Hat, Inc. - * - * Authors: - * Markus Armbruster , - * - * This work is licensed under the terms of the GNU LGPL, version 2.1 - * or later. See the COPYING.LIB file in the top-level directory. - */ - -#ifndef BLOCK_BACKEND_H -#define BLOCK_BACKEND_H - -#include "qemu/iov.h" - -/* - * TODO Have to include block/block.h for a bunch of block layer - * types. Unfortunately, this pulls in the whole BlockDriverState - * API, which we don't want used by many BlockBackend users. Some of - * the types belong here, and the rest should be split into a common - * header and one for the BlockDriverState API. - */ -#include "block/block.h" - -/* Callbacks for block device models */ -typedef struct BlockDevOps { - /* - * Runs when virtual media changed (monitor commands eject, change) - * Argument load is true on load and false on eject. - * Beware: doesn't run when a host device's physical media - * changes. Sure would be useful if it did. - * Device models with removable media must implement this callback. - */ - void (*change_media_cb)(void *opaque, bool load); - /* - * Runs when an eject request is issued from the monitor, the tray - * is closed, and the medium is locked. - * Device models that do not implement is_medium_locked will not need - * this callback. Device models that can lock the medium or tray might - * want to implement the callback and unlock the tray when "force" is - * true, even if they do not support eject requests. - */ - void (*eject_request_cb)(void *opaque, bool force); - /* - * Is the virtual tray open? - * Device models implement this only when the device has a tray. - */ - bool (*is_tray_open)(void *opaque); - /* - * Is the virtual medium locked into the device? - * Device models implement this only when device has such a lock. - */ - bool (*is_medium_locked)(void *opaque); - /* - * Runs when the size changed (e.g. monitor command block_resize) - */ - void (*resize_cb)(void *opaque); -} BlockDevOps; - -BlockBackend *blk_new(Error **errp); -BlockBackend *blk_new_with_bs(Error **errp); -BlockBackend *blk_new_open(const char *filename, const char *reference, - QDict *options, int flags, Error **errp); -int blk_get_refcnt(BlockBackend *blk); -void blk_ref(BlockBackend *blk); -void blk_unref(BlockBackend *blk); -void blk_remove_all_bs(void); -const char *blk_name(BlockBackend *blk); -BlockBackend *blk_by_name(const char *name); -BlockBackend *blk_next(BlockBackend *blk); -BlockDriverState *blk_next_root_bs(BlockDriverState *bs); -bool monitor_add_blk(BlockBackend *blk, const char *name, Error **errp); -void monitor_remove_blk(BlockBackend *blk); - -BlockDriverState *blk_bs(BlockBackend *blk); -void blk_remove_bs(BlockBackend *blk); -void blk_insert_bs(BlockBackend *blk, BlockDriverState *bs); - -void blk_set_allow_write_beyond_eof(BlockBackend *blk, bool allow); -void blk_iostatus_enable(BlockBackend *blk); -bool blk_iostatus_is_enabled(const BlockBackend *blk); -BlockDeviceIoStatus blk_iostatus(const BlockBackend *blk); -void blk_iostatus_disable(BlockBackend *blk); -void blk_iostatus_reset(BlockBackend *blk); -void blk_iostatus_set_err(BlockBackend *blk, int error); -int blk_attach_dev(BlockBackend *blk, void *dev); -void blk_attach_dev_nofail(BlockBackend *blk, void *dev); -void blk_detach_dev(BlockBackend *blk, void *dev); -void *blk_get_attached_dev(BlockBackend *blk); -void blk_set_dev_ops(BlockBackend *blk, const BlockDevOps *ops, void *opaque); -int blk_read(BlockBackend *blk, int64_t sector_num, uint8_t *buf, - int nb_sectors); -int blk_read_unthrottled(BlockBackend *blk, int64_t sector_num, uint8_t *buf, - int nb_sectors); -int blk_write(BlockBackend *blk, int64_t sector_num, const uint8_t *buf, - int nb_sectors); -int blk_write_zeroes(BlockBackend *blk, int64_t sector_num, - int nb_sectors, BdrvRequestFlags flags); -BlockAIOCB *blk_aio_write_zeroes(BlockBackend *blk, int64_t sector_num, - int nb_sectors, BdrvRequestFlags flags, - BlockCompletionFunc *cb, void *opaque); -int blk_pread(BlockBackend *blk, int64_t offset, void *buf, int count); -int blk_pwrite(BlockBackend *blk, int64_t offset, const void *buf, int count); -int64_t blk_getlength(BlockBackend *blk); -void blk_get_geometry(BlockBackend *blk, uint64_t *nb_sectors_ptr); -int64_t blk_nb_sectors(BlockBackend *blk); -BlockAIOCB *blk_aio_readv(BlockBackend *blk, int64_t sector_num, - QEMUIOVector *iov, int nb_sectors, - BlockCompletionFunc *cb, void *opaque); -BlockAIOCB *blk_aio_writev(BlockBackend *blk, int64_t sector_num, - QEMUIOVector *iov, int nb_sectors, - BlockCompletionFunc *cb, void *opaque); -BlockAIOCB *blk_aio_flush(BlockBackend *blk, - BlockCompletionFunc *cb, void *opaque); -BlockAIOCB *blk_aio_discard(BlockBackend *blk, - int64_t sector_num, int nb_sectors, - BlockCompletionFunc *cb, void *opaque); -void blk_aio_cancel(BlockAIOCB *acb); -void blk_aio_cancel_async(BlockAIOCB *acb); -int blk_aio_multiwrite(BlockBackend *blk, BlockRequest *reqs, int num_reqs); -int blk_ioctl(BlockBackend *blk, unsigned long int req, void *buf); -BlockAIOCB *blk_aio_ioctl(BlockBackend *blk, unsigned long int req, void *buf, - BlockCompletionFunc *cb, void *opaque); -int blk_co_discard(BlockBackend *blk, int64_t sector_num, int nb_sectors); -int blk_co_flush(BlockBackend *blk); -int blk_flush(BlockBackend *blk); -int blk_flush_all(void); -int blk_commit_all(void); -void blk_drain(BlockBackend *blk); -void blk_drain_all(void); -void blk_set_on_error(BlockBackend *blk, BlockdevOnError on_read_error, - BlockdevOnError on_write_error); -BlockdevOnError blk_get_on_error(BlockBackend *blk, bool is_read); -BlockErrorAction blk_get_error_action(BlockBackend *blk, bool is_read, - int error); -void blk_error_action(BlockBackend *blk, BlockErrorAction action, - bool is_read, int error); -int blk_is_read_only(BlockBackend *blk); -int blk_is_sg(BlockBackend *blk); -int blk_enable_write_cache(BlockBackend *blk); -void blk_set_enable_write_cache(BlockBackend *blk, bool wce); -void blk_invalidate_cache(BlockBackend *blk, Error **errp); -bool blk_is_inserted(BlockBackend *blk); -bool blk_is_available(BlockBackend *blk); -void blk_lock_medium(BlockBackend *blk, bool locked); -void blk_eject(BlockBackend *blk, bool eject_flag); -int blk_get_flags(BlockBackend *blk); -int blk_get_max_transfer_length(BlockBackend *blk); -int blk_get_max_iov(BlockBackend *blk); -void blk_set_guest_block_size(BlockBackend *blk, int align); -void *blk_try_blockalign(BlockBackend *blk, size_t size); -void *blk_blockalign(BlockBackend *blk, size_t size); -bool blk_op_is_blocked(BlockBackend *blk, BlockOpType op, Error **errp); -void blk_op_unblock(BlockBackend *blk, BlockOpType op, Error *reason); -void blk_op_block_all(BlockBackend *blk, Error *reason); -void blk_op_unblock_all(BlockBackend *blk, Error *reason); -AioContext *blk_get_aio_context(BlockBackend *blk); -void blk_set_aio_context(BlockBackend *blk, AioContext *new_context); -void blk_add_aio_context_notifier(BlockBackend *blk, - void (*attached_aio_context)(AioContext *new_context, void *opaque), - void (*detach_aio_context)(void *opaque), void *opaque); -void blk_remove_aio_context_notifier(BlockBackend *blk, - void (*attached_aio_context)(AioContext *, - void *), - void (*detach_aio_context)(void *), - void *opaque); -void blk_add_remove_bs_notifier(BlockBackend *blk, Notifier *notify); -void blk_add_insert_bs_notifier(BlockBackend *blk, Notifier *notify); -void blk_io_plug(BlockBackend *blk); -void blk_io_unplug(BlockBackend *blk); -BlockAcctStats *blk_get_stats(BlockBackend *blk); -BlockBackendRootState *blk_get_root_state(BlockBackend *blk); -void blk_update_root_state(BlockBackend *blk); -void blk_apply_root_state(BlockBackend *blk, BlockDriverState *bs); -int blk_get_open_flags_from_root_state(BlockBackend *blk); - -void *blk_aio_get(const AIOCBInfo *aiocb_info, BlockBackend *blk, - BlockCompletionFunc *cb, void *opaque); -int coroutine_fn blk_co_write_zeroes(BlockBackend *blk, int64_t sector_num, - int nb_sectors, BdrvRequestFlags flags); -int blk_write_compressed(BlockBackend *blk, int64_t sector_num, - const uint8_t *buf, int nb_sectors); -int blk_truncate(BlockBackend *blk, int64_t offset); -int blk_discard(BlockBackend *blk, int64_t sector_num, int nb_sectors); -int blk_save_vmstate(BlockBackend *blk, const uint8_t *buf, - int64_t pos, int size); -int blk_load_vmstate(BlockBackend *blk, uint8_t *buf, int64_t pos, int size); -int blk_probe_blocksizes(BlockBackend *blk, BlockSizes *bsz); -int blk_probe_geometry(BlockBackend *blk, HDGeometry *geo); -BlockAIOCB *blk_abort_aio_request(BlockBackend *blk, - BlockCompletionFunc *cb, - void *opaque, int ret); - -#endif diff --git a/qemu/include/sysemu/blockdev.h b/qemu/include/sysemu/blockdev.h deleted file mode 100644 index 16432f350..000000000 --- a/qemu/include/sysemu/blockdev.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * QEMU host block devices - * - * Copyright (c) 2003-2008 Fabrice Bellard - * - * This work is licensed under the terms of the GNU GPL, version 2 or - * later. See the COPYING file in the top-level directory. - */ - -#ifndef BLOCKDEV_H -#define BLOCKDEV_H - -#include "block/block.h" -#include "qemu/queue.h" - -void blockdev_mark_auto_del(BlockBackend *blk); -void blockdev_auto_del(BlockBackend *blk); - -typedef enum { - IF_DEFAULT = -1, /* for use with drive_add() only */ - /* - * IF_IDE must be zero, because we want MachineClass member - * block_default_type to default-initialize to IF_IDE - */ - IF_IDE = 0, - IF_NONE, - IF_SCSI, IF_FLOPPY, IF_PFLASH, IF_MTD, IF_SD, IF_VIRTIO, IF_XEN, - IF_COUNT -} BlockInterfaceType; - -struct DriveInfo { - const char *devaddr; - BlockInterfaceType type; - int bus; - int unit; - int auto_del; /* see blockdev_mark_auto_del() */ - bool is_default; /* Added by default_drive() ? */ - int media_cd; - int cyls, heads, secs, trans; - QemuOpts *opts; - char *serial; - QTAILQ_ENTRY(DriveInfo) next; -}; - -DriveInfo *blk_legacy_dinfo(BlockBackend *blk); -DriveInfo *blk_set_legacy_dinfo(BlockBackend *blk, DriveInfo *dinfo); -BlockBackend *blk_by_legacy_dinfo(DriveInfo *dinfo); - -void override_max_devs(BlockInterfaceType type, int max_devs); - -DriveInfo *drive_get(BlockInterfaceType type, int bus, int unit); -bool drive_check_orphaned(void); -DriveInfo *drive_get_by_index(BlockInterfaceType type, int index); -int drive_get_max_bus(BlockInterfaceType type); -int drive_get_max_devs(BlockInterfaceType type); -DriveInfo *drive_get_next(BlockInterfaceType type); - -QemuOpts *drive_def(const char *optstr); -QemuOpts *drive_add(BlockInterfaceType type, int index, const char *file, - const char *optstr); -DriveInfo *drive_new(QemuOpts *arg, BlockInterfaceType block_default_type); - -/* device-hotplug */ - -void hmp_commit(Monitor *mon, const QDict *qdict); -void hmp_drive_del(Monitor *mon, const QDict *qdict); -#endif diff --git a/qemu/include/sysemu/bt.h b/qemu/include/sysemu/bt.h deleted file mode 100644 index 2bc6d53cc..000000000 --- a/qemu/include/sysemu/bt.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef BT_HOST_H -#define BT_HOST_H - -/* BT HCI info */ - -struct HCIInfo { - int (*bdaddr_set)(struct HCIInfo *hci, const uint8_t *bd_addr); - 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 (*acl_send)(struct HCIInfo *hci, const uint8_t *data, int len); - void *opaque; - void (*evt_recv)(void *opaque, const uint8_t *data, int len); - void (*acl_recv)(void *opaque, const uint8_t *data, int len); -}; - -/* bt-host.c */ -struct HCIInfo *bt_host_hci(const char *id); -struct HCIInfo *qemu_next_hci(void); - -#endif diff --git a/qemu/include/sysemu/char.h b/qemu/include/sysemu/char.h deleted file mode 100644 index 307fd8fde..000000000 --- a/qemu/include/sysemu/char.h +++ /dev/null @@ -1,412 +0,0 @@ -#ifndef QEMU_CHAR_H -#define QEMU_CHAR_H - -#include "qemu-common.h" -#include "qemu/queue.h" -#include "qemu/option.h" -#include "qemu/config-file.h" -#include "block/aio.h" -#include "qapi/qmp/qobject.h" -#include "qapi/qmp/qstring.h" -#include "qemu/main-loop.h" - -/* character device */ - -#define CHR_EVENT_BREAK 0 /* serial break char */ -#define CHR_EVENT_FOCUS 1 /* focus to this terminal (modal input needed) */ -#define CHR_EVENT_OPENED 2 /* new connection established */ -#define CHR_EVENT_MUX_IN 3 /* mux-focus was set to this terminal */ -#define CHR_EVENT_MUX_OUT 4 /* mux-focus will move on */ -#define CHR_EVENT_CLOSED 5 /* connection closed */ - - -#define CHR_IOCTL_SERIAL_SET_PARAMS 1 -typedef struct { - int speed; - int parity; - int data_bits; - int stop_bits; -} QEMUSerialSetParams; - -#define CHR_IOCTL_SERIAL_SET_BREAK 2 - -#define CHR_IOCTL_PP_READ_DATA 3 -#define CHR_IOCTL_PP_WRITE_DATA 4 -#define CHR_IOCTL_PP_READ_CONTROL 5 -#define CHR_IOCTL_PP_WRITE_CONTROL 6 -#define CHR_IOCTL_PP_READ_STATUS 7 -#define CHR_IOCTL_PP_EPP_READ_ADDR 8 -#define CHR_IOCTL_PP_EPP_READ 9 -#define CHR_IOCTL_PP_EPP_WRITE_ADDR 10 -#define CHR_IOCTL_PP_EPP_WRITE 11 -#define CHR_IOCTL_PP_DATA_DIR 12 - -struct ParallelIOArg { - void *buffer; - int count; -}; - -#define CHR_IOCTL_SERIAL_SET_TIOCM 13 -#define CHR_IOCTL_SERIAL_GET_TIOCM 14 - -#define CHR_TIOCM_CTS 0x020 -#define CHR_TIOCM_CAR 0x040 -#define CHR_TIOCM_DSR 0x100 -#define CHR_TIOCM_RI 0x080 -#define CHR_TIOCM_DTR 0x002 -#define CHR_TIOCM_RTS 0x004 - -typedef void IOEventHandler(void *opaque, int event); - -struct CharDriverState { - QemuMutex chr_write_lock; - void (*init)(struct CharDriverState *s); - int (*chr_write)(struct CharDriverState *s, const uint8_t *buf, int len); - int (*chr_sync_read)(struct CharDriverState *s, - const uint8_t *buf, int len); - GSource *(*chr_add_watch)(struct CharDriverState *s, GIOCondition cond); - void (*chr_update_read_handler)(struct CharDriverState *s); - int (*chr_ioctl)(struct CharDriverState *s, int cmd, void *arg); - int (*get_msgfds)(struct CharDriverState *s, int* fds, int num); - int (*set_msgfds)(struct CharDriverState *s, int *fds, int num); - int (*chr_add_client)(struct CharDriverState *chr, int fd); - IOEventHandler *chr_event; - IOCanReadHandler *chr_can_read; - IOReadHandler *chr_read; - void *handler_opaque; - void (*chr_close)(struct CharDriverState *chr); - void (*chr_accept_input)(struct CharDriverState *chr); - void (*chr_set_echo)(struct CharDriverState *chr, bool echo); - void (*chr_set_fe_open)(struct CharDriverState *chr, int fe_open); - void (*chr_fe_event)(struct CharDriverState *chr, int event); - void *opaque; - char *label; - char *filename; - int logfd; - int be_open; - int fe_open; - int explicit_fe_open; - int explicit_be_open; - int avail_connections; - int is_mux; - guint fd_in_tag; - QemuOpts *opts; - bool replay; - QTAILQ_ENTRY(CharDriverState) next; -}; - -/** - * qemu_chr_alloc: - * @backend: the common backend config - * @errp: pointer to a NULL-initialized error object - * - * Allocate and initialize a new CharDriverState. - * - * Returns: a newly allocated CharDriverState, or NULL on error. - */ -CharDriverState *qemu_chr_alloc(ChardevCommon *backend, Error **errp); - -/** - * @qemu_chr_new_from_opts: - * - * Create a new character backend from a QemuOpts list. - * - * @opts see qemu-config.c for a list of valid options - * @init not sure.. - * - * Returns: a new character backend - */ -CharDriverState *qemu_chr_new_from_opts(QemuOpts *opts, - void (*init)(struct CharDriverState *s), - Error **errp); - -/** - * @qemu_chr_parse_common: - * - * Parse the common options available to all character backends. - * - * @opts the options that still need parsing - * @backend a new backend - */ -void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon *backend); - -/** - * @qemu_chr_new: - * - * Create a new character backend from a URI. - * - * @label the name of the backend - * @filename the URI - * @init not sure.. - * - * Returns: a new character backend - */ -CharDriverState *qemu_chr_new(const char *label, const char *filename, - void (*init)(struct CharDriverState *s)); - -/** - * @qemu_chr_new_noreplay: - * - * Create a new character backend from a URI. - * Character device communications are not written - * into the replay log. - * - * @label the name of the backend - * @filename the URI - * @init not sure.. - * - * Returns: a new character backend - */ -CharDriverState *qemu_chr_new_noreplay(const char *label, const char *filename, - void (*init)(struct CharDriverState *s)); - -/** - * @qemu_chr_delete: - * - * Destroy a character backend and remove it from the list of - * identified character backends. - */ -void qemu_chr_delete(CharDriverState *chr); - -/** - * @qemu_chr_free: - * - * Destroy a character backend. - */ -void qemu_chr_free(CharDriverState *chr); - -/** - * @qemu_chr_fe_set_echo: - * - * Ask the backend to override its normal echo setting. This only really - * applies to the stdio backend and is used by the QMP server such that you - * can see what you type if you try to type QMP commands. - * - * @echo true to enable echo, false to disable echo - */ -void qemu_chr_fe_set_echo(struct CharDriverState *chr, bool echo); - -/** - * @qemu_chr_fe_set_open: - * - * Set character frontend open status. This is an indication that the - * front end is ready (or not) to begin doing I/O. - */ -void qemu_chr_fe_set_open(struct CharDriverState *chr, int fe_open); - -/** - * @qemu_chr_fe_event: - * - * Send an event from the front end to the back end. - * - * @event the event to send - */ -void qemu_chr_fe_event(CharDriverState *s, int event); - -/** - * @qemu_chr_fe_printf: - * - * Write to a character backend using a printf style interface. - * This function is thread-safe. - * - * @fmt see #printf - */ -void qemu_chr_fe_printf(CharDriverState *s, const char *fmt, ...) - GCC_FMT_ATTR(2, 3); - -int qemu_chr_fe_add_watch(CharDriverState *s, GIOCondition cond, - GIOFunc func, void *user_data); - -/** - * @qemu_chr_fe_write: - * - * Write data to a character backend from the front end. This function - * will send data from the front end to the back end. This function - * is thread-safe. - * - * @buf the data - * @len the number of bytes to send - * - * Returns: the number of bytes consumed - */ -int qemu_chr_fe_write(CharDriverState *s, const uint8_t *buf, int len); - -/** - * @qemu_chr_fe_write_all: - * - * Write data to a character backend from the front end. This function will - * send data from the front end to the back end. Unlike @qemu_chr_fe_write, - * this function will block if the back end cannot consume all of the data - * attempted to be written. This function is thread-safe. - * - * @buf the data - * @len the number of bytes to send - * - * Returns: the number of bytes consumed - */ -int qemu_chr_fe_write_all(CharDriverState *s, const uint8_t *buf, int len); - -/** - * @qemu_chr_fe_read_all: - * - * Read data to a buffer from the back end. - * - * @buf the data buffer - * @len the number of bytes to read - * - * Returns: the number of bytes read - */ -int qemu_chr_fe_read_all(CharDriverState *s, uint8_t *buf, int len); - -/** - * @qemu_chr_fe_ioctl: - * - * Issue a device specific ioctl to a backend. This function is thread-safe. - * - * @cmd see CHR_IOCTL_* - * @arg the data associated with @cmd - * - * Returns: if @cmd is not supported by the backend, -ENOTSUP, otherwise the - * return value depends on the semantics of @cmd - */ -int qemu_chr_fe_ioctl(CharDriverState *s, int cmd, void *arg); - -/** - * @qemu_chr_fe_get_msgfd: - * - * For backends capable of fd passing, return the latest file descriptor passed - * by a client. - * - * Returns: -1 if fd passing isn't supported or there is no pending file - * descriptor. If a file descriptor is returned, subsequent calls to - * this function will return -1 until a client sends a new file - * descriptor. - */ -int qemu_chr_fe_get_msgfd(CharDriverState *s); - -/** - * @qemu_chr_fe_get_msgfds: - * - * For backends capable of fd passing, return the number of file received - * descriptors and fills the fds array up to num elements - * - * Returns: -1 if fd passing isn't supported or there are no pending file - * descriptors. If file descriptors are returned, subsequent calls to - * this function will return -1 until a client sends a new set of file - * descriptors. - */ -int qemu_chr_fe_get_msgfds(CharDriverState *s, int *fds, int num); - -/** - * @qemu_chr_fe_set_msgfds: - * - * For backends capable of fd passing, set an array of fds to be passed with - * the next send operation. - * A subsequent call to this function before calling a write function will - * result in overwriting the fd array with the new value without being send. - * Upon writing the message the fd array is freed. - * - * Returns: -1 if fd passing isn't supported. - */ -int qemu_chr_fe_set_msgfds(CharDriverState *s, int *fds, int num); - -/** - * @qemu_chr_fe_claim: - * - * Claim a backend before using it, should be called before calling - * qemu_chr_add_handlers(). - * - * Returns: -1 if the backend is already in use by another frontend, 0 on - * success. - */ -int qemu_chr_fe_claim(CharDriverState *s); - -/** - * @qemu_chr_fe_claim_no_fail: - * - * Like qemu_chr_fe_claim, but will exit qemu with an error when the - * backend is already in use. - */ -void qemu_chr_fe_claim_no_fail(CharDriverState *s); - -/** - * @qemu_chr_fe_claim: - * - * Release a backend for use by another frontend. - * - * Returns: -1 if the backend is already in use by another frontend, 0 on - * success. - */ -void qemu_chr_fe_release(CharDriverState *s); - -/** - * @qemu_chr_be_can_write: - * - * Determine how much data the front end can currently accept. This function - * returns the number of bytes the front end can accept. If it returns 0, the - * front end cannot receive data at the moment. The function must be polled - * to determine when data can be received. - * - * Returns: the number of bytes the front end can receive via @qemu_chr_be_write - */ -int qemu_chr_be_can_write(CharDriverState *s); - -/** - * @qemu_chr_be_write: - * - * Write data from the back end to the front end. Before issuing this call, - * the caller should call @qemu_chr_be_can_write to determine how much data - * the front end can currently accept. - * - * @buf a buffer to receive data from the front end - * @len the number of bytes to receive from the front end - */ -void qemu_chr_be_write(CharDriverState *s, uint8_t *buf, int len); - -/** - * @qemu_chr_be_write_impl: - * - * Implementation of back end writing. Used by replay module. - * - * @buf a buffer to receive data from the front end - * @len the number of bytes to receive from the front end - */ -void qemu_chr_be_write_impl(CharDriverState *s, uint8_t *buf, int len); - -/** - * @qemu_chr_be_event: - * - * Send an event from the back end to the front end. - * - * @event the event to send - */ -void qemu_chr_be_event(CharDriverState *s, int event); - -void qemu_chr_add_handlers(CharDriverState *s, - IOCanReadHandler *fd_can_read, - IOReadHandler *fd_read, - IOEventHandler *fd_event, - void *opaque); - -void qemu_chr_be_generic_open(CharDriverState *s); -void qemu_chr_accept_input(CharDriverState *s); -int qemu_chr_add_client(CharDriverState *s, int fd); -CharDriverState *qemu_chr_find(const char *name); -bool chr_is_ringbuf(const CharDriverState *chr); - -QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename); - -void register_char_driver(const char *name, ChardevBackendKind kind, - void (*parse)(QemuOpts *opts, ChardevBackend *backend, Error **errp), - CharDriverState *(*create)(const char *id, ChardevBackend *backend, - ChardevReturn *ret, Error **errp)); - -extern int term_escape_char; - -CharDriverState *qemu_char_get_next_serial(void); - -/* console.c */ -typedef CharDriverState *(VcHandler)(ChardevVC *vc, Error **errp); -void register_vc_handler(VcHandler *handler); - -#endif diff --git a/qemu/include/sysemu/cpus.h b/qemu/include/sysemu/cpus.h deleted file mode 100644 index 3d1e5ba1e..000000000 --- a/qemu/include/sysemu/cpus.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef QEMU_CPUS_H -#define QEMU_CPUS_H - -/* cpus.c */ -bool qemu_in_vcpu_thread(void); -void qemu_init_cpu_loop(void); -void resume_all_vcpus(void); -void pause_all_vcpus(void); -void cpu_stop_current(void); - -void cpu_synchronize_all_states(void); -void cpu_synchronize_all_post_reset(void); -void cpu_synchronize_all_post_init(void); - -void qtest_clock_warp(int64_t dest); - -#ifndef CONFIG_USER_ONLY -/* vl.c */ -extern int smp_cores; -extern int smp_threads; -#else -/* *-user doesn't have configurable SMP topology */ -#define smp_cores 1 -#define smp_threads 1 -#endif - -void list_cpus(FILE *f, fprintf_function cpu_fprintf, const char *optarg); - -#endif diff --git a/qemu/include/sysemu/device_tree.h b/qemu/include/sysemu/device_tree.h deleted file mode 100644 index 705650aad..000000000 --- a/qemu/include/sysemu/device_tree.h +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Header with function prototypes to help device tree manipulation using - * libfdt. It also provides functions to read entries from device tree proc - * interface. - * - * Copyright 2008 IBM Corporation. - * Authors: Jerone Young - * Hollis Blanchard - * - * This work is licensed under the GNU GPL license version 2 or later. - * - */ - -#ifndef __DEVICE_TREE_H__ -#define __DEVICE_TREE_H__ - -void *create_device_tree(int *sizep); -void *load_device_tree(const char *filename_path, int *sizep); -#ifdef CONFIG_LINUX -/** - * load_device_tree_from_sysfs: reads the device tree information in the - * /proc/device-tree directory and return the corresponding binary blob - * buffer pointer. Asserts in case of error. - */ -void *load_device_tree_from_sysfs(void); -#endif - -/** - * qemu_fdt_node_path: return the paths of nodes matching a given - * name and compat string - * @fdt: pointer to the dt blob - * @name: node name - * @compat: compatibility string - * @errp: handle to an error object - * - * returns a newly allocated NULL-terminated array of node paths. - * Use g_strfreev() to free it. If one or more nodes were found, the - * array contains the path of each node and the last element equals to - * NULL. If there is no error but no matching node was found, the - * returned array contains a single element equal to NULL. If an error - * was encountered when parsing the blob, the function returns NULL - */ -char **qemu_fdt_node_path(void *fdt, const char *name, char *compat, - Error **errp); - -int qemu_fdt_setprop(void *fdt, const char *node_path, - const char *property, const void *val, int size); -int qemu_fdt_setprop_cell(void *fdt, const char *node_path, - const char *property, uint32_t val); -int qemu_fdt_setprop_u64(void *fdt, const char *node_path, - const char *property, uint64_t val); -int qemu_fdt_setprop_string(void *fdt, const char *node_path, - const char *property, const char *string); -int qemu_fdt_setprop_phandle(void *fdt, const char *node_path, - const char *property, - const char *target_node_path); -/** - * qemu_fdt_getprop: retrieve the value of a given property - * @fdt: pointer to the device tree blob - * @node_path: node path - * @property: name of the property to find - * @lenp: fdt error if any or length of the property on success - * @errp: handle to an error object - * - * returns a pointer to the property on success and NULL on failure - */ -const void *qemu_fdt_getprop(void *fdt, const char *node_path, - const char *property, int *lenp, - Error **errp); -/** - * qemu_fdt_getprop_cell: retrieve the value of a given 4 byte property - * @fdt: pointer to the device tree blob - * @node_path: node path - * @property: name of the property to find - * @lenp: fdt error if any or -EINVAL if the property size is different from - * 4 bytes, or 4 (expected length of the property) upon success. - * @errp: handle to an error object - * - * returns the property value on success - */ -uint32_t qemu_fdt_getprop_cell(void *fdt, const char *node_path, - const char *property, int *lenp, - Error **errp); -uint32_t qemu_fdt_get_phandle(void *fdt, const char *path); -uint32_t qemu_fdt_alloc_phandle(void *fdt); -int qemu_fdt_nop_node(void *fdt, const char *node_path); -int qemu_fdt_add_subnode(void *fdt, const char *name); - -#define qemu_fdt_setprop_cells(fdt, node_path, property, ...) \ - do { \ - uint32_t qdt_tmp[] = { __VA_ARGS__ }; \ - int i; \ - \ - for (i = 0; i < ARRAY_SIZE(qdt_tmp); i++) { \ - qdt_tmp[i] = cpu_to_be32(qdt_tmp[i]); \ - } \ - qemu_fdt_setprop(fdt, node_path, property, qdt_tmp, \ - sizeof(qdt_tmp)); \ - } while (0) - -void qemu_fdt_dumpdtb(void *fdt, int size); - -/** - * qemu_fdt_setprop_sized_cells_from_array: - * @fdt: device tree blob - * @node_path: node to set property on - * @property: property to set - * @numvalues: number of values - * @values: array of number-of-cells, value pairs - * - * Set the specified property on the specified node in the device tree - * to be an array of cells. The values of the cells are specified via - * the values list, which alternates between "number of cells used by - * this value" and "value". - * number-of-cells must be either 1 or 2 (other values will result in - * an error being returned). If a value is too large to fit in the - * number of cells specified for it, an error is returned. - * - * This function is useful because device tree nodes often have cell arrays - * which are either lists of addresses or lists of address,size tuples, but - * the number of cells used for each element vary depending on the - * #address-cells and #size-cells properties of their parent node. - * If you know all your cell elements are one cell wide you can use the - * simpler qemu_fdt_setprop_cells(). If you're not setting up the - * array programmatically, qemu_fdt_setprop_sized_cells may be more - * convenient. - * - * Return value: 0 on success, <0 on error. - */ -int qemu_fdt_setprop_sized_cells_from_array(void *fdt, - const char *node_path, - const char *property, - int numvalues, - uint64_t *values); - -/** - * qemu_fdt_setprop_sized_cells: - * @fdt: device tree blob - * @node_path: node to set property on - * @property: property to set - * @...: list of number-of-cells, value pairs - * - * Set the specified property on the specified node in the device tree - * to be an array of cells. The values of the cells are specified via - * the variable arguments, which alternates between "number of cells - * used by this value" and "value". - * - * This is a convenience wrapper for the function - * qemu_fdt_setprop_sized_cells_from_array(). - * - * Return value: 0 on success, <0 on error. - */ -#define qemu_fdt_setprop_sized_cells(fdt, node_path, property, ...) \ - ({ \ - uint64_t qdt_tmp[] = { __VA_ARGS__ }; \ - qemu_fdt_setprop_sized_cells_from_array(fdt, node_path, \ - property, \ - ARRAY_SIZE(qdt_tmp) / 2, \ - qdt_tmp); \ - }) - -#define FDT_PCI_RANGE_RELOCATABLE 0x80000000 -#define FDT_PCI_RANGE_PREFETCHABLE 0x40000000 -#define FDT_PCI_RANGE_ALIASED 0x20000000 -#define FDT_PCI_RANGE_TYPE_MASK 0x03000000 -#define FDT_PCI_RANGE_MMIO_64BIT 0x03000000 -#define FDT_PCI_RANGE_MMIO 0x02000000 -#define FDT_PCI_RANGE_IOPORT 0x01000000 -#define FDT_PCI_RANGE_CONFIG 0x00000000 - -#endif /* __DEVICE_TREE_H__ */ diff --git a/qemu/include/sysemu/dma.h b/qemu/include/sysemu/dma.h deleted file mode 100644 index b0fbb9bb3..000000000 --- a/qemu/include/sysemu/dma.h +++ /dev/null @@ -1,220 +0,0 @@ -/* - * DMA helper functions - * - * Copyright (c) 2009 Red Hat - * - * This work is licensed under the terms of the GNU General Public License - * (GNU GPL), version 2 or later. - */ - -#ifndef DMA_H -#define DMA_H - -#include "exec/memory.h" -#include "exec/address-spaces.h" -#include "hw/hw.h" -#include "block/block.h" -#include "block/accounting.h" -#include "sysemu/kvm.h" - -typedef struct ScatterGatherEntry ScatterGatherEntry; - -typedef enum { - DMA_DIRECTION_TO_DEVICE = 0, - DMA_DIRECTION_FROM_DEVICE = 1, -} DMADirection; - -struct QEMUSGList { - ScatterGatherEntry *sg; - int nsg; - int nalloc; - size_t size; - DeviceState *dev; - AddressSpace *as; -}; - -#ifndef CONFIG_USER_ONLY - -/* - * When an IOMMU is present, bus addresses become distinct from - * CPU/memory physical addresses and may be a different size. Because - * the IOVA size depends more on the bus than on the platform, we more - * or less have to treat these as 64-bit always to cover all (or at - * least most) cases. - */ -typedef uint64_t dma_addr_t; - -#define DMA_ADDR_BITS 64 -#define DMA_ADDR_FMT "%" PRIx64 - -static inline void dma_barrier(AddressSpace *as, DMADirection dir) -{ - /* - * This is called before DMA read and write operations - * unless the _relaxed form is used and is responsible - * for providing some sane ordering of accesses vs - * concurrently running VCPUs. - * - * Users of map(), unmap() or lower level st/ld_* - * operations are responsible for providing their own - * ordering via barriers. - * - * This primitive implementation does a simple smp_mb() - * before each operation which provides pretty much full - * ordering. - * - * A smarter implementation can be devised if needed to - * use lighter barriers based on the direction of the - * transfer, the DMA context, etc... - */ - if (kvm_enabled()) { - smp_mb(); - } -} - -/* Checks that the given range of addresses is valid for DMA. This is - * useful for certain cases, but usually you should just use - * dma_memory_{read,write}() and check for errors */ -static inline bool dma_memory_valid(AddressSpace *as, - dma_addr_t addr, dma_addr_t len, - DMADirection dir) -{ - return address_space_access_valid(as, addr, len, - dir == DMA_DIRECTION_FROM_DEVICE); -} - -static inline int dma_memory_rw_relaxed(AddressSpace *as, dma_addr_t addr, - void *buf, dma_addr_t len, - DMADirection dir) -{ - return (bool)address_space_rw(as, addr, MEMTXATTRS_UNSPECIFIED, - buf, len, dir == DMA_DIRECTION_FROM_DEVICE); -} - -static inline int dma_memory_read_relaxed(AddressSpace *as, dma_addr_t addr, - void *buf, dma_addr_t len) -{ - return dma_memory_rw_relaxed(as, addr, buf, len, DMA_DIRECTION_TO_DEVICE); -} - -static inline int dma_memory_write_relaxed(AddressSpace *as, dma_addr_t addr, - const void *buf, dma_addr_t len) -{ - return dma_memory_rw_relaxed(as, addr, (void *)buf, len, - DMA_DIRECTION_FROM_DEVICE); -} - -static inline int dma_memory_rw(AddressSpace *as, dma_addr_t addr, - void *buf, dma_addr_t len, - DMADirection dir) -{ - dma_barrier(as, dir); - - return dma_memory_rw_relaxed(as, addr, buf, len, dir); -} - -static inline int dma_memory_read(AddressSpace *as, dma_addr_t addr, - void *buf, dma_addr_t len) -{ - return dma_memory_rw(as, addr, buf, len, DMA_DIRECTION_TO_DEVICE); -} - -static inline int dma_memory_write(AddressSpace *as, dma_addr_t addr, - const void *buf, dma_addr_t len) -{ - return dma_memory_rw(as, addr, (void *)buf, len, - DMA_DIRECTION_FROM_DEVICE); -} - -int dma_memory_set(AddressSpace *as, dma_addr_t addr, uint8_t c, dma_addr_t len); - -static inline void *dma_memory_map(AddressSpace *as, - dma_addr_t addr, dma_addr_t *len, - DMADirection dir) -{ - hwaddr xlen = *len; - void *p; - - p = address_space_map(as, addr, &xlen, dir == DMA_DIRECTION_FROM_DEVICE); - *len = xlen; - return p; -} - -static inline void dma_memory_unmap(AddressSpace *as, - void *buffer, dma_addr_t len, - DMADirection dir, dma_addr_t access_len) -{ - address_space_unmap(as, buffer, (hwaddr)len, - dir == DMA_DIRECTION_FROM_DEVICE, access_len); -} - -#define DEFINE_LDST_DMA(_lname, _sname, _bits, _end) \ - static inline uint##_bits##_t ld##_lname##_##_end##_dma(AddressSpace *as, \ - dma_addr_t addr) \ - { \ - uint##_bits##_t val; \ - dma_memory_read(as, addr, &val, (_bits) / 8); \ - return _end##_bits##_to_cpu(val); \ - } \ - static inline void st##_sname##_##_end##_dma(AddressSpace *as, \ - dma_addr_t addr, \ - uint##_bits##_t val) \ - { \ - val = cpu_to_##_end##_bits(val); \ - dma_memory_write(as, addr, &val, (_bits) / 8); \ - } - -static inline uint8_t ldub_dma(AddressSpace *as, dma_addr_t addr) -{ - uint8_t val; - - dma_memory_read(as, addr, &val, 1); - return val; -} - -static inline void stb_dma(AddressSpace *as, dma_addr_t addr, uint8_t val) -{ - dma_memory_write(as, addr, &val, 1); -} - -DEFINE_LDST_DMA(uw, w, 16, le); -DEFINE_LDST_DMA(l, l, 32, le); -DEFINE_LDST_DMA(q, q, 64, le); -DEFINE_LDST_DMA(uw, w, 16, be); -DEFINE_LDST_DMA(l, l, 32, be); -DEFINE_LDST_DMA(q, q, 64, be); - -#undef DEFINE_LDST_DMA - -struct ScatterGatherEntry { - dma_addr_t base; - dma_addr_t len; -}; - -void qemu_sglist_init(QEMUSGList *qsg, DeviceState *dev, int alloc_hint, - AddressSpace *as); -void qemu_sglist_add(QEMUSGList *qsg, dma_addr_t base, dma_addr_t len); -void qemu_sglist_destroy(QEMUSGList *qsg); -#endif - -typedef BlockAIOCB *DMAIOFunc(BlockBackend *blk, int64_t sector_num, - QEMUIOVector *iov, int nb_sectors, - BlockCompletionFunc *cb, void *opaque); - -BlockAIOCB *dma_blk_io(BlockBackend *blk, - QEMUSGList *sg, uint64_t sector_num, - DMAIOFunc *io_func, BlockCompletionFunc *cb, - void *opaque, DMADirection dir); -BlockAIOCB *dma_blk_read(BlockBackend *blk, - QEMUSGList *sg, uint64_t sector, - BlockCompletionFunc *cb, void *opaque); -BlockAIOCB *dma_blk_write(BlockBackend *blk, - QEMUSGList *sg, uint64_t sector, - BlockCompletionFunc *cb, void *opaque); -uint64_t dma_buf_read(uint8_t *ptr, int32_t len, QEMUSGList *sg); -uint64_t dma_buf_write(uint8_t *ptr, int32_t len, QEMUSGList *sg); - -void dma_acct_start(BlockBackend *blk, BlockAcctCookie *cookie, - QEMUSGList *sg, enum BlockAcctType type); - -#endif diff --git a/qemu/include/sysemu/dump-arch.h b/qemu/include/sysemu/dump-arch.h deleted file mode 100644 index e25b02e99..000000000 --- a/qemu/include/sysemu/dump-arch.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * QEMU dump - * - * Copyright Fujitsu, Corp. 2011, 2012 - * - * Authors: - * Wen Congyang - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - * - */ - -#ifndef DUMP_ARCH_H -#define DUMP_ARCH_H - -typedef struct ArchDumpInfo { - int d_machine; /* Architecture */ - int d_endian; /* ELFDATA2LSB or ELFDATA2MSB */ - int d_class; /* ELFCLASS32 or ELFCLASS64 */ - uint32_t page_size; /* The target's page size. If it's variable and - * unknown, then this should be the maximum. */ - uint64_t phys_base; /* The target's physmem base. */ -} ArchDumpInfo; - -struct GuestPhysBlockList; /* memory_mapping.h */ -int cpu_get_dump_info(ArchDumpInfo *info, - const struct GuestPhysBlockList *guest_phys_blocks); -ssize_t cpu_get_note_size(int class, int machine, int nr_cpus); - -#endif diff --git a/qemu/include/sysemu/dump.h b/qemu/include/sysemu/dump.h deleted file mode 100644 index ef931be46..000000000 --- a/qemu/include/sysemu/dump.h +++ /dev/null @@ -1,199 +0,0 @@ -/* - * QEMU dump - * - * Copyright Fujitsu, Corp. 2011, 2012 - * - * Authors: - * Wen Congyang - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - * - */ - -#ifndef DUMP_H -#define DUMP_H - -#define MAKEDUMPFILE_SIGNATURE "makedumpfile" -#define MAX_SIZE_MDF_HEADER (4096) /* max size of makedumpfile_header */ -#define TYPE_FLAT_HEADER (1) /* type of flattened format */ -#define VERSION_FLAT_HEADER (1) /* version of flattened format */ -#define END_FLAG_FLAT_HEADER (-1) - -#ifndef ARCH_PFN_OFFSET -#define ARCH_PFN_OFFSET (0) -#endif - -/* - * flag for compressed format - */ -#define DUMP_DH_COMPRESSED_ZLIB (0x1) -#define DUMP_DH_COMPRESSED_LZO (0x2) -#define DUMP_DH_COMPRESSED_SNAPPY (0x4) - -#define KDUMP_SIGNATURE "KDUMP " -#define SIG_LEN (sizeof(KDUMP_SIGNATURE) - 1) -#define DUMP_LEVEL (1) -#define DISKDUMP_HEADER_BLOCKS (1) - -#include "sysemu/dump-arch.h" -#include "sysemu/memory_mapping.h" -#include "qapi-types.h" - -typedef struct QEMU_PACKED MakedumpfileHeader { - char signature[16]; /* = "makedumpfile" */ - int64_t type; - int64_t version; -} MakedumpfileHeader; - -typedef struct QEMU_PACKED MakedumpfileDataHeader { - int64_t offset; - int64_t buf_size; -} MakedumpfileDataHeader; - -typedef struct QEMU_PACKED NewUtsname { - char sysname[65]; - char nodename[65]; - char release[65]; - char version[65]; - char machine[65]; - char domainname[65]; -} NewUtsname; - -typedef struct QEMU_PACKED DiskDumpHeader32 { - char signature[SIG_LEN]; /* = "KDUMP " */ - uint32_t header_version; /* Dump header version */ - NewUtsname utsname; /* copy of system_utsname */ - char timestamp[10]; /* Time stamp */ - uint32_t status; /* Above flags */ - uint32_t block_size; /* Size of a block in byte */ - uint32_t sub_hdr_size; /* Size of arch dependent header in block */ - uint32_t bitmap_blocks; /* Size of Memory bitmap in block */ - uint32_t max_mapnr; /* = max_mapnr , - obsoleted in header_version 6 */ - uint32_t total_ram_blocks; /* Number of blocks should be written */ - uint32_t device_blocks; /* Number of total blocks in dump device */ - uint32_t written_blocks; /* Number of written blocks */ - uint32_t current_cpu; /* CPU# which handles dump */ - uint32_t nr_cpus; /* Number of CPUs */ -} DiskDumpHeader32; - -typedef struct QEMU_PACKED DiskDumpHeader64 { - char signature[SIG_LEN]; /* = "KDUMP " */ - uint32_t header_version; /* Dump header version */ - NewUtsname utsname; /* copy of system_utsname */ - char timestamp[22]; /* Time stamp */ - uint32_t status; /* Above flags */ - uint32_t block_size; /* Size of a block in byte */ - uint32_t sub_hdr_size; /* Size of arch dependent header in block */ - uint32_t bitmap_blocks; /* Size of Memory bitmap in block */ - uint32_t max_mapnr; /* = max_mapnr, - obsoleted in header_version 6 */ - uint32_t total_ram_blocks; /* Number of blocks should be written */ - uint32_t device_blocks; /* Number of total blocks in dump device */ - uint32_t written_blocks; /* Number of written blocks */ - uint32_t current_cpu; /* CPU# which handles dump */ - uint32_t nr_cpus; /* Number of CPUs */ -} DiskDumpHeader64; - -typedef struct QEMU_PACKED KdumpSubHeader32 { - uint32_t phys_base; - uint32_t dump_level; /* header_version 1 and later */ - uint32_t split; /* header_version 2 and later */ - uint32_t start_pfn; /* header_version 2 and later, - obsoleted in header_version 6 */ - uint32_t end_pfn; /* header_version 2 and later, - obsoleted in header_version 6 */ - uint64_t offset_vmcoreinfo; /* header_version 3 and later */ - uint32_t size_vmcoreinfo; /* header_version 3 and later */ - uint64_t offset_note; /* header_version 4 and later */ - uint32_t note_size; /* header_version 4 and later */ - uint64_t offset_eraseinfo; /* header_version 5 and later */ - uint32_t size_eraseinfo; /* header_version 5 and later */ - uint64_t start_pfn_64; /* header_version 6 and later */ - uint64_t end_pfn_64; /* header_version 6 and later */ - uint64_t max_mapnr_64; /* header_version 6 and later */ -} KdumpSubHeader32; - -typedef struct QEMU_PACKED KdumpSubHeader64 { - uint64_t phys_base; - uint32_t dump_level; /* header_version 1 and later */ - uint32_t split; /* header_version 2 and later */ - uint64_t start_pfn; /* header_version 2 and later, - obsoleted in header_version 6 */ - uint64_t end_pfn; /* header_version 2 and later, - obsoleted in header_version 6 */ - uint64_t offset_vmcoreinfo; /* header_version 3 and later */ - uint64_t size_vmcoreinfo; /* header_version 3 and later */ - uint64_t offset_note; /* header_version 4 and later */ - uint64_t note_size; /* header_version 4 and later */ - uint64_t offset_eraseinfo; /* header_version 5 and later */ - uint64_t size_eraseinfo; /* header_version 5 and later */ - uint64_t start_pfn_64; /* header_version 6 and later */ - uint64_t end_pfn_64; /* header_version 6 and later */ - uint64_t max_mapnr_64; /* header_version 6 and later */ -} KdumpSubHeader64; - -typedef struct DataCache { - int fd; /* fd of the file where to write the cached data */ - uint8_t *buf; /* buffer for cached data */ - size_t buf_size; /* size of the buf */ - size_t data_size; /* size of cached data in buf */ - off_t offset; /* offset of the file */ -} DataCache; - -typedef struct QEMU_PACKED PageDescriptor { - uint64_t offset; /* the offset of the page data*/ - uint32_t size; /* the size of this dump page */ - uint32_t flags; /* flags */ - uint64_t page_flags; /* page flags */ -} PageDescriptor; - -typedef struct DumpState { - GuestPhysBlockList guest_phys_blocks; - ArchDumpInfo dump_info; - MemoryMappingList list; - uint16_t phdr_num; - uint32_t sh_info; - bool have_section; - bool resume; - ssize_t note_size; - hwaddr memory_offset; - int fd; - - GuestPhysBlock *next_block; - ram_addr_t start; - bool has_filter; - int64_t begin; - int64_t length; - - uint8_t *note_buf; /* buffer for notes */ - size_t note_buf_offset; /* the writing place in note_buf */ - uint32_t nr_cpus; /* number of guest's cpu */ - uint64_t max_mapnr; /* the biggest guest's phys-mem's number */ - size_t len_dump_bitmap; /* the size of the place used to store - dump_bitmap in vmcore */ - off_t offset_dump_bitmap; /* offset of dump_bitmap part in vmcore */ - off_t offset_page; /* offset of page part in vmcore */ - size_t num_dumpable; /* number of page that can be dumped */ - uint32_t flag_compress; /* indicate the compression format */ - DumpStatus status; /* current dump status */ - - bool has_format; /* whether format is provided */ - DumpGuestMemoryFormat format; /* valid only if has_format == true */ - QemuThread dump_thread; /* thread for detached dump */ - - int64_t total_size; /* total memory size (in bytes) to - * be dumped. When filter is - * enabled, this will only count - * those to be written. */ - int64_t written_size; /* written memory size (in bytes), - * this could be used to calculate - * how much work we have - * finished. */ -} DumpState; - -uint16_t cpu_to_dump16(DumpState *s, uint16_t val); -uint32_t cpu_to_dump32(DumpState *s, uint32_t val); -uint64_t cpu_to_dump64(DumpState *s, uint64_t val); -#endif diff --git a/qemu/include/sysemu/hostmem.h b/qemu/include/sysemu/hostmem.h deleted file mode 100644 index a19801d20..000000000 --- a/qemu/include/sysemu/hostmem.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * QEMU Host Memory Backend - * - * Copyright (C) 2013-2014 Red Hat Inc - * - * Authors: - * Igor Mammedov - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - */ -#ifndef QEMU_RAM_H -#define QEMU_RAM_H - -#include "sysemu/sysemu.h" /* for MAX_NODES */ -#include "qom/object.h" -#include "exec/memory.h" -#include "qemu/option.h" -#include "qemu/bitmap.h" - -#define TYPE_MEMORY_BACKEND "memory-backend" -#define MEMORY_BACKEND(obj) \ - OBJECT_CHECK(HostMemoryBackend, (obj), TYPE_MEMORY_BACKEND) -#define MEMORY_BACKEND_GET_CLASS(obj) \ - OBJECT_GET_CLASS(HostMemoryBackendClass, (obj), TYPE_MEMORY_BACKEND) -#define MEMORY_BACKEND_CLASS(klass) \ - OBJECT_CLASS_CHECK(HostMemoryBackendClass, (klass), TYPE_MEMORY_BACKEND) - -typedef struct HostMemoryBackend HostMemoryBackend; -typedef struct HostMemoryBackendClass HostMemoryBackendClass; - -/** - * HostMemoryBackendClass: - * @parent_class: opaque parent class container - */ -struct HostMemoryBackendClass { - ObjectClass parent_class; - - void (*alloc)(HostMemoryBackend *backend, Error **errp); -}; - -/** - * @HostMemoryBackend - * - * @parent: opaque parent object container - * @size: amount of memory backend provides - * @id: unique identification string in memdev namespace - * @mr: MemoryRegion representing host memory belonging to backend - */ -struct HostMemoryBackend { - /* private */ - Object parent; - - /* protected */ - uint64_t size; - bool merge, dump; - bool prealloc, force_prealloc; - DECLARE_BITMAP(host_nodes, MAX_NODES + 1); - HostMemPolicy policy; - - MemoryRegion mr; -}; - -MemoryRegion *host_memory_backend_get_memory(HostMemoryBackend *backend, - Error **errp); - -#endif diff --git a/qemu/include/sysemu/iothread.h b/qemu/include/sysemu/iothread.h deleted file mode 100644 index 2eefea1cc..000000000 --- a/qemu/include/sysemu/iothread.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Event loop thread - * - * Copyright Red Hat Inc., 2013 - * - * Authors: - * Stefan Hajnoczi - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - * - */ - -#ifndef IOTHREAD_H -#define IOTHREAD_H - -#include "block/aio.h" -#include "qemu/thread.h" - -#define TYPE_IOTHREAD "iothread" - -typedef struct { - Object parent_obj; - - QemuThread thread; - AioContext *ctx; - QemuMutex init_done_lock; - QemuCond init_done_cond; /* is thread initialization done? */ - bool stopping; - int thread_id; -} IOThread; - -#define IOTHREAD(obj) \ - OBJECT_CHECK(IOThread, obj, TYPE_IOTHREAD) - -char *iothread_get_id(IOThread *iothread); -AioContext *iothread_get_aio_context(IOThread *iothread); - -#endif /* IOTHREAD_H */ diff --git a/qemu/include/sysemu/kvm.h b/qemu/include/sysemu/kvm.h deleted file mode 100644 index 0e18f15c9..000000000 --- a/qemu/include/sysemu/kvm.h +++ /dev/null @@ -1,526 +0,0 @@ -/* - * QEMU KVM support - * - * Copyright IBM, Corp. 2008 - * - * Authors: - * Anthony Liguori - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - * - */ - -#ifndef QEMU_KVM_H -#define QEMU_KVM_H - -#include "qemu/queue.h" -#include "qom/cpu.h" -#include "exec/memattrs.h" -#include "hw/irq.h" - -#ifdef CONFIG_KVM -#include -#include -#else -/* These constants must never be used at runtime if kvm_enabled() is false. - * They exist so we don't need #ifdefs around KVM-specific code that already - * checks kvm_enabled() properly. - */ -#define KVM_CPUID_SIGNATURE 0 -#define KVM_CPUID_FEATURES 0 -#define KVM_FEATURE_CLOCKSOURCE 0 -#define KVM_FEATURE_NOP_IO_DELAY 0 -#define KVM_FEATURE_MMU_OP 0 -#define KVM_FEATURE_CLOCKSOURCE2 0 -#define KVM_FEATURE_ASYNC_PF 0 -#define KVM_FEATURE_STEAL_TIME 0 -#define KVM_FEATURE_PV_EOI 0 -#define KVM_FEATURE_CLOCKSOURCE_STABLE_BIT 0 -#endif - -extern bool kvm_allowed; -extern bool kvm_kernel_irqchip; -extern bool kvm_split_irqchip; -extern bool kvm_async_interrupts_allowed; -extern bool kvm_halt_in_kernel_allowed; -extern bool kvm_eventfds_allowed; -extern bool kvm_irqfds_allowed; -extern bool kvm_resamplefds_allowed; -extern bool kvm_msi_via_irqfd_allowed; -extern bool kvm_gsi_routing_allowed; -extern bool kvm_gsi_direct_mapping; -extern bool kvm_readonly_mem_allowed; -extern bool kvm_direct_msi_allowed; -extern bool kvm_ioeventfd_any_length_allowed; - -#if defined CONFIG_KVM || !defined NEED_CPU_H -#define kvm_enabled() (kvm_allowed) -/** - * kvm_irqchip_in_kernel: - * - * Returns: true if the user asked us to create an in-kernel - * irqchip via the "kernel_irqchip=on" machine option. - * What this actually means is architecture and machine model - * specific: on PC, for instance, it means that the LAPIC, - * IOAPIC and PIT are all in kernel. This function should never - * be used from generic target-independent code: use one of the - * following functions or some other specific check instead. - */ -#define kvm_irqchip_in_kernel() (kvm_kernel_irqchip) - -/** - * kvm_irqchip_is_split: - * - * Returns: true if the user asked us to split the irqchip - * implementation between user and kernel space. The details are - * architecture and machine specific. On PC, it means that the PIC, - * IOAPIC, and PIT are in user space while the LAPIC is in the kernel. - */ -#define kvm_irqchip_is_split() (kvm_split_irqchip) - -/** - * kvm_async_interrupts_enabled: - * - * Returns: true if we can deliver interrupts to KVM - * asynchronously (ie by ioctl from any thread at any time) - * rather than having to do interrupt delivery synchronously - * (where the vcpu must be stopped at a suitable point first). - */ -#define kvm_async_interrupts_enabled() (kvm_async_interrupts_allowed) - -/** - * kvm_halt_in_kernel - * - * Returns: true if halted cpus should still get a KVM_RUN ioctl to run - * inside of kernel space. This only works if MP state is implemented. - */ -#define kvm_halt_in_kernel() (kvm_halt_in_kernel_allowed) - -/** - * kvm_eventfds_enabled: - * - * Returns: true if we can use eventfds to receive notifications - * from a KVM CPU (ie the kernel supports eventds and we are running - * with a configuration where it is meaningful to use them). - */ -#define kvm_eventfds_enabled() (kvm_eventfds_allowed) - -/** - * kvm_irqfds_enabled: - * - * Returns: true if we can use irqfds to inject interrupts into - * a KVM CPU (ie the kernel supports irqfds and we are running - * with a configuration where it is meaningful to use them). - */ -#define kvm_irqfds_enabled() (kvm_irqfds_allowed) - -/** - * kvm_resamplefds_enabled: - * - * Returns: true if we can use resamplefds to inject interrupts into - * a KVM CPU (ie the kernel supports resamplefds and we are running - * with a configuration where it is meaningful to use them). - */ -#define kvm_resamplefds_enabled() (kvm_resamplefds_allowed) - -/** - * kvm_msi_via_irqfd_enabled: - * - * Returns: true if we can route a PCI MSI (Message Signaled Interrupt) - * to a KVM CPU via an irqfd. This requires that the kernel supports - * this and that we're running in a configuration that permits it. - */ -#define kvm_msi_via_irqfd_enabled() (kvm_msi_via_irqfd_allowed) - -/** - * kvm_gsi_routing_enabled: - * - * Returns: true if GSI routing is enabled (ie the kernel supports - * it and we're running in a configuration that permits it). - */ -#define kvm_gsi_routing_enabled() (kvm_gsi_routing_allowed) - -/** - * kvm_gsi_direct_mapping: - * - * Returns: true if GSI direct mapping is enabled. - */ -#define kvm_gsi_direct_mapping() (kvm_gsi_direct_mapping) - -/** - * kvm_readonly_mem_enabled: - * - * Returns: true if KVM readonly memory is enabled (ie the kernel - * supports it and we're running in a configuration that permits it). - */ -#define kvm_readonly_mem_enabled() (kvm_readonly_mem_allowed) - -/** - * kvm_direct_msi_enabled: - * - * Returns: true if KVM allows direct MSI injection. - */ -#define kvm_direct_msi_enabled() (kvm_direct_msi_allowed) - -/** - * kvm_ioeventfd_any_length_enabled: - * Returns: true if KVM allows any length io eventfd. - */ -#define kvm_ioeventfd_any_length_enabled() (kvm_ioeventfd_any_length_allowed) - -#else -#define kvm_enabled() (0) -#define kvm_irqchip_in_kernel() (false) -#define kvm_irqchip_is_split() (false) -#define kvm_async_interrupts_enabled() (false) -#define kvm_halt_in_kernel() (false) -#define kvm_eventfds_enabled() (false) -#define kvm_irqfds_enabled() (false) -#define kvm_resamplefds_enabled() (false) -#define kvm_msi_via_irqfd_enabled() (false) -#define kvm_gsi_routing_allowed() (false) -#define kvm_gsi_direct_mapping() (false) -#define kvm_readonly_mem_enabled() (false) -#define kvm_direct_msi_enabled() (false) -#define kvm_ioeventfd_any_length_enabled() (false) -#endif - -struct kvm_run; -struct kvm_lapic_state; -struct kvm_irq_routing_entry; - -typedef struct KVMCapabilityInfo { - const char *name; - int value; -} KVMCapabilityInfo; - -#define KVM_CAP_INFO(CAP) { "KVM_CAP_" stringify(CAP), KVM_CAP_##CAP } -#define KVM_CAP_LAST_INFO { NULL, 0 } - -struct KVMState; -typedef struct KVMState KVMState; -extern KVMState *kvm_state; - -/* external API */ - -bool kvm_has_free_slot(MachineState *ms); -int kvm_has_sync_mmu(void); -int kvm_has_vcpu_events(void); -int kvm_has_robust_singlestep(void); -int kvm_has_debugregs(void); -int kvm_has_pit_state2(void); -int kvm_has_many_ioeventfds(void); -int kvm_has_gsi_routing(void); -int kvm_has_intx_set_mask(void); - -int kvm_init_vcpu(CPUState *cpu); -int kvm_cpu_exec(CPUState *cpu); - -#ifdef NEED_CPU_H - -void kvm_setup_guest_memory(void *start, size_t size); -void kvm_flush_coalesced_mmio_buffer(void); - -int kvm_insert_breakpoint(CPUState *cpu, target_ulong addr, - target_ulong len, int type); -int kvm_remove_breakpoint(CPUState *cpu, target_ulong addr, - target_ulong len, int type); -void kvm_remove_all_breakpoints(CPUState *cpu); -int kvm_update_guest_debug(CPUState *cpu, unsigned long reinject_trap); -#ifndef _WIN32 -int kvm_set_signal_mask(CPUState *cpu, const sigset_t *sigset); -#endif - -int kvm_on_sigbus_vcpu(CPUState *cpu, int code, void *addr); -int kvm_on_sigbus(int code, void *addr); - -/* interface with exec.c */ - -void phys_mem_set_alloc(void *(*alloc)(size_t, uint64_t *align)); - -/* internal API */ - -int kvm_ioctl(KVMState *s, int type, ...); - -int kvm_vm_ioctl(KVMState *s, int type, ...); - -int kvm_vcpu_ioctl(CPUState *cpu, int type, ...); - -/** - * kvm_device_ioctl - call an ioctl on a kvm device - * @fd: The KVM device file descriptor as returned from KVM_CREATE_DEVICE - * @type: The device-ctrl ioctl number - * - * Returns: -errno on error, nonnegative on success - */ -int kvm_device_ioctl(int fd, int type, ...); - -/** - * kvm_vm_check_attr - check for existence of a specific vm attribute - * @s: The KVMState pointer - * @group: the group - * @attr: the attribute of that group to query for - * - * Returns: 1 if the attribute exists - * 0 if the attribute either does not exist or if the vm device - * interface is unavailable - */ -int kvm_vm_check_attr(KVMState *s, uint32_t group, uint64_t attr); - -/** - * kvm_device_check_attr - check for existence of a specific device attribute - * @fd: The device file descriptor - * @group: the group - * @attr: the attribute of that group to query for - * - * Returns: 1 if the attribute exists - * 0 if the attribute either does not exist or if the vm device - * interface is unavailable - */ -int kvm_device_check_attr(int fd, uint32_t group, uint64_t attr); - -/** - * kvm_device_access - set or get value of a specific vm attribute - * @fd: The device file descriptor - * @group: the group - * @attr: the attribute of that group to set or get - * @val: pointer to a storage area for the value - * @write: true for set and false for get operation - * - * This function is not allowed to fail. Use kvm_device_check_attr() - * in order to check for the availability of optional attributes. - */ -void kvm_device_access(int fd, int group, uint64_t attr, - void *val, bool write); - -/** - * kvm_create_device - create a KVM device for the device control API - * @KVMState: The KVMState pointer - * @type: The KVM device type (see Documentation/virtual/kvm/devices in the - * kernel source) - * @test: If true, only test if device can be created, but don't actually - * create the device. - * - * Returns: -errno on error, nonnegative on success: @test ? 0 : device fd; - */ -int kvm_create_device(KVMState *s, uint64_t type, bool test); - -/** - * kvm_device_supported - probe whether KVM supports specific device - * - * @vmfd: The fd handler for VM - * @type: type of device - * - * @return: true if supported, otherwise false. - */ -bool kvm_device_supported(int vmfd, uint64_t type); - -/* Arch specific hooks */ - -extern const KVMCapabilityInfo kvm_arch_required_capabilities[]; - -void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *run); -MemTxAttrs kvm_arch_post_run(CPUState *cpu, struct kvm_run *run); - -int kvm_arch_handle_exit(CPUState *cpu, struct kvm_run *run); - -int kvm_arch_handle_ioapic_eoi(CPUState *cpu, struct kvm_run *run); - -int kvm_arch_process_async_events(CPUState *cpu); - -int kvm_arch_get_registers(CPUState *cpu); - -/* state subset only touched by the VCPU itself during runtime */ -#define KVM_PUT_RUNTIME_STATE 1 -/* state subset modified during VCPU reset */ -#define KVM_PUT_RESET_STATE 2 -/* full state set, modified during initialization or on vmload */ -#define KVM_PUT_FULL_STATE 3 - -int kvm_arch_put_registers(CPUState *cpu, int level); - -int kvm_arch_init(MachineState *ms, KVMState *s); - -int kvm_arch_init_vcpu(CPUState *cpu); - -/* Returns VCPU ID to be used on KVM_CREATE_VCPU ioctl() */ -unsigned long kvm_arch_vcpu_id(CPUState *cpu); - -int kvm_arch_on_sigbus_vcpu(CPUState *cpu, int code, void *addr); -int kvm_arch_on_sigbus(int code, void *addr); - -void kvm_arch_init_irq_routing(KVMState *s); - -int kvm_arch_fixup_msi_route(struct kvm_irq_routing_entry *route, - uint64_t address, uint32_t data, PCIDevice *dev); - -int kvm_arch_msi_data_to_gsi(uint32_t data); - -int kvm_set_irq(KVMState *s, int irq, int level); -int kvm_irqchip_send_msi(KVMState *s, MSIMessage msg); - -void kvm_irqchip_add_irq_route(KVMState *s, int gsi, int irqchip, int pin); -void kvm_irqchip_commit_routes(KVMState *s); - -void kvm_put_apic_state(DeviceState *d, struct kvm_lapic_state *kapic); -void kvm_get_apic_state(DeviceState *d, struct kvm_lapic_state *kapic); - -struct kvm_guest_debug; -struct kvm_debug_exit_arch; - -struct kvm_sw_breakpoint { - target_ulong pc; - target_ulong saved_insn; - int use_count; - QTAILQ_ENTRY(kvm_sw_breakpoint) entry; -}; - -QTAILQ_HEAD(kvm_sw_breakpoint_head, kvm_sw_breakpoint); - -struct kvm_sw_breakpoint *kvm_find_sw_breakpoint(CPUState *cpu, - target_ulong pc); - -int kvm_sw_breakpoints_active(CPUState *cpu); - -int kvm_arch_insert_sw_breakpoint(CPUState *cpu, - struct kvm_sw_breakpoint *bp); -int kvm_arch_remove_sw_breakpoint(CPUState *cpu, - struct kvm_sw_breakpoint *bp); -int kvm_arch_insert_hw_breakpoint(target_ulong addr, - target_ulong len, int type); -int kvm_arch_remove_hw_breakpoint(target_ulong addr, - target_ulong len, int type); -void kvm_arch_remove_all_hw_breakpoints(void); - -void kvm_arch_update_guest_debug(CPUState *cpu, struct kvm_guest_debug *dbg); - -bool kvm_arch_stop_on_emulation_error(CPUState *cpu); - -int kvm_check_extension(KVMState *s, unsigned int extension); - -int kvm_vm_check_extension(KVMState *s, unsigned int extension); - -#define kvm_vm_enable_cap(s, capability, cap_flags, ...) \ - ({ \ - struct kvm_enable_cap cap = { \ - .cap = capability, \ - .flags = cap_flags, \ - }; \ - uint64_t args_tmp[] = { __VA_ARGS__ }; \ - int i; \ - for (i = 0; i < (int)ARRAY_SIZE(args_tmp) && \ - i < ARRAY_SIZE(cap.args); i++) { \ - cap.args[i] = args_tmp[i]; \ - } \ - kvm_vm_ioctl(s, KVM_ENABLE_CAP, &cap); \ - }) - -#define kvm_vcpu_enable_cap(cpu, capability, cap_flags, ...) \ - ({ \ - struct kvm_enable_cap cap = { \ - .cap = capability, \ - .flags = cap_flags, \ - }; \ - uint64_t args_tmp[] = { __VA_ARGS__ }; \ - int i; \ - for (i = 0; i < (int)ARRAY_SIZE(args_tmp) && \ - i < ARRAY_SIZE(cap.args); i++) { \ - cap.args[i] = args_tmp[i]; \ - } \ - kvm_vcpu_ioctl(cpu, KVM_ENABLE_CAP, &cap); \ - }) - -uint32_t kvm_arch_get_supported_cpuid(KVMState *env, uint32_t function, - uint32_t index, int reg); - -void kvm_set_sigmask_len(KVMState *s, unsigned int sigmask_len); - -#if !defined(CONFIG_USER_ONLY) -int kvm_physical_memory_addr_from_host(KVMState *s, void *ram_addr, - hwaddr *phys_addr); -#endif - -#endif /* NEED_CPU_H */ - -void kvm_cpu_synchronize_state(CPUState *cpu); -void kvm_cpu_synchronize_post_reset(CPUState *cpu); -void kvm_cpu_synchronize_post_init(CPUState *cpu); - -/* generic hooks - to be moved/refactored once there are more users */ - -static inline void cpu_synchronize_state(CPUState *cpu) -{ - if (kvm_enabled()) { - kvm_cpu_synchronize_state(cpu); - } -} - -static inline void cpu_synchronize_post_reset(CPUState *cpu) -{ - if (kvm_enabled()) { - kvm_cpu_synchronize_post_reset(cpu); - } -} - -static inline void cpu_synchronize_post_init(CPUState *cpu) -{ - if (kvm_enabled()) { - kvm_cpu_synchronize_post_init(cpu); - } -} - -int kvm_irqchip_add_msi_route(KVMState *s, MSIMessage msg, PCIDevice *dev); -int kvm_irqchip_update_msi_route(KVMState *s, int virq, MSIMessage msg, - PCIDevice *dev); -void kvm_irqchip_release_virq(KVMState *s, int virq); - -int kvm_irqchip_add_adapter_route(KVMState *s, AdapterInfo *adapter); -int kvm_irqchip_add_hv_sint_route(KVMState *s, uint32_t vcpu, uint32_t sint); - -int kvm_irqchip_add_irqfd_notifier_gsi(KVMState *s, EventNotifier *n, - EventNotifier *rn, int virq); -int kvm_irqchip_remove_irqfd_notifier_gsi(KVMState *s, EventNotifier *n, - int virq); -int kvm_irqchip_add_irqfd_notifier(KVMState *s, EventNotifier *n, - EventNotifier *rn, qemu_irq irq); -int kvm_irqchip_remove_irqfd_notifier(KVMState *s, EventNotifier *n, - qemu_irq irq); -void kvm_irqchip_set_qemuirq_gsi(KVMState *s, qemu_irq irq, int gsi); -void kvm_pc_gsi_handler(void *opaque, int n, int level); -void kvm_pc_setup_irq_routing(bool pci_enabled); -void kvm_init_irq_routing(KVMState *s); - -/** - * kvm_arch_irqchip_create: - * @KVMState: The KVMState pointer - * @MachineState: The MachineState pointer - * - * Allow architectures to create an in-kernel irq chip themselves. - * - * Returns: < 0: error - * 0: irq chip was not created - * > 0: irq chip was created - */ -int kvm_arch_irqchip_create(MachineState *ms, KVMState *s); - -/** - * kvm_set_one_reg - set a register value in KVM via KVM_SET_ONE_REG ioctl - * @id: The register ID - * @source: The pointer to the value to be set. It must point to a variable - * of the correct type/size for the register being accessed. - * - * Returns: 0 on success, or a negative errno on failure. - */ -int kvm_set_one_reg(CPUState *cs, uint64_t id, void *source); - -/** - * kvm_get_one_reg - get a register value from KVM via KVM_GET_ONE_REG ioctl - * @id: The register ID - * @target: The pointer where the value is to be stored. It must point to a - * variable of the correct type/size for the register being accessed. - * - * Returns: 0 on success, or a negative errno on failure. - */ -int kvm_get_one_reg(CPUState *cs, uint64_t id, void *target); -#endif diff --git a/qemu/include/sysemu/kvm_int.h b/qemu/include/sysemu/kvm_int.h deleted file mode 100644 index 888557a1c..000000000 --- a/qemu/include/sysemu/kvm_int.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Internal definitions for a target's KVM support - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - * - */ - -#ifndef QEMU_KVM_INT_H -#define QEMU_KVM_INT_H - -#include "sysemu/sysemu.h" -#include "sysemu/accel.h" -#include "sysemu/kvm.h" - -typedef struct KVMSlot -{ - hwaddr start_addr; - ram_addr_t memory_size; - void *ram; - int slot; - int flags; -} KVMSlot; - -typedef struct KVMMemoryListener { - MemoryListener listener; - KVMSlot *slots; - int as_id; -} KVMMemoryListener; - -#define TYPE_KVM_ACCEL ACCEL_CLASS_NAME("kvm") - -#define KVM_STATE(obj) \ - OBJECT_CHECK(KVMState, (obj), TYPE_KVM_ACCEL) - -void kvm_memory_listener_register(KVMState *s, KVMMemoryListener *kml, - AddressSpace *as, int as_id); - -#endif diff --git a/qemu/include/sysemu/memory_mapping.h b/qemu/include/sysemu/memory_mapping.h deleted file mode 100644 index 706152d53..000000000 --- a/qemu/include/sysemu/memory_mapping.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * QEMU memory mapping - * - * Copyright Fujitsu, Corp. 2011, 2012 - * - * Authors: - * Wen Congyang - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - * - */ - -#ifndef MEMORY_MAPPING_H -#define MEMORY_MAPPING_H - -#include "qemu/queue.h" -#include "exec/memory.h" - -typedef struct GuestPhysBlock { - /* visible to guest, reflects PCI hole, etc */ - hwaddr target_start; - - /* implies size */ - hwaddr target_end; - - /* points into host memory */ - uint8_t *host_addr; - - /* points to the MemoryRegion that this block belongs to */ - MemoryRegion *mr; - - QTAILQ_ENTRY(GuestPhysBlock) next; -} GuestPhysBlock; - -/* point-in-time snapshot of guest-visible physical mappings */ -typedef struct GuestPhysBlockList { - unsigned num; - QTAILQ_HEAD(GuestPhysBlockHead, GuestPhysBlock) head; -} GuestPhysBlockList; - -/* The physical and virtual address in the memory mapping are contiguous. */ -typedef struct MemoryMapping { - hwaddr phys_addr; - target_ulong virt_addr; - ram_addr_t length; - QTAILQ_ENTRY(MemoryMapping) next; -} MemoryMapping; - -struct MemoryMappingList { - unsigned int num; - MemoryMapping *last_mapping; - QTAILQ_HEAD(, MemoryMapping) head; -}; - -/* - * add or merge the memory region [phys_addr, phys_addr + length) into the - * memory mapping's list. The region's virtual address starts with virt_addr, - * and is contiguous. The list is sorted by phys_addr. - */ -void memory_mapping_list_add_merge_sorted(MemoryMappingList *list, - hwaddr phys_addr, - hwaddr virt_addr, - ram_addr_t length); - -void memory_mapping_list_free(MemoryMappingList *list); - -void memory_mapping_list_init(MemoryMappingList *list); - -void guest_phys_blocks_free(GuestPhysBlockList *list); -void guest_phys_blocks_init(GuestPhysBlockList *list); -void guest_phys_blocks_append(GuestPhysBlockList *list); - -void qemu_get_guest_memory_mapping(MemoryMappingList *list, - const GuestPhysBlockList *guest_phys_blocks, - Error **errp); - -/* get guest's memory mapping without do paging(virtual address is 0). */ -void qemu_get_guest_simple_memory_mapping(MemoryMappingList *list, - const GuestPhysBlockList *guest_phys_blocks); - -void memory_mapping_filter(MemoryMappingList *list, int64_t begin, - int64_t length); - -#endif diff --git a/qemu/include/sysemu/numa.h b/qemu/include/sysemu/numa.h deleted file mode 100644 index bb184c9cf..000000000 --- a/qemu/include/sysemu/numa.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef SYSEMU_NUMA_H -#define SYSEMU_NUMA_H - -#include "qemu/bitmap.h" -#include "qemu/option.h" -#include "sysemu/sysemu.h" -#include "sysemu/hostmem.h" -#include "hw/boards.h" - -extern int nb_numa_nodes; /* Number of NUMA nodes */ - -struct numa_addr_range { - ram_addr_t mem_start; - ram_addr_t mem_end; - QLIST_ENTRY(numa_addr_range) entry; -}; - -typedef struct node_info { - uint64_t node_mem; - DECLARE_BITMAP(node_cpu, MAX_CPUMASK_BITS); - struct HostMemoryBackend *node_memdev; - bool present; - QLIST_HEAD(, numa_addr_range) addr; /* List to store address ranges */ -} NodeInfo; - -extern NodeInfo numa_info[MAX_NODES]; -void parse_numa_opts(MachineClass *mc); -void numa_post_machine_init(void); -void query_numa_node_mem(uint64_t node_mem[]); -extern QemuOptsList qemu_numa_opts; -void numa_set_mem_node_id(ram_addr_t addr, uint64_t size, uint32_t node); -void numa_unset_mem_node_id(ram_addr_t addr, uint64_t size, uint32_t node); -uint32_t numa_get_node(ram_addr_t addr, Error **errp); - -#endif diff --git a/qemu/include/sysemu/os-posix.h b/qemu/include/sysemu/os-posix.h deleted file mode 100644 index 07e3e5ae9..000000000 --- a/qemu/include/sysemu/os-posix.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * posix specific declarations - * - * Copyright (c) 2003-2008 Fabrice Bellard - * Copyright (c) 2010 Jes Sorensen - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef QEMU_OS_POSIX_H -#define QEMU_OS_POSIX_H - -#include -#include -#include -#include -#include -#include - -void os_set_line_buffering(void); -void os_set_proc_name(const char *s); -void os_setup_signal_handling(void); -void os_daemonize(void); -void os_setup_post(void); -int os_mlock(void); - -#define closesocket(s) close(s) -#define ioctlsocket(s, r, v) ioctl(s, r, v) - -typedef struct timeval qemu_timeval; -#define qemu_gettimeofday(tp) gettimeofday(tp, NULL) - -#ifndef CONFIG_UTIMENSAT -#ifndef UTIME_NOW -# define UTIME_NOW ((1l << 30) - 1l) -#endif -#ifndef UTIME_OMIT -# define UTIME_OMIT ((1l << 30) - 2l) -#endif -#endif -typedef struct timespec qemu_timespec; -int qemu_utimens(const char *path, const qemu_timespec *times); - -bool is_daemonized(void); - -#endif diff --git a/qemu/include/sysemu/os-win32.h b/qemu/include/sysemu/os-win32.h deleted file mode 100644 index 17aad3b20..000000000 --- a/qemu/include/sysemu/os-win32.h +++ /dev/null @@ -1,184 +0,0 @@ -/* - * win32 specific declarations - * - * Copyright (c) 2003-2008 Fabrice Bellard - * Copyright (c) 2010 Jes Sorensen - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef QEMU_OS_WIN32_H -#define QEMU_OS_WIN32_H - -#include -#include -#include - -#if defined(_WIN64) -/* On w64, setjmp is implemented by _setjmp which needs a second parameter. - * If this parameter is NULL, longjump does no stack unwinding. - * That is what we need for QEMU. Passing the value of register rsp (default) - * lets longjmp try a stack unwinding which will crash with generated code. */ -# undef setjmp -# define setjmp(env) _setjmp(env, NULL) -#endif -/* QEMU uses sigsetjmp()/siglongjmp() as the portable way to specify - * "longjmp and don't touch the signal masks". Since we know that the - * savemask parameter will always be zero we can safely define these - * in terms of setjmp/longjmp on Win32. - */ -#define sigjmp_buf jmp_buf -#define sigsetjmp(env, savemask) setjmp(env) -#define siglongjmp(env, val) longjmp(env, val) - -/* Missing POSIX functions. Don't use MinGW-w64 macros. */ -#ifndef CONFIG_LOCALTIME_R -#undef gmtime_r -struct tm *gmtime_r(const time_t *timep, struct tm *result); -#undef localtime_r -struct tm *localtime_r(const time_t *timep, struct tm *result); -#endif /* CONFIG_LOCALTIME_R */ - -static inline void os_setup_signal_handling(void) {} -static inline void os_daemonize(void) {} -static inline void os_setup_post(void) {} -void os_set_line_buffering(void); -static inline void os_set_proc_name(const char *dummy) {} - -int getpagesize(void); - -#if !defined(EPROTONOSUPPORT) -# define EPROTONOSUPPORT EINVAL -#endif - -int setenv(const char *name, const char *value, int overwrite); - -typedef struct { - long tv_sec; - long tv_usec; -} qemu_timeval; -int qemu_gettimeofday(qemu_timeval *tp); - -static inline bool is_daemonized(void) -{ - return false; -} - -static inline int os_mlock(void) -{ - return -ENOSYS; -} - -#define fsync _commit - -#if !defined(lseek) -# define lseek _lseeki64 -#endif - -int qemu_ftruncate64(int, int64_t); - -#if !defined(ftruncate) -# define ftruncate qemu_ftruncate64 -#endif - -static inline char *realpath(const char *path, char *resolved_path) -{ - _fullpath(resolved_path, path, _MAX_PATH); - return resolved_path; -} - - -/* We wrap all the sockets functions so that we can - * set errno based on WSAGetLastError() - */ - -#undef connect -#define connect qemu_connect_wrap -int qemu_connect_wrap(int sockfd, const struct sockaddr *addr, - socklen_t addrlen); - -#undef listen -#define listen qemu_listen_wrap -int qemu_listen_wrap(int sockfd, int backlog); - -#undef bind -#define bind qemu_bind_wrap -int qemu_bind_wrap(int sockfd, const struct sockaddr *addr, - socklen_t addrlen); - -#undef socket -#define socket qemu_socket_wrap -int qemu_socket_wrap(int domain, int type, int protocol); - -#undef accept -#define accept qemu_accept_wrap -int qemu_accept_wrap(int sockfd, struct sockaddr *addr, - socklen_t *addrlen); - -#undef shutdown -#define shutdown qemu_shutdown_wrap -int qemu_shutdown_wrap(int sockfd, int how); - -#undef ioctlsocket -#define ioctlsocket qemu_ioctlsocket_wrap -int qemu_ioctlsocket_wrap(int fd, int req, void *val); - -#undef closesocket -#define closesocket qemu_closesocket_wrap -int qemu_closesocket_wrap(int fd); - -#undef getsockopt -#define getsockopt qemu_getsockopt_wrap -int qemu_getsockopt_wrap(int sockfd, int level, int optname, - void *optval, socklen_t *optlen); - -#undef setsockopt -#define setsockopt qemu_setsockopt_wrap -int qemu_setsockopt_wrap(int sockfd, int level, int optname, - const void *optval, socklen_t optlen); - -#undef getpeername -#define getpeername qemu_getpeername_wrap -int qemu_getpeername_wrap(int sockfd, struct sockaddr *addr, - socklen_t *addrlen); - -#undef getsockname -#define getsockname qemu_getsockname_wrap -int qemu_getsockname_wrap(int sockfd, struct sockaddr *addr, - socklen_t *addrlen); - -#undef send -#define send qemu_send_wrap -ssize_t qemu_send_wrap(int sockfd, const void *buf, size_t len, int flags); - -#undef sendto -#define sendto qemu_sendto_wrap -ssize_t qemu_sendto_wrap(int sockfd, const void *buf, size_t len, int flags, - const struct sockaddr *addr, socklen_t addrlen); - -#undef recv -#define recv qemu_recv_wrap -ssize_t qemu_recv_wrap(int sockfd, void *buf, size_t len, int flags); - -#undef recvfrom -#define recvfrom qemu_recvfrom_wrap -ssize_t qemu_recvfrom_wrap(int sockfd, void *buf, size_t len, int flags, - struct sockaddr *addr, socklen_t *addrlen); - -#endif diff --git a/qemu/include/sysemu/qtest.h b/qemu/include/sysemu/qtest.h deleted file mode 100644 index 70aa40aa7..000000000 --- a/qemu/include/sysemu/qtest.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Test Server - * - * Copyright IBM, Corp. 2011 - * - * Authors: - * Anthony Liguori - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - * - */ - -#ifndef QTEST_H -#define QTEST_H - -#include "qemu-common.h" - -extern bool qtest_allowed; - -static inline bool qtest_enabled(void) -{ - return qtest_allowed; -} - -bool qtest_driver(void); - -void qtest_init(const char *qtest_chrdev, const char *qtest_log, Error **errp); - -static inline int qtest_available(void) -{ -#ifdef CONFIG_POSIX - return 1; -#else - return 0; -#endif -} - -#endif diff --git a/qemu/include/sysemu/replay.h b/qemu/include/sysemu/replay.h deleted file mode 100644 index 0a88393d2..000000000 --- a/qemu/include/sysemu/replay.h +++ /dev/null @@ -1,136 +0,0 @@ -#ifndef REPLAY_H -#define REPLAY_H - -/* - * replay.h - * - * Copyright (c) 2010-2015 Institute for System Programming - * of the Russian Academy of Sciences. - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - * - */ - -#include "qapi-types.h" - -/* replay clock kinds */ -enum ReplayClockKind { - /* host_clock */ - REPLAY_CLOCK_HOST, - /* virtual_rt_clock */ - REPLAY_CLOCK_VIRTUAL_RT, - REPLAY_CLOCK_COUNT -}; -typedef enum ReplayClockKind ReplayClockKind; - -/* IDs of the checkpoints */ -enum ReplayCheckpoint { - CHECKPOINT_CLOCK_WARP_START, - CHECKPOINT_CLOCK_WARP_ACCOUNT, - CHECKPOINT_RESET_REQUESTED, - CHECKPOINT_SUSPEND_REQUESTED, - CHECKPOINT_CLOCK_VIRTUAL, - CHECKPOINT_CLOCK_HOST, - CHECKPOINT_CLOCK_VIRTUAL_RT, - CHECKPOINT_INIT, - CHECKPOINT_RESET, - CHECKPOINT_COUNT -}; -typedef enum ReplayCheckpoint ReplayCheckpoint; - -extern ReplayMode replay_mode; - -/* Replay process control functions */ - -/*! Enables recording or saving event log with specified parameters */ -void replay_configure(struct QemuOpts *opts); -/*! Initializes timers used for snapshotting and enables events recording */ -void replay_start(void); -/*! Closes replay log file and frees other resources. */ -void replay_finish(void); -/*! Adds replay blocker with the specified error description */ -void replay_add_blocker(Error *reason); - -/* Processing the instructions */ - -/*! Returns number of executed instructions. */ -uint64_t replay_get_current_step(void); -/*! Returns number of instructions to execute in replay mode. */ -int replay_get_instructions(void); -/*! Updates instructions counter in replay mode. */ -void replay_account_executed_instructions(void); - -/* Interrupts and exceptions */ - -/*! Called by exception handler to write or read - exception processing events. */ -bool replay_exception(void); -/*! Used to determine that exception is pending. - Does not proceed to the next event in the log. */ -bool replay_has_exception(void); -/*! Called by interrupt handlers to write or read - interrupt processing events. - \return true if interrupt should be processed */ -bool replay_interrupt(void); -/*! Tries to read interrupt event from the file. - Returns true, when interrupt request is pending */ -bool replay_has_interrupt(void); - -/* Processing clocks and other time sources */ - -/*! Save the specified clock */ -int64_t replay_save_clock(ReplayClockKind kind, int64_t clock); -/*! Read the specified clock from the log or return cached data */ -int64_t replay_read_clock(ReplayClockKind kind); -/*! Saves or reads the clock depending on the current replay mode. */ -#define REPLAY_CLOCK(clock, value) \ - (replay_mode == REPLAY_MODE_PLAY ? replay_read_clock((clock)) \ - : replay_mode == REPLAY_MODE_RECORD \ - ? replay_save_clock((clock), (value)) \ - : (value)) - -/* Events */ - -/*! Called when qemu shutdown is requested. */ -void replay_shutdown_request(void); -/*! Should be called at check points in the execution. - These check points are skipped, if they were not met. - Saves checkpoint in the SAVE mode and validates in the PLAY mode. - Returns 0 in PLAY mode if checkpoint was not found. - Returns 1 in all other cases. */ -bool replay_checkpoint(ReplayCheckpoint checkpoint); - -/* Asynchronous events queue */ - -/*! Disables storing events in the queue */ -void replay_disable_events(void); -/*! Returns true when saving events is enabled */ -bool replay_events_enabled(void); -/*! Adds bottom half event to the queue */ -void replay_bh_schedule_event(QEMUBH *bh); -/*! Adds input event to the queue */ -void replay_input_event(QemuConsole *src, InputEvent *evt); -/*! Adds input sync event to the queue */ -void replay_input_sync_event(void); -/*! Adds block layer event to the queue */ -void replay_block_event(QEMUBH *bh, uint64_t id); - -/* Character device */ - -/*! Registers char driver to save it's events */ -void replay_register_char_driver(struct CharDriverState *chr); -/*! Saves write to char device event to the log */ -void replay_chr_be_write(struct CharDriverState *s, uint8_t *buf, int len); -/*! Writes char write return value to the replay log. */ -void replay_char_write_event_save(int res, int offset); -/*! Reads char write return value from the replay log. */ -void replay_char_write_event_load(int *res, int *offset); -/*! Reads information about read_all character event. */ -int replay_char_read_all_load(uint8_t *buf); -/*! Writes character read_all error code into the replay log. */ -void replay_char_read_all_save_error(int res); -/*! Writes character read_all execution result into the replay log. */ -void replay_char_read_all_save_buf(uint8_t *buf, int offset); - -#endif diff --git a/qemu/include/sysemu/rng-random.h b/qemu/include/sysemu/rng-random.h deleted file mode 100644 index 4332772a2..000000000 --- a/qemu/include/sysemu/rng-random.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * QEMU Random Number Generator Backend - * - * Copyright IBM, Corp. 2012 - * - * Authors: - * Anthony Liguori - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - */ -#ifndef QEMU_RNG_RANDOM_H -#define QEMU_RNG_RANDOM_H - -#include "qom/object.h" - -#define TYPE_RNG_RANDOM "rng-random" -#define RNG_RANDOM(obj) OBJECT_CHECK(RndRandom, (obj), TYPE_RNG_RANDOM) - -typedef struct RndRandom RndRandom; - -#endif diff --git a/qemu/include/sysemu/rng.h b/qemu/include/sysemu/rng.h deleted file mode 100644 index 45629c4c5..000000000 --- a/qemu/include/sysemu/rng.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * QEMU Random Number Generator Backend - * - * Copyright IBM, Corp. 2012 - * - * Authors: - * Anthony Liguori - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - */ - -#ifndef QEMU_RNG_H -#define QEMU_RNG_H - -#include "qom/object.h" -#include "qemu-common.h" - -#define TYPE_RNG_BACKEND "rng-backend" -#define RNG_BACKEND(obj) \ - OBJECT_CHECK(RngBackend, (obj), TYPE_RNG_BACKEND) -#define RNG_BACKEND_GET_CLASS(obj) \ - OBJECT_GET_CLASS(RngBackendClass, (obj), TYPE_RNG_BACKEND) -#define RNG_BACKEND_CLASS(klass) \ - OBJECT_CLASS_CHECK(RngBackendClass, (klass), TYPE_RNG_BACKEND) - -typedef struct RngRequest RngRequest; -typedef struct RngBackendClass RngBackendClass; -typedef struct RngBackend RngBackend; - -typedef void (EntropyReceiveFunc)(void *opaque, - const void *data, - size_t size); - -struct RngRequest -{ - EntropyReceiveFunc *receive_entropy; - uint8_t *data; - void *opaque; - size_t offset; - size_t size; - QSIMPLEQ_ENTRY(RngRequest) next; -}; - -struct RngBackendClass -{ - ObjectClass parent_class; - - void (*request_entropy)(RngBackend *s, RngRequest *req); - - void (*opened)(RngBackend *s, Error **errp); -}; - -struct RngBackend -{ - Object parent; - - /*< protected >*/ - bool opened; - QSIMPLEQ_HEAD(requests, RngRequest) requests; -}; - - -/** - * rng_backend_request_entropy: - * @s: the backend to request entropy from - * @size: the number of bytes of data to request - * @receive_entropy: a function to be invoked when entropy is available - * @opaque: data that should be passed to @receive_entropy - * - * This function is used by the front-end to request entropy from an entropy - * source. This function can be called multiple times before @receive_entropy - * is invoked with different values of @receive_entropy and @opaque. The - * backend will queue each request and handle appropriately. - * - * The backend does not need to pass the full amount of data to @receive_entropy - * but will pass a value greater than 0. - */ -void rng_backend_request_entropy(RngBackend *s, size_t size, - EntropyReceiveFunc *receive_entropy, - void *opaque); - -/** - * rng_backend_free_request: - * @s: the backend that created the request - * @req: the request to finalize - * - * Used by child rng backend classes to finalize requests once they've been - * processed. The request is removed from the list of active requests and - * deleted. - */ -void rng_backend_finalize_request(RngBackend *s, RngRequest *req); -#endif diff --git a/qemu/include/sysemu/seccomp.h b/qemu/include/sysemu/seccomp.h deleted file mode 100644 index cfc06008c..000000000 --- a/qemu/include/sysemu/seccomp.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * QEMU seccomp mode 2 support with libseccomp - * - * Copyright IBM, Corp. 2012 - * - * Authors: - * Eduardo Otubo - * - * This work is licensed under the terms of the GNU GPL, version 2. See - * the COPYING file in the top-level directory. - * - * Contributions after 2012-01-13 are licensed under the terms of the - * GNU GPL, version 2 or (at your option) any later version. - */ -#ifndef QEMU_SECCOMP_H -#define QEMU_SECCOMP_H - -#include - -int seccomp_start(void); -#endif diff --git a/qemu/include/sysemu/sysemu.h b/qemu/include/sysemu/sysemu.h deleted file mode 100644 index 38fb3cad3..000000000 --- a/qemu/include/sysemu/sysemu.h +++ /dev/null @@ -1,258 +0,0 @@ -#ifndef SYSEMU_H -#define SYSEMU_H -/* Misc. things related to the system emulator. */ - -#include "qemu/option.h" -#include "qemu/queue.h" -#include "qemu/timer.h" -#include "qapi-types.h" -#include "qemu/notify.h" -#include "qemu/main-loop.h" -#include "qemu/bitmap.h" -#include "qom/object.h" - -/* vl.c */ - -extern const char *bios_name; - -extern const char *qemu_name; -extern uint8_t qemu_uuid[]; -extern bool qemu_uuid_set; -int qemu_uuid_parse(const char *str, uint8_t *uuid); - -#define UUID_FMT "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx" -#define UUID_NONE "00000000-0000-0000-0000-000000000000" - -bool runstate_check(RunState state); -void runstate_set(RunState new_state); -int runstate_is_running(void); -bool runstate_needs_reset(void); -bool runstate_store(char *str, size_t size); -typedef struct vm_change_state_entry VMChangeStateEntry; -typedef void VMChangeStateHandler(void *opaque, int running, RunState state); - -VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb, - void *opaque); -void qemu_del_vm_change_state_handler(VMChangeStateEntry *e); -void vm_state_notify(int running, RunState state); - -#define VMRESET_SILENT false -#define VMRESET_REPORT true - -void vm_start(void); -int vm_stop(RunState state); -int vm_stop_force_state(RunState state); - -typedef enum WakeupReason { - /* Always keep QEMU_WAKEUP_REASON_NONE = 0 */ - QEMU_WAKEUP_REASON_NONE = 0, - QEMU_WAKEUP_REASON_RTC, - QEMU_WAKEUP_REASON_PMTIMER, - QEMU_WAKEUP_REASON_OTHER, -} WakeupReason; - -void qemu_system_reset_request(void); -void qemu_system_suspend_request(void); -void qemu_register_suspend_notifier(Notifier *notifier); -void qemu_system_wakeup_request(WakeupReason reason); -void qemu_system_wakeup_enable(WakeupReason reason, bool enabled); -void qemu_register_wakeup_notifier(Notifier *notifier); -void qemu_system_shutdown_request(void); -void qemu_system_powerdown_request(void); -void qemu_register_powerdown_notifier(Notifier *notifier); -void qemu_system_debug_request(void); -void qemu_system_vmstop_request(RunState reason); -void qemu_system_vmstop_request_prepare(void); -int qemu_shutdown_requested_get(void); -int qemu_reset_requested_get(void); -void qemu_system_killed(int signal, pid_t pid); -void qemu_devices_reset(void); -void qemu_system_reset(bool report); -void qemu_system_guest_panicked(void); -size_t qemu_target_page_bits(void); - -void qemu_add_exit_notifier(Notifier *notify); -void qemu_remove_exit_notifier(Notifier *notify); - -void qemu_add_machine_init_done_notifier(Notifier *notify); - -void hmp_savevm(Monitor *mon, const QDict *qdict); -int load_vmstate(const char *name); -void hmp_delvm(Monitor *mon, const QDict *qdict); -void hmp_info_snapshots(Monitor *mon, const QDict *qdict); - -void qemu_announce_self(void); - -/* Subcommands for QEMU_VM_COMMAND */ -enum qemu_vm_cmd { - MIG_CMD_INVALID = 0, /* Must be 0 */ - MIG_CMD_OPEN_RETURN_PATH, /* Tell the dest to open the Return path */ - MIG_CMD_PING, /* Request a PONG on the RP */ - - MIG_CMD_POSTCOPY_ADVISE, /* Prior to any page transfers, just - warn we might want to do PC */ - MIG_CMD_POSTCOPY_LISTEN, /* Start listening for incoming - pages as it's running. */ - MIG_CMD_POSTCOPY_RUN, /* Start execution */ - - MIG_CMD_POSTCOPY_RAM_DISCARD, /* A list of pages to discard that - were previously sent during - precopy but are dirty. */ - MIG_CMD_PACKAGED, /* Send a wrapped stream within this stream */ - MIG_CMD_MAX -}; - -#define MAX_VM_CMD_PACKAGED_SIZE (1ul << 24) - -bool qemu_savevm_state_blocked(Error **errp); -void qemu_savevm_state_begin(QEMUFile *f, - const MigrationParams *params); -void qemu_savevm_state_header(QEMUFile *f); -int qemu_savevm_state_iterate(QEMUFile *f, bool postcopy); -void qemu_savevm_state_cleanup(void); -void qemu_savevm_state_complete_postcopy(QEMUFile *f); -void qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only); -void qemu_savevm_state_pending(QEMUFile *f, uint64_t max_size, - uint64_t *res_non_postcopiable, - uint64_t *res_postcopiable); -void qemu_savevm_command_send(QEMUFile *f, enum qemu_vm_cmd command, - uint16_t len, uint8_t *data); -void qemu_savevm_send_ping(QEMUFile *f, uint32_t value); -void qemu_savevm_send_open_return_path(QEMUFile *f); -int qemu_savevm_send_packaged(QEMUFile *f, const QEMUSizedBuffer *qsb); -void qemu_savevm_send_postcopy_advise(QEMUFile *f); -void qemu_savevm_send_postcopy_listen(QEMUFile *f); -void qemu_savevm_send_postcopy_run(QEMUFile *f); - -void qemu_savevm_send_postcopy_ram_discard(QEMUFile *f, const char *name, - uint16_t len, - uint64_t *start_list, - uint64_t *length_list); - -int qemu_loadvm_state(QEMUFile *f); - -typedef enum DisplayType -{ - DT_DEFAULT, - DT_CURSES, - DT_SDL, - DT_GTK, - DT_NOGRAPHIC, - DT_NONE, -} DisplayType; - -extern int autostart; - -typedef enum { - VGA_NONE, VGA_STD, VGA_CIRRUS, VGA_VMWARE, VGA_XENFB, VGA_QXL, - VGA_TCX, VGA_CG3, VGA_DEVICE, VGA_VIRTIO, -} VGAInterfaceType; - -extern int vga_interface_type; -#define xenfb_enabled (vga_interface_type == VGA_XENFB) - -extern int graphic_width; -extern int graphic_height; -extern int graphic_depth; -extern DisplayType display_type; -extern int display_opengl; -extern const char *keyboard_layout; -extern int win2k_install_hack; -extern int alt_grab; -extern int ctrl_grab; -extern int smp_cpus; -extern int max_cpus; -extern int cursor_hide; -extern int graphic_rotate; -extern int no_quit; -extern int no_shutdown; -extern int old_param; -extern int boot_menu; -extern bool boot_strict; -extern uint8_t *boot_splash_filedata; -extern size_t boot_splash_filedata_size; -extern bool enable_mlock; -extern uint8_t qemu_extra_params_fw[2]; -extern QEMUClockType rtc_clock; -extern const char *mem_path; -extern int mem_prealloc; - -#define MAX_NODES 128 -#define NUMA_NODE_UNASSIGNED MAX_NODES - -/* The following shall be true for all CPUs: - * cpu->cpu_index < max_cpus <= MAX_CPUMASK_BITS - * - * Note that cpu->get_arch_id() may be larger than MAX_CPUMASK_BITS. - */ -#define MAX_CPUMASK_BITS 255 - -#define MAX_OPTION_ROMS 16 -typedef struct QEMUOptionRom { - const char *name; - int32_t bootindex; -} QEMUOptionRom; -extern QEMUOptionRom option_rom[MAX_OPTION_ROMS]; -extern int nb_option_roms; - -#define MAX_PROM_ENVS 128 -extern const char *prom_envs[MAX_PROM_ENVS]; -extern unsigned int nb_prom_envs; - -/* generic hotplug */ -void hmp_drive_add(Monitor *mon, const QDict *qdict); - -/* pcie aer error injection */ -void hmp_pcie_aer_inject_error(Monitor *mon, const QDict *qdict); - -/* serial ports */ - -#define MAX_SERIAL_PORTS 4 - -extern CharDriverState *serial_hds[MAX_SERIAL_PORTS]; - -/* parallel ports */ - -#define MAX_PARALLEL_PORTS 3 - -extern CharDriverState *parallel_hds[MAX_PARALLEL_PORTS]; - -void hmp_usb_add(Monitor *mon, const QDict *qdict); -void hmp_usb_del(Monitor *mon, const QDict *qdict); -void hmp_info_usb(Monitor *mon, const QDict *qdict); - -void add_boot_device_path(int32_t bootindex, DeviceState *dev, - const char *suffix); -char *get_boot_devices_list(size_t *size, bool ignore_suffixes); - -DeviceState *get_boot_device(uint32_t position); -void check_boot_index(int32_t bootindex, Error **errp); -void del_boot_device_path(DeviceState *dev, const char *suffix); -void device_add_bootindex_property(Object *obj, int32_t *bootindex, - const char *name, const char *suffix, - DeviceState *dev, Error **errp); -void restore_boot_order(void *opaque); -void validate_bootdevices(const char *devices, Error **errp); - -/* handler to set the boot_device order for a specific type of MachineClass */ -typedef void QEMUBootSetHandler(void *opaque, const char *boot_order, - Error **errp); -void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque); -void qemu_boot_set(const char *boot_order, Error **errp); - -QemuOpts *qemu_get_machine_opts(void); - -bool defaults_enabled(void); -bool usb_enabled(void); - -extern QemuOptsList qemu_legacy_drive_opts; -extern QemuOptsList qemu_common_drive_opts; -extern QemuOptsList qemu_drive_opts; -extern QemuOptsList qemu_chardev_opts; -extern QemuOptsList qemu_device_opts; -extern QemuOptsList qemu_netdev_opts; -extern QemuOptsList qemu_net_opts; -extern QemuOptsList qemu_global_opts; -extern QemuOptsList qemu_mon_opts; - -#endif diff --git a/qemu/include/sysemu/tpm.h b/qemu/include/sysemu/tpm.h deleted file mode 100644 index c8afa179e..000000000 --- a/qemu/include/sysemu/tpm.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Public TPM functions - * - * Copyright (C) 2011-2013 IBM Corporation - * - * Authors: - * Stefan Berger - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - */ -#ifndef QEMU_TPM_H -#define QEMU_TPM_H - -#include "qemu/option.h" - -typedef struct TPMState TPMState; - -int tpm_config_parse(QemuOptsList *opts_list, const char *optarg); -int tpm_init(void); -void tpm_cleanup(void); - -typedef enum TPMVersion { - TPM_VERSION_UNSPEC = 0, - TPM_VERSION_1_2 = 1, - TPM_VERSION_2_0 = 2, -} TPMVersion; - -TPMVersion tpm_tis_get_tpm_version(Object *obj); - -#define TYPE_TPM_TIS "tpm-tis" - -static inline TPMVersion tpm_get_version(void) -{ -#ifdef CONFIG_TPM - Object *obj = object_resolve_path_type("", TYPE_TPM_TIS, NULL); - - if (obj) { - return tpm_tis_get_tpm_version(obj); - } -#endif - return TPM_VERSION_UNSPEC; -} - -#endif /* QEMU_TPM_H */ diff --git a/qemu/include/sysemu/tpm_backend.h b/qemu/include/sysemu/tpm_backend.h deleted file mode 100644 index e3ec80020..000000000 --- a/qemu/include/sysemu/tpm_backend.h +++ /dev/null @@ -1,232 +0,0 @@ -/* - * QEMU TPM Backend - * - * Copyright IBM, Corp. 2013 - * - * Authors: - * Stefan Berger - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - */ - -#ifndef _QEMU_TPM_H -#define _QEMU_TPM_H - -#include "qom/object.h" -#include "qemu-common.h" -#include "qapi-types.h" -#include "qemu/option.h" -#include "sysemu/tpm.h" - -#define TYPE_TPM_BACKEND "tpm-backend" -#define TPM_BACKEND(obj) \ - OBJECT_CHECK(TPMBackend, (obj), TYPE_TPM_BACKEND) -#define TPM_BACKEND_GET_CLASS(obj) \ - OBJECT_GET_CLASS(TPMBackendClass, (obj), TYPE_TPM_BACKEND) -#define TPM_BACKEND_CLASS(klass) \ - OBJECT_CLASS_CHECK(TPMBackendClass, (klass), TYPE_TPM_BACKEND) - -typedef struct TPMBackendClass TPMBackendClass; -typedef struct TPMBackend TPMBackend; - -typedef struct TPMDriverOps TPMDriverOps; - -struct TPMBackendClass { - ObjectClass parent_class; - - const TPMDriverOps *ops; - - void (*opened)(TPMBackend *s, Error **errp); -}; - -struct TPMBackend { - Object parent; - - /*< protected >*/ - bool opened; - - char *id; - enum TpmModel fe_model; - char *path; - char *cancel_path; - const TPMDriverOps *ops; - - QLIST_ENTRY(TPMBackend) list; -}; - -typedef void (TPMRecvDataCB)(TPMState *, uint8_t locty, bool selftest_done); - -typedef struct TPMSizedBuffer { - uint32_t size; - uint8_t *buffer; -} TPMSizedBuffer; - -struct TPMDriverOps { - enum TpmType type; - const QemuOptDesc *opts; - /* get a descriptive text of the backend to display to the user */ - const char *(*desc)(void); - - TPMBackend *(*create)(QemuOpts *opts, const char *id); - void (*destroy)(TPMBackend *t); - - /* initialize the backend */ - int (*init)(TPMBackend *t, TPMState *s, TPMRecvDataCB *datacb); - /* start up the TPM on the backend */ - int (*startup_tpm)(TPMBackend *t); - /* returns true if nothing will ever answer TPM requests */ - bool (*had_startup_error)(TPMBackend *t); - - size_t (*realloc_buffer)(TPMSizedBuffer *sb); - - void (*deliver_request)(TPMBackend *t); - - void (*reset)(TPMBackend *t); - - void (*cancel_cmd)(TPMBackend *t); - - bool (*get_tpm_established_flag)(TPMBackend *t); - - int (*reset_tpm_established_flag)(TPMBackend *t, uint8_t locty); - - TPMVersion (*get_tpm_version)(TPMBackend *t); -}; - - -/** - * tpm_backend_get_type: - * @s: the backend - * - * Returns the TpmType of the backend. - */ -enum TpmType tpm_backend_get_type(TPMBackend *s); - -/** - * tpm_backend_get_desc: - * @s: the backend - * - * Returns a human readable description of the backend. - */ -const char *tpm_backend_get_desc(TPMBackend *s); - -/** - * tpm_backend_destroy: - * @s: the backend to destroy - */ -void tpm_backend_destroy(TPMBackend *s); - -/** - * tpm_backend_init: - * @s: the backend to initialized - * @state: TPMState - * @datacb: callback for sending data to frontend - * - * Initialize the backend with the given variables. - * - * Returns 0 on success. - */ -int tpm_backend_init(TPMBackend *s, TPMState *state, - TPMRecvDataCB *datacb); - -/** - * tpm_backend_startup_tpm: - * @s: the backend whose TPM support is to be started - * - * Returns 0 on success. - */ -int tpm_backend_startup_tpm(TPMBackend *s); - -/** - * tpm_backend_had_startup_error: - * @s: the backend to query for a statup error - * - * Check whether the backend had an error during startup. Returns - * false if no error occurred and the backend can be used, true - * otherwise. - */ -bool tpm_backend_had_startup_error(TPMBackend *s); - -/** - * tpm_backend_realloc_buffer: - * @s: the backend - * @sb: the TPMSizedBuffer to re-allocated to the size suitable for the - * backend. - * - * This function returns the size of the allocated buffer - */ -size_t tpm_backend_realloc_buffer(TPMBackend *s, TPMSizedBuffer *sb); - -/** - * tpm_backend_deliver_request: - * @s: the backend to send the request to - * - * Send a request to the backend. The backend will then send the request - * to the TPM implementation. - */ -void tpm_backend_deliver_request(TPMBackend *s); - -/** - * tpm_backend_reset: - * @s: the backend to reset - * - * Reset the backend into a well defined state with all previous errors - * reset. - */ -void tpm_backend_reset(TPMBackend *s); - -/** - * tpm_backend_cancel_cmd: - * @s: the backend - * - * Cancel any ongoing command being processed by the TPM implementation - * on behalf of the QEMU guest. - */ -void tpm_backend_cancel_cmd(TPMBackend *s); - -/** - * tpm_backend_get_tpm_established_flag: - * @s: the backend - * - * Get the TPM establishment flag. This function may be called very - * frequently by the frontend since for example in the TIS implementation - * this flag is part of a register. - */ -bool tpm_backend_get_tpm_established_flag(TPMBackend *s); - -/** - * tpm_backend_reset_tpm_established_flag: - * @s: the backend - * @locty: the locality number - * - * Reset the TPM establishment flag. - */ -int tpm_backend_reset_tpm_established_flag(TPMBackend *s, uint8_t locty); - -/** - * tpm_backend_open: - * @s: the backend to open - * @errp: a pointer to return the #Error object if an error occurs. - * - * This function will open the backend if it is not already open. Calling this - * function on an already opened backend will not result in an error. - */ -void tpm_backend_open(TPMBackend *s, Error **errp); - -/** - * tpm_backend_get_tpm_version: - * @s: the backend to call into - * - * Get the TPM Version that is emulated at the backend. - * - * Returns TPMVersion. - */ -TPMVersion tpm_backend_get_tpm_version(TPMBackend *s); - -TPMBackend *qemu_find_tpm(const char *id); - -const TPMDriverOps *tpm_get_backend_driver(const char *type); -int tpm_register_model(enum TpmModel model); -int tpm_register_driver(const TPMDriverOps *tdo); - -#endif diff --git a/qemu/include/sysemu/tpm_backend_int.h b/qemu/include/sysemu/tpm_backend_int.h deleted file mode 100644 index 40f693a0c..000000000 --- a/qemu/include/sysemu/tpm_backend_int.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * common TPM backend driver functions - * - * Copyright (c) 2012-2013 IBM Corporation - * Authors: - * Stefan Berger - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, see - */ - -#ifndef TPM_TPM_BACKEND_H -#define TPM_TPM_BACKEND_H - -#include - -typedef struct TPMBackendThread { - GThreadPool *pool; -} TPMBackendThread; - -void tpm_backend_thread_deliver_request(TPMBackendThread *tbt); -void tpm_backend_thread_create(TPMBackendThread *tbt, - GFunc func, gpointer user_data); -void tpm_backend_thread_end(TPMBackendThread *tbt); - -typedef enum TPMBackendCmd { - TPM_BACKEND_CMD_INIT = 1, - TPM_BACKEND_CMD_PROCESS_CMD, - TPM_BACKEND_CMD_END, - TPM_BACKEND_CMD_TPM_RESET, -} TPMBackendCmd; - -#endif /* TPM_TPM_BACKEND_H */ diff --git a/qemu/include/sysemu/watchdog.h b/qemu/include/sysemu/watchdog.h deleted file mode 100644 index 72a4da07a..000000000 --- a/qemu/include/sysemu/watchdog.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Virtual hardware watchdog. - * - * Copyright (C) 2009 Red Hat Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, see . - * - * By Richard W.M. Jones (rjones@redhat.com). - */ - -#ifndef QEMU_WATCHDOG_H -#define QEMU_WATCHDOG_H - -#include "qemu/queue.h" - -/* Possible values for action parameter. */ -#define WDT_RESET 1 /* Hard reset. */ -#define WDT_SHUTDOWN 2 /* Shutdown. */ -#define WDT_POWEROFF 3 /* Quit. */ -#define WDT_PAUSE 4 /* Pause. */ -#define WDT_DEBUG 5 /* Prints a message and continues running. */ -#define WDT_NONE 6 /* Do nothing. */ -#define WDT_NMI 7 /* Inject nmi into the guest. */ - -struct WatchdogTimerModel { - QLIST_ENTRY(WatchdogTimerModel) entry; - - /* Short name of the device - used to select it on the command line. */ - const char *wdt_name; - /* Longer description (eg. manufacturer and full model number). */ - const char *wdt_description; -}; -typedef struct WatchdogTimerModel WatchdogTimerModel; - -/* in hw/watchdog.c */ -int select_watchdog(const char *p); -int select_watchdog_action(const char *action); -int get_watchdog_action(void); -void watchdog_add_model(WatchdogTimerModel *model); -void watchdog_perform_action(void); - -#endif /* QEMU_WATCHDOG_H */ diff --git a/qemu/include/sysemu/xen-mapcache.h b/qemu/include/sysemu/xen-mapcache.h deleted file mode 100644 index c849489fb..000000000 --- a/qemu/include/sysemu/xen-mapcache.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2011 Citrix Ltd. - * - * This work is licensed under the terms of the GNU GPL, version 2. See - * the COPYING file in the top-level directory. - * - */ - -#ifndef XEN_MAPCACHE_H -#define XEN_MAPCACHE_H - - -typedef hwaddr (*phys_offset_to_gaddr_t)(hwaddr start_addr, - ram_addr_t size, - void *opaque); -#ifdef CONFIG_XEN - -void xen_map_cache_init(phys_offset_to_gaddr_t f, - void *opaque); -uint8_t *xen_map_cache(hwaddr phys_addr, hwaddr size, - uint8_t lock); -ram_addr_t xen_ram_addr_from_mapcache(void *ptr); -void xen_invalidate_map_cache_entry(uint8_t *buffer); -void xen_invalidate_map_cache(void); - -#else - -static inline void xen_map_cache_init(phys_offset_to_gaddr_t f, - void *opaque) -{ -} - -static inline uint8_t *xen_map_cache(hwaddr phys_addr, - hwaddr size, - uint8_t lock) -{ - abort(); -} - -static inline ram_addr_t xen_ram_addr_from_mapcache(void *ptr) -{ - abort(); -} - -static inline void xen_invalidate_map_cache_entry(uint8_t *buffer) -{ -} - -static inline void xen_invalidate_map_cache(void) -{ -} - -#endif - -#endif /* !XEN_MAPCACHE_H */ -- cgit 1.2.3-korg