From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Tomas Winkler <tomas.winkler@intel.com>
Cc: Alexander Usyskin <alexander.usyskin@intel.com>,
linux-kernel@vger.kernel.org
Subject: Re: [char-misc-next V3] mei: send OS type to the FW
Date: Thu, 10 Nov 2016 16:32:30 +0100 [thread overview]
Message-ID: <20161110153230.GA17137@kroah.com> (raw)
In-Reply-To: <1478794056-18945-1-git-send-email-tomas.winkler@intel.com>
On Thu, Nov 10, 2016 at 06:07:36PM +0200, Tomas Winkler wrote:
> From: Alexander Usyskin <alexander.usyskin@intel.com>
>
> Tell the FW that we are running a sane OS and TPM2_ChangeEPS()
> is supported. This workaround was added to support other broken OS
> and we need to follow here. The command is sent just once at the boot time.
>
> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
> Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
> ---
> V2: 1. Use endain annotation
> 2. Drop bitfields
> 3. Drop trace dev_dbg out from the hook function
> 4. Add error code to failure info message
> V3: mkhi header structure should be __packed
>
> drivers/misc/mei/bus-fixup.c | 95 ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 95 insertions(+)
>
> diff --git a/drivers/misc/mei/bus-fixup.c b/drivers/misc/mei/bus-fixup.c
> index 9e10d86e3887..a9226d809b17 100644
> --- a/drivers/misc/mei/bus-fixup.c
> +++ b/drivers/misc/mei/bus-fixup.c
> @@ -38,6 +38,9 @@ static const uuid_le mei_nfc_info_guid = MEI_UUID_NFC_INFO;
> #define MEI_UUID_WD UUID_LE(0x05B79A6F, 0x4628, 0x4D7F, \
> 0x89, 0x9D, 0xA9, 0x15, 0x14, 0xCB, 0x32, 0xAB)
>
> +#define MEI_UUID_MKHIF_FIX UUID_LE(0x55213584, 0x9a29, 0x4916, \
> + 0xba, 0xdf, 0xf, 0xb7, 0xed, 0x68, 0x2a, 0xeb)
> +
> #define MEI_UUID_ANY NULL_UUID_LE
>
> /**
> @@ -69,6 +72,97 @@ static void blacklist(struct mei_cl_device *cldev)
> cldev->do_match = 0;
> }
>
> +#define OSTYPE_LINUX 2
> +struct mei_os_ver {
> + __le16 build;
> + __le16 reserved1;
> + u8 os_type;
> + u8 major;
> + u8 minor;
> + u8 reserved2;
> +} __packed;
> +
> +#define MKHI_FEATURE_PTT 0x10
> +
> +struct mkhi_rule_id {
> + __le16 rule_type;
> + u8 feature_id;
> + u8 reserved;
> +} __packed;
> +
> +struct mkhi_fwcaps {
> + struct mkhi_rule_id id;
> + u8 len;
> + u8 data[0];
> +} __packed;
> +
> +#define MKHI_FWCAPS_GROUP_ID 0x3
> +#define MKHI_FWCAPS_SET_OS_VER_APP_RULE_CMD 6
> +struct mkhi_msg_hdr {
> + u8 group_id;
> + u8 command;
> + u8 reserved;
> + u8 result;
> +} __packed;
> +
> +struct mkhi_msg {
> + struct mkhi_msg_hdr hdr;
> + u8 data[0];
> +} __packed;
> +
> +static int mei_osver(struct mei_cl_device *cldev)
> +{
> + int ret;
> + const size_t size = sizeof(struct mkhi_msg_hdr) +
> + sizeof(struct mkhi_fwcaps) +
> + sizeof(struct mei_os_ver);
> + size_t length = 8;
> + char buf[size];
> + struct mkhi_msg *req;
> + struct mkhi_fwcaps *fwcaps;
> + struct mei_os_ver *os_ver;
> + unsigned int mode = MEI_CL_IO_TX_BLOCKING | MEI_CL_IO_TX_INTERNAL;
> +
> + memset(buf, 0, size);
> +
> + req = (struct mkhi_msg *)buf;
> + req->hdr.group_id = MKHI_FWCAPS_GROUP_ID;
> + req->hdr.command = MKHI_FWCAPS_SET_OS_VER_APP_RULE_CMD;
> +
> + fwcaps = (struct mkhi_fwcaps *)req->data;
> +
> + fwcaps->id.rule_type = 0x0;
> + fwcaps->id.feature_id = MKHI_FEATURE_PTT;
> + fwcaps->len = sizeof(*os_ver);
> + os_ver = (struct mei_os_ver *)fwcaps->data;
> + os_ver->os_type = OSTYPE_LINUX;
> +
> + ret = __mei_cl_send(cldev->cl, buf, size, mode);
> + if (ret < 0)
> + return ret;
> +
> + ret = __mei_cl_recv(cldev->cl, buf, length);
> + if (ret < 0)
> + return ret;
> +
> + return 0;
> +}
> +
> +static void mei_mkhi_fix(struct mei_cl_device *cldev)
> +{
> + int ret;
> +
> + ret = mei_cldev_enable(cldev);
> + if (ret)
> + return;
> +
> + ret = mei_osver(cldev);
> + if (ret)
> + dev_info(&cldev->dev, "OS version command failed %d\n", ret);
It's an error, make it dev_err() please.
prev parent reply other threads:[~2016-11-10 15:32 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-10 16:07 [char-misc-next V3] mei: send OS type to the FW Tomas Winkler
2016-11-10 15:32 ` Greg Kroah-Hartman [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=20161110153230.GA17137@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=alexander.usyskin@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=tomas.winkler@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.