RE: [RESEND] [PATCH 3/3] iwlwifi: Load firmware exclusively for Intel WiFi

From: Grumbach, Emmanuel
Date: Wed Oct 03 2018 - 05:52:49 EST


>
> > On Oct 3, 2018, at 5:10 PM, Kalle Valo <kvalo@xxxxxxxxxxxxxx> wrote:
> >
> > Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx> writes:
> >
> >> To avoid the firmware loading race between Bluetooth and WiFi on
> >> Intel 8260, load firmware exclusively when BT_INTEL is enabled.
> >>
> >> Signed-off-by: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx>
> >
> > Still the commit log tells nothing about the actual problem which
> > makes review impossible.
>
> Sorry for that. The first two patches [1] only sends to linux-bluetooth and
> LMKL.
>
> I donât know what really happened at hardware/firmware level, but making
> btusb and iwlwifi load firmware sequentially can workaround the issue.
>
> Matt Chen may be able to explain this issue with more detail.
>
> [1] https://lkml.org/lkml/2018/10/3/322
>

I just read the code of this patch and I don't quite understand.
You have a function that is declared as a non-inline function in two different header files?
btintel_firmware_lock is declared here:

--- /dev/null
+++ b/include/linux/intel-wifi-bt.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __INTEL_WIFI_BT_H__
+#define __INTEL_WIFI_BT_H__
+
+void btintel_firmware_lock(void);

And ...

diff --git a/drivers/bluetooth/btintel.h b/drivers/bluetooth/btintel.h
index 41c642cc523f..1373ffc2b575 100644
--- a/drivers/bluetooth/btintel.h
+++ b/drivers/bluetooth/btintel.h
@@ -102,6 +102,8 @@ int btintel_read_boot_params(struct hci_dev *hdev,
struct intel_boot_params *params);
int btintel_download_firmware(struct hci_dev *dev, const struct firmware *fw,
u32 *boot_param);
+void btintel_firmware_lock(void);


This can't be right.