From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from py-out-1112.google.com (py-out-1112.google.com [64.233.166.178]) by ozlabs.org (Postfix) with ESMTP id 43A0567B93 for ; Wed, 11 Oct 2006 06:49:11 +1000 (EST) Received: by py-out-1112.google.com with SMTP id t32so2919016pyc for ; Tue, 10 Oct 2006 13:49:09 -0700 (PDT) Message-ID: <609d5c8e0610101349w64cdd4ecjc5359ad8d1f5d635@mail.gmail.com> Date: Tue, 10 Oct 2006 13:49:08 -0700 From: "David Bolcsfoldi" To: linuxppc-embedded@ozlabs.org Subject: [PATCH] Xilinx UART Lite 2.6.18 driver MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_68525_2102138.1160513348690" List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , ------=_Part_68525_2102138.1160513348690 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, here's a set of patches that adds support for Xilinx UART lite devices. It has been tested on an ML403-FX using xapp902 (ml403_ppc_plb_temac) using a 2.6.18 kernel and a BusyBox userspace. This is my first patch for the Linux kernel, so please be gentle :-) David ------=_Part_68525_2102138.1160513348690 Content-Type: text/x-patch; name=xuartlite_tty.c.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_et4rdhjb Content-Disposition: attachment; filename="xuartlite_tty.c.patch" ZGlmZiAtdXJOIDIuNi4xOC9hcmNoL3BwYy9ib290L3NpbXBsZS9NYWtlZmlsZSBwYXRjaGVkL2Fy Y2gvcHBjL2Jvb3Qvc2ltcGxlL01ha2VmaWxlCi0tLSAyLjYuMTgvYXJjaC9wcGMvYm9vdC9zaW1w bGUvTWFrZWZpbGUJMjAwNi0xMC0wNCAxNDozMToxNS4wMDAwMDAwMDAgLTA3MDAKKysrIHBhdGNo ZWQvYXJjaC9wcGMvYm9vdC9zaW1wbGUvTWFrZWZpbGUJMjAwNi0xMC0wNyAxMDozNDozMi4wMDAw MDAwMDAgLTA3MDAKQEAgLTIwNSw2ICsyMDUsNyBAQAogZW5kaWYKIGJvb3QtJChDT05GSUdfU0VS SUFMX01QQzUyeHhfQ09OU09MRSkJKz0gbXBjNTJ4eF90dHkubwogYm9vdC0kKENPTkZJR19TRVJJ QUxfTVBTQ19DT05TT0xFKQkrPSBtdjY0eDYwX3R0eS5vCitib290LSQoQ09ORklHX1NFUklBTF9Y VUxfQ09OU09MRSkJKz0geHVhcnRsaXRlX3R0eS5vCiAKIExJQlMJCQkJOj0gJChjb21tb24pL2xp Yi5hICQoYm9vdGxpYikvbGliLmEKIGlmZXEgKCQoQ09ORklHX1BQQ19QUkVQKSx5KQpkaWZmIC11 ck4gMi42LjE4L2FyY2gvcHBjL2Jvb3Qvc2ltcGxlL21pc2MuYyBwYXRjaGVkL2FyY2gvcHBjL2Jv b3Qvc2ltcGxlL21pc2MuYwotLS0gMi42LjE4L2FyY2gvcHBjL2Jvb3Qvc2ltcGxlL21pc2MuYwky MDA2LTEwLTA0IDE0OjMxOjE1LjAwMDAwMDAwMCAtMDcwMAorKysgcGF0Y2hlZC9hcmNoL3BwYy9i b290L3NpbXBsZS9taXNjLmMJMjAwNi0xMC0wNyAxMDoyNzozNC4wMDAwMDAwMDAgLTA3MDAKQEAg LTQ4LDcgKzQ4LDggQEAKICNpZiAoZGVmaW5lZChDT05GSUdfU0VSSUFMXzgyNTBfQ09OU09MRSkg XAogCXx8IGRlZmluZWQoQ09ORklHX1ZHQV9DT05TT0xFKSBcCiAJfHwgZGVmaW5lZChDT05GSUdf U0VSSUFMX01QQzUyeHhfQ09OU09MRSkgXAotCXx8IGRlZmluZWQoQ09ORklHX1NFUklBTF9NUFND X0NPTlNPTEUpKSBcCisJfHwgZGVmaW5lZChDT05GSUdfU0VSSUFMX01QU0NfQ09OU09MRSkgXAor CXx8IGRlZmluZWQoQ09ORklHX1NFUklBTF9YVUxfQ09OU09MRSkpIFwKIAkmJiAhZGVmaW5lZChD T05GSUdfR0VNSU5JKQogI2RlZmluZSBJTlRFUkFDVElWRV9DT05TT0xFCTEKICNlbmRpZgpkaWZm IC11ck4gMi42LjE4L2FyY2gvcHBjL2Jvb3Qvc2ltcGxlL3h1YXJ0bGl0ZV90dHkuYyBwYXRjaGVk L2FyY2gvcHBjL2Jvb3Qvc2ltcGxlL3h1YXJ0bGl0ZV90dHkuYwotLS0gMi42LjE4L2FyY2gvcHBj L2Jvb3Qvc2ltcGxlL3h1YXJ0bGl0ZV90dHkuYwkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAw MCAtMDgwMAorKysgcGF0Y2hlZC9hcmNoL3BwYy9ib290L3NpbXBsZS94dWFydGxpdGVfdHR5LmMJ MjAwNi0xMC0wNyAxMDoyOTozMC4wMDAwMDAwMDAgLTA3MDAKQEAgLTAsMCArMSw3NCBAQAorLyoK KyAqIFhpbGlueCBVQVJUIExpdGUgc3VwcG9ydC4gCisgKiBSaWdodCBub3cgaXQgb25seSB3b3Jr cyBvdmVyIFVBUlQwIGFuZCBub25lIG90aGVyLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBE YXZpZCBCb2xjc2ZvbGRpIDxkYm9sY3Nmb2xkaUBnbWFpbC5jb20+CisgKiAKKyAqIFRoaXMgZmls ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisgKiB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdp dGhvdXQgYW55IHdhcnJhbnR5IG9mIGFueQorICoga2luZCwgd2hldGhlciBleHByZXNzIG9yIGlt cGxpZWQuCisgKi8KKworI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPHBsYXRmb3Jtcy80 eHgveHBhcmFtZXRlcnMveHBhcmFtZXRlcnMuaD4KKworI2RlZmluZSBYVUxfU1RBVFVTX1JFR19P RkZTRVQgICAgICAgICAgIDggICAvKiBzdGF0dXMgcmVnaXN0ZXIsIHJlYWQgb25seSAqLworI2Rl ZmluZSBYVUxfU1JfVFhfRklGT19GVUxMICAgICAgICAgICAgIDB4MDggICAgLyogdHJhbnNtaXQg RklGTyBmdWxsICovCisjZGVmaW5lIFhVTF9TUl9SWF9GSUZPX1ZBTElEX0RBVEEgICAgICAgMHgw MSAgICAvKiBkYXRhIGluIHJlY2VpdmUgRklGTyAqLworI2RlZmluZSBYVUxfUlhfRklGT19PRkZT RVQgICAgICAgICAgICAgIDAgICAvKiByZWNlaXZlIEZJRk8sIHJlYWQgb25seSAqLworI2RlZmlu ZSBYVUxfVFhfRklGT19PRkZTRVQgICAgICAgICAgICAgIDQgICAvKiB0cmFuc21pdCBGSUZPLCB3 cml0ZSBvbmx5ICovCisKK3N0YXRpYyBpbmxpbmUgaW50IGlzX3htaXRfZnVsbCh1bnNpZ25lZCBp bnQgYWRkcmVzcykKK3sKKwlyZXR1cm4gKChpbl9iZTMyKCh2b2xhdGlsZSB1bnNpZ25lZCAqKSAo YWRkcmVzcyArIFhVTF9TVEFUVVNfUkVHX09GRlNFVCkpICYgWFVMX1NSX1RYX0ZJRk9fRlVMTCkg PT0gWFVMX1NSX1RYX0ZJRk9fRlVMTCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGlzX3JlY3Zf ZW1wdHkodW5zaWduZWQgaW50IGFkZHJlc3MpCit7CisJcmV0dXJuICgoaW5fYmUzMigodm9sYXRp bGUgdW5zaWduZWQgKikgKGFkZHJlc3MgKyBYVUxfU1RBVFVTX1JFR19PRkZTRVQpKSAmIFhVTF9T Ul9SWF9GSUZPX1ZBTElEX0RBVEEpICE9IFhVTF9TUl9SWF9GSUZPX1ZBTElEX0RBVEEpOworfQor Cit1bnNpZ25lZCBsb25nIHNlcmlhbF9pbml0KGludCBjaGFuLCB2b2lkICppZ25vcmVkKQorewor CXN3aXRjaCAoY2hhbikgIHsKKwkjaWZkZWYgWFBBUl9YVUxfVUFSVF8wX0JBU0VBRERSCisJCWNh c2UgMDoKKwkJCXJldHVybiBYUEFSX1hVTF9VQVJUXzBfQkFTRUFERFI7CisJI2VuZGlmCisJI2lm ZGVmIFhQQVJfWFVMX1VBUlRfMV9CQVNFQUREUgorCQljYXNlIDE6CQkKKwkJCXJldHVybiBYUEFS X1hVTF9VQVJUXzFfQkFTRUFERFI7CisJI2VuZGlmCisJI2lmZGVmIFhQQVJfWFVMX1VBUlRfMl9C QVNFQUREUgorCQljYXNlIDI6CisJCQlyZXR1cm4gWFBBUl9YVUxfVUFSVF8yX0JBU0VBRERSOwor CSNlbmRpZgorCSNpZmRlZiBYUEFSX1hVTF9VQVJUXzNfQkFTRUFERFIKKwkJY2FzZSAzOgorCQkJ cmV0dXJuIFhQQVJfWFVMX1VBUlRfM19CQVNFQUREUjsKKwkjZW5kaWYKKwkJZGVmYXVsdDoKKwkJ CWdvdG8gb3V0OworCX0KKwkKK291dDoKKwlyZXR1cm4gLTE7Cit9CisKK3ZvaWQgc2VyaWFsX3B1 dGModW5zaWduZWQgbG9uZyBjb21fcG9ydCwgdW5zaWduZWQgY2hhciBjKQoreworCXdoaWxlKGlz X3htaXRfZnVsbChYUEFSX1hVTF9VQVJUXzBfQkFTRUFERFIpKTsKKwlvdXRfYmUzMigodm9sYXRp bGUgdW5zaWduZWQgKikgKFhQQVJfWFVMX1VBUlRfMF9CQVNFQUREUiArIFhVTF9UWF9GSUZPX09G RlNFVCksIGMpOworfQorCit1bnNpZ25lZCBjaGFyIHNlcmlhbF9nZXRjKHVuc2lnbmVkIGxvbmcg Y29tX3BvcnQpCit7CisJd2hpbGUoaXNfcmVjdl9lbXB0eShYUEFSX1hVTF9VQVJUXzBfQkFTRUFE RFIpKTsKKwlyZXR1cm4gaW5fYmUzMigodm9sYXRpbGUgdW5zaWduZWQgKikgKFhQQVJfWFVMX1VB UlRfMF9CQVNFQUREUiArIFhVTF9SWF9GSUZPX09GRlNFVCkpOworfQorCitpbnQgc2VyaWFsX3Rz dGModW5zaWduZWQgbG9uZyBjb21fcG9ydCkKK3sKKwlyZXR1cm4gIShpc19yZWN2X2VtcHR5KFhQ QVJfWFVMX1VBUlRfMF9CQVNFQUREUikpOworfQorCg== ------=_Part_68525_2102138.1160513348690 Content-Type: text/x-patch; name=misc-common.c.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_et4rdsyd Content-Disposition: attachment; filename="misc-common.c.patch" ZGlmZiAtdXJOIDIuNi4xOC9hcmNoL3BwYy9ib290L2NvbW1vbi9taXNjLWNvbW1vbi5jIHBhdGNo ZWQvYXJjaC9wcGMvYm9vdC9jb21tb24vbWlzYy1jb21tb24uYwotLS0gMi42LjE4L2FyY2gvcHBj L2Jvb3QvY29tbW9uL21pc2MtY29tbW9uLmMJMjAwNi0xMC0wNCAxNDozMToxNS4wMDAwMDAwMDAg LTA3MDAKKysrIHBhdGNoZWQvYXJjaC9wcGMvYm9vdC9jb21tb24vbWlzYy1jb21tb24uYwkyMDA2 LTEwLTA3IDEwOjMzOjI4LjAwMDAwMDAwMCAtMDcwMApAQCAtNTcsNyArNTcsOCBAQAogCiAjaWYg ZGVmaW5lZChDT05GSUdfU0VSSUFMX0NQTV9DT05TT0xFKSB8fCBkZWZpbmVkKENPTkZJR19TRVJJ QUxfODI1MF9DT05TT0xFKSBcCiAJfHwgZGVmaW5lZChDT05GSUdfU0VSSUFMX01QQzUyeHhfQ09O U09MRSkgXAotCXx8IGRlZmluZWQoQ09ORklHX1NFUklBTF9NUFNDX0NPTlNPTEUpCisJfHwgZGVm aW5lZChDT05GSUdfU0VSSUFMX01QU0NfQ09OU09MRSkgXAorCXx8IGRlZmluZWQoQ09ORklHX1NF UklBTF9YVUxfQ09OU09MRSkKIGV4dGVybiB1bnNpZ25lZCBsb25nIGNvbV9wb3J0OwogCiBleHRl cm4gaW50IHNlcmlhbF90c3RjKHVuc2lnbmVkIGxvbmcgY29tX3BvcnQpOwpAQCAtODAsNyArODEs OCBAQAogewogI2lmIGRlZmluZWQoQ09ORklHX1NFUklBTF9DUE1fQ09OU09MRSkgfHwgZGVmaW5l ZChDT05GSUdfU0VSSUFMXzgyNTBfQ09OU09MRSkgXAogCXx8IGRlZmluZWQoQ09ORklHX1NFUklB TF9NUEM1Mnh4X0NPTlNPTEUpIFwKLQl8fCBkZWZpbmVkKENPTkZJR19TRVJJQUxfTVBTQ19DT05T T0xFKQorCXx8IGRlZmluZWQoQ09ORklHX1NFUklBTF9NUFNDX0NPTlNPTEUpIFwKKwl8fCBkZWZp bmVkKENPTkZJR19TRVJJQUxfWFVMX0NPTlNPTEUpCiAJaWYoa2V5Yl9wcmVzZW50KQogCQlyZXR1 cm4gKENSVF90c3RjKCkgfHwgc2VyaWFsX3RzdGMoY29tX3BvcnQpKTsKIAllbHNlCkBAIC05NSw3 ICs5Nyw4IEBACiAJd2hpbGUgKDEpIHsKICNpZiBkZWZpbmVkKENPTkZJR19TRVJJQUxfQ1BNX0NP TlNPTEUpIHx8IGRlZmluZWQoQ09ORklHX1NFUklBTF84MjUwX0NPTlNPTEUpIFwKIAl8fCBkZWZp bmVkKENPTkZJR19TRVJJQUxfTVBDNTJ4eF9DT05TT0xFKSBcCi0JfHwgZGVmaW5lZChDT05GSUdf U0VSSUFMX01QU0NfQ09OU09MRSkKKwl8fCBkZWZpbmVkKENPTkZJR19TRVJJQUxfTVBTQ19DT05T T0xFKSBcCisJfHwgZGVmaW5lZChDT05GSUdfU0VSSUFMX1hVTF9DT05TT0xFKQogCQlpZiAoc2Vy aWFsX3RzdGMoY29tX3BvcnQpKQogCQkJcmV0dXJuIChzZXJpYWxfZ2V0Yyhjb21fcG9ydCkpOwog I2VuZGlmIC8qIHNlcmlhbCBjb25zb2xlICovCkBAIC0xMTIsNyArMTE1LDggQEAKIAogI2lmIGRl ZmluZWQoQ09ORklHX1NFUklBTF9DUE1fQ09OU09MRSkgfHwgZGVmaW5lZChDT05GSUdfU0VSSUFM XzgyNTBfQ09OU09MRSkgXAogCXx8IGRlZmluZWQoQ09ORklHX1NFUklBTF9NUEM1Mnh4X0NPTlNP TEUpIFwKLQl8fCBkZWZpbmVkKENPTkZJR19TRVJJQUxfTVBTQ19DT05TT0xFKQorCXx8IGRlZmlu ZWQoQ09ORklHX1NFUklBTF9NUFNDX0NPTlNPTEUpIFwKKwl8fCBkZWZpbmVkKENPTkZJR19TRVJJ QUxfWFVMX0NPTlNPTEUpCiAJc2VyaWFsX3B1dGMoY29tX3BvcnQsIGMpOwogCWlmICggYyA9PSAn XG4nICkKIAkJc2VyaWFsX3B1dGMoY29tX3BvcnQsICdccicpOwpAQCAtMTYxLDcgKzE2NSw4IEBA CiAJd2hpbGUgKCAoIGMgPSAqcysrICkgIT0gJ1wwJyApIHsKICNpZiBkZWZpbmVkKENPTkZJR19T RVJJQUxfQ1BNX0NPTlNPTEUpIHx8IGRlZmluZWQoQ09ORklHX1NFUklBTF84MjUwX0NPTlNPTEUp IFwKIAl8fCBkZWZpbmVkKENPTkZJR19TRVJJQUxfTVBDNTJ4eF9DT05TT0xFKSBcCi0JfHwgZGVm aW5lZChDT05GSUdfU0VSSUFMX01QU0NfQ09OU09MRSkKKwl8fCBkZWZpbmVkKENPTkZJR19TRVJJ QUxfTVBTQ19DT05TT0xFKSBcCisJfHwgZGVmaW5lZChDT05GSUdfU0VSSUFMX1hVTF9DT05TT0xF KQogCSAgICAgICAgc2VyaWFsX3B1dGMoY29tX3BvcnQsIGMpOwogCSAgICAgICAgaWYgKCBjID09 ICdcbicgKSBzZXJpYWxfcHV0Yyhjb21fcG9ydCwgJ1xyJyk7CiAjZW5kaWYgLyogc2VyaWFsIGNv bnNvbGUgKi8K ------=_Part_68525_2102138.1160513348690 Content-Type: text/x-patch; name=virtex.c.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_et4rdw91 Content-Disposition: attachment; filename="virtex.c.patch" LS0tIDIuNi4xOC9hcmNoL3BwYy9wbGF0Zm9ybXMvNHh4L3ZpcnRleC5jCTIwMDYtMTAtMDQgMTQ6 MzE6MTUuMDAwMDAwMDAwIC0wNzAwCisrKyBwYXRjaGVkL2FyY2gvcHBjL3BsYXRmb3Jtcy80eHgv dmlydGV4LmMJMjAwNi0xMC0wNyAxMToyMToxOC4wMDAwMDAwMDAgLTA3MDAKQEAgLTUyLDUgKzUy LDEwIEBACiAJCS5pZAkJPSAwLAogCQkuZGV2LnBsYXRmb3JtX2RhdGEgPSBzZXJpYWxfcGxhdGZv cm1fZGF0YSwKIAl9LAorCisJW1ZJUlRFWF9YVUxfVUFSVF0gPSB7CisJCS5uYW1lID0gInh1bF91 YXJ0IiwKKwkJLmlkCSAgPSAwLAorCX0sCiB9OwogCg== ------=_Part_68525_2102138.1160513348690 Content-Type: text/x-patch; name=virtex.h.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_et4rdzlh Content-Disposition: attachment; filename="virtex.h.patch" LS0tIDIuNi4xOC9hcmNoL3BwYy9wbGF0Zm9ybXMvNHh4L3ZpcnRleC5oCTIwMDYtMTAtMDQgMTQ6 MzE6MTUuMDAwMDAwMDAwIC0wNzAwCisrKyBwYXRjaGVkL2FyY2gvcHBjL3BsYXRmb3Jtcy80eHgv dmlydGV4LmgJMjAwNi0xMC0wNyAxMDozNTozMS4wMDAwMDAwMDAgLTA3MDAKQEAgLTI3LDcgKzI3 LDkgQEAKIC8qIERldmljZSB0eXBlIGVudW1lcmF0aW9uIGZvciBwbGF0Zm9ybSBidXMgZGVmaW5p dGlvbnMgKi8KICNpZm5kZWYgX19BU1NFTUJMWV9fCiBlbnVtIHBwY19zeXNfZGV2aWNlcyB7Ci0J VklSVEVYX1VBUlQsIE5VTV9QUENfU1lTX0RFVlMsCisJVklSVEVYX1VBUlQsCisJVklSVEVYX1hV TF9VQVJULAorCU5VTV9QUENfU1lTX0RFVlMsCiB9OwogI2VuZGlmCiAgIAo= ------=_Part_68525_2102138.1160513348690 Content-Type: text/x-patch; name=xuartlite.c.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_et4re3c8 Content-Disposition: attachment; filename="xuartlite.c.patch" ZGlmZiAtdXJOIDIuNi4xOC9kcml2ZXJzL3NlcmlhbC9LY29uZmlnIHBhdGNoZWQvZHJpdmVycy9z ZXJpYWwvS2NvbmZpZwotLS0gMi42LjE4L2RyaXZlcnMvc2VyaWFsL0tjb25maWcJMjAwNi0xMC0w NCAxNDozMToxOC4wMDAwMDAwMDAgLTA3MDAKKysrIHBhdGNoZWQvZHJpdmVycy9zZXJpYWwvS2Nv bmZpZwkyMDA2LTEwLTA3IDEwOjUwOjIwLjAwMDAwMDAwMCAtMDcwMApAQCAtOTU5LDQgKzk1OSwy MiBAQAogCSAgSWYgeW91IGhhdmUgZW5hYmxlZCB0aGUgc2VyaWFsIHBvcnQgb24gdGhlIE1vdG9y b2xhIElNWAogCSAgQ1BVIHlvdSBjYW4gbWFrZSBpdCB0aGUgY29uc29sZSBieSBhbnN3ZXJpbmcg WSB0byB0aGlzIG9wdGlvbi4KIAorY29uZmlnIFNFUklBTF9YVUwKKwl0cmlzdGF0ZSAiWGlsaW54 IFVBUlQgTGl0ZSBzZXJpYWwgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIFhJTElOWF9NTDQwMworCXNl bGVjdCBTRVJJQUxfQ09SRQorCWhlbHAKKwkgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBYaWxp bnggVUFSVCBMaXRlIHNlcmlhbCBwb3J0cy4gSWYgeW91IHdvdWxkCisJICBsaWtlIHRvIHVzZSB0 aGVtLCB5b3UgbXVzdCBhbnN3ZXIgWSBvciBNIHRvIHRoaXMgb3B0aW9uLiBOb3RlIHRoYXQKKwkg IGZvciB1c2UgYXMgY29uc29sZSwgaXQgbXVzdCBiZSBpbmNsdWRlZCBpbiB0aGUga2VybmVsIGFu ZCBub3QgYXMgYSAKKwkgIG1vZHVsZS4KKworY29uZmlnIFNFUklBTF9YVUxfQ09OU09MRQorCWJv b2wgIkNvbnNvbGUgb24gYSBYaWxpbnggVUFSVCBMaXRlIHNlcmlhbCBwb3J0IgorCWRlcGVuZHMg b24gU0VSSUFMX1hVTAorCXNlbGVjdCBTRVJJQUxfQ09SRV9DT05TT0xFCisJaGVscAorCSAgU2Vs ZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSdkIGxpa2UgdG8gdXNlIHRoZSBVQVJUIExpdGUgc2VyaWFs IHBvcnQKKwkgIG9mIHRoZSBYaWxpbnggTUw0MDMgYm9hcmQgYXMgYSBjb25zb2xlLgorCiBlbmRt ZW51CmRpZmYgLXVyTiAyLjYuMTgvZHJpdmVycy9zZXJpYWwvTWFrZWZpbGUgcGF0Y2hlZC9kcml2 ZXJzL3NlcmlhbC9NYWtlZmlsZQotLS0gMi42LjE4L2RyaXZlcnMvc2VyaWFsL01ha2VmaWxlCTIw MDYtMTAtMDQgMTQ6MzE6MTguMDAwMDAwMDAwIC0wNzAwCisrKyBwYXRjaGVkL2RyaXZlcnMvc2Vy aWFsL01ha2VmaWxlCTIwMDYtMTAtMDcgMTA6NTE6MDIuMDAwMDAwMDAwIC0wNzAwCkBAIC01Niwz ICs1Niw0IEBACiBvYmotJChDT05GSUdfU0VSSUFMX1NHSV9JT0MzKSArPSBpb2MzX3NlcmlhbC5v CiBvYmotJChDT05GSUdfU0VSSUFMX0FUOTEpICs9IGF0OTFfc2VyaWFsLm8KIG9iai0kKENPTkZJ R19TRVJJQUxfTkVUWCkgKz0gbmV0eC1zZXJpYWwubworb2JqLSQoQ09ORklHX1NFUklBTF9YVUwp ICs9IHh1YXJ0bGl0ZS5vCmRpZmYgLXVyTiAyLjYuMTgvZHJpdmVycy9zZXJpYWwveHVhcnRsaXRl LmMgcGF0Y2hlZC9kcml2ZXJzL3NlcmlhbC94dWFydGxpdGUuYwotLS0gMi42LjE4L2RyaXZlcnMv c2VyaWFsL3h1YXJ0bGl0ZS5jCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisr KyBwYXRjaGVkL2RyaXZlcnMvc2VyaWFsL3h1YXJ0bGl0ZS5jCTIwMDYtMTAtMTAgMTE6MDg6MDgu MDAwMDAwMDAwIC0wNzAwCkBAIC0wLDAgKzEsNzIzIEBACisvKgorICogZHJpdmVycy9zZXJpYWwv eHVhcnRsaXRlLmMKKyAqCisgKiBEcml2ZXIgZm9yIFhpbGlueCBVQVJUIExpdGUgZGV2aWNlLgor ICoKKyAqIFRoaXMgZHJpdmVyIGhhcyBvbmx5IGJlZW4gdGVzdGVkIHdpdGggdGhlIFhpbGlueCBN TDQwMy1GWCBib2FyZCB1c2luZyB0aGUgcGxiX3RlbWFjCisgKiByZWZlcmVuY2UgZGVzaWduIHdp dGggb24gVUFSVCBwb3J0LgorICogCisgKiBUaGlzIGRyaXZlciBpcyBsb29zZWx5IGJhc2VkIG9m ZiB0aGUgbXBjNTJ4eF91YXJ0IGRyaXZlci4KKyAqIAorICogQ29weXJpZ2h0IChDKSAyMDA2IERh dmlkIEJvbGNzZm9sZGkgPGRib2xjc2ZvbGRpQGdtYWlsLmNvbT4KKyAqIAorICogVGhpcyBmaWxl IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKyAqIHZlcnNpb24gMi4gVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIgd2l0 aG91dCBhbnkgd2FycmFudHkgb2YgYW55CisgKiBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1w bGllZC4KKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgv cGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8 bGludXgvdHR5Lmg+CisjaW5jbHVkZSA8bGludXgvc2VyaWFsLmg+CisjaW5jbHVkZSA8bGludXgv c3lzcnEuaD4KKyNpbmNsdWRlIDxsaW51eC9jb25zb2xlLmg+CisKKyNpbmNsdWRlIDxhc20vZGVs YXkuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxwbGF0Zm9ybXMvNHh4L3hwYXJh bWV0ZXJzL3hwYXJhbWV0ZXJzLmg+CisKKyNpZiBkZWZpbmVkKENPTkZJR19TRVJJQUxfWFVMX0NP TlNPTEUpICYmIGRlZmluZWQoQ09ORklHX01BR0lDX1NZU1JRKQorI2RlZmluZSBTVVBQT1JUX1NZ U1JRCisjZW5kaWYKKworI2luY2x1ZGUgPGxpbnV4L3NlcmlhbF9jb3JlLmg+CisKKyNkZWZpbmUg U0VSSUFMX1hVTF9NQUpPUgkyMDQKKyNkZWZpbmUgU0VSSUFMX1hVTF9NSU5PUgkxODcKKworLyoK KyAqIEtlZXBzIHZhcmlvdXMgdGlkYml0cyBhYm91dCB0aGUgc2VyaWFsIHBvcnQgdGFrZW4KKyAq IGZyb20geHBhcmFtZXRlcnMuaAorICogKi8KKworc3RydWN0IHh1bF91YXJ0X2RhdGEgeworCWlu dCBiYXVkOworCWludCBwYXJpdHk7CisJaW50IGJpdHM7CisJaW50IGZsb3c7CisJaW50IHVhcnRj bGs7CisJaW50IGlycTsKKwlpbnQgbWFwYmFzZTsKKwlpbnQgc2l6ZTsKK307CisKK3N0YXRpYyBz dHJ1Y3QgeHVsX3VhcnRfZGF0YSB4dWxfZGF0YVtYUEFSX1hVQVJUTElURV9OVU1fSU5TVEFOQ0VT XSA9IHsKKwl7IAorCQkuYmF1ZCA9IFhQQVJfWFVMX1VBUlRfMF9CQVVEUkFURSwKKyNpZiAoWFBB Ul9YVUxfVUFSVF8wX1VTRV9QQVJJVFkgIT0gMCkKKwkJLnBhcml0eSA9ICd5JywKKyNlbHNlCisJ CS5wYXJpdHkgPSAnbicsCisjZW5kaWYgLyogWFBBUl9YVUxfVUFSVF8wX1VTRV9QQVJJVFkgKi8K KwkJLmJpdHMgPSBYUEFSX1hVTF9VQVJUXzBfREFUQV9CSVRTLAkJCisJCS5mbG93ID0gJ24nLAor CQkudWFydGNsayA9IDEwMDAwMDAwMCAvIDE2LCAvKiBQTEIgc3BlZWQgLyAxNiAqLworCQkuaXJx ID0gWFBBUl9JTlRDXzBfWFVMX1VBUlRfMF9WRUNfSUQsCisJCS5tYXBiYXNlID0gWFBBUl9YVUxf VUFSVF8wX0JBU0VBRERSLAorCQkuc2l6ZSA9IChYUEFSX1hVTF9VQVJUXzBfSElHSEFERFIgLSBY UEFSX1hVTF9VQVJUXzBfQkFTRUFERFIpICsgMQorCX0KKworCS8qIEFkZCBuZXh0IHVhcnQgaGVy ZSAqLworfTsKKworc3RhdGljIGNvbnN0IGxvbmcgSVNSX1BBU1NfTElNSVQgPSAyNTU7CitzdGF0 aWMgc3RydWN0IHVhcnRfcG9ydCB4dWxfdWFydF9wb3J0c1tYUEFSX1hVQVJUTElURV9OVU1fSU5T VEFOQ0VTXTsKKworI2RlZmluZSBYVUwocG9ydCkgKCh1bnNpZ25lZCBpbnQpKChwb3J0KS0+bWVt YmFzZSkpCisKKyNkZWZpbmUgWFVMX1JYX0ZJRk9fT0ZGU0VUICAgICAgICAgICAgICAwICAgLyog cmVjZWl2ZSBGSUZPLCByZWFkIG9ubHkgKi8KKyNkZWZpbmUgWFVMX1RYX0ZJRk9fT0ZGU0VUICAg ICAgICAgICAgICA0ICAgLyogdHJhbnNtaXQgRklGTywgd3JpdGUgb25seSAqLworI2RlZmluZSBY VUxfU1RBVFVTX1JFR19PRkZTRVQgICAgICAgICAgIDggICAvKiBzdGF0dXMgcmVnaXN0ZXIsIHJl YWQgb25seSAqLworI2RlZmluZSBYVUxfQ09OVFJPTF9SRUdfT0ZGU0VUICAgICAgICAgIDEyICAv KiBjb250cm9sIHJlZ2lzdGVyLCB3cml0ZSBvbmx5ICovCisKKyNkZWZpbmUgWFVMX0NSX0VOQUJM RV9JTlRSICAgICAgICAgICAgICAweDEwICAgIC8qIGVuYWJsZSBpbnRlcnJ1cHQgKi8KKyNkZWZp bmUgWFVMX0NSX0ZJRk9fUlhfUkVTRVQgICAgICAgICAgICAweDAyICAgIC8qIHJlc2V0IHJlY2Vp dmUgRklGTyAqLworI2RlZmluZSBYVUxfQ1JfRklGT19UWF9SRVNFVCAgICAgICAgICAgIDB4MDEg ICAgLyogcmVzZXQgdHJhbnNtaXQgRklGTyAqLworCisjZGVmaW5lIFhVTF9TUl9QQVJJVFlfRVJS T1IgICAgICAgICAgICAgMHg4MAorI2RlZmluZSBYVUxfU1JfRlJBTUlOR19FUlJPUiAgICAgICAg ICAgIDB4NDAKKyNkZWZpbmUgWFVMX1NSX09WRVJSVU5fRVJST1IgICAgICAgICAgICAweDIwCisj ZGVmaW5lIFhVTF9TUl9UWF9GSUZPX0ZVTEwgICAgICAgICAgICAgMHgwOCAgICAvKiB0cmFuc21p dCBGSUZPIGZ1bGwgKi8KKyNkZWZpbmUgWFVMX1NSX1RYX0ZJRk9fRU1QVFkgICAgICAgICAgICAw eDA0ICAgIC8qIHRyYW5zbWl0IEZJRk8gZW1wdHkgKi8KKyNkZWZpbmUgWFVMX1NSX1JYX0ZJRk9f VkFMSURfREFUQSAgICAgICAweDAxICAgIC8qIGRhdGEgaW4gcmVjZWl2ZSBGSUZPICovCisKKy8q IEZvcndhcmQgZGVjbGFyYXRpb24gb2YgdGhlIGludGVycnVwdGlvbiBoYW5kbGluZyByb3V0aW5l ICovCitzdGF0aWMgaXJxcmV0dXJuX3QgeHVsX3VhcnRfaW50KGludCBpcnEsdm9pZCAqZGV2X2lk LHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKKworLyogU2ltcGxlIG1hY3JvIHRvIHRlc3QgaWYgYSBw b3J0IGlzIGNvbnNvbGUgb3Igbm90LiBUaGlzIG9uZSBpcyB0YWtlbgorICogZm9yIHNlcmlhbF9j b3JlLmMgYW5kIG1heWJlIHNob3VsZCBiZSBtb3ZlZCB0byBzZXJpYWxfY29yZS5oID8gKi8KKyNp ZmRlZiBDT05GSUdfU0VSSUFMX0NPUkVfQ09OU09MRQorI2RlZmluZSB1YXJ0X2NvbnNvbGUocG9y dCkJKChwb3J0KS0+Y29ucyAmJiAocG9ydCktPmNvbnMtPmluZGV4ID09IChwb3J0KS0+bGluZSkK KyNlbHNlCisjZGVmaW5lIHVhcnRfY29uc29sZShwb3J0KQkoMCkKKyNlbmRpZgorCisvKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0gKi8KKy8qIFVBUlQgb3BlcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ICovCisKK3N0YXRpYyBpbnQKK3h1bF91YXJ0X2ludF90eF9jaGFycyhzdHJ1Y3QgdWFydF9wb3J0 ICpwb3J0KTsKKworc3RhdGljIGlubGluZSBpbnQgaXNfeG1pdF9lbXB0eShzdHJ1Y3QgdWFydF9w b3J0ICpwb3J0KQoreworCXJldHVybiAoKGluX2JlMzIoKHZvbGF0aWxlIHVuc2lnbmVkICopIChY VUwocG9ydCkgKyBYVUxfU1RBVFVTX1JFR19PRkZTRVQpKSAmIFhVTF9TUl9UWF9GSUZPX0VNUFRZ KSA9PSBYVUxfU1JfVFhfRklGT19FTVBUWSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGlzX3Jl Y3ZfZW1wdHkoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKK3sKKwlyZXR1cm4gKChpbl9iZTMyKCh2 b2xhdGlsZSB1bnNpZ25lZCAqKSAoWFVMKHBvcnQpICsgWFVMX1NUQVRVU19SRUdfT0ZGU0VUKSkg JiBYVUxfU1JfUlhfRklGT19WQUxJRF9EQVRBKSAhPSBYVUxfU1JfUlhfRklGT19WQUxJRF9EQVRB KTsKK30KKworc3RhdGljIGlubGluZSBpbnQgaXNfeG1pdF9mdWxsKHN0cnVjdCB1YXJ0X3BvcnQg KnBvcnQpCit7CisJcmV0dXJuICgoaW5fYmUzMigodm9sYXRpbGUgdW5zaWduZWQgKikgKFhVTChw b3J0KSArIFhVTF9TVEFUVVNfUkVHX09GRlNFVCkpICYgWFVMX1NSX1RYX0ZJRk9fRlVMTCkgPT0g WFVMX1NSX1RYX0ZJRk9fRlVMTCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB4bWl0X2NoYXIo c3RydWN0IHVhcnRfcG9ydCAqcG9ydCwgY2hhciBjKQoreworCXdoaWxlKGlzX3htaXRfZnVsbChw b3J0KSk7CisJb3V0X2JlMzIoKHZvbGF0aWxlIHVuc2lnbmVkICopIChYVUwocG9ydCkgKyBYVUxf VFhfRklGT19PRkZTRVQpLCBjKTsgCit9CisKK3N0YXRpYyBpbmxpbmUgY2hhciByZWN2X2NoYXIo c3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKK3sKKwl3aGlsZShpc19yZWN2X2VtcHR5KHBvcnQpKTsK KwlyZXR1cm4gaW5fYmUzMigodm9sYXRpbGUgdW5zaWduZWQgKikgKFhVTChwb3J0KSArIFhVTF9S WF9GSUZPX09GRlNFVCkpOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IAoreHVsX3VhcnRfdHhf ZW1wdHkoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKK3sKKwlyZXR1cm4gKChpc194bWl0X2VtcHR5 KHBvcnQpKSA/IFRJT0NTRVJfVEVNVCA6IDApOworfQorCitzdGF0aWMgdm9pZCAKK3h1bF91YXJ0 X3NldF9tY3RybChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0LCB1bnNpZ25lZCBpbnQgbWN0cmwpCit7 CisJLyogTm90IGltcGxlbWVudGVkICovCit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgCit4dWxf dWFydF9nZXRfbWN0cmwoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKK3sKKwlyZXR1cm4gVElPQ01f Q1RTIHwgVElPQ01fRFNSIHwgVElPQ01fQ0FSOworfQorCitzdGF0aWMgdm9pZCAKK3h1bF91YXJ0 X3N0b3BfdHgoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKK3sKKwkvKiBwb3J0LT5sb2NrIHRha2Vu IGJ5IGNhbGxlciAqLworfQorCitzdGF0aWMgdm9pZCAKK3h1bF91YXJ0X3N0YXJ0X3R4KHN0cnVj dCB1YXJ0X3BvcnQgKnBvcnQpCit7CisJLyogcG9ydC0+bG9jayB0YWtlbiBieSBjYWxsZXIgKi8K Kwl4dWxfdWFydF9pbnRfdHhfY2hhcnMocG9ydCk7Cit9CisKK3N0YXRpYyB2b2lkIAoreHVsX3Vh cnRfc2VuZF94Y2hhcihzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0LCBjaGFyIGNoKQoreworCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CisJCisJc3Bpbl9sb2NrX2lycXNhdmUoJnBvcnQtPmxvY2ssIGZsYWdz KTsKKwkKKwlwb3J0LT54X2NoYXIgPSBjaDsKKwkKKwlpZiAoY2gpIHsKKwkJeG1pdF9jaGFyKHBv cnQsIGNoKTsKKwl9CisJCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcG9ydC0+bG9jaywgZmxh Z3MpOworfQorCitzdGF0aWMgdm9pZAoreHVsX3VhcnRfc3RvcF9yeChzdHJ1Y3QgdWFydF9wb3J0 ICpwb3J0KQoreworCS8qIHBvcnQtPmxvY2sgdGFrZW4gYnkgY2FsbGVyICovCit9CisKK3N0YXRp YyB2b2lkCit4dWxfdWFydF9lbmFibGVfbXMoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKK3sKKwkv KiBOb3QgaW1wbGVtZW50ZWQgKi8KK30KKworc3RhdGljIHZvaWQKK3h1bF91YXJ0X2JyZWFrX2N0 bChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0LCBpbnQgY3RsKQoreworCS8qIE5vdCBpbXBsZW1lbnRl ZCAqLworfQorCitzdGF0aWMgaW50Cit4dWxfdWFydF9zdGFydHVwKHN0cnVjdCB1YXJ0X3BvcnQg KnBvcnQpCit7CisJaW50IHJldDsKKwkKKwkvKiBSZXF1ZXN0IElSUSAqLworCXJldCA9IHJlcXVl c3RfaXJxKHBvcnQtPmlycSwgeHVsX3VhcnRfaW50LAorCQlTQV9JTlRFUlJVUFQgfCBTQV9TQU1Q TEVfUkFORE9NLCAieHVsX3VhcnQiLCBwb3J0KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0Owor CisJLyogUmVzZXQvYWN0aXZhdGUgdGhlIHBvcnQsIGNsZWFyIGFuZCBlbmFibGUgaW50ZXJydXB0 cyAqLworCW91dF9iZTMyKCh2b2xhdGlsZSB1bnNpZ25lZCAqKSAoWFVMKHBvcnQpICsgWFVMX0NP TlRST0xfUkVHX09GRlNFVCksIFhVTF9DUl9GSUZPX1RYX1JFU0VUKTsgLyogUmVzZXQgVFggKi8K KwlvdXRfYmUzMigodm9sYXRpbGUgdW5zaWduZWQgKikgKFhVTChwb3J0KSArIFhVTF9DT05UUk9M X1JFR19PRkZTRVQpLCBYVUxfQ1JfRklGT19SWF9SRVNFVCk7IC8qIFJlc2V0IFJYICovCisJb3V0 X2JlMzIoKHZvbGF0aWxlIHVuc2lnbmVkICopIChYVUwocG9ydCkgKyBYVUxfQ09OVFJPTF9SRUdf T0ZGU0VUKSwgWFVMX0NSX0VOQUJMRV9JTlRSKTsgLyogRW5hYmxlIGludGVycnVwdCAqLworCQkK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3h1bF91YXJ0X3NodXRkb3duKHN0cnVjdCB1 YXJ0X3BvcnQgKnBvcnQpCit7CisJLyogU2h1dCBkb3duIHRoZSBwb3J0LCBpbnRlcnJ1cHQgYW5k IGFsbCAqLworCisJLyogRGlzYWJsZSBpbnRlcnJ1cHQgYnUgY2xlYXJpbmcgY29udHJvbCByZWdp c3RlciAqLworCW91dF9iZTMyKCh2b2xhdGlsZSB1bnNpZ25lZCAqKSAoWFVMKHBvcnQpICsgWFVM X0NPTlRST0xfUkVHX09GRlNFVCksIDApOworCisJb3V0X2JlMzIoKHZvbGF0aWxlIHVuc2lnbmVk ICopIChYVUwocG9ydCkgKyBYVUxfQ09OVFJPTF9SRUdfT0ZGU0VUKSwgWFVMX0NSX0ZJRk9fVFhf UkVTRVQpOyAvKiBSZXNldCBUWCAqLworCW91dF9iZTMyKCh2b2xhdGlsZSB1bnNpZ25lZCAqKSAo WFVMKHBvcnQpICsgWFVMX0NPTlRST0xfUkVHX09GRlNFVCksIFhVTF9DUl9GSUZPX1JYX1JFU0VU KTsgLyogUmVzZXQgUlggKi8KKworCS8qIFJlbGVhc2UgaW50ZXJydXB0ICovCisJZnJlZV9pcnEo cG9ydC0+aXJxLCBwb3J0KTsKK30KKworc3RhdGljIHZvaWQgCit4dWxfdWFydF9zZXRfdGVybWlv cyhzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0LCBzdHJ1Y3QgdGVybWlvcyAqbmV3LAorICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB0ZXJtaW9zICpvbGQpCit7CisJLyogTm90aGluZyBjYW4g YmUgc2V0LCBmaXhlZCBhdCBJUCBibG9jayBnZW5lcmF0aW9uICovCit9CisKK3N0YXRpYyBjb25z dCBjaGFyICoKK3h1bF91YXJ0X3R5cGUoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKK3sKKwlyZXR1 cm4gcG9ydC0+dHlwZSA9PSBQT1JUX1hVTCA/ICJ0dHlYVUwiIDogTlVMTDsKK30KKworc3RhdGlj IHZvaWQKK3h1bF91YXJ0X3JlbGVhc2VfcG9ydChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQorewor CWlmIChwb3J0LT5mbGFncyAmIFVQRl9JT1JFTUFQKSB7CisJCWlvdW5tYXAocG9ydC0+bWVtYmFz ZSk7CisJCXBvcnQtPm1lbWJhc2UgPSBOVUxMOworCX0KKwkKKwlyZWxlYXNlX21lbV9yZWdpb24o cG9ydC0+bWFwYmFzZSwgeHVsX2RhdGFbcG9ydC0+bGluZV0uc2l6ZSk7Cit9CisKK3N0YXRpYyBp bnQKK3h1bF91YXJ0X3JlcXVlc3RfcG9ydChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQoreworCWlu dCBtZW1fcmVnaW9uOworCQorCWlmIChwb3J0LT5mbGFncyAmIFVQRl9JT1JFTUFQKSB7CisJCXBv cnQtPm1lbWJhc2UgPSBpb3JlbWFwKHBvcnQtPm1hcGJhc2UsIHh1bF9kYXRhW3BvcnQtPmxpbmVd LnNpemUpOworCX0KKworCWlmICghcG9ydC0+bWVtYmFzZSkgeworCQlyZXR1cm4gLUVJTlZBTDsK Kwl9CisJCisJbWVtX3JlZ2lvbiA9IHJlcXVlc3RfbWVtX3JlZ2lvbihwb3J0LT5tYXBiYXNlLCB4 dWxfZGF0YVtwb3J0LT5saW5lXS5zaXplLCAieHVsX3VhcnQiKSAhPSBOVUxMID8gMCA6IC1FQlVT WTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3h1bF91YXJ0X2NvbmZpZ19wb3J0KHN0 cnVjdCB1YXJ0X3BvcnQgKnBvcnQsIGludCBmbGFncykKK3sKKwlpZiAoIChmbGFncyAmIFVBUlRf Q09ORklHX1RZUEUpICYmCisJICAgICAoeHVsX3VhcnRfcmVxdWVzdF9wb3J0KHBvcnQpID09IDAp ICkKKwkgICAgIAlwb3J0LT50eXBlID0gUE9SVF9YVUw7Cit9CisKK3N0YXRpYyBpbnQKK3h1bF91 YXJ0X3ZlcmlmeV9wb3J0KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQsIHN0cnVjdCBzZXJpYWxfc3Ry dWN0ICpzZXIpCit7CisJaWYgKCBzZXItPnR5cGUgIT0gUE9SVF9VTktOT1dOICYmIHNlci0+dHlw ZSAhPSBQT1JUX1hVTCApIHsKKwkJcHJpbnRrKEtFUk5fV0FSTklORyAieHVsX3VhcnRfdmVyaWZ5 X3BvcnQoMSlcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAoIChzZXItPmlycSAh PSBwb3J0LT5pcnEpIHx8CisJICAgICAoc2VyLT5pb190eXBlICE9IFNFUklBTF9JT19NRU0pIHx8 CisJICAgICAoc2VyLT5iYXVkX2Jhc2UgIT0gcG9ydC0+dWFydGNsaykgIHx8IAorCSAgICAgKHNl ci0+aW9tZW1fYmFzZSAhPSAodm9pZCopcG9ydC0+bWFwYmFzZSkgfHwKKwkgICAgIChzZXItPmh1 YjYgIT0gMCApICkgeworCQlwcmludGsoS0VSTl9XQVJOSU5HICJ4dWxfdWFydF92ZXJpZnlfcG9y dCgxKVxuIik7CisJfQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldHVybiAwOworfQorCisKK3N0 YXRpYyBzdHJ1Y3QgdWFydF9vcHMgeHVsX3VhcnRfb3BzID0geworCS50eF9lbXB0eQk9IHh1bF91 YXJ0X3R4X2VtcHR5LAorCS5zZXRfbWN0cmwJPSB4dWxfdWFydF9zZXRfbWN0cmwsCisJLmdldF9t Y3RybAk9IHh1bF91YXJ0X2dldF9tY3RybCwKKwkuc3RvcF90eAk9IHh1bF91YXJ0X3N0b3BfdHgs CisJLnN0YXJ0X3R4CT0geHVsX3VhcnRfc3RhcnRfdHgsCisJLnNlbmRfeGNoYXIJPSB4dWxfdWFy dF9zZW5kX3hjaGFyLAorCS5zdG9wX3J4CT0geHVsX3VhcnRfc3RvcF9yeCwKKwkuZW5hYmxlX21z CT0geHVsX3VhcnRfZW5hYmxlX21zLAorCS5icmVha19jdGwJPSB4dWxfdWFydF9icmVha19jdGws CisJLnN0YXJ0dXAJPSB4dWxfdWFydF9zdGFydHVwLAorCS5zaHV0ZG93bgk9IHh1bF91YXJ0X3No dXRkb3duLAorCS5zZXRfdGVybWlvcwk9IHh1bF91YXJ0X3NldF90ZXJtaW9zLAorLyoJLnBtCQk9 IHh1bF91YXJ0X3BtLAkJTm90IHN1cHBvcnRlZCB5ZXQgKi8KKy8qCS5zZXRfd2FrZQk9IHh1bF91 YXJ0X3NldF93YWtlLAlOb3Qgc3VwcG9ydGVkIHlldCAqLworCS50eXBlCQk9IHh1bF91YXJ0X3R5 cGUsCisJLnJlbGVhc2VfcG9ydAk9IHh1bF91YXJ0X3JlbGVhc2VfcG9ydCwKKwkucmVxdWVzdF9w b3J0CT0geHVsX3VhcnRfcmVxdWVzdF9wb3J0LAorCS5jb25maWdfcG9ydAk9IHh1bF91YXJ0X2Nv bmZpZ19wb3J0LAorCS52ZXJpZnlfcG9ydAk9IHh1bF91YXJ0X3ZlcmlmeV9wb3J0Cit9OworCisJ CisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0gKi8KKy8qIEludGVycnVwdCBoYW5kbGluZyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ICovCisJCitzdGF0aWMgaW50Cit4dWxfdWFydF9pbnRfcnhfY2hhcnMoc3RydWN0 IHVhcnRfcG9ydCAqcG9ydCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJc3RydWN0IHR0eV9z dHJ1Y3QgKnR0eSA9IHBvcnQtPmluZm8tPnR0eTsKKwl1bnNpZ25lZCBjaGFyIGNoLCBmbGFnOwor CXVuc2lnbmVkIGxvbmcgc3RhdHVzOworCQorCXN0YXR1cyA9IGluX2JlMzIoKHZvbGF0aWxlIHVu c2lnbmVkICopIChYVUwocG9ydCkgKyBYVUxfU1RBVFVTX1JFR19PRkZTRVQpKTsKKwkKKwkvKiBX aGlsZSB3ZSBjYW4gcmVhZCwgZG8gc28gISAqLworCWlmICgoc3RhdHVzICYgWFVMX1NSX1JYX0ZJ Rk9fVkFMSURfREFUQSkgPT0gWFVMX1NSX1JYX0ZJRk9fVkFMSURfREFUQSkgeworCisJCS8qIEdl dCB0aGUgY2hhciAqLworCQljaCA9IHJlY3ZfY2hhcihwb3J0KTsKKwkJCisJCS8qIEhhbmRsZSBz eXNyZXEgY2hhciAqLworI2lmZGVmIFNVUFBPUlRfU1lTUlEKKwkJaWYgKHVhcnRfaGFuZGxlX3N5 c3JxX2NoYXIocG9ydCwgY2gsIHJlZ3MpKSB7CisJCQlwb3J0LT5zeXNycSA9IDA7CisJCQljb250 aW51ZTsKKwkJfQorI2VuZGlmCisJCS8qIFN0b3JlIGl0ICovCisKKwkJZmxhZyA9IFRUWV9OT1JN QUw7CisJCXBvcnQtPmljb3VudC5yeCsrOworCQorCQlpZiAoc3RhdHVzICYgWFVMX1NSX1BBUklU WV9FUlJPUikKKwkJCWZsYWcgPSBUVFlfUEFSSVRZOworCQllbHNlIGlmIChzdGF0dXMgJiBYVUxf U1JfRlJBTUlOR19FUlJPUikKKwkJCWZsYWcgPSBUVFlfRlJBTUU7CisJCisJCXR0eV9pbnNlcnRf ZmxpcF9jaGFyKHR0eSwgY2gsIGZsYWcpOworCisJCWlmIChzdGF0dXMgJiBYVUxfU1JfT1ZFUlJV Tl9FUlJPUikgeworCQkJdHR5X2luc2VydF9mbGlwX2NoYXIodHR5LCAwLCBUVFlfT1ZFUlJVTik7 CisJCX0KKwl9CisKKwlzcGluX3VubG9jaygmcG9ydC0+bG9jayk7CisJdHR5X2ZsaXBfYnVmZmVy X3B1c2godHR5KTsKKwlzcGluX2xvY2soJnBvcnQtPmxvY2spOworCQkKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludAoreHVsX3VhcnRfaW50X3R4X2NoYXJzKHN0cnVjdCB1YXJ0X3BvcnQgKnBv cnQpCit7CisJc3RydWN0IGNpcmNfYnVmICp4bWl0ID0gJnBvcnQtPmluZm8tPnhtaXQ7CisJCisJ LyogUHJvY2VzcyBvdXQgb2YgYmFuZCBjaGFycyAqLworCWlmIChwb3J0LT54X2NoYXIpIHsKKwkJ eG1pdF9jaGFyKHBvcnQsIHBvcnQtPnhfY2hhcik7CisJCXBvcnQtPmljb3VudC50eCsrOworCQlw b3J0LT54X2NoYXIgPSAwOworCQlyZXR1cm4gMTsKKwl9CisKKwkvKiBOb3RoaW5nIHRvIGRvID8g Ki8KKwlpZiAodWFydF9jaXJjX2VtcHR5KHhtaXQpIHx8IHVhcnRfdHhfc3RvcHBlZChwb3J0KSkg eworCQl4dWxfdWFydF9zdG9wX3R4KHBvcnQpOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBTZW5k IGNoYXJzICovCisJd2hpbGUgKGlzX3htaXRfZnVsbChwb3J0KSA9PSAwKSAgeworCQl4bWl0X2No YXIocG9ydCwgeG1pdC0+YnVmW3htaXQtPnRhaWxdKTsKKwkJeG1pdC0+dGFpbCA9ICh4bWl0LT50 YWlsICsgMSkgJiAoVUFSVF9YTUlUX1NJWkUgLSAxKTsKKwkJcG9ydC0+aWNvdW50LnR4Kys7CisK KwkJaWYgKHVhcnRfY2lyY19lbXB0eSh4bWl0KSkKKwkJCWJyZWFrOworCX0KKworCS8qIFdha2Ug dXAgKi8KKwlpZiAodWFydF9jaXJjX2NoYXJzX3BlbmRpbmcoeG1pdCkgPCBXQUtFVVBfQ0hBUlMp IHsKKwkJdWFydF93cml0ZV93YWtldXAocG9ydCk7CisJfQorCisJLyogTWF5YmUgd2UncmUgZG9u ZSBhZnRlciBhbGwgKi8KKwlpZiAodWFydF9jaXJjX2VtcHR5KHhtaXQpKSB7CisJCXh1bF91YXJ0 X3N0b3BfdHgocG9ydCk7CisJCXJldHVybiAwOworCX0KKworCXJldHVybiAxOworfQorCitzdGF0 aWMgaXJxcmV0dXJuX3QgCit4dWxfdWFydF9pbnQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1 Y3QgcHRfcmVncyAqcmVncykKK3sKKwlzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0ID0gKHN0cnVjdCB1 YXJ0X3BvcnQgKikgZGV2X2lkOworCXVuc2lnbmVkIGxvbmcgcGFzcyA9IElTUl9QQVNTX0xJTUlU OworCXVuc2lnbmVkIGludCBrZWVwZ29pbmc7CisKKwlpZiAoIGlycSAhPSBwb3J0LT5pcnEgKSB7 CisJCXByaW50ayggS0VSTl9XQVJOSU5HCisJCSAgICAgICAgInh1bF91YXJ0X2ludCA6ICIgXAor CQkgICAgICAgICJSZWNlaXZlZCB3cm9uZyBpbnQgJWQuIFdhaXRpbmcgZm9yICVkXG4iLAorCQkg ICAgICAgaXJxLCBwb3J0LT5pcnEpOworCQlyZXR1cm4gSVJRX05PTkU7CisJfQorCQorCXNwaW5f bG9jaygmcG9ydC0+bG9jayk7CisJCisJLyogV2hpbGUgd2UgaGF2ZSBzdHVmZiB0byBkbywgd2Ug Y29udGludWUgKi8KKwlkbyB7CisJCS8qIElmIHdlIGRvbid0IGZpbmQgYW55dGhpbmcgdG8gZG8s IHdlIHN0b3AgKi8KKwkJa2VlcGdvaW5nID0gMDsgCisJCQorCQkvKiBEbyB3ZSBuZWVkIHRvIHJl Y2VpdmUgY2hhcnMgPyAqLworCQlpZiAoaXNfcmVjdl9lbXB0eShwb3J0KSA9PSAwKSB7CisJCQlr ZWVwZ29pbmcgfD0geHVsX3VhcnRfaW50X3J4X2NoYXJzKHBvcnQsIHJlZ3MpOworCQl9CisKKwkJ LyogRG8gd2UgbmVlZCB0byBzZW5kIGNoYXJzID8gKi8KKwkJaWYgKGlzX3htaXRfZW1wdHkocG9y dCkpIHsKKwkJCWtlZXBnb2luZyB8PSB4dWxfdWFydF9pbnRfdHhfY2hhcnMocG9ydCk7CisJCX0K KwkJCisJCS8qIExpbWl0IG51bWJlciBvZiBpdGVyYXRpb24gKi8KKwkJaWYgKCAhKC0tcGFzcykg KQorCQkJa2VlcGdvaW5nID0gMDsKKworCX0gd2hpbGUgKGtlZXBnb2luZyk7CisJCisJc3Bpbl91 bmxvY2soJnBvcnQtPmxvY2spOworCQorCXJldHVybiBJUlFfSEFORExFRDsKK30KKworCisvKgor ICogVXRpbGl0eSByb3V0aW5lcworICovCisKK3N0YXRpYyB2b2lkIF9faW5pdCB4dWxfdWFydF9p bml0X3BvcnRzKHZvaWQpCit7CisJaW50IGk7CisJc3RhdGljIGludCBvbmNlID0gMTsKKworCS8q IEluaXRpYWxpemUgcG9ydHMgb25seSBvbmNlICovCisJaWYgKCFvbmNlKQorCQlyZXR1cm47CisJ b25jZSA9IDA7CisJCisJZm9yIChpID0gMDsgaSA8IFhQQVJfWFVBUlRMSVRFX05VTV9JTlNUQU5D RVM7ICsraSkgeworCQlzdHJ1Y3QgdWFydF9wb3J0ICp4dXAgPSAmeHVsX3VhcnRfcG9ydHNbaV07 CisJCQorCQl4dXAtPmxpbmUgPSBpOworCQlzcGluX2xvY2tfaW5pdCgmeHVwLT5sb2NrKTsKKwkJ eHVwLT51YXJ0Y2xrCT0geHVsX2RhdGFbaV0udWFydGNsayAvIDE2OworCQl4dXAtPmZpZm9zaXpl CT0gMTY7CisJCXh1cC0+aW90eXBlCT0gVVBJT19NRU07CisJCXh1cC0+ZmxhZ3MJPSBVUEZfQk9P VF9BVVRPQ09ORiB8IFVQRl9JT1JFTUFQOworCQl4dXAtPm9wcwk9ICZ4dWxfdWFydF9vcHM7CisJ CXh1cC0+aXJxCT0geHVsX2RhdGFbaV0uaXJxOworCQl4dXAtPm1hcGJhc2UgPSB4dWxfZGF0YVtp XS5tYXBiYXNlOworCX0KK30KKworc3RhdGljIHZvaWQgX19pbml0IHh1bF91YXJ0X3JlZ2lzdGVy X3BvcnRzKHN0cnVjdCB1YXJ0X2RyaXZlciAqZHJpdmVyKQoreworCWludCBpLCByZXQ7CisJCisJ Zm9yKGkgPSAwOyBpIDwgWFBBUl9YVUFSVExJVEVfTlVNX0lOU1RBTkNFUzsgKytpKSB7CisJCXN0 cnVjdCB1YXJ0X3BvcnQgKnBvcnQgPSAmeHVsX3VhcnRfcG9ydHNbaV07CisJCS8qIEFkZCB0aGUg cG9ydCB0byB0aGUgdWFydCBzdWItc3lzdGVtICovCisJCXJldCA9IHVhcnRfYWRkX29uZV9wb3J0 KGRyaXZlciwgcG9ydCk7CisJfQorfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KKy8qIENvbnNv bGUgKCBpZiBhcHBsaWNhYmxlICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqLworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCisKKyNpZmRlZiBDT05GSUdfU0VS SUFMX1hVTF9DT05TT0xFCisKK3N0YXRpYyB2b2lkICAKK3h1bF9jb25zb2xlX3dyaXRlKHN0cnVj dCBjb25zb2xlICpjbywgY29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50IGNvdW50KQoreworCXN0 cnVjdCB1YXJ0X3BvcnQgKnBvcnQgPSAmeHVsX3VhcnRfcG9ydHNbY28tPmluZGV4XTsKKwl1bnNp Z25lZCBpbnQgaSwgajsKKworCS8qIERpc2FibGUgaW50ZXJydXB0cyAqLworCQorCXNwaW5fbG9j aygmcG9ydC0+bG9jayk7CisJb3V0X2JlMzIoKHZvbGF0aWxlIHVuc2lnbmVkICopIChYVUwocG9y dCkgKyBYVUxfQ09OVFJPTF9SRUdfT0ZGU0VUKSwgMCk7CisJc3Bpbl91bmxvY2soJnBvcnQtPmxv Y2spOworCQorCS8qIFdhaXQgdGhlIFRYIGJ1ZmZlciB0byBiZSBlbXB0eSAqLworCWogPSA1MDAw MDAwOwkvKiBNYXhpbXVtIHdhaXQgKi8JCisJd2hpbGUgKCEoaXNfeG1pdF9lbXB0eShwb3J0KSkg JiYKKwkgICAgICAgLS1qKQorCQl1ZGVsYXkoMSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7 IGkrKywgcysrKSB7CisJCWlmICgqcyA9PSAnXG4nKQorCQkJeG1pdF9jaGFyKHBvcnQsICdccicp OworCisJCXhtaXRfY2hhcihwb3J0LCAqcyk7CisJfQorCisJLyogUmVzdG9yZSBpbnRlcnJ1cHQg c3RhdGUgKi8KKwlvdXRfYmUzMigodm9sYXRpbGUgdW5zaWduZWQgKikgKFhVTChwb3J0KSArIFhV TF9DT05UUk9MX1JFR19PRkZTRVQpLCAwKTsgCit9CisKK3N0YXRpYyBpbnQgX19pbml0Cit4dWxf Y29uc29sZV9zZXR1cChzdHJ1Y3QgY29uc29sZSAqY28sIGNoYXIgKm9wdGlvbnMpCit7CisJc3Ry dWN0IHVhcnRfcG9ydCAqcG9ydDsKKwlpbnQgYmF1ZDsKKwlpbnQgYml0czsKKwlpbnQgcGFyaXR5 OworCWludCBmbG93OworCisJaWYgKGNvLT5pbmRleCA8IDAgfHwgY28tPmluZGV4ID49IFhQQVJf WFVBUlRMSVRFX05VTV9JTlNUQU5DRVMpCisJCXJldHVybiAtRUlOVkFMOworCisJcG9ydCA9ICZ4 dWxfdWFydF9wb3J0c1tjby0+aW5kZXhdOworCisJLyogV2UgaW9yZW1hcCBvdXJzZWxmICovCisJ cG9ydC0+bWVtYmFzZSA9IGlvcmVtYXAocG9ydC0+bWFwYmFzZSwgeHVsX2RhdGFbY28tPmluZGV4 XS5zaXplKTsKKworCWlmIChwb3J0LT5tZW1iYXNlID09IE5VTEwpIHsJCisJCXJldHVybiAtRUlO VkFMOworCX0KKworCXBvcnQtPmZsYWdzICY9IH5VUEZfSU9SRU1BUDsKKworCWJhdWQgPSB4dWxf ZGF0YVtjby0+aW5kZXhdLmJhdWQ7CisJcGFyaXR5ID0geHVsX2RhdGFbY28tPmluZGV4XS5wYXJp dHk7CisJYml0cyA9IHh1bF9kYXRhW2NvLT5pbmRleF0uYml0czsKKwlmbG93ID0geHVsX2RhdGFb Y28tPmluZGV4XS5mbG93OworCisJcmV0dXJuIHVhcnRfc2V0X29wdGlvbnMocG9ydCwgY28sIGJh dWQsIHBhcml0eSwgYml0cywgZmxvdyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdWFydF9kcml2ZXIg eHVsX3VhcnRfZHJpdmVyOworCitzdGF0aWMgc3RydWN0IGNvbnNvbGUgeHVsX2NvbnNvbGUgPSB7 CisJLm5hbWUJPSAidHR5WFVMIiwKKwkud3JpdGUJPSB4dWxfY29uc29sZV93cml0ZSwKKwkuZGV2 aWNlCT0gdWFydF9jb25zb2xlX2RldmljZSwKKwkuc2V0dXAJPSB4dWxfY29uc29sZV9zZXR1cCwK KwkuZmxhZ3MJPSBDT05fUFJJTlRCVUZGRVIsCisJLmluZGV4CT0gLTEsCS8qIFNwZWNpZmllZCBv biB0aGUgY21kbGluZSAoZS5nLiBjb25zb2xlPXR0eVhVTDAgKSAqLworCS5kYXRhCT0gJnh1bF91 YXJ0X2RyaXZlciwKK307CisKKwkKK3N0YXRpYyBpbnQgX19pbml0IAoreHVsX2NvbnNvbGVfaW5p dCh2b2lkKQoreworCXh1bF91YXJ0X2luaXRfcG9ydHMoKTsKKwlyZWdpc3Rlcl9jb25zb2xlKCZ4 dWxfY29uc29sZSk7CisJcmV0dXJuIDA7Cit9CisKK2NvbnNvbGVfaW5pdGNhbGwoeHVsX2NvbnNv bGVfaW5pdCk7CisKKyNkZWZpbmUgWFVMX0NPTlNPTEUgJnh1bF9jb25zb2xlCisjZWxzZQorI2Rl ZmluZSBYVUxfQ09OU09MRSBOVUxMCisjZW5kaWYKKworCisvKiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8K Ky8qIFVBUlQgRHJpdmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqLworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCisKK3N0YXRpYyBz dHJ1Y3QgdWFydF9kcml2ZXIgeHVsX3VhcnRfZHJpdmVyID0geworCS5vd25lcgkJCT0gVEhJU19N T0RVTEUsCisJLmRyaXZlcl9uYW1lCT0gInh1bF91YXJ0IiwKKwkuZGV2X25hbWUJCT0gInR0eVhV TCIsCisJLm1ham9yCQkJPSBTRVJJQUxfWFVMX01BSk9SLAorCS5taW5vcgkJCT0gU0VSSUFMX1hV TF9NSU5PUiwKKwkubnIJCQkJPSBYUEFSX1hVQVJUTElURV9OVU1fSU5TVEFOQ0VTLAorCS5jb25z CQkJPSBYVUxfQ09OU09MRSwKK307CisKKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCisvKiBQbGF0 Zm9ybSBEcml2ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKi8KKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworCitzdGF0aWMgaW50IF9fZGV2 aW5pdAoreHVsX3VhcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQoreworCS8q IFByb2JlIGRvZXMgbm90aGluZyAqLworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit4dWxf dWFydF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCB1YXJ0 X3BvcnQgKnBvcnQgPSAoc3RydWN0IHVhcnRfcG9ydCAqKSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShk ZXYpOworCisJcGxhdGZvcm1fc2V0X2RydmRhdGEoZGV2LCBOVUxMKTsKKworCWlmIChwb3J0KQor CQl1YXJ0X3JlbW92ZV9vbmVfcG9ydCgmeHVsX3VhcnRfZHJpdmVyLCBwb3J0KTsKKworCXJldHVy biAwOworfQorCisjaWZkZWYgQ09ORklHX1BNCitzdGF0aWMgaW50Cit4dWxfdWFydF9zdXNwZW5k KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldiwgcG1fbWVzc2FnZV90IHN0YXRlKQoreworCXN0 cnVjdCB1YXJ0X3BvcnQgKnBvcnQgPSAoc3RydWN0IHVhcnRfcG9ydCAqKSBwbGF0Zm9ybV9nZXRf ZHJ2ZGF0YShkZXYpOworCisJaWYgKHBvcnQpCisJCXVhcnRfc3VzcGVuZF9wb3J0KCZ4dWxfdWFy dF9kcml2ZXIsIHBvcnQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3h1bF91YXJ0 X3Jlc3VtZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHVhcnRfcG9y dCAqcG9ydCA9IChzdHJ1Y3QgdWFydF9wb3J0ICopIHBsYXRmb3JtX2dldF9kcnZkYXRhKGRldik7 CisKKwlpZiAocG9ydCkKKwkJdWFydF9yZXN1bWVfcG9ydCgmeHVsX3VhcnRfZHJpdmVyLCBwb3J0 KTsKKworCXJldHVybiAwOworfQorI2VuZGlmCisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJp dmVyIHh1bF91YXJ0X3BsYXRmb3JtX2RyaXZlciA9IHsKKwkucHJvYmUJCT0geHVsX3VhcnRfcHJv YmUsCisJLnJlbW92ZQkJPSB4dWxfdWFydF9yZW1vdmUsCisjaWZkZWYgQ09ORklHX1BNCisJLnN1 c3BlbmQJPSB4dWxfdWFydF9zdXNwZW5kLAorCS5yZXN1bWUJCT0geHVsX3VhcnRfcmVzdW1lLAor I2VuZGlmCisJLmRyaXZlcgkJPSB7CisJCS5uYW1lCT0gInh1bF91YXJ0IgorCX0sCit9OworCisK Ky8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PSAqLworLyogTW9kdWxlICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0gKi8KKworc3RhdGljIGludCBfX2luaXQKK3h1bF91YXJ0X2luaXQodm9pZCkKK3sK KwlpbnQgcmV0OworCisJcHJpbnRrKEtFUk5fSU5GTyAiU2VyaWFsOiBYaWxpbnggVUFSVCBMaXRl IGRyaXZlclxuIik7CQorCQorCXh1bF91YXJ0X2luaXRfcG9ydHMoKTsKKworCXJldCA9IHVhcnRf cmVnaXN0ZXJfZHJpdmVyKCZ4dWxfdWFydF9kcml2ZXIpOworCisJaWYgKHJldCA9PSAwKSB7CisJ CXh1bF91YXJ0X3JlZ2lzdGVyX3BvcnRzKCZ4dWxfdWFydF9kcml2ZXIpOworCQkKKwkJcmV0ID0g cGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZ4dWxfdWFydF9wbGF0Zm9ybV9kcml2ZXIpOworCisJ CWlmIChyZXQpIHsKKwkJCXByaW50ayhLRVJOX1dBUk5JTkcgInBsYXRmb3JtX2RyaXZlcl9yZWdp c3RlciBmYWlsZWQhIDolaVxuIiwgcmV0KTsKKwkJCXVhcnRfdW5yZWdpc3Rlcl9kcml2ZXIoJnh1 bF91YXJ0X2RyaXZlcik7CisJCX0KKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9p ZCBfX2V4aXQKK3h1bF91YXJ0X2V4aXQodm9pZCkKK3sKKwlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdp c3RlcigmeHVsX3VhcnRfcGxhdGZvcm1fZHJpdmVyKTsKKwl1YXJ0X3VucmVnaXN0ZXJfZHJpdmVy KCZ4dWxfdWFydF9kcml2ZXIpOworfQorCisKK21vZHVsZV9pbml0KHh1bF91YXJ0X2luaXQpOwor bW9kdWxlX2V4aXQoeHVsX3VhcnRfZXhpdCk7CisKK01PRFVMRV9BVVRIT1IoIkRhdmlkIEJvbGNz Zm9sZGkgPGRib2xjc2ZvbGRpQGdtYWlsLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiWGls aW54IFVBUlQgTGl0ZSIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworCg== ------=_Part_68525_2102138.1160513348690 Content-Type: text/x-patch; name=xilinx_ml403.c.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_et4re7fg Content-Disposition: attachment; filename="xilinx_ml403.c.patch" LS0tIDIuNi4xOC9hcmNoL3BwYy9wbGF0Zm9ybXMvNHh4L3hpbGlueF9tbDQwMy5jCTIwMDYtMTAt MDQgMTQ6MzE6MTUuMDAwMDAwMDAwIC0wNzAwCisrKyBwYXRjaGVkL2FyY2gvcHBjL3BsYXRmb3Jt cy80eHgveGlsaW54X21sNDAzLmMJMjAwNi0xMC0wNyAxMDo0MTo1MC4wMDAwMDAwMDAgLTA3MDAK QEAgLTY5LDYgKzY5LDcgQEAKIAkJLmRldmljZV9saXN0CT0gKGVudW0gcHBjX3N5c19kZXZpY2Vz W10pCiAJCXsKIAkJCVZJUlRFWF9VQVJULAorCQkJVklSVEVYX1hVTF9VQVJULAogCQl9LAogCX0s CiB9Owo= ------=_Part_68525_2102138.1160513348690 Content-Type: text/x-patch; name=serial_core.h.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_et4rftve Content-Disposition: attachment; filename="serial_core.h.patch" LS0tIDIuNi4xOC9pbmNsdWRlL2xpbnV4L3NlcmlhbF9jb3JlLmgJMjAwNi0xMC0wNCAxNDozMTox OS4wMDAwMDAwMDAgLTA3MDAKKysrIHBhdGNoZWQvaW5jbHVkZS9saW51eC9zZXJpYWxfY29yZS5o CTIwMDYtMTAtMDcgMTA6NTI6MjQuMDAwMDAwMDAwIC0wNzAwCkBAIC0xMzIsNiArMTMyLDggQEAK IAogI2RlZmluZSBQT1JUX1MzQzI0MTIJNzMKIAorLyogWGlsaW54IFVBUlQgTGl0ZSAqLworI2Rl ZmluZSBQT1JUX1hVTCA3NAogCiAjaWZkZWYgX19LRVJORUxfXwogCg== ------=_Part_68525_2102138.1160513348690--