From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S941436AbcLVQho (ORCPT ); Thu, 22 Dec 2016 11:37:44 -0500 Received: from mail-sn1nam01on0069.outbound.protection.outlook.com ([104.47.32.69]:52448 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1758614AbcLVQhn (ORCPT ); Thu, 22 Dec 2016 11:37:43 -0500 Authentication-Results: spf=pass (sender IP is 74.221.232.54) smtp.mailfrom=sandisk.com; kernel.dk; dkim=none (message not signed) header.d=none;kernel.dk; dmarc=bestguesspass action=none header.from=sandisk.com; X-AuditID: ac1c2133-b8fff70000000ec6-c4-585c7921a1dd From: Bart Van Assche To: "linux-kernel@vger.kernel.org" , "linux-block@vger.kernel.org" , "axboe@fb.com" , "axboe@kernel.dk" CC: "osandov@fb.com" , "paolo.valente@linaro.org" Subject: Re: [PATCHSET v4] blk-mq-scheduling framework Thread-Topic: [PATCHSET v4] blk-mq-scheduling framework Thread-Index: AQHSXG+3wEWjwr+YNkuLarcjHhg2Gw== Date: Thu, 22 Dec 2016 16:23:24 +0000 Message-ID: <1482423775.2682.6.camel@sandisk.com> References: <1481933536-12844-1-git-send-email-axboe@fb.com> In-Reply-To: <1481933536-12844-1-git-send-email-axboe@fb.com> Accept-Language: nl-NL, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [172.28.1.254] Content-Type: multipart/mixed; boundary="_004_148242377526826camelsandiskcom_" MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGKsWRmVeSWpSXmKPExsWyRobxn65yZUyEwYsDFhb/9xxjs1h9t5/N Yu8tbYvLu+awWRy+d5XF4tWfvUwObB4Tm9+xe1w+W+px59oeNo/Pm+QCWKK4bFJSczLLUov0 7RK4Mq41r2Ms2NrDUrF230qmBsbJ/5i7GDk5JARMJPpXHWMFsYUEljBJHL+i1cXIBWRfYpTY 0t4JlmATMJKYPWEPC0hCROAYo8S8DS/YQBLMAnESC7/eAJskLGAmcezjfbC4iIC5xOd5P5kh bD2JlRs/Ag3i4GARUJXY1KcBYvIKGEr8/W4MsddG4t+NyUwgNqeArcSk5klg1YwCshItr7kh FolL3HoynwniZBGJhxdPs0HYohIvH/9jhbAVJD6v+Ad1WIDEkedrweK8AoISJ2c+YZnAKDIL yahZSMpmISmbBbSZWUBTYv0ufYgSK4n7xw8yQ9iKElO6H7JD2CkSlya/ZoOwQySOnt0GZHMB 2fcZJW4sW84G0zzxwy+smh9vWc8E09zW84YJovkeo8StY70sMM0nZ87HojlM4u3LVqgFbhIL Ph9lh2i+yCgxeVYjO0zzlg0bUDQvYBRdxShWnJhcnJueWmBoolecmJeSWZytl5yfu4kRnOIU jXcw/tvgfohRgINRiYe3QiA6Qog1say4MvcQowrQoEcbVl9glGLJy89LVRLh/fIDKM2bklhZ lVqUH19UmpNafIhRmoNFSZxX/sDuUCGB9MSS1OzU1ILUIpgsEwenVAMjY+H5GZLm/+ZerTp9 4p3efuZjx1kubmVvfmSvvCxz0Z45j5oNF84KOmwXUdwTcofrkG1u7ksmYy35AMmbmro1DSrM K5/H5kfuLlgU3n4rUeTALJMV3xOmHrM/Fqz6lfXTX+81y7lf8ky/c2jigU8Lnh19LWdy7uN/ 6ZY/Fa4P3Fa3ydRqf9k+S4mlOCPRUIu5qDgRAFwMkwZ5AwAA X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:74.221.232.54;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(39850400002)(39860400002)(39410400002)(39450400003)(39840400002)(2980300002)(438002)(377424004)(24454002)(189002)(199003)(2950100002)(8676002)(2476003)(305945005)(7736002)(2201001)(356003)(189998001)(30436002)(92566002)(5890100001)(4610100001)(38730400001)(84326002)(86362001)(626004)(2906002)(81156014)(512874002)(102836003)(6116002)(81166006)(3846002)(2501003)(68736007)(4810100001)(4326007)(50986999)(76176999)(54356999)(69596002)(99936001)(36756003)(230783001)(103116003)(568964002)(2900100001)(4001150100001)(97736004)(2270400002)(8936002)(5001770100001)(229853002)(106116001)(5660300001)(106466001)(33646002)(7099028);DIR:OUT;SFP:1101;SCL:1;SRVR:BL2PR02MB386;H:sacsmgep14.sandisk.com;FPR:;SPF:Pass;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD043;1:0n63gu1itqkBB0aLXoRkVQpaSaOxIubPym9avBFwagOouY3Au5Z9viJNRKqdhRgwYxnx3Rj/J19DVkOiKnX3teAUM9AJK35jNnZtj/JrKu+qUhjnx0TpfqewtkZpCl617qquD5Bs1QAQySulhnw+tDnFC6T2+mqG2HXFffrcKaE0OL8K3BgDyWENeV3pHqFUAUo0MdF1/LXnaW2TDhtM4xF+3GQJ1U69O63XgOJzM7t5F973Kj0djL3ejLY46k72YT0nohrMgKNU52Wj9ivm+R9vjGO7ZFFSxVhSoDLPzDW1N+JVXz27URP1kPFcLHxi+yKNxtnmla9VAqFE2KeTqcVDIq+6IGuHNNzSYk2SzoA2J30RK6SHGXg+aHlhmm2uvgG3Bhti+fmPjcnG+oI7T25Y4nvyC3FUIPhnAeA0Lxy/GRqQtlvAHVYwQdkow5gm3GJwhMtTDXWeTEDW6iDEbBSsnDlQVdwjcyCuwjH79dno1miYZQDmDsRQKI0ovL7VlL8kVDy8D+9G/xeIXNBhmpX8vUi+EICcyKZ+u8jDSSpYGkwYWwl+C1IwoSPABKScyDN72W7Wuyo3P/lZIr4Cmg== X-MS-Office365-Filtering-Correlation-Id: afc8229b-86b1-4e69-4826-08d42a86ddd5 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(8251501002);SRVR:BL2PR02MB386; X-Microsoft-Exchange-Diagnostics: 1;BL2PR02MB386;3:s4WUAQ4dxPnnDRZWTfcV2ObNnsH6/clv7xpVixTegArEE+vmsEFjO2WP7OquQ/1kUcLZvH5KNQ39V6rJ8+MPEj4g0EYM9ODIFdjE2xMcs2mb4XQeieAnoCZ122OlnpLO1bTy4Jg4ihicHkB6AsqICQt6S/eCPKl18Sq5wXe3tQ8BrAJugk4fhst/5cXUMddfhSz3Ey3RTBD/vWELFC7tfm15i/rrZQ2ZV2bkYBXOein6G39/wt9TsAJOLbfFMkZozfN/TojvytGBvHWG+g7VLZE4G7IC75ZjOUfEnuuSC9540yI/xJewbxzHl2Gy0HGGZ/GphTYcMzfZoAFO8vnI5v3/6xmL5ENnNvP5e45zunEnzPLihWp8vmRKUtQSsB0f4l9spJZu7kJ6gaUqFaH4cQ==;25:xqi8/HVH1LYle1ScFVaaOaQBr3MtW8JgSumi0kRJEGBg+gzY4obWoJ2BQJdbTYXmpQhW0Daey01ZdhaK67sNePSOOmV3cuBW1kt3Ze8LHfqUGx5g1jcts+eizuETVuR923Zii6x0X0g/njWlIm1LALwLtx9PwT2BAA3uu9aczOQweO5H8uVileQJdKb2IiyMvgI3Wblt/q51bJCiW9bicU1C/AMLKFztsgixvPac+NihPE0yYQOLm8UA4SmDYc7fEYkOfFup13U0IkjwWjZcj3F5YztIpTjRYa+PKKRtcppCb4UdwuJkW0LKqeoS7PHZIOYlQ+tWbkfQS5+NcVbYs6v/o3bOLWyp852pUo6h/DOVN7jGtCzy92j0Peflu7eiUcJsLp/0KIoyI47HJUgOAQHwB8fhyLcDLsHflMpjZxy6WpTCInvJvuWm9cWe56opaGijlmZoSF3Z9FJpfuTt+koL9YpVvEm1xgM4lbZwIAEFKNef9h9fkI27iZMOnvEWzCVMAAwDehDAgiXZysGYwQ== X-Microsoft-Exchange-Diagnostics: 1;BL2PR02MB386;31:gv/mfZmHS6gOnIDJutMjh9wndrntuBbftXXcCf37q7bGv56GLCi8ioPAAz8juL7Lf/f9W5CjeqeXJWtemDN8Sl7TLhEsS7nqKgUhxVSfirG8JNFBw8jb4kW9qG2+tBXq31OTryqzVEpYW5Wp7Y/R9+e7cNMlFMxssEgBFZhdn0ppRHTt0l296PUY74aGVgOFAXHOyUYIhEqECLIMabtc6tK/+omvAqty65eP9XcAQtxNzKC/gANXCuwjWV2qcaNbLM77TklH69DyvmLITxIq+dA5/D0opLpFe6KCmif8hEgN65qcXaAhlxnkCpHLZMvSnQw3snI/xftnNpnv0Eo6XZwnCdf5FFUOhK+BciS/oj4=;20:LPDyn+pavlPUUE19ezH6L2uNaDl1keqOGCFjpWq9qnFRXjjfk5zZsvH+yNigAENpECATV+mitOs0BC+aVHGkEgJppcOP6pdBxQPCNqx4UhmxmZufUgcpjOZedTT78kHxncrGwO+j+4UwbEBx+ZDyjHpYJRc72/Q6t9QdKbtGE6WEj0/CNLf2FICI+r/dXeYGr60Uh3Q/8wDfh0+9xwmcH6LapY2bENvQxQ/MPVZ2GrX8rJhAu3BzmFbBKv6AyKmXHeumk/cGvBVz6AtDLloXvbECf8pCOMoZjE9+pAKZRrPMWJ5uOSRsxnQxumgkdrKKOvPiq2a3rPAuv3Om7ZXXboRkCgTCe8GfgKBXRUDLk4M9ugIPCqzkSeounpXKue/AmvFXKWwyE3DCfmkl745Zx7dV9/HS0f1/FAaCpJR23IBMjfrQol/B4XFWiqoE+t/lCJiejyelQAbjl0IhwHFlLp+KuRdGeCEljX0zpY2kZYoqcLQUtzPByt1/bnK3TGs3 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089)(42932892334569); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(102415395)(6040375)(601004)(2401047)(13017025)(13015025)(13018025)(13023025)(13024025)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123560025)(20161123564025)(20161123555025)(6072148);SRVR:BL2PR02MB386;BCL:0;PCL:0;RULEID:;SRVR:BL2PR02MB386; X-Microsoft-Exchange-Diagnostics: 1;BL2PR02MB386;4:Gd1sMNP3ptZbHwZGmpH6UkUsfBnaAjAu0hiiNHJ5OvBP1heGprfbvfZZNmCI8C/iOvrMGGzYZhPhYrOYoy8tJ4pJgHBfXa+h1E/K8wa8CRUMMqx6H7FuapBYPEbMCvS+TWeb+Q5r6vlwlH43/erqoG8gkV4Cjc8c2/yJJcxanmHC3e+LoDdiiELsOFSSNpipj4phGzPy0G0fcIseUM4SmhFdZn9ZbU75OkdTjd8kAKUZeE1YEB2qg47Fzto4mdSdUyF/nsbyZahqPBVqShd2VHZlrdFsxfSaSfsT+OyTy4EXrCo+PjCASf5TcfW7J2gTpJIe1R0HFmLmhRWQ1zSUzruwVnMQmgv3g4MqC+us4wCTJdKgxApSKw+IUe6lAkSUktycpoTm4GZfk0yXOq/FZUNolqj6b86J0PlBlasv2Rc7OqnO+a9abcdDuoweCtzlN37nK710LxQr0a0goOMTx6wNvJtipjsaUwHu7TFXk0X/QVhQjkDoIG+ET+yuIipha1s8cEHD15Xyx+JW1AOIhe1X+q9OvB+FRC7vdBdS6T5eZt5BLSGtTRYsfhIFhZwucSc8rACbitYbwLGjUHbdyhVLxkPQ1SOz9fCKn/0PTTopCyUD/V3wp1hys8rTVAM1dHH7STHy2WC+1NHX2MY5a4zzPQX7iQdN7+CwI2uNXXkmdnKzMtn3PUYSMWHFCl3CKgY5U92ig1o6mBG9oge+6XTKAT2EsNvTQscMff9OIwMEWgc76bbzG55++JLuMmclWazMGJm+DyiPskhKav64hQ== X-Forefront-PRVS: 01644DCF4A X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BL2PR02MB386;23:gzlS9Yd/zQIYbSEd/NCSrp12d04sBOQpMi3LSPpvYJ?= =?us-ascii?Q?2Sb+NQCq76A7iXq+tcu7uau6cB1PXxiPG76xGATbve/EsZ2nx5KZQXNxvOer?= =?us-ascii?Q?WWlv7k69NbZSCNoB4jwaXDkxgsnqSW1T4mk2Gdn+RO5qdHm1wrVKMJNUocjg?= =?us-ascii?Q?CBmoqr5Xobra7jq4Qp2w8L9MjFAyusQSNzigWwFzbpgxMOrm/71jJDjp0UEy?= =?us-ascii?Q?HHVihc7kybiYiVGr9ApgOojBgscUbRpqEvdEjQSimxsKhGCkguaS9umHfHw8?= =?us-ascii?Q?MJtcStV6PRJQFmCBRlzHz3AEcxBiuOjnkKxL/yRTw0rcSXBwn8DhyviyoECk?= =?us-ascii?Q?sQL7FePB1F0hRney+eEUU5ksyN2jKDbbNX1eGXLIh57gm5TVFkMq9bIIc8Ib?= =?us-ascii?Q?NAK7dpcZfAiY2aRHdylDccDwBFNLupK6lqYXnZx7QnqC9tuwFqjsF4OCPaec?= =?us-ascii?Q?Y5te8IDp4Ptmm0oZmbKR9x/qbFlz5uJjHQkj3LXFQxtyMkq7qfmQz0gItRSw?= =?us-ascii?Q?TqsOgLaTShQTXV+cE3H/4TC+0N7Tr2EQwaaM38qSnthNxRu+5Gyn++vDmUVH?= =?us-ascii?Q?uw23NgrvrC+01D7hb40Iyn6aJgmeXLZ6tBOuBNEjid7Se+9OzKggCrZl4xqE?= =?us-ascii?Q?qjrWWdkboIxOopw5ILQ0W6/NdQ7RJgWNoUqrwbKh/7QrHZ6m/c8/uxLaAvBP?= =?us-ascii?Q?irBmCGSpdlD7m8nTFgD00CfVVlGALU19SSmqoyELN5bAv4zxo+3n44R09Jmn?= =?us-ascii?Q?TI4I9sEtQQcFXwOj7EGq/9+xPSiLvsOQOot46Z9Rel6li74zIyPLfazwrmfM?= =?us-ascii?Q?ww0EiCt5ghljr0tuVyfTMj4AjehSfXnOu2VV8g3kk6V9O2zzY2li5dD/nwin?= =?us-ascii?Q?2zqK7/jgBNjFgSP1i8QHfsLgsSBc3jPRtv4Vr2OYolkhB2uJP4EGABLbNUkL?= =?us-ascii?Q?D9JM7ilWa5YuY+9ACF3+1z4gCoynSgYttKvlI6XTiMVnwSwEPe6paDjMyM4O?= =?us-ascii?Q?SiAmz+LtPHLVZ62PTaVeXMv8dl+mgATlGsr4ce4GruXgwAMmskA80EXZKV9Y?= =?us-ascii?Q?6AdbXFlY0umGIalpIYkiZ88iTW7Z8xPc8p/CL/eRwOjyWvNqO8FVH+bb4IUR?= =?us-ascii?Q?MG+lTMsbnry+TemOy3H7tSnSuzulZJBwqOsaoP0mjRoawwV4X6Kgv/IOzjg/?= =?us-ascii?Q?xNncJ0HpnDa6qKBWH1wFgRbMYcyBEY/6z2zQ38zGWRYBePSdxYypivTsE6Ly?= =?us-ascii?Q?l22OMv8n1CUbFy/pB6ipow36vAVB74I3CweaNHOc4X448oc06cypJplPB4lz?= =?us-ascii?Q?TlfTGnWqkzbRk3WghifK8E5JNwgrtRty7ZWX0bt0J8XWggtp1swMBXWwIjFa?= =?us-ascii?Q?HOIW2itdETby8LmCVFMhP0kOStmkDaCFRyjut1CJNjuEdsYqop2i5CmACnKK?= =?us-ascii?Q?YS7OD1NwLajg09J3s8505vHVUpPjk4yJiiI1XNE9sb/mxJF9i0R2tTDpkfWa?= =?us-ascii?Q?3xtLcD1ur2kw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BL2PR02MB386;6:5QYQDXd2UlX0fOG9ClrwHJvTLwm+eezFGDco/U5CwxdyOp3othSp69k28DGN8Rbofm83joynyYTFRMFBZeankMa7L2SjYtmE6PN5AT92M1ZokcJOp2OcqfW52PpcYvYUw6beXXo2/mF8CEZGt45qjFtcTzByV2TKDTmkQWm0ewu5Dm6EGpRj/7lOj4fOfuCWDfbJ0vnUfSHd7oJ2fc2dhVKhmpni7ymTnmtQgdb3MRV4Y951PPgQyGnpIXOJXt4C0cw7XzNG0nosDJZqllk9aRbJ9MWdmNTuHdgMfw9TTYu3ptS05l/8l4h+Tnf67WDVRW5bArC4P5t4YwXrQM2sAuscwz5GT5T2s3iPYmLXy8Ws9Op65hpjMN75F9FaGh6gvwPF2HACE6mhbhx7/AIMfykefEhSeW8Q5FMNICj58kH+oJbZJed4R35S7outxG3tLyRR9W+uesK/gHFZ+WOqEA==;5://t4W7JhmVuQzpZKNh1mq5iyZjEgCPeceq4I9Zq0I5uyfTdFlJ99zJ2jb+Ox0gX3VR/htH8WEhEBcsmdSoAl12R7zZkEeU8B4qdUQ18skblHN485RfnMxI1OX7JGvzDKhLNnfQgru6ab5YPdocVXmVW//ODIm7ShMIwqi9dfQbw=;24:7HQ7dxkaIfEfB0d0kd/4g+FB28DMaVCGSyCX3sypzCOhhp8jNEJXGAkQHVcprbVwDOSAw4zR1/llv6TI8cORI2cI6hTwdUfrbMyz4Vr+ESU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BL2PR02MB386;7:/MRn2i/y/rQIq8myJVO13kJLDMmFVw4gSqFb3ppp7DTTCw7bqOEmR+T/pbRbCiiBqFOybyLN1gkvGx44ePn4duUDGDgYZzF3Mwf8wDjJ2Y5FrT8H8IQdwZ2FPguU2u+mq8E8HuFSaSxgm0Hv5s0AZi7iA+o1C8edSnniTK+XJIhnC/Zbp2hKXumvWbo4SWJcSyHvySOJggYhtL1n8lTbWN2d8UlgM/f74L6QL4IKd/zRBxyXq1jH9ltKxKzWMP/QFVFgdH4SJJ1YoIV6Xs5x4NtQ0ztBMVsBFJNEBuaMyGweKufbYwLIqNcZwpC70vL+amU5yVP261Diw2etasR7fH0w5DZsRQ6pxY+pjHdYaRgDTj26rOkLfaeT0AJtjfp2ikrNnkUQba4Ln+l2+l5xOinoI/6ha5sUaNFZgdPVGxaNTkeIY7T3Unfg9c2/jxLpVlsxEpZp+eIE7/3a8AGZKQ==;20:TuNv1zR96Wbol+LA+35bsuUyjbCMZVNI8qSE7ja/VqwyOkt23Oi2F0Gm30NgBcCQ4WV7lDn36EU/HEAVlrCSqnSJFSJZLHv5FWRJnBD6GBUORkNVofGDYVGv9zHP0wNzjU3RkU5w2omV4hVQuOcQYE0xdywr+7CP0G00DTX6roqbUwwb4vfSFYt6nu8+ZYZuQkZXf0uCMwXVZ1lyUrsr+a4LEza3O7NY5F08ydE68B67YBOOk2k0kqpoCsHygEpY X-OriginatorOrg: sandisk.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Dec 2016 16:23:29.4945 (UTC) X-MS-Exchange-CrossTenant-Id: fcd9ea9c-ae8c-460c-ab3c-3db42d7ac64d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fcd9ea9c-ae8c-460c-ab3c-3db42d7ac64d;Ip=[74.221.232.54];Helo=[sacsmgep14.sandisk.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR02MB386 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --_004_148242377526826camelsandiskcom_ Content-Type: text/plain; charset="utf-8" Content-ID: <942F6B187995A4468DFA82EA41F1EB06@sandisk.com> Content-Transfer-Encoding: base64 T24gRnJpLCAyMDE2LTEyLTE2IGF0IDE3OjEyIC0wNzAwLCBKZW5zIEF4Ym9lIHdyb3RlOg0KPiBG cm9tIHRoZSBkaXNjdXNzaW9uIGxhc3QgdGltZSwgSSBsb29rZWQgaW50byB0aGUgZmVhc2liaWxp dHkgb2YgaGF2aW5nDQo+IHR3byBzZXRzIG9mIHRhZ3MgZm9yIHRoZSBzYW1lIHJlcXVlc3QgcG9v bCwgdG8gYXZvaWQgaGF2aW5nIHRvIGNvcHkNCj4gc29tZSBvZiB0aGUgcmVxdWVzdCBmaWVsZHMg YXQgZGlzcGF0Y2ggYW5kIGNvbXBsZXRpb24gdGltZS4gVG8gZG8gdGhhdCwNCj4gd2UnZCBoYXZl IHRvIHJlcGxhY2UgdGhlIGRyaXZlciB0YWcgbWFwKHMpIHdpdGggb3VyIG93biwgYW5kIGF1Z21l bnQNCj4gdGhhdCB3aXRoIHRhZyBtYXAocykgb24gdGhlIHNpZGUgcmVwcmVzZW50aW5nIHRoZSBk ZXZpY2UgcXVldWUgZGVwdGguDQo+IFF1ZXVpbmcgSU8gd2l0aCB0aGUgc2NoZWR1bGVyIHdvdWxk IGFsbG9jYXRlIGZyb20gdGhlIG5ldyBtYXAsIGFuZA0KPiBkaXNwYXRjaGluZyB3b3VsZCBhY3F1 aXJlIHRoZSAicmVhbCIgdGFnLiBXZSB3b3VsZCBuZWVkIHRvIGNoYW5nZQ0KPiBkcml2ZXJzIHRv IGRvIHRoaXMsIG9yIGFkZCBhbiBleHRyYSBpbmRpcmVjdGlvbiB0YWJsZSB0byBtYXAgYSByZWFs DQo+IHRhZyB0byB0aGUgc2NoZWR1bGVyIHRhZy4gV2Ugd291bGQgYWxzbyBuZWVkIGEgMToxIG1h cHBpbmcgYmV0d2Vlbg0KPiBzY2hlZHVsZXIgYW5kIGhhcmR3YXJlIHRhZyBwb29scywgb3IgYWRk aXRpb25hbCBpbmZvIHRvIHRyYWNrIGl0Lg0KPiBVbmxlc3Mgc29tZW9uZSBjYW4gY29udmluY2Ug bWUgb3RoZXJ3aXNlLCBJIHRoaW5rIHRoZSBjdXJyZW50IGFwcHJvYWNoDQo+IGlzIGNsZWFuZXIu DQoNCkhlbGxvIEplbnMsDQoNCkNhbiB5b3UgaGF2ZSBhIGxvb2sgYXQgdGhlIGF0dGFjaGVkIHBh dGNoZXM/IFRoZXNlIGltcGxlbWVudCB0aGUgInR3byB0YWdzDQpwZXIgcmVxdWVzdCIgYXBwcm9h Y2ggd2l0aG91dCBhIHRhYmxlIHRoYXQgbWFwcyBvbmUgdGFnIHR5cGUgdG8gdGhlIG90aGVyDQpv ciBhbnkgb3RoZXIgdWdseSBjb25zdHJ1Y3QuwqBfX2Jsa19tcV9hbGxvY19yZXF1ZXN0KCkgaXMg bW9kaWZpZWQgc3VjaCB0aGF0DQppdCBhc3NpZ25zIHJxLT5zY2hlZF90YWcgYW5kIHNjaGVkX3Rh Z3MtPnJxc1tdIGluc3RlYWQgb2YgcnEtPnRhZyBhbmQNCnRhZ3MtPnJxc1tdLiBycS0+dGFnIGFu ZCB0YWdzLT5ycXNbXSBhcmUgYXNzaWduZWQganVzdCBiZWZvcmUgZGlzcGF0Y2ggYnkNCmJsa19t cV9hc3NpZ25fZHJ2X3RhZygpLiBUaGlzIGFwcHJvYWNoIHJlc3VsdHMgaW4gc2lnbmlmaWNhbnRs eSBsZXNzIGNvZGUNCnRoYW4gdGhlIGFwcHJvYWNoIHByb3Bvc2VkIGluIHY0IG9mIHlvdXIgYmxr LW1xLXNjaGVkIHBhdGNoIHNlcmllcy4gTWVtb3J5DQp1c2FnZSBpcyBsb3dlciBiZWNhdXNlIG9u bHkgYSBzaW5nbGUgc2V0IG9mIHJlcXVlc3RzIGlzIGFsbG9jYXRlZC4gVGhlDQpydW50aW1lIG92 ZXJoZWFkIGlzIGxvd2VyIGJlY2F1c2UgcmVxdWVzdCBmaWVsZHMgbm8gbG9uZ2VyIGhhdmUgdG8g YmUNCmNvcGllZCBiZXR3ZWVuIHRoZSByZXF1ZXN0cyBvd25lZCBieSB0aGUgYmxvY2sgZHJpdmVy IGFuZCB0aGUgcmVxdWVzdHMNCm93bmVkIGJ5IHRoZSBJL08gc2NoZWR1bGVyLiBJIGNhbiBib290 IGEgVk0gZnJvbSB0aGUgdmlydGlvLWJsayBkcml2ZXIgYnV0DQpvdGhlcndpc2UgdGhlIGF0dGFj aGVkIHBhdGNoZXMgaGF2ZSBub3QgeWV0IGJlZW4gdGVzdGVkLg0KDQpUaGFua3MsDQoNCkJhcnQu --_004_148242377526826camelsandiskcom_ Content-Type: text/x-patch; name="0001-blk-mq-Revert-some-of-the-blk-mq-sched-framework-cha.patch" Content-Description: 0001-blk-mq-Revert-some-of-the-blk-mq-sched-framework-cha.patch Content-Disposition: attachment; filename="0001-blk-mq-Revert-some-of-the-blk-mq-sched-framework-cha.patch"; size=21755; creation-date="Thu, 22 Dec 2016 16:23:23 GMT"; modification-date="Thu, 22 Dec 2016 16:23:23 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSAwZmQwNDExMjg1MGE3M2Y1YmU5ZmE5MWEyOWJkMTc5MTE3OWUxZTgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCYXJ0IFZhbiBBc3NjaGUgPGJhcnQudmFuYXNzY2hlQHNhbmRp c2suY29tPgpEYXRlOiBUdWUsIDIwIERlYyAyMDE2IDEyOjUzOjU0ICswMTAwClN1YmplY3Q6IFtQ QVRDSCAxLzNdIGJsay1tcTogUmV2ZXJ0IHNvbWUgb2YgdGhlIGJsay1tcS1zY2hlZCBmcmFtZXdv cmsgY2hhbmdlcwoKUmVtb3ZlIHRoZSBmdW5jdGlvbnMgdGhhdCBhbGxvY2F0ZSBhbmQgZnJlZSBz aGFkb3cgcmVxdWVzdHMuClJlbW92ZSB0aGUgZ2V0X3JlcXVlc3QsIHB1dF9yZXF1ZXN0IGFuZCBj b21wbGV0ZWRfcmVxdWVzdCBjYWxsYmFjawpmdW5jdGlvbnMgZnJvbSBzdHJ1Y3QgZWxldmF0b3Jf dHlwZS4gUmVtb3ZlIGJsay1tcSBJL08gc2NoZWR1bGluZwpmdW5jdGlvbnMgdGhhdCBiZWNvbWUg c3VwZXJmbHVvdXMgZHVlIHRvIHRoZXNlIGNoYW5nZXMuCgpOb3RlOiB0aGlzIHBhdGNoIGJyZWFr cyBibGstbXEgSS9PIHNjaGVkdWxpbmcuIExhdGVyIHBhdGNoZXMgd2lsbCBtYWtlCmJsay1tcSBJ L08gc2NoZWR1bGluZyB3b3JrIGFnYWluLgotLS0KIGJsb2NrL2Jsay1tcS1zY2hlZC5jICAgICB8 IDI5NSArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogYmxv Y2svYmxrLW1xLXNjaGVkLmggICAgIHwgIDU1ICstLS0tLS0tLQogYmxvY2svYmxrLW1xLmMgICAg ICAgICAgIHwgIDUwICsrKysrKy0tCiBibG9jay9tcS1kZWFkbGluZS5jICAgICAgfCAgOTAgKyst LS0tLS0tLS0tLS0tCiBpbmNsdWRlL2xpbnV4L2VsZXZhdG9yLmggfCAgIDMgLQogNSBmaWxlcyBj aGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCA0MzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv YmxvY2svYmxrLW1xLXNjaGVkLmMgYi9ibG9jay9ibGstbXEtc2NoZWQuYwppbmRleCAyNjVlNGE5 Y2NlN2UuLmU0Njc2OWRiM2Q1NyAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLW1xLXNjaGVkLmMKKysr IGIvYmxvY2svYmxrLW1xLXNjaGVkLmMKQEAgLTE1LDE5NiArMTUsNiBAQAogI2luY2x1ZGUgImJs ay1tcS10YWcuaCIKICNpbmNsdWRlICJibGstd2J0LmgiCiAKLS8qCi0gKiBFbXB0eSBzZXQKLSAq Lwotc3RhdGljIGNvbnN0IHN0cnVjdCBibGtfbXFfb3BzIG1xX3NjaGVkX3RhZ19vcHMgPSB7Ci19 OwotCi12b2lkIGJsa19tcV9zY2hlZF9mcmVlX3JlcXVlc3RzKHN0cnVjdCBibGtfbXFfdGFncyAq dGFncykKLXsKLQlibGtfbXFfZnJlZV9ycV9tYXAoTlVMTCwgdGFncywgMCk7Ci19Ci1FWFBPUlRf U1lNQk9MX0dQTChibGtfbXFfc2NoZWRfZnJlZV9yZXF1ZXN0cyk7Ci0KLXN0cnVjdCBibGtfbXFf dGFncyAqYmxrX21xX3NjaGVkX2FsbG9jX3JlcXVlc3RzKHVuc2lnbmVkIGludCBkZXB0aCwKLQkJ CQkJCXVuc2lnbmVkIGludCBudW1hX25vZGUpCi17Ci0Jc3RydWN0IGJsa19tcV90YWdfc2V0IHNl dCA9IHsKLQkJLm9wcwkJPSAmbXFfc2NoZWRfdGFnX29wcywKLQkJLm5yX2h3X3F1ZXVlcwk9IDEs Ci0JCS5xdWV1ZV9kZXB0aAk9IGRlcHRoLAotCQkubnVtYV9ub2RlCT0gbnVtYV9ub2RlLAotCX07 Ci0KLQlyZXR1cm4gYmxrX21xX2luaXRfcnFfbWFwKCZzZXQsIDApOwotfQotRVhQT1JUX1NZTUJP TF9HUEwoYmxrX21xX3NjaGVkX2FsbG9jX3JlcXVlc3RzKTsKLQotdm9pZCBibGtfbXFfc2NoZWRf ZnJlZV9oY3R4X2RhdGEoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsCi0JCQkJIHZvaWQgKCpleGl0 KShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqKSkKLXsKLQlzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0 eDsKLQlpbnQgaTsKLQotCXF1ZXVlX2Zvcl9lYWNoX2h3X2N0eChxLCBoY3R4LCBpKSB7Ci0JCWlm IChleGl0KQotCQkJZXhpdChoY3R4KTsKLQkJa2ZyZWUoaGN0eC0+c2NoZWRfZGF0YSk7Ci0JCWhj dHgtPnNjaGVkX2RhdGEgPSBOVUxMOwotCX0KLX0KLUVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV9z Y2hlZF9mcmVlX2hjdHhfZGF0YSk7Ci0KLWludCBibGtfbXFfc2NoZWRfaW5pdF9oY3R4X2RhdGEo c3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHNpemVfdCBzaXplLAotCQkJCWludCAoKmluaXQpKHN0 cnVjdCBibGtfbXFfaHdfY3R4ICopLAotCQkJCXZvaWQgKCpleGl0KShzdHJ1Y3QgYmxrX21xX2h3 X2N0eCAqKSkKLXsKLQlzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eDsKLQlpbnQgcmV0OwotCWlu dCBpOwotCi0JcXVldWVfZm9yX2VhY2hfaHdfY3R4KHEsIGhjdHgsIGkpIHsKLQkJaGN0eC0+c2No ZWRfZGF0YSA9IGttYWxsb2Nfbm9kZShzaXplLCBHRlBfS0VSTkVMLCBoY3R4LT5udW1hX25vZGUp OwotCQlpZiAoIWhjdHgtPnNjaGVkX2RhdGEpIHsKLQkJCXJldCA9IC1FTk9NRU07Ci0JCQlnb3Rv IGVycm9yOwotCQl9Ci0KLQkJaWYgKGluaXQpIHsKLQkJCXJldCA9IGluaXQoaGN0eCk7Ci0JCQlp ZiAocmV0KSB7Ci0JCQkJLyoKLQkJCQkgKiBXZSBkb24ndCB3YW50IHRvIGdpdmUgZXhpdCgpIGEg cGFydGlhbGx5Ci0JCQkJICogaW5pdGlhbGl6ZWQgc2NoZWRfZGF0YS4gaW5pdCgpIG11c3QgY2xl YW4gdXAKLQkJCQkgKiBpZiBpdCBmYWlscy4KLQkJCQkgKi8KLQkJCQlrZnJlZShoY3R4LT5zY2hl ZF9kYXRhKTsKLQkJCQloY3R4LT5zY2hlZF9kYXRhID0gTlVMTDsKLQkJCQlnb3RvIGVycm9yOwot CQkJfQotCQl9Ci0JfQotCi0JcmV0dXJuIDA7Ci1lcnJvcjoKLQlibGtfbXFfc2NoZWRfZnJlZV9o Y3R4X2RhdGEocSwgZXhpdCk7Ci0JcmV0dXJuIHJldDsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKGJs a19tcV9zY2hlZF9pbml0X2hjdHhfZGF0YSk7Ci0KLXN0cnVjdCByZXF1ZXN0ICpibGtfbXFfc2No ZWRfYWxsb2Nfc2hhZG93X3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsCi0JCQkJCQkg IHN0cnVjdCBibGtfbXFfYWxsb2NfZGF0YSAqZGF0YSwKLQkJCQkJCSAgc3RydWN0IGJsa19tcV90 YWdzICp0YWdzLAotCQkJCQkJICBhdG9taWNfdCAqd2FpdF9pbmRleCkKLXsKLQlzdHJ1Y3Qgc2Jx X3dhaXRfc3RhdGUgKndzOwotCURFRklORV9XQUlUKHdhaXQpOwotCXN0cnVjdCByZXF1ZXN0ICpy cTsKLQlpbnQgdGFnOwotCi0JdGFnID0gX19zYml0bWFwX3F1ZXVlX2dldCgmdGFncy0+Yml0bWFw X3RhZ3MpOwotCWlmICh0YWcgIT0gLTEpCi0JCWdvdG8gZG9uZTsKLQotCWlmIChkYXRhLT5mbGFn cyAmIEJMS19NUV9SRVFfTk9XQUlUKQotCQlyZXR1cm4gTlVMTDsKLQotCXdzID0gc2JxX3dhaXRf cHRyKCZ0YWdzLT5iaXRtYXBfdGFncywgd2FpdF9pbmRleCk7Ci0JZG8gewotCQlwcmVwYXJlX3Rv X3dhaXQoJndzLT53YWl0LCAmd2FpdCwgVEFTS19VTklOVEVSUlVQVElCTEUpOwotCi0JCXRhZyA9 IF9fc2JpdG1hcF9xdWV1ZV9nZXQoJnRhZ3MtPmJpdG1hcF90YWdzKTsKLQkJaWYgKHRhZyAhPSAt MSkKLQkJCWJyZWFrOwotCi0JCWJsa19tcV9ydW5faHdfcXVldWUoZGF0YS0+aGN0eCwgZmFsc2Up OwotCi0JCXRhZyA9IF9fc2JpdG1hcF9xdWV1ZV9nZXQoJnRhZ3MtPmJpdG1hcF90YWdzKTsKLQkJ aWYgKHRhZyAhPSAtMSkKLQkJCWJyZWFrOwotCi0JCWJsa19tcV9wdXRfY3R4KGRhdGEtPmN0eCk7 Ci0JCWlvX3NjaGVkdWxlKCk7Ci0KLQkJZGF0YS0+Y3R4ID0gYmxrX21xX2dldF9jdHgoZGF0YS0+ cSk7Ci0JCWRhdGEtPmhjdHggPSBibGtfbXFfbWFwX3F1ZXVlKGRhdGEtPnEsIGRhdGEtPmN0eC0+ Y3B1KTsKLQkJZmluaXNoX3dhaXQoJndzLT53YWl0LCAmd2FpdCk7Ci0JCXdzID0gc2JxX3dhaXRf cHRyKCZ0YWdzLT5iaXRtYXBfdGFncywgd2FpdF9pbmRleCk7Ci0JfSB3aGlsZSAoMSk7Ci0KLQlm aW5pc2hfd2FpdCgmd3MtPndhaXQsICZ3YWl0KTsKLWRvbmU6Ci0JcnEgPSB0YWdzLT5ycXNbdGFn XTsKLQlycS0+dGFnID0gdGFnOwotCXJxLT5ycV9mbGFncyA9IFJRRl9BTExPQ0VEOwotCXJldHVy biBycTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV9zY2hlZF9hbGxvY19zaGFkb3dfcmVx dWVzdCk7Ci0KLXZvaWQgYmxrX21xX3NjaGVkX2ZyZWVfc2hhZG93X3JlcXVlc3Qoc3RydWN0IGJs a19tcV90YWdzICp0YWdzLAotCQkJCSAgICAgIHN0cnVjdCByZXF1ZXN0ICpycSkKLXsKLQlXQVJO X09OX09OQ0UoIShycS0+cnFfZmxhZ3MgJiBSUUZfQUxMT0NFRCkpOwotCXNiaXRtYXBfcXVldWVf Y2xlYXIoJnRhZ3MtPmJpdG1hcF90YWdzLCBycS0+dGFnLCBycS0+bXFfY3R4LT5jcHUpOwotfQot RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3NjaGVkX2ZyZWVfc2hhZG93X3JlcXVlc3QpOwotCi1z dGF0aWMgdm9pZCBycV9jb3B5KHN0cnVjdCByZXF1ZXN0ICpycSwgc3RydWN0IHJlcXVlc3QgKnNy YykKLXsKLSNkZWZpbmUgRklFTERfQ09QWShkc3QsIHNyYywgbmFtZSkJKChkc3QpLT5uYW1lID0g KHNyYyktPm5hbWUpCi0JRklFTERfQ09QWShycSwgc3JjLCBjcHUpOwotCUZJRUxEX0NPUFkocnEs IHNyYywgY21kX3R5cGUpOwotCUZJRUxEX0NPUFkocnEsIHNyYywgY21kX2ZsYWdzKTsKLQlycS0+ cnFfZmxhZ3MgfD0gKHNyYy0+cnFfZmxhZ3MgJiAoUlFGX1BSRUVNUFQgfCBSUUZfUVVJRVQgfCBS UUZfUE0gfCBSUUZfRE9OVFBSRVApKTsKLQlycS0+cnFfZmxhZ3MgJj0gflJRRl9JT19TVEFUOwot CUZJRUxEX0NPUFkocnEsIHNyYywgX19kYXRhX2xlbik7Ci0JRklFTERfQ09QWShycSwgc3JjLCBf X3NlY3Rvcik7Ci0JRklFTERfQ09QWShycSwgc3JjLCBiaW8pOwotCUZJRUxEX0NPUFkocnEsIHNy YywgYmlvdGFpbCk7Ci0JRklFTERfQ09QWShycSwgc3JjLCBycV9kaXNrKTsKLQlGSUVMRF9DT1BZ KHJxLCBzcmMsIHBhcnQpOwotCUZJRUxEX0NPUFkocnEsIHNyYywgaXNzdWVfc3RhdCk7Ci0Jc3Jj LT5pc3N1ZV9zdGF0LnRpbWUgPSAwOwotCUZJRUxEX0NPUFkocnEsIHNyYywgbnJfcGh5c19zZWdt ZW50cyk7Ci0jaWYgZGVmaW5lZChDT05GSUdfQkxLX0RFVl9JTlRFR1JJVFkpCi0JRklFTERfQ09Q WShycSwgc3JjLCBucl9pbnRlZ3JpdHlfc2VnbWVudHMpOwotI2VuZGlmCi0JRklFTERfQ09QWShy cSwgc3JjLCBpb3ByaW8pOwotCUZJRUxEX0NPUFkocnEsIHNyYywgdGltZW91dCk7Ci0KLQlpZiAo c3JjLT5jbWRfdHlwZSA9PSBSRVFfVFlQRV9CTE9DS19QQykgewotCQlGSUVMRF9DT1BZKHJxLCBz cmMsIGNtZCk7Ci0JCUZJRUxEX0NPUFkocnEsIHNyYywgY21kX2xlbik7Ci0JCUZJRUxEX0NPUFko cnEsIHNyYywgZXh0cmFfbGVuKTsKLQkJRklFTERfQ09QWShycSwgc3JjLCBzZW5zZV9sZW4pOwot CQlGSUVMRF9DT1BZKHJxLCBzcmMsIHJlc2lkX2xlbik7Ci0JCUZJRUxEX0NPUFkocnEsIHNyYywg c2Vuc2UpOwotCQlGSUVMRF9DT1BZKHJxLCBzcmMsIHJldHJpZXMpOwotCX0KLQotCXNyYy0+Ymlv ID0gc3JjLT5iaW90YWlsID0gTlVMTDsKLX0KLQotc3RhdGljIHZvaWQgc2NoZWRfcnFfZW5kX2lv KHN0cnVjdCByZXF1ZXN0ICpycSwgaW50IGVycm9yKQotewotCXN0cnVjdCByZXF1ZXN0ICpzY2hl ZF9ycSA9IHJxLT5lbmRfaW9fZGF0YTsKLQotCUZJRUxEX0NPUFkoc2NoZWRfcnEsIHJxLCByZXNp ZF9sZW4pOwotCUZJRUxEX0NPUFkoc2NoZWRfcnEsIHJxLCBleHRyYV9sZW4pOwotCUZJRUxEX0NP UFkoc2NoZWRfcnEsIHJxLCBzZW5zZV9sZW4pOwotCUZJRUxEX0NPUFkoc2NoZWRfcnEsIHJxLCBl cnJvcnMpOwotCUZJRUxEX0NPUFkoc2NoZWRfcnEsIHJxLCByZXRyaWVzKTsKLQotCWJsa19hY2Nv dW50X2lvX2NvbXBsZXRpb24oc2NoZWRfcnEsIGJsa19ycV9ieXRlcyhzY2hlZF9ycSkpOwotCWJs a19hY2NvdW50X2lvX2RvbmUoc2NoZWRfcnEpOwotCi0JaWYgKHNjaGVkX3JxLT5lbmRfaW8pCi0J CXNjaGVkX3JxLT5lbmRfaW8oc2NoZWRfcnEsIGVycm9yKTsKLQotCWJsa19tcV9maW5pc2hfcmVx dWVzdChycSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgc3RydWN0IHJlcXVlc3QgKgogX19ibGtfbXFf c2NoZWRfYWxsb2NfcmVxdWVzdChzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCkKIHsKQEAgLTIy NSw1NSArMzUsNiBAQCBfX2Jsa19tcV9zY2hlZF9hbGxvY19yZXF1ZXN0KHN0cnVjdCBibGtfbXFf aHdfY3R4ICpoY3R4KQogCXJldHVybiBycTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkCi1fX2Js a19tcV9zY2hlZF9pbml0X3JlcXVlc3RfZnJvbV9zaGFkb3coc3RydWN0IHJlcXVlc3QgKnJxLAot CQkJCQlzdHJ1Y3QgcmVxdWVzdCAqc2NoZWRfcnEpCi17Ci0JV0FSTl9PTl9PTkNFKCEoc2NoZWRf cnEtPnJxX2ZsYWdzICYgUlFGX0FMTE9DRUQpKTsKLQlycV9jb3B5KHJxLCBzY2hlZF9ycSk7Ci0J cnEtPmVuZF9pbyA9IHNjaGVkX3JxX2VuZF9pbzsKLQlycS0+ZW5kX2lvX2RhdGEgPSBzY2hlZF9y cTsKLX0KLQotc3RydWN0IHJlcXVlc3QgKgotYmxrX21xX3NjaGVkX3JlcXVlc3RfZnJvbV9zaGFk b3coc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsCi0JCQkJIHN0cnVjdCByZXF1ZXN0ICooKmdl dF9zY2hlZF9ycSkoc3RydWN0IGJsa19tcV9od19jdHggKikpCi17Ci0Jc3RydWN0IHJlcXVlc3Qg KnJxLCAqc2NoZWRfcnE7Ci0KLQlycSA9IF9fYmxrX21xX3NjaGVkX2FsbG9jX3JlcXVlc3QoaGN0 eCk7Ci0JaWYgKCFycSkKLQkJcmV0dXJuIE5VTEw7Ci0KLQlzY2hlZF9ycSA9IGdldF9zY2hlZF9y cShoY3R4KTsKLQlpZiAoc2NoZWRfcnEpIHsKLQkJX19ibGtfbXFfc2NoZWRfaW5pdF9yZXF1ZXN0 X2Zyb21fc2hhZG93KHJxLCBzY2hlZF9ycSk7Ci0JCXJldHVybiBycTsKLQl9Ci0KLQkvKgotCSAq IF9fYmxrX21xX2ZpbmlzaF9yZXF1ZXN0KCkgZHJvcHMgYSBxdWV1ZSByZWYgd2UgYWxyZWFkeSBo b2xkLAotCSAqIHNvIGdyYWIgYW4gZXh0cmEgb25lLgotCSAqLwotCWJsa19xdWV1ZV9lbnRlcl9s aXZlKGhjdHgtPnF1ZXVlKTsKLQlfX2Jsa19tcV9maW5pc2hfcmVxdWVzdChoY3R4LCBycS0+bXFf Y3R4LCBycSk7Ci0JcmV0dXJuIE5VTEw7Ci19Ci1FWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfc2No ZWRfcmVxdWVzdF9mcm9tX3NoYWRvdyk7Ci0KLXN0cnVjdCByZXF1ZXN0ICpfX2Jsa19tcV9zY2hl ZF9yZXF1ZXN0X2Zyb21fc2hhZG93KHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LAotCQkJCQkJ ICAgc3RydWN0IHJlcXVlc3QgKnNjaGVkX3JxKQotewotCXN0cnVjdCByZXF1ZXN0ICpycTsKLQot CXJxID0gX19ibGtfbXFfc2NoZWRfYWxsb2NfcmVxdWVzdChoY3R4KTsKLQlpZiAocnEpCi0JCV9f YmxrX21xX3NjaGVkX2luaXRfcmVxdWVzdF9mcm9tX3NoYWRvdyhycSwgc2NoZWRfcnEpOwotCi0J cmV0dXJuIHJxOwotfQotRVhQT1JUX1NZTUJPTF9HUEwoX19ibGtfbXFfc2NoZWRfcmVxdWVzdF9m cm9tX3NoYWRvdyk7Ci0KIHN0YXRpYyB2b2lkIF9fYmxrX21xX3NjaGVkX2Fzc2lnbl9pb2Moc3Ry dWN0IHJlcXVlc3RfcXVldWUgKnEsCiAJCQkJICAgICAgc3RydWN0IHJlcXVlc3QgKnJxLCBzdHJ1 Y3QgaW9fY29udGV4dCAqaW9jKQogewpAQCAtMjk4LDggKzU5LDggQEAgc3RhdGljIHZvaWQgX19i bGtfbXFfc2NoZWRfYXNzaWduX2lvYyhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwKIAlycS0+ZWx2 LmljcSA9IE5VTEw7CiB9CiAKLXN0YXRpYyB2b2lkIGJsa19tcV9zY2hlZF9hc3NpZ25faW9jKHN0 cnVjdCByZXF1ZXN0X3F1ZXVlICpxLAotCQkJCSAgICBzdHJ1Y3QgcmVxdWVzdCAqcnEsIHN0cnVj dCBiaW8gKmJpbykKK3ZvaWQgYmxrX21xX3NjaGVkX2Fzc2lnbl9pb2Moc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEsIHN0cnVjdCByZXF1ZXN0ICpycSwKKwkJCSAgICAgc3RydWN0IGJpbyAqYmlvKQog ewogCXN0cnVjdCBpb19jb250ZXh0ICppb2M7CiAKQEAgLTMwOCw0NCArNjksOSBAQCBzdGF0aWMg dm9pZCBibGtfbXFfc2NoZWRfYXNzaWduX2lvYyhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwKIAkJ X19ibGtfbXFfc2NoZWRfYXNzaWduX2lvYyhxLCBycSwgaW9jKTsKIH0KIAotc3RydWN0IHJlcXVl c3QgKmJsa19tcV9zY2hlZF9nZXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwKLQkJ CQkJIHN0cnVjdCBiaW8gKmJpbywKLQkJCQkJIHVuc2lnbmVkIGludCBvcCwKLQkJCQkJIHN0cnVj dCBibGtfbXFfYWxsb2NfZGF0YSAqZGF0YSkKLXsKLQlzdHJ1Y3QgZWxldmF0b3JfcXVldWUgKmUg PSBxLT5lbGV2YXRvcjsKLQlzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eDsKLQlzdHJ1Y3QgYmxr X21xX2N0eCAqY3R4OwotCXN0cnVjdCByZXF1ZXN0ICpycTsKLQotCWJsa19xdWV1ZV9lbnRlcl9s aXZlKHEpOwotCWN0eCA9IGJsa19tcV9nZXRfY3R4KHEpOwotCWhjdHggPSBibGtfbXFfbWFwX3F1 ZXVlKHEsIGN0eC0+Y3B1KTsKLQotCWJsa19tcV9zZXRfYWxsb2NfZGF0YShkYXRhLCBxLCAwLCBj dHgsIGhjdHgpOwotCi0JaWYgKGUgJiYgZS0+dHlwZS0+b3BzLm1xLmdldF9yZXF1ZXN0KQotCQly cSA9IGUtPnR5cGUtPm9wcy5tcS5nZXRfcmVxdWVzdChxLCBvcCwgZGF0YSk7Ci0JZWxzZQotCQly cSA9IF9fYmxrX21xX2FsbG9jX3JlcXVlc3QoZGF0YSwgb3ApOwotCi0JaWYgKHJxKSB7Ci0JCXJx LT5lbHYuaWNxID0gTlVMTDsKLQkJaWYgKGUgJiYgZS0+dHlwZS0+aWNxX2NhY2hlKQotCQkJYmxr X21xX3NjaGVkX2Fzc2lnbl9pb2MocSwgcnEsIGJpbyk7Ci0JCWRhdGEtPmhjdHgtPnF1ZXVlZCsr OwotCQlyZXR1cm4gcnE7Ci0JfQotCi0JYmxrX3F1ZXVlX2V4aXQocSk7Ci0JcmV0dXJuIE5VTEw7 Ci19Ci0KIHZvaWQgYmxrX21xX3NjaGVkX3B1dF9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0ICpycSkK IHsKIAlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IHJxLT5xOwotCXN0cnVjdCBlbGV2YXRvcl9x dWV1ZSAqZSA9IHEtPmVsZXZhdG9yOwotCWJvb2wgaGFzX3F1ZXVlX3JlZiA9IGZhbHNlLCBkb19m cmVlID0gZmFsc2U7CiAKIAl3YnRfZG9uZShxLT5ycV93YiwgJnJxLT5pc3N1ZV9zdGF0KTsKIApA QCAtMzU3LDIyICs4Myw3IEBAIHZvaWQgYmxrX21xX3NjaGVkX3B1dF9yZXF1ZXN0KHN0cnVjdCBy ZXF1ZXN0ICpycSkKIAkJfQogCX0KIAotCS8qCi0JICogSWYgd2UgYXJlIGZyZWVpbmcgYSBzaGFk b3cgdGhhdCBoYXNuJ3QgYmVlbiBzdGFydGVkLCB0aGVuIGRyb3AKLQkgKiBvdXIgcXVldWUgcmVm IG9uIGl0LiBUaGlzIG5vcm1hbGx5IGhhcHBlbnMgYXQgSU8gY29tcGxldGlvbgotCSAqIHRpbWUs IGJ1dCBpZiB3ZSBtZXJnZSByZXF1ZXN0LXRvLXJlcXVlc3QsIHRoZW4gdGhpcyAncnEnIHdpbGwK LQkgKiBuZXZlciBnZXQgc3RhcnRlZCBvciBjb21wbGV0ZWQuCi0JICovCi0JaWYgKGJsa19tcV9z Y2hlZF9ycV9pc19zaGFkb3cocnEpICYmICEocnEtPnJxX2ZsYWdzICYgUlFGX1NUQVJURUQpKQot CQloYXNfcXVldWVfcmVmID0gdHJ1ZTsKLQotCWlmIChlICYmIGUtPnR5cGUtPm9wcy5tcS5wdXRf cmVxdWVzdCkKLQkJZG9fZnJlZSA9ICFlLT50eXBlLT5vcHMubXEucHV0X3JlcXVlc3QocnEpOwot Ci0JaWYgKGRvX2ZyZWUpCi0JCWJsa19tcV9maW5pc2hfcmVxdWVzdChycSk7Ci0JaWYgKGhhc19x dWV1ZV9yZWYpCi0JCWJsa19xdWV1ZV9leGl0KHEpOworCWJsa19tcV9maW5pc2hfcmVxdWVzdChy cSk7CiB9CiAKIHZvaWQgYmxrX21xX3NjaGVkX2Rpc3BhdGNoX3JlcXVlc3RzKHN0cnVjdCBibGtf bXFfaHdfY3R4ICpoY3R4KQpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1xLXNjaGVkLmggYi9ibG9j ay9ibGstbXEtc2NoZWQuaAppbmRleCA4ZmYzN2Y5NzgyZTkuLjZiOGMzMTRiNWMyMCAxMDA2NDQK LS0tIGEvYmxvY2svYmxrLW1xLXNjaGVkLmgKKysrIGIvYmxvY2svYmxrLW1xLXNjaGVkLmgKQEAg LTMsMzAgKzMsNiBAQAogCiAjaW5jbHVkZSAiYmxrLW1xLmgiCiAKLXN0cnVjdCBibGtfbXFfdGFn cyAqYmxrX21xX3NjaGVkX2FsbG9jX3JlcXVlc3RzKHVuc2lnbmVkIGludCBkZXB0aCwgdW5zaWdu ZWQgaW50IG51bWFfbm9kZSk7Ci12b2lkIGJsa19tcV9zY2hlZF9mcmVlX3JlcXVlc3RzKHN0cnVj dCBibGtfbXFfdGFncyAqdGFncyk7Ci0KLWludCBibGtfbXFfc2NoZWRfaW5pdF9oY3R4X2RhdGEo c3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHNpemVfdCBzaXplLAotCQkJCWludCAoKmluaXQpKHN0 cnVjdCBibGtfbXFfaHdfY3R4ICopLAotCQkJCXZvaWQgKCpleGl0KShzdHJ1Y3QgYmxrX21xX2h3 X2N0eCAqKSk7Ci0KLXZvaWQgYmxrX21xX3NjaGVkX2ZyZWVfaGN0eF9kYXRhKHN0cnVjdCByZXF1 ZXN0X3F1ZXVlICpxLAotCQkJCSB2b2lkICgqZXhpdCkoc3RydWN0IGJsa19tcV9od19jdHggKikp OwotCi12b2lkIGJsa19tcV9zY2hlZF9mcmVlX3NoYWRvd19yZXF1ZXN0KHN0cnVjdCBibGtfbXFf dGFncyAqdGFncywKLQkJCQkgICAgICBzdHJ1Y3QgcmVxdWVzdCAqcnEpOwotc3RydWN0IHJlcXVl c3QgKmJsa19tcV9zY2hlZF9hbGxvY19zaGFkb3dfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSwKLQkJCQkJCSAgc3RydWN0IGJsa19tcV9hbGxvY19kYXRhICpkYXRhLAotCQkJCQkJICBz dHJ1Y3QgYmxrX21xX3RhZ3MgKnRhZ3MsCi0JCQkJCQkgIGF0b21pY190ICp3YWl0X2luZGV4KTsK LXN0cnVjdCByZXF1ZXN0ICoKLWJsa19tcV9zY2hlZF9yZXF1ZXN0X2Zyb21fc2hhZG93KHN0cnVj dCBibGtfbXFfaHdfY3R4ICpoY3R4LAotCQkJCSBzdHJ1Y3QgcmVxdWVzdCAqKCpnZXRfc2NoZWRf cnEpKHN0cnVjdCBibGtfbXFfaHdfY3R4ICopKTsKLXN0cnVjdCByZXF1ZXN0ICoKLV9fYmxrX21x X3NjaGVkX3JlcXVlc3RfZnJvbV9zaGFkb3coc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsCi0J CQkJICAgc3RydWN0IHJlcXVlc3QgKnNjaGVkX3JxKTsKLQotc3RydWN0IHJlcXVlc3QgKmJsa19t cV9zY2hlZF9nZXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAq YmlvLCB1bnNpZ25lZCBpbnQgb3AsIHN0cnVjdCBibGtfbXFfYWxsb2NfZGF0YSAqZGF0YSk7CiB2 b2lkIGJsa19tcV9zY2hlZF9wdXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdCAqcnEpOwogCiB2b2lk IF9fYmxrX21xX3NjaGVkX2Rpc3BhdGNoX3JlcXVlc3RzKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpo Y3R4KTsKQEAgLTM1LDYgKzExLDkgQEAgYm9vbCBibGtfbXFfc2NoZWRfdHJ5X21lcmdlKHN0cnVj dCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8pOwogYm9vbCBfX2Jsa19tcV9zY2hl ZF9iaW9fbWVyZ2Uoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbyk7CiBi b29sIGJsa19tcV9zY2hlZF90cnlfaW5zZXJ0X21lcmdlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LCBzdHJ1Y3QgcmVxdWVzdCAqcnEpOwogCit2b2lkIGJsa19tcV9zY2hlZF9hc3NpZ25faW9jKHN0 cnVjdCByZXF1ZXN0X3F1ZXVlICpxLAorCQkJICAgICBzdHJ1Y3QgcmVxdWVzdCAqcnEsIHN0cnVj dCBiaW8gKmJpbyk7CisKIHZvaWQgYmxrX21xX3NjaGVkX2Rpc3BhdGNoX3JlcXVlc3RzKHN0cnVj dCBibGtfbXFfaHdfY3R4ICpoY3R4KTsKIAogaW50IGJsa19tcV9zY2hlZF9pbml0KHN0cnVjdCBy ZXF1ZXN0X3F1ZXVlICpxKTsKQEAgLTEwOSwyMiArODgsNiBAQCBibGtfbXFfc2NoZWRfaW5zZXJ0 X3JlcXVlc3RzKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmxrX21xX2N0eCAqY3R4 LAogCWJsa19tcV9ydW5faHdfcXVldWUoaGN0eCwgcnVuX3F1ZXVlX2FzeW5jKTsKIH0KIAotc3Rh dGljIGlubGluZSB2b2lkCi1ibGtfbXFfc2NoZWRfZGlzcGF0Y2hfc2hhZG93X3JlcXVlc3RzKHN0 cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LAotCQkJCSAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJx X2xpc3QsCi0JCQkJICAgICAgc3RydWN0IHJlcXVlc3QgKigqZ2V0X3NjaGVkX3JxKShzdHJ1Y3Qg YmxrX21xX2h3X2N0eCAqKSkKLXsKLQlkbyB7Ci0JCXN0cnVjdCByZXF1ZXN0ICpycTsKLQotCQly cSA9IGJsa19tcV9zY2hlZF9yZXF1ZXN0X2Zyb21fc2hhZG93KGhjdHgsIGdldF9zY2hlZF9ycSk7 Ci0JCWlmICghcnEpCi0JCQlicmVhazsKLQotCQlsaXN0X2FkZF90YWlsKCZycS0+cXVldWVsaXN0 LCBycV9saXN0KTsKLQl9IHdoaWxlICgxKTsKLX0KLQogc3RhdGljIGlubGluZSBib29sCiBibGtf bXFfc2NoZWRfYWxsb3dfbWVyZ2Uoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCByZXF1 ZXN0ICpycSwKIAkJCSBzdHJ1Y3QgYmlvICpiaW8pCkBAIC0xNDAsMTEgKzEwMyw2IEBAIGJsa19t cV9zY2hlZF9hbGxvd19tZXJnZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IHJlcXVl c3QgKnJxLAogc3RhdGljIGlubGluZSB2b2lkCiBibGtfbXFfc2NoZWRfY29tcGxldGVkX3JlcXVl c3Qoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIHN0cnVjdCByZXF1ZXN0ICpycSkKIHsKLQlz dHJ1Y3QgZWxldmF0b3JfcXVldWUgKmUgPSBoY3R4LT5xdWV1ZS0+ZWxldmF0b3I7Ci0KLQlpZiAo ZSAmJiBlLT50eXBlLT5vcHMubXEuY29tcGxldGVkX3JlcXVlc3QpCi0JCWUtPnR5cGUtPm9wcy5t cS5jb21wbGV0ZWRfcmVxdWVzdChoY3R4LCBycSk7Ci0KIAlpZiAodGVzdF9iaXQoQkxLX01RX1Nf U0NIRURfUkVTVEFSVCwgJmhjdHgtPnN0YXRlKSkgewogCQljbGVhcl9iaXQoQkxLX01RX1NfU0NI RURfUkVTVEFSVCwgJmhjdHgtPnN0YXRlKTsKIAkJYmxrX21xX3J1bl9od19xdWV1ZShoY3R4LCB0 cnVlKTsKQEAgLTE3OSwxMSArMTM3LDQgQEAgc3RhdGljIGlubGluZSBib29sIGJsa19tcV9zY2hl ZF9oYXNfd29yayhzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCkKIAlyZXR1cm4gZmFsc2U7CiB9 CiAKLS8qCi0gKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBpcyBhbiBpbnRlcm5hbCBzaGFkb3cgcmVx dWVzdAotICovCi1zdGF0aWMgaW5saW5lIGJvb2wgYmxrX21xX3NjaGVkX3JxX2lzX3NoYWRvdyhz dHJ1Y3QgcmVxdWVzdCAqcnEpCi17Ci0JcmV0dXJuIChycS0+cnFfZmxhZ3MgJiBSUUZfQUxMT0NF RCkgIT0gMDsKLX0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1xLmMgYi9ibG9jay9i bGstbXEuYwppbmRleCAzYTE5ODM0MjExYjIuLjM1ZTExNjI2MDJmNSAxMDA2NDQKLS0tIGEvYmxv Y2svYmxrLW1xLmMKKysrIGIvYmxvY2svYmxrLW1xLmMKQEAgLTI0NSw2ICsyNDUsOCBAQCBzdHJ1 Y3QgcmVxdWVzdCAqYmxrX21xX2FsbG9jX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEs IGludCBydywKIAkJdW5zaWduZWQgaW50IGZsYWdzKQogewogCXN0cnVjdCBibGtfbXFfYWxsb2Nf ZGF0YSBhbGxvY19kYXRhOworCXN0cnVjdCBibGtfbXFfY3R4ICpjdHg7CisJc3RydWN0IGJsa19t cV9od19jdHggKmhjdHg7CiAJc3RydWN0IHJlcXVlc3QgKnJxOwogCWludCByZXQ7CiAKQEAgLTI1 MiwxMyArMjU0LDE2IEBAIHN0cnVjdCByZXF1ZXN0ICpibGtfbXFfYWxsb2NfcmVxdWVzdChzdHJ1 Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgaW50IHJ3LAogCWlmIChyZXQpCiAJCXJldHVybiBFUlJfUFRS KHJldCk7CiAKLQlycSA9IGJsa19tcV9zY2hlZF9nZXRfcmVxdWVzdChxLCBOVUxMLCBydywgJmFs bG9jX2RhdGEpOwotCi0JYmxrX21xX3B1dF9jdHgoYWxsb2NfZGF0YS5jdHgpOwotCWJsa19xdWV1 ZV9leGl0KHEpOworCWN0eCA9IGJsa19tcV9nZXRfY3R4KHEpOworCWhjdHggPSBibGtfbXFfbWFw X3F1ZXVlKHEsIGN0eC0+Y3B1KTsKKwlibGtfbXFfc2V0X2FsbG9jX2RhdGEoJmFsbG9jX2RhdGEs IHEsIGZsYWdzLCBjdHgsIGhjdHgpOworCXJxID0gX19ibGtfbXFfYWxsb2NfcmVxdWVzdCgmYWxs b2NfZGF0YSwgcncpOworCWJsa19tcV9wdXRfY3R4KGN0eCk7CiAKLQlpZiAoIXJxKQorCWlmICgh cnEpIHsKKwkJYmxrX3F1ZXVlX2V4aXQocSk7CiAJCXJldHVybiBFUlJfUFRSKC1FV09VTERCTE9D Syk7CisJfQogCiAJcnEtPl9fZGF0YV9sZW4gPSAwOwogCXJxLT5fX3NlY3RvciA9IChzZWN0b3Jf dCkgLTE7CkBAIC0zMjQsNyArMzI5LDcgQEAgdm9pZCBfX2Jsa19tcV9maW5pc2hfcmVxdWVzdChz dHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgc3RydWN0IGJsa19tcV9jdHggKmN0eCwKIAljb25z dCBpbnQgdGFnID0gcnEtPnRhZzsKIAlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IHJxLT5xOwog Ci0JYmxrX21xX3NjaGVkX2NvbXBsZXRlZF9yZXF1ZXN0KGhjdHgsIHJxKTsKKwljdHgtPnJxX2Nv bXBsZXRlZFtycV9pc19zeW5jKHJxKV0rKzsKIAogCWlmIChycS0+cnFfZmxhZ3MgJiBSUUZfTVFf SU5GTElHSFQpCiAJCWF0b21pY19kZWMoJmhjdHgtPm5yX2FjdGl2ZSk7CkBAIC0xMjQ2LDYgKzEy NTEsMzQgQEAgc3RhdGljIGlubGluZSBib29sIGJsa19tcV9tZXJnZV9xdWV1ZV9pbyhzdHJ1Y3Qg YmxrX21xX2h3X2N0eCAqaGN0eCwKIAl9CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgcmVxdWVzdCAqYmxr X21xX2dldF9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLAorCQkJCQkgIHN0cnVjdCBi aW8gKmJpbywKKwkJCQkJICBzdHJ1Y3QgYmxrX21xX2FsbG9jX2RhdGEgKmRhdGEpCit7CisJc3Ry dWN0IGVsZXZhdG9yX3F1ZXVlICplID0gcS0+ZWxldmF0b3I7CisJc3RydWN0IGJsa19tcV9od19j dHggKmhjdHg7CisJc3RydWN0IGJsa19tcV9jdHggKmN0eDsKKwlzdHJ1Y3QgcmVxdWVzdCAqcnE7 CisKKwlibGtfcXVldWVfZW50ZXJfbGl2ZShxKTsKKwljdHggPSBibGtfbXFfZ2V0X2N0eChxKTsK KwloY3R4ID0gYmxrX21xX21hcF9xdWV1ZShxLCBjdHgtPmNwdSk7CisKKwl0cmFjZV9ibG9ja19n ZXRycShxLCBiaW8sIGJpby0+Ymlfb3BmKTsKKwlibGtfbXFfc2V0X2FsbG9jX2RhdGEoZGF0YSwg cSwgMCwgY3R4LCBoY3R4KTsKKwlycSA9IF9fYmxrX21xX2FsbG9jX3JlcXVlc3QoZGF0YSwgYmlv LT5iaV9vcGYpOworCisJaWYgKHJxKSB7CisJCXJxLT5lbHYuaWNxID0gTlVMTDsKKwkJaWYgKGUg JiYgZS0+dHlwZS0+aWNxX2NhY2hlKQorCQkJYmxrX21xX3NjaGVkX2Fzc2lnbl9pb2MocSwgcnEs IGJpbyk7CisJCWRhdGEtPmhjdHgtPnF1ZXVlZCsrOworCQlyZXR1cm4gcnE7CisJfQorCisJcmV0 dXJuIHJxOworfQorCiBzdGF0aWMgdm9pZCBibGtfbXFfdHJ5X2lzc3VlX2RpcmVjdGx5KHN0cnVj dCByZXF1ZXN0ICpycSwgYmxrX3FjX3QgKmNvb2tpZSkKIHsKIAlzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSA9IHJxLT5xOwpAQCAtMTMyOCw3ICsxMzYxLDcgQEAgc3RhdGljIGJsa19xY190IGJsa19t cV9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykK IAogCXRyYWNlX2Jsb2NrX2dldHJxKHEsIGJpbywgYmlvLT5iaV9vcGYpOwogCi0JcnEgPSBibGtf bXFfc2NoZWRfZ2V0X3JlcXVlc3QocSwgYmlvLCBiaW8tPmJpX29wZiwgJmRhdGEpOworCXJxID0g YmxrX21xX2dldF9yZXF1ZXN0KHEsIGJpbywgJmRhdGEpOwogCWlmICh1bmxpa2VseSghcnEpKSB7 CiAJCV9fd2J0X2RvbmUocS0+cnFfd2IsIHdiX2FjY3QpOwogCQlyZXR1cm4gQkxLX1FDX1RfTk9O RTsKQEAgLTE0NDgsNyArMTQ4MSw3IEBAIHN0YXRpYyBibGtfcWNfdCBibGtfc3FfbWFrZV9yZXF1 ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8pCiAKIAl0cmFjZV9i bG9ja19nZXRycShxLCBiaW8sIGJpby0+Ymlfb3BmKTsKIAotCXJxID0gYmxrX21xX3NjaGVkX2dl dF9yZXF1ZXN0KHEsIGJpbywgYmlvLT5iaV9vcGYsICZkYXRhKTsKKwlycSA9IGJsa19tcV9nZXRf cmVxdWVzdChxLCBiaW8sICZkYXRhKTsKIAlpZiAodW5saWtlbHkoIXJxKSkgewogCQlfX3didF9k b25lKHEtPnJxX3diLCB3Yl9hY2N0KTsKIAkJcmV0dXJuIEJMS19RQ19UX05PTkU7CkBAIC0xNTA0 LDYgKzE1MzcsNyBAQCBzdGF0aWMgYmxrX3FjX3QgYmxrX3NxX21ha2VfcmVxdWVzdChzdHJ1Y3Qg cmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlvKQogCQlibGtfbXFfc2NoZWRfaW5zZXJ0 X3JlcXVlc3QocnEsIGZhbHNlLCB0cnVlLCB0cnVlKTsKIAkJZ290byBkb25lOwogCX0KKwogCWlm ICghYmxrX21xX21lcmdlX3F1ZXVlX2lvKGRhdGEuaGN0eCwgZGF0YS5jdHgsIHJxLCBiaW8pKSB7 CiAJCS8qCiAJCSAqIEZvciBhIFNZTkMgcmVxdWVzdCwgc2VuZCBpdCB0byB0aGUgaGFyZHdhcmUg aW1tZWRpYXRlbHkuIEZvcgpkaWZmIC0tZ2l0IGEvYmxvY2svbXEtZGVhZGxpbmUuYyBiL2Jsb2Nr L21xLWRlYWRsaW5lLmMKaW5kZXggZTI2YzAyNzk4MDQxLi45YTQwMzlkOWI0ZjAgMTAwNjQ0Ci0t LSBhL2Jsb2NrL21xLWRlYWRsaW5lLmMKKysrIGIvYmxvY2svbXEtZGVhZGxpbmUuYwpAQCAtNjMs OCArNjMsNiBAQCBzdHJ1Y3QgZGVhZGxpbmVfZGF0YSB7CiAKIAlzcGlubG9ja190IGxvY2s7CiAJ c3RydWN0IGxpc3RfaGVhZCBkaXNwYXRjaDsKLQlzdHJ1Y3QgYmxrX21xX3RhZ3MgKnRhZ3M7Ci0J YXRvbWljX3Qgd2FpdF9pbmRleDsKIH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHJiX3Jvb3Qg KgpAQCAtMzAwLDcgKzI5OCwxMyBAQCBzdGF0aWMgc3RydWN0IHJlcXVlc3QgKl9fZGRfZGlzcGF0 Y2hfcmVxdWVzdChzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCkKIHN0YXRpYyB2b2lkIGRkX2Rp c3BhdGNoX3JlcXVlc3RzKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LAogCQkJCSBzdHJ1Y3Qg bGlzdF9oZWFkICpycV9saXN0KQogewotCWJsa19tcV9zY2hlZF9kaXNwYXRjaF9zaGFkb3dfcmVx dWVzdHMoaGN0eCwgcnFfbGlzdCwgX19kZF9kaXNwYXRjaF9yZXF1ZXN0KTsKKwlmb3IgKDs7KSB7 CisJCXN0cnVjdCByZXF1ZXN0ICpycSA9IF9fZGRfZGlzcGF0Y2hfcmVxdWVzdChoY3R4KTsKKwkJ aWYgKCFycSkKKwkJCWJyZWFrOworCisJCWxpc3RfYWRkX3RhaWwoJnJxLT5xdWV1ZWxpc3QsIHJx X2xpc3QpOworCX0KIH0KIAogc3RhdGljIHZvaWQgZGRfZXhpdF9xdWV1ZShzdHJ1Y3QgZWxldmF0 b3JfcXVldWUgKmUpCkBAIC0zMTAsNyArMzE0LDYgQEAgc3RhdGljIHZvaWQgZGRfZXhpdF9xdWV1 ZShzdHJ1Y3QgZWxldmF0b3JfcXVldWUgKmUpCiAJQlVHX09OKCFsaXN0X2VtcHR5KCZkZC0+Zmlm b19saXN0W1JFQURdKSk7CiAJQlVHX09OKCFsaXN0X2VtcHR5KCZkZC0+Zmlmb19saXN0W1dSSVRF XSkpOwogCi0JYmxrX21xX3NjaGVkX2ZyZWVfcmVxdWVzdHMoZGQtPnRhZ3MpOwogCWtmcmVlKGRk KTsKIH0KIApAQCAtMzMzLDEzICszMzYsNiBAQCBzdGF0aWMgaW50IGRkX2luaXRfcXVldWUoc3Ry dWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBlbGV2YXRvcl90eXBlICplKQogCX0KIAllcS0+ ZWxldmF0b3JfZGF0YSA9IGRkOwogCi0JZGQtPnRhZ3MgPSBibGtfbXFfc2NoZWRfYWxsb2NfcmVx dWVzdHMocXVldWVfZGVwdGgsIHEtPm5vZGUpOwotCWlmICghZGQtPnRhZ3MpIHsKLQkJa2ZyZWUo ZGQpOwotCQlrb2JqZWN0X3B1dCgmZXEtPmtvYmopOwotCQlyZXR1cm4gLUVOT01FTTsKLQl9Ci0K IAlJTklUX0xJU1RfSEVBRCgmZGQtPmZpZm9fbGlzdFtSRUFEXSk7CiAJSU5JVF9MSVNUX0hFQUQo JmRkLT5maWZvX2xpc3RbV1JJVEVdKTsKIAlkZC0+c29ydF9saXN0W1JFQURdID0gUkJfUk9PVDsK QEAgLTM1MSw3ICszNDcsNiBAQCBzdGF0aWMgaW50IGRkX2luaXRfcXVldWUoc3RydWN0IHJlcXVl c3RfcXVldWUgKnEsIHN0cnVjdCBlbGV2YXRvcl90eXBlICplKQogCWRkLT5maWZvX2JhdGNoID0g Zmlmb19iYXRjaDsKIAlzcGluX2xvY2tfaW5pdCgmZGQtPmxvY2spOwogCUlOSVRfTElTVF9IRUFE KCZkZC0+ZGlzcGF0Y2gpOwotCWF0b21pY19zZXQoJmRkLT53YWl0X2luZGV4LCAwKTsKIAogCXEt PmVsZXZhdG9yID0gZXE7CiAJcmV0dXJuIDA7CkBAIC00MDksMTEgKzQwNCwxMCBAQCBzdGF0aWMg dm9pZCBkZF9pbnNlcnRfcmVxdWVzdChzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgc3RydWN0 IHJlcXVlc3QgKnJxLAogCWJsa19tcV9zY2hlZF9yZXF1ZXN0X2luc2VydGVkKHJxKTsKIAogCS8q Ci0JICogSWYgd2UncmUgdHJ5aW5nIHRvIGluc2VydCBhIHJlYWwgcmVxdWVzdCwganVzdCBzZW5k IGl0IGRpcmVjdGx5Ci0JICogdG8gdGhlIGhhcmR3YXJlIGRpc3BhdGNoIGxpc3QuIFRoaXMgb25s eSBoYXBwZW5zIGZvciBhIHJlcXVldWUsCi0JICogb3IgRlVBL0ZMVVNIIHJlcXVlc3RzLgorCSAq IFNlbmQgRlVBIGFuZCBGTFVTSCByZXF1ZXN0cyBkaXJlY3RseSB0byB0aGUgaGFyZHdhcmUgZGlz cGF0Y2ggbGlzdC4KKwkgKiBUbyBkbzogYWxzbyBzZW5kIHJlcXVldWVkIHJlcXVlc3RzIGRpcmVj dGx5IHRvIHRoZSBodyBkaXNwIGxpc3QuCiAJICovCi0JaWYgKCFibGtfbXFfc2NoZWRfcnFfaXNf c2hhZG93KHJxKSkgeworCWlmIChycS0+Y21kX2ZsYWdzICYgKFJFUV9QUkVGTFVTSCB8IFJFUV9G VUEpKSB7CiAJCXNwaW5fbG9jaygmaGN0eC0+bG9jayk7CiAJCWxpc3RfYWRkX3RhaWwoJnJxLT5x dWV1ZWxpc3QsICZoY3R4LT5kaXNwYXRjaCk7CiAJCXNwaW5fdW5sb2NrKCZoY3R4LT5sb2NrKTsK QEAgLTQ1OSw2NyArNDUzLDYgQEAgc3RhdGljIHZvaWQgZGRfaW5zZXJ0X3JlcXVlc3RzKHN0cnVj dCBibGtfbXFfaHdfY3R4ICpoY3R4LAogCXNwaW5fdW5sb2NrKCZkZC0+bG9jayk7CiB9CiAKLXN0 YXRpYyBzdHJ1Y3QgcmVxdWVzdCAqZGRfZ2V0X3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUg KnEsIHVuc2lnbmVkIGludCBvcCwKLQkJCQkgICAgICBzdHJ1Y3QgYmxrX21xX2FsbG9jX2RhdGEg KmRhdGEpCi17Ci0Jc3RydWN0IGRlYWRsaW5lX2RhdGEgKmRkID0gcS0+ZWxldmF0b3ItPmVsZXZh dG9yX2RhdGE7Ci0Jc3RydWN0IHJlcXVlc3QgKnJxOwotCi0JLyoKLQkgKiBUaGUgZmx1c2ggbWFj aGluZXJ5IGludGVyY2VwdHMgYmVmb3JlIHdlIGluc2VydCB0aGUgcmVxdWVzdC4gQXMKLQkgKiBh IHdvcmstYXJvdW5kLCBqdXN0IGhhbmQgaXQgYmFjayBhIHJlYWwgcmVxdWVzdC4KLQkgKi8KLQlp ZiAodW5saWtlbHkob3AgJiAoUkVRX1BSRUZMVVNIIHwgUkVRX0ZVQSkpKQotCQlycSA9IF9fYmxr X21xX2FsbG9jX3JlcXVlc3QoZGF0YSwgb3ApOwotCWVsc2UgewotCQlycSA9IGJsa19tcV9zY2hl ZF9hbGxvY19zaGFkb3dfcmVxdWVzdChxLCBkYXRhLCBkZC0+dGFncywgJmRkLT53YWl0X2luZGV4 KTsKLQkJaWYgKHJxKQotCQkJYmxrX21xX3JxX2N0eF9pbml0KHEsIGRhdGEtPmN0eCwgcnEsIG9w KTsKLQl9Ci0KLQlyZXR1cm4gcnE7Ci19Ci0KLXN0YXRpYyBib29sIGRkX3B1dF9yZXF1ZXN0KHN0 cnVjdCByZXF1ZXN0ICpycSkKLXsKLQkvKgotCSAqIElmIGl0J3MgYSByZWFsIHJlcXVlc3QsIHdl IGp1c3QgaGF2ZSB0byBmcmVlIGl0LiBSZXR1cm4gZmFsc2UKLQkgKiB0byBzYXkgd2UgZGlkbid0 IGhhbmRsZSBpdCwgYW5kIGJsa19tcV9zY2hlZCB3aWxsIHRha2UgY2FyZSBvZiB0aGF0LgotCSAq LwotCWlmICghYmxrX21xX3NjaGVkX3JxX2lzX3NoYWRvdyhycSkpCi0JCXJldHVybiBmYWxzZTsK LQotCWlmICghKHJxLT5ycV9mbGFncyAmIFJRRl9TVEFSVEVEKSkgewotCQlzdHJ1Y3QgcmVxdWVz dF9xdWV1ZSAqcSA9IHJxLT5xOwotCQlzdHJ1Y3QgZGVhZGxpbmVfZGF0YSAqZGQgPSBxLT5lbGV2 YXRvci0+ZWxldmF0b3JfZGF0YTsKLQotCQkvKgotCQkgKiBJTyBjb21wbGV0aW9uIHdvdWxkIG5v cm1hbGx5IGRvIHRoaXMsIGJ1dCBpZiB3ZSBtZXJnZQotCQkgKiBhbmQgZnJlZSBiZWZvcmUgd2Ug aXNzdWUgdGhlIHJlcXVlc3QsIHdlIG5lZWQgdG8gZnJlZQotCQkgKiB0aGUgc2hhZG93IHRhZyBo ZXJlLgotCQkgKi8KLQkJYmxrX21xX3NjaGVkX2ZyZWVfc2hhZG93X3JlcXVlc3QoZGQtPnRhZ3Ms IHJxKTsKLQl9Ci0KLQlyZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgZGRfY29tcGxldGVk X3JlcXVlc3Qoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIHN0cnVjdCByZXF1ZXN0ICpycSkK LXsKLQlzdHJ1Y3QgcmVxdWVzdCAqc2NoZWRfcnEgPSBycS0+ZW5kX2lvX2RhdGE7Ci0KLQkvKgot CSAqIHNjaGVkX3JxIGNhbiBiZSBOVUxMLCBpZiB3ZSBoYXZlbid0IHNldHVwIHRoZSBzaGFkb3cg eWV0Ci0JICogYmVjYXVzZSB3ZSBmYWlsZWQgZ2V0dGluZyBvbmUuCi0JICovCi0JaWYgKHNjaGVk X3JxKSB7Ci0JCXN0cnVjdCBkZWFkbGluZV9kYXRhICpkZCA9IGhjdHgtPnF1ZXVlLT5lbGV2YXRv ci0+ZWxldmF0b3JfZGF0YTsKLQotCQlibGtfbXFfc2NoZWRfZnJlZV9zaGFkb3dfcmVxdWVzdChk ZC0+dGFncywgc2NoZWRfcnEpOwotCQlibGtfbXFfc3RhcnRfc3RvcHBlZF9od19xdWV1ZShoY3R4 LCB0cnVlKTsKLQl9Ci19Ci0KIHN0YXRpYyBib29sIGRkX2hhc193b3JrKHN0cnVjdCBibGtfbXFf aHdfY3R4ICpoY3R4KQogewogCXN0cnVjdCBkZWFkbGluZV9kYXRhICpkZCA9IGhjdHgtPnF1ZXVl LT5lbGV2YXRvci0+ZWxldmF0b3JfZGF0YTsKQEAgLTYwMSwxMSArNTM0LDggQEAgc3RhdGljIHN0 cnVjdCBlbHZfZnNfZW50cnkgZGVhZGxpbmVfYXR0cnNbXSA9IHsKIAogc3RhdGljIHN0cnVjdCBl bGV2YXRvcl90eXBlIG1xX2RlYWRsaW5lID0gewogCS5vcHMubXEgPSB7Ci0JCS5nZXRfcmVxdWVz dAkJPSBkZF9nZXRfcmVxdWVzdCwKLQkJLnB1dF9yZXF1ZXN0CQk9IGRkX3B1dF9yZXF1ZXN0LAog CQkuaW5zZXJ0X3JlcXVlc3RzCT0gZGRfaW5zZXJ0X3JlcXVlc3RzLAogCQkuZGlzcGF0Y2hfcmVx dWVzdHMJPSBkZF9kaXNwYXRjaF9yZXF1ZXN0cywKLQkJLmNvbXBsZXRlZF9yZXF1ZXN0CT0gZGRf Y29tcGxldGVkX3JlcXVlc3QsCiAJCS5uZXh0X3JlcXVlc3QJCT0gZWx2X3JiX2xhdHRlcl9yZXF1 ZXN0LAogCQkuZm9ybWVyX3JlcXVlc3QJCT0gZWx2X3JiX2Zvcm1lcl9yZXF1ZXN0LAogCQkuYmlv X21lcmdlCQk9IGRkX2Jpb19tZXJnZSwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZWxldmF0 b3IuaCBiL2luY2x1ZGUvbGludXgvZWxldmF0b3IuaAppbmRleCA2NDIyNGQzOWQ3MDcuLjMxMmU2 ZDNlODlmYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9lbGV2YXRvci5oCisrKyBiL2luY2x1 ZGUvbGludXgvZWxldmF0b3IuaApAQCAtODksMTIgKzg5LDkgQEAgc3RydWN0IGVsZXZhdG9yX21x X29wcyB7CiAJaW50ICgqcmVxdWVzdF9tZXJnZSkoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0 cnVjdCByZXF1ZXN0ICoqLCBzdHJ1Y3QgYmlvICopOwogCXZvaWQgKCpyZXF1ZXN0X21lcmdlZCko c3RydWN0IHJlcXVlc3RfcXVldWUgKiwgc3RydWN0IHJlcXVlc3QgKiwgaW50KTsKIAl2b2lkICgq cmVxdWVzdHNfbWVyZ2VkKShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqLCBzdHJ1Y3QgcmVxdWVzdCAq LCBzdHJ1Y3QgcmVxdWVzdCAqKTsKLQlzdHJ1Y3QgcmVxdWVzdCAqKCpnZXRfcmVxdWVzdCkoc3Ry dWN0IHJlcXVlc3RfcXVldWUgKiwgdW5zaWduZWQgaW50LCBzdHJ1Y3QgYmxrX21xX2FsbG9jX2Rh dGEgKik7Ci0JYm9vbCAoKnB1dF9yZXF1ZXN0KShzdHJ1Y3QgcmVxdWVzdCAqKTsKIAl2b2lkICgq aW5zZXJ0X3JlcXVlc3RzKShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqLCBzdHJ1Y3QgbGlzdF9oZWFk ICosIGJvb2wpOwogCXZvaWQgKCpkaXNwYXRjaF9yZXF1ZXN0cykoc3RydWN0IGJsa19tcV9od19j dHggKiwgc3RydWN0IGxpc3RfaGVhZCAqKTsKIAlib29sICgqaGFzX3dvcmspKHN0cnVjdCBibGtf bXFfaHdfY3R4ICopOwotCXZvaWQgKCpjb21wbGV0ZWRfcmVxdWVzdCkoc3RydWN0IGJsa19tcV9o d19jdHggKiwgc3RydWN0IHJlcXVlc3QgKik7CiAJdm9pZCAoKnN0YXJ0ZWRfcmVxdWVzdCkoc3Ry dWN0IHJlcXVlc3QgKik7CiAJdm9pZCAoKnJlcXVldWVfcmVxdWVzdCkoc3RydWN0IHJlcXVlc3Qg Kik7CiAJc3RydWN0IHJlcXVlc3QgKigqZm9ybWVyX3JlcXVlc3QpKHN0cnVjdCByZXF1ZXN0X3F1 ZXVlICosIHN0cnVjdCByZXF1ZXN0ICopOwotLSAKMi4xMS4wCgo= --_004_148242377526826camelsandiskcom_ Content-Type: text/x-patch; name="0002-blk-mq-Make-the-blk_mq_-get-put-_tag-callers-specify.patch" Content-Description: 0002-blk-mq-Make-the-blk_mq_-get-put-_tag-callers-specify.patch Content-Disposition: attachment; filename="0002-blk-mq-Make-the-blk_mq_-get-put-_tag-callers-specify.patch"; size=9820; creation-date="Thu, 22 Dec 2016 16:23:23 GMT"; modification-date="Thu, 22 Dec 2016 16:23:23 GMT" Content-ID: <35F9B5CBAA1FFF4192967EEFE7B61B36@sandisk.com> Content-Transfer-Encoding: base64 RnJvbSBhZTcyYmI5ZjY3ZDAxYjNhMDJjZWU4MGM4MWE3MTJmNzc1ZDEzYzMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCYXJ0IFZhbiBBc3NjaGUgPGJhcnQudmFuYXNzY2hlQHNhbmRp c2suY29tPgpEYXRlOiBUdWUsIDIwIERlYyAyMDE2IDEyOjAwOjQ3ICswMTAwClN1YmplY3Q6IFtQ QVRDSCAyLzNdIGJsay1tcTogTWFrZSB0aGUgYmxrX21xX3tnZXQscHV0fV90YWcoKSBjYWxsZXJz IHNwZWNpZnkKIHRoZSB0YWcgc2V0CgpUaGlzIHBhdGNoIGRvZXMgbm90IGNoYW5nZSBhbnkgZnVu Y3Rpb25hbGl0eS4KLS0tCiBibG9jay9ibGstbXEtdGFnLmMgfCAyOSArKysrKysrKysrLS0tLS0t LS0tLQogYmxvY2svYmxrLW1xLXRhZy5oIHwgIDcgKysrLS0KIGJsb2NrL2Jsay1tcS5jICAgICB8 IDgwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LQogYmxvY2svYmxrLW1xLmggICAgIHwgIDkgKysrKy0tCiA0IGZpbGVzIGNoYW5nZWQsIDc3IGlu c2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1tcS10 YWcuYyBiL2Jsb2NrL2Jsay1tcS10YWcuYwppbmRleCBkY2Y1Y2UzYmE0YmYuLjg5MGQ2MzRkYjBl ZSAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLW1xLXRhZy5jCisrKyBiL2Jsb2NrL2Jsay1tcS10YWcu YwpAQCAtMTU2LDQ3ICsxNTYsNDYgQEAgc3RhdGljIGludCBidF9nZXQoc3RydWN0IGJsa19tcV9h bGxvY19kYXRhICpkYXRhLCBzdHJ1Y3Qgc2JpdG1hcF9xdWV1ZSAqYnQsCiAJcmV0dXJuIHRhZzsK IH0KIAotc3RhdGljIHVuc2lnbmVkIGludCBfX2Jsa19tcV9nZXRfdGFnKHN0cnVjdCBibGtfbXFf YWxsb2NfZGF0YSAqZGF0YSkKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19ibGtfbXFfZ2V0X3RhZyhz dHJ1Y3QgYmxrX21xX2FsbG9jX2RhdGEgKmRhdGEsCisJCQkJICAgICBzdHJ1Y3QgYmxrX21xX3Rh Z3MgKnRhZ3MpCiB7CiAJaW50IHRhZzsKIAotCXRhZyA9IGJ0X2dldChkYXRhLCAmZGF0YS0+aGN0 eC0+dGFncy0+Yml0bWFwX3RhZ3MsIGRhdGEtPmhjdHgsCi0JCSAgICAgZGF0YS0+aGN0eC0+dGFn cyk7CisJdGFnID0gYnRfZ2V0KGRhdGEsICZ0YWdzLT5iaXRtYXBfdGFncywgZGF0YS0+aGN0eCwg dGFncyk7CiAJaWYgKHRhZyA+PSAwKQotCQlyZXR1cm4gdGFnICsgZGF0YS0+aGN0eC0+dGFncy0+ bnJfcmVzZXJ2ZWRfdGFnczsKKwkJcmV0dXJuIHRhZyArIHRhZ3MtPm5yX3Jlc2VydmVkX3RhZ3M7 CiAKIAlyZXR1cm4gQkxLX01RX1RBR19GQUlMOwogfQogCi1zdGF0aWMgdW5zaWduZWQgaW50IF9f YmxrX21xX2dldF9yZXNlcnZlZF90YWcoc3RydWN0IGJsa19tcV9hbGxvY19kYXRhICpkYXRhKQor c3RhdGljIHVuc2lnbmVkIGludCBfX2Jsa19tcV9nZXRfcmVzZXJ2ZWRfdGFnKHN0cnVjdCBibGtf bXFfYWxsb2NfZGF0YSAqZGF0YSwKKwkJCQkJICAgICAgc3RydWN0IGJsa19tcV90YWdzICp0YWdz KQogewogCWludCB0YWc7CiAKLQlpZiAodW5saWtlbHkoIWRhdGEtPmhjdHgtPnRhZ3MtPm5yX3Jl c2VydmVkX3RhZ3MpKSB7CisJaWYgKHVubGlrZWx5KCF0YWdzLT5ucl9yZXNlcnZlZF90YWdzKSkg ewogCQlXQVJOX09OX09OQ0UoMSk7CiAJCXJldHVybiBCTEtfTVFfVEFHX0ZBSUw7CiAJfQogCi0J dGFnID0gYnRfZ2V0KGRhdGEsICZkYXRhLT5oY3R4LT50YWdzLT5icmVzZXJ2ZWRfdGFncywgTlVM TCwKLQkJICAgICBkYXRhLT5oY3R4LT50YWdzKTsKKwl0YWcgPSBidF9nZXQoZGF0YSwgJnRhZ3Mt PmJyZXNlcnZlZF90YWdzLCBOVUxMLCB0YWdzKTsKIAlpZiAodGFnIDwgMCkKIAkJcmV0dXJuIEJM S19NUV9UQUdfRkFJTDsKIAogCXJldHVybiB0YWc7CiB9CiAKLXVuc2lnbmVkIGludCBibGtfbXFf Z2V0X3RhZyhzdHJ1Y3QgYmxrX21xX2FsbG9jX2RhdGEgKmRhdGEpCit1bnNpZ25lZCBpbnQgYmxr X21xX2dldF90YWcoc3RydWN0IGJsa19tcV9hbGxvY19kYXRhICpkYXRhLAorCQkJICAgIHN0cnVj dCBibGtfbXFfdGFncyAqdGFncykKIHsKIAlpZiAoZGF0YS0+ZmxhZ3MgJiBCTEtfTVFfUkVRX1JF U0VSVkVEKQotCQlyZXR1cm4gX19ibGtfbXFfZ2V0X3Jlc2VydmVkX3RhZyhkYXRhKTsKLQlyZXR1 cm4gX19ibGtfbXFfZ2V0X3RhZyhkYXRhKTsKKwkJcmV0dXJuIF9fYmxrX21xX2dldF9yZXNlcnZl ZF90YWcoZGF0YSwgdGFncyk7CisJcmV0dXJuIF9fYmxrX21xX2dldF90YWcoZGF0YSwgdGFncyk7 CiB9CiAKLXZvaWQgYmxrX21xX3B1dF90YWcoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIHN0 cnVjdCBibGtfbXFfY3R4ICpjdHgsCi0JCSAgICB1bnNpZ25lZCBpbnQgdGFnKQordm9pZCBibGtf bXFfcHV0X3RhZyhzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgc3RydWN0IGJsa19tcV90YWdz ICp0YWdzLAorCQkgICAgc3RydWN0IGJsa19tcV9jdHggKmN0eCwgdW5zaWduZWQgaW50IHRhZykK IHsKLQlzdHJ1Y3QgYmxrX21xX3RhZ3MgKnRhZ3MgPSBoY3R4LT50YWdzOwotCiAJaWYgKHRhZyA+ PSB0YWdzLT5ucl9yZXNlcnZlZF90YWdzKSB7CiAJCWNvbnN0IGludCByZWFsX3RhZyA9IHRhZyAt IHRhZ3MtPm5yX3Jlc2VydmVkX3RhZ3M7CiAKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1tcS10YWcu aCBiL2Jsb2NrL2Jsay1tcS10YWcuaAppbmRleCBkMTY2MjczNGRjNTMuLjg0MTg2YTExZDJlMCAx MDA2NDQKLS0tIGEvYmxvY2svYmxrLW1xLXRhZy5oCisrKyBiL2Jsb2NrL2Jsay1tcS10YWcuaApA QCAtMjMsOSArMjMsMTAgQEAgc3RydWN0IGJsa19tcV90YWdzIHsKIGV4dGVybiBzdHJ1Y3QgYmxr X21xX3RhZ3MgKmJsa19tcV9pbml0X3RhZ3ModW5zaWduZWQgaW50IG5yX3RhZ3MsIHVuc2lnbmVk IGludCByZXNlcnZlZF90YWdzLCBpbnQgbm9kZSwgaW50IGFsbG9jX3BvbGljeSk7CiBleHRlcm4g dm9pZCBibGtfbXFfZnJlZV90YWdzKHN0cnVjdCBibGtfbXFfdGFncyAqdGFncyk7CiAKLWV4dGVy biB1bnNpZ25lZCBpbnQgYmxrX21xX2dldF90YWcoc3RydWN0IGJsa19tcV9hbGxvY19kYXRhICpk YXRhKTsKLWV4dGVybiB2b2lkIGJsa19tcV9wdXRfdGFnKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpo Y3R4LCBzdHJ1Y3QgYmxrX21xX2N0eCAqY3R4LAotCQkJICAgdW5zaWduZWQgaW50IHRhZyk7Citl eHRlcm4gdW5zaWduZWQgaW50IGJsa19tcV9nZXRfdGFnKHN0cnVjdCBibGtfbXFfYWxsb2NfZGF0 YSAqZGF0YSwKKwkJCQkgICBzdHJ1Y3QgYmxrX21xX3RhZ3MgKnRhZ3MpOworZXh0ZXJuIHZvaWQg YmxrX21xX3B1dF90YWcoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIHN0cnVjdCBibGtfbXFf dGFncyAqdGFncywKKwkJCSAgIHN0cnVjdCBibGtfbXFfY3R4ICpjdHgsIHVuc2lnbmVkIGludCB0 YWcpOwogZXh0ZXJuIGJvb2wgYmxrX21xX2hhc19mcmVlX3RhZ3Moc3RydWN0IGJsa19tcV90YWdz ICp0YWdzKTsKIGV4dGVybiBzc2l6ZV90IGJsa19tcV90YWdfc3lzZnNfc2hvdyhzdHJ1Y3QgYmxr X21xX3RhZ3MgKnRhZ3MsIGNoYXIgKnBhZ2UpOwogZXh0ZXJuIGludCBibGtfbXFfdGFnX3VwZGF0 ZV9kZXB0aChzdHJ1Y3QgYmxrX21xX3RhZ3MgKnRhZ3MsIHVuc2lnbmVkIGludCBkZXB0aCk7CmRp ZmYgLS1naXQgYS9ibG9jay9ibGstbXEuYyBiL2Jsb2NrL2Jsay1tcS5jCmluZGV4IDM1ZTExNjI2 MDJmNS4uYjY4YjdmYzQzZTQ2IDEwMDY0NAotLS0gYS9ibG9jay9ibGstbXEuYworKysgYi9ibG9j ay9ibGstbXEuYwpAQCAtMjIwLDEyICsyMjAsMTMgQEAgRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21x X3JxX2N0eF9pbml0KTsKIHN0cnVjdCByZXF1ZXN0ICpfX2Jsa19tcV9hbGxvY19yZXF1ZXN0KHN0 cnVjdCBibGtfbXFfYWxsb2NfZGF0YSAqZGF0YSwKIAkJCQkgICAgICAgdW5zaWduZWQgaW50IG9w KQogeworCXN0cnVjdCBibGtfbXFfdGFncyAqdGFncyA9IGRhdGEtPmhjdHgtPnRhZ3M7CiAJc3Ry dWN0IHJlcXVlc3QgKnJxOwogCXVuc2lnbmVkIGludCB0YWc7CiAKLQl0YWcgPSBibGtfbXFfZ2V0 X3RhZyhkYXRhKTsKKwl0YWcgPSBibGtfbXFfZ2V0X3RhZyhkYXRhLCB0YWdzKTsKIAlpZiAodGFn ICE9IEJMS19NUV9UQUdfRkFJTCkgewotCQlycSA9IGRhdGEtPmhjdHgtPnRhZ3MtPnJxc1t0YWdd OworCQlycSA9IHRhZ3MtPnJxc1t0YWddOwogCiAJCWlmIChibGtfbXFfdGFnX2J1c3koZGF0YS0+ aGN0eCkpIHsKIAkJCXJxLT5ycV9mbGFncyA9IFJRRl9NUV9JTkZMSUdIVDsKQEAgLTMzOSw3ICsz NDAsNyBAQCB2b2lkIF9fYmxrX21xX2ZpbmlzaF9yZXF1ZXN0KHN0cnVjdCBibGtfbXFfaHdfY3R4 ICpoY3R4LCBzdHJ1Y3QgYmxrX21xX2N0eCAqY3R4LAogCiAJY2xlYXJfYml0KFJFUV9BVE9NX1NU QVJURUQsICZycS0+YXRvbWljX2ZsYWdzKTsKIAljbGVhcl9iaXQoUkVRX0FUT01fUE9MTF9TTEVQ VCwgJnJxLT5hdG9taWNfZmxhZ3MpOwotCWJsa19tcV9wdXRfdGFnKGhjdHgsIGN0eCwgdGFnKTsK KwlibGtfbXFfcHV0X3RhZyhoY3R4LCBoY3R4LT50YWdzLCBjdHgsIHRhZyk7CiAJYmxrX3F1ZXVl X2V4aXQocSk7CiB9CiAKQEAgLTE1NTQsOCArMTU1NSw4IEBAIHN0YXRpYyBibGtfcWNfdCBibGtf c3FfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8p CiAJcmV0dXJuIGNvb2tpZTsKIH0KIAotdm9pZCBibGtfbXFfZnJlZV9ycV9tYXAoc3RydWN0IGJs a19tcV90YWdfc2V0ICpzZXQsIHN0cnVjdCBibGtfbXFfdGFncyAqdGFncywKLQkJCXVuc2lnbmVk IGludCBoY3R4X2lkeCkKK3ZvaWQgYmxrX21xX2ZyZWVfcnFzKHN0cnVjdCBibGtfbXFfdGFnX3Nl dCAqc2V0LCBzdHJ1Y3QgYmxrX21xX3RhZ3MgKnRhZ3MsCisJCSAgICAgdW5zaWduZWQgaW50IGhj dHhfaWR4KQogewogCXN0cnVjdCBwYWdlICpwYWdlOwogCkBAIC0xNTgxLDIzICsxNTgyLDE5IEBA IHZvaWQgYmxrX21xX2ZyZWVfcnFfbWFwKHN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0LCBzdHJ1 Y3QgYmxrX21xX3RhZ3MgKnRhZ3MsCiAJCWttZW1sZWFrX2ZyZWUocGFnZV9hZGRyZXNzKHBhZ2Up KTsKIAkJX19mcmVlX3BhZ2VzKHBhZ2UsIHBhZ2UtPnByaXZhdGUpOwogCX0KK30KIAordm9pZCBi bGtfbXFfZnJlZV9ycV9tYXAoc3RydWN0IGJsa19tcV90YWdzICp0YWdzKQorewogCWtmcmVlKHRh Z3MtPnJxcyk7CiAKIAlibGtfbXFfZnJlZV90YWdzKHRhZ3MpOwogfQogCi1zdGF0aWMgc2l6ZV90 IG9yZGVyX3RvX3NpemUodW5zaWduZWQgaW50IG9yZGVyKQotewotCXJldHVybiAoc2l6ZV90KVBB R0VfU0laRSA8PCBvcmRlcjsKLX0KLQotc3RydWN0IGJsa19tcV90YWdzICpibGtfbXFfaW5pdF9y cV9tYXAoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQsCi0JCQkJICAgICAgIHVuc2lnbmVkIGlu dCBoY3R4X2lkeCkKK3N0cnVjdCBibGtfbXFfdGFncyAqYmxrX21xX2FsbG9jX3JxX21hcChzdHJ1 Y3QgYmxrX21xX3RhZ19zZXQgKnNldCwKKwkJCQkJdW5zaWduZWQgaW50IGhjdHhfaWR4KQogewog CXN0cnVjdCBibGtfbXFfdGFncyAqdGFnczsKLQl1bnNpZ25lZCBpbnQgaSwgaiwgZW50cmllc19w ZXJfcGFnZSwgbWF4X29yZGVyID0gNDsKLQlzaXplX3QgcnFfc2l6ZSwgbGVmdDsKIAogCXRhZ3Mg PSBibGtfbXFfaW5pdF90YWdzKHNldC0+cXVldWVfZGVwdGgsIHNldC0+cmVzZXJ2ZWRfdGFncywK IAkJCQlzZXQtPm51bWFfbm9kZSwKQEAgLTE2MDUsOCArMTYwMiw2IEBAIHN0cnVjdCBibGtfbXFf dGFncyAqYmxrX21xX2luaXRfcnFfbWFwKHN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0LAogCWlm ICghdGFncykKIAkJcmV0dXJuIE5VTEw7CiAKLQlJTklUX0xJU1RfSEVBRCgmdGFncy0+cGFnZV9s aXN0KTsKLQogCXRhZ3MtPnJxcyA9IGt6YWxsb2Nfbm9kZShzZXQtPnF1ZXVlX2RlcHRoICogc2l6 ZW9mKHN0cnVjdCByZXF1ZXN0ICopLAogCQkJCSBHRlBfTk9JTyB8IF9fR0ZQX05PV0FSTiB8IF9f R0ZQX05PUkVUUlksCiAJCQkJIHNldC0+bnVtYV9ub2RlKTsKQEAgLTE2MTUsNiArMTYxMCwyMiBA QCBzdHJ1Y3QgYmxrX21xX3RhZ3MgKmJsa19tcV9pbml0X3JxX21hcChzdHJ1Y3QgYmxrX21xX3Rh Z19zZXQgKnNldCwKIAkJcmV0dXJuIE5VTEw7CiAJfQogCisJcmV0dXJuIHRhZ3M7Cit9CisKK3N0 YXRpYyBzaXplX3Qgb3JkZXJfdG9fc2l6ZSh1bnNpZ25lZCBpbnQgb3JkZXIpCit7CisJcmV0dXJu IChzaXplX3QpUEFHRV9TSVpFIDw8IG9yZGVyOworfQorCitpbnQgYmxrX21xX2FsbG9jX3Jxcyhz dHJ1Y3QgYmxrX21xX3RhZ19zZXQgKnNldCwgc3RydWN0IGJsa19tcV90YWdzICp0YWdzLAorCQkg ICAgIHVuc2lnbmVkIGludCBoY3R4X2lkeCkKK3sKKwl1bnNpZ25lZCBpbnQgaSwgaiwgZW50cmll c19wZXJfcGFnZSwgbWF4X29yZGVyID0gNDsKKwlzaXplX3QgcnFfc2l6ZSwgbGVmdDsKKworCUlO SVRfTElTVF9IRUFEKCZ0YWdzLT5wYWdlX2xpc3QpOworCiAJLyoKIAkgKiBycV9zaXplIGlzIHRo ZSBzaXplIG9mIHRoZSByZXF1ZXN0IHBsdXMgZHJpdmVyIHBheWxvYWQsIHJvdW5kZWQKIAkgKiB0 byB0aGUgY2FjaGVsaW5lIHNpemUKQEAgLTE2NzQsMTEgKzE2ODUsMTEgQEAgc3RydWN0IGJsa19t cV90YWdzICpibGtfbXFfaW5pdF9ycV9tYXAoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQsCiAJ CQlpKys7CiAJCX0KIAl9Ci0JcmV0dXJuIHRhZ3M7CisJcmV0dXJuIDA7CiAKIGZhaWw6Ci0JYmxr X21xX2ZyZWVfcnFfbWFwKHNldCwgdGFncywgaGN0eF9pZHgpOwotCXJldHVybiBOVUxMOworCWJs a19tcV9mcmVlX3JxcyhzZXQsIHRhZ3MsIGhjdHhfaWR4KTsKKwlyZXR1cm4gLUVOT01FTTsKIH0K IAogLyoKQEAgLTE4OTksNyArMTkxMCwxMyBAQCBzdGF0aWMgdm9pZCBibGtfbXFfbWFwX3N3cXVl dWUoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsCiAJCWhjdHhfaWR4ID0gcS0+bXFfbWFwW2ldOwog CQkvKiB1bm1hcHBlZCBodyBxdWV1ZSBjYW4gYmUgcmVtYXBwZWQgYWZ0ZXIgQ1BVIHRvcG8gY2hh bmdlZCAqLwogCQlpZiAoIXNldC0+dGFnc1toY3R4X2lkeF0pIHsKLQkJCXNldC0+dGFnc1toY3R4 X2lkeF0gPSBibGtfbXFfaW5pdF9ycV9tYXAoc2V0LCBoY3R4X2lkeCk7CisJCQlzZXQtPnRhZ3Nb aGN0eF9pZHhdID0gYmxrX21xX2FsbG9jX3JxX21hcChzZXQsCisJCQkJCQkJCSAgaGN0eF9pZHgp OworCQkJaWYgKGJsa19tcV9hbGxvY19ycXMoc2V0LCBzZXQtPnRhZ3NbaGN0eF9pZHhdLAorCQkJ CQkgICAgIGhjdHhfaWR4KSA8IDApIHsKKwkJCQlibGtfbXFfZnJlZV9ycV9tYXAoc2V0LT50YWdz W2hjdHhfaWR4XSk7CisJCQkJc2V0LT50YWdzW2hjdHhfaWR4XSA9IE5VTEw7CisJCQl9CiAKIAkJ CS8qCiAJCQkgKiBJZiB0YWdzIGluaXRpYWxpemF0aW9uIGZhaWwgZm9yIHNvbWUgaGN0eCwKQEAg LTE5MzIsNyArMTk0OSw4IEBAIHN0YXRpYyB2b2lkIGJsa19tcV9tYXBfc3dxdWV1ZShzdHJ1Y3Qg cmVxdWVzdF9xdWV1ZSAqcSwKIAkJCSAqIGFsbG9jYXRpb24KIAkJCSAqLwogCQkJaWYgKGkgJiYg c2V0LT50YWdzW2ldKSB7Ci0JCQkJYmxrX21xX2ZyZWVfcnFfbWFwKHNldCwgc2V0LT50YWdzW2ld LCBpKTsKKwkJCQlibGtfbXFfZnJlZV9ycXMoc2V0LCBzZXQtPnRhZ3NbaV0sIGkpOworCQkJCWJs a19tcV9mcmVlX3JxX21hcChzZXQtPnRhZ3NbaV0pOwogCQkJCXNldC0+dGFnc1tpXSA9IE5VTEw7 CiAJCQl9CiAJCQloY3R4LT50YWdzID0gTlVMTDsKQEAgLTIxMDIsNyArMjEyMCw4IEBAIHN0YXRp YyB2b2lkIGJsa19tcV9yZWFsbG9jX2h3X2N0eHMoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQs CiAKIAkJaWYgKGhjdHgpIHsKIAkJCWlmIChoY3R4LT50YWdzKSB7Ci0JCQkJYmxrX21xX2ZyZWVf cnFfbWFwKHNldCwgaGN0eC0+dGFncywgaik7CisJCQkJYmxrX21xX2ZyZWVfcnFzKHNldCwgc2V0 LT50YWdzW2pdLCBqKTsKKwkJCQlibGtfbXFfZnJlZV9ycV9tYXAoaGN0eC0+dGFncyk7CiAJCQkJ c2V0LT50YWdzW2pdID0gTlVMTDsKIAkJCX0KIAkJCWJsa19tcV9leGl0X2hjdHgocSwgc2V0LCBo Y3R4LCBqKTsKQEAgLTIzMDQsMTYgKzIzMjMsMjEgQEAgc3RhdGljIGludCBfX2Jsa19tcV9hbGxv Y19ycV9tYXBzKHN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0KQogCWludCBpOwogCiAJZm9yIChp ID0gMDsgaSA8IHNldC0+bnJfaHdfcXVldWVzOyBpKyspIHsKLQkJc2V0LT50YWdzW2ldID0gYmxr X21xX2luaXRfcnFfbWFwKHNldCwgaSk7CisJCXNldC0+dGFnc1tpXSA9IGJsa19tcV9hbGxvY19y cV9tYXAoc2V0LCBpKTsKIAkJaWYgKCFzZXQtPnRhZ3NbaV0pCiAJCQlnb3RvIG91dF91bndpbmQ7 CisJCWlmIChibGtfbXFfYWxsb2NfcnFzKHNldCwgc2V0LT50YWdzW2ldLCBpKSA8IDApCisJCQln b3RvIGZyZWVfcnFfbWFwOwogCX0KIAogCXJldHVybiAwOwogCiBvdXRfdW53aW5kOgotCXdoaWxl ICgtLWkgPj0gMCkKLQkJYmxrX21xX2ZyZWVfcnFfbWFwKHNldCwgc2V0LT50YWdzW2ldLCBpKTsK Kwl3aGlsZSAoLS1pID49IDApIHsKKwkJYmxrX21xX2ZyZWVfcnFzKHNldCwgc2V0LT50YWdzW2ld LCBpKTsKK2ZyZWVfcnFfbWFwOgorCQlibGtfbXFfZnJlZV9ycV9tYXAoc2V0LT50YWdzW2ldKTsK Kwl9CiAKIAlyZXR1cm4gLUVOT01FTTsKIH0KQEAgLTI0MzgsOCArMjQ2MiwxMCBAQCB2b2lkIGJs a19tcV9mcmVlX3RhZ19zZXQoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpCiAJaW50IGk7CiAK IAlmb3IgKGkgPSAwOyBpIDwgbnJfY3B1X2lkczsgaSsrKSB7Ci0JCWlmIChzZXQtPnRhZ3NbaV0p Ci0JCQlibGtfbXFfZnJlZV9ycV9tYXAoc2V0LCBzZXQtPnRhZ3NbaV0sIGkpOworCQlpZiAoc2V0 LT50YWdzW2ldKSB7CisJCQlibGtfbXFfZnJlZV9ycXMoc2V0LCBzZXQtPnRhZ3NbaV0sIGkpOwor CQkJYmxrX21xX2ZyZWVfcnFfbWFwKHNldC0+dGFnc1tpXSk7CisJCX0KIAl9CiAKIAlrZnJlZShz ZXQtPm1xX21hcCk7CmRpZmYgLS1naXQgYS9ibG9jay9ibGstbXEuaCBiL2Jsb2NrL2Jsay1tcS5o CmluZGV4IDg5OGMzYzlhNjBlYy4uMmU5OGRkOGNjZWUyIDEwMDY0NAotLS0gYS9ibG9jay9ibGst bXEuaAorKysgYi9ibG9jay9ibGstbXEuaApAQCAtMzcsMTAgKzM3LDEzIEBAIHZvaWQgYmxrX21x X2ZsdXNoX2J1c3lfY3R4cyhzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgc3RydWN0IGxpc3Rf aGVhZCAqbGlzdCk7CiAvKgogICogSW50ZXJuYWwgaGVscGVycyBmb3IgYWxsb2NhdGluZy9mcmVl aW5nIHRoZSByZXF1ZXN0IG1hcAogICovCi12b2lkIGJsa19tcV9mcmVlX3JxX21hcChzdHJ1Y3Qg YmxrX21xX3RhZ19zZXQgKnNldCwgc3RydWN0IGJsa19tcV90YWdzICp0YWdzLAotCQkJdW5zaWdu ZWQgaW50IGhjdHhfaWR4KTsKLXN0cnVjdCBibGtfbXFfdGFncyAqYmxrX21xX2luaXRfcnFfbWFw KHN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0LAordm9pZCBibGtfbXFfZnJlZV9ycXMoc3RydWN0 IGJsa19tcV90YWdfc2V0ICpzZXQsIHN0cnVjdCBibGtfbXFfdGFncyAqdGFncywKKwkJICAgICB1 bnNpZ25lZCBpbnQgaGN0eF9pZHgpOwordm9pZCBibGtfbXFfZnJlZV9ycV9tYXAoc3RydWN0IGJs a19tcV90YWdzICp0YWdzKTsKK3N0cnVjdCBibGtfbXFfdGFncyAqYmxrX21xX2FsbG9jX3JxX21h cChzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgKnNldCwKIAkJCQkJdW5zaWduZWQgaW50IGhjdHhfaWR4 KTsKK2ludCBibGtfbXFfYWxsb2NfcnFzKHN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0LCBzdHJ1 Y3QgYmxrX21xX3RhZ3MgKnRhZ3MsCisJCSAgICAgdW5zaWduZWQgaW50IGhjdHhfaWR4KTsKIAog LyoKICAqIEludGVybmFsIGhlbHBlcnMgZm9yIHJlcXVlc3QgaW5zZXJ0aW9uIGludG8gc3cgcXVl dWVzCi0tIAoyLjExLjAKCg== --_004_148242377526826camelsandiskcom_ Content-Type: text/x-patch; name="0003-blk-mq-Split-driver-and-scheduler-tags.patch" Content-Description: 0003-blk-mq-Split-driver-and-scheduler-tags.patch Content-Disposition: attachment; filename="0003-blk-mq-Split-driver-and-scheduler-tags.patch"; size=14364; creation-date="Thu, 22 Dec 2016 16:23:23 GMT"; modification-date="Thu, 22 Dec 2016 16:23:23 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSBjNDllYzRlOGIwZTQxMzVhODdjOTg5NDU5NzkwMTUzOWYzZTNjYTA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCYXJ0IFZhbiBBc3NjaGUgPGJhcnQudmFuYXNzY2hlQHNhbmRp c2suY29tPgpEYXRlOiBXZWQsIDIxIERlYyAyMDE2IDEyOjM5OjMzICswMTAwClN1YmplY3Q6IFtQ QVRDSCAzLzNdIGJsay1tcTogU3BsaXQgZHJpdmVyIGFuZCBzY2hlZHVsZXIgdGFncwoKQWRkICdz Y2hlZF90YWdzJyBuZXh0IHRvICd0YWdzJyBpbiBzdHJ1Y3QgYmxrX21xX2h3X2N0eCBhbmQgYWxz bwppbiBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQuIEFkZCAnc2NoZWRfdGFnJyBuZXh0IHRvICd0YWcn IGluIHN0cnVjdApyZXF1ZXN0LiBNb2RpZnkgYmxrX21xX3VwZGF0ZV9ucl9yZXF1ZXN0cygpIHN1 Y2ggdGhhdCBpdCBhY2NlcHRzCnZhbHVlcyBsYXJnZXIgdGhhbiB0aGUgcXVldWUgZGVwdGguIE1h a2UgX19ibGtfbXFfZnJlZV9yZXF1ZXN0KCkKZnJlZSBib3RoIHRhZ3MuIE1ha2UgYmxrX21xX2Fs bG9jX3RhZ19zZXQoKSBhbGxvY2F0ZSBib3RoIHRhZyBzZXRzLgpNYWtlIGJsa19tcV9mcmVlX3Rh Z19zZXQoKSBmcmVlIGJvdGggdGFnIHNldHMuIE1ha2UKYmxrX21xX2Rpc3BhdGNoX3JxX2xpc3Qo KSBhbGxvY2F0ZSB0aGUgZHJpdmVyIHRhZy4gTW9kaWZ5CmJsa19tcV91cGRhdGVfbnJfcmVxdWVz dHMoKSBzdWNoIHRoYXQgaXQgYWNjZXB0cyBhIHNpemUgdGhhdApleGNlZWRzIHRoZSBxdWV1ZSBk ZXB0aC4KLS0tCiBibG9jay9ibGstZmx1c2guYyAgICAgIHwgICA5ICsrLQogYmxvY2svYmxrLW1x LmMgICAgICAgICB8IDE2MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tCiBibG9jay9ibGstbXEuaCAgICAgICAgIHwgICA1ICstCiBibG9jay9ibGstdGFn LmMgICAgICAgIHwgICAxICsKIGluY2x1ZGUvbGludXgvYmxrLW1xLmggfCAgIDIgKwogaW5jbHVk ZS9saW51eC9ibGtkZXYuaCB8ICAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDEyOSBpbnNlcnRpb25z KCspLCA0OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ibG9jay9ibGstZmx1c2guYyBiL2Js b2NrL2Jsay1mbHVzaC5jCmluZGV4IDZhN2MyOWQyZWIzYy4uNDZkMTJiYmZkZTg1IDEwMDY0NAot LS0gYS9ibG9jay9ibGstZmx1c2guYworKysgYi9ibG9jay9ibGstZmx1c2guYwpAQCAtMTcwLDYg KzE3MCw4IEBAIHN0YXRpYyBib29sIGJsa19mbHVzaF9jb21wbGV0ZV9zZXEoc3RydWN0IHJlcXVl c3QgKnJxLAogCXN0cnVjdCBsaXN0X2hlYWQgKnBlbmRpbmcgPSAmZnEtPmZsdXNoX3F1ZXVlW2Zx LT5mbHVzaF9wZW5kaW5nX2lkeF07CiAJYm9vbCBxdWV1ZWQgPSBmYWxzZSwga2lja2VkOwogCisJ QlVHX09OKHJxLT50YWcgPCAwKTsKKwogCUJVR19PTihycS0+Zmx1c2guc2VxICYgc2VxKTsKIAly cS0+Zmx1c2guc2VxIHw9IHNlcTsKIApAQCAtMzE5LDYgKzMyMSw4IEBAIHN0YXRpYyBib29sIGJs a19raWNrX2ZsdXNoKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmxrX2ZsdXNoX3F1 ZXVlICpmcSkKIAlpZiAocS0+bXFfb3BzKSB7CiAJCXN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4 OwogCisJCUJVR19PTihmaXJzdF9ycS0+dGFnIDwgMCk7CisKIAkJZmx1c2hfcnEtPm1xX2N0eCA9 IGZpcnN0X3JxLT5tcV9jdHg7CiAJCWZsdXNoX3JxLT50YWcgPSBmaXJzdF9ycS0+dGFnOwogCQlm cS0+b3JpZ19ycSA9IGZpcnN0X3JxOwpAQCAtNDUyLDggKzQ1Niw5IEBAIHZvaWQgYmxrX2luc2Vy dF9mbHVzaChzdHJ1Y3QgcmVxdWVzdCAqcnEpCiAJICogcHJvY2Vzc2VkIGRpcmVjdGx5IHdpdGhv dXQgZ29pbmcgdGhyb3VnaCBmbHVzaCBtYWNoaW5lcnkuICBRdWV1ZQogCSAqIGZvciBub3JtYWwg ZXhlY3V0aW9uLgogCSAqLwotCWlmICgocG9saWN5ICYgUkVRX0ZTRVFfREFUQSkgJiYKLQkgICAg IShwb2xpY3kgJiAoUkVRX0ZTRVFfUFJFRkxVU0ggfCBSRVFfRlNFUV9QT1NURkxVU0gpKSkgewor CWlmICgoKHBvbGljeSAmIFJFUV9GU0VRX0RBVEEpICYmCisJICAgICAhKHBvbGljeSAmIChSRVFf RlNFUV9QUkVGTFVTSCB8IFJFUV9GU0VRX1BPU1RGTFVTSCkpKSB8fAorCSAgICAocS0+bXFfb3Bz ICYmIGJsa19tcV9hc3NpZ25fZHJ2X3RhZyhycSkgPCAwKSkgewogCQlpZiAocS0+bXFfb3BzKQog CQkJYmxrX21xX3NjaGVkX2luc2VydF9yZXF1ZXN0KHJxLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOwog CQllbHNlCmRpZmYgLS1naXQgYS9ibG9jay9ibGstbXEuYyBiL2Jsb2NrL2Jsay1tcS5jCmluZGV4 IGI2OGI3ZmM0M2U0Ni4uNDhkNzk2OGQ0ZWQ5IDEwMDY0NAotLS0gYS9ibG9jay9ibGstbXEuYwor KysgYi9ibG9jay9ibGstbXEuYwpAQCAtMjIwLDIwICsyMjAsMjEgQEAgRVhQT1JUX1NZTUJPTF9H UEwoYmxrX21xX3JxX2N0eF9pbml0KTsKIHN0cnVjdCByZXF1ZXN0ICpfX2Jsa19tcV9hbGxvY19y ZXF1ZXN0KHN0cnVjdCBibGtfbXFfYWxsb2NfZGF0YSAqZGF0YSwKIAkJCQkgICAgICAgdW5zaWdu ZWQgaW50IG9wKQogewotCXN0cnVjdCBibGtfbXFfdGFncyAqdGFncyA9IGRhdGEtPmhjdHgtPnRh Z3M7CisJc3RydWN0IGJsa19tcV90YWdzICp0YWdzID0gZGF0YS0+aGN0eC0+c2NoZWRfdGFnczsK IAlzdHJ1Y3QgcmVxdWVzdCAqcnE7Ci0JdW5zaWduZWQgaW50IHRhZzsKKwl1bnNpZ25lZCBpbnQg c2NoZWRfdGFnOwogCi0JdGFnID0gYmxrX21xX2dldF90YWcoZGF0YSwgdGFncyk7Ci0JaWYgKHRh ZyAhPSBCTEtfTVFfVEFHX0ZBSUwpIHsKLQkJcnEgPSB0YWdzLT5ycXNbdGFnXTsKKwlzY2hlZF90 YWcgPSBibGtfbXFfZ2V0X3RhZyhkYXRhLCB0YWdzKTsKKwlpZiAoc2NoZWRfdGFnICE9IEJMS19N UV9UQUdfRkFJTCkgeworCQlycSA9IHRhZ3MtPnJxc1tzY2hlZF90YWddOworCQlycS0+dGFnID0g LTE7CiAKIAkJaWYgKGJsa19tcV90YWdfYnVzeShkYXRhLT5oY3R4KSkgewogCQkJcnEtPnJxX2Zs YWdzID0gUlFGX01RX0lORkxJR0hUOwogCQkJYXRvbWljX2luYygmZGF0YS0+aGN0eC0+bnJfYWN0 aXZlKTsKIAkJfQogCi0JCXJxLT50YWcgPSB0YWc7CisJCXJxLT5zY2hlZF90YWcgPSBzY2hlZF90 YWc7CiAJCWJsa19tcV9ycV9jdHhfaW5pdChkYXRhLT5xLCBkYXRhLT5jdHgsIHJxLCBvcCk7CiAJ CXJldHVybiBycTsKIAl9CkBAIC0zMjgsNiArMzI5LDcgQEAgdm9pZCBfX2Jsa19tcV9maW5pc2hf cmVxdWVzdChzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgc3RydWN0IGJsa19tcV9jdHggKmN0 eCwKIAkJCSAgICAgc3RydWN0IHJlcXVlc3QgKnJxKQogewogCWNvbnN0IGludCB0YWcgPSBycS0+ dGFnOworCWNvbnN0IGludCBzY2hlZF90YWcgPSBycS0+c2NoZWRfdGFnOwogCXN0cnVjdCByZXF1 ZXN0X3F1ZXVlICpxID0gcnEtPnE7CiAKIAljdHgtPnJxX2NvbXBsZXRlZFtycV9pc19zeW5jKHJx KV0rKzsKQEAgLTM0MCw3ICszNDIsMTMgQEAgdm9pZCBfX2Jsa19tcV9maW5pc2hfcmVxdWVzdChz dHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgc3RydWN0IGJsa19tcV9jdHggKmN0eCwKIAogCWNs ZWFyX2JpdChSRVFfQVRPTV9TVEFSVEVELCAmcnEtPmF0b21pY19mbGFncyk7CiAJY2xlYXJfYml0 KFJFUV9BVE9NX1BPTExfU0xFUFQsICZycS0+YXRvbWljX2ZsYWdzKTsKLQlibGtfbXFfcHV0X3Rh ZyhoY3R4LCBoY3R4LT50YWdzLCBjdHgsIHRhZyk7CisJaWYgKHRhZyA+PSAwKSB7CisJCVdBUk5f T05fT05DRShoY3R4LT50YWdzLT5ycXNbdGFnXSAhPSBycSk7CisJCWhjdHgtPnRhZ3MtPnJxc1t0 YWddID0gTlVMTDsKKwkJYmxrX21xX3B1dF90YWcoaGN0eCwgaGN0eC0+dGFncywgY3R4LCB0YWcp OworCX0KKwlpZiAoc2NoZWRfdGFnID49IDApCisJCWJsa19tcV9wdXRfdGFnKGhjdHgsIGhjdHgt PnNjaGVkX3RhZ3MsIGN0eCwgc2NoZWRfdGFnKTsKIAlibGtfcXVldWVfZXhpdChxKTsKIH0KIApA QCAtODQ0LDYgKzg1MiwyNiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBxdWV1ZWRfdG9f aW5kZXgodW5zaWduZWQgaW50IHF1ZXVlZCkKIAlyZXR1cm4gbWluKEJMS19NUV9NQVhfRElTUEFU Q0hfT1JERVIgLSAxLCBpbG9nMihxdWV1ZWQpICsgMSk7CiB9CiAKK2ludCBibGtfbXFfYXNzaWdu X2Rydl90YWcoc3RydWN0IHJlcXVlc3QgKnJxKQoreworCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx ID0gcnEtPnE7CisJc3RydWN0IGJsa19tcV9od19jdHggKmhjdHggPSBibGtfbXFfbWFwX3F1ZXVl KHEsIHJxLT5tcV9jdHgtPmNwdSk7CisJc3RydWN0IGJsa19tcV9hbGxvY19kYXRhIGRhdGEgPSB7 CisJCS5xID0gcnEtPnEsCisJCS5jdHggPSBycS0+bXFfY3R4LAorCQkuaGN0eCA9IGhjdHgsCisJ fTsKKworCXJxLT50YWcgPSBibGtfbXFfZ2V0X3RhZygmZGF0YSwgaGN0eC0+dGFncyk7CisJaWYg KHJxLT50YWcgPCAwKQorCQlnb3RvIG91dDsKKwlXQVJOX09OX09OQ0UoaGN0eC0+dGFncy0+cnFz W3JxLT50YWddKTsKKwloY3R4LT50YWdzLT5ycXNbcnEtPnRhZ10gPSBycTsKKworb3V0OgorCXJl dHVybiBycS0+dGFnOworfQorCiBib29sIGJsa19tcV9kaXNwYXRjaF9ycV9saXN0KHN0cnVjdCBi bGtfbXFfaHdfY3R4ICpoY3R4LCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KQogewogCXN0cnVjdCBy ZXF1ZXN0X3F1ZXVlICpxID0gaGN0eC0+cXVldWU7CkBAIC04NjYsNiArODk0LDggQEAgYm9vbCBi bGtfbXFfZGlzcGF0Y2hfcnFfbGlzdChzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgc3RydWN0 IGxpc3RfaGVhZCAqbGlzdCkKIAkJc3RydWN0IGJsa19tcV9xdWV1ZV9kYXRhIGJkOwogCiAJCXJx ID0gbGlzdF9maXJzdF9lbnRyeShsaXN0LCBzdHJ1Y3QgcmVxdWVzdCwgcXVldWVsaXN0KTsKKwkJ aWYgKHJxLT50YWcgPCAwICYmIGJsa19tcV9hc3NpZ25fZHJ2X3RhZyhycSkgPCAwKQorCQkJYnJl YWs7CiAJCWxpc3RfZGVsX2luaXQoJnJxLT5xdWV1ZWxpc3QpOwogCiAJCWJkLnJxID0gcnE7CkBA IC0xMjk2LDcgKzEzMjYsOCBAQCBzdGF0aWMgdm9pZCBibGtfbXFfdHJ5X2lzc3VlX2RpcmVjdGx5 KHN0cnVjdCByZXF1ZXN0ICpycSwgYmxrX3FjX3QgKmNvb2tpZSkKIAkJZ290byBpbnNlcnQ7CiAK IAloY3R4ID0gYmxrX21xX21hcF9xdWV1ZShxLCBycS0+bXFfY3R4LT5jcHUpOwotCWlmIChibGtf bXFfaGN0eF9zdG9wcGVkKGhjdHgpKQorCWlmIChibGtfbXFfaGN0eF9zdG9wcGVkKGhjdHgpIHx8 CisJICAgIChycS0+dGFnIDwgMCAmJiBibGtfbXFfYXNzaWduX2Rydl90YWcocnEpIDwgMCkpCiAJ CWdvdG8gaW5zZXJ0OwogCiAJbmV3X2Nvb2tpZSA9IGJsa190YWdfdG9fcWNfdChycS0+dGFnLCBo Y3R4LT5xdWV1ZV9udW0pOwpAQCAtMTU5MiwxNyArMTYyMywxOSBAQCB2b2lkIGJsa19tcV9mcmVl X3JxX21hcChzdHJ1Y3QgYmxrX21xX3RhZ3MgKnRhZ3MpCiB9CiAKIHN0cnVjdCBibGtfbXFfdGFn cyAqYmxrX21xX2FsbG9jX3JxX21hcChzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgKnNldCwKLQkJCQkJ dW5zaWduZWQgaW50IGhjdHhfaWR4KQorCQkJCQl1bnNpZ25lZCBpbnQgaGN0eF9pZHgsCisJCQkJ CXVuc2lnbmVkIGludCBucl90YWdzLAorCQkJCQl1bnNpZ25lZCBpbnQgcmVzZXJ2ZWRfdGFncykK IHsKIAlzdHJ1Y3QgYmxrX21xX3RhZ3MgKnRhZ3M7CiAKLQl0YWdzID0gYmxrX21xX2luaXRfdGFn cyhzZXQtPnF1ZXVlX2RlcHRoLCBzZXQtPnJlc2VydmVkX3RhZ3MsCisJdGFncyA9IGJsa19tcV9p bml0X3RhZ3MobnJfdGFncywgcmVzZXJ2ZWRfdGFncywKIAkJCQlzZXQtPm51bWFfbm9kZSwKIAkJ CQlCTEtfTVFfRkxBR19UT19BTExPQ19QT0xJQ1koc2V0LT5mbGFncykpOwogCWlmICghdGFncykK IAkJcmV0dXJuIE5VTEw7CiAKLQl0YWdzLT5ycXMgPSBremFsbG9jX25vZGUoc2V0LT5xdWV1ZV9k ZXB0aCAqIHNpemVvZihzdHJ1Y3QgcmVxdWVzdCAqKSwKKwl0YWdzLT5ycXMgPSBremFsbG9jX25v ZGUobnJfdGFncyAqIHNpemVvZihzdHJ1Y3QgcmVxdWVzdCAqKSwKIAkJCQkgR0ZQX05PSU8gfCBf X0dGUF9OT1dBUk4gfCBfX0dGUF9OT1JFVFJZLAogCQkJCSBzZXQtPm51bWFfbm9kZSk7CiAJaWYg KCF0YWdzLT5ycXMpIHsKQEAgLTE4MDAsNiArMTgzMyw3IEBAIHN0YXRpYyBpbnQgYmxrX21xX2lu aXRfaGN0eChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwKIAljcHVocF9zdGF0ZV9hZGRfaW5zdGFu Y2Vfbm9jYWxscyhDUFVIUF9CTEtfTVFfREVBRCwgJmhjdHgtPmNwdWhwX2RlYWQpOwogCiAJaGN0 eC0+dGFncyA9IHNldC0+dGFnc1toY3R4X2lkeF07CisJaGN0eC0+c2NoZWRfdGFncyA9IHNldC0+ c2NoZWRfdGFnc1toY3R4X2lkeF07CiAKIAkvKgogCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBhbGwg cG9zc2libGUgY3B1cyB0byBhdm9pZCBhbGxvY2F0aW9uIGF0CkBAIC0xODgxLDYgKzE5MTUsMzgg QEAgc3RhdGljIHZvaWQgYmxrX21xX2luaXRfY3B1X3F1ZXVlcyhzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSwKIAl9CiB9CiAKK3N0YXRpYyB2b2lkIF9fYmxrX21xX2ZyZWVfcnFfbWFwX2koc3RydWN0 IGJsa19tcV90YWdfc2V0ICpzZXQsIGludCBoY3R4X2lkeCkKK3sKKwlpZiAoc2V0LT5zY2hlZF90 YWdzW2hjdHhfaWR4XSkgeworCQlibGtfbXFfZnJlZV9ycXMoc2V0LCBzZXQtPnNjaGVkX3RhZ3Nb aGN0eF9pZHhdLCBoY3R4X2lkeCk7CisJCWJsa19tcV9mcmVlX3JxX21hcChzZXQtPnNjaGVkX3Rh Z3NbaGN0eF9pZHhdKTsKKwkJc2V0LT5zY2hlZF90YWdzW2hjdHhfaWR4XSA9IE5VTEw7CisJfQor CWlmIChzZXQtPnRhZ3NbaGN0eF9pZHhdKSB7CisJCWJsa19tcV9mcmVlX3JxX21hcChzZXQtPnRh Z3NbaGN0eF9pZHhdKTsKKwkJc2V0LT50YWdzW2hjdHhfaWR4XSA9IE5VTEw7CisJfQorfQorCitz dGF0aWMgYm9vbCBfX2Jsa19tcV9hbGxvY19ycV9tYXBfaShzdHJ1Y3QgYmxrX21xX3RhZ19zZXQg KnNldCwgaW50IGhjdHhfaWR4LAorCQkJCSAgICB1bnNpZ25lZCBpbnQgbnJfcmVxdWVzdHMpCit7 CisJaW50IHJldCA9IDA7CisKKwlzZXQtPnRhZ3NbaGN0eF9pZHhdID0gYmxrX21xX2FsbG9jX3Jx X21hcChzZXQsIGhjdHhfaWR4LAorCQkJCQlzZXQtPnF1ZXVlX2RlcHRoLCBzZXQtPnJlc2VydmVk X3RhZ3MpOworCXNldC0+c2NoZWRfdGFnc1toY3R4X2lkeF0gPSBibGtfbXFfYWxsb2NfcnFfbWFw KHNldCwgaGN0eF9pZHgsCisJCQkJCQkJbnJfcmVxdWVzdHMsIDApOworCWlmIChzZXQtPnNjaGVk X3RhZ3NbaGN0eF9pZHhdKQorCQlyZXQgPSBibGtfbXFfYWxsb2NfcnFzKHNldCwgc2V0LT5zY2hl ZF90YWdzW2hjdHhfaWR4XSwKKwkJCQkgICAgICAgaGN0eF9pZHgpOworCWlmICghc2V0LT50YWdz W2hjdHhfaWR4XSB8fCAhc2V0LT5zY2hlZF90YWdzW2hjdHhfaWR4XSB8fCByZXQgPCAwKSB7CisJ CV9fYmxrX21xX2ZyZWVfcnFfbWFwX2koc2V0LCBoY3R4X2lkeCk7CisJCXJldHVybiBmYWxzZTsK Kwl9CisJcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyB2b2lkIGJsa19tcV9tYXBfc3dxdWV1ZShz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwKIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAq b25saW5lX21hc2spCiB7CkBAIC0xOTA5LDIzICsxOTc1LDE1IEBAIHN0YXRpYyB2b2lkIGJsa19t cV9tYXBfc3dxdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwKIAogCQloY3R4X2lkeCA9IHEt Pm1xX21hcFtpXTsKIAkJLyogdW5tYXBwZWQgaHcgcXVldWUgY2FuIGJlIHJlbWFwcGVkIGFmdGVy IENQVSB0b3BvIGNoYW5nZWQgKi8KLQkJaWYgKCFzZXQtPnRhZ3NbaGN0eF9pZHhdKSB7Ci0JCQlz ZXQtPnRhZ3NbaGN0eF9pZHhdID0gYmxrX21xX2FsbG9jX3JxX21hcChzZXQsCi0JCQkJCQkJCSAg aGN0eF9pZHgpOwotCQkJaWYgKGJsa19tcV9hbGxvY19ycXMoc2V0LCBzZXQtPnRhZ3NbaGN0eF9p ZHhdLAotCQkJCQkgICAgIGhjdHhfaWR4KSA8IDApIHsKLQkJCQlibGtfbXFfZnJlZV9ycV9tYXAo c2V0LT50YWdzW2hjdHhfaWR4XSk7Ci0JCQkJc2V0LT50YWdzW2hjdHhfaWR4XSA9IE5VTEw7Ci0J CQl9Ci0KKwkJaWYgKCFzZXQtPnRhZ3NbaGN0eF9pZHhdICYmCisJCSAgICAhX19ibGtfbXFfYWxs b2NfcnFfbWFwX2koc2V0LCBoY3R4X2lkeCwgcS0+bnJfcmVxdWVzdHMpKSB7CiAJCQkvKgogCQkJ ICogSWYgdGFncyBpbml0aWFsaXphdGlvbiBmYWlsIGZvciBzb21lIGhjdHgsCiAJCQkgKiB0aGF0 IGhjdHggd29uJ3QgYmUgYnJvdWdodCBvbmxpbmUuICBJbiB0aGlzCiAJCQkgKiBjYXNlLCByZW1h cCB0aGUgY3VycmVudCBjdHggdG8gaGN0eFswXSB3aGljaAogCQkJICogaXMgZ3VhcmFudGVlZCB0 byBhbHdheXMgaGF2ZSB0YWdzIGFsbG9jYXRlZAogCQkJICovCi0JCQlpZiAoIXNldC0+dGFnc1to Y3R4X2lkeF0pCi0JCQkJcS0+bXFfbWFwW2ldID0gMDsKKwkJCXEtPm1xX21hcFtpXSA9IDA7CiAJ CX0KIAogCQljdHggPSBwZXJfY3B1X3B0cihxLT5xdWV1ZV9jdHgsIGkpOwpAQCAtMjMxOCwyNiAr MjM3NiwyMCBAQCBzdGF0aWMgaW50IGJsa19tcV9xdWV1ZV9yZWluaXRfcHJlcGFyZSh1bnNpZ25l ZCBpbnQgY3B1KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IF9fYmxrX21xX2FsbG9jX3Jx X21hcHMoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpCitzdGF0aWMgaW50IF9fYmxrX21xX2Fs bG9jX3JxX21hcHMoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQsCisJCQkJICB1bnNpZ25lZCBp bnQgbnJfcmVxdWVzdHMpCiB7CiAJaW50IGk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgc2V0LT5ucl9o d19xdWV1ZXM7IGkrKykgewotCQlzZXQtPnRhZ3NbaV0gPSBibGtfbXFfYWxsb2NfcnFfbWFwKHNl dCwgaSk7Ci0JCWlmICghc2V0LT50YWdzW2ldKQorCWZvciAoaSA9IDA7IGkgPCBzZXQtPm5yX2h3 X3F1ZXVlczsgaSsrKQorCQlpZiAoIV9fYmxrX21xX2FsbG9jX3JxX21hcF9pKHNldCwgaSwgbnJf cmVxdWVzdHMpKQogCQkJZ290byBvdXRfdW53aW5kOwotCQlpZiAoYmxrX21xX2FsbG9jX3Jxcyhz ZXQsIHNldC0+dGFnc1tpXSwgaSkgPCAwKQotCQkJZ290byBmcmVlX3JxX21hcDsKLQl9CiAKIAly ZXR1cm4gMDsKIAogb3V0X3Vud2luZDoKLQl3aGlsZSAoLS1pID49IDApIHsKLQkJYmxrX21xX2Zy ZWVfcnFzKHNldCwgc2V0LT50YWdzW2ldLCBpKTsKLWZyZWVfcnFfbWFwOgotCQlibGtfbXFfZnJl ZV9ycV9tYXAoc2V0LT50YWdzW2ldKTsKLQl9CisJd2hpbGUgKC0taSA+PSAwKQorCQlfX2Jsa19t cV9mcmVlX3JxX21hcF9pKHNldCwgaSk7CiAKIAlyZXR1cm4gLUVOT01FTTsKIH0KQEAgLTIzNDcs MTQgKzIzOTksMTUgQEAgc3RhdGljIGludCBfX2Jsa19tcV9hbGxvY19ycV9tYXBzKHN0cnVjdCBi bGtfbXFfdGFnX3NldCAqc2V0KQogICogbWF5IHJlZHVjZSB0aGUgZGVwdGggYXNrZWQgZm9yLCBp ZiBtZW1vcnkgaXMgdGlnaHQuIHNldC0+cXVldWVfZGVwdGgKICAqIHdpbGwgYmUgdXBkYXRlZCB0 byByZWZsZWN0IHRoZSBhbGxvY2F0ZWQgZGVwdGguCiAgKi8KLXN0YXRpYyBpbnQgYmxrX21xX2Fs bG9jX3JxX21hcHMoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpCitzdGF0aWMgaW50IGJsa19t cV9hbGxvY19ycV9tYXBzKHN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0LAorCQkJCXVuc2lnbmVk IGludCBucl9yZXF1ZXN0cykKIHsKIAl1bnNpZ25lZCBpbnQgZGVwdGg7CiAJaW50IGVycjsKIAog CWRlcHRoID0gc2V0LT5xdWV1ZV9kZXB0aDsKIAlkbyB7Ci0JCWVyciA9IF9fYmxrX21xX2FsbG9j X3JxX21hcHMoc2V0KTsKKwkJZXJyID0gX19ibGtfbXFfYWxsb2NfcnFfbWFwcyhzZXQsIG5yX3Jl cXVlc3RzKTsKIAkJaWYgKCFlcnIpCiAJCQlicmVhazsKIApAQCAtMjM4NSw3ICsyNDM4LDcgQEAg c3RhdGljIGludCBibGtfbXFfYWxsb2NfcnFfbWFwcyhzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgKnNl dCkKICAqLwogaW50IGJsa19tcV9hbGxvY190YWdfc2V0KHN0cnVjdCBibGtfbXFfdGFnX3NldCAq c2V0KQogewotCWludCByZXQ7CisJaW50IHJldCA9IC1FTk9NRU07CiAKIAlCVUlMRF9CVUdfT04o QkxLX01RX01BWF9ERVBUSCA+IDEgPDwgQkxLX01RX1VOSVFVRV9UQUdfQklUUyk7CiAKQEAgLTI0 MjUsMzIgKzI0NzgsMzkgQEAgaW50IGJsa19tcV9hbGxvY190YWdfc2V0KHN0cnVjdCBibGtfbXFf dGFnX3NldCAqc2V0KQogCWlmICghc2V0LT50YWdzKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCXJl dCA9IC1FTk9NRU07CisJc2V0LT5zY2hlZF90YWdzID0ga3phbGxvY19ub2RlKG5yX2NwdV9pZHMg KiBzaXplb2Yoc3RydWN0IGJsa19tcV90YWdzICopLAorCQkJCSAgICAgICBHRlBfS0VSTkVMLCBz ZXQtPm51bWFfbm9kZSk7CisJaWYgKCFzZXQtPnNjaGVkX3RhZ3MpCisJCWdvdG8gZnJlZV9kcnZf dGFnczsKKwogCXNldC0+bXFfbWFwID0ga3phbGxvY19ub2RlKHNpemVvZigqc2V0LT5tcV9tYXAp ICogbnJfY3B1X2lkcywKIAkJCUdGUF9LRVJORUwsIHNldC0+bnVtYV9ub2RlKTsKIAlpZiAoIXNl dC0+bXFfbWFwKQotCQlnb3RvIG91dF9mcmVlX3RhZ3M7CisJCWdvdG8gZnJlZV9zY2hlZF90YWdz OwogCiAJaWYgKHNldC0+b3BzLT5tYXBfcXVldWVzKQogCQlyZXQgPSBzZXQtPm9wcy0+bWFwX3F1 ZXVlcyhzZXQpOwogCWVsc2UKIAkJcmV0ID0gYmxrX21xX21hcF9xdWV1ZXMoc2V0KTsKIAlpZiAo cmV0KQotCQlnb3RvIG91dF9mcmVlX21xX21hcDsKKwkJZ290byBmcmVlX21xX21hcDsKIAotCXJl dCA9IGJsa19tcV9hbGxvY19ycV9tYXBzKHNldCk7CisJcmV0ID0gYmxrX21xX2FsbG9jX3JxX21h cHMoc2V0LCBzZXQtPnF1ZXVlX2RlcHRoLypxLT5ucl9yZXF1ZXN0cyovKTsKIAlpZiAocmV0KQot CQlnb3RvIG91dF9mcmVlX21xX21hcDsKKwkJZ290byBmcmVlX21xX21hcDsKIAogCW11dGV4X2lu aXQoJnNldC0+dGFnX2xpc3RfbG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJnNldC0+dGFnX2xpc3Qp OwogCiAJcmV0dXJuIDA7CiAKLW91dF9mcmVlX21xX21hcDoKK2ZyZWVfbXFfbWFwOgogCWtmcmVl KHNldC0+bXFfbWFwKTsKIAlzZXQtPm1xX21hcCA9IE5VTEw7Ci1vdXRfZnJlZV90YWdzOgorZnJl ZV9zY2hlZF90YWdzOgorCWtmcmVlKHNldC0+c2NoZWRfdGFncyk7CisJc2V0LT5zY2hlZF90YWdz ID0gTlVMTDsKK2ZyZWVfZHJ2X3RhZ3M6CiAJa2ZyZWUoc2V0LT50YWdzKTsKIAlzZXQtPnRhZ3Mg PSBOVUxMOwogCXJldHVybiByZXQ7CkBAIC0yNDY1LDEyICsyNTI1LDE2IEBAIHZvaWQgYmxrX21x X2ZyZWVfdGFnX3NldChzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgKnNldCkKIAkJaWYgKHNldC0+dGFn c1tpXSkgewogCQkJYmxrX21xX2ZyZWVfcnFzKHNldCwgc2V0LT50YWdzW2ldLCBpKTsKIAkJCWJs a19tcV9mcmVlX3JxX21hcChzZXQtPnRhZ3NbaV0pOworCQkJYmxrX21xX2ZyZWVfcnFfbWFwKHNl dC0+c2NoZWRfdGFnc1tpXSk7CiAJCX0KIAl9CiAKIAlrZnJlZShzZXQtPm1xX21hcCk7CiAJc2V0 LT5tcV9tYXAgPSBOVUxMOwogCisJa2ZyZWUoc2V0LT5zY2hlZF90YWdzKTsKKwlzZXQtPnNjaGVk X3RhZ3MgPSBOVUxMOworCiAJa2ZyZWUoc2V0LT50YWdzKTsKIAlzZXQtPnRhZ3MgPSBOVUxMOwog fQpAQCAtMjQ4MiwxNCArMjU0NiwxOCBAQCBpbnQgYmxrX21xX3VwZGF0ZV9ucl9yZXF1ZXN0cyhz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgdW5zaWduZWQgaW50IG5yKQogCXN0cnVjdCBibGtfbXFf aHdfY3R4ICpoY3R4OwogCWludCBpLCByZXQ7CiAKLQlpZiAoIXNldCB8fCBuciA+IHNldC0+cXVl dWVfZGVwdGgpCisJaWYgKCFzZXQpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJcmV0ID0gMDsKIAlx dWV1ZV9mb3JfZWFjaF9od19jdHgocSwgaGN0eCwgaSkgewogCQlpZiAoIWhjdHgtPnRhZ3MpCiAJ CQljb250aW51ZTsKLQkJcmV0ID0gYmxrX21xX3RhZ191cGRhdGVfZGVwdGgoaGN0eC0+dGFncywg bnIpOworCQlyZXQgPSBibGtfbXFfdGFnX3VwZGF0ZV9kZXB0aChoY3R4LT50YWdzLAorCQkJCQkg ICAgICBtaW4obnIsIHNldC0+cXVldWVfZGVwdGgpKTsKKwkJaWYgKHJldCkKKwkJCWJyZWFrOwor CQlyZXQgPSBibGtfbXFfdGFnX3VwZGF0ZV9kZXB0aChoY3R4LT5zY2hlZF90YWdzLCBucik7CiAJ CWlmIChyZXQpCiAJCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9ibG9jay9ibGstbXEuaCBiL2Js b2NrL2Jsay1tcS5oCmluZGV4IDJlOThkZDhjY2VlMi4uMDM2OGM1MTNjMmFiIDEwMDY0NAotLS0g YS9ibG9jay9ibGstbXEuaAorKysgYi9ibG9jay9ibGstbXEuaApAQCAtMzEsNiArMzEsNyBAQCB2 b2lkIGJsa19tcV9mcmVlemVfcXVldWUoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpOwogdm9pZCBi bGtfbXFfZnJlZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSk7CiBpbnQgYmxrX21xX3Vw ZGF0ZV9ucl9yZXF1ZXN0cyhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgdW5zaWduZWQgaW50IG5y KTsKIHZvaWQgYmxrX21xX3dha2Vfd2FpdGVycyhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSk7Citp bnQgYmxrX21xX2Fzc2lnbl9kcnZfdGFnKHN0cnVjdCByZXF1ZXN0ICpycSk7CiBib29sIGJsa19t cV9kaXNwYXRjaF9ycV9saXN0KHN0cnVjdCBibGtfbXFfaHdfY3R4ICosIHN0cnVjdCBsaXN0X2hl YWQgKik7CiB2b2lkIGJsa19tcV9mbHVzaF9idXN5X2N0eHMoc3RydWN0IGJsa19tcV9od19jdHgg KmhjdHgsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpOwogCkBAIC00MSw3ICs0Miw5IEBAIHZvaWQg YmxrX21xX2ZyZWVfcnFzKHN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0LCBzdHJ1Y3QgYmxrX21x X3RhZ3MgKnRhZ3MsCiAJCSAgICAgdW5zaWduZWQgaW50IGhjdHhfaWR4KTsKIHZvaWQgYmxrX21x X2ZyZWVfcnFfbWFwKHN0cnVjdCBibGtfbXFfdGFncyAqdGFncyk7CiBzdHJ1Y3QgYmxrX21xX3Rh Z3MgKmJsa19tcV9hbGxvY19ycV9tYXAoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQsCi0JCQkJ CXVuc2lnbmVkIGludCBoY3R4X2lkeCk7CisJCQkJCXVuc2lnbmVkIGludCBoY3R4X2lkeCwKKwkJ CQkJdW5zaWduZWQgaW50IG5yX3RhZ3MsCisJCQkJCXVuc2lnbmVkIGludCByZXNlcnZlZF90YWdz KTsKIGludCBibGtfbXFfYWxsb2NfcnFzKHN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0LCBzdHJ1 Y3QgYmxrX21xX3RhZ3MgKnRhZ3MsCiAJCSAgICAgdW5zaWduZWQgaW50IGhjdHhfaWR4KTsKIApk aWZmIC0tZ2l0IGEvYmxvY2svYmxrLXRhZy5jIGIvYmxvY2svYmxrLXRhZy5jCmluZGV4IGJhZTFk ZWNiNmVjMy4uMzE5YTNhM2ViMWQ3IDEwMDY0NAotLS0gYS9ibG9jay9ibGstdGFnLmMKKysrIGIv YmxvY2svYmxrLXRhZy5jCkBAIC0yNzIsNiArMjcyLDcgQEAgdm9pZCBibGtfcXVldWVfZW5kX3Rh ZyhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IHJlcXVlc3QgKnJxKQogCWxpc3RfZGVs X2luaXQoJnJxLT5xdWV1ZWxpc3QpOwogCXJxLT5ycV9mbGFncyAmPSB+UlFGX1FVRVVFRDsKIAly cS0+dGFnID0gLTE7CisJcnEtPnNjaGVkX3RhZyA9IC0xOwogCiAJaWYgKHVubGlrZWx5KGJxdC0+ dGFnX2luZGV4W3RhZ10gPT0gTlVMTCkpCiAJCXByaW50ayhLRVJOX0VSUiAiJXM6IHRhZyAlZCBp cyBtaXNzaW5nXG4iLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGstbXEuaCBiL2luY2x1 ZGUvbGludXgvYmxrLW1xLmgKaW5kZXggOTI1NWNjYjA0M2YyLi4zNzc1OTRiY2RhOGQgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvbGludXgvYmxrLW1xLmgKKysrIGIvaW5jbHVkZS9saW51eC9ibGstbXEu aApAQCAtMzYsNiArMzYsNyBAQCBzdHJ1Y3QgYmxrX21xX2h3X2N0eCB7CiAJYXRvbWljX3QJCXdh aXRfaW5kZXg7CiAKIAlzdHJ1Y3QgYmxrX21xX3RhZ3MJKnRhZ3M7CisJc3RydWN0IGJsa19tcV90 YWdzCSpzY2hlZF90YWdzOwogCiAJc3RydWN0IHNyY3Vfc3RydWN0CXF1ZXVlX3JxX3NyY3U7CiAK QEAgLTcyLDYgKzczLDcgQEAgc3RydWN0IGJsa19tcV90YWdfc2V0IHsKIAl2b2lkCQkJKmRyaXZl cl9kYXRhOwogCiAJc3RydWN0IGJsa19tcV90YWdzCSoqdGFnczsKKwlzdHJ1Y3QgYmxrX21xX3Rh Z3MJKipzY2hlZF90YWdzOwogCiAJc3RydWN0IG11dGV4CQl0YWdfbGlzdF9sb2NrOwogCXN0cnVj dCBsaXN0X2hlYWQJdGFnX2xpc3Q7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5o IGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaAppbmRleCA3YzQwZmI4MzhiNDQuLjExMmI1N2JjZTll OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ibGtkZXYuaAorKysgYi9pbmNsdWRlL2xpbnV4 L2Jsa2Rldi5oCkBAIC0yMjMsNiArMjIzLDcgQEAgc3RydWN0IHJlcXVlc3QgewogCXZvaWQgKnNw ZWNpYWw7CQkvKiBvcGFxdWUgcG9pbnRlciBhdmFpbGFibGUgZm9yIExMRCB1c2UgKi8KIAogCWlu dCB0YWc7CisJaW50IHNjaGVkX3RhZzsKIAlpbnQgZXJyb3JzOwogCiAJLyoKLS0gCjIuMTEuMAoK --_004_148242377526826camelsandiskcom_--