On Thu, Oct 13, 2022 at 11:48:15PM +0530, Vidya Sagar wrote: > Add support for clearing the BAR info during the deinitialization phase of > the epf test driver. > BAR is currently cleared during unbind() time. With this deinit callback, it has to be removed from unbind(). > Signed-off-by: Vidya Sagar <vidyas@xxxxxxxxxx> > --- > V2: > * This is a new patch in this series > > drivers/pci/endpoint/functions/pci-epf-test.c | 30 +++++++++++++++++++ > 1 file changed, 30 insertions(+) > > diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c > index 136470019a24..25ac3d161fac 100644 > --- a/drivers/pci/endpoint/functions/pci-epf-test.c > +++ b/drivers/pci/endpoint/functions/pci-epf-test.c > @@ -826,6 +826,35 @@ static int pci_epf_test_core_init(struct pci_epf *epf) > return 0; > } > > +static int pci_epf_test_clear_bar(struct pci_epf *epf) > +{ > + int bar, add; I don't think "add" is a good variable name. Maybe "bar_type"? Thanks, Mani > + struct pci_epf_bar *epf_bar; > + struct pci_epc *epc = epf->epc; > + struct pci_epf_test *epf_test = epf_get_drvdata(epf); > + const struct pci_epc_features *epc_features; > + > + epc_features = epf_test->epc_features; > + > + for (bar = 0; bar < PCI_STD_NUM_BARS; bar += add) { > + epf_bar = &epf->bar[bar]; > + add = (epf_bar->flags & PCI_BASE_ADDRESS_MEM_TYPE_64) ? 2 : 1; > + > + if (!!(epc_features->reserved_bar & (1 << bar))) > + continue; > + > + pci_epc_clear_bar(epc, epf->func_no, epf->vfunc_no, epf_bar); > + } > + > + return 0; > +} > + > +static int pci_epf_test_core_deinit(struct pci_epf *epf) > +{ > + pci_epf_test_clear_bar(epf); > + return 0; > +} > + > int pci_epf_test_link_up(struct pci_epf *epf) > { > struct pci_epf_test *epf_test = epf_get_drvdata(epf); > @@ -839,6 +868,7 @@ int pci_epf_test_link_up(struct pci_epf *epf) > static const struct pci_epc_event_ops pci_epf_test_event_ops = { > .core_init = pci_epf_test_core_init, > .link_up = pci_epf_test_link_up, > + .core_deinit = pci_epf_test_core_deinit, > }; > > static int pci_epf_test_alloc_space(struct pci_epf *epf) > -- > 2.17.1 > -- மணிவண்ணன் சதாசிவம்