From patchwork Fri Aug 21 03:47:28 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hidetoshi Seto X-Patchwork-Id: 43044 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n7L3lwIw017173 for ; Fri, 21 Aug 2009 03:47:58 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754646AbZHUDrz (ORCPT ); Thu, 20 Aug 2009 23:47:55 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754666AbZHUDrz (ORCPT ); Thu, 20 Aug 2009 23:47:55 -0400 Received: from fgwmail6.fujitsu.co.jp ([192.51.44.36]:53499 "EHLO fgwmail6.fujitsu.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754646AbZHUDrz (ORCPT ); Thu, 20 Aug 2009 23:47:55 -0400 Received: from m6.gw.fujitsu.co.jp ([10.0.50.76]) by fgwmail6.fujitsu.co.jp (Fujitsu Gateway) with ESMTP id n7L3lulO004166 for (envelope-from seto.hidetoshi@jp.fujitsu.com); Fri, 21 Aug 2009 12:47:56 +0900 Received: from smail (m6 [127.0.0.1]) by outgoing.m6.gw.fujitsu.co.jp (Postfix) with ESMTP id D0DC245DE51 for ; Fri, 21 Aug 2009 12:47:55 +0900 (JST) Received: from s6.gw.fujitsu.co.jp (s6.gw.fujitsu.co.jp [10.0.50.96]) by m6.gw.fujitsu.co.jp (Postfix) with ESMTP id A028E45DE4C for ; Fri, 21 Aug 2009 12:47:55 +0900 (JST) Received: from s6.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s6.gw.fujitsu.co.jp (Postfix) with ESMTP id 7F9011DB8041 for ; Fri, 21 Aug 2009 12:47:55 +0900 (JST) Received: from m105.s.css.fujitsu.com (m105.s.css.fujitsu.com [10.249.87.105]) by s6.gw.fujitsu.co.jp (Postfix) with ESMTP id 0B6B91DB803A for ; Fri, 21 Aug 2009 12:47:55 +0900 (JST) Received: from m105.css.fujitsu.com (m105 [127.0.0.1]) by m105.s.css.fujitsu.com (Postfix) with ESMTP id CF44E5E8004; Fri, 21 Aug 2009 12:47:54 +0900 (JST) Received: from [127.0.0.1] (unknown [10.124.100.141]) by m105.s.css.fujitsu.com (Postfix) with ESMTP id 721B45E8002; Fri, 21 Aug 2009 12:47:54 +0900 (JST) X-SecurityPolicyCheck-FJ: OK by FujitsuOutboundMailChecker v1.3.1 Received: from FMVDA2A041[10.124.100.141] by FMVDA2A041 (FujitsuOutboundMailChecker v1.3.1/9992[10.124.100.141]); Fri, 21 Aug 2009 12:47:32 +0900 (JST) Message-ID: <4A8E18D0.6050701@jp.fujitsu.com> Date: Fri, 21 Aug 2009 12:47:28 +0900 From: Hidetoshi Seto User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) MIME-Version: 1.0 To: linux-pci@vger.kernel.org CC: Jesse Barnes Subject: [PATCH 5/8] pcie, aer: fix report of multiple errors References: <4A8E169F.3080700@jp.fujitsu.com> In-Reply-To: <4A8E169F.3080700@jp.fujitsu.com> Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org The flag AER_MULTI_ERROR_VALID_FLAG in info->flag does mean that the root port received multiple error messages. Error messages can be posted from different devices, so it does not mean that each reported device has multiple errors. If there are multiple error devices and the root port has valid error source ID, it would be nice to report which device is the error source reported first. Signed-off-by: Hidetoshi Seto --- drivers/pci/pcie/aer/aerdrv_errprint.c | 19 ++++++++----------- 1 files changed, 8 insertions(+), 11 deletions(-) diff --git a/drivers/pci/pcie/aer/aerdrv_errprint.c b/drivers/pci/pcie/aer/aerdrv_errprint.c index 48f70fa..d584ffd 100644 --- a/drivers/pci/pcie/aer/aerdrv_errprint.c +++ b/drivers/pci/pcie/aer/aerdrv_errprint.c @@ -185,6 +185,7 @@ void aer_print_error(struct pci_dev *dev, struct aer_err_info *info) { char *errmsg; int err_layer, agent; + int id = ((dev->bus->number << 8) | dev->devfn); AER_PR(info, "+------ PCI-Express Device Error ------+\n"); AER_PR(info, "Error Severity\t\t: %s\n", @@ -192,11 +193,7 @@ void aer_print_error(struct pci_dev *dev, struct aer_err_info *info) if (info->status == 0) { AER_PR(info, "PCIE Bus Error type\t: (Unaccessible)\n"); - AER_PR(info, "Unaccessible Received\t: %s\n", - info->flags & AER_MULTI_ERROR_VALID_FLAG ? - "Multiple" : "First"); - AER_PR(info, "Unregistered Agent ID\t: %04x\n", - (dev->bus->number << 8) | dev->devfn); + AER_PR(info, "Unregistered Agent ID\t: %04x\n", id); } else { err_layer = AER_GET_LAYER_ERROR(info->severity, info->status); AER_PR(info, "PCIE Bus Error type\t: %s\n", @@ -206,15 +203,11 @@ void aer_print_error(struct pci_dev *dev, struct aer_err_info *info) errmsg = aer_get_error_source_name(info->severity, info->status, errmsg_buff); - AER_PR(info, "%s\t: %s\n", errmsg, - info->flags & AER_MULTI_ERROR_VALID_FLAG ? - "Multiple" : "First"); + AER_PR(info, "%s\t:\n", errmsg); spin_unlock(&logbuf_lock); agent = AER_GET_AGENT(info->severity, info->status); - AER_PR(info, "%s\t\t: %04x\n", - aer_agent_string[agent], - (dev->bus->number << 8) | dev->devfn); + AER_PR(info, "%s\t\t: %04x\n", aer_agent_string[agent], id); AER_PR(info, "VendorID=%04xh, DeviceID=%04xh," " Bus=%02xh, Device=%02xh, Function=%02xh\n", @@ -236,4 +229,8 @@ void aer_print_error(struct pci_dev *dev, struct aer_err_info *info) *(tlp + 13), *(tlp + 12)); } } + + if (info->id && info->error_dev_num > 1) + AER_PR(info, "Source Reported First\t: %s\n", + info->id == id ? "yes" : "no"); }