From: Gavin Shan <gwshan@linux.vnet.ibm.com>
To: cascardo@linux.vnet.ibm.com
Cc: bhelgaas@google.com, linux-pci@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org,
Gavin Shan <gwshan@linux.vnet.ibm.com>
Subject: Re: [PATCH 0/4] Support registering specific reset handler
Date: Fri, 20 Feb 2015 16:53:08 +1100 [thread overview]
Message-ID: <20150220055308.GA26047@shangw> (raw)
In-Reply-To: <20150219185746.GA4440@oc0812247204.ltc.br.ibm.com>
On Thu, Feb 19, 2015 at 04:57:47PM -0200, cascardo@linux.vnet.ibm.com wrote:
>On Tue, Feb 17, 2015 at 09:36:47AM +1100, Gavin Shan wrote:
>> On Mon, Feb 16, 2015 at 11:14:27AM -0200, cascardo@linux.vnet.ibm.com wrote:
>> >On Fri, Feb 13, 2015 at 03:54:55PM +1100, Gavin Shan wrote:
>> >> VFIO PCI infrastructure depends on pci_reset_function() to do reset on
>> >> PCI devices so that they would be in clean state when host or guest grabs
>> >> them. Unfortunately, the function doesn't work (or not well) on some PCI
>> >> devices that require EEH PE reset.
>> >>
>> >> The patchset extends the quirk for PCI device speicific reset methods to
>> >> allow dynamically registration. With it, we can translate reset requests
>> >> for those special PCI devcies to EEH PE reset, which is only avaialble on
>> >> 64-bits PowerPC platforms.
>> >>
>> >
>> >Hi, Gavin.
>> >
>> >I like your approach overall. That allows us to confine these quirks to
>> >the platforms where they are relevant. I would make the quirks more
>> >specific, though, instead of doing them for all IBM and Mellanox
>> >devices.
>> >
>>
>> Yeah, we need have more specific vendor/device IDs for PATCH[4/4]. Could
>> you please take a look on PATCH[4/4] and then suggest the specific devices
>> that requries the platform-dependent reset quirk? Especially the device IDs
>> for IBM/Mellanox we need put add quirks for.
>>
>> >I wonder if we should not have some form of domain reset, where we would
>> >reset all the devices on the same group, and use that on vfio. Grouping
>> >the devices would then be made platform-dependent, as well as the reset
>> >method. On powernv, we would group by IOMMU group and issue a
>> >fundamental reset.
>> >
>>
>> I'm assuming "domain reset" is PE reset, which is the specific reset handler
>> tries to do on PowerNV platform. The reason why we need platform specific
>> reset handler is some adapters can't support function level reset methods
>> (except pci_dev_specific_reset()) in __pci_dev_reset().
>>
>
>Well, in the case of Power servers, this would be the PE reset, I am not
>sure what this would be on other platforms. No other platform implements
>pci_set_pcie_reset_state, which I think would be one possible to
>implement such a reset.
>
>What I am saying is that we should consider doing this on all platforms
>and for all adapters, because this is not specific to Power and this is
>not specific to this particular set of adapters. Otherwise, one can
>simply program one adapter in the guest to write to host memory,
>shutdown, and since no reset will take place, the card will simply write
>to host memory when the guest is finished with and IOMMU is off.
>
Yes, I believe your way will make things simpler and we don't need the
code to support registering reset handler dynamically at atll. Please
confirm if following idea is what you're suggesting:
- Introduce function drivers/pci/quirks.c::pci_dev_specific_reset(), which
will be added to pci_dev_reset_methods[] for various vendor/device IDs.
- pci_dev_specific_reset() routes the reset (or probe) request to
pci_set_pcie_reset_state(), which needs one more syntax for reset probing.
In turn, pci_set_pcie_reset_state() calls pcibios_set_pcie_reset_state(),
which returns -ETTY by default.
For PowerPC, pcibios_set_pcie_reset_state() will do PE reset, which can't
be ported to other platforms as it depends on PowerPC unique EEH feature.
So other platforms have to override this function and do things similar to
PowerPC PE reset there.
Thanks,
Gavin
>> >> Gavin Shan (4):
>> >> PCI: Rename struct pci_dev_reset_methods
>> >> PCI: Introduce list for device reset methods
>> >> PCI: Allow registering reset method
>> >> powerpc/powernv: Register PCI dev specific reset handlers
>> >>
>> >> arch/powerpc/platforms/powernv/pci.c | 61 +++++++++++++++
>> >> drivers/pci/pci.h | 3 +-
>> >> drivers/pci/quirks.c | 139 ++++++++++++++++++++++++++++++-----
>> >> include/linux/pci.h | 9 +++
>> >> 4 files changed, 192 insertions(+), 20 deletions(-)
>> >>
>> >> --
>> >> 1.8.3.2
>> >>
>>
>> _______________________________________________
>> Linuxppc-dev mailing list
>> Linuxppc-dev@lists.ozlabs.org
>> https://lists.ozlabs.org/listinfo/linuxppc-dev
next prev parent reply other threads:[~2015-02-20 5:54 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-13 4:54 [PATCH 0/4] Support registering specific reset handler Gavin Shan
2015-02-13 4:54 ` [PATCH 1/4] PCI: Rename struct pci_dev_reset_methods Gavin Shan
2015-02-13 4:54 ` [PATCH 2/4] PCI: Introduce list for device reset methods Gavin Shan
2015-02-13 4:54 ` [PATCH 3/4] PCI: Allow registering reset method Gavin Shan
2015-02-13 4:54 ` [PATCH 4/4] powerpc/powernv: Register PCI dev specific reset handlers Gavin Shan
2015-02-16 13:14 ` [PATCH 0/4] Support registering specific reset handler cascardo
2015-02-16 22:36 ` Gavin Shan
2015-02-19 18:57 ` cascardo
2015-02-20 5:53 ` Gavin Shan [this message]
2015-03-06 18:38 ` Bjorn Helgaas
2015-03-10 6:31 ` Gavin Shan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150220055308.GA26047@shangw \
--to=gwshan@linux.vnet.ibm.com \
--cc=bhelgaas@google.com \
--cc=cascardo@linux.vnet.ibm.com \
--cc=linux-pci@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).