Check whether the SMBIOS reports reasonable amount of memory. If it is
less than "avail memory", fall back to Maxmem to avoid user confusion. We use SMBIOS information to display "real memory" since r190599 but some broken SMBIOS implementation reported only half of actual memory. Tested by: bz Approved by: re (kib)
This commit is contained in:
parent
3b3396fb4a
commit
f00e60c6b2
@ -236,19 +236,21 @@ cpu_startup(dummy)
|
||||
#ifdef PERFMON
|
||||
perfmon_init();
|
||||
#endif
|
||||
realmem = Maxmem;
|
||||
|
||||
/*
|
||||
* Display physical memory if SMBIOS reports reasonable amount.
|
||||
*/
|
||||
memsize = 0;
|
||||
sysenv = getenv("smbios.memory.enabled");
|
||||
if (sysenv != NULL) {
|
||||
memsize = (uintmax_t)strtoul(sysenv, (char **)NULL, 10);
|
||||
memsize = (uintmax_t)strtoul(sysenv, (char **)NULL, 10) << 10;
|
||||
freeenv(sysenv);
|
||||
} else
|
||||
memsize = 0;
|
||||
if (memsize > 0)
|
||||
printf("real memory = %ju (%ju MB)\n", memsize << 10,
|
||||
memsize >> 10);
|
||||
else
|
||||
printf("real memory = %ju (%ju MB)\n", ptoa((uintmax_t)Maxmem),
|
||||
ptoa((uintmax_t)Maxmem) / 1048576);
|
||||
realmem = Maxmem;
|
||||
}
|
||||
if (memsize < ptoa((uintmax_t)cnt.v_free_count))
|
||||
memsize = ptoa((uintmax_t)Maxmem);
|
||||
printf("real memory = %ju (%ju MB)\n", memsize, memsize >> 20);
|
||||
|
||||
/*
|
||||
* Display any holes after the first chunk of extended memory.
|
||||
*/
|
||||
|
@ -280,19 +280,21 @@ cpu_startup(dummy)
|
||||
#ifdef PERFMON
|
||||
perfmon_init();
|
||||
#endif
|
||||
realmem = Maxmem;
|
||||
|
||||
/*
|
||||
* Display physical memory if SMBIOS reports reasonable amount.
|
||||
*/
|
||||
memsize = 0;
|
||||
sysenv = getenv("smbios.memory.enabled");
|
||||
if (sysenv != NULL) {
|
||||
memsize = (uintmax_t)strtoul(sysenv, (char **)NULL, 10);
|
||||
memsize = (uintmax_t)strtoul(sysenv, (char **)NULL, 10) << 10;
|
||||
freeenv(sysenv);
|
||||
} else
|
||||
memsize = 0;
|
||||
if (memsize > 0)
|
||||
printf("real memory = %ju (%ju MB)\n", memsize << 10,
|
||||
memsize >> 10);
|
||||
else
|
||||
printf("real memory = %ju (%ju MB)\n", ptoa((uintmax_t)Maxmem),
|
||||
ptoa((uintmax_t)Maxmem) / 1048576);
|
||||
realmem = Maxmem;
|
||||
}
|
||||
if (memsize < ptoa((uintmax_t)cnt.v_free_count))
|
||||
memsize = ptoa((uintmax_t)Maxmem);
|
||||
printf("real memory = %ju (%ju MB)\n", memsize, memsize >> 20);
|
||||
|
||||
/*
|
||||
* Display any holes after the first chunk of extended memory.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user