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: [v2] usb: typec: tcpm: collision avoidance From: Hans de Goede Message-Id: <9c9d17e3-bd99-c877-359c-a0a1b10a8d73@redhat.com> Date: Tue, 9 Apr 2019 16:41:12 +0200 To: Heikki Krogerus , Kyle Tso , Adam Thomson Cc: Guenter Roeck , Greg KH , Badhri Jagan Sridharan , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org List-ID: SGksCgpPbiAwOS0wNC0xOSAxNTowNiwgSGVpa2tpIEtyb2dlcnVzIHdyb3RlOgo+IE9uIFR1ZSwg QXByIDA5LCAyMDE5IGF0IDA0OjAyOjMwUE0gKzAzMDAsIEhlaWtraSBLcm9nZXJ1cyB3cm90ZToK Pj4gK0hhbnMKPj4KPj4gT24gTW9uLCBBcHIgMDgsIDIwMTkgYXQgMTA6MTc6MzVQTSArMDgwMCwg S3lsZSBUc28gd3JvdGU6Cj4+PiBPbiBGcmksIEFwciA1LCAyMDE5IGF0IDk6NDIgUE0gR3VlbnRl ciBSb2VjayA8bGludXhAcm9lY2stdXMubmV0PiB3cm90ZToKPj4+Pgo+Pj4+IE9uIDQvNC8xOSA3 OjEzIEFNLCBIZWlra2kgS3JvZ2VydXMgd3JvdGU6Cj4+Pj4+IEhpLAo+Pj4+Pgo+Pj4+PiBPbiBG cmksIE1hciAyMiwgMjAxOSBhdCAwODoxNzo0NVBNICswODAwLCBLeWxlIFRzbyB3cm90ZToKPj4+ Pj4+IFRoaXMgcGF0Y2ggcHJvdmlkZXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIENvbGxpc2lvbiBB dm9pZGFuY2UgaW50cm9kdWNlZAo+Pj4+Pj4gaW4gUEQzLjAuIFRoZSBzdGFydCBvZiBlYWNoIEF0 b21pYyBNZXNzYWdlIFNlcXVlbmNlIChBTVMpIGluaXRpYXRlZCBieQo+Pj4+Pj4gdGhlIHBvcnQg d2lsbCBiZSBkZW5pZWQgaWYgdGhlIGN1cnJlbnQgQU1TIGlzIG5vdCBpbnRlcnJ1cHRpYmxlLiBU aGUKPj4+Pj4+IFNvdXJjZSBwb3J0IHdpbGwgc2V0IHRoZSBDQyB0byBTaW5rVHhORyBpZiBpdCBp cyBnb2luZyB0byBpbml0aWF0ZSBhbgo+Pj4+Pj4gQU1TLCBhbmQgU2lua1R4T2sgb3RoZXJ3aXNl LiBNZWFud2hpbGUsIGFueSBBTVMgaW5pdGlhdGVkIGJ5IGEgU2luayBwb3J0Cj4+Pj4+PiB3aWxs IGJlIGRlbmllZCBpbiBUQ1BNIGlmIHRoZSBwb3J0IHBhcnRuZXIgKFNvdXJjZSkgc2V0cyBTaW5r VHhORyBleGNlcHQKPj4+Pj4+IGZvciBIQVJEX1JFU0VUIGFuZCBTT0ZUX1JFU0VULgo+Pj4+Pgo+ Pj4+PiBJIHRlc3RlZCB0aGlzIHdpdGggbXkgR0RCV2luIHdoaWNoIGhhcyBmdXNiMzAyLiBXaGVu IEkgcGx1Zy1pbgo+Pj4+PiBEaXNwbGF5UG9ydCBhZGFwdGVyLCB0aGUgcGFydG5lciBkZXZpY2Ug bmV2ZXIgZ2V0cyByZWdpc3RlcmVkLCBhbmQgSQo+Pj4+PiBzZWUgc3RlYWR5IGZsb3cgb2Ygd2Fy bmluZ3MgZnJvbSBmdXNiMzAyOgo+Pj4+Pgo+Pj4+Cj4+Pj4gRldJVywgSSBtYWRlIG11bHRpcGxl IGF0dGVtcHRzIHRvIHJldmlldyB0aGUgcGF0Y2guIEVhY2ggdGltZSBJIGdldCBzdHVjawo+Pj4+ IGFmdGVyIGEgd2hpbGUgYW5kIG5vdGljZSB0aGF0IEkgZG9uJ3QgdW5kZXJzdGFuZCB3aGF0IGlz IGdvaW5nIG9uLgo+Pj4+Cj4+Pj4gTWF5YmUgdGhlIHN0YXRlIG1hY2hpbmUgbmVlZHMgYSBjb21w bGV0ZSBvdmVyaGF1bC4gSXQgc2VlbXMgdG8gaGF2ZSByZWFjaGVkCj4+Pj4gYSBwb2ludCB3aGVy ZSBpdCBpcyBnZXR0aW5nIHRvbyBjb21wbGV4IHRvIHVuZGVyc3RhbmQgd2hhdCBpcyBnb2luZyBv bi4KPj4+Pgo+Pj4+PiBbICA2OTMuMzkxMTc2XSBWY29ubiBpcyBvbiBkdXJpbmcgdG9nZ2xlIHN0 YXJ0Cj4+Pj4+IFsgIDY5My4zOTEyNTBdIFdBUk5JTkc6IENQVTogMiBQSUQ6IDMwIGF0IGRyaXZl cnMvdXNiL3R5cGVjL3RjcG0vZnVzYjMwMi5jOjU2MiBmdXNiMzAyX3NldF90b2dnbGluZysweDEy OS8weDEzMCBbZnVzYjMwMl0KPj4+Pj4gWyAgNjkzLjQwMDI5M10gTW9kdWxlcyBsaW5rZWQgaW46 IGludGVsX3hoY2lfdXNiX3JvbGVfc3dpdGNoIGZ1c2IzMDIgdGNwbSByb2xlcyBwaTN1c2IzMDUz MiBpOTE1IHR5cGVjIGludGVsX2d0dCBpbnRlbF9jaHRfaW50MzNmZQo+Pj4+PiBbICA2OTMuNDA2 MzA5XSBDUFU6IDIgUElEOiAzMCBDb21tOiBrd29ya2VyL3U4OjEgVGFpbnRlZDogRyAgICAgICAg VyAgICAgICAgIDUuMS4wLXJjMy1oZWlra2krICMxNwo+Pj4+PiBbICA2OTMuNDA4NDM0XSBjaHRf d2NvdmVfcHdyc3JjIGNodF93Y292ZV9wd3JzcmM6IENvdWxkIG5vdCBkZXRlY3QgY2hhcmdlciB0 eXBlCj4+Pj4+IFsgIDY5My40MTIyNzhdIEhhcmR3YXJlIG5hbWU6IERlZmF1bHQgc3RyaW5nIERl ZmF1bHQgc3RyaW5nL0RlZmF1bHQgc3RyaW5nLCBCSU9TIDUuMTEgMDUvMjUvMjAxNwo+Pj4+PiBb ICA2OTMuNDEyMjgzXSBXb3JrcXVldWU6IGkyYy1mdXNiMzAyIHRjcG1fc3RhdGVfbWFjaGluZV93 b3JrIFt0Y3BtXQo+Pj4+PiBbICA2OTMuNDI0MjU2XSBSSVA6IDAwMTA6ZnVzYjMwMl9zZXRfdG9n Z2xpbmcrMHgxMjkvMHgxMzAgW2Z1c2IzMDJdCj4+Pj4+IFsgIDY5My40MjcyMzRdIENvZGU6IDg5 IGRmIGU4IGRhIGVmIGZmIGZmIDg1IGMwIDc4IGM2IGM2IDgzIGIwIDAxIDAwIDAwIDAwIGViIGI3 IGI5IDAyIDAwIDAwIDAwIGU5IDQ4IGZmIGZmIGZmIDQ4IGM3IGM3IDIwIGU4IDIxIGEwIGU4IDhl IDBjIGU0IGUwIDwwZj4gMGIgZTkgNTggZmYgZmYgZmYgNDEgNTUgNGMgOGQgNmYgZTggNDEgNTQg NDEgODkgZjQgNTUgNTMgNDggOGQKPj4+Pj4gWyAgNjkzLjQzNjIwNF0gUlNQOiAwMDAwOmZmZmZj OTAwMDA3NmJkOTAgRUZMQUdTOiAwMDAxMDI4Ngo+Pj4+PiBbICA2OTMuNDM5MTc0XSBSQVg6IDAw MDAwMDAwMDAwMDAwMDAgUkJYOiBmZmZmODg4MTc4MDgwMDI4IFJDWDogMDAwMDAwMDAwMDAwMDAw MAo+Pj4+PiBbICA2OTMuNDQyMTU3XSBSRFg6IDAwMDAwMDAwMDAwMDAwMWYgUlNJOiBmZmZmZmZm ZjgyNTkwNTFmIFJESTogZmZmZmZmZmY4MjU5MDkxZgo+Pj4+PiBbICA2OTMuNDQ1MTMwXSBSQlA6 IDAwMDAwMDAwMDAwMDAwMDMgUjA4OiBmZmZmZmZmZjgyNTkwNTAwIFIwOTogMDAwMDAwMDAwMDAy MDJjMAo+Pj4+PiBbICA2OTMuNDQ4MTAwXSBSMTA6IDAwMDAwMTBjYjI0YTNkMTggUjExOiAwMDAw MDAwMDAwMDAwMDFlIFIxMjogZmZmZjg4ODE3ODA4MDFiMAo+Pj4+PiBbICA2OTMuNDUxMDg2XSBS MTM6IGZmZmZmZmZmYTAyMWU0ZTUgUjE0OiAwMDAwMDAwMDAwMDAwMDAzIFIxNTogZmZmZjg4ODE3 ODA4MDA0MAo+Pj4+PiBbICA2OTMuNDU0MDYwXSBGUzogIDAwMDAwMDAwMDAwMDAwMDAoMDAwMCkg R1M6ZmZmZjg4ODE3YmIwMDAwMCgwMDAwKSBrbmxHUzowMDAwMDAwMDAwMDAwMDAwCj4+Pj4+IFsg IDY5My40NjAwMDldIENTOiAgMDAxMCBEUzogMDAwMCBFUzogMDAwMCBDUjA6IDAwMDAwMDAwODAw NTAwMzMKPj4+Pj4gWyAgNjkzLjQ2Mjk4NF0gQ1IyOiAwMDAwMDAwMGY3ZmI3NGEwIENSMzogMDAw MDAwMDAwMjAwZDAwMCBDUjQ6IDAwMDAwMDAwMDAxMDA2ZTAKPj4+Pj4gWyAgNjkzLjQ2NTk2OV0g Q2FsbCBUcmFjZToKPj4+Pj4gWyAgNjkzLjQ2ODkzN10gIHRjcG1fc2V0X2NjKzB4YjkvMHgxNzAg W2Z1c2IzMDJdCj4+Pj4+IFsgIDY5My40NzE4OTRdICB0Y3BtX2Ftc19zdGFydCsweDFiOC8weDJh MCBbdGNwbV0KPj4+Pgo+Pj4+IHRjcG1fYW1zX3N0YXJ0KCkgc2V0cyBUWVBFQ19DQ19SUF8xXzUg dW5jb25kaXRpb25hbGx5LCBubyBtYXR0ZXIgd2hhdC4gVGhpcyBjYXVzZXMKPj4+PiB0aGUgZnVz YjMwMiBjb2RlIHRvIHN0YXJ0IHRvZ2dsaW5nLiBBcyBzdWNoLCBpdCBtYXkgd2VsbCBhdHRlbXB0 IHRvIHN0YXJ0IHRvZ2dsaW5nCj4+Pj4gaW4gdGhlIHdyb25nIHN0YXRlLgo+Pj4+Cj4+Pj4gR3Vl bnRlcgo+Pj4+Cj4+Pgo+Pj4gSSByZWFkIHRoZSBmdXNiMzAyIHNwZWMgYnV0IGZhaWxlZCB0byBm aW5kIHRoZSBzdGF0ZW1lbnQgdGhhdCBzYXlzIGl0Cj4+PiBzaG91bGQgInNldCB0b2dnbGluZyIg d2hlbiBDQyBzd2l0Y2hlcyBhbW9uZyBkZWZhdWx0L21lZGl1bS9oaWdoLgo+Pj4KPj4+IHF1b3Qg ZnJvbSBmdXNiMzAyIHNwZWM6Cj4+PiAiVGhlIEZVU0IzMDIgYWxsb3dzIHRoZSBob3N0IHNvZnR3 YXJlIHRvIGNoYW5nZSB0aGUgY2hhcmdpbmcgY3VycmVudAo+Pj4gY2FwYWJpbGl0aWVzIG9mIHRo ZSBwb3J0IHRocm91Z2ggdGhlIEhPU1RfQ1VSIGNvbnRyb2wgYml0cy4gSWYgdGhlCj4+PiBIT1NU X0NVUiBiaXRzIGFyZSBjaGFuZ2VkIHByaW9yIHRvIGF0dGFjaCwgdGhlIEZVU0IzMDIgYXV0b21h dGljYWxseQo+Pj4gaW5kaWNhdGVzIHRoZSBwcm9ncmFtbWVkIGN1cnJlbnQgY2FwYWJpbGl0eSB3 aGVuIGEgZGV2aWNlIGlzIGF0dGFjaGVkLgo+Pj4gSWYgdGhlIGN1cnJlbnQgY2FwYWJpbGl0aWVz IGFyZSBjaGFuZ2VkIGFmdGVyIGEgZGV2aWNlIGlzIGF0dGFjaGVkLAo+Pj4gdGhlIEZVU0IzMDIg aW1tZWRpYXRlbHkgY2hhbmdlcyB0aGUgQ0MgbGluZSB0byB0aGUgcHJvZ3JhbW1lZAo+Pj4gY2Fw YWJpbGl0eS4iCj4+Pgo+Pj4gSXMgaXQgcG9zc2libGUgdG8gc2tpcCBmdXNiMzAyX3NldF90b2dn bGluZygpIEAgbGluZSM2NTggaWYKPj4+IHRjcG1fc2V0X2NjKCkgaXMgY2FsbGVkIGluIG9yZGVy IHRvIHN3aXRjaCB0aGUgY2MgYW1vbmcKPj4+IGRlZmF1bHQvbWVkaXVtL2hpZ2ggb2YgUnAgPwo+ IAo+IEhhbnMsIHlvdSBpbnRyb2R1Y2VkIHRoYXQgaW4gY29tbWl0IGRhZjgxZDAxMzdhOWMgKCJ1 c2I6IHR5cGVjOgo+IGZ1c2IzMDI6IFJlZmFjdG9yIC8gc2ltcGxpZnkgdGNwbV9zZXRfY2MoKSIp LCBzbyBjb3VsZCB5b3UgdGFrZSBhIGxvb2sKPiBhdCB0aGlzLgoKSSBkbyBub3QgYmVsaWV2ZSB0 aGF0IHRoYXQgY29tbWl0IGludHJvZHVjZXMgdGhlIGZ1c2IzMDJfc2V0X3RvZ2dsaW5nKCkKYXMg dGhlIHN1YmplY3Qgb2YgdGhlIGNvbW1pdCBzYXlzIGl0IGp1c3QgcmVmYWN0b3JzIHRoaW5ncywg dGhlCnNldF90b2dnbGluZyBjYWxsIHdhcyBpbnRyb2R1Y2VkIGJ5OgoKY29tbWl0IGVhM2I0ZDU1 MjNiYzgoInVzYjogdHlwZWM6IGZ1c2IzMDI6IFJlc29sdmUgZml4ZWQgcG93ZXIgcm9sZSBjb250 cmFjdCBzZXR1cCIpCgpCZWZvcmUgdGhhdDoKCmh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3Nj bS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL2RyaXZlcnMvdXNiL3R5 cGVjL3RjcG0vZnVzYjMwMi5jP2lkPTQwMzI2ZTg1N2M1N2EwMDk1ZDNmOWQ3MmMxNGNiMTNhZWY0 Y2E1NjQKCnRjcG1fc2V0X2NjIGFjdHVhbGx5IHR1cm5lZCB0b2dnbGluZyBvZmYgaW4gYWxsIGNh c2VzLgoKSSd2ZSBubyBkb3VidCB0aGF0IEFkYW0gd2FzIHNlZWluZyBhIHJlYWwgcHJvYmxlbSwg YnV0IEkndmUgZG91YnRlZCBpZiB0aGlzCndhcyB0aGUgcmlnaHQgZml4IGJlZm9yZS4gSSBldmVu IGhhZCBpdCByZXZlcnRlZCBpbiBteSB0cmVlIGZvciBhIHdoaWxlLCBidXQKc2luY2UgaW4gbXkg dXNlLWNhc2VzIHNvIGZhciBpdCBoYXMgbm90IGNhdXNlZCBhbnkgcHJvYmxlbXMgSSd2ZSBub3Qg bG9va2VkCmludG8gaXQgZnVydGhlci4KCkluIHRoZSBtZWFuIHRpbWUgdGhlIGNvZGUgaGFzIGNo YW5nZWQgcXVpdGUgYSBiaXQgdGhvdWdoLCBzbyBtYWtpbmcKdGNwbV9zZXRfY2MoKSBiZWhhdmUg YXMgaXQgZGlkIGJlZm9yZSwgc2VlOgpodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGlu dXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9kcml2ZXJzL3VzYi90eXBlYy90 Y3BtL2Z1c2IzMDIuYz9pZD00MDMyNmU4NTdjNTdhMDA5NWQzZjlkNzJjMTRjYjEzYWVmNGNhNTY0 CgpXaWxsIHJlcXVpcmUgd3JpdGluZyBzb21ldGhpbmcgZnJvbSBzY3JhdGNoIGJhc2VkIG9uIHRo ZSBuZXcgY29kZSB3aGljaAptaW1pY2tzIHRoZSBiZWhhdmlvdXIgb2YgdGhlIG9sZCBjb2RlOyBh bmQgdGhlbiB3ZSBhbHNvIG5lZWQgdG8gZml4IEFkYW0ncwpwcm9ibGVtIG9uIHRvcC4KClJlZ2Fy ZHMsCgpIYW5zCgoKCgoKCj4gCj4+PiB0aGUgdGNwbSBsb2cgb24gYW5vdGhlciBQRCBjb250cm9s bGVyOgo+Pj4gWyAxMjE1LjcwOTUzOF0gQ0MxOiAwIC0+IDIsIENDMjogMCAtPiAxIFtzdGF0ZSBE UlBfVE9HR0xJTkcsIHBvbGFyaXR5Cj4+PiAwLCBjb25uZWN0ZWRdCj4+PiBbIDEyMTUuNzA5NTUx XSBzdGF0ZSBjaGFuZ2UgRFJQX1RPR0dMSU5HIC0+IFNSQ19BVFRBQ0hfV0FJVAo+Pj4gWyAxMjE1 LjcwOTU3Nl0gcGVuZGluZyBzdGF0ZSBjaGFuZ2UgU1JDX0FUVEFDSF9XQUlUIC0+IFNSQ19BVFRB Q0hFRCBACj4+PiAyMDAgbXMKPj4+IFsgMTIxNS45MDc0NjVdIHN0YXRlIGNoYW5nZSBTUkNfQVRU QUNIX1dBSVQgLT4gU1JDX0FUVEFDSEVEIFtkZWxheWVkCj4+PiAyMDAgbXNdCj4+PiBbIDEyMTUu OTA3NjcwXSBwb2xhcml0eSAwCj4+PiBbIDEyMTUuOTA4MDcwXSBSZXF1ZXN0aW5nIG11eCBzdGF0 ZSAxLCB1c2Itcm9sZSAxLCBvcmllbnRhdGlvbiAxCj4+PiBbIDEyMTUuOTA5MzQyXSB2Y29ubjo9 MQo+Pj4gWyAxMjE1LjkwOTU0OV0gdmJ1czo9MSBjaGFyZ2U9MAo+Pj4gWyAxMjE1LjkwOTYzM10g U2V0dGluZyBwZCBjYXBhYmxlIGZhbHNlCj4+PiBbIDEyMTUuOTA5NjM3XSBwZW5kaW5nIHN0YXRl IGNoYW5nZSBTUkNfQVRUQUNIRUQgLT4gU1JDX1VOQVRUQUNIRUQgQAo+Pj4gNDgwIG1zCj4+PiBb IDEyMTUuOTA5Njg1XSBWQlVTIG9uCj4+PiBbIDEyMTUuOTA5Njg3XSBzdGF0ZSBjaGFuZ2UgU1JD X0FUVEFDSEVEIC0+IFNSQ19TVEFSVFVQCj4+PiBbIDEyMTUuOTE0MjYzXSBBTVMgUE9XRVJfTkVH T1RJQVRJT04gc3RhcnQKPj4+IFsgMTIxNS45MTQyNjddIGNjOj00Cj4+PiBbIDEyMTUuOTE0Mjg4 XSBzdGF0ZSBjaGFuZ2UgU1JDX1NUQVJUVVAgLT4gQU1TX1NUQVJUIGluIEFNUyBQT1dFUl9ORUdP VElBVElPTgo+Pj4gWyAxMjE1LjkxNDI5NF0gc3RhdGUgY2hhbmdlIEFNU19TVEFSVCAtPiBTUkNf U0VORF9DQVBBQklMSVRJRVMgaW4gQU1TCj4+PiBQT1dFUl9ORUdPVElBVElPTgo+Pj4gWyAxMjE1 LjkxNDI5OF0gUEQgVFgsIGhlYWRlcjogMHgxMWExCj4+PiBbIDEyMTUuOTE5NTUyXSBQRCBUWCBj b21wbGV0ZSwgc3RhdHVzOiAyCj4+PiBbIDEyMTUuOTE5NTc3XSBwZW5kaW5nIHN0YXRlIGNoYW5n ZSBTUkNfU0VORF9DQVBBQklMSVRJRVMgLT4KPj4+IFNSQ19TRU5EX0NBUEFCSUxJVElFUyBAIDE1 MCBtcyBpbiBBTVMgUE9XRVJfTkVHT1RJQVRJT04KPj4+IFsgMTIxNi4wNzEwNDFdIHN0YXRlIGNo YW5nZSBTUkNfU0VORF9DQVBBQklMSVRJRVMgLT4KPj4+IFNSQ19TRU5EX0NBUEFCSUxJVElFUyBb ZGVsYXllZCAxNTAgbXNdCj4+PiBbIDEyMTYuMDcxMDQ5XSBQRCBUWCwgaGVhZGVyOiAweDExYTEK Pj4+IFsgMTIxNi4wNzI1MDhdIFBEIFRYIGNvbXBsZXRlLCBzdGF0dXM6IDAKPj4+IFsgMTIxNi4w NzI1MzVdIFNldHRpbmcgcGQgY2FwYWJsZSB0cnVlCj4+PiBbIDEyMTYuMDcyNjQ1XSBwZW5kaW5n IHN0YXRlIGNoYW5nZSBTUkNfU0VORF9DQVBBQklMSVRJRVMgLT4KPj4+IEhBUkRfUkVTRVRfU0VO RCBAIDE1MCBtcyBpbiBBTVMgUE9XRVJfTkVHT1RJQVRJT04KPj4+IFsgMTIxNi4wNzM5MTVdIFBE IFJYLCBoZWFkZXI6IDB4MTA0MiBbMV0KPj4+IFsgMTIxNi4wNzM5MjBdIHN0YXRlIGNoYW5nZSBT UkNfU0VORF9DQVBBQklMSVRJRVMgLT4gU1JDX05FR09USUFURV9DQVBBQklMSVRJRVMKPj4+IFsg MTIxNi4wNzM5NDFdIFJlcXVlc3RlZCA1MDAwIG1WLCA5MDAgbUEgZm9yIDkwMCAvIDkwMCBtQQo+ Pj4gWyAxMjE2LjA3Mzk0NF0gUEQgVFgsIGhlYWRlcjogMHgzNjMKPj4+IFsgMTIxNi4wNzUyODFd IFBEIFRYIGNvbXBsZXRlLCBzdGF0dXM6IDAKPj4+IFsgMTIxNi4wNzUzMzddIHBlbmRpbmcgc3Rh dGUgY2hhbmdlIFNSQ19ORUdPVElBVEVfQ0FQQUJJTElUSUVTIC0+Cj4+PiBTUkNfVFJBTlNJVElP Tl9TVVBQTFkgQCAzNSBtcwo+Pj4gWyAxMjE2LjExMzc0Ml0gc3RhdGUgY2hhbmdlIFNSQ19ORUdP VElBVEVfQ0FQQUJJTElUSUVTIC0+Cj4+PiBTUkNfVFJBTlNJVElPTl9TVVBQTFkgW2RlbGF5ZWQg MzUgbXNdCj4+PiBbIDEyMTYuMTEzNzUyXSBQRCBUWCwgaGVhZGVyOiAweDU2Ngo+Pj4gWyAxMjE2 LjExNjc0M10gUEQgVFggY29tcGxldGUsIHN0YXR1czogMAo+Pj4gWyAxMjE2LjExNzE3NV0gc3Rh dGUgY2hhbmdlIFNSQ19UUkFOU0lUSU9OX1NVUFBMWSAtPiBTUkNfUkVBRFkKPj4+IFsgMTIxNi4x MTg3MzddIFBEIFRYLCBoZWFkZXI6IDB4MTc2Zgo+Pj4gWyAxMjE2LjEyMDI4NV0gUEQgVFggY29t cGxldGUsIHN0YXR1czogMAo+Pj4gWyAxMjE2LjEyMjQ1NV0gUEQgUlgsIGhlYWRlcjogMHg1MjRm IFsxXQo+Pj4gWyAxMjE2LjEyMjQ2M10gUnggVkRNIGNtZCAweGZmMDA4MDQxIHR5cGUgMSBjbWQg MSBsZW4gNQo+Pj4gWyAxMjE2LjEyMjUxMV0gSWRlbnRpdHk6IDA0YjQ6MTEyMC4wMDAwCj4+PiBb IDEyMTYuMTIyNTMxXSBQRCBUWCwgaGVhZGVyOiAweDE5NmYKPj4+IFsgMTIxNi4xMjM5NjVdIFBE IFRYIGNvbXBsZXRlLCBzdGF0dXM6IDAKPj4+IFsgMTIxNi4xMjU1NzNdIFBEIFJYLCBoZWFkZXI6 IDB4MjQ0ZiBbMV0KPj4+IFsgMTIxNi4xMjU1NzhdIFJ4IFZETSBjbWQgMHhmZjAwODA0MiB0eXBl IDEgY21kIDIgbGVuIDIKPj4+IFsgMTIxNi4xMjU1ODFdIFNWSUQgMTogMHhmZjAxCj4+PiBbIDEy MTYuMTI1NjAzXSBQRCBUWCwgaGVhZGVyOiAweDFiNmYKPj4+IFsgMTIxNi4xMjcwNzRdIFBEIFRY IGNvbXBsZXRlLCBzdGF0dXM6IDAKPj4+IFsgMTIxNi4xMjg3NTBdIFBEIFJYLCBoZWFkZXI6IDB4 MjY0ZiBbMV0KPj4+IFsgMTIxNi4xMjg3NTRdIFJ4IFZETSBjbWQgMHhmZjAxODA0MyB0eXBlIDEg Y21kIDMgbGVuIDIKPj4+IFsgMTIxNi4xMjg3NThdICBBbHRlcm5hdGUgbW9kZSAwOiBTVklEIDB4 ZmYwMSwgVkRPIDE6IDB4MDAwMDA0MDUKPj4+Cj4+Pj4+IFsgIDY5My40NzQ4NTVdICA/IF9jb25k X3Jlc2NoZWQrMHgxMC8weDIwCj4+Pj4+IFsgIDY5My40Nzc4MDddICB0Y3BtX3N0YXRlX21hY2hp bmVfd29yaysweDU3ZS8weDI4ZjYgW3RjcG1dCj4+Pj4+IFsgIDY5My40ODA3NzZdICA/IHRjcG1f cGRfZXZlbnRfaGFuZGxlcisweDExMS8weDMyMCBbdGNwbV0KPj4+Pj4gWyAgNjkzLjQ4Mzc0M10g IHByb2Nlc3Nfb25lX3dvcmsrMHgxZGEvMHg0MTAKPj4+Pj4gWyAgNjkzLjQ4NjcwM10gIHdvcmtl cl90aHJlYWQrMHgyOC8weDNjMAo+Pj4+PiBbICA2OTMuNDg5NjUxXSAgPyBwcm9jZXNzX29uZV93 b3JrKzB4NDEwLzB4NDEwCj4+Pj4+IFsgIDY5My40OTI2MDNdICBrdGhyZWFkKzB4MTBiLzB4MTMw Cj4+Pj4+IFsgIDY5My40OTU1NDhdICA/IGt0aHJlYWRfY3JlYXRlX29uX25vZGUrMHg2MC8weDYw Cj4+Pj4+IFsgIDY5My40OTg1MDZdICByZXRfZnJvbV9mb3JrKzB4MWYvMHgzMAo+Pj4+Pgo+Pj4+ Pgo+Pj4+PiBIZXJlJ3MgdGhlIHRjcG0gZGVidWdmcyBsb2c6Cj4+Pj4+Cj4+Pj4+IFsgIDY5Mi41 NTMwMDBdIENDMTogMCAtPiAyLCBDQzI6IDAgLT4gMSBbc3RhdGUgRFJQX1RPR0dMSU5HLCBwb2xh cml0eSAwLCBjb25uZWN0ZWRdCj4+Pj4+IFsgIDY5Mi41NTMwMTZdIHN0YXRlIGNoYW5nZSBEUlBf VE9HR0xJTkcgLT4gU1JDX0FUVEFDSF9XQUlUCj4+Pj4+IFsgIDY5Mi41NTMwNTZdIHBlbmRpbmcg c3RhdGUgY2hhbmdlIFNSQ19BVFRBQ0hfV0FJVCAtPiBTTktfVFJZIEAgMjAwIG1zCj4+Pj4+IFsg IDY5Mi43NTc0MDJdIHN0YXRlIGNoYW5nZSBTUkNfQVRUQUNIX1dBSVQgLT4gU05LX1RSWSBbZGVs YXllZCAyMDAgbXNdCj4+Pj4+IFsgIDY5Mi43NTc0MTBdIGNjOj0yCj4+Pj4+IFsgIDY5Mi43NjE5 NDZdIHBlbmRpbmcgc3RhdGUgY2hhbmdlIFNOS19UUlkgLT4gU05LX1RSWV9XQUlUIEAgMTAwIG1z Cj4+Pj4+IFsgIDY5Mi44NjkzMDhdIHN0YXRlIGNoYW5nZSBTTktfVFJZIC0+IFNOS19UUllfV0FJ VCBbZGVsYXllZCAxMDAgbXNdCj4+Pj4+IFsgIDY5Mi44NjkzMTNdIHN0YXRlIGNoYW5nZSBTTktf VFJZX1dBSVQgLT4gU1JDX1RSWVdBSVQKPj4+Pj4gWyAgNjkyLjg2OTMxN10gY2M6PTMKPj4+Pj4g WyAgNjkyLjg3MzY1N10gcGVuZGluZyBzdGF0ZSBjaGFuZ2UgU1JDX1RSWVdBSVQgLT4gU1JDX1RS WVdBSVRfVU5BVFRBQ0hFRCBAIDEwMCBtcwo+Pj4+PiBbICA2OTIuODgyNTI0XSBDQzE6IDIgLT4g MiwgQ0MyOiAxIC0+IDEgW3N0YXRlIFNSQ19UUllXQUlULCBwb2xhcml0eSAwLCBjb25uZWN0ZWRd Cj4+Pj4+IFsgIDY5Mi44ODI1MzddIHN0YXRlIGNoYW5nZSBTUkNfVFJZV0FJVCAtPiBTUkNfVFJZ V0FJVF9ERUJPVU5DRQo+Pj4+PiBbICA2OTIuODgyNTY3XSBwZW5kaW5nIHN0YXRlIGNoYW5nZSBT UkNfVFJZV0FJVF9ERUJPVU5DRSAtPiBTUkNfQVRUQUNIRUQgQCAyMDAgbXMKPj4+Pj4gWyAgNjkz LjA4NTMzN10gc3RhdGUgY2hhbmdlIFNSQ19UUllXQUlUX0RFQk9VTkNFIC0+IFNSQ19BVFRBQ0hF RCBbZGVsYXllZCAyMDAgbXNdCj4+Pj4+IFsgIDY5My4wODUzNDddIHBvbGFyaXR5IDAKPj4+Pj4g WyAgNjkzLjA4NTM1Ml0gUmVxdWVzdGluZyBtdXggc3RhdGUgMSwgdXNiLXJvbGUgMSwgb3JpZW50 YXRpb24gMQo+Pj4+PiBbICA2OTMuMzQ2ODQ1XSB2Y29ubjo9MQo+Pj4+PiBbICA2OTMuMzQ3MTc0 XSB2YnVzOj0xIGNoYXJnZT0wCj4+Pj4+IFsgIDY5My4zNTgzNDBdIHBlbmRpbmcgc3RhdGUgY2hh bmdlIFNSQ19BVFRBQ0hFRCAtPiBTUkNfVU5BVFRBQ0hFRCBAIDQ4MCBtcwo+Pj4+PiBbICA2OTMu Mzc4NzAyXSBWQlVTIG9uCj4+Pj4+IFsgIDY5My4zNzg3MTFdIHN0YXRlIGNoYW5nZSBTUkNfQVRU QUNIRUQgLT4gU1JDX1NUQVJUVVAKPj4+Pj4gWyAgNjkzLjM3ODc0MV0gQU1TIFBPV0VSX05FR09U SUFUSU9OIHN0YXJ0Cj4+Pj4+IFsgIDY5My4zNzg3NDVdIGNjOj00Cj4+Pj4+IFsgIDY5My41MDUz MjFdIHN0YXRlIGNoYW5nZSBTUkNfU1RBUlRVUCAtPiBBTVNfU1RBUlQgaW4gQU1TIFBPV0VSX05F R09USUFUSU9OCj4+Pj4+IFsgIDY5My41MDUzMjVdIHN0YXRlIGNoYW5nZSBBTVNfU1RBUlQgLT4g U1JDX1NFTkRfQ0FQQUJJTElUSUVTIGluIEFNUyBQT1dFUl9ORUdPVElBVElPTgo+Pj4+PiBbICA2 OTMuNTA1MzI3XSBQRCBUWCwgaGVhZGVyOiAweDExYTEKPj4+Pj4gWyAgNjkzLjYxMzI5Nl0gcGVu ZGluZyBzdGF0ZSBjaGFuZ2UgU1JDX1NFTkRfQ0FQQUJJTElUSUVTIC0+IFNSQ19TRU5EX0NBUEFC SUxJVElFUyBAIDE1MCBtcyBpbiBBTVMgUE9XRVJfTkVHT1RJQVRJT04KPj4+Pj4gWyAgNjkzLjYx MzMwOV0gQ0MxOiAyIC0+IDIsIENDMjogMSAtPiAxIFtzdGF0ZSBTUkNfU0VORF9DQVBBQklMSVRJ RVMsIHBvbGFyaXR5IDAsIGNvbm5lY3RlZF0KPj4+Pj4gWyAgNjkzLjc2NTczMF0gc3RhdGUgY2hh bmdlIFNSQ19TRU5EX0NBUEFCSUxJVElFUyAtPiBTUkNfU0VORF9DQVBBQklMSVRJRVMgW2RlbGF5 ZWQgMTUwIG1zXQo+Pj4+PiBbICA2OTMuNzY1NzUzXSBQRCBUWCwgaGVhZGVyOiAweDExYTEKPj4+ Pj4gWyAgNjkzLjc3MDAxNl0gUEQgVFggY29tcGxldGUsIHN0YXR1czogMAo+Pj4+PiBbICA2OTMu NzcwMjYxXSBwZW5kaW5nIHN0YXRlIGNoYW5nZSBTUkNfU0VORF9DQVBBQklMSVRJRVMgLT4gU1JD X1NFTkRfQ0FQQUJJTElUSUVTX1RJTUVPVVQgQCAxNTAgbXMgaW4gQU1TIFBPV0VSX05FR09USUFU SU9OCj4+Pj4+IFsgIDY5My43NzUxNzhdIFBEIFJYLCBoZWFkZXI6IDB4MTA0MiBbMV0KPj4+Pj4g WyAgNjkzLjc3NTE5NV0gc3RhdGUgY2hhbmdlIFNSQ19TRU5EX0NBUEFCSUxJVElFUyAtPiBTUkNf TkVHT1RJQVRFX0NBUEFCSUxJVElFUwo+Pj4+PiBbICA2OTMuNzc1MjM2XSBSZXF1ZXN0ZWQgNTAw MCBtViwgNDAwIG1BIGZvciA0MDAgLyA5MDAgbUEKPj4+Pj4gWyAgNjkzLjc3NTI0NF0gUEQgVFgs IGhlYWRlcjogMHgzNjMKPj4+Pj4gWyAgNjkzLjc3ODI1M10gUEQgVFggY29tcGxldGUsIHN0YXR1 czogMAo+Pj4+PiBbICA2OTMuNzc4MzYzXSBwZW5kaW5nIHN0YXRlIGNoYW5nZSBTUkNfTkVHT1RJ QVRFX0NBUEFCSUxJVElFUyAtPiBTUkNfVFJBTlNJVElPTl9TVVBQTFkgQCAzNSBtcwo+Pj4+PiBb ICA2OTMuODAzNDYzXSBSZWNlaXZlZCBoYXJkIHJlc2V0Cj4+Pj4+IFsgIDY5My44MDM0NzNdIHN0 YXRlIGNoYW5nZSBTUkNfTkVHT1RJQVRFX0NBUEFCSUxJVElFUyAtPiBIQVJEX1JFU0VUX1NUQVJU Cj4+Pj4+IFsgIDY5My44MDYzMjNdIHBlbmRpbmcgc3RhdGUgY2hhbmdlIEhBUkRfUkVTRVRfU1RB UlQgLT4gU1JDX0hBUkRfUkVTRVRfVkJVU19PRkYgQCAzMCBtcwo+Pj4+PiBbICA2OTMuODM3NDAw XSBzdGF0ZSBjaGFuZ2UgSEFSRF9SRVNFVF9TVEFSVCAtPiBTUkNfSEFSRF9SRVNFVF9WQlVTX09G RiBbZGVsYXllZCAzMCBtc10KPj4+Pj4gWyAgNjkzLjgzNzQxNF0gdmNvbm46PTEKPj4+Pj4gWyAg NjkzLjgzNzQyNl0gdmJ1czo9MCBjaGFyZ2U9MAo+Pj4+PiBbICA2OTMuODQzMzgwXSBSZXF1ZXN0 aW5nIG11eCBzdGF0ZSAxLCB1c2Itcm9sZSAxLCBvcmllbnRhdGlvbiAxCj4+Pj4+IFsgIDY5My44 NDQ1NTRdIHBlbmRpbmcgc3RhdGUgY2hhbmdlIFNSQ19IQVJEX1JFU0VUX1ZCVVNfT0ZGIC0+IFNS Q19IQVJEX1JFU0VUX1ZCVVNfT04gQCA3NjAgbXMKPj4+Pj4gWyAgNjkzLjg0NDU3NV0gVkJVUyBv ZmYKPj4+Pj4gWyAgNjkzLjg0NDU4MF0gc3RhdGUgY2hhbmdlIFNSQ19IQVJEX1JFU0VUX1ZCVVNf T0ZGIC0+IFNSQ19IQVJEX1JFU0VUX1ZCVVNfT04KPj4+Pj4gWyAgNjkzLjg0NDYxN10gdmJ1czo9 MSBjaGFyZ2U9MAo+Pj4+PiBbICA2OTMuODUwNjg4XSBwZW5kaW5nIHN0YXRlIGNoYW5nZSBTUkNf SEFSRF9SRVNFVF9WQlVTX09OIC0+IFNSQ19VTkFUVEFDSEVEIEAgNDgwIG1zCj4+Pj4+IFsgIDY5 My44Njg3MDZdIFZCVVMgb24KPj4+Pj4gWyAgNjkzLjg2ODcxM10gc3RhdGUgY2hhbmdlIFNSQ19I QVJEX1JFU0VUX1ZCVVNfT04gLT4gU1JDX1NUQVJUVVAKPj4+Pj4gWyAgNjkzLjg2ODc0Ml0gQU1T IFBPV0VSX05FR09USUFUSU9OIHN0YXJ0Cj4+Pj4+IFsgIDY5My44Njg3NDldIGNjOj00Cj4+Pj4+ IFsgIDY5NC4xMDE0MjJdIHN0YXRlIGNoYW5nZSBTUkNfU1RBUlRVUCAtPiBBTVNfU1RBUlQgaW4g QU1TIFBPV0VSX05FR09USUFUSU9OCj4+Pj4+IFsgIDY5NC4xMDE0MjVdIHN0YXRlIGNoYW5nZSBB TVNfU1RBUlQgLT4gU1JDX1NFTkRfQ0FQQUJJTElUSUVTIGluIEFNUyBQT1dFUl9ORUdPVElBVElP Tgo+Pj4+PiBbICA2OTQuMTAxNDI4XSBQRCBUWCwgaGVhZGVyOiAweDExYTEKPj4+Pj4gWyAgNjk0 LjIwNTMwMV0gcGVuZGluZyBzdGF0ZSBjaGFuZ2UgU1JDX1NFTkRfQ0FQQUJJTElUSUVTIC0+IFNS Q19TRU5EX0NBUEFCSUxJVElFUyBAIDE1MCBtcyBpbiBBTVMgUE9XRVJfTkVHT1RJQVRJT04KPj4+ Pj4gWyAgNjk0LjIwNTMxN10gQ0MxOiAyIC0+IDIsIENDMjogMSAtPiAxIFtzdGF0ZSBTUkNfU0VO RF9DQVBBQklMSVRJRVMsIHBvbGFyaXR5IDAsIGNvbm5lY3RlZF0KPj4+Pj4gWyAgNjk0LjMyNTgw OF0gUmVjZWl2ZWQgaGFyZCByZXNldAo+Pj4+PiBbICA2OTQuMzI1ODE2XSBzdGF0ZSBjaGFuZ2Ug U1JDX1NFTkRfQ0FQQUJJTElUSUVTIC0+IEhBUkRfUkVTRVRfU1RBUlQgaW4gQU1TIE5PTkVfQU1T Cj4+Pj4+IFsgIDY5NC4zMjkyMDhdIHBlbmRpbmcgc3RhdGUgY2hhbmdlIEhBUkRfUkVTRVRfU1RB UlQgLT4gU1JDX0hBUkRfUkVTRVRfVkJVU19PRkYgQCAzMCBtcyBpbiBBTVMgTk9ORV9BTVMKPj4+ Pj4gWyAgNjk0LjM1OTM5NF0gc3RhdGUgY2hhbmdlIEhBUkRfUkVTRVRfU1RBUlQgLT4gU1JDX0hB UkRfUkVTRVRfVkJVU19PRkYgW2RlbGF5ZWQgMzAgbXNdCj4+Pj4+IFsgIDY5NC4zNTk0MDFdIHZj b25uOj0xCj4+Pj4+IFsgIDY5NC4zNTk0MDhdIHZidXM6PTAgY2hhcmdlPTAKPj4+Pj4gWyAgNjk0 LjM2NjMyMV0gUmVxdWVzdGluZyBtdXggc3RhdGUgMSwgdXNiLXJvbGUgMSwgb3JpZW50YXRpb24g MQo+Pj4+PiBbICA2OTQuMzY3Njg1XSBwZW5kaW5nIHN0YXRlIGNoYW5nZSBTUkNfSEFSRF9SRVNF VF9WQlVTX09GRiAtPiBTUkNfSEFSRF9SRVNFVF9WQlVTX09OIEAgNzYwIG1zIGluIEFNUyBOT05F X0FNUwo+Pj4+PiBbICA2OTQuMzY3NzAwXSBWQlVTIG9mZgo+Pj4+PiBbICA2OTQuMzY3NzA0XSBz dGF0ZSBjaGFuZ2UgU1JDX0hBUkRfUkVTRVRfVkJVU19PRkYgLT4gU1JDX0hBUkRfUkVTRVRfVkJV U19PTiBpbiBBTVMgTk9ORV9BTVMKPj4+Pj4gWyAgNjk0LjM2NzcyMV0gdmJ1czo9MSBjaGFyZ2U9 MAo+Pj4+PiBbICA2OTQuMzc0MTc1XSBwZW5kaW5nIHN0YXRlIGNoYW5nZSBTUkNfSEFSRF9SRVNF VF9WQlVTX09OIC0+IFNSQ19VTkFUVEFDSEVEIEAgNDgwIG1zIGluIEFNUyBOT05FX0FNUwo+Pj4+ PiBbICA2OTQuMzc0MTk0XSBDQzE6IDIgLT4gMCwgQ0MyOiAxIC0+IDAgW3N0YXRlIFNSQ19IQVJE X1JFU0VUX1ZCVVNfT04sIHBvbGFyaXR5IDAsIGRpc2Nvbm5lY3RlZF0KPj4+Pj4gWyAgNjk0LjM3 NDIwMV0gc3RhdGUgY2hhbmdlIFNSQ19IQVJEX1JFU0VUX1ZCVVNfT04gLT4gU1JDX1VOQVRUQUNI RUQgaW4gQU1TIE5PTkVfQU1TCj4+Pj4+IFsgIDY5NC42MzE5NTddIFN0YXJ0IERSUCB0b2dnbGlu Zwo+IAo+IHRoYW5rcywKPgo= 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=-5.9 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 23E3FC10F0E for ; Tue, 9 Apr 2019 14:41:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D519820883 for ; Tue, 9 Apr 2019 14:41:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726496AbfDIOlR (ORCPT ); Tue, 9 Apr 2019 10:41:17 -0400 Received: from mail-wr1-f68.google.com ([209.85.221.68]:34681 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726035AbfDIOlR (ORCPT ); Tue, 9 Apr 2019 10:41:17 -0400 Received: by mail-wr1-f68.google.com with SMTP id p10so21290220wrq.1 for ; Tue, 09 Apr 2019 07:41:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=PGwHiTy3w6TTvN4tiJzIGEvDD3LckMpwND5QTpBxOgY=; b=VmfwV5uO4E4T7Fc7AXa2U/PmYndsZcijHS7OsWQPT/jM61tKrgz3F5TkDZnuIE+VaQ fD0Il+R3z2h0/aofhj9UCJRuAE7FPg0BVccmaMZ/qPz3f49xF6MY9fCsg42GYEFJRe+4 d8idI11SfB+9yCtDxgcQUnYS2JCw0mFY6J9EA0XwyFOjLoAWO9n6fi8gh4cNCJmG6uQk p7X/vvx8LtHa2C14vAp1veaQrZ+eMKmEi3PTpQGBa8wLXU7xAqjPGcznARuLwIY3i/uu /SEOpfSLM+nM1fNNeKXKgZ5k70B8XOhS6+s0XrH7Q/eblRKlFgYDqkhNdxf42EhdBZcu 8flQ== X-Gm-Message-State: APjAAAW5PGfyMdD/kSQCygAN4qDb+TdX//Gpq9GVaJwETzMKE80cKdGu Zap4rOE7g1gpDzManBYwHWJzDg== X-Google-Smtp-Source: APXvYqwULSnz4QRriK6GpjwcQqKR1e6ooTk04kX1se5ft/VEVTQ0bs02E/g13TngNaSd/UzW59Kb+g== X-Received: by 2002:a5d:46c9:: with SMTP id g9mr21788211wrs.211.1554820874270; Tue, 09 Apr 2019 07:41:14 -0700 (PDT) Received: from shalem.localdomain (84-106-84-65.cable.dynamic.v4.ziggo.nl. [84.106.84.65]) by smtp.gmail.com with ESMTPSA id g12sm32263895wrw.40.2019.04.09.07.41.12 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128); Tue, 09 Apr 2019 07:41:13 -0700 (PDT) Subject: Re: [PATCH v2] usb: typec: tcpm: collision avoidance To: Heikki Krogerus , Kyle Tso , Adam Thomson Cc: Guenter Roeck , Greg KH , Badhri Jagan Sridharan , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org References: <20190322121745.159768-1-kyletso@google.com> <20190404141345.GF21319@kuha.fi.intel.com> <08a6d422-e8f7-303e-7bf1-952344f2c182@roeck-us.net> <20190409130230.GC20058@kuha.fi.intel.com> <20190409130649.GD20058@kuha.fi.intel.com> From: Hans de Goede Message-ID: <9c9d17e3-bd99-c877-359c-a0a1b10a8d73@redhat.com> Date: Tue, 9 Apr 2019 16:41:12 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <20190409130649.GD20058@kuha.fi.intel.com> Content-Type: text/plain; charset="UTF-8"; format="flowed" Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org Message-ID: <20190409144112.M2Yp-wk4m--kBqRRWnZBN_-r-XNC6-nS5lwVfShzOnE@z> Hi, On 09-04-19 15:06, Heikki Krogerus wrote: > On Tue, Apr 09, 2019 at 04:02:30PM +0300, Heikki Krogerus wrote: >> +Hans >> >> On Mon, Apr 08, 2019 at 10:17:35PM +0800, Kyle Tso wrote: >>> On Fri, Apr 5, 2019 at 9:42 PM Guenter Roeck wrote: >>>> >>>> On 4/4/19 7:13 AM, Heikki Krogerus wrote: >>>>> Hi, >>>>> >>>>> On Fri, Mar 22, 2019 at 08:17:45PM +0800, Kyle Tso wrote: >>>>>> This patch provides the implementation of Collision Avoidance introduced >>>>>> in PD3.0. The start of each Atomic Message Sequence (AMS) initiated by >>>>>> the port will be denied if the current AMS is not interruptible. The >>>>>> Source port will set the CC to SinkTxNG if it is going to initiate an >>>>>> AMS, and SinkTxOk otherwise. Meanwhile, any AMS initiated by a Sink port >>>>>> will be denied in TCPM if the port partner (Source) sets SinkTxNG except >>>>>> for HARD_RESET and SOFT_RESET. >>>>> >>>>> I tested this with my GDBWin which has fusb302. When I plug-in >>>>> DisplayPort adapter, the partner device never gets registered, and I >>>>> see steady flow of warnings from fusb302: >>>>> >>>> >>>> FWIW, I made multiple attempts to review the patch. Each time I get stuck >>>> after a while and notice that I don't understand what is going on. >>>> >>>> Maybe the state machine needs a complete overhaul. It seems to have reached >>>> a point where it is getting too complex to understand what is going on. >>>> >>>>> [ 693.391176] Vconn is on during toggle start >>>>> [ 693.391250] WARNING: CPU: 2 PID: 30 at drivers/usb/typec/tcpm/fusb302.c:562 fusb302_set_toggling+0x129/0x130 [fusb302] >>>>> [ 693.400293] Modules linked in: intel_xhci_usb_role_switch fusb302 tcpm roles pi3usb30532 i915 typec intel_gtt intel_cht_int33fe >>>>> [ 693.406309] CPU: 2 PID: 30 Comm: kworker/u8:1 Tainted: G W 5.1.0-rc3-heikki+ #17 >>>>> [ 693.408434] cht_wcove_pwrsrc cht_wcove_pwrsrc: Could not detect charger type >>>>> [ 693.412278] Hardware name: Default string Default string/Default string, BIOS 5.11 05/25/2017 >>>>> [ 693.412283] Workqueue: i2c-fusb302 tcpm_state_machine_work [tcpm] >>>>> [ 693.424256] RIP: 0010:fusb302_set_toggling+0x129/0x130 [fusb302] >>>>> [ 693.427234] Code: 89 df e8 da ef ff ff 85 c0 78 c6 c6 83 b0 01 00 00 00 eb b7 b9 02 00 00 00 e9 48 ff ff ff 48 c7 c7 20 e8 21 a0 e8 8e 0c e4 e0 <0f> 0b e9 58 ff ff ff 41 55 4c 8d 6f e8 41 54 41 89 f4 55 53 48 8d >>>>> [ 693.436204] RSP: 0000:ffffc9000076bd90 EFLAGS: 00010286 >>>>> [ 693.439174] RAX: 0000000000000000 RBX: ffff888178080028 RCX: 0000000000000000 >>>>> [ 693.442157] RDX: 000000000000001f RSI: ffffffff8259051f RDI: ffffffff8259091f >>>>> [ 693.445130] RBP: 0000000000000003 R08: ffffffff82590500 R09: 00000000000202c0 >>>>> [ 693.448100] R10: 0000010cb24a3d18 R11: 000000000000001e R12: ffff8881780801b0 >>>>> [ 693.451086] R13: ffffffffa021e4e5 R14: 0000000000000003 R15: ffff888178080040 >>>>> [ 693.454060] FS: 0000000000000000(0000) GS:ffff88817bb00000(0000) knlGS:0000000000000000 >>>>> [ 693.460009] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 >>>>> [ 693.462984] CR2: 00000000f7fb74a0 CR3: 000000000200d000 CR4: 00000000001006e0 >>>>> [ 693.465969] Call Trace: >>>>> [ 693.468937] tcpm_set_cc+0xb9/0x170 [fusb302] >>>>> [ 693.471894] tcpm_ams_start+0x1b8/0x2a0 [tcpm] >>>> >>>> tcpm_ams_start() sets TYPEC_CC_RP_1_5 unconditionally, no matter what. This causes >>>> the fusb302 code to start toggling. As such, it may well attempt to start toggling >>>> in the wrong state. >>>> >>>> Guenter >>>> >>> >>> I read the fusb302 spec but failed to find the statement that says it >>> should "set toggling" when CC switches among default/medium/high. >>> >>> quot from fusb302 spec: >>> "The FUSB302 allows the host software to change the charging current >>> capabilities of the port through the HOST_CUR control bits. If the >>> HOST_CUR bits are changed prior to attach, the FUSB302 automatically >>> indicates the programmed current capability when a device is attached. >>> If the current capabilities are changed after a device is attached, >>> the FUSB302 immediately changes the CC line to the programmed >>> capability." >>> >>> Is it possible to skip fusb302_set_toggling() @ line#658 if >>> tcpm_set_cc() is called in order to switch the cc among >>> default/medium/high of Rp ? > > Hans, you introduced that in commit daf81d0137a9c ("usb: typec: > fusb302: Refactor / simplify tcpm_set_cc()"), so could you take a look > at this. I do not believe that that commit introduces the fusb302_set_toggling() as the subject of the commit says it just refactors things, the set_toggling call was introduced by: commit ea3b4d5523bc8("usb: typec: fusb302: Resolve fixed power role contract setup") Before that: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/usb/typec/tcpm/fusb302.c?id=40326e857c57a0095d3f9d72c14cb13aef4ca564 tcpm_set_cc actually turned toggling off in all cases. I've no doubt that Adam was seeing a real problem, but I've doubted if this was the right fix before. I even had it reverted in my tree for a while, but since in my use-cases so far it has not caused any problems I've not looked into it further. In the mean time the code has changed quite a bit though, so making tcpm_set_cc() behave as it did before, see: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/usb/typec/tcpm/fusb302.c?id=40326e857c57a0095d3f9d72c14cb13aef4ca564 Will require writing something from scratch based on the new code which mimicks the behaviour of the old code; and then we also need to fix Adam's problem on top. Regards, Hans > >>> the tcpm log on another PD controller: >>> [ 1215.709538] CC1: 0 -> 2, CC2: 0 -> 1 [state DRP_TOGGLING, polarity >>> 0, connected] >>> [ 1215.709551] state change DRP_TOGGLING -> SRC_ATTACH_WAIT >>> [ 1215.709576] pending state change SRC_ATTACH_WAIT -> SRC_ATTACHED @ >>> 200 ms >>> [ 1215.907465] state change SRC_ATTACH_WAIT -> SRC_ATTACHED [delayed >>> 200 ms] >>> [ 1215.907670] polarity 0 >>> [ 1215.908070] Requesting mux state 1, usb-role 1, orientation 1 >>> [ 1215.909342] vconn:=1 >>> [ 1215.909549] vbus:=1 charge=0 >>> [ 1215.909633] Setting pd capable false >>> [ 1215.909637] pending state change SRC_ATTACHED -> SRC_UNATTACHED @ >>> 480 ms >>> [ 1215.909685] VBUS on >>> [ 1215.909687] state change SRC_ATTACHED -> SRC_STARTUP >>> [ 1215.914263] AMS POWER_NEGOTIATION start >>> [ 1215.914267] cc:=4 >>> [ 1215.914288] state change SRC_STARTUP -> AMS_START in AMS POWER_NEGOTIATION >>> [ 1215.914294] state change AMS_START -> SRC_SEND_CAPABILITIES in AMS >>> POWER_NEGOTIATION >>> [ 1215.914298] PD TX, header: 0x11a1 >>> [ 1215.919552] PD TX complete, status: 2 >>> [ 1215.919577] pending state change SRC_SEND_CAPABILITIES -> >>> SRC_SEND_CAPABILITIES @ 150 ms in AMS POWER_NEGOTIATION >>> [ 1216.071041] state change SRC_SEND_CAPABILITIES -> >>> SRC_SEND_CAPABILITIES [delayed 150 ms] >>> [ 1216.071049] PD TX, header: 0x11a1 >>> [ 1216.072508] PD TX complete, status: 0 >>> [ 1216.072535] Setting pd capable true >>> [ 1216.072645] pending state change SRC_SEND_CAPABILITIES -> >>> HARD_RESET_SEND @ 150 ms in AMS POWER_NEGOTIATION >>> [ 1216.073915] PD RX, header: 0x1042 [1] >>> [ 1216.073920] state change SRC_SEND_CAPABILITIES -> SRC_NEGOTIATE_CAPABILITIES >>> [ 1216.073941] Requested 5000 mV, 900 mA for 900 / 900 mA >>> [ 1216.073944] PD TX, header: 0x363 >>> [ 1216.075281] PD TX complete, status: 0 >>> [ 1216.075337] pending state change SRC_NEGOTIATE_CAPABILITIES -> >>> SRC_TRANSITION_SUPPLY @ 35 ms >>> [ 1216.113742] state change SRC_NEGOTIATE_CAPABILITIES -> >>> SRC_TRANSITION_SUPPLY [delayed 35 ms] >>> [ 1216.113752] PD TX, header: 0x566 >>> [ 1216.116743] PD TX complete, status: 0 >>> [ 1216.117175] state change SRC_TRANSITION_SUPPLY -> SRC_READY >>> [ 1216.118737] PD TX, header: 0x176f >>> [ 1216.120285] PD TX complete, status: 0 >>> [ 1216.122455] PD RX, header: 0x524f [1] >>> [ 1216.122463] Rx VDM cmd 0xff008041 type 1 cmd 1 len 5 >>> [ 1216.122511] Identity: 04b4:1120.0000 >>> [ 1216.122531] PD TX, header: 0x196f >>> [ 1216.123965] PD TX complete, status: 0 >>> [ 1216.125573] PD RX, header: 0x244f [1] >>> [ 1216.125578] Rx VDM cmd 0xff008042 type 1 cmd 2 len 2 >>> [ 1216.125581] SVID 1: 0xff01 >>> [ 1216.125603] PD TX, header: 0x1b6f >>> [ 1216.127074] PD TX complete, status: 0 >>> [ 1216.128750] PD RX, header: 0x264f [1] >>> [ 1216.128754] Rx VDM cmd 0xff018043 type 1 cmd 3 len 2 >>> [ 1216.128758] Alternate mode 0: SVID 0xff01, VDO 1: 0x00000405 >>> >>>>> [ 693.474855] ? _cond_resched+0x10/0x20 >>>>> [ 693.477807] tcpm_state_machine_work+0x57e/0x28f6 [tcpm] >>>>> [ 693.480776] ? tcpm_pd_event_handler+0x111/0x320 [tcpm] >>>>> [ 693.483743] process_one_work+0x1da/0x410 >>>>> [ 693.486703] worker_thread+0x28/0x3c0 >>>>> [ 693.489651] ? process_one_work+0x410/0x410 >>>>> [ 693.492603] kthread+0x10b/0x130 >>>>> [ 693.495548] ? kthread_create_on_node+0x60/0x60 >>>>> [ 693.498506] ret_from_fork+0x1f/0x30 >>>>> >>>>> >>>>> Here's the tcpm debugfs log: >>>>> >>>>> [ 692.553000] CC1: 0 -> 2, CC2: 0 -> 1 [state DRP_TOGGLING, polarity 0, connected] >>>>> [ 692.553016] state change DRP_TOGGLING -> SRC_ATTACH_WAIT >>>>> [ 692.553056] pending state change SRC_ATTACH_WAIT -> SNK_TRY @ 200 ms >>>>> [ 692.757402] state change SRC_ATTACH_WAIT -> SNK_TRY [delayed 200 ms] >>>>> [ 692.757410] cc:=2 >>>>> [ 692.761946] pending state change SNK_TRY -> SNK_TRY_WAIT @ 100 ms >>>>> [ 692.869308] state change SNK_TRY -> SNK_TRY_WAIT [delayed 100 ms] >>>>> [ 692.869313] state change SNK_TRY_WAIT -> SRC_TRYWAIT >>>>> [ 692.869317] cc:=3 >>>>> [ 692.873657] pending state change SRC_TRYWAIT -> SRC_TRYWAIT_UNATTACHED @ 100 ms >>>>> [ 692.882524] CC1: 2 -> 2, CC2: 1 -> 1 [state SRC_TRYWAIT, polarity 0, connected] >>>>> [ 692.882537] state change SRC_TRYWAIT -> SRC_TRYWAIT_DEBOUNCE >>>>> [ 692.882567] pending state change SRC_TRYWAIT_DEBOUNCE -> SRC_ATTACHED @ 200 ms >>>>> [ 693.085337] state change SRC_TRYWAIT_DEBOUNCE -> SRC_ATTACHED [delayed 200 ms] >>>>> [ 693.085347] polarity 0 >>>>> [ 693.085352] Requesting mux state 1, usb-role 1, orientation 1 >>>>> [ 693.346845] vconn:=1 >>>>> [ 693.347174] vbus:=1 charge=0 >>>>> [ 693.358340] pending state change SRC_ATTACHED -> SRC_UNATTACHED @ 480 ms >>>>> [ 693.378702] VBUS on >>>>> [ 693.378711] state change SRC_ATTACHED -> SRC_STARTUP >>>>> [ 693.378741] AMS POWER_NEGOTIATION start >>>>> [ 693.378745] cc:=4 >>>>> [ 693.505321] state change SRC_STARTUP -> AMS_START in AMS POWER_NEGOTIATION >>>>> [ 693.505325] state change AMS_START -> SRC_SEND_CAPABILITIES in AMS POWER_NEGOTIATION >>>>> [ 693.505327] PD TX, header: 0x11a1 >>>>> [ 693.613296] pending state change SRC_SEND_CAPABILITIES -> SRC_SEND_CAPABILITIES @ 150 ms in AMS POWER_NEGOTIATION >>>>> [ 693.613309] CC1: 2 -> 2, CC2: 1 -> 1 [state SRC_SEND_CAPABILITIES, polarity 0, connected] >>>>> [ 693.765730] state change SRC_SEND_CAPABILITIES -> SRC_SEND_CAPABILITIES [delayed 150 ms] >>>>> [ 693.765753] PD TX, header: 0x11a1 >>>>> [ 693.770016] PD TX complete, status: 0 >>>>> [ 693.770261] pending state change SRC_SEND_CAPABILITIES -> SRC_SEND_CAPABILITIES_TIMEOUT @ 150 ms in AMS POWER_NEGOTIATION >>>>> [ 693.775178] PD RX, header: 0x1042 [1] >>>>> [ 693.775195] state change SRC_SEND_CAPABILITIES -> SRC_NEGOTIATE_CAPABILITIES >>>>> [ 693.775236] Requested 5000 mV, 400 mA for 400 / 900 mA >>>>> [ 693.775244] PD TX, header: 0x363 >>>>> [ 693.778253] PD TX complete, status: 0 >>>>> [ 693.778363] pending state change SRC_NEGOTIATE_CAPABILITIES -> SRC_TRANSITION_SUPPLY @ 35 ms >>>>> [ 693.803463] Received hard reset >>>>> [ 693.803473] state change SRC_NEGOTIATE_CAPABILITIES -> HARD_RESET_START >>>>> [ 693.806323] pending state change HARD_RESET_START -> SRC_HARD_RESET_VBUS_OFF @ 30 ms >>>>> [ 693.837400] state change HARD_RESET_START -> SRC_HARD_RESET_VBUS_OFF [delayed 30 ms] >>>>> [ 693.837414] vconn:=1 >>>>> [ 693.837426] vbus:=0 charge=0 >>>>> [ 693.843380] Requesting mux state 1, usb-role 1, orientation 1 >>>>> [ 693.844554] pending state change SRC_HARD_RESET_VBUS_OFF -> SRC_HARD_RESET_VBUS_ON @ 760 ms >>>>> [ 693.844575] VBUS off >>>>> [ 693.844580] state change SRC_HARD_RESET_VBUS_OFF -> SRC_HARD_RESET_VBUS_ON >>>>> [ 693.844617] vbus:=1 charge=0 >>>>> [ 693.850688] pending state change SRC_HARD_RESET_VBUS_ON -> SRC_UNATTACHED @ 480 ms >>>>> [ 693.868706] VBUS on >>>>> [ 693.868713] state change SRC_HARD_RESET_VBUS_ON -> SRC_STARTUP >>>>> [ 693.868742] AMS POWER_NEGOTIATION start >>>>> [ 693.868749] cc:=4 >>>>> [ 694.101422] state change SRC_STARTUP -> AMS_START in AMS POWER_NEGOTIATION >>>>> [ 694.101425] state change AMS_START -> SRC_SEND_CAPABILITIES in AMS POWER_NEGOTIATION >>>>> [ 694.101428] PD TX, header: 0x11a1 >>>>> [ 694.205301] pending state change SRC_SEND_CAPABILITIES -> SRC_SEND_CAPABILITIES @ 150 ms in AMS POWER_NEGOTIATION >>>>> [ 694.205317] CC1: 2 -> 2, CC2: 1 -> 1 [state SRC_SEND_CAPABILITIES, polarity 0, connected] >>>>> [ 694.325808] Received hard reset >>>>> [ 694.325816] state change SRC_SEND_CAPABILITIES -> HARD_RESET_START in AMS NONE_AMS >>>>> [ 694.329208] pending state change HARD_RESET_START -> SRC_HARD_RESET_VBUS_OFF @ 30 ms in AMS NONE_AMS >>>>> [ 694.359394] state change HARD_RESET_START -> SRC_HARD_RESET_VBUS_OFF [delayed 30 ms] >>>>> [ 694.359401] vconn:=1 >>>>> [ 694.359408] vbus:=0 charge=0 >>>>> [ 694.366321] Requesting mux state 1, usb-role 1, orientation 1 >>>>> [ 694.367685] pending state change SRC_HARD_RESET_VBUS_OFF -> SRC_HARD_RESET_VBUS_ON @ 760 ms in AMS NONE_AMS >>>>> [ 694.367700] VBUS off >>>>> [ 694.367704] state change SRC_HARD_RESET_VBUS_OFF -> SRC_HARD_RESET_VBUS_ON in AMS NONE_AMS >>>>> [ 694.367721] vbus:=1 charge=0 >>>>> [ 694.374175] pending state change SRC_HARD_RESET_VBUS_ON -> SRC_UNATTACHED @ 480 ms in AMS NONE_AMS >>>>> [ 694.374194] CC1: 2 -> 0, CC2: 1 -> 0 [state SRC_HARD_RESET_VBUS_ON, polarity 0, disconnected] >>>>> [ 694.374201] state change SRC_HARD_RESET_VBUS_ON -> SRC_UNATTACHED in AMS NONE_AMS >>>>> [ 694.631957] Start DRP toggling > > thanks, >