Re: git: e17eca327633 - main - vmm: Avoid embedding cpuset_t ioctl ABIs
- In reply to: Mark Johnston : "git: e17eca327633 - main - vmm: Avoid embedding cpuset_t ioctl ABIs"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 24 May 2023 08:13:57 UTC
On 24/05/23 03:17, Mark Johnston wrote:
> The branch main has been updated by markj:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=e17eca327633efc511450310afb5e4a662724e3d
>
> commit e17eca327633efc511450310afb5e4a662724e3d
> Author: Mark Johnston <markj@FreeBSD.org>
> AuthorDate: 2023-05-24 01:13:33 +0000
> Commit: Mark Johnston <markj@FreeBSD.org>
> CommitDate: 2023-05-24 01:15:59 +0000
>
> vmm: Avoid embedding cpuset_t ioctl ABIs
>
> Commit 0bda8d3e9f7a ("vmm: permit some IPIs to be handled by userspace")
> embedded cpuset_t into the vmm(4) ioctl ABI. This was a mistake since
> we otherwise have some leeway to change the cpuset_t for the whole
> system, but we want to keep the vmm ioctl ABI stable.
>
> Rework IPI reporting to avoid this problem. Along the way, make VM_RUN
> a bit more efficient:
> - Split vmexit metadata out of the main VM_RUN structure. This data is
> only written by the kernel.
> - Have userspace pass a cpuset_t pointer and cpusetsize in the VM_RUN
> structure, as is done for cpuset syscalls.
> - Have the destination CPU mask for VM_EXITCODE_IPIs live outside the
> vmexit info structure, and make VM_RUN copy it out separately. Zero
> out any extra bytes in the CPU mask, like cpuset syscalls do.
> - Modify the vmexit handler prototype to take a full VM_RUN structure.
>
> PR: 271330
> Reviewed by: corvink, jhb (previous versions)
> Sponsored by: The FreeBSD Foundation
> Differential Revision: https://reviews.freebsd.org/D40113
Looks like this is breaking world build:
/poudriere/jails/14amd64/usr/src/usr.sbin/bhyvectl/bhyvectl.c:2389:24:
error: incompatible pointer types passing 'struct vm_exit *' to paramet
er of type 'struct vm_run *' [-Werror,-Wincompatible-pointer-types]
error = vm_run(vcpu, &vmexit);
^~~~~~~
/usr/obj/poudriere/jails/14amd64/usr/src/amd64.amd64/tmp/usr/include/vmmapi.h:158:46:
note: passing argument to parameter 'vmrun' here
int vm_run(struct vcpu *vcpu, struct vm_run *vmrun);
^
1 error generated.
*** [bhyvectl.o] Error code 1
make[4]: stopped in /poudriere/jails/14amd64/usr/src/usr.sbin/bhyvectl
Looks like required adaptations to bhyvectl.c where left out.
--
Guido Falsi <madpilot@FreeBSD.org>