Received: by 2002:a05:6358:a55:b0:ec:fcf4:3ecf with SMTP id 21csp441322rwb; Wed, 18 Jan 2023 20:38:24 -0800 (PST) X-Google-Smtp-Source: AMrXdXuknsj4q3f1iizAAPx3kBs12QSeAzZIeNvhb2cCcAngQfAtUoLlOsG3fP1ZSlTUlff1JFfT X-Received: by 2002:aa7:9586:0:b0:580:e549:559e with SMTP id z6-20020aa79586000000b00580e549559emr33689301pfj.17.1674103104360; Wed, 18 Jan 2023 20:38:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674103104; cv=none; d=google.com; s=arc-20160816; b=njMoioc2i6NZz+ULBtXsAcut6ALCkCuZI0gYRV9T/QPYiqp2dQyXmMP/UdH3btV+UU 8fQ9dlA/xfnsemHkONWZk0XmXtorE+jUzevVfjxwl7jPLMD27yUjBH3RK1MMIkKMMExu X/P+nyWGl+WMy1+ePSdPEejsYc/2j0X1hSc0+y0hWVg6V+363XP9Xv93IuxnOCxlRosh MrLmjjK8wW49g2yp3ADUK6Zw90uuPrPHYoIStj55Iu/5fPJr4o8WgvmiwZnIbx9NbKAg 1alH6dDXocIkDYQJ4q4h1/ytT2fQwbYA3cqnTw81hTX/tSel1DZ8BYVcb0n2AQh2hMTe WTTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=MwlOsTNX7JO7hKq86hX+O71aDN6+t07Fmqzhoy8JyHk=; b=aPJpfHe0brt2HnbCpbpKvq83MoHKePrXFmCH0MufqszNb4i51c23zJybHo1IaYALZu oqEoBefX/YG4ZnZHKrdFsaJAVlWMYZmjHUoWupSqqYllFHHNXoDtJoti6+n83CpF9KM1 5PhtzlJkrvvMDEnUTMANVvgtuerNnatieyDsKEob3M1oVsh93biyj7VeXzbl9ksRA27M Fwecxq1CXYvjK4jnzUfZaR3FAyFwus1AS7suCEh+qR7aMTT/TP7sZMHrXRFDm3ps0rBr I8C8Nj36s/LzY7Aabbbdqpk/sINFhM+IbsRlF0glwhR17UY9cx/7M0ChqJJGQmmKDg7y bezQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=lsxHOCMm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f5-20020a056a00228500b0058158371654si9351122pfe.368.2023.01.18.20.38.19; Wed, 18 Jan 2023 20:38:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=lsxHOCMm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230187AbjASE3J (ORCPT + 44 others); Wed, 18 Jan 2023 23:29:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42908 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230392AbjASEO5 (ORCPT ); Wed, 18 Jan 2023 23:14:57 -0500 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B5E4C6E82F for ; Wed, 18 Jan 2023 20:05:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1674101256; x=1705637256; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=9LcZBYGDhBOOdba4bfvLDoiPsfgsdNgi8ugQN5xCxek=; b=lsxHOCMmNmAVtZ7ZzesxTTgEeAkGNkXgK+5aeRm2LVGR7Mz6jckWSx6v O1wwSMEVE9kee7i2G1InVAz7RydHVlVEGF0a7J00hvsGzs/TelsgJ8bZ+ kXi6H3u4io7CiGgy6EalF44gUyY4oLoOT4dIoMBDKFGqQxzrU9EXWCoL1 ksXyrRZRntagpZ0BPBb0fUY3V6PF0cD+aUtQO6d+3S0tJMTeHj/MN5H0H ZUNz1gt/vMSTBZ7nroINUxNkSKywIRaLEKyc0eCb9ZQP/mi8duCKMXQ1I WIeD9pNFKkz5HdEJW+G6rMy9ZaxWwjWOVckiTpq80raY8emKR60bkpWQI g==; X-IronPort-AV: E=McAfee;i="6500,9779,10594"; a="305558733" X-IronPort-AV: E=Sophos;i="5.97,226,1669104000"; d="scan'208";a="305558733" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jan 2023 19:49:07 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10594"; a="661981566" X-IronPort-AV: E=Sophos;i="5.97,226,1669104000"; d="scan'208";a="661981566" Received: from bakersax-mobl.amr.corp.intel.com (HELO [10.209.33.66]) ([10.209.33.66]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jan 2023 19:49:06 -0800 Message-ID: <001efe2e-0ae8-e3fe-f872-d5401ec802c9@linux.intel.com> Date: Wed, 18 Jan 2023 19:49:06 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0 Thunderbird/102.4.2 Subject: Re: [PATCH 1/9] PCI/AER: Remove redundant Device Control Error Reporting Enable Content-Language: en-US To: Bjorn Helgaas , linux-pci@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Bjorn Helgaas , Stefan Roese , Ashok Raj , Keith Busch References: <20230118234612.272916-1-helgaas@kernel.org> <20230118234612.272916-2-helgaas@kernel.org> From: Sathyanarayanan Kuppuswamy In-Reply-To: <20230118234612.272916-2-helgaas@kernel.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 1/18/23 3:46 PM, Bjorn Helgaas wrote: > From: Bjorn Helgaas > > The following bits in the PCIe Device Control register enable sending of > ERR_COR, ERR_NONFATAL, or ERR_FATAL Messages (or reporting internally in > the case of Root Ports): > > Correctable Error Reporting Enable > Non-Fatal Error Reporting Enable > Fatal Error Reporting Enable > Unsupported Request Reporting Enable > > These enable bits are set by pci_enable_pcie_error_reporting(), and since > f26e58bf6f54 ("PCI/AER: Enable error reporting when AER is native"), we > do that in this path during enumeration: > > pci_init_capabilities > pci_aer_init > pci_enable_pcie_error_reporting > > Previously, the AER service driver also traversed the hierarchy when > claiming a Root Port, enabling error reporting for downstream devices, but > this is redundant. > > Remove the code that enables this error reporting in the AER .probe() path. > Also remove similar code that disables error reporting in the AER .remove() > path. > > Note that these Device Control Reporting Enable bits do not control > interrupt generation. That's done by the similarly-named bits in the AER > Root Error Command register, which are still set by aer_probe() and cleared > by aer_remove(), since the AER service driver handles those interrupts. > See PCIe r6.0, sec 6.2.6. > > Signed-off-by: Bjorn Helgaas > Cc: Stefan Roese > Cc: Kuppuswamy Sathyanarayanan > Cc: Ashok Raj > Cc: Keith Busch > --- Looks fine to me. Reviewed-by: Kuppuswamy Sathyanarayanan > drivers/pci/pcie/aer.c | 48 ------------------------------------------ > 1 file changed, 48 deletions(-) > > diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c > index 625f7b2cafe4..b7b69e0c778c 100644 > --- a/drivers/pci/pcie/aer.c > +++ b/drivers/pci/pcie/aer.c > @@ -1224,42 +1224,6 @@ static irqreturn_t aer_irq(int irq, void *context) > return IRQ_WAKE_THREAD; > } > > -static int set_device_error_reporting(struct pci_dev *dev, void *data) > -{ > - bool enable = *((bool *)data); > - int type = pci_pcie_type(dev); > - > - if ((type == PCI_EXP_TYPE_ROOT_PORT) || > - (type == PCI_EXP_TYPE_RC_EC) || > - (type == PCI_EXP_TYPE_UPSTREAM) || > - (type == PCI_EXP_TYPE_DOWNSTREAM)) { > - if (enable) > - pci_enable_pcie_error_reporting(dev); > - else > - pci_disable_pcie_error_reporting(dev); > - } > - > - return 0; > -} > - > -/** > - * set_downstream_devices_error_reporting - enable/disable the error reporting bits on the root port and its downstream ports. > - * @dev: pointer to root port's pci_dev data structure > - * @enable: true = enable error reporting, false = disable error reporting. > - */ > -static void set_downstream_devices_error_reporting(struct pci_dev *dev, > - bool enable) > -{ > - set_device_error_reporting(dev, &enable); > - > - if (pci_pcie_type(dev) == PCI_EXP_TYPE_RC_EC) > - pcie_walk_rcec(dev, set_device_error_reporting, &enable); > - else if (dev->subordinate) > - pci_walk_bus(dev->subordinate, set_device_error_reporting, > - &enable); > - > -} > - > /** > * aer_enable_rootport - enable Root Port's interrupts when receiving messages > * @rpc: pointer to a Root Port data structure > @@ -1289,12 +1253,6 @@ static void aer_enable_rootport(struct aer_rpc *rpc) > pci_read_config_dword(pdev, aer + PCI_ERR_UNCOR_STATUS, ®32); > pci_write_config_dword(pdev, aer + PCI_ERR_UNCOR_STATUS, reg32); > > - /* > - * Enable error reporting for the root port device and downstream port > - * devices. > - */ > - set_downstream_devices_error_reporting(pdev, true); > - > /* Enable Root Port's interrupt in response to error messages */ > pci_read_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND, ®32); > reg32 |= ROOT_PORT_INTR_ON_MESG_MASK; > @@ -1313,12 +1271,6 @@ static void aer_disable_rootport(struct aer_rpc *rpc) > int aer = pdev->aer_cap; > u32 reg32; > > - /* > - * Disable error reporting for the root port device and downstream port > - * devices. > - */ > - set_downstream_devices_error_reporting(pdev, false); > - > /* Disable Root's interrupt in response to error messages */ > pci_read_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND, ®32); > reg32 &= ~ROOT_PORT_INTR_ON_MESG_MASK; -- Sathyanarayanan Kuppuswamy Linux Kernel Developer