Lines Matching +full:enable +full:- +full:soft +full:- +full:reset

1 .. SPDX-License-Identifier: GPL-2.0
8 :Authors: - Linas Vepstas <linasvepstas@gmail.com>
9 - Richard Lary <rlary@us.ibm.com>
10 - Mike Mason <mmlnx@us.ibm.com>
17 and the PCI-host bridges found on IBM Power4, Power5 and Power6-based
22 offered, so that the affected PCI device(s) are reset and put back
23 into working condition. The reset phase requires coordination
32 including multiple instances of a device driver on multi-function
34 waiting for some i/o-space register to change, when it never will.
39 is forced by the need to handle multi-function devices, that is,
42 of reset it desires, the choices being a simple re-enabling of I/O
43 or requesting a slot reset.
45 If any driver requests a slot reset, that is what will be done.
47 After a reset and/or a re-enabling of I/O, all drivers are
52 The biggest reason for choosing a kernel-based implementation rather
53 than a user-space implementation was the need to deal with bus
56 file system is disconnected, a user-space mechanism would have to go
62 for example, the SCSI-generic layer already provides significant
74 pci_driver. A driver that fails to provide the structure is "non-aware",
101 PCI_ERS_RESULT_CAN_RECOVER, /* Device driver can recover without slot reset */
102 PCI_ERS_RESULT_NEED_RESET, /* Device driver wants slot to be reset. */
116 event will be platform-dependent, but will follow the general
120 -------------------
126 (PCIe r7.0 sec 6.2.11), the link to the sub-hierarchy with the
127 faulting device is disabled. Any device in the sub-hierarchy
131 --------------------
148 - PCI_ERS_RESULT_RECOVERED
151 - PCI_ERS_RESULT_CAN_RECOVER
156 - PCI_ERS_RESULT_NEED_RESET
158 slot reset.
159 - PCI_ERS_RESULT_DISCONNECT
166 then the platform should re-enable IOs on the slot (or do nothing in
168 proceeds to STEP 2 (MMIO Enable).
170 If any driver requested a slot reset (by returning PCI_ERS_RESULT_NEED_RESET),
171 then recovery proceeds to STEP 4 (Slot Reset).
182 Doing better requires complex multi-threaded logic in the error
196 --------------------
197 The platform re-enables MMIO to the device (but typically not the
205 reset or some such, but not restart operations. This callback is made if
207 link reset was performed by the HW. If the platform can't just re-enable IOs
208 without a slot reset or a link reset, it will not call this callback, and
209 instead will have gone directly to STEP 3 (Link Reset) or STEP 4 (Slot Reset).
220 sub-hierarchy with the faulting device is re-enabled in STEP 3 (Link
221 Reset). Hence devices in the sub-hierarchy are inaccessible until
222 STEP 4 (Slot Reset).
225 may not even be accessible in STEP 4 (Slot Reset). Drivers can detect
236 such an error might cause IOs to be re-blocked for the whole
239 into one of the next states, that is, link reset or slot reset.
242 - PCI_ERS_RESULT_RECOVERED
249 slot reset on platforms that support it.
251 - PCI_ERS_RESULT_NEED_RESET
254 reset to proceed.
256 - PCI_ERS_RESULT_DISCONNECT
258 reset driver dead. (To be defined more precisely)
262 proceeds to either STEP 3 (Link Reset) or to STEP 5 (Resume Operations).
265 proceeds to STEP 4 (Slot Reset)
267 STEP 3: Link Reset
268 ------------------
273 STEP 4: Slot Reset
274 ------------------
277 platform will perform a slot reset on the requesting PCI device(s).
278 The actual steps taken by a platform to perform a slot reset
279 will be platform-dependent. Upon completion of slot reset, the
282 Powerpc platforms implement two levels of slot reset:
283 soft reset(default) and fundamental(optional) reset.
285 Powerpc soft reset consists of asserting the adapter #RST line and then
288 power-on followed by power-on BIOS/system firmware initialization.
289 Soft reset is also known as hot-reset.
291 Powerpc fundamental reset is supported by PCIe cards only
295 For most PCI devices, a soft reset will be sufficient for recovery.
296 Optional fundamental reset is provided to support a limited number
297 of PCIe devices for which a soft reset is not sufficient
300 If the platform supports PCI hotplug, then the reset might be
305 a slot reset, the device driver will almost always use its standard
309 This call gives drivers the chance to re-initialize the hardware
310 (re-download firmware, etc.). At this point, the driver may assume
313 memory mapped I/O space and DMA. Interrupts (Legacy, MSI, or MSI-X)
322 it can't get the device operational after reset. If the platform
323 previously tried a soft reset, it might now try a hard reset (power
329 Drivers for multi-function cards will need to coordinate among
330 themselves as to which driver instance will perform any "one-shot"
334 + if (PCI_FUNC(pdev->devfn) == 0)
338 - PCI_ERS_RESULT_DISCONNECT
341 Drivers for PCIe cards that require a fundamental reset must
346 + /* Set EEH reset type to fundamental if required by hba */
348 + pdev->needs_freset = 1;
356 The current powerpc implementation does not try a power-cycle
357 reset if the driver returned PCI_ERS_RESULT_DISCONNECT.
362 -------------------------
374 -------------------------
380 cancel all pending I/O, refuse all new I/O, returning -EIO to
386 permanent failure in some way. If the device is hotplug-capable,
389 caused by over-heating, some by a poorly seated card. Many
392 errors. See the discussion in Documentation/arch/powerpc/eeh-pci-error-recovery.rst
393 for additional detail on real-life experience of the causes of
398 ---------------------------
400 no slot reset capability may want to just "ignore" drivers that can't
410 - There is no guarantee that interrupt delivery can proceed from any
415 - There is no guarantee that interrupt delivery is stopped, that is,
422 interrupts are routed to error-management capable slots and can deal
432 the file Documentation/arch/powerpc/eeh-pci-error-recovery.rst
438 - drivers/scsi/ipr
439 - drivers/scsi/sym53c8xx_2
440 - drivers/scsi/qla2xxx
441 - drivers/scsi/lpfc
442 - drivers/next/bnx2.c
443 - drivers/next/e100.c
444 - drivers/net/e1000
445 - drivers/net/e1000e
446 - drivers/net/ixgbe
447 - drivers/net/cxgb3
448 - drivers/net/s2io.c
454 - drivers/cxl/pci.c
457 -------