From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: usb: dwc2: Revert "usb: dwc2: Disable all EP's on disconnect" From: Dan Carpenter Message-Id: <20181204132913.GH3073@unbuntlaptop> Date: Tue, 4 Dec 2018 16:29:13 +0300 To: Minas Harutyunyan Cc: Marek Szyprowski , Maynard CABIENTE , "linux-kernel@vger.kernel.org" , "linux-usb@vger.kernel.org" , Greg Kroah-Hartman , Felipe Balbi , Geert Uytterhoeven , Bartlomiej Zolnierkiewicz List-ID: T24gVHVlLCBEZWMgMDQsIDIwMTggYXQgMTI6MzQ6MDhQTSArMDAwMCwgTWluYXMgSGFydXR5dW55 YW4gd3JvdGU6Cj4gQEAgLTMxODUsMTIgKzMxODMsMTMgQEAgdm9pZCBkd2MyX2hzb3RnX2Rpc2Nv bm5lY3Qoc3RydWN0IGR3YzJfaHNvdGcgKmhzb3RnKQo+ICAgICAgICAgIGhzb3RnLT5jb25uZWN0 ZWQgPSAwOwo+ICAgICAgICAgIGhzb3RnLT50ZXN0X21vZGUgPSAwOwo+IAo+IC0gICAgICAgLyog YWxsIGVuZHBvaW50cyBzaG91bGQgYmUgc2h1dGRvd24gKi8KPiAgICAgICAgICBmb3IgKGVwID0g MDsgZXAgPCBoc290Zy0+bnVtX29mX2VwczsgZXArKykgewo+ICAgICAgICAgICAgICAgICAgaWYg KGhzb3RnLT5lcHNfaW5bZXBdKQo+IC0gICAgICAgICAgICAgICAgICAgICAgIGR3YzJfaHNvdGdf ZXBfZGlzYWJsZSgmaHNvdGctPmVwc19pbltlcF0tPmVwKTsKPiArICAgICAgICAgICAgICAgICAg ICAgICBraWxsX2FsbF9yZXF1ZXN0cyhoc290ZywgaHNvdGctPmVwc19pbltlcF0sCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1FU0hV VERPV04pOwo+ICAgICAgICAgICAgICAgICAgaWYgKGhzb3RnLT5lcHNfb3V0W2VwXSkKPiAtICAg ICAgICAgICAgICAgICAgICAgICBkd2MyX2hzb3RnX2VwX2Rpc2FibGUoJmhzb3RnLT5lcHNfb3V0 W2VwXS0+ZXApOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGtpbGxfYWxsX3JlcXVlc3RzKGhz b3RnLCBoc290Zy0+ZXBzX291dFtlcF0sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1FU0hVVERPV04pOwoKClNob3VsZCB0aGlzIHBh cnQgYmUgaW4gYSBzZXBhcmF0ZSBwYXRjaD8KCkknbSBub3QgdHJ5aW5nIHRvIGJlIHJoZXRvcmlj YWwgYXQgYWxsLiAgSSBsaXRlcmFsbHkgZG9uJ3Qga25vdyB0aGUKY29kZSB2ZXJ5IHdlbGwuICBI b3BlZnVsbHkgdGhlIGZ1bGwgY29tbWl0IG1lc3NhZ2Ugd2lsbCBleHBsYWluIGl0LgoKPiAgICAg ICAgICB9Cj4gCj4gICAgICAgICAgY2FsbF9nYWRnZXQoaHNvdGcsIGRpc2Nvbm5lY3QpOwo+IEBA IC0zMjM0LDYgKzMyMzMsOCBAQCBzdGF0aWMgdm9pZCBkd2MyX2hzb3RnX2lycV9maWZvZW1wdHko c3RydWN0IAo+IGR3YzJfaHNvdGcgKmhzb3RnLCBib29sIHBlcmlvZGljKQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICBHSU5UU1RTX1BUWEZFTVAgfCAgXAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICBHSU5UU1RTX1JYRkxWTCkKPiAKPiArc3RhdGljIGludCBkd2MyX2hzb3RnX2VwX2Rpc2Fi bGUoc3RydWN0IHVzYl9lcCAqZXApOwo+ICsKPiAgIC8qKgo+ICAgICogZHdjMl9oc290Z19jb3Jl X2luaXQgLSBpc3N1ZSBzb2Z0cmVzZXQgdG8gdGhlIGNvcmUKPiAgICAqIEBoc290ZzogVGhlIGRl dmljZSBzdGF0ZQo+IEBAIC0zMjU4LDEyICszMjU5LDE0IEBAIHZvaWQgZHdjMl9oc290Z19jb3Jl X2luaXRfZGlzY29ubmVjdGVkKHN0cnVjdCAKPiBkd2MyX2hzb3RnICpoc290ZywKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuOwo+ICAgICAgICAgIH0gZWxzZSB7Cj4gICAgICAgICAg ICAgICAgICAvKiBhbGwgZW5kcG9pbnRzIHNob3VsZCBiZSBzaHV0ZG93biAqLwo+ICsgICAgICAg ICAgICAgICBzcGluX3VubG9jaygmaHNvdGctPmxvY2spOwo+ICAgICAgICAgICAgICAgICAgZm9y IChlcCA9IDE7IGVwIDwgaHNvdGctPm51bV9vZl9lcHM7IGVwKyspIHsKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKGhzb3RnLT5lcHNfaW5bZXBdKQo+ICAKPiBkd2MyX2hzb3RnX2VwX2Rp c2FibGUoJmhzb3RnLT5lcHNfaW5bZXBdLT5lcCk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAg IGlmIChoc290Zy0+ZXBzX291dFtlcF0pCj4gIAo+IGR3YzJfaHNvdGdfZXBfZGlzYWJsZSgmaHNv dGctPmVwc19vdXRbZXBdLT5lcCk7Cj4gICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAg ICAgIHNwaW5fbG9jaygmaHNvdGctPmxvY2spOwo+ICAgICAgICAgIH0KPiAKPiAgICAgICAgICAv KgoKVGhlIGlkZWEgaGVyZSBpcyB0aGF0IHRoaXMgaXMgdGhlIG9ubHkgY2FsbGVyIHdoaWNoIGlz IGhvbGRpbmcgdGhlCmxvY2sgYW5kIHdlIGRyb3AgaXQgaGVyZSBhbmQgdGFrZSBpdCBhZ2FpbiBp bnNpZGUgZHdjMl9oc290Z19lcF9kaXNhYmxlKCkuCkkgZG9uJ3Qga25vdyB0aGUgY29kZSB2ZXJ5 IHdlbGwgYW5kIGNhbid0IHRvdGFsbHkgc3dlYXIgdGhhdCB0aGlzCmRvZXNuJ3QgaW50cm9kdWNl IGEgc21hbGwgcmFjZSBjb25kaXRpb24uLi4KCkFub3RoZXIgb3B0aW9uIHdvdWxkIGJlIHRvIGlu dHJvZHVjZSBhIG5ldyBmdW5jdGlvbiB3aGljaCB0YWtlcyB0aGUgbG9jawphbmQgY2hhbmdlIGFs bCB0aGUgb3RoZXIgY2FsbGVycyBpbnN0ZWFkLiAgVG8gbWUgdGhhdCB3b3VsZCBiZSBlYXNpZXIg dG8KcmV2aWV3Li4uICBTZWUgYmVsb3cgZm9yIGhvdyBpdCBtaWdodCBsb29rOgoKcmVnYXJkcywK ZGFuIGNhcnBlbnRlcgoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3YzIvZ2FkZ2V0LmMgYi9k cml2ZXJzL3VzYi9kd2MyL2dhZGdldC5jCmluZGV4IDk0ZjNiYTk5NTU4MC4uYjE3YTVkYmVmZDVm IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9kd2MyL2dhZGdldC5jCisrKyBiL2RyaXZlcnMvdXNi L2R3YzIvZ2FkZ2V0LmMKQEAgLTMxNjYsNiArMzE2Niw3IEBAIHN0YXRpYyB2b2lkIGtpbGxfYWxs X3JlcXVlc3RzKHN0cnVjdCBkd2MyX2hzb3RnICpoc290ZywKIH0KIAogc3RhdGljIGludCBkd2My X2hzb3RnX2VwX2Rpc2FibGUoc3RydWN0IHVzYl9lcCAqZXApOworc3RhdGljIGludCBkd2MyX2hz b3RnX2VwX2Rpc2FibGVfbG9jayhzdHJ1Y3QgdXNiX2VwICplcCk7CiAKIC8qKgogICogZHdjMl9o c290Z19kaXNjb25uZWN0IC0gZGlzY29ubmVjdCBzZXJ2aWNlCkBAIC0zMTg4LDkgKzMxODksOSBA QCB2b2lkIGR3YzJfaHNvdGdfZGlzY29ubmVjdChzdHJ1Y3QgZHdjMl9oc290ZyAqaHNvdGcpCiAJ LyogYWxsIGVuZHBvaW50cyBzaG91bGQgYmUgc2h1dGRvd24gKi8KIAlmb3IgKGVwID0gMDsgZXAg PCBoc290Zy0+bnVtX29mX2VwczsgZXArKykgewogCQlpZiAoaHNvdGctPmVwc19pbltlcF0pCi0J CQlkd2MyX2hzb3RnX2VwX2Rpc2FibGUoJmhzb3RnLT5lcHNfaW5bZXBdLT5lcCk7CisJCQlkd2My X2hzb3RnX2VwX2Rpc2FibGVfbG9jaygmaHNvdGctPmVwc19pbltlcF0tPmVwKTsKIAkJaWYgKGhz b3RnLT5lcHNfb3V0W2VwXSkKLQkJCWR3YzJfaHNvdGdfZXBfZGlzYWJsZSgmaHNvdGctPmVwc19v dXRbZXBdLT5lcCk7CisJCQlkd2MyX2hzb3RnX2VwX2Rpc2FibGVfbG9jaygmaHNvdGctPmVwc19v dXRbZXBdLT5lcCk7CiAJfQogCiAJY2FsbF9nYWRnZXQoaHNvdGcsIGRpc2Nvbm5lY3QpOwpAQCAt NDA2OSwxMCArNDA3MCw4IEBAIHN0YXRpYyBpbnQgZHdjMl9oc290Z19lcF9kaXNhYmxlKHN0cnVj dCB1c2JfZXAgKmVwKQogCXN0cnVjdCBkd2MyX2hzb3RnICpoc290ZyA9IGhzX2VwLT5wYXJlbnQ7 CiAJaW50IGRpcl9pbiA9IGhzX2VwLT5kaXJfaW47CiAJaW50IGluZGV4ID0gaHNfZXAtPmluZGV4 OwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdTMyIGVwY3RybF9yZWc7CiAJdTMyIGN0cmw7Ci0J aW50IGxvY2tlZDsKIAogCWRldl9kYmcoaHNvdGctPmRldiwgIiVzKGVwICVwKVxuIiwgX19mdW5j X18sIGVwKTsKIApAQCAtNDA4OCwxMCArNDA4Nyw2IEBAIHN0YXRpYyBpbnQgZHdjMl9oc290Z19l cF9kaXNhYmxlKHN0cnVjdCB1c2JfZXAgKmVwKQogCiAJZXBjdHJsX3JlZyA9IGRpcl9pbiA/IERJ RVBDVEwoaW5kZXgpIDogRE9FUENUTChpbmRleCk7CiAKLQlsb2NrZWQgPSBzcGluX2lzX2xvY2tl ZCgmaHNvdGctPmxvY2spOwotCWlmICghbG9ja2VkKQotCQlzcGluX2xvY2tfaXJxc2F2ZSgmaHNv dGctPmxvY2ssIGZsYWdzKTsKLQogCWN0cmwgPSBkd2MyX3JlYWRsKGhzb3RnLCBlcGN0cmxfcmVn KTsKIAogCWlmIChjdHJsICYgRFhFUENUTF9FUEVOQSkKQEAgLTQxMTQsMTIgKzQxMDksMjMgQEAg c3RhdGljIGludCBkd2MyX2hzb3RnX2VwX2Rpc2FibGUoc3RydWN0IHVzYl9lcCAqZXApCiAJaHNf ZXAtPmZpZm9faW5kZXggPSAwOwogCWhzX2VwLT5maWZvX3NpemUgPSAwOwogCi0JaWYgKCFsb2Nr ZWQpCi0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhzb3RnLT5sb2NrLCBmbGFncyk7Ci0KIAly ZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBkd2MyX2hzb3RnX2VwX2Rpc2FibGVfbG9jayhzdHJ1 Y3QgdXNiX2VwICplcCkKK3sKKwlzdHJ1Y3QgZHdjMl9oc290Z19lcCAqaHNfZXAgPSBvdXJfZXAo ZXApOworCXN0cnVjdCBkd2MyX2hzb3RnICpoc290ZyA9IGhzX2VwLT5wYXJlbnQ7CisJdW5zaWdu ZWQgbG9uZyBmbGFnczsKKwlpbnQgcmV0OworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmhzb3RnLT5s b2NrLCBmbGFncyk7CisJcmV0ID0gZHdjMl9oc290Z19lcF9kaXNhYmxlKGVwKTsKKwlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZoc290Zy0+bG9jaywgZmxhZ3MpOworCisJcmV0dXJuIHJldDsKK30K KwogLyoqCiAgKiBvbl9saXN0IC0gY2hlY2sgcmVxdWVzdCBpcyBvbiB0aGUgZ2l2ZW4gZW5kcG9p bnQKICAqIEBlcDogVGhlIGVuZHBvaW50IHRvIGNoZWNrLgpAQCAtNDI2Nyw3ICs0MjczLDcgQEAg c3RhdGljIGludCBkd2MyX2hzb3RnX2VwX3NldGhhbHRfbG9jayhzdHJ1Y3QgdXNiX2VwICplcCwg aW50IHZhbHVlKQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9lcF9vcHMgZHdjMl9oc290Z19l cF9vcHMgPSB7CiAJLmVuYWJsZQkJPSBkd2MyX2hzb3RnX2VwX2VuYWJsZSwKLQkuZGlzYWJsZQk9 IGR3YzJfaHNvdGdfZXBfZGlzYWJsZSwKKwkuZGlzYWJsZQk9IGR3YzJfaHNvdGdfZXBfZGlzYWJs ZV9sb2NrLAogCS5hbGxvY19yZXF1ZXN0CT0gZHdjMl9oc290Z19lcF9hbGxvY19yZXF1ZXN0LAog CS5mcmVlX3JlcXVlc3QJPSBkd2MyX2hzb3RnX2VwX2ZyZWVfcmVxdWVzdCwKIAkucXVldWUJCT0g ZHdjMl9oc290Z19lcF9xdWV1ZV9sb2NrLApAQCAtNDQwNyw5ICs0NDEzLDkgQEAgc3RhdGljIGlu dCBkd2MyX2hzb3RnX3VkY19zdG9wKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpCiAJLyogYWxs IGVuZHBvaW50cyBzaG91bGQgYmUgc2h1dGRvd24gKi8KIAlmb3IgKGVwID0gMTsgZXAgPCBoc290 Zy0+bnVtX29mX2VwczsgZXArKykgewogCQlpZiAoaHNvdGctPmVwc19pbltlcF0pCi0JCQlkd2My X2hzb3RnX2VwX2Rpc2FibGUoJmhzb3RnLT5lcHNfaW5bZXBdLT5lcCk7CisJCQlkd2MyX2hzb3Rn X2VwX2Rpc2FibGVfbG9jaygmaHNvdGctPmVwc19pbltlcF0tPmVwKTsKIAkJaWYgKGhzb3RnLT5l cHNfb3V0W2VwXSkKLQkJCWR3YzJfaHNvdGdfZXBfZGlzYWJsZSgmaHNvdGctPmVwc19vdXRbZXBd LT5lcCk7CisJCQlkd2MyX2hzb3RnX2VwX2Rpc2FibGVfbG9jaygmaHNvdGctPmVwc19vdXRbZXBd LT5lcCk7CiAJfQogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmhzb3RnLT5sb2NrLCBmbGFncyk7CkBA IC00ODU3LDkgKzQ4NjMsOSBAQCBpbnQgZHdjMl9oc290Z19zdXNwZW5kKHN0cnVjdCBkd2MyX2hz b3RnICpoc290ZykKIAogCQlmb3IgKGVwID0gMDsgZXAgPCBoc290Zy0+bnVtX29mX2VwczsgZXAr KykgewogCQkJaWYgKGhzb3RnLT5lcHNfaW5bZXBdKQotCQkJCWR3YzJfaHNvdGdfZXBfZGlzYWJs ZSgmaHNvdGctPmVwc19pbltlcF0tPmVwKTsKKwkJCQlkd2MyX2hzb3RnX2VwX2Rpc2FibGVfbG9j aygmaHNvdGctPmVwc19pbltlcF0tPmVwKTsKIAkJCWlmIChoc290Zy0+ZXBzX291dFtlcF0pCi0J CQkJZHdjMl9oc290Z19lcF9kaXNhYmxlKCZoc290Zy0+ZXBzX291dFtlcF0tPmVwKTsKKwkJCQlk d2MyX2hzb3RnX2VwX2Rpc2FibGVfbG9jaygmaHNvdGctPmVwc19vdXRbZXBdLT5lcCk7CiAJCX0K IAl9CiAK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_PASS,UNPARSEABLE_RELAY,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B597FC04EB8 for ; Tue, 4 Dec 2018 13:29:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6DE702081C for ; Tue, 4 Dec 2018 13:29:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Ivhm9rrK" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6DE702081C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=oracle.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726222AbeLDN3w (ORCPT ); Tue, 4 Dec 2018 08:29:52 -0500 Received: from userp2130.oracle.com ([156.151.31.86]:35994 "EHLO userp2130.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725770AbeLDN3v (ORCPT ); Tue, 4 Dec 2018 08:29:51 -0500 Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.22/8.16.0.22) with SMTP id wB4DONs2107950; Tue, 4 Dec 2018 13:29:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : references : mime-version : content-type : in-reply-to; s=corp-2018-07-02; bh=IPu+wwHJvl3k3X5rKszooL4xtCWBdfNWweEjy8FgbxA=; b=Ivhm9rrKdd6btRfHjhXgUQcf5SBrMv+MVnkWlMXSYYEe4rEXmESvM4r6WwxPbvssQP0c Vl/3rX9QScaHHL8qj2VqBcBw7sq3S9cqnZdiZfc82vXCbs1RQ8wHZhdTrpMKbbdKzQ55 6U+itThXqlDdOgraWoS6AnSi9g5YqLu1yxFdroWLhHVJTRkS9x518x7FrlxrNf4S/NlD UVLZsqD/itbg0yOznZsLuY2TlVMfrOgKHNwMHk02nU4wob8EFdl7yH2C7u9Jmo1rQ939 /uKV1SoYpz/TZkhqWBHazctBU+sT+cO0eB6+49KLoARKcNMW68YWXXs1s/GziTZ9yvWf eA== Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by userp2130.oracle.com with ESMTP id 2p3hqtvd2y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 04 Dec 2018 13:29:34 +0000 Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by aserv0022.oracle.com (8.14.4/8.14.4) with ESMTP id wB4DTRu8030418 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 4 Dec 2018 13:29:28 GMT Received: from abhmp0007.oracle.com (abhmp0007.oracle.com [141.146.116.13]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id wB4DTQZx032696; Tue, 4 Dec 2018 13:29:26 GMT Received: from unbuntlaptop (/197.157.0.25) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 04 Dec 2018 05:29:25 -0800 Date: Tue, 4 Dec 2018 16:29:13 +0300 From: Dan Carpenter To: Minas Harutyunyan Cc: Marek Szyprowski , Maynard CABIENTE , "linux-kernel@vger.kernel.org" , "linux-usb@vger.kernel.org" , Greg Kroah-Hartman , Felipe Balbi , Geert Uytterhoeven , Bartlomiej Zolnierkiewicz Subject: Re: [PATCH] usb: dwc2: Revert "usb: dwc2: Disable all EP's on disconnect" Message-ID: <20181204132913.GH3073@unbuntlaptop> References: <20181121154504.13052-1-m.szyprowski@samsung.com> <410670D7E743164D87FA6160E7907A56013A7AA1EE@am04wembxa.internal.synopsys.com> <20181123144307.GC2970@unbuntlaptop> <410670D7E743164D87FA6160E7907A56013A7B19C2@am04wembxa.internal.synopsys.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <410670D7E743164D87FA6160E7907A56013A7B19C2@am04wembxa.internal.synopsys.com> User-Agent: Mutt/1.9.4 (2018-02-28) X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=9096 signatures=668686 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=2 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1812040115 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Dec 04, 2018 at 12:34:08PM +0000, Minas Harutyunyan wrote: > @@ -3185,12 +3183,13 @@ void dwc2_hsotg_disconnect(struct dwc2_hsotg *hsotg) > hsotg->connected = 0; > hsotg->test_mode = 0; > > - /* all endpoints should be shutdown */ > for (ep = 0; ep < hsotg->num_of_eps; ep++) { > if (hsotg->eps_in[ep]) > - dwc2_hsotg_ep_disable(&hsotg->eps_in[ep]->ep); > + kill_all_requests(hsotg, hsotg->eps_in[ep], > + -ESHUTDOWN); > if (hsotg->eps_out[ep]) > - dwc2_hsotg_ep_disable(&hsotg->eps_out[ep]->ep); > + kill_all_requests(hsotg, hsotg->eps_out[ep], > + -ESHUTDOWN); Should this part be in a separate patch? I'm not trying to be rhetorical at all. I literally don't know the code very well. Hopefully the full commit message will explain it. > } > > call_gadget(hsotg, disconnect); > @@ -3234,6 +3233,8 @@ static void dwc2_hsotg_irq_fifoempty(struct > dwc2_hsotg *hsotg, bool periodic) > GINTSTS_PTXFEMP | \ > GINTSTS_RXFLVL) > > +static int dwc2_hsotg_ep_disable(struct usb_ep *ep); > + > /** > * dwc2_hsotg_core_init - issue softreset to the core > * @hsotg: The device state > @@ -3258,12 +3259,14 @@ void dwc2_hsotg_core_init_disconnected(struct > dwc2_hsotg *hsotg, > return; > } else { > /* all endpoints should be shutdown */ > + spin_unlock(&hsotg->lock); > for (ep = 1; ep < hsotg->num_of_eps; ep++) { > if (hsotg->eps_in[ep]) > > dwc2_hsotg_ep_disable(&hsotg->eps_in[ep]->ep); > if (hsotg->eps_out[ep]) > > dwc2_hsotg_ep_disable(&hsotg->eps_out[ep]->ep); > } > + spin_lock(&hsotg->lock); > } > > /* The idea here is that this is the only caller which is holding the lock and we drop it here and take it again inside dwc2_hsotg_ep_disable(). I don't know the code very well and can't totally swear that this doesn't introduce a small race condition... Another option would be to introduce a new function which takes the lock and change all the other callers instead. To me that would be easier to review... See below for how it might look: regards, dan carpenter diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c index 94f3ba995580..b17a5dbefd5f 100644 --- a/drivers/usb/dwc2/gadget.c +++ b/drivers/usb/dwc2/gadget.c @@ -3166,6 +3166,7 @@ static void kill_all_requests(struct dwc2_hsotg *hsotg, } static int dwc2_hsotg_ep_disable(struct usb_ep *ep); +static int dwc2_hsotg_ep_disable_lock(struct usb_ep *ep); /** * dwc2_hsotg_disconnect - disconnect service @@ -3188,9 +3189,9 @@ void dwc2_hsotg_disconnect(struct dwc2_hsotg *hsotg) /* all endpoints should be shutdown */ for (ep = 0; ep < hsotg->num_of_eps; ep++) { if (hsotg->eps_in[ep]) - dwc2_hsotg_ep_disable(&hsotg->eps_in[ep]->ep); + dwc2_hsotg_ep_disable_lock(&hsotg->eps_in[ep]->ep); if (hsotg->eps_out[ep]) - dwc2_hsotg_ep_disable(&hsotg->eps_out[ep]->ep); + dwc2_hsotg_ep_disable_lock(&hsotg->eps_out[ep]->ep); } call_gadget(hsotg, disconnect); @@ -4069,10 +4070,8 @@ static int dwc2_hsotg_ep_disable(struct usb_ep *ep) struct dwc2_hsotg *hsotg = hs_ep->parent; int dir_in = hs_ep->dir_in; int index = hs_ep->index; - unsigned long flags; u32 epctrl_reg; u32 ctrl; - int locked; dev_dbg(hsotg->dev, "%s(ep %p)\n", __func__, ep); @@ -4088,10 +4087,6 @@ static int dwc2_hsotg_ep_disable(struct usb_ep *ep) epctrl_reg = dir_in ? DIEPCTL(index) : DOEPCTL(index); - locked = spin_is_locked(&hsotg->lock); - if (!locked) - spin_lock_irqsave(&hsotg->lock, flags); - ctrl = dwc2_readl(hsotg, epctrl_reg); if (ctrl & DXEPCTL_EPENA) @@ -4114,12 +4109,23 @@ static int dwc2_hsotg_ep_disable(struct usb_ep *ep) hs_ep->fifo_index = 0; hs_ep->fifo_size = 0; - if (!locked) - spin_unlock_irqrestore(&hsotg->lock, flags); - return 0; } +static int dwc2_hsotg_ep_disable_lock(struct usb_ep *ep) +{ + struct dwc2_hsotg_ep *hs_ep = our_ep(ep); + struct dwc2_hsotg *hsotg = hs_ep->parent; + unsigned long flags; + int ret; + + spin_lock_irqsave(&hsotg->lock, flags); + ret = dwc2_hsotg_ep_disable(ep); + spin_unlock_irqrestore(&hsotg->lock, flags); + + return ret; +} + /** * on_list - check request is on the given endpoint * @ep: The endpoint to check. @@ -4267,7 +4273,7 @@ static int dwc2_hsotg_ep_sethalt_lock(struct usb_ep *ep, int value) static const struct usb_ep_ops dwc2_hsotg_ep_ops = { .enable = dwc2_hsotg_ep_enable, - .disable = dwc2_hsotg_ep_disable, + .disable = dwc2_hsotg_ep_disable_lock, .alloc_request = dwc2_hsotg_ep_alloc_request, .free_request = dwc2_hsotg_ep_free_request, .queue = dwc2_hsotg_ep_queue_lock, @@ -4407,9 +4413,9 @@ static int dwc2_hsotg_udc_stop(struct usb_gadget *gadget) /* all endpoints should be shutdown */ for (ep = 1; ep < hsotg->num_of_eps; ep++) { if (hsotg->eps_in[ep]) - dwc2_hsotg_ep_disable(&hsotg->eps_in[ep]->ep); + dwc2_hsotg_ep_disable_lock(&hsotg->eps_in[ep]->ep); if (hsotg->eps_out[ep]) - dwc2_hsotg_ep_disable(&hsotg->eps_out[ep]->ep); + dwc2_hsotg_ep_disable_lock(&hsotg->eps_out[ep]->ep); } spin_lock_irqsave(&hsotg->lock, flags); @@ -4857,9 +4863,9 @@ int dwc2_hsotg_suspend(struct dwc2_hsotg *hsotg) for (ep = 0; ep < hsotg->num_of_eps; ep++) { if (hsotg->eps_in[ep]) - dwc2_hsotg_ep_disable(&hsotg->eps_in[ep]->ep); + dwc2_hsotg_ep_disable_lock(&hsotg->eps_in[ep]->ep); if (hsotg->eps_out[ep]) - dwc2_hsotg_ep_disable(&hsotg->eps_out[ep]->ep); + dwc2_hsotg_ep_disable_lock(&hsotg->eps_out[ep]->ep); } }