From: Tomas Winkler <tomas.winkler@intel.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Wim Van Sebroeck <wim@iguana.be>
Cc: Alexander Usyskin <alexander.usyskin@intel.com>,
Guenter Roeck <linux@roeck-us.net>,
linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org,
Tomas Winkler <tomas.winkler@intel.com>
Subject: [char-misc-next v3 8/8] watchdog: mei_wdt: re-register device on event
Date: Tue, 22 Dec 2015 01:18:01 +0200 [thread overview]
Message-ID: <1450739881-3923-9-git-send-email-tomas.winkler@intel.com> (raw)
In-Reply-To: <1450739881-3923-1-git-send-email-tomas.winkler@intel.com>
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 registers the watchdog device with the kernel.
Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
V2: rework un/registration in runtime
V2: rebase, runtime unregistration was moved to BDW patch.
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 88511ef68b67..93fb8ce80456 100644
--- a/drivers/watchdog/mei_wdt.c
+++ b/drivers/watchdog/mei_wdt.c
@@ -532,6 +532,21 @@ out:
complete(&wdt->response);
}
+/*
+ * mei_wdt_notify_event - callback for event notification
+ *
+ * @cldev: bus device
+ */
+static void mei_wdt_notify_event(struct mei_cl_device *cldev)
+{
+ struct mei_wdt *wdt = mei_cldev_get_drvdata(cldev);
+
+ if (wdt->state != MEI_WDT_NOT_REQUIRED)
+ return;
+ wdt->state = MEI_WDT_IDLE;
+ mei_wdt_register(wdt);
+}
+
/**
* mei_wdt_event - callback for event receive
*
@@ -544,6 +559,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_notify_event(cldev);
}
#if IS_ENABLED(CONFIG_DEBUG_FS)
@@ -658,9 +676,13 @@ static int mei_wdt_probe(struct mei_cl_device *cldev,
goto err_out;
}
- 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;
}
--
2.4.3
prev parent reply other threads:[~2015-12-21 23:19 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-21 23:17 [char-misc-next v3 0/8] mei: create proper iAMT watchdog driver Tomas Winkler
2015-12-21 23:17 ` [char-misc-next v3 1/8] mei: drop nfc leftovers from the mei driver Tomas Winkler
2015-12-21 23:17 ` [char-misc-next v3 2/8] mei: wd: drop the watchdog code from the core " Tomas Winkler
2015-12-21 23:17 ` [char-misc-next v3 3/8] watchdog: mei_wdt: implement MEI iAMT watchdog driver Tomas Winkler
2015-12-22 4:58 ` Guenter Roeck
2015-12-22 7:19 ` Winkler, Tomas
2015-12-22 7:40 ` Guenter Roeck
2015-12-23 22:38 ` Winkler, Tomas
2015-12-24 0:23 ` Guenter Roeck
2015-12-21 23:17 ` [char-misc-next v3 4/8] watchdog: mei_wdt: add status debugfs entry Tomas Winkler
2015-12-22 5:30 ` Guenter Roeck
2015-12-23 22:48 ` Winkler, Tomas
2015-12-24 0:25 ` Guenter Roeck
2015-12-21 23:17 ` [char-misc-next v3 5/8] mei: bus: whitelist the watchdog client Tomas Winkler
2015-12-21 23:17 ` [char-misc-next v3 6/8] watchdog: mei_wdt: register wd device only if required Tomas Winkler
2015-12-22 5:18 ` Guenter Roeck
2015-12-23 23:01 ` Winkler, Tomas
2015-12-21 23:18 ` [char-misc-next v3 7/8] watchdog: mei_wdt: add activation debugfs entry Tomas Winkler
2015-12-21 23:18 ` Tomas Winkler [this message]
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=1450739881-3923-9-git-send-email-tomas.winkler@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®