All of lore.kernel.org
 help / color / mirror / Atom feed
From: Prashant Malani <pmalani@chromium.org>
To: Daniil Lunev <dlunev@chromium.org>
Cc: Enric Balletbo i Serra <enric.balletbo@collabora.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Benson Leung <bleung@chromium.org>,
	Guenter Roeck <groeck@chromium.org>
Subject: Re: [PATCH] platform/chrome: cros_ec_typec: Handle NULL EC pointer during probe.
Date: Thu, 30 Apr 2020 17:56:09 -0700	[thread overview]
Message-ID: <20200501005609.GA131713@google.com> (raw)
In-Reply-To: <CAONX=-cR0H2zrGEunwq2k3g+d=9asmeu39ssFN31yFs6i-wktQ@mail.gmail.com>

Hi Daniil,

On Fri, May 01, 2020 at 10:15:18AM +1000, Daniil Lunev wrote:
> On the official revision of coreboot for hatch it doesn't even try to
> load Type C. However it gives some warning messages from
> cros-usbpd-notify-acpi about EC, So I wonder why the check of the same
> type is not appropriate in the typec driver?

I think the difference is that GOOG0003 is already present on shipped /
official versions of coreboot (so not having that check can cause
existing release images/devices to crash), whereas for GOOG0014 that is / isn't the case.

Is GOOG0014 present on the official release coreboot image for this
device? If so, what's its path (/sys/bus/acpi/devices/<HID>/path) ?

Best regards,

-Prashant
> 
> ../chrome/cros_usbpd_notify.c
> 
> /* Get the EC device pointer needed to talk to the EC. */
> ec_dev = dev_get_drvdata(dev->parent);
> if (!ec_dev) {
> /*
> * We continue even for older devices which don't have the
> * correct device heirarchy, namely, GOOG0003 is a child
> * of GOOG0004.
> */
> dev_warn(dev, "Couldn't get Chrome EC device pointer.\n");
> }
> 
> 
> # dmesg
> ...
> [    8.513351] cros-ec-spi spi-PRP0001:02: EC failed to respond in time
> [    8.722072] cros-ec-spi spi-PRP0001:02: EC failed to respond in time
> [    8.729271] cros-ec-spi spi-PRP0001:02: Cannot identify the EC: error -110
> [    8.736966] cros-ec-spi spi-PRP0001:02: cannot register EC,
> fallback to spidev
> [    8.767017] cros_ec_lpcs GOOG0004:00: Chrome EC device registered
> [    8.807537] cros-usbpd-notify-acpi GOOG0003:00: Couldn't get Chrome
> EC device pointer.
> ...
> 
> On Fri, May 1, 2020 at 2:17 AM Prashant Malani <pmalani@chromium.org> wrote:
> >
> > Hi Enric,
> >
> > On Thu, Apr 30, 2020 at 8:26 AM Enric Balletbo i Serra
> > <enric.balletbo@collabora.com> wrote:
> > >
> > > Hi Prashant,
> > >
> > > On 30/4/20 2:43, Prashant Malani wrote:
> > > > On Wed, Apr 29, 2020 at 5:38 PM Daniil Lunev <dlunev@chromium.org> wrote:
> > > >>
> > > >> [to make it appear on the mailing list as I didn't realize I was in
> > > >> hypertext sending mode]
> > > >>
> > > >> On Thu, Apr 30, 2020 at 10:11 AM Daniil Lunev <dlunev@chromium.org> wrote:
> > > >>>
> > > >>> Hi Enric.
> > > >>> I encountered the issue on a Hatch device when trying running 5.4 kernel on that. After talking to Prashant it seems that any device with coreboot built before a certain point (a particular fix for device hierarchy in ACPI tables of Chrome devices which happened in mid-April) will not be able to correctly initialize the driver and will get a kernel panic trying to do so.
> > > >
> > > > A clarifying detail here: This should not be seen in any current
> > > > *production* device. No prod device firmware will carry the erroneous
> > > > ACPI device entry.
> > > >
> > >
> > > Thanks for the clarification. Then, I don't think we need to upstream this. This
> > > kind of "defensive-programming" it's not something that should matter to upstream.
> >
> > Actually, on second thought, I am not 100% sure about this:
> > Daniil, is the erroneous ACPI device on a *production* firmware for
> > this device (I'm not sure about the vintage of that device's BIOS)?
> >
> > My apologies for the confusion, Enric and Daniil; but would be good to
> > get clarification from Daniil.
> >
> > Best regards,
> > >
> > > Thanks,
> > >  Enric
> > >
> > >
> > > >>> Thanks,
> > > >>> Daniil
> > > >>>
> > > >>> On Thu, Apr 30, 2020 at 7:58 AM Enric Balletbo i Serra <enric.balletbo@collabora.com> wrote:
> > > >>>>
> > > >>>> Hi Daniil,
> > > >>>>
> > > >>>> Thank you for the patch.
> > > >>>>
> > > >>>> On 28/4/20 3:02, Daniil Lunev wrote:
> > > >>>>> Missing EC in device hierarchy causes NULL pointer to be returned to the
> > > >>>>> probe function which leads to NULL pointer dereference when trying to
> > > >>>>> send a command to the EC. This can be the case if the device is missing
> > > >>>>> or incorrectly configured in the firmware blob. Even if the situation
> > > >>>>
> > > >>>> There is any production device with a buggy firmware outside? Or this is just
> > > >>>> for defensive programming while developing the firmware? Which device is
> > > >>>> affected for this issue?
> > > >>>>
> > > >>>> Thanks,
> > > >>>>  Enric
> > > >>>>
> > > >>>>> occures, the driver shall not cause a kernel panic as the condition is
> > > >>>>> not critical for the system functions.
> > > >>>>>
> > > >>>>> Signed-off-by: Daniil Lunev <dlunev@chromium.org>
> > > >>>>> ---
> > > >>>>>
> > > >>>>>  drivers/platform/chrome/cros_ec_typec.c | 5 +++++
> > > >>>>>  1 file changed, 5 insertions(+)
> > > >>>>>
> > > >>>>> diff --git a/drivers/platform/chrome/cros_ec_typec.c b/drivers/platform/chrome/cros_ec_typec.c
> > > >>>>> index 874269c07073..30d99c930445 100644
> > > >>>>> --- a/drivers/platform/chrome/cros_ec_typec.c
> > > >>>>> +++ b/drivers/platform/chrome/cros_ec_typec.c
> > > >>>>> @@ -301,6 +301,11 @@ static int cros_typec_probe(struct platform_device *pdev)
> > > >>>>>
> > > >>>>>       typec->dev = dev;
> > > >>>>>       typec->ec = dev_get_drvdata(pdev->dev.parent);
> > > >>>>> +     if (!typec->ec) {
> > > >>>>> +             dev_err(dev, "Failed to get Cros EC data\n");
> > > >>>>> +             return -EINVAL;
> > > >>>>> +     }
> > > >>>>> +
> > > >>>>>       platform_set_drvdata(pdev, typec);
> > > >>>>>
> > > >>>>>       ret = cros_typec_get_cmd_version(typec);
> > > >>>>>

  reply	other threads:[~2020-05-01  0:56 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-28  1:02 [PATCH] platform/chrome: cros_ec_typec: Handle NULL EC pointer during probe Daniil Lunev
2020-04-29 21:58 ` Enric Balletbo i Serra
     [not found]   ` <CAONX=-dLVBpz+p1si4cWGHEmQ_toO8kW=fCPcdUuX2KLc-o=2A@mail.gmail.com>
2020-04-30  0:38     ` Daniil Lunev
2020-04-30  0:43       ` Prashant Malani
2020-04-30 15:26         ` Enric Balletbo i Serra
2020-04-30 16:17           ` Prashant Malani
2020-05-01  0:15             ` Daniil Lunev
2020-05-01  0:56               ` Prashant Malani [this message]
2020-05-01  3:22                 ` Daniil Lunev
2020-05-05 20:36                   ` Enric Balletbo i Serra

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=20200501005609.GA131713@google.com \
    --to=pmalani@chromium.org \
    --cc=bleung@chromium.org \
    --cc=dlunev@chromium.org \
    --cc=enric.balletbo@collabora.com \
    --cc=groeck@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    /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.