* Re: [RFC PATCH 02/19] drivers/vhost: Convert to use vm_account
[not found] ` <97a17a6ab7e59be4287a2a94d43bb787300476b4.1674538665.git-series.apopple@nvidia.com>
@ 2023-01-24 5:55 ` Michael S. Tsirkin
0 siblings, 0 replies; 3+ messages in thread
From: Michael S. Tsirkin @ 2023-01-24 5:55 UTC (permalink / raw)
To: Alistair Popple
Cc: daniel, kvm, jhubbard, linux-kernel, virtualization, linux-mm,
netdev, mkoutny, jgg, hannes, cgroups, surenb, tjmercier
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?
> --
> git-series 0.9.1
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFC PATCH 01/19] mm: Introduce vm_account
[not found] ` <748338ffe4c42d86669923159fe0426808ecb04d.1674538665.git-series.apopple@nvidia.com>
@ 2023-01-24 6:29 ` Christoph Hellwig
2023-01-31 14:00 ` David Hildenbrand
1 sibling, 0 replies; 3+ messages in thread
From: Christoph Hellwig @ 2023-01-24 6:29 UTC (permalink / raw)
To: Alistair Popple
Cc: linux-kselftest, rds-devel, daniel, kvm, linux-rdma, jhubbard,
linux-fpga, linuxppc-dev, linux-kernel, virtualization, linux-mm,
netdev, mkoutny, jgg, hannes, cgroups, bpf, surenb, tjmercier,
io-uring
> +/**
> + * vm_account_init - Initialise a new struct vm_account.
> + * @vm_account: pointer to uninitialised vm_account.
> + * @task: task to charge against.
> + * @user: user to charge against. Must be non-NULL for VM_ACCOUNT_USER.
> + * @flags: flags to use when charging to vm_account.
> + *
> + * Initialise a new uninitialiused struct vm_account. Takes references
> + * on the task/mm/user/cgroup as required although callers must ensure
> + * any references passed in remain valid for the duration of this
> + * call.
> + */
> +void vm_account_init(struct vm_account *vm_account, struct task_struct *task,
> + struct user_struct *user, enum vm_account_flags flags);
kerneldoc comments are supposed to be next to the implementation, and
not the declaration in the header.
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFC PATCH 01/19] mm: Introduce vm_account
[not found] ` <748338ffe4c42d86669923159fe0426808ecb04d.1674538665.git-series.apopple@nvidia.com>
2023-01-24 6:29 ` [RFC PATCH 01/19] mm: Introduce vm_account Christoph Hellwig
@ 2023-01-31 14:00 ` David Hildenbrand
1 sibling, 0 replies; 3+ messages in thread
From: David Hildenbrand @ 2023-01-31 14:00 UTC (permalink / raw)
To: Alistair Popple, linux-mm, cgroups
Cc: linux-kselftest, rds-devel, daniel, kvm, linux-rdma, jhubbard,
linux-fpga, linuxppc-dev, linux-kernel, virtualization, netdev,
mkoutny, jgg, hannes, bpf, surenb, tjmercier, io-uring
On 24.01.23 06:42, Alistair Popple wrote:
> Kernel drivers that pin pages should account these pages against
> either user->locked_vm or mm->pinned_vm and fail the pinning if
> RLIMIT_MEMLOCK is exceeded and CAP_IPC_LOCK isn't held.
>
> Currently drivers open-code this accounting and use various methods to
> update the atomic variables and check against the limits leading to
> various bugs and inconsistencies. To fix this introduce a standard
> interface for charging pinned and locked memory. As this involves
> taking references on kernel objects such as mm_struct or user_struct
> we introduce a new vm_account struct to hold these references. Several
> helper functions are then introduced to grab references and check
> limits.
>
> As the way these limits are charged and enforced is visible to
> userspace we need to be careful not to break existing applications by
> charging to different counters. As a result the vm_account functions
> support accounting to different counters as required.
>
> A future change will extend this to also account against a cgroup for
> pinned pages.
The term "vm_account" is misleading, no? VM_ACCOUNT is for accounting
towards the commit limit ....
--
Thanks,
David / dhildenb
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-01-31 14:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <cover.f52b9eb2792bccb8a9ecd6bc95055705cfe2ae03.1674538665.git-series.apopple@nvidia.com>
[not found] ` <97a17a6ab7e59be4287a2a94d43bb787300476b4.1674538665.git-series.apopple@nvidia.com>
2023-01-24 5:55 ` [RFC PATCH 02/19] drivers/vhost: Convert to use vm_account Michael S. Tsirkin
[not found] ` <748338ffe4c42d86669923159fe0426808ecb04d.1674538665.git-series.apopple@nvidia.com>
2023-01-24 6:29 ` [RFC PATCH 01/19] mm: Introduce vm_account Christoph Hellwig
2023-01-31 14:00 ` David Hildenbrand
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).