No need for accel-specific @dirty field when we have
a generic one in CPUState.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Message-Id: <20250703173248.44995-20-philmd@linaro.org>
---
target/i386/nvmm/nvmm-all.c | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c
index f1c6120ccf1..aea61a6fd2a 100644
--- a/target/i386/nvmm/nvmm-all.c
+++ b/target/i386/nvmm/nvmm-all.c
@@ -30,7 +30,6 @@ struct AccelCPUState {
struct nvmm_vcpu vcpu;
uint8_t tpr;
bool stop;
- bool dirty;
/* Window-exiting for INTs/NMIs. */
bool int_window_exit;
@@ -508,7 +507,7 @@ nvmm_io_callback(struct nvmm_io *io)
}
/* Needed, otherwise infinite loop. */
- current_cpu->accel->dirty = false;
+ current_cpu->vcpu_dirty = false;
}
static void
@@ -517,7 +516,7 @@ nvmm_mem_callback(struct nvmm_mem *mem)
cpu_physical_memory_rw(mem->gpa, mem->data, mem->size, mem->write);
/* Needed, otherwise infinite loop. */
- current_cpu->accel->dirty = false;
+ current_cpu->vcpu_dirty = false;
}
static struct nvmm_assist_callbacks nvmm_callbacks = {
@@ -727,9 +726,9 @@ nvmm_vcpu_loop(CPUState *cpu)
* Inner VCPU loop.
*/
do {
- if (cpu->accel->dirty) {
+ if (cpu->vcpu_dirty) {
nvmm_set_registers(cpu);
- cpu->accel->dirty = false;
+ cpu->vcpu_dirty = false;
}
if (qcpu->stop) {
@@ -827,32 +826,32 @@ static void
do_nvmm_cpu_synchronize_state(CPUState *cpu, run_on_cpu_data arg)
{
nvmm_get_registers(cpu);
- cpu->accel->dirty = true;
+ cpu->vcpu_dirty = true;
}
static void
do_nvmm_cpu_synchronize_post_reset(CPUState *cpu, run_on_cpu_data arg)
{
nvmm_set_registers(cpu);
- cpu->accel->dirty = false;
+ cpu->vcpu_dirty = false;
}
static void
do_nvmm_cpu_synchronize_post_init(CPUState *cpu, run_on_cpu_data arg)
{
nvmm_set_registers(cpu);
- cpu->accel->dirty = false;
+ cpu->vcpu_dirty = false;
}
static void
do_nvmm_cpu_synchronize_pre_loadvm(CPUState *cpu, run_on_cpu_data arg)
{
- cpu->accel->dirty = true;
+ cpu->vcpu_dirty = true;
}
void nvmm_cpu_synchronize_state(CPUState *cpu)
{
- if (!cpu->accel->dirty) {
+ if (!cpu->vcpu_dirty) {
run_on_cpu(cpu, do_nvmm_cpu_synchronize_state, RUN_ON_CPU_NULL);
}
}
@@ -982,7 +981,7 @@ nvmm_init_vcpu(CPUState *cpu)
}
}
- qcpu->dirty = true;
+ qcpu->vcpu_dirty = true;
cpu->accel = qcpu;
return 0;
--
2.49.0
On 04/07/2025 12.14, Philippe Mathieu-Daudé wrote:
> No need for accel-specific @dirty field when we have
> a generic one in CPUState.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
> Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
> Message-Id: <20250703173248.44995-20-philmd@linaro.org>
> ---
> target/i386/nvmm/nvmm-all.c | 21 ++++++++++-----------
> 1 file changed, 10 insertions(+), 11 deletions(-)
>
> diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c
> index f1c6120ccf1..aea61a6fd2a 100644
> --- a/target/i386/nvmm/nvmm-all.c
> +++ b/target/i386/nvmm/nvmm-all.c
...
> @@ -982,7 +981,7 @@ nvmm_init_vcpu(CPUState *cpu)
> }
> }
>
> - qcpu->dirty = true;
> + qcpu->vcpu_dirty = true;
> cpu->accel = qcpu;
>
> return 0;
FYI, this does not seem to compile:
../src/target/i386/nvmm/nvmm-all.c: In function 'nvmm_init_vcpu':
../src/target/i386/nvmm/nvmm-all.c:988:9: error: 'AccelCPUState' has no
member named 'vcpu_dirty'
988 | qcpu->vcpu_dirty = true;
| ^~
Is anybody checking the netbsd builds at all?
(I'm currently trying to update test/vm/netbsd to version 10.1, that's how I
noticed it)
Thomas
On 13/1/26 20:32, Thomas Huth wrote: > On 04/07/2025 12.14, Philippe Mathieu-Daudé wrote: >> No need for accel-specific @dirty field when we have >> a generic one in CPUState. >> >> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> >> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> >> Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com> >> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> >> Message-Id: <20250703173248.44995-20-philmd@linaro.org> >> --- >> target/i386/nvmm/nvmm-all.c | 21 ++++++++++----------- >> 1 file changed, 10 insertions(+), 11 deletions(-) >> >> diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c >> index f1c6120ccf1..aea61a6fd2a 100644 >> --- a/target/i386/nvmm/nvmm-all.c >> +++ b/target/i386/nvmm/nvmm-all.c > ... >> @@ -982,7 +981,7 @@ nvmm_init_vcpu(CPUState *cpu) >> } >> } >> - qcpu->dirty = true; >> + qcpu->vcpu_dirty = true; >> cpu->accel = qcpu; >> return 0; > > FYI, this does not seem to compile: > > ../src/target/i386/nvmm/nvmm-all.c: In function 'nvmm_init_vcpu': > ../src/target/i386/nvmm/nvmm-all.c:988:9: error: 'AccelCPUState' has no > member named 'vcpu_dirty' > 988 | qcpu->vcpu_dirty = true; > | ^~ s/qcpu/cpu/ > > Is anybody checking the netbsd builds at all? 3 reviewers and 6 months later. Should we add a policy for bitrotting untested code? > (I'm currently trying to update test/vm/netbsd to version 10.1, that's > how I noticed it) > > Thomas >
On Tue, Jan 13, 2026 at 09:30:32PM +0100, Philippe Mathieu-Daudé wrote: > On 13/1/26 20:32, Thomas Huth wrote: > > On 04/07/2025 12.14, Philippe Mathieu-Daudé wrote: > > > No need for accel-specific @dirty field when we have > > > a generic one in CPUState. > > > > > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > > > Reviewed-by: Richard Henderson <richard.henderson@linaro.org> > > > Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com> > > > Reviewed-by: Zhao Liu <zhao1.liu@intel.com> > > > Message-Id: <20250703173248.44995-20-philmd@linaro.org> > > > --- > > > target/i386/nvmm/nvmm-all.c | 21 ++++++++++----------- > > > 1 file changed, 10 insertions(+), 11 deletions(-) > > > > > > diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c > > > index f1c6120ccf1..aea61a6fd2a 100644 > > > --- a/target/i386/nvmm/nvmm-all.c > > > +++ b/target/i386/nvmm/nvmm-all.c > > ... > > > @@ -982,7 +981,7 @@ nvmm_init_vcpu(CPUState *cpu) > > > } > > > } > > > - qcpu->dirty = true; > > > + qcpu->vcpu_dirty = true; > > > cpu->accel = qcpu; > > > return 0; > > > > FYI, this does not seem to compile: > > > > ../src/target/i386/nvmm/nvmm-all.c: In function 'nvmm_init_vcpu': > > ../src/target/i386/nvmm/nvmm-all.c:988:9: error: 'AccelCPUState' has no > > member named 'vcpu_dirty' > > 988 | qcpu->vcpu_dirty = true; > > | ^~ > > s/qcpu/cpu/ > > > > > Is anybody checking the netbsd builds at all? > > 3 reviewers and 6 months later. > > Should we add a policy for bitrotting untested code? Since we don't cover netbsd in GitLab CI, all responsibility for keeping it working lies with whomever cares about the distro. No contributors or maintainers in general should feel obligated to fix bugs in untested platforms unless they specifically care about the platform. > > (I'm currently trying to update test/vm/netbsd to version 10.1, that's > > how I noticed it) MAINTAINERS lists no one against test/vm/netbsd. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
Philippe Mathieu-Daudé <philmd@linaro.org> writes: > On 13/1/26 20:32, Thomas Huth wrote: >> On 04/07/2025 12.14, Philippe Mathieu-Daudé wrote: >>> No need for accel-specific @dirty field when we have >>> a generic one in CPUState. >>> >>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> >>> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> >>> Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com> >>> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> >>> Message-Id: <20250703173248.44995-20-philmd@linaro.org> >>> --- >>> target/i386/nvmm/nvmm-all.c | 21 ++++++++++----------- >>> 1 file changed, 10 insertions(+), 11 deletions(-) >>> >>> diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c >>> index f1c6120ccf1..aea61a6fd2a 100644 >>> --- a/target/i386/nvmm/nvmm-all.c >>> +++ b/target/i386/nvmm/nvmm-all.c >> ... >>> @@ -982,7 +981,7 @@ nvmm_init_vcpu(CPUState *cpu) >>> } >>> } >>> - qcpu->dirty = true; >>> + qcpu->vcpu_dirty = true; >>> cpu->accel = qcpu; >>> return 0; >> FYI, this does not seem to compile: >> ../src/target/i386/nvmm/nvmm-all.c: In function 'nvmm_init_vcpu': >> ../src/target/i386/nvmm/nvmm-all.c:988:9: error: 'AccelCPUState' has no member named 'vcpu_dirty' >> 988 | qcpu->vcpu_dirty = true; >> | ^~ > > s/qcpu/cpu/ > >> Is anybody checking the netbsd builds at all? > > 3 reviewers and 6 months later. I have good news! Because this does not compile since 10.1, and we're already in the 11.0 cycle, we can rip it out immediately without doing the deprecation dance. > Should we add a policy for bitrotting untested code? What policy do you have in mind? >> (I'm currently trying to update test/vm/netbsd to version 10.1, that's how I noticed it) >> Thomas >>
On Wed, Jan 14, 2026 at 08:38:26AM +0100, Markus Armbruster wrote:
> Philippe Mathieu-Daudé <philmd@linaro.org> writes:
>
> > On 13/1/26 20:32, Thomas Huth wrote:
> >> On 04/07/2025 12.14, Philippe Mathieu-Daudé wrote:
> >>> No need for accel-specific @dirty field when we have
> >>> a generic one in CPUState.
> >>>
> >>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> >>> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> >>> Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
> >>> Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
> >>> Message-Id: <20250703173248.44995-20-philmd@linaro.org>
> >>> ---
> >>> target/i386/nvmm/nvmm-all.c | 21 ++++++++++-----------
> >>> 1 file changed, 10 insertions(+), 11 deletions(-)
> >>>
> >>> diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c
> >>> index f1c6120ccf1..aea61a6fd2a 100644
> >>> --- a/target/i386/nvmm/nvmm-all.c
> >>> +++ b/target/i386/nvmm/nvmm-all.c
> >> ...
> >>> @@ -982,7 +981,7 @@ nvmm_init_vcpu(CPUState *cpu)
> >>> }
> >>> }
> >>> - qcpu->dirty = true;
> >>> + qcpu->vcpu_dirty = true;
> >>> cpu->accel = qcpu;
> >>> return 0;
> >> FYI, this does not seem to compile:
> >> ../src/target/i386/nvmm/nvmm-all.c: In function 'nvmm_init_vcpu':
> >> ../src/target/i386/nvmm/nvmm-all.c:988:9: error: 'AccelCPUState' has no member named 'vcpu_dirty'
> >> 988 | qcpu->vcpu_dirty = true;
> >> | ^~
> >
> > s/qcpu/cpu/
> >
> >> Is anybody checking the netbsd builds at all?
> >
> > 3 reviewers and 6 months later.
>
> I have good news! Because this does not compile since 10.1, and we're
> already in the 11.0 cycle, we can rip it out immediately without doing
> the deprecation dance.
>
> > Should we add a policy for bitrotting untested code?
>
> What policy do you have in mind?
Implicitly I consider the policy to effectively be
(1) Platforms untested by GitLab CI are not guaranteed to work at
any time, including in formal releases.
(2) No contributors/maintainers are obligated to investigate or
fix breakage in untested platforms
(3) Those whom care about the platform are expected to perform
manual testing and contribute fixes as required.
This doesn't imply we should automatically rip it out, but if we see
no evidence of (3) for a prolonged period of time, and no sign of it
being used downstream in any way, it is worth considering the cost /
benefit.
In the case of NetBSD something must be working to some extent since
it appears that 10.1.0 QEMU is present in the pkg repos:
https://pkgsrc.se/emulators/qemu
so that argues against ripping stuff out even if we notice breakage.
> >> (I'm currently trying to update test/vm/netbsd to version 10.1, that's how I noticed it)
> >> Thomas
> >>
>
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
On 1/14/26 10:19, Daniel P. Berrangé wrote:
> This doesn't imply we should automatically rip it out, but if we see
> no evidence of (3) for a prolonged period of time, and no sign of it
> being used downstream in any way, it is worth considering the cost /
> benefit.
>
> In the case of NetBSD something must be working to some extent since
> it appears that 10.1.0 QEMU is present in the pkg repos:
>
> https://pkgsrc.se/emulators/qemu
>
> so that argues against ripping stuff out even if we notice breakage.
And indeed their pkgsrc has the same patch that Philippe has now
submitted for inclusion in qemu.git:
https://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/emulators/qemu/patches/patch-target_i386_nvmm_nvmm-all.c.diff?r1=1.10;r2=1.11
---- target/i386/nvmm/nvmm-all.c.orig 2024-11-20 22:48:05.000000000 +0000
+--- target/i386/nvmm/nvmm-all.c.orig 2025-08-26 18:32:38.000000000 +0000
+++ target/i386/nvmm/nvmm-all.c
-@@ -1057,7 +1057,11 @@ nvmm_process_section(MemoryRegionSection
+@@ -984,7 +984,7 @@ nvmm_init_vcpu(CPUState *cpu)
+ }
+ }
+
+- qcpu->vcpu_dirty = true;
++ cpu->vcpu_dirty = true;
+ cpu->accel = qcpu;
+
+ return 0;
+@@ -1059,7 +1059,11 @@ nvmm_process_section(MemoryRegionSection
unsigned int delta;
uintptr_t hva;
Paolo Bonzini <pbonzini@redhat.com> writes: > On 1/14/26 10:19, Daniel P. Berrangé wrote: >> This doesn't imply we should automatically rip it out, but if we see >> no evidence of (3) for a prolonged period of time, and no sign of it >> being used downstream in any way, it is worth considering the cost / >> benefit. >> >> In the case of NetBSD something must be working to some extent since >> it appears that 10.1.0 QEMU is present in the pkg repos: >> >> https://pkgsrc.se/emulators/qemu >> >> so that argues against ripping stuff out even if we notice breakage. > > And indeed their pkgsrc has the same patch that Philippe has now > submitted for inclusion in qemu.git: > > https://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/emulators/qemu/patches/patch-target_i386_nvmm_nvmm-all.c.diff?r1=1.10;r2=1.11 > > ---- target/i386/nvmm/nvmm-all.c.orig 2024-11-20 22:48:05.000000000 +0000 > +--- target/i386/nvmm/nvmm-all.c.orig 2025-08-26 18:32:38.000000000 +0000 > +++ target/i386/nvmm/nvmm-all.c > -@@ -1057,7 +1057,11 @@ nvmm_process_section(MemoryRegionSection > +@@ -984,7 +984,7 @@ nvmm_init_vcpu(CPUState *cpu) > + } > + } > + > +- qcpu->vcpu_dirty = true; > ++ cpu->vcpu_dirty = true; > + cpu->accel = qcpu; > + > + return 0; > +@@ -1059,7 +1059,11 @@ nvmm_process_section(MemoryRegionSection > unsigned int delta; > uintptr_t hva; That they didn't immediately post the fix upstream is a bit of a disappointment. Deep in the weeds, I guess.
On Wed, Jan 14, 2026 at 11:45:35AM +0100, Markus Armbruster wrote: > That they didn't immediately post the fix upstream is a bit of a > disappointment. Deep in the weeds, I guess. Sorry to break this but even submitting simple patches and getting them into the qemu source tree hasn't been an easy nor enjoyable experience to me to understate it so once in a while, a new version is pulled into pkgsrc and patches are made on top and if they start to grow or diverge too much a patch round can be made requested on the qemu repo. This is just my experience of course. With regards, Reinoud
On 14/01/2026 12.28, Reinoud Zandijk wrote: > On Wed, Jan 14, 2026 at 11:45:35AM +0100, Markus Armbruster wrote: >> That they didn't immediately post the fix upstream is a bit of a >> disappointment. Deep in the weeds, I guess. > > Sorry to break this but even submitting simple patches and getting them into > the qemu source tree hasn't been an easy nor enjoyable experience to me Sorry to hear that (and yes, I agree, it can be difficult indeed some times for bigger patch sets), but at least for simple patches like this one-line fix, you can always CC: qemu-trivial@nongnu.org which should help to get those in rather easily, I hope. HTH, Thomas
On 1/14/26 12:28, Reinoud Zandijk wrote: > On Wed, Jan 14, 2026 at 11:45:35AM +0100, Markus Armbruster wrote: >> That they didn't immediately post the fix upstream is a bit of a >> disappointment. Deep in the weeds, I guess. > > Sorry to break this but even submitting simple patches and getting them into > the qemu source tree hasn't been an easy nor enjoyable experience to me to > understate it Have you actually tried since 2021 when your last commit was? https://patchew.org/search?q=project%3AQEMU+from%3Areinoud says you didn't but I may be missing something. In fact your only contribution was a really big one, and I say this not to understate you work but because *almost anything* would be easier than submitting a new accelerator. > so once in a while, a new version is pulled into pkgsrc and > patches are made on top and if they start to grow or diverge too much a patch > round can be made requested on the qemu repo. This is just my experience of > course. We're not asking you to keep CI up-to-date (which Thomas is doing now, despite having no specific need that I know of to support NetBSD), just to *report* failure to build from source and tell us "hey, that's how we fixed it". Otherwise we have the false impression that no one even cares about new QEMU on NetBSD. Thanks, Paolo ps: sorry about the previous copy of the message, I somehow fat-fingered the "encrypt message" command...
On Wed, Jan 14, 2026 at 01:17:20PM +0100, Paolo Bonzini wrote: > On 1/14/26 12:28, Reinoud Zandijk wrote: > > Sorry to break this but even submitting simple patches and getting them into > > the qemu source tree hasn't been an easy nor enjoyable experience to me to > > understate it > > Have you actually tried since 2021 when your last commit was? > https://patchew.org/search?q=project%3AQEMU+from%3Areinoud says you didn't > but I may be missing something. > > In fact your only contribution was a really big one, and I say this not to > understate you work but because *almost anything* would be easier than > submitting a new accelerator. I can't claim all the credits :) Most of the low level work was done by maxv, the author of NVMM. IIRC I updated the local patch and modified it to work with the newer build framework and committed it into the tree. I have to admit I haven't contributed more since but I still use Qemu daily, with the NVMM accelerator :) It makes such a big difference. > > so once in a while, a new version is pulled into pkgsrc and > > patches are made on top and if they start to grow or diverge too much a patch > > round can be made requested on the qemu repo. This is just my experience of > > course. > > We're not asking you to keep CI up-to-date (which Thomas is doing now, > despite having no specific need that I know of to support NetBSD), just to > *report* failure to build from source and tell us "hey, that's how we fixed > it". Otherwise we have the false impression that no one even cares about > new QEMU on NetBSD. As pkgsrc normally tracks releases and has a directory with local patches on top of that, build errors only show up when we bump the version. Version 10.2 is now in pkgsrc though I am running 10.1.3 so there is surely interest in keeping it running. I could try to commit some more trivial patches in the repo here to reduce the diffs some more. Thanks for the feedback, Reinoud
Reinoud Zandijk <reinoud@NetBSD.org> writes: > On Wed, Jan 14, 2026 at 01:17:20PM +0100, Paolo Bonzini wrote: >> On 1/14/26 12:28, Reinoud Zandijk wrote: [...] >> We're not asking you to keep CI up-to-date (which Thomas is doing now, >> despite having no specific need that I know of to support NetBSD), just to >> *report* failure to build from source and tell us "hey, that's how we fixed >> it". Otherwise we have the false impression that no one even cares about >> new QEMU on NetBSD. > > As pkgsrc normally tracks releases and has a directory with local patches on > top of that, build errors only show up when we bump the version. Version 10.2 > is now in pkgsrc though I am running 10.1.3 so there is surely interest in > keeping it running. I could try to commit some more trivial patches in the > repo here to reduce the diffs some more. Fixing the build long after it broke is less than ideal. What would it take to get NetBSD covered in CI?
Markus Armbruster <armbru@redhat.com> writes: > Reinoud Zandijk <reinoud@NetBSD.org> writes: > >> On Wed, Jan 14, 2026 at 01:17:20PM +0100, Paolo Bonzini wrote: >>> On 1/14/26 12:28, Reinoud Zandijk wrote: > > [...] > >>> We're not asking you to keep CI up-to-date (which Thomas is doing now, >>> despite having no specific need that I know of to support NetBSD), just to >>> *report* failure to build from source and tell us "hey, that's how we fixed >>> it". Otherwise we have the false impression that no one even cares about >>> new QEMU on NetBSD. >> >> As pkgsrc normally tracks releases and has a directory with local patches on >> top of that, build errors only show up when we bump the version. Version 10.2 >> is now in pkgsrc though I am running 10.1.3 so there is surely interest in >> keeping it running. I could try to commit some more trivial patches in the >> repo here to reduce the diffs some more. > > Fixing the build long after it broke is less than ideal. What would it > take to get NetBSD covered in CI? We have the ability to run tests via the vm-build: make vm-build-netbsd however to take full advantage that needs a runner with a reasonable amount of memory and access to KVM so it can run reasonably fast. Does anyone want to host a dedicated x86_64 custom runner? -- Alex Bennée Virtualisation Tech Lead @ Linaro
On 15/1/26 17:43, Alex Bennée wrote: > Markus Armbruster <armbru@redhat.com> writes: > >> Reinoud Zandijk <reinoud@NetBSD.org> writes: >> >>> On Wed, Jan 14, 2026 at 01:17:20PM +0100, Paolo Bonzini wrote: >>>> On 1/14/26 12:28, Reinoud Zandijk wrote: >> >> [...] >> >>>> We're not asking you to keep CI up-to-date (which Thomas is doing now, >>>> despite having no specific need that I know of to support NetBSD), just to >>>> *report* failure to build from source and tell us "hey, that's how we fixed >>>> it". Otherwise we have the false impression that no one even cares about >>>> new QEMU on NetBSD. >>> >>> As pkgsrc normally tracks releases and has a directory with local patches on >>> top of that, build errors only show up when we bump the version. Version 10.2 >>> is now in pkgsrc though I am running 10.1.3 so there is surely interest in >>> keeping it running. I could try to commit some more trivial patches in the >>> repo here to reduce the diffs some more. >> >> Fixing the build long after it broke is less than ideal. What would it >> take to get NetBSD covered in CI? > > We have the ability to run tests via the vm-build: > > make vm-build-netbsd > > however to take full advantage that needs a runner with a reasonable > amount of memory and access to KVM so it can run reasonably fast. Does > anyone want to host a dedicated x86_64 custom runner? Pierrick had a clever & simpler way to get that: https://lore.kernel.org/qemu-devel/ae956364-78e6-4067-b0eb-94213891a112@linaro.org/
-----BEGIN PGP MESSAGE----- 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 L3891ngq =DxQF -----END PGP MESSAGE----- -----BEGIN PGP MESSAGE----- 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 =Uxmw -----END PGP MESSAGE-----
On 1/14/26 11:45, Markus Armbruster wrote: >> ---- target/i386/nvmm/nvmm-all.c.orig 2024-11-20 22:48:05.000000000 +0000 >> +--- target/i386/nvmm/nvmm-all.c.orig 2025-08-26 18:32:38.000000000 +0000 >> +++ target/i386/nvmm/nvmm-all.c >> -@@ -1057,7 +1057,11 @@ nvmm_process_section(MemoryRegionSection >> +@@ -984,7 +984,7 @@ nvmm_init_vcpu(CPUState *cpu) >> + } >> + } >> + >> +- qcpu->vcpu_dirty = true; >> ++ cpu->vcpu_dirty = true; >> + cpu->accel = qcpu; >> + >> + return 0; >> +@@ -1059,7 +1059,11 @@ nvmm_process_section(MemoryRegionSection >> unsigned int delta; >> uintptr_t hva; > > That they didn't immediately post the fix upstream is a bit of a > disappointment. Deep in the weeds, I guess. Eh, it happens. :/ For the future, since Ryo and Reinoud are in Cc, it would have been enough to contact anyone on IRC or reply to the release announcement. Paolo
Paolo Bonzini <pbonzini@redhat.com> writes: > On 1/14/26 11:45, Markus Armbruster wrote: >>> ---- target/i386/nvmm/nvmm-all.c.orig 2024-11-20 22:48:05.000000000 +0000 >>> +--- target/i386/nvmm/nvmm-all.c.orig 2025-08-26 18:32:38.000000000 +0000 >>> +++ target/i386/nvmm/nvmm-all.c >>> -@@ -1057,7 +1057,11 @@ nvmm_process_section(MemoryRegionSection >>> +@@ -984,7 +984,7 @@ nvmm_init_vcpu(CPUState *cpu) >>> + } >>> + } >>> + >>> +- qcpu->vcpu_dirty = true; >>> ++ cpu->vcpu_dirty = true; >>> + cpu->accel = qcpu; >>> + >>> + return 0; >>> +@@ -1059,7 +1059,11 @@ nvmm_process_section(MemoryRegionSection >>> unsigned int delta; >>> uintptr_t hva; >> That they didn't immediately post the fix upstream is a bit of a >> disappointment. Deep in the weeds, I guess. > > Eh, it happens. :/ For the future, since Ryo and Reinoud are in Cc, it would have been enough to contact anyone on IRC or reply to the release announcement. Yes, it happens, especially when you're deep in the weeds.
Daniel P. Berrangé <berrange@redhat.com> writes: > On Wed, Jan 14, 2026 at 08:38:26AM +0100, Markus Armbruster wrote: >> Philippe Mathieu-Daudé <philmd@linaro.org> writes: [...] >> > Should we add a policy for bitrotting untested code? >> >> What policy do you have in mind? > > Implicitly I consider the policy to effectively be > > (1) Platforms untested by GitLab CI are not guaranteed to work at > any time, including in formal releases. > (2) No contributors/maintainers are obligated to investigate or > fix breakage in untested platforms > (3) Those whom care about the platform are expected to perform > manual testing and contribute fixes as required. > > This doesn't imply we should automatically rip it out, but if we see > no evidence of (3) for a prolonged period of time, and no sign of it > being used downstream in any way, it is worth considering the cost / > benefit. Sounds good to me. Put it in docs/ somewhere? [...]
On 13/1/26 21:30, Philippe Mathieu-Daudé wrote: > On 13/1/26 20:32, Thomas Huth wrote: >> On 04/07/2025 12.14, Philippe Mathieu-Daudé wrote: >>> No need for accel-specific @dirty field when we have >>> a generic one in CPUState. >>> >>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> >>> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> >>> Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com> >>> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> >>> Message-Id: <20250703173248.44995-20-philmd@linaro.org> >>> --- >>> target/i386/nvmm/nvmm-all.c | 21 ++++++++++----------- >>> 1 file changed, 10 insertions(+), 11 deletions(-) >>> >>> diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c >>> index f1c6120ccf1..aea61a6fd2a 100644 >>> --- a/target/i386/nvmm/nvmm-all.c >>> +++ b/target/i386/nvmm/nvmm-all.c >> ... >>> @@ -982,7 +981,7 @@ nvmm_init_vcpu(CPUState *cpu) >>> } >>> } >>> - qcpu->dirty = true; >>> + qcpu->vcpu_dirty = true; >>> cpu->accel = qcpu; >>> return 0; >> >> FYI, this does not seem to compile: >> >> ../src/target/i386/nvmm/nvmm-all.c: In function 'nvmm_init_vcpu': >> ../src/target/i386/nvmm/nvmm-all.c:988:9: error: 'AccelCPUState' has >> no member named 'vcpu_dirty' >> 988 | qcpu->vcpu_dirty = true; >> | ^~ > > s/qcpu/cpu/ > >> >> Is anybody checking the netbsd builds at all? > > 3 reviewers and 6 months later. and 7 commits on top of this PR :) $ git log --oneline 2098164a6be..master -- target/i386/nvmm/nvmm-all.c d5e1d2dea11 target/i386: clear CPU_INTERRUPT_SIPI for all accelerators 5699f6a4409 target/i386/nvmm: Inline cpu_physical_memory_rw() in nvmm_mem_callback 9a191d3782d cpus: clear exit_request in qemu_process_cpu_events f084ff128b6 accel: use atomic accesses for exit_request ac6c8a390b4 accel: use store_release/load_acquire for cross-thread exit_request 602d5ebba26 treewide: clear bits of cs->interrupt_request with cpu_reset_interrupt() 87511341c30 add cpu_test_interrupt()/cpu_set_interrupt() helpers and use them tree wide f96b157ebb9 Merge tag 'accel-20250715' of https://github.com/philmd/qemu into staging f7a7e7dd217 accel: Extract AccelClass definition to 'accel/accel-ops.h' d93972d88b0 target/i386: nvmm, whpx: add accel/CPU class that sets host vendor 51e18961999 accel: Propagate AccelState to AccelClass::init_machine() b6637bd5561 accel/nvmm: Expose nvmm_enabled() to common code > > Should we add a policy for bitrotting untested code? > >> (I'm currently trying to update test/vm/netbsd to version 10.1, that's >> how I noticed it) >> >> Thomas >> >
© 2016 - 2026 Red Hat, Inc.