pc, pci, virtio: fixes, features
A bunch of fixes all over the place. A new vmcore device - the user interface around it is still somewhat controversial, but I feel most of the code is fine, suggestions can be addressed by adding patches on top. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> -----BEGIN PGP SIGNATURE----- iQEcBAABAgAGBQJZ4s+/AAoJECgfDbjSjVRpHQMH/2fVQ9b70BvG4KFpzwhIT3dg eyglA9NsXTVINcGu598ZoBD+1OF1N23o6SpcOd56nyLnBwAWiwfnOk05Ncx7WQ4g VZoxWcpzrG6SO1Hczg4y1EfT1+cIhlaf3a0kuVGmDTb/zPdMwAqAzw0rjvY5uIjY wixOWXfJ34Tq8PNrFIaWECuI5Php+QVTNnvvKQTzgWn1iksj1a4pdZb6/Jd5SLFY 6hjtfZccDSsqeOduoJMJGJ2pHLbZEaqpxzPBM/AVW0BdWTpeOPI12SazZwUfEcLe uHoIASknekX9E6U57l0syRHlvBTnaZkJ0YIw4e3Z08qPBYOL8eFr+M8kjHaIIxc= =yEmz -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging pc, pci, virtio: fixes, features A bunch of fixes all over the place. A new vmcore device - the user interface around it is still somewhat controversial, but I feel most of the code is fine, suggestions can be addressed by adding patches on top. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> # gpg: Signature made Sun 15 Oct 2017 04:02:23 BST # gpg: using RSA key 0x281F0DB8D28D5469 # gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>" # gpg: aka "Michael S. Tsirkin <mst@redhat.com>" # Primary key fingerprint: 0270 606B 6F3C DF3D 0B17 0970 C350 3912 AFBE 8E67 # Subkey fingerprint: 5D09 FD08 71C8 F85B 94CA 8A0D 281F 0DB8 D28D 5469 * remotes/mst/tags/for_upstream: (26 commits) tests/pxe: Test more NICs when running in SPEED=slow mode pc: remove useless hot_add_cpu initialisation isapc: Remove unnecessary migration compatibility code virtio-pci: Replace modern_as with direct access to modern_bar virtio: fix descriptor counting in virtqueue_pop hw/gen_pcie_root_port: make IO RO 0 on IO disabled pci: Validate interfaces on base_class_init xen/pt: Mark TYPE_XEN_PT_DEVICE as hybrid pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices pci: Add INTERFACE_PCIE_DEVICE to all PCIe devices pci: Add interface names to hybrid PCI devices pci: conventional-pci-device and pci-express-device interfaces PCI: PCIe access should always be little endian virtio/pci/migration: Convert to VMState hw/pci-bridge/pcie_pci_bridge: properly handle MSI unavailability case pci: allow 32-bit PCI IO accesses to pass through the PCI bridge virtio/vhost: reset dev->log after syncing MAINTAINERS: add Dump maintainers scripts/dump-guest-memory.py: add vmcoreinfo kdump: set vmcoreinfo location ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
c5bbcaa4b7
100 changed files with 985 additions and 159 deletions
46
include/hw/misc/vmcoreinfo.h
Normal file
46
include/hw/misc/vmcoreinfo.h
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Virtual Machine coreinfo device
|
||||
*
|
||||
* Copyright (C) 2017 Red Hat, Inc.
|
||||
*
|
||||
* Authors: Marc-André Lureau <marcandre.lureau@redhat.com>
|
||||
*
|
||||
* 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 VMCOREINFO_H
|
||||
#define VMCOREINFO_H
|
||||
|
||||
#include "hw/qdev.h"
|
||||
|
||||
#define VMCOREINFO_DEVICE "vmcoreinfo"
|
||||
#define VMCOREINFO(obj) OBJECT_CHECK(VMCoreInfoState, (obj), VMCOREINFO_DEVICE)
|
||||
|
||||
#define VMCOREINFO_FORMAT_NONE 0x0
|
||||
#define VMCOREINFO_FORMAT_ELF 0x1
|
||||
|
||||
/* all fields are little-endian */
|
||||
typedef struct FWCfgVMCoreInfo {
|
||||
uint16_t host_format; /* set on reset */
|
||||
uint16_t guest_format;
|
||||
uint32_t size;
|
||||
uint64_t paddr;
|
||||
} QEMU_PACKED FWCfgVMCoreInfo;
|
||||
|
||||
typedef struct VMCoreInfoState {
|
||||
DeviceClass parent_obj;
|
||||
|
||||
bool has_vmcoreinfo;
|
||||
FWCfgVMCoreInfo vmcoreinfo;
|
||||
} VMCoreInfoState;
|
||||
|
||||
/* returns NULL unless there is exactly one device */
|
||||
static inline VMCoreInfoState *vmcoreinfo_find(void)
|
||||
{
|
||||
Object *o = object_resolve_path_type("", VMCOREINFO_DEVICE, NULL);
|
||||
|
||||
return o ? VMCOREINFO(o) : NULL;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -45,6 +45,7 @@ typedef struct FWCfgDmaAccess {
|
|||
} QEMU_PACKED FWCfgDmaAccess;
|
||||
|
||||
typedef void (*FWCfgCallback)(void *opaque);
|
||||
typedef void (*FWCfgWriteCallback)(void *opaque, off_t start, size_t len);
|
||||
|
||||
struct FWCfgState {
|
||||
/*< private >*/
|
||||
|
|
@ -183,6 +184,7 @@ void fw_cfg_add_file(FWCfgState *s, const char *filename, void *data,
|
|||
* @s: fw_cfg device being modified
|
||||
* @filename: name of new fw_cfg file item
|
||||
* @select_cb: callback function when selecting
|
||||
* @write_cb: callback function after a write
|
||||
* @callback_opaque: argument to be passed into callback function
|
||||
* @data: pointer to start of item data
|
||||
* @len: size of item data
|
||||
|
|
@ -202,6 +204,7 @@ void fw_cfg_add_file(FWCfgState *s, const char *filename, void *data,
|
|||
*/
|
||||
void fw_cfg_add_file_callback(FWCfgState *s, const char *filename,
|
||||
FWCfgCallback select_cb,
|
||||
FWCfgWriteCallback write_cb,
|
||||
void *callback_opaque,
|
||||
void *data, size_t len, bool read_only);
|
||||
|
||||
|
|
|
|||
|
|
@ -198,6 +198,12 @@ enum {
|
|||
#define PCI_DEVICE_GET_CLASS(obj) \
|
||||
OBJECT_GET_CLASS(PCIDeviceClass, (obj), TYPE_PCI_DEVICE)
|
||||
|
||||
/* Implemented by devices that can be plugged on PCI Express buses */
|
||||
#define INTERFACE_PCIE_DEVICE "pci-express-device"
|
||||
|
||||
/* Implemented by devices that can be plugged on Conventional PCI buses */
|
||||
#define INTERFACE_CONVENTIONAL_PCI_DEVICE "conventional-pci-device"
|
||||
|
||||
typedef struct PCIINTxRoute {
|
||||
enum {
|
||||
PCI_INTX_ENABLED,
|
||||
|
|
|
|||
|
|
@ -192,6 +192,8 @@ typedef struct DumpState {
|
|||
* this could be used to calculate
|
||||
* how much work we have
|
||||
* finished. */
|
||||
uint8_t *guest_note; /* ELF note content */
|
||||
size_t guest_note_size;
|
||||
} DumpState;
|
||||
|
||||
uint16_t cpu_to_dump16(DumpState *s, uint16_t val);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue