Received: by 2002:a05:6a10:c7c6:0:0:0:0 with SMTP id h6csp2205046pxy; Mon, 2 Aug 2021 23:44:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyd9WcezJpnfj/uXAduJRbqyfEHW8xPK/yj4Qo1sMLy3b/DT4b8itJ6/WiCGR0afJHeN65R X-Received: by 2002:a17:906:814b:: with SMTP id z11mr18815240ejw.204.1627973061482; Mon, 02 Aug 2021 23:44:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627973061; cv=none; d=google.com; s=arc-20160816; b=fGbQvCWQhaktz2wA/bEHyv+LlgSOPXOndL8/COJFrL8P3zkEOQFqd8QyyvV11rLE9o zCjmqmKoR4jLgaTTXuTQtFWFZWU3r1bhTGy1YB+/D0PTXjbpi9+wCFruVs6MkalLxnLm J5gm2Z66dtXK7Dci94G35u3SN8r1vOxSuiSMRcpuY2XE3Kh2r9FWsTs6c1GiRQprVLrc V3GR+ePsnwVxbUVw9WovhQMQBwIqViQRulsrAOJRLqxLKbWnkjRHiFR8PeFXP2b6O7iC X8eTVqEFL8dsVnjF8ipV33NiFVRrku1veHpXSmeFZjHXH+ZgFesHikMlX+dYhi+ZqjyL qPyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=WOGxtwx6AEh5sPp4Uy0fChJ5+55ettnCggYD7WCOhLY=; b=qAhGixivXar2uXGlHy1gznJBkLigOnO5MpVLMFKU/diuWOwu/C/Hx8Dm7NZl6R0Hop qekTke6x0F7ooSdffknj/P4kjaEVx5X+Egy7+sFnihcrd14I9AI2ETgFsLQiLQA5Hsqk hnYlz2cFKHsNX+kZB0SsYdC/qbFnFbyFIIqwoCaovvXd50v3/SWHQ77lbreu+DNA/AMY Wxcy0RL97cIUD37L3OzIBA8dd61smI2K4B9f9g98qBDYUounOsK62up0OLrn7YKcPuUx tRYWylYrIPlDlVDmSesrRPtf+YXCZOz2UB23zGIO8O7dSebOTna0WV1DR13F/dJLM9Q1 3zFQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=dCrDiUW3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z17si8397425ejj.202.2021.08.02.23.43.58; Mon, 02 Aug 2021 23:44:21 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=dCrDiUW3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233997AbhHCGmg (ORCPT + 99 others); Tue, 3 Aug 2021 02:42:36 -0400 Received: from smtp-relay-canonical-1.canonical.com ([185.125.188.121]:44948 "EHLO smtp-relay-canonical-1.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233902AbhHCGmf (ORCPT ); Tue, 3 Aug 2021 02:42:35 -0400 Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPS id A8B953F070 for ; Tue, 3 Aug 2021 06:42:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1627972943; bh=WOGxtwx6AEh5sPp4Uy0fChJ5+55ettnCggYD7WCOhLY=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=dCrDiUW38KjRV+u1obvcGLqtUCZ1p5Rvr1qGJnZy/QLzxr2I9S7pdEELeJ4EG9pR9 9AI/pliFBbJwqXHcQ3UbnyhatuQzvm8IvC9EaBk/3Ro0w+m1gvz8XoPG4QaiXd3u4a JYQgyJL/25NoPWFUVqbuVpWOfcVRmtp/v+ZgPLa22FmfgxSDGoPo0e2T0QWNNGq+QO prrOEXFFAQqLW/VRBCOOYvhHvakrm+RbCg2MfC+snQ/kBwcaWK5WDkDHATfoYrDcad uMQcer6Fz8z+zhT1kDRJdPvWdbbyU36FFthVsUjbye6bRhWgvEdsJ9CuEpO8uQIY6b GX/YUuHejTuDg== Received: by mail-ed1-f71.google.com with SMTP id p2-20020a50c9420000b02903a12bbba1ebso9927066edh.6 for ; Mon, 02 Aug 2021 23:42:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=WOGxtwx6AEh5sPp4Uy0fChJ5+55ettnCggYD7WCOhLY=; b=Ek38XCeFwCk5ngkKOFqq2hXIAXleJlB/V/Hrgrbuu8NHKmdkrdY84qYnccvzMMZ+0v 07aKvQAiZx+tMTp3NsoixuuUciTi2Zl/+sA9ARuXQ5exjfEGr6xODu5eLu3ypR7vy2Ke tKVxqgrfRdbRyrlJDHSuoL8461odke8ZhNoIkr5JQjrDByIC/ZEOC8dIV95CC0b83N7f fTpS2E3shDLg9FpmJJEvfiFtbcu6DeHwmtQ33t4u5ZUSbUzjCE/333QI9twMV5VP0Moy ZQYQnWU0wsM5wRbtdVaVCLEWOL9kP7+gVDzD4DPn8x7Ks4unBnvjMhS2InFiLLavHypP M63Q== X-Gm-Message-State: AOAM533Zo/nymtjGFkwAM56rowJiuGQy7iauWjMdidkKZqTCXKd0SYn0 sCYLUjX7jsAMT9FI/fb+13BoHpJt+VPMlDHj0gKrriPjT17dpIUwoxsUlfqGj1nCfhpGwp4QdYz /TQDJcn5J/q/Gn9nfxA0k8kO8QCh/Pf+RVFcztNKadU0ns1+0hJSR4bsxdg== X-Received: by 2002:a17:906:4e52:: with SMTP id g18mr19461993ejw.432.1627972943362; Mon, 02 Aug 2021 23:42:23 -0700 (PDT) X-Received: by 2002:a17:906:4e52:: with SMTP id g18mr19461964ejw.432.1627972943071; Mon, 02 Aug 2021 23:42:23 -0700 (PDT) MIME-Version: 1.0 References: <20210514071452.25220-1-kai.heng.feng@canonical.com> <576B26FD-81F8-4632-82F6-57C4A7C096C4@holtmann.org> <8735ryk0o7.fsf@baylibre.com> <87y29o58su.fsf@baylibre.com> In-Reply-To: <87y29o58su.fsf@baylibre.com> From: Kai-Heng Feng Date: Tue, 3 Aug 2021 14:42:07 +0800 Message-ID: Subject: Re: [PATCH v2] Bluetooth: Shutdown controller after workqueues are flushed or cancelled To: Mattijs Korpershoek Cc: Marcel Holtmann , Johan Hedberg , Luiz Augusto von Dentz , "David S. Miller" , Jakub Kicinski , Fabien Parent , Sean Wang , "open list:BLUETOOTH SUBSYSTEM" , "open list:NETWORKING [GENERAL]" , open list Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Mattijs, On Fri, Jul 30, 2021 at 7:40 PM Mattijs Korpershoek wrote: > > Hi Kai-Heng, [snipped] > Thank you for your help. Sorry I did not post the logs previously. > > dmesg: https://pastebin.com/tpWDNyQr > ftrace on btmtksdio: https://pastebin.com/jmhvmwUw Seems like btmtksdio needs shudown() to be called before flush(). Since the order was there for a very long time, changing the calling order indeed can break what driver expects. Can you please test the following patch: diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 2560ed2f144d..a61e610a400c 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -1785,6 +1785,14 @@ int hci_dev_do_close(struct hci_dev *hdev) aosp_do_close(hdev); msft_do_close(hdev); + if (!hci_dev_test_flag(hdev, HCI_UNREGISTER) && + !hci_dev_test_flag(hdev, HCI_USER_CHANNEL) && + test_bit(HCI_UP, &hdev->flags)) { + /* Execute vendor specific shutdown routine */ + if (hdev->shutdown) + hdev->shutdown(hdev); + } + if (hdev->flush) hdev->flush(hdev); @@ -1798,14 +1806,6 @@ int hci_dev_do_close(struct hci_dev *hdev) clear_bit(HCI_INIT, &hdev->flags); } - if (!hci_dev_test_flag(hdev, HCI_UNREGISTER) && - !hci_dev_test_flag(hdev, HCI_USER_CHANNEL) && - test_bit(HCI_UP, &hdev->flags)) { - /* Execute vendor specific shutdown routine */ - if (hdev->shutdown) - hdev->shutdown(hdev); - } - /* flush cmd work */ flush_work(&hdev->cmd_work); Kai-Heng > > Mattijs > > > > Kai-Heng > > > >> > >> Thanks, > >> Mattijs Korpershoek > >> > >> > >> > > >> > Regards > >> > > >> > Marcel