1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-24 11:29:10 +00:00

Fix accounting for hw.realmem on the i386 and amd64 platforms.

sys/i386/i386/machdep.c:
sys/amd64/amd64/machdep.c:
	The value reported by FreeBSD as "real memory" when booting
	doesn't match what is later reported by sysctl as hw.realmem.
	This is due to the fact that the value printed during the
	boot process is fetched from smbios data (when possible),
	and accounts for holes in physical memory. On the other
	hand, the value of hw.realmem is unconditionally set to be
	one larger than the highest page of the physical address
	space.

	Fix this by setting hw.realmem to the same value printed
	during boot, this makes hw.realmem honour it's name and
	account properly for physical memory present in the system.

Submitted by:	Roger Pau Monné
Reviewed by:	gibbs
This commit is contained in:
Justin T. Gibbs 2013-11-15 16:05:55 +00:00
parent 1350c361f6
commit 4fd76feafd
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=258176
2 changed files with 2 additions and 2 deletions

View File

@ -256,7 +256,6 @@ cpu_startup(dummy)
#ifdef PERFMON
perfmon_init();
#endif
realmem = Maxmem;
/*
* Display physical memory if SMBIOS reports reasonable amount.
@ -270,6 +269,7 @@ cpu_startup(dummy)
if (memsize < ptoa((uintmax_t)cnt.v_free_count))
memsize = ptoa((uintmax_t)Maxmem);
printf("real memory = %ju (%ju MB)\n", memsize, memsize >> 20);
realmem = atop(memsize);
/*
* Display any holes after the first chunk of extended memory.

View File

@ -294,7 +294,6 @@ cpu_startup(dummy)
#ifdef PERFMON
perfmon_init();
#endif
realmem = Maxmem;
/*
* Display physical memory if SMBIOS reports reasonable amount.
@ -308,6 +307,7 @@ cpu_startup(dummy)
if (memsize < ptoa((uintmax_t)cnt.v_free_count))
memsize = ptoa((uintmax_t)Maxmem);
printf("real memory = %ju (%ju MB)\n", memsize, memsize >> 20);
realmem = atop(memsize);
/*
* Display any holes after the first chunk of extended memory.