Messages in this thread | | | Date | Wed, 03 Mar 2010 11:30:51 +0900 | From | Hidetoshi Seto <> | Subject | Re: [PATCH 2/2] ACPI, APEI, PCIE AER, use general HEST table parsing in AER firmware_first setup |
| |
(2010/03/03 10:43), Huang Ying wrote: >> For example, assume that there are 2 endpoints under a same >> root port. One is (likely on-board) "firmware first" endpoint, >> with driver which does not call pci_enable_pcie_error_reporting() >> (because of no interest in AER, or just not implemented yet, >> anyway). The other is (likely card seated on a slot) not >> firmware first, with better driver which can handle it's AER. >> If my understanding is correct and if everything goes well, >> errors on one should be reported via APEI while the other should >> be reported via AER driver. > > Yes. I think this should be supported. How about something as follow? > > struct pci_dev { > ... > unsigned int __firmware_first:2; > ... > }; > > int pcie_aer_get_firmware_first(struct pci_dev *dev) > { > if (!dev->__firmware_first) > aer_set_firmware_first(dev); > return dev->__firmware_first & 0x1; > } > > Then we use pcie_aer_get_firmware_first() instead of dev->firmware_first > directly.
Looks reasonable. I think the following is more straightforward:
struct pci_dev { ... unsigned int __firmware_first_valid:1; unsigned int __firmware_first:1; ... };
int pcie_aer_get_firmware_first(struct pci_dev *dev) { if (!dev->__firmware_first_valid) aer_set_firmware_first(dev); return dev->__firmware_first; }
Thanks, H.Seto
| |