]> xenbits.xensource.com Git - seabios.git/commitdiff
pci: enable SERR# for error forwarding in bridge control register
authorChen Fan <chen.fan.fnst@cn.fujitsu.com>
Wed, 28 Jan 2015 08:05:13 +0000 (16:05 +0800)
committerKevin O'Connor <kevin@koconnor.net>
Tue, 24 Feb 2015 16:58:20 +0000 (11:58 -0500)
For PCIe device support AER(Advanced Error Reporting), from the
pcie spec 3.0 chapter 6.2.5, ERR_COR, ERR_NONFATAL, and ERR_FATAL
can be forwarded from the secondary interface to the primary interface,
only require the SERR# Enable bit in the Bridge Control register is set.

and at the kernel side, we found only _HPP() method can enable
SERR#, So here we want to turn on this bit.

Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
src/fw/pciinit.c

index 3e6308a5ba0c7973287f445d54fb73fbcac26156..b1c72c413780d3291aca2c93caac9923896f284a 100644 (file)
@@ -316,6 +316,10 @@ static void pci_bios_init_device(struct pci_device *pci)
     /* enable memory mappings */
     pci_config_maskw(bdf, PCI_COMMAND, 0,
                      PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_SERR);
+    /* enable SERR# for forwarding */
+    if (pci->header_type & PCI_HEADER_TYPE_BRIDGE)
+        pci_config_maskw(bdf, PCI_BRIDGE_CONTROL, 0,
+                         PCI_BRIDGE_CTL_SERR);
 }
 
 static void pci_bios_init_devices(void)