+#define PHYS_RAM_MAX_SIZE (2047 * 1024 * 1024 * 1024ULL)
This seems fairly arbitrary. Why? Any limit is certainly target specific.
On a 32-bit host, a 2GB limit is pretty reasonable since you're limited
in virtual address space. On a 64-bit host, there isn't this
fundamental limit. If a target may have it's own limit but there is
definitely a host imposed limit.
2047GBs is a somewhat arbitrary limit though for 64-bit hosts. If you
have a more logical suggestion, I'll happily change it.
Don't have a limit at all.
The reason we have the current 31-bit limit is because qemu is/was known to
use a signed int do hold the size. With your code 64-bit hosts should be able
to handle anything atoi can parse.
As mentioned on IRC, I also noticed that ram_save hasn't been updated.