Lines Matching refs:inj
537 static bool pcie_aer_inject_cor_error(PCIEAERInject *inj, in pcie_aer_inject_cor_error() argument
541 PCIDevice *dev = inj->dev; in pcie_aer_inject_cor_error()
543 inj->devsta |= PCI_EXP_DEVSTA_CED; in pcie_aer_inject_cor_error()
544 if (inj->unsupported_request) { in pcie_aer_inject_cor_error()
545 inj->devsta |= PCI_EXP_DEVSTA_URD; in pcie_aer_inject_cor_error()
547 pci_set_word(dev->config + dev->exp.exp_cap + PCI_EXP_DEVSTA, inj->devsta); in pcie_aer_inject_cor_error()
549 if (inj->aer_cap) { in pcie_aer_inject_cor_error()
551 pci_long_test_and_set_mask(inj->aer_cap + PCI_ERR_COR_STATUS, in pcie_aer_inject_cor_error()
552 inj->error_status); in pcie_aer_inject_cor_error()
553 mask = pci_get_long(inj->aer_cap + PCI_ERR_COR_MASK); in pcie_aer_inject_cor_error()
554 if (mask & inj->error_status) { in pcie_aer_inject_cor_error()
559 pci_get_long(inj->aer_cap + PCI_ERR_UNCOR_MASK); in pcie_aer_inject_cor_error()
561 inj->log_overflow = !!pcie_aer_record_error(dev, inj->err); in pcie_aer_inject_cor_error()
563 pci_long_test_and_set_mask(inj->aer_cap + PCI_ERR_UNCOR_STATUS, in pcie_aer_inject_cor_error()
568 if (inj->unsupported_request && !(inj->devctl & PCI_EXP_DEVCTL_URRE)) { in pcie_aer_inject_cor_error()
571 if (!(inj->devctl & PCI_EXP_DEVCTL_CERE)) { in pcie_aer_inject_cor_error()
575 inj->msg.severity = PCI_ERR_ROOT_CMD_COR_EN; in pcie_aer_inject_cor_error()
579 static bool pcie_aer_inject_uncor_error(PCIEAERInject *inj, bool is_fatal) in pcie_aer_inject_uncor_error() argument
581 PCIDevice *dev = inj->dev; in pcie_aer_inject_uncor_error()
585 inj->devsta |= PCI_EXP_DEVSTA_FED; in pcie_aer_inject_uncor_error()
587 inj->devsta |= PCI_EXP_DEVSTA_NFED; in pcie_aer_inject_uncor_error()
589 if (inj->unsupported_request) { in pcie_aer_inject_uncor_error()
590 inj->devsta |= PCI_EXP_DEVSTA_URD; in pcie_aer_inject_uncor_error()
592 pci_set_long(dev->config + dev->exp.exp_cap + PCI_EXP_DEVSTA, inj->devsta); in pcie_aer_inject_uncor_error()
594 if (inj->aer_cap) { in pcie_aer_inject_uncor_error()
595 uint32_t mask = pci_get_long(inj->aer_cap + PCI_ERR_UNCOR_MASK); in pcie_aer_inject_uncor_error()
596 if (mask & inj->error_status) { in pcie_aer_inject_uncor_error()
597 pci_long_test_and_set_mask(inj->aer_cap + PCI_ERR_UNCOR_STATUS, in pcie_aer_inject_uncor_error()
598 inj->error_status); in pcie_aer_inject_uncor_error()
602 inj->log_overflow = !!pcie_aer_record_error(dev, inj->err); in pcie_aer_inject_uncor_error()
603 pci_long_test_and_set_mask(inj->aer_cap + PCI_ERR_UNCOR_STATUS, in pcie_aer_inject_uncor_error()
604 inj->error_status); in pcie_aer_inject_uncor_error()
608 if (inj->unsupported_request && in pcie_aer_inject_uncor_error()
609 !(inj->devctl & PCI_EXP_DEVCTL_URRE) && !(cmd & PCI_COMMAND_SERR)) { in pcie_aer_inject_uncor_error()
614 (inj->devctl & PCI_EXP_DEVCTL_FERE))) { in pcie_aer_inject_uncor_error()
617 inj->msg.severity = PCI_ERR_ROOT_CMD_FATAL_EN; in pcie_aer_inject_uncor_error()
620 (inj->devctl & PCI_EXP_DEVCTL_NFERE))) { in pcie_aer_inject_uncor_error()
623 inj->msg.severity = PCI_ERR_ROOT_CMD_NONFATAL_EN; in pcie_aer_inject_uncor_error()
645 PCIEAERInject inj; in pcie_aer_inject_error() local
669 inj.dev = dev; in pcie_aer_inject_error()
670 inj.aer_cap = aer_cap; in pcie_aer_inject_error()
671 inj.err = err; in pcie_aer_inject_error()
672 inj.devctl = devctl; in pcie_aer_inject_error()
673 inj.devsta = devsta; in pcie_aer_inject_error()
674 inj.error_status = error_status; in pcie_aer_inject_error()
675 inj.unsupported_request = !(err->flags & PCIE_AER_ERR_IS_CORRECTABLE) && in pcie_aer_inject_error()
677 inj.log_overflow = false; in pcie_aer_inject_error()
680 if (!pcie_aer_inject_cor_error(&inj, 0, false)) { in pcie_aer_inject_error()
692 inj.error_status = PCI_ERR_COR_ADV_NONFATAL; in pcie_aer_inject_error()
693 if (!pcie_aer_inject_cor_error(&inj, error_status, true)) { in pcie_aer_inject_error()
697 if (!pcie_aer_inject_uncor_error(&inj, is_fatal)) { in pcie_aer_inject_error()
704 inj.msg.source_id = err->source_id; in pcie_aer_inject_error()
705 pcie_aer_msg(dev, &inj.msg); in pcie_aer_inject_error()
707 if (inj.log_overflow) { in pcie_aer_inject_error()