// SPDX-License-Identifier: GPL-2.0 /* * Root Complex Event Collector Support * * Authors: * Sean V Kelley <[email protected]> * Qiuxu Zhuo <[email protected]> * * Copyright (C) 2020 Intel Corp. */ #include <linux/kernel.h> #include <linux/pci.h> #include <linux/pci_regs.h> #include "../pci.h" struct walk_rcec_data { … }; static bool rcec_assoc_rciep(struct pci_dev *rcec, struct pci_dev *rciep) { … } static int link_rcec_helper(struct pci_dev *dev, void *data) { … } static int walk_rcec_helper(struct pci_dev *dev, void *data) { … } static void walk_rcec(int (*cb)(struct pci_dev *dev, void *data), void *userdata) { … } /** * pcie_link_rcec - Link RCiEP devices associated with RCEC. * @rcec: RCEC whose RCiEP devices should be linked. * * Link the given RCEC to each RCiEP device found. */ void pcie_link_rcec(struct pci_dev *rcec) { … } /** * pcie_walk_rcec - Walk RCiEP devices associating with RCEC and call callback. * @rcec: RCEC whose RCiEP devices should be walked * @cb: Callback to be called for each RCiEP device found * @userdata: Arbitrary pointer to be passed to callback * * Walk the given RCEC. Call the callback on each RCiEP found. * * If @cb returns anything other than 0, break out. */ void pcie_walk_rcec(struct pci_dev *rcec, int (*cb)(struct pci_dev *, void *), void *userdata) { … } void pci_rcec_init(struct pci_dev *dev) { … } void pci_rcec_exit(struct pci_dev *dev) { … }