Skip to content
  • Paolo Bonzini's avatar
    0c2d70c4
    translate-all: ensure host page mask is always extended with 1's · 0c2d70c4
    Paolo Bonzini authored
    
    
    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: default avatarJuan Quintela <quintela@redhat.com>
    Reported-by: default avatarAnthony PERARD <anthony.perard@citrix.com>
    Fixes: 4ed023ce
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    0c2d70c4
    translate-all: ensure host page mask is always extended with 1's
    Paolo Bonzini authored
    
    
    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: default avatarJuan Quintela <quintela@redhat.com>
    Reported-by: default avatarAnthony PERARD <anthony.perard@citrix.com>
    Fixes: 4ed023ce
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Loading