Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp3693624pxb; Sun, 7 Feb 2021 19:32:02 -0800 (PST) X-Google-Smtp-Source: ABdhPJxYpnYZMVsuYUotT0mzfYJ5iJdn/1u2c0+gVz+PMPf3GuYAJkuQZEx0JHbmsslUMuzqc5st X-Received: by 2002:a17:906:7cb:: with SMTP id m11mr15474861ejc.332.1612755121782; Sun, 07 Feb 2021 19:32:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612755121; cv=none; d=google.com; s=arc-20160816; b=OKxHCUqK9SCQa1RR8EnRNgB99VfVIpew1ULdwWNcWWN4L+Eyb5DegkuubEuRz7YXgb k8uv9sxF+J0ULM2BKfRWOUzmbKEu2tGbLqxI9608WAM9rhcQauZbi6sgYbVZD5uw8OK/ 4SFc1muynj5CA8pKA2C5208HezDyvKzf7GifWc/tlPXrm3NPHcTMAKH+/mAf6x2uvtUB m0VgZY3TqtYF7rdPEERiv559cZ7c2SKhHJtCViLihj5pSp+ejzk/lW90FUpVRGxsfgJt xUKigzIvCgQPceusV7F+j+stxBmPDjyRgqTUbivifvMknflfpf/WdOg9ClhPqVb3vsBV mEGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=otDZcf8p5zDO/nHfZI+s+R78B9JMRJ14nEAg8JiJRcE=; b=Txri4oKLnD04OOyFP9sHlVVkl5mRr2vxGg2MoJlbzXsnb/BP3vRXnth7Zj1SxuZqvG F5/9Akf0Qz9norO46yQ10Lf6p0kh6eIMhW6G9IEPDm+KzFl1lbsDyKatrGRetekNgyyL EJaFo6q0IbFU+yNw/xbrLE+R61SKSBuzvylfHRkIq8qozLVJUwqAjo2x+Vkas4YBs2dv oJAcnqSgx+evFAhAmzFSOt/r7dQG/NJPeg+XPORC81WNWeUP/JNMr1xtrhcRT2RXoMOs 5j2VHibqSBRT00POJaLD/6FVMyneXFfGq/Jt+jPmwkLZrXB2zsOlmXfZZ0PDn8IqTR1Q S93w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=gUzj1Ad+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z8si972862edx.377.2021.02.07.19.31.25; Sun, 07 Feb 2021 19:32:01 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=gUzj1Ad+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229581AbhBHD23 (ORCPT + 99 others); Sun, 7 Feb 2021 22:28:29 -0500 Received: from Mailgw01.mediatek.com ([1.203.163.78]:12657 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S229537AbhBHD21 (ORCPT ); Sun, 7 Feb 2021 22:28:27 -0500 X-UUID: ef8265804836420583def01d15ced8d2-20210208 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID:Date:Subject:CC:To:From; bh=otDZcf8p5zDO/nHfZI+s+R78B9JMRJ14nEAg8JiJRcE=; b=gUzj1Ad+Wfvcl2MZT8kWt/f0cuToATkTE/qR2T7VkWGyJ7Pk4YeEFG1CCEhQkOtqTug5rZVDaEfU8dJAt0QorX6ECMASjOPUanOuM3tQRuAx7VZ7G6KR0s5+UOLumS9jibyjOxxZa4iI0Ct/zrwfen8etd24m0xoRu91QWW+I7I=; X-UUID: ef8265804836420583def01d15ced8d2-20210208 Received: from mtkcas32.mediatek.inc [(172.27.4.253)] by mailgw01.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 86906766; Mon, 08 Feb 2021 11:27:33 +0800 Received: from mtkcas10.mediatek.inc (172.21.101.39) by MTKMBS31N1.mediatek.inc (172.27.4.69) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 8 Feb 2021 11:27:25 +0800 Received: from mtkslt301.mediatek.inc (10.21.14.114) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 8 Feb 2021 11:27:24 +0800 From: Chunfeng Yun To: Ikjoon Jang CC: Chunfeng Yun , , , Tianping Fang , Yaqii Wu Subject: [RFC v4 PATCH] usb: xhci-mtk: improve bandwidth scheduling with TT Date: Mon, 8 Feb 2021 11:27:16 +0800 Message-ID: <20210208032716.20247-1-chunfeng.yun@mediatek.com> X-Mailer: git-send-email 2.18.0 MIME-Version: 1.0 Content-Type: text/plain X-TM-SNTS-SMTP: DACF80511D283FC03702EF5940D89001F2A8650EB8CB6C6433F2CBAD121F1A972000:8 X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org V2hlbiB0aGUgVVNCIGhlYWRzZXQgaXMgcGx1ZyBpbnRvIGFuIGV4dGVybmFsIGh1Yiwgc29tZXRp bWVzDQpjYW4ndCBzZXQgY29uZmlnIGR1ZSB0byBub3QgZW5vdWdoIGJhbmR3aWR0aCwgc28gbmVl ZCBpbXByb3ZlDQpMUy9GUyBJTlQvSVNPQyBiYW5kd2lkdGggc2NoZWR1bGluZyB3aXRoIFRULg0K DQpGaXhlczogMDhlNDY5ZGU4N2EyICgidXNiOiB4aGNpLW10azogc3VwcG9ydHMgYmFuZHdpZHRo IHNjaGVkdWxpbmcgd2l0aCBtdWx0aS1UVCIpDQpTaWduZWQtb2ZmLWJ5OiBZYXFpaSBXdSA8eWFx aWkud3VAbWVkaWF0ZWsuY29tPg0KU2lnbmVkLW9mZi1ieTogQ2h1bmZlbmcgWXVuIDxjaHVuZmVu Zy55dW5AbWVkaWF0ZWsuY29tPg0KLS0tDQogZHJpdmVycy91c2IvaG9zdC94aGNpLW10ay1zY2gu YyB8IDI3MCArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0KIGRyaXZlcnMvdXNiL2hv c3QveGhjaS1tdGsuaCAgICAgfCAgIDggKy0NCiAyIGZpbGVzIGNoYW5nZWQsIDIwMSBpbnNlcnRp b25zKCspLCA3NyBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qv eGhjaS1tdGstc2NoLmMgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktbXRrLXNjaC5jDQppbmRleCBi NDVlNWJmMDg5OTcuLmYzY2RmY2Y0ZTViZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qv eGhjaS1tdGstc2NoLmMNCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1tdGstc2NoLmMNCkBA IC0zMiw2ICszMiwzNSBAQA0KICNkZWZpbmUgRVBfQk9GRlNFVChwKQkoKHApICYgMHgzZmZmKQ0K ICNkZWZpbmUgRVBfQlJFUEVBVChwKQkoKChwKSAmIDB4N2ZmZikgPDwgMTYpDQogDQorZW51bSBt dGtfc2NoX2Vycl90eXBlIHsNCisJU0NIX1NVQ0NFU1MgPSAwLA0KKwlTQ0hfRVJSX1k2LA0KKwlT Q0hfU1NfT1ZFUkxBUCwNCisJU0NIX0NTX09WRVJGTE9XLA0KKwlTQ0hfQldfT1ZFUkZMT1csDQor CVNDSF9GSVhNRSwNCit9Ow0KKw0KK3N0YXRpYyBjaGFyICpzY2hfZXJyb3Jfc3RyaW5nKGVudW0g bXRrX3NjaF9lcnJfdHlwZSBlcnJvcikNCit7DQorCXN3aXRjaCAoZXJyb3IpIHsNCisJY2FzZSBT Q0hfU1VDQ0VTUzoNCisJCXJldHVybiAiU3VjY2VzcyI7DQorCWNhc2UgU0NIX0VSUl9ZNjoNCisJ CXJldHVybiAiQ2FuJ3Qgc2NoZWR1bGUgU3RhcnQtU3BsaXQgaW4gWTYiOw0KKwljYXNlIFNDSF9T U19PVkVSTEFQOg0KKwkJcmV0dXJuICJDYW4ndCBmaW5kIGEgc3VpdGFibGUgU3RhcnQtU3BsaXQg bG9jYXRpb24iOw0KKwljYXNlIFNDSF9DU19PVkVSRkxPVzoNCisJCXJldHVybiAiVGhlIGxhc3Qg Q29tcGxldGUtU3BsaXQgaXMgZ3JlYXRlciB0aGFuIDciOw0KKwljYXNlIFNDSF9CV19PVkVSRkxP VzoNCisJCXJldHVybiAiQmFuZHdpZHRoIGV4Y2VlZHMgdGhlIG1heCBsaW1pdCI7DQorCWNhc2Ug U0NIX0ZJWE1FOg0KKwkJcmV0dXJuICJGSVhNRSwgdG8gYmUgcmVzb2x2ZWQiOw0KKwlkZWZhdWx0 Og0KKwkJcmV0dXJuICJVbmtub3duIGVycm9yIHR5cGUiOw0KKwl9DQorfQ0KKw0KIHN0YXRpYyBp bnQgaXNfZnNfb3JfbHMoZW51bSB1c2JfZGV2aWNlX3NwZWVkIHNwZWVkKQ0KIHsNCiAJcmV0dXJu IHNwZWVkID09IFVTQl9TUEVFRF9GVUxMIHx8IHNwZWVkID09IFVTQl9TUEVFRF9MT1c7DQpAQCAt ODEsMTEgKzExMCwyMiBAQCBzdGF0aWMgdTMyIGdldF9lc2l0KHN0cnVjdCB4aGNpX2VwX2N0eCAq ZXBfY3R4KQ0KIAlyZXR1cm4gZXNpdDsNCiB9DQogDQorc3RhdGljIHUzMiBnZXRfYndfYm91bmRh cnkoZW51bSB1c2JfZGV2aWNlX3NwZWVkIHNwZWVkKQ0KK3sNCisJc3dpdGNoIChzcGVlZCkgew0K KwljYXNlIFVTQl9TUEVFRF9TVVBFUl9QTFVTOg0KKwkJcmV0dXJuIFNTUF9CV19CT1VOREFSWTsN CisJY2FzZSBVU0JfU1BFRURfU1VQRVI6DQorCQlyZXR1cm4gU1NfQldfQk9VTkRBUlk7DQorCWRl ZmF1bHQ6DQorCQlyZXR1cm4gSFNfQldfQk9VTkRBUlk7DQorCX0NCit9DQorDQogc3RhdGljIHN0 cnVjdCBtdTNoX3NjaF90dCAqZmluZF90dChzdHJ1Y3QgdXNiX2RldmljZSAqdWRldikNCiB7DQog CXN0cnVjdCB1c2JfdHQgKnV0dCA9IHVkZXYtPnR0Ow0KIAlzdHJ1Y3QgbXUzaF9zY2hfdHQgKnR0 LCAqKnR0X2luZGV4LCAqKnB0dDsNCi0JdW5zaWduZWQgaW50IHBvcnQ7DQogCWJvb2wgYWxsb2Nh dGVkX2luZGV4ID0gZmFsc2U7DQogDQogCWlmICghdXR0KQ0KQEAgLTEwNywxMCArMTQ3LDkgQEAg c3RhdGljIHN0cnVjdCBtdTNoX3NjaF90dCAqZmluZF90dChzdHJ1Y3QgdXNiX2RldmljZSAqdWRl dikNCiAJCQl1dHQtPmhjcHJpdiA9IHR0X2luZGV4Ow0KIAkJCWFsbG9jYXRlZF9pbmRleCA9IHRy dWU7DQogCQl9DQotCQlwb3J0ID0gdWRldi0+dHRwb3J0IC0gMTsNCi0JCXB0dCA9ICZ0dF9pbmRl eFtwb3J0XTsNCisNCisJCXB0dCA9ICZ0dF9pbmRleFt1ZGV2LT50dHBvcnQgLSAxXTsNCiAJfSBl bHNlIHsNCi0JCXBvcnQgPSAwOw0KIAkJcHR0ID0gKHN0cnVjdCBtdTNoX3NjaF90dCAqKikgJnV0 dC0+aGNwcml2Ow0KIAl9DQogDQpAQCAtMTI1LDggKzE2NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXUz aF9zY2hfdHQgKmZpbmRfdHQoc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYpDQogCQkJcmV0dXJuIEVS Ul9QVFIoLUVOT01FTSk7DQogCQl9DQogCQlJTklUX0xJU1RfSEVBRCgmdHQtPmVwX2xpc3QpOw0K LQkJdHQtPnVzYl90dCA9IHV0dDsNCi0JCXR0LT50dF9wb3J0ID0gcG9ydDsNCisNCiAJCSpwdHQg PSB0dDsNCiAJfQ0KIA0KQEAgLTIwNiw2ICsyNDQsMTUgQEAgc3RhdGljIHN0cnVjdCBtdTNoX3Nj aF9lcF9pbmZvICpjcmVhdGVfc2NoX2VwKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LA0KIAlyZXR1 cm4gc2NoX2VwOw0KIH0NCiANCitzdGF0aWMgdm9pZCBkZWxldGVfc2NoX2VwKHN0cnVjdCB1c2Jf ZGV2aWNlICp1ZGV2LCBzdHJ1Y3QgbXUzaF9zY2hfZXBfaW5mbyAqc2NoX2VwKQ0KK3sNCisJaWYg KHNjaF9lcC0+c2NoX3R0KQ0KKwkJZHJvcF90dCh1ZGV2KTsNCisNCisJbGlzdF9kZWwoJnNjaF9l cC0+ZW5kcG9pbnQpOw0KKwlrZnJlZShzY2hfZXApOw0KK30NCisNCiBzdGF0aWMgdm9pZCBzZXR1 cF9zY2hfaW5mbyhzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwNCiAJCXN0cnVjdCB4aGNpX2VwX2N0 eCAqZXBfY3R4LCBzdHJ1Y3QgbXUzaF9zY2hfZXBfaW5mbyAqc2NoX2VwKQ0KIHsNCkBAIC0zNzUs MjEgKzQyMiw1NSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfYnVzX2J3KHN0cnVjdCBtdTNoX3NjaF9i d19pbmZvICpzY2hfYncsDQogCQkJCQlzY2hfZXAtPmJ3X2J1ZGdldF90YWJsZVtqXTsNCiAJCX0N CiAJfQ0KLQlzY2hfZXAtPmFsbG9jYXRlZCA9IHVzZWQ7DQogfQ0KIA0KLXN0YXRpYyBpbnQgY2hl Y2tfc2NoX3R0KHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LA0KLQlzdHJ1Y3QgbXUzaF9zY2hfZXBf aW5mbyAqc2NoX2VwLCB1MzIgb2Zmc2V0KQ0KK3N0YXRpYyBpbnQgY2hlY2tfZnNfYnVzX2J3KHN0 cnVjdCBtdTNoX3NjaF9lcF9pbmZvICpzY2hfZXAsIGludCBvZmZzZXQpDQorew0KKwlzdHJ1Y3Qg bXUzaF9zY2hfdHQgKnR0ID0gc2NoX2VwLT5zY2hfdHQ7DQorCXUzMiBudW1fZXNpdCwgYmFzZTsN CisJdTMyIGksIGo7DQorCXUzMiB0bXA7DQorDQorCW51bV9lc2l0ID0gWEhDSV9NVEtfTUFYX0VT SVQgLyBzY2hfZXAtPmVzaXQ7DQorDQorCWZvciAoaSA9IDA7IGkgPCBudW1fZXNpdDsgaSsrKSB7 DQorCQliYXNlID0gb2Zmc2V0ICsgaSAqIHNjaF9lcC0+ZXNpdDsNCisNCisJCS8qDQorCQkgKiBD b21wYXJlZCB3aXRoIGhzIGJ1cywgbm8gbWF0dGVyIHdoYXQgZXAgdHlwZQ0KKwkJICogVGhlIGh1 YiB3aWxsIGFsd2F5cyBkZWxheSBvbmUgdWZyYW1lIHRvIHNlbmQNCisJCSAqIGRhdGEgZm9yIHVz LiBBcyBkZXNjcmliZWQgaW4gdGhlIGZpZ3VyZSBiZWxvdy4NCisJCSAqLw0KKwkJaWYgKHNjaF9l cC0+ZXBfdHlwZSA9PSBJU09DX09VVF9FUCkgew0KKwkJCWZvciAoaiA9IDA7IGogPCBzY2hfZXAt Pm51bV9idWRnZXRfbWljcm9mcmFtZXM7IGorKykgew0KKwkJCQl0bXAgPSB0dC0+ZnNfYnVzX2J3 W2Jhc2UgKyAxICsgal0NCisJCQkJCSsgc2NoX2VwLT5id19jb3N0X3Blcl9taWNyb2ZyYW1lOw0K Kw0KKwkJCQlpZiAodG1wID4gRlNfUEFZTE9BRF9NQVgpDQorCQkJCQlyZXR1cm4gU0NIX0JXX09W RVJGTE9XOw0KKwkJCX0NCisJCX0gZWxzZSB7DQorCQkJZm9yIChqID0gMDsgaiA8IHNjaF9lcC0+ Y3NfY291bnQ7IGorKykgew0KKwkJCQl0bXAgPSB0dC0+ZnNfYnVzX2J3W2Jhc2UgKyAxICsgal0N CisJCQkJCSsgc2NoX2VwLT5id19jb3N0X3Blcl9taWNyb2ZyYW1lOw0KKw0KKwkJCQlpZiAodG1w ID4gRlNfUEFZTE9BRF9NQVgpDQorCQkJCQlyZXR1cm4gU0NIX0JXX09WRVJGTE9XOw0KKwkJCX0N CisJCX0NCisJfQ0KKwlyZXR1cm4gU0NIX1NVQ0NFU1M7DQorfQ0KKw0KK3N0YXRpYyBpbnQgY2hl Y2tfc2NoX3R0KHN0cnVjdCBtdTNoX3NjaF9lcF9pbmZvICpzY2hfZXAsIGludCBvZmZzZXQpDQog ew0KIAlzdHJ1Y3QgbXUzaF9zY2hfdHQgKnR0ID0gc2NoX2VwLT5zY2hfdHQ7DQogCXUzMiBleHRy YV9jc19jb3VudDsNCi0JdTMyIGZzX2J1ZGdldF9zdGFydDsNCiAJdTMyIHN0YXJ0X3NzLCBsYXN0 X3NzOw0KIAl1MzIgc3RhcnRfY3MsIGxhc3RfY3M7DQotCWludCBpOw0KKwl1MzIgaTsNCiANCiAJ c3RhcnRfc3MgPSBvZmZzZXQgJSA4Ow0KLQlmc19idWRnZXRfc3RhcnQgPSAoc3RhcnRfc3MgKyAx KSAlIDg7DQogDQogCWlmIChzY2hfZXAtPmVwX3R5cGUgPT0gSVNPQ19PVVRfRVApIHsNCiAJCWxh c3Rfc3MgPSBzdGFydF9zcyArIHNjaF9lcC0+Y3NfY291bnQgLSAxOw0KQEAgLTM5OSwxMiArNDgw LDEyIEBAIHN0YXRpYyBpbnQgY2hlY2tfc2NoX3R0KHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LA0K IAkJICogbXVzdCBuZXZlciBzY2hlZHVsZSBTdGFydC1TcGxpdCBpbiBZNg0KIAkJICovDQogCQlp ZiAoIShzdGFydF9zcyA9PSA3IHx8IGxhc3Rfc3MgPCA2KSkNCi0JCQlyZXR1cm4gLUVSQU5HRTsN Ci0NCi0JCWZvciAoaSA9IDA7IGkgPCBzY2hfZXAtPmNzX2NvdW50OyBpKyspDQotCQkJaWYgKHRl c3RfYml0KG9mZnNldCArIGksIHR0LT5zcGxpdF9iaXRfbWFwKSkNCi0JCQkJcmV0dXJuIC1FUkFO R0U7DQorCQkJcmV0dXJuIFNDSF9FUlJfWTY7DQogDQorCQlmb3IgKGkgPSAwOyBpIDwgc2NoX2Vw LT5jc19jb3VudDsgaSsrKSB7DQorCQkJaWYgKHRlc3RfYml0KG9mZnNldCArIGksIHR0LT5zc19i aXRfbWFwKSkNCisJCQkJcmV0dXJuIFNDSF9TU19PVkVSTEFQOw0KKwkJfQ0KIAl9IGVsc2Ugew0K IAkJdTMyIGNzX2NvdW50ID0gRElWX1JPVU5EX1VQKHNjaF9lcC0+bWF4cGt0LCBGU19QQVlMT0FE X01BWCk7DQogDQpAQCAtNDEzLDI3ICs0OTQsMzYgQEAgc3RhdGljIGludCBjaGVja19zY2hfdHQo c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYsDQogCQkgKiBtdXN0IG5ldmVyIHNjaGVkdWxlIFN0YXJ0 LVNwbGl0IGluIFk2DQogCQkgKi8NCiAJCWlmIChzdGFydF9zcyA9PSA2KQ0KLQkJCXJldHVybiAt RVJBTkdFOw0KKwkJCXJldHVybiBTQ0hfRVJSX1k2Ow0KIA0KIAkJLyogb25lIHVmcmFtZSBmb3Ig c3MgKyBvbmUgdWZyYW1lIGZvciBpZGxlICovDQogCQlzdGFydF9jcyA9IChzdGFydF9zcyArIDIp ICUgODsNCiAJCWxhc3RfY3MgPSBzdGFydF9jcyArIGNzX2NvdW50IC0gMTsNCiANCiAJCWlmIChs YXN0X2NzID4gNykNCi0JCQlyZXR1cm4gLUVSQU5HRTsNCisJCQlyZXR1cm4gU0NIX0NTX09WRVJG TE9XOw0KIA0KKwkJLyoNCisJCSAqIHVzYl8yMCBzcGVjIHNlY3Rpb24xMS4xOCwgdGhlIGJvdHRv bSBvZiBwYWdlIDM3ODoNCisJCSAqIEZvciBpbnRlcnJ1cHQgZW5kcG9pbnRzLCB0aGUgbWF4aW11 bSBzaXplIG9mIHRoZSBMUy9GUw0KKwkJICogdHJhbnNhY3Rpb24gZ3VhcmFudGVlcyB0aGF0IGl0 IGNhbiBuZXZlciByZXF1aXJlIG1vcmUgdGhhbg0KKwkJICogdHdvIGNvbXBsZXRlLXNwbGl0IHRy YW5zYWN0aW9ucy4NCisJCSAqLw0KIAkJaWYgKHNjaF9lcC0+ZXBfdHlwZSA9PSBJU09DX0lOX0VQ KQ0KIAkJCWV4dHJhX2NzX2NvdW50ID0gKGxhc3RfY3MgPT0gNykgPyAxIDogMjsNCiAJCWVsc2Ug LyogIGVwX3R5cGUgOiBJTlRSIElOIC8gSU5UUiBPVVQgKi8NCi0JCQlleHRyYV9jc19jb3VudCA9 IChmc19idWRnZXRfc3RhcnQgPT0gNikgPyAxIDogMjsNCisJCQlleHRyYV9jc19jb3VudCA9IDE7 DQogDQogCQljc19jb3VudCArPSBleHRyYV9jc19jb3VudDsNCiAJCWlmIChjc19jb3VudCA+IDcp DQogCQkJY3NfY291bnQgPSA3OyAvKiBIVyBsaW1pdCAqLw0KIA0KLQkJZm9yIChpID0gMDsgaSA8 IGNzX2NvdW50ICsgMjsgaSsrKSB7DQotCQkJaWYgKHRlc3RfYml0KG9mZnNldCArIGksIHR0LT5z cGxpdF9iaXRfbWFwKSkNCi0JCQkJcmV0dXJuIC1FUkFOR0U7DQorCQlpZiAodGVzdF9iaXQob2Zm c2V0LCB0dC0+c3NfYml0X21hcCkpDQorCQkJcmV0dXJuIFNDSF9TU19PVkVSTEFQOw0KKw0KKwkJ aWYgKHNjaF9lcC0+ZXBfdHlwZSA9PSBJTlRfT1VUX0VQKSB7DQorCQkJaWYgKHRlc3RfYml0KG9m ZnNldCwgdHQtPmlkbGVfYml0X21hcCkpDQorCQkJCXJldHVybiBTQ0hfRklYTUU7DQogCQl9DQog DQogCQlzY2hfZXAtPmNzX2NvdW50ID0gY3NfY291bnQ7DQpAQCAtNDQ4LDQxICs1MzgsODggQEAg c3RhdGljIGludCBjaGVja19zY2hfdHQoc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYsDQogCQkJc2No X2VwLT5udW1fYnVkZ2V0X21pY3JvZnJhbWVzID0gc2NoX2VwLT5lc2l0Ow0KIAl9DQogDQotCXJl dHVybiAwOw0KKwlyZXR1cm4gY2hlY2tfZnNfYnVzX2J3KHNjaF9lcCwgb2Zmc2V0KTsNCiB9DQog DQotc3RhdGljIHZvaWQgdXBkYXRlX3NjaF90dChzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwNCi0J c3RydWN0IG11M2hfc2NoX2VwX2luZm8gKnNjaF9lcCkNCitzdGF0aWMgdm9pZCB1cGRhdGVfc2No X3R0KHN0cnVjdCBtdTNoX3NjaF9lcF9pbmZvICpzY2hfZXAsIGJvb2wgdXNlZCkNCiB7DQogCXN0 cnVjdCBtdTNoX3NjaF90dCAqdHQgPSBzY2hfZXAtPnNjaF90dDsNCiAJdTMyIGJhc2UsIG51bV9l c2l0Ow0KLQlpbnQgaSwgajsNCisJdTMyIGksIGo7DQogDQogCW51bV9lc2l0ID0gWEhDSV9NVEtf TUFYX0VTSVQgLyBzY2hfZXAtPmVzaXQ7DQorDQogCWZvciAoaSA9IDA7IGkgPCBudW1fZXNpdDsg aSsrKSB7DQogCQliYXNlID0gc2NoX2VwLT5vZmZzZXQgKyBpICogc2NoX2VwLT5lc2l0Ow0KLQkJ Zm9yIChqID0gMDsgaiA8IHNjaF9lcC0+bnVtX2J1ZGdldF9taWNyb2ZyYW1lczsgaisrKQ0KLQkJ CXNldF9iaXQoYmFzZSArIGosIHR0LT5zcGxpdF9iaXRfbWFwKTsNCisNCisJCWlmIChzY2hfZXAt PmVwX3R5cGUgPT0gSVNPQ19PVVRfRVApIHsNCisJCQlmb3IgKGogPSAwOyBqIDwgc2NoX2VwLT5u dW1fYnVkZ2V0X21pY3JvZnJhbWVzOyBqKyspIHsNCisJCQkJaWYgKHVzZWQpIHsNCisJCQkJCXNl dF9iaXQoYmFzZSArIGosIHR0LT5zc19iaXRfbWFwKTsNCisJCQkJCXR0LT5mc19idXNfYndbYmFz ZSArIDEgKyBqXSArPQ0KKwkJCQkJCXNjaF9lcC0+YndfY29zdF9wZXJfbWljcm9mcmFtZTsNCisJ CQkJfSBlbHNlIHsNCisJCQkJCWNsZWFyX2JpdChiYXNlICsgaiwgdHQtPnNzX2JpdF9tYXApOw0K KwkJCQkJdHQtPmZzX2J1c19id1tiYXNlICsgMSArIGpdIC09DQorCQkJCQkJc2NoX2VwLT5id19j b3N0X3Blcl9taWNyb2ZyYW1lOw0KKwkJCQl9DQorCQkJfQ0KKwkJfSBlbHNlIHsNCisJCQlpZiAo dXNlZCkNCisJCQkJc2V0X2JpdChiYXNlLCB0dC0+c3NfYml0X21hcCk7DQorCQkJZWxzZQ0KKwkJ CQljbGVhcl9iaXQoYmFzZSwgdHQtPnNzX2JpdF9tYXApOw0KKw0KKwkJCWlmIChzY2hfZXAtPmVw X3R5cGUgPT0gSU5UX09VVF9FUCkgew0KKwkJCQlpZiAodXNlZCkNCisJCQkJCXNldF9iaXQoYmFz ZSArIDEsIHR0LT5pZGxlX2JpdF9tYXApOw0KKwkJCQllbHNlDQorCQkJCQljbGVhcl9iaXQoYmFz ZSArIDEsIHR0LT5pZGxlX2JpdF9tYXApOw0KKwkJCX0NCisNCisJCQlmb3IgKGogPSAwOyBqIDwg c2NoX2VwLT5jc19jb3VudDsgaisrKSB7DQorCQkJCWlmICh1c2VkKQ0KKwkJCQkJdHQtPmZzX2J1 c19id1tiYXNlICsgMSArIGpdICs9DQorCQkJCQkJc2NoX2VwLT5id19jb3N0X3Blcl9taWNyb2Zy YW1lOw0KKwkJCQllbHNlDQorCQkJCQl0dC0+ZnNfYnVzX2J3W2Jhc2UgKyAxICsgal0gLT0NCisJ CQkJCQlzY2hfZXAtPmJ3X2Nvc3RfcGVyX21pY3JvZnJhbWU7DQorCQkJfQ0KKwkJfQ0KKwl9DQor fQ0KKw0KK3N0YXRpYyBpbnQgbG9hZF9lcF9idyhzdHJ1Y3QgbXUzaF9zY2hfYndfaW5mbyAqc2No X2J3LA0KKwkJICAgICAgc3RydWN0IG11M2hfc2NoX2VwX2luZm8gKnNjaF9lcCwgYm9vbCBsb2Fk ZWQpDQorew0KKwlzdHJ1Y3QgbXUzaF9zY2hfdHQgKnR0ID0gc2NoX2VwLT5zY2hfdHQ7DQorDQor CWlmIChzY2hfZXAtPnNjaF90dCkgew0KKwkJdXBkYXRlX3NjaF90dChzY2hfZXAsIGxvYWRlZCk7 DQorCQlpZiAobG9hZGVkKQ0KKwkJCWxpc3RfYWRkX3RhaWwoJnNjaF9lcC0+dHRfZW5kcG9pbnQs ICZ0dC0+ZXBfbGlzdCk7DQorCQllbHNlDQorCQkJbGlzdF9kZWwoJnNjaF9lcC0+dHRfZW5kcG9p bnQpOw0KIAl9DQogDQotCWxpc3RfYWRkX3RhaWwoJnNjaF9lcC0+dHRfZW5kcG9pbnQsICZ0dC0+ ZXBfbGlzdCk7DQorCS8qIHVwZGF0ZSBidXMgYmFuZHdpZHRoIGluZm8gKi8NCisJdXBkYXRlX2J1 c19idyhzY2hfYncsIHNjaF9lcCwgbG9hZGVkKTsNCisJc2NoX2VwLT5hbGxvY2F0ZWQgPSBsb2Fk ZWQ7DQorCXJldHVybiAwOw0KIH0NCiANCiBzdGF0aWMgaW50IGNoZWNrX3NjaF9idyhzdHJ1Y3Qg dXNiX2RldmljZSAqdWRldiwNCiAJc3RydWN0IG11M2hfc2NoX2J3X2luZm8gKnNjaF9idywgc3Ry dWN0IG11M2hfc2NoX2VwX2luZm8gKnNjaF9lcCkNCiB7DQogCXUzMiBvZmZzZXQ7DQotCXUzMiBl c2l0Ow0KIAl1MzIgbWluX2J3Ow0KIAl1MzIgbWluX2luZGV4Ow0KIAl1MzIgd29yc3RfYnc7DQog CXUzMiBid19ib3VuZGFyeTsNCisJdTMyIGJvdW5kYXJ5Ow0KIAl1MzIgbWluX251bV9idWRnZXQ7 DQogCXUzMiBtaW5fY3NfY291bnQ7DQotCWJvb2wgdHRfb2Zmc2V0X29rID0gZmFsc2U7DQotCWlu dCByZXQ7DQotDQotCWVzaXQgPSBzY2hfZXAtPmVzaXQ7DQorCWludCByZXQgPSAwOw0KIA0KIAkv Kg0KIAkgKiBTZWFyY2ggdGhyb3VnaCBhbGwgcG9zc2libGUgc2NoZWR1bGUgbWljcm9mcmFtZXMu DQpAQCAtNDkyLDE2ICs2MjksMjAgQEAgc3RhdGljIGludCBjaGVja19zY2hfYncoc3RydWN0IHVz Yl9kZXZpY2UgKnVkZXYsDQogCW1pbl9pbmRleCA9IDA7DQogCW1pbl9jc19jb3VudCA9IHNjaF9l cC0+Y3NfY291bnQ7DQogCW1pbl9udW1fYnVkZ2V0ID0gc2NoX2VwLT5udW1fYnVkZ2V0X21pY3Jv ZnJhbWVzOw0KLQlmb3IgKG9mZnNldCA9IDA7IG9mZnNldCA8IGVzaXQ7IG9mZnNldCsrKSB7DQot CQlpZiAoaXNfZnNfb3JfbHModWRldi0+c3BlZWQpKSB7DQotCQkJcmV0ID0gY2hlY2tfc2NoX3R0 KHVkZXYsIHNjaF9lcCwgb2Zmc2V0KTsNCi0JCQlpZiAocmV0KQ0KKw0KKwlpZiAoaXNfZnNfb3Jf bHModWRldi0+c3BlZWQpICYmIHNjaF9lcC0+ZXBfdHlwZSAhPSBJU09DX09VVF9FUCkNCisJCWJv dW5kYXJ5ID0gc2NoX2VwLT5lc2l0ICsgMTsNCisJZWxzZQ0KKwkJYm91bmRhcnkgPSBzY2hfZXAt PmVzaXQ7DQorDQorCWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgc2NoX2VwLT5lc2l0OyBvZmZz ZXQrKykgew0KKwkJaWYgKHNjaF9lcC0+c2NoX3R0KSB7DQorCQkJcmV0ID0gY2hlY2tfc2NoX3R0 KHNjaF9lcCwgb2Zmc2V0KTsNCisJCQlpZiAocmV0ICE9IFNDSF9TVUNDRVNTKQ0KIAkJCQljb250 aW51ZTsNCi0JCQllbHNlDQotCQkJCXR0X29mZnNldF9vayA9IHRydWU7DQogCQl9DQogDQotCQlp ZiAoKG9mZnNldCArIHNjaF9lcC0+bnVtX2J1ZGdldF9taWNyb2ZyYW1lcykgPiBzY2hfZXAtPmVz aXQpDQorCQlpZiAoKG9mZnNldCArIHNjaF9lcC0+bnVtX2J1ZGdldF9taWNyb2ZyYW1lcykgPiBi b3VuZGFyeSkNCiAJCQlicmVhazsNCiANCiAJCXdvcnN0X2J3ID0gZ2V0X21heF9idyhzY2hfYncs IHNjaF9lcCwgb2Zmc2V0KTsNCkBAIC01MTUsMzMgKzY1NiwyMiBAQCBzdGF0aWMgaW50IGNoZWNr X3NjaF9idyhzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwNCiAJCQlicmVhazsNCiAJfQ0KIA0KLQlp ZiAodWRldi0+c3BlZWQgPT0gVVNCX1NQRUVEX1NVUEVSX1BMVVMpDQotCQlid19ib3VuZGFyeSA9 IFNTUF9CV19CT1VOREFSWTsNCi0JZWxzZSBpZiAodWRldi0+c3BlZWQgPT0gVVNCX1NQRUVEX1NV UEVSKQ0KLQkJYndfYm91bmRhcnkgPSBTU19CV19CT1VOREFSWTsNCi0JZWxzZQ0KLQkJYndfYm91 bmRhcnkgPSBIU19CV19CT1VOREFSWTsNCi0NCisJYndfYm91bmRhcnkgPSBnZXRfYndfYm91bmRh cnkodWRldi0+c3BlZWQpOw0KIAkvKiBjaGVjayBiYW5kd2lkdGggKi8NCi0JaWYgKG1pbl9idyA+ IGJ3X2JvdW5kYXJ5KQ0KKwlpZiAobWluX2J3ID4gYndfYm91bmRhcnkpIHsNCisJCWlmIChyZXQp IHsNCisJCQlkZXZfZXJyKCZ1ZGV2LT5kZXYsICIlcyAlc1xuIiwgX19mdW5jX18sDQorCQkJCXNj aF9lcnJvcl9zdHJpbmcocmV0KSk7DQorCQkJcmV0dXJuIC1yZXQ7DQorCQl9DQorDQogCQlyZXR1 cm4gLUVSQU5HRTsNCisJfQ0KIA0KIAlzY2hfZXAtPm9mZnNldCA9IG1pbl9pbmRleDsNCiAJc2No X2VwLT5jc19jb3VudCA9IG1pbl9jc19jb3VudDsNCiAJc2NoX2VwLT5udW1fYnVkZ2V0X21pY3Jv ZnJhbWVzID0gbWluX251bV9idWRnZXQ7DQotDQotCWlmIChpc19mc19vcl9scyh1ZGV2LT5zcGVl ZCkpIHsNCi0JCS8qIGFsbCBvZmZzZXQgZm9yIHR0IGlzIG5vdCBvayovDQotCQlpZiAoIXR0X29m ZnNldF9vaykNCi0JCQlyZXR1cm4gLUVSQU5HRTsNCi0NCi0JCXVwZGF0ZV9zY2hfdHQodWRldiwg c2NoX2VwKTsNCi0JfQ0KLQ0KLQkvKiB1cGRhdGUgYnVzIGJhbmR3aWR0aCBpbmZvICovDQotCXVw ZGF0ZV9idXNfYncoc2NoX2J3LCBzY2hfZXAsIDEpOw0KLQ0KLQlyZXR1cm4gMDsNCisJcmV0dXJu IGxvYWRfZXBfYncoc2NoX2J3LCBzY2hfZXAsIHRydWUpOw0KIH0NCiANCiBzdGF0aWMgdm9pZCBk ZXN0cm95X3NjaF9lcChzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwNCkBAIC01NDksMjMgKzY3OSwx NyBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X3NjaF9lcChzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwN CiB7DQogCS8qIG9ubHkgcmVsZWFzZSBlcCBidyBjaGVjayBwYXNzZWQgYnkgY2hlY2tfc2NoX2J3 KCkgKi8NCiAJaWYgKHNjaF9lcC0+YWxsb2NhdGVkKQ0KLQkJdXBkYXRlX2J1c19idyhzY2hfYncs IHNjaF9lcCwgMCk7DQorCQlsb2FkX2VwX2J3KHNjaF9idywgc2NoX2VwLCBmYWxzZSk7DQogDQot CWxpc3RfZGVsKCZzY2hfZXAtPmVuZHBvaW50KTsNCi0NCi0JaWYgKHNjaF9lcC0+c2NoX3R0KSB7 DQotCQlsaXN0X2RlbCgmc2NoX2VwLT50dF9lbmRwb2ludCk7DQotCQlkcm9wX3R0KHVkZXYpOw0K LQl9DQotCWtmcmVlKHNjaF9lcCk7DQorCWRlbGV0ZV9zY2hfZXAodWRldiwgc2NoX2VwKTsNCiB9 DQogDQogc3RhdGljIGJvb2wgbmVlZF9id19zY2goc3RydWN0IHVzYl9ob3N0X2VuZHBvaW50ICpl cCwNCiAJZW51bSB1c2JfZGV2aWNlX3NwZWVkIHNwZWVkLCBpbnQgaGFzX3R0KQ0KIHsNCiAJLyog b25seSBmb3IgcGVyaW9kaWMgZW5kcG9pbnRzICovDQotCWlmICh1c2JfZW5kcG9pbnRfeGZlcl9j b250cm9sKCZlcC0+ZGVzYykNCi0JCXx8IHVzYl9lbmRwb2ludF94ZmVyX2J1bGsoJmVwLT5kZXNj KSkNCisJaWYgKHVzYl9lbmRwb2ludF94ZmVyX2NvbnRyb2woJmVwLT5kZXNjKSB8fA0KKwkgICAg dXNiX2VuZHBvaW50X3hmZXJfYnVsaygmZXAtPmRlc2MpKQ0KIAkJcmV0dXJuIGZhbHNlOw0KIA0K IAkvKg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1tdGsuaCBiL2RyaXZlcnMv dXNiL2hvc3QveGhjaS1tdGsuaA0KaW5kZXggY2JiMDlkZmVhNjJlLi44MWU5YjU2OTU4YzUgMTAw NjQ0DQotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktbXRrLmgNCisrKyBiL2RyaXZlcnMvdXNi L2hvc3QveGhjaS1tdGsuaA0KQEAgLTI2LDEwICsyNiwxMCBAQA0KICAqIEB0dF9wb3J0OiBUVCBw b3J0IG51bWJlcg0KICAqLw0KIHN0cnVjdCBtdTNoX3NjaF90dCB7DQotCURFQ0xBUkVfQklUTUFQ KHNwbGl0X2JpdF9tYXAsIFhIQ0lfTVRLX01BWF9FU0lUKTsNCisJREVDTEFSRV9CSVRNQVAoc3Nf Yml0X21hcCwgWEhDSV9NVEtfTUFYX0VTSVQpOw0KKwlERUNMQVJFX0JJVE1BUChpZGxlX2JpdF9t YXAsIFhIQ0lfTVRLX01BWF9FU0lUKTsNCisJdTMyIGZzX2J1c19id1tYSENJX01US19NQVhfRVNJ VCArIDFdOw0KIAlzdHJ1Y3QgbGlzdF9oZWFkIGVwX2xpc3Q7DQotCXN0cnVjdCB1c2JfdHQgKnVz Yl90dDsNCi0JaW50IHR0X3BvcnQ7DQogfTsNCiANCiAvKioNCkBAIC04NCw5ICs4NCw5IEBAIHN0 cnVjdCBtdTNoX3NjaF9lcF9pbmZvIHsNCiAJc3RydWN0IGxpc3RfaGVhZCBlbmRwb2ludDsNCiAJ c3RydWN0IGxpc3RfaGVhZCB0dF9lbmRwb2ludDsNCiAJc3RydWN0IG11M2hfc2NoX3R0ICpzY2hf dHQ7DQorCXN0cnVjdCB1c2JfaG9zdF9lbmRwb2ludCAqZXA7DQogCXUzMiBlcF90eXBlOw0KIAl1 MzIgbWF4cGt0Ow0KLQl2b2lkICplcDsNCiAJYm9vbCBhbGxvY2F0ZWQ7DQogCS8qDQogCSAqIG10 ayB4SENJIHNjaGVkdWxpbmcgaW5mb3JtYXRpb24gcHV0IGludG8gcmVzZXJ2ZWQgRFdzDQotLSAN CjIuMTguMA0K