2018-06-18 19:17:42 +03:00
|
|
|
/*
|
|
|
|
* Xen HVM emulation support in KVM
|
|
|
|
*
|
|
|
|
* Copyright © 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
|
|
*
|
|
|
|
* 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_I386_KVM_XEN_COMPAT_H
|
|
|
|
#define QEMU_I386_KVM_XEN_COMPAT_H
|
|
|
|
|
|
|
|
#include "hw/xen/interface/memory.h"
|
|
|
|
|
|
|
|
typedef uint32_t compat_pfn_t;
|
|
|
|
typedef uint32_t compat_ulong_t;
|
2022-12-15 13:39:30 +03:00
|
|
|
typedef uint32_t compat_ptr_t;
|
|
|
|
|
|
|
|
#define __DEFINE_COMPAT_HANDLE(name, type) \
|
|
|
|
typedef struct { \
|
|
|
|
compat_ptr_t c; \
|
|
|
|
type *_[0] __attribute__((packed)); \
|
|
|
|
} __compat_handle_ ## name; \
|
|
|
|
|
|
|
|
#define DEFINE_COMPAT_HANDLE(name) __DEFINE_COMPAT_HANDLE(name, name)
|
|
|
|
#define COMPAT_HANDLE(name) __compat_handle_ ## name
|
|
|
|
|
|
|
|
DEFINE_COMPAT_HANDLE(compat_pfn_t);
|
|
|
|
DEFINE_COMPAT_HANDLE(compat_ulong_t);
|
|
|
|
DEFINE_COMPAT_HANDLE(int);
|
2018-06-18 19:17:42 +03:00
|
|
|
|
|
|
|
struct compat_xen_add_to_physmap {
|
|
|
|
domid_t domid;
|
|
|
|
uint16_t size;
|
|
|
|
unsigned int space;
|
|
|
|
compat_ulong_t idx;
|
|
|
|
compat_pfn_t gpfn;
|
|
|
|
};
|
|
|
|
|
2022-12-15 13:39:30 +03:00
|
|
|
struct compat_xen_add_to_physmap_batch {
|
|
|
|
domid_t domid;
|
|
|
|
uint16_t space;
|
|
|
|
uint16_t size;
|
|
|
|
uint16_t extra;
|
|
|
|
COMPAT_HANDLE(compat_ulong_t) idxs;
|
|
|
|
COMPAT_HANDLE(compat_pfn_t) gpfns;
|
|
|
|
COMPAT_HANDLE(int) errs;
|
|
|
|
};
|
|
|
|
|
2023-01-13 03:24:40 +03:00
|
|
|
struct compat_physdev_map_pirq {
|
|
|
|
domid_t domid;
|
|
|
|
uint16_t pad;
|
|
|
|
/* IN */
|
|
|
|
int type;
|
|
|
|
/* IN (ignored for ..._MULTI_MSI) */
|
|
|
|
int index;
|
|
|
|
/* IN or OUT */
|
|
|
|
int pirq;
|
|
|
|
/* IN - high 16 bits hold segment for ..._MSI_SEG and ..._MULTI_MSI */
|
|
|
|
int bus;
|
|
|
|
/* IN */
|
|
|
|
int devfn;
|
|
|
|
/* IN (also OUT for ..._MULTI_MSI) */
|
|
|
|
int entry_nr;
|
|
|
|
/* IN */
|
|
|
|
uint64_t table_base;
|
|
|
|
} __attribute__((packed));
|
|
|
|
|
2018-06-18 19:17:42 +03:00
|
|
|
#endif /* QEMU_I386_XEN_COMPAT_H */
|