Received: by 10.223.185.116 with SMTP id b49csp6421850wrg; Wed, 28 Feb 2018 09:07:56 -0800 (PST) X-Google-Smtp-Source: AH8x224BH0R0jvtQK+1TYMmGOnllEghkKJ3ouddc3gwfjMICnOs4kDDLe+X+O7O2wZaug96mXah0 X-Received: by 10.98.217.76 with SMTP id s73mr18315484pfg.209.1519837676245; Wed, 28 Feb 2018 09:07:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519837676; cv=none; d=google.com; s=arc-20160816; b=nSoeorbGYNtPfmae7nOLClmvVURSK/0S1jjda+EZ37S/cD4Sf565szIMjCehPmwal/ hMyUVReqsfn9SdDSbHIynn/ecPgj547D+6f08cDa8rpvSKGtYYhmeZEx8r2KHpQxGiQK 0fo0LhaC5sB5O8mBOzBsQdNNhb2ffOi85Ow7E3XPd590Swgk/fYFcEL5hXRRUPrfe55R Q+uzoLLI6fesLbxojw9YEGiMcO3RZsC87ms8kcDIHpAyuWRZslj5nFMNYXSIgHBHFG3w VR1BsiAThwQQ1l+CgGkZskmRXhCWwQ+Yih/hk5nsYbeuTGE3M9rvkgWIBRjqI8LSMCHr S9hA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dmarc-filter:dkim-signature:dkim-signature :arc-authentication-results; bh=R5o30LX6k1ejYYOJpvX4G4LY9TqNkS5uYxpf9lgNRss=; b=s5B43pXyxyaBQxx/BPiZTlpNywpzg3kP8G/zj+BoHaowSkY3IfcOE2B3lzo1qU6lsQ xrzp2SAobSbK8aAxY+LwprLZ0V7BG9skeL5uutFU924fGdkvKpFcdk5UmLFS5HVZ3E4N Dj6tIDkdw6Lap3/4cw/XusbXBy0WwxoWs28FrbdzZ1P/BHUJY6iC6qa6X+E9Nc620Dvz 04kMm13gAIEwd7rsWXjh3C2ykS0ONNpdCQxs03nQgn9QK1GRPt3unUjjpb7ndX151ZEt TE0921+G8Yzqk5sZTqQCbY4RkI9L4uDYyxO9B0fzwwj5kKTH0qZ+4UkH/bF7V13ZiWYU gMSA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=DHlVYuVl; dkim=pass header.i=@codeaurora.org header.s=default header.b=WchoWBFz; 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 v6si1467409pfa.116.2018.02.28.09.07.29; Wed, 28 Feb 2018 09:07:56 -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=DHlVYuVl; dkim=pass header.i=@codeaurora.org header.s=default header.b=WchoWBFz; 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 S1753491AbeB1REk (ORCPT + 99 others); Wed, 28 Feb 2018 12:04:40 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:44472 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752783AbeB1REh (ORCPT ); Wed, 28 Feb 2018 12:04:37 -0500 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 4349B60272; Wed, 28 Feb 2018 17:04:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1519837477; bh=9jvkWFh8RGwMwnrsW9s4TziJCUKhkLk0IZhiYV/Gvys=; h=From:To:Cc:Subject:Date:From; b=DHlVYuVln/c77w7DwZycThE3SFeL9wJaEHf8KNTjo9+V1I1uT9P/0tWyJ5jo2gnaO M6SA0tbg6zV3YJSlcPB/GoQBZHpdbFnAXbjqRtaDhSyfnp69i86GTygXuoGH1aiINr 8/JDFjZ47QhfilKkBhtVxsuloRMUET84wnNBLNqM= 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 blr-ubuntu-poza.qualcomm.com (blr-bdr-fw-01_globalnat_allzones-outside.qualcomm.com [103.229.18.19]) (using TLSv1.1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: poza@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id DD27760240; Wed, 28 Feb 2018 17:04:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1519837475; bh=9jvkWFh8RGwMwnrsW9s4TziJCUKhkLk0IZhiYV/Gvys=; h=From:To:Cc:Subject:Date:From; b=WchoWBFzTTO+lJaypNF8l0ZfA50XHoOLKTwVUO7TKGkqy1T5NCRJGYImngODsiBxO qp3QQ+r/LmVvR3CfrUwiCSpLSpMZtWK+jur0ciVE+mxo4KtWwPEVSlIFP1tl1QUz8p hwxOIW5SzTZjij/582jqn+/h2XrMM6YINkIsopn8= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org DD27760240 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=poza@codeaurora.org From: Oza Pawandeep To: 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 Cc: Oza Pawandeep Subject: [PATCH v12 0/6] Address error and recovery for AER and DPC Date: Wed, 28 Feb 2018 22:34:11 +0530 Message-Id: <1519837457-3596-1-git-send-email-poza@codeaurora.org> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch set brings in error handling support for DPC The current implementation of AER and error message broadcasting to the EP driver is tightly coupled and limited to AER service driver. It is important to factor out broadcasting and other link handling callbacks. So that not only when AER gets triggered, but also when DPC get triggered (for e.g. ERR_FATAL), callbacks are handled appropriately. DPC should enumerate the devices after recovering the link, which is achieved by implementing error_resume callback. Changes since v11: Bjorn's comments addressed. > rename pcie-err.c to err.c > removed EXPORT_SYMBOL > made generic find_serivce function in port driver. > removed mutex patch as no need to have mutex in pcie_do_recovery > brough in DPC_FATAL in aer.h > so now all the error codes (AER and DPC) are unified in aer.h Changes since v10: Christoph Hellwig's, David Laight's and Randy Dunlap's comments addressed. > renamed pci_do_recovery to pcie_do_recovery > removed inner braces in conditional statements. > restrctured the code in pci_wait_for_link > EXPORT_SYMBOL_GPL Changes since v9: Sinan's comments addressed. > bool active = true; unnecessary variable removed. Changes since v8: Fixed Kbuild errors. Changes since v7: Rebased the code on pci master > https://kernel.googlesource.com/pub/scm/linux/kernel/git/helgaas/pci Changes since v6: Sinan's and Stefan's comments implemented. > reordered patch 6 and 7 > cleaned up Changes since v5: Sinan's and Keith's comments incorporated. > made separate patch for mutex > unified error repotting codes into driver/pci/pci.h > got rid of wait link active/inactive and made generic function in driver/pci/pci.c Changes since v4: Bjorn's comments incorporated. > Renamed only do_recovery. > moved the things more locally to drivers/pci/pci.h Changes since v3: Bjorn's comments incorporated. > Made separate patch renaming generic pci_err.c > Introduce pci_err.h to contain all the error types and recovery > removed all the dependencies on pci.h Changes since v2: Based on feedback from Keith: " When DPC is triggered due to receipt of an uncorrectable error Message, the Requester ID from the Message is recorded in the DPC Error Source ID register and that Message is discarded and not forwarded Upstream. " Removed the patch where AER checks if DPC service is active Changes since v1: Kbuild errors fixed: > pci_find_dpc_dev made static > ras_event.h updated > pci_find_aer_service call with CONFIG check > pci_find_dpc_service call with CONFIG check Oza Pawandeep (6): PCI/AER: Rename error recovery to generic PCI naming PCI/AER: Factor out error reporting from AER PCI/PORTDRV: Implement generic find service PCI/DPC: Unify and plumb error handling into DPC PCI: Unify wait for link active into generic PCI PCI/DPC: Enumerate the devices after DPC trigger event drivers/pci/hotplug/pciehp_hpc.c | 20 +-- drivers/pci/pci.c | 29 +++ drivers/pci/pci.h | 5 + drivers/pci/pcie/Makefile | 2 +- drivers/pci/pcie/aer/aerdrv.h | 30 ---- drivers/pci/pcie/aer/aerdrv_core.c | 317 +------------------------------- drivers/pci/pcie/err.c | 359 +++++++++++++++++++++++++++++++++++++ drivers/pci/pcie/pcie-dpc.c | 90 ++++++++-- drivers/pci/pcie/portdrv.h | 2 + drivers/pci/pcie/portdrv_core.c | 43 +++++ include/linux/aer.h | 2 + 11 files changed, 521 insertions(+), 378 deletions(-) create mode 100644 drivers/pci/pcie/err.c -- Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc., a Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.