On Sun, Sep 27, 2020 at 06:45:45PM -0500, Bjorn Helgaas wrote:
On Tue, Sep 22, 2020 at 02:38:56PM -0700, Sean V Kelley wrote:
From: Qiuxu Zhuo <qiuxu.zhuo@xxxxxxxxx>
pci_dbg(dev, "broadcast error_detected message\n");
if (state == pci_channel_io_frozen) {
- pci_bridge_walk(bridge, report_frozen_detected, &status);
+ pci_bridge_walk(bridge, dev, report_frozen_detected, &status);
if (type == PCI_EXP_TYPE_RC_END) {
+ /*
+ * The callback only clears the Root Error Status
+ * of the RCEC (see aer.c).
+ */
+ if (bridge)
+ reset_subordinate_devices(bridge);
It's unfortunate to add yet another special case in this code, and I'm
not thrilled about the one in aer_root_reset() either. It's just not
obvious why they should be there. I'm sure if I spent 30 minutes
decoding things, it would all make sense. Guess I'm just griping
because I don't have a better suggestion.
I'm sorry, this was unkind of me. If I don't have a constructive
idea, there's no reason for me to complain about this. I apologize.
Bjorn