Received: by 2002:a05:6358:111d:b0:dc:6189:e246 with SMTP id f29csp360359rwi; Wed, 2 Nov 2022 12:49:15 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5aj9S8uDBT9swTUFL6EdklLbwZ4xf9+Ce1//3Gs8oP2YlOAw1uc60FmOZUkI7VV56VD7GT X-Received: by 2002:a05:6a00:8cb:b0:52c:6962:2782 with SMTP id s11-20020a056a0008cb00b0052c69622782mr26457760pfu.81.1667418555310; Wed, 02 Nov 2022 12:49:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667418555; cv=none; d=google.com; s=arc-20160816; b=HaCTj/Ud4WHsavscYyBg3XxNm/yyFlvxcwNFJRESfoSEXU9uw4BxuWlBDJHXCFvIWb 74CLCPmohnW/lqpcOV1DgHVE/9XjjCCGKXixd9tG83yQThMHRG+ZmNLdv2U5vaUsLbBR O1DM0DsqjVrkORAqlbOQWiaVKpEap6U/OuJhBJPKRAuVFf9xIPaQC2ZLvYae90PGd1uV LIsq6T4XPLuA+OJyWg/JYGLjs9lL0HX1GVgFKbirhR+LbDhVJtowwiAtFBVCfv/fQp5a BmMLHkZHbCVCvjBPECfH37tprjrJRiAFanWsvJvCHqXzrxeObfoF6/zZZSixVgtGzCph lHJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:references:in-reply-to:date:cc:to:from :subject:message-id:dkim-signature; bh=r6OtmaXLBdyHRPuL2RE6D7xoZYLlR5v/PGvxOOk7Z+Q=; b=njKd96tuKWy2ZSeOqPTTTkV1YmhDYTSKF5Xu0ZR6XKGDnWRSDoGWp+0TteiJeAC83S t/rnCsv4aNMSmvlC96XFlJl8BFiuhSEA6Z0MFvH7bnymoGyq0E+pdexz1lR2Eqg/ufhv lJq6B13NivOYVnYs/AjWK31EQ2AEEiNFEbsJikuKzwQaRvPOd9eS2Ql8mlwLoIHDvaQp mxhy8STJfTnNVnvlmHsn5ZnALl24AVB2biSaMqXiUlm9+UrKQuE+/yQfxel0I0mWoYyx B4eScvB+dTD5jivoxrVqo5NTFQzuHfhdR6AroyrI9+hSri3YdhMzEsfx6EwGwV7tPM7Q 1wVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=CePBDW5i; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id pa17-20020a17090b265100b0020c060f42cbsi3116196pjb.98.2022.11.02.12.49.00; Wed, 02 Nov 2022 12:49:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=CePBDW5i; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231276AbiKBT3V (ORCPT + 98 others); Wed, 2 Nov 2022 15:29:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50418 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229640AbiKBT3T (ORCPT ); Wed, 2 Nov 2022 15:29:19 -0400 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AC7A5236; Wed, 2 Nov 2022 12:29:17 -0700 (PDT) Received: from pps.filterd (m0098417.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2A2InUjZ016746; Wed, 2 Nov 2022 19:29:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : subject : from : to : cc : date : in-reply-to : references : content-type : content-transfer-encoding : mime-version; s=pp1; bh=r6OtmaXLBdyHRPuL2RE6D7xoZYLlR5v/PGvxOOk7Z+Q=; b=CePBDW5imyIcEstRzL/UhDSow6SvFMrZ9kWMqcmHB62Dzm9+0UbfzzdvPBT0cPKpeMrt kQcf2RGwXUwQWNvShvHPGZynhvPvwhrCr7u1RkDSEBqyegOhn8kM6knckwib7jPEgYm7 Nal+PmPqe2V1VAh4i3yGeBlDpc+NxpaCIUwAHDYmdbAbpvKOB4p6q3CqtY8E9Y5LOr9A KLi4HbEqRUseDK1WBkpJTDDWw81DE/uJChO6KMGEkMaDqg5OwbhqXicEbMns69SqvE/T /0VQCd8ZO5iTsEFWf+HWr8myJAnlOdAkNBsFZgLxPAH1pT4T7ayve5wGcunn9nVasQIM AA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3kktn0hqp9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 02 Nov 2022 19:29:08 +0000 Received: from m0098417.ppops.net (m0098417.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 2A2HjJnI021116; Wed, 2 Nov 2022 19:29:08 GMT Received: from ppma02dal.us.ibm.com (a.bd.3ea9.ip4.static.sl-reverse.com [169.62.189.10]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3kktn0hqnv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 02 Nov 2022 19:29:08 +0000 Received: from pps.filterd (ppma02dal.us.ibm.com [127.0.0.1]) by ppma02dal.us.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 2A2JKpcY014583; Wed, 2 Nov 2022 19:29:07 GMT Received: from b01cxnp23034.gho.pok.ibm.com (b01cxnp23034.gho.pok.ibm.com [9.57.198.29]) by ppma02dal.us.ibm.com with ESMTP id 3kgutaktys-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 02 Nov 2022 19:29:07 +0000 Received: from smtpav05.wdc07v.mail.ibm.com ([9.208.128.117]) by b01cxnp23034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 2A2JT5n710158610 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 2 Nov 2022 19:29:05 GMT Received: from smtpav05.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F288458067; Wed, 2 Nov 2022 19:29:04 +0000 (GMT) Received: from smtpav05.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B8C4658059; Wed, 2 Nov 2022 19:29:00 +0000 (GMT) Received: from li-479af74c-31f9-11b2-a85c-e4ddee11713b.ibm.com (unknown [9.65.225.56]) by smtpav05.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 2 Nov 2022 19:29:00 +0000 (GMT) Message-ID: Subject: Re: [PATCH v2 1/7] vfio/ccw: create a parent struct From: Eric Farman To: Matthew Rosato , Alex Williamson , Cornelia Huck , Jason Gunthorpe , Kevin Tian , Yi Liu Cc: Zhenyu Wang , Zhi Wang , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , David Airlie , Daniel Vetter , Halil Pasic , Vineeth Vijayan , Peter Oberparleiter , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , Tony Krowiak , Jason Herne , Harald Freudenberger , Diana Craciun , Eric Auger , Kirti Wankhede , Abhishek Sahu , Yishai Hadas , intel-gvt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org, kvm@vger.kernel.org Date: Wed, 02 Nov 2022 15:29:00 -0400 In-Reply-To: <20221102150152.2521475-2-farman@linux.ibm.com> References: <20221102150152.2521475-1-farman@linux.ibm.com> <20221102150152.2521475-2-farman@linux.ibm.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.44.4 (3.44.4-2.fc36) MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: uSbHgNZHEcyWpzujA5U2nv8HniRj0Fyr X-Proofpoint-ORIG-GUID: 3u_YCbs69k0fm7PrFvbmLa8afEzcVnj1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-02_14,2022-11-02_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 mlxscore=0 malwarescore=0 adultscore=0 mlxlogscore=999 phishscore=0 suspectscore=0 lowpriorityscore=0 priorityscore=1501 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211020125 X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gV2VkLCAyMDIyLTExLTAyIGF0IDE2OjAxICswMTAwLCBFcmljIEZhcm1hbiB3cm90ZToKPiBN b3ZlIHRoZSBzdHVmZiBhc3NvY2lhdGVkIHdpdGggdGhlIG1kZXYgcGFyZW50IChhbmQgdGh1cyB0 aGUKPiBzdWJjaGFubmVsIHN0cnVjdCkgaW50byBpdHMgb3duIHN0cnVjdCwgYW5kIGxlYXZlIHRo ZSByZXN0IGluCj4gdGhlIGV4aXN0aW5nIHByaXZhdGUgc3RydWN0dXJlLgo+IAo+IFRoZSBzdWJj aGFubmVsIHdpbGwgcG9pbnQgdG8gdGhlIHBhcmVudCwgYW5kIHRoZSBwYXJlbnQgd2lsbCBwb2lu dAo+IHRvIHRoZSBwcml2YXRlLCBmb3IgdGhlIGFyZWFzIHdoZXJlIG9uZSBvciBib3RoIGFyZSBu ZWVkZWQuIEZ1cnRoZXIKPiBzZXBhcmF0aW9uIG9mIHRoZXNlIHN0cnVjdHMgd2lsbCBmb2xsb3cu Cj4gCj4gU2lnbmVkLW9mZi1ieTogRXJpYyBGYXJtYW4gPGZhcm1hbkBsaW51eC5pYm0uY29tPgo+ IC0tLQo+IMKgZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19kcnYuY8KgwqDCoMKgIHwgOTYgKysr KysrKysrKysrKysrKysrKysrKysrLS0tCj4gLS0KPiDCoGRyaXZlcnMvczM5MC9jaW8vdmZpb19j Y3dfb3BzLmPCoMKgwqDCoCB8wqAgOCArKy0KPiDCoGRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3df cHJpdmF0ZS5oIHwgMjAgKysrKy0tCj4gwqAzIGZpbGVzIGNoYW5nZWQsIDEwMCBpbnNlcnRpb25z KCspLCAyNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2Npby92 ZmlvX2Njd19kcnYuYwo+IGIvZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19kcnYuYwo+IGluZGV4 IDdmNTQwMmZlODU3YS4uMDYwMjJmYjM3YjlkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvczM5MC9j aW8vdmZpb19jY3dfZHJ2LmMKPiArKysgYi9kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X2Rydi5j Cj4gQEAgLTM2LDEwICszNiwxOSBAQCBkZWJ1Z19pbmZvX3QgKnZmaW9fY2N3X2RlYnVnX3RyYWNl X2lkOwo+IMKgICovCj4gwqBpbnQgdmZpb19jY3dfc2NoX3F1aWVzY2Uoc3RydWN0IHN1YmNoYW5u ZWwgKnNjaCkKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdmZpb19jY3dfcHJpdmF0ZSAq cHJpdmF0ZSA9IGRldl9nZXRfZHJ2ZGF0YSgmc2NoLQo+ID5kZXYpOwo+ICvCoMKgwqDCoMKgwqDC oHN0cnVjdCB2ZmlvX2Njd19wYXJlbnQgKnBhcmVudCA9IGRldl9nZXRfZHJ2ZGF0YSgmc2NoLT5k ZXYpOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB2ZmlvX2Njd19wcml2YXRlICpwcml2YXRlID0g ZGV2X2dldF9kcnZkYXRhKCZwYXJlbnQtCj4gPmRldik7Cj4gwqDCoMKgwqDCoMKgwqDCoERFQ0xB UkVfQ09NUExFVElPTl9PTlNUQUNLKGNvbXBsZXRpb24pOwo+IMKgwqDCoMKgwqDCoMKgwqBpbnQg aXJldHJ5LCByZXQgPSAwOwo+IMKgCj4gK8KgwqDCoMKgwqDCoMKgLyoKPiArwqDCoMKgwqDCoMKg wqAgKiBQcm9iYWJseSBhbiBpbXBvc3NpYmxlIHNpdHVhdGlvbiwgYWZ0ZXIgYmVpbmcgY2FsbGVk Cj4gdGhyb3VnaAo+ICvCoMKgwqDCoMKgwqDCoCAqIEZTTSBjYWxsYmFja3MuIEJ1dCBpbiB0aGUg ZXZlbnQgaXQgZGlkLCByZWdpc3RlciBhIHdhcm5pbmcKPiArwqDCoMKgwqDCoMKgwqAgKiBhbmQg cmV0dXJuIGFzIGlmIHRoaW5ncyB3ZXJlIGZpbmUuCj4gK8KgwqDCoMKgwqDCoMKgICovCj4gK8Kg wqDCoMKgwqDCoMKgaWYgKFdBUk5fT04oIXByaXZhdGUpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiArCj4gwqDCoMKgwqDCoMKgwqDCoGlyZXRyeSA9IDI1NTsK PiDCoMKgwqDCoMKgwqDCoMKgZG8gewo+IMKgCj4gQEAgLTEyMSw3ICsxMzAsMjIgQEAgc3RhdGlj IHZvaWQgdmZpb19jY3dfY3J3X3RvZG8oc3RydWN0IHdvcmtfc3RydWN0Cj4gKndvcmspCj4gwqAg Ki8KPiDCoHN0YXRpYyB2b2lkIHZmaW9fY2N3X3NjaF9pcnEoc3RydWN0IHN1YmNoYW5uZWwgKnNj aCkKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdmZpb19jY3dfcHJpdmF0ZSAqcHJpdmF0 ZSA9IGRldl9nZXRfZHJ2ZGF0YSgmc2NoLQo+ID5kZXYpOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVj dCB2ZmlvX2Njd19wYXJlbnQgKnBhcmVudCA9IGRldl9nZXRfZHJ2ZGF0YSgmc2NoLT5kZXYpOwo+ ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB2ZmlvX2Njd19wcml2YXRlICpwcml2YXRlID0gZGV2X2dl dF9kcnZkYXRhKCZwYXJlbnQtCj4gPmRldik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qCj4gK8Kg wqDCoMKgwqDCoMKgICogVGhlIHN1YmNoYW5uZWwgc2hvdWxkIHN0aWxsIGJlIGRpc2FibGVkIGF0 IHRoaXMgcG9pbnQsCj4gK8KgwqDCoMKgwqDCoMKgICogc28gYW4gaW50ZXJydXB0IHdvdWxkIGJl IHF1aXRlIHN1cnByaXNpbmcuIEFzIHdpdGggYW4KPiArwqDCoMKgwqDCoMKgwqAgKiBpbnRlcnJ1 cHQgd2hpbGUgdGhlIEZTTSBpcyBjbG9zZWQsIGxldCdzIGF0dGVtcHQgdG8KPiArwqDCoMKgwqDC oMKgwqAgKiBkaXNhYmxlIHRoZSBzdWJjaGFubmVsIGFnYWluLgo+ICvCoMKgwqDCoMKgwqDCoCAq Lwo+ICvCoMKgwqDCoMKgwqDCoGlmICghcHJpdmF0ZSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBWRklPX0NDV19NU0dfRVZFTlQoMiwgInNjaCAleC4leC4lMDR4OiB1bmV4cGVj dGVkCj4gaW50ZXJydXB0XG4iLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgc2NoLT5zY2hpZC5jc3NpZCwgc2NoLT5zY2hpZC5zc2lkLCBzY2gtCj4gPnNj aGlkLnNjaF9ubyk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaW9fZGlz YWJsZV9zdWJjaGFubmVsKHNjaCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybjsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaW5jX2lycV9z dGF0KElSUUlPX0NJTyk7Cj4gwqDCoMKgwqDCoMKgwqDCoHZmaW9fY2N3X2ZzbV9ldmVudChwcml2 YXRlLCBWRklPX0NDV19FVkVOVF9JTlRFUlJVUFQpOwo+IEBAIC0yMDEsMTAgKzIyNSwxOSBAQCBz dGF0aWMgdm9pZCB2ZmlvX2Njd19mcmVlX3ByaXZhdGUoc3RydWN0Cj4gdmZpb19jY3dfcHJpdmF0 ZSAqcHJpdmF0ZSkKPiDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfZGVzdHJveSgmcHJpdmF0ZS0+aW9f bXV0ZXgpOwo+IMKgwqDCoMKgwqDCoMKgwqBrZnJlZShwcml2YXRlKTsKPiDCoH0KPiArCj4gK3N0 YXRpYyB2b2lkIHZmaW9fY2N3X2ZyZWVfcGFyZW50KHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB2ZmlvX2Njd19wYXJlbnQgKnBhcmVudCA9IGNvbnRhaW5l cl9vZihkZXYsIHN0cnVjdAo+IHZmaW9fY2N3X3BhcmVudCwgZGV2KTsKPiArCj4gK8KgwqDCoMKg wqDCoMKga2ZyZWUocGFyZW50KTsKPiArfQo+ICsKPiDCoHN0YXRpYyBpbnQgdmZpb19jY3dfc2No X3Byb2JlKHN0cnVjdCBzdWJjaGFubmVsICpzY2gpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBwbWN3ICpwbWN3ID0gJnNjaC0+c2NoaWIucG1jdzsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IHZmaW9fY2N3X3ByaXZhdGUgKnByaXZhdGU7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHZm aW9fY2N3X3BhcmVudCAqcGFyZW50Owo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgcmV0ID0gLUVOT01F TTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpZiAocG1jdy0+cWYpIHsKPiBAQCAtMjEzLDQxICsy NDYsNjIgQEAgc3RhdGljIGludCB2ZmlvX2Njd19zY2hfcHJvYmUoc3RydWN0IHN1YmNoYW5uZWwK PiAqc2NoKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FTk9ERVY7 Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+ICvCoMKgwqDCoMKgwqDCoHBhcmVudCA9IGt6YWxs b2Moc2l6ZW9mKCpwYXJlbnQpLCBHRlBfS0VSTkVMKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNf RVJSKHBhcmVudCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBQVFJf RVJSKHBhcmVudCk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGRldl9zZXRfbmFtZSgmcGFyZW50LT5k ZXYsICJwYXJlbnQiKTsKPiArwqDCoMKgwqDCoMKgwqBwYXJlbnQtPmRldi5wYXJlbnQgPSAmc2No LT5kZXY7Cj4gK8KgwqDCoMKgwqDCoMKgcGFyZW50LT5kZXYucmVsZWFzZSA9ICZ2ZmlvX2Njd19m cmVlX3BhcmVudDsKPiArwqDCoMKgwqDCoMKgwqByZXQgPSBkZXZpY2VfcmVnaXN0ZXIoJnBhcmVu dC0+ZGV2KTsKPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBnb3RvIG91dF9mcmVlOwo+ICsKPiDCoMKgwqDCoMKgwqDCoMKgcHJpdmF0ZSA9 IHZmaW9fY2N3X2FsbG9jX3ByaXZhdGUoc2NoKTsKPiAtwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJS KHByaXZhdGUpKQo+ICvCoMKgwqDCoMKgwqDCoGlmIChJU19FUlIocHJpdmF0ZSkpIHsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHV0X2RldmljZSgmcGFyZW50LT5kZXYpOwoKVGhp cyBzaG91bGQndmUgYmVlbiBkZXZpY2VfdW5yZWdpc3Rlci4gKEkgY291bGQgcmVhcnJhbmdlIHRo ZSBjb2RlIGEKYml0IHRvIGF2b2lkIHRoZSBtaXggb2YgcmV0dXJucy9nb3RvcyBhcm91bmQgaGVy ZSwgYnV0IHNpbmNlIHRoZSB3aG9sZQpzZXJpZXMgaXMgdHJ5aW5nIHRvIHNlcGFyYXRlIHRoZXNl IHR3byBzdHJ1Y3RzIHRoYXQgc2VlbXMgdW5uZWNlc3NhcnkuKQoKPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJldHVybiBQVFJfRVJSKHByaXZhdGUpOwo+ICvCoMKgwqDCoMKgwqDC oH0KPiDCoAo+IC3CoMKgwqDCoMKgwqDCoGRldl9zZXRfZHJ2ZGF0YSgmc2NoLT5kZXYsIHByaXZh dGUpOwo+ICvCoMKgwqDCoMKgwqDCoGRldl9zZXRfZHJ2ZGF0YSgmc2NoLT5kZXYsIHBhcmVudCk7 Cj4gK8KgwqDCoMKgwqDCoMKgZGV2X3NldF9kcnZkYXRhKCZwYXJlbnQtPmRldiwgcHJpdmF0ZSk7 Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqBwcml2YXRlLT5tZGV2X3R5cGUuc3lzZnNfbmFtZSA9ICJp byI7Cj4gLcKgwqDCoMKgwqDCoMKgcHJpdmF0ZS0+bWRldl90eXBlLnByZXR0eV9uYW1lID0gIkkv TyBzdWJjaGFubmVsIChOb24tUURJTykiOwo+IC3CoMKgwqDCoMKgwqDCoHByaXZhdGUtPm1kZXZf dHlwZXNbMF0gPSAmcHJpdmF0ZS0+bWRldl90eXBlOwo+IC3CoMKgwqDCoMKgwqDCoHJldCA9IG1k ZXZfcmVnaXN0ZXJfcGFyZW50KCZwcml2YXRlLT5wYXJlbnQsICZzY2gtPmRldiwKPiArwqDCoMKg wqDCoMKgwqBwYXJlbnQtPm1kZXZfdHlwZS5zeXNmc19uYW1lID0gImlvIjsKPiArwqDCoMKgwqDC oMKgwqBwYXJlbnQtPm1kZXZfdHlwZS5wcmV0dHlfbmFtZSA9ICJJL08gc3ViY2hhbm5lbCAoTm9u LVFESU8pIjsKPiArwqDCoMKgwqDCoMKgwqBwYXJlbnQtPm1kZXZfdHlwZXNbMF0gPSAmcGFyZW50 LT5tZGV2X3R5cGU7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0ID0gbWRldl9yZWdpc3Rlcl9wYXJlbnQo JnBhcmVudC0+cGFyZW50LCAmc2NoLT5kZXYsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnZmaW9fY2N3X21kZXZf ZHJpdmVyLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJpdmF0ZS0+bWRldl90eXBlcywgMSk7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBwYXJlbnQtPm1kZXZfdHlwZXMsIDEpOwo+IMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dF9mcmVlOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dF91bnJlZzsKPiDCoAo+IMKgwqDCoMKgwqDCoMKg wqBWRklPX0NDV19NU0dfRVZFTlQoNCwgImJvdW5kIHRvIHN1YmNoYW5uZWwgJXguJXguJTA0eFxu IiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHNjaC0+c2NoaWQuY3NzaWQsIHNjaC0+c2NoaWQuc3NpZCwKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNjaC0+c2NoaWQuc2NoX25vKTsKPiDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqAKPiArb3V0X3VucmVnOgo+ICvCoMKgwqDCoMKg wqDCoGRldmljZV91bnJlZ2lzdGVyKCZwYXJlbnQtPmRldik7Cj4gwqBvdXRfZnJlZToKPiArwqDC oMKgwqDCoMKgwqBkZXZfc2V0X2RydmRhdGEoJnBhcmVudC0+ZGV2LCBOVUxMKTsKPiDCoMKgwqDC oMKgwqDCoMKgZGV2X3NldF9kcnZkYXRhKCZzY2gtPmRldiwgTlVMTCk7Cj4gwqDCoMKgwqDCoMKg wqDCoHZmaW9fY2N3X2ZyZWVfcHJpdmF0ZShwcml2YXRlKTsKPiArwqDCoMKgwqDCoMKgwqBwdXRf ZGV2aWNlKCZwYXJlbnQtPmRldik7CgpXaGlsZSB0aGlzLi4uCgo+IMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgdm9pZCB2ZmlvX2Njd19zY2hfcmVtb3Zl KHN0cnVjdCBzdWJjaGFubmVsICpzY2gpCj4gwqB7Cj4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IHZm aW9fY2N3X3ByaXZhdGUgKnByaXZhdGUgPSBkZXZfZ2V0X2RydmRhdGEoJnNjaC0KPiA+ZGV2KTsK PiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdmZpb19jY3dfcGFyZW50ICpwYXJlbnQgPSBkZXZfZ2V0 X2RydmRhdGEoJnNjaC0+ZGV2KTsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdmZpb19jY3dfcHJp dmF0ZSAqcHJpdmF0ZSA9IGRldl9nZXRfZHJ2ZGF0YSgmcGFyZW50LQo+ID5kZXYpOwo+IMKgCj4g LcKgwqDCoMKgwqDCoMKgbWRldl91bnJlZ2lzdGVyX3BhcmVudCgmcHJpdmF0ZS0+cGFyZW50KTsK PiArwqDCoMKgwqDCoMKgwqBtZGV2X3VucmVnaXN0ZXJfcGFyZW50KCZwYXJlbnQtPnBhcmVudCk7 Cj4gwqAKPiArwqDCoMKgwqDCoMKgwqBkZXZpY2VfdW5yZWdpc3RlcigmcGFyZW50LT5kZXYpOwo+ IMKgwqDCoMKgwqDCoMKgwqBkZXZfc2V0X2RydmRhdGEoJnNjaC0+ZGV2LCBOVUxMKTsKPiDCoAo+ IMKgwqDCoMKgwqDCoMKgwqB2ZmlvX2Njd19mcmVlX3ByaXZhdGUocHJpdmF0ZSk7Cj4gK8KgwqDC oMKgwqDCoMKgcHV0X2RldmljZSgmcGFyZW50LT5kZXYpOwoKLi4uYW5kIHRoaXMgc2hvdWxkbid0 IGV2ZW4gYmUgdGhlcmUuIFNvcnJ5IGZvciB0aGUgYnJhaW4gZm9nLgoKPiDCoAo+IMKgwqDCoMKg wqDCoMKgwqBWRklPX0NDV19NU0dfRVZFTlQoNCwgInVuYm91bmQgZnJvbSBzdWJjaGFubmVsICV4 LiV4LiUwNHhcbiIsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzY2gtPnNjaGlkLmNzc2lkLCBzY2gtPnNjaGlkLnNzaWQsCj4gQEAgLTI1Niw3 ICszMTAsMTEgQEAgc3RhdGljIHZvaWQgdmZpb19jY3dfc2NoX3JlbW92ZShzdHJ1Y3QKPiBzdWJj aGFubmVsICpzY2gpCj4gwqAKPiDCoHN0YXRpYyB2b2lkIHZmaW9fY2N3X3NjaF9zaHV0ZG93bihz dHJ1Y3Qgc3ViY2hhbm5lbCAqc2NoKQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCB2Zmlv X2Njd19wcml2YXRlICpwcml2YXRlID0gZGV2X2dldF9kcnZkYXRhKCZzY2gtCj4gPmRldik7Cj4g K8KgwqDCoMKgwqDCoMKgc3RydWN0IHZmaW9fY2N3X3BhcmVudCAqcGFyZW50ID0gZGV2X2dldF9k cnZkYXRhKCZzY2gtPmRldik7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHZmaW9fY2N3X3ByaXZh dGUgKnByaXZhdGUgPSBkZXZfZ2V0X2RydmRhdGEoJnBhcmVudC0KPiA+ZGV2KTsKPiArCj4gK8Kg wqDCoMKgwqDCoMKgaWYgKFdBUk5fT04oIXByaXZhdGUpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm47Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdmZpb19jY3dfZnNtX2V2 ZW50KHByaXZhdGUsIFZGSU9fQ0NXX0VWRU5UX0NMT1NFKTsKPiDCoMKgwqDCoMKgwqDCoMKgdmZp b19jY3dfZnNtX2V2ZW50KHByaXZhdGUsIFZGSU9fQ0NXX0VWRU5UX05PVF9PUEVSKTsKPiBAQCAt Mjc0LDcgKzMzMiw4IEBAIHN0YXRpYyB2b2lkIHZmaW9fY2N3X3NjaF9zaHV0ZG93bihzdHJ1Y3QK PiBzdWJjaGFubmVsICpzY2gpCj4gwqAgKi8KPiDCoHN0YXRpYyBpbnQgdmZpb19jY3dfc2NoX2V2 ZW50KHN0cnVjdCBzdWJjaGFubmVsICpzY2gsIGludCBwcm9jZXNzKQo+IMKgewo+IC3CoMKgwqDC oMKgwqDCoHN0cnVjdCB2ZmlvX2Njd19wcml2YXRlICpwcml2YXRlID0gZGV2X2dldF9kcnZkYXRh KCZzY2gtCj4gPmRldik7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHZmaW9fY2N3X3BhcmVudCAq cGFyZW50ID0gZGV2X2dldF9kcnZkYXRhKCZzY2gtPmRldik7Cj4gK8KgwqDCoMKgwqDCoMKgc3Ry dWN0IHZmaW9fY2N3X3ByaXZhdGUgKnByaXZhdGUgPSBkZXZfZ2V0X2RydmRhdGEoJnBhcmVudC0K PiA+ZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9uZyBmbGFnczsKPiDCoMKgwqDC oMKgwqDCoMKgaW50IHJjID0gLUVBR0FJTjsKPiDCoAo+IEBAIC0yODcsOCArMzQ2LDEwIEBAIHN0 YXRpYyBpbnQgdmZpb19jY3dfc2NoX2V2ZW50KHN0cnVjdCBzdWJjaGFubmVsCj4gKnNjaCwgaW50 IHByb2Nlc3MpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgcmMgPSAwOwo+IMKgCj4gLcKgwqDCoMKg wqDCoMKgaWYgKGNpb191cGRhdGVfc2NoaWIoc2NoKSkKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdmZpb19jY3dfZnNtX2V2ZW50KHByaXZhdGUsIFZGSU9fQ0NXX0VWRU5UX05PVF9P UEVSKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAoY2lvX3VwZGF0ZV9zY2hpYihzY2gpKSB7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChwcml2YXRlKQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmZpb19jY3dfZnNtX2V2ZW50KHByaXZh dGUsCj4gVkZJT19DQ1dfRVZFTlRfTk9UX09QRVIpOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiDCoAo+ IMKgb3V0X3VubG9jazoKPiDCoMKgwqDCoMKgwqDCoMKgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShz Y2gtPmxvY2ssIGZsYWdzKTsKPiBAQCAtMzI2LDcgKzM4Nyw4IEBAIHN0YXRpYyB2b2lkIHZmaW9f Y2N3X3F1ZXVlX2NydyhzdHJ1Y3QKPiB2ZmlvX2Njd19wcml2YXRlICpwcml2YXRlLAo+IMKgc3Rh dGljIGludCB2ZmlvX2Njd19jaHBfZXZlbnQoc3RydWN0IHN1YmNoYW5uZWwgKnNjaCwKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCBjaHBfbGluayAqbGluaywgaW50IGV2ZW50KQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoHN0 cnVjdCB2ZmlvX2Njd19wcml2YXRlICpwcml2YXRlID0gZGV2X2dldF9kcnZkYXRhKCZzY2gtCj4g PmRldik7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHZmaW9fY2N3X3BhcmVudCAqcGFyZW50ID0g ZGV2X2dldF9kcnZkYXRhKCZzY2gtPmRldik7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHZmaW9f Y2N3X3ByaXZhdGUgKnByaXZhdGUgPSBkZXZfZ2V0X2RydmRhdGEoJnBhcmVudC0KPiA+ZGV2KTsK PiDCoMKgwqDCoMKgwqDCoMKgaW50IG1hc2sgPSBjaHBfc3NkX2dldF9tYXNrKCZzY2gtPnNzZF9p bmZvLCBsaW5rKTsKPiDCoMKgwqDCoMKgwqDCoMKgaW50IHJldHJ5ID0gMjU1Owo+IMKgCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmMKPiBiL2RyaXZlcnMvczM5 MC9jaW8vdmZpb19jY3dfb3BzLmMKPiBpbmRleCA2YWU0ZDAxMmQ4MDAuLmRjMDg0ODgzZDg3MiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jCj4gKysrIGIvZHJp dmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYwo+IEBAIC01NSw3ICs1NSw5IEBAIHN0YXRpYyBp bnQgdmZpb19jY3dfbWRldl9pbml0X2RldihzdHJ1Y3QKPiB2ZmlvX2RldmljZSAqdmRldikKPiDC oAo+IMKgc3RhdGljIGludCB2ZmlvX2Njd19tZGV2X3Byb2JlKHN0cnVjdCBtZGV2X2RldmljZSAq bWRldikKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdmZpb19jY3dfcHJpdmF0ZSAqcHJp dmF0ZSA9IGRldl9nZXRfZHJ2ZGF0YShtZGV2LQo+ID5kZXYucGFyZW50KTsKPiArwqDCoMKgwqDC oMKgwqBzdHJ1Y3Qgc3ViY2hhbm5lbCAqc2NoID0gdG9fc3ViY2hhbm5lbChtZGV2LT5kZXYucGFy ZW50KTsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdmZpb19jY3dfcGFyZW50ICpwYXJlbnQgPSBk ZXZfZ2V0X2RydmRhdGEoJnNjaC0+ZGV2KTsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdmZpb19j Y3dfcHJpdmF0ZSAqcHJpdmF0ZSA9IGRldl9nZXRfZHJ2ZGF0YSgmcGFyZW50LQo+ID5kZXYpOwo+ IMKgwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChwcml2 YXRlLT5zdGF0ZSA9PSBWRklPX0NDV19TVEFURV9OT1RfT1BFUikKPiBAQCAtMTAwLDcgKzEwMiw5 IEBAIHN0YXRpYyB2b2lkIHZmaW9fY2N3X21kZXZfcmVsZWFzZV9kZXYoc3RydWN0Cj4gdmZpb19k ZXZpY2UgKnZkZXYpCj4gwqAKPiDCoHN0YXRpYyB2b2lkIHZmaW9fY2N3X21kZXZfcmVtb3ZlKHN0 cnVjdCBtZGV2X2RldmljZSAqbWRldikKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdmZp b19jY3dfcHJpdmF0ZSAqcHJpdmF0ZSA9IGRldl9nZXRfZHJ2ZGF0YShtZGV2LQo+ID5kZXYucGFy ZW50KTsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgc3ViY2hhbm5lbCAqc2NoID0gdG9fc3ViY2hh bm5lbChtZGV2LT5kZXYucGFyZW50KTsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdmZpb19jY3df cGFyZW50ICpwYXJlbnQgPSBkZXZfZ2V0X2RydmRhdGEoJnNjaC0+ZGV2KTsKPiArwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgdmZpb19jY3dfcHJpdmF0ZSAqcHJpdmF0ZSA9IGRldl9nZXRfZHJ2ZGF0YSgm cGFyZW50LQo+ID5kZXYpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoFZGSU9fQ0NXX01TR19FVkVO VCgyLCAic2NoICV4LiV4LiUwNHg6IHJlbW92ZVxuIiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaXZhdGUtPnNjaC0+c2NoaWQuY3NzaWQs Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfcHJpdmF0ZS5oCj4gYi9k cml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X3ByaXZhdGUuaAo+IGluZGV4IGJkNWZiODE0NTZhZi4u MWY1OThkNThkOTY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfcHJp dmF0ZS5oCj4gKysrIGIvZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19wcml2YXRlLmgKPiBAQCAt NjcsNiArNjcsMjEgQEAgc3RydWN0IHZmaW9fY2N3X2NydyB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBjcnfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY3J3Owo+IMKgfTsKPiDCoAo+ICsv KioKPiArICogc3RydWN0IHZmaW9fY2N3X3BhcmVudAo+ICsgKgo+ICsgKiBAZGV2OiBlbWJlZGRl ZCBkZXZpY2Ugc3RydWN0Cj4gKyAqIEBwYXJlbnQ6IHBhcmVudCBkYXRhIHN0cnVjdHVyZXMgZm9y IG1kZXZzIGNyZWF0ZWQKPiArICogQG1kZXZfdHlwZShzKTogaWRlbnRpZnlpbmcgaW5mb3JtYXRp b24gZm9yIG1kZXZzIGNyZWF0ZWQKPiArICovCj4gK3N0cnVjdCB2ZmlvX2Njd19wYXJlbnQgewo+ ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBkZXZpY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2Owo+ ICsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWRldl9wYXJlbnTCoMKgwqDCoMKgwqBwYXJlbnQ7 Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IG1kZXZfdHlwZcKgwqDCoMKgwqDCoMKgwqBtZGV2X3R5 cGU7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IG1kZXZfdHlwZcKgwqDCoMKgwqDCoMKgwqAqbWRl dl90eXBlc1sxXTsKPiArfTsKPiArCj4gwqAvKioKPiDCoCAqIHN0cnVjdCB2ZmlvX2Njd19wcml2 YXRlCj4gwqAgKiBAdmRldjogRW1iZWRkZWQgVkZJTyBkZXZpY2UKPiBAQCAtODksNyArMTA0LDYg QEAgc3RydWN0IHZmaW9fY2N3X2NydyB7Cj4gwqAgKiBAaW9fd29yazogd29yayBmb3IgZGVmZXJy YWwgcHJvY2VzcyBvZiBJL08gaGFuZGxpbmcKPiDCoCAqIEBjcndfd29yazogd29yayBmb3IgZGVm ZXJyYWwgcHJvY2VzcyBvZiBDUlcgaGFuZGxpbmcKPiDCoCAqIEByZWxlYXNlX2NvbXA6IHN5bmNo cm9uaXphdGlvbiBoZWxwZXIgZm9yIHZmaW8gZGV2aWNlIHJlbGVhc2UKPiAtICogQHBhcmVudDog cGFyZW50IGRhdGEgc3RydWN0dXJlcyBmb3IgbWRldnMgY3JlYXRlZAo+IMKgICovCj4gwqBzdHJ1 Y3QgdmZpb19jY3dfcHJpdmF0ZSB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2ZmlvX2Rldmlj ZSB2ZGV2Owo+IEBAIC0xMTYsMTAgKzEzMCw2IEBAIHN0cnVjdCB2ZmlvX2Njd19wcml2YXRlIHsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHdvcmtfc3RydWN0wqDCoMKgwqDCoMKgY3J3X3dvcms7 Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGNvbXBsZXRpb27CoMKgwqDCoMKgwqDCoHJl bGVhc2VfY29tcDsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IG1kZXZfcGFyZW50wqDCoMKg wqDCoMKgcGFyZW50Owo+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCBtZGV2X3R5cGXCoMKgwqDCoMKg wqDCoMKgbWRldl90eXBlOwo+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCBtZGV2X3R5cGXCoMKgwqDC oMKgwqDCoMKgKm1kZXZfdHlwZXNbMV07Cj4gwqB9IF9fYWxpZ25lZCg4KTsKPiDCoAo+IMKgaW50 IHZmaW9fY2N3X3NjaF9xdWllc2NlKHN0cnVjdCBzdWJjaGFubmVsICpzY2gpOwoK