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: Mass Storage Gadget Device Falls from SuperSpeed to High Speed From: Rob Weber Message-Id: <20190410014844.GA19912@coops> Date: Tue, 9 Apr 2019 18:48:44 -0700 To: Felipe Balbi Cc: linux-usb@vger.kernel.org, mathias.nyman@intel.com List-ID: SGkgRmVsaXBlLAoKT24gVGh1LCBBcHIgMDQsIDIwMTkgYXQgMTI6NDM6MDFQTSArMDMwMCwgRmVs aXBlIEJhbGJpIHdyb3RlOgo+ID4gV2UndmUgaWRlbnRpZmllZCBhIGNvdXBsZSBvZiBhdXhpbGlh cnkgaXNzdWVzIHRoYXQgc2VlbSB0byBiZSB1bnJlbGF0ZWQsCj4gPiBidXQgd2UgYXJlIHRyeWlu ZyB0byBnYXRoZXIgbW9yZSBkYXRhIHRvIGJlIHN1cmUuIE9uZSBpc3N1ZSB3ZSBhcmUKPiA+IGV4 cGVyaWVuY2luZyBpcyBwYXJ0aWN1bGFybHkgY2xlYXI6IFdlIHNlZW0gdG8gaGF2ZSBhIHJhY2Ug Y29uZGl0aW9uCj4gPiBiZXR3ZWVuIHRoZSBzd2l0Y2hpbmcgb2YgY2hhbm5lbHMgb24gdGhlIFNT IG11eCBvbiBvdXIgcGxhdGZvcm0gYW5kIHRoZQo+ID4gZW51bWVyYXRpb24gb2Ygb3VyIGRldmlj ZS4gV2UgYmVsaWV2ZSBvdXIgZGV2aWNlIGdldHMgZW51bWVyYXRlZCBpbiBoaWdoCj4gPiBzcGVl ZCBiZWZvcmUgd2Ugc3dpdGNoIHRoZSBjaGFubmVsIG9mIHRoZSBTUyBtdXguIFRoaXMgY2FuIGJl IGNsZWFybHkKPiA+IG9ic2VydmVkIHdoaWxlIHdhdGNoaW5nIHRoZSBsb2dzIG9mIHRoZSBNQ1Ug b24gb3VyIHBsYXRmb3JtIHdoaWxlCj4gPiBzaW11bHRhbmVvdXNseSB3YXRjaGluZyBkbWVzZy4g QmVsb3cgaXMgYW4gZXhhbXBsZSBvZiB0aGlzIHRlc3Qgc2V0dXAuCj4gPiBQbGVhc2Ugbm90ZSB0 aGUgTUNVIGxvZ3MgYmVnaW4gd2l0aCBbZ2VuZXJhbF1bREJHXToKPiA+Cj4gPiByb290QGduYXJi b3gtMjp+IyBlY2hvIGRldmljZSA+IC9zeXMvY2xhc3MvdXNiX3JvbGUvaW50ZWxfeGhjaV91c2Jf c3ctcm9sZS1zd2l0Y2gvcm9sZQo+ID4gcm9vdEBnbmFyYm94LTI6fiMgLi9iaW4vdXNiLXRyYWNl IDEKPiA+IGVjaG8gMSA+IC90L2V2ZW50cy9kd2MzL2VuYWJsZQo+ID4gZWNobyAxID4gL3QvZXZl bnRzL3hoY2ktaGNkL2VuYWJsZQo+ID4gZWNobyAxID4gL3QvZXZlbnRzL2dhZGdldC9lbmFibGUK PiA+IHJvb3RAZ25hcmJveC0yOn4jIG1vZHByb2JlIGdfbWFzc19zdG9yYWdlIGZpbGU9L2Rldi9u dm1lMG4xcDcgaVNlcmlhbE51bWJlcj05MDQwNQo+ID4gcm9vdEBnbmFyYm94LTI6fiMgc3R0eSAt RiAvZGV2L3R0eVMyIDExNTIwMCBjczggY3N0b3BiIC1wYXJlbmIgLWljcm5sCj4gPiByb290QGdu YXJib3gtMjp+IyBjYXQgL2Rldi90dHlTMiAmCj4gPiBbMV0gMTczMwo+ID4gcm9vdEBnbmFyYm94 LTI6fiMgZG1lc2cgLXcKPiA+Cj4gPiBPa2F5LCBzZXR1cCBjb21wbGV0ZSwgYWFhbmQgd2UncmUg cm9sbGluZy4uLgo+ID4KPiA+IFtnZW5lcmFsXSBbREJHXSBoYW5kbGVfaW50cjogKG90ZykgZXZl bnQ6IFJwIENoYW5nZSBEZXRlY3RlZCgpCj4gPiBbZ2VuZXJhbF0gW0RCR10gYXBwbHlfcGRvOiBz ZXR0aW5nIGxpbWl0IGJhc2VkIG9uIFJwIHZhbCAwCj4gPiBbZ2VuZXJhbF0gW0RCR10gc2V0X2N1 cnJlbnRfbGltaXQ6IElJTl9IT1NUOiAxMDAgMHgwMTAwCj4gPiBbZ2VuZXJhbF0gW0RCR10gc2V0 X2N1cnJlbnRfbGltaXQ6IHN1Y2Nlc3MgKHRyaWVkIDEgdGltZXMpCj4gPiBbZ2VuZXJhbF0gW0RC R10gaGFuZGxlX2ludHI6IChvdGcpIGV2ZW50OiBUeXBlLUMgUG9ydCBDb25uZWN0IERldGVjdGVk KCkKPiA+IFtnZW5lcmFsXSBbREJHXSB1c2JfbXV4X3NlbDogKG90ZykgcG9sYXJpdHk6IDIKPiA+ Cj4gPiBIZXJlJ3Mgd2hlcmUgdGhlIFBEIGNvbnRyb2xsZXIgZGV0ZWN0cyB0aGUgY29ubmVjdGlv bi4gTm90ZSB0aGUgcG9sYXJpdHkKPiA+IG9mIHRoZSBjYWJsZSB0aGF0IHdlIGRldGVjdC4KPiA+ Cj4gPiBbZ2VuZXJhbF0gW0RCR10gaGFuZGxlX2ludHI6IChvdGcpIE5vdGhpbmcgdG8gZG8uCj4g PiBbZ2VuZXJhbF0gW0RCR10gaGFuZGxlX2ludHI6IChvdGcpIGV2ZW50OiBIYXJkIFJlc2V0IFNl bnQgdG8gUG9ydCBQYXJ0bmVyCj4gPiBbICAxNzkuOTA1ODM1XSBnX21hc3Nfc3RvcmFnZSBnYWRn ZXQ6IHN1cGVyLXNwZWVkIGNvbmZpZyAjMTogTGludXggRmlsZS1CYWNrZWQgU3RvcmFnZQo+ID4K PiA+IHNob3J0bHkgYWZ0ZXIsIHRoZSBkZXZpY2UgaXMgZW51bWVyYXRlZCBhbmQgdGhlIGxpbmsg c3BlZWQgaXMgc2V0IHRvIDVHYnBzCj4gPgo+ID4gW2dlbmVyYWxdIFtEQkddIGhhbmRsZV9pbnRy OiAob3RnKSBldmVudDogSGFyZCBSZXNldCBTZW50IHRvIFBvcnQgUGFydG5lcgo+ID4gW2dlbmVy YWxdIFtEQkddIGhhbmRsZV9pbnRyOiAob3RnKSBldmVudDogSGFyZCBSZXNldCBTZW50IHRvIFBv cnQgUGFydG5lcgo+ID4gW2dlbmVyYWxdIFtEQkddIGhhbmRsZV9pbnRyOiAob3RnKSBldmVudDog U291cmNlIERpc2FibGVkIFN0YXRlIEVudGVyZWQKPiA+IFtnZW5lcmFsXSBbREJHXSBlbmFibGVf Y2hhcmdpbmc6IGluY29ycmVjdCBjdXJyZW50IGxpbWl0KDMzMDApLCBzZXR0aW5nKDEwMCkKPiA+ IFtnZW5lcmFsXSBbREJHXSBzZXRfY3VycmVudF9saW1pdDogSUlOX0hPU1Q6IDEwMCAweDAxMDAK PiA+IFtnZW5lcmFsXSBbREJHXSBzZXRfY3VycmVudF9saW1pdDogc3VjY2VzcyAodHJpZWQgMSB0 aW1lcykKPiA+IC4uLgo+ID4gLi4uCj4gPiBbZ2VuZXJhbF0gW0RCR10gaGFuZGxlX2ludHI6IChv dGcpIGV2ZW50OiBUeXBlLUMgUG9ydCBEaXNjb25uZWN0IERldGVjdGVkKCkKPiA+IFtnZW5lcmFs XSBbREJHXSBhcHBseV9wZG86IHNldHRpbmcgbGltaXQgYmFzZWQgb24gUnAgdmFsIDAKPiA+IFtn ZW5lcmFsXSBbREJHXSBzZXRfY3VycmVudF9saW1pdDogSUlOX0hPU1Q6IDEwMCAweDAxMDAKPiA+ IFtnZW5lcmFsXSBbREJHXSBzZXRfY3VycmVudF9saW1pdDogc3VjY2VzcyAodHJpZWQgMSB0aW1l cykKPiA+IFtnZW5lcmFsXSBbREJHXSBkaXNhYmxlX2NoYXJnaW5nOgo+ID4KPiA+IEhlcmUgd2Ug ZGlzY29ubmVjdCB0aGUgY2FibGUgZnJvbSBvdXIgZGV2aWNlLgo+ID4KPiA+IFsgIDIyNi43NTk4 NDNdIGdfbWFzc19zdG9yYWdlIGdhZGdldDogaGlnaC1zcGVlZCBjb25maWcgIzE6IExpbnV4IEZp bGUtQmFja2VkIFN0b3JhZ2UKPiA+IFtnZW5lcmFsXSBbREJHXSBoYW5kbGVfaW50cjogKG90Zykg ZXZlbnQ6IFR5cGUtQyBQb3J0IENvbm5lY3QgRGV0ZWN0ZWQoKQo+ID4gW2dlbmVyYWxdIFtEQkdd IHVzYl9tdXhfc2VsOiAob3RnKSBwb2xhcml0eTogMAo+ID4KPiA+IEhlcmUgd2UgcmVjb25uZWN0 ZWQgb3VyIGRldmljZSB0byB0aGUgaG9zdCBidXQgd2l0aCB0aGUgY2FibGUgaW4gYQo+ID4gZGlm ZmVyZW50IHBvbGFyaXR5IHRoYW4gYmVmb3JlLiBUaGlzIG1lYW5zIHRoZSBTUyBtdXggaXMgbm90 IHByb3Blcmx5Cj4gPiBjb25maWd1cmVkIGZvciB0aGUgY3VycmVudCBjYWJsZSBvcmllbnRhdGlv biBhbmQgbXVzdCBiZSBzd2l0Y2hlZC4gQWxzbwo+ID4gbm90ZSBoZXJlIHRoYXQgbGludXggc2Vl bXMgdG8gcmVwb3J0IHRoZSBlbnVtZXJhdGlvbiBpbiBoaWdoIHNwZWVkCj4gPiBiZWZvcmUgb3Vy IE1DVSBoYWQgYSBjaGFuY2UgdG8gcmVhY3QgdG8gdGhlIG5ldyBjb25uZWN0aW9uLgo+ID4KPiA+ IFtnZW5lcmFsXSBbREJHXSBoYW5kbGVfaW50cjogKG90ZykgZXZlbnQ6IEhhcmQgUmVzZXQgU2Vu dCB0byBQb3J0IFBhcnRuZXIKPiA+IFtnZW5lcmFsXSBbREJHXSBoYW5kbGVfaW50cjogKG90Zykg ZXZlbnQ6IEhhcmQgUmVzZXQgU2VudCB0byBQb3J0IFBhcnRuZXIKPiA+IFtnZW5lcmFsXSBbREJH XSBoYW5kbGVfaW50cjogKG90ZykgZXZlbnQ6IEhhcmQgUmVzZXQgU2VudCB0byBQb3J0IFBhcnRu ZXIKPiA+IFtnZW5lcmFsXSBbREJHXSBoYW5kbGVfaW50cjogKG90ZykgZXZlbnQ6IFNvdXJjZSBE aXNhYmxlZCBTdGF0ZSBFbnRlcmVkCj4gPiBbZ2VuZXJhbF0gW0RCR10gZW5hYmxlX2NoYXJnaW5n OiBpbmNvcnJlY3QgY3VycmVudCBsaW1pdCgzMzAwKSwgc2V0dGluZygxMDApCj4gPiBbZ2VuZXJh bF0gW0RCR10gc2V0X2N1cnJlbnRfbGltaXQ6IElJTl9IT1NUOiAxMDAgMHgwMTAwCj4gPiBbZ2Vu ZXJhbF0gW0RCR10gc2V0X2N1cnJlbnRfbGltaXQ6IHN1Y2Nlc3MgKHRyaWVkIDEgdGltZXMpCj4g PiAuLi4KPiA+IC4uLgo+ID4gW2dlbmVyYWxdIFtEQkddIGhhbmRsZV9pbnRyOiAob3RnKSBldmVu dDogVHlwZS1DIFBvcnQgRGlzY29ubmVjdCBEZXRlY3RlZCgpCj4gPiBbZ2VuZXJhbF0gW0RCR10g YXBwbHlfcGRvOiBzZXR0aW5nIGxpbWl0IGJhc2VkIG9uIFJwIHZhbCAwCj4gPiBbZ2VuZXJhbF0g W0RCR10gc2V0X2N1cnJlbnRfbGltaXQ6IElJTl9IT1NUOiAxMDAgMHgwMTAwCj4gPiBbZ2VuZXJh bF0gW0RCR10gc2V0X2N1cnJlbnRfbGltaXQ6IHN1Y2Nlc3MgKHRyaWVkIDEgdGltZXMpCj4gPiBb Z2VuZXJhbF0gW0RCR10gZGlzYWJsZV9jaGFyZ2luZzoKPiA+Cj4gPiBIZXJlIHdlIGRpc2Nvbm5l Y3Qgb3VyIGRldmljZSBmcm9tIHRoZSBob3N0IGJ5IHJlbW92aW5nIHRoZSBjYWJsZSBmcm9tCj4g PiBvdXIgZGV2aWNlJ3MgdHlwZS1jIGNvbm5lY3Rvci4KPiA+Cj4gPiBbICAyNjIuNzgzMzE4XSBk d2MzIGR3YzMuMS5hdXRvOiByZXF1ZXN0IGZmZmY4ODAxNjhhZTMyNDAgd2FzIG5vdCBxdWV1ZWQg dG8gZXAxb3V0Cj4gPiBbICAyNjIuOTIwNDYxXSBnX21hc3Nfc3RvcmFnZSBnYWRnZXQ6IHN1cGVy LXNwZWVkIGNvbmZpZyAjMTogTGludXggRmlsZS1CYWNrZWQgU3RvcmFnZQo+ID4gW2dlbmVyYWxd IFtEQkddIGhhbmRsZV9pbnRyOiAob3RnKSBldmVudDogVHlwZS1DIFBvcnQgQ29ubmVjdCBEZXRl Y3RlZCgpCj4gPiBbZ2VuZXJhbF0gW0RCR10gdXNiX211eF9zZWw6IChvdGcpIHBvbGFyaXR5OiAw Cj4gPgo+ID4gSGVyZSB3ZSByZS1jb25uZWN0IG91ciBkZXZpY2UgdG8gdGhlIGhvc3QsIGJ1dCB3 ZSBtYWRlIHN1cmUgdG8gbGVhdmUgdGhlCj4gPiBjYWJsZSBpbiB0aGUgc2FtZSBvcmllbnRhdGlv biBhcyBiZWZvcmUuIFRoYXQgd2F5IHRoZSBTUyBtdXggaXMgYWxyZWFkeQo+ID4gY29uZmlndXJl ZCBmb3IgdGhlIGN1cnJlbnQgY2FibGUgb3JpZW50YXRpb24uIFdlIHN0aWxsIHNlZSB0aGUgVVNC Cj4gPiBkZXZpY2UgZW51bWVyYXRpb24gb2NjdXIgYmVmb3JlIHRoZSBNQ1UgaGFzIGEgY2hhbmNl IHRvIHJlc3BvbmQsIGJ1dCBpdAo+ID4gZ2V0cyBlbnVtZXJhdGVkIGluIFN1cGVyU3BlZWQgYmVj YXVzZSB0aGUgU1MgbXV4IHdhcyBhbHJlYWR5IGNvbmZpZ3VyZWQKPiA+IGZvciB0aGlzIGNhYmxl IG9yaWVudGF0aW9uLgo+IAo+IFRoaXMgbG9va3MgbGlrZSBhbiBvbGQgYnVnIG9uIHhoY2kgd2hp Y2ggd2FzIGZpeGVkIGxvbmcgYWdvLiBNYXRoaWFzLCBkbwo+IHlvdSByZW1lbWJlciB0aGF0IGJ1 Zz8gV2hpY2gga2VybmVsIGZpeGVkIHRoYXQgaXNzdWU/Cj4gCj4gPiBXZSd2ZSBjb21lIHVwIHdp dGggYSBmZXcgc29sdXRpb25zIHRoYXQgYXJlIHNwZWNpZmljIHRvIG91ciBwbGF0Zm9ybQo+ID4g aW4gb3JkZXIgdG8gcmVkdWNlIHRoZSBjaGFuY2VzIG9mIHRoaXMgcmFjZSBjb25kaXRpb24gb2Nj dXJpbmcsIGJ1dCBJCj4gPiB3YW50ZWQgdG8gYXNrIHlvdSBmb3IgeW91ciB0aG91Z2h0cyBhYm91 dCBob3cgd2UgbWlnaHQgYmUgYWJsZSB0byB3b3JrCj4gPiBhcm91bmQgdGhpcyBmcm9tIExpbnV4 LiBJbiB0aGUgZXZlbnQgdGhhdCB3ZSBjYW5ub3QgY29tcGxldGVseSBlbGltaW5hdGUKPiA+IHRo aXMgcmFjZSBjb25kaXRpb24sIHdlIHdvdWxkIGxpa2UgdG8gZmluZCBzb21lIHdheSB0byAidXBn cmFkZSIgdGhlCj4gPiBjb25uZWN0aW9uIGZyb20gaGlnaCBzcGVlZCB0byBTdXBlclNwZWVkLiBJ cyBzb21ldGhpbmcgbGlrZSB0aGlzCj4gPiBwb3NzaWJsZT8KPiAKPiBVbmZvcnR1bmF0ZWx5IG5v dC4gRG9lcyB0aGlzIGNvbnRpbnVlIHRvIGhhcHBlbiBpZiB5b3UgY2hhbmdlIHRoZSBob3N0Cj4g bWFjaGluZSB0byBlLmcuIFdpbmRvd3Mgb3IgYSBtb3JlIHJlY2VudCBsaW51eCBrZXJuZWw/CgpZ ZXMsIHRoaXMgaGFwcGVucyBvbiBhbGwgaG9zdHMgKFdpbmRvd3MsIE9TWCwgTGludXggb24gYSBy YW5nZSBvZgprZXJuZWxzKSwgd2hpY2ggbGVhZHMgbWUgdG8gYmVsaWV2ZSBpdCBtaWdodCBiZSB1 bnJlbGF0ZWQgdG8gdGhlIHhoY2kKYnVnIHlvdSByZWNhbGxlZCBlYXJsaWVyLgoKPiA+IE15IG5h aWl2ZSB1bmRlcnN0YW5kaW5nIHdzYXMgdGhhdCB0aGUgaG9zdCB3b3VsZCBjb250aW51b3VzbHkK PiA+IHBvbGwgdGhlIFNTIGxpbmVzIGZvciBhIHZhbGlkIGNvbm5lY3Rpb24sIGJ1dCBJIGJlbGll dmUgSSBhbSBtaXN0YWtlbgo+ID4gaGVyZS4gSSBub3RpY2VkIGluIHRoZSBVU0IgcHJvdG9jb2wg dHJhY2VzIHRoYXQgdGhlcmUgYXJlIGEgY291cGxlIG9mCj4gPiBMaW5rIE1hbmFnZW1lbnQgUGFj a2V0cyAoTFBNcykgdGhhdCB0aGUgaG9zdCBzZW5kcy4gT25lIG9mIHRoZW0gc2VlbXMgdG8KPiA+ IHJlcXVlc3QgdGhlIGNvbmZpZ3VyYXRpb24gZGVzY3JpcHRvciwgYW5kIGFub3RoZXIgc2VlbXMg dG8gcmVxdWVzdCB0aGUKPiA+IGxpbmsgc3BlZWQgYmUgc2V0IHRvIDUgR2JwcywgdG8gd2hpY2gg dGhlIGRldmljZSBhY2tub3dsZWRnZXMgYW5kCj4gPiBjb21wbGllcy4gSXMgaXQgcG9zc2libGUg dG8gZm9yY2UgdGhpcyBzb3J0IG9mIGV4Y2hhbmdlIHRvIGhhcHBlbiBhZ2Fpbj8gCj4gCj4gQUZB SUNULCB0aGF0J3MgaGFuZGxlZCBlbnRpcmVseSBhdCB0aGUgSFcgbGV2ZWwgd2l0aG91dCBTVyBp bnRlcnZlbnRpb24uCgpIbW0sIG9rYXkuIE1pZ2h0IGl0IGJlIHBvc3NpYmxlIHRvIHBlcmZvcm0g c29tZSBzb3J0IG9mIHNvZnQgcmVzZXQgb2YKdGhlIGR3YzMsIG9yIHBvc3NpYmx5IGFzayB0aGUg aG9zdCB0byByZXNldCB0aGUgZGV2aWNlPwoKV2UncmUgbG9va2luZyBmb3IgYW55IHdheSB0byBw b3NzaWJseSByZXNldCB0aGUgY29ubmVjdGlvbiBmcm9tIEhTIHRvIFNTCndoZW4gd2UgaGl0IHRo aXMgcmFjZSBjb25kaXRpb24uIFdlIGFyZSBhbHNvIGN1cnJlbnRseSBleHBsb3Jpbmcgd2F5cyBv Zgpzd2l0Y2hpbmcgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSBTUyBtdXggbW9yZSBlZmZpY2llbnRs eS4KCj4gPiBJJ3ZlIGF0dGFjaGVkIHlldCBhbm90aGVyIHRhcmJhbGwgY29udGFpbmluZyB0aGUg ZHdjMyB0cmFjZXMsIFVTQgo+ID4gcHJvdG9jb2wgZGF0YSAoZnJvbSBhIFRlbGVkeW5lIExlQ3Jv eSBhbmFseXplciwgY29tcGF0aWJsZSB3aXRoIHRoZSAiVVNCCj4gPiBQcm90b2NvbCBTdWl0ZSIg YXBwbGljYXRpb24pLCBhbmQgYSByYXcgY29weSBvZiB0aGUgbG9ncyBJIGFubm90YXRlZAo+ID4g YWJvdmUuIFRoZSB0aW1lc3RhbXBzIGluIHRoZSBkd2MzIHRyYWNlcyBzaG91bGQgbGluZSB1cCB3 aXRoIHRoZQo+ID4gdGltZXN0YW1wcyBvZiB0aGUgZG1lc2cgb3V0cHV0IGluIHRoZSBhbm5vdGF0 ZWQgbG9ncy4gVGhlIFVTQiBwcm90b2NvbAo+ID4gZGF0YSBpcyBmcm9tIGEgZGlmZmVyZW50IHNl c3Npb24sIGJ1dCBzdGlsbCBjb250YWlucyBhbiBleGFtcGxlIG9mIHRoZQo+ID4gZmlyc3QgZW51 bWVyYXRpb24gaW4gaGlnaCBzcGVlZCwgYW5kIHRoZSBzZWNvbmQgaW4gU1MsIGFsbCBpbiBvbmUK PiA+IHNhbXBsZS4gVGhlIFNTIGVudW1lcmF0aW9uIGhhcHBlbnMgYXQgYXJvdW5kIDggc2Vjb25k cyBpbnRvIHRoZQo+ID4gMTItc2Vjb25kIGNhcHR1cmUuCj4gPgo+ID4gVGhhbmtzIGluIGFkdmFu Y2UgZm9yIHlvdXIgaW5wdXQgaGVyZSEKPiAKPiBJJ2xsIGhhdmUgdG8gc3BlbmQgc29tZSBtb3Jl IHRpbWUgd2l0aCB0aGUgbG9ncywgYnV0IGF0IGxlYXN0IGZyb20KPiB0cmFjZXMsIEkgY291bGRu J3Qgc2VlIGFueXRoaW5nIHRoYXQgd291bGQgZ2l2ZSBhIGhpbnQuIEknbGwgdHJ5IGxvb2tpbmcK PiBhdCBDQVRDIHRyYWNlcyBsYXRlciB0b2RheSB0b21vcnJvdy4KPiAKPiA+PiA+IEkndmUgYXR0 YWNoZWQgYSB0YXJiYWxsIGNvbnRhaW5pbmcgdGhlIGRtZXNnIG91dHB1dCwgcmVnZHVtcCwgYW5k Cj4gPj4gPiB0cmFjZXBvaW50cyBvZiBhIHN1Y2Nlc2Z1bCBzZXNzaW9uIHdpdGggdGhlIHBhdGNo IGFwcGxpZWQuIEkndmUgaW5jbHVkZWQKPiA+PiA+IHRoZSBwYXRjaCBpbiB0aGUgdGFyYmFsbCBp ZiB5b3Ugd291bGQgbGlrZSB0byBzZWUgaG93IEkgcG9ydGVkIGl0Lgo+ID4+ID4gQ291bGQgeW91 IHBsZWFzZSBkb3VibGUtY2hlY2sgdGhlIHRyYWNlcyB0byBtYWtlIHN1cmUgdGhleSBtZWV0IHlv dXIKPiA+PiA+IGV4cGVjdGF0aW9ucyBmb3IgZGlzYWJsaW5nIHRoZSBVMS9VMl9FTkFCTEUgZmVh dHVyZXM/IEkgbG9va2VkIHRocm91Z2gKPiA+PiA+IHRoZSB0cmFjZXMgYW5kIGNvdWxkIG5vdCBm aW5kIGFueSBsaW5rIHN0YXRlIGNoYW5nZXMgdG8gVTEgb3IgVTIsIHNvIGl0Cj4gPj4gPiBzZWVt cyBsaWtlIGl0J3Mgd29ya2luZy4KPiA+PiAKPiA+PiBUaGUgaG9zdCwgZnJvbSB0aGF0IHJ1biwg ZGlkbid0IGVuYWJsZSBkZXZpY2UtaW5pdGlhdGVkIFUxL1UyIGVudHJ5LiBTbwo+ID4+IG9ubHkg aG9zdC1pbml0aWF0ZWQgZW50cnkgaXMgYXZhaWFibGUuIFNpbmNlIHdlIGhhdmUgcmVtb3ZlZAo+ ID4+IEFDQ0VQVFUxL0FDQ0VQVFUyIGJpdHMgZnJvbSBEQ1RMLCBkd2MzIGlzIGRlbnlpbmcgTEdP X1UxIGFuZCBMR09fVTIuIFlvdQo+ID4+IGNhbiBjb25maXJtIHRoYXQgb25seSB3aXRoIGEgc25p ZmZlci4KPiA+PiAKPiA+PiA+IEkgaGF2ZSBhIGNvdXBsZSBvZiBmb2xsb3ctdXAgcXVlc3Rpb25z IGFib3V0IHRoaXMgcGF0Y2g6Cj4gPj4gPgo+ID4+ID4gKiBJIGFkZGVkIHNvbWUgdHJhY2Vwb2lu dHMgaW4gdGhlIHBhdGNoIEknbSBhcHBseWluZyBidXQgdGhleSBkb24ndCBzZWVtCj4gPj4gPiAg IHRvIGJlIGluY2x1ZGVkIGluIHRoZSB0cmFjZSBvdXRwdXQuIFRoaXMgcGF0Y2ggYXBwbGllcyBj bGVhbmx5IGFuZCBJCj4gPj4gPiAgIGhhdmVuJ3Qgc2VlbiBhbnkgY29tcGlsZXIgd2FybmluZ3Mg YWJvdXQgaXQuIElzIHRoZQo+ID4+ID4gICBkd2MzX2VwMF9oYW5kbGVfZmVhdHVyZSBmdW5jdGlv biBub3QgY2FsbGVkIGR1cmluZwo+ID4+IAo+ID4+IGl0J3MgY2FsbGVkIGZyb20gU2V0RmVhdHVy ZSgpIGNvbW1hbmQuIElmIFNldEZlYXR1cmUoKSBpcyBub3Qgc2VudCBieQo+ID4+IHRoZSBob3N0 LCB0aGVuIHlvdSB3b24ndCBzZWUgeW91ciB0cmFjZXBvaW50cy4gRllJLCBTZXRGZWF0dXJlIHdv dWxkCj4gPj4gaGF2ZSBhIGJSZXF1ZXN0IG9mIDMuIEhlcmUgd2UgY2FuIGFsbCBjdHJsIHJlcXVl c3RzOgo+ID4+IAo+ID4+ICAxOTI6ICAgICBpcnEvMjMtZHdjMy0xNzY1ICBbMDAwXSBkLi4xICAg MjEzLjAwNzU5MTogZHdjM19jdHJsX3JlcTogYlJlcXVlc3RUeXBlIDAwIGJSZXF1ZXN0IDA1IHdW YWx1ZSAwMDA1IHdJbmRleCAwMDAwIHdMZW5ndGggMAo+ID4+ICAyMDg6ICAgICBpcnEvMjMtZHdj My0xNzY1ICBbMDAwXSBkLi4xICAgMjEzLjAxMDQ1NzogZHdjM19jdHJsX3JlcTogYlJlcXVlc3RU eXBlIDgwIGJSZXF1ZXN0IDA2IHdWYWx1ZSAwMTAwIHdJbmRleCAwMDAwIHdMZW5ndGggMTgKPiA+ PiAgMjM3OiAgICAgaXJxLzIzLWR3YzMtMTc2NSAgWzAwMF0gZC4uMSAgIDIxMy4wMTA4NzE6IGR3 YzNfY3RybF9yZXE6IGJSZXF1ZXN0VHlwZSA4MCBiUmVxdWVzdCAwNiB3VmFsdWUgMDMwNCB3SW5k ZXggMDQwOSB3TGVuZ3RoIDIKPiA+PiAgMjY2OiAgICAgaXJxLzIzLWR3YzMtMTc2NSAgWzAwMF0g ZC4uMSAgIDIxMy4wMTEzMzA6IGR3YzNfY3RybF9yZXE6IGJSZXF1ZXN0VHlwZSA4MCBiUmVxdWVz dCAwNiB3VmFsdWUgMDMwNCB3SW5kZXggMDQwOSB3TGVuZ3RoIDQwCj4gPj4gIDI5NTogICAgIGly cS8yMy1kd2MzLTE3NjUgIFswMDBdIGQuLjEgICAyMTMuMDExNzA3OiBkd2MzX2N0cmxfcmVxOiBi UmVxdWVzdFR5cGUgODAgYlJlcXVlc3QgMDYgd1ZhbHVlIDAzMDMgd0luZGV4IDA0MDkgd0xlbmd0 aCAyCj4gPj4gIDMyNDogICAgIGlycS8yMy1kd2MzLTE3NjUgIFswMDBdIGQuLjEgICAyMTMuMDEy MTM3OiBkd2MzX2N0cmxfcmVxOiBiUmVxdWVzdFR5cGUgODAgYlJlcXVlc3QgMDYgd1ZhbHVlIDAz MDMgd0luZGV4IDA0MDkgd0xlbmd0aCA5Mgo+ID4+ICAzNTM6ICAgICBpcnEvMjMtZHdjMy0xNzY1 ICBbMDAwXSBkLi4xICAgMjEzLjAxMjU0ODogZHdjM19jdHJsX3JlcTogYlJlcXVlc3RUeXBlIDgw IGJSZXF1ZXN0IDA2IHdWYWx1ZSAwMzA1IHdJbmRleCAwNDA5IHdMZW5ndGggMgo+ID4+ICAzODI6 ICAgICBpcnEvMjMtZHdjMy0xNzY1ICBbMDAwXSBkLi4xICAgMjEzLjAxMjkzNDogZHdjM19jdHJs X3JlcTogYlJlcXVlc3RUeXBlIDgwIGJSZXF1ZXN0IDA2IHdWYWx1ZSAwMzA1IHdJbmRleCAwNDA5 IHdMZW5ndGggMTIKPiA+PiAgNDExOiAgICAgaXJxLzIzLWR3YzMtMTc2NSAgWzAwMF0gZC4uMSAg IDIxMy4wMTMzMzE6IGR3YzNfY3RybF9yZXE6IGJSZXF1ZXN0VHlwZSA4MCBiUmVxdWVzdCAwNiB3 VmFsdWUgMGYwMCB3SW5kZXggMDAwMCB3TGVuZ3RoIDUKPiA+PiAgNDQwOiAgICAgaXJxLzIzLWR3 YzMtMTc2NSAgWzAwMF0gZC4uMSAgIDIxMy4wMTM3NDg6IGR3YzNfY3RybF9yZXE6IGJSZXF1ZXN0 VHlwZSA4MCBiUmVxdWVzdCAwNiB3VmFsdWUgMGYwMCB3SW5kZXggMDAwMCB3TGVuZ3RoIDIyCj4g Pj4gIDQ2OTogICAgIGlycS8yMy1kd2MzLTE3NjUgIFswMDBdIGQuLjEgICAyMTMuMDE2MDA2OiBk d2MzX2N0cmxfcmVxOiBiUmVxdWVzdFR5cGUgODAgYlJlcXVlc3QgMDYgd1ZhbHVlIDAyMDAgd0lu ZGV4IDAwMDAgd0xlbmd0aCA5Cj4gPj4gIDQ5ODogICAgIGlycS8yMy1kd2MzLTE3NjUgIFswMDBd IGQuLjEgICAyMTMuMDE2NTQzOiBkd2MzX2N0cmxfcmVxOiBiUmVxdWVzdFR5cGUgODAgYlJlcXVl c3QgMDYgd1ZhbHVlIDAyMDAgd0luZGV4IDAwMDAgd0xlbmd0aCA0NAo+ID4+ICA1Mjc6ICAgICBp cnEvMjMtZHdjMy0xNzY1ICBbMDAwXSBkLi4xICAgMjEzLjAxNjk1MTogZHdjM19jdHJsX3JlcTog YlJlcXVlc3RUeXBlIDAwIGJSZXF1ZXN0IDA5IHdWYWx1ZSAwMDAxIHdJbmRleCAwMDAwIHdMZW5n dGggMAo+ID4+ICA1Njg6ICAgICBpcnEvMjMtZHdjMy0xNzY1ICBbMDAwXSBkLi4xICAgMjEzLjAx NzU2OTogZHdjM19jdHJsX3JlcTogYlJlcXVlc3RUeXBlIDgwIGJSZXF1ZXN0IDA2IHdWYWx1ZSAw MzAxIHdJbmRleCAwNDA5IHdMZW5ndGggMgo+ID4+ICA1OTc6ICAgICBpcnEvMjMtZHdjMy0xNzY1 ICBbMDAwXSBkLi4xICAgMjEzLjAxNzkyNjogZHdjM19jdHJsX3JlcTogYlJlcXVlc3RUeXBlIDgw IGJSZXF1ZXN0IDA2IHdWYWx1ZSAwMzAxIHdJbmRleCAwNDA5IHdMZW5ndGggMjYKPiA+PiAgNjI2 OiAgICAgaXJxLzIzLWR3YzMtMTc2NSAgWzAwMF0gZC4uMSAgIDIxMy4wMTgzNjc6IGR3YzNfY3Ry bF9yZXE6IGJSZXF1ZXN0VHlwZSA4MSBiUmVxdWVzdCAwMCB3VmFsdWUgMDAwMCB3SW5kZXggMDAw MCB3TGVuZ3RoIDIKPiA+PiAgNjUzOiAgICAgaXJxLzIzLWR3YzMtMTc2NSAgWzAwMF0gZC4uMSAg IDIxMy4wMjY0MDQ6IGR3YzNfY3RybF9yZXE6IGJSZXF1ZXN0VHlwZSBhMSBiUmVxdWVzdCBmZSB3 VmFsdWUgMDAwMCB3SW5kZXggMDAwMCB3TGVuZ3RoIDEKPiA+PiAgOTI5OiAgICAgaXJxLzIzLWR3 YzMtMTc2NSAgWzAwMF0gZC4uMSAgIDIxNC4xMzgzODU6IGR3YzNfY3RybF9yZXE6IGJSZXF1ZXN0 VHlwZSA4MiBiUmVxdWVzdCAwMCB3VmFsdWUgMDAwMCB3SW5kZXggMDA4MSB3TGVuZ3RoIDIKPiA+ PiAgOTU2OiAgICAgaXJxLzIzLWR3YzMtMTc2NSAgWzAwMF0gZC4uMSAgIDIxNC4xMzg3OTE6IGR3 YzNfY3RybF9yZXE6IGJSZXF1ZXN0VHlwZSAwMiBiUmVxdWVzdCAwMSB3VmFsdWUgMDAwMCB3SW5k ZXggMDA4MSB3TGVuZ3RoIDAKPiA+PiAxMDMxOiAgICAgaXJxLzIzLWR3YzMtMTc2NSAgWzAwMF0g ZC4uMSAgIDIxNC4xNDAyMTQ6IGR3YzNfY3RybF9yZXE6IGJSZXF1ZXN0VHlwZSA4MiBiUmVxdWVz dCAwMCB3VmFsdWUgMDAwMCB3SW5kZXggMDA4MSB3TGVuZ3RoIDIKPiA+PiAxMDU4OiAgICAgaXJx LzIzLWR3YzMtMTc2NSAgWzAwMF0gZC4uMSAgIDIxNC4xNDA2MTg6IGR3YzNfY3RybF9yZXE6IGJS ZXF1ZXN0VHlwZSAwMiBiUmVxdWVzdCAwMSB3VmFsdWUgMDAwMCB3SW5kZXggMDA4MSB3TGVuZ3Ro IDAKPiA+PiAxMTMzOiAgICAgaXJxLzIzLWR3YzMtMTc2NSAgWzAwMF0gZC4uMSAgIDIxNC4xNDIy MDg6IGR3YzNfY3RybF9yZXE6IGJSZXF1ZXN0VHlwZSA4MiBiUmVxdWVzdCAwMCB3VmFsdWUgMDAw MCB3SW5kZXggMDA4MSB3TGVuZ3RoIDIKPiA+PiAxMTYwOiAgICAgaXJxLzIzLWR3YzMtMTc2NSAg WzAwMF0gZC4uMSAgIDIxNC4xNDI1ODc6IGR3YzNfY3RybF9yZXE6IGJSZXF1ZXN0VHlwZSAwMiBi UmVxdWVzdCAwMSB3VmFsdWUgMDAwMCB3SW5kZXggMDA4MSB3TGVuZ3RoIDAKPiA+PiAKPiA+PiBO b3RlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkgImJSZXF1ZXN0IDAzIiBzdWJzdHJpbmcuCj4gPgo+ ID4gSXMgaXQgbm9ybWFsIHRvIG5vdCBzZWUgYW55IFNldEZlYXR1cmUgY29tbWFuZHM/IEkgdGhp bmsgSSB3YXMgZXhwZWN0aW5nCj4gPiB0byBzZWUgdGhlbSBwcmV0dHkgZnJlcXVlbnRseS4KPiAK PiBUb3RhbGx5IG5vcm1hbCA6LSkgQSBob3N0IGlzIG5vdCByZXF1aXJlZCB0byBhbGxvdyBmb3Ig ZGV2aWNlLWluaXRpYXRlZAo+IFUxL1UyIGVudHJ5LiBOb3IgaXMgaXQgcmVxdWlyZWQgdG8gaGFs dCBhbmQgZW5kcG9pbnQsIGZvciBleGFtcGxlLgo+IAo+ID4+ID4+ID4gSSd2ZSBhdHRhY2hlZCB0 aGUgdHJhY2VzIGFuZCBkbWVzZyBvdXRwdXQgaW4gYW4gYXJjaGl2ZSB0aXRsZWQKPiA+PiA+PiA+ ICJnbmFyYm94LWVwMG91dC1mYWlsdXJlLnRhci54eiIuIFBsZWFzZSBsZXQgbWUga25vdyBpZiB5 b3UgbmVlZCBtb3JlCj4gPj4gPj4gPiBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIHBhcnRpY3VsYXIg aXNzdWUuCj4gPj4gPj4gCj4gPj4gPj4gSSdsbCBnbyBvdmVyIHRoZSB0cmFjZXMsIHRoaXMgY291 bGQgYmUgc29tZXRoaW5nIHRoYXQgaGFzIGJlZW4gZml4ZWQgaW4KPiA+PiA+PiB0aGUgcGFzdC4K PiA+PiA+Cj4gPj4gPiBEaWQgeW91IGdldCBhIGNoYW5jZSB0byB0YWtlIGEgbG9vayBhdCB0aGUg dHJhY2Vwb2ludHMgZm9yIHRoaXMgZXJyb3I/Cj4gPj4gPiBObyB3b3JyaWVzIGlmIHlvdSBoYXZl bid0IGdvdHRlbiBhIGNoYW5jZSB5ZXQuCj4gPj4gCj4gPj4gSSBkaWQsIG5vdGhpbmcgc2NyZWFt aW5nIHdyb25nIHdpdGggdGhlbS4gVGhhdCAiY2FuJ3QgZW5hYmxlIGVwMG91dCIKPiA+PiBzdGls bCBwdXp6bGVzIG1lIGEgYml0LiBXaGF0IHdlIHNlZSBvbiB0cmFjZXBvaW50cyBpcyBhIHRpbWUg b3V0Ogo+ID4+IAo+ID4+IAltb2Rwcm9iZS0xMjgxICBbMDAyXSBkLi4xICAgMjQ2LjUwNDA0Mzog ZHdjM19nYWRnZXRfZXBfY21kOiBlcDBvdXQ6IGNtZCAnU2V0IEVuZHBvaW50IFRyYW5zZmVyIFJl c291cmNlJyBbMl0gcGFyYW1zIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIC0tPiBzdGF0dXM6 IFRpbWVkIE91dAo+ID4+IAo+ID4+IEJ1dCBJIGhhdmUgbm8gaWRlYSB3aHkgdGhhdCBoYXBwZW5z LiBJdCBjb3VsZCBiZSB0aGF0IHRoaXMgd2FzIGZpeGVkCj4gPj4gbG9uZyBhZ28sIGJ1dCB3ZSB3 b24ndCBrbm93IHVubGVzcyB3ZSBydW4gYSByZWNlbnQga2VybmVsIG9uIHlvdXIKPiA+PiBzZXR1 cC4gSSwgY2VydGFpbmx5LCBoYXZlbid0IHNlZW4gdGhhdCA6LSkKPiA+Cj4gPiBPbmUgb2YgbXkg Y29sbGVhZ3VlcyBpcyBjdXJyZW50bHkgdGVzdGluZyBrZXJuZWwgNS4wLjUgd2l0aG91dCB0aGUg cGF0Y2gKPiA+IHlvdSBzdWdnZXN0ZWQgYW5kIGl0IGxvb2tzIHByZXR0eSBnb29kIHNvIGZhciEg V2UnbGwga2VlcCB5b3UgdXBkYXRlZCBpZgo+ID4gdGhpcyBjaGFuZ2VzLiBXaXRoIHRoaXMgaXNz dWUgaW4gcGFydGljdWxhciwgaXQgaXMgc3RpbGwgdW5jbGVhciBob3cgdG8KPiA+IGdldCBvdXIg ZGV2aWNlIGludG8gdGhpcyBzdGF0ZS4gV2UnbGwgZGVmaW5pdGVseSBrZWVwIGFuIGV5ZSBvdXQg Zm9yIGl0Cj4gPiBvbiA1LjAuNS4KPiAKPiBJZiA1LjAuNSBpcyB3b3JraW5nLCB0aGVuIHlvdSBj b3VsZCBydW4gYSBnaXQgYmlzZWN0IGFuZCBmaW5kIHRoZSBjb21taXQKPiB0aGF0IGZpeGVkIGl0 LiBJZiB3ZSBoYXZlIGEgZmFpbGluZyBjb21taXQgYW5kIGEgd29ya2luZyBjb21taXQsIGdpdAo+ IGJpc2VjdCB3aWxsIGhlbHAgZmluZGluZyB0aGUgZml4LCB0aGVuIHlvdSBjb3VsZCBzaW1wbHkg Y2hlcnJ5LXBpY2sgaXQuCgpJIHNwb2tlIHRvbyBzb29uLiA1LjAuNSAodW5wYXRjaGVkKSBzaG93 cyBzaWduaWZpY2FudCBpbXByb3ZlbWVudCB0aGFuIDQuOS4xMTUgYXMgaXQKdGFrZXMgYWJvdXQg MTUgbWludXRlcyBvZiBkYXRhIHRyYW5zZmVyIGJlZm9yZSB0aGUgbGluayBkcm9wcyBmcm9tIFNT IHRvCkhTLiBXZSB3aWxsIGJlIHN0aWNraW5nIHdpdGggdGhlIHBhdGNoIHRoYXQgeW91IHByb3Zp ZGVkIHVzIGVhcmxpZXIuCkl0J3MgYmVlbiB3b3JraW5nIHZlcnkgd2VsbCBmb3IgdXMgb24gNC45 LjExNS4gCgpDaGVlcnMsClJvYiBXZWJlcgo= 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=-2.4 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS,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 81D98C10F0E for ; Wed, 10 Apr 2019 01:48:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 43AAA2084F for ; Wed, 10 Apr 2019 01:48:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gnarbox-com.20150623.gappssmtp.com header.i=@gnarbox-com.20150623.gappssmtp.com header.b="NCHCQHbg" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726732AbfDJBst (ORCPT ); Tue, 9 Apr 2019 21:48:49 -0400 Received: from mail-pf1-f173.google.com ([209.85.210.173]:40843 "EHLO mail-pf1-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726694AbfDJBst (ORCPT ); Tue, 9 Apr 2019 21:48:49 -0400 Received: by mail-pf1-f173.google.com with SMTP id c207so388539pfc.7 for ; Tue, 09 Apr 2019 18:48:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gnarbox-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=OqZEhbr8YCFrak3zT8AWGBYwbTsrVZo9kdXogo1dCTE=; b=NCHCQHbgGE+dyIGmVaW39MLESubb4dYoofu7EjVLrZOJn6FGWusYTmFHCKQTzrMehz QmOhX/3W3sf2JGjRlfukWBghfIL59gzA6iWX9rfm78vKxPE4tnTJX4DfIhfWGvn+h829 vt8XF9PrCFkOlnNARtye9k5qL1KuLlY2Q1MnaOH81vgXIUMKq/Dh7ki5417+Xm7Wz6dG XDCKJ+fEMNjDzJFnEyybcIwFIY/uDaIRSJxQpuB5y7244Wx3MT4XsvttLMf6/jKeE21a oIA2veIkRwp46vhkSmdmUhzv/tg8wx6pT2oYARKiws+CdQMgT5qCNdQKp/YQ+NZqJ4Jv A8hA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=OqZEhbr8YCFrak3zT8AWGBYwbTsrVZo9kdXogo1dCTE=; b=nkhO59RW6BhzoIv9dFlEaUUk2g4L8OVaiuV4PTVGO2i9j7HQPrzcchjrVeeTOYxLFw o2hSC4bzMuXyCZDeR3IbezdeSwjJlMrQJqOmjc1DvsJ7qiYs/BgkptP6ayUhswOTZ7gW LmDo2AQItqRu2FuZ4vDiL7Ffyk75e5bLaPsNbs7eOFQgwBF4jpZsH5zgor68zAg102TZ pbgEIpovPxVC7xnKBhNiBVoc46zPiE78PybQXRtKuhS+5b++FXDmZm1xodUx8mRwJIa6 5/N+3rhuG1Eya9Z5JaPOl82ZyV7KHQ/XAFynV5XG/caAsfsVy3m/VpwaYoSBNYLi52b4 jmAg== X-Gm-Message-State: APjAAAWJsSyrSBZU7OmaCHqoNpN02rBINs2OSR6x/NyIQcR+RSCwXpwi 4pF6+0CksdL3NR9b3OKBvPvvGai8OiDZIw== X-Google-Smtp-Source: APXvYqy2mkZii/lIcX3ZaK7OclvGFVgJoJPK6OSEunqLGCdgdHLcth5m7ixu3TfcirxbYql89bMwJQ== X-Received: by 2002:aa7:8e04:: with SMTP id c4mr4775559pfr.48.1554860928086; Tue, 09 Apr 2019 18:48:48 -0700 (PDT) Received: from coops ([47.180.176.91]) by smtp.gmail.com with ESMTPSA id a9sm47459907pfo.17.2019.04.09.18.48.46 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 09 Apr 2019 18:48:47 -0700 (PDT) Date: Tue, 9 Apr 2019 18:48:44 -0700 From: Rob Weber To: Felipe Balbi Cc: linux-usb@vger.kernel.org, mathias.nyman@intel.com Subject: Re: Mass Storage Gadget Device Falls from SuperSpeed to High Speed Message-ID: <20190410014844.GA19912@coops> References: <87h8bnh5er.fsf@linux.intel.com> <20190328085343.GA12754@coops> <87bm1vgyby.fsf@linux.intel.com> <87h8bhez87.fsf@linux.intel.com> <20190402074855.GA16196@coops> <87a7h8g6yj.fsf@linux.intel.com> <20190403070228.GA27956@coops> <878swrh6ln.fsf@linux.intel.com> <20190404075624.GB15850@coops> <87v9zuf6my.fsf@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Disposition: inline In-Reply-To: <87v9zuf6my.fsf@linux.intel.com> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org Message-ID: <20190410014844.qDv44Z0m0epoiMW9I1bRWv98oTj9Hzrp5HdaU3tF8qw@z> Hi Felipe, On Thu, Apr 04, 2019 at 12:43:01PM +0300, Felipe Balbi wrote: > > We've identified a couple of auxiliary issues that seem to be unrelated, > > but we are trying to gather more data to be sure. One issue we are > > experiencing is particularly clear: We seem to have a race condition > > between the switching of channels on the SS mux on our platform and the > > enumeration of our device. We believe our device gets enumerated in high > > speed before we switch the channel of the SS mux. This can be clearly > > observed while watching the logs of the MCU on our platform while > > simultaneously watching dmesg. Below is an example of this test setup. > > Please note the MCU logs begin with [general][DBG]: > > > > root@gnarbox-2:~# echo device > /sys/class/usb_role/intel_xhci_usb_sw-role-switch/role > > root@gnarbox-2:~# ./bin/usb-trace 1 > > echo 1 > /t/events/dwc3/enable > > echo 1 > /t/events/xhci-hcd/enable > > echo 1 > /t/events/gadget/enable > > root@gnarbox-2:~# modprobe g_mass_storage file=/dev/nvme0n1p7 iSerialNumber=90405 > > root@gnarbox-2:~# stty -F /dev/ttyS2 115200 cs8 cstopb -parenb -icrnl > > root@gnarbox-2:~# cat /dev/ttyS2 & > > [1] 1733 > > root@gnarbox-2:~# dmesg -w > > > > Okay, setup complete, aaand we're rolling... > > > > [general] [DBG] handle_intr: (otg) event: Rp Change Detected() > > [general] [DBG] apply_pdo: setting limit based on Rp val 0 > > [general] [DBG] set_current_limit: IIN_HOST: 100 0x0100 > > [general] [DBG] set_current_limit: success (tried 1 times) > > [general] [DBG] handle_intr: (otg) event: Type-C Port Connect Detected() > > [general] [DBG] usb_mux_sel: (otg) polarity: 2 > > > > Here's where the PD controller detects the connection. Note the polarity > > of the cable that we detect. > > > > [general] [DBG] handle_intr: (otg) Nothing to do. > > [general] [DBG] handle_intr: (otg) event: Hard Reset Sent to Port Partner > > [ 179.905835] g_mass_storage gadget: super-speed config #1: Linux File-Backed Storage > > > > shortly after, the device is enumerated and the link speed is set to 5Gbps > > > > [general] [DBG] handle_intr: (otg) event: Hard Reset Sent to Port Partner > > [general] [DBG] handle_intr: (otg) event: Hard Reset Sent to Port Partner > > [general] [DBG] handle_intr: (otg) event: Source Disabled State Entered > > [general] [DBG] enable_charging: incorrect current limit(3300), setting(100) > > [general] [DBG] set_current_limit: IIN_HOST: 100 0x0100 > > [general] [DBG] set_current_limit: success (tried 1 times) > > ... > > ... > > [general] [DBG] handle_intr: (otg) event: Type-C Port Disconnect Detected() > > [general] [DBG] apply_pdo: setting limit based on Rp val 0 > > [general] [DBG] set_current_limit: IIN_HOST: 100 0x0100 > > [general] [DBG] set_current_limit: success (tried 1 times) > > [general] [DBG] disable_charging: > > > > Here we disconnect the cable from our device. > > > > [ 226.759843] g_mass_storage gadget: high-speed config #1: Linux File-Backed Storage > > [general] [DBG] handle_intr: (otg) event: Type-C Port Connect Detected() > > [general] [DBG] usb_mux_sel: (otg) polarity: 0 > > > > Here we reconnected our device to the host but with the cable in a > > different polarity than before. This means the SS mux is not properly > > configured for the current cable orientation and must be switched. Also > > note here that linux seems to report the enumeration in high speed > > before our MCU had a chance to react to the new connection. > > > > [general] [DBG] handle_intr: (otg) event: Hard Reset Sent to Port Partner > > [general] [DBG] handle_intr: (otg) event: Hard Reset Sent to Port Partner > > [general] [DBG] handle_intr: (otg) event: Hard Reset Sent to Port Partner > > [general] [DBG] handle_intr: (otg) event: Source Disabled State Entered > > [general] [DBG] enable_charging: incorrect current limit(3300), setting(100) > > [general] [DBG] set_current_limit: IIN_HOST: 100 0x0100 > > [general] [DBG] set_current_limit: success (tried 1 times) > > ... > > ... > > [general] [DBG] handle_intr: (otg) event: Type-C Port Disconnect Detected() > > [general] [DBG] apply_pdo: setting limit based on Rp val 0 > > [general] [DBG] set_current_limit: IIN_HOST: 100 0x0100 > > [general] [DBG] set_current_limit: success (tried 1 times) > > [general] [DBG] disable_charging: > > > > Here we disconnect our device from the host by removing the cable from > > our device's type-c connector. > > > > [ 262.783318] dwc3 dwc3.1.auto: request ffff880168ae3240 was not queued to ep1out > > [ 262.920461] g_mass_storage gadget: super-speed config #1: Linux File-Backed Storage > > [general] [DBG] handle_intr: (otg) event: Type-C Port Connect Detected() > > [general] [DBG] usb_mux_sel: (otg) polarity: 0 > > > > Here we re-connect our device to the host, but we made sure to leave the > > cable in the same orientation as before. That way the SS mux is already > > configured for the current cable orientation. We still see the USB > > device enumeration occur before the MCU has a chance to respond, but it > > gets enumerated in SuperSpeed because the SS mux was already configured > > for this cable orientation. > > This looks like an old bug on xhci which was fixed long ago. Mathias, do > you remember that bug? Which kernel fixed that issue? > > > We've come up with a few solutions that are specific to our platform > > in order to reduce the chances of this race condition occuring, but I > > wanted to ask you for your thoughts about how we might be able to work > > around this from Linux. In the event that we cannot completely eliminate > > this race condition, we would like to find some way to "upgrade" the > > connection from high speed to SuperSpeed. Is something like this > > possible? > > Unfortunately not. Does this continue to happen if you change the host > machine to e.g. Windows or a more recent linux kernel? Yes, this happens on all hosts (Windows, OSX, Linux on a range of kernels), which leads me to believe it might be unrelated to the xhci bug you recalled earlier. > > My naiive understanding wsas that the host would continuously > > poll the SS lines for a valid connection, but I believe I am mistaken > > here. I noticed in the USB protocol traces that there are a couple of > > Link Management Packets (LPMs) that the host sends. One of them seems to > > request the configuration descriptor, and another seems to request the > > link speed be set to 5 Gbps, to which the device acknowledges and > > complies. Is it possible to force this sort of exchange to happen again? > > AFAICT, that's handled entirely at the HW level without SW intervention. Hmm, okay. Might it be possible to perform some sort of soft reset of the dwc3, or possibly ask the host to reset the device? We're looking for any way to possibly reset the connection from HS to SS when we hit this race condition. We are also currently exploring ways of switching the orientation of the SS mux more efficiently. > > I've attached yet another tarball containing the dwc3 traces, USB > > protocol data (from a Teledyne LeCroy analyzer, compatible with the "USB > > Protocol Suite" application), and a raw copy of the logs I annotated > > above. The timestamps in the dwc3 traces should line up with the > > timestamps of the dmesg output in the annotated logs. The USB protocol > > data is from a different session, but still contains an example of the > > first enumeration in high speed, and the second in SS, all in one > > sample. The SS enumeration happens at around 8 seconds into the > > 12-second capture. > > > > Thanks in advance for your input here! > > I'll have to spend some more time with the logs, but at least from > traces, I couldn't see anything that would give a hint. I'll try looking > at CATC traces later today tomorrow. > > >> > I've attached a tarball containing the dmesg output, regdump, and > >> > tracepoints of a succesful session with the patch applied. I've included > >> > the patch in the tarball if you would like to see how I ported it. > >> > Could you please double-check the traces to make sure they meet your > >> > expectations for disabling the U1/U2_ENABLE features? I looked through > >> > the traces and could not find any link state changes to U1 or U2, so it > >> > seems like it's working. > >> > >> The host, from that run, didn't enable device-initiated U1/U2 entry. So > >> only host-initiated entry is avaiable. Since we have removed > >> ACCEPTU1/ACCEPTU2 bits from DCTL, dwc3 is denying LGO_U1 and LGO_U2. You > >> can confirm that only with a sniffer. > >> > >> > I have a couple of follow-up questions about this patch: > >> > > >> > * I added some tracepoints in the patch I'm applying but they don't seem > >> > to be included in the trace output. This patch applies cleanly and I > >> > haven't seen any compiler warnings about it. Is the > >> > dwc3_ep0_handle_feature function not called during > >> > >> it's called from SetFeature() command. If SetFeature() is not sent by > >> the host, then you won't see your tracepoints. FYI, SetFeature would > >> have a bRequest of 3. Here we can all ctrl requests: > >> > >> 192: irq/23-dwc3-1765 [000] d..1 213.007591: dwc3_ctrl_req: bRequestType 00 bRequest 05 wValue 0005 wIndex 0000 wLength 0 > >> 208: irq/23-dwc3-1765 [000] d..1 213.010457: dwc3_ctrl_req: bRequestType 80 bRequest 06 wValue 0100 wIndex 0000 wLength 18 > >> 237: irq/23-dwc3-1765 [000] d..1 213.010871: dwc3_ctrl_req: bRequestType 80 bRequest 06 wValue 0304 wIndex 0409 wLength 2 > >> 266: irq/23-dwc3-1765 [000] d..1 213.011330: dwc3_ctrl_req: bRequestType 80 bRequest 06 wValue 0304 wIndex 0409 wLength 40 > >> 295: irq/23-dwc3-1765 [000] d..1 213.011707: dwc3_ctrl_req: bRequestType 80 bRequest 06 wValue 0303 wIndex 0409 wLength 2 > >> 324: irq/23-dwc3-1765 [000] d..1 213.012137: dwc3_ctrl_req: bRequestType 80 bRequest 06 wValue 0303 wIndex 0409 wLength 92 > >> 353: irq/23-dwc3-1765 [000] d..1 213.012548: dwc3_ctrl_req: bRequestType 80 bRequest 06 wValue 0305 wIndex 0409 wLength 2 > >> 382: irq/23-dwc3-1765 [000] d..1 213.012934: dwc3_ctrl_req: bRequestType 80 bRequest 06 wValue 0305 wIndex 0409 wLength 12 > >> 411: irq/23-dwc3-1765 [000] d..1 213.013331: dwc3_ctrl_req: bRequestType 80 bRequest 06 wValue 0f00 wIndex 0000 wLength 5 > >> 440: irq/23-dwc3-1765 [000] d..1 213.013748: dwc3_ctrl_req: bRequestType 80 bRequest 06 wValue 0f00 wIndex 0000 wLength 22 > >> 469: irq/23-dwc3-1765 [000] d..1 213.016006: dwc3_ctrl_req: bRequestType 80 bRequest 06 wValue 0200 wIndex 0000 wLength 9 > >> 498: irq/23-dwc3-1765 [000] d..1 213.016543: dwc3_ctrl_req: bRequestType 80 bRequest 06 wValue 0200 wIndex 0000 wLength 44 > >> 527: irq/23-dwc3-1765 [000] d..1 213.016951: dwc3_ctrl_req: bRequestType 00 bRequest 09 wValue 0001 wIndex 0000 wLength 0 > >> 568: irq/23-dwc3-1765 [000] d..1 213.017569: dwc3_ctrl_req: bRequestType 80 bRequest 06 wValue 0301 wIndex 0409 wLength 2 > >> 597: irq/23-dwc3-1765 [000] d..1 213.017926: dwc3_ctrl_req: bRequestType 80 bRequest 06 wValue 0301 wIndex 0409 wLength 26 > >> 626: irq/23-dwc3-1765 [000] d..1 213.018367: dwc3_ctrl_req: bRequestType 81 bRequest 00 wValue 0000 wIndex 0000 wLength 2 > >> 653: irq/23-dwc3-1765 [000] d..1 213.026404: dwc3_ctrl_req: bRequestType a1 bRequest fe wValue 0000 wIndex 0000 wLength 1 > >> 929: irq/23-dwc3-1765 [000] d..1 214.138385: dwc3_ctrl_req: bRequestType 82 bRequest 00 wValue 0000 wIndex 0081 wLength 2 > >> 956: irq/23-dwc3-1765 [000] d..1 214.138791: dwc3_ctrl_req: bRequestType 02 bRequest 01 wValue 0000 wIndex 0081 wLength 0 > >> 1031: irq/23-dwc3-1765 [000] d..1 214.140214: dwc3_ctrl_req: bRequestType 82 bRequest 00 wValue 0000 wIndex 0081 wLength 2 > >> 1058: irq/23-dwc3-1765 [000] d..1 214.140618: dwc3_ctrl_req: bRequestType 02 bRequest 01 wValue 0000 wIndex 0081 wLength 0 > >> 1133: irq/23-dwc3-1765 [000] d..1 214.142208: dwc3_ctrl_req: bRequestType 82 bRequest 00 wValue 0000 wIndex 0081 wLength 2 > >> 1160: irq/23-dwc3-1765 [000] d..1 214.142587: dwc3_ctrl_req: bRequestType 02 bRequest 01 wValue 0000 wIndex 0081 wLength 0 > >> > >> Note that we don't have any "bRequest 03" substring. > > > > Is it normal to not see any SetFeature commands? I think I was expecting > > to see them pretty frequently. > > Totally normal :-) A host is not required to allow for device-initiated > U1/U2 entry. Nor is it required to halt and endpoint, for example. > > >> >> > I've attached the traces and dmesg output in an archive titled > >> >> > "gnarbox-ep0out-failure.tar.xz". Please let me know if you need more > >> >> > information about this particular issue. > >> >> > >> >> I'll go over the traces, this could be something that has been fixed in > >> >> the past. > >> > > >> > Did you get a chance to take a look at the tracepoints for this error? > >> > No worries if you haven't gotten a chance yet. > >> > >> I did, nothing screaming wrong with them. That "can't enable ep0out" > >> still puzzles me a bit. What we see on tracepoints is a time out: > >> > >> modprobe-1281 [002] d..1 246.504043: dwc3_gadget_ep_cmd: ep0out: cmd 'Set Endpoint Transfer Resource' [2] params 00000001 00000000 00000000 --> status: Timed Out > >> > >> But I have no idea why that happens. It could be that this was fixed > >> long ago, but we won't know unless we run a recent kernel on your > >> setup. I, certainly, haven't seen that :-) > > > > One of my colleagues is currently testing kernel 5.0.5 without the patch > > you suggested and it looks pretty good so far! We'll keep you updated if > > this changes. With this issue in particular, it is still unclear how to > > get our device into this state. We'll definitely keep an eye out for it > > on 5.0.5. > > If 5.0.5 is working, then you could run a git bisect and find the commit > that fixed it. If we have a failing commit and a working commit, git > bisect will help finding the fix, then you could simply cherry-pick it. I spoke too soon. 5.0.5 (unpatched) shows significant improvement than 4.9.115 as it takes about 15 minutes of data transfer before the link drops from SS to HS. We will be sticking with the patch that you provided us earlier. It's been working very well for us on 4.9.115. Cheers, Rob Weber