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) 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 > > >