Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp650662pxf; Wed, 17 Mar 2021 12:28:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwFxDOhlKCGqe/RZDHA/UxwMgM1f6JsOemnO+XCmLi5fhCqAG5B/Y6fUs4LaYRTDi1w34Zo X-Received: by 2002:a17:906:154f:: with SMTP id c15mr36244604ejd.142.1616009316668; Wed, 17 Mar 2021 12:28:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616009316; cv=none; d=google.com; s=arc-20160816; b=UMSaq9iGBm1oBlpp1YeJ5yB5ykw4qC8cmttZfy1ChDCTw3AjU3iXvHc4olTtBB+jab ByYTvgV60PufhiCpRYTH4fzrqGCaM7usGYEZBECR7crv0dZPcZeEpE97c9WqEZAa2flj wzAQyfH+f82lII7IUd1RLbWd8/HTn9eLMFWjyowYzlywr2qhF85Z2HbdG9+EDq5k6nq4 duVBq/gc8HDI3lkPeX0A/XJ8AzwIzOYS96ylCZLMDDwOBkc0Yh0d0IcK7/O6ZyXrlF4m maOOml25LrhBX5UewiqSBkbyAwWztAyDKxmB7gpylOZA70JHfF56ymiMFvgY5ay0JvCG WkCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=RB8Qd/oalgOyrECSLP56M3v+0NbKQTkwXZI7d4KT+5Y=; b=VQBiXMreulkiPL4MtBPmm5AP6gjJ4IpiHEQp5roUvF1iA1KH6bS2s+PEnMMBaYqLFx nBEvEnl9Jmw8OPmVPzVLAVw6vfjj7zVypt5d9xUpwLjVyFLtKG0ZA2O5EnGOeMFLAOX2 rvMC3nWLTO4lsnfamMEGK1EOmi01w/6PlX4KvCoo6mBDxJs0UVS4YI3bp3yfqDrXRDTq CuA5O29a18i/yags3NtpG0kANFXysnMLJ5ejXqQn0pTF8isKTIWraY0iEVne3WpVhfZy sttRLnu1+AR7BQX045+1HxJFd2BSggSoZ79Ih2TtQ+uEhvgY8kFks+2y612vwRGnLX0k nsqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=GZRTNw0C; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id lz9si17531263ejb.57.2021.03.17.12.28.13; Wed, 17 Mar 2021 12:28:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=GZRTNw0C; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232120AbhCQTZA (ORCPT + 99 others); Wed, 17 Mar 2021 15:25:00 -0400 Received: from mail.kernel.org ([198.145.29.99]:53356 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231378AbhCQTY2 (ORCPT ); Wed, 17 Mar 2021 15:24:28 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 938DD64E74; Wed, 17 Mar 2021 19:24:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1616009067; bh=KKLdsb/3DlDkU4aWs0Dgdf8TtDZwtJHl3u4fz67AniQ=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=GZRTNw0CPL7kswGGvq7LaYQEyiyMeFE5x9bbrs/0yrOamTF4m1GdnaR/RopyRKCoV jAjzVtaTzi392HO5KVybX1T3uzbbOD+mqq8mpTxvM7ilTURG04TfRvyCdwfhpY90lu 5YseBIs6KQdENZi/ng+V8Rie6VcwA0K66GbH66cnm+DaTdAIa4lnBL9qyGnUUYWdOv OJlyQcuoWJsGA3Rnf3GyyPMkzmE8bf9NdCnwtqL7dxQVlV6zs44J/ewhVRYzOC1lAQ mIiojOTxXZHSoFpVnKuYgohf2Jjj8Rbs3kRllnZwH2ySv1x7ql/UglC14uCCIXxBdc W1aKq2IeCOWeA== Received: by pali.im (Postfix) id B26938A9; Wed, 17 Mar 2021 20:24:24 +0100 (CET) Date: Wed, 17 Mar 2021 20:24:24 +0100 From: Pali =?utf-8?B?Um9ow6Fy?= To: Alex Williamson Cc: Amey Narkhede , bhelgaas@google.com, raphael.norwitz@nutanix.com, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org Subject: Re: [PATCH 4/4] PCI/sysfs: Allow userspace to query and set device reset mechanism Message-ID: <20210317192424.kpfybcrsen3ivr4f@pali> References: <20210312173452.3855-1-ameynarkhede03@gmail.com> <20210312173452.3855-5-ameynarkhede03@gmail.com> <20210314235545.girtrazsdxtrqo2q@pali> <20210315134323.llz2o7yhezwgealp@archlinux> <20210315135226.avwmnhkfsgof6ihw@pali> <20210315083409.08b1359b@x1.home.shazbot.org> <20210315145238.6sg5deblr2z2pupu@pali> <20210315090339.54546e91@x1.home.shazbot.org> <20210317190206.zrtzwgskxdogl7dz@pali> <20210317131536.38f398b0@omen.home.shazbot.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20210317131536.38f398b0@omen.home.shazbot.org> User-Agent: NeoMutt/20180716 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wednesday 17 March 2021 13:15:36 Alex Williamson wrote: > On Wed, 17 Mar 2021 20:02:06 +0100 > Pali Rohár wrote: > > > On Monday 15 March 2021 09:03:39 Alex Williamson wrote: > > > On Mon, 15 Mar 2021 15:52:38 +0100 > > > Pali Rohár wrote: > > > > > > > On Monday 15 March 2021 08:34:09 Alex Williamson wrote: > > > > > On Mon, 15 Mar 2021 14:52:26 +0100 > > > > > Pali Rohár wrote: > > > > > > > > > > > On Monday 15 March 2021 19:13:23 Amey Narkhede wrote: > > > > > > > slot reset (pci_dev_reset_slot_function) and secondary bus > > > > > > > reset(pci_parent_bus_reset) which I think are hot reset and > > > > > > > warm reset respectively. > > > > > > > > > > > > No. PCI secondary bus reset = PCIe Hot Reset. Slot reset is just another > > > > > > type of reset, which is currently implemented only for PCIe hot plug > > > > > > bridges and for PowerPC PowerNV platform and it just call PCI secondary > > > > > > bus reset with some other hook. PCIe Warm Reset does not have API in > > > > > > kernel and therefore drivers do not export this type of reset via any > > > > > > kernel function (yet). > > > > > > > > > > Warm reset is beyond the scope of this series, but could be implemented > > > > > in a compatible way to fit within the pci_reset_fn_methods[] array > > > > > defined here. > > > > > > > > Ok! > > > > > > > > > Note that with this series the resets available through > > > > > pci_reset_function() and the per device reset attribute is sysfs remain > > > > > exactly the same as they are currently. The bus and slot reset > > > > > methods used here are limited to devices where only a single function is > > > > > affected by the reset, therefore it is not like the patch you proposed > > > > > which performed a reset irrespective of the downstream devices. This > > > > > series only enables selection of the existing methods. Thanks, > > > > > > > > > > Alex > > > > > > > > > > > > > But with this patch series, there is still an issue with PCI secondary > > > > bus reset mechanism as exported sysfs attribute does not do that > > > > remove-reset-rescan procedure. As discussed in other thread, this reset > > > > let device in unconfigured / broken state. > > > > > > No, there's not: > > > > > > int pci_reset_function(struct pci_dev *dev) > > > { > > > int rc; > > > > > > if (!dev->reset_fn) > > > return -ENOTTY; > > > > > > pci_dev_lock(dev); > > > >>> pci_dev_save_and_disable(dev); > > > > > > rc = __pci_reset_function_locked(dev); > > > > > > >>> pci_dev_restore(dev); > > > pci_dev_unlock(dev); > > > > > > return rc; > > > } > > > > > > The remove/re-scan was discussed primarily because your patch performed > > > a bus reset regardless of what devices were affected by that reset and > > > it's difficult to manage the scope where multiple devices are affected. > > > Here, the bus and slot reset functions will fail unless the scope is > > > limited to the single device triggering this reset. Thanks, > > > > > > Alex > > > > > > > I was thinking a bit more about it and I'm really sure how it would > > behave with hotplugging PCIe bridge. > > > > On aardvark PCIe controller I have already tested that secondary bus > > reset bit is triggering Hot Reset event and then also Link Down event. > > These events are not handled by aardvark driver yet (needs to > > implemented into kernel's emulated root bridge code). > > > > But I'm not sure how it would behave on real HW PCIe hotplugging bridge. > > Kernel has already code which removes PCIe device if it changes presence > > bit (and inform via interrupt). And Link Down event triggers this > > change. > > This is the difference between slot and bus resets, the slot reset is > implemented by the hotplug controller and disables presence detection > around the bus reset. Thanks, Yes, but I'm talking about bus reset, not about slot reset. I mean: to use bus reset via sysfs on hardware which supports slots and hotplugging. And if I'm reading code correctly, this combination is allowed, right? Via these new patches it is possible to disable slot reset and enable bus reset.