* [char-misc-next 1/4] mei: log firmware status on hw_start failure.
@ 2023-07-16 8:10 Tomas Winkler
2023-07-16 8:10 ` [char-misc-next 2/4] mei: bus: enable asynchronous suspend Tomas Winkler
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Tomas Winkler @ 2023-07-16 8:10 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: Alexander Usyskin, Vitaly Lubart, linux-kernel, Tomas Winkler
From: Alexander Usyskin <alexander.usyskin@intel.com>
In order to extend debug information log firmware status details
when waiting for firmware ready status fails.
Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
drivers/misc/mei/init.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/misc/mei/init.c b/drivers/misc/mei/init.c
index bac8852aad510b9fb6459001..5cc75a3314a6482e64a1c809 100644
--- a/drivers/misc/mei/init.c
+++ b/drivers/misc/mei/init.c
@@ -157,7 +157,10 @@ int mei_reset(struct mei_device *dev)
ret = mei_hw_start(dev);
if (ret) {
- dev_err(dev->dev, "hw_start failed ret = %d\n", ret);
+ char fw_sts_str[MEI_FW_STATUS_STR_SZ];
+
+ mei_fw_status_str(dev, fw_sts_str, MEI_FW_STATUS_STR_SZ);
+ dev_err(dev->dev, "hw_start failed ret = %d fw status = %s\n", ret, fw_sts_str);
return ret;
}
--
2.41.0
^ permalink raw reply [flat|nested] 4+ messages in thread* [char-misc-next 2/4] mei: bus: enable asynchronous suspend. 2023-07-16 8:10 [char-misc-next 1/4] mei: log firmware status on hw_start failure Tomas Winkler @ 2023-07-16 8:10 ` Tomas Winkler 2023-07-16 8:10 ` [char-misc-next 3/4] mei: obtain firmware version only on gsc Tomas Winkler 2023-07-16 8:10 ` [char-misc-next 4/4] mei: gsc: add module description Tomas Winkler 2 siblings, 0 replies; 4+ messages in thread From: Tomas Winkler @ 2023-07-16 8:10 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Alexander Usyskin, Vitaly Lubart, linux-kernel, Tomas Winkler From: Alexander Usyskin <alexander.usyskin@intel.com> Enable asynchronous suspend for devices on MEI bus, required for gsc. Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> --- drivers/misc/mei/bus.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/misc/mei/bus.c b/drivers/misc/mei/bus.c index 33ec6424dfee25aacd862fd0..2e65ce6bdec7d9c561ccd2c8 100644 --- a/drivers/misc/mei/bus.c +++ b/drivers/misc/mei/bus.c @@ -1329,6 +1329,7 @@ static struct mei_cl_device *mei_cl_bus_dev_alloc(struct mei_device *bus, mei_cl_bus_set_name(cldev); cldev->is_added = 0; INIT_LIST_HEAD(&cldev->bus_list); + device_enable_async_suspend(&cldev->dev); return cldev; } -- 2.41.0 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [char-misc-next 3/4] mei: obtain firmware version only on gsc. 2023-07-16 8:10 [char-misc-next 1/4] mei: log firmware status on hw_start failure Tomas Winkler 2023-07-16 8:10 ` [char-misc-next 2/4] mei: bus: enable asynchronous suspend Tomas Winkler @ 2023-07-16 8:10 ` Tomas Winkler 2023-07-16 8:10 ` [char-misc-next 4/4] mei: gsc: add module description Tomas Winkler 2 siblings, 0 replies; 4+ messages in thread From: Tomas Winkler @ 2023-07-16 8:10 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Alexander Usyskin, Vitaly Lubart, linux-kernel, Tomas Winkler From: Alexander Usyskin <alexander.usyskin@intel.com> Modern GSC firmwares have both static and dynamic MKHI clients. Avoid expensive dynamic client call for firmware version retrieval, in case the firmware version is already retrieved from the fix address client in bus_fixup(). Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> --- drivers/misc/mei/bus-fixup.c | 10 +++++++--- drivers/misc/mei/init.c | 3 +++ drivers/misc/mei/mei_dev.h | 2 ++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/misc/mei/bus-fixup.c b/drivers/misc/mei/bus-fixup.c index b8b716faf1921914fad9fcc7..2733070acf39eabfd606da38 100644 --- a/drivers/misc/mei/bus-fixup.c +++ b/drivers/misc/mei/bus-fixup.c @@ -184,6 +184,7 @@ static int mei_fwver(struct mei_cl_device *cldev) cldev->bus->fw_ver[i].hotfix = fwver->ver[i].hotfix; cldev->bus->fw_ver[i].buildno = fwver->ver[i].buildno; } + cldev->bus->fw_ver_received = 1; return ret; } @@ -237,8 +238,11 @@ static void mei_gsc_mkhi_ver(struct mei_cl_device *cldev) { int ret; - /* No need to enable the client if nothing is needed from it */ - if (!cldev->bus->fw_f_fw_ver_supported) + /* + * No need to enable the client if nothing is needed from it. + * No need to fill in version if it is already filled in by the fix address client. + */ + if (!cldev->bus->fw_f_fw_ver_supported || cldev->bus->fw_ver_received) return; ret = mei_cldev_enable(cldev); @@ -555,8 +559,8 @@ static struct mei_fixup { MEI_FIXUP(MEI_UUID_NFC_HCI, mei_nfc), MEI_FIXUP(MEI_UUID_WD, mei_wd), MEI_FIXUP(MEI_UUID_MKHIF_FIX, mei_mkhi_fix), - MEI_FIXUP(MEI_UUID_IGSC_MKHI, mei_gsc_mkhi_ver), MEI_FIXUP(MEI_UUID_IGSC_MKHI_FIX, mei_gsc_mkhi_fix_ver), + MEI_FIXUP(MEI_UUID_IGSC_MKHI, mei_gsc_mkhi_ver), MEI_FIXUP(MEI_UUID_HDCP, whitelist), MEI_FIXUP(MEI_UUID_ANY, vt_support), MEI_FIXUP(MEI_UUID_PAVP, pxp_is_ready), diff --git a/drivers/misc/mei/init.c b/drivers/misc/mei/init.c index 5cc75a3314a6482e64a1c809..c35e005b26be4fb81f7d0748 100644 --- a/drivers/misc/mei/init.c +++ b/drivers/misc/mei/init.c @@ -142,6 +142,9 @@ int mei_reset(struct mei_device *dev) mei_hbm_reset(dev); + /* clean stale FW version */ + dev->fw_ver_received = 0; + memset(dev->rd_msg_hdr, 0, sizeof(dev->rd_msg_hdr)); if (ret) { diff --git a/drivers/misc/mei/mei_dev.h b/drivers/misc/mei/mei_dev.h index 895011b7a0bfa223a5e97403..cdf8a2edf0b32b7dd6a0af53 100644 --- a/drivers/misc/mei/mei_dev.h +++ b/drivers/misc/mei/mei_dev.h @@ -512,6 +512,7 @@ struct mei_dev_timeouts { * @fw_ver : FW versions * * @fw_f_fw_ver_supported : fw feature: fw version supported + * @fw_ver_received : fw version received * * @me_clients_rwsem: rw lock over me_clients list * @me_clients : list of FW clients @@ -604,6 +605,7 @@ struct mei_device { struct mei_fw_version fw_ver[MEI_MAX_FW_VER_BLOCKS]; unsigned int fw_f_fw_ver_supported:1; + unsigned int fw_ver_received:1; struct rw_semaphore me_clients_rwsem; struct list_head me_clients; -- 2.41.0 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [char-misc-next 4/4] mei: gsc: add module description 2023-07-16 8:10 [char-misc-next 1/4] mei: log firmware status on hw_start failure Tomas Winkler 2023-07-16 8:10 ` [char-misc-next 2/4] mei: bus: enable asynchronous suspend Tomas Winkler 2023-07-16 8:10 ` [char-misc-next 3/4] mei: obtain firmware version only on gsc Tomas Winkler @ 2023-07-16 8:10 ` Tomas Winkler 2 siblings, 0 replies; 4+ messages in thread From: Tomas Winkler @ 2023-07-16 8:10 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Alexander Usyskin, Vitaly Lubart, linux-kernel, Tomas Winkler For completeness add gsc module description. Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> --- drivers/misc/mei/gsc-me.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/misc/mei/gsc-me.c b/drivers/misc/mei/gsc-me.c index e63cabd0818dc9fdd00312fa..ed9b421e82d6994b84953379 100644 --- a/drivers/misc/mei/gsc-me.c +++ b/drivers/misc/mei/gsc-me.c @@ -312,4 +312,5 @@ module_auxiliary_driver(mei_gsc_driver); MODULE_AUTHOR("Intel Corporation"); MODULE_ALIAS("auxiliary:i915.mei-gsc"); MODULE_ALIAS("auxiliary:i915.mei-gscfi"); +MODULE_DESCRIPTION("Intel(R) Graphics System Controller") MODULE_LICENSE("GPL"); -- 2.41.0 ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-07-16 8:12 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-07-16 8:10 [char-misc-next 1/4] mei: log firmware status on hw_start failure Tomas Winkler 2023-07-16 8:10 ` [char-misc-next 2/4] mei: bus: enable asynchronous suspend Tomas Winkler 2023-07-16 8:10 ` [char-misc-next 3/4] mei: obtain firmware version only on gsc Tomas Winkler 2023-07-16 8:10 ` [char-misc-next 4/4] mei: gsc: add module description Tomas Winkler
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®