From: "Winkler, Tomas" <tomas.winkler@intel.com>
To: "linux@roeck-us.net" <linux@roeck-us.net>,
"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
"wim@iguana.be" <wim@iguana.be>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Usyskin, Alexander" <alexander.usyskin@intel.com>,
"linux-watchdog@vger.kernel.org" <linux-watchdog@vger.kernel.org>
Subject: Re: [char-misc-next 6/6] mei: wd: re-register device on event
Date: Tue, 1 Dec 2015 11:59:38 +0000 [thread overview]
Message-ID: <1448971132.30677.20.camel@intel.com> (raw)
In-Reply-To: <565C8281.9070909@roeck-us.net>
On Mon, 2015-11-30 at 09:08 -0800, Guenter Roeck wrote:
> On 11/26/2015 04:31 AM, Tomas Winkler wrote:
> > From: Alexander Usyskin <alexander.usyskin@intel.com>
> >
> > For Intel SKL platform the ME device can inform the host via
> > asynchronous notification that the watchdog feature was activated
> > on the
> > device. The activation doesn't require reboot.
> > In that case the driver register the watchdog device with the
> > kernel.
> >
>
> Can the watchdog device also be disabled on the fly ?
Yes, it can be disabled also on the fly, but this is not delivered via
an event, this is handled via ping return value.
>
> > Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
> > Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
> > ---
> > drivers/watchdog/mei_wdt.c | 26 ++++++++++++++++++++++++--
> > 1 file changed, 24 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/watchdog/mei_wdt.c
> > b/drivers/watchdog/mei_wdt.c
> > index 47f0dc2e822a..ee3b5d12b1b2 100644
> > --- a/drivers/watchdog/mei_wdt.c
> > +++ b/drivers/watchdog/mei_wdt.c
> > @@ -279,6 +279,21 @@ out:
> > complete(&wdt->response);
> > }
> >
> > +/*
> > + * mei_wdt_event_notif - callback for notification
> > + *
> > + * @cldev: bus device
> > + */
> > +static void mei_wdt_event_notif(struct mei_cl_device *cldev)
> > +{
> > + struct mei_wdt *wdt = mei_cldev_get_drvdata(cldev);
> > +
> > + if (wdt->state == MEI_WDT_NOT_REQUIRED) {
> > + mei_wdt_register(wdt);
> > + wdt->state = MEI_WDT_IDLE;
> > + }
> > +}
> > +
> > /**
> > * mei_wdt_event - callback for event receive
> > *
> > @@ -291,6 +306,9 @@ static void mei_wdt_event(struct mei_cl_device
> > *cldev,
> > {
> > if (events & BIT(MEI_CL_EVENT_RX))
> > mei_wdt_event_rx(cldev);
> > +
> > + if (events & BIT(MEI_CL_EVENT_NOTIF))
> > + mei_wdt_event_notif(cldev);
> > }
> >
> > /**
> > @@ -466,9 +484,13 @@ static int mei_wdt_probe(struct mei_cl_device
> > *cldev,
> >
> > wd_info.firmware_version = mei_cldev_ver(cldev);
> >
> > - ret = mei_cldev_register_event_cb(wdt->cldev,
> > BIT(MEI_CL_EVENT_RX),
> > + ret = mei_cldev_register_event_cb(wdt->cldev,
> > + BIT(MEI_CL_EVENT_RX) |
> > + BIT(MEI_CL_EVENT_NOTIF),
> > mei_wdt_event, NULL);
> > - if (ret) {
> > +
> > + /* on legacy devices notification is not supported */
> > + if (ret && ret != -EOPNOTSUPP) {
> > dev_err(&cldev->dev, "Could not register event
> > ret=%d\n", ret);
> > goto err_disable;
> > }
> >
> Doesn't that mean, though, that the RX event is not registered
> either,
> even if it is supported ? If so, should you retry and register only
> MEI_CL_EVENT_RX ?
The code is correct but we definitely need to think of better API
Tomas
WARNING: multiple messages have this Message-ID (diff)
From: "Winkler, Tomas" <tomas.winkler@intel.com>
To: "linux@roeck-us.net" <linux@roeck-us.net>,
"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
"wim@iguana.be" <wim@iguana.be>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Usyskin, Alexander" <alexander.usyskin@intel.com>,
"linux-watchdog@vger.kernel.org" <linux-watchdog@vger.kernel.org>
Subject: Re: [char-misc-next 6/6] mei: wd: re-register device on event
Date: Tue, 1 Dec 2015 11:59:38 +0000 [thread overview]
Message-ID: <1448971132.30677.20.camel@intel.com> (raw)
In-Reply-To: <565C8281.9070909@roeck-us.net>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="utf-8", Size: 2907 bytes --]
On Mon, 2015-11-30 at 09:08 -0800, Guenter Roeck wrote:
> On 11/26/2015 04:31 AM, Tomas Winkler wrote:
> > From: Alexander Usyskin <alexander.usyskin@intel.com>
> >
> > For Intel SKL platform the ME device can inform the host via
> > asynchronous notification that the watchdog feature was activated
> > on the
> > device. The activation doesn't require reboot.
> > In that case the driver register the watchdog device with the
> > kernel.
> >
>
> Can the watchdog device also be disabled on the fly ?
Yes, it can be disabled also on the fly, but this is not delivered via
an event, this is handled via ping return value.
>
> > Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
> > Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
> > ---
> > drivers/watchdog/mei_wdt.c | 26 ++++++++++++++++++++++++--
> > 1 file changed, 24 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/watchdog/mei_wdt.c
> > b/drivers/watchdog/mei_wdt.c
> > index 47f0dc2e822a..ee3b5d12b1b2 100644
> > --- a/drivers/watchdog/mei_wdt.c
> > +++ b/drivers/watchdog/mei_wdt.c
> > @@ -279,6 +279,21 @@ out:
> > complete(&wdt->response);
> > }
> >
> > +/*
> > + * mei_wdt_event_notif - callback for notification
> > + *
> > + * @cldev: bus device
> > + */
> > +static void mei_wdt_event_notif(struct mei_cl_device *cldev)
> > +{
> > + struct mei_wdt *wdt = mei_cldev_get_drvdata(cldev);
> > +
> > + if (wdt->state == MEI_WDT_NOT_REQUIRED) {
> > + mei_wdt_register(wdt);
> > + wdt->state = MEI_WDT_IDLE;
> > + }
> > +}
> > +
> > /**
> > * mei_wdt_event - callback for event receive
> > *
> > @@ -291,6 +306,9 @@ static void mei_wdt_event(struct mei_cl_device
> > *cldev,
> > {
> > if (events & BIT(MEI_CL_EVENT_RX))
> > mei_wdt_event_rx(cldev);
> > +
> > + if (events & BIT(MEI_CL_EVENT_NOTIF))
> > + mei_wdt_event_notif(cldev);
> > }
> >
> > /**
> > @@ -466,9 +484,13 @@ static int mei_wdt_probe(struct mei_cl_device
> > *cldev,
> >
> > wd_info.firmware_version = mei_cldev_ver(cldev);
> >
> > - ret = mei_cldev_register_event_cb(wdt->cldev,
> > BIT(MEI_CL_EVENT_RX),
> > + ret = mei_cldev_register_event_cb(wdt->cldev,
> > + BIT(MEI_CL_EVENT_RX) |
> > + BIT(MEI_CL_EVENT_NOTIF),
> > mei_wdt_event, NULL);
> > - if (ret) {
> > +
> > + /* on legacy devices notification is not supported */
> > + if (ret && ret != -EOPNOTSUPP) {
> > dev_err(&cldev->dev, "Could not register event
> > ret=%d\n", ret);
> > goto err_disable;
> > }
> >
> Doesn't that mean, though, that the RX event is not registered
> either,
> even if it is supported ? If so, should you retry and register only
> MEI_CL_EVENT_RX ?
The code is correct but we definitely need to think of better API
Tomas
ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥
next prev parent reply other threads:[~2015-12-01 11:59 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-26 12:31 [char-misc-next 0/6] mei: create proper iAMT watchdog driver Tomas Winkler
2015-11-26 12:31 ` [char-misc-next 1/6] mei: drop nfc leftovers from the mei driver Tomas Winkler
2015-11-26 12:31 ` [char-misc-next 2/6] mei: wd: drop the watchdog code from the core " Tomas Winkler
2015-11-26 12:31 ` [char-misc-next 3/6] mei: wd: implement MEI iAMT watchdog driver Tomas Winkler
2015-11-30 16:55 ` Guenter Roeck
2015-12-01 11:55 ` Winkler, Tomas
2015-12-01 11:55 ` Winkler, Tomas
2015-12-01 16:02 ` Guenter Roeck
2015-12-02 7:41 ` Winkler, Tomas
2015-12-02 7:41 ` Winkler, Tomas
2015-11-26 12:31 ` [char-misc-next 4/6] mei: bus: whitelist the watchdog client Tomas Winkler
2015-11-26 12:31 ` [char-misc-next 5/6] mei: wd: register wd device only if required Tomas Winkler
2015-11-26 12:31 ` [char-misc-next 6/6] mei: wd: re-register device on event Tomas Winkler
2015-11-30 17:08 ` Guenter Roeck
2015-12-01 11:59 ` Winkler, Tomas [this message]
2015-12-01 11:59 ` Winkler, Tomas
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=1448971132.30677.20.camel@intel.com \
--to=tomas.winkler@intel.com \
--cc=alexander.usyskin@intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=wim@iguana.be \
/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.