Test-Label: iol-testing Test-Status: WARNING http://dpdk.org/patch/105103 _apply patch failure_ Submitter: Xuan Ding Date: Monday, December 13 2021 17:20:01 Applied on: CommitID:042f5a355a57b31a9f87824173a9d427b21abdb8 Apply patch set 105103 failed: Checking patch lib/vhost/vhost.h... error: while searching for: struct guest_page { uint64_t guest_phys_addr; uint64_t host_phys_addr; uint64_t host_user_addr; uint64_t size; }; error: patch failed: lib/vhost/vhost.h:354 Hunk #2 succeeded at 604 (offset -1 lines). Hunk #3 succeeded at 621 (offset -1 lines). Checking patch lib/vhost/vhost_user.c... error: while searching for: page = &dev->guest_pages[i]; ret = rte_vfio_container_dma_map(RTE_VFIO_DEFAULT_CONTAINER_FD, page->host_user_addr, page->host_phys_addr, page->size); if (ret) { /* error: patch failed: lib/vhost/vhost_user.c:154 error: while searching for: page = &dev->guest_pages[i]; ret = rte_vfio_container_dma_unmap(RTE_VFIO_DEFAULT_CONTAINER_FD, page->host_user_addr, page->host_phys_addr, page->size); if (ret) { /* like DMA map, ignore the kernel driver case when unmap. */ error: patch failed: lib/vhost/vhost_user.c:182 error: while searching for: static int add_one_guest_page(struct virtio_net *dev, uint64_t guest_phys_addr, uint64_t host_phys_addr, uint64_t host_user_addr, uint64_t size) { struct guest_page *page, *last_page; struct guest_page *old_pages; error: patch failed: lib/vhost/vhost_user.c:977 error: while searching for: if (dev->nr_guest_pages > 0) { last_page = &dev->guest_pages[dev->nr_guest_pages - 1]; /* merge if the two pages are continuous */ if (host_phys_addr == last_page->host_phys_addr + last_page->size && guest_phys_addr == last_page->guest_phys_addr + last_page->size && host_user_addr == last_page->host_user_addr + last_page->size) { last_page->size += size; error: patch failed: lib/vhost/vhost_user.c:998 error: while searching for: page = &dev->guest_pages[dev->nr_guest_pages++]; page->guest_phys_addr = guest_phys_addr; page->host_phys_addr = host_phys_addr; page->host_user_addr = host_user_addr; page->size = size; error: patch failed: lib/vhost/vhost_user.c:1008 error: while searching for: uint64_t reg_size = reg->size; uint64_t host_user_addr = reg->host_user_addr; uint64_t guest_phys_addr = reg->guest_phys_addr; uint64_t host_phys_addr; uint64_t size; host_phys_addr = rte_mem_virt2iova((void *)(uintptr_t)host_user_addr); size = page_size - (guest_phys_addr & (page_size - 1)); size = RTE_MIN(size, reg_size); if (add_one_guest_page(dev, guest_phys_addr, host_phys_addr, host_user_addr, size) < 0) return -1; error: patch failed: lib/vhost/vhost_user.c:1022 error: while searching for: while (reg_size > 0) { size = RTE_MIN(reg_size, page_size); host_phys_addr = rte_mem_virt2iova((void *)(uintptr_t) host_user_addr); if (add_one_guest_page(dev, guest_phys_addr, host_phys_addr, host_user_addr, size) < 0) return -1; error: patch failed: lib/vhost/vhost_user.c:1039 Hunk #8 succeeded at 1071 (offset -2 lines). Checking patch lib/vhost/virtio_net.c... Applying patch lib/vhost/vhost.h with 1 reject... Rejected hunk #1. Hunk #2 applied cleanly. Hunk #3 applied cleanly. Applying patch lib/vhost/vhost_user.c with 7 rejects... Rejected hunk #1. Rejected hunk #2. Rejected hunk #3. Rejected hunk #4. Rejected hunk #5. Rejected hunk #6. Rejected hunk #7. Hunk #8 applied cleanly. Applied patch lib/vhost/virtio_net.c cleanly. diff a/lib/vhost/vhost.h b/lib/vhost/vhost.h (rejected hunks) @@ -354,7 +354,7 @@ struct vring_packed_desc_event { struct guest_page { uint64_t guest_phys_addr; - uint64_t host_phys_addr; + uint64_t host_iova; uint64_t host_user_addr; uint64_t size; }; diff a/lib/vhost/vhost_user.c b/lib/vhost/vhost_user.c (rejected hunks) @@ -154,7 +154,7 @@ async_dma_map(struct virtio_net *dev, bool do_map) page = &dev->guest_pages[i]; ret = rte_vfio_container_dma_map(RTE_VFIO_DEFAULT_CONTAINER_FD, page->host_user_addr, - page->host_phys_addr, + page->host_iova, page->size); if (ret) { /* @@ -182,7 +182,7 @@ async_dma_map(struct virtio_net *dev, bool do_map) page = &dev->guest_pages[i]; ret = rte_vfio_container_dma_unmap(RTE_VFIO_DEFAULT_CONTAINER_FD, page->host_user_addr, - page->host_phys_addr, + page->host_iova, page->size); if (ret) { /* like DMA map, ignore the kernel driver case when unmap. */ @@ -977,7 +977,7 @@ vhost_user_set_vring_base(struct virtio_net **pdev, static int add_one_guest_page(struct virtio_net *dev, uint64_t guest_phys_addr, - uint64_t host_phys_addr, uint64_t host_user_addr, uint64_t size) + uint64_t host_iova, uint64_t host_user_addr, uint64_t size) { struct guest_page *page, *last_page; struct guest_page *old_pages; @@ -998,7 +998,7 @@ add_one_guest_page(struct virtio_net *dev, uint64_t guest_phys_addr, if (dev->nr_guest_pages > 0) { last_page = &dev->guest_pages[dev->nr_guest_pages - 1]; /* merge if the two pages are continuous */ - if (host_phys_addr == last_page->host_phys_addr + last_page->size + if (host_iova == last_page->host_iova + last_page->size && guest_phys_addr == last_page->guest_phys_addr + last_page->size && host_user_addr == last_page->host_user_addr + last_page->size) { last_page->size += size; @@ -1008,7 +1008,7 @@ add_one_guest_page(struct virtio_net *dev, uint64_t guest_phys_addr, page = &dev->guest_pages[dev->nr_guest_pages++]; page->guest_phys_addr = guest_phys_addr; - page->host_phys_addr = host_phys_addr; + page->host_iova = host_iova; page->host_user_addr = host_user_addr; page->size = size; @@ -1022,14 +1022,14 @@ add_guest_pages(struct virtio_net *dev, struct rte_vhost_mem_region *reg, uint64_t reg_size = reg->size; uint64_t host_user_addr = reg->host_user_addr; uint64_t guest_phys_addr = reg->guest_phys_addr; - uint64_t host_phys_addr; + uint64_t host_iova; uint64_t size; - host_phys_addr = rte_mem_virt2iova((void *)(uintptr_t)host_user_addr); + host_iova = rte_mem_virt2iova((void *)(uintptr_t)host_user_addr); size = page_size - (guest_phys_addr & (page_size - 1)); size = RTE_MIN(size, reg_size); - if (add_one_guest_page(dev, guest_phys_addr, host_phys_addr, + if (add_one_guest_page(dev, guest_phys_addr, host_iova, host_user_addr, size) < 0) return -1; @@ -1039,9 +1039,9 @@ add_guest_pages(struct virtio_net *dev, struct rte_vhost_mem_region *reg, while (reg_size > 0) { size = RTE_MIN(reg_size, page_size); - host_phys_addr = rte_mem_virt2iova((void *)(uintptr_t) + host_iova = rte_mem_virt2iova((void *)(uintptr_t) host_user_addr); - if (add_one_guest_page(dev, guest_phys_addr, host_phys_addr, + if (add_one_guest_page(dev, guest_phys_addr, host_iova, host_user_addr, size) < 0) return -1; https://lab.dpdk.org/results/dashboard/patchsets/20483/ UNH-IOL DPDK Community Lab