On Tue, Apr 11, 2023 at 3:29 PM Cindy Lu <lulu@xxxxxxxxxx> wrote: > > On Tue, Apr 11, 2023 at 11:10 AM Jason Wang <jasowang@xxxxxxxxxx> wrote: > > > > On Mon, Apr 10, 2023 at 11:01 PM Cindy Lu <lulu@xxxxxxxxxx> wrote: > > > > > > While using the no-batch mode, the process will not begin with > > > VHOST_IOTLB_BATCH_BEGIN, so we need to add the > > > VHOST_IOTLB_INVALIDATE to get vhost_vdpa_as, the process is the > > > same as VHOST_IOTLB_UPDATE > > > > > > Signed-off-by: Cindy Lu <lulu@xxxxxxxxxx> > > > --- > > > drivers/vhost/vdpa.c | 1 + > > > 1 file changed, 1 insertion(+) > > > > > > diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c > > > index 7be9d9d8f01c..32636a02a0ab 100644 > > > --- a/drivers/vhost/vdpa.c > > > +++ b/drivers/vhost/vdpa.c > > > @@ -1074,6 +1074,7 @@ static int vhost_vdpa_process_iotlb_msg(struct vhost_dev *dev, u32 asid, > > > goto unlock; > > > > > > if (msg->type == VHOST_IOTLB_UPDATE || > > > + msg->type == VHOST_IOTLB_INVALIDATE || > > > > I'm not sure I get here, invalidation doesn't need to create a new AS. > > > > Or maybe you can post the userspace code that can trigger this issue? > > > > Thanks > > > sorry I didn't write it clearly > For this issue can reproduce in vIOMMU no-batch mode support because > while the vIOMMU enabled, it will > flash a large memory to unmap, and this memory are haven't been mapped > before, so this unmapping will fail > > qemu-system-x86_64: failed to write, fd=12, errno=14 (Bad address) > qemu-system-x86_64: vhost_vdpa_dma_unmap(0x7fa26d1dd190, 0x0, > 0x80000000) = -5 (Bad address) So if this is a simple unmap, which error condition had you met in vhost_vdpa_process_iotlb_msg()? I think you need to trace to see what happens. For example: 1) can the code pass asid_to_iotlb() 2) if not, ASID 0 has been deleted since all the mappings have been unmapped if ASID 0 has been completely unmap, any reason we need to unmap it again? And do we need to drop the vhost_vdpa_remove_as() from both 1) vhost_vdpa_unmap() and 2) vhost_vdpa_process_iotlb_msg() ? Thanks > qemu-system-x86_64: failed to write, fd=12, errno=14 (Bad address) > .... > in batch mode this operation will begin with VHOST_IOTLB_BATCH_BEGIN, > so don't have this issue > > Thanks > cindy > > > msg->type == VHOST_IOTLB_BATCH_BEGIN) { > > > as = vhost_vdpa_find_alloc_as(v, asid); > > > if (!as) { > > > -- > > > 2.34.3 > > > > > > _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization