* e1000e qtest improvements
* Allow TLS PSK tests on win32 * Increase the timeout of the clang-user CI job * Some s390x fixes for QEMU 7.2 -----BEGIN PGP SIGNATURE----- iQJEBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmNn0vMRHHRodXRoQHJl ZGhhdC5jb20ACgkQLtnXdP5wLbXCoQ/1HXhfnPv/sIjdfJqC0M5/DjpOz2VM/fTb g/GGf3EiAlbnK09rjvZA939PAar+MQzBC5YJkn77jX6KFAyeQrQR3xCHIsjgeR+S c9v5Ix+OD4WAZHMwQ4XFtK5gxIqYHXY9kkBXqJspPC4BbQRRF4wfLXS5z7Mny7pH goz2F2FBCaT+hMK7Z8ibh2trdGEAevCoG6rRRUCkgrURy7mGy4fMiSyXHMOR8OD2 quxUj+1aq57jdqPGix45pqzRNot6SRkqRuJXruSHJ3nV1ZV1192LiHPA1tUZIPpt pKNt2HJwcWJY0letAA9zB/xwwX8GppGrnJq65RKprSZXWLFHevM/jXx44KxPCWAz X7ASSpyX2ZW6H6MNyWpt+Bs66x0x6j6XYL0nPU4rmVeGteimnKyzYTcWlOcVA3Zp LDov8wIBlxTaQPK9RfrgvdiAR9RnH9OHUiSZVIhl9lJycQr2URLRM6pVXGDhXL/O YMe6gxoui8es4blXuMeEJfo1PWrZGsvY+sb0Ixz2+AFO/CT8HQYWVkK6lH2j9ymK NjDKmfFmNfzv/JA25CqDhY3/eUjLn3Nej2up9tzJBtddHjaqvaN1EzBpLipX42M1 +QnfzP6WTimMgP+QznT0Y1OE1irJyAi/jNW7lUWcrtMHqSQSgexuLjljVBgyVZls 2AyGTz/g+Q== =w9Q7 -----END PGP SIGNATURE----- Merge tag 'pull-request-2022-11-06' of https://gitlab.com/thuth/qemu into staging * e1000e qtest improvements * Allow TLS PSK tests on win32 * Increase the timeout of the clang-user CI job * Some s390x fixes for QEMU 7.2 # -----BEGIN PGP SIGNATURE----- # # iQJEBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmNn0vMRHHRodXRoQHJl # ZGhhdC5jb20ACgkQLtnXdP5wLbXCoQ/1HXhfnPv/sIjdfJqC0M5/DjpOz2VM/fTb # g/GGf3EiAlbnK09rjvZA939PAar+MQzBC5YJkn77jX6KFAyeQrQR3xCHIsjgeR+S # c9v5Ix+OD4WAZHMwQ4XFtK5gxIqYHXY9kkBXqJspPC4BbQRRF4wfLXS5z7Mny7pH # goz2F2FBCaT+hMK7Z8ibh2trdGEAevCoG6rRRUCkgrURy7mGy4fMiSyXHMOR8OD2 # quxUj+1aq57jdqPGix45pqzRNot6SRkqRuJXruSHJ3nV1ZV1192LiHPA1tUZIPpt # pKNt2HJwcWJY0letAA9zB/xwwX8GppGrnJq65RKprSZXWLFHevM/jXx44KxPCWAz # X7ASSpyX2ZW6H6MNyWpt+Bs66x0x6j6XYL0nPU4rmVeGteimnKyzYTcWlOcVA3Zp # LDov8wIBlxTaQPK9RfrgvdiAR9RnH9OHUiSZVIhl9lJycQr2URLRM6pVXGDhXL/O # YMe6gxoui8es4blXuMeEJfo1PWrZGsvY+sb0Ixz2+AFO/CT8HQYWVkK6lH2j9ymK # NjDKmfFmNfzv/JA25CqDhY3/eUjLn3Nej2up9tzJBtddHjaqvaN1EzBpLipX42M1 # +QnfzP6WTimMgP+QznT0Y1OE1irJyAi/jNW7lUWcrtMHqSQSgexuLjljVBgyVZls # 2AyGTz/g+Q== # =w9Q7 # -----END PGP SIGNATURE----- # gpg: Signature made Sun 06 Nov 2022 10:29:55 EST # gpg: using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5 # gpg: issuer "thuth@redhat.com" # gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full] # gpg: aka "Thomas Huth <thuth@redhat.com>" [full] # gpg: aka "Thomas Huth <huth@tuxfamily.org>" [full] # gpg: aka "Thomas Huth <th.huth@posteo.de>" [unknown] # Primary key fingerprint: 27B8 8847 EEE0 2501 18F3 EAB9 2ED9 D774 FE70 2DB5 * tag 'pull-request-2022-11-06' of https://gitlab.com/thuth/qemu: s390x/cpu topology: add max_threads machine class attribute s390x: Register TYPE_S390_CCW_MACHINE properties as class properties s390x/pci: RPCIT second pass when mappings exhausted s390x/css: revert SCSW ctrl/flag bits on error gitlab-ci: increase clang-user timeout tests/qtest: migration-test: Enable TLS PSK tests for win32 tests/qtest: Fix two format strings tests/qtest/libqos/e1000e: Use IVAR shift definitions tests/qtest/libqos/e1000e: Use E1000_STATUS_ASDV_1000 tests/qtest/e1000e-test: Use e1000_regs.h tests/qtest/libqos/e1000e: Set E1000_CTRL_SLU tests/qtest/libqos/e1000e: Refer common PCI ID definitions Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
cd706454c6
|
@ -327,6 +327,7 @@ clang-user:
|
||||||
extends: .native_build_job_template
|
extends: .native_build_job_template
|
||||||
needs:
|
needs:
|
||||||
job: amd64-debian-user-cross-container
|
job: amd64-debian-user-cross-container
|
||||||
|
timeout: 70m
|
||||||
variables:
|
variables:
|
||||||
IMAGE: debian-all-test-cross
|
IMAGE: debian-all-test-cross
|
||||||
CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
|
CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
|
||||||
|
|
|
@ -1522,21 +1522,37 @@ IOInstEnding css_do_xsch(SubchDev *sch)
|
||||||
IOInstEnding css_do_csch(SubchDev *sch)
|
IOInstEnding css_do_csch(SubchDev *sch)
|
||||||
{
|
{
|
||||||
SCHIB *schib = &sch->curr_status;
|
SCHIB *schib = &sch->curr_status;
|
||||||
|
uint16_t old_scsw_ctrl;
|
||||||
|
IOInstEnding ccode;
|
||||||
|
|
||||||
if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) {
|
if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) {
|
||||||
return IOINST_CC_NOT_OPERATIONAL;
|
return IOINST_CC_NOT_OPERATIONAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Save the current scsw.ctrl in case CSCH fails and we need
|
||||||
|
* to revert the scsw to the status quo ante.
|
||||||
|
*/
|
||||||
|
old_scsw_ctrl = schib->scsw.ctrl;
|
||||||
|
|
||||||
/* Trigger the clear function. */
|
/* Trigger the clear function. */
|
||||||
schib->scsw.ctrl &= ~(SCSW_CTRL_MASK_FCTL | SCSW_CTRL_MASK_ACTL);
|
schib->scsw.ctrl &= ~(SCSW_CTRL_MASK_FCTL | SCSW_CTRL_MASK_ACTL);
|
||||||
schib->scsw.ctrl |= SCSW_FCTL_CLEAR_FUNC | SCSW_ACTL_CLEAR_PEND;
|
schib->scsw.ctrl |= SCSW_FCTL_CLEAR_FUNC | SCSW_ACTL_CLEAR_PEND;
|
||||||
|
|
||||||
return do_subchannel_work(sch);
|
ccode = do_subchannel_work(sch);
|
||||||
|
|
||||||
|
if (ccode != IOINST_CC_EXPECTED) {
|
||||||
|
schib->scsw.ctrl = old_scsw_ctrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ccode;
|
||||||
}
|
}
|
||||||
|
|
||||||
IOInstEnding css_do_hsch(SubchDev *sch)
|
IOInstEnding css_do_hsch(SubchDev *sch)
|
||||||
{
|
{
|
||||||
SCHIB *schib = &sch->curr_status;
|
SCHIB *schib = &sch->curr_status;
|
||||||
|
uint16_t old_scsw_ctrl;
|
||||||
|
IOInstEnding ccode;
|
||||||
|
|
||||||
if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) {
|
if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) {
|
||||||
return IOINST_CC_NOT_OPERATIONAL;
|
return IOINST_CC_NOT_OPERATIONAL;
|
||||||
|
@ -1553,6 +1569,12 @@ IOInstEnding css_do_hsch(SubchDev *sch)
|
||||||
return IOINST_CC_BUSY;
|
return IOINST_CC_BUSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Save the current scsw.ctrl in case HSCH fails and we need
|
||||||
|
* to revert the scsw to the status quo ante.
|
||||||
|
*/
|
||||||
|
old_scsw_ctrl = schib->scsw.ctrl;
|
||||||
|
|
||||||
/* Trigger the halt function. */
|
/* Trigger the halt function. */
|
||||||
schib->scsw.ctrl |= SCSW_FCTL_HALT_FUNC;
|
schib->scsw.ctrl |= SCSW_FCTL_HALT_FUNC;
|
||||||
schib->scsw.ctrl &= ~SCSW_FCTL_START_FUNC;
|
schib->scsw.ctrl &= ~SCSW_FCTL_START_FUNC;
|
||||||
|
@ -1564,7 +1586,13 @@ IOInstEnding css_do_hsch(SubchDev *sch)
|
||||||
}
|
}
|
||||||
schib->scsw.ctrl |= SCSW_ACTL_HALT_PEND;
|
schib->scsw.ctrl |= SCSW_ACTL_HALT_PEND;
|
||||||
|
|
||||||
return do_subchannel_work(sch);
|
ccode = do_subchannel_work(sch);
|
||||||
|
|
||||||
|
if (ccode != IOINST_CC_EXPECTED) {
|
||||||
|
schib->scsw.ctrl = old_scsw_ctrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ccode;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void css_update_chnmon(SubchDev *sch)
|
static void css_update_chnmon(SubchDev *sch)
|
||||||
|
@ -1605,6 +1633,8 @@ static void css_update_chnmon(SubchDev *sch)
|
||||||
IOInstEnding css_do_ssch(SubchDev *sch, ORB *orb)
|
IOInstEnding css_do_ssch(SubchDev *sch, ORB *orb)
|
||||||
{
|
{
|
||||||
SCHIB *schib = &sch->curr_status;
|
SCHIB *schib = &sch->curr_status;
|
||||||
|
uint16_t old_scsw_ctrl, old_scsw_flags;
|
||||||
|
IOInstEnding ccode;
|
||||||
|
|
||||||
if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) {
|
if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) {
|
||||||
return IOINST_CC_NOT_OPERATIONAL;
|
return IOINST_CC_NOT_OPERATIONAL;
|
||||||
|
@ -1626,11 +1656,26 @@ IOInstEnding css_do_ssch(SubchDev *sch, ORB *orb)
|
||||||
}
|
}
|
||||||
sch->orb = *orb;
|
sch->orb = *orb;
|
||||||
sch->channel_prog = orb->cpa;
|
sch->channel_prog = orb->cpa;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Save the current scsw.ctrl and scsw.flags in case SSCH fails and we need
|
||||||
|
* to revert the scsw to the status quo ante.
|
||||||
|
*/
|
||||||
|
old_scsw_ctrl = schib->scsw.ctrl;
|
||||||
|
old_scsw_flags = schib->scsw.flags;
|
||||||
|
|
||||||
/* Trigger the start function. */
|
/* Trigger the start function. */
|
||||||
schib->scsw.ctrl |= (SCSW_FCTL_START_FUNC | SCSW_ACTL_START_PEND);
|
schib->scsw.ctrl |= (SCSW_FCTL_START_FUNC | SCSW_ACTL_START_PEND);
|
||||||
schib->scsw.flags &= ~SCSW_FLAGS_MASK_PNO;
|
schib->scsw.flags &= ~SCSW_FLAGS_MASK_PNO;
|
||||||
|
|
||||||
return do_subchannel_work(sch);
|
ccode = do_subchannel_work(sch);
|
||||||
|
|
||||||
|
if (ccode != IOINST_CC_EXPECTED) {
|
||||||
|
schib->scsw.ctrl = old_scsw_ctrl;
|
||||||
|
schib->scsw.flags = old_scsw_flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ccode;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void copy_irb_to_guest(IRB *dest, const IRB *src, const PMCW *pmcw,
|
static void copy_irb_to_guest(IRB *dest, const IRB *src, const PMCW *pmcw,
|
||||||
|
|
|
@ -677,8 +677,9 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_t r2, uintptr_t ra)
|
||||||
S390PCIBusDevice *pbdev;
|
S390PCIBusDevice *pbdev;
|
||||||
S390PCIIOMMU *iommu;
|
S390PCIIOMMU *iommu;
|
||||||
S390IOTLBEntry entry;
|
S390IOTLBEntry entry;
|
||||||
hwaddr start, end;
|
hwaddr start, end, sstart;
|
||||||
uint32_t dma_avail;
|
uint32_t dma_avail;
|
||||||
|
bool again;
|
||||||
|
|
||||||
if (env->psw.mask & PSW_MASK_PSTATE) {
|
if (env->psw.mask & PSW_MASK_PSTATE) {
|
||||||
s390_program_interrupt(env, PGM_PRIVILEGED, ra);
|
s390_program_interrupt(env, PGM_PRIVILEGED, ra);
|
||||||
|
@ -691,7 +692,7 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_t r2, uintptr_t ra)
|
||||||
}
|
}
|
||||||
|
|
||||||
fh = env->regs[r1] >> 32;
|
fh = env->regs[r1] >> 32;
|
||||||
start = env->regs[r2];
|
sstart = start = env->regs[r2];
|
||||||
end = start + env->regs[r2 + 1];
|
end = start + env->regs[r2 + 1];
|
||||||
|
|
||||||
pbdev = s390_pci_find_dev_by_fh(s390_get_phb(), fh);
|
pbdev = s390_pci_find_dev_by_fh(s390_get_phb(), fh);
|
||||||
|
@ -732,6 +733,9 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_t r2, uintptr_t ra)
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
retry:
|
||||||
|
start = sstart;
|
||||||
|
again = false;
|
||||||
while (start < end) {
|
while (start < end) {
|
||||||
error = s390_guest_io_table_walk(iommu->g_iota, start, &entry);
|
error = s390_guest_io_table_walk(iommu->g_iota, start, &entry);
|
||||||
if (error) {
|
if (error) {
|
||||||
|
@ -739,13 +743,24 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_t r2, uintptr_t ra)
|
||||||
}
|
}
|
||||||
|
|
||||||
start += entry.len;
|
start += entry.len;
|
||||||
while (entry.iova < start && entry.iova < end &&
|
while (entry.iova < start && entry.iova < end) {
|
||||||
(dma_avail > 0 || entry.perm == IOMMU_NONE)) {
|
if (dma_avail > 0 || entry.perm == IOMMU_NONE) {
|
||||||
dma_avail = s390_pci_update_iotlb(iommu, &entry);
|
dma_avail = s390_pci_update_iotlb(iommu, &entry);
|
||||||
entry.iova += TARGET_PAGE_SIZE;
|
entry.iova += TARGET_PAGE_SIZE;
|
||||||
entry.translated_addr += TARGET_PAGE_SIZE;
|
entry.translated_addr += TARGET_PAGE_SIZE;
|
||||||
|
} else {
|
||||||
|
/*
|
||||||
|
* We are unable to make a new mapping at this time, continue
|
||||||
|
* on and hopefully free up more space. Then attempt another
|
||||||
|
* pass.
|
||||||
|
*/
|
||||||
|
again = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (again && dma_avail > 0)
|
||||||
|
goto retry;
|
||||||
err:
|
err:
|
||||||
if (error) {
|
if (error) {
|
||||||
pbdev->state = ZPCI_FS_ERROR;
|
pbdev->state = ZPCI_FS_ERROR;
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
#include "sysemu/sysemu.h"
|
#include "sysemu/sysemu.h"
|
||||||
#include "hw/s390x/pv.h"
|
#include "hw/s390x/pv.h"
|
||||||
#include "migration/blocker.h"
|
#include "migration/blocker.h"
|
||||||
|
#include "qapi/visitor.h"
|
||||||
|
|
||||||
static Error *pv_mig_blocker;
|
static Error *pv_mig_blocker;
|
||||||
|
|
||||||
|
@ -84,8 +85,15 @@ out:
|
||||||
static void s390_init_cpus(MachineState *machine)
|
static void s390_init_cpus(MachineState *machine)
|
||||||
{
|
{
|
||||||
MachineClass *mc = MACHINE_GET_CLASS(machine);
|
MachineClass *mc = MACHINE_GET_CLASS(machine);
|
||||||
|
S390CcwMachineClass *s390mc = S390_CCW_MACHINE_CLASS(mc);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (machine->smp.threads > s390mc->max_threads) {
|
||||||
|
error_report("S390 does not support more than %d threads.",
|
||||||
|
s390mc->max_threads);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
/* initialize possible_cpus */
|
/* initialize possible_cpus */
|
||||||
mc->possible_cpu_arch_ids(machine);
|
mc->possible_cpu_arch_ids(machine);
|
||||||
|
|
||||||
|
@ -589,38 +597,6 @@ static ram_addr_t s390_fixup_ram_size(ram_addr_t sz)
|
||||||
return newsz;
|
return newsz;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ccw_machine_class_init(ObjectClass *oc, void *data)
|
|
||||||
{
|
|
||||||
MachineClass *mc = MACHINE_CLASS(oc);
|
|
||||||
NMIClass *nc = NMI_CLASS(oc);
|
|
||||||
HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(oc);
|
|
||||||
S390CcwMachineClass *s390mc = S390_CCW_MACHINE_CLASS(mc);
|
|
||||||
|
|
||||||
s390mc->ri_allowed = true;
|
|
||||||
s390mc->cpu_model_allowed = true;
|
|
||||||
s390mc->css_migration_enabled = true;
|
|
||||||
s390mc->hpage_1m_allowed = true;
|
|
||||||
mc->init = ccw_init;
|
|
||||||
mc->reset = s390_machine_reset;
|
|
||||||
mc->block_default_type = IF_VIRTIO;
|
|
||||||
mc->no_cdrom = 1;
|
|
||||||
mc->no_floppy = 1;
|
|
||||||
mc->no_parallel = 1;
|
|
||||||
mc->no_sdcard = 1;
|
|
||||||
mc->max_cpus = S390_MAX_CPUS;
|
|
||||||
mc->has_hotpluggable_cpus = true;
|
|
||||||
assert(!mc->get_hotplug_handler);
|
|
||||||
mc->get_hotplug_handler = s390_get_hotplug_handler;
|
|
||||||
mc->cpu_index_to_instance_props = s390_cpu_index_to_props;
|
|
||||||
mc->possible_cpu_arch_ids = s390_possible_cpu_arch_ids;
|
|
||||||
/* it is overridden with 'host' cpu *in kvm_arch_init* */
|
|
||||||
mc->default_cpu_type = S390_CPU_TYPE_NAME("qemu");
|
|
||||||
hc->plug = s390_machine_device_plug;
|
|
||||||
hc->unplug_request = s390_machine_device_unplug_request;
|
|
||||||
nc->nmi_monitor_handler = s390_nmi;
|
|
||||||
mc->default_ram_id = "s390.ram";
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool machine_get_aes_key_wrap(Object *obj, Error **errp)
|
static inline bool machine_get_aes_key_wrap(Object *obj, Error **errp)
|
||||||
{
|
{
|
||||||
S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
|
S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
|
||||||
|
@ -710,19 +686,29 @@ bool hpage_1m_allowed(void)
|
||||||
return get_machine_class()->hpage_1m_allowed;
|
return get_machine_class()->hpage_1m_allowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *machine_get_loadparm(Object *obj, Error **errp)
|
static void machine_get_loadparm(Object *obj, Visitor *v,
|
||||||
|
const char *name, void *opaque,
|
||||||
|
Error **errp)
|
||||||
{
|
{
|
||||||
S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
|
S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
|
||||||
|
char *str = g_strndup((char *) ms->loadparm, sizeof(ms->loadparm));
|
||||||
|
|
||||||
/* make a NUL-terminated string */
|
visit_type_str(v, name, &str, errp);
|
||||||
return g_strndup((char *) ms->loadparm, sizeof(ms->loadparm));
|
g_free(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void machine_set_loadparm(Object *obj, const char *val, Error **errp)
|
static void machine_set_loadparm(Object *obj, Visitor *v,
|
||||||
|
const char *name, void *opaque,
|
||||||
|
Error **errp)
|
||||||
{
|
{
|
||||||
S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
|
S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
|
||||||
|
char *val;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (!visit_type_str(v, name, &val, errp)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < sizeof(ms->loadparm) && val[i]; i++) {
|
for (i = 0; i < sizeof(ms->loadparm) && val[i]; i++) {
|
||||||
uint8_t c = qemu_toupper(val[i]); /* mimic HMC */
|
uint8_t c = qemu_toupper(val[i]); /* mimic HMC */
|
||||||
|
|
||||||
|
@ -740,34 +726,73 @@ static void machine_set_loadparm(Object *obj, const char *val, Error **errp)
|
||||||
ms->loadparm[i] = ' '; /* pad right with spaces */
|
ms->loadparm[i] = ' '; /* pad right with spaces */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static inline void s390_machine_initfn(Object *obj)
|
|
||||||
{
|
|
||||||
object_property_add_bool(obj, "aes-key-wrap",
|
|
||||||
machine_get_aes_key_wrap,
|
|
||||||
machine_set_aes_key_wrap);
|
|
||||||
object_property_set_description(obj, "aes-key-wrap",
|
|
||||||
"enable/disable AES key wrapping using the CPACF wrapping key");
|
|
||||||
object_property_set_bool(obj, "aes-key-wrap", true, NULL);
|
|
||||||
|
|
||||||
object_property_add_bool(obj, "dea-key-wrap",
|
static void ccw_machine_class_init(ObjectClass *oc, void *data)
|
||||||
machine_get_dea_key_wrap,
|
{
|
||||||
machine_set_dea_key_wrap);
|
MachineClass *mc = MACHINE_CLASS(oc);
|
||||||
object_property_set_description(obj, "dea-key-wrap",
|
NMIClass *nc = NMI_CLASS(oc);
|
||||||
|
HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(oc);
|
||||||
|
S390CcwMachineClass *s390mc = S390_CCW_MACHINE_CLASS(mc);
|
||||||
|
|
||||||
|
s390mc->ri_allowed = true;
|
||||||
|
s390mc->cpu_model_allowed = true;
|
||||||
|
s390mc->css_migration_enabled = true;
|
||||||
|
s390mc->hpage_1m_allowed = true;
|
||||||
|
s390mc->max_threads = 1;
|
||||||
|
mc->init = ccw_init;
|
||||||
|
mc->reset = s390_machine_reset;
|
||||||
|
mc->block_default_type = IF_VIRTIO;
|
||||||
|
mc->no_cdrom = 1;
|
||||||
|
mc->no_floppy = 1;
|
||||||
|
mc->no_parallel = 1;
|
||||||
|
mc->no_sdcard = 1;
|
||||||
|
mc->max_cpus = S390_MAX_CPUS;
|
||||||
|
mc->has_hotpluggable_cpus = true;
|
||||||
|
assert(!mc->get_hotplug_handler);
|
||||||
|
mc->get_hotplug_handler = s390_get_hotplug_handler;
|
||||||
|
mc->cpu_index_to_instance_props = s390_cpu_index_to_props;
|
||||||
|
mc->possible_cpu_arch_ids = s390_possible_cpu_arch_ids;
|
||||||
|
/* it is overridden with 'host' cpu *in kvm_arch_init* */
|
||||||
|
mc->default_cpu_type = S390_CPU_TYPE_NAME("qemu");
|
||||||
|
hc->plug = s390_machine_device_plug;
|
||||||
|
hc->unplug_request = s390_machine_device_unplug_request;
|
||||||
|
nc->nmi_monitor_handler = s390_nmi;
|
||||||
|
mc->default_ram_id = "s390.ram";
|
||||||
|
|
||||||
|
object_class_property_add_bool(oc, "aes-key-wrap",
|
||||||
|
machine_get_aes_key_wrap,
|
||||||
|
machine_set_aes_key_wrap);
|
||||||
|
object_class_property_set_description(oc, "aes-key-wrap",
|
||||||
|
"enable/disable AES key wrapping using the CPACF wrapping key");
|
||||||
|
|
||||||
|
object_class_property_add_bool(oc, "dea-key-wrap",
|
||||||
|
machine_get_dea_key_wrap,
|
||||||
|
machine_set_dea_key_wrap);
|
||||||
|
object_class_property_set_description(oc, "dea-key-wrap",
|
||||||
"enable/disable DEA key wrapping using the CPACF wrapping key");
|
"enable/disable DEA key wrapping using the CPACF wrapping key");
|
||||||
object_property_set_bool(obj, "dea-key-wrap", true, NULL);
|
|
||||||
object_property_add_str(obj, "loadparm",
|
object_class_property_add(oc, "loadparm", "loadparm",
|
||||||
machine_get_loadparm, machine_set_loadparm);
|
machine_get_loadparm, machine_set_loadparm,
|
||||||
object_property_set_description(obj, "loadparm",
|
NULL, NULL);
|
||||||
|
object_class_property_set_description(oc, "loadparm",
|
||||||
"Up to 8 chars in set of [A-Za-z0-9. ] (lower case chars converted"
|
"Up to 8 chars in set of [A-Za-z0-9. ] (lower case chars converted"
|
||||||
" to upper case) to pass to machine loader, boot manager,"
|
" to upper case) to pass to machine loader, boot manager,"
|
||||||
" and guest kernel");
|
" and guest kernel");
|
||||||
|
|
||||||
object_property_add_bool(obj, "zpcii-disable",
|
object_class_property_add_bool(oc, "zpcii-disable",
|
||||||
machine_get_zpcii_disable,
|
machine_get_zpcii_disable,
|
||||||
machine_set_zpcii_disable);
|
machine_set_zpcii_disable);
|
||||||
object_property_set_description(obj, "zpcii-disable",
|
object_class_property_set_description(oc, "zpcii-disable",
|
||||||
"disable zPCI interpretation facilties");
|
"disable zPCI interpretation facilties");
|
||||||
object_property_set_bool(obj, "zpcii-disable", false, NULL);
|
}
|
||||||
|
|
||||||
|
static inline void s390_machine_initfn(Object *obj)
|
||||||
|
{
|
||||||
|
S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
|
||||||
|
|
||||||
|
ms->aes_key_wrap = true;
|
||||||
|
ms->dea_key_wrap = true;
|
||||||
|
ms->zpcii_disable = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const TypeInfo ccw_machine_info = {
|
static const TypeInfo ccw_machine_info = {
|
||||||
|
@ -842,8 +867,11 @@ static void ccw_machine_7_1_instance_options(MachineState *machine)
|
||||||
|
|
||||||
static void ccw_machine_7_1_class_options(MachineClass *mc)
|
static void ccw_machine_7_1_class_options(MachineClass *mc)
|
||||||
{
|
{
|
||||||
|
S390CcwMachineClass *s390mc = S390_CCW_MACHINE_CLASS(mc);
|
||||||
|
|
||||||
ccw_machine_7_2_class_options(mc);
|
ccw_machine_7_2_class_options(mc);
|
||||||
compat_props_add(mc->compat_props, hw_compat_7_1, hw_compat_7_1_len);
|
compat_props_add(mc->compat_props, hw_compat_7_1, hw_compat_7_1_len);
|
||||||
|
s390mc->max_threads = S390_MAX_CPUS;
|
||||||
}
|
}
|
||||||
DEFINE_CCW_MACHINE(7_1, "7.1", false);
|
DEFINE_CCW_MACHINE(7_1, "7.1", false);
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,7 @@ struct S390CcwMachineClass {
|
||||||
bool cpu_model_allowed;
|
bool cpu_model_allowed;
|
||||||
bool css_migration_enabled;
|
bool css_migration_enabled;
|
||||||
bool hpage_1m_allowed;
|
bool hpage_1m_allowed;
|
||||||
|
int max_threads;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* runtime-instrumentation allowed by the machine */
|
/* runtime-instrumentation allowed by the machine */
|
||||||
|
|
|
@ -33,34 +33,11 @@
|
||||||
#include "qemu/bitops.h"
|
#include "qemu/bitops.h"
|
||||||
#include "libqos/libqos-malloc.h"
|
#include "libqos/libqos-malloc.h"
|
||||||
#include "libqos/e1000e.h"
|
#include "libqos/e1000e.h"
|
||||||
|
#include "hw/net/e1000_regs.h"
|
||||||
|
|
||||||
static void e1000e_send_verify(QE1000E *d, int *test_sockets, QGuestAllocator *alloc)
|
static void e1000e_send_verify(QE1000E *d, int *test_sockets, QGuestAllocator *alloc)
|
||||||
{
|
{
|
||||||
struct {
|
struct e1000_tx_desc descr;
|
||||||
uint64_t buffer_addr;
|
|
||||||
union {
|
|
||||||
uint32_t data;
|
|
||||||
struct {
|
|
||||||
uint16_t length;
|
|
||||||
uint8_t cso;
|
|
||||||
uint8_t cmd;
|
|
||||||
} flags;
|
|
||||||
} lower;
|
|
||||||
union {
|
|
||||||
uint32_t data;
|
|
||||||
struct {
|
|
||||||
uint8_t status;
|
|
||||||
uint8_t css;
|
|
||||||
uint16_t special;
|
|
||||||
} fields;
|
|
||||||
} upper;
|
|
||||||
} descr;
|
|
||||||
|
|
||||||
static const uint32_t dtyp_data = BIT(20);
|
|
||||||
static const uint32_t dtyp_ext = BIT(29);
|
|
||||||
static const uint32_t dcmd_rs = BIT(27);
|
|
||||||
static const uint32_t dcmd_eop = BIT(24);
|
|
||||||
static const uint32_t dsta_dd = BIT(0);
|
|
||||||
static const int data_len = 64;
|
static const int data_len = 64;
|
||||||
char buffer[64];
|
char buffer[64];
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -73,10 +50,10 @@ static void e1000e_send_verify(QE1000E *d, int *test_sockets, QGuestAllocator *a
|
||||||
/* Prepare TX descriptor */
|
/* Prepare TX descriptor */
|
||||||
memset(&descr, 0, sizeof(descr));
|
memset(&descr, 0, sizeof(descr));
|
||||||
descr.buffer_addr = cpu_to_le64(data);
|
descr.buffer_addr = cpu_to_le64(data);
|
||||||
descr.lower.data = cpu_to_le32(dcmd_rs |
|
descr.lower.data = cpu_to_le32(E1000_TXD_CMD_RS |
|
||||||
dcmd_eop |
|
E1000_TXD_CMD_EOP |
|
||||||
dtyp_ext |
|
E1000_TXD_CMD_DEXT |
|
||||||
dtyp_data |
|
E1000_TXD_DTYP_D |
|
||||||
data_len);
|
data_len);
|
||||||
|
|
||||||
/* Put descriptor to the ring */
|
/* Put descriptor to the ring */
|
||||||
|
@ -86,7 +63,8 @@ static void e1000e_send_verify(QE1000E *d, int *test_sockets, QGuestAllocator *a
|
||||||
e1000e_wait_isr(d, E1000E_TX0_MSG_ID);
|
e1000e_wait_isr(d, E1000E_TX0_MSG_ID);
|
||||||
|
|
||||||
/* Check DD bit */
|
/* Check DD bit */
|
||||||
g_assert_cmphex(le32_to_cpu(descr.upper.data) & dsta_dd, ==, dsta_dd);
|
g_assert_cmphex(le32_to_cpu(descr.upper.data) & E1000_TXD_STAT_DD, ==,
|
||||||
|
E1000_TXD_STAT_DD);
|
||||||
|
|
||||||
/* Check data sent to the backend */
|
/* Check data sent to the backend */
|
||||||
ret = recv(test_sockets[0], &recv_len, sizeof(recv_len), 0);
|
ret = recv(test_sockets[0], &recv_len, sizeof(recv_len), 0);
|
||||||
|
@ -101,31 +79,7 @@ static void e1000e_send_verify(QE1000E *d, int *test_sockets, QGuestAllocator *a
|
||||||
|
|
||||||
static void e1000e_receive_verify(QE1000E *d, int *test_sockets, QGuestAllocator *alloc)
|
static void e1000e_receive_verify(QE1000E *d, int *test_sockets, QGuestAllocator *alloc)
|
||||||
{
|
{
|
||||||
union {
|
union e1000_rx_desc_extended descr;
|
||||||
struct {
|
|
||||||
uint64_t buffer_addr;
|
|
||||||
uint64_t reserved;
|
|
||||||
} read;
|
|
||||||
struct {
|
|
||||||
struct {
|
|
||||||
uint32_t mrq;
|
|
||||||
union {
|
|
||||||
uint32_t rss;
|
|
||||||
struct {
|
|
||||||
uint16_t ip_id;
|
|
||||||
uint16_t csum;
|
|
||||||
} csum_ip;
|
|
||||||
} hi_dword;
|
|
||||||
} lower;
|
|
||||||
struct {
|
|
||||||
uint32_t status_error;
|
|
||||||
uint16_t length;
|
|
||||||
uint16_t vlan;
|
|
||||||
} upper;
|
|
||||||
} wb;
|
|
||||||
} descr;
|
|
||||||
|
|
||||||
static const uint32_t esta_dd = BIT(0);
|
|
||||||
|
|
||||||
char test[] = "TEST";
|
char test[] = "TEST";
|
||||||
int len = htonl(sizeof(test));
|
int len = htonl(sizeof(test));
|
||||||
|
@ -162,7 +116,7 @@ static void e1000e_receive_verify(QE1000E *d, int *test_sockets, QGuestAllocator
|
||||||
|
|
||||||
/* Check DD bit */
|
/* Check DD bit */
|
||||||
g_assert_cmphex(le32_to_cpu(descr.wb.upper.status_error) &
|
g_assert_cmphex(le32_to_cpu(descr.wb.upper.status_error) &
|
||||||
esta_dd, ==, esta_dd);
|
E1000_RXD_STAT_DD, ==, E1000_RXD_STAT_DD);
|
||||||
|
|
||||||
/* Check data sent to the backend */
|
/* Check data sent to the backend */
|
||||||
memread(data, buffer, sizeof(buffer));
|
memread(data, buffer, sizeof(buffer));
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
#include "qemu/osdep.h"
|
#include "qemu/osdep.h"
|
||||||
#include "hw/net/e1000_regs.h"
|
#include "hw/net/e1000_regs.h"
|
||||||
|
#include "hw/pci/pci_ids.h"
|
||||||
#include "../libqtest.h"
|
#include "../libqtest.h"
|
||||||
#include "pci-pc.h"
|
#include "pci-pc.h"
|
||||||
#include "qemu/sockets.h"
|
#include "qemu/sockets.h"
|
||||||
|
@ -29,9 +30,9 @@
|
||||||
#include "e1000e.h"
|
#include "e1000e.h"
|
||||||
|
|
||||||
#define E1000E_IVAR_TEST_CFG \
|
#define E1000E_IVAR_TEST_CFG \
|
||||||
(E1000E_RX0_MSG_ID | E1000_IVAR_INT_ALLOC_VALID | \
|
(((E1000E_RX0_MSG_ID | E1000_IVAR_INT_ALLOC_VALID) << E1000_IVAR_RXQ0_SHIFT) | \
|
||||||
((E1000E_TX0_MSG_ID | E1000_IVAR_INT_ALLOC_VALID) << 8) | \
|
((E1000E_TX0_MSG_ID | E1000_IVAR_INT_ALLOC_VALID) << E1000_IVAR_TXQ0_SHIFT) | \
|
||||||
((E1000E_OTHER_MSG_ID | E1000_IVAR_INT_ALLOC_VALID) << 16) | \
|
((E1000E_OTHER_MSG_ID | E1000_IVAR_INT_ALLOC_VALID) << E1000_IVAR_OTHER_SHIFT) | \
|
||||||
E1000_IVAR_TX_INT_EVERY_WB)
|
E1000_IVAR_TX_INT_EVERY_WB)
|
||||||
|
|
||||||
#define E1000E_RING_LEN (0x1000)
|
#define E1000E_RING_LEN (0x1000)
|
||||||
|
@ -121,7 +122,7 @@ static void e1000e_pci_start_hw(QOSGraphObject *obj)
|
||||||
|
|
||||||
/* Reset the device */
|
/* Reset the device */
|
||||||
val = e1000e_macreg_read(&d->e1000e, E1000_CTRL);
|
val = e1000e_macreg_read(&d->e1000e, E1000_CTRL);
|
||||||
e1000e_macreg_write(&d->e1000e, E1000_CTRL, val | E1000_CTRL_RST);
|
e1000e_macreg_write(&d->e1000e, E1000_CTRL, val | E1000_CTRL_RST | E1000_CTRL_SLU);
|
||||||
|
|
||||||
/* Enable and configure MSI-X */
|
/* Enable and configure MSI-X */
|
||||||
qpci_msix_enable(&d->pci_dev);
|
qpci_msix_enable(&d->pci_dev);
|
||||||
|
@ -129,8 +130,8 @@ static void e1000e_pci_start_hw(QOSGraphObject *obj)
|
||||||
|
|
||||||
/* Check the device status - link and speed */
|
/* Check the device status - link and speed */
|
||||||
val = e1000e_macreg_read(&d->e1000e, E1000_STATUS);
|
val = e1000e_macreg_read(&d->e1000e, E1000_STATUS);
|
||||||
g_assert_cmphex(val & (E1000_STATUS_LU | E1000_STATUS_LAN_INIT_DONE),
|
g_assert_cmphex(val & (E1000_STATUS_LU | E1000_STATUS_ASDV_1000),
|
||||||
==, E1000_STATUS_LU | E1000_STATUS_LAN_INIT_DONE);
|
==, E1000_STATUS_LU | E1000_STATUS_ASDV_1000);
|
||||||
|
|
||||||
/* Initialize TX/RX logic */
|
/* Initialize TX/RX logic */
|
||||||
e1000e_macreg_write(&d->e1000e, E1000_RCTL, 0);
|
e1000e_macreg_write(&d->e1000e, E1000_RCTL, 0);
|
||||||
|
@ -217,8 +218,8 @@ static void *e1000e_pci_create(void *pci_bus, QGuestAllocator *alloc,
|
||||||
static void e1000e_register_nodes(void)
|
static void e1000e_register_nodes(void)
|
||||||
{
|
{
|
||||||
QPCIAddress addr = {
|
QPCIAddress addr = {
|
||||||
.vendor_id = 0x8086,
|
.vendor_id = PCI_VENDOR_ID_INTEL,
|
||||||
.device_id = 0x10D3,
|
.device_id = E1000_DEV_ID_82574L,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* FIXME: every test using this node needs to setup a -netdev socket,id=hs0
|
/* FIXME: every test using this node needs to setup a -netdev socket,id=hs0
|
||||||
|
|
|
@ -1402,7 +1402,6 @@ static void test_precopy_unix_dirty_ring(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_GNUTLS
|
#ifdef CONFIG_GNUTLS
|
||||||
#ifndef _WIN32
|
|
||||||
static void test_precopy_unix_tls_psk(void)
|
static void test_precopy_unix_tls_psk(void)
|
||||||
{
|
{
|
||||||
g_autofree char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
|
g_autofree char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
|
||||||
|
@ -1415,7 +1414,6 @@ static void test_precopy_unix_tls_psk(void)
|
||||||
|
|
||||||
test_precopy_common(&args);
|
test_precopy_common(&args);
|
||||||
}
|
}
|
||||||
#endif /* _WIN32 */
|
|
||||||
|
|
||||||
#ifdef CONFIG_TASN1
|
#ifdef CONFIG_TASN1
|
||||||
static void test_precopy_unix_tls_x509_default_host(void)
|
static void test_precopy_unix_tls_x509_default_host(void)
|
||||||
|
@ -1524,7 +1522,6 @@ static void test_precopy_tcp_plain(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_GNUTLS
|
#ifdef CONFIG_GNUTLS
|
||||||
#ifndef _WIN32
|
|
||||||
static void test_precopy_tcp_tls_psk_match(void)
|
static void test_precopy_tcp_tls_psk_match(void)
|
||||||
{
|
{
|
||||||
MigrateCommon args = {
|
MigrateCommon args = {
|
||||||
|
@ -1535,7 +1532,6 @@ static void test_precopy_tcp_tls_psk_match(void)
|
||||||
|
|
||||||
test_precopy_common(&args);
|
test_precopy_common(&args);
|
||||||
}
|
}
|
||||||
#endif /* _WIN32 */
|
|
||||||
|
|
||||||
static void test_precopy_tcp_tls_psk_mismatch(void)
|
static void test_precopy_tcp_tls_psk_mismatch(void)
|
||||||
{
|
{
|
||||||
|
@ -1933,7 +1929,6 @@ static void test_multifd_tcp_zstd(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_GNUTLS
|
#ifdef CONFIG_GNUTLS
|
||||||
#ifndef _WIN32
|
|
||||||
static void *
|
static void *
|
||||||
test_migrate_multifd_tcp_tls_psk_start_match(QTestState *from,
|
test_migrate_multifd_tcp_tls_psk_start_match(QTestState *from,
|
||||||
QTestState *to)
|
QTestState *to)
|
||||||
|
@ -1941,7 +1936,6 @@ test_migrate_multifd_tcp_tls_psk_start_match(QTestState *from,
|
||||||
test_migrate_precopy_tcp_multifd_start_common(from, to, "none");
|
test_migrate_precopy_tcp_multifd_start_common(from, to, "none");
|
||||||
return test_migrate_tls_psk_start_match(from, to);
|
return test_migrate_tls_psk_start_match(from, to);
|
||||||
}
|
}
|
||||||
#endif /* _WIN32 */
|
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
test_migrate_multifd_tcp_tls_psk_start_mismatch(QTestState *from,
|
test_migrate_multifd_tcp_tls_psk_start_mismatch(QTestState *from,
|
||||||
|
@ -1993,7 +1987,6 @@ test_migrate_multifd_tls_x509_start_reject_anon_client(QTestState *from,
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_TASN1 */
|
#endif /* CONFIG_TASN1 */
|
||||||
|
|
||||||
#ifndef _WIN32
|
|
||||||
static void test_multifd_tcp_tls_psk_match(void)
|
static void test_multifd_tcp_tls_psk_match(void)
|
||||||
{
|
{
|
||||||
MigrateCommon args = {
|
MigrateCommon args = {
|
||||||
|
@ -2003,7 +1996,6 @@ static void test_multifd_tcp_tls_psk_match(void)
|
||||||
};
|
};
|
||||||
test_precopy_common(&args);
|
test_precopy_common(&args);
|
||||||
}
|
}
|
||||||
#endif /* _WIN32 */
|
|
||||||
|
|
||||||
static void test_multifd_tcp_tls_psk_mismatch(void)
|
static void test_multifd_tcp_tls_psk_mismatch(void)
|
||||||
{
|
{
|
||||||
|
@ -2188,7 +2180,7 @@ static void calc_dirty_rate(QTestState *who, uint64_t calc_time)
|
||||||
qobject_unref(qmp_command(who,
|
qobject_unref(qmp_command(who,
|
||||||
"{ 'execute': 'calc-dirty-rate',"
|
"{ 'execute': 'calc-dirty-rate',"
|
||||||
"'arguments': { "
|
"'arguments': { "
|
||||||
"'calc-time': %ld,"
|
"'calc-time': %" PRIu64 ","
|
||||||
"'mode': 'dirty-ring' }}",
|
"'mode': 'dirty-ring' }}",
|
||||||
calc_time));
|
calc_time));
|
||||||
}
|
}
|
||||||
|
@ -2203,7 +2195,7 @@ static void dirtylimit_set_all(QTestState *who, uint64_t dirtyrate)
|
||||||
qobject_unref(qmp_command(who,
|
qobject_unref(qmp_command(who,
|
||||||
"{ 'execute': 'set-vcpu-dirty-limit',"
|
"{ 'execute': 'set-vcpu-dirty-limit',"
|
||||||
"'arguments': { "
|
"'arguments': { "
|
||||||
"'dirty-rate': %ld } }",
|
"'dirty-rate': %" PRIu64 " } }",
|
||||||
dirtyrate));
|
dirtyrate));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2505,10 +2497,8 @@ int main(int argc, char **argv)
|
||||||
qtest_add_func("/migration/precopy/unix/plain", test_precopy_unix_plain);
|
qtest_add_func("/migration/precopy/unix/plain", test_precopy_unix_plain);
|
||||||
qtest_add_func("/migration/precopy/unix/xbzrle", test_precopy_unix_xbzrle);
|
qtest_add_func("/migration/precopy/unix/xbzrle", test_precopy_unix_xbzrle);
|
||||||
#ifdef CONFIG_GNUTLS
|
#ifdef CONFIG_GNUTLS
|
||||||
#ifndef _WIN32
|
|
||||||
qtest_add_func("/migration/precopy/unix/tls/psk",
|
qtest_add_func("/migration/precopy/unix/tls/psk",
|
||||||
test_precopy_unix_tls_psk);
|
test_precopy_unix_tls_psk);
|
||||||
#endif
|
|
||||||
|
|
||||||
if (has_uffd) {
|
if (has_uffd) {
|
||||||
/*
|
/*
|
||||||
|
@ -2534,10 +2524,8 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
qtest_add_func("/migration/precopy/tcp/plain", test_precopy_tcp_plain);
|
qtest_add_func("/migration/precopy/tcp/plain", test_precopy_tcp_plain);
|
||||||
#ifdef CONFIG_GNUTLS
|
#ifdef CONFIG_GNUTLS
|
||||||
#ifndef _WIN32
|
|
||||||
qtest_add_func("/migration/precopy/tcp/tls/psk/match",
|
qtest_add_func("/migration/precopy/tcp/tls/psk/match",
|
||||||
test_precopy_tcp_tls_psk_match);
|
test_precopy_tcp_tls_psk_match);
|
||||||
#endif
|
|
||||||
qtest_add_func("/migration/precopy/tcp/tls/psk/mismatch",
|
qtest_add_func("/migration/precopy/tcp/tls/psk/mismatch",
|
||||||
test_precopy_tcp_tls_psk_mismatch);
|
test_precopy_tcp_tls_psk_mismatch);
|
||||||
#ifdef CONFIG_TASN1
|
#ifdef CONFIG_TASN1
|
||||||
|
@ -2581,10 +2569,8 @@ int main(int argc, char **argv)
|
||||||
test_multifd_tcp_zstd);
|
test_multifd_tcp_zstd);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_GNUTLS
|
#ifdef CONFIG_GNUTLS
|
||||||
#ifndef _WIN32
|
|
||||||
qtest_add_func("/migration/multifd/tcp/tls/psk/match",
|
qtest_add_func("/migration/multifd/tcp/tls/psk/match",
|
||||||
test_multifd_tcp_tls_psk_match);
|
test_multifd_tcp_tls_psk_match);
|
||||||
#endif
|
|
||||||
qtest_add_func("/migration/multifd/tcp/tls/psk/mismatch",
|
qtest_add_func("/migration/multifd/tcp/tls/psk/mismatch",
|
||||||
test_multifd_tcp_tls_psk_mismatch);
|
test_multifd_tcp_tls_psk_mismatch);
|
||||||
#ifdef CONFIG_TASN1
|
#ifdef CONFIG_TASN1
|
||||||
|
|
Loading…
Reference in New Issue