diff options
author | J. Avila <elavila@google.com> | 2021-01-07 22:18:40 +0000 |
---|---|---|
committer | J. Avila <elavila@google.com> | 2021-01-07 22:18:40 +0000 |
commit | 81a0949d37fd3f3bb4cd3d2e61b76b3ff45612e1 (patch) | |
tree | 68021337135c78b1b9ecf4f1f890b9dd75514564 | |
parent | 6f47fab2a7f1a1620dd6f97e0d63f7056e790003 (diff) | |
parent | 411a6d8e49545ea18b1c2734de51d103d25b4d52 (diff) | |
download | abrolhos-81a0949d37fd3f3bb4cd3d2e61b76b3ff45612e1.tar.gz |
Merge partner/android-gs-pixel-mainline into partner/android-gs-pixel-5.10-stabilization
* partner/android-gs-pixel-mainline:
edgetpu: use pin_userpages_fast
Signed-off-by: J. Avila <elavila@google.com>
Bug: 176462375
Change-Id: I49bc9e8e4da83012efcb5fe7a57e93611c7c7265
-rw-r--r-- | drivers/edgetpu/edgetpu-device-group.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/edgetpu/edgetpu-device-group.c b/drivers/edgetpu/edgetpu-device-group.c index 08a97a2..f9d681e 100644 --- a/drivers/edgetpu/edgetpu-device-group.c +++ b/drivers/edgetpu/edgetpu-device-group.c @@ -919,7 +919,7 @@ static void edgetpu_unmap_node(struct edgetpu_mapping *map) map->dir == DMA_BIDIRECTIONAL) set_page_dirty(page); - put_page(page); + unpin_user_page(page); } sg_free_table(&map->sgt); @@ -991,7 +991,8 @@ static struct page **edgetpu_pin_user_pages(struct edgetpu_device_group *group, /* * DMA Buffers appear to be always dirty, so mark pages as always writeable */ - ret = get_user_pages_fast(host_addr & PAGE_MASK, num_pages, 1, pages); + ret = pin_user_pages_fast(host_addr & PAGE_MASK, num_pages, + FOLL_WRITE | FOLL_LONGTERM, pages); if (ret < 0) { etdev_dbg(etdev, "get user pages failed %u:%pK-%u: %d", group->workload_id, (void *)host_addr, num_pages, @@ -1015,7 +1016,7 @@ static struct page **edgetpu_pin_user_pages(struct edgetpu_device_group *group, error: for (i = 0; i < num_pages; i++) - put_page(pages[i]); + unpin_user_page(pages[i]); kfree(pages); return ERR_PTR(ret); @@ -1093,7 +1094,7 @@ error_free_sgt: } error: for (i = 0; i < num_pages; i++) - put_page(pages[i]); + unpin_user_page(pages[i]); if (hmap) { edgetpu_device_group_put(hmap->map.priv); kfree(hmap->sg_tables); |