• Stefano Garzarella's avatar
    vringh: replace kmap_atomic() with kmap_local_page() · c0371782
    Stefano Garzarella authored
    kmap_atomic() is deprecated in favor of kmap_local_page() since commit
    f3ba3c71 ("mm/highmem: Provide kmap_local*").
    
    With kmap_local_page() the mappings are per thread, CPU local, can take
    page-faults, and can be called from any context (including interrupts).
    Furthermore, the tasks can be preempted and, when they are scheduled to
    run again, the kernel virtual addresses are restored and still valid.
    
    kmap_atomic() is implemented like a kmap_local_page() which also disables
    page-faults and preemption (the latter only for !PREEMPT_RT kernels,
    otherwise it only disables migration).
    
    The code within the mappings/un-mappings in getu16_iotlb() and
    putu16_iotlb() don't depend on the above-mentioned side effects of
    kmap_atomic(), so that mere replacements of the old API with the new one
    is all that is required (i.e., there is no need to explicitly add calls
    to pagefault_disable() and/or preempt_disable()).
    
    This commit reuses a "boiler plate" commit message from Fabio, who has
    already did this change in several places.
    
    Cc: "Fabio M. De Francesco" <fmdefrancesco@gmail.com>
    Reviewed-by: default avatarFabio M. De Francesco <fmdefrancesco@gmail.com>
    Acked-by: default avatarJason Wang <jasowang@redhat.com>
    Signed-off-by: default avatarStefano Garzarella <sgarzare@redhat.com>
    Message-Id: <20230404131326.44403-4-sgarzare@redhat.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    c0371782
vringh.c 39.4 KB