linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: poza@codeaurora.org (poza at codeaurora.org)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V5 3/3] PCI: Mask and unmask hotplug interrupts during reset
Date: Tue, 03 Jul 2018 20:42:12 +0530	[thread overview]
Message-ID: <fda77cee8e379f2e9b7ab55fefe17cad@codeaurora.org> (raw)
In-Reply-To: <20180703143434.GA4086@wunner.de>

On 2018-07-03 20:04, Lukas Wunner wrote:
> On Mon, Jul 02, 2018 at 06:52:47PM -0400, Sinan Kaya wrote:
>> @@ -308,8 +310,17 @@ void pcie_do_fatal_recovery(struct pci_dev *dev, 
>> u32 service)
>>  		pci_dev_put(pdev);
>>  	}
>> 
>> +	hpsvc = pcie_port_find_service(udev, PCIE_PORT_SERVICE_HP);
>> +	hpdev = pcie_port_find_device(udev, PCIE_PORT_SERVICE_HP);
>> +
>> +	if (hpdev && hpsvc)
>> +		hpsvc->mask_irq(to_pcie_device(hpdev));
>> +
>>  	result = reset_link(udev, service);
>> 
>> +	if (hpdev && hpsvc)
>> +		hpsvc->unmask_irq(to_pcie_device(hpdev));
>> +
> 
> We've already got the ->reset_slot callback in struct hotplug_slot_ops,
> I'm wondering if we really need additional ones for this use case.
> 
> If you just do...
> 
> 	if (!pci_probe_reset_slot(dev->slot))
> 		pci_reset_slot(dev->slot)
> 	else {
> 		/* regular code path */
> 	}
> 
> would that not be equivalent?
> 

pcie_do_fatal_recovery() calls
           reset_link()
              which calls dpc_reset_link() or aer_root_reset() depending 
on the event.

and dpc_reset_link() and aer_root_reset() do their own cleanup stuffs.
infact, aer_root_reset() is the only function which actually triggers 
pci_reset_bridge_secondary_bus().

So if we try to fit in your suggestion:

if (!pci_probe_reset_slot(dev->slot))
{
     pci_reset_slot(dev->slot)
     result = reset_link(udev, service); >> in this case aer_root_reset 
must not call pci_reset_bridge_secondary_bus()
} else
     result = reset_link(udev, service); >> in this case aer_root_reset 
must call pci_reset_bridge_secondary_bus() [since bridge is not hotplug 
capable)

Did I get your suggestion right ?

Regards,
Oza.

> (It's worth noting though that pciehp is the only hotplug driver
> implementing the ->reset_slot callback.  If hotplug is handled by
> a different driver or by the platform firmware, devices may still
> be removed and re-enumerated twice.)
> 

> Thanks,
> 
> Lukas

  parent reply	other threads:[~2018-07-03 15:12 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-02 22:52 [PATCH V5 0/3] PCI: separate hotplug handling from fatal error handling Sinan Kaya
2018-07-02 22:52 ` [PATCH V5 1/3] PCI: pciehp: implement mask and unmask interrupt functions Sinan Kaya
2018-07-02 22:52 ` [PATCH V5 2/3] PCI: pciehp: reuse pciehp_mask/unmask_irq() in reset_slot() Sinan Kaya
2018-07-02 22:52 ` [PATCH V5 3/3] PCI: Mask and unmask hotplug interrupts during reset Sinan Kaya
     [not found]   ` <20180703083447.GA2689@wunner.de>
2018-07-03 10:52     ` poza at codeaurora.org
2018-07-03 12:04       ` okaya at codeaurora.org
2018-07-03 11:30     ` okaya at codeaurora.org
2018-07-03 13:11       ` poza at codeaurora.org
2018-07-03 13:25         ` Sinan Kaya
2018-07-03 13:31           ` Sinan Kaya
     [not found]             ` <20180703135956.GA18639@wunner.de>
2018-07-03 14:10               ` poza at codeaurora.org
2018-07-03 15:34               ` Sinan Kaya
     [not found]       ` <20180703141255.GB18639@wunner.de>
2018-07-03 14:29         ` poza at codeaurora.org
     [not found]   ` <20180703143434.GA4086@wunner.de>
2018-07-03 15:12     ` poza at codeaurora.org [this message]
2018-07-03 15:49       ` Sinan Kaya
2018-07-03 15:43     ` Sinan Kaya
     [not found]       ` <20180708171418.GA11476@wunner.de>
2018-07-09 14:48         ` Sinan Kaya
     [not found]           ` <20180709160008.GA1490@wunner.de>
2018-07-10 18:30             ` Sinan Kaya
2018-07-20 20:01               ` Bjorn Helgaas
2018-07-21  2:58                 ` Sinan Kaya
2018-07-21  6:07                   ` Sinan Kaya
2018-07-25  8:29                     ` poza at codeaurora.org
2018-07-31 18:44 ` [PATCH V5 0/3] PCI: separate hotplug handling from fatal error handling Bjorn Helgaas
2018-07-31 18:54   ` Sinan Kaya
2018-07-31 20:16     ` Bjorn Helgaas

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=fda77cee8e379f2e9b7ab55fefe17cad@codeaurora.org \
    --to=poza@codeaurora.org \
    --cc=linux-arm-kernel@lists.infradead.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).