On Fri, 29 Aug 2025 14:33:57 +0200
Paolo Bonzini <pbonz...@redhat.com> wrote:

> On Fri, Aug 29, 2025 at 10:18 AM Paolo Bonzini <pbonz...@redhat.com> wrote:
> >
> > On 8/26/25 10:47, Igor Mammedov wrote:  
> > > While overhead might be issue, it's better to have correcteness 1st.
> > > (that's why blanket tree wide change to make sure we don't miss places 
> > > that
> > > set/test interrupts).  
> >
> > Looking more at it, I found at least one place that sets interrupts
> > without bql:
> >
> >      if (ctl_has_irq(env)) {
> >          cpu_set_interrupt(cs, CPU_INTERRUPT_VIRQ);
> >      }
> >
> > I'm going to squash this in:  
> 
> Rethinking about it - this can be a separate patch that also affects
> cpu_reset_interrupt(), as well as all cases where
> cpu_reset_interrupt() is open coded.

I can take care of replacing open coded cpu_reset_interrupt() cases
(I've already looked through them, while answering reviewers questions)

> 
> Paolo
> 
> > diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
> > index 1dee9d4c76e..5c3397fe108 100644
> > --- a/include/hw/core/cpu.h
> > +++ b/include/hw/core/cpu.h
> > @@ -959,12 +959,13 @@ static inline bool cpu_test_interrupt(CPUState *cpu, 
> > int mask)
> >    * @cpu: The CPU to set pending interrupt(s) on.
> >    * @mask: The interrupts to set.
> >    *
> > - * Sets interrupts in @mask as pending on @cpu.
> > + * Sets interrupts in @mask as pending on @cpu.  Unlike @cpu_interrupt,
> > + * this does not kick the vCPU.
> >    */
> >   static inline void cpu_set_interrupt(CPUState *cpu, int mask)
> >   {
> > -    qatomic_store_release(&cpu->interrupt_request,
> > -        cpu->interrupt_request | mask);
> > +    /* Pairs with cpu_test_interrupt(). */
> > +    qatomic_or(&cpu->interrupt_request, mask);
> >   }
> >
> >   /**
> >  
> 


Reply via email to