Message ID | 20210105134404.1545-5-christian.koenig@amd.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | [1/4] pci: export pci_rebar_get_possible_sizes | expand |
On Tue, Jan 5, 2021 at 8:44 AM Christian König <ckoenig.leichtzumerken@gmail.com> wrote: > > Otherwise the CPU can't fully access the BAR. > > Signed-off-by: Christian König <christian.koenig@amd.com> > --- > drivers/pci/pci.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index 16216186b51c..b66e4703c214 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -3577,7 +3577,14 @@ u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar) > return 0; > > pci_read_config_dword(pdev, pos + PCI_REBAR_CAP, &cap); > - return (cap & PCI_REBAR_CAP_SIZES) >> 4; > + cap = (cap & PCI_REBAR_CAP_SIZES) >> 4; > + > + /* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */ > + if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f && > + bar == 0 && cap == 0x700) > + cap == 0x7f00; Perhaps you meant cap = 0x7f00? > + > + return cap; > } > EXPORT_SYMBOL(pci_rebar_get_possible_sizes); > > -- > 2.25.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
Hi "Christian, I love your patch! Perhaps something to improve: [auto build test WARNING on pci/next] [also build test WARNING on linus/master v5.11-rc2 next-20210104] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Christian-K-nig/pci-export-pci_rebar_get_possible_sizes/20210105-224446 base: https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git next config: arm64-randconfig-r006-20210105 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 5c951623bc8965fa1e89660f2f5f4a2944e4981a) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install arm64 cross compiling tool for clang build # apt-get install binutils-aarch64-linux-gnu # https://github.com/0day-ci/linux/commit/6838a45fc2394ec88455e1fb3998ac865a077168 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Christian-K-nig/pci-export-pci_rebar_get_possible_sizes/20210105-224446 git checkout 6838a45fc2394ec88455e1fb3998ac865a077168 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): >> drivers/pci/pci.c:3611:7: warning: equality comparison result unused [-Wunused-comparison] cap == 0x7f00; ~~~~^~~~~~~~~ drivers/pci/pci.c:3611:7: note: use '=' to turn this equality comparison into an assignment cap == 0x7f00; ^~ = 1 warning generated. vim +3611 drivers/pci/pci.c 3587 3588 /** 3589 * pci_rebar_get_possible_sizes - get possible sizes for BAR 3590 * @pdev: PCI device 3591 * @bar: BAR to query 3592 * 3593 * Get the possible sizes of a resizable BAR as bitmask defined in the spec 3594 * (bit 0=1MB, bit 19=512GB). Returns 0 if BAR isn't resizable. 3595 */ 3596 u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar) 3597 { 3598 int pos; 3599 u32 cap; 3600 3601 pos = pci_rebar_find_pos(pdev, bar); 3602 if (pos < 0) 3603 return 0; 3604 3605 pci_read_config_dword(pdev, pos + PCI_REBAR_CAP, &cap); 3606 cap = (cap & PCI_REBAR_CAP_SIZES) >> 4; 3607 3608 /* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */ 3609 if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f && 3610 bar == 0 && cap == 0x700) > 3611 cap == 0x7f00; 3612 3613 return cap; 3614 } 3615 EXPORT_SYMBOL(pci_rebar_get_possible_sizes); 3616 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Am 05.01.21 um 17:11 schrieb Ilia Mirkin: > On Tue, Jan 5, 2021 at 8:44 AM Christian König > <ckoenig.leichtzumerken@gmail.com> wrote: >> Otherwise the CPU can't fully access the BAR. >> >> Signed-off-by: Christian König <christian.koenig@amd.com> >> --- >> drivers/pci/pci.c | 9 ++++++++- >> 1 file changed, 8 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c >> index 16216186b51c..b66e4703c214 100644 >> --- a/drivers/pci/pci.c >> +++ b/drivers/pci/pci.c >> @@ -3577,7 +3577,14 @@ u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar) >> return 0; >> >> pci_read_config_dword(pdev, pos + PCI_REBAR_CAP, &cap); >> - return (cap & PCI_REBAR_CAP_SIZES) >> 4; >> + cap = (cap & PCI_REBAR_CAP_SIZES) >> 4; >> + >> + /* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */ >> + if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f && >> + bar == 0 && cap == 0x700) >> + cap == 0x7f00; > Perhaps you meant cap = 0x7f00? Ups, indeed! Thanks for pointing that out. Christian. > >> + >> + return cap; >> } >> EXPORT_SYMBOL(pci_rebar_get_possible_sizes); >> >> -- >> 2.25.1 >> >> _______________________________________________ >> dri-devel mailing list >> dri-devel@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Hi Christian, url: https://github.com/0day-ci/linux/commits/Christian-K-nig/pci-export-pci_rebar_get_possible_sizes/20210105-224446 base: https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git next config: x86_64-randconfig-m001-20210105 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> Reported-by: Dan Carpenter <dan.carpenter@oracle.com> smatch warnings: drivers/pci/pci.c:3611 pci_rebar_get_possible_sizes() warn: statement has no effect 22 vim +3611 drivers/pci/pci.c 276b738deb5bf85 Christian König 2017-10-24 3596 u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar) 276b738deb5bf85 Christian König 2017-10-24 3597 { 276b738deb5bf85 Christian König 2017-10-24 3598 int pos; 276b738deb5bf85 Christian König 2017-10-24 3599 u32 cap; 276b738deb5bf85 Christian König 2017-10-24 3600 276b738deb5bf85 Christian König 2017-10-24 3601 pos = pci_rebar_find_pos(pdev, bar); 276b738deb5bf85 Christian König 2017-10-24 3602 if (pos < 0) 276b738deb5bf85 Christian König 2017-10-24 3603 return 0; 276b738deb5bf85 Christian König 2017-10-24 3604 276b738deb5bf85 Christian König 2017-10-24 3605 pci_read_config_dword(pdev, pos + PCI_REBAR_CAP, &cap); 6838a45fc2394ec Christian König 2021-01-05 3606 cap = (cap & PCI_REBAR_CAP_SIZES) >> 4; 6838a45fc2394ec Christian König 2021-01-05 3607 6838a45fc2394ec Christian König 2021-01-05 3608 /* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */ 6838a45fc2394ec Christian König 2021-01-05 3609 if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f && 6838a45fc2394ec Christian König 2021-01-05 3610 bar == 0 && cap == 0x700) 6838a45fc2394ec Christian König 2021-01-05 @3611 cap == 0x7f00; == vs =. 6838a45fc2394ec Christian König 2021-01-05 3612 6838a45fc2394ec Christian König 2021-01-05 3613 return cap; 276b738deb5bf85 Christian König 2017-10-24 3614 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 16216186b51c..b66e4703c214 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -3577,7 +3577,14 @@ u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar) return 0; pci_read_config_dword(pdev, pos + PCI_REBAR_CAP, &cap); - return (cap & PCI_REBAR_CAP_SIZES) >> 4; + cap = (cap & PCI_REBAR_CAP_SIZES) >> 4; + + /* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */ + if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f && + bar == 0 && cap == 0x700) + cap == 0x7f00; + + return cap; } EXPORT_SYMBOL(pci_rebar_get_possible_sizes);
Otherwise the CPU can't fully access the BAR. Signed-off-by: Christian König <christian.koenig@amd.com> --- drivers/pci/pci.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)