• P
    translate-all: ensure host page mask is always extended with 1's · 0c2d70c4
    Paolo Bonzini 提交于
    Anthony reported that >4GB guests on Xen with 32bit QEMU broke after
    commit 4ed023ce ("Round up RAMBlock sizes to host page sizes", 2015-11-05).
    
    In that patch sizes are masked against qemu_host_page_size/mask which
    are uintptr_t, and thus 32bit on a 32bit QEMU, even though the ram space
    might be bigger than 4GB on Xen.
    
    Since ram_addr_t is not available on user-mode emulation targets, ensure
    that we get a sign extension when masking away the low bits of the address.
    Remove the ~10 year old scary comment that the type of these variables
    is probably wrong, with another equally scary comment.  The new comment
    however does not have "???" in it, which is arguably an improvement.
    
    For completeness use the alignment macros in linux-user and bsd-user
    instead of manually doing an &.  linux-user and bsd-user are not affected
    by the Xen issue, however.
    Reviewed-by: NJuan Quintela <quintela@redhat.com>
    Reported-by: NAnthony PERARD <anthony.perard@citrix.com>
    Fixes: 4ed023ceSigned-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    0c2d70c4
translate-all.c 59.1 KB