From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1EB30EA4E1D for ; Mon, 2 Mar 2026 15:10:51 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8163710E068; Mon, 2 Mar 2026 15:10:50 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="dsUbhPlG"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.18]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3E9A410E045; Mon, 2 Mar 2026 15:10:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1772464249; x=1804000249; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=EoqTsk/E62r3ys5VvD40GGl5AX1bEyjIl0bpZmmEgAc=; b=dsUbhPlGEpLdQF6XxMSUmOmQvMmM/y+V5QvWSHF6uAEg5ZWntQhe85BR XKJ12Sp9Sm3kiPXQO5G3PqDfI/zCvXKTUVBVpOSvVozT/GEXKgqcxwkGJ jjNLWfgMxMT0czeA8QRjKgb3Cv1s+/tDiQRfWQ8d9W6TjumPJ/VpqnVjS T4Y9WRWZAbpFYeT02ZnFRhvPZn3dc9iiJPzjT9IoqDl6je4+8QO/wyi4D gG7GLiZALKY+OKTo0PxCc/z4R/5Rc+GsKONRtMfuMK7z2XGGE/e8nNnKQ i17bPRVTPI4ZB/dcIV2yBsyn64/dnwwX3xZFGiW9+R+4wozY7eslItcVa w==; X-CSE-ConnectionGUID: QH5Rfdy0TJumQ5HVq5KTVA== X-CSE-MsgGUID: bhSmnaOVQv25+EN6gBP5wg== X-IronPort-AV: E=McAfee;i="6800,10657,11717"; a="72672457" X-IronPort-AV: E=Sophos;i="6.21,320,1763452800"; d="scan'208";a="72672457" Received: from fmviesa010.fm.intel.com ([10.60.135.150]) by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Mar 2026 07:10:49 -0800 X-CSE-ConnectionGUID: ljUTpfIITSe8oDvbtGqkow== X-CSE-MsgGUID: 9hVHehVhQBOP89Gv2jP9og== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,320,1763452800"; d="scan'208";a="215307293" Received: from yadavs-z690i-a-ultra-plus.iind.intel.com ([10.190.216.90]) by fmviesa010-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Mar 2026 07:10:47 -0800 From: Sanjay Yadav To: dri-devel@lists.freedesktop.org Cc: intel-xe@lists.freedesktop.org, =?UTF-8?q?Christian=20K=C3=B6nig?= , Arunpravin Paneer Selvam , Matthew Auld Subject: [PATCH] gpu/tests/gpu_buddy: Add gpu_test_buddy_alloc_range for exact-range allocation Date: Mon, 2 Mar 2026 20:39:46 +0530 Message-ID: <20260302150947.47535-2-sanjay.kumar.yadav@intel.com> X-Mailer: git-send-email 2.52.0 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" QWRkIGEgbmV3IGt1bml0IHRlc3QgZ3B1X3Rlc3RfYnVkZHlfYWxsb2NfcmFuZ2UoKSB0aGF0IGV4 ZXJjaXNlcyB0aGUKX19ncHVfYnVkZHlfYWxsb2NfcmFuZ2UoKSBleGFjdC1yYW5nZSBhbGxvY2F0 aW9uIHBhdGgsIHRyaWdnZXJlZCB3aGVuCnN0YXJ0ICsgc2l6ZSA9PSBlbmQgd2l0aCBmbGFncz0w LgoKVGhlIHRlc3QgY292ZXJzOgotIEJhc2ljIGV4YWN0LXJhbmdlIGFsbG9jYXRpb24gb2YgdGhl IGZ1bGwgbW0KLSBFeGFjdC1yYW5nZSBhbGxvY2F0aW9uIG9mIGVxdWFsIHN1Yi1yYW5nZXMgKHF1 YXJ0ZXJzKQotIE1pbmltdW0gY2h1bmstc2l6ZSBleGFjdCByYW5nZXMgYXQgc3RhcnQsIG1pZGRs ZSwgYW5kIGVuZCBvZmZzZXRzCi0gTm9uIHBvd2VyLW9mLXR3byBtbSBzaXplIHdpdGggbXVsdGlw bGUgcm9vdHMsIGluY2x1ZGluZyBjcm9zcy1yb290CiAgZXhhY3QtcmFuZ2UgYWxsb2NhdGlvbgot IFJhbmRvbWl6ZWQgZXhhY3QtcmFuZ2UgYWxsb2NhdGlvbnMgb2YgTiBjb250aWd1b3VzIHBhZ2Ut YWxpZ25lZAogIHNsaWNlcyBpbiByYW5kb20gb3JkZXIKLSBOZWdhdGl2ZTogcGFydGlhbGx5IGFs bG9jYXRlZCByYW5nZSBtdXN0IHJlamVjdCBvdmVybGFwcGluZyBleGFjdAogIGFsbG9jCi0gTmVn YXRpdmU6IGNoZWNrZXJib2FyZCBhbGxvY2F0aW9uIHBhdHRlcm4gcmVqZWN0cyBleGFjdCByYW5n ZSBvdmVyCiAgcGFydGlhbGx5IG9jY3VwaWVkIHBhaXJzCi0gTmVnYXRpdmU6IG1pc2FsaWduZWQg c3RhcnQsIHVuYWxpZ25lZCBzaXplLCBhbmQgb3V0LW9mLWJvdW5kcyBlbmQKLSBGcmVlIGFuZCBy ZS1hbGxvY2F0ZSB0aGUgc2FtZSBleGFjdCByYW5nZSBhY3Jvc3MgbXVsdGlwbGUgaXRlcmF0aW9u cwotIFZhcmlvdXMgcG93ZXItb2YtdHdvIGV4YWN0IHJhbmdlcyBhdCBuYXR1cmFsIGFsaWdubWVu dAoKQ2M6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KQ2M6IEFy dW5wcmF2aW4gUGFuZWVyIFNlbHZhbSA8QXJ1bnByYXZpbi5QYW5lZXJTZWx2YW1AYW1kLmNvbT4K U3VnZ2VzdGVkLWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IFNhbmpheSBZYWRhdiA8c2FuamF5Lmt1bWFyLnlhZGF2QGludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS90ZXN0cy9ncHVfYnVkZHlfdGVzdC5jIHwgMzI3ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMzI3IGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS90ZXN0cy9ncHVfYnVkZHlfdGVzdC5jIGIvZHJpdmVycy9ncHUv dGVzdHMvZ3B1X2J1ZGR5X3Rlc3QuYwppbmRleCA1NDI5MDEwZjM0ZDMuLjk3MzhmZDA5NTE4ZiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvdGVzdHMvZ3B1X2J1ZGR5X3Rlc3QuYworKysgYi9kcml2 ZXJzL2dwdS90ZXN0cy9ncHVfYnVkZHlfdGVzdC5jCkBAIC0zNjIsNiArMzYyLDMzMiBAQCBzdGF0 aWMgdm9pZCBncHVfdGVzdF9idWRkeV9hbGxvY19yYW5nZV9iaWFzKHN0cnVjdCBrdW5pdCAqdGVz dCkKIAlncHVfYnVkZHlfZmluaSgmbW0pOwogfQogCitzdGF0aWMgdm9pZCBncHVfdGVzdF9idWRk eV9hbGxvY19yYW5nZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCit7CisJR1BVX1JORF9TVEFURShwcm5n LCByYW5kb21fc2VlZCk7CisJc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2s7CisJc3RydWN0 IGdwdV9idWRkeSBtbTsKKwl1MzIgbW1fc2l6ZSwgdG90YWw7CisJTElTVF9IRUFEKGJsb2Nrcyk7 CisJTElTVF9IRUFEKHRtcCk7CisJdTMyIHBzID0gU1pfNEs7CisJaW50IHJldDsKKworCW1tX3Np emUgPSBTWl8xNk07CisKKwlLVU5JVF9BU1NFUlRfRkFMU0VfTVNHKHRlc3QsIGdwdV9idWRkeV9p bml0KCZtbSwgbW1fc2l6ZSwgcHMpLAorCQkJICAgICAgICJidWRkeV9pbml0IGZhaWxlZFxuIik7 CisKKwkvKgorCSAqIEJhc2ljIGV4YWN0LXJhbmdlIGFsbG9jYXRpb24uCisJICogQWxsb2NhdGUg dGhlIGVudGlyZSBtbSBhcyBvbmUgZXhhY3QgcmFuZ2UgKHN0YXJ0ICsgc2l6ZSA9PSBlbmQpLgor CSAqIFRoaXMgaXMgdGhlIHNpbXBsZXN0IGNhc2UgZXhlcmNpc2luZyBfX2dwdV9idWRkeV9hbGxv Y19yYW5nZS4KKwkgKi8KKwlyZXQgPSBncHVfYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwgMCwgbW1f c2l6ZSwgbW1fc2l6ZSwgcHMsICZibG9ja3MsIDApOworCUtVTklUX0FTU0VSVF9FUV9NU0codGVz dCwgcmV0LCAwLAorCQkJICAgICJleGFjdC1yYW5nZSBhbGxvYyBvZiBmdWxsIG1tIGZhaWxlZFxu Iik7CisKKwl0b3RhbCA9IDA7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShibG9jaywgJmJsb2Nrcywg bGluaykgeworCQl1NjQgb2Zmc2V0ID0gZ3B1X2J1ZGR5X2Jsb2NrX29mZnNldChibG9jayk7CisJ CXU2NCBic2l6ZSA9IGdwdV9idWRkeV9ibG9ja19zaXplKCZtbSwgYmxvY2spOworCisJCUtVTklU X0VYUEVDVF9UUlVFX01TRyh0ZXN0LCBvZmZzZXQgKyBic2l6ZSA8PSAodTY0KW1tX3NpemUsCisJ CQkJICAgICAgImJsb2NrIFslbGx4LCAlbGx4KSBvdXRzaWRlIG1tXG4iLCBvZmZzZXQsIG9mZnNl dCArIGJzaXplKTsKKwkJdG90YWwgKz0gKHUzMilic2l6ZTsKKwl9CisJS1VOSVRfRVhQRUNUX0VR KHRlc3QsIHRvdGFsLCBtbV9zaXplKTsKKwlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgbW0uYXZhaWws IDBVTEwpOworCisJLyogRnVsbCBtbSBzaG91bGQgYmUgZXhoYXVzdGVkICovCisJcmV0ID0gZ3B1 X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIDAsIHBzLCBwcywgcHMsICZ0bXAsIDApOworCUtVTklU X0VYUEVDVF9ORV9NU0codGVzdCwgcmV0LCAwLCAiYWxsb2Mgc2hvdWxkIGZhaWwgd2hlbiBtbSBp cyBmdWxsXG4iKTsKKworCWdwdV9idWRkeV9mcmVlX2xpc3QoJm1tLCAmYmxvY2tzLCAwKTsKKwlL VU5JVF9FWFBFQ1RfRVEodGVzdCwgbW0uYXZhaWwsICh1NjQpbW1fc2l6ZSk7CisJZ3B1X2J1ZGR5 X2ZpbmkoJm1tKTsKKworCS8qCisJICogRXhhY3QtcmFuZ2UgYWxsb2NhdGlvbiBvZiBzdWItcmFu Z2VzLgorCSAqIFNwbGl0IHRoZSBtbSBpbnRvIGZvdXIgZXF1YWwgcXVhcnRlcnMgYW5kIGFsbG9j YXRlIGVhY2ggYXMgYW4gZXhhY3QKKwkgKiByYW5nZS4gVmFsaWRhdGVzIHNwbGl0dGluZyBhbmQg bm9uLW92ZXJsYXBwaW5nIGV4YWN0IGFsbG9jYXRpb25zLgorCSAqLworCUtVTklUX0FTU0VSVF9G QUxTRSh0ZXN0LCBncHVfYnVkZHlfaW5pdCgmbW0sIG1tX3NpemUsIHBzKSk7CisKKwl7CisJCXUz MiBxdWFydGVyID0gbW1fc2l6ZSAvIDQ7CisJCWludCBpOworCisJCWZvciAoaSA9IDA7IGkgPCA0 OyBpKyspIHsKKwkJCXUzMiBzdGFydCA9IGkgKiBxdWFydGVyOworCQkJdTMyIGVuZCA9IHN0YXJ0 ICsgcXVhcnRlcjsKKworCQkJcmV0ID0gZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIHN0YXJ0 LCBlbmQsIHF1YXJ0ZXIsIHBzLCAmYmxvY2tzLCAwKTsKKwkJCUtVTklUX0FTU0VSVF9FUV9NU0co dGVzdCwgcmV0LCAwLAorCQkJCQkgICAgImV4YWN0LXJhbmdlIGFsbG9jIHF1YXJ0ZXIgJWQgWyV4 LCAleCkgZmFpbGVkXG4iLAorCQkJCQkgICAgaSwgc3RhcnQsIGVuZCk7CisJCX0KKwkJS1VOSVRf RVhQRUNUX0VRKHRlc3QsIG1tLmF2YWlsLCAwVUxMKTsKKwkJZ3B1X2J1ZGR5X2ZyZWVfbGlzdCgm bW0sICZibG9ja3MsIDApOworCX0KKworCWdwdV9idWRkeV9maW5pKCZtbSk7CisKKwkvKgorCSAq IE1pbmltdW0gY2h1bmstc2l6ZSBleGFjdCByYW5nZSBhdCB2YXJpb3VzIG9mZnNldHMuCisJICog QWxsb2NhdGUgc2luZ2xlLXBhZ2UgZXhhY3QgcmFuZ2VzIGF0IHRoZSBzdGFydCwgbWlkZGxlIGFu ZCBlbmQuCisJICovCisJS1VOSVRfQVNTRVJUX0ZBTFNFKHRlc3QsIGdwdV9idWRkeV9pbml0KCZt bSwgbW1fc2l6ZSwgcHMpKTsKKworCXJldCA9IGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAw LCBwcywgcHMsIHBzLCAmYmxvY2tzLCAwKTsKKwlLVU5JVF9BU1NFUlRfRVEodGVzdCwgcmV0LCAw KTsKKworCXJldCA9IGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCBtbV9zaXplIC8gMiwgbW1f c2l6ZSAvIDIgKyBwcywgcHMsIHBzLCAmYmxvY2tzLCAwKTsKKwlLVU5JVF9BU1NFUlRfRVEodGVz dCwgcmV0LCAwKTsKKworCXJldCA9IGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCBtbV9zaXpl IC0gcHMsIG1tX3NpemUsIHBzLCBwcywgJmJsb2NrcywgMCk7CisJS1VOSVRfQVNTRVJUX0VRKHRl c3QsIHJldCwgMCk7CisKKwl0b3RhbCA9IDA7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShibG9jaywg JmJsb2NrcywgbGluaykKKwkJdG90YWwgKz0gKHUzMilncHVfYnVkZHlfYmxvY2tfc2l6ZSgmbW0s IGJsb2NrKTsKKwlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgdG90YWwsIDMgKiBwcyk7CisKKwlncHVf YnVkZHlfZnJlZV9saXN0KCZtbSwgJmJsb2NrcywgMCk7CisJZ3B1X2J1ZGR5X2ZpbmkoJm1tKTsK KworCS8qCisJICogTm9uIHBvd2VyLW9mLXR3byBtbSBzaXplIChtdWx0aXBsZSByb290cykuCisJ ICogRXhhY3QtcmFuZ2UgYWxsb2NhdGlvbnMgdGhhdCBzcGFuIHJvb3QgYm91bmRhcmllcyBtdXN0 IHN0aWxsIHdvcmsuCisJICovCisJbW1fc2l6ZSA9IFNaXzRNICsgU1pfMk0gKyBTWl8xTTsgLyog NyBNaUIsIHRocmVlIHJvb3RzICovCisKKwlLVU5JVF9BU1NFUlRfRkFMU0UodGVzdCwgZ3B1X2J1 ZGR5X2luaXQoJm1tLCBtbV9zaXplLCBwcykpOworCUtVTklUX0VYUEVDVF9HVCh0ZXN0LCBtbS5u X3Jvb3RzLCAxVSk7CisKKwkvKiBBbGxvY2F0ZSBmaXJzdCA0TSByb290IGV4YWN0bHkgKi8KKwly ZXQgPSBncHVfYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwgMCwgU1pfNE0sIFNaXzRNLCBwcywgJmJs b2NrcywgMCk7CisJS1VOSVRfQVNTRVJUX0VRKHRlc3QsIHJldCwgMCk7CisKKwkvKiBBbGxvY2F0 ZSBzZWNvbmQgcm9vdCAoNE0tNk0pIGV4YWN0bHkgKi8KKwlyZXQgPSBncHVfYnVkZHlfYWxsb2Nf YmxvY2tzKCZtbSwgU1pfNE0sIFNaXzRNICsgU1pfMk0sIFNaXzJNLCBwcywgJmJsb2NrcywgMCk7 CisJS1VOSVRfQVNTRVJUX0VRKHRlc3QsIHJldCwgMCk7CisKKwkvKiBBbGxvY2F0ZSB0aGlyZCBy b290ICg2TS03TSkgZXhhY3RseSAqLworCXJldCA9IGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1t LCBTWl80TSArIFNaXzJNLCBtbV9zaXplLCBTWl8xTSwgcHMsICZibG9ja3MsIDApOworCUtVTklU X0FTU0VSVF9FUSh0ZXN0LCByZXQsIDApOworCisJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIG1tLmF2 YWlsLCAwVUxMKTsKKwlncHVfYnVkZHlfZnJlZV9saXN0KCZtbSwgJmJsb2NrcywgMCk7CisKKwkv KiBDcm9zcy1yb290IGV4YWN0LXJhbmdlOiB0aGUgZW50aXJlIG5vbi1wb3QgbW0gKi8KKwlyZXQg PSBncHVfYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwgMCwgbW1fc2l6ZSwgbW1fc2l6ZSwgcHMsICZi bG9ja3MsIDApOworCUtVTklUX0FTU0VSVF9FUSh0ZXN0LCByZXQsIDApOworCUtVTklUX0VYUEVD VF9FUSh0ZXN0LCBtbS5hdmFpbCwgMFVMTCk7CisKKwlncHVfYnVkZHlfZnJlZV9saXN0KCZtbSwg JmJsb2NrcywgMCk7CisJZ3B1X2J1ZGR5X2ZpbmkoJm1tKTsKKworCS8qCisJICogUmFuZG9taXpl ZCBleGFjdC1yYW5nZSBhbGxvY2F0aW9ucy4KKwkgKiBEaXZpZGUgdGhlIG1tIGludG8gTiByYW5k b20tc2l6ZWQsIGNvbnRpZ3VvdXMsIHBhZ2UtYWxpZ25lZCBzbGljZXMKKwkgKiBhbmQgYWxsb2Nh dGUgZWFjaCBhcyBhbiBleGFjdCByYW5nZSBpbiByYW5kb20gb3JkZXIuCisJICovCisJbW1fc2l6 ZSA9IFNaXzE2TTsKKwlLVU5JVF9BU1NFUlRfRkFMU0UodGVzdCwgZ3B1X2J1ZGR5X2luaXQoJm1t LCBtbV9zaXplLCBwcykpOworCisJeworI2RlZmluZSBOX1JBTkRfUkFOR0VTIDE2CisJCXUzMiBy YW5nZXNbTl9SQU5EX1JBTkdFUyArIDFdOyAvKiBib3VuZGFyaWVzICovCisJCXUzMiBvcmRlcl9h cnJbTl9SQU5EX1JBTkdFU107CisJCXUzMiByZW1haW5pbmcgPSBtbV9zaXplOworCQlpbnQgaTsK KworCQlyYW5nZXNbMF0gPSAwOworCQlmb3IgKGkgPSAwOyBpIDwgTl9SQU5EX1JBTkdFUyAtIDE7 IGkrKykgeworCQkJdTMyIG1heF9jaHVuayA9IHJlbWFpbmluZyAtIChOX1JBTkRfUkFOR0VTIC0g MSAtIGkpICogcHM7CisJCQl1MzIgc3ogPSBtYXgocm91bmRfdXAocHJhbmRvbV91MzJfc3RhdGUo JnBybmcpICUgbWF4X2NodW5rLCBwcyksIHBzKTsKKworCQkJcmFuZ2VzW2kgKyAxXSA9IHJhbmdl c1tpXSArIHN6OworCQkJcmVtYWluaW5nIC09IHN6OworCQl9CisJCXJhbmdlc1tOX1JBTkRfUkFO R0VTXSA9IG1tX3NpemU7CisKKwkJLyogQ3JlYXRlIGEgcmFuZG9tIG9yZGVyICovCisJCWZvciAo aSA9IDA7IGkgPCBOX1JBTkRfUkFOR0VTOyBpKyspCisJCQlvcmRlcl9hcnJbaV0gPSBpOworCQlm b3IgKGkgPSBOX1JBTkRfUkFOR0VTIC0gMTsgaSA+IDA7IGktLSkgeworCQkJdTMyIGogPSBwcmFu ZG9tX3UzMl9zdGF0ZSgmcHJuZykgJSAoaSArIDEpOworCQkJdTMyIHRtcF92YWwgPSBvcmRlcl9h cnJbaV07CisKKwkJCW9yZGVyX2FycltpXSA9IG9yZGVyX2FycltqXTsKKwkJCW9yZGVyX2Fycltq XSA9IHRtcF92YWw7CisJCX0KKworCQlmb3IgKGkgPSAwOyBpIDwgTl9SQU5EX1JBTkdFUzsgaSsr KSB7CisJCQl1MzIgaWR4ID0gb3JkZXJfYXJyW2ldOworCQkJdTMyIHN0YXJ0ID0gcmFuZ2VzW2lk eF07CisJCQl1MzIgZW5kID0gcmFuZ2VzW2lkeCArIDFdOworCQkJdTMyIHN6ID0gZW5kIC0gc3Rh cnQ7CisKKwkJCXJldCA9IGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCBzdGFydCwgZW5kLCBz eiwgcHMsICZibG9ja3MsIDApOworCQkJS1VOSVRfQVNTRVJUX0VRX01TRyh0ZXN0LCByZXQsIDAs CisJCQkJCSAgICAicmFuZG9tIGV4YWN0LXJhbmdlIFsleCwgJXgpIHN6PSV4IGZhaWxlZFxuIiwK KwkJCQkJICAgIHN0YXJ0LCBlbmQsIHN6KTsKKwkJfQorCisJCUtVTklUX0VYUEVDVF9FUSh0ZXN0 LCBtbS5hdmFpbCwgMFVMTCk7CisJCWdwdV9idWRkeV9mcmVlX2xpc3QoJm1tLCAmYmxvY2tzLCAw KTsKKyN1bmRlZiBOX1JBTkRfUkFOR0VTCisJfQorCisJZ3B1X2J1ZGR5X2ZpbmkoJm1tKTsKKwor CS8qCisJICogTmVnYXRpdmUgY2FzZSAtIHBhcnRpYWxseSBhbGxvY2F0ZWQgcmFuZ2UuCisJICog QWxsb2NhdGUgdGhlIGZpcnN0IGhhbGYsIHRoZW4gdHJ5IHRvIGV4YWN0LXJhbmdlIGFsbG9jYXRl IHRoZSBmdWxsCisJICogbW0uIFRoaXMgbXVzdCBmYWlsIGJlY2F1c2UgdGhlIGZpcnN0IGhhbGYg aXMgYWxyZWFkeSBvY2N1cGllZC4KKwkgKi8KKwltbV9zaXplID0gU1pfMTZNOworCUtVTklUX0FT U0VSVF9GQUxTRSh0ZXN0LCBncHVfYnVkZHlfaW5pdCgmbW0sIG1tX3NpemUsIHBzKSk7CisKKwly ZXQgPSBncHVfYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwgMCwgbW1fc2l6ZSAvIDIsIG1tX3NpemUg LyAyLCBwcywgJmJsb2NrcywgMCk7CisJS1VOSVRfQVNTRVJUX0VRKHRlc3QsIHJldCwgMCk7CisK KwlyZXQgPSBncHVfYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwgMCwgbW1fc2l6ZSwgbW1fc2l6ZSwg cHMsICZ0bXAsIDApOworCUtVTklUX0VYUEVDVF9ORV9NU0codGVzdCwgcmV0LCAwLAorCQkJICAg ICJleGFjdC1yYW5nZSBhbGxvYyBzaG91bGQgZmFpbCB3aGVuIHJhbmdlIGlzIHBhcnRpYWxseSB1 c2VkXG4iKTsKKworCS8qIEFsc28gdHJ5IHRoZSBhbHJlYWR5LW9jY3VwaWVkIHN1Yi1yYW5nZSBk aXJlY3RseSAqLworCXJldCA9IGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBtbV9zaXpl IC8gMiwgbW1fc2l6ZSAvIDIsIHBzLCAmdG1wLCAwKTsKKwlLVU5JVF9FWFBFQ1RfTkVfTVNHKHRl c3QsIHJldCwgMCwKKwkJCSAgICAiZG91YmxlIGFsbG9jIG9mIHNhbWUgZXhhY3QgcmFuZ2Ugc2hv dWxkIGZhaWxcbiIpOworCisJLyogVGhlIGZyZWUgc2Vjb25kIGhhbGYgc2hvdWxkIHN0aWxsIGJl IGFsbG9jYXRhYmxlICovCisJcmV0ID0gZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIG1tX3Np emUgLyAyLCBtbV9zaXplLCBtbV9zaXplIC8gMiwgcHMsICZibG9ja3MsIDApOworCUtVTklUX0FT U0VSVF9FUSh0ZXN0LCByZXQsIDApOworCisJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIG1tLmF2YWls LCAwVUxMKTsKKwlncHVfYnVkZHlfZnJlZV9saXN0KCZtbSwgJmJsb2NrcywgMCk7CisJZ3B1X2J1 ZGR5X2ZpbmkoJm1tKTsKKworCS8qCisJICogTmVnYXRpdmUgY2FzZSAtIGNoZWNrZXJib2FyZCBw YXJ0aWFsIGFsbG9jYXRpb24uCisJICogQWxsb2NhdGUgZXZlcnkgb3RoZXIgcGFnZS1zaXplZCBj aHVuayBpbiBhIHNtYWxsIG1tLCB0aGVuIHRyeSB0bworCSAqIGV4YWN0LXJhbmdlIGFsbG9jYXRl IGEgcmFuZ2UgY292ZXJpbmcgdHdvIHBhZ2VzIChvbmUgYWxsb2NhdGVkLCBvbmUKKwkgKiBmcmVl KS4gVGhpcyBtdXN0IGZhaWwuCisJICovCisJbW1fc2l6ZSA9IFNaXzY0SzsKKwlLVU5JVF9BU1NF UlRfRkFMU0UodGVzdCwgZ3B1X2J1ZGR5X2luaXQoJm1tLCBtbV9zaXplLCBwcykpOworCisJewor CQl1MzIgb2ZmOworCisJCWZvciAob2ZmID0gMDsgb2ZmIDwgbW1fc2l6ZTsgb2ZmICs9IDIgKiBw cykgeworCQkJcmV0ID0gZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIG9mZiwgb2ZmICsgcHMs IHBzLCBwcywgJmJsb2NrcywgMCk7CisJCQlLVU5JVF9BU1NFUlRfRVEodGVzdCwgcmV0LCAwKTsK KwkJfQorCisJCS8qIFRyeSBleGFjdCByYW5nZSBvdmVyIGEgcGFpciBbYWxsb2NhdGVkLCBmcmVl XSAqLworCQlyZXQgPSBncHVfYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwgMCwgMiAqIHBzLCAyICog cHMsIHBzLCAmdG1wLCAwKTsKKwkJS1VOSVRfRVhQRUNUX05FX01TRyh0ZXN0LCByZXQsIDAsCisJ CQkJICAgICJleGFjdC1yYW5nZSBvdmVyIHBhcnRpYWxseSBhbGxvY2F0ZWQgcGFpciBzaG91bGQg ZmFpbFxuIik7CisKKwkJLyogVGhlIGZyZWUgcGFnZXMgaW5kaXZpZHVhbGx5IHNob3VsZCBzdGls bCB3b3JrICovCisJCXJldCA9IGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCBwcywgMiAqIHBz LCBwcywgcHMsICZibG9ja3MsIDApOworCQlLVU5JVF9BU1NFUlRfRVEodGVzdCwgcmV0LCAwKTsK KworCQlncHVfYnVkZHlfZnJlZV9saXN0KCZtbSwgJmJsb2NrcywgMCk7CisJfQorCisJZ3B1X2J1 ZGR5X2ZpbmkoJm1tKTsKKworCS8qIE5lZ2F0aXZlIGNhc2UgLSBtaXNhbGlnbmVkIHN0YXJ0L2Vu ZC9zaXplICovCisJbW1fc2l6ZSA9IFNaXzE2TTsKKwlLVU5JVF9BU1NFUlRfRkFMU0UodGVzdCwg Z3B1X2J1ZGR5X2luaXQoJm1tLCBtbV9zaXplLCBwcykpOworCisJLyogc3RhcnQgbm90IGFsaWdu ZWQgdG8gY2h1bmtfc2l6ZSAqLworCXJldCA9IGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCBw cyAvIDIsIHBzIC8gMiArIHBzLCBwcywgcHMsICZ0bXAsIDApOworCUtVTklUX0VYUEVDVF9ORSh0 ZXN0LCByZXQsIDApOworCisJLyogc2l6ZSBub3QgYWxpZ25lZCAqLworCXJldCA9IGdwdV9idWRk eV9hbGxvY19ibG9ja3MoJm1tLCAwLCBwcyArIDEsIHBzICsgMSwgcHMsICZ0bXAsIDApOworCUtV TklUX0VYUEVDVF9ORSh0ZXN0LCByZXQsIDApOworCisJLyogZW5kIGV4Y2VlZHMgbW0gc2l6ZSAq LworCXJldCA9IGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCBtbV9zaXplLCBtbV9zaXplICsg cHMsIHBzLCBwcywgJnRtcCwgMCk7CisJS1VOSVRfRVhQRUNUX05FKHRlc3QsIHJldCwgMCk7CisK KwlncHVfYnVkZHlfZmluaSgmbW0pOworCisJLyoKKwkgKiBGcmVlIGFuZCByZS1hbGxvY2F0ZSB0 aGUgc2FtZSBleGFjdCByYW5nZS4KKwkgKiBUaGlzIGV4ZXJjaXNlcyBtZXJnZS1vbi1mcmVlIGZv bGxvd2VkIGJ5IGV4YWN0LXJhbmdlIHJlLXNwbGl0LgorCSAqLworCW1tX3NpemUgPSBTWl8xNk07 CisJS1VOSVRfQVNTRVJUX0ZBTFNFKHRlc3QsIGdwdV9idWRkeV9pbml0KCZtbSwgbW1fc2l6ZSwg cHMpKTsKKworCXsKKwkJaW50IGk7CisKKwkJZm9yIChpID0gMDsgaSA8IDU7IGkrKykgeworCQkJ cmV0ID0gZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIFNaXzRNLCBTWl80TSArIFNaXzJNLAor CQkJCQkJICAgICBTWl8yTSwgcHMsICZibG9ja3MsIDApOworCQkJS1VOSVRfQVNTRVJUX0VRX01T Ryh0ZXN0LCByZXQsIDAsCisJCQkJCSAgICAicmUtYWxsb2MgaXRlcmF0aW9uICVkIGZhaWxlZFxu IiwgaSk7CisKKwkJCXRvdGFsID0gMDsKKwkJCWxpc3RfZm9yX2VhY2hfZW50cnkoYmxvY2ssICZi bG9ja3MsIGxpbmspIHsKKwkJCQl1NjQgb2Zmc2V0ID0gZ3B1X2J1ZGR5X2Jsb2NrX29mZnNldChi bG9jayk7CisJCQkJdTY0IGJzaXplID0gZ3B1X2J1ZGR5X2Jsb2NrX3NpemUoJm1tLCBibG9jayk7 CisKKwkJCQlLVU5JVF9FWFBFQ1RfR0UodGVzdCwgb2Zmc2V0LCAodTY0KVNaXzRNKTsKKwkJCQlL VU5JVF9FWFBFQ1RfTEUodGVzdCwgb2Zmc2V0ICsgYnNpemUsICh1NjQpKFNaXzRNICsgU1pfMk0p KTsKKwkJCQl0b3RhbCArPSAodTMyKWJzaXplOworCQkJfQorCQkJS1VOSVRfRVhQRUNUX0VRKHRl c3QsIHRvdGFsLCBTWl8yTSk7CisKKwkJCWdwdV9idWRkeV9mcmVlX2xpc3QoJm1tLCAmYmxvY2tz LCAwKTsKKwkJfQorCisJCUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBtbS5hdmFpbCwgKHU2NCltbV9z aXplKTsKKwl9CisKKwlncHVfYnVkZHlfZmluaSgmbW0pOworCisJLyoKKwkgKiBWYXJpb3VzIHBv d2VyLW9mLXR3byBleGFjdCByYW5nZXMgd2l0aGluIGEgbGFyZ2UgbW0uCisJICogQWxsb2NhdGUg bm9uLW92ZXJsYXBwaW5nIHBvd2VyLW9mLXR3byBleGFjdCByYW5nZXMgYXQgdGhlaXIgbmF0dXJh bAorCSAqIGFsaWdubWVudCwgdmFsaWRhdGluZyB0aGF0IHRoZSBhbGxvY2F0b3IgaGFuZGxlcyBk aWZmZXJlbnQgb3JkZXJzLgorCSAqLworCW1tX3NpemUgPSBTWl8xNk07CisJS1VOSVRfQVNTRVJU X0ZBTFNFKHRlc3QsIGdwdV9idWRkeV9pbml0KCZtbSwgbW1fc2l6ZSwgcHMpKTsKKworCS8qIEFs bG9jYXRlIDRLIGF0IG9mZnNldCAwICovCisJcmV0ID0gZ3B1X2J1ZGR5X2FsbG9jX2Jsb2Nrcygm bW0sIDAsIFNaXzRLLCBTWl80SywgcHMsICZibG9ja3MsIDApOworCUtVTklUX0FTU0VSVF9FUSh0 ZXN0LCByZXQsIDApOworCisJLyogQWxsb2NhdGUgNjRLIGF0IG9mZnNldCA2NEsgKi8KKwlyZXQg PSBncHVfYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwgU1pfNjRLLCBTWl82NEsgKyBTWl82NEssIFNa XzY0SywgcHMsICZibG9ja3MsIDApOworCUtVTklUX0FTU0VSVF9FUSh0ZXN0LCByZXQsIDApOwor CisJLyogQWxsb2NhdGUgMU0gYXQgb2Zmc2V0IDFNICovCisJcmV0ID0gZ3B1X2J1ZGR5X2FsbG9j X2Jsb2NrcygmbW0sIFNaXzFNLCBTWl8xTSArIFNaXzFNLCBTWl8xTSwgcHMsICZibG9ja3MsIDAp OworCUtVTklUX0FTU0VSVF9FUSh0ZXN0LCByZXQsIDApOworCisJLyogQWxsb2NhdGUgNE0gYXQg b2Zmc2V0IDRNICovCisJcmV0ID0gZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIFNaXzRNLCBT Wl80TSArIFNaXzRNLCBTWl80TSwgcHMsICZibG9ja3MsIDApOworCUtVTklUX0FTU0VSVF9FUSh0 ZXN0LCByZXQsIDApOworCisJdG90YWwgPSAwOworCWxpc3RfZm9yX2VhY2hfZW50cnkoYmxvY2ss ICZibG9ja3MsIGxpbmspCisJCXRvdGFsICs9ICh1MzIpZ3B1X2J1ZGR5X2Jsb2NrX3NpemUoJm1t LCBibG9jayk7CisJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHRvdGFsLCBTWl80SyArIFNaXzY0SyAr IFNaXzFNICsgU1pfNE0pOworCisJZ3B1X2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZibG9ja3MsIDAp OworCWdwdV9idWRkeV9maW5pKCZtbSk7Cit9CisKIHN0YXRpYyB2b2lkIGdwdV90ZXN0X2J1ZGR5 X2FsbG9jX2NsZWFyKHN0cnVjdCBrdW5pdCAqdGVzdCkKIHsKIAl1bnNpZ25lZCBsb25nIG5fcGFn ZXMsIHRvdGFsLCBpID0gMDsKQEAgLTkwOSw2ICsxMjM1LDcgQEAgc3RhdGljIHN0cnVjdCBrdW5p dF9jYXNlIGdwdV9idWRkeV90ZXN0c1tdID0gewogCUtVTklUX0NBU0UoZ3B1X3Rlc3RfYnVkZHlf YWxsb2NfcGF0aG9sb2dpY2FsKSwKIAlLVU5JVF9DQVNFKGdwdV90ZXN0X2J1ZGR5X2FsbG9jX2Nv bnRpZ3VvdXMpLAogCUtVTklUX0NBU0UoZ3B1X3Rlc3RfYnVkZHlfYWxsb2NfY2xlYXIpLAorCUtV TklUX0NBU0UoZ3B1X3Rlc3RfYnVkZHlfYWxsb2NfcmFuZ2UpLAogCUtVTklUX0NBU0UoZ3B1X3Rl c3RfYnVkZHlfYWxsb2NfcmFuZ2VfYmlhcyksCiAJS1VOSVRfQ0FTRV9TTE9XKGdwdV90ZXN0X2J1 ZGR5X2ZyYWdtZW50YXRpb25fcGVyZm9ybWFuY2UpLAogCUtVTklUX0NBU0UoZ3B1X3Rlc3RfYnVk ZHlfYWxsb2NfZXhjZWVkc19tYXhfb3JkZXIpLAotLSAKMi41Mi4wCgo=