mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-22 09:17:58 +00:00
dm: fix: TSN in multi-hostbridge could crash
fix bug: if PTM-CAP device, like TSN in multi-hostbridge could cause acrn-dm crash. original PTM PCI code has not handled multi-hostbridge case, and just handled hostbridge (00:00.0) case. this patch calls PCI access API to handle PTM-CAP device/bridge (root port) structure, to avoid scan PCI hierarchical. Tracked-On: #7045 Acked-by: Wang, Yu1 <yu1.wang@intel.com> Reviewed-by: Fei Li <fei1.li@intel.com> Signed-off-by: Minggui Cao <minggui.cao@intel.com>
This commit is contained in:
committed by
acrnsi-robot
parent
5d54b0d110
commit
483b7b1280
@@ -11,32 +11,10 @@
|
||||
#include <stdbool.h>
|
||||
#include "pciaccess.h"
|
||||
|
||||
struct pci_device_info {
|
||||
bool is_bridge;
|
||||
int primary_bus;
|
||||
int secondary_bus;
|
||||
int subordinate_bus;
|
||||
uint16_t bdf;
|
||||
struct pci_device_info *parent; /* pointer to its parent bridge */
|
||||
struct pci_device_info *clist; /* children list */
|
||||
|
||||
/* cache of all pci devices
|
||||
* FIXME: remove PCI_DEVICE_Q. To cleanup pci device cache:
|
||||
* remove children, then remove parents
|
||||
*/
|
||||
TAILQ_ENTRY(pci_device_info) PCI_DEVICE_Q;
|
||||
};
|
||||
|
||||
int pci_find_cap(struct pci_device *pdev, const int cap_id);
|
||||
int pci_find_ext_cap(struct pci_device *pdev, int cap_id);
|
||||
int pci_get_pcie_type(struct pci_device *dev);
|
||||
bool is_root_port(struct pci_device *pdev);
|
||||
bool is_bridge(struct pci_device *pdev);
|
||||
|
||||
int get_device_count_on_bus(int bus);
|
||||
int get_device_count_on_bridge(const struct pci_device_info *bridge_info);
|
||||
int scan_pci(void);
|
||||
struct pci_device * pci_find_root_port(const struct pci_device *pdev);
|
||||
void clean_pci_cache(void);
|
||||
bool is_mfdev(struct pci_device *pdev);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user