+Bjorn Helgaas, +Gustavo Pimentel, +Wen Yang, +Kangjie Lu On Thu, May 23, 2019 at 2:48 PM Alan Mikhak <alan.mikhak@xxxxxxxxxx> wrote: > > PCI endpoint test function code should honor the .bar_fixed_size parameter > from underlying endpoint controller drivers or results may be unexpected. > > In pci_epf_test_alloc_space(), check if BAR being used for test register > space is a fixed size BAR. If so, allocate the required fixed size. > > Signed-off-by: Alan Mikhak <alan.mikhak@xxxxxxxxxx> > --- > drivers/pci/endpoint/functions/pci-epf-test.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c > index 27806987e93b..7d41e6684b87 100644 > --- a/drivers/pci/endpoint/functions/pci-epf-test.c > +++ b/drivers/pci/endpoint/functions/pci-epf-test.c > @@ -434,10 +434,16 @@ static int pci_epf_test_alloc_space(struct pci_epf *epf) > int bar; > enum pci_barno test_reg_bar = epf_test->test_reg_bar; > const struct pci_epc_features *epc_features; > + size_t test_reg_size; > > epc_features = epf_test->epc_features; > > - base = pci_epf_alloc_space(epf, sizeof(struct pci_epf_test_reg), > + if (epc_features->bar_fixed_size[test_reg_bar]) > + test_reg_size = bar_size[test_reg_bar]; > + else > + test_reg_size = sizeof(struct pci_epf_test_reg); > + > + base = pci_epf_alloc_space(epf, test_reg_size, > test_reg_bar, epc_features->align); > if (!base) { > dev_err(dev, "Failed to allocated register space\n"); > -- > 2.7.4 >