Re: [PATCH 07/19] LoongArch: Add process management

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, Arnd,

On Thu, Aug 12, 2021 at 8:30 PM Arnd Bergmann <arnd@xxxxxxxx> wrote:
>
> On Thu, Aug 12, 2021 at 1:17 PM Huacai Chen <chenhuacai@xxxxxxxxx> wrote:
> > On Tue, Jul 6, 2021 at 7:09 PM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> > >
> > > On Tue, Jul 06, 2021 at 12:16:37PM +0200, Arnd Bergmann wrote:
> > > > On Tue, Jul 6, 2021 at 6:18 AM Huacai Chen <chenhuacai@xxxxxxxxxxx> wrote:
> > > >
> > > > > +void arch_cpu_idle(void)
> > > > > +{
> > > > > +       local_irq_enable();
> > > > > +       __arch_cpu_idle();
> > > > > +}
> > > >
> > > > This looks racy: What happens if an interrupt is pending and hits before
> > > > entering __arch_cpu_idle()?
> > >
> > > They fix it up in their interrupt handler by moving the IP over the
> > > actual IDLE instruction..
> > >
> > > Still the above is broken in that local_irq_enable() will have all sorts
> > > of tracing, but RCU is disabled at this point, so it is still very much
> > > broken.
> > This is a sad story, the idle instruction cannot execute with irq
> > disabled, we can only copy ugly code from MIPS.
>
> Maybe you can avoid that tracing problem if you move the irq-enable
> and subsequent need_resched() check into the assembler code.
>
> Another option would be to have the actual idle logic implemented
> in firmware that runs at a higher privilege level and provides a
> hypercall interface to the kernel with the normal behavior (
> enter with irq disabled, wait until irq).
We have some problems with trace options enabled before, but it seems
some problems disappear after we refactor the irq/syscall code by
using generic entry code. :)

Huacai.
>
>        Arnd



[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux