numa: hmat: require parent cache description before the next level one
Spec[1] defines 0 - 3 level memory side cache, however QEMU CLI allows to specify an intermediate cache level without specifying previous level. Such option(s) silently ignored when building HMAT table, which leads to incomplete cache information. Make sure that previous level exists and error out if it hasn't been provided. 1) ACPI 6.2A 5.2.27.5 Memory Side Cache Information Structure Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1842877 Signed-off-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> Message-Id: <20201006150002.1601845-1-imammedo@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
eb4c977508
commit
1b5e843ab6
|
@ -424,7 +424,13 @@ void parse_numa_hmat_cache(MachineState *ms, NumaHmatCacheOptions *node,
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((node->level > 1) &&
|
if ((node->level > 1) &&
|
||||||
ms->numa_state->hmat_cache[node->node_id][node->level - 1] &&
|
ms->numa_state->hmat_cache[node->node_id][node->level - 1] == NULL) {
|
||||||
|
error_setg(errp, "Cache level=%u shall be defined first",
|
||||||
|
node->level - 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((node->level > 1) &&
|
||||||
(node->size <=
|
(node->size <=
|
||||||
ms->numa_state->hmat_cache[node->node_id][node->level - 1]->size)) {
|
ms->numa_state->hmat_cache[node->node_id][node->level - 1]->size)) {
|
||||||
error_setg(errp, "Invalid size=%" PRIu64 ", the size of level=%" PRIu8
|
error_setg(errp, "Invalid size=%" PRIu64 ", the size of level=%" PRIu8
|
||||||
|
|
Loading…
Reference in a new issue