On Oct 30, 2015, at 9:27 PM, Conrad Meyer wrote:
Comments inline.
On Fri, Oct 30, 2015 at 7:08 PM, Justin Hibbits
<jhibb...@freebsd.org> wrote:
Author: jhibbits
Date: Sat Oct 31 02:08:39 2015
New Revision: 290221
URL: https://svnweb.freebsd.org/changeset/base/290221
Log:
Print unsigned memory sizes, to handle >2GB RAM on 32-bit powerpc.
...
=
=
=
=
=
=
=
=
=
=====================================================================
--- head/sys/powerpc/powerpc/machdep.c Sat Oct 31 02:07:30
2015 (r290220)
+++ head/sys/powerpc/powerpc/machdep.c Sat Oct 31 02:08:39
2015 (r290221)
@@ -176,12 +176,12 @@ cpu_startup(void *dummy)
#ifdef PERFMON
perfmon_init();
#endif
- printf("real memory = %ld (%ld MB)\n", ptoa(physmem),
+ printf("real memory = %lu (%lu MB)\n", ptoa(physmem),
ptoa(physmem) / 1048576);
Shouldn't this be "real memory = %ju (%lu MB)\n" and
(uintmax_t)ptoa(physmem), or it may overflow on >4GB RAM systems?
Yes, it should, and it will. However, currently ptoa() casts to
unsigned long, and I didn't want to change that yet (I will
eventually). In fact, the machine I'm testing on has 8GB, which I've
had to artificially limit to <4GB because of the various memory
accounting size limits.
realmem = physmem;
if (bootverbose)
- printf("available KVA = %zd (%zd MB)\n",
+ printf("available KVA = %zu (%zu MB)\n",
virtual_end - virtual_avail,
(virtual_end - virtual_avail) / 1048576);
@@ -199,7 +199,7 @@ cpu_startup(void *dummy)
#ifdef __powerpc64__
printf("0x%016lx - 0x%016lx, %ld bytes (%ld
pages)\n",
#else
- printf("0x%08x - 0x%08x, %d bytes (%ld
pages)\n",
+ printf("0x%08x - 0x%08x, %u bytes (%lu
pages)\n",
It seems wrong that bytes is only %u here and pages is a %lu. I think
bytes should probably be %ju too? What is the type of size1?
You're right. It should be long. However, it's 6-of-one in this
case, since on powerpc (32-bit) sizeof(long) == sizeof(int), so it
doesn't matter too much yet. size1 is a vm_offset_t, which is 32-bits
in this case. phys_avail[] is also an array of vm_offset_t's, and I
intend to change it to vm_paddr_t, and cast to uintmax_t for printf
purposes, but again, that's longer term (a lot of the powerpc bootup
needs a cleanup, anyway).
#endif
phys_avail[indx], phys_avail[indx + 1] -
1, size1,
size1 / PAGE_SIZE);
@@ -208,7 +208,7 @@ cpu_startup(void *dummy)
vm_ksubmap_init(&kmi);
- printf("avail memory = %ld (%ld MB)\n",
ptoa(vm_cnt.v_free_count),
+ printf("avail memory = %lu (%lu MB)\n",
ptoa(vm_cnt.v_free_count),
ptoa(vm_cnt.v_free_count) / 1048576);
Same as with the first printf.
See above. It's on my list, I just wanted something cleaner for now.
Best,
Conrad
- Justin
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"