All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@kernel.dk>
To: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>,
	LKML <linux-kernel@vger.kernel.org>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Len Brown <lenb@kernel.org>,
	inux-pm@vger.kernel.org
Subject: Re: Bug: d0e936adbd22 crashes at boot
Date: Fri, 3 Sep 2021 09:00:33 -0600	[thread overview]
Message-ID: <767fe00f-bf31-1eb0-09cc-1be91c633bb4@kernel.dk> (raw)
In-Reply-To: <7f115f0476618d34b24ddec772acbbd7c0c4a572.camel@linux.intel.com>

On 9/3/21 8:38 AM, Srinivas Pandruvada wrote:
> On Fri, 2021-09-03 at 08:15 -0600, Jens Axboe wrote:
>> On 9/3/21 8:13 AM, Srinivas Pandruvada wrote:
>>> Hi Axboe,
>>>
>>> Thanks for reporting.
>>> On Fri, 2021-09-03 at 07:36 -0600, Jens Axboe wrote:
>>>> Hi,
>>>>
>>>> Booting Linus's tree causes a crash on my laptop, an x1 gen9. This
>>>> was
>>>> a bit
>>>> difficult to pin down as it crashes before the display is up, but I
>>>> managed
>>>> to narrow it down to:
>>>>
>>>> commit d0e936adbd2250cb03f2e840c6651d18edc22ace
>>>> Author: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
>>>> Date:   Thu Aug 19 19:40:06 2021 -0700
>>>>
>>>>     cpufreq: intel_pstate: Process HWP Guaranteed change
>>>> notification
>>>>
>>>> which crashes with a NULL pointer deref in notify_hwp_interrupt() -
>>>>>
>>>> queue_delayed_work_on().
>>>>
>>>> Reverting this change makes the laptop boot fine again.
>>>>
>>> Does this change fixes your issue?
>>
>> I would assume so, as it's crashing on cpudata == NULL :-)
>>
>> But why is it NULL? Happy to test patches, but the below doesn't look
>> like
>> a real fix and more of a work-around.
> 
> This platform is sending an HWP interrupt on a CPU which we didn't yet
> bring it up for pstate control. So somehow firmware decided to send
> very early during boot, which previously we would have ignored it
> 
> Actually try this, with more prevention

I can give this a whirl.

> diff --git a/drivers/cpufreq/intel_pstate.c
> b/drivers/cpufreq/intel_pstate.c
> index b4ffe6c8a0d0..6ee88d7640ea 100644
> --- a/drivers/cpufreq/intel_pstate.c
> +++ b/drivers/cpufreq/intel_pstate.c
> @@ -1645,12 +1645,24 @@ void notify_hwp_interrupt(void)
>         if (!hwp_active || !boot_cpu_has(X86_FEATURE_HWP_NOTIFY))
>                 return;
>  
> -       rdmsrl(MSR_HWP_STATUS, value);
> +       rdmsrl_safe(MSR_HWP_STATUS, &value);
>         if (!(value & 0x01))
>                 return;
>  
> +       /*
> +        * After hwp_active is set and all_cpu_data is allocated, there
> +        * is small window.
> +        */
> +       if (!all_cpu_data) {
> +               wrmsrl_safe(MSR_HWP_STATUS, 0);
> +               return;
> +       }

What synchronizes the all_cpu_data setup and the interrupt? Can the
interrupt come in while it's still being setup?

-- 
Jens Axboe


  reply	other threads:[~2021-09-03 15:00 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-03 13:36 Bug: d0e936adbd22 crashes at boot Jens Axboe
2021-09-03 14:13 ` Srinivas Pandruvada
2021-09-03 14:15   ` Jens Axboe
2021-09-03 14:38     ` Srinivas Pandruvada
2021-09-03 15:00       ` Jens Axboe [this message]
2021-09-03 15:11         ` Srinivas Pandruvada
2021-09-03 18:00         ` Srinivas Pandruvada
2021-09-03 20:41           ` Jens Axboe
2021-09-03 20:57             ` Jens Axboe
2021-09-03 22:38               ` Srinivas Pandruvada

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=767fe00f-bf31-1eb0-09cc-1be91c633bb4@kernel.dk \
    --to=axboe@kernel.dk \
    --cc=inux-pm@vger.kernel.org \
    --cc=lenb@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=srinivas.pandruvada@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.