Lines Matching +full:compound +full:- +full:device

1 // SPDX-License-Identifier: GPL-2.0-or-later
21 #include <asm/pci-bridge.h>
24 #include <asm/ppc-pci.h>
25 #include <asm/pnv-pci.h>
47 return -ENXIO; in pnv_pci_get_slot_id()
56 if (!of_device_is_compatible(node, "ibm,ioda2-phb") && in pnv_pci_get_slot_id()
57 !of_device_is_compatible(node, "ibm,ioda3-phb") && in pnv_pci_get_slot_id()
58 !of_device_is_compatible(node, "ibm,ioda2-npu2-opencapi-phb")) { in pnv_pci_get_slot_id()
63 ret = of_property_read_u64(node, "ibm,opal-phbid", &phbid); in pnv_pci_get_slot_id()
66 return -ENXIO; in pnv_pci_get_slot_id()
69 if (of_device_is_compatible(node, "ibm,ioda2-npu2-opencapi-phb")) in pnv_pci_get_slot_id()
76 return -ENODEV; in pnv_pci_get_slot_id()
85 return -ENXIO; in pnv_pci_get_device_tree()
89 return -EIO; in pnv_pci_get_device_tree()
100 return -ENXIO; in pnv_pci_get_presence_state()
104 return -EIO; in pnv_pci_get_presence_state()
115 return -ENXIO; in pnv_pci_get_power_state()
119 return -EIO; in pnv_pci_get_power_state()
132 return -ENXIO; in pnv_pci_set_power_state()
143 ret = -EIO; in pnv_pci_set_power_state()
175 pr_info("PE[..%03x] A/B: as above\n", i-1); in pnv_pci_dump_pest()
197 pr_info("P7IOC PHB#%x Diag-data (Version: %d)\n", in pnv_pci_dump_p7ioc_diag_data()
198 hose->global_number, be32_to_cpu(common->version)); in pnv_pci_dump_p7ioc_diag_data()
200 if (data->brdgCtl) in pnv_pci_dump_p7ioc_diag_data()
202 be32_to_cpu(data->brdgCtl)); in pnv_pci_dump_p7ioc_diag_data()
203 if (data->portStatusReg || data->rootCmplxStatus || in pnv_pci_dump_p7ioc_diag_data()
204 data->busAgentStatus) in pnv_pci_dump_p7ioc_diag_data()
206 be32_to_cpu(data->portStatusReg), in pnv_pci_dump_p7ioc_diag_data()
207 be32_to_cpu(data->rootCmplxStatus), in pnv_pci_dump_p7ioc_diag_data()
208 be32_to_cpu(data->busAgentStatus)); in pnv_pci_dump_p7ioc_diag_data()
209 if (data->deviceStatus || data->slotStatus || in pnv_pci_dump_p7ioc_diag_data()
210 data->linkStatus || data->devCmdStatus || in pnv_pci_dump_p7ioc_diag_data()
211 data->devSecStatus) in pnv_pci_dump_p7ioc_diag_data()
213 be32_to_cpu(data->deviceStatus), in pnv_pci_dump_p7ioc_diag_data()
214 be32_to_cpu(data->slotStatus), in pnv_pci_dump_p7ioc_diag_data()
215 be32_to_cpu(data->linkStatus), in pnv_pci_dump_p7ioc_diag_data()
216 be32_to_cpu(data->devCmdStatus), in pnv_pci_dump_p7ioc_diag_data()
217 be32_to_cpu(data->devSecStatus)); in pnv_pci_dump_p7ioc_diag_data()
218 if (data->rootErrorStatus || data->uncorrErrorStatus || in pnv_pci_dump_p7ioc_diag_data()
219 data->corrErrorStatus) in pnv_pci_dump_p7ioc_diag_data()
221 be32_to_cpu(data->rootErrorStatus), in pnv_pci_dump_p7ioc_diag_data()
222 be32_to_cpu(data->uncorrErrorStatus), in pnv_pci_dump_p7ioc_diag_data()
223 be32_to_cpu(data->corrErrorStatus)); in pnv_pci_dump_p7ioc_diag_data()
224 if (data->tlpHdr1 || data->tlpHdr2 || in pnv_pci_dump_p7ioc_diag_data()
225 data->tlpHdr3 || data->tlpHdr4) in pnv_pci_dump_p7ioc_diag_data()
227 be32_to_cpu(data->tlpHdr1), in pnv_pci_dump_p7ioc_diag_data()
228 be32_to_cpu(data->tlpHdr2), in pnv_pci_dump_p7ioc_diag_data()
229 be32_to_cpu(data->tlpHdr3), in pnv_pci_dump_p7ioc_diag_data()
230 be32_to_cpu(data->tlpHdr4)); in pnv_pci_dump_p7ioc_diag_data()
231 if (data->sourceId || data->errorClass || in pnv_pci_dump_p7ioc_diag_data()
232 data->correlator) in pnv_pci_dump_p7ioc_diag_data()
234 be32_to_cpu(data->sourceId), in pnv_pci_dump_p7ioc_diag_data()
235 be64_to_cpu(data->errorClass), in pnv_pci_dump_p7ioc_diag_data()
236 be64_to_cpu(data->correlator)); in pnv_pci_dump_p7ioc_diag_data()
237 if (data->p7iocPlssr || data->p7iocCsr) in pnv_pci_dump_p7ioc_diag_data()
239 be64_to_cpu(data->p7iocPlssr), in pnv_pci_dump_p7ioc_diag_data()
240 be64_to_cpu(data->p7iocCsr)); in pnv_pci_dump_p7ioc_diag_data()
241 if (data->lemFir) in pnv_pci_dump_p7ioc_diag_data()
243 be64_to_cpu(data->lemFir), in pnv_pci_dump_p7ioc_diag_data()
244 be64_to_cpu(data->lemErrorMask), in pnv_pci_dump_p7ioc_diag_data()
245 be64_to_cpu(data->lemWOF)); in pnv_pci_dump_p7ioc_diag_data()
246 if (data->phbErrorStatus) in pnv_pci_dump_p7ioc_diag_data()
248 be64_to_cpu(data->phbErrorStatus), in pnv_pci_dump_p7ioc_diag_data()
249 be64_to_cpu(data->phbFirstErrorStatus), in pnv_pci_dump_p7ioc_diag_data()
250 be64_to_cpu(data->phbErrorLog0), in pnv_pci_dump_p7ioc_diag_data()
251 be64_to_cpu(data->phbErrorLog1)); in pnv_pci_dump_p7ioc_diag_data()
252 if (data->mmioErrorStatus) in pnv_pci_dump_p7ioc_diag_data()
254 be64_to_cpu(data->mmioErrorStatus), in pnv_pci_dump_p7ioc_diag_data()
255 be64_to_cpu(data->mmioFirstErrorStatus), in pnv_pci_dump_p7ioc_diag_data()
256 be64_to_cpu(data->mmioErrorLog0), in pnv_pci_dump_p7ioc_diag_data()
257 be64_to_cpu(data->mmioErrorLog1)); in pnv_pci_dump_p7ioc_diag_data()
258 if (data->dma0ErrorStatus) in pnv_pci_dump_p7ioc_diag_data()
260 be64_to_cpu(data->dma0ErrorStatus), in pnv_pci_dump_p7ioc_diag_data()
261 be64_to_cpu(data->dma0FirstErrorStatus), in pnv_pci_dump_p7ioc_diag_data()
262 be64_to_cpu(data->dma0ErrorLog0), in pnv_pci_dump_p7ioc_diag_data()
263 be64_to_cpu(data->dma0ErrorLog1)); in pnv_pci_dump_p7ioc_diag_data()
264 if (data->dma1ErrorStatus) in pnv_pci_dump_p7ioc_diag_data()
266 be64_to_cpu(data->dma1ErrorStatus), in pnv_pci_dump_p7ioc_diag_data()
267 be64_to_cpu(data->dma1FirstErrorStatus), in pnv_pci_dump_p7ioc_diag_data()
268 be64_to_cpu(data->dma1ErrorLog0), in pnv_pci_dump_p7ioc_diag_data()
269 be64_to_cpu(data->dma1ErrorLog1)); in pnv_pci_dump_p7ioc_diag_data()
271 pnv_pci_dump_pest(data->pestA, data->pestB, OPAL_P7IOC_NUM_PEST_REGS); in pnv_pci_dump_p7ioc_diag_data()
280 pr_info("PHB3 PHB#%x Diag-data (Version: %d)\n", in pnv_pci_dump_phb3_diag_data()
281 hose->global_number, be32_to_cpu(common->version)); in pnv_pci_dump_phb3_diag_data()
282 if (data->brdgCtl) in pnv_pci_dump_phb3_diag_data()
284 be32_to_cpu(data->brdgCtl)); in pnv_pci_dump_phb3_diag_data()
285 if (data->portStatusReg || data->rootCmplxStatus || in pnv_pci_dump_phb3_diag_data()
286 data->busAgentStatus) in pnv_pci_dump_phb3_diag_data()
288 be32_to_cpu(data->portStatusReg), in pnv_pci_dump_phb3_diag_data()
289 be32_to_cpu(data->rootCmplxStatus), in pnv_pci_dump_phb3_diag_data()
290 be32_to_cpu(data->busAgentStatus)); in pnv_pci_dump_phb3_diag_data()
291 if (data->deviceStatus || data->slotStatus || in pnv_pci_dump_phb3_diag_data()
292 data->linkStatus || data->devCmdStatus || in pnv_pci_dump_phb3_diag_data()
293 data->devSecStatus) in pnv_pci_dump_phb3_diag_data()
295 be32_to_cpu(data->deviceStatus), in pnv_pci_dump_phb3_diag_data()
296 be32_to_cpu(data->slotStatus), in pnv_pci_dump_phb3_diag_data()
297 be32_to_cpu(data->linkStatus), in pnv_pci_dump_phb3_diag_data()
298 be32_to_cpu(data->devCmdStatus), in pnv_pci_dump_phb3_diag_data()
299 be32_to_cpu(data->devSecStatus)); in pnv_pci_dump_phb3_diag_data()
300 if (data->rootErrorStatus || data->uncorrErrorStatus || in pnv_pci_dump_phb3_diag_data()
301 data->corrErrorStatus) in pnv_pci_dump_phb3_diag_data()
303 be32_to_cpu(data->rootErrorStatus), in pnv_pci_dump_phb3_diag_data()
304 be32_to_cpu(data->uncorrErrorStatus), in pnv_pci_dump_phb3_diag_data()
305 be32_to_cpu(data->corrErrorStatus)); in pnv_pci_dump_phb3_diag_data()
306 if (data->tlpHdr1 || data->tlpHdr2 || in pnv_pci_dump_phb3_diag_data()
307 data->tlpHdr3 || data->tlpHdr4) in pnv_pci_dump_phb3_diag_data()
309 be32_to_cpu(data->tlpHdr1), in pnv_pci_dump_phb3_diag_data()
310 be32_to_cpu(data->tlpHdr2), in pnv_pci_dump_phb3_diag_data()
311 be32_to_cpu(data->tlpHdr3), in pnv_pci_dump_phb3_diag_data()
312 be32_to_cpu(data->tlpHdr4)); in pnv_pci_dump_phb3_diag_data()
313 if (data->sourceId || data->errorClass || in pnv_pci_dump_phb3_diag_data()
314 data->correlator) in pnv_pci_dump_phb3_diag_data()
316 be32_to_cpu(data->sourceId), in pnv_pci_dump_phb3_diag_data()
317 be64_to_cpu(data->errorClass), in pnv_pci_dump_phb3_diag_data()
318 be64_to_cpu(data->correlator)); in pnv_pci_dump_phb3_diag_data()
319 if (data->nFir) in pnv_pci_dump_phb3_diag_data()
321 be64_to_cpu(data->nFir), in pnv_pci_dump_phb3_diag_data()
322 be64_to_cpu(data->nFirMask), in pnv_pci_dump_phb3_diag_data()
323 be64_to_cpu(data->nFirWOF)); in pnv_pci_dump_phb3_diag_data()
324 if (data->phbPlssr || data->phbCsr) in pnv_pci_dump_phb3_diag_data()
326 be64_to_cpu(data->phbPlssr), in pnv_pci_dump_phb3_diag_data()
327 be64_to_cpu(data->phbCsr)); in pnv_pci_dump_phb3_diag_data()
328 if (data->lemFir) in pnv_pci_dump_phb3_diag_data()
330 be64_to_cpu(data->lemFir), in pnv_pci_dump_phb3_diag_data()
331 be64_to_cpu(data->lemErrorMask), in pnv_pci_dump_phb3_diag_data()
332 be64_to_cpu(data->lemWOF)); in pnv_pci_dump_phb3_diag_data()
333 if (data->phbErrorStatus) in pnv_pci_dump_phb3_diag_data()
335 be64_to_cpu(data->phbErrorStatus), in pnv_pci_dump_phb3_diag_data()
336 be64_to_cpu(data->phbFirstErrorStatus), in pnv_pci_dump_phb3_diag_data()
337 be64_to_cpu(data->phbErrorLog0), in pnv_pci_dump_phb3_diag_data()
338 be64_to_cpu(data->phbErrorLog1)); in pnv_pci_dump_phb3_diag_data()
339 if (data->mmioErrorStatus) in pnv_pci_dump_phb3_diag_data()
341 be64_to_cpu(data->mmioErrorStatus), in pnv_pci_dump_phb3_diag_data()
342 be64_to_cpu(data->mmioFirstErrorStatus), in pnv_pci_dump_phb3_diag_data()
343 be64_to_cpu(data->mmioErrorLog0), in pnv_pci_dump_phb3_diag_data()
344 be64_to_cpu(data->mmioErrorLog1)); in pnv_pci_dump_phb3_diag_data()
345 if (data->dma0ErrorStatus) in pnv_pci_dump_phb3_diag_data()
347 be64_to_cpu(data->dma0ErrorStatus), in pnv_pci_dump_phb3_diag_data()
348 be64_to_cpu(data->dma0FirstErrorStatus), in pnv_pci_dump_phb3_diag_data()
349 be64_to_cpu(data->dma0ErrorLog0), in pnv_pci_dump_phb3_diag_data()
350 be64_to_cpu(data->dma0ErrorLog1)); in pnv_pci_dump_phb3_diag_data()
351 if (data->dma1ErrorStatus) in pnv_pci_dump_phb3_diag_data()
353 be64_to_cpu(data->dma1ErrorStatus), in pnv_pci_dump_phb3_diag_data()
354 be64_to_cpu(data->dma1FirstErrorStatus), in pnv_pci_dump_phb3_diag_data()
355 be64_to_cpu(data->dma1ErrorLog0), in pnv_pci_dump_phb3_diag_data()
356 be64_to_cpu(data->dma1ErrorLog1)); in pnv_pci_dump_phb3_diag_data()
358 pnv_pci_dump_pest(data->pestA, data->pestB, OPAL_PHB3_NUM_PEST_REGS); in pnv_pci_dump_phb3_diag_data()
367 pr_info("PHB4 PHB#%d Diag-data (Version: %d)\n", in pnv_pci_dump_phb4_diag_data()
368 hose->global_number, be32_to_cpu(common->version)); in pnv_pci_dump_phb4_diag_data()
369 if (data->brdgCtl) in pnv_pci_dump_phb4_diag_data()
371 be32_to_cpu(data->brdgCtl)); in pnv_pci_dump_phb4_diag_data()
372 if (data->deviceStatus || data->slotStatus || in pnv_pci_dump_phb4_diag_data()
373 data->linkStatus || data->devCmdStatus || in pnv_pci_dump_phb4_diag_data()
374 data->devSecStatus) in pnv_pci_dump_phb4_diag_data()
376 be32_to_cpu(data->deviceStatus), in pnv_pci_dump_phb4_diag_data()
377 be32_to_cpu(data->slotStatus), in pnv_pci_dump_phb4_diag_data()
378 be32_to_cpu(data->linkStatus), in pnv_pci_dump_phb4_diag_data()
379 be32_to_cpu(data->devCmdStatus), in pnv_pci_dump_phb4_diag_data()
380 be32_to_cpu(data->devSecStatus)); in pnv_pci_dump_phb4_diag_data()
381 if (data->rootErrorStatus || data->uncorrErrorStatus || in pnv_pci_dump_phb4_diag_data()
382 data->corrErrorStatus) in pnv_pci_dump_phb4_diag_data()
384 be32_to_cpu(data->rootErrorStatus), in pnv_pci_dump_phb4_diag_data()
385 be32_to_cpu(data->uncorrErrorStatus), in pnv_pci_dump_phb4_diag_data()
386 be32_to_cpu(data->corrErrorStatus)); in pnv_pci_dump_phb4_diag_data()
387 if (data->tlpHdr1 || data->tlpHdr2 || in pnv_pci_dump_phb4_diag_data()
388 data->tlpHdr3 || data->tlpHdr4) in pnv_pci_dump_phb4_diag_data()
390 be32_to_cpu(data->tlpHdr1), in pnv_pci_dump_phb4_diag_data()
391 be32_to_cpu(data->tlpHdr2), in pnv_pci_dump_phb4_diag_data()
392 be32_to_cpu(data->tlpHdr3), in pnv_pci_dump_phb4_diag_data()
393 be32_to_cpu(data->tlpHdr4)); in pnv_pci_dump_phb4_diag_data()
394 if (data->sourceId) in pnv_pci_dump_phb4_diag_data()
395 pr_info("sourceId: %08x\n", be32_to_cpu(data->sourceId)); in pnv_pci_dump_phb4_diag_data()
396 if (data->nFir) in pnv_pci_dump_phb4_diag_data()
398 be64_to_cpu(data->nFir), in pnv_pci_dump_phb4_diag_data()
399 be64_to_cpu(data->nFirMask), in pnv_pci_dump_phb4_diag_data()
400 be64_to_cpu(data->nFirWOF)); in pnv_pci_dump_phb4_diag_data()
401 if (data->phbPlssr || data->phbCsr) in pnv_pci_dump_phb4_diag_data()
403 be64_to_cpu(data->phbPlssr), in pnv_pci_dump_phb4_diag_data()
404 be64_to_cpu(data->phbCsr)); in pnv_pci_dump_phb4_diag_data()
405 if (data->lemFir) in pnv_pci_dump_phb4_diag_data()
407 be64_to_cpu(data->lemFir), in pnv_pci_dump_phb4_diag_data()
408 be64_to_cpu(data->lemErrorMask), in pnv_pci_dump_phb4_diag_data()
409 be64_to_cpu(data->lemWOF)); in pnv_pci_dump_phb4_diag_data()
410 if (data->phbErrorStatus) in pnv_pci_dump_phb4_diag_data()
412 be64_to_cpu(data->phbErrorStatus), in pnv_pci_dump_phb4_diag_data()
413 be64_to_cpu(data->phbFirstErrorStatus), in pnv_pci_dump_phb4_diag_data()
414 be64_to_cpu(data->phbErrorLog0), in pnv_pci_dump_phb4_diag_data()
415 be64_to_cpu(data->phbErrorLog1)); in pnv_pci_dump_phb4_diag_data()
416 if (data->phbTxeErrorStatus) in pnv_pci_dump_phb4_diag_data()
418 be64_to_cpu(data->phbTxeErrorStatus), in pnv_pci_dump_phb4_diag_data()
419 be64_to_cpu(data->phbTxeFirstErrorStatus), in pnv_pci_dump_phb4_diag_data()
420 be64_to_cpu(data->phbTxeErrorLog0), in pnv_pci_dump_phb4_diag_data()
421 be64_to_cpu(data->phbTxeErrorLog1)); in pnv_pci_dump_phb4_diag_data()
422 if (data->phbRxeArbErrorStatus) in pnv_pci_dump_phb4_diag_data()
424 be64_to_cpu(data->phbRxeArbErrorStatus), in pnv_pci_dump_phb4_diag_data()
425 be64_to_cpu(data->phbRxeArbFirstErrorStatus), in pnv_pci_dump_phb4_diag_data()
426 be64_to_cpu(data->phbRxeArbErrorLog0), in pnv_pci_dump_phb4_diag_data()
427 be64_to_cpu(data->phbRxeArbErrorLog1)); in pnv_pci_dump_phb4_diag_data()
428 if (data->phbRxeMrgErrorStatus) in pnv_pci_dump_phb4_diag_data()
430 be64_to_cpu(data->phbRxeMrgErrorStatus), in pnv_pci_dump_phb4_diag_data()
431 be64_to_cpu(data->phbRxeMrgFirstErrorStatus), in pnv_pci_dump_phb4_diag_data()
432 be64_to_cpu(data->phbRxeMrgErrorLog0), in pnv_pci_dump_phb4_diag_data()
433 be64_to_cpu(data->phbRxeMrgErrorLog1)); in pnv_pci_dump_phb4_diag_data()
434 if (data->phbRxeTceErrorStatus) in pnv_pci_dump_phb4_diag_data()
436 be64_to_cpu(data->phbRxeTceErrorStatus), in pnv_pci_dump_phb4_diag_data()
437 be64_to_cpu(data->phbRxeTceFirstErrorStatus), in pnv_pci_dump_phb4_diag_data()
438 be64_to_cpu(data->phbRxeTceErrorLog0), in pnv_pci_dump_phb4_diag_data()
439 be64_to_cpu(data->phbRxeTceErrorLog1)); in pnv_pci_dump_phb4_diag_data()
441 if (data->phbPblErrorStatus) in pnv_pci_dump_phb4_diag_data()
443 be64_to_cpu(data->phbPblErrorStatus), in pnv_pci_dump_phb4_diag_data()
444 be64_to_cpu(data->phbPblFirstErrorStatus), in pnv_pci_dump_phb4_diag_data()
445 be64_to_cpu(data->phbPblErrorLog0), in pnv_pci_dump_phb4_diag_data()
446 be64_to_cpu(data->phbPblErrorLog1)); in pnv_pci_dump_phb4_diag_data()
447 if (data->phbPcieDlpErrorStatus) in pnv_pci_dump_phb4_diag_data()
449 be64_to_cpu(data->phbPcieDlpErrorLog1), in pnv_pci_dump_phb4_diag_data()
450 be64_to_cpu(data->phbPcieDlpErrorLog2), in pnv_pci_dump_phb4_diag_data()
451 be64_to_cpu(data->phbPcieDlpErrorStatus)); in pnv_pci_dump_phb4_diag_data()
452 if (data->phbRegbErrorStatus) in pnv_pci_dump_phb4_diag_data()
454 be64_to_cpu(data->phbRegbErrorStatus), in pnv_pci_dump_phb4_diag_data()
455 be64_to_cpu(data->phbRegbFirstErrorStatus), in pnv_pci_dump_phb4_diag_data()
456 be64_to_cpu(data->phbRegbErrorLog0), in pnv_pci_dump_phb4_diag_data()
457 be64_to_cpu(data->phbRegbErrorLog1)); in pnv_pci_dump_phb4_diag_data()
460 pnv_pci_dump_pest(data->pestA, data->pestB, OPAL_PHB4_NUM_PEST_REGS); in pnv_pci_dump_phb4_diag_data()
472 switch (be32_to_cpu(common->ioType)) { in pnv_pci_dump_phb_diag_data()
484 __func__, be32_to_cpu(common->ioType)); in pnv_pci_dump_phb_diag_data()
493 spin_lock_irqsave(&phb->lock, flags); in pnv_pci_handle_eeh_config()
495 /* Fetch PHB diag-data */ in pnv_pci_handle_eeh_config()
496 rc = opal_pci_get_phb_diag_data2(phb->opal_id, phb->diag_data, in pnv_pci_handle_eeh_config()
497 phb->diag_data_size); in pnv_pci_handle_eeh_config()
500 /* If PHB supports compound PE, to handle it */ in pnv_pci_handle_eeh_config()
501 if (phb->unfreeze_pe) { in pnv_pci_handle_eeh_config()
502 ret = phb->unfreeze_pe(phb, in pnv_pci_handle_eeh_config()
506 rc = opal_pci_eeh_freeze_clear(phb->opal_id, in pnv_pci_handle_eeh_config()
511 "PHB#%x-PE#%x\n", in pnv_pci_handle_eeh_config()
512 __func__, rc, phb->hose->global_number, in pnv_pci_handle_eeh_config()
514 ret = -EIO; in pnv_pci_handle_eeh_config()
525 pnv_pci_dump_phb_diag_data(phb->hose, phb->diag_data); in pnv_pci_handle_eeh_config()
527 spin_unlock_irqrestore(&phb->lock, flags); in pnv_pci_handle_eeh_config()
532 struct pnv_phb *phb = pdn->phb->private_data; in pnv_pci_config_check_eeh()
543 pe_no = pdn->pe_number; in pnv_pci_config_check_eeh()
545 pe_no = phb->ioda.reserved_pe_idx; in pnv_pci_config_check_eeh()
549 * Fetch frozen state. If the PHB support compound PE, in pnv_pci_config_check_eeh()
552 if (phb->get_pe_state) { in pnv_pci_config_check_eeh()
553 fstate = phb->get_pe_state(phb, pe_no); in pnv_pci_config_check_eeh()
555 rc = opal_pci_eeh_freeze_status(phb->opal_id, in pnv_pci_config_check_eeh()
561 pr_warn("%s: Failure %lld getting PHB#%x-PE#%x state\n", in pnv_pci_config_check_eeh()
562 __func__, rc, phb->hose->global_number, pe_no); in pnv_pci_config_check_eeh()
567 pr_devel(" -> EEH check, bdfn=%04x PE#%x fstate=%x\n", in pnv_pci_config_check_eeh()
568 (pdn->busno << 8) | (pdn->devfn), pe_no, fstate); in pnv_pci_config_check_eeh()
575 * If PHB supports compound PE, freeze it for in pnv_pci_config_check_eeh()
578 if (phb->freeze_pe) in pnv_pci_config_check_eeh()
579 phb->freeze_pe(phb, pe_no); in pnv_pci_config_check_eeh()
588 struct pnv_phb *phb = pdn->phb->private_data; in pnv_pci_cfg_read()
589 u32 bdfn = (pdn->busno << 8) | pdn->devfn; in pnv_pci_cfg_read()
595 rc = opal_pci_config_read_byte(phb->opal_id, bdfn, where, &v8); in pnv_pci_cfg_read()
601 rc = opal_pci_config_read_half_word(phb->opal_id, bdfn, where, in pnv_pci_cfg_read()
608 rc = opal_pci_config_read_word(phb->opal_id, bdfn, where, &v32); in pnv_pci_cfg_read()
616 pr_devel("%s: bus: %x devfn: %x +%x/%x -> %08x\n", in pnv_pci_cfg_read()
617 __func__, pdn->busno, pdn->devfn, where, size, *val); in pnv_pci_cfg_read()
624 struct pnv_phb *phb = pdn->phb->private_data; in pnv_pci_cfg_write()
625 u32 bdfn = (pdn->busno << 8) | pdn->devfn; in pnv_pci_cfg_write()
627 pr_devel("%s: bus: %x devfn: %x +%x/%x -> %08x\n", in pnv_pci_cfg_write()
628 __func__, pdn->busno, pdn->devfn, where, size, val); in pnv_pci_cfg_write()
631 opal_pci_config_write_byte(phb->opal_id, bdfn, where, val); in pnv_pci_cfg_write()
634 opal_pci_config_write_half_word(phb->opal_id, bdfn, where, val); in pnv_pci_cfg_write()
637 opal_pci_config_write_word(phb->opal_id, bdfn, where, val); in pnv_pci_cfg_write()
650 struct pnv_phb *phb = pdn->phb->private_data; in pnv_pci_cfg_check()
653 if (!(phb->flags & PNV_PHB_FLAG_EEH)) in pnv_pci_cfg_check()
656 /* PE reset or device removed ? */ in pnv_pci_cfg_check()
657 edev = pdn->edev; in pnv_pci_cfg_check()
659 if (edev->pe && in pnv_pci_cfg_check()
660 (edev->pe->state & EEH_PE_CFG_BLOCKED)) in pnv_pci_cfg_check()
663 if (edev->mode & EEH_DEV_REMOVED) in pnv_pci_cfg_check()
693 phb = pdn->phb->private_data; in pnv_pci_read_config()
694 if (phb->flags & PNV_PHB_FLAG_EEH && pdn->edev) { in pnv_pci_read_config()
696 eeh_dev_check_failure(pdn->edev)) in pnv_pci_read_config()
721 phb = pdn->phb->private_data; in pnv_pci_write_config()
722 if (!(phb->flags & PNV_PHB_FLAG_EEH)) in pnv_pci_write_config()
741 INIT_LIST_HEAD_RCU(&tbl->it_group_list); in pnv_pci_table_alloc()
742 kref_init(&tbl->it_kref); in pnv_pci_table_alloc()
749 struct pci_controller *hose = pci_bus_to_host(dev->bus); in pnv_pci_get_phb_node()
751 return of_node_get(hose->dn); in pnv_pci_get_phb_node()
757 struct pnv_phb *phb = pci_bus_to_pnvhb(dev->bus); in pnv_pci_set_tunnel_bar()
763 return -ENXIO; in pnv_pci_set_tunnel_bar()
765 return -ENXIO; in pnv_pci_set_tunnel_bar()
768 rc = opal_pci_get_pbcq_tunnel_bar(phb->opal_id, &val); in pnv_pci_set_tunnel_bar()
770 rc = -EIO; in pnv_pci_set_tunnel_bar()
776 * Only one device per PHB can use atomics. in pnv_pci_set_tunnel_bar()
777 * Our policy is first-come, first-served. in pnv_pci_set_tunnel_bar()
781 rc = -EBUSY; in pnv_pci_set_tunnel_bar()
788 * The device that owns atomics and wants to release in pnv_pci_set_tunnel_bar()
792 rc = -EPERM; in pnv_pci_set_tunnel_bar()
797 rc = opal_pci_set_pbcq_tunnel_bar(phb->opal_id, addr); in pnv_pci_set_tunnel_bar()
810 if (hose->controller_ops.shutdown) in pnv_pci_shutdown()
811 hose->controller_ops.shutdown(hose); in pnv_pci_shutdown()
817 dev->class = PCI_CLASS_BRIDGE_PCI_NORMAL; in pnv_p7ioc_rc_quirk()
848 /* Look for ioda2 built-in PHB3's */ in pnv_pci_init()
849 for_each_compatible_node(np, NULL, "ibm,ioda2-phb") in pnv_pci_init()
852 /* Look for ioda3 built-in PHB4's, we treat them as IODA2 */ in pnv_pci_init()
853 for_each_compatible_node(np, NULL, "ibm,ioda3-phb") in pnv_pci_init()
857 for_each_compatible_node(np, NULL, "ibm,ioda2-npu2-opencapi-phb") in pnv_pci_init()