If I parse the libvirt code right, then nodeinfo would get its data from parsing /sys/devices/system/node/... (potentially falling back to /sys/device/system/cpu/...). I do not see right away any debug data added but there should be some error messages if libvirt thinks something went wrong. Probably related to linuxNodeInfoCPUPopulate or virNodeParseNode functions.
So I would check whether sysfs looks consistent (I guess it will as numactl finds the right values), then check /var/log/libvirt/libvirtd.log for hints, possibly change the log_level to 1 in /etc/libvirt/libvirtd.conf (though this produces a lot of log).
If I parse the libvirt code right, then nodeinfo would get its data from parsing /sys/devices/ system/ node/.. . (potentially falling back to /sys/device/ system/ cpu/... ). I do not see right away any debug data added but there should be some error messages if libvirt thinks something went wrong. Probably related to linuxNodeInfoCP UPopulate or virNodeParseNode functions.
So I would check whether sysfs looks consistent (I guess it will as numactl finds the right values), then check /var/log/ libvirt/ libvirtd. log for hints, possibly change the log_level to 1 in /etc/libvirt/ libvirtd. conf (though this produces a lot of log).