Received: by 10.223.185.116 with SMTP id b49csp321824wrg; Thu, 22 Feb 2018 22:37:46 -0800 (PST) X-Google-Smtp-Source: AH8x224gOK6c3b++WxZRl75MqFTJ2L1jsvFmycP3MUsMBE19cxBW9njwqEbR87/88KsCyuqaz4Gq X-Received: by 2002:a17:902:8541:: with SMTP id d1-v6mr735911plo.54.1519367866275; Thu, 22 Feb 2018 22:37:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519367866; cv=none; d=google.com; s=arc-20160816; b=0ZdDocseuqEfYf6zmN631CVw2JpBq6EJU8fTMfBmLA7QIf1BnBhIvfCMZb/P892/w4 LkHkfPTReZgQnYp78k/XvrP6qzKyjYCBTpn6WIJwQDmOjbMUpX3z0yA/zct6MB64TB2h E6VBTqbTM+AUxWgD9rJQaNArxM1RzAJfwTJ7mbWHlyBA0z14YT1aPi0NU0eAtSQpS9rr tKPmCqwwaoRNY3CSPInawsgv8JZOC32uyz2VOZ75W9CXdO3sIiQEwNbbA7J82SC78B2G v5x+A8qf0uoXg3zJZck6VVrC8iIfJa7GYumcfXKELaK4pw+cJe4gWTaqxwEWeN0RumzN FeWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:message-id:references :in-reply-to:subject:cc:to:from:date:content-transfer-encoding :mime-version:dkim-signature:dkim-signature :arc-authentication-results; bh=/gChZMCEEKlSG5QhKcgnEiIpRfkH5BPX73snWDCd0Go=; b=W8U0zpk6ApeJGSMKEKZBrWA7ywPDM9GWfniuEZ8NfzaGFxXxBEP2HvEIq9NkiZ28Lh VoaFn6iJOeokj8VOeG9eHIqn77hmfQ2zAgjEq4f5QifwYvX3Ol37yQ5SAzf4VCw35Le0 bGIXOr3JFOM8YAjrVWqKY5cHWQZxLLXgKskWxcwolD6iWCgQJP6rLg4d3BBdY8SamaN+ BCK70nLOZWYO3geRLZuo2GQSwrSvTbUtNyTo9o/YT1nG1VhJyuKeyTHfMFTFl+lrTFW7 1F7era0IhAwnsNo7WxcsgdUciN9YofGu/84kjs3Mn9LovKjxP9unMdEYeSOrzh4D6B+K g93Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=VY7ErGJb; dkim=pass header.i=@codeaurora.org header.s=default header.b=Rnsmx/WU; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f10si1107399pge.494.2018.02.22.22.37.31; Thu, 22 Feb 2018 22:37:46 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=VY7ErGJb; dkim=pass header.i=@codeaurora.org header.s=default header.b=Rnsmx/WU; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751474AbeBWGgZ (ORCPT + 99 others); Fri, 23 Feb 2018 01:36:25 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:47536 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750943AbeBWGgY (ORCPT ); Fri, 23 Feb 2018 01:36:24 -0500 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id CC387602B8; Fri, 23 Feb 2018 06:36:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1519367783; bh=fjAyUw/j78An1AUa5UvXPsQXPv5jNqt+piVEVY3gKgU=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=VY7ErGJbBbS+jArnPTHAAs2Fr/35caOgb9l2oGxA/zXCWlDOVwU0JpVqsYw+JctHS PM3JwemKHGQzBnpYAwuzQqZZt3CcEMz5dUDCCPYfiF6wJwv88E4o+SlVRb/f2JxAhz BQFLjtkPlY6NyyvRCsOImb+nihZr0LWrEH6UlFak= X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on pdx-caf-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=2.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.0 Received: from mail.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.codeaurora.org (Postfix) with ESMTP id 73671602B8; Fri, 23 Feb 2018 06:36:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1519367782; bh=fjAyUw/j78An1AUa5UvXPsQXPv5jNqt+piVEVY3gKgU=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Rnsmx/WU3Zn1XG7uuCI+FUafs5R/VQc0eGqNgjc/unk/Y0tKD+lI9i4dwNyaFWaVW qgwNmIOxEuutBVQiovQ/hPWE9dNobo2nQ/7qvBdptu2XgkAcQbpBufpXMlxk9cHrR/ XStnPELlgSNMBQPt29J3uLxNF4eZ7oOK0P4i6DzE= MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Fri, 23 Feb 2018 12:06:22 +0530 From: poza@codeaurora.org To: Randy Dunlap Cc: Bjorn Helgaas , Philippe Ombredanne , Thomas Gleixner , Greg Kroah-Hartman , Kate Stewart , linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Dongdong Liu , Keith Busch , Wei Zhang , Sinan Kaya , Timur Tabi , linux-pci-owner@vger.kernel.org Subject: Re: [PATCH v9 2/7] PCI/AER: factor out error reporting from AER In-Reply-To: References: <1519285571-5634-1-git-send-email-poza@codeaurora.org> <1519285571-5634-3-git-send-email-poza@codeaurora.org> Message-ID: X-Sender: poza@codeaurora.org User-Agent: Roundcube Webmail/1.2.5 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2018-02-23 00:53, Randy Dunlap wrote: > On 02/21/2018 11:46 PM, Oza Pawandeep wrote: > > Hi, > Just minor stuff: > >> diff --git a/drivers/pci/pcie/pcie-err.c b/drivers/pci/pcie/pcie-err.c >> new file mode 100644 >> index 0000000..a532fe0 >> --- /dev/null >> +++ b/drivers/pci/pcie/pcie-err.c >> @@ -0,0 +1,334 @@ >> +// SPDX-License-Identifier: GPL-2.0 >> +/* >> + * This file implements the error recovery as a core part of PCIe >> error reporting. >> + * When a PCIe error is delivered, an error message will be collected >> and printed >> + * to console, then, an error recovery procedure will be executed by >> following >> + * the PCI error recovery rules. >> + * >> + * Copyright (C) 2006 Intel Corp. >> + * Tom Long Nguyen (tom.l.nguyen@intel.com) >> + * Zhang Yanmin (yanmin.zhang@intel.com) >> + * >> + */ >> + >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include "portdrv.h" > >> +static int report_error_detected(struct pci_dev *dev, void *data) >> +{ >> + pci_ers_result_t vote; >> + const struct pci_error_handlers *err_handler; >> + struct aer_broadcast_data *result_data; >> + >> + result_data = (struct aer_broadcast_data *) data; >> + >> + device_lock(&dev->dev); >> + dev->error_state = result_data->state; >> + >> + if (!dev->driver || >> + !dev->driver->err_handler || >> + !dev->driver->err_handler->error_detected) { >> + if (result_data->state == pci_channel_io_frozen && >> + dev->hdr_type != PCI_HEADER_TYPE_BRIDGE) { >> + /* >> + * In case of fatal recovery, if one of down- >> + * stream device has no driver. We might be >> + * unable to recover because a later insmod >> + * of a driver for this device is unaware of >> + * its hw state. >> + */ >> + dev_printk(KERN_DEBUG, &dev->dev, "device has %s\n", >> + dev->driver ? >> + "no error-aware driver" : "no driver"); > > or: > dev_printk(KERN_DEBUG, &dev->dev, "device has no%s driver\n", > dev->driver ? " error-aware" : ""); > I might not be able to take care of this, because all the later patches are dependent on this, and probably I might have to manually merge. though I will give it a try :) >> + } >> + >> + /* >> + * If there's any device in the subtree that does not >> + * have an error_detected callback, returning >> + * PCI_ERS_RESULT_NO_AER_DRIVER prevents calling of >> + * the subsequent mmio_enabled/slot_reset/resume >> + * callbacks of "any" device in the subtree. All the >> + * devices in the subtree are left in the error state >> + * without recovery. >> + */ >> + >> + if (dev->hdr_type != PCI_HEADER_TYPE_BRIDGE) >> + vote = PCI_ERS_RESULT_NO_AER_DRIVER; >> + else >> + vote = PCI_ERS_RESULT_NONE; >> + } else { >> + err_handler = dev->driver->err_handler; >> + vote = err_handler->error_detected(dev, result_data->state); >> + } >> + >> + result_data->result = merge_result(result_data->result, vote); >> + device_unlock(&dev->dev); >> + return 0; >> +} > >> +/** >> + * broadcast_error_message - handle message broadcast to downstream >> drivers >> + * @dev: pointer to from where in a hierarchy message is broadcasted >> down > > I would drop ^^ "from" ... is broadcast > downstream > >> + * @state: error state >> + * @error_mesg: message to print >> + * @cb: callback to be broadcasted > > to be broadcast > >> + * >> + * Invoked during error recovery process. Once being invoked, the >> content >> + * of error severity will be broadcasted to all downstream drivers in >> a > > will be broadcast > >> + * hierarchy in question. >> + */ >> +static pci_ers_result_t broadcast_error_message(struct pci_dev *dev, >> + enum pci_channel_state state, >> + char *error_mesg, >> + int (*cb)(struct pci_dev *, void *)) >> +{ >> + struct aer_broadcast_data result_data;