On Thu, Apr 8, 2021 at 11:52 AM Dawid Zamirski <dzrudy(a)gmail.com> wrote:
Apparenlly exising code was dealing with stripping down Intel CPU models
as reported by Hyper-V host but was still having issues with my AMD CPU
for which Hyper-V returns "AMD FX(tm)-8350 Eight-Core Processor".
Therefore, this patch deals with it by stripping out the "
Processor" part, and if there's another CPU that we don't know of
yet that causes trouble, trim the resulting string to 32 characters
rather than failing as the node info has other information that are
more useful than the model.
---
src/hyperv/hyperv_driver.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c
index 17f5be1f0d..6e03aa4f18 100644
--- a/src/hyperv/hyperv_driver.c
+++ b/src/hyperv/hyperv_driver.c
@@ -1948,14 +1948,14 @@ hypervNodeGetInfo(virConnectPtr conn, virNodeInfoPtr info)
if (STRPREFIX(tmp, " ")) {
memmove(tmp, tmp + 1, strlen(tmp + 1) + 1);
continue;
- } else if (STRPREFIX(tmp, "(R)") || STRPREFIX(tmp, "(C)"))
{
+ } else if (STRCASEPREFIX(tmp, "(R)") || STRCASEPREFIX(tmp,
"(C)")) {
memmove(tmp, tmp + 3, strlen(tmp + 3) + 1);
continue;
- } else if (STRPREFIX(tmp, "(TM)")) {
+ } else if (STRCASEPREFIX(tmp, "(TM)")) {
memmove(tmp, tmp + 4, strlen(tmp + 4) + 1);
continue;
- } else if (STRPREFIX(tmp, " @ ")) {
- /* Remove " @ X.YZGHz" from the end. */
+ } else if (STRPREFIX(tmp, " @ ") || STRPREFIX(tmp, "
Processor")) {
+ /* Remove " @ X.YZGHz" or " Processor" from the end. */
*tmp = '\0';
break;
}
@@ -1963,13 +1963,12 @@ hypervNodeGetInfo(virConnectPtr conn, virNodeInfoPtr info)
++tmp;
}
+ /* trim whatever is left to 32 characters - better this than nothing */
+ processorList->data->Name[31] = '\0';
+
/* Fill struct */
- if (virStrcpyStatic(info->model, processorList->data->Name) < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("CPU model %s too long for destination"),
- processorList->data->Name);
+ if (virStrcpyStatic(info->model, processorList->data->Name) < 0)
return -1;
- }
info->memory = computerSystem->data->TotalPhysicalMemory / 1024; /* byte to
kilobyte */
info->mhz = processorList->data->MaxClockSpeed;
--
2.31.1
Looks reasonable to me.
When you resend with the Signed-off-by statement added, you can also add:
Reviewed-by: Neal Gompa <ngompa13(a)gmail.com>
--
真実はいつも一つ!/ Always, there's only one truth!