2018-12-13 13:32:06 +00:00
|
|
|
/*
|
|
|
|
* 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.1 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
|
|
|
|
* <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
2008-05-16 16:51:30 +00:00
|
|
|
|
2019-06-18 11:13:14 -05:00
|
|
|
#pragma once
|
2018-12-13 13:32:06 +00:00
|
|
|
|
2019-06-18 11:13:14 -05:00
|
|
|
#ifdef WITH_QEMU
|
2018-12-13 13:32:06 +00:00
|
|
|
|
2019-06-18 11:13:14 -05:00
|
|
|
# include "capabilities.h"
|
|
|
|
# include "virfilecache.h"
|
|
|
|
# include "domain_conf.h"
|
|
|
|
# include "qemu/qemu_capabilities.h"
|
|
|
|
# include "qemu/qemu_conf.h"
|
2008-05-16 16:51:30 +00:00
|
|
|
|
2019-06-18 11:13:14 -05:00
|
|
|
# define TEST_QEMU_CAPS_PATH abs_srcdir "/qemucapabilitiesdata"
|
2019-04-16 12:22:31 +02:00
|
|
|
|
2016-05-10 11:35:43 +02:00
|
|
|
enum {
|
|
|
|
GIC_NONE = 0,
|
|
|
|
GIC_V2,
|
|
|
|
GIC_V3,
|
|
|
|
GIC_BOTH,
|
|
|
|
};
|
|
|
|
|
2022-01-06 12:32:25 +01:00
|
|
|
typedef enum {
|
|
|
|
HOST_OS_LINUX = 0,
|
2022-01-06 11:45:25 +01:00
|
|
|
HOST_OS_MACOS,
|
2022-01-06 12:32:25 +01:00
|
|
|
} testQemuHostOS;
|
|
|
|
|
2019-03-31 11:49:34 -04:00
|
|
|
typedef enum {
|
2021-08-17 13:51:11 +02:00
|
|
|
ARG_QEMU_CAPS = QEMU_CAPS_LAST + 1,
|
2019-03-31 11:49:34 -04:00
|
|
|
ARG_GIC,
|
|
|
|
ARG_MIGRATE_FROM,
|
|
|
|
ARG_MIGRATE_FD,
|
|
|
|
ARG_FLAGS,
|
|
|
|
ARG_PARSEFLAGS,
|
|
|
|
ARG_CAPS_ARCH,
|
|
|
|
ARG_CAPS_VER,
|
2022-01-06 12:32:33 +01:00
|
|
|
ARG_HOST_OS,
|
2019-03-31 11:49:34 -04:00
|
|
|
ARG_END,
|
|
|
|
} testQemuInfoArgName;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
FLAG_EXPECT_FAILURE = 1 << 0,
|
|
|
|
FLAG_EXPECT_PARSE_ERROR = 1 << 1,
|
2020-10-21 10:08:11 +02:00
|
|
|
FLAG_FIPS_HOST = 1 << 2, /* simulate host with FIPS mode enabled */
|
2019-03-31 11:49:34 -04:00
|
|
|
FLAG_REAL_CAPS = 1 << 3,
|
|
|
|
FLAG_SKIP_LEGACY_CPUS = 1 << 4,
|
2019-08-08 18:55:14 +04:00
|
|
|
FLAG_SLIRP_HELPER = 1 << 5,
|
2019-03-31 11:49:34 -04:00
|
|
|
} testQemuInfoFlags;
|
|
|
|
|
2021-08-17 16:26:58 +02:00
|
|
|
struct testQemuConf {
|
|
|
|
GHashTable *capscache;
|
|
|
|
GHashTable *capslatest;
|
|
|
|
GHashTable *qapiSchemaCache;
|
|
|
|
};
|
|
|
|
|
2021-08-17 15:30:44 +02:00
|
|
|
struct testQemuArgs {
|
|
|
|
bool newargs;
|
|
|
|
virQEMUCaps *fakeCaps;
|
|
|
|
bool fakeCapsUsed;
|
|
|
|
char *capsver;
|
|
|
|
char *capsarch;
|
|
|
|
int gic;
|
2022-01-06 12:32:33 +01:00
|
|
|
testQemuHostOS hostOS;
|
2021-08-17 15:30:44 +02:00
|
|
|
bool invalidarg;
|
|
|
|
};
|
|
|
|
|
2019-03-31 11:49:34 -04:00
|
|
|
struct testQemuInfo {
|
|
|
|
const char *name;
|
|
|
|
char *infile;
|
|
|
|
char *outfile;
|
2020-09-22 11:57:39 +00:00
|
|
|
char *errfile;
|
2021-03-11 08:16:13 +01:00
|
|
|
virQEMUCaps *qemuCaps;
|
2019-03-31 11:49:34 -04:00
|
|
|
const char *migrateFrom;
|
|
|
|
int migrateFd;
|
|
|
|
unsigned int flags;
|
|
|
|
unsigned int parseFlags;
|
2019-10-24 17:51:42 +02:00
|
|
|
virArch arch;
|
2020-05-15 14:33:10 +02:00
|
|
|
char *schemafile;
|
2021-08-17 16:26:58 +02:00
|
|
|
|
2021-08-17 15:30:44 +02:00
|
|
|
struct testQemuArgs args;
|
2021-08-17 16:26:58 +02:00
|
|
|
struct testQemuConf *conf;
|
2019-03-31 11:49:34 -04:00
|
|
|
};
|
|
|
|
|
2021-03-11 08:16:13 +01:00
|
|
|
virCaps *testQemuCapsInit(void);
|
2022-01-06 11:45:25 +01:00
|
|
|
virCaps *testQemuCapsInitMacOS(void);
|
2021-03-11 08:16:13 +01:00
|
|
|
virDomainXMLOption *testQemuXMLConfInit(void);
|
2014-06-27 16:39:27 +02:00
|
|
|
|
2018-04-04 09:17:52 +02:00
|
|
|
|
2021-03-11 08:16:13 +01:00
|
|
|
virQEMUCaps *qemuTestParseCapabilitiesArch(virArch arch,
|
2018-04-04 09:17:52 +02:00
|
|
|
const char *capsFile);
|
2015-03-23 17:19:28 +01:00
|
|
|
|
2021-03-11 08:16:13 +01:00
|
|
|
extern virCPUDef *cpuDefault;
|
|
|
|
extern virCPUDef *cpuHaswell;
|
|
|
|
extern virCPUDef *cpuPower8;
|
|
|
|
extern virCPUDef *cpuPower9;
|
2016-08-04 13:16:55 +02:00
|
|
|
|
2021-03-11 08:16:13 +01:00
|
|
|
void qemuTestSetHostArch(virQEMUDriver *driver,
|
2019-11-26 17:51:22 +00:00
|
|
|
virArch arch);
|
2021-03-11 08:16:13 +01:00
|
|
|
void qemuTestSetHostCPU(virQEMUDriver *driver,
|
2019-11-29 10:40:39 +00:00
|
|
|
virArch arch,
|
2021-03-11 08:16:13 +01:00
|
|
|
virCPUDef *cpu);
|
2015-03-23 17:19:28 +01:00
|
|
|
|
2015-09-15 08:16:02 +02:00
|
|
|
int qemuTestDriverInit(virQEMUDriver *driver);
|
|
|
|
void qemuTestDriverFree(virQEMUDriver *driver);
|
2021-03-11 08:16:13 +01:00
|
|
|
int qemuTestCapsCacheInsert(virFileCache *cache,
|
|
|
|
virQEMUCaps *caps);
|
2022-01-06 11:45:25 +01:00
|
|
|
int qemuTestCapsCacheInsertMacOS(virFileCache *cache,
|
|
|
|
virQEMUCaps *caps);
|
2015-09-09 17:03:14 +03:00
|
|
|
|
2021-03-11 08:16:13 +01:00
|
|
|
int testQemuCapsSetGIC(virQEMUCaps *qemuCaps,
|
2016-05-10 11:35:43 +02:00
|
|
|
int gic);
|
2018-04-18 10:47:31 +02:00
|
|
|
|
2019-04-16 12:26:22 +02:00
|
|
|
char *testQemuGetLatestCapsForArch(const char *arch,
|
2018-04-18 10:47:31 +02:00
|
|
|
const char *suffix);
|
2020-10-22 19:04:18 +02:00
|
|
|
GHashTable *testQemuGetLatestCaps(void);
|
2018-04-18 10:47:31 +02:00
|
|
|
|
2019-10-22 15:34:10 +02:00
|
|
|
typedef int (*testQemuCapsIterateCallback)(const char *inputDir,
|
2019-10-22 16:08:10 +02:00
|
|
|
const char *prefix,
|
|
|
|
const char *version,
|
2019-03-07 15:54:55 +01:00
|
|
|
const char *archName,
|
2019-10-22 15:44:37 +02:00
|
|
|
const char *suffix,
|
2019-03-07 15:54:55 +01:00
|
|
|
void *opaque);
|
2019-04-16 12:33:14 +02:00
|
|
|
int testQemuCapsIterate(const char *suffix,
|
2019-03-07 15:54:55 +01:00
|
|
|
testQemuCapsIterateCallback callback,
|
|
|
|
void *opaque);
|
|
|
|
|
2021-08-17 15:30:44 +02:00
|
|
|
void testQemuInfoSetArgs(struct testQemuInfo *info,
|
|
|
|
struct testQemuConf *conf,
|
|
|
|
...);
|
|
|
|
int testQemuInfoInitArgs(struct testQemuInfo *info);
|
2019-03-31 11:49:34 -04:00
|
|
|
void testQemuInfoClear(struct testQemuInfo *info);
|
|
|
|
|
2022-02-09 12:30:25 +01:00
|
|
|
int testQemuPrepareHostBackendChardevOne(virDomainDeviceDef *dev,
|
|
|
|
virDomainChrSourceDef *chardev,
|
|
|
|
void *opaque);
|
2019-06-18 11:13:14 -05:00
|
|
|
#endif
|