summaryrefslogtreecommitdiffstats
path: root/sys/x86/acpica
diff options
context:
space:
mode:
Diffstat (limited to 'sys/x86/acpica')
-rw-r--r--sys/x86/acpica/srat.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/sys/x86/acpica/srat.c b/sys/x86/acpica/srat.c
index 8737688..7ea715e 100644
--- a/sys/x86/acpica/srat.c
+++ b/sys/x86/acpica/srat.c
@@ -244,33 +244,34 @@ static int
renumber_domains(void)
{
int domains[VM_PHYSSEG_MAX];
- int ndomain, i, j, slot;
+ int i, j, slot;
/* Enumerate all the domains. */
- ndomain = 0;
+ vm_ndomains = 0;
for (i = 0; i < num_mem; i++) {
/* See if this domain is already known. */
- for (j = 0; j < ndomain; j++) {
+ for (j = 0; j < vm_ndomains; j++) {
if (domains[j] >= mem_info[i].domain)
break;
}
- if (j < ndomain && domains[j] == mem_info[i].domain)
+ if (j < vm_ndomains && domains[j] == mem_info[i].domain)
continue;
/* Insert the new domain at slot 'j'. */
slot = j;
- for (j = ndomain; j > slot; j--)
+ for (j = vm_ndomains; j > slot; j--)
domains[j] = domains[j - 1];
domains[slot] = mem_info[i].domain;
- ndomain++;
- if (ndomain > MAXMEMDOM) {
+ vm_ndomains++;
+ if (vm_ndomains > MAXMEMDOM) {
+ vm_ndomains = 1;
printf("SRAT: Too many memory domains\n");
return (EFBIG);
}
}
/* Renumber each domain to its index in the sorted 'domains' list. */
- for (i = 0; i < ndomain; i++) {
+ for (i = 0; i < vm_ndomains; i++) {
/*
* If the domain is already the right value, no need
* to renumber.
@@ -286,6 +287,9 @@ renumber_domains(void)
if (cpus[j].enabled && cpus[j].domain == domains[i])
cpus[j].domain = i;
}
+ KASSERT(vm_ndomains > 0,
+ ("renumber_domains: invalid final vm_ndomains setup"));
+
return (0);
}
OpenPOWER on IntegriCloud