[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202103160536.A91xlNfY-lkp@intel.com>
Date: Tue, 16 Mar 2021 05:46:59 +0800
From: kernel test robot <lkp@...el.com>
To: hildawu@...ltek.com, marcel@...tmann.org
Cc: kbuild-all@...ts.01.org, clang-built-linux@...glegroups.com,
johan.hedberg@...il.com, luiz.dentz@...il.com, davem@...emloft.net,
kuba@...nel.org, linux-bluetooth@...r.kernel.org,
linux-kernel@...r.kernel.org, netdev@...r.kernel.org,
tientzu@...omium.org, max.chou@...ltek.com
Subject: Re: [PATCH] Bluetooth: hci_h5: btrtl: Add quirk for keep power
during suspend/resume for specific devices
Hi,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on bluetooth-next/master]
[also build test ERROR on net-next/master net/master v5.12-rc3 next-20210315]
[cannot apply to sparc-next/master]
[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/hildawu-realtek-com/Bluetooth-hci_h5-btrtl-Add-quirk-for-keep-power-during-suspend-resume-for-specific-devices/20210315-170101
base: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git master
config: powerpc64-randconfig-r016-20210315 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project a28facba1ccdc957f386b7753f4958307f1bfde8)
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 powerpc64 cross compiling tool for clang build
# apt-get install binutils-powerpc64-linux-gnu
# https://github.com/0day-ci/linux/commit/c97383d88c50364f4451a74ac4d3ad7b3605c20b
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review hildawu-realtek-com/Bluetooth-hci_h5-btrtl-Add-quirk-for-keep-power-during-suspend-resume-for-specific-devices/20210315-170101
git checkout c97383d88c50364f4451a74ac4d3ad7b3605c20b
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>
All errors (new ones prefixed by >>):
In file included from drivers/bluetooth/btrtl.c:11:
In file included from include/linux/usb.h:16:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:10:
In file included from arch/powerpc/include/asm/hardirq.h:6:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/powerpc/include/asm/io.h:619:
arch/powerpc/include/asm/io-defs.h:45:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
DEF_PCI_AC_NORET(insw, (unsigned long p, void *b, unsigned long c),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
__do_##name al; \
^~~~~~~~~~~~~~
<scratch space>:33:1: note: expanded from here
__do_insw
^
arch/powerpc/include/asm/io.h:557:56: note: expanded from macro '__do_insw'
#define __do_insw(p, b, n) readsw((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
~~~~~~~~~~~~~~~~~~~~~^
In file included from drivers/bluetooth/btrtl.c:11:
In file included from include/linux/usb.h:16:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:10:
In file included from arch/powerpc/include/asm/hardirq.h:6:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/powerpc/include/asm/io.h:619:
arch/powerpc/include/asm/io-defs.h:47:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
DEF_PCI_AC_NORET(insl, (unsigned long p, void *b, unsigned long c),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
__do_##name al; \
^~~~~~~~~~~~~~
<scratch space>:35:1: note: expanded from here
__do_insl
^
arch/powerpc/include/asm/io.h:558:56: note: expanded from macro '__do_insl'
#define __do_insl(p, b, n) readsl((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
~~~~~~~~~~~~~~~~~~~~~^
In file included from drivers/bluetooth/btrtl.c:11:
In file included from include/linux/usb.h:16:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:10:
In file included from arch/powerpc/include/asm/hardirq.h:6:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/powerpc/include/asm/io.h:619:
arch/powerpc/include/asm/io-defs.h:49:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
DEF_PCI_AC_NORET(outsb, (unsigned long p, const void *b, unsigned long c),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
__do_##name al; \
^~~~~~~~~~~~~~
<scratch space>:37:1: note: expanded from here
__do_outsb
^
arch/powerpc/include/asm/io.h:559:58: note: expanded from macro '__do_outsb'
#define __do_outsb(p, b, n) writesb((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
~~~~~~~~~~~~~~~~~~~~~^
In file included from drivers/bluetooth/btrtl.c:11:
In file included from include/linux/usb.h:16:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:10:
In file included from arch/powerpc/include/asm/hardirq.h:6:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/powerpc/include/asm/io.h:619:
arch/powerpc/include/asm/io-defs.h:51:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
DEF_PCI_AC_NORET(outsw, (unsigned long p, const void *b, unsigned long c),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
__do_##name al; \
^~~~~~~~~~~~~~
<scratch space>:39:1: note: expanded from here
__do_outsw
^
arch/powerpc/include/asm/io.h:560:58: note: expanded from macro '__do_outsw'
#define __do_outsw(p, b, n) writesw((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
~~~~~~~~~~~~~~~~~~~~~^
In file included from drivers/bluetooth/btrtl.c:11:
In file included from include/linux/usb.h:16:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:10:
In file included from arch/powerpc/include/asm/hardirq.h:6:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/powerpc/include/asm/io.h:619:
arch/powerpc/include/asm/io-defs.h:53:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
DEF_PCI_AC_NORET(outsl, (unsigned long p, const void *b, unsigned long c),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
__do_##name al; \
^~~~~~~~~~~~~~
<scratch space>:41:1: note: expanded from here
__do_outsl
^
arch/powerpc/include/asm/io.h:561:58: note: expanded from macro '__do_outsl'
#define __do_outsl(p, b, n) writesl((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
~~~~~~~~~~~~~~~~~~~~~^
>> drivers/bluetooth/btrtl.c:556:14: error: no member named 'drop_fw' in 'struct btrtl_device_info'
btrtl_dev->drop_fw = true;
~~~~~~~~~ ^
drivers/bluetooth/btrtl.c:558:17: error: no member named 'drop_fw' in 'struct btrtl_device_info'
if (btrtl_dev->drop_fw) {
~~~~~~~~~ ^
12 warnings and 2 errors generated.
vim +556 drivers/bluetooth/btrtl.c
26503ad25de8c7 Martin Blumenstingl 2018-08-02 519
1cc194caaffbe0 Hans de Goede 2018-08-02 520 struct btrtl_device_info *btrtl_initialize(struct hci_dev *hdev,
1cc194caaffbe0 Hans de Goede 2018-08-02 521 const char *postfix)
db33c77dddc2ed Carlo Caione 2015-05-14 522 {
26503ad25de8c7 Martin Blumenstingl 2018-08-02 523 struct btrtl_device_info *btrtl_dev;
db33c77dddc2ed Carlo Caione 2015-05-14 524 struct sk_buff *skb;
db33c77dddc2ed Carlo Caione 2015-05-14 525 struct hci_rp_read_local_version *resp;
1cc194caaffbe0 Hans de Goede 2018-08-02 526 char cfg_name[40];
907f84990924bf Alex Lu 2018-02-11 527 u16 hci_rev, lmp_subver;
c50903e3ee1b55 Martin Blumenstingl 2018-08-02 528 u8 hci_ver;
26503ad25de8c7 Martin Blumenstingl 2018-08-02 529 int ret;
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 530 u16 opcode;
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 531 u8 cmd[2];
26503ad25de8c7 Martin Blumenstingl 2018-08-02 532
26503ad25de8c7 Martin Blumenstingl 2018-08-02 533 btrtl_dev = kzalloc(sizeof(*btrtl_dev), GFP_KERNEL);
26503ad25de8c7 Martin Blumenstingl 2018-08-02 534 if (!btrtl_dev) {
26503ad25de8c7 Martin Blumenstingl 2018-08-02 535 ret = -ENOMEM;
26503ad25de8c7 Martin Blumenstingl 2018-08-02 536 goto err_alloc;
26503ad25de8c7 Martin Blumenstingl 2018-08-02 537 }
db33c77dddc2ed Carlo Caione 2015-05-14 538
db33c77dddc2ed Carlo Caione 2015-05-14 539 skb = btrtl_read_local_version(hdev);
26503ad25de8c7 Martin Blumenstingl 2018-08-02 540 if (IS_ERR(skb)) {
26503ad25de8c7 Martin Blumenstingl 2018-08-02 541 ret = PTR_ERR(skb);
26503ad25de8c7 Martin Blumenstingl 2018-08-02 542 goto err_free;
26503ad25de8c7 Martin Blumenstingl 2018-08-02 543 }
db33c77dddc2ed Carlo Caione 2015-05-14 544
db33c77dddc2ed Carlo Caione 2015-05-14 545 resp = (struct hci_rp_read_local_version *)skb->data;
f1300c0340872d Alex Lu 2019-08-31 546 rtl_dev_info(hdev, "examining hci_ver=%02x hci_rev=%04x lmp_ver=%02x lmp_subver=%04x",
2064ee332e4c1b Marcel Holtmann 2017-10-30 547 resp->hci_ver, resp->hci_rev,
db33c77dddc2ed Carlo Caione 2015-05-14 548 resp->lmp_ver, resp->lmp_subver);
db33c77dddc2ed Carlo Caione 2015-05-14 549
c50903e3ee1b55 Martin Blumenstingl 2018-08-02 550 hci_ver = resp->hci_ver;
907f84990924bf Alex Lu 2018-02-11 551 hci_rev = le16_to_cpu(resp->hci_rev);
db33c77dddc2ed Carlo Caione 2015-05-14 552 lmp_subver = le16_to_cpu(resp->lmp_subver);
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 553
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 554 if (resp->hci_ver == 0x8 && le16_to_cpu(resp->hci_rev) == 0x826c &&
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 555 resp->lmp_ver == 0x8 && le16_to_cpu(resp->lmp_subver) == 0xa99e)
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 @556 btrtl_dev->drop_fw = true;
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 557
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 558 if (btrtl_dev->drop_fw) {
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 559 opcode = hci_opcode_pack(0x3f, 0x66);
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 560 cmd[0] = opcode & 0xff;
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 561 cmd[1] = opcode >> 8;
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 562
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 563 skb = bt_skb_alloc(sizeof(cmd), GFP_KERNEL);
f5e8e215869eed Colin Ian King 2020-11-10 564 if (!skb)
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 565 goto out_free;
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 566
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 567 skb_put_data(skb, cmd, sizeof(cmd));
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 568 hci_skb_pkt_type(skb) = HCI_COMMAND_PKT;
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 569
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 570 hdev->send(hdev, skb);
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 571
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 572 /* Ensure the above vendor command is sent to controller and
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 573 * process has done.
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 574 */
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 575 msleep(200);
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 576
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 577 /* Read the local version again. Expect to have the vanilla
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 578 * version as cold boot.
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 579 */
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 580 skb = btrtl_read_local_version(hdev);
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 581 if (IS_ERR(skb)) {
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 582 ret = PTR_ERR(skb);
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 583 goto err_free;
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 584 }
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 585
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 586 resp = (struct hci_rp_read_local_version *)skb->data;
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 587 rtl_dev_info(hdev, "examining hci_ver=%02x hci_rev=%04x lmp_ver=%02x lmp_subver=%04x",
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 588 resp->hci_ver, resp->hci_rev,
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 589 resp->lmp_ver, resp->lmp_subver);
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 590
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 591 hci_ver = resp->hci_ver;
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 592 hci_rev = le16_to_cpu(resp->hci_rev);
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 593 lmp_subver = le16_to_cpu(resp->lmp_subver);
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 594 }
1996d9cad6ad48 Kai-Heng Feng 2020-10-26 595 out_free:
db33c77dddc2ed Carlo Caione 2015-05-14 596 kfree_skb(skb);
db33c77dddc2ed Carlo Caione 2015-05-14 597
c50903e3ee1b55 Martin Blumenstingl 2018-08-02 598 btrtl_dev->ic_info = btrtl_match_ic(lmp_subver, hci_rev, hci_ver,
c50903e3ee1b55 Martin Blumenstingl 2018-08-02 599 hdev->bus);
c50903e3ee1b55 Martin Blumenstingl 2018-08-02 600
26503ad25de8c7 Martin Blumenstingl 2018-08-02 601 if (!btrtl_dev->ic_info) {
d182215d2fb9e5 Alex Lu 2019-08-31 602 rtl_dev_info(hdev, "unknown IC info, lmp subver %04x, hci rev %04x, hci ver %04x",
c50903e3ee1b55 Martin Blumenstingl 2018-08-02 603 lmp_subver, hci_rev, hci_ver);
00df214b1faae5 Kai-Heng Feng 2019-01-27 604 return btrtl_dev;
26503ad25de8c7 Martin Blumenstingl 2018-08-02 605 }
26503ad25de8c7 Martin Blumenstingl 2018-08-02 606
26503ad25de8c7 Martin Blumenstingl 2018-08-02 607 if (btrtl_dev->ic_info->has_rom_version) {
26503ad25de8c7 Martin Blumenstingl 2018-08-02 608 ret = rtl_read_rom_version(hdev, &btrtl_dev->rom_version);
26503ad25de8c7 Martin Blumenstingl 2018-08-02 609 if (ret)
26503ad25de8c7 Martin Blumenstingl 2018-08-02 610 goto err_free;
26503ad25de8c7 Martin Blumenstingl 2018-08-02 611 }
26503ad25de8c7 Martin Blumenstingl 2018-08-02 612
26503ad25de8c7 Martin Blumenstingl 2018-08-02 613 btrtl_dev->fw_len = rtl_load_file(hdev, btrtl_dev->ic_info->fw_name,
26503ad25de8c7 Martin Blumenstingl 2018-08-02 614 &btrtl_dev->fw_data);
26503ad25de8c7 Martin Blumenstingl 2018-08-02 615 if (btrtl_dev->fw_len < 0) {
f1300c0340872d Alex Lu 2019-08-31 616 rtl_dev_err(hdev, "firmware file %s not found",
26503ad25de8c7 Martin Blumenstingl 2018-08-02 617 btrtl_dev->ic_info->fw_name);
26503ad25de8c7 Martin Blumenstingl 2018-08-02 618 ret = btrtl_dev->fw_len;
26503ad25de8c7 Martin Blumenstingl 2018-08-02 619 goto err_free;
26503ad25de8c7 Martin Blumenstingl 2018-08-02 620 }
26503ad25de8c7 Martin Blumenstingl 2018-08-02 621
26503ad25de8c7 Martin Blumenstingl 2018-08-02 622 if (btrtl_dev->ic_info->cfg_name) {
1cc194caaffbe0 Hans de Goede 2018-08-02 623 if (postfix) {
1cc194caaffbe0 Hans de Goede 2018-08-02 624 snprintf(cfg_name, sizeof(cfg_name), "%s-%s.bin",
1cc194caaffbe0 Hans de Goede 2018-08-02 625 btrtl_dev->ic_info->cfg_name, postfix);
1cc194caaffbe0 Hans de Goede 2018-08-02 626 } else {
1cc194caaffbe0 Hans de Goede 2018-08-02 627 snprintf(cfg_name, sizeof(cfg_name), "%s.bin",
1cc194caaffbe0 Hans de Goede 2018-08-02 628 btrtl_dev->ic_info->cfg_name);
1cc194caaffbe0 Hans de Goede 2018-08-02 629 }
1cc194caaffbe0 Hans de Goede 2018-08-02 630 btrtl_dev->cfg_len = rtl_load_file(hdev, cfg_name,
26503ad25de8c7 Martin Blumenstingl 2018-08-02 631 &btrtl_dev->cfg_data);
26503ad25de8c7 Martin Blumenstingl 2018-08-02 632 if (btrtl_dev->ic_info->config_needed &&
26503ad25de8c7 Martin Blumenstingl 2018-08-02 633 btrtl_dev->cfg_len <= 0) {
f1300c0340872d Alex Lu 2019-08-31 634 rtl_dev_err(hdev, "mandatory config file %s not found",
26503ad25de8c7 Martin Blumenstingl 2018-08-02 635 btrtl_dev->ic_info->cfg_name);
26503ad25de8c7 Martin Blumenstingl 2018-08-02 636 ret = btrtl_dev->cfg_len;
26503ad25de8c7 Martin Blumenstingl 2018-08-02 637 goto err_free;
26503ad25de8c7 Martin Blumenstingl 2018-08-02 638 }
26503ad25de8c7 Martin Blumenstingl 2018-08-02 639 }
26503ad25de8c7 Martin Blumenstingl 2018-08-02 640
673fae14f24052 Miao-chen Chou 2020-12-17 641 /* RTL8822CE supports the Microsoft vendor extension and uses 0xFCF0
673fae14f24052 Miao-chen Chou 2020-12-17 642 * for VsMsftOpCode.
673fae14f24052 Miao-chen Chou 2020-12-17 643 */
673fae14f24052 Miao-chen Chou 2020-12-17 644 if (lmp_subver == RTL_ROM_LMP_8822B)
673fae14f24052 Miao-chen Chou 2020-12-17 645 hci_set_msft_opcode(hdev, 0xFCF0);
673fae14f24052 Miao-chen Chou 2020-12-17 646
26503ad25de8c7 Martin Blumenstingl 2018-08-02 647 return btrtl_dev;
26503ad25de8c7 Martin Blumenstingl 2018-08-02 648
26503ad25de8c7 Martin Blumenstingl 2018-08-02 649 err_free:
26503ad25de8c7 Martin Blumenstingl 2018-08-02 650 btrtl_free(btrtl_dev);
26503ad25de8c7 Martin Blumenstingl 2018-08-02 651 err_alloc:
26503ad25de8c7 Martin Blumenstingl 2018-08-02 652 return ERR_PTR(ret);
26503ad25de8c7 Martin Blumenstingl 2018-08-02 653 }
26503ad25de8c7 Martin Blumenstingl 2018-08-02 654 EXPORT_SYMBOL_GPL(btrtl_initialize);
26503ad25de8c7 Martin Blumenstingl 2018-08-02 655
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Download attachment ".config.gz" of type "application/gzip" (27779 bytes)
Powered by blists - more mailing lists