Subject: Re: [PATCH v3 2/3] hvc_init(): Enforce one-time initialization.

From: Rusty Russell <[email-masked]>
Date: Fri, 11 Nov 2011 15:00:31 +1030

On Tue, 08 Nov 2011 13:45:04 -0800, Miche Baker-Harvey <[email-masked]> wrote:
> hvc_init() must only be called once, and no thread should continue with hvc_alloc()
> until after initialization is complete.  The original code does not enforce either
> of these requirements.  A new mutex limits entry to hvc_init() to a single thread,
> and blocks all later comers until it has completed.
> 
> This patch fixes multiple crash symptoms.

No, it doesn't: not now your previous double-hvc_init patch has been
reverted.

It's easy to show this is the case though: replace mutex_lock() with:

        if (!mutex_trylock()) {
                WARN(1, "hvc_console: mutex is stopping us!\n");
                mutex_lock();
        }

If you get that warning, then your mutex is doing something.

Thanks,
Rusty.