Skip to content

Commit 8d2d893

Browse files
ausyskingregkh
authored andcommitted
mei: ignore not found client in the enumeration
Some of the ME clients are available only for BIOS operation and are removed during hand off to an OS. However the removal is not instant. A client may be visible on the client list when the mei driver requests for enumeration, while the subsequent request for properties will be answered with client not found error value. The default behavior for an error is to perform client reset while this error is harmless and the link reset should be prevented. This issue started to be visible due to suspend/resume timing changes. Currently reported only on the Haswell based system. Fixes: [33.564957] mei_me 0000:00:16.0: hbm: properties response: wrong status = 1 CLIENT_NOT_FOUND [33.564978] mei_me 0000:00:16.0: mei_irq_read_handler ret = -71. [33.565270] mei_me 0000:00:16.0: unexpected reset: dev_state = INIT_CLIENTS fw status = 1E000255 60002306 00000200 00004401 00000000 00000010 Cc: <[email protected]> Reported-by: Heiner Kallweit <[email protected]> Signed-off-by: Alexander Usyskin <[email protected]> Signed-off-by: Tomas Winkler <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 11da3a7 commit 8d2d893

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

drivers/misc/mei/hbm.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,15 +1161,18 @@ int mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr)
11611161

11621162
props_res = (struct hbm_props_response *)mei_msg;
11631163

1164-
if (props_res->status) {
1164+
if (props_res->status == MEI_HBMS_CLIENT_NOT_FOUND) {
1165+
dev_dbg(dev->dev, "hbm: properties response: %d CLIENT_NOT_FOUND\n",
1166+
props_res->me_addr);
1167+
} else if (props_res->status) {
11651168
dev_err(dev->dev, "hbm: properties response: wrong status = %d %s\n",
11661169
props_res->status,
11671170
mei_hbm_status_str(props_res->status));
11681171
return -EPROTO;
1172+
} else {
1173+
mei_hbm_me_cl_add(dev, props_res);
11691174
}
11701175

1171-
mei_hbm_me_cl_add(dev, props_res);
1172-
11731176
/* request property for the next client */
11741177
if (mei_hbm_prop_req(dev, props_res->me_addr + 1))
11751178
return -EIO;

0 commit comments

Comments
 (0)