[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87357s1dwf.fsf@nvidia.com>
Date: Mon, 30 Jan 2023 21:43:52 +1100
From: Alistair Popple <apopple@...dia.com>
To: "Michael S. Tsirkin" <mst@...hat.com>
Cc: linux-mm@...ck.org, cgroups@...r.kernel.org,
linux-kernel@...r.kernel.org, jgg@...dia.com, jhubbard@...dia.com,
tjmercier@...gle.com, hannes@...xchg.org, surenb@...gle.com,
mkoutny@...e.com, daniel@...ll.ch,
Jason Wang <jasowang@...hat.com>, kvm@...r.kernel.org,
virtualization@...ts.linux-foundation.org, netdev@...r.kernel.org
Subject: Re: [RFC PATCH 02/19] drivers/vhost: Convert to use vm_account
"Michael S. Tsirkin" <mst@...hat.com> writes:
> On Tue, Jan 24, 2023 at 04:42:31PM +1100, Alistair Popple wrote:
>> diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
>> index ec32f78..a31dd53 100644
>> --- a/drivers/vhost/vdpa.c
>> +++ b/drivers/vhost/vdpa.c
>
> ...
>
>> @@ -780,6 +780,10 @@ static int vhost_vdpa_map(struct vhost_vdpa *v, struct vhost_iotlb *iotlb,
>> u32 asid = iotlb_to_asid(iotlb);
>> int r = 0;
>>
>> + if (!vdpa->use_va)
>> + if (vm_account_pinned(&dev->vm_account, PFN_DOWN(size)))
>> + return -ENOMEM;
>> +
>> r = vhost_iotlb_add_range_ctx(iotlb, iova, iova + size - 1,
>> pa, perm, opaque);
>> if (r)
>
> I suspect some error handling will have to be reworked then, no?
Thanks. I had meant to go back and double check some of these driver
conversions. Will add something like below:
@@ -787,7 +787,7 @@ static int vhost_vdpa_map(struct vhost_vdpa *v, struct vhost_iotlb *iotlb,
r = vhost_iotlb_add_range_ctx(iotlb, iova, iova + size - 1,
pa, perm, opaque);
if (r)
- return r;
+ goto out_unaccount;
if (ops->dma_map) {
r = ops->dma_map(vdpa, asid, iova, size, pa, perm, opaque);
@@ -798,12 +798,14 @@ static int vhost_vdpa_map(struct vhost_vdpa *v, struct vhost_iotlb *iotlb,
r = iommu_map(v->domain, iova, pa, size,
perm_to_iommu_flags(perm));
}
- if (r) {
+ if (r)
vhost_iotlb_del_range(iotlb, iova, iova + size - 1);
- return r;
- }
- return 0;
+out_unaccount:
+ if (!vdpa->use_va)
+ vm_unaccount_pinned(&dev->vm_account, PFN_DOWN(size));
+
+ return r;
}
static void vhost_vdpa_unmap(struct vhost_vdpa *v,
>> --
>> git-series 0.9.1
Powered by blists - more mailing lists