lkml.org 
[lkml]   [2022]   [Aug]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH v4 4/5] Bluetooth: btusb: Add btusb devcoredump support
    From
    This patch implements the btusb driver side .coredump() callback to
    trigger a devcoredump via sysfs and .enable_coredump() callback to
    check if the devcoredump functionality is enabled for a device.

    Signed-off-by: Manish Mandlik <mmandlik@google.com>
    Reviewed-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
    ---

    Changes in v4:
    - New patch in the series

    drivers/bluetooth/btusb.c | 31 +++++++++++++++++++++++++++++++
    1 file changed, 31 insertions(+)

    diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
    index 30dd443f395f..b00851327aa3 100644
    --- a/drivers/bluetooth/btusb.c
    +++ b/drivers/bluetooth/btusb.c
    @@ -1510,6 +1510,15 @@ static void btusb_isoc_tx_complete(struct urb *urb)
    kfree_skb(skb);
    }

    +#ifdef CONFIG_DEV_COREDUMP
    +static bool btusb_coredump_enabled(struct hci_dev *hdev)
    +{
    + struct btusb_data *data = hci_get_drvdata(hdev);
    +
    + return !data->intf->dev.coredump_disabled;
    +}
    +#endif
    +
    static int btusb_open(struct hci_dev *hdev)
    {
    struct btusb_data *data = hci_get_drvdata(hdev);
    @@ -3765,6 +3774,9 @@ static int btusb_probe(struct usb_interface *intf,
    hdev->send = btusb_send_frame;
    hdev->notify = btusb_notify;
    hdev->wakeup = btusb_wakeup;
    +#ifdef CONFIG_DEV_COREDUMP
    + hdev->dump.enabled = btusb_coredump_enabled;
    +#endif

    #ifdef CONFIG_PM
    err = btusb_config_oob_wake(hdev);
    @@ -4180,6 +4192,17 @@ static int btusb_resume(struct usb_interface *intf)
    }
    #endif

    +#ifdef CONFIG_DEV_COREDUMP
    +static void btusb_coredump(struct device *dev)
    +{
    + struct btusb_data *data = dev_get_drvdata(dev);
    + struct hci_dev *hdev = data->hdev;
    +
    + if (!dev->coredump_disabled && hdev->dump.coredump)
    + hdev->dump.coredump(hdev);
    +}
    +#endif
    +
    static struct usb_driver btusb_driver = {
    .name = "btusb",
    .probe = btusb_probe,
    @@ -4191,6 +4214,14 @@ static struct usb_driver btusb_driver = {
    .id_table = btusb_table,
    .supports_autosuspend = 1,
    .disable_hub_initiated_lpm = 1,
    +
    +#ifdef CONFIG_DEV_COREDUMP
    + .drvwrap = {
    + .driver = {
    + .coredump = btusb_coredump,
    + },
    + },
    +#endif
    };

    module_usb_driver(btusb_driver);
    --
    2.37.1.559.g78731f0fdb-goog
    \
     
     \ /
      Last update: 2022-08-09 17:37    [W:2.709 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site