PCI: endpoint: Add support to link a physical function to a virtual function
While the physical function has to be linked to endpoint controller, the virtual function has to be linked to a physical function. Add support to link a physical function to a virtual function in pci-ep-cfs. Link: https://lore.kernel.org/r/20210819123343.1951-4-kishon@ti.com Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
This commit is contained in:
parent
1cf362e907
commit
101600e790
@ -475,6 +475,28 @@ static struct configfs_attribute *pci_epf_attrs[] = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
static int pci_epf_vepf_link(struct config_item *epf_pf_item,
|
||||
struct config_item *epf_vf_item)
|
||||
{
|
||||
struct pci_epf_group *epf_vf_group = to_pci_epf_group(epf_vf_item);
|
||||
struct pci_epf_group *epf_pf_group = to_pci_epf_group(epf_pf_item);
|
||||
struct pci_epf *epf_pf = epf_pf_group->epf;
|
||||
struct pci_epf *epf_vf = epf_vf_group->epf;
|
||||
|
||||
return pci_epf_add_vepf(epf_pf, epf_vf);
|
||||
}
|
||||
|
||||
static void pci_epf_vepf_unlink(struct config_item *epf_pf_item,
|
||||
struct config_item *epf_vf_item)
|
||||
{
|
||||
struct pci_epf_group *epf_vf_group = to_pci_epf_group(epf_vf_item);
|
||||
struct pci_epf_group *epf_pf_group = to_pci_epf_group(epf_pf_item);
|
||||
struct pci_epf *epf_pf = epf_pf_group->epf;
|
||||
struct pci_epf *epf_vf = epf_vf_group->epf;
|
||||
|
||||
pci_epf_remove_vepf(epf_pf, epf_vf);
|
||||
}
|
||||
|
||||
static void pci_epf_release(struct config_item *item)
|
||||
{
|
||||
struct pci_epf_group *epf_group = to_pci_epf_group(item);
|
||||
@ -487,6 +509,8 @@ static void pci_epf_release(struct config_item *item)
|
||||
}
|
||||
|
||||
static struct configfs_item_operations pci_epf_ops = {
|
||||
.allow_link = pci_epf_vepf_link,
|
||||
.drop_link = pci_epf_vepf_unlink,
|
||||
.release = pci_epf_release,
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user