Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp3321544pxk; Mon, 7 Sep 2020 09:28:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyDK3MQHIn9dxkpM7ZxDal1WbgJEPKFWmHd/QQTeMUaAbNLrMmWuNG2WBpRzmuZiQZaFecP X-Received: by 2002:a17:906:3913:: with SMTP id f19mr483363eje.83.1599496116893; Mon, 07 Sep 2020 09:28:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599496116; cv=none; d=google.com; s=arc-20160816; b=WkOGpA3eaBrr2YCT4oYzD1GqwMlfw00gnXfD0gxLz3VK9gH0EE3uiONuWNV1Nl0pyy dqxRl/xJ3HRziyn//vI8u4X3bpOl8AJuu8blf6RX2ccTq2e5z6nx2HcoAGD0mAWz2OHE Jo0DKImOD0O0URz/tQqhpYBV4K+2tAEchxloWtbE21ik/dqMIxbCvaFnjhBB8FFFglak 03w+0RM0rffNhVSLPEptvRL8IcN0NLY6tmgc9YaGW00B8gnlh+/N3PdOODQfbhE4khDC fT1HPTtHVaSKNH6Uz5XNs8FQfQ2MfHfrf/yAXTZNPvB/tddNgXSQZ1wErbKHWk67UExh oBIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=4O0QSxUDD3xeMWzO7pM0jb9DlbqpoAGCZgcqvEe0STI=; b=EUoPtVVoZEcM/ognXrDTw5oVKP5VR0k2rS+rZpHQGeVb7w5S8FW+o616gjJBA4/WV3 094QDpro3eAjZ5BwEdUJg4ErXMGqNzUuA37o+Q2okEJXpiPRqC0Xhv/tBSSVY0vOHfuv aN7IT16wKTqTddIc/i3Anf8HfbYKYqK+U2cUgRZCujrZ+X8BOz6rCsdStTRDdSlGjuQo ocbv2teGbh5Enf7/VSEIxNs6XFfvrFlMaNPHhWSFqruVO46SabmyLHajjbLAWm2fJ1ov twKugSj7gsrIu+Lcl7Ur03d93TSc1+vntWcJnk02XTPC84mruFbPUKmm4vLB/VFKYr3D 7L/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=cYbN15Mw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r26si9507103eds.384.2020.09.07.09.28.15; Mon, 07 Sep 2020 09:28:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=cYbN15Mw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730523AbgIGQ1i (ORCPT + 99 others); Mon, 7 Sep 2020 12:27:38 -0400 Received: from smtp-fw-9102.amazon.com ([207.171.184.29]:9329 "EHLO smtp-fw-9102.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729980AbgIGQ1J (ORCPT ); Mon, 7 Sep 2020 12:27:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1599496029; x=1631032029; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=4O0QSxUDD3xeMWzO7pM0jb9DlbqpoAGCZgcqvEe0STI=; b=cYbN15MwAPJKke5qCKcZoSdF8G88iNwIhxPzDYPKa+1wWJSmJTDsX953 8FQb/rCFGryaukvyp7YLHgtESPBtGD1vqo+wMFMC5Ljo9d4hsQOANg1yf TOwHH2KeZMV+GVCVeIRcAaPAOYIq/CHYz3UsEJIJP1OzawjIBnVlMjt3m c=; X-IronPort-AV: E=Sophos;i="5.76,402,1592870400"; d="scan'208";a="74236825" Received: from sea32-co-svc-lb4-vlan3.sea.corp.amazon.com (HELO email-inbound-relay-2b-81e76b79.us-west-2.amazon.com) ([10.47.23.38]) by smtp-border-fw-out-9102.sea19.amazon.com with ESMTP; 07 Sep 2020 16:26:46 +0000 Received: from uc85b769cb7f9591afac0.ant.amazon.com (pdx2-ws-svc-lb17-vlan2.amazon.com [10.247.140.66]) by email-inbound-relay-2b-81e76b79.us-west-2.amazon.com (Postfix) with ESMTPS id E3162A045E; Mon, 7 Sep 2020 16:26:44 +0000 (UTC) Received: from uc85b769cb7f9591afac0.ant.amazon.com (uc85b769cb7f9591afac0 [127.0.0.1]) by uc85b769cb7f9591afac0.ant.amazon.com (8.15.2/8.15.2/Debian-3) with ESMTP id 087GQfm3011020; Mon, 7 Sep 2020 18:26:41 +0200 Received: (from markubo@localhost) by uc85b769cb7f9591afac0.ant.amazon.com (8.15.2/8.15.2/Submit) id 087GQeTL011013; Mon, 7 Sep 2020 18:26:40 +0200 From: Markus Boehme To: Corey Minyard , openipmi-developer@lists.sourceforge.net Cc: Arnd Bergmann , Greg Kroah-Hartman , linux-kernel@vger.kernel.org, Stefan Nuernberger , SeongJae Park , Amit Shah , Markus Boehme Subject: [PATCH 2/3] ipmi: Add timeout waiting for device GUID Date: Mon, 7 Sep 2020 18:25:36 +0200 Message-Id: <1599495937-10654-2-git-send-email-markubo@amazon.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1599495937-10654-1-git-send-email-markubo@amazon.com> References: <1599495937-10654-1-git-send-email-markubo@amazon.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We have observed hosts with misbehaving BMCs that receive a Get Device GUID command but don't respond. This leads to an indefinite wait in the ipmi_msghandler's __get_guid function, showing up as hung task messages for modprobe. According to IPMI 2.0 specification chapter 20, the implementation of the Get Device GUID command is optional. Therefore, add a timeout to waiting for its response and treat the lack of one the same as missing a device GUID. Signed-off-by: Stefan Nuernberger Signed-off-by: Markus Boehme --- drivers/char/ipmi/ipmi_msghandler.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c index 2b213c9..2a2e8b2 100644 --- a/drivers/char/ipmi/ipmi_msghandler.c +++ b/drivers/char/ipmi/ipmi_msghandler.c @@ -3184,18 +3184,26 @@ static void guid_handler(struct ipmi_smi *intf, struct ipmi_recv_msg *msg) static void __get_guid(struct ipmi_smi *intf) { - int rv; + long rv; struct bmc_device *bmc = intf->bmc; bmc->dyn_guid_set = 2; intf->null_user_handler = guid_handler; rv = send_guid_cmd(intf, 0); - if (rv) + if (rv) { /* Send failed, no GUID available. */ bmc->dyn_guid_set = 0; - else - wait_event(intf->waitq, bmc->dyn_guid_set != 2); + goto out; + } + rv = wait_event_timeout(intf->waitq, bmc->dyn_guid_set != 2, 5 * HZ); + if (rv == 0) { + dev_warn_once(intf->si_dev, + "Timed out waiting for GUID. Assuming GUID is not available.\n"); + bmc->dyn_guid_set = 0; + } + +out: /* dyn_guid_set makes the guid data available. */ smp_rmb(); -- 2.7.4