linux/drivers/misc/vmw_vmci
Fabio M. De Francesco dd8dc442c1 misc/vmw_vmci: Use kmap_local_page() in vmci_queue_pair.c
kmap() is being deprecated in favor of kmap_local_page().

There are two main problems with kmap(): (1) It comes with an overhead as
the mapping space is restricted and protected by a global lock for
synchronization and (2) it also requires global TLB invalidation when the
kmap’s pool wraps and it might block when the mapping space is fully
utilized until a slot becomes available.

With kmap_local_page() the mappings are per thread, CPU local, can take
page faults, and can be called from any context (including interrupts).
It is faster than kmap() in kernels with HIGHMEM enabled. Furthermore,
the tasks can be preempted and, when they are scheduled to run again, the
kernel virtual addresses are restored and still valid.

Since its use in vmci_queue_pair.c is safe everywhere, replace kmap() with
kmap_local_page().

Cc: "Venkataramanan, Anirudh" <anirudh.venkataramanan@intel.com>
Suggested-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Fabio M. De Francesco <fmdefrancesco@gmail.com>
Link: https://lore.kernel.org/r/20220901135714.16481-1-fmdefrancesco@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-09-09 10:22:32 +02:00
..
Kconfig VMCI: Add support for ARM64 2022-04-24 17:32:14 +02:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
vmci_context.c misc: vmw_vmci: replace usage of found with dedicated list iterator variable 2022-04-24 17:24:09 +02:00
vmci_context.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 321 2019-06-05 17:37:05 +02:00
vmci_datagram.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 321 2019-06-05 17:37:05 +02:00
vmci_datagram.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 321 2019-06-05 17:37:05 +02:00
vmci_doorbell.c misc: vmw_vmci: explicitly initialize vmci_notify_bm_set_msg struct 2021-04-05 12:29:31 +02:00
vmci_doorbell.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 321 2019-06-05 17:37:05 +02:00
vmci_driver.c vsock/vmci: make vmci_vsock_cb_host_called static 2019-11-20 12:39:29 -08:00
vmci_driver.h vsock/vmci: register vmci_transport only when VMCI guest/host are active 2019-11-14 18:12:18 -08:00
vmci_event.c misc: vmw_vmci: Switch to kvfree_rcu() API 2021-12-21 10:25:15 +01:00
vmci_event.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 321 2019-06-05 17:37:05 +02:00
vmci_guest.c VMCI: Add support for ARM64 2022-04-24 17:32:14 +02:00
vmci_handle_array.c VMCI: Fix integer overflow in VMCI handle arrays 2019-06-21 16:04:05 +02:00
vmci_handle_array.h VMCI: Fix integer overflow in VMCI handle arrays 2019-06-21 16:04:05 +02:00
vmci_host.c vmci_host: print unexpanded names of ioctl requests in debug messages 2021-03-24 08:26:31 +01:00
vmci_queue_pair.c misc/vmw_vmci: Use kmap_local_page() in vmci_queue_pair.c 2022-09-09 10:22:32 +02:00
vmci_queue_pair.h misc/vmw_vmci: fix typo 2021-01-26 19:18:01 +01:00
vmci_resource.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 321 2019-06-05 17:37:05 +02:00
vmci_resource.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 321 2019-06-05 17:37:05 +02:00
vmci_route.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 321 2019-06-05 17:37:05 +02:00
vmci_route.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 321 2019-06-05 17:37:05 +02:00