Message ID | 20180308133331.19464-6-niklas.cassel@axis.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
On Thu, Mar 08, 2018 at 02:33:30PM +0100, Niklas Cassel wrote: > A 64-bit BAR consists of a BAR pair, where the second BAR has the > upper bits, so we cannot simply call pci_ioremap_bar() on every single > BAR index. > > The second BAR in a BAR pair will not have the IORESOURCE_MEM resource > flag set. Only call ioremap on BARs that have the IORESOURCE_MEM > resource flag set. > > pci 0000:01:00.0: BAR 4: assigned [mem 0xc0300000-0xc031ffff 64bit] > pci 0000:01:00.0: BAR 2: assigned [mem 0xc0320000-0xc03203ff 64bit] > pci 0000:01:00.0: BAR 0: assigned [mem 0xc0320400-0xc03204ff 64bit] > pci-endpoint-test 0000:01:00.0: can't ioremap BAR 1: [??? 0x00000000 flags 0x0] > pci-endpoint-test 0000:01:00.0: failed to read BAR1 > pci-endpoint-test 0000:01:00.0: can't ioremap BAR 3: [??? 0x00000000 flags 0x0] > pci-endpoint-test 0000:01:00.0: failed to read BAR3 > pci-endpoint-test 0000:01:00.0: can't ioremap BAR 5: [??? 0x00000000 flags 0x0] > pci-endpoint-test 0000:01:00.0: failed to read BAR5 > > Signed-off-by: Niklas Cassel <niklas.cassel@axis.com> > --- > drivers/misc/pci_endpoint_test.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) Where are the 4 other patches in this series? I can't just only apply the last one, right? Please be careful when sending patches to properly notify everyone... this is now dropped from my patch queue. greg k-h
On Thu, Mar 15, 2018 at 02:22:13PM +0100, Greg Kroah-Hartman wrote: > On Thu, Mar 08, 2018 at 02:33:30PM +0100, Niklas Cassel wrote: > > A 64-bit BAR consists of a BAR pair, where the second BAR has the > > upper bits, so we cannot simply call pci_ioremap_bar() on every single > > BAR index. > > > > The second BAR in a BAR pair will not have the IORESOURCE_MEM resource > > flag set. Only call ioremap on BARs that have the IORESOURCE_MEM > > resource flag set. > > > > pci 0000:01:00.0: BAR 4: assigned [mem 0xc0300000-0xc031ffff 64bit] > > pci 0000:01:00.0: BAR 2: assigned [mem 0xc0320000-0xc03203ff 64bit] > > pci 0000:01:00.0: BAR 0: assigned [mem 0xc0320400-0xc03204ff 64bit] > > pci-endpoint-test 0000:01:00.0: can't ioremap BAR 1: [??? 0x00000000 flags 0x0] > > pci-endpoint-test 0000:01:00.0: failed to read BAR1 > > pci-endpoint-test 0000:01:00.0: can't ioremap BAR 3: [??? 0x00000000 flags 0x0] > > pci-endpoint-test 0000:01:00.0: failed to read BAR3 > > pci-endpoint-test 0000:01:00.0: can't ioremap BAR 5: [??? 0x00000000 flags 0x0] > > pci-endpoint-test 0000:01:00.0: failed to read BAR5 > > > > Signed-off-by: Niklas Cassel <niklas.cassel@axis.com> > > --- > > drivers/misc/pci_endpoint_test.c | 12 +++++++----- > > 1 file changed, 7 insertions(+), 5 deletions(-) > > Where are the 4 other patches in this series? I can't just only apply > the last one, right? http://patchwork.ozlabs.org/project/linux-pci/list/?series=32658 I'm expecting all patches to go via Lorenzo's pci tree. > > Please be careful when sending patches to properly notify everyone... I'm using scripts from Joe Perches that run get_maintainer.pl, these scripts are then used as --to-cmd and --cc-cmd for git send-email: https://lkml.org/lkml/2016/9/14/482 (I did have to modify them so they handle rerolled patch series.) BTW. Joe, do you have updated versions of your scripts? Greg, I'm assuming that you wouldn't want to be cc'd on all patches in the series, since all except the last one are pci related. However, perhaps it would be nice to add all those who are cc'd in the individual patches, as cc to the cover letter, that way it might be easier to figure out what tree will most likely merge a certain patch series. Kind regards, Niklas
Hello Greg, Lorenzo is fine with this series ( https://marc.info/?l=linux-kernel&m=152147837619191&w=2 ) However, he wants your ack on this patch before merging. Could you please have a look at this patch? Kind regards, Niklas On Thu, Mar 08, 2018 at 02:33:30PM +0100, Niklas Cassel wrote: > A 64-bit BAR consists of a BAR pair, where the second BAR has the > upper bits, so we cannot simply call pci_ioremap_bar() on every single > BAR index. > > The second BAR in a BAR pair will not have the IORESOURCE_MEM resource > flag set. Only call ioremap on BARs that have the IORESOURCE_MEM > resource flag set. > > pci 0000:01:00.0: BAR 4: assigned [mem 0xc0300000-0xc031ffff 64bit] > pci 0000:01:00.0: BAR 2: assigned [mem 0xc0320000-0xc03203ff 64bit] > pci 0000:01:00.0: BAR 0: assigned [mem 0xc0320400-0xc03204ff 64bit] > pci-endpoint-test 0000:01:00.0: can't ioremap BAR 1: [??? 0x00000000 flags 0x0] > pci-endpoint-test 0000:01:00.0: failed to read BAR1 > pci-endpoint-test 0000:01:00.0: can't ioremap BAR 3: [??? 0x00000000 flags 0x0] > pci-endpoint-test 0000:01:00.0: failed to read BAR3 > pci-endpoint-test 0000:01:00.0: can't ioremap BAR 5: [??? 0x00000000 flags 0x0] > pci-endpoint-test 0000:01:00.0: failed to read BAR5 > > Signed-off-by: Niklas Cassel <niklas.cassel@axis.com> > --- > drivers/misc/pci_endpoint_test.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c > index 320276f42653..fe8897e64635 100644 > --- a/drivers/misc/pci_endpoint_test.c > +++ b/drivers/misc/pci_endpoint_test.c > @@ -534,12 +534,14 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev, > } > > for (bar = BAR_0; bar <= BAR_5; bar++) { > - base = pci_ioremap_bar(pdev, bar); > - if (!base) { > - dev_err(dev, "failed to read BAR%d\n", bar); > - WARN_ON(bar == test_reg_bar); > + if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM) { > + base = pci_ioremap_bar(pdev, bar); > + if (!base) { > + dev_err(dev, "failed to read BAR%d\n", bar); > + WARN_ON(bar == test_reg_bar); > + } > + test->bar[bar] = base; > } > - test->bar[bar] = base; > } > > test->base = test->bar[test_reg_bar]; > -- > 2.14.2 >
On Thursday 08 March 2018 07:03 PM, Niklas Cassel wrote: > A 64-bit BAR consists of a BAR pair, where the second BAR has the > upper bits, so we cannot simply call pci_ioremap_bar() on every single > BAR index. > > The second BAR in a BAR pair will not have the IORESOURCE_MEM resource > flag set. Only call ioremap on BARs that have the IORESOURCE_MEM > resource flag set. > > pci 0000:01:00.0: BAR 4: assigned [mem 0xc0300000-0xc031ffff 64bit] > pci 0000:01:00.0: BAR 2: assigned [mem 0xc0320000-0xc03203ff 64bit] > pci 0000:01:00.0: BAR 0: assigned [mem 0xc0320400-0xc03204ff 64bit] > pci-endpoint-test 0000:01:00.0: can't ioremap BAR 1: [??? 0x00000000 flags 0x0] > pci-endpoint-test 0000:01:00.0: failed to read BAR1 > pci-endpoint-test 0000:01:00.0: can't ioremap BAR 3: [??? 0x00000000 flags 0x0] > pci-endpoint-test 0000:01:00.0: failed to read BAR3 > pci-endpoint-test 0000:01:00.0: can't ioremap BAR 5: [??? 0x00000000 flags 0x0] > pci-endpoint-test 0000:01:00.0: failed to read BAR5 > > Signed-off-by: Niklas Cassel <niklas.cassel@axis.com> Acked-by: Kishon Vijay Abraham I <kishon@ti.com> > --- > drivers/misc/pci_endpoint_test.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c > index 320276f42653..fe8897e64635 100644 > --- a/drivers/misc/pci_endpoint_test.c > +++ b/drivers/misc/pci_endpoint_test.c > @@ -534,12 +534,14 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev, > } > > for (bar = BAR_0; bar <= BAR_5; bar++) { > - base = pci_ioremap_bar(pdev, bar); > - if (!base) { > - dev_err(dev, "failed to read BAR%d\n", bar); > - WARN_ON(bar == test_reg_bar); > + if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM) { > + base = pci_ioremap_bar(pdev, bar); > + if (!base) { > + dev_err(dev, "failed to read BAR%d\n", bar); > + WARN_ON(bar == test_reg_bar); > + } > + test->bar[bar] = base; > } > - test->bar[bar] = base; > } > > test->base = test->bar[test_reg_bar]; >
On Wed, Mar 21, 2018 at 04:59:31AM +0100, Niklas Cassel wrote: > Hello Greg, > > Lorenzo is fine with this series > ( https://marc.info/?l=linux-kernel&m=152147837619191&w=2 ) > > However, he wants your ack on this patch before merging. No need for my ack, if you all want to maintain this driver, it's fine with me, go ahead and merge what you want :) greg k-h
diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c index 320276f42653..fe8897e64635 100644 --- a/drivers/misc/pci_endpoint_test.c +++ b/drivers/misc/pci_endpoint_test.c @@ -534,12 +534,14 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev, } for (bar = BAR_0; bar <= BAR_5; bar++) { - base = pci_ioremap_bar(pdev, bar); - if (!base) { - dev_err(dev, "failed to read BAR%d\n", bar); - WARN_ON(bar == test_reg_bar); + if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM) { + base = pci_ioremap_bar(pdev, bar); + if (!base) { + dev_err(dev, "failed to read BAR%d\n", bar); + WARN_ON(bar == test_reg_bar); + } + test->bar[bar] = base; } - test->bar[bar] = base; } test->base = test->bar[test_reg_bar];
A 64-bit BAR consists of a BAR pair, where the second BAR has the upper bits, so we cannot simply call pci_ioremap_bar() on every single BAR index. The second BAR in a BAR pair will not have the IORESOURCE_MEM resource flag set. Only call ioremap on BARs that have the IORESOURCE_MEM resource flag set. pci 0000:01:00.0: BAR 4: assigned [mem 0xc0300000-0xc031ffff 64bit] pci 0000:01:00.0: BAR 2: assigned [mem 0xc0320000-0xc03203ff 64bit] pci 0000:01:00.0: BAR 0: assigned [mem 0xc0320400-0xc03204ff 64bit] pci-endpoint-test 0000:01:00.0: can't ioremap BAR 1: [??? 0x00000000 flags 0x0] pci-endpoint-test 0000:01:00.0: failed to read BAR1 pci-endpoint-test 0000:01:00.0: can't ioremap BAR 3: [??? 0x00000000 flags 0x0] pci-endpoint-test 0000:01:00.0: failed to read BAR3 pci-endpoint-test 0000:01:00.0: can't ioremap BAR 5: [??? 0x00000000 flags 0x0] pci-endpoint-test 0000:01:00.0: failed to read BAR5 Signed-off-by: Niklas Cassel <niklas.cassel@axis.com> --- drivers/misc/pci_endpoint_test.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)