On 09/30/2014 01:09 AM, John Ferlan wrote: > On 09/29/2014 10:27 AM, Ján Tomko wrote: >> https://bugzilla.redhat.com/show_bug.cgi?id=1147584 > > Could this be expanded a bit - so one doesn't have to chase into the bz > in order to understand what is/was being fixed? > >> --- >> src/cpu/cpu_x86.c | 14 ++++++-------- >> 1 file changed, 6 insertions(+), 8 deletions(-) >> >> diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c >> index a98a847..57f343c 100644 >> --- a/src/cpu/cpu_x86.c >> +++ b/src/cpu/cpu_x86.c >> @@ -2068,7 +2068,8 @@ x86UpdateCustom(virCPUDefPtr guest, >> >> static int >> x86UpdateHostModel(virCPUDefPtr guest, >> - const virCPUDef *host) >> + const virCPUDef *host, >> + bool passthrough) >> { >> virCPUDefPtr oldguest = NULL; >> const struct x86_map *map; >> @@ -2076,8 +2077,6 @@ x86UpdateHostModel(virCPUDefPtr guest, >> size_t i; >> int ret = -1; >> >> - guest->match = VIR_CPU_MATCH_EXACT; >> - >> if (!(map = virCPUx86GetMap())) >> goto cleanup; >> >> @@ -2100,8 +2099,7 @@ x86UpdateHostModel(virCPUDefPtr guest, >> } >> } >> } > > So if I understand correctly the above loop removes not migrate-able > features - from the passed in migrated cpu and the loop below is > updating features for anything left. > > So given my question from patch 1/2 - it seems if features weren't > allowed for host-passthrough, well then neither of these would be > necessary. The features aren't allowed for host-passthrough, which is why the loop below is only done when !passthrough. > > In any case - even if we added something that removed features, the > incoming, saved/restore, etc. guest with host-passthrough could still > have it so this would be necessary - which I guess means it's an ACK > (typing and thinking). Thanks, I fixed the segfault in 1/2 and will push the series shortly after expanding the commit message. Jan > > John >> - >> - for (i = 0; i < oldguest->nfeatures; i++) { >> + for (i = 0; !passthrough && i < oldguest->nfeatures; i++) { >> if (virCPUDefUpdateFeature(guest, >> oldguest->features[i].name, >> oldguest->features[i].policy) < 0) >> @@ -2125,12 +2123,12 @@ x86Update(virCPUDefPtr guest, >> return x86UpdateCustom(guest, host); >> >> case VIR_CPU_MODE_HOST_MODEL: >> - return x86UpdateHostModel(guest, host); >> + guest->match = VIR_CPU_MATCH_EXACT; >> + return x86UpdateHostModel(guest, host, false); >> >> case VIR_CPU_MODE_HOST_PASSTHROUGH: >> guest->match = VIR_CPU_MATCH_MINIMUM; >> - virCPUDefFreeModel(guest); >> - return virCPUDefCopyModel(guest, host, true); >> + return x86UpdateHostModel(guest, host, true); >> >> case VIR_CPU_MODE_LAST: >> break; >> > > -- > libvir-list mailing list > libvir-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/libvir-list >
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list