domcaps: Show only CPU models supported by libvirt

Listing all CPU models supported by QEMU in domain capabilities makes
little sense when libvirt will refuse any model it doesn't know about.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
Jiri Denemark 2016-04-29 10:42:56 +02:00
parent edf51c136c
commit 33f9ccc141
5 changed files with 39 additions and 429 deletions

View File

@ -169,6 +169,33 @@ virDomainCapsCPUModelsCopy(virDomainCapsCPUModelsPtr old)
} }
virDomainCapsCPUModelsPtr
virDomainCapsCPUModelsFilter(virDomainCapsCPUModelsPtr old,
const char **models)
{
virDomainCapsCPUModelsPtr cpuModels;
size_t i;
if (!(cpuModels = virDomainCapsCPUModelsNew(0)))
return NULL;
for (i = 0; i < old->nmodels; i++) {
if (models && !virStringArrayHasString(models, old->models[i].name))
continue;
if (virDomainCapsCPUModelsAdd(cpuModels,
old->models[i].name, -1) < 0)
goto error;
}
return cpuModels;
error:
virObjectUnref(cpuModels);
return NULL;
}
int int
virDomainCapsCPUModelsAddSteal(virDomainCapsCPUModelsPtr cpuModels, virDomainCapsCPUModelsAddSteal(virDomainCapsCPUModelsPtr cpuModels,
char **name) char **name)

View File

@ -156,6 +156,8 @@ virDomainCapsPtr virDomainCapsNew(const char *path,
virDomainCapsCPUModelsPtr virDomainCapsCPUModelsNew(size_t nmodels); virDomainCapsCPUModelsPtr virDomainCapsCPUModelsNew(size_t nmodels);
virDomainCapsCPUModelsPtr virDomainCapsCPUModelsCopy(virDomainCapsCPUModelsPtr old); virDomainCapsCPUModelsPtr virDomainCapsCPUModelsCopy(virDomainCapsCPUModelsPtr old);
virDomainCapsCPUModelsPtr virDomainCapsCPUModelsFilter(virDomainCapsCPUModelsPtr old,
const char **models);
int virDomainCapsCPUModelsAddSteal(virDomainCapsCPUModelsPtr cpuModels, int virDomainCapsCPUModelsAddSteal(virDomainCapsCPUModelsPtr cpuModels,
char **name); char **name);
int virDomainCapsCPUModelsAdd(virDomainCapsCPUModelsPtr cpuModels, int virDomainCapsCPUModelsAdd(virDomainCapsCPUModelsPtr cpuModels,

View File

@ -156,6 +156,7 @@ virDomainAuditVcpu;
virDomainCapsCPUModelsAdd; virDomainCapsCPUModelsAdd;
virDomainCapsCPUModelsAddSteal; virDomainCapsCPUModelsAddSteal;
virDomainCapsCPUModelsCopy; virDomainCapsCPUModelsCopy;
virDomainCapsCPUModelsFilter;
virDomainCapsCPUModelsNew; virDomainCapsCPUModelsNew;
virDomainCapsEnumClear; virDomainCapsEnumClear;
virDomainCapsEnumSet; virDomainCapsEnumSet;

View File

@ -4288,6 +4288,8 @@ virQEMUCapsFillDomainCPUCaps(virCapsPtr caps,
virQEMUCapsPtr qemuCaps, virQEMUCapsPtr qemuCaps,
virDomainCapsPtr domCaps) virDomainCapsPtr domCaps)
{ {
virDomainCapsCPUModelsPtr filtered = NULL;
char **models = NULL;
if (domCaps->virttype == VIR_DOMAIN_VIRT_KVM && if (domCaps->virttype == VIR_DOMAIN_VIRT_KVM &&
virQEMUCapsGuestIsNative(caps->host.arch, qemuCaps->arch)) virQEMUCapsGuestIsNative(caps->host.arch, qemuCaps->arch))
@ -4297,7 +4299,13 @@ virQEMUCapsFillDomainCPUCaps(virCapsPtr caps,
domCaps->cpu.hostModel = virQEMUCapsGuestIsNative(caps->host.arch, domCaps->cpu.hostModel = virQEMUCapsGuestIsNative(caps->host.arch,
qemuCaps->arch); qemuCaps->arch);
domCaps->cpu.custom = virObjectRef(qemuCaps->cpuDefinitions); if (qemuCaps->cpuDefinitions &&
cpuGetModels(domCaps->arch, &models) >= 0) {
filtered = virDomainCapsCPUModelsFilter(qemuCaps->cpuDefinitions,
(const char **) models);
virStringFreeList(models);
}
domCaps->cpu.custom = filtered;
return 0; return 0;
} }

View File

@ -22,436 +22,8 @@
<mode name='host-passthrough' supported='yes'/> <mode name='host-passthrough' supported='yes'/>
<mode name='host-model' supported='yes'/> <mode name='host-model' supported='yes'/>
<mode name='custom' supported='yes'> <mode name='custom' supported='yes'>
<model>default</model>
<model>ppc</model>
<model>ppc32</model>
<model>ppc64</model>
<model>970mp</model>
<model>970fx</model>
<model>970</model>
<model>POWER8NVL</model>
<model>POWER8</model> <model>POWER8</model>
<model>POWER8E</model>
<model>POWER7+</model>
<model>POWER7</model> <model>POWER7</model>
<model>POWER5gs</model>
<model>POWER5+</model>
<model>Apollo7PM</model>
<model>7457A</model>
<model>7447A</model>
<model>Apollo7</model>
<model>7457</model>
<model>Apollo6</model>
<model>7455</model>
<model>7445</model>
<model>7451</model>
<model>7441</model>
<model>Vger</model>
<model>7450</model>
<model>7448</model>
<model>Nitro</model>
<model>7410</model>
<model>G4</model>
<model>Max</model>
<model>7400</model>
<model>Goldfinger</model>
<model>755</model>
<model>745</model>
<model>LoneStar</model>
<model>750l</model>
<model>750gx</model>
<model>750fx</model>
<model>750cxe</model>
<model>750cx</model>
<model>750cl</model>
<model>Conan/Doyle</model>
<model>G3</model>
<model>Typhoon</model>
<model>750</model>
<model>Arthur</model>
<model>740</model>
<model>Mach5</model>
<model>Sirocco</model>
<model>604e</model>
<model>Goldeneye</model>
<model>603r</model>
<model>Vaillant</model>
<model>Stretch</model>
<model>603e</model>
<model>Vanilla</model>
<model>601v</model>
<model>601</model>
<model>MPC8560</model>
<model>MPC8555E</model>
<model>MPC8555</model>
<model>MPC8548E</model>
<model>MPC8548</model>
<model>MPC8547E</model>
<model>MPC8545E</model>
<model>MPC8545</model>
<model>MPC8544E</model>
<model>MPC8544</model>
<model>MPC8543E</model>
<model>MPC8543</model>
<model>MPC8541E</model>
<model>MPC8541</model>
<model>MPC8540</model>
<model>MPC8533E</model>
<model>MPC8533</model>
<model>e500v2</model>
<model>e500v1</model>
<model>e500</model>
<model>MPC8347EA</model>
<model>MPC8347E</model>
<model>MPC8347A</model>
<model>MPC8347</model>
<model>e300</model>
<model>e200</model>
<model>MPC8280</model>
<model>MPC8275</model>
<model>MPC8272</model>
<model>MPC8271</model>
<model>MPC8270</model>
<model>MPC8266_HiP4</model>
<model>MPC8266_HiP3</model>
<model>MPC8266</model>
<model>MPC8265_HiP4</model>
<model>MPC8265_HiP3</model>
<model>MPC8265</model>
<model>MPC8264_HiP4</model>
<model>MPC8264_HiP3</model>
<model>MPC8264</model>
<model>MPC8260_HiP4</model>
<model>MPC8260_HiP3</model>
<model>MPC8260</model>
<model>MPC8255_HiP4</model>
<model>MPC8255_HiP3</model>
<model>MPC8255</model>
<model>MPC8250_HiP4</model>
<model>MPC8250_HiP3</model>
<model>MPC8250</model>
<model>MPC8248</model>
<model>MPC8247</model>
<model>MPC8245</model>
<model>MPC8241</model>
<model>PowerQUICC-II</model>
<model>MPC82xx</model>
<model>MPC5200B</model>
<model>MPC5200</model>
<model>MPC52xx</model>
<model>MPC8240</model>
<model>440EP</model>
<model>x2vp50</model>
<model>x2vp7</model>
<model>405GPe</model>
<model>405GP</model>
<model>405CR</model>
<model>405</model>
<model>403</model>
<model>750cl_v1.0</model>
<model>750cxe_v2.1</model>
<model>7457A_v1.2</model>
<model>755_v2.7</model>
<model>MPC8347ET</model>
<model>MPC8545E_v20</model>
<model>750_v2.1</model>
<model>755_v2.2</model>
<model>745_v2.0</model>
<model>7455_v1.0</model>
<model>MPC8547E_v21</model>
<model>STB25</model>
<model>POWER8_v2.0</model>
<model>401G2</model>
<model>MPC8349A</model>
<model>750e</model>
<model>MPC8545_v21</model>
<model>MPC8548_v11</model>
<model>970fx_v2.0</model>
<model>750fx_v2.0</model>
<model>POWER8E_v2.1</model>
<model>Cobra</model>
<model>603p</model>
<model>7400_v2.7</model>
<model>MPC8378E</model>
<model>e500v2_v10</model>
<model>e500mc</model>
<model>603e7v1</model>
<model>970mp_v1.0</model>
<model>MPC8555E_v11</model>
<model>440-Xilinx-w-dfpu</model>
<model>740e</model>
<model>405CRc</model>
<model>7447A_v1.1</model>
<model>MPC8543_v11</model>
<model>MPC8533E_v10</model>
<model>MPC8540_v21</model>
<model>e500v2_v21</model>
<model>e300c1</model>
<model>7400_v2.2</model>
<model>970fx_v1.0</model>
<model>750gx_v1.2</model>
<model>750fx_v1.0</model>
<model>MPC8641</model>
<model>MPC8544E_v10</model>
<model>405D4</model>
<model>7457_v1.1</model>
<model>970fx_v3.0</model>
<model>604e_v2.2</model>
<model>755_v2.6</model>
<model>7410_v1.4</model>
<model>Npe4GS3</model>
<model>745_v2.4</model>
<model>750_v2.0</model>
<model>7445_v3.2</model>
<model>750l_v3.2</model>
<model>MPC8540_v10</model>
<model>750_v1.0</model>
<model>MPC8343A</model>
<model>MPC8378</model>
<model>G2HiP3</model>
<model>750cxe_v3.0</model>
<model>e500_v10</model>
<model>STB03</model>
<model>MPC8567</model>
<model>MPC8545_v20</model>
<model>MPC8548_v10</model>
<model>755_v1.1</model>
<model>603e7v</model>
<model>Npe405H2</model>
<model>750_v3.0</model>
<model>Npe405H</model>
<model>7400_v2.6</model>
<model>405GPa</model>
<model>MPC8548_v21</model>
<model>MPC8541E_v10</model>
<model>750l_v2.2</model>
<model>MPC8555E_v10</model>
<model>7457A_v1.1</model>
<model>e200z6</model>
<model>MPC8379E</model>
<model>e500v2_v20</model>
<model>MPC8347AP</model>
<model>401B2</model>
<model>MPC8349E</model>
<model>755_v2.1</model>
<model>MPC8543_v21</model>
<model>MPC8547E_v20</model>
<model>745_v2.8</model>
<model>7455_v3.4</model>
<model>7448_v1.1</model>
<model>740_v2.2</model>
<model>7400_v1.1</model>
<model>MPC8567E</model>
<model>7441_v2.10</model>
<model>603e_v1.4</model>
<model>G2leGP1</model>
<model>7451_v2.10</model>
<model>MPC8343E</model>
<model>750cx_v2.2</model>
<model>Npe405L</model>
<model>603e7</model>
<model>401A1</model>
<model>MPC8377</model>
<model>7448_v2.1</model>
<model>7441_v2.3</model>
<model>7400_v2.1</model>
<model>405CRb</model>
<model>604</model>
<model>MPC8540_v20</model>
<model>MPC8543_v10</model>
<model>7447A_v1.0</model>
<model>7445_v2.1</model>
<model>e500_v20</model>
<model>750gx_v1.1</model>
<model>MPC8543E_v11</model>
<model>750cxe_v2.4</model>
<model>MPC8548_v20</model>
<model>MPC8347AT</model>
<model>POWER8NVL_v1.0</model>
<model>7457A_v1.0</model>
<model>7457_v1.0</model>
<model>7450_v1.2</model>
<model>MPC8572</model>
<model>755_v2.5</model>
<model>7410_v1.3</model>
<model>745_v2.3</model>
<model>750l_v2.1</model>
<model>405GPR</model>
<model>755_v2.0</model>
<model>MPC8541_v11</model>
<model>401C2</model>
<model>e500v2_v30</model>
<model>7455_v3.3</model>
<model>405EZ</model>
<model>MPC8568E</model>
<model>755_v1.0</model>
<model>603e_v1.3</model>
<model>MPC8560_v10</model>
<model>MPC8560_v21</model>
<model>G2H4</model>
<model>MPC8533_v11</model>
<model>740_v3.1</model>
<model>e200z5</model>
<model>MPC8349</model>
<model>7400_v2.0</model>
<model>405CRa</model>
<model>MPC8543E_v10</model>
<model>MPC8543E_v21</model>
<model>750cxe_v2.3</model>
<model>MPC8543_v20</model>
<model>745_v2.7</model>
<model>403GC</model>
<model>e5500</model>
<model>7448_v1.0</model>
<model>MPC5200_v12</model>
<model>740_v2.1</model>
<model>745_v2.2</model>
<model>7400_v1.0</model>
<model>7410_v1.2</model>
<model>x2vp4</model>
<model>MPC8555_v11</model>
<model>MPC8541_v10</model>
<model>405LP</model>
<model>750fx_v2.3</model>
<model>405EP</model>
<model>601_v2</model>
<model>MPC8544_v11</model>
<model>401D2</model>
<model>MPC8572E</model>
<model>604e_v1.0</model>
<model>750cx_v2.1</model>
<model>MPC5200B_v21</model>
<model>750l_v3.0</model>
<model>e300c4</model>
<model>7448_v2.0</model>
<model>7450_v2.1</model>
<model>G2leGP</model>
<model>750cxe_v3.1b</model>
<model>7400_v2.9</model>
<model>G2GP</model>
<model>603</model>
<model>405GPd</model>
<model>MPC8548E_v11</model>
<model>603e7t</model>
<model>IOP480</model>
<model>750gx_v1.0</model>
<model>MPC8560_v20</model>
<model>405D2</model>
<model>750fl</model>
<model>750l_v2.0</model>
<model>x2vp20</model>
<model>e600</model>
<model>7450_v1.1</model>
<model>755_v2.4</model>
<model>7445_v1.0</model>
<model>G2LS</model>
<model>MPC8543E_v20</model>
<model>7447_v1.1</model>
<model>603e_v2.2</model>
<model>603e_v4</model>
<model>7455_v3.2</model>
<model>740_v2.0</model>
<model>MPC8347P</model>
<model>440EPb</model>
<model>MPC603</model>
<model>603e_v1.2</model>
<model>750fx_v2.2</model>
<model>740_v1.0</model>
<model>MPC8544_v10</model>
<model>601_v1</model>
<model>745_v1.1</model>
<model>POWER7+_v2.1</model>
<model>750cx_v2.0</model>
<model>MPC8347EAP</model>
<model>401E2</model>
<model>MPC8641D</model>
<model>e300c3</model>
<model>MPC8533_v10</model>
<model>7441_v2.1</model>
<model>740_v3.0</model>
<model>POWER5+_v2.1</model>
<model>602</model>
<model>MPC8548E_v10</model>
<model>G2leLS</model>
<model>MPC8343</model>
<model>750cx_v1.0</model>
<model>750cxe_v2.2</model>
<model>604e_v2.4</model>
<model>755_v2.8</model>
<model>MPC8548E_v21</model>
<model>745_v2.6</model>
<model>G2le</model>
<model>403GB</model>
<model>MPC8545E_v21</model>
<model>POWER7_v2.3</model>
<model>750_v2.2</model>
<model>7450_v1.0</model>
<model>MPC5200_v11</model>
<model>755_v2.3</model>
<model>MPC8347EP</model>
<model>7410_v1.1</model>
<model>750gl</model>
<model>403GCX</model>
<model>750p</model>
<model>745_v2.1</model>
<model>7445_v3.4</model>
<model>G2</model>
<model>MPC8555_v10</model>
<model>MPC8347T</model>
<model>603e_v3</model>
<model>970_v2.2</model>
<model>440-Xilinx</model>
<model>740p</model>
<model>MPC5200B_v20</model>
<model>440EPX</model>
<model>603e_v1.1</model>
<model>7451_v2.3</model>
<model>7450_v2.0</model>
<model>7400_v2.8</model>
<model>7455_v2.1</model>
<model>405GPc</model>
<model>MPC8347EAT</model>
<model>970mp_v1.1</model>
<model>603e7v2</model>
<model>604r</model>
<model>7447A_v1.2</model>
<model>MPC8533E_v11</model>
<model>e500v2_v22</model>
<model>401F2</model>
<model>MPC8343EA</model>
<model>7457_v1.2</model>
<model>970fx_v3.1</model>
<model>7447_v1.0</model>
<model>745_v2.5</model>
<model>MPC8548E_v20</model>
<model>MPC8610</model>
<model>403GA</model>
<model>750cxe_v2.4b</model>
<model>MPC5200_v10</model>
<model>7410_v1.0</model>
<model>G2leGP3</model>
<model>603e_v4.1</model>
<model>7445_v3.3</model>
<model>440EPa</model>
<model>970fx_v2.1</model>
<model>MPC8377E</model>
<model>750fx_v2.1</model>
<model>601_v0</model>
<model>STB04</model>
<model>745_v1.0</model>
<model>G2HiP4</model>
<model>750cl_v2.0</model>
<model>750cxr</model>
<model>MPC8349EA</model>
<model>750cxe_v3.1</model>
<model>401</model>
<model>MPC8379</model>
<model>MPC8568</model>
<model>e300c2</model>
<model>750_v3.1</model>
<model>MPC8544E_v11</model>
<model>405GPb</model>
<model>MPC8541E_v11</model>
</mode> </mode>
</cpu> </cpu>
<devices> <devices>