• Ulrich Weigand's avatar
    KVM: s390/interrupt: do not pin adapter interrupt pages · f6547066
    Ulrich Weigand authored
    The adapter interrupt page containing the indicator bits is currently
    pinned. That means that a guest with many devices can pin a lot of
    memory pages in the host. This also complicates the reference tracking
    which is needed for memory management handling of protected virtual
    machines. It might also have some strange side effects for madvise
    MADV_DONTNEED and other things.
    
    We can simply try to get the userspace page set the bits and free the
    page. By storing the userspace address in the irq routing entry instead
    of the guest address we can actually avoid many lookups and list walks
    so that this variant is very likely not slower.
    
    If userspace messes around with the memory slots the worst thing that
    can happen is that we write to some other memory within that process.
    As we get the the page with FOLL_WRITE this can also not be used to
    write to shared read-only pages.
    Signed-off-by: default avatarUlrich Weigand <Ulrich.Weigand@de.ibm.com>
    Acked-by: default avatarDavid Hildenbrand <david@redhat.com>
    Reviewed-by: default avatarCornelia Huck <cohuck@redhat.com>
    [borntraeger@de.ibm.com: patch simplification]
    Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
    f6547066
interrupt.c 84.3 KB