Re: [PATCH](retry 2) Re: invalidate caches before going intosuspend

From: Arjan van de Ven
Date: Wed Aug 13 2008 - 17:32:23 EST


On Wed, 13 Aug 2008 13:47:05 -0500
"Langsdorf, Mark" <mark.langsdorf@xxxxxxx> wrote:

> > Mark Langsdorf <mark.langsdorf@xxxxxxx> wrote:
> > > + /* mask all interrupts, flush any and all caches, and
> > > halt */
> > > + if (cpu_has_clflush)
> > > + wbinvd_halt();
> > > + else
> > > + while (1)
> > > + halt();
> > > }
> >
> > I like the asm version .. but this code makes me blink.
> > when you HAVE clflush you do wbinvd.
> > yeah I know it's correct but... it reads wonky ;)
>
> It's the most convenient symbol to test against. I
> suppose I should add a comment explaining it.
>
> > also.. can we move that check into the wbinvd_halt() itself, so that
> > the callers don't need to care what is used to select it ?
>
> irqflags.h doesn't guarantee the presence of boot_cpu_data,
> so I wasn't able to make that check cleanly. I could move
> the macro definition to process_??.c if that would better.
>

it makes sense; it's hardly a hotpath, and making it simple to use
correctly is generally best ;)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/