Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp1421051imm; Fri, 29 Jun 2018 18:37:23 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdZbzYdn6zzS6FnUMcTnEMy1RpUzJ0iDVTwPO+IH99gKrTLrb/oel8cH8sYAh7iLJ9o4lyZ X-Received: by 2002:a62:4395:: with SMTP id l21-v6mr16862044pfi.196.1530322643878; Fri, 29 Jun 2018 18:37:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530322643; cv=none; d=google.com; s=arc-20160816; b=EdBhEXLJJhqj/HBWxKVf8IQ2Wp8gn+s0615WX1qR+fJXOERKPElbwT19vk4AG7QZP3 fbYyGmqZHeehScsvKHe6aKdZabXOodCvKccLpiooSS2gH23U40zGwffkdhD+w+Ac3y26 InnllFhUN2RpmKezDJ7krgziHgeMKtK9OZpz7kgP3kJdHswjlPFp4/o3djVvoKi13Fio vzUtOfqhmML2O1XLzcQePxdRcQxrDCU+Rphgv1s1uaD1BZSsLgC9WrjMKAOsUZmVf+ln 7V56QsMHhWEP0BD6F4M/bt5eu07GcY/MxQul5Gg9o6ApW7JeY2NvBQbGbyoGQSnMJKyN 49bw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=fHV61EL0StbipxsnXTGamvKYqWLKlaGdHLj+t6ZbxIk=; b=MyI0QxkzXUoh/O8RAXlmv6/LpQ6xrjkw99qry4GBOowvkBN3GdRjFrpELZewTeK4Cz gRcLCaJS9I8Zsr8Lo3MbOnPL+Q0CYwCBV7t2DmWggEUZxX+xJBYR6xBJT3YIxREkJleH B/iX5Hzh4yB0taSZMr58ksuq2BdJGeF1g+os+OgH9+sr8SbPUG1cdPFekIFIlvWOZr3x P+d7s5hfEpFspiVrCRRIYal0Efu9A21RaZSwoZxxS3Tbqf90SqGTZDBcWg1PXiO0seSq EreQwwKIONFweJZ7Qx+zEttKIs9ZtXaaz69fY51nY6YKnQ8mGdIxB9kMa+RFJUEwxccu asDA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=q1+xOefL; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 126-v6si9869082pfu.274.2018.06.29.18.37.07; Fri, 29 Jun 2018 18:37:23 -0700 (PDT) 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=@gmail.com header.s=20161025 header.b=q1+xOefL; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934452AbeF2VjI (ORCPT + 99 others); Fri, 29 Jun 2018 17:39:08 -0400 Received: from mail-vk0-f67.google.com ([209.85.213.67]:34295 "EHLO mail-vk0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752549AbeF2VjE (ORCPT ); Fri, 29 Jun 2018 17:39:04 -0400 Received: by mail-vk0-f67.google.com with SMTP id l189-v6so1612965vke.1; Fri, 29 Jun 2018 14:39:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=fHV61EL0StbipxsnXTGamvKYqWLKlaGdHLj+t6ZbxIk=; b=q1+xOefLojBzjhjPKHxQ80E6lBEOuv8Ou3BBirSjEDoLS/2mZHFxW1l0lSw+GgsDps 2e5fqPkKGNFgx4EoRBDu2DdCo6sakGyfmHT75lOMIo8nSf3tCxPSoRKFRB28Ak6quO/Q r1HQVxmlZAjreMABP2uukj+YKNnasO4C6hdwHnIWAp7O0HfJ3jqHD9jmfqO4C6M80Kq3 SROfC7uKWIXWW+j/Zk6//ojxqr7qn+8TmmQ45x2LNHXNHprn3F4/zeNKbRdLZj8sAs0i BRSpp57wyd1HDKTD3MXwjteM/BQyfJEPR37OBUEHF+9y6o4U6JOkKZy2DgK9NuYlpASE z3Qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=fHV61EL0StbipxsnXTGamvKYqWLKlaGdHLj+t6ZbxIk=; b=PD18mKBb6cXfXpQ5icXcP1SLSDDIQ3vXLxsYy2JLDORFiZ8RsAjb+gvdrRRRSAxGhX rH5T63hNqxAQZLqTFPLEmqmVOzbgv/LzObsSyjs3PHlC02iEz/x+ZkwNX3gtVN7X3Cnl 4DLYgqUx4rZQmLJBcvnfJKW8y+awrqhlHbifONW/MG3pky5b8cbXXPIptehd89VEW3J6 Gq9himmYSkFimhURfn+F2CqhApbzItTKqXOeyb10C+rvcKEPzcCbqhlTy+FWyakD7GoX 3G7cfoe7stEu9Cn4ffJN4/Z1ywCe3J7EQwX99A2urZ1W9z9/qD0nB+2leGHiU3Y/aMqq aVIw== X-Gm-Message-State: APt69E3ew/0C1tmXjECmqAhdtewVaBTfNPhz6sTrQHZ93fVjvktRNW6Q dosfUkqirkODpGEGDG81oUU9ba/jGEbC0PC8NOQ= X-Received: by 2002:a1f:a8d6:: with SMTP id r205-v6mr9834130vke.129.1530308344044; Fri, 29 Jun 2018 14:39:04 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a67:8b02:0:0:0:0:0 with HTTP; Fri, 29 Jun 2018 14:39:03 -0700 (PDT) In-Reply-To: <1530214274-21139-7-git-send-email-okaya@codeaurora.org> References: <1530214274-21139-1-git-send-email-okaya@codeaurora.org> <1530214274-21139-7-git-send-email-okaya@codeaurora.org> From: Andy Shevchenko Date: Sat, 30 Jun 2018 00:39:03 +0300 Message-ID: Subject: Re: [PATCH V4 7/7] PCI: Handle link reset via hotplug if supported To: Sinan Kaya Cc: linux-pci@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm Mailing List , Bjorn Helgaas , Andy Shevchenko , Mika Westerberg , Greg Kroah-Hartman , Oza Pawandeep , Keith Busch , open list Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jun 28, 2018 at 10:31 PM, Sinan Kaya wrote: > If a bridge supports hotplug and observes a PCIe fatal error, the following > events happen: > > 1. AER driver removes the devices from PCI tree on fatal error > 2. AER driver brings down the link by issuing a secondary bus reset waits > for the link to come up. > 3. Hotplug driver observes a link down interrupt > 4. Hotplug driver tries to remove the devices waiting for the rescan lock > but devices are already removed by the AER driver and AER driver is waiting > for the link to come back up. > 5. AER driver tries to re-enumerate devices after polling for the link > state to go up. > 6. Hotplug driver obtains the lock and tries to remove the devices again. > > If a bridge is a hotplug capable bridge, bounce the error handling to the > hotplug driver so that hotplug driver can mask link up/down interrupts > while performing a secondary bus reset. > +static pci_ers_result_t pciehp_reset_link(struct pci_dev *pdev) > +{ > + struct pcie_device *pciedev; > + struct controller *ctrl; > + struct device *devhp; > + struct slot *slot; > + int rc; > + > + devhp = pcie_port_find_device(pdev, PCIE_PORT_SERVICE_HP); > + pciedev = to_pcie_device(devhp); > + ctrl = get_service_data(pciedev); > + slot = ctrl->slot; > + > + rc = reset_slot(slot->hotplug_slot, 0); > + > + return !rc ? PCI_ERS_RESULT_RECOVERED : PCI_ERS_RESULT_DISCONNECT; Would it be better to return rc ? ..._DISCONNECT : ..._RECOVERED; ? > +} -- With Best Regards, Andy Shevchenko