From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Shevchenko Subject: [PATCH v1] ACPI: Switch to use generic UUID API Date: Thu, 4 May 2017 12:21:51 +0300 Message-ID: <20170504092151.88646-1-andriy.shevchenko@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: linux-acpi@vger.kernel.org, tpmdd-devel@lists.sourceforge.net, intel-gfx@lists.freedesktop.org, nouveau@lists.freedesktop.org, linux-input@vger.kernel.org, iommu@lists.linux-foundation.org, linux-mmc@vger.kernel.org, netdev@vger.kernel.org, linux-pci@vger.kernel.org, linux-usb@vger.kernel.org, alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org Cc: Felipe Balbi , Borislav Petkov , Mathias Nyman , Yisen Zhuang , Joerg Roedel , Amir Goldstein , "Rafael J . Wysocki" , Adrian Hunter , Jarkko Sakkinen , Liam Girdwood , Benjamin Tissoires , Heikki Krogerus , Mark Brown , Bjorn Helgaas , Dan Williams , Andy Shevchenko , Mika Westerberg , Zhang Rui , Ben Skeggs List-Id: alsa-devel@alsa-project.org YWNwaV9ldmFsdWF0ZV9kc20oKSBhbmQgZnJpZW5kcyB0YWtlIGEgcG9pbnRlciB0byBhIHJhdyBi dWZmZXIgb2YgMTYKYnl0ZXMuIEluc3RlYWQgd2UgY29udmVydCB0aGVtIHRvIHVzZSB1dWlkX2xl IHR5cGUuIEF0IHRoZSBzYW1lIHRpbWUgd2UKY29udmVydCBjdXJyZW50IHVzZXJzLgoKYWNwaV9z dHJfdG9fdXVpZCgpIGJlY29tZXMgdXNlbGVzcyBhZnRlciB0aGUgY29udmVyc2lvbiBhbmQgaXQn cyBzYWZlIHRvCmdldCByaWQgb2YgaXQuCgpUaGUgY29udmVyc2lvbiBmaXhlcyBhIHBvdGVudGlh bCBidWcgaW4gaW50MzQweF90aGVybWFsIGFzIHdlbGwgc2luY2UKd2UgaGF2ZSB0byB1c2UgbWVt Y21wKCkgb24gYmluYXJ5IGRhdGEuCgpDYzogUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29j a2kubmV0PgpDYzogTWlrYSBXZXN0ZXJiZXJnIDxtaWthLndlc3RlcmJlcmdAbGludXguaW50ZWwu Y29tPgpDYzogQm9yaXNsYXYgUGV0a292IDxicEBzdXNlLmRlPgpDYzogRGFuIFdpbGxpYW1zIDxk YW4uai53aWxsaWFtc0BpbnRlbC5jb20+CkNjOiBBbWlyIEdvbGRzdGVpbiA8YW1pcjczaWxAZ21h aWwuY29tPgpDYzogSmFya2tvIFNha2tpbmVuIDxqYXJra28uc2Fra2luZW5AbGludXguaW50ZWwu Y29tPgpDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IEJl biBTa2VnZ3MgPGJza2VnZ3NAcmVkaGF0LmNvbT4KQ2M6IEJlbmphbWluIFRpc3NvaXJlcyA8YmVu amFtaW4udGlzc29pcmVzQHJlZGhhdC5jb20+CkNjOiBKb2VyZyBSb2VkZWwgPGpvcm9AOGJ5dGVz Lm9yZz4KQ2M6IEFkcmlhbiBIdW50ZXIgPGFkcmlhbi5odW50ZXJAaW50ZWwuY29tPgpDYzogWWlz ZW4gWmh1YW5nIDx5aXNlbi56aHVhbmdAaHVhd2VpLmNvbT4KQ2M6IEJqb3JuIEhlbGdhYXMgPGJo ZWxnYWFzQGdvb2dsZS5jb20+CkNjOiBaaGFuZyBSdWkgPHJ1aS56aGFuZ0BpbnRlbC5jb20+CkNj OiBGZWxpcGUgQmFsYmkgPGJhbGJpQGtlcm5lbC5vcmc+CkNjOiBNYXRoaWFzIE55bWFuIDxtYXRo aWFzLm55bWFuQGludGVsLmNvbT4KQ2M6IEhlaWtraSBLcm9nZXJ1cyA8aGVpa2tpLmtyb2dlcnVz QGxpbnV4LmludGVsLmNvbT4KQ2M6IExpYW0gR2lyZHdvb2QgPGxnaXJkd29vZEBnbWFpbC5jb20+ CkNjOiBNYXJrIEJyb3duIDxicm9vbmllQGtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IEFuZHkg U2hldmNoZW5rbyA8YW5kcml5LnNoZXZjaGVua29AbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZl cnMvYWNwaS9hY3BpX2V4dGxvZy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrLS0t CiBkcml2ZXJzL2FjcGkvYnVzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI5 ICsrLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvYWNwaS9uZml0L2NvcmUuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgNDAgKysrKysrKysrKystLS0tLS0tLS0tLQogZHJpdmVycy9hY3BpL25m aXQvbmZpdC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLQogZHJpdmVycy9hY3Bp L3V0aWxzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0KIGRyaXZlcnMv Y2hhci90cG0vdHBtX2NyYi5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKysrLS0KIGRy aXZlcnMvY2hhci90cG0vdHBtX3BwaS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAgKysr KystLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2FjcGkuYyAgICAgICAgICAgICAg ICAgIHwgMTQgKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfYWNwaS5j ICAgICAgICAgICAgIHwgMjAgKysrKystLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252 a20vc3ViZGV2L214bS9iYXNlLmMgICAgIHwgIDkgKysrLS0KIGRyaXZlcnMvaGlkL2kyYy1oaWQv aTJjLWhpZC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKysrLS0KIGRyaXZlcnMvaW9tbXUv ZG1hci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEgKysrLS0tCiBkcml2ZXJz L21tYy9ob3N0L3NkaGNpLXBjaS1jb3JlLmMgICAgICAgICAgICAgICAgICB8ICA5ICsrKy0tCiBk cml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuYyB8IDE1ICsr KystLS0tCiBkcml2ZXJzL3BjaS9wY2ktYWNwaS5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDExICsrKy0tLQogZHJpdmVycy9wY2kvcGNpLWxhYmVsLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNCArLS0KIGRyaXZlcnMvdGhlcm1hbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQw MF90aGVybWFsLmMgIHwgIDggKystLS0KIGRyaXZlcnMvdXNiL2R3YzMvZHdjMy1wY2kuYyAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDYgKystLQogZHJpdmVycy91c2IvaG9zdC94aGNpLXBjaS5j ICAgICAgICAgICAgICAgICAgICAgICAgfCAgOSArKystLQogZHJpdmVycy91c2IvbWlzYy91Y3Np LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy91c2IvdHlwZWMv dHlwZWNfd2NvdmUuYyAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0KIGluY2x1ZGUvYWNwaS9h Y3BpX2J1cy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKystLS0KIGluY2x1ZGUv bGludXgvYWNwaS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBpbmNs dWRlL2xpbnV4L3BjaS1hY3BpLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBz b3VuZC9zb2MvaW50ZWwvc2t5bGFrZS9za2wtbmhsdC5jICAgICAgICAgICAgICAgICB8ICA3ICsr LS0KIHRvb2xzL3Rlc3RpbmcvbnZkaW1tL3Rlc3QvaW9tYXAuYyAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIHRvb2xzL3Rlc3RpbmcvbnZkaW1tL3Rlc3QvbmZpdC5jICAgICAgICAgICAgICAgICAg IHwgIDIgKy0KIDI3IGZpbGVzIGNoYW5nZWQsIDExNiBpbnNlcnRpb25zKCspLCAxNTYgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2FjcGlfZXh0bG9nLmMgYi9kcml2ZXJz L2FjcGkvYWNwaV9leHRsb2cuYwppbmRleCA1MDJlYTRkYzIwODAuLjY5ZDYxNDBiNmFmYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9hY3BpL2FjcGlfZXh0bG9nLmMKKysrIGIvZHJpdmVycy9hY3BpL2Fj cGlfZXh0bG9nLmMKQEAgLTE4MiwxNyArMTgyLDE3IEBAIHN0YXRpYyBpbnQgZXh0bG9nX3ByaW50 KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgdmFsLAogCiBzdGF0aWMg Ym9vbCBfX2luaXQgZXh0bG9nX2dldF9sMWFkZHIodm9pZCkKIHsKLQl1OCB1dWlkWzE2XTsKKwl1 dWlkX2xlIHV1aWQ7CiAJYWNwaV9oYW5kbGUgaGFuZGxlOwogCXVuaW9uIGFjcGlfb2JqZWN0ICpv Ymo7CiAKLQlhY3BpX3N0cl90b191dWlkKGV4dGxvZ19kc21fdXVpZCwgdXVpZCk7Ci0KKwlpZiAo dXVpZF9sZV90b19iaW4oZXh0bG9nX2RzbV91dWlkLCAmdXVpZCkpCisJCXJldHVybiBmYWxzZTsK IAlpZiAoQUNQSV9GQUlMVVJFKGFjcGlfZ2V0X2hhbmRsZShOVUxMLCAiXFxfU0IiLCAmaGFuZGxl KSkpCiAJCXJldHVybiBmYWxzZTsKLQlpZiAoIWFjcGlfY2hlY2tfZHNtKGhhbmRsZSwgdXVpZCwg RVhUTE9HX0RTTV9SRVYsIDEgPDwgRVhUTE9HX0ZOX0FERFIpKQorCWlmICghYWNwaV9jaGVja19k c20oaGFuZGxlLCAmdXVpZCwgRVhUTE9HX0RTTV9SRVYsIDEgPDwgRVhUTE9HX0ZOX0FERFIpKQog CQlyZXR1cm4gZmFsc2U7Ci0Jb2JqID0gYWNwaV9ldmFsdWF0ZV9kc21fdHlwZWQoaGFuZGxlLCB1 dWlkLCBFWFRMT0dfRFNNX1JFViwKKwlvYmogPSBhY3BpX2V2YWx1YXRlX2RzbV90eXBlZChoYW5k bGUsICZ1dWlkLCBFWFRMT0dfRFNNX1JFViwKIAkJCQkgICAgICBFWFRMT0dfRk5fQUREUiwgTlVM TCwgQUNQSV9UWVBFX0lOVEVHRVIpOwogCWlmICghb2JqKSB7CiAJCXJldHVybiBmYWxzZTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9idXMuYyBiL2RyaXZlcnMvYWNwaS9idXMuYwppbmRleCA3 ODRiZGE2NjNkMTYuLmU4MTMwYTQ4NzNlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2J1cy5j CisrKyBiL2RyaXZlcnMvYWNwaS9idXMuYwpAQCAtMTk2LDQyICsxOTYsMTkgQEAgc3RhdGljIHZv aWQgYWNwaV9wcmludF9vc2NfZXJyb3IoYWNwaV9oYW5kbGUgaGFuZGxlLAogCXByX2RlYnVnKCJc biIpOwogfQogCi1hY3BpX3N0YXR1cyBhY3BpX3N0cl90b191dWlkKGNoYXIgKnN0ciwgdTggKnV1 aWQpCi17Ci0JaW50IGk7Ci0Jc3RhdGljIGludCBvcGNfbWFwX3RvX3V1aWRbMTZdID0gezYsIDQs IDIsIDAsIDExLCA5LCAxNiwgMTQsIDE5LCAyMSwKLQkJMjQsIDI2LCAyOCwgMzAsIDMyLCAzNH07 Ci0KLQlpZiAoc3RybGVuKHN0cikgIT0gMzYpCi0JCXJldHVybiBBRV9CQURfUEFSQU1FVEVSOwot CWZvciAoaSA9IDA7IGkgPCAzNjsgaSsrKSB7Ci0JCWlmIChpID09IDggfHwgaSA9PSAxMyB8fCBp ID09IDE4IHx8IGkgPT0gMjMpIHsKLQkJCWlmIChzdHJbaV0gIT0gJy0nKQotCQkJCXJldHVybiBB RV9CQURfUEFSQU1FVEVSOwotCQl9IGVsc2UgaWYgKCFpc3hkaWdpdChzdHJbaV0pKQotCQkJcmV0 dXJuIEFFX0JBRF9QQVJBTUVURVI7Ci0JfQotCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7Ci0J CXV1aWRbaV0gPSBoZXhfdG9fYmluKHN0cltvcGNfbWFwX3RvX3V1aWRbaV1dKSA8PCA0OwotCQl1 dWlkW2ldIHw9IGhleF90b19iaW4oc3RyW29wY19tYXBfdG9fdXVpZFtpXSArIDFdKTsKLQl9Ci0J cmV0dXJuIEFFX09LOwotfQotRVhQT1JUX1NZTUJPTF9HUEwoYWNwaV9zdHJfdG9fdXVpZCk7Ci0K IGFjcGlfc3RhdHVzIGFjcGlfcnVuX29zYyhhY3BpX2hhbmRsZSBoYW5kbGUsIHN0cnVjdCBhY3Bp X29zY19jb250ZXh0ICpjb250ZXh0KQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlzdHJ1Y3Qg YWNwaV9vYmplY3RfbGlzdCBpbnB1dDsKIAl1bmlvbiBhY3BpX29iamVjdCBpbl9wYXJhbXNbNF07 CiAJdW5pb24gYWNwaV9vYmplY3QgKm91dF9vYmo7Ci0JdTggdXVpZFsxNl07CisJdXVpZF9sZSB1 dWlkOwogCXUzMiBlcnJvcnM7CiAJc3RydWN0IGFjcGlfYnVmZmVyIG91dHB1dCA9IHtBQ1BJX0FM TE9DQVRFX0JVRkZFUiwgTlVMTH07CiAKIAlpZiAoIWNvbnRleHQpCiAJCXJldHVybiBBRV9FUlJP UjsKLQlpZiAoQUNQSV9GQUlMVVJFKGFjcGlfc3RyX3RvX3V1aWQoY29udGV4dC0+dXVpZF9zdHIs IHV1aWQpKSkKKwlpZiAodXVpZF9sZV90b19iaW4oY29udGV4dC0+dXVpZF9zdHIsICZ1dWlkKSkK IAkJcmV0dXJuIEFFX0VSUk9SOwogCWNvbnRleHQtPnJldC5sZW5ndGggPSBBQ1BJX0FMTE9DQVRF X0JVRkZFUjsKIAljb250ZXh0LT5yZXQucG9pbnRlciA9IE5VTEw7CkBAIC0yNDEsNyArMjE4LDcg QEAgYWNwaV9zdGF0dXMgYWNwaV9ydW5fb3NjKGFjcGlfaGFuZGxlIGhhbmRsZSwgc3RydWN0IGFj cGlfb3NjX2NvbnRleHQgKmNvbnRleHQpCiAJaW5wdXQucG9pbnRlciA9IGluX3BhcmFtczsKIAlp bl9wYXJhbXNbMF0udHlwZSAJCT0gQUNQSV9UWVBFX0JVRkZFUjsKIAlpbl9wYXJhbXNbMF0uYnVm ZmVyLmxlbmd0aCAJPSAxNjsKLQlpbl9wYXJhbXNbMF0uYnVmZmVyLnBvaW50ZXIJPSB1dWlkOwor CWluX3BhcmFtc1swXS5idWZmZXIucG9pbnRlcgk9ICh1OCAqKSZ1dWlkOwogCWluX3BhcmFtc1sx XS50eXBlIAkJPSBBQ1BJX1RZUEVfSU5URUdFUjsKIAlpbl9wYXJhbXNbMV0uaW50ZWdlci52YWx1 ZSAJPSBjb250ZXh0LT5yZXY7CiAJaW5fcGFyYW1zWzJdLnR5cGUgCQk9IEFDUElfVFlQRV9JTlRF R0VSOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL25maXQvY29yZS5jIGIvZHJpdmVycy9hY3Bp L25maXQvY29yZS5jCmluZGV4IDBmNzk4MmExY2FhZi4uYmQzZTQ1ZWRlMDU2IDEwMDY0NAotLS0g YS9kcml2ZXJzL2FjcGkvbmZpdC9jb3JlLmMKKysrIGIvZHJpdmVycy9hY3BpL25maXQvY29yZS5j CkBAIC03NCwxMSArNzQsMTEgQEAgc3RydWN0IG5maXRfdGFibGVfcHJldiB7CiAJc3RydWN0IGxp c3RfaGVhZCBmbHVzaGVzOwogfTsKIAotc3RhdGljIHU4IG5maXRfdXVpZFtORklUX1VVSURfTUFY XVsxNl07CitzdGF0aWMgdXVpZF9sZSBuZml0X3V1aWRbTkZJVF9VVUlEX01BWF07CiAKLWNvbnN0 IHU4ICp0b19uZml0X3V1aWQoZW51bSBuZml0X3V1aWRzIGlkKQorY29uc3QgdXVpZF9sZSAqdG9f bmZpdF91dWlkKGVudW0gbmZpdF91dWlkcyBpZCkKIHsKLQlyZXR1cm4gbmZpdF91dWlkW2lkXTsK KwlyZXR1cm4gJm5maXRfdXVpZFtpZF07CiB9CiBFWFBPUlRfU1lNQk9MKHRvX25maXRfdXVpZCk7 CiAKQEAgLTIwNyw3ICsyMDcsNyBAQCBpbnQgYWNwaV9uZml0X2N0bChzdHJ1Y3QgbnZkaW1tX2J1 c19kZXNjcmlwdG9yICpuZF9kZXNjLCBzdHJ1Y3QgbnZkaW1tICpudmRpbW0sCiAJdTMyIG9mZnNl dCwgZndfc3RhdHVzID0gMDsKIAlhY3BpX2hhbmRsZSBoYW5kbGU7CiAJdW5zaWduZWQgaW50IGZ1 bmM7Ci0JY29uc3QgdTggKnV1aWQ7CisJY29uc3QgdXVpZF9sZSAqdXVpZDsKIAlpbnQgcmMsIGk7 CiAKIAlmdW5jID0gY21kOwpAQCAtMzk0LDcgKzM5NCw3IEBAIGludCBuZml0X3NwYV90eXBlKHN0 cnVjdCBhY3BpX25maXRfc3lzdGVtX2FkZHJlc3MgKnNwYSkKIAlpbnQgaTsKIAogCWZvciAoaSA9 IDA7IGkgPCBORklUX1VVSURfTUFYOyBpKyspCi0JCWlmIChtZW1jbXAodG9fbmZpdF91dWlkKGkp LCBzcGEtPnJhbmdlX2d1aWQsIDE2KSA9PSAwKQorCQlpZiAoIXV1aWRfbGVfY21wX3BwKHRvX25m aXRfdXVpZChpKSwgKHV1aWRfbGUgKilzcGEtPnJhbmdlX2d1aWQpKQogCQkJcmV0dXJuIGk7CiAJ cmV0dXJuIC0xOwogfQpAQCAtMTQwMCw3ICsxNDAwLDcgQEAgc3RhdGljIGludCBhY3BpX25maXRf YWRkX2RpbW0oc3RydWN0IGFjcGlfbmZpdF9kZXNjICphY3BpX2Rlc2MsCiAJc3RydWN0IGFjcGlf ZGV2aWNlICphZGV2LCAqYWRldl9kaW1tOwogCXN0cnVjdCBkZXZpY2UgKmRldiA9IGFjcGlfZGVz Yy0+ZGV2OwogCXVuc2lnbmVkIGxvbmcgZHNtX21hc2s7Ci0JY29uc3QgdTggKnV1aWQ7CisJY29u c3QgdXVpZF9sZSAqdXVpZCA9IHRvX25maXRfdXVpZChORklUX0RFVl9ESU1NKTsKIAlpbnQgaTsK IAlpbnQgZmFtaWx5ID0gLTE7CiAKQEAgLTE1OTYsNyArMTU5Niw3IEBAIHN0YXRpYyBpbnQgYWNw aV9uZml0X3JlZ2lzdGVyX2RpbW1zKHN0cnVjdCBhY3BpX25maXRfZGVzYyAqYWNwaV9kZXNjKQog c3RhdGljIHZvaWQgYWNwaV9uZml0X2luaXRfZHNtcyhzdHJ1Y3QgYWNwaV9uZml0X2Rlc2MgKmFj cGlfZGVzYykKIHsKIAlzdHJ1Y3QgbnZkaW1tX2J1c19kZXNjcmlwdG9yICpuZF9kZXNjID0gJmFj cGlfZGVzYy0+bmRfZGVzYzsKLQljb25zdCB1OCAqdXVpZCA9IHRvX25maXRfdXVpZChORklUX0RF Vl9CVVMpOworCWNvbnN0IHV1aWRfbGUgKnV1aWQgPSB0b19uZml0X3V1aWQoTkZJVF9ERVZfQlVT KTsKIAlzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXY7CiAJaW50IGk7CiAKQEAgLTMwMzYsMTkgKzMw MzYsMTkgQEAgc3RhdGljIF9faW5pdCBpbnQgbmZpdF9pbml0KHZvaWQpCiAJQlVJTERfQlVHX09O KHNpemVvZihzdHJ1Y3QgYWNwaV9uZml0X2NvbnRyb2xfcmVnaW9uKSAhPSA4MCk7CiAJQlVJTERf QlVHX09OKHNpemVvZihzdHJ1Y3QgYWNwaV9uZml0X2RhdGFfcmVnaW9uKSAhPSA0MCk7CiAKLQlh Y3BpX3N0cl90b191dWlkKFVVSURfVk9MQVRJTEVfTUVNT1JZLCBuZml0X3V1aWRbTkZJVF9TUEFf Vk9MQVRJTEVdKTsKLQlhY3BpX3N0cl90b191dWlkKFVVSURfUEVSU0lTVEVOVF9NRU1PUlksIG5m aXRfdXVpZFtORklUX1NQQV9QTV0pOwotCWFjcGlfc3RyX3RvX3V1aWQoVVVJRF9DT05UUk9MX1JF R0lPTiwgbmZpdF91dWlkW05GSVRfU1BBX0RDUl0pOwotCWFjcGlfc3RyX3RvX3V1aWQoVVVJRF9E QVRBX1JFR0lPTiwgbmZpdF91dWlkW05GSVRfU1BBX0JEV10pOwotCWFjcGlfc3RyX3RvX3V1aWQo VVVJRF9WT0xBVElMRV9WSVJUVUFMX0RJU0ssIG5maXRfdXVpZFtORklUX1NQQV9WRElTS10pOwot CWFjcGlfc3RyX3RvX3V1aWQoVVVJRF9WT0xBVElMRV9WSVJUVUFMX0NELCBuZml0X3V1aWRbTkZJ VF9TUEFfVkNEXSk7Ci0JYWNwaV9zdHJfdG9fdXVpZChVVUlEX1BFUlNJU1RFTlRfVklSVFVBTF9E SVNLLCBuZml0X3V1aWRbTkZJVF9TUEFfUERJU0tdKTsKLQlhY3BpX3N0cl90b191dWlkKFVVSURf UEVSU0lTVEVOVF9WSVJUVUFMX0NELCBuZml0X3V1aWRbTkZJVF9TUEFfUENEXSk7Ci0JYWNwaV9z dHJfdG9fdXVpZChVVUlEX05GSVRfQlVTLCBuZml0X3V1aWRbTkZJVF9ERVZfQlVTXSk7Ci0JYWNw aV9zdHJfdG9fdXVpZChVVUlEX05GSVRfRElNTSwgbmZpdF91dWlkW05GSVRfREVWX0RJTU1dKTsK LQlhY3BpX3N0cl90b191dWlkKFVVSURfTkZJVF9ESU1NX05fSFBFMSwgbmZpdF91dWlkW05GSVRf REVWX0RJTU1fTl9IUEUxXSk7Ci0JYWNwaV9zdHJfdG9fdXVpZChVVUlEX05GSVRfRElNTV9OX0hQ RTIsIG5maXRfdXVpZFtORklUX0RFVl9ESU1NX05fSFBFMl0pOwotCWFjcGlfc3RyX3RvX3V1aWQo VVVJRF9ORklUX0RJTU1fTl9NU0ZULCBuZml0X3V1aWRbTkZJVF9ERVZfRElNTV9OX01TRlRdKTsK Kwl1dWlkX2xlX3RvX2JpbihVVUlEX1ZPTEFUSUxFX01FTU9SWSwgJm5maXRfdXVpZFtORklUX1NQ QV9WT0xBVElMRV0pOworCXV1aWRfbGVfdG9fYmluKFVVSURfUEVSU0lTVEVOVF9NRU1PUlksICZu Zml0X3V1aWRbTkZJVF9TUEFfUE1dKTsKKwl1dWlkX2xlX3RvX2JpbihVVUlEX0NPTlRST0xfUkVH SU9OLCAmbmZpdF91dWlkW05GSVRfU1BBX0RDUl0pOworCXV1aWRfbGVfdG9fYmluKFVVSURfREFU QV9SRUdJT04sICZuZml0X3V1aWRbTkZJVF9TUEFfQkRXXSk7CisJdXVpZF9sZV90b19iaW4oVVVJ RF9WT0xBVElMRV9WSVJUVUFMX0RJU0ssICZuZml0X3V1aWRbTkZJVF9TUEFfVkRJU0tdKTsKKwl1 dWlkX2xlX3RvX2JpbihVVUlEX1ZPTEFUSUxFX1ZJUlRVQUxfQ0QsICZuZml0X3V1aWRbTkZJVF9T UEFfVkNEXSk7CisJdXVpZF9sZV90b19iaW4oVVVJRF9QRVJTSVNURU5UX1ZJUlRVQUxfRElTSywg Jm5maXRfdXVpZFtORklUX1NQQV9QRElTS10pOworCXV1aWRfbGVfdG9fYmluKFVVSURfUEVSU0lT VEVOVF9WSVJUVUFMX0NELCAmbmZpdF91dWlkW05GSVRfU1BBX1BDRF0pOworCXV1aWRfbGVfdG9f YmluKFVVSURfTkZJVF9CVVMsICZuZml0X3V1aWRbTkZJVF9ERVZfQlVTXSk7CisJdXVpZF9sZV90 b19iaW4oVVVJRF9ORklUX0RJTU0sICZuZml0X3V1aWRbTkZJVF9ERVZfRElNTV0pOworCXV1aWRf bGVfdG9fYmluKFVVSURfTkZJVF9ESU1NX05fSFBFMSwgJm5maXRfdXVpZFtORklUX0RFVl9ESU1N X05fSFBFMV0pOworCXV1aWRfbGVfdG9fYmluKFVVSURfTkZJVF9ESU1NX05fSFBFMiwgJm5maXRf dXVpZFtORklUX0RFVl9ESU1NX05fSFBFMl0pOworCXV1aWRfbGVfdG9fYmluKFVVSURfTkZJVF9E SU1NX05fTVNGVCwgJm5maXRfdXVpZFtORklUX0RFVl9ESU1NX05fTVNGVF0pOwogCiAJbmZpdF93 cSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKCJuZml0Iik7CiAJaWYgKCFuZml0X3dx KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL25maXQvbmZpdC5oIGIvZHJpdmVycy9hY3BpL25m aXQvbmZpdC5oCmluZGV4IDU4ZmI3ZDY4ZTA0YS4uMmYyMzNiMjg3MDlmIDEwMDY0NAotLS0gYS9k cml2ZXJzL2FjcGkvbmZpdC9uZml0LmgKKysrIGIvZHJpdmVycy9hY3BpL25maXQvbmZpdC5oCkBA IC0xOCw3ICsxOCw2IEBACiAjaW5jbHVkZSA8bGludXgvbGlibnZkaW1tLmg+CiAjaW5jbHVkZSA8 bGludXgvbmRjdGwuaD4KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotI2luY2x1ZGUgPGxpbnV4 L3V1aWQuaD4KICNpbmNsdWRlIDxsaW51eC9hY3BpLmg+CiAjaW5jbHVkZSA8YWNwaS9hY3V1aWQu aD4KIApAQCAtMjM3LDcgKzIzNiw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGFjcGlfbmZpdF9k ZXNjICp0b19hY3BpX2Rlc2MoCiAJcmV0dXJuIGNvbnRhaW5lcl9vZihuZF9kZXNjLCBzdHJ1Y3Qg YWNwaV9uZml0X2Rlc2MsIG5kX2Rlc2MpOwogfQogCi1jb25zdCB1OCAqdG9fbmZpdF91dWlkKGVu dW0gbmZpdF91dWlkcyBpZCk7Citjb25zdCB1dWlkX2xlICp0b19uZml0X3V1aWQoZW51bSBuZml0 X3V1aWRzIGlkKTsKIGludCBhY3BpX25maXRfaW5pdChzdHJ1Y3QgYWNwaV9uZml0X2Rlc2MgKmFj cGlfZGVzYywgdm9pZCAqbmZpdCwgYWNwaV9zaXplIHN6KTsKIHZvaWQgYWNwaV9uZml0X3NodXRk b3duKHZvaWQgKmRhdGEpOwogdm9pZCBfX2FjcGlfbmZpdF9ub3RpZnkoc3RydWN0IGRldmljZSAq ZGV2LCBhY3BpX2hhbmRsZSBoYW5kbGUsIHUzMiBldmVudCk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2FjcGkvdXRpbHMuYyBiL2RyaXZlcnMvYWNwaS91dGlscy5jCmluZGV4IDI3ZDBkY2ZjZjQ3ZC4u YmJlOGE5NTBlNTA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdXRpbHMuYworKysgYi9kcml2 ZXJzL2FjcGkvdXRpbHMuYwpAQCAtNjI1LDcgKzYyNSw3IEBAIGFjcGlfc3RhdHVzIGFjcGlfZXZh bHVhdGVfbGNrKGFjcGlfaGFuZGxlIGhhbmRsZSwgaW50IGxvY2spCiAgKiBzb21lIG9sZCBCSU9T ZXMgZG8gZXhwZWN0IGEgYnVmZmVyIG9yIGFuIGludGVnZXIgZXRjLgogICovCiB1bmlvbiBhY3Bp X29iamVjdCAqCi1hY3BpX2V2YWx1YXRlX2RzbShhY3BpX2hhbmRsZSBoYW5kbGUsIGNvbnN0IHU4 ICp1dWlkLCB1NjQgcmV2LCB1NjQgZnVuYywKK2FjcGlfZXZhbHVhdGVfZHNtKGFjcGlfaGFuZGxl IGhhbmRsZSwgY29uc3QgdXVpZF9sZSAqdXVpZCwgdTY0IHJldiwgdTY0IGZ1bmMsCiAJCSAgdW5p b24gYWNwaV9vYmplY3QgKmFyZ3Y0KQogewogCWFjcGlfc3RhdHVzIHJldDsKQEAgLTY3NCw3ICs2 NzQsNyBAQCBFWFBPUlRfU1lNQk9MKGFjcGlfZXZhbHVhdGVfZHNtKTsKICAqIGZ1bmN0aW9ucy4g Q3VycmVudGx5IG9ubHkgc3VwcG9ydCA2NCBmdW5jdGlvbnMgYXQgbWF4aW11bSwgc2hvdWxkIGJl CiAgKiBlbm91Z2ggZm9yIG5vdy4KICAqLwotYm9vbCBhY3BpX2NoZWNrX2RzbShhY3BpX2hhbmRs ZSBoYW5kbGUsIGNvbnN0IHU4ICp1dWlkLCB1NjQgcmV2LCB1NjQgZnVuY3MpCitib29sIGFjcGlf Y2hlY2tfZHNtKGFjcGlfaGFuZGxlIGhhbmRsZSwgY29uc3QgdXVpZF9sZSAqdXVpZCwgdTY0IHJl diwgdTY0IGZ1bmNzKQogewogCWludCBpOwogCXU2NCBtYXNrID0gMDsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvY2hhci90cG0vdHBtX2NyYi5jIGIvZHJpdmVycy9jaGFyL3RwbS90cG1fY3JiLmMKaW5k ZXggYjkxN2I5ZDVmNzEwLi5mNzg5ZjdlNWExN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci90 cG0vdHBtX2NyYi5jCisrKyBiL2RyaXZlcnMvY2hhci90cG0vdHBtX2NyYi5jCkBAIC0yNywxMCAr MjcsOSBAQAogCiAjZGVmaW5lIEFDUElfU0lHX1RQTTIgIlRQTTIiCiAKLXN0YXRpYyBjb25zdCB1 OCBDUkJfQUNQSV9TVEFSVF9VVUlEW10gPSB7Ci0JLyogMDAwMCAqLyAweEFCLCAweDZDLCAweEJG LCAweDZCLCAweDYzLCAweDU0LCAweDE0LCAweDQ3LAotCS8qIDAwMDggKi8gMHhCNywgMHhDRCwg MHhGMCwgMHgyMCwgMHgzQywgMHgwMywgMHg2OCwgMHhENAotfTsKK3N0YXRpYyBjb25zdCB1dWlk X2xlIGNyYl9hY3BpX3N0YXJ0X3V1aWQgPQorCVVVSURfTEUoMHg2QkJGNkNBQiwgMHg1NDYzLCAw eDQ3MTQsCisJCTB4QjcsIDB4Q0QsIDB4RjAsIDB4MjAsIDB4M0MsIDB4MDMsIDB4NjgsIDB4RDQp OwogCiBlbnVtIGNyYl9kZWZhdWx0cyB7CiAJQ1JCX0FDUElfU1RBUlRfUkVWSVNJT05fSUQgPSAx LApAQCAtMjY2LDcgKzI2NSw3IEBAIHN0YXRpYyBpbnQgY3JiX2RvX2FjcGlfc3RhcnQoc3RydWN0 IHRwbV9jaGlwICpjaGlwKQogCWludCByYzsKIAogCW9iaiA9IGFjcGlfZXZhbHVhdGVfZHNtKGNo aXAtPmFjcGlfZGV2X2hhbmRsZSwKLQkJCQlDUkJfQUNQSV9TVEFSVF9VVUlELAorCQkJCSZjcmJf YWNwaV9zdGFydF91dWlkLAogCQkJCUNSQl9BQ1BJX1NUQVJUX1JFVklTSU9OX0lELAogCQkJCUNS Ql9BQ1BJX1NUQVJUX0lOREVYLAogCQkJCU5VTEwpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFy L3RwbS90cG1fcHBpLmMgYi9kcml2ZXJzL2NoYXIvdHBtL3RwbV9wcGkuYwppbmRleCA2OTJhMmM2 YWUwMzYuLjdjZjY4MjQyNjM2MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL3RwbS90cG1fcHBp LmMKKysrIGIvZHJpdmVycy9jaGFyL3RwbS90cG1fcHBpLmMKQEAgLTMyLDIwICszMiwxNiBAQAog I2RlZmluZSBQUElfVlNfUkVRX1NUQVJUCTEyOAogI2RlZmluZSBQUElfVlNfUkVRX0VORAkJMjU1 CiAKLXN0YXRpYyBjb25zdCB1OCB0cG1fcHBpX3V1aWRbXSA9IHsKLQkweEE2LCAweEZBLCAweERE LCAweDNELAotCTB4MUIsIDB4MzYsCi0JMHhCNCwgMHg0RSwKLQkweEE0LCAweDI0LAotCTB4OEQs IDB4MTAsIDB4MDgsIDB4OUQsIDB4MTYsIDB4NTMKLX07CitzdGF0aWMgY29uc3QgdXVpZF9sZSB0 cG1fcHBpX3V1aWQgPQorCVVVSURfTEUoMHgzRERERkFBNiwgMHgzNjFCLCAweDRFQjQsCisJCTB4 QTQsIDB4MjQsIDB4OEQsIDB4MTAsIDB4MDgsIDB4OUQsIDB4MTYsIDB4NTMpOwogCiBzdGF0aWMg aW5saW5lIHVuaW9uIGFjcGlfb2JqZWN0ICoKIHRwbV9ldmFsX2RzbShhY3BpX2hhbmRsZSBwcGlf aGFuZGxlLCBpbnQgZnVuYywgYWNwaV9vYmplY3RfdHlwZSB0eXBlLAogCSAgICAgdW5pb24gYWNw aV9vYmplY3QgKmFyZ3Y0KQogewogCUJVR19PTighcHBpX2hhbmRsZSk7Ci0JcmV0dXJuIGFjcGlf ZXZhbHVhdGVfZHNtX3R5cGVkKHBwaV9oYW5kbGUsIHRwbV9wcGlfdXVpZCwKKwlyZXR1cm4gYWNw aV9ldmFsdWF0ZV9kc21fdHlwZWQocHBpX2hhbmRsZSwgJnRwbV9wcGlfdXVpZCwKIAkJCQkgICAg ICAgVFBNX1BQSV9SRVZJU0lPTl9JRCwKIAkJCQkgICAgICAgZnVuYywgYXJndjQsIHR5cGUpOwog fQpAQCAtMTA3LDcgKzEwMyw3IEBAIHN0YXRpYyBzc2l6ZV90IHRwbV9zdG9yZV9wcGlfcmVxdWVz dChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJICogaXMgdXBkYXRlZCB3aXRoIGZ1bmN0aW9uIGluZGV4 IGZyb20gU1VCUkVRIHRvIFNVQlJFUTIgc2luY2UgUFBJCiAJICogdmVyc2lvbiAxLjEKIAkgKi8K LQlpZiAoYWNwaV9jaGVja19kc20oY2hpcC0+YWNwaV9kZXZfaGFuZGxlLCB0cG1fcHBpX3V1aWQs CisJaWYgKGFjcGlfY2hlY2tfZHNtKGNoaXAtPmFjcGlfZGV2X2hhbmRsZSwgJnRwbV9wcGlfdXVp ZCwKIAkJCSAgIFRQTV9QUElfUkVWSVNJT05fSUQsIDEgPDwgVFBNX1BQSV9GTl9TVUJSRVEyKSkK IAkJZnVuYyA9IFRQTV9QUElfRk5fU1VCUkVRMjsKIApAQCAtMjY4LDcgKzI2NCw3IEBAIHN0YXRp YyBzc2l6ZV90IHNob3dfcHBpX29wZXJhdGlvbnMoYWNwaV9oYW5kbGUgZGV2X2hhbmRsZSwgY2hh ciAqYnVmLCB1MzIgc3RhcnQsCiAJCSJVc2VyIG5vdCByZXF1aXJlZCIsCiAJfTsKIAotCWlmICgh YWNwaV9jaGVja19kc20oZGV2X2hhbmRsZSwgdHBtX3BwaV91dWlkLCBUUE1fUFBJX1JFVklTSU9O X0lELAorCWlmICghYWNwaV9jaGVja19kc20oZGV2X2hhbmRsZSwgJnRwbV9wcGlfdXVpZCwgVFBN X1BQSV9SRVZJU0lPTl9JRCwKIAkJCSAgICAxIDw8IFRQTV9QUElfRk5fR0VUT1BSKSkKIAkJcmV0 dXJuIC1FUEVSTTsKIApAQCAtMzQxLDEyICszMzcsMTIgQEAgdm9pZCB0cG1fYWRkX3BwaShzdHJ1 Y3QgdHBtX2NoaXAgKmNoaXApCiAJaWYgKCFjaGlwLT5hY3BpX2Rldl9oYW5kbGUpCiAJCXJldHVy bjsKIAotCWlmICghYWNwaV9jaGVja19kc20oY2hpcC0+YWNwaV9kZXZfaGFuZGxlLCB0cG1fcHBp X3V1aWQsCisJaWYgKCFhY3BpX2NoZWNrX2RzbShjaGlwLT5hY3BpX2Rldl9oYW5kbGUsICZ0cG1f cHBpX3V1aWQsCiAJCQkgICAgVFBNX1BQSV9SRVZJU0lPTl9JRCwgMSA8PCBUUE1fUFBJX0ZOX1ZF UlNJT04pKQogCQlyZXR1cm47CiAKIAkvKiBDYWNoZSBQUEkgdmVyc2lvbiBzdHJpbmcuICovCi0J b2JqID0gYWNwaV9ldmFsdWF0ZV9kc21fdHlwZWQoY2hpcC0+YWNwaV9kZXZfaGFuZGxlLCB0cG1f cHBpX3V1aWQsCisJb2JqID0gYWNwaV9ldmFsdWF0ZV9kc21fdHlwZWQoY2hpcC0+YWNwaV9kZXZf aGFuZGxlLCAmdHBtX3BwaV91dWlkLAogCQkJCSAgICAgIFRQTV9QUElfUkVWSVNJT05fSUQsIFRQ TV9QUElfRk5fVkVSU0lPTiwKIAkJCQkgICAgICBOVUxMLCBBQ1BJX1RZUEVfU1RSSU5HKTsKIAlp ZiAob2JqKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hY3BpLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hY3BpLmMKaW5kZXggZWI2MzhhMWU2OWQyLi43 MmJmZTZjZWFkZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2FjcGku YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hY3BpLmMKQEAgLTE1LDEzICsxNSw5 IEBAIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfZHNtX3ByaXYgewogCWFjcGlfaGFuZGxlIGRoYW5kbGU7 CiB9IGludGVsX2RzbV9wcml2OwogCi1zdGF0aWMgY29uc3QgdTggaW50ZWxfZHNtX2d1aWRbXSA9 IHsKLQkweGQzLCAweDczLCAweGQ4LCAweDdlLAotCTB4ZDAsIDB4YzIsCi0JMHg0ZiwgMHg0ZSwK LQkweGE4LCAweDU0LAotCTB4MGYsIDB4MTMsIDB4MTcsIDB4YjAsIDB4MWMsIDB4MmMKLX07Citz dGF0aWMgY29uc3QgdXVpZF9sZSBpbnRlbF9kc21fZ3VpZCA9CisJVVVJRF9MRSgweDdlZDg3M2Qz LCAweGMyZDAsIDB4NGU0ZiwKKwkJMHhhOCwgMHg1NCwgMHgwZiwgMHgxMywgMHgxNywgMHhiMCwg MHgxYywgMHgyYyk7CiAKIHN0YXRpYyBjaGFyICppbnRlbF9kc21fcG9ydF9uYW1lKHU4IGlkKQog ewpAQCAtODAsNyArNzYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc21fcGxhdGZvcm1fbXV4X2lu Zm8odm9pZCkKIAlpbnQgaTsKIAl1bmlvbiBhY3BpX29iamVjdCAqcGtnLCAqY29ubmVjdG9yX2Nv dW50OwogCi0JcGtnID0gYWNwaV9ldmFsdWF0ZV9kc21fdHlwZWQoaW50ZWxfZHNtX3ByaXYuZGhh bmRsZSwgaW50ZWxfZHNtX2d1aWQsCisJcGtnID0gYWNwaV9ldmFsdWF0ZV9kc21fdHlwZWQoaW50 ZWxfZHNtX3ByaXYuZGhhbmRsZSwgJmludGVsX2RzbV9ndWlkLAogCQkJSU5URUxfRFNNX1JFVklT SU9OX0lELCBJTlRFTF9EU01fRk5fUExBVEZPUk1fTVVYX0lORk8sCiAJCQlOVUxMLCBBQ1BJX1RZ UEVfUEFDS0FHRSk7CiAJaWYgKCFwa2cpIHsKQEAgLTExOCw3ICsxMTQsNyBAQCBzdGF0aWMgYm9v bCBpbnRlbF9kc21fcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogCWlmICghZGhhbmRs ZSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JaWYgKCFhY3BpX2NoZWNrX2RzbShkaGFuZGxlLCBpbnRl bF9kc21fZ3VpZCwgSU5URUxfRFNNX1JFVklTSU9OX0lELAorCWlmICghYWNwaV9jaGVja19kc20o ZGhhbmRsZSwgJmludGVsX2RzbV9ndWlkLCBJTlRFTF9EU01fUkVWSVNJT05fSUQsCiAJCQkgICAg MSA8PCBJTlRFTF9EU01fRk5fUExBVEZPUk1fTVVYX0lORk8pKSB7CiAJCURSTV9ERUJVR19LTVMo Im5vIF9EU00gbWV0aG9kIGZvciBpbnRlbCBkZXZpY2VcbiIpOwogCQlyZXR1cm4gZmFsc2U7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2FjcGkuYyBiL2RyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfYWNwaS5jCmluZGV4IDM5NDY4YzIxODAyNy4uZmFl YTIzMjc2ZDRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2Fj cGkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2FjcGkuYwpAQCAtNjAs MTUgKzYwLDEzIEBAIGJvb2wgbm91dmVhdV9pc192MV9kc20odm9pZCkgewogfQogCiAjaWZkZWYg Q09ORklHX1ZHQV9TV0lUQ0hFUk9PCi1zdGF0aWMgY29uc3QgY2hhciBub3V2ZWF1X2RzbV9tdWlk W10gPSB7Ci0JMHhBMCwgMHhBMCwgMHg5NSwgMHg5RCwgMHg2MCwgMHgwMCwgMHg0OCwgMHg0RCwK LQkweEIzLCAweDRELCAweDdFLCAweDVGLCAweEVBLCAweDEyLCAweDlGLCAweEQ0LAotfTsKK3N0 YXRpYyBjb25zdCB1dWlkX2xlIG5vdXZlYXVfZHNtX211aWQgPQorCVVVSURfTEUoMHg5RDk1QTBB MCwgMHgwMDYwLCAweDRENDgsCisJCTB4QjMsIDB4NEQsIDB4N0UsIDB4NUYsIDB4RUEsIDB4MTIs IDB4OUYsIDB4RDQpOwogCi1zdGF0aWMgY29uc3QgY2hhciBub3V2ZWF1X29wX2RzbV9tdWlkW10g PSB7Ci0JMHhGOCwgMHhEOCwgMHg4NiwgMHhBNCwgMHhEQSwgMHgwQiwgMHgxQiwgMHg0NywKLQkw eEE3LCAweDJCLCAweDYwLCAweDQyLCAweEE2LCAweEI1LCAweEJFLCAweEUwLAotfTsKK3N0YXRp YyBjb25zdCB1dWlkX2xlIG5vdXZlYXVfb3BfZHNtX211aWQgPQorCVVVSURfTEUoMHhBNDg2RDhG OCwgMHgwQkRBLCAweDQ3MUIsCisJCTB4QTcsIDB4MkIsIDB4NjAsIDB4NDIsIDB4QTYsIDB4QjUs IDB4QkUsIDB4RTApOwogCiBzdGF0aWMgaW50IG5vdXZlYXVfb3B0aW11c19kc20oYWNwaV9oYW5k bGUgaGFuZGxlLCBpbnQgZnVuYywgaW50IGFyZywgdWludDMyX3QgKnJlc3VsdCkKIHsKQEAgLTg2 LDcgKzg0LDcgQEAgc3RhdGljIGludCBub3V2ZWF1X29wdGltdXNfZHNtKGFjcGlfaGFuZGxlIGhh bmRsZSwgaW50IGZ1bmMsIGludCBhcmcsIHVpbnQzMl90ICoKIAkJYXJnc19idWZmW2ldID0gKGFy ZyA+PiBpICogOCkgJiAweEZGOwogCiAJKnJlc3VsdCA9IDA7Ci0Jb2JqID0gYWNwaV9ldmFsdWF0 ZV9kc21fdHlwZWQoaGFuZGxlLCBub3V2ZWF1X29wX2RzbV9tdWlkLCAweDAwMDAwMTAwLAorCW9i aiA9IGFjcGlfZXZhbHVhdGVfZHNtX3R5cGVkKGhhbmRsZSwgJm5vdXZlYXVfb3BfZHNtX211aWQs IDB4MDAwMDAxMDAsCiAJCQkJICAgICAgZnVuYywgJmFyZ3Y0LCBBQ1BJX1RZUEVfQlVGRkVSKTsK IAlpZiAoIW9iaikgewogCQlhY3BpX2hhbmRsZV9pbmZvKGhhbmRsZSwgImZhaWxlZCB0byBldmFs dWF0ZSBfRFNNXG4iKTsKQEAgLTEzOCw3ICsxMzYsNyBAQCBzdGF0aWMgaW50IG5vdXZlYXVfZHNt KGFjcGlfaGFuZGxlIGhhbmRsZSwgaW50IGZ1bmMsIGludCBhcmcpCiAJCS5pbnRlZ2VyLnZhbHVl ID0gYXJnLAogCX07CiAKLQlvYmogPSBhY3BpX2V2YWx1YXRlX2RzbV90eXBlZChoYW5kbGUsIG5v dXZlYXVfZHNtX211aWQsIDB4MDAwMDAxMDIsCisJb2JqID0gYWNwaV9ldmFsdWF0ZV9kc21fdHlw ZWQoaGFuZGxlLCAmbm91dmVhdV9kc21fbXVpZCwgMHgwMDAwMDEwMiwKIAkJCQkgICAgICBmdW5j LCAmYXJndjQsIEFDUElfVFlQRV9JTlRFR0VSKTsKIAlpZiAoIW9iaikgewogCQlhY3BpX2hhbmRs ZV9pbmZvKGhhbmRsZSwgImZhaWxlZCB0byBldmFsdWF0ZSBfRFNNXG4iKTsKQEAgLTI1OSw3ICsy NTcsNyBAQCBzdGF0aWMgdm9pZCBub3V2ZWF1X2RzbV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYg KnBkZXYsIGFjcGlfaGFuZGxlICpkaGFuZGxlX291dAogCWlmICghYWNwaV9oYXNfbWV0aG9kKGRo YW5kbGUsICJfRFNNIikpCiAJCXJldHVybjsKIAotCXN1cHBvcnRzX211eCA9IGFjcGlfY2hlY2tf ZHNtKGRoYW5kbGUsIG5vdXZlYXVfZHNtX211aWQsIDB4MDAwMDAxMDIsCisJc3VwcG9ydHNfbXV4 ID0gYWNwaV9jaGVja19kc20oZGhhbmRsZSwgJm5vdXZlYXVfZHNtX211aWQsIDB4MDAwMDAxMDIs CiAJCQkJICAgICAgMSA8PCBOT1VWRUFVX0RTTV9QT1dFUik7CiAJb3B0aW11c19mdW5jcyA9IG5v dXZlYXVfZHNtX2dldF9vcHRpbXVzX2Z1bmN0aW9ucyhkaGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvbXhtL2Jhc2UuYyBiL2RyaXZlcnMv Z3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L214bS9iYXNlLmMKaW5kZXggZTNlMmY1ZTgzODE1 Li5jYzk1YjgxNTBhODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20v c3ViZGV2L214bS9iYXNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJk ZXYvbXhtL2Jhc2UuYwpAQCAtODEsMTAgKzgxLDkgQEAgbXhtX3NoYWRvd19kc20oc3RydWN0IG52 a21fbXhtICpteG0sIHU4IHZlcnNpb24pCiB7CiAJc3RydWN0IG52a21fc3ViZGV2ICpzdWJkZXYg PSAmbXhtLT5zdWJkZXY7CiAJc3RydWN0IG52a21fZGV2aWNlICpkZXZpY2UgPSBzdWJkZXYtPmRl dmljZTsKLQlzdGF0aWMgY2hhciBtdWlkW10gPSB7Ci0JCTB4MDAsIDB4QTQsIDB4MDQsIDB4NDAs IDB4N0QsIDB4OTEsIDB4RjIsIDB4NEMsCi0JCTB4QjgsIDB4OUMsIDB4NzksIDB4QjYsIDB4MkYs IDB4RDUsIDB4NTYsIDB4NjUKLQl9OworCXN0YXRpYyB1dWlkX2xlIG11aWQgPQorCQlVVUlEX0xF KDB4NDAwNEE0MDAsIDB4OTE3RCwgMHg0Q0YyLAorCQkJMHhCOCwgMHg5QywgMHg3OSwgMHhCNiwg MHgyRiwgMHhENSwgMHg1NiwgMHg2NSk7CiAJdTMyIG14bXNfYXJnc1tdID0geyAweDAwMDAwMDAw IH07CiAJdW5pb24gYWNwaV9vYmplY3QgYXJndjQgPSB7CiAJCS5idWZmZXIudHlwZSA9IEFDUElf VFlQRV9CVUZGRVIsCkBAIC0xMDUsNyArMTA0LDcgQEAgbXhtX3NoYWRvd19kc20oc3RydWN0IG52 a21fbXhtICpteG0sIHU4IHZlcnNpb24pCiAJICogdW5sZXNzIHlvdSBwYXNzIGluIGV4YWN0bHkg dGhlIHZlcnNpb24gaXQgc3VwcG9ydHMuLgogCSAqLwogCXJldiA9ICh2ZXJzaW9uICYgMHhmMCkg PDwgNCB8ICh2ZXJzaW9uICYgMHgwZik7Ci0Jb2JqID0gYWNwaV9ldmFsdWF0ZV9kc20oaGFuZGxl LCBtdWlkLCByZXYsIDB4MDAwMDAwMTAsICZhcmd2NCk7CisJb2JqID0gYWNwaV9ldmFsdWF0ZV9k c20oaGFuZGxlLCAmbXVpZCwgcmV2LCAweDAwMDAwMDEwLCAmYXJndjQpOwogCWlmICghb2JqKSB7 CiAJCW52a21fZGVidWcoc3ViZGV2LCAiRFNNIE1YTVMgZmFpbGVkXG4iKTsKIAkJcmV0dXJuIGZh bHNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvaTJjLWhpZC9pMmMtaGlkLmMgYi9kcml2ZXJz L2hpZC9pMmMtaGlkL2kyYy1oaWQuYwppbmRleCA4ZGFhOGNlNjRlYmIuLmY4M2JkNzE3Y2RkNSAx MDA2NDQKLS0tIGEvZHJpdmVycy9oaWQvaTJjLWhpZC9pMmMtaGlkLmMKKysrIGIvZHJpdmVycy9o aWQvaTJjLWhpZC9pMmMtaGlkLmMKQEAgLTg3MiwxMCArODcyLDkgQEAgc3RhdGljIGludCBpMmNf aGlkX2ZldGNoX2hpZF9kZXNjcmlwdG9yKHN0cnVjdCBpMmNfaGlkICppaGlkKQogc3RhdGljIGlu dCBpMmNfaGlkX2FjcGlfcGRhdGEoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKIAkJc3RydWN0 IGkyY19oaWRfcGxhdGZvcm1fZGF0YSAqcGRhdGEpCiB7Ci0Jc3RhdGljIHU4IGkyY19oaWRfZ3Vp ZFtdID0gewotCQkweEY3LCAweEY2LCAweERGLCAweDNDLCAweDY3LCAweDQyLCAweDU1LCAweDQ1 LAotCQkweEFELCAweDA1LCAweEIzLCAweDBBLCAweDNELCAweDg5LCAweDM4LCAweERFLAotCX07 CisJc3RhdGljIHV1aWRfbGUgaTJjX2hpZF9ndWlkID0KKwkJVVVJRF9MRSgweDNDREZGNkY3LCAw eDQyNjcsIDB4NDU1NSwKKwkJCTB4QUQsIDB4MDUsIDB4QjMsIDB4MEEsIDB4M0QsIDB4ODksIDB4 MzgsIDB4REUpOwogCXVuaW9uIGFjcGlfb2JqZWN0ICpvYmo7CiAJc3RydWN0IGFjcGlfZGV2aWNl ICphZGV2OwogCWFjcGlfaGFuZGxlIGhhbmRsZTsKQEAgLTg4NCw3ICs4ODMsNyBAQCBzdGF0aWMg aW50IGkyY19oaWRfYWNwaV9wZGF0YShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAogCWlmICgh aGFuZGxlIHx8IGFjcGlfYnVzX2dldF9kZXZpY2UoaGFuZGxlLCAmYWRldikpCiAJCXJldHVybiAt RU5PREVWOwogCi0Jb2JqID0gYWNwaV9ldmFsdWF0ZV9kc21fdHlwZWQoaGFuZGxlLCBpMmNfaGlk X2d1aWQsIDEsIDEsIE5VTEwsCisJb2JqID0gYWNwaV9ldmFsdWF0ZV9kc21fdHlwZWQoaGFuZGxl LCAmaTJjX2hpZF9ndWlkLCAxLCAxLCBOVUxMLAogCQkJCSAgICAgIEFDUElfVFlQRV9JTlRFR0VS KTsKIAlpZiAoIW9iaikgewogCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgImRldmljZSBfRFNNIGV4 ZWN1dGlvbiBmYWlsZWRcbiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9kbWFyLmMgYi9k cml2ZXJzL2lvbW11L2RtYXIuYwppbmRleCBjYmY3NzYzZDgwOTEuLjQyMGQ1MWIyODZhZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9pb21tdS9kbWFyLmMKKysrIGIvZHJpdmVycy9pb21tdS9kbWFyLmMK QEAgLTE4MDgsMTAgKzE4MDgsOSBAQCBJT01NVV9JTklUX1BPU1QoZGV0ZWN0X2ludGVsX2lvbW11 KTsKICAqIGZvciBEaXJlY3RlZC1JTyBBcmNoaXRlY3R1cmUgU3BlY2lmaWN0aW9uLCBSZXYgMi4y LCBTZWN0aW9uIDguOAogICogIlJlbWFwcGluZyBIYXJkd2FyZSBVbml0IEhvdCBQbHVnIi4KICAq Lwotc3RhdGljIHU4IGRtYXJfaHBfdXVpZFtdID0gewotCS8qIDAwMDAgKi8gICAgMHhBNiwgMHhB MywgMHhDMSwgMHhEOCwgMHg5QiwgMHhCRSwgMHg5QiwgMHg0QywKLQkvKiAwMDA4ICovICAgIDB4 OTEsIDB4QkYsIDB4QzMsIDB4Q0IsIDB4ODEsIDB4RkMsIDB4NUQsIDB4QUYKLX07CitzdGF0aWMg dXVpZF9sZSBkbWFyX2hwX3V1aWQgPQorCVVVSURfTEUoMHhEOEMxQTNBNiwgMHhCRTlCLCAweDRD OUIsCisJCTB4OTEsIDB4QkYsIDB4QzMsIDB4Q0IsIDB4ODEsIDB4RkMsIDB4NUQsIDB4QUYpOwog CiAvKgogICogQ3VycmVudGx5IHRoZXJlJ3Mgb25seSBvbmUgcmV2aXNpb24gYW5kIEJJT1Mgd2ls bCBub3QgY2hlY2sgdGhlIHJldmlzaW9uIGlkLApAQCAtMTgyNCw3ICsxODIzLDcgQEAgc3RhdGlj IHU4IGRtYXJfaHBfdXVpZFtdID0gewogCiBzdGF0aWMgaW5saW5lIGJvb2wgZG1hcl9kZXRlY3Rf ZHNtKGFjcGlfaGFuZGxlIGhhbmRsZSwgaW50IGZ1bmMpCiB7Ci0JcmV0dXJuIGFjcGlfY2hlY2tf ZHNtKGhhbmRsZSwgZG1hcl9ocF91dWlkLCBETUFSX0RTTV9SRVZfSUQsIDEgPDwgZnVuYyk7CisJ cmV0dXJuIGFjcGlfY2hlY2tfZHNtKGhhbmRsZSwgJmRtYXJfaHBfdXVpZCwgRE1BUl9EU01fUkVW X0lELCAxIDw8IGZ1bmMpOwogfQogCiBzdGF0aWMgaW50IGRtYXJfd2Fsa19kc21fcmVzb3VyY2Uo YWNwaV9oYW5kbGUgaGFuZGxlLCBpbnQgZnVuYywKQEAgLTE4NDMsNyArMTg0Miw3IEBAIHN0YXRp YyBpbnQgZG1hcl93YWxrX2RzbV9yZXNvdXJjZShhY3BpX2hhbmRsZSBoYW5kbGUsIGludCBmdW5j LAogCWlmICghZG1hcl9kZXRlY3RfZHNtKGhhbmRsZSwgZnVuYykpCiAJCXJldHVybiAwOwogCi0J b2JqID0gYWNwaV9ldmFsdWF0ZV9kc21fdHlwZWQoaGFuZGxlLCBkbWFyX2hwX3V1aWQsIERNQVJf RFNNX1JFVl9JRCwKKwlvYmogPSBhY3BpX2V2YWx1YXRlX2RzbV90eXBlZChoYW5kbGUsICZkbWFy X2hwX3V1aWQsIERNQVJfRFNNX1JFVl9JRCwKIAkJCQkgICAgICBmdW5jLCBOVUxMLCBBQ1BJX1RZ UEVfQlVGRkVSKTsKIAlpZiAoIW9iaikKIAkJcmV0dXJuIC1FTk9ERVY7CmRpZmYgLS1naXQgYS9k cml2ZXJzL21tYy9ob3N0L3NkaGNpLXBjaS1jb3JlLmMgYi9kcml2ZXJzL21tYy9ob3N0L3NkaGNp LXBjaS1jb3JlLmMKaW5kZXggOTJmYzNmN2M1MzhkLi4yNjJiOGMzMjBkN2MgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcGNpLWNvcmUuYworKysgYi9kcml2ZXJzL21tYy9ob3N0 L3NkaGNpLXBjaS1jb3JlLmMKQEAgLTQwNCwxMCArNDA0LDkgQEAgc3RydWN0IGludGVsX2hvc3Qg ewogCWJvb2wJZDNfcmV0dW5lOwogfTsKIAotY29uc3QgdTggaW50ZWxfZHNtX3V1aWRbXSA9IHsK LQkweEE1LCAweDNFLCAweEMxLCAweEY2LCAweENELCAweDY1LCAweDFGLCAweDQ2LAotCTB4QUIs IDB4N0EsIDB4MjksIDB4RjcsIDB4RTgsIDB4RDUsIDB4QkQsIDB4NjEsCi19OworY29uc3QgdXVp ZF9sZSBpbnRlbF9kc21fdXVpZCA9CisJVVVJRF9MRSgweEY2QzEzRUE1LCAweDY1Q0QsIDB4NDYx RiwKKwkJMHhBQiwgMHg3QSwgMHgyOSwgMHhGNywgMHhFOCwgMHhENSwgMHhCRCwgMHg2MSk7CiAK IHN0YXRpYyBpbnQgX19pbnRlbF9kc20oc3RydWN0IGludGVsX2hvc3QgKmludGVsX2hvc3QsIHN0 cnVjdCBkZXZpY2UgKmRldiwKIAkJICAgICAgIHVuc2lnbmVkIGludCBmbiwgdTMyICpyZXN1bHQp CkBAIC00MTYsNyArNDE1LDcgQEAgc3RhdGljIGludCBfX2ludGVsX2RzbShzdHJ1Y3QgaW50ZWxf aG9zdCAqaW50ZWxfaG9zdCwgc3RydWN0IGRldmljZSAqZGV2LAogCWludCBlcnIgPSAwOwogCXNp emVfdCBsZW47CiAKLQlvYmogPSBhY3BpX2V2YWx1YXRlX2RzbShBQ1BJX0hBTkRMRShkZXYpLCBp bnRlbF9kc21fdXVpZCwgMCwgZm4sIE5VTEwpOworCW9iaiA9IGFjcGlfZXZhbHVhdGVfZHNtKEFD UElfSEFORExFKGRldiksICZpbnRlbF9kc21fdXVpZCwgMCwgZm4sIE5VTEwpOwogCWlmICghb2Jq KQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWlzYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQv aGlzaWxpY29uL2hucy9obnNfZHNhZl9taXNjLmMKaW5kZXggZTEzYWEwNjRhOGU5Li4wMjg0MmZl N2YxZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5z X2RzYWZfbWlzYy5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5z X2RzYWZfbWlzYy5jCkBAIC0yOSwxMCArMjksOSBAQCBlbnVtIF9kc21fcnN0X3R5cGUgewogCUhO U19ST0NFX1JFU0VUX0ZVTkMgICAgID0gMHg3LAogfTsKIAotY29uc3QgdTggaG5zX2RzYWZfYWNw aV9kc21fdXVpZFtdID0gewotCTB4MUEsIDB4QUEsIDB4ODUsIDB4MUEsIDB4OTMsIDB4RTIsIDB4 NUUsIDB4NDEsCi0JMHg4RSwgMHgyOCwgMHg4RCwgMHg2OSwgMHgwQSwgMHgwRiwgMHg4MiwgMHgw QQotfTsKK2NvbnN0IHV1aWRfbGUgaG5zX2RzYWZfYWNwaV9kc21fdXVpZCA9CisJVVVJRF9MRSgw eDFBODVBQTFBLCAweEUyOTMsIDB4NDE1RSwKKwkJMHg4RSwgMHgyOCwgMHg4RCwgMHg2OSwgMHgw QSwgMHgwRiwgMHg4MiwgMHgwQSk7CiAKIHN0YXRpYyB2b2lkIGRzYWZfd3JpdGVfc3ViKHN0cnVj dCBkc2FmX2RldmljZSAqZHNhZl9kZXYsIHUzMiByZWcsIHUzMiB2YWwpCiB7CkBAIC0xNTEsNyAr MTUwLDcgQEAgc3RhdGljIHZvaWQgaG5zX2RzYWZfYWNwaV9zcnN0X2J5X3BvcnQoc3RydWN0IGRz YWZfZGV2aWNlICpkc2FmX2RldiwgdTggb3BfdHlwZSwKIAlhcmd2NC5wYWNrYWdlLmVsZW1lbnRz ID0gb2JqX2FyZ3M7CiAKIAlvYmogPSBhY3BpX2V2YWx1YXRlX2RzbShBQ1BJX0hBTkRMRShkc2Fm X2Rldi0+ZGV2KSwKLQkJCQlobnNfZHNhZl9hY3BpX2RzbV91dWlkLCAwLCBvcF90eXBlLCAmYXJn djQpOworCQkJCSZobnNfZHNhZl9hY3BpX2RzbV91dWlkLCAwLCBvcF90eXBlLCAmYXJndjQpOwog CWlmICghb2JqKSB7CiAJCWRldl93YXJuKGRzYWZfZGV2LT5kZXYsICJyZXNldCBwb3J0X3R5cGUl ZCBwb3J0JWQgZmFpbCEiLAogCQkJIHBvcnRfdHlwZSwgcG9ydCk7CkBAIC00MzQsNyArNDMzLDcg QEAgc3RhdGljIHBoeV9pbnRlcmZhY2VfdCBobnNfbWFjX2dldF9waHlfaWZfYWNwaShzdHJ1Y3Qg aG5zX21hY19jYiAqbWFjX2NiKQogCWFyZ3Y0LnBhY2thZ2UuZWxlbWVudHMgPSAmb2JqX2FyZ3Ms CiAKIAlvYmogPSBhY3BpX2V2YWx1YXRlX2RzbShBQ1BJX0hBTkRMRShtYWNfY2ItPmRldiksCi0J CQkJaG5zX2RzYWZfYWNwaV9kc21fdXVpZCwgMCwKKwkJCQkmaG5zX2RzYWZfYWNwaV9kc21fdXVp ZCwgMCwKIAkJCQlITlNfT1BfR0VUX1BPUlRfVFlQRV9GVU5DLCAmYXJndjQpOwogCiAJaWYgKCFv YmogfHwgb2JqLT50eXBlICE9IEFDUElfVFlQRV9JTlRFR0VSKQpAQCAtNDc0LDcgKzQ3Myw3IEBA IGludCBobnNfbWFjX2dldF9zZnBfcHJzbnRfYWNwaShzdHJ1Y3QgaG5zX21hY19jYiAqbWFjX2Ni LCBpbnQgKnNmcF9wcnNudCkKIAlhcmd2NC5wYWNrYWdlLmVsZW1lbnRzID0gJm9ial9hcmdzLAog CiAJb2JqID0gYWNwaV9ldmFsdWF0ZV9kc20oQUNQSV9IQU5ETEUobWFjX2NiLT5kZXYpLAotCQkJ CWhuc19kc2FmX2FjcGlfZHNtX3V1aWQsIDAsCisJCQkJJmhuc19kc2FmX2FjcGlfZHNtX3V1aWQs IDAsCiAJCQkJSE5TX09QX0dFVF9TRlBfU1RBVF9GVU5DLCAmYXJndjQpOwogCiAJaWYgKCFvYmog fHwgb2JqLT50eXBlICE9IEFDUElfVFlQRV9JTlRFR0VSKQpAQCAtNTY1LDcgKzU2NCw3IEBAIGhu c19tYWNfY29uZmlnX3Nkc19sb29wYmFja19hY3BpKHN0cnVjdCBobnNfbWFjX2NiICptYWNfY2Is IGJvb2wgZW4pCiAJYXJndjQucGFja2FnZS5lbGVtZW50cyA9IG9ial9hcmdzOwogCiAJb2JqID0g YWNwaV9ldmFsdWF0ZV9kc20oQUNQSV9IQU5ETEUobWFjX2NiLT5kc2FmX2Rldi0+ZGV2KSwKLQkJ CQlobnNfZHNhZl9hY3BpX2RzbV91dWlkLCAwLAorCQkJCSZobnNfZHNhZl9hY3BpX2RzbV91dWlk LCAwLAogCQkJCUhOU19PUF9TRVJERVNfTFBfRlVOQywgJmFyZ3Y0KTsKIAlpZiAoIW9iaikgewog CQlkZXZfd2FybihtYWNfY2ItPmRzYWZfZGV2LT5kZXYsICJzZXQgcG9ydCVkIHNlcmRlcyBscCBm YWlsISIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wY2ktYWNwaS5jIGIvZHJpdmVycy9wY2kv cGNpLWFjcGkuYwppbmRleCAwMDE4NjAzNjE0MzQuLmViNjEyMTIzZTBkZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9wY2kvcGNpLWFjcGkuYworKysgYi9kcml2ZXJzL3BjaS9wY2ktYWNwaS5jCkBAIC0y NCwxMCArMjQsOSBAQAogICogVGhlIFVVSUQgaXMgZGVmaW5lZCBpbiB0aGUgUENJIEZpcm13YXJl IFNwZWNpZmljYXRpb24gYXZhaWxhYmxlIGhlcmU6CiAgKiBodHRwczovL3d3dy5wY2lzaWcuY29t L21lbWJlcnMvZG93bmxvYWRzL3BjaWZ3X3IzXzFfMTNEZWMxMC5wZGYKICAqLwotY29uc3QgdTgg cGNpX2FjcGlfZHNtX3V1aWRbXSA9IHsKLQkweGQwLCAweDM3LCAweGM5LCAweGU1LCAweDUzLCAw eDM1LCAweDdhLCAweDRkLAotCTB4OTEsIDB4MTcsIDB4ZWEsIDB4NGQsIDB4MTksIDB4YzMsIDB4 NDMsIDB4NGQKLX07Citjb25zdCB1dWlkX2xlIHBjaV9hY3BpX2RzbV91dWlkID0KKwlVVUlEX0xF KDB4ZTVjOTM3ZDAsIDB4MzU1MywgMHg0ZDdhLAorCQkweDkxLCAweDE3LCAweGVhLCAweDRkLCAw eDE5LCAweGMzLCAweDQzLCAweDRkKTsKIAogI2lmIGRlZmluZWQoQ09ORklHX1BDSV9RVUlSS1Mp ICYmIGRlZmluZWQoQ09ORklHX0FSTTY0KQogc3RhdGljIGludCBhY3BpX2dldF9yY19hZGRyKHN0 cnVjdCBhY3BpX2RldmljZSAqYWRldiwgc3RydWN0IHJlc291cmNlICpyZXMpCkBAIC02ODAsNyAr Njc5LDcgQEAgdm9pZCBhY3BpX3BjaV9hZGRfYnVzKHN0cnVjdCBwY2lfYnVzICpidXMpCiAJaWYg KCFwY2lfaXNfcm9vdF9idXMoYnVzKSkKIAkJcmV0dXJuOwogCi0Jb2JqID0gYWNwaV9ldmFsdWF0 ZV9kc20oQUNQSV9IQU5ETEUoYnVzLT5icmlkZ2UpLCBwY2lfYWNwaV9kc21fdXVpZCwgMywKKwlv YmogPSBhY3BpX2V2YWx1YXRlX2RzbShBQ1BJX0hBTkRMRShidXMtPmJyaWRnZSksICZwY2lfYWNw aV9kc21fdXVpZCwgMywKIAkJCQlSRVNFVF9ERUxBWV9EU00sIE5VTEwpOwogCWlmICghb2JqKQog CQlyZXR1cm47CkBAIC03NDUsNyArNzQ0LDcgQEAgc3RhdGljIHZvaWQgcGNpX2FjcGlfb3B0aW1p emVfZGVsYXkoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJaWYgKGJyaWRnZS0+aWdub3JlX3Jlc2V0 X2RlbGF5KQogCQlwZGV2LT5kM2NvbGRfZGVsYXkgPSAwOwogCi0Jb2JqID0gYWNwaV9ldmFsdWF0 ZV9kc20oaGFuZGxlLCBwY2lfYWNwaV9kc21fdXVpZCwgMywKKwlvYmogPSBhY3BpX2V2YWx1YXRl X2RzbShoYW5kbGUsICZwY2lfYWNwaV9kc21fdXVpZCwgMywKIAkJCQlGVU5DVElPTl9ERUxBWV9E U00sIE5VTEwpOwogCWlmICghb2JqKQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bj aS9wY2ktbGFiZWwuYyBiL2RyaXZlcnMvcGNpL3BjaS1sYWJlbC5jCmluZGV4IDUxMzU3Mzc3ZWZi Yy4uYTJjMDQyMjlmMWRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9wY2ktbGFiZWwuYworKysg Yi9kcml2ZXJzL3BjaS9wY2ktbGFiZWwuYwpAQCAtMTcyLDcgKzE3Miw3IEBAIHN0YXRpYyBpbnQg ZHNtX2dldF9sYWJlbChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKmJ1ZiwKIAlpZiAoIWhhbmRs ZSkKIAkJcmV0dXJuIC0xOwogCi0Jb2JqID0gYWNwaV9ldmFsdWF0ZV9kc20oaGFuZGxlLCBwY2lf YWNwaV9kc21fdXVpZCwgMHgyLAorCW9iaiA9IGFjcGlfZXZhbHVhdGVfZHNtKGhhbmRsZSwgJnBj aV9hY3BpX2RzbV91dWlkLCAweDIsCiAJCQkJREVWSUNFX0xBQkVMX0RTTSwgTlVMTCk7CiAJaWYg KCFvYmopCiAJCXJldHVybiAtMTsKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdGF0aWMgYm9vbCBkZXZp Y2VfaGFzX2RzbShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJaWYgKCFoYW5kbGUpCiAJCXJldHVybiBm YWxzZTsKIAotCXJldHVybiAhIWFjcGlfY2hlY2tfZHNtKGhhbmRsZSwgcGNpX2FjcGlfZHNtX3V1 aWQsIDB4MiwKKwlyZXR1cm4gISFhY3BpX2NoZWNrX2RzbShoYW5kbGUsICZwY2lfYWNwaV9kc21f dXVpZCwgMHgyLAogCQkJCTEgPDwgREVWSUNFX0xBQkVMX0RTTSk7CiB9CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvdGhlcm1hbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmMgYi9kcml2 ZXJzL3RoZXJtYWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jCmluZGV4IDk0MTNj NGFiZjBiOS4uYzBlYjNiYjE5YjIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RoZXJtYWwvaW50MzQw eF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jCisrKyBiL2RyaXZlcnMvdGhlcm1hbC9pbnQzNDB4 X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmMKQEAgLTIzLDcgKzIzLDcgQEAgZW51bSBpbnQzNDAw X3RoZXJtYWxfdXVpZCB7CiAJSU5UMzQwMF9USEVSTUFMX01BWElNVU1fVVVJRCwKIH07CiAKLXN0 YXRpYyB1OCAqaW50MzQwMF90aGVybWFsX3V1aWRzW0lOVDM0MDBfVEhFUk1BTF9NQVhJTVVNX1VV SURdID0geworc3RhdGljIGNvbnN0IGNoYXIgKmludDM0MDBfdGhlcm1hbF91dWlkc1tJTlQzNDAw X1RIRVJNQUxfTUFYSU1VTV9VVUlEXSA9IHsKIAkiNDJBNDQxRDYtQUU2QS00NjJiLUE4NEItNEE4 Q0U3OTAyN0QzIiwKIAkiM0E5NUMzODktRTRCOC00NjI5LUE1MjYtQzUyQzg4NjI2QkFFIiwKIAki OTdDNjhBRTctMTVGQS00OTljLUI4QzktNURBODFENjA2RTBBIiwKQEAgLTE0MSwxMCArMTQxLDEw IEBAIHN0YXRpYyBpbnQgaW50MzQwMF90aGVybWFsX2dldF91dWlkcyhzdHJ1Y3QgaW50MzQwMF90 aGVybWFsX3ByaXYgKnByaXYpCiAJCX0KIAogCQlmb3IgKGogPSAwOyBqIDwgSU5UMzQwMF9USEVS TUFMX01BWElNVU1fVVVJRDsgaisrKSB7Ci0JCQl1OCB1dWlkWzE2XTsKKwkJCXV1aWRfbGUgdTsK IAotCQkJYWNwaV9zdHJfdG9fdXVpZChpbnQzNDAwX3RoZXJtYWxfdXVpZHNbal0sIHV1aWQpOwot CQkJaWYgKCFzdHJuY21wKHV1aWQsIG9iamItPmJ1ZmZlci5wb2ludGVyLCAxNikpIHsKKwkJCXV1 aWRfbGVfdG9fYmluKGludDM0MDBfdGhlcm1hbF91dWlkc1tqXSwgJnUpOworCQkJaWYgKCF1dWlk X2xlX2NtcCgqKHV1aWRfbGUgKilvYmpiLT5idWZmZXIucG9pbnRlciksIHUpIHsKIAkJCQlwcml2 LT51dWlkX2JpdG1hcCB8PSAoMSA8PCBqKTsKIAkJCQlicmVhazsKIAkJCX0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvdXNiL2R3YzMvZHdjMy1wY2kuYyBiL2RyaXZlcnMvdXNiL2R3YzMvZHdjMy1wY2ku YwppbmRleCBhMTVlYzcxZDA0MjMuLjZiNTI4NGVjNzZkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91 c2IvZHdjMy9kd2MzLXBjaS5jCisrKyBiL2RyaXZlcnMvdXNiL2R3YzMvZHdjMy1wY2kuYwpAQCAt NTYsNyArNTYsNyBAQCBzdHJ1Y3QgZHdjM19wY2kgewogCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KmR3YzM7CiAJc3RydWN0IHBjaV9kZXYgKnBjaTsKIAotCXU4IHV1aWRbMTZdOworCXV1aWRfbGUg dXVpZDsKIAogCXVuc2lnbmVkIGludCBoYXNfZHNtX2Zvcl9wbToxOwogfTsKQEAgLTExOCw3ICsx MTgsNyBAQCBzdGF0aWMgaW50IGR3YzNfcGNpX3F1aXJrcyhzdHJ1Y3QgZHdjM19wY2kgKmR3YykK IAogCQlpZiAocGRldi0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfSU5URUxfQlhUIHx8CiAJCQkJ cGRldi0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfSU5URUxfQlhUX00pIHsKLQkJCWFjcGlfc3Ry X3RvX3V1aWQoUENJX0lOVEVMX0JYVF9EU01fVVVJRCwgZHdjLT51dWlkKTsKKwkJCXV1aWRfbGVf dG9fYmluKFBDSV9JTlRFTF9CWFRfRFNNX1VVSUQsICZkd2MtPnV1aWQpOwogCQkJZHdjLT5oYXNf ZHNtX2Zvcl9wbSA9IHRydWU7CiAJCX0KIApAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyBpbnQg ZHdjM19wY2lfZHNtKHN0cnVjdCBkd2MzX3BjaSAqZHdjLCBpbnQgcGFyYW0pCiAJdG1wLnR5cGUg PSBBQ1BJX1RZUEVfSU5URUdFUjsKIAl0bXAuaW50ZWdlci52YWx1ZSA9IHBhcmFtOwogCi0Jb2Jq ID0gYWNwaV9ldmFsdWF0ZV9kc20oQUNQSV9IQU5ETEUoJmR3Yy0+cGNpLT5kZXYpLCBkd2MtPnV1 aWQsCisJb2JqID0gYWNwaV9ldmFsdWF0ZV9kc20oQUNQSV9IQU5ETEUoJmR3Yy0+cGNpLT5kZXYp LCAmZHdjLT51dWlkLAogCQkJMSwgUENJX0lOVEVMX0JYVF9GVU5DX1BNVV9QV1IsICZhcmd2NCk7 CiAJaWYgKCFvYmopIHsKIAkJZGV2X2VycigmZHdjLT5wY2ktPmRldiwgImZhaWxlZCB0byBldmFs dWF0ZSBfRFNNXG4iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1wY2kuYyBi L2RyaXZlcnMvdXNiL2hvc3QveGhjaS1wY2kuYwppbmRleCA3Yjg2NTA4YWM4Y2YuLjkzYjRmMGRl OTQxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC94aGNpLXBjaS5jCisrKyBiL2RyaXZl cnMvdXNiL2hvc3QveGhjaS1wY2kuYwpAQCAtMjEwLDEzICsyMTAsMTIgQEAgc3RhdGljIHZvaWQg eGhjaV9wY2lfcXVpcmtzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHhoY2lfaGNkICp4aGNp KQogI2lmZGVmIENPTkZJR19BQ1BJCiBzdGF0aWMgdm9pZCB4aGNpX3BtZV9hY3BpX3J0ZDNfZW5h YmxlKHN0cnVjdCBwY2lfZGV2ICpkZXYpCiB7Ci0Jc3RhdGljIGNvbnN0IHU4IGludGVsX2RzbV91 dWlkW10gPSB7Ci0JCTB4YjcsIDB4MGMsIDB4MzQsIDB4YWMsCTB4MDEsIDB4ZTksIDB4YmYsIDB4 NDUsCi0JCTB4YjcsIDB4ZTYsIDB4MmIsIDB4MzQsIDB4ZWMsIDB4OTMsIDB4MWUsIDB4MjMsCi0J fTsKKwlzdGF0aWMgY29uc3QgdXVpZF9sZSBpbnRlbF9kc21fdXVpZCA9CisJCVVVSURfTEUoMHhh YzM0MGNiNywgMHhlOTAxLCAweDQ1YmYsCisJCQkweGI3LCAweGU2LCAweDJiLCAweDM0LCAweGVj LCAweDkzLCAweDFlLCAweDIzKTsKIAl1bmlvbiBhY3BpX29iamVjdCAqb2JqOwogCi0Jb2JqID0g YWNwaV9ldmFsdWF0ZV9kc20oQUNQSV9IQU5ETEUoJmRldi0+ZGV2KSwgaW50ZWxfZHNtX3V1aWQs IDMsIDEsCisJb2JqID0gYWNwaV9ldmFsdWF0ZV9kc20oQUNQSV9IQU5ETEUoJmRldi0+ZGV2KSwg JmludGVsX2RzbV91dWlkLCAzLCAxLAogCQkJCU5VTEwpOwogCUFDUElfRlJFRShvYmopOwogfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy91Y3NpLmMgYi9kcml2ZXJzL3VzYi9taXNjL3Vj c2kuYwppbmRleCAwNzM5N2JkZGVmYTMuLjQ5ZTMyZmZiZTU5ZiAxMDA2NDQKLS0tIGEvZHJpdmVy cy91c2IvbWlzYy91Y3NpLmMKKysrIGIvZHJpdmVycy91c2IvbWlzYy91Y3NpLmMKQEAgLTYxLDcg KzYxLDcgQEAgc3RhdGljIGludCB1Y3NpX2FjcGlfY21kKHN0cnVjdCB1Y3NpICp1Y3NpLCBzdHJ1 Y3QgdWNzaV9jb250cm9sICpjdHJsKQogCiAJdWNzaS0+ZGF0YS0+Y3RybC5yYXdfY21kID0gY3Ry bC0+cmF3X2NtZDsKIAotCW9iaiA9IGFjcGlfZXZhbHVhdGVfZHNtKEFDUElfSEFORExFKHVjc2kt PmRldiksIHV1aWQuYiwgMSwgMSwgTlVMTCk7CisJb2JqID0gYWNwaV9ldmFsdWF0ZV9kc20oQUNQ SV9IQU5ETEUodWNzaS0+ZGV2KSwgJnV1aWQsIDEsIDEsIE5VTEwpOwogCWlmICghb2JqKSB7CiAJ CWRldl9lcnIodWNzaS0+ZGV2LCAiJXM6IGZhaWxlZCB0byBldmFsdWF0ZSBfRFNNXG4iLCBfX2Z1 bmNfXyk7CiAJCXJldHVybiAtRUlPOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvdHlw ZWNfd2NvdmUuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3R5cGVjX3djb3ZlLmMKaW5kZXggZDVhN2Iy MWZhM2YxLi41Y2U5M2UwYTE1Y2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL3R5cGVj X3djb3ZlLmMKKysrIGIvZHJpdmVycy91c2IvdHlwZWMvdHlwZWNfd2NvdmUuYwpAQCAtMTE4LDcg KzExOCw3IEBAIHN0YXRpYyBpbnQgd2NvdmVfdHlwZWNfZnVuYyhzdHJ1Y3Qgd2NvdmVfdHlwZWMg Kndjb3ZlLAogCXRtcC50eXBlID0gQUNQSV9UWVBFX0lOVEVHRVI7CiAJdG1wLmludGVnZXIudmFs dWUgPSBwYXJhbTsKIAotCW9iaiA9IGFjcGlfZXZhbHVhdGVfZHNtKEFDUElfSEFORExFKHdjb3Zl LT5kZXYpLCB1dWlkLmIsIDEsIGZ1bmMsCisJb2JqID0gYWNwaV9ldmFsdWF0ZV9kc20oQUNQSV9I QU5ETEUod2NvdmUtPmRldiksICZ1dWlkLCAxLCBmdW5jLAogCQkJCSZhcmd2NCk7CiAJaWYgKCFv YmopIHsKIAkJZGV2X2Vycih3Y292ZS0+ZGV2LCAiJXM6IGZhaWxlZCB0byBldmFsdWF0ZSBfRFNN XG4iLCBfX2Z1bmNfXyk7CkBAIC0zMTQsNyArMzE0LDcgQEAgc3RhdGljIGludCB3Y292ZV90eXBl Y19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKLQlpZiAoIWFjcGlfY2hlY2tfZHNtKEFDUElfSEFORExFKCZwZGV2LT5kZXYpLCB1 dWlkLmIsIDAsIDB4MWYpKSB7CisJaWYgKCFhY3BpX2NoZWNrX2RzbShBQ1BJX0hBTkRMRSgmcGRl di0+ZGV2KSwgJnV1aWQsIDAsIDB4MWYpKSB7CiAJCWRldl9lcnIoJnBkZXYtPmRldiwgIk1pc3Np bmcgX0RTTSBmdW5jdGlvbnNcbiIpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CmRpZmYgLS1naXQg YS9pbmNsdWRlL2FjcGkvYWNwaV9idXMuaCBiL2luY2x1ZGUvYWNwaS9hY3BpX2J1cy5oCmluZGV4 IDE5N2YzZmZmYzlhNy4uMDY4Mjk0MmQ2YTc2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWNw aV9idXMuaAorKysgYi9pbmNsdWRlL2FjcGkvYWNwaV9idXMuaApAQCAtNjEsMTMgKzYxLDE0IEBA IGJvb2wgYWNwaV9hdGFfbWF0Y2goYWNwaV9oYW5kbGUgaGFuZGxlKTsKIGJvb2wgYWNwaV9iYXlf bWF0Y2goYWNwaV9oYW5kbGUgaGFuZGxlKTsKIGJvb2wgYWNwaV9kb2NrX21hdGNoKGFjcGlfaGFu ZGxlIGhhbmRsZSk7CiAKLWJvb2wgYWNwaV9jaGVja19kc20oYWNwaV9oYW5kbGUgaGFuZGxlLCBj b25zdCB1OCAqdXVpZCwgdTY0IHJldiwgdTY0IGZ1bmNzKTsKLXVuaW9uIGFjcGlfb2JqZWN0ICph Y3BpX2V2YWx1YXRlX2RzbShhY3BpX2hhbmRsZSBoYW5kbGUsIGNvbnN0IHU4ICp1dWlkLAorYm9v bCBhY3BpX2NoZWNrX2RzbShhY3BpX2hhbmRsZSBoYW5kbGUsIGNvbnN0IHV1aWRfbGUgKnV1aWQs IHU2NCByZXYsIHU2NCBmdW5jcyk7Cit1bmlvbiBhY3BpX29iamVjdCAqYWNwaV9ldmFsdWF0ZV9k c20oYWNwaV9oYW5kbGUgaGFuZGxlLCBjb25zdCB1dWlkX2xlICp1dWlkLAogCQkJdTY0IHJldiwg dTY0IGZ1bmMsIHVuaW9uIGFjcGlfb2JqZWN0ICphcmd2NCk7CiAKIHN0YXRpYyBpbmxpbmUgdW5p b24gYWNwaV9vYmplY3QgKgotYWNwaV9ldmFsdWF0ZV9kc21fdHlwZWQoYWNwaV9oYW5kbGUgaGFu ZGxlLCBjb25zdCB1OCAqdXVpZCwgdTY0IHJldiwgdTY0IGZ1bmMsCi0JCQl1bmlvbiBhY3BpX29i amVjdCAqYXJndjQsIGFjcGlfb2JqZWN0X3R5cGUgdHlwZSkKK2FjcGlfZXZhbHVhdGVfZHNtX3R5 cGVkKGFjcGlfaGFuZGxlIGhhbmRsZSwgY29uc3QgdXVpZF9sZSAqdXVpZCwgdTY0IHJldiwKKwkJ CXU2NCBmdW5jLCB1bmlvbiBhY3BpX29iamVjdCAqYXJndjQsCisJCQlhY3BpX29iamVjdF90eXBl IHR5cGUpCiB7CiAJdW5pb24gYWNwaV9vYmplY3QgKm9iajsKIApkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9saW51eC9hY3BpLmggYi9pbmNsdWRlL2xpbnV4L2FjcGkuaAppbmRleCAxMzdlNGEzZDg5YzUu LjY2ZDEzNTAwMzc4MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9hY3BpLmgKKysrIGIvaW5j bHVkZS9saW51eC9hY3BpLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxsaW51eC9keW5h bWljX2RlYnVnLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgv bXV0ZXguaD4KKyNpbmNsdWRlIDxsaW51eC91dWlkLmg+CiAKICNpbmNsdWRlIDxhY3BpL2FjcGlf YnVzLmg+CiAjaW5jbHVkZSA8YWNwaS9hY3BpX2RyaXZlcnMuaD4KQEAgLTQ1Nyw3ICs0NTgsNiBA QCBzdHJ1Y3QgYWNwaV9vc2NfY29udGV4dCB7CiAJc3RydWN0IGFjcGlfYnVmZmVyIHJldDsJCS8q IGZyZWUgYnkgY2FsbGVyIGlmIHN1Y2Nlc3MgKi8KIH07CiAKLWFjcGlfc3RhdHVzIGFjcGlfc3Ry X3RvX3V1aWQoY2hhciAqc3RyLCB1OCAqdXVpZCk7CiBhY3BpX3N0YXR1cyBhY3BpX3J1bl9vc2Mo YWNwaV9oYW5kbGUgaGFuZGxlLCBzdHJ1Y3QgYWNwaV9vc2NfY29udGV4dCAqY29udGV4dCk7CiAK IC8qIEluZGV4ZXMgaW50byBfT1NDIENhcGFiaWxpdGllcyBCdWZmZXIgKERXT1JEcyAyICYgMyBh cmUgZGV2aWNlLXNwZWNpZmljKSAqLwpAQCAtNzQxLDcgKzc0MSw3IEBAIHN0YXRpYyBpbmxpbmUg Ym9vbCBhY3BpX2RyaXZlcl9tYXRjaF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LAogfQogCiBz dGF0aWMgaW5saW5lIHVuaW9uIGFjcGlfb2JqZWN0ICphY3BpX2V2YWx1YXRlX2RzbShhY3BpX2hh bmRsZSBoYW5kbGUsCi0JCQkJCQkgICBjb25zdCB1OCAqdXVpZCwKKwkJCQkJCSAgIGNvbnN0IHV1 aWRfbGUgKnV1aWQsCiAJCQkJCQkgICBpbnQgcmV2LCBpbnQgZnVuYywKIAkJCQkJCSAgIHVuaW9u IGFjcGlfb2JqZWN0ICphcmd2NCkKIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGNpLWFj cGkuaCBiL2luY2x1ZGUvbGludXgvcGNpLWFjcGkuaAppbmRleCA3YTRlODNhOGM4OWMuLjkxN2E2 YWQwZjI0ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wY2ktYWNwaS5oCisrKyBiL2luY2x1 ZGUvbGludXgvcGNpLWFjcGkuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBhY3BpcGhwX3JlbW92ZV9zbG90cyhzdHJ1Y3QgcGNpX2J1cyAqYnVzKSB7IH0KIHN0YXRpYyBp bmxpbmUgdm9pZCBhY3BpcGhwX2NoZWNrX2hvc3RfYnJpZGdlKHN0cnVjdCBhY3BpX2RldmljZSAq YWRldikgeyB9CiAjZW5kaWYKIAotZXh0ZXJuIGNvbnN0IHU4IHBjaV9hY3BpX2RzbV91dWlkW107 CitleHRlcm4gY29uc3QgdXVpZF9sZSBwY2lfYWNwaV9kc21fdXVpZDsKICNkZWZpbmUgREVWSUNF X0xBQkVMX0RTTQkweDA3CiAjZGVmaW5lIFJFU0VUX0RFTEFZX0RTTQkJMHgwOAogI2RlZmluZSBG VU5DVElPTl9ERUxBWV9EU00JMHgwOQpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2ludGVsL3NreWxh a2Uvc2tsLW5obHQuYyBiL3NvdW5kL3NvYy9pbnRlbC9za3lsYWtlL3NrbC1uaGx0LmMKaW5kZXgg ZTNmMDY2NzJmZDZkLi5iOTVmNjU5ZGNlZDUgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9pbnRlbC9z a3lsYWtlL3NrbC1uaGx0LmMKKysrIGIvc291bmQvc29jL2ludGVsL3NreWxha2Uvc2tsLW5obHQu YwpAQCAtMjEsOCArMjEsOSBAQAogI2luY2x1ZGUgInNrbC5oIgogCiAvKiBVbmlxdWUgaWRlbnRp ZmljYXRpb24gZm9yIGdldHRpbmcgTkhMVCBibG9icyAqLwotc3RhdGljIHU4IE9TQ19VVUlEWzE2 XSA9IHsweDZFLCAweDg4LCAweDlGLCAweEE2LCAweEVCLCAweDZDLCAweDk0LCAweDQ1LAotCQkJ CTB4QTQsIDB4MUYsIDB4N0IsIDB4NUQsIDB4Q0UsIDB4MjQsIDB4QzUsIDB4NTN9Oworc3RhdGlj IHV1aWRfbGUgb3NjX3V1aWQgPQorCVVVSURfTEUoMHhBNjlGODg2RSwgMHg2Q0VCLCAweDQ1OTQs CisJCTB4QTQsIDB4MUYsIDB4N0IsIDB4NUQsIDB4Q0UsIDB4MjQsIDB4QzUsIDB4NTMpOwogCiBz dHJ1Y3QgbmhsdF9hY3BpX3RhYmxlICpza2xfbmhsdF9pbml0KHN0cnVjdCBkZXZpY2UgKmRldikK IHsKQEAgLTM3LDcgKzM4LDcgQEAgc3RydWN0IG5obHRfYWNwaV90YWJsZSAqc2tsX25obHRfaW5p dChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCXJldHVybiBOVUxMOwogCX0KIAotCW9iaiA9IGFjcGlf ZXZhbHVhdGVfZHNtKGhhbmRsZSwgT1NDX1VVSUQsIDEsIDEsIE5VTEwpOworCW9iaiA9IGFjcGlf ZXZhbHVhdGVfZHNtKGhhbmRsZSwgJm9zY191dWlkLCAxLCAxLCBOVUxMKTsKIAlpZiAob2JqICYm IG9iai0+dHlwZSA9PSBBQ1BJX1RZUEVfQlVGRkVSKSB7CiAJCW5obHRfcHRyID0gKHN0cnVjdCBu aGx0X3Jlc291cmNlX2Rlc2MgICopb2JqLT5idWZmZXIucG9pbnRlcjsKIAkJbmhsdF90YWJsZSA9 IChzdHJ1Y3QgbmhsdF9hY3BpX3RhYmxlICopCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL252 ZGltbS90ZXN0L2lvbWFwLmMgYi90b29scy90ZXN0aW5nL252ZGltbS90ZXN0L2lvbWFwLmMKaW5k ZXggNjRjYWUxYTVkZWZmLi5mMTkwZjIyYzUzZGQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcv bnZkaW1tL3Rlc3QvaW9tYXAuYworKysgYi90b29scy90ZXN0aW5nL252ZGltbS90ZXN0L2lvbWFw LmMKQEAgLTM3MCw3ICszNzAsNyBAQCBhY3BpX3N0YXR1cyBfX3dyYXBfYWNwaV9ldmFsdWF0ZV9v YmplY3QoYWNwaV9oYW5kbGUgaGFuZGxlLCBhY3BpX3N0cmluZyBwYXRoLAogfQogRVhQT1JUX1NZ TUJPTChfX3dyYXBfYWNwaV9ldmFsdWF0ZV9vYmplY3QpOwogCi11bmlvbiBhY3BpX29iamVjdCAq IF9fd3JhcF9hY3BpX2V2YWx1YXRlX2RzbShhY3BpX2hhbmRsZSBoYW5kbGUsIGNvbnN0IHU4ICp1 dWlkLAordW5pb24gYWNwaV9vYmplY3QgKiBfX3dyYXBfYWNwaV9ldmFsdWF0ZV9kc20oYWNwaV9o YW5kbGUgaGFuZGxlLCBjb25zdCB1dWlkX2xlICp1dWlkLAogCQl1NjQgcmV2LCB1NjQgZnVuYywg dW5pb24gYWNwaV9vYmplY3QgKmFyZ3Y0KQogewogCXVuaW9uIGFjcGlfb2JqZWN0ICpvYmogPSBF UlJfUFRSKC1FTlhJTyk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL252ZGltbS90ZXN0L25m aXQuYyBiL3Rvb2xzL3Rlc3RpbmcvbnZkaW1tL3Rlc3QvbmZpdC5jCmluZGV4IGMyMTg3MTc4ZmIx My4uMTQ1ZjZlZTAyMzRmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL252ZGltbS90ZXN0L25m aXQuYworKysgYi90b29scy90ZXN0aW5nL252ZGltbS90ZXN0L25maXQuYwpAQCAtMTU1OSw3ICsx NTU5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbmZpdF9jdGxfaGFuZGxlOwogdW5pb24gYWNw aV9vYmplY3QgKnJlc3VsdDsKIAogc3RhdGljIHVuaW9uIGFjcGlfb2JqZWN0ICpuZml0X3Rlc3Rf ZXZhbHVhdGVfZHNtKGFjcGlfaGFuZGxlIGhhbmRsZSwKLQkJY29uc3QgdTggKnV1aWQsIHU2NCBy ZXYsIHU2NCBmdW5jLCB1bmlvbiBhY3BpX29iamVjdCAqYXJndjQpCisJCWNvbnN0IHV1aWRfbGUg KnV1aWQsIHU2NCByZXYsIHU2NCBmdW5jLCB1bmlvbiBhY3BpX29iamVjdCAqYXJndjQpCiB7CiAJ aWYgKGhhbmRsZSAhPSAmbmZpdF9jdGxfaGFuZGxlKQogCQlyZXR1cm4gRVJSX1BUUigtRU5YSU8p OwotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Andy Shevchenko To: linux-acpi@vger.kernel.org, tpmdd-devel@lists.sourceforge.net, intel-gfx@lists.freedesktop.org, nouveau@lists.freedesktop.org, linux-input@vger.kernel.org, iommu@lists.linux-foundation.org, linux-mmc@vger.kernel.org, netdev@vger.kernel.org, linux-pci@vger.kernel.org, linux-usb@vger.kernel.org, alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org Cc: Andy Shevchenko , "Rafael J . Wysocki" , Mika Westerberg , Borislav Petkov , Dan Williams , Amir Goldstein , Jarkko Sakkinen , Jani Nikula , Ben Skeggs , Benjamin Tissoires , Joerg Roedel , Adrian Hunter , Yisen Zhuang , Bjorn Helgaas , Zhang Rui , Felipe Balbi , Mathias Nyman , Heikki Krogerus , Liam Girdwood , Mark Brown Subject: [PATCH v1] ACPI: Switch to use generic UUID API Date: Thu, 4 May 2017 12:21:51 +0300 Message-Id: <20170504092151.88646-1-andriy.shevchenko@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: acpi_evaluate_dsm() and friends take a pointer to a raw buffer of 16 bytes. Instead we convert them to use uuid_le type. At the same time we convert current users. acpi_str_to_uuid() becomes useless after the conversion and it's safe to get rid of it. The conversion fixes a potential bug in int340x_thermal as well since we have to use memcmp() on binary data. Cc: Rafael J. Wysocki Cc: Mika Westerberg Cc: Borislav Petkov Cc: Dan Williams Cc: Amir Goldstein Cc: Jarkko Sakkinen Cc: Jani Nikula Cc: Ben Skeggs Cc: Benjamin Tissoires Cc: Joerg Roedel Cc: Adrian Hunter Cc: Yisen Zhuang Cc: Bjorn Helgaas Cc: Zhang Rui Cc: Felipe Balbi Cc: Mathias Nyman Cc: Heikki Krogerus Cc: Liam Girdwood Cc: Mark Brown Signed-off-by: Andy Shevchenko --- drivers/acpi/acpi_extlog.c | 10 +++--- drivers/acpi/bus.c | 29 ++-------------- drivers/acpi/nfit/core.c | 40 +++++++++++----------- drivers/acpi/nfit/nfit.h | 3 +- drivers/acpi/utils.c | 4 +-- drivers/char/tpm/tpm_crb.c | 9 +++-- drivers/char/tpm/tpm_ppi.c | 20 +++++------ drivers/gpu/drm/i915/intel_acpi.c | 14 +++----- drivers/gpu/drm/nouveau/nouveau_acpi.c | 20 +++++------ drivers/gpu/drm/nouveau/nvkm/subdev/mxm/base.c | 9 +++-- drivers/hid/i2c-hid/i2c-hid.c | 9 +++-- drivers/iommu/dmar.c | 11 +++--- drivers/mmc/host/sdhci-pci-core.c | 9 +++-- drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c | 15 ++++---- drivers/pci/pci-acpi.c | 11 +++--- drivers/pci/pci-label.c | 4 +-- drivers/thermal/int340x_thermal/int3400_thermal.c | 8 ++--- drivers/usb/dwc3/dwc3-pci.c | 6 ++-- drivers/usb/host/xhci-pci.c | 9 +++-- drivers/usb/misc/ucsi.c | 2 +- drivers/usb/typec/typec_wcove.c | 4 +-- include/acpi/acpi_bus.h | 9 ++--- include/linux/acpi.h | 4 +-- include/linux/pci-acpi.h | 2 +- sound/soc/intel/skylake/skl-nhlt.c | 7 ++-- tools/testing/nvdimm/test/iomap.c | 2 +- tools/testing/nvdimm/test/nfit.c | 2 +- 27 files changed, 116 insertions(+), 156 deletions(-) diff --git a/drivers/acpi/acpi_extlog.c b/drivers/acpi/acpi_extlog.c index 502ea4dc2080..69d6140b6afa 100644 --- a/drivers/acpi/acpi_extlog.c +++ b/drivers/acpi/acpi_extlog.c @@ -182,17 +182,17 @@ static int extlog_print(struct notifier_block *nb, unsigned long val, static bool __init extlog_get_l1addr(void) { - u8 uuid[16]; + uuid_le uuid; acpi_handle handle; union acpi_object *obj; - acpi_str_to_uuid(extlog_dsm_uuid, uuid); - + if (uuid_le_to_bin(extlog_dsm_uuid, &uuid)) + return false; if (ACPI_FAILURE(acpi_get_handle(NULL, "\\_SB", &handle))) return false; - if (!acpi_check_dsm(handle, uuid, EXTLOG_DSM_REV, 1 << EXTLOG_FN_ADDR)) + if (!acpi_check_dsm(handle, &uuid, EXTLOG_DSM_REV, 1 << EXTLOG_FN_ADDR)) return false; - obj = acpi_evaluate_dsm_typed(handle, uuid, EXTLOG_DSM_REV, + obj = acpi_evaluate_dsm_typed(handle, &uuid, EXTLOG_DSM_REV, EXTLOG_FN_ADDR, NULL, ACPI_TYPE_INTEGER); if (!obj) { return false; diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index 784bda663d16..e8130a4873e9 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -196,42 +196,19 @@ static void acpi_print_osc_error(acpi_handle handle, pr_debug("\n"); } -acpi_status acpi_str_to_uuid(char *str, u8 *uuid) -{ - int i; - static int opc_map_to_uuid[16] = {6, 4, 2, 0, 11, 9, 16, 14, 19, 21, - 24, 26, 28, 30, 32, 34}; - - if (strlen(str) != 36) - return AE_BAD_PARAMETER; - for (i = 0; i < 36; i++) { - if (i == 8 || i == 13 || i == 18 || i == 23) { - if (str[i] != '-') - return AE_BAD_PARAMETER; - } else if (!isxdigit(str[i])) - return AE_BAD_PARAMETER; - } - for (i = 0; i < 16; i++) { - uuid[i] = hex_to_bin(str[opc_map_to_uuid[i]]) << 4; - uuid[i] |= hex_to_bin(str[opc_map_to_uuid[i] + 1]); - } - return AE_OK; -} -EXPORT_SYMBOL_GPL(acpi_str_to_uuid); - acpi_status acpi_run_osc(acpi_handle handle, struct acpi_osc_context *context) { acpi_status status; struct acpi_object_list input; union acpi_object in_params[4]; union acpi_object *out_obj; - u8 uuid[16]; + uuid_le uuid; u32 errors; struct acpi_buffer output = {ACPI_ALLOCATE_BUFFER, NULL}; if (!context) return AE_ERROR; - if (ACPI_FAILURE(acpi_str_to_uuid(context->uuid_str, uuid))) + if (uuid_le_to_bin(context->uuid_str, &uuid)) return AE_ERROR; context->ret.length = ACPI_ALLOCATE_BUFFER; context->ret.pointer = NULL; @@ -241,7 +218,7 @@ acpi_status acpi_run_osc(acpi_handle handle, struct acpi_osc_context *context) input.pointer = in_params; in_params[0].type = ACPI_TYPE_BUFFER; in_params[0].buffer.length = 16; - in_params[0].buffer.pointer = uuid; + in_params[0].buffer.pointer = (u8 *)&uuid; in_params[1].type = ACPI_TYPE_INTEGER; in_params[1].integer.value = context->rev; in_params[2].type = ACPI_TYPE_INTEGER; diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c index 0f7982a1caaf..bd3e45ede056 100644 --- a/drivers/acpi/nfit/core.c +++ b/drivers/acpi/nfit/core.c @@ -74,11 +74,11 @@ struct nfit_table_prev { struct list_head flushes; }; -static u8 nfit_uuid[NFIT_UUID_MAX][16]; +static uuid_le nfit_uuid[NFIT_UUID_MAX]; -const u8 *to_nfit_uuid(enum nfit_uuids id) +const uuid_le *to_nfit_uuid(enum nfit_uuids id) { - return nfit_uuid[id]; + return &nfit_uuid[id]; } EXPORT_SYMBOL(to_nfit_uuid); @@ -207,7 +207,7 @@ int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm, u32 offset, fw_status = 0; acpi_handle handle; unsigned int func; - const u8 *uuid; + const uuid_le *uuid; int rc, i; func = cmd; @@ -394,7 +394,7 @@ int nfit_spa_type(struct acpi_nfit_system_address *spa) int i; for (i = 0; i < NFIT_UUID_MAX; i++) - if (memcmp(to_nfit_uuid(i), spa->range_guid, 16) == 0) + if (!uuid_le_cmp_pp(to_nfit_uuid(i), (uuid_le *)spa->range_guid)) return i; return -1; } @@ -1400,7 +1400,7 @@ static int acpi_nfit_add_dimm(struct acpi_nfit_desc *acpi_desc, struct acpi_device *adev, *adev_dimm; struct device *dev = acpi_desc->dev; unsigned long dsm_mask; - const u8 *uuid; + const uuid_le *uuid = to_nfit_uuid(NFIT_DEV_DIMM); int i; int family = -1; @@ -1596,7 +1596,7 @@ static int acpi_nfit_register_dimms(struct acpi_nfit_desc *acpi_desc) static void acpi_nfit_init_dsms(struct acpi_nfit_desc *acpi_desc) { struct nvdimm_bus_descriptor *nd_desc = &acpi_desc->nd_desc; - const u8 *uuid = to_nfit_uuid(NFIT_DEV_BUS); + const uuid_le *uuid = to_nfit_uuid(NFIT_DEV_BUS); struct acpi_device *adev; int i; @@ -3036,19 +3036,19 @@ static __init int nfit_init(void) BUILD_BUG_ON(sizeof(struct acpi_nfit_control_region) != 80); BUILD_BUG_ON(sizeof(struct acpi_nfit_data_region) != 40); - acpi_str_to_uuid(UUID_VOLATILE_MEMORY, nfit_uuid[NFIT_SPA_VOLATILE]); - acpi_str_to_uuid(UUID_PERSISTENT_MEMORY, nfit_uuid[NFIT_SPA_PM]); - acpi_str_to_uuid(UUID_CONTROL_REGION, nfit_uuid[NFIT_SPA_DCR]); - acpi_str_to_uuid(UUID_DATA_REGION, nfit_uuid[NFIT_SPA_BDW]); - acpi_str_to_uuid(UUID_VOLATILE_VIRTUAL_DISK, nfit_uuid[NFIT_SPA_VDISK]); - acpi_str_to_uuid(UUID_VOLATILE_VIRTUAL_CD, nfit_uuid[NFIT_SPA_VCD]); - acpi_str_to_uuid(UUID_PERSISTENT_VIRTUAL_DISK, nfit_uuid[NFIT_SPA_PDISK]); - acpi_str_to_uuid(UUID_PERSISTENT_VIRTUAL_CD, nfit_uuid[NFIT_SPA_PCD]); - acpi_str_to_uuid(UUID_NFIT_BUS, nfit_uuid[NFIT_DEV_BUS]); - acpi_str_to_uuid(UUID_NFIT_DIMM, nfit_uuid[NFIT_DEV_DIMM]); - acpi_str_to_uuid(UUID_NFIT_DIMM_N_HPE1, nfit_uuid[NFIT_DEV_DIMM_N_HPE1]); - acpi_str_to_uuid(UUID_NFIT_DIMM_N_HPE2, nfit_uuid[NFIT_DEV_DIMM_N_HPE2]); - acpi_str_to_uuid(UUID_NFIT_DIMM_N_MSFT, nfit_uuid[NFIT_DEV_DIMM_N_MSFT]); + uuid_le_to_bin(UUID_VOLATILE_MEMORY, &nfit_uuid[NFIT_SPA_VOLATILE]); + uuid_le_to_bin(UUID_PERSISTENT_MEMORY, &nfit_uuid[NFIT_SPA_PM]); + uuid_le_to_bin(UUID_CONTROL_REGION, &nfit_uuid[NFIT_SPA_DCR]); + uuid_le_to_bin(UUID_DATA_REGION, &nfit_uuid[NFIT_SPA_BDW]); + uuid_le_to_bin(UUID_VOLATILE_VIRTUAL_DISK, &nfit_uuid[NFIT_SPA_VDISK]); + uuid_le_to_bin(UUID_VOLATILE_VIRTUAL_CD, &nfit_uuid[NFIT_SPA_VCD]); + uuid_le_to_bin(UUID_PERSISTENT_VIRTUAL_DISK, &nfit_uuid[NFIT_SPA_PDISK]); + uuid_le_to_bin(UUID_PERSISTENT_VIRTUAL_CD, &nfit_uuid[NFIT_SPA_PCD]); + uuid_le_to_bin(UUID_NFIT_BUS, &nfit_uuid[NFIT_DEV_BUS]); + uuid_le_to_bin(UUID_NFIT_DIMM, &nfit_uuid[NFIT_DEV_DIMM]); + uuid_le_to_bin(UUID_NFIT_DIMM_N_HPE1, &nfit_uuid[NFIT_DEV_DIMM_N_HPE1]); + uuid_le_to_bin(UUID_NFIT_DIMM_N_HPE2, &nfit_uuid[NFIT_DEV_DIMM_N_HPE2]); + uuid_le_to_bin(UUID_NFIT_DIMM_N_MSFT, &nfit_uuid[NFIT_DEV_DIMM_N_MSFT]); nfit_wq = create_singlethread_workqueue("nfit"); if (!nfit_wq) diff --git a/drivers/acpi/nfit/nfit.h b/drivers/acpi/nfit/nfit.h index 58fb7d68e04a..2f233b28709f 100644 --- a/drivers/acpi/nfit/nfit.h +++ b/drivers/acpi/nfit/nfit.h @@ -18,7 +18,6 @@ #include #include #include -#include #include #include @@ -237,7 +236,7 @@ static inline struct acpi_nfit_desc *to_acpi_desc( return container_of(nd_desc, struct acpi_nfit_desc, nd_desc); } -const u8 *to_nfit_uuid(enum nfit_uuids id); +const uuid_le *to_nfit_uuid(enum nfit_uuids id); int acpi_nfit_init(struct acpi_nfit_desc *acpi_desc, void *nfit, acpi_size sz); void acpi_nfit_shutdown(void *data); void __acpi_nfit_notify(struct device *dev, acpi_handle handle, u32 event); diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c index 27d0dcfcf47d..bbe8a950e508 100644 --- a/drivers/acpi/utils.c +++ b/drivers/acpi/utils.c @@ -625,7 +625,7 @@ acpi_status acpi_evaluate_lck(acpi_handle handle, int lock) * some old BIOSes do expect a buffer or an integer etc. */ union acpi_object * -acpi_evaluate_dsm(acpi_handle handle, const u8 *uuid, u64 rev, u64 func, +acpi_evaluate_dsm(acpi_handle handle, const uuid_le *uuid, u64 rev, u64 func, union acpi_object *argv4) { acpi_status ret; @@ -674,7 +674,7 @@ EXPORT_SYMBOL(acpi_evaluate_dsm); * functions. Currently only support 64 functions at maximum, should be * enough for now. */ -bool acpi_check_dsm(acpi_handle handle, const u8 *uuid, u64 rev, u64 funcs) +bool acpi_check_dsm(acpi_handle handle, const uuid_le *uuid, u64 rev, u64 funcs) { int i; u64 mask = 0; diff --git a/drivers/char/tpm/tpm_crb.c b/drivers/char/tpm/tpm_crb.c index b917b9d5f710..f789f7e5a17d 100644 --- a/drivers/char/tpm/tpm_crb.c +++ b/drivers/char/tpm/tpm_crb.c @@ -27,10 +27,9 @@ #define ACPI_SIG_TPM2 "TPM2" -static const u8 CRB_ACPI_START_UUID[] = { - /* 0000 */ 0xAB, 0x6C, 0xBF, 0x6B, 0x63, 0x54, 0x14, 0x47, - /* 0008 */ 0xB7, 0xCD, 0xF0, 0x20, 0x3C, 0x03, 0x68, 0xD4 -}; +static const uuid_le crb_acpi_start_uuid = + UUID_LE(0x6BBF6CAB, 0x5463, 0x4714, + 0xB7, 0xCD, 0xF0, 0x20, 0x3C, 0x03, 0x68, 0xD4); enum crb_defaults { CRB_ACPI_START_REVISION_ID = 1, @@ -266,7 +265,7 @@ static int crb_do_acpi_start(struct tpm_chip *chip) int rc; obj = acpi_evaluate_dsm(chip->acpi_dev_handle, - CRB_ACPI_START_UUID, + &crb_acpi_start_uuid, CRB_ACPI_START_REVISION_ID, CRB_ACPI_START_INDEX, NULL); diff --git a/drivers/char/tpm/tpm_ppi.c b/drivers/char/tpm/tpm_ppi.c index 692a2c6ae036..7cf682426361 100644 --- a/drivers/char/tpm/tpm_ppi.c +++ b/drivers/char/tpm/tpm_ppi.c @@ -32,20 +32,16 @@ #define PPI_VS_REQ_START 128 #define PPI_VS_REQ_END 255 -static const u8 tpm_ppi_uuid[] = { - 0xA6, 0xFA, 0xDD, 0x3D, - 0x1B, 0x36, - 0xB4, 0x4E, - 0xA4, 0x24, - 0x8D, 0x10, 0x08, 0x9D, 0x16, 0x53 -}; +static const uuid_le tpm_ppi_uuid = + UUID_LE(0x3DDDFAA6, 0x361B, 0x4EB4, + 0xA4, 0x24, 0x8D, 0x10, 0x08, 0x9D, 0x16, 0x53); static inline union acpi_object * tpm_eval_dsm(acpi_handle ppi_handle, int func, acpi_object_type type, union acpi_object *argv4) { BUG_ON(!ppi_handle); - return acpi_evaluate_dsm_typed(ppi_handle, tpm_ppi_uuid, + return acpi_evaluate_dsm_typed(ppi_handle, &tpm_ppi_uuid, TPM_PPI_REVISION_ID, func, argv4, type); } @@ -107,7 +103,7 @@ static ssize_t tpm_store_ppi_request(struct device *dev, * is updated with function index from SUBREQ to SUBREQ2 since PPI * version 1.1 */ - if (acpi_check_dsm(chip->acpi_dev_handle, tpm_ppi_uuid, + if (acpi_check_dsm(chip->acpi_dev_handle, &tpm_ppi_uuid, TPM_PPI_REVISION_ID, 1 << TPM_PPI_FN_SUBREQ2)) func = TPM_PPI_FN_SUBREQ2; @@ -268,7 +264,7 @@ static ssize_t show_ppi_operations(acpi_handle dev_handle, char *buf, u32 start, "User not required", }; - if (!acpi_check_dsm(dev_handle, tpm_ppi_uuid, TPM_PPI_REVISION_ID, + if (!acpi_check_dsm(dev_handle, &tpm_ppi_uuid, TPM_PPI_REVISION_ID, 1 << TPM_PPI_FN_GETOPR)) return -EPERM; @@ -341,12 +337,12 @@ void tpm_add_ppi(struct tpm_chip *chip) if (!chip->acpi_dev_handle) return; - if (!acpi_check_dsm(chip->acpi_dev_handle, tpm_ppi_uuid, + if (!acpi_check_dsm(chip->acpi_dev_handle, &tpm_ppi_uuid, TPM_PPI_REVISION_ID, 1 << TPM_PPI_FN_VERSION)) return; /* Cache PPI version string. */ - obj = acpi_evaluate_dsm_typed(chip->acpi_dev_handle, tpm_ppi_uuid, + obj = acpi_evaluate_dsm_typed(chip->acpi_dev_handle, &tpm_ppi_uuid, TPM_PPI_REVISION_ID, TPM_PPI_FN_VERSION, NULL, ACPI_TYPE_STRING); if (obj) { diff --git a/drivers/gpu/drm/i915/intel_acpi.c b/drivers/gpu/drm/i915/intel_acpi.c index eb638a1e69d2..72bfe6ceadf8 100644 --- a/drivers/gpu/drm/i915/intel_acpi.c +++ b/drivers/gpu/drm/i915/intel_acpi.c @@ -15,13 +15,9 @@ static struct intel_dsm_priv { acpi_handle dhandle; } intel_dsm_priv; -static const u8 intel_dsm_guid[] = { - 0xd3, 0x73, 0xd8, 0x7e, - 0xd0, 0xc2, - 0x4f, 0x4e, - 0xa8, 0x54, - 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c -}; +static const uuid_le intel_dsm_guid = + UUID_LE(0x7ed873d3, 0xc2d0, 0x4e4f, + 0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c); static char *intel_dsm_port_name(u8 id) { @@ -80,7 +76,7 @@ static void intel_dsm_platform_mux_info(void) int i; union acpi_object *pkg, *connector_count; - pkg = acpi_evaluate_dsm_typed(intel_dsm_priv.dhandle, intel_dsm_guid, + pkg = acpi_evaluate_dsm_typed(intel_dsm_priv.dhandle, &intel_dsm_guid, INTEL_DSM_REVISION_ID, INTEL_DSM_FN_PLATFORM_MUX_INFO, NULL, ACPI_TYPE_PACKAGE); if (!pkg) { @@ -118,7 +114,7 @@ static bool intel_dsm_pci_probe(struct pci_dev *pdev) if (!dhandle) return false; - if (!acpi_check_dsm(dhandle, intel_dsm_guid, INTEL_DSM_REVISION_ID, + if (!acpi_check_dsm(dhandle, &intel_dsm_guid, INTEL_DSM_REVISION_ID, 1 << INTEL_DSM_FN_PLATFORM_MUX_INFO)) { DRM_DEBUG_KMS("no _DSM method for intel device\n"); return false; diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c index 39468c218027..faea23276d4a 100644 --- a/drivers/gpu/drm/nouveau/nouveau_acpi.c +++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c @@ -60,15 +60,13 @@ bool nouveau_is_v1_dsm(void) { } #ifdef CONFIG_VGA_SWITCHEROO -static const char nouveau_dsm_muid[] = { - 0xA0, 0xA0, 0x95, 0x9D, 0x60, 0x00, 0x48, 0x4D, - 0xB3, 0x4D, 0x7E, 0x5F, 0xEA, 0x12, 0x9F, 0xD4, -}; +static const uuid_le nouveau_dsm_muid = + UUID_LE(0x9D95A0A0, 0x0060, 0x4D48, + 0xB3, 0x4D, 0x7E, 0x5F, 0xEA, 0x12, 0x9F, 0xD4); -static const char nouveau_op_dsm_muid[] = { - 0xF8, 0xD8, 0x86, 0xA4, 0xDA, 0x0B, 0x1B, 0x47, - 0xA7, 0x2B, 0x60, 0x42, 0xA6, 0xB5, 0xBE, 0xE0, -}; +static const uuid_le nouveau_op_dsm_muid = + UUID_LE(0xA486D8F8, 0x0BDA, 0x471B, + 0xA7, 0x2B, 0x60, 0x42, 0xA6, 0xB5, 0xBE, 0xE0); static int nouveau_optimus_dsm(acpi_handle handle, int func, int arg, uint32_t *result) { @@ -86,7 +84,7 @@ static int nouveau_optimus_dsm(acpi_handle handle, int func, int arg, uint32_t * args_buff[i] = (arg >> i * 8) & 0xFF; *result = 0; - obj = acpi_evaluate_dsm_typed(handle, nouveau_op_dsm_muid, 0x00000100, + obj = acpi_evaluate_dsm_typed(handle, &nouveau_op_dsm_muid, 0x00000100, func, &argv4, ACPI_TYPE_BUFFER); if (!obj) { acpi_handle_info(handle, "failed to evaluate _DSM\n"); @@ -138,7 +136,7 @@ static int nouveau_dsm(acpi_handle handle, int func, int arg) .integer.value = arg, }; - obj = acpi_evaluate_dsm_typed(handle, nouveau_dsm_muid, 0x00000102, + obj = acpi_evaluate_dsm_typed(handle, &nouveau_dsm_muid, 0x00000102, func, &argv4, ACPI_TYPE_INTEGER); if (!obj) { acpi_handle_info(handle, "failed to evaluate _DSM\n"); @@ -259,7 +257,7 @@ static void nouveau_dsm_pci_probe(struct pci_dev *pdev, acpi_handle *dhandle_out if (!acpi_has_method(dhandle, "_DSM")) return; - supports_mux = acpi_check_dsm(dhandle, nouveau_dsm_muid, 0x00000102, + supports_mux = acpi_check_dsm(dhandle, &nouveau_dsm_muid, 0x00000102, 1 << NOUVEAU_DSM_POWER); optimus_funcs = nouveau_dsm_get_optimus_functions(dhandle); diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mxm/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/mxm/base.c index e3e2f5e83815..cc95b8150a86 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/mxm/base.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mxm/base.c @@ -81,10 +81,9 @@ mxm_shadow_dsm(struct nvkm_mxm *mxm, u8 version) { struct nvkm_subdev *subdev = &mxm->subdev; struct nvkm_device *device = subdev->device; - static char muid[] = { - 0x00, 0xA4, 0x04, 0x40, 0x7D, 0x91, 0xF2, 0x4C, - 0xB8, 0x9C, 0x79, 0xB6, 0x2F, 0xD5, 0x56, 0x65 - }; + static uuid_le muid = + UUID_LE(0x4004A400, 0x917D, 0x4CF2, + 0xB8, 0x9C, 0x79, 0xB6, 0x2F, 0xD5, 0x56, 0x65); u32 mxms_args[] = { 0x00000000 }; union acpi_object argv4 = { .buffer.type = ACPI_TYPE_BUFFER, @@ -105,7 +104,7 @@ mxm_shadow_dsm(struct nvkm_mxm *mxm, u8 version) * unless you pass in exactly the version it supports.. */ rev = (version & 0xf0) << 4 | (version & 0x0f); - obj = acpi_evaluate_dsm(handle, muid, rev, 0x00000010, &argv4); + obj = acpi_evaluate_dsm(handle, &muid, rev, 0x00000010, &argv4); if (!obj) { nvkm_debug(subdev, "DSM MXMS failed\n"); return false; diff --git a/drivers/hid/i2c-hid/i2c-hid.c b/drivers/hid/i2c-hid/i2c-hid.c index 8daa8ce64ebb..f83bd717cdd5 100644 --- a/drivers/hid/i2c-hid/i2c-hid.c +++ b/drivers/hid/i2c-hid/i2c-hid.c @@ -872,10 +872,9 @@ static int i2c_hid_fetch_hid_descriptor(struct i2c_hid *ihid) static int i2c_hid_acpi_pdata(struct i2c_client *client, struct i2c_hid_platform_data *pdata) { - static u8 i2c_hid_guid[] = { - 0xF7, 0xF6, 0xDF, 0x3C, 0x67, 0x42, 0x55, 0x45, - 0xAD, 0x05, 0xB3, 0x0A, 0x3D, 0x89, 0x38, 0xDE, - }; + static uuid_le i2c_hid_guid = + UUID_LE(0x3CDFF6F7, 0x4267, 0x4555, + 0xAD, 0x05, 0xB3, 0x0A, 0x3D, 0x89, 0x38, 0xDE); union acpi_object *obj; struct acpi_device *adev; acpi_handle handle; @@ -884,7 +883,7 @@ static int i2c_hid_acpi_pdata(struct i2c_client *client, if (!handle || acpi_bus_get_device(handle, &adev)) return -ENODEV; - obj = acpi_evaluate_dsm_typed(handle, i2c_hid_guid, 1, 1, NULL, + obj = acpi_evaluate_dsm_typed(handle, &i2c_hid_guid, 1, 1, NULL, ACPI_TYPE_INTEGER); if (!obj) { dev_err(&client->dev, "device _DSM execution failed\n"); diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c index cbf7763d8091..420d51b286ad 100644 --- a/drivers/iommu/dmar.c +++ b/drivers/iommu/dmar.c @@ -1808,10 +1808,9 @@ IOMMU_INIT_POST(detect_intel_iommu); * for Directed-IO Architecture Specifiction, Rev 2.2, Section 8.8 * "Remapping Hardware Unit Hot Plug". */ -static u8 dmar_hp_uuid[] = { - /* 0000 */ 0xA6, 0xA3, 0xC1, 0xD8, 0x9B, 0xBE, 0x9B, 0x4C, - /* 0008 */ 0x91, 0xBF, 0xC3, 0xCB, 0x81, 0xFC, 0x5D, 0xAF -}; +static uuid_le dmar_hp_uuid = + UUID_LE(0xD8C1A3A6, 0xBE9B, 0x4C9B, + 0x91, 0xBF, 0xC3, 0xCB, 0x81, 0xFC, 0x5D, 0xAF); /* * Currently there's only one revision and BIOS will not check the revision id, @@ -1824,7 +1823,7 @@ static u8 dmar_hp_uuid[] = { static inline bool dmar_detect_dsm(acpi_handle handle, int func) { - return acpi_check_dsm(handle, dmar_hp_uuid, DMAR_DSM_REV_ID, 1 << func); + return acpi_check_dsm(handle, &dmar_hp_uuid, DMAR_DSM_REV_ID, 1 << func); } static int dmar_walk_dsm_resource(acpi_handle handle, int func, @@ -1843,7 +1842,7 @@ static int dmar_walk_dsm_resource(acpi_handle handle, int func, if (!dmar_detect_dsm(handle, func)) return 0; - obj = acpi_evaluate_dsm_typed(handle, dmar_hp_uuid, DMAR_DSM_REV_ID, + obj = acpi_evaluate_dsm_typed(handle, &dmar_hp_uuid, DMAR_DSM_REV_ID, func, NULL, ACPI_TYPE_BUFFER); if (!obj) return -ENODEV; diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c index 92fc3f7c538d..262b8c320d7c 100644 --- a/drivers/mmc/host/sdhci-pci-core.c +++ b/drivers/mmc/host/sdhci-pci-core.c @@ -404,10 +404,9 @@ struct intel_host { bool d3_retune; }; -const u8 intel_dsm_uuid[] = { - 0xA5, 0x3E, 0xC1, 0xF6, 0xCD, 0x65, 0x1F, 0x46, - 0xAB, 0x7A, 0x29, 0xF7, 0xE8, 0xD5, 0xBD, 0x61, -}; +const uuid_le intel_dsm_uuid = + UUID_LE(0xF6C13EA5, 0x65CD, 0x461F, + 0xAB, 0x7A, 0x29, 0xF7, 0xE8, 0xD5, 0xBD, 0x61); static int __intel_dsm(struct intel_host *intel_host, struct device *dev, unsigned int fn, u32 *result) @@ -416,7 +415,7 @@ static int __intel_dsm(struct intel_host *intel_host, struct device *dev, int err = 0; size_t len; - obj = acpi_evaluate_dsm(ACPI_HANDLE(dev), intel_dsm_uuid, 0, fn, NULL); + obj = acpi_evaluate_dsm(ACPI_HANDLE(dev), &intel_dsm_uuid, 0, fn, NULL); if (!obj) return -EOPNOTSUPP; diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c index e13aa064a8e9..02842fe7f1d0 100644 --- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c +++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c @@ -29,10 +29,9 @@ enum _dsm_rst_type { HNS_ROCE_RESET_FUNC = 0x7, }; -const u8 hns_dsaf_acpi_dsm_uuid[] = { - 0x1A, 0xAA, 0x85, 0x1A, 0x93, 0xE2, 0x5E, 0x41, - 0x8E, 0x28, 0x8D, 0x69, 0x0A, 0x0F, 0x82, 0x0A -}; +const uuid_le hns_dsaf_acpi_dsm_uuid = + UUID_LE(0x1A85AA1A, 0xE293, 0x415E, + 0x8E, 0x28, 0x8D, 0x69, 0x0A, 0x0F, 0x82, 0x0A); static void dsaf_write_sub(struct dsaf_device *dsaf_dev, u32 reg, u32 val) { @@ -151,7 +150,7 @@ static void hns_dsaf_acpi_srst_by_port(struct dsaf_device *dsaf_dev, u8 op_type, argv4.package.elements = obj_args; obj = acpi_evaluate_dsm(ACPI_HANDLE(dsaf_dev->dev), - hns_dsaf_acpi_dsm_uuid, 0, op_type, &argv4); + &hns_dsaf_acpi_dsm_uuid, 0, op_type, &argv4); if (!obj) { dev_warn(dsaf_dev->dev, "reset port_type%d port%d fail!", port_type, port); @@ -434,7 +433,7 @@ static phy_interface_t hns_mac_get_phy_if_acpi(struct hns_mac_cb *mac_cb) argv4.package.elements = &obj_args, obj = acpi_evaluate_dsm(ACPI_HANDLE(mac_cb->dev), - hns_dsaf_acpi_dsm_uuid, 0, + &hns_dsaf_acpi_dsm_uuid, 0, HNS_OP_GET_PORT_TYPE_FUNC, &argv4); if (!obj || obj->type != ACPI_TYPE_INTEGER) @@ -474,7 +473,7 @@ int hns_mac_get_sfp_prsnt_acpi(struct hns_mac_cb *mac_cb, int *sfp_prsnt) argv4.package.elements = &obj_args, obj = acpi_evaluate_dsm(ACPI_HANDLE(mac_cb->dev), - hns_dsaf_acpi_dsm_uuid, 0, + &hns_dsaf_acpi_dsm_uuid, 0, HNS_OP_GET_SFP_STAT_FUNC, &argv4); if (!obj || obj->type != ACPI_TYPE_INTEGER) @@ -565,7 +564,7 @@ hns_mac_config_sds_loopback_acpi(struct hns_mac_cb *mac_cb, bool en) argv4.package.elements = obj_args; obj = acpi_evaluate_dsm(ACPI_HANDLE(mac_cb->dsaf_dev->dev), - hns_dsaf_acpi_dsm_uuid, 0, + &hns_dsaf_acpi_dsm_uuid, 0, HNS_OP_SERDES_LP_FUNC, &argv4); if (!obj) { dev_warn(mac_cb->dsaf_dev->dev, "set port%d serdes lp fail!", diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c index 001860361434..eb612123e0dd 100644 --- a/drivers/pci/pci-acpi.c +++ b/drivers/pci/pci-acpi.c @@ -24,10 +24,9 @@ * The UUID is defined in the PCI Firmware Specification available here: * https://www.pcisig.com/members/downloads/pcifw_r3_1_13Dec10.pdf */ -const u8 pci_acpi_dsm_uuid[] = { - 0xd0, 0x37, 0xc9, 0xe5, 0x53, 0x35, 0x7a, 0x4d, - 0x91, 0x17, 0xea, 0x4d, 0x19, 0xc3, 0x43, 0x4d -}; +const uuid_le pci_acpi_dsm_uuid = + UUID_LE(0xe5c937d0, 0x3553, 0x4d7a, + 0x91, 0x17, 0xea, 0x4d, 0x19, 0xc3, 0x43, 0x4d); #if defined(CONFIG_PCI_QUIRKS) && defined(CONFIG_ARM64) static int acpi_get_rc_addr(struct acpi_device *adev, struct resource *res) @@ -680,7 +679,7 @@ void acpi_pci_add_bus(struct pci_bus *bus) if (!pci_is_root_bus(bus)) return; - obj = acpi_evaluate_dsm(ACPI_HANDLE(bus->bridge), pci_acpi_dsm_uuid, 3, + obj = acpi_evaluate_dsm(ACPI_HANDLE(bus->bridge), &pci_acpi_dsm_uuid, 3, RESET_DELAY_DSM, NULL); if (!obj) return; @@ -745,7 +744,7 @@ static void pci_acpi_optimize_delay(struct pci_dev *pdev, if (bridge->ignore_reset_delay) pdev->d3cold_delay = 0; - obj = acpi_evaluate_dsm(handle, pci_acpi_dsm_uuid, 3, + obj = acpi_evaluate_dsm(handle, &pci_acpi_dsm_uuid, 3, FUNCTION_DELAY_DSM, NULL); if (!obj) return; diff --git a/drivers/pci/pci-label.c b/drivers/pci/pci-label.c index 51357377efbc..a2c04229f1dc 100644 --- a/drivers/pci/pci-label.c +++ b/drivers/pci/pci-label.c @@ -172,7 +172,7 @@ static int dsm_get_label(struct device *dev, char *buf, if (!handle) return -1; - obj = acpi_evaluate_dsm(handle, pci_acpi_dsm_uuid, 0x2, + obj = acpi_evaluate_dsm(handle, &pci_acpi_dsm_uuid, 0x2, DEVICE_LABEL_DSM, NULL); if (!obj) return -1; @@ -212,7 +212,7 @@ static bool device_has_dsm(struct device *dev) if (!handle) return false; - return !!acpi_check_dsm(handle, pci_acpi_dsm_uuid, 0x2, + return !!acpi_check_dsm(handle, &pci_acpi_dsm_uuid, 0x2, 1 << DEVICE_LABEL_DSM); } diff --git a/drivers/thermal/int340x_thermal/int3400_thermal.c b/drivers/thermal/int340x_thermal/int3400_thermal.c index 9413c4abf0b9..c0eb3bb19b23 100644 --- a/drivers/thermal/int340x_thermal/int3400_thermal.c +++ b/drivers/thermal/int340x_thermal/int3400_thermal.c @@ -23,7 +23,7 @@ enum int3400_thermal_uuid { INT3400_THERMAL_MAXIMUM_UUID, }; -static u8 *int3400_thermal_uuids[INT3400_THERMAL_MAXIMUM_UUID] = { +static const char *int3400_thermal_uuids[INT3400_THERMAL_MAXIMUM_UUID] = { "42A441D6-AE6A-462b-A84B-4A8CE79027D3", "3A95C389-E4B8-4629-A526-C52C88626BAE", "97C68AE7-15FA-499c-B8C9-5DA81D606E0A", @@ -141,10 +141,10 @@ static int int3400_thermal_get_uuids(struct int3400_thermal_priv *priv) } for (j = 0; j < INT3400_THERMAL_MAXIMUM_UUID; j++) { - u8 uuid[16]; + uuid_le u; - acpi_str_to_uuid(int3400_thermal_uuids[j], uuid); - if (!strncmp(uuid, objb->buffer.pointer, 16)) { + uuid_le_to_bin(int3400_thermal_uuids[j], &u); + if (!uuid_le_cmp(*(uuid_le *)objb->buffer.pointer), u) { priv->uuid_bitmap |= (1 << j); break; } diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c index a15ec71d0423..6b5284ec76df 100644 --- a/drivers/usb/dwc3/dwc3-pci.c +++ b/drivers/usb/dwc3/dwc3-pci.c @@ -56,7 +56,7 @@ struct dwc3_pci { struct platform_device *dwc3; struct pci_dev *pci; - u8 uuid[16]; + uuid_le uuid; unsigned int has_dsm_for_pm:1; }; @@ -118,7 +118,7 @@ static int dwc3_pci_quirks(struct dwc3_pci *dwc) if (pdev->device == PCI_DEVICE_ID_INTEL_BXT || pdev->device == PCI_DEVICE_ID_INTEL_BXT_M) { - acpi_str_to_uuid(PCI_INTEL_BXT_DSM_UUID, dwc->uuid); + uuid_le_to_bin(PCI_INTEL_BXT_DSM_UUID, &dwc->uuid); dwc->has_dsm_for_pm = true; } @@ -288,7 +288,7 @@ static int dwc3_pci_dsm(struct dwc3_pci *dwc, int param) tmp.type = ACPI_TYPE_INTEGER; tmp.integer.value = param; - obj = acpi_evaluate_dsm(ACPI_HANDLE(&dwc->pci->dev), dwc->uuid, + obj = acpi_evaluate_dsm(ACPI_HANDLE(&dwc->pci->dev), &dwc->uuid, 1, PCI_INTEL_BXT_FUNC_PMU_PWR, &argv4); if (!obj) { dev_err(&dwc->pci->dev, "failed to evaluate _DSM\n"); diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c index 7b86508ac8cf..93b4f0de9418 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -210,13 +210,12 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) #ifdef CONFIG_ACPI static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { - static const u8 intel_dsm_uuid[] = { - 0xb7, 0x0c, 0x34, 0xac, 0x01, 0xe9, 0xbf, 0x45, - 0xb7, 0xe6, 0x2b, 0x34, 0xec, 0x93, 0x1e, 0x23, - }; + static const uuid_le intel_dsm_uuid = + UUID_LE(0xac340cb7, 0xe901, 0x45bf, + 0xb7, 0xe6, 0x2b, 0x34, 0xec, 0x93, 0x1e, 0x23); union acpi_object *obj; - obj = acpi_evaluate_dsm(ACPI_HANDLE(&dev->dev), intel_dsm_uuid, 3, 1, + obj = acpi_evaluate_dsm(ACPI_HANDLE(&dev->dev), &intel_dsm_uuid, 3, 1, NULL); ACPI_FREE(obj); } diff --git a/drivers/usb/misc/ucsi.c b/drivers/usb/misc/ucsi.c index 07397bddefa3..49e32ffbe59f 100644 --- a/drivers/usb/misc/ucsi.c +++ b/drivers/usb/misc/ucsi.c @@ -61,7 +61,7 @@ static int ucsi_acpi_cmd(struct ucsi *ucsi, struct ucsi_control *ctrl) ucsi->data->ctrl.raw_cmd = ctrl->raw_cmd; - obj = acpi_evaluate_dsm(ACPI_HANDLE(ucsi->dev), uuid.b, 1, 1, NULL); + obj = acpi_evaluate_dsm(ACPI_HANDLE(ucsi->dev), &uuid, 1, 1, NULL); if (!obj) { dev_err(ucsi->dev, "%s: failed to evaluate _DSM\n", __func__); return -EIO; diff --git a/drivers/usb/typec/typec_wcove.c b/drivers/usb/typec/typec_wcove.c index d5a7b21fa3f1..5ce93e0a15ca 100644 --- a/drivers/usb/typec/typec_wcove.c +++ b/drivers/usb/typec/typec_wcove.c @@ -118,7 +118,7 @@ static int wcove_typec_func(struct wcove_typec *wcove, tmp.type = ACPI_TYPE_INTEGER; tmp.integer.value = param; - obj = acpi_evaluate_dsm(ACPI_HANDLE(wcove->dev), uuid.b, 1, func, + obj = acpi_evaluate_dsm(ACPI_HANDLE(wcove->dev), &uuid, 1, func, &argv4); if (!obj) { dev_err(wcove->dev, "%s: failed to evaluate _DSM\n", __func__); @@ -314,7 +314,7 @@ static int wcove_typec_probe(struct platform_device *pdev) if (ret) return ret; - if (!acpi_check_dsm(ACPI_HANDLE(&pdev->dev), uuid.b, 0, 0x1f)) { + if (!acpi_check_dsm(ACPI_HANDLE(&pdev->dev), &uuid, 0, 0x1f)) { dev_err(&pdev->dev, "Missing _DSM functions\n"); return -ENODEV; } diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h index 197f3fffc9a7..0682942d6a76 100644 --- a/include/acpi/acpi_bus.h +++ b/include/acpi/acpi_bus.h @@ -61,13 +61,14 @@ bool acpi_ata_match(acpi_handle handle); bool acpi_bay_match(acpi_handle handle); bool acpi_dock_match(acpi_handle handle); -bool acpi_check_dsm(acpi_handle handle, const u8 *uuid, u64 rev, u64 funcs); -union acpi_object *acpi_evaluate_dsm(acpi_handle handle, const u8 *uuid, +bool acpi_check_dsm(acpi_handle handle, const uuid_le *uuid, u64 rev, u64 funcs); +union acpi_object *acpi_evaluate_dsm(acpi_handle handle, const uuid_le *uuid, u64 rev, u64 func, union acpi_object *argv4); static inline union acpi_object * -acpi_evaluate_dsm_typed(acpi_handle handle, const u8 *uuid, u64 rev, u64 func, - union acpi_object *argv4, acpi_object_type type) +acpi_evaluate_dsm_typed(acpi_handle handle, const uuid_le *uuid, u64 rev, + u64 func, union acpi_object *argv4, + acpi_object_type type) { union acpi_object *obj; diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 137e4a3d89c5..66d135003780 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -457,7 +458,6 @@ struct acpi_osc_context { struct acpi_buffer ret; /* free by caller if success */ }; -acpi_status acpi_str_to_uuid(char *str, u8 *uuid); acpi_status acpi_run_osc(acpi_handle handle, struct acpi_osc_context *context); /* Indexes into _OSC Capabilities Buffer (DWORDs 2 & 3 are device-specific) */ @@ -741,7 +741,7 @@ static inline bool acpi_driver_match_device(struct device *dev, } static inline union acpi_object *acpi_evaluate_dsm(acpi_handle handle, - const u8 *uuid, + const uuid_le *uuid, int rev, int func, union acpi_object *argv4) { diff --git a/include/linux/pci-acpi.h b/include/linux/pci-acpi.h index 7a4e83a8c89c..917a6ad0f24d 100644 --- a/include/linux/pci-acpi.h +++ b/include/linux/pci-acpi.h @@ -105,7 +105,7 @@ static inline void acpiphp_remove_slots(struct pci_bus *bus) { } static inline void acpiphp_check_host_bridge(struct acpi_device *adev) { } #endif -extern const u8 pci_acpi_dsm_uuid[]; +extern const uuid_le pci_acpi_dsm_uuid; #define DEVICE_LABEL_DSM 0x07 #define RESET_DELAY_DSM 0x08 #define FUNCTION_DELAY_DSM 0x09 diff --git a/sound/soc/intel/skylake/skl-nhlt.c b/sound/soc/intel/skylake/skl-nhlt.c index e3f06672fd6d..b95f659dced5 100644 --- a/sound/soc/intel/skylake/skl-nhlt.c +++ b/sound/soc/intel/skylake/skl-nhlt.c @@ -21,8 +21,9 @@ #include "skl.h" /* Unique identification for getting NHLT blobs */ -static u8 OSC_UUID[16] = {0x6E, 0x88, 0x9F, 0xA6, 0xEB, 0x6C, 0x94, 0x45, - 0xA4, 0x1F, 0x7B, 0x5D, 0xCE, 0x24, 0xC5, 0x53}; +static uuid_le osc_uuid = + UUID_LE(0xA69F886E, 0x6CEB, 0x4594, + 0xA4, 0x1F, 0x7B, 0x5D, 0xCE, 0x24, 0xC5, 0x53); struct nhlt_acpi_table *skl_nhlt_init(struct device *dev) { @@ -37,7 +38,7 @@ struct nhlt_acpi_table *skl_nhlt_init(struct device *dev) return NULL; } - obj = acpi_evaluate_dsm(handle, OSC_UUID, 1, 1, NULL); + obj = acpi_evaluate_dsm(handle, &osc_uuid, 1, 1, NULL); if (obj && obj->type == ACPI_TYPE_BUFFER) { nhlt_ptr = (struct nhlt_resource_desc *)obj->buffer.pointer; nhlt_table = (struct nhlt_acpi_table *) diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c index 64cae1a5deff..f190f22c53dd 100644 --- a/tools/testing/nvdimm/test/iomap.c +++ b/tools/testing/nvdimm/test/iomap.c @@ -370,7 +370,7 @@ acpi_status __wrap_acpi_evaluate_object(acpi_handle handle, acpi_string path, } EXPORT_SYMBOL(__wrap_acpi_evaluate_object); -union acpi_object * __wrap_acpi_evaluate_dsm(acpi_handle handle, const u8 *uuid, +union acpi_object * __wrap_acpi_evaluate_dsm(acpi_handle handle, const uuid_le *uuid, u64 rev, u64 func, union acpi_object *argv4) { union acpi_object *obj = ERR_PTR(-ENXIO); diff --git a/tools/testing/nvdimm/test/nfit.c b/tools/testing/nvdimm/test/nfit.c index c2187178fb13..145f6ee0234f 100644 --- a/tools/testing/nvdimm/test/nfit.c +++ b/tools/testing/nvdimm/test/nfit.c @@ -1559,7 +1559,7 @@ static unsigned long nfit_ctl_handle; union acpi_object *result; static union acpi_object *nfit_test_evaluate_dsm(acpi_handle handle, - const u8 *uuid, u64 rev, u64 func, union acpi_object *argv4) + const uuid_le *uuid, u64 rev, u64 func, union acpi_object *argv4) { if (handle != &nfit_ctl_handle) return ERR_PTR(-ENXIO); -- 2.11.0