diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index c4e3155f28..bd68d964ac 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1056,6 +1056,29 @@ qemuFirmwareFetchConfigs(char ***firmwares, } +static bool +qemuFirmwareMatchesMachineArch(const qemuFirmware *fw, + const char *machine, + virArch arch) +{ + size_t i; + + for (i = 0; i < fw->ntargets; i++) { + size_t j; + + if (arch != fw->targets[i]->architecture) + continue; + + for (j = 0; j < fw->targets[i]->nmachines; j++) { + if (fnmatch(fw->targets[i]->machines[j], machine, 0) == 0) + return true; + } + } + + return false; +} + + static bool qemuFirmwareMatchDomain(const virDomainDef *def, const qemuFirmware *fw, @@ -1080,24 +1103,7 @@ qemuFirmwareMatchDomain(const virDomainDef *def, return false; } - for (i = 0; i < fw->ntargets; i++) { - size_t j; - - if (def->os.arch != fw->targets[i]->architecture) - continue; - - for (j = 0; j < fw->targets[i]->nmachines; j++) { - if (fnmatch(fw->targets[i]->machines[j], def->os.machine, 0) == 0) - break; - } - - if (j == fw->targets[i]->nmachines) - continue; - - break; - } - - if (i == fw->ntargets) { + if (!qemuFirmwareMatchesMachineArch(fw, def->os.machine, def->os.arch)) { VIR_DEBUG("No matching machine type in '%s'", path); return false; }