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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 A6516EB64D9 for ; Wed, 14 Jun 2023 07:11:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-ID:In-Reply-To: References:Message-ID:Date:Subject:CC:To:From:Reply-To:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=1f0uFV0U82AVkTmU8J+hJP48qoFjI0WSUoBjUhdPoZk=; b=XnAA+TbG7m0N6+ VAhNXZpsIz8widaZftxLm4v7cp4Qf0uoluxgPpfjgoHff6v8IQ2pwCUgdjjQtCQ4L05FS1CIWrzaB ai5PQg9N369uvh1mLuAgVOpkcGXzxYfIEehoUgy1mehNZxfhNrylaEYuNtkklYEo4jpkg5IH3Z8OF +fgZkiIhH3UHU9/mbZwYTJWibaDI2E7oX1cXi+HfNWE8LQAtcZ9wnpJLPIBARaPC3T5QAFWEBCsEB 7sVBCYZfAokgsTPX37AHe0BDr5+rn9f6IBpN4M7hgXr8VkHK3oDAWI6kptnlxDkZcin+MIDgTa0rQ ndUUDPJpRtYjEmDA/iGg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q9KeS-00AbUR-2o; Wed, 14 Jun 2023 07:10:44 +0000 Received: from esa.microchip.iphmx.com ([68.232.154.123]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q9KeO-00AbSs-0B for linux-arm-kernel@lists.infradead.org; Wed, 14 Jun 2023 07:10:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1686726639; x=1718262639; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=tRp+8M3hEkXmwZKzWj7JgT6nDCu729hergdYPdKPafI=; b=yqUG4bzp0H/vbvaU48cIub6gvc4EY8b9ZlNBbJcIkLEviD0gjWk+WWGJ wR2t8h/Vkx7INT6SSjGzmXXSV4I90fqu7Jbuj3aMifKhc3E6AW5agndrd yOX/YMM06fgNk9sNEGRQNNb3lC+7kFI8DgJvQ+yfGDX3iJqPD7oenZTCy FFeKveFh9p+qaZwLAjSG76UisSae30leUMTDVghpg8KkdVei7X9GrTdHw dKeQRCTl68yT1x8R3FHQLSDs/RWo3YUCqG2/XiknlRxRY79LooVeipD7o MmdN6Z/Jbmu34+0hWUOpHmbgXb9Pkrxjt0TLuLuf3pnmdq6RKyAnYdDtV g==; X-IronPort-AV: E=Sophos;i="6.00,241,1681196400"; d="scan'208";a="220209001" X-Amp-Result: SKIPPED(no attachment in message) Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 14 Jun 2023 00:10:37 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Wed, 14 Jun 2023 00:10:20 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Wed, 14 Jun 2023 00:10:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Lykj/TVXJhdT+ixEaGRymxJsFfpEyYMmpAAREBpDfE51kkrwJGuvDPitxMBBeOvmdp5K8qjWsn9JWoPczLxjc8FKIpjddC9wv6OVatQXvQtnv+MF9Os8xhoOXV4Ea0r+t58nnA2tYRoQgzPtqNsFv+KUEa6OhO7SutpgeUdbWSSAynK9GxOkN7uoQ2U2c7f6EbgJg3sT2/9xOq+MCVUBeCNb2A3LH8GVmkTYOkxF+m0cyssoDmRdpoY5WToDB3i1C/o/sRDwzIlrGZBMC9Fl/girq7ksqgXQbs6XQjUEZfqbFYej8YIiUJ+J/WHoOsOSNG7rsG8WPOUhAVG1nuZbnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tRp+8M3hEkXmwZKzWj7JgT6nDCu729hergdYPdKPafI=; b=Ra6Pqurmezm5AV+rEp9P4EooNejQvM+Lf5oZLWUchITjvWkHifthcntSVABRUNlIhx4apLOGILxtD22ePnLAM4IBrJ3Iv3JqDK7A3P+tZTKNplQ5Bm6noNZafttFna03GMbBaY77x42NveC1OLSbcTj+yo+NLz9lMfeE8LXpVqqLukZEwcQFdnGwDI0++eL+iBS8NrC566rYftx/8Z61jYvY9sbLGN5kIwg2zyG/JPx4do830eY7L9NkDw0k+HfIsXqlDUqWckg9m+vre0Muy50bzCC2scwulACqihKeg6E/EOuhENb8F1eutMO2LwfzjFZmHzg7Wjvf4AwttEChww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tRp+8M3hEkXmwZKzWj7JgT6nDCu729hergdYPdKPafI=; b=SD/DKPq98JYlgLIQ/LSovH1rKgNz2PwyEoIX8gsh03lgQkM4TOyVFajpaxQQi9TohLJUnSqja+qv9fuMhL7DmAfzZXhtC5tD0sG8iIFHO0ewyPO9hPBP/ukv4G0kXOaHG0Ad++PtIC1ZOBGkL8RWGlTW+YAzKeHch2Yx8i5DfLQ= Received: from SJ2PR11MB7648.namprd11.prod.outlook.com (2603:10b6:a03:4c3::17) by MN0PR11MB6159.namprd11.prod.outlook.com (2603:10b6:208:3c9::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.29; Wed, 14 Jun 2023 07:10:17 +0000 Received: from SJ2PR11MB7648.namprd11.prod.outlook.com ([fe80::27bf:a69f:806f:67be]) by SJ2PR11MB7648.namprd11.prod.outlook.com ([fe80::27bf:a69f:806f:67be%5]) with mapi id 15.20.6433.024; Wed, 14 Jun 2023 07:10:17 +0000 From: To: , , , , , , , , , , , , , , CC: , , , , , , Subject: Re: [PATCH 6/9] drm: atmel_hlcdc: Add support for XLCDC in atmel LCD driver Thread-Topic: [PATCH 6/9] drm: atmel_hlcdc: Add support for XLCDC in atmel LCD driver Thread-Index: AQHZno9Ff1Cuco+5VECF25MgwR1ezA== Date: Wed, 14 Jun 2023 07:10:17 +0000 Message-ID: References: <20230613070426.467389-1-manikandan.m@microchip.com> <20230613070426.467389-7-manikandan.m@microchip.com> In-Reply-To: <20230613070426.467389-7-manikandan.m@microchip.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ2PR11MB7648:EE_|MN0PR11MB6159:EE_ x-ms-office365-filtering-correlation-id: 7b7c7113-99c8-4f8a-4e8d-08db6ca6685f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 5qA+Gl0DWc3YdAEikCG3mT0+/NMFkmyLgk1IE4fr5Z0vAtJN9SjyBGefcogufgZ9b9bNaqSb6ElR3wRJrv5h7L5384GSGCWFTLoi3ne79IpEhOAf8MHAwm1Ti+VTpdXmo+P1d8hJQfnCZgyT9K1OxIZsHdJaZ0jnc+vhHp8dVQI8M4GJKGcKe811hLDNOojorZjAqLVIdOorvclZD4/JjPXRsB8xw4orxvTskfoFB1Jmbhdc7FDg/axE60eMcflBLj4TSM5sRIHZZjJs3KYXmwKerBK2G66/dnRL+pUXy8OXoRxfahRren+8JsL+1RTdIY9MpLx3Jj0Iz4ooeSoSzV963jxvgSqZUyNPpu4dFoVDNx+i1QngR2by3HaAhTGd4ciesLytueW40SKhnCJWb1bzcRd1qaaT78ke+IdTZt7+Xah72g3BAFGYVOEnjrVDzL9apvfzZeh6H/t1GsXXPRbWMLezM6G0700JPT0Ov4j3xZSSyYf+3OP84QZpD1KNApD55+gYzGDXHhTD5v0HVxcrEEKAzYlLUwjzNkfvYiSn8sqRnlZIFQlO1umeRVflUGwT5GTNgtoLGGAxhwAXN4y6gUztHW/ne85cSTekjrkH2S/OokjUH8SU1KSxDSJ9ruGPmTEy3PnHB8YWkZSmVeRGvBT8IbBvzt3llXqaZ38DYDYT3hlGE/kj4L/09A4laNfzn7rUD3P2RxN1oufje4WHI8DyW8PUJNHPFVU6+rw= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR11MB7648.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(346002)(376002)(366004)(396003)(39860400002)(451199021)(71200400001)(6486002)(478600001)(6506007)(107886003)(26005)(83380400001)(186003)(6512007)(53546011)(36756003)(31696002)(86362001)(38070700005)(38100700002)(2616005)(921005)(122000001)(66556008)(66946007)(64756008)(66446008)(66476007)(4326008)(76116006)(316002)(91956017)(8936002)(8676002)(31686004)(7416002)(5660300002)(30864003)(2906002)(41300700001)(110136005)(54906003)(21314003)(45980500001)(43740500002)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VmVXT2hkQjlHWVp6bGlzTVhvSnpud3ZZdEFyZVgxbS9GaCtxa1FCd3ZUaWtw?= =?utf-8?B?aEtuNEtYVmplYkhqYWJNZGtJYXhzRTdnRENTSVQrWjhhOGF2by9rbVBDYUto?= =?utf-8?B?RGk3ckFXOGg4Y2hvZE9hNEtGbDlIWDY2TUtYT2JibE1rdUxxVzJhZ004WGhn?= =?utf-8?B?OHJ2bWpTU1ZlQUdxYmh3NndZcUpUbUJIbTU2cVgyL2hjMDA4QUFJb1pxTjR2?= =?utf-8?B?bFRYUEtaYVdSZEVXc3UzTlptQUd0QXBJa2d3UU82TE4wZEtZdUZ4VWx5Vzc5?= =?utf-8?B?RUFVRTZSeENVWFRvTmxhaWFQUWxIMWpiaHJRRmM3eWRwdWdCandKSjRDOC9v?= =?utf-8?B?czYvN1RTMUx4UWVFYlNXL3o0VWFkUTVNOEphT0had1YxeHJyakxOYWFRdHgy?= =?utf-8?B?ZUZPVGF3ZS9NMitFSXA4em1ZZUUvSzgzZDNtbFhMdUlVbytUYVVVQzNxVkVz?= =?utf-8?B?Ky9TSFB5VkVpajZUbkFTdUJNbTZBc3E5azhpeUtpVzFwOFdIdzE1WnU2WXVa?= =?utf-8?B?dk9PSlppRjlqQmFuTnlVc2xGbzdaU3FicjFjYTF0cXlkWXNXQ3ZIK1JxbnZ1?= =?utf-8?B?ZVBid2ZFdWJtSFRjcytsVENoM0JyeGNYdzY5d2tBU3FhbWU1a21MU2orSFJ0?= =?utf-8?B?cFlmZHRKQXg5bXhGQmxpNU16ZjR6NkxGZ3R2T1huc0IzL3k4VFUwd0FqcndI?= =?utf-8?B?dDhQV2dOb0RmbjhzNENvUWFPdEhXSHpyOXdSM2NGQ3VnL0pZUlJISnBUTHYv?= =?utf-8?B?eS8zUUJzL3phVXhSTzRjYUdDREF3Y0NhQnRsdFNaY3lmSXNkQjlNK0Vmbm85?= =?utf-8?B?aFBjQ1g4WE1KL1ZIOGxxU0pSSUNOU3VDZ2laRXJnYUtXSU50Tlh4dEs1WSt2?= =?utf-8?B?RE8yQk45ZVFYTFdsWXRhNThyRGFFU1c0aXgwczBTTjQ0OHA2TGMvZkpIWDVP?= =?utf-8?B?NFQxNmx0MXNYanc0TTQ4RkdyUHRzUkc4N2h4cWg5Wnk0eGlwbHBRNnBYbzIz?= =?utf-8?B?Ti9Tc3FRNmx3enlyRzVNOXkrdnlxUGVsWE9jeUtQTnY4ajVpV2lrZWdkbFY0?= =?utf-8?B?bjVqck5SdUFSb1orK3NId3RmcGN5eWhtcTdiS3RYK0lITVZ1aTBmREF2Y09u?= =?utf-8?B?VEQ3WC9Uc0s5OWQ0TEhUcG8xbzBSS0oyOXBvUUlNL0FPSzZTb0pXclFvc1NX?= =?utf-8?B?VzBFemIwT0xNREJVMkRxYldTWG9vNWh0dENMUFM1S1hOTGpSUFlJdFBOeEE1?= =?utf-8?B?N2d0elE5NlZHcmYyVjVqenpLRFZWdGVwNGJrV0x2NFlTSVgzK2ExWVVyR1Vp?= =?utf-8?B?SDhMeTk4VkFpNnZvNEtzRGIwa1BRam9LUktwZk9TSHVBcElpRGZvVm0wcXAy?= =?utf-8?B?NFJ3T0Y5Q05mWUtrVzdjVTNna3NtZUJ2VTZFV1VpL28vZmlXbWdvMk1zTHlx?= =?utf-8?B?a1EraktEM3B5QzdDcmtta0ljYXVvMzBXVk5jTmNsdU9id0t3ZDdGTTFrQWRS?= =?utf-8?B?a0JWWjZqQ1ZNYVR5ZlRROThDVk1jbWJTbW1LVk1aM2dTSUR1RHkza3R1ZTNQ?= =?utf-8?B?MDJkcXNEb0U2NEk5YnJPdUxmMUhSaUNWaFZHek81dXdQekpNS1FyVkRlNUdD?= =?utf-8?B?ck5aVU9KdldINjI4Z2lxeWtaK0dWSS9hdENvOXliem9hV3lxSUs3TXJTRDhO?= =?utf-8?B?aS96V2J1d0IvdmFEZ091d1N0aG40QWJpcU1lQVRlOWcyWWpUakdiamlNWEx6?= =?utf-8?B?QnE0Z0QvcjFzK3dsTUZ4a1owU295K2NMVmVOTHRobkRaYnkyVk1tK0I1aGMx?= =?utf-8?B?RGtoYkUzYXgzQXg1UHZaWWtRU1pxd1VaUVoyeFcwcmpHd3R5ZWU4SGJ3KzhH?= =?utf-8?B?SElLb3FSWUs0TkJweUtUTSs2TGVvY1FSczB6SFp5M3dpRCtKSEN6cUxoUzY5?= =?utf-8?B?SVpBZk8rMW5STmVsdGE1dkNtMzc3azYzQnhSaHYwK0c4NHpMblMvWlB1c3dW?= =?utf-8?B?Q29pNkdHcE9OQlR2SmZXZ3VXcGd0c3k1ZGRQSGFVdkJkdEhDaWRtUW0rSkxC?= =?utf-8?B?MWNUYnlSaHpYQ3BXRHJCV2c0UjAzMUNUNEZwcE1yRk1IbFprSE9IYjFycUpX?= =?utf-8?Q?E2pDjZnHOAzBFiPKsvsaaE/3K?= Content-ID: MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ2PR11MB7648.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b7c7113-99c8-4f8a-4e8d-08db6ca6685f X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jun 2023 07:10:17.3915 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vAOL9XLWQ8MQEn/+xcqMRpWaWguz6frRmUSgHUtjZcFLQx3dyH5+dWq4+6PigIS1vda2UJiHZUOpYtZDe3N/Okiina/dvHcxxqjFvQ8kqjs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR11MB6159 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230614_001040_255392_2431759F X-CRM114-Status: GOOD ( 21.73 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 13.06.2023 10:04, Manikandan Muralidharan wrote: > - XLCDC in SAM9X7 has different sets of registers and additional > configuration bits when compared to previous HLCDC IP. Read/write > operation on the controller registers is now separated using the > XLCDC status flag. > - HEO scaling, window resampling, Alpha blending, YUV-to-RGB > conversion in XLCDC is derived and handled using additional > configuration bits and registers. > - Writing one to the Enable fields of each layer in LCD_ATTRE > is required to reflect the values set in Configuration, FBA, Enable > registers of each layer > > Signed-off-by: Manikandan Muralidharan > [Hari.PrasathGE@microchip.com: update the attribute field for each layer] > Signed-off-by: Hari Prasath Gujulan Elango > [durai.manickamkr@microchip.com: implement status flag to seprate register update] > Signed-off-by: Durai Manickam KR > --- > .../gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c | 28 +- > .../gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c | 297 ++++++++++++++---- > 2 files changed, 256 insertions(+), 69 deletions(-) > > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c > index 58184cd6ab0b..7c9cf7c0c75d 100644 > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c > @@ -139,10 +139,10 @@ static void atmel_hlcdc_crtc_mode_set_nofb(struct drm_crtc *c) > state = drm_crtc_state_to_atmel_hlcdc_crtc_state(c->state); > cfg = state->output_mode << 8; > > - if (adj->flags & DRM_MODE_FLAG_NVSYNC) > + if (!crtc->dc->is_xlcdc && (adj->flags & DRM_MODE_FLAG_NVSYNC)) > cfg |= ATMEL_HLCDC_VSPOL; > > - if (adj->flags & DRM_MODE_FLAG_NHSYNC) > + if (!crtc->dc->is_xlcdc && (adj->flags & DRM_MODE_FLAG_NHSYNC)) > cfg |= ATMEL_HLCDC_HSPOL; > > regmap_update_bits(regmap, ATMEL_HLCDC_CFG(5), > @@ -177,6 +177,18 @@ static void atmel_hlcdc_crtc_atomic_disable(struct drm_crtc *c, > > pm_runtime_get_sync(dev->dev); > > + if (crtc->dc->is_xlcdc) { > + regmap_write(regmap, ATMEL_HLCDC_DIS, ATMEL_XLCDC_CM); > + while (!regmap_read(regmap, ATMEL_HLCDC_SR, &status) && > + (status & ATMEL_XLCDC_CM)) > + cpu_relax(); A timeout would be god here to avoid potential infinite loop (for different reasons). You can check regmap_read_poll_timeout(). Same for the rest of while loops above. > + > + regmap_write(regmap, ATMEL_HLCDC_DIS, ATMEL_XLCDC_SD); > + while (!regmap_read(regmap, ATMEL_HLCDC_SR, &status) && > + !(status & ATMEL_XLCDC_SD)) > + cpu_relax(); > + } > + > regmap_write(regmap, ATMEL_HLCDC_DIS, ATMEL_HLCDC_DISP); > while (!regmap_read(regmap, ATMEL_HLCDC_SR, &status) && > (status & ATMEL_HLCDC_DISP)) > @@ -231,6 +243,18 @@ static void atmel_hlcdc_crtc_atomic_enable(struct drm_crtc *c, > !(status & ATMEL_HLCDC_DISP)) > cpu_relax(); > > + if (crtc->dc->is_xlcdc) { > + regmap_write(regmap, ATMEL_HLCDC_EN, ATMEL_XLCDC_CM); > + while (!regmap_read(regmap, ATMEL_HLCDC_SR, &status) && > + !(status & ATMEL_XLCDC_CM)) > + cpu_relax(); > + > + regmap_write(regmap, ATMEL_HLCDC_EN, ATMEL_XLCDC_SD); > + while (!regmap_read(regmap, ATMEL_HLCDC_SR, &status) && > + (status & ATMEL_XLCDC_SD)) > + cpu_relax(); > + } > + > pm_runtime_put_sync(dev->dev); > > } > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c > index daa508504f47..fe33476818c4 100644 > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c > @@ -330,11 +330,59 @@ static void atmel_hlcdc_plane_setup_scaler(struct atmel_hlcdc_plane *plane, > yfactor)); > } > > +static void atmel_xlcdc_plane_setup_scaler(struct atmel_hlcdc_plane *plane, > + struct atmel_hlcdc_plane_state *state) > +{ > + const struct atmel_hlcdc_layer_desc *desc = plane->layer.desc; > + u32 xfactor, yfactor; > + > + if (!desc->layout.scaler_config) > + return; > + > + if (state->crtc_w == state->src_w && state->crtc_h == state->src_h) { > + atmel_hlcdc_layer_write_cfg(&plane->layer, > + desc->layout.scaler_config, 0); > + return; > + } > + > + /* xfactor = round[(2^20 * XMEMSIZE)/XSIZE)] */ > + xfactor = (1048576 * state->src_w) / state->crtc_w; > + > + /* yfactor = round[(2^20 * YMEMSIZE)/YSIZE)] */ > + yfactor = (1048576 * state->src_h) / state->crtc_h; > + > + atmel_hlcdc_layer_write_cfg(&plane->layer, desc->layout.scaler_config, > + ATMEL_XLCDC_LAYER_VSCALER_LUMA_ENABLE | > + ATMEL_XLCDC_LAYER_VSCALER_CHROMA_ENABLE | > + ATMEL_XLCDC_LAYER_HSCALER_LUMA_ENABLE | > + ATMEL_XLCDC_LAYER_HSCALER_CHROMA_ENABLE); > + > + atmel_hlcdc_layer_write_cfg(&plane->layer, desc->layout.scaler_config + 1, > + yfactor); > + atmel_hlcdc_layer_write_cfg(&plane->layer, desc->layout.scaler_config + 3, > + xfactor); > + > + /* As per YCbCr window resampling configuration */ > + if (state->base.fb->format->format == DRM_FORMAT_YUV420) { > + atmel_hlcdc_layer_write_cfg(&plane->layer, desc->layout.scaler_config + 2, > + yfactor / 2); > + atmel_hlcdc_layer_write_cfg(&plane->layer, desc->layout.scaler_config + 4, > + xfactor / 2); > + } else { > + /* As per ARGB window resampling configuration */ > + atmel_hlcdc_layer_write_cfg(&plane->layer, desc->layout.scaler_config + 2, > + yfactor); > + atmel_hlcdc_layer_write_cfg(&plane->layer, desc->layout.scaler_config + 4, > + xfactor); > + } > +} > + > static void > atmel_hlcdc_plane_update_pos_and_size(struct atmel_hlcdc_plane *plane, > struct atmel_hlcdc_plane_state *state) > { > const struct atmel_hlcdc_layer_desc *desc = plane->layer.desc; > + struct atmel_hlcdc_dc *dc = plane->base.dev->dev_private; > > if (desc->layout.size) > atmel_hlcdc_layer_write_cfg(&plane->layer, desc->layout.size, > @@ -352,7 +400,10 @@ atmel_hlcdc_plane_update_pos_and_size(struct atmel_hlcdc_plane *plane, > ATMEL_HLCDC_LAYER_POS(state->crtc_x, > state->crtc_y)); > > - atmel_hlcdc_plane_setup_scaler(plane, state); > + if (!(dc->is_xlcdc)) You can reverse the logic here to avoid !dc->is_xlcdc. Also, no need for () around dc->is_xlcdc > + atmel_hlcdc_plane_setup_scaler(plane, state); > + else > + atmel_xlcdc_plane_setup_scaler(plane, state); > } > > static void > @@ -362,33 +413,58 @@ atmel_hlcdc_plane_update_general_settings(struct atmel_hlcdc_plane *plane, > unsigned int cfg = ATMEL_HLCDC_LAYER_DMA_BLEN_INCR16 | state->ahb_id; > const struct atmel_hlcdc_layer_desc *desc = plane->layer.desc; > const struct drm_format_info *format = state->base.fb->format; > - extra line > + struct atmel_hlcdc_dc *dc = plane->base.dev->dev_private; > /* > * Rotation optimization is not working on RGB888 (rotation is still > * working but without any optimization). > */ > - if (format->format == DRM_FORMAT_RGB888) > + if ((!(dc->is_xlcdc)) && format->format == DRM_FORMAT_RGB888) No need for extra (). > cfg |= ATMEL_HLCDC_LAYER_DMA_ROTDIS; > > - atmel_hlcdc_layer_write_cfg(&plane->layer, ATMEL_HLCDC_LAYER_DMA_CFG, > - cfg); > + if (!(dc->is_xlcdc)) { no need for extra () > + atmel_hlcdc_layer_write_cfg(&plane->layer, ATMEL_HLCDC_LAYER_DMA_CFG, > + cfg); > > - cfg = ATMEL_HLCDC_LAYER_DMA | ATMEL_HLCDC_LAYER_REP; > + cfg = ATMEL_HLCDC_LAYER_DMA | ATMEL_HLCDC_LAYER_REP; > + } else { > + atmel_hlcdc_layer_write_cfg(&plane->layer, ATMEL_XLCDC_LAYER_DMA_CFG, > + cfg); > + > + cfg = ATMEL_XLCDC_LAYER_DMA | ATMEL_XLCDC_LAYER_REP; > + } > > if (plane->base.type != DRM_PLANE_TYPE_PRIMARY) { > - cfg |= ATMEL_HLCDC_LAYER_OVR | ATMEL_HLCDC_LAYER_ITER2BL | > - ATMEL_HLCDC_LAYER_ITER; > + if (!(dc->is_xlcdc)) { no need for extra (). Same for the rest of occurencies above. Also, you can reverse the logic to avoid ! in front of (dc->is_xlcdc) > + cfg |= ATMEL_HLCDC_LAYER_OVR | ATMEL_HLCDC_LAYER_ITER2BL | > + ATMEL_HLCDC_LAYER_ITER; > + > + if (format->has_alpha) > + cfg |= ATMEL_HLCDC_LAYER_LAEN; > + else > + cfg |= ATMEL_HLCDC_LAYER_GAEN | > + ATMEL_HLCDC_LAYER_GA(state->base.alpha); > + } else { > + /* > + * Alpha Blending bits specific to SAM9X7 SoC > + */ > + cfg |= ATMEL_XLCDC_LAYER_SFACTC_A0_MULT_AS | > + ATMEL_XLCDC_LAYER_SFACTA_ONE | > + ATMEL_XLCDC_LAYER_DFACTC_M_A0_MULT_AS | > + ATMEL_XLCDC_LAYER_DFACTA_ONE; > + if (format->has_alpha) > + cfg |= ATMEL_XLCDC_LAYER_A0(0xff); > + else > + cfg |= ATMEL_XLCDC_LAYER_A0(state->base.alpha); > + } > + } > > - if (format->has_alpha) > - cfg |= ATMEL_HLCDC_LAYER_LAEN; > + if (state->disc_h && state->disc_w) { > + if (!(dc->is_xlcdc)) > + cfg |= ATMEL_HLCDC_LAYER_DISCEN; > else > - cfg |= ATMEL_HLCDC_LAYER_GAEN | > - ATMEL_HLCDC_LAYER_GA(state->base.alpha); > + cfg |= ATMEL_XLCDC_LAYER_DISCEN; > } > > - if (state->disc_h && state->disc_w) > - cfg |= ATMEL_HLCDC_LAYER_DISCEN; > - > atmel_hlcdc_layer_write_cfg(&plane->layer, desc->layout.general_config, > cfg); > } > @@ -441,33 +517,42 @@ static void atmel_hlcdc_plane_update_buffers(struct atmel_hlcdc_plane *plane, > struct atmel_hlcdc_plane_state *state) > { > const struct atmel_hlcdc_layer_desc *desc = plane->layer.desc; > + struct atmel_hlcdc_dc *dc = plane->base.dev->dev_private; > struct drm_framebuffer *fb = state->base.fb; > u32 sr; > int i; > > - sr = atmel_hlcdc_layer_read_reg(&plane->layer, ATMEL_HLCDC_LAYER_CHSR); > + if (!(dc->is_xlcdc)) You can reverse the logic > + sr = atmel_hlcdc_layer_read_reg(&plane->layer, ATMEL_HLCDC_LAYER_CHSR); > + else > + sr = atmel_hlcdc_layer_read_reg(&plane->layer, ATMEL_XLCDC_LAYER_ENR); > > for (i = 0; i < state->nplanes; i++) { > struct drm_gem_dma_object *gem = drm_fb_dma_get_gem_obj(fb, i); > > state->dscrs[i]->addr = gem->dma_addr + state->offsets[i]; > > - atmel_hlcdc_layer_write_reg(&plane->layer, > - ATMEL_HLCDC_LAYER_PLANE_HEAD(i), > - state->dscrs[i]->self); > - > - if (!(sr & ATMEL_HLCDC_LAYER_EN)) { > - atmel_hlcdc_layer_write_reg(&plane->layer, > - ATMEL_HLCDC_LAYER_PLANE_ADDR(i), > - state->dscrs[i]->addr); > + if (!(dc->is_xlcdc)) { you can reverse the logic > atmel_hlcdc_layer_write_reg(&plane->layer, > - ATMEL_HLCDC_LAYER_PLANE_CTRL(i), > - state->dscrs[i]->ctrl); > + ATMEL_HLCDC_LAYER_PLANE_HEAD(i), > + state->dscrs[i]->self); > + > + if (!(sr & ATMEL_HLCDC_LAYER_EN)) { > + atmel_hlcdc_layer_write_reg(&plane->layer, > + ATMEL_HLCDC_LAYER_PLANE_ADDR(i), > + state->dscrs[i]->addr); > + atmel_hlcdc_layer_write_reg(&plane->layer, > + ATMEL_HLCDC_LAYER_PLANE_CTRL(i), > + state->dscrs[i]->ctrl); > + atmel_hlcdc_layer_write_reg(&plane->layer, > + ATMEL_HLCDC_LAYER_PLANE_NEXT(i), > + state->dscrs[i]->self); > + } > + } else { > atmel_hlcdc_layer_write_reg(&plane->layer, > - ATMEL_HLCDC_LAYER_PLANE_NEXT(i), > - state->dscrs[i]->self); > + ATMEL_XLCDC_LAYER_PLANE_ADDR(i), > + state->dscrs[i]->addr); > } > - > if (desc->layout.xstride[i]) > atmel_hlcdc_layer_write_cfg(&plane->layer, > desc->layout.xstride[i], > @@ -716,19 +801,31 @@ static void atmel_hlcdc_plane_atomic_disable(struct drm_plane *p, > struct drm_atomic_state *state) > { > struct atmel_hlcdc_plane *plane = drm_plane_to_atmel_hlcdc_plane(p); > - You can keep this line afte the above variable. > + struct atmel_hlcdc_dc *dc = plane->base.dev->dev_private; > /* Disable interrupts */ > - atmel_hlcdc_layer_write_reg(&plane->layer, ATMEL_HLCDC_LAYER_IDR, > - 0xffffffff); > + if (!(dc->is_xlcdc)) you can reverse the logic > + atmel_hlcdc_layer_write_reg(&plane->layer, ATMEL_HLCDC_LAYER_IDR, > + 0xffffffff); > + else > + atmel_hlcdc_layer_write_reg(&plane->layer, ATMEL_XLCDC_LAYER_IDR, > + 0xffffffff); > > /* Disable the layer */ > - atmel_hlcdc_layer_write_reg(&plane->layer, ATMEL_HLCDC_LAYER_CHDR, > - ATMEL_HLCDC_LAYER_RST | > - ATMEL_HLCDC_LAYER_A2Q | > - ATMEL_HLCDC_LAYER_UPDATE); > + if (!(dc->is_xlcdc)) same here. > + atmel_hlcdc_layer_write_reg(&plane->layer, > + ATMEL_HLCDC_LAYER_CHDR, > + ATMEL_HLCDC_LAYER_RST | > + ATMEL_HLCDC_LAYER_A2Q | > + ATMEL_HLCDC_LAYER_UPDATE); > + else > + atmel_hlcdc_layer_write_reg(&plane->layer, > + ATMEL_XLCDC_LAYER_ENR, 0); > > /* Clear all pending interrupts */ > - atmel_hlcdc_layer_read_reg(&plane->layer, ATMEL_HLCDC_LAYER_ISR); > + if (!(dc->is_xlcdc)) > + atmel_hlcdc_layer_read_reg(&plane->layer, ATMEL_HLCDC_LAYER_ISR); > + else > + atmel_hlcdc_layer_read_reg(&plane->layer, ATMEL_XLCDC_LAYER_ISR); > } > > static void atmel_hlcdc_plane_atomic_update(struct drm_plane *p, > @@ -739,6 +836,7 @@ static void atmel_hlcdc_plane_atomic_update(struct drm_plane *p, > struct atmel_hlcdc_plane *plane = drm_plane_to_atmel_hlcdc_plane(p); > struct atmel_hlcdc_plane_state *hstate = > drm_plane_state_to_atmel_hlcdc_plane_state(new_s); > + struct atmel_hlcdc_dc *dc = p->dev->dev_private; > u32 sr; > > if (!new_s->crtc || !new_s->fb) > @@ -756,23 +854,46 @@ static void atmel_hlcdc_plane_atomic_update(struct drm_plane *p, > atmel_hlcdc_plane_update_buffers(plane, hstate); > atmel_hlcdc_plane_update_disc_area(plane, hstate); > > - /* Enable the overrun interrupts. */ > - atmel_hlcdc_layer_write_reg(&plane->layer, ATMEL_HLCDC_LAYER_IER, > - ATMEL_HLCDC_LAYER_OVR_IRQ(0) | > - ATMEL_HLCDC_LAYER_OVR_IRQ(1) | > - ATMEL_HLCDC_LAYER_OVR_IRQ(2)); > - > - /* Apply the new config at the next SOF event. */ > - sr = atmel_hlcdc_layer_read_reg(&plane->layer, ATMEL_HLCDC_LAYER_CHSR); > - atmel_hlcdc_layer_write_reg(&plane->layer, ATMEL_HLCDC_LAYER_CHER, > - ATMEL_HLCDC_LAYER_UPDATE | > - (sr & ATMEL_HLCDC_LAYER_EN ? > - ATMEL_HLCDC_LAYER_A2Q : ATMEL_HLCDC_LAYER_EN)); > + if (!(dc->is_xlcdc)) { same here > + /* Enable the overrun interrupts. */ > + atmel_hlcdc_layer_write_reg(&plane->layer, ATMEL_HLCDC_LAYER_IER, > + ATMEL_HLCDC_LAYER_OVR_IRQ(0) | > + ATMEL_HLCDC_LAYER_OVR_IRQ(1) | > + ATMEL_HLCDC_LAYER_OVR_IRQ(2)); > + > + /* Apply the new config at the next SOF event. */ > + sr = atmel_hlcdc_layer_read_reg(&plane->layer, ATMEL_HLCDC_LAYER_CHSR); > + atmel_hlcdc_layer_write_reg(&plane->layer, ATMEL_HLCDC_LAYER_CHER, > + ATMEL_HLCDC_LAYER_UPDATE | > + (sr & ATMEL_HLCDC_LAYER_EN ? > + ATMEL_HLCDC_LAYER_A2Q : ATMEL_HLCDC_LAYER_EN)); > + } else { > + /* Enable the overrun interrupts. */ > + atmel_hlcdc_layer_write_reg(&plane->layer, ATMEL_XLCDC_LAYER_IER, > + ATMEL_XLCDC_LAYER_OVR_IRQ(0) | > + ATMEL_XLCDC_LAYER_OVR_IRQ(1) | > + ATMEL_XLCDC_LAYER_OVR_IRQ(2)); > + > + atmel_hlcdc_layer_write_reg(&plane->layer, ATMEL_XLCDC_LAYER_ENR, > + ATMEL_XLCDC_LAYER_EN); > + } > + > + /* > + * Updating XLCDC_xxxCFGx, XLCDC_xxxFBA and XLCDC_xxxEN, > + * (where xxx indicates each layer) requires writing one to the > + * Update Attribute field for each layer in LCDC_ATTRE register for SAM9X7. > + */ > + if (dc->is_xlcdc) { > + regmap_write(dc->hlcdc->regmap, ATMEL_XLCDC_ATTRE, ATMEL_XLCDC_BASE_UPDATE | > + ATMEL_XLCDC_OVR1_UPDATE | ATMEL_XLCDC_OVR3_UPDATE | > + ATMEL_XLCDC_HEO_UPDATE); > + } > } > > static int atmel_hlcdc_plane_init_properties(struct atmel_hlcdc_plane *plane) > { > const struct atmel_hlcdc_layer_desc *desc = plane->layer.desc; > + struct atmel_hlcdc_dc *dc = plane->base.dev->dev_private; > > if (desc->type == ATMEL_HLCDC_OVERLAY_LAYER || > desc->type == ATMEL_HLCDC_CURSOR_LAYER) { > @@ -796,20 +917,50 @@ static int atmel_hlcdc_plane_init_properties(struct atmel_hlcdc_plane *plane) > return ret; > } > > - if (desc->layout.csc) { > + if (!(dc->is_xlcdc)) { you can reverse the logic > + if (desc->layout.csc) { > + /* > + * TODO: decare a "yuv-to-rgb-conv-factors" property to let > + * userspace modify these factors (using a BLOB property ?). > + */ > + atmel_hlcdc_layer_write_cfg(&plane->layer, > + desc->layout.csc, > + 0x4c900091); > + atmel_hlcdc_layer_write_cfg(&plane->layer, > + desc->layout.csc + 1, > + 0x7a5f5090); > + atmel_hlcdc_layer_write_cfg(&plane->layer, > + desc->layout.csc + 2, > + 0x40040890); > + } > + } else { > /* > - * TODO: decare a "yuv-to-rgb-conv-factors" property to let > - * userspace modify these factors (using a BLOB property ?). > + * yuv-to-rgb-conv-factors are now defined from LCDC_HEOCFG16 to > + * LCDC_HEOCFG21 registers in SAM9X7. > */ > - atmel_hlcdc_layer_write_cfg(&plane->layer, > - desc->layout.csc, > - 0x4c900091); > - atmel_hlcdc_layer_write_cfg(&plane->layer, > - desc->layout.csc + 1, > - 0x7a5f5090); > - atmel_hlcdc_layer_write_cfg(&plane->layer, > - desc->layout.csc + 2, > - 0x40040890); > + if (desc->layout.csc) { > + atmel_hlcdc_layer_write_cfg(&plane->layer, > + desc->layout.csc, > + 0x00000488); > + atmel_hlcdc_layer_write_cfg(&plane->layer, > + desc->layout.csc + 1, > + 0x00000648); > + atmel_hlcdc_layer_write_cfg(&plane->layer, > + desc->layout.csc + 2, > + 0x1EA00480); > + atmel_hlcdc_layer_write_cfg(&plane->layer, > + desc->layout.csc + 3, > + 0x00001D28); > + atmel_hlcdc_layer_write_cfg(&plane->layer, > + desc->layout.csc + 4, > + 0x08100480); > + atmel_hlcdc_layer_write_cfg(&plane->layer, > + desc->layout.csc + 5, > + 0x00000000); > + atmel_hlcdc_layer_write_cfg(&plane->layer, > + desc->layout.csc + 6, > + 0x00000007); > + } > } > > return 0; > @@ -819,19 +970,31 @@ void atmel_hlcdc_plane_irq(struct atmel_hlcdc_plane *plane) > { > const struct atmel_hlcdc_layer_desc *desc = plane->layer.desc; > u32 isr; > + struct atmel_hlcdc_dc *dc = plane->base.dev->dev_private; > > - isr = atmel_hlcdc_layer_read_reg(&plane->layer, ATMEL_HLCDC_LAYER_ISR); > + if (!(dc->is_xlcdc)) same here. > + isr = atmel_hlcdc_layer_read_reg(&plane->layer, ATMEL_HLCDC_LAYER_ISR); > + else > + isr = atmel_hlcdc_layer_read_reg(&plane->layer, ATMEL_XLCDC_LAYER_ISR); > > /* > * There's not much we can do in case of overrun except informing > * the user. However, we are in interrupt context here, hence the > * use of dev_dbg(). > */ > - if (isr & > - (ATMEL_HLCDC_LAYER_OVR_IRQ(0) | ATMEL_HLCDC_LAYER_OVR_IRQ(1) | > - ATMEL_HLCDC_LAYER_OVR_IRQ(2))) > - dev_dbg(plane->base.dev->dev, "overrun on plane %s\n", > - desc->name); > + if (!(dc->is_xlcdc)) { > + if (isr & > + (ATMEL_HLCDC_LAYER_OVR_IRQ(0) | ATMEL_HLCDC_LAYER_OVR_IRQ(1) | > + ATMEL_HLCDC_LAYER_OVR_IRQ(2))) > + dev_dbg(plane->base.dev->dev, "overrun on plane %s\n", > + desc->name); > + } else { > + if (isr & > + (ATMEL_XLCDC_LAYER_OVR_IRQ(0) | ATMEL_XLCDC_LAYER_OVR_IRQ(1) | > + ATMEL_XLCDC_LAYER_OVR_IRQ(2))) > + dev_dbg(plane->base.dev->dev, "overrun on plane %s\n", > + desc->name); > + } > } > > static const struct drm_plane_helper_funcs atmel_hlcdc_layer_plane_helper_funcs = { _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 84BF1EB64D9 for ; Wed, 14 Jun 2023 07:10:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243254AbjFNHKs (ORCPT ); Wed, 14 Jun 2023 03:10:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35184 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235268AbjFNHKl (ORCPT ); Wed, 14 Jun 2023 03:10:41 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CCEBC129; Wed, 14 Jun 2023 00:10:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1686726638; x=1718262638; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=tRp+8M3hEkXmwZKzWj7JgT6nDCu729hergdYPdKPafI=; b=rcSOfLonqip2ggQbad4Yxexqjzmkj4Aw/MHmSB20IMGwL2R9f8cjDNyX 9QPK7nHe0+4UhbUVQ6i3K8h+uwO+PmsqlYEQoZcGQkon+9HMA6/pyxwZS JVI/5gRCP6EQGW6eO+UamwAuuqch4uUWXWp5z/yPdetvH9PgqrLRBg/jT 60k5N+oFs768HGgz3MPqcw7BCSyi5Y79oLJRYLRHvtj584XzHABqSopuk 3wSNOESD8p6nAOiROT6tey7SluW27Is6AaDciLGVs3c3PPv9RfePspA5U 1nJGZfj/X7Q+JjhxhWyFSmG1+uVJ+LyDUsozx/1rLABa8PDwVRwYM+ucb g==; X-IronPort-AV: E=Sophos;i="6.00,241,1681196400"; d="scan'208";a="220209001" X-Amp-Result: SKIPPED(no attachment in message) Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 14 Jun 2023 00:10:37 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Wed, 14 Jun 2023 00:10:20 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Wed, 14 Jun 2023 00:10:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Lykj/TVXJhdT+ixEaGRymxJsFfpEyYMmpAAREBpDfE51kkrwJGuvDPitxMBBeOvmdp5K8qjWsn9JWoPczLxjc8FKIpjddC9wv6OVatQXvQtnv+MF9Os8xhoOXV4Ea0r+t58nnA2tYRoQgzPtqNsFv+KUEa6OhO7SutpgeUdbWSSAynK9GxOkN7uoQ2U2c7f6EbgJg3sT2/9xOq+MCVUBeCNb2A3LH8GVmkTYOkxF+m0cyssoDmRdpoY5WToDB3i1C/o/sRDwzIlrGZBMC9Fl/girq7ksqgXQbs6XQjUEZfqbFYej8YIiUJ+J/WHoOsOSNG7rsG8WPOUhAVG1nuZbnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tRp+8M3hEkXmwZKzWj7JgT6nDCu729hergdYPdKPafI=; b=Ra6Pqurmezm5AV+rEp9P4EooNejQvM+Lf5oZLWUchITjvWkHifthcntSVABRUNlIhx4apLOGILxtD22ePnLAM4IBrJ3Iv3JqDK7A3P+tZTKNplQ5Bm6noNZafttFna03GMbBaY77x42NveC1OLSbcTj+yo+NLz9lMfeE8LXpVqqLukZEwcQFdnGwDI0++eL+iBS8NrC566rYftx/8Z61jYvY9sbLGN5kIwg2zyG/JPx4do830eY7L9NkDw0k+HfIsXqlDUqWckg9m+vre0Muy50bzCC2scwulACqihKeg6E/EOuhENb8F1eutMO2LwfzjFZmHzg7Wjvf4AwttEChww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tRp+8M3hEkXmwZKzWj7JgT6nDCu729hergdYPdKPafI=; b=SD/DKPq98JYlgLIQ/LSovH1rKgNz2PwyEoIX8gsh03lgQkM4TOyVFajpaxQQi9TohLJUnSqja+qv9fuMhL7DmAfzZXhtC5tD0sG8iIFHO0ewyPO9hPBP/ukv4G0kXOaHG0Ad++PtIC1ZOBGkL8RWGlTW+YAzKeHch2Yx8i5DfLQ= Received: from SJ2PR11MB7648.namprd11.prod.outlook.com (2603:10b6:a03:4c3::17) by MN0PR11MB6159.namprd11.prod.outlook.com (2603:10b6:208:3c9::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.29; Wed, 14 Jun 2023 07:10:17 +0000 Received: from SJ2PR11MB7648.namprd11.prod.outlook.com ([fe80::27bf:a69f:806f:67be]) by SJ2PR11MB7648.namprd11.prod.outlook.com ([fe80::27bf:a69f:806f:67be%5]) with mapi id 15.20.6433.024; Wed, 14 Jun 2023 07:10:17 +0000 From: To: , , , , , , , , , , , , , , CC: , , , , , , Subject: Re: [PATCH 6/9] drm: atmel_hlcdc: Add support for XLCDC in atmel LCD driver Thread-Topic: [PATCH 6/9] drm: atmel_hlcdc: Add support for XLCDC in atmel LCD driver Thread-Index: AQHZno9Ff1Cuco+5VECF25MgwR1ezA== Date: Wed, 14 Jun 2023 07:10:17 +0000 Message-ID: References: <20230613070426.467389-1-manikandan.m@microchip.com> <20230613070426.467389-7-manikandan.m@microchip.com> In-Reply-To: <20230613070426.467389-7-manikandan.m@microchip.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ2PR11MB7648:EE_|MN0PR11MB6159:EE_ x-ms-office365-filtering-correlation-id: 7b7c7113-99c8-4f8a-4e8d-08db6ca6685f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 5qA+Gl0DWc3YdAEikCG3mT0+/NMFkmyLgk1IE4fr5Z0vAtJN9SjyBGefcogufgZ9b9bNaqSb6ElR3wRJrv5h7L5384GSGCWFTLoi3ne79IpEhOAf8MHAwm1Ti+VTpdXmo+P1d8hJQfnCZgyT9K1OxIZsHdJaZ0jnc+vhHp8dVQI8M4GJKGcKe811hLDNOojorZjAqLVIdOorvclZD4/JjPXRsB8xw4orxvTskfoFB1Jmbhdc7FDg/axE60eMcflBLj4TSM5sRIHZZjJs3KYXmwKerBK2G66/dnRL+pUXy8OXoRxfahRren+8JsL+1RTdIY9MpLx3Jj0Iz4ooeSoSzV963jxvgSqZUyNPpu4dFoVDNx+i1QngR2by3HaAhTGd4ciesLytueW40SKhnCJWb1bzcRd1qaaT78ke+IdTZt7+Xah72g3BAFGYVOEnjrVDzL9apvfzZeh6H/t1GsXXPRbWMLezM6G0700JPT0Ov4j3xZSSyYf+3OP84QZpD1KNApD55+gYzGDXHhTD5v0HVxcrEEKAzYlLUwjzNkfvYiSn8sqRnlZIFQlO1umeRVflUGwT5GTNgtoLGGAxhwAXN4y6gUztHW/ne85cSTekjrkH2S/OokjUH8SU1KSxDSJ9ruGPmTEy3PnHB8YWkZSmVeRGvBT8IbBvzt3llXqaZ38DYDYT3hlGE/kj4L/09A4laNfzn7rUD3P2RxN1oufje4WHI8DyW8PUJNHPFVU6+rw= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR11MB7648.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(346002)(376002)(366004)(396003)(39860400002)(451199021)(71200400001)(6486002)(478600001)(6506007)(107886003)(26005)(83380400001)(186003)(6512007)(53546011)(36756003)(31696002)(86362001)(38070700005)(38100700002)(2616005)(921005)(122000001)(66556008)(66946007)(64756008)(66446008)(66476007)(4326008)(76116006)(316002)(91956017)(8936002)(8676002)(31686004)(7416002)(5660300002)(30864003)(2906002)(41300700001)(110136005)(54906003)(21314003)(45980500001)(43740500002)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VmVXT2hkQjlHWVp6bGlzTVhvSnpud3ZZdEFyZVgxbS9GaCtxa1FCd3ZUaWtw?= =?utf-8?B?aEtuNEtYVmplYkhqYWJNZGtJYXhzRTdnRENTSVQrWjhhOGF2by9rbVBDYUto?= =?utf-8?B?RGk3ckFXOGg4Y2hvZE9hNEtGbDlIWDY2TUtYT2JibE1rdUxxVzJhZ004WGhn?= =?utf-8?B?OHJ2bWpTU1ZlQUdxYmh3NndZcUpUbUJIbTU2cVgyL2hjMDA4QUFJb1pxTjR2?= =?utf-8?B?bFRYUEtaYVdSZEVXc3UzTlptQUd0QXBJa2d3UU82TE4wZEtZdUZ4VWx5Vzc5?= =?utf-8?B?RUFVRTZSeENVWFRvTmxhaWFQUWxIMWpiaHJRRmM3eWRwdWdCandKSjRDOC9v?= =?utf-8?B?czYvN1RTMUx4UWVFYlNXL3o0VWFkUTVNOEphT0had1YxeHJyakxOYWFRdHgy?= =?utf-8?B?ZUZPVGF3ZS9NMitFSXA4em1ZZUUvSzgzZDNtbFhMdUlVbytUYVVVQzNxVkVz?= =?utf-8?B?Ky9TSFB5VkVpajZUbkFTdUJNbTZBc3E5azhpeUtpVzFwOFdIdzE1WnU2WXVa?= =?utf-8?B?dk9PSlppRjlqQmFuTnlVc2xGbzdaU3FicjFjYTF0cXlkWXNXQ3ZIK1JxbnZ1?= =?utf-8?B?ZVBid2ZFdWJtSFRjcytsVENoM0JyeGNYdzY5d2tBU3FhbWU1a21MU2orSFJ0?= =?utf-8?B?cFlmZHRKQXg5bXhGQmxpNU16ZjR6NkxGZ3R2T1huc0IzL3k4VFUwd0FqcndI?= =?utf-8?B?dDhQV2dOb0RmbjhzNENvUWFPdEhXSHpyOXdSM2NGQ3VnL0pZUlJISnBUTHYv?= =?utf-8?B?eS8zUUJzL3phVXhSTzRjYUdDREF3Y0NhQnRsdFNaY3lmSXNkQjlNK0Vmbm85?= =?utf-8?B?aFBjQ1g4WE1KL1ZIOGxxU0pSSUNOU3VDZ2laRXJnYUtXSU50Tlh4dEs1WSt2?= =?utf-8?B?RE8yQk45ZVFYTFdsWXRhNThyRGFFU1c0aXgwczBTTjQ0OHA2TGMvZkpIWDVP?= =?utf-8?B?NFQxNmx0MXNYanc0TTQ4RkdyUHRzUkc4N2h4cWg5Wnk0eGlwbHBRNnBYbzIz?= =?utf-8?B?Ti9Tc3FRNmx3enlyRzVNOXkrdnlxUGVsWE9jeUtQTnY4ajVpV2lrZWdkbFY0?= =?utf-8?B?bjVqck5SdUFSb1orK3NId3RmcGN5eWhtcTdiS3RYK0lITVZ1aTBmREF2Y09u?= =?utf-8?B?VEQ3WC9Uc0s5OWQ0TEhUcG8xbzBSS0oyOXBvUUlNL0FPSzZTb0pXclFvc1NX?= =?utf-8?B?VzBFemIwT0xNREJVMkRxYldTWG9vNWh0dENMUFM1S1hOTGpSUFlJdFBOeEE1?= =?utf-8?B?N2d0elE5NlZHcmYyVjVqenpLRFZWdGVwNGJrV0x2NFlTSVgzK2ExWVVyR1Vp?= =?utf-8?B?SDhMeTk4VkFpNnZvNEtzRGIwa1BRam9LUktwZk9TSHVBcElpRGZvVm0wcXAy?= =?utf-8?B?NFJ3T0Y5Q05mWUtrVzdjVTNna3NtZUJ2VTZFV1VpL28vZmlXbWdvMk1zTHlx?= =?utf-8?B?a1EraktEM3B5QzdDcmtta0ljYXVvMzBXVk5jTmNsdU9id0t3ZDdGTTFrQWRS?= =?utf-8?B?a0JWWjZqQ1ZNYVR5ZlRROThDVk1jbWJTbW1LVk1aM2dTSUR1RHkza3R1ZTNQ?= =?utf-8?B?MDJkcXNEb0U2NEk5YnJPdUxmMUhSaUNWaFZHek81dXdQekpNS1FyVkRlNUdD?= =?utf-8?B?ck5aVU9KdldINjI4Z2lxeWtaK0dWSS9hdENvOXliem9hV3lxSUs3TXJTRDhO?= =?utf-8?B?aS96V2J1d0IvdmFEZ091d1N0aG40QWJpcU1lQVRlOWcyWWpUakdiamlNWEx6?= =?utf-8?B?QnE0Z0QvcjFzK3dsTUZ4a1owU295K2NMVmVOTHRobkRaYnkyVk1tK0I1aGMx?= =?utf-8?B?RGtoYkUzYXgzQXg1UHZaWWtRU1pxd1VaUVoyeFcwcmpHd3R5ZWU4SGJ3KzhH?= =?utf-8?B?SElLb3FSWUs0TkJweUtUTSs2TGVvY1FSczB6SFp5M3dpRCtKSEN6cUxoUzY5?= =?utf-8?B?SVpBZk8rMW5STmVsdGE1dkNtMzc3azYzQnhSaHYwK0c4NHpMblMvWlB1c3dW?= =?utf-8?B?Q29pNkdHcE9OQlR2SmZXZ3VXcGd0c3k1ZGRQSGFVdkJkdEhDaWRtUW0rSkxC?= =?utf-8?B?MWNUYnlSaHpYQ3BXRHJCV2c0UjAzMUNUNEZwcE1yRk1IbFprSE9IYjFycUpX?= =?utf-8?Q?E2pDjZnHOAzBFiPKsvsaaE/3K?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ2PR11MB7648.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b7c7113-99c8-4f8a-4e8d-08db6ca6685f X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jun 2023 07:10:17.3915 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vAOL9XLWQ8MQEn/+xcqMRpWaWguz6frRmUSgHUtjZcFLQx3dyH5+dWq4+6PigIS1vda2UJiHZUOpYtZDe3N/Okiina/dvHcxxqjFvQ8kqjs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR11MB6159 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org T24gMTMuMDYuMjAyMyAxMDowNCwgTWFuaWthbmRhbiBNdXJhbGlkaGFyYW4gd3JvdGU6DQo+IC0g WExDREMgaW4gU0FNOVg3IGhhcyBkaWZmZXJlbnQgc2V0cyBvZiByZWdpc3RlcnMgYW5kIGFkZGl0 aW9uYWwNCj4gY29uZmlndXJhdGlvbiBiaXRzIHdoZW4gY29tcGFyZWQgdG8gcHJldmlvdXMgSExD REMgSVAuIFJlYWQvd3JpdGUNCj4gb3BlcmF0aW9uIG9uIHRoZSBjb250cm9sbGVyIHJlZ2lzdGVy cyBpcyBub3cgc2VwYXJhdGVkIHVzaW5nIHRoZQ0KPiBYTENEQyBzdGF0dXMgZmxhZy4NCj4gCS0g SEVPIHNjYWxpbmcsIHdpbmRvdyByZXNhbXBsaW5nLCBBbHBoYSBibGVuZGluZywgWVVWLXRvLVJH Qg0KPiBjb252ZXJzaW9uIGluIFhMQ0RDIGlzIGRlcml2ZWQgYW5kIGhhbmRsZWQgdXNpbmcgYWRk aXRpb25hbA0KPiBjb25maWd1cmF0aW9uIGJpdHMgYW5kIHJlZ2lzdGVycy4NCj4gCS0gV3JpdGlu ZyBvbmUgdG8gdGhlIEVuYWJsZSBmaWVsZHMgb2YgZWFjaCBsYXllciBpbiBMQ0RfQVRUUkUNCj4g aXMgcmVxdWlyZWQgdG8gcmVmbGVjdCB0aGUgdmFsdWVzIHNldCBpbiBDb25maWd1cmF0aW9uLCBG QkEsIEVuYWJsZQ0KPiByZWdpc3RlcnMgb2YgZWFjaCBsYXllcg0KPiANCj4gU2lnbmVkLW9mZi1i eTogTWFuaWthbmRhbiBNdXJhbGlkaGFyYW4gPG1hbmlrYW5kYW4ubUBtaWNyb2NoaXAuY29tPg0K PiBbSGFyaS5QcmFzYXRoR0VAbWljcm9jaGlwLmNvbTogdXBkYXRlIHRoZSBhdHRyaWJ1dGUgZmll bGQgZm9yIGVhY2ggbGF5ZXJdDQo+IFNpZ25lZC1vZmYtYnk6IEhhcmkgUHJhc2F0aCBHdWp1bGFu IEVsYW5nbyA8SGFyaS5QcmFzYXRoR0VAbWljcm9jaGlwLmNvbT4NCj4gW2R1cmFpLm1hbmlja2Ft a3JAbWljcm9jaGlwLmNvbTogaW1wbGVtZW50IHN0YXR1cyBmbGFnIHRvIHNlcHJhdGUgcmVnaXN0 ZXIgdXBkYXRlXQ0KPiBTaWduZWQtb2ZmLWJ5OiBEdXJhaSBNYW5pY2thbSBLUiA8ZHVyYWkubWFu aWNrYW1rckBtaWNyb2NoaXAuY29tPg0KPiAtLS0NCj4gIC4uLi9ncHUvZHJtL2F0bWVsLWhsY2Rj L2F0bWVsX2hsY2RjX2NydGMuYyAgICB8ICAyOCArLQ0KPiAgLi4uL2dwdS9kcm0vYXRtZWwtaGxj ZGMvYXRtZWxfaGxjZGNfcGxhbmUuYyAgIHwgMjk3ICsrKysrKysrKysrKysrLS0tLQ0KPiAgMiBm aWxlcyBjaGFuZ2VkLCAyNTYgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pDQo+IA0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX2NydGMu YyBiL2RyaXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19jcnRjLmMNCj4gaW5k ZXggNTgxODRjZDZhYjBiLi43YzljZjdjMGM3NWQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19jcnRjLmMNCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX2NydGMuYw0KPiBAQCAtMTM5LDEwICsxMzksMTAg QEAgc3RhdGljIHZvaWQgYXRtZWxfaGxjZGNfY3J0Y19tb2RlX3NldF9ub2ZiKHN0cnVjdCBkcm1f Y3J0YyAqYykNCj4gIAlzdGF0ZSA9IGRybV9jcnRjX3N0YXRlX3RvX2F0bWVsX2hsY2RjX2NydGNf c3RhdGUoYy0+c3RhdGUpOw0KPiAgCWNmZyA9IHN0YXRlLT5vdXRwdXRfbW9kZSA8PCA4Ow0KPiAg DQo+IC0JaWYgKGFkai0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX05WU1lOQykNCj4gKwlpZiAoIWNy dGMtPmRjLT5pc194bGNkYyAmJiAoYWRqLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfTlZTWU5DKSkN Cj4gIAkJY2ZnIHw9IEFUTUVMX0hMQ0RDX1ZTUE9MOw0KPiAgDQo+IC0JaWYgKGFkai0+ZmxhZ3Mg JiBEUk1fTU9ERV9GTEFHX05IU1lOQykNCj4gKwlpZiAoIWNydGMtPmRjLT5pc194bGNkYyAmJiAo YWRqLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfTkhTWU5DKSkNCj4gIAkJY2ZnIHw9IEFUTUVMX0hM Q0RDX0hTUE9MOw0KPiAgDQo+ICAJcmVnbWFwX3VwZGF0ZV9iaXRzKHJlZ21hcCwgQVRNRUxfSExD RENfQ0ZHKDUpLA0KPiBAQCAtMTc3LDYgKzE3NywxOCBAQCBzdGF0aWMgdm9pZCBhdG1lbF9obGNk Y19jcnRjX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqYywNCj4gIA0KPiAgCXBtX3J1 bnRpbWVfZ2V0X3N5bmMoZGV2LT5kZXYpOw0KPiAgDQo+ICsJaWYgKGNydGMtPmRjLT5pc194bGNk Yykgew0KPiArCQlyZWdtYXBfd3JpdGUocmVnbWFwLCBBVE1FTF9ITENEQ19ESVMsIEFUTUVMX1hM Q0RDX0NNKTsNCj4gKwkJd2hpbGUgKCFyZWdtYXBfcmVhZChyZWdtYXAsIEFUTUVMX0hMQ0RDX1NS LCAmc3RhdHVzKSAmJg0KPiArCQkgICAgICAgKHN0YXR1cyAmIEFUTUVMX1hMQ0RDX0NNKSkNCj4g KwkJCWNwdV9yZWxheCgpOw0KDQpBIHRpbWVvdXQgd291bGQgYmUgZ29kIGhlcmUgdG8gYXZvaWQg cG90ZW50aWFsIGluZmluaXRlIGxvb3AgKGZvciBkaWZmZXJlbnQNCnJlYXNvbnMpLiBZb3UgY2Fu IGNoZWNrIHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dCgpLiBTYW1lIGZvciB0aGUgcmVzdCBvZg0K d2hpbGUgbG9vcHMgYWJvdmUuDQoNCj4gKw0KPiArCQlyZWdtYXBfd3JpdGUocmVnbWFwLCBBVE1F TF9ITENEQ19ESVMsIEFUTUVMX1hMQ0RDX1NEKTsNCj4gKwkJd2hpbGUgKCFyZWdtYXBfcmVhZChy ZWdtYXAsIEFUTUVMX0hMQ0RDX1NSLCAmc3RhdHVzKSAmJg0KPiArCQkgICAgICAgIShzdGF0dXMg JiBBVE1FTF9YTENEQ19TRCkpDQo+ICsJCQljcHVfcmVsYXgoKTsNCj4gKwl9DQo+ICsNCj4gIAly ZWdtYXBfd3JpdGUocmVnbWFwLCBBVE1FTF9ITENEQ19ESVMsIEFUTUVMX0hMQ0RDX0RJU1ApOw0K PiAgCXdoaWxlICghcmVnbWFwX3JlYWQocmVnbWFwLCBBVE1FTF9ITENEQ19TUiwgJnN0YXR1cykg JiYNCj4gIAkgICAgICAgKHN0YXR1cyAmIEFUTUVMX0hMQ0RDX0RJU1ApKQ0KPiBAQCAtMjMxLDYg KzI0MywxOCBAQCBzdGF0aWMgdm9pZCBhdG1lbF9obGNkY19jcnRjX2F0b21pY19lbmFibGUoc3Ry dWN0IGRybV9jcnRjICpjLA0KPiAgCSAgICAgICAhKHN0YXR1cyAmIEFUTUVMX0hMQ0RDX0RJU1Ap KQ0KPiAgCQljcHVfcmVsYXgoKTsNCj4gIA0KPiArCWlmIChjcnRjLT5kYy0+aXNfeGxjZGMpIHsN Cj4gKwkJcmVnbWFwX3dyaXRlKHJlZ21hcCwgQVRNRUxfSExDRENfRU4sIEFUTUVMX1hMQ0RDX0NN KTsNCj4gKwkJd2hpbGUgKCFyZWdtYXBfcmVhZChyZWdtYXAsIEFUTUVMX0hMQ0RDX1NSLCAmc3Rh dHVzKSAmJg0KPiArCQkgICAgICAgIShzdGF0dXMgJiBBVE1FTF9YTENEQ19DTSkpDQo+ICsJCQlj cHVfcmVsYXgoKTsNCj4gKw0KPiArCQlyZWdtYXBfd3JpdGUocmVnbWFwLCBBVE1FTF9ITENEQ19F TiwgQVRNRUxfWExDRENfU0QpOw0KPiArCQl3aGlsZSAoIXJlZ21hcF9yZWFkKHJlZ21hcCwgQVRN RUxfSExDRENfU1IsICZzdGF0dXMpICYmDQo+ICsJCSAgICAgICAoc3RhdHVzICYgQVRNRUxfWExD RENfU0QpKQ0KPiArCQkJY3B1X3JlbGF4KCk7DQo+ICsJfQ0KPiArDQo+ICAJcG1fcnVudGltZV9w dXRfc3luYyhkZXYtPmRldik7DQo+ICANCj4gIH0NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2F0 bWVsLWhsY2RjL2F0bWVsX2hsY2RjX3BsYW5lLmMNCj4gaW5kZXggZGFhNTA4NTA0ZjQ3Li5mZTMz NDc2ODE4YzQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1l bF9obGNkY19wbGFuZS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1l bF9obGNkY19wbGFuZS5jDQo+IEBAIC0zMzAsMTEgKzMzMCw1OSBAQCBzdGF0aWMgdm9pZCBhdG1l bF9obGNkY19wbGFuZV9zZXR1cF9zY2FsZXIoc3RydWN0IGF0bWVsX2hsY2RjX3BsYW5lICpwbGFu ZSwNCj4gIAkJCQkJCQkJICAgICB5ZmFjdG9yKSk7DQo+ICB9DQo+ICANCj4gK3N0YXRpYyB2b2lk IGF0bWVsX3hsY2RjX3BsYW5lX3NldHVwX3NjYWxlcihzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmUg KnBsYW5lLA0KPiArCQkJCQkgICBzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmVfc3RhdGUgKnN0YXRl KQ0KPiArew0KPiArCWNvbnN0IHN0cnVjdCBhdG1lbF9obGNkY19sYXllcl9kZXNjICpkZXNjID0g cGxhbmUtPmxheWVyLmRlc2M7DQo+ICsJdTMyIHhmYWN0b3IsIHlmYWN0b3I7DQo+ICsNCj4gKwlp ZiAoIWRlc2MtPmxheW91dC5zY2FsZXJfY29uZmlnKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlp ZiAoc3RhdGUtPmNydGNfdyA9PSBzdGF0ZS0+c3JjX3cgJiYgc3RhdGUtPmNydGNfaCA9PSBzdGF0 ZS0+c3JjX2gpIHsNCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5 ZXIsDQo+ICsJCQkJCSAgICBkZXNjLT5sYXlvdXQuc2NhbGVyX2NvbmZpZywgMCk7DQo+ICsJCXJl dHVybjsNCj4gKwl9DQo+ICsNCj4gKwkvKiB4ZmFjdG9yID0gcm91bmRbKDJeMjAgKiBYTUVNU0la RSkvWFNJWkUpXSAqLw0KPiArCXhmYWN0b3IgPSAoMTA0ODU3NiAqIHN0YXRlLT5zcmNfdykgLyBz dGF0ZS0+Y3J0Y193Ow0KPiArDQo+ICsJLyogeWZhY3RvciA9IHJvdW5kWygyXjIwICogWU1FTVNJ WkUpL1lTSVpFKV0gKi8NCj4gKwl5ZmFjdG9yID0gKDEwNDg1NzYgKiBzdGF0ZS0+c3JjX2gpIC8g c3RhdGUtPmNydGNfaDsNCj4gKw0KPiArCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX2NmZygmcGxh bmUtPmxheWVyLCBkZXNjLT5sYXlvdXQuc2NhbGVyX2NvbmZpZywNCj4gKwkJCQkgICAgQVRNRUxf WExDRENfTEFZRVJfVlNDQUxFUl9MVU1BX0VOQUJMRSB8DQo+ICsJCQkJICAgIEFUTUVMX1hMQ0RD X0xBWUVSX1ZTQ0FMRVJfQ0hST01BX0VOQUJMRSB8DQo+ICsJCQkJICAgIEFUTUVMX1hMQ0RDX0xB WUVSX0hTQ0FMRVJfTFVNQV9FTkFCTEUgfA0KPiArCQkJCSAgICBBVE1FTF9YTENEQ19MQVlFUl9I U0NBTEVSX0NIUk9NQV9FTkFCTEUpOw0KPiArDQo+ICsJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVf Y2ZnKCZwbGFuZS0+bGF5ZXIsIGRlc2MtPmxheW91dC5zY2FsZXJfY29uZmlnICsgMSwNCj4gKwkJ CQkgICAgeWZhY3Rvcik7DQo+ICsJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+ bGF5ZXIsIGRlc2MtPmxheW91dC5zY2FsZXJfY29uZmlnICsgMywNCj4gKwkJCQkgICAgeGZhY3Rv cik7DQo+ICsNCj4gKwkvKiBBcyBwZXIgWUNiQ3Igd2luZG93IHJlc2FtcGxpbmcgY29uZmlndXJh dGlvbiAqLw0KPiArCWlmIChzdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5mb3JtYXQgPT0gRFJNX0ZP Uk1BVF9ZVVY0MjApIHsNCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+ bGF5ZXIsIGRlc2MtPmxheW91dC5zY2FsZXJfY29uZmlnICsgMiwNCj4gKwkJCQkJICAgIHlmYWN0 b3IgLyAyKTsNCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIs IGRlc2MtPmxheW91dC5zY2FsZXJfY29uZmlnICsgNCwNCj4gKwkJCQkJICAgIHhmYWN0b3IgLyAy KTsNCj4gKwl9IGVsc2Ugew0KPiArCQkvKiBBcyBwZXIgQVJHQiB3aW5kb3cgcmVzYW1wbGluZyBj b25maWd1cmF0aW9uICovDQo+ICsJCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUt PmxheWVyLCBkZXNjLT5sYXlvdXQuc2NhbGVyX2NvbmZpZyArIDIsDQo+ICsJCQkJCSAgICB5ZmFj dG9yKTsNCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsIGRl c2MtPmxheW91dC5zY2FsZXJfY29uZmlnICsgNCwNCj4gKwkJCQkJICAgIHhmYWN0b3IpOw0KPiAr CX0NCj4gK30NCj4gKw0KPiAgc3RhdGljIHZvaWQNCj4gIGF0bWVsX2hsY2RjX3BsYW5lX3VwZGF0 ZV9wb3NfYW5kX3NpemUoc3RydWN0IGF0bWVsX2hsY2RjX3BsYW5lICpwbGFuZSwNCj4gIAkJCQkg ICAgICBzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmVfc3RhdGUgKnN0YXRlKQ0KPiAgew0KPiAgCWNv bnN0IHN0cnVjdCBhdG1lbF9obGNkY19sYXllcl9kZXNjICpkZXNjID0gcGxhbmUtPmxheWVyLmRl c2M7DQo+ICsJc3RydWN0IGF0bWVsX2hsY2RjX2RjICpkYyA9IHBsYW5lLT5iYXNlLmRldi0+ZGV2 X3ByaXZhdGU7DQo+ICANCj4gIAlpZiAoZGVzYy0+bGF5b3V0LnNpemUpDQo+ICAJCWF0bWVsX2hs Y2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLCBkZXNjLT5sYXlvdXQuc2l6ZSwNCj4g QEAgLTM1Miw3ICs0MDAsMTAgQEAgYXRtZWxfaGxjZGNfcGxhbmVfdXBkYXRlX3Bvc19hbmRfc2l6 ZShzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmUgKnBsYW5lLA0KPiAgCQkJCQlBVE1FTF9ITENEQ19M QVlFUl9QT1Moc3RhdGUtPmNydGNfeCwNCj4gIAkJCQkJCQkgICAgICBzdGF0ZS0+Y3J0Y195KSk7 DQo+ICANCj4gLQlhdG1lbF9obGNkY19wbGFuZV9zZXR1cF9zY2FsZXIocGxhbmUsIHN0YXRlKTsN Cj4gKwlpZiAoIShkYy0+aXNfeGxjZGMpKQ0KDQpZb3UgY2FuIHJldmVyc2UgdGhlIGxvZ2ljIGhl cmUgdG8gYXZvaWQgIWRjLT5pc194bGNkYy4gQWxzbywgbm8gbmVlZCBmb3IgKCkNCmFyb3VuZCBk Yy0+aXNfeGxjZGMNCg0KPiArCQlhdG1lbF9obGNkY19wbGFuZV9zZXR1cF9zY2FsZXIocGxhbmUs IHN0YXRlKTsNCj4gKwllbHNlDQo+ICsJCWF0bWVsX3hsY2RjX3BsYW5lX3NldHVwX3NjYWxlcihw bGFuZSwgc3RhdGUpOw0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgdm9pZA0KPiBAQCAtMzYyLDMzICs0 MTMsNTggQEAgYXRtZWxfaGxjZGNfcGxhbmVfdXBkYXRlX2dlbmVyYWxfc2V0dGluZ3Moc3RydWN0 IGF0bWVsX2hsY2RjX3BsYW5lICpwbGFuZSwNCj4gIAl1bnNpZ25lZCBpbnQgY2ZnID0gQVRNRUxf SExDRENfTEFZRVJfRE1BX0JMRU5fSU5DUjE2IHwgc3RhdGUtPmFoYl9pZDsNCj4gIAljb25zdCBz dHJ1Y3QgYXRtZWxfaGxjZGNfbGF5ZXJfZGVzYyAqZGVzYyA9IHBsYW5lLT5sYXllci5kZXNjOw0K PiAgCWNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmZvcm1hdCA9IHN0YXRlLT5iYXNlLmZi LT5mb3JtYXQ7DQo+IC0NCg0KZXh0cmEgbGluZQ0KDQo+ICsJc3RydWN0IGF0bWVsX2hsY2RjX2Rj ICpkYyA9IHBsYW5lLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7DQo+ICAJLyoNCj4gIAkgKiBSb3Rh dGlvbiBvcHRpbWl6YXRpb24gaXMgbm90IHdvcmtpbmcgb24gUkdCODg4IChyb3RhdGlvbiBpcyBz dGlsbA0KPiAgCSAqIHdvcmtpbmcgYnV0IHdpdGhvdXQgYW55IG9wdGltaXphdGlvbikuDQo+ICAJ ICovDQo+IC0JaWYgKGZvcm1hdC0+Zm9ybWF0ID09IERSTV9GT1JNQVRfUkdCODg4KQ0KPiArCWlm ICgoIShkYy0+aXNfeGxjZGMpKSAmJiBmb3JtYXQtPmZvcm1hdCA9PSBEUk1fRk9STUFUX1JHQjg4 OCkNCg0KTm8gbmVlZCBmb3IgZXh0cmEgKCkuDQoNCj4gIAkJY2ZnIHw9IEFUTUVMX0hMQ0RDX0xB WUVSX0RNQV9ST1RESVM7DQo+ICANCj4gLQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9jZmcoJnBs YW5lLT5sYXllciwgQVRNRUxfSExDRENfTEFZRVJfRE1BX0NGRywNCj4gLQkJCQkgICAgY2ZnKTsN Cj4gKwlpZiAoIShkYy0+aXNfeGxjZGMpKSB7DQoNCm5vIG5lZWQgZm9yIGV4dHJhICgpDQoNCj4g KwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsIEFUTUVMX0hMQ0RD X0xBWUVSX0RNQV9DRkcsDQo+ICsJCQkJCSAgICBjZmcpOw0KPiAgDQo+IC0JY2ZnID0gQVRNRUxf SExDRENfTEFZRVJfRE1BIHwgQVRNRUxfSExDRENfTEFZRVJfUkVQOw0KPiArCQljZmcgPSBBVE1F TF9ITENEQ19MQVlFUl9ETUEgfCBBVE1FTF9ITENEQ19MQVlFUl9SRVA7DQo+ICsJfSBlbHNlIHsN Cj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsIEFUTUVMX1hM Q0RDX0xBWUVSX0RNQV9DRkcsDQo+ICsJCQkJCSAgICBjZmcpOw0KPiArDQo+ICsJCWNmZyA9IEFU TUVMX1hMQ0RDX0xBWUVSX0RNQSB8IEFUTUVMX1hMQ0RDX0xBWUVSX1JFUDsNCj4gKwl9DQo+ICAN Cj4gIAlpZiAocGxhbmUtPmJhc2UudHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKSB7DQo+ IC0JCWNmZyB8PSBBVE1FTF9ITENEQ19MQVlFUl9PVlIgfCBBVE1FTF9ITENEQ19MQVlFUl9JVEVS MkJMIHwNCj4gLQkJICAgICAgIEFUTUVMX0hMQ0RDX0xBWUVSX0lURVI7DQo+ICsJCWlmICghKGRj LT5pc194bGNkYykpIHsNCg0Kbm8gbmVlZCBmb3IgZXh0cmEgKCkuIFNhbWUgZm9yIHRoZSByZXN0 IG9mIG9jY3VyZW5jaWVzIGFib3ZlLiBBbHNvLCB5b3UgY2FuDQpyZXZlcnNlIHRoZSBsb2dpYyB0 byBhdm9pZCAhIGluIGZyb250IG9mIChkYy0+aXNfeGxjZGMpDQoNCj4gKwkJCWNmZyB8PSBBVE1F TF9ITENEQ19MQVlFUl9PVlIgfCBBVE1FTF9ITENEQ19MQVlFUl9JVEVSMkJMIHwNCj4gKwkJCSAg ICAgICBBVE1FTF9ITENEQ19MQVlFUl9JVEVSOw0KPiArDQo+ICsJCQlpZiAoZm9ybWF0LT5oYXNf YWxwaGEpDQo+ICsJCQkJY2ZnIHw9IEFUTUVMX0hMQ0RDX0xBWUVSX0xBRU47DQo+ICsJCQllbHNl DQo+ICsJCQkJY2ZnIHw9IEFUTUVMX0hMQ0RDX0xBWUVSX0dBRU4gfA0KPiArCQkJCSAgICAgICBB VE1FTF9ITENEQ19MQVlFUl9HQShzdGF0ZS0+YmFzZS5hbHBoYSk7DQo+ICsJCX0gZWxzZSB7DQo+ ICsJCQkvKg0KPiArCQkJICogQWxwaGEgQmxlbmRpbmcgYml0cyBzcGVjaWZpYyB0byBTQU05WDcg U29DDQo+ICsJCQkgKi8NCj4gKwkJCWNmZyB8PSBBVE1FTF9YTENEQ19MQVlFUl9TRkFDVENfQTBf TVVMVF9BUyB8DQo+ICsJCQkgICAgICAgQVRNRUxfWExDRENfTEFZRVJfU0ZBQ1RBX09ORSB8DQo+ ICsJCQkgICAgICAgQVRNRUxfWExDRENfTEFZRVJfREZBQ1RDX01fQTBfTVVMVF9BUyB8DQo+ICsJ CQkgICAgICAgQVRNRUxfWExDRENfTEFZRVJfREZBQ1RBX09ORTsNCj4gKwkJCWlmIChmb3JtYXQt Pmhhc19hbHBoYSkNCj4gKwkJCQljZmcgfD0gQVRNRUxfWExDRENfTEFZRVJfQTAoMHhmZik7DQo+ ICsJCQllbHNlDQo+ICsJCQkJY2ZnIHw9IEFUTUVMX1hMQ0RDX0xBWUVSX0EwKHN0YXRlLT5iYXNl LmFscGhhKTsNCj4gKwkJfQ0KPiArCX0NCj4gIA0KPiAtCQlpZiAoZm9ybWF0LT5oYXNfYWxwaGEp DQo+IC0JCQljZmcgfD0gQVRNRUxfSExDRENfTEFZRVJfTEFFTjsNCj4gKwlpZiAoc3RhdGUtPmRp c2NfaCAmJiBzdGF0ZS0+ZGlzY193KSB7DQo+ICsJCWlmICghKGRjLT5pc194bGNkYykpDQo+ICsJ CQljZmcgfD0gQVRNRUxfSExDRENfTEFZRVJfRElTQ0VOOw0KPiAgCQllbHNlDQo+IC0JCQljZmcg fD0gQVRNRUxfSExDRENfTEFZRVJfR0FFTiB8DQo+IC0JCQkgICAgICAgQVRNRUxfSExDRENfTEFZ RVJfR0Eoc3RhdGUtPmJhc2UuYWxwaGEpOw0KPiArCQkJY2ZnIHw9IEFUTUVMX1hMQ0RDX0xBWUVS X0RJU0NFTjsNCj4gIAl9DQo+ICANCj4gLQlpZiAoc3RhdGUtPmRpc2NfaCAmJiBzdGF0ZS0+ZGlz Y193KQ0KPiAtCQljZmcgfD0gQVRNRUxfSExDRENfTEFZRVJfRElTQ0VOOw0KPiAtDQo+ICAJYXRt ZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsIGRlc2MtPmxheW91dC5nZW5l cmFsX2NvbmZpZywNCj4gIAkJCQkgICAgY2ZnKTsNCj4gIH0NCj4gQEAgLTQ0MSwzMyArNTE3LDQy IEBAIHN0YXRpYyB2b2lkIGF0bWVsX2hsY2RjX3BsYW5lX3VwZGF0ZV9idWZmZXJzKHN0cnVjdCBh dG1lbF9obGNkY19wbGFuZSAqcGxhbmUsDQo+ICAJCQkJCXN0cnVjdCBhdG1lbF9obGNkY19wbGFu ZV9zdGF0ZSAqc3RhdGUpDQo+ICB7DQo+ICAJY29uc3Qgc3RydWN0IGF0bWVsX2hsY2RjX2xheWVy X2Rlc2MgKmRlc2MgPSBwbGFuZS0+bGF5ZXIuZGVzYzsNCj4gKwlzdHJ1Y3QgYXRtZWxfaGxjZGNf ZGMgKmRjID0gcGxhbmUtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsNCj4gIAlzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOw0KPiAgCXUzMiBzcjsNCj4gIAlpbnQgaTsN Cj4gIA0KPiAtCXNyID0gYXRtZWxfaGxjZGNfbGF5ZXJfcmVhZF9yZWcoJnBsYW5lLT5sYXllciwg QVRNRUxfSExDRENfTEFZRVJfQ0hTUik7DQo+ICsJaWYgKCEoZGMtPmlzX3hsY2RjKSkNCg0KWW91 IGNhbiByZXZlcnNlIHRoZSBsb2dpYw0KDQo+ICsJCXNyID0gYXRtZWxfaGxjZGNfbGF5ZXJfcmVh ZF9yZWcoJnBsYW5lLT5sYXllciwgQVRNRUxfSExDRENfTEFZRVJfQ0hTUik7DQo+ICsJZWxzZQ0K PiArCQlzciA9IGF0bWVsX2hsY2RjX2xheWVyX3JlYWRfcmVnKCZwbGFuZS0+bGF5ZXIsIEFUTUVM X1hMQ0RDX0xBWUVSX0VOUik7DQo+ICANCj4gIAlmb3IgKGkgPSAwOyBpIDwgc3RhdGUtPm5wbGFu ZXM7IGkrKykgew0KPiAgCQlzdHJ1Y3QgZHJtX2dlbV9kbWFfb2JqZWN0ICpnZW0gPSBkcm1fZmJf ZG1hX2dldF9nZW1fb2JqKGZiLCBpKTsNCj4gIA0KPiAgCQlzdGF0ZS0+ZHNjcnNbaV0tPmFkZHIg PSBnZW0tPmRtYV9hZGRyICsgc3RhdGUtPm9mZnNldHNbaV07DQo+ICANCj4gLQkJYXRtZWxfaGxj ZGNfbGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIsDQo+IC0JCQkJCSAgICBBVE1FTF9ITENE Q19MQVlFUl9QTEFORV9IRUFEKGkpLA0KPiAtCQkJCQkgICAgc3RhdGUtPmRzY3JzW2ldLT5zZWxm KTsNCj4gLQ0KPiAtCQlpZiAoIShzciAmIEFUTUVMX0hMQ0RDX0xBWUVSX0VOKSkgew0KPiAtCQkJ YXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIsDQo+IC0JCQkJCUFUTUVM X0hMQ0RDX0xBWUVSX1BMQU5FX0FERFIoaSksDQo+IC0JCQkJCXN0YXRlLT5kc2Nyc1tpXS0+YWRk cik7DQo+ICsJCWlmICghKGRjLT5pc194bGNkYykpIHsNCg0KeW91IGNhbiByZXZlcnNlIHRoZSBs b2dpYw0KDQo+ICAJCQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9yZWcoJnBsYW5lLT5sYXllciwN Cj4gLQkJCQkJQVRNRUxfSExDRENfTEFZRVJfUExBTkVfQ1RSTChpKSwNCj4gLQkJCQkJc3RhdGUt PmRzY3JzW2ldLT5jdHJsKTsNCj4gKwkJCQkJCSAgICBBVE1FTF9ITENEQ19MQVlFUl9QTEFORV9I RUFEKGkpLA0KPiArCQkJCQkJICAgIHN0YXRlLT5kc2Nyc1tpXS0+c2VsZik7DQo+ICsNCj4gKwkJ CWlmICghKHNyICYgQVRNRUxfSExDRENfTEFZRVJfRU4pKSB7DQo+ICsJCQkJYXRtZWxfaGxjZGNf bGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIsDQo+ICsJCQkJCQkJICAgIEFUTUVMX0hMQ0RD X0xBWUVSX1BMQU5FX0FERFIoaSksDQo+ICsJCQkJCQkJICAgIHN0YXRlLT5kc2Nyc1tpXS0+YWRk cik7DQo+ICsJCQkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIsDQo+ ICsJCQkJCQkJICAgIEFUTUVMX0hMQ0RDX0xBWUVSX1BMQU5FX0NUUkwoaSksDQo+ICsJCQkJCQkJ ICAgIHN0YXRlLT5kc2Nyc1tpXS0+Y3RybCk7DQo+ICsJCQkJYXRtZWxfaGxjZGNfbGF5ZXJfd3Jp dGVfcmVnKCZwbGFuZS0+bGF5ZXIsDQo+ICsJCQkJCQkJICAgIEFUTUVMX0hMQ0RDX0xBWUVSX1BM QU5FX05FWFQoaSksDQo+ICsJCQkJCQkJICAgIHN0YXRlLT5kc2Nyc1tpXS0+c2VsZik7DQo+ICsJ CQl9DQo+ICsJCX0gZWxzZSB7DQo+ICAJCQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9yZWcoJnBs YW5lLT5sYXllciwNCj4gLQkJCQkJQVRNRUxfSExDRENfTEFZRVJfUExBTkVfTkVYVChpKSwNCj4g LQkJCQkJc3RhdGUtPmRzY3JzW2ldLT5zZWxmKTsNCj4gKwkJCQkJCSAgICBBVE1FTF9YTENEQ19M QVlFUl9QTEFORV9BRERSKGkpLA0KPiArCQkJCQkJICAgIHN0YXRlLT5kc2Nyc1tpXS0+YWRkcik7 DQo+ICAJCX0NCj4gLQ0KPiAgCQlpZiAoZGVzYy0+bGF5b3V0LnhzdHJpZGVbaV0pDQo+ICAJCQlh dG1lbF9obGNkY19sYXllcl93cml0ZV9jZmcoJnBsYW5lLT5sYXllciwNCj4gIAkJCQkJCSAgICBk ZXNjLT5sYXlvdXQueHN0cmlkZVtpXSwNCj4gQEAgLTcxNiwxOSArODAxLDMxIEBAIHN0YXRpYyB2 b2lkIGF0bWVsX2hsY2RjX3BsYW5lX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnAs DQo+ICAJCQkJCSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiAgew0KPiAg CXN0cnVjdCBhdG1lbF9obGNkY19wbGFuZSAqcGxhbmUgPSBkcm1fcGxhbmVfdG9fYXRtZWxfaGxj ZGNfcGxhbmUocCk7DQo+IC0NCg0KWW91IGNhbiBrZWVwIHRoaXMgbGluZSBhZnRlIHRoZSBhYm92 ZSB2YXJpYWJsZS4NCg0KPiArCXN0cnVjdCBhdG1lbF9obGNkY19kYyAqZGMgPSBwbGFuZS0+YmFz ZS5kZXYtPmRldl9wcml2YXRlOw0KPiAgCS8qIERpc2FibGUgaW50ZXJydXB0cyAqLw0KPiAtCWF0 bWVsX2hsY2RjX2xheWVyX3dyaXRlX3JlZygmcGxhbmUtPmxheWVyLCBBVE1FTF9ITENEQ19MQVlF Ul9JRFIsDQo+IC0JCQkJICAgIDB4ZmZmZmZmZmYpOw0KPiArCWlmICghKGRjLT5pc194bGNkYykp DQoNCnlvdSBjYW4gcmV2ZXJzZSB0aGUgbG9naWMNCg0KPiArCQlhdG1lbF9obGNkY19sYXllcl93 cml0ZV9yZWcoJnBsYW5lLT5sYXllciwgQVRNRUxfSExDRENfTEFZRVJfSURSLA0KPiArCQkJCQkg ICAgMHhmZmZmZmZmZik7DQo+ICsJZWxzZQ0KPiArCQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9y ZWcoJnBsYW5lLT5sYXllciwgQVRNRUxfWExDRENfTEFZRVJfSURSLA0KPiArCQkJCQkgICAgMHhm ZmZmZmZmZik7DQo+ICANCj4gIAkvKiBEaXNhYmxlIHRoZSBsYXllciAqLw0KPiAtCWF0bWVsX2hs Y2RjX2xheWVyX3dyaXRlX3JlZygmcGxhbmUtPmxheWVyLCBBVE1FTF9ITENEQ19MQVlFUl9DSERS LA0KPiAtCQkJCSAgICBBVE1FTF9ITENEQ19MQVlFUl9SU1QgfA0KPiAtCQkJCSAgICBBVE1FTF9I TENEQ19MQVlFUl9BMlEgfA0KPiAtCQkJCSAgICBBVE1FTF9ITENEQ19MQVlFUl9VUERBVEUpOw0K PiArCWlmICghKGRjLT5pc194bGNkYykpDQoNCnNhbWUgaGVyZS4NCg0KPiArCQlhdG1lbF9obGNk Y19sYXllcl93cml0ZV9yZWcoJnBsYW5lLT5sYXllciwNCj4gKwkJCQkJICAgIEFUTUVMX0hMQ0RD X0xBWUVSX0NIRFIsDQo+ICsJCQkJCSAgICBBVE1FTF9ITENEQ19MQVlFUl9SU1QgfA0KPiArCQkJ CQkgICAgQVRNRUxfSExDRENfTEFZRVJfQTJRIHwNCj4gKwkJCQkJICAgIEFUTUVMX0hMQ0RDX0xB WUVSX1VQREFURSk7DQo+ICsJZWxzZQ0KPiArCQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9yZWco JnBsYW5lLT5sYXllciwNCj4gKwkJCQkJICAgIEFUTUVMX1hMQ0RDX0xBWUVSX0VOUiwgMCk7DQo+ ICANCj4gIAkvKiBDbGVhciBhbGwgcGVuZGluZyBpbnRlcnJ1cHRzICovDQo+IC0JYXRtZWxfaGxj ZGNfbGF5ZXJfcmVhZF9yZWcoJnBsYW5lLT5sYXllciwgQVRNRUxfSExDRENfTEFZRVJfSVNSKTsN Cj4gKwlpZiAoIShkYy0+aXNfeGxjZGMpKQ0KPiArCQlhdG1lbF9obGNkY19sYXllcl9yZWFkX3Jl ZygmcGxhbmUtPmxheWVyLCBBVE1FTF9ITENEQ19MQVlFUl9JU1IpOw0KPiArCWVsc2UNCj4gKwkJ YXRtZWxfaGxjZGNfbGF5ZXJfcmVhZF9yZWcoJnBsYW5lLT5sYXllciwgQVRNRUxfWExDRENfTEFZ RVJfSVNSKTsNCj4gIH0NCj4gIA0KPiAgc3RhdGljIHZvaWQgYXRtZWxfaGxjZGNfcGxhbmVfYXRv bWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwLA0KPiBAQCAtNzM5LDYgKzgzNiw3IEBAIHN0 YXRpYyB2b2lkIGF0bWVsX2hsY2RjX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFu ZSAqcCwNCj4gIAlzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmUgKnBsYW5lID0gZHJtX3BsYW5lX3Rv X2F0bWVsX2hsY2RjX3BsYW5lKHApOw0KPiAgCXN0cnVjdCBhdG1lbF9obGNkY19wbGFuZV9zdGF0 ZSAqaHN0YXRlID0NCj4gIAkJCWRybV9wbGFuZV9zdGF0ZV90b19hdG1lbF9obGNkY19wbGFuZV9z dGF0ZShuZXdfcyk7DQo+ICsJc3RydWN0IGF0bWVsX2hsY2RjX2RjICpkYyA9IHAtPmRldi0+ZGV2 X3ByaXZhdGU7DQo+ICAJdTMyIHNyOw0KPiAgDQo+ICAJaWYgKCFuZXdfcy0+Y3J0YyB8fCAhbmV3 X3MtPmZiKQ0KPiBAQCAtNzU2LDIzICs4NTQsNDYgQEAgc3RhdGljIHZvaWQgYXRtZWxfaGxjZGNf cGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwLA0KPiAgCWF0bWVsX2hsY2Rj X3BsYW5lX3VwZGF0ZV9idWZmZXJzKHBsYW5lLCBoc3RhdGUpOw0KPiAgCWF0bWVsX2hsY2RjX3Bs YW5lX3VwZGF0ZV9kaXNjX2FyZWEocGxhbmUsIGhzdGF0ZSk7DQo+ICANCj4gLQkvKiBFbmFibGUg dGhlIG92ZXJydW4gaW50ZXJydXB0cy4gKi8NCj4gLQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9y ZWcoJnBsYW5lLT5sYXllciwgQVRNRUxfSExDRENfTEFZRVJfSUVSLA0KPiAtCQkJCSAgICBBVE1F TF9ITENEQ19MQVlFUl9PVlJfSVJRKDApIHwNCj4gLQkJCQkgICAgQVRNRUxfSExDRENfTEFZRVJf T1ZSX0lSUSgxKSB8DQo+IC0JCQkJICAgIEFUTUVMX0hMQ0RDX0xBWUVSX09WUl9JUlEoMikpOw0K PiAtDQo+IC0JLyogQXBwbHkgdGhlIG5ldyBjb25maWcgYXQgdGhlIG5leHQgU09GIGV2ZW50LiAq Lw0KPiAtCXNyID0gYXRtZWxfaGxjZGNfbGF5ZXJfcmVhZF9yZWcoJnBsYW5lLT5sYXllciwgQVRN RUxfSExDRENfTEFZRVJfQ0hTUik7DQo+IC0JYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZw bGFuZS0+bGF5ZXIsIEFUTUVMX0hMQ0RDX0xBWUVSX0NIRVIsDQo+IC0JCQlBVE1FTF9ITENEQ19M QVlFUl9VUERBVEUgfA0KPiAtCQkJKHNyICYgQVRNRUxfSExDRENfTEFZRVJfRU4gPw0KPiAtCQkJ IEFUTUVMX0hMQ0RDX0xBWUVSX0EyUSA6IEFUTUVMX0hMQ0RDX0xBWUVSX0VOKSk7DQo+ICsJaWYg KCEoZGMtPmlzX3hsY2RjKSkgew0KDQpzYW1lIGhlcmUNCg0KPiArCQkvKiBFbmFibGUgdGhlIG92 ZXJydW4gaW50ZXJydXB0cy4gKi8NCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZw bGFuZS0+bGF5ZXIsIEFUTUVMX0hMQ0RDX0xBWUVSX0lFUiwNCj4gKwkJCQkJICAgIEFUTUVMX0hM Q0RDX0xBWUVSX09WUl9JUlEoMCkgfA0KPiArCQkJCQkgICAgQVRNRUxfSExDRENfTEFZRVJfT1ZS X0lSUSgxKSB8DQo+ICsJCQkJCSAgICBBVE1FTF9ITENEQ19MQVlFUl9PVlJfSVJRKDIpKTsNCj4g Kw0KPiArCQkvKiBBcHBseSB0aGUgbmV3IGNvbmZpZyBhdCB0aGUgbmV4dCBTT0YgZXZlbnQuICov DQo+ICsJCXNyID0gYXRtZWxfaGxjZGNfbGF5ZXJfcmVhZF9yZWcoJnBsYW5lLT5sYXllciwgQVRN RUxfSExDRENfTEFZRVJfQ0hTUik7DQo+ICsJCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX3JlZygm cGxhbmUtPmxheWVyLCBBVE1FTF9ITENEQ19MQVlFUl9DSEVSLA0KPiArCQkJCQkgICAgQVRNRUxf SExDRENfTEFZRVJfVVBEQVRFIHwNCj4gKwkJCQkJICAgIChzciAmIEFUTUVMX0hMQ0RDX0xBWUVS X0VOID8NCj4gKwkJCQkJICAgIEFUTUVMX0hMQ0RDX0xBWUVSX0EyUSA6IEFUTUVMX0hMQ0RDX0xB WUVSX0VOKSk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJLyogRW5hYmxlIHRoZSBvdmVycnVuIGludGVy cnVwdHMuICovDQo+ICsJCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX3JlZygmcGxhbmUtPmxheWVy LCBBVE1FTF9YTENEQ19MQVlFUl9JRVIsDQo+ICsJCQkJCSAgICBBVE1FTF9YTENEQ19MQVlFUl9P VlJfSVJRKDApIHwNCj4gKwkJCQkJICAgIEFUTUVMX1hMQ0RDX0xBWUVSX09WUl9JUlEoMSkgfA0K PiArCQkJCQkgICAgQVRNRUxfWExDRENfTEFZRVJfT1ZSX0lSUSgyKSk7DQo+ICsNCj4gKwkJYXRt ZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIsIEFUTUVMX1hMQ0RDX0xBWUVS X0VOUiwNCj4gKwkJCQkJICAgIEFUTUVMX1hMQ0RDX0xBWUVSX0VOKTsNCj4gKwl9DQo+ICsNCj4g KwkvKg0KPiArCSAqIFVwZGF0aW5nIFhMQ0RDX3h4eENGR3gsIFhMQ0RDX3h4eEZCQSBhbmQgWExD RENfeHh4RU4sDQo+ICsJICogKHdoZXJlIHh4eCBpbmRpY2F0ZXMgZWFjaCBsYXllcikgcmVxdWly ZXMgd3JpdGluZyBvbmUgdG8gdGhlDQo+ICsJICogVXBkYXRlIEF0dHJpYnV0ZSBmaWVsZCBmb3Ig ZWFjaCBsYXllciBpbiBMQ0RDX0FUVFJFIHJlZ2lzdGVyIGZvciBTQU05WDcuDQo+ICsJICovDQo+ ICsJaWYgKGRjLT5pc194bGNkYykgew0KPiArCQlyZWdtYXBfd3JpdGUoZGMtPmhsY2RjLT5yZWdt YXAsIEFUTUVMX1hMQ0RDX0FUVFJFLCBBVE1FTF9YTENEQ19CQVNFX1VQREFURSB8DQo+ICsJCQkg ICAgIEFUTUVMX1hMQ0RDX09WUjFfVVBEQVRFIHwgQVRNRUxfWExDRENfT1ZSM19VUERBVEUgfA0K PiArCQkJICAgICBBVE1FTF9YTENEQ19IRU9fVVBEQVRFKTsNCj4gKwl9DQo+ICB9DQo+ICANCj4g IHN0YXRpYyBpbnQgYXRtZWxfaGxjZGNfcGxhbmVfaW5pdF9wcm9wZXJ0aWVzKHN0cnVjdCBhdG1l bF9obGNkY19wbGFuZSAqcGxhbmUpDQo+ICB7DQo+ICAJY29uc3Qgc3RydWN0IGF0bWVsX2hsY2Rj X2xheWVyX2Rlc2MgKmRlc2MgPSBwbGFuZS0+bGF5ZXIuZGVzYzsNCj4gKwlzdHJ1Y3QgYXRtZWxf aGxjZGNfZGMgKmRjID0gcGxhbmUtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsNCj4gIA0KPiAgCWlm IChkZXNjLT50eXBlID09IEFUTUVMX0hMQ0RDX09WRVJMQVlfTEFZRVIgfHwNCj4gIAkgICAgZGVz Yy0+dHlwZSA9PSBBVE1FTF9ITENEQ19DVVJTT1JfTEFZRVIpIHsNCj4gQEAgLTc5NiwyMCArOTE3 LDUwIEBAIHN0YXRpYyBpbnQgYXRtZWxfaGxjZGNfcGxhbmVfaW5pdF9wcm9wZXJ0aWVzKHN0cnVj dCBhdG1lbF9obGNkY19wbGFuZSAqcGxhbmUpDQo+ICAJCQlyZXR1cm4gcmV0Ow0KPiAgCX0NCj4g IA0KPiAtCWlmIChkZXNjLT5sYXlvdXQuY3NjKSB7DQo+ICsJaWYgKCEoZGMtPmlzX3hsY2RjKSkg ew0KDQp5b3UgY2FuIHJldmVyc2UgdGhlIGxvZ2ljDQoNCj4gKwkJaWYgKGRlc2MtPmxheW91dC5j c2MpIHsNCj4gKwkJCS8qDQo+ICsJCQkgKiBUT0RPOiBkZWNhcmUgYSAieXV2LXRvLXJnYi1jb252 LWZhY3RvcnMiIHByb3BlcnR5IHRvIGxldA0KPiArCQkJICogdXNlcnNwYWNlIG1vZGlmeSB0aGVz ZSBmYWN0b3JzICh1c2luZyBhIEJMT0IgcHJvcGVydHkgPykuDQo+ICsJCQkgKi8NCj4gKwkJCWF0 bWVsX2hsY2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLA0KPiArCQkJCQkJICAgIGRl c2MtPmxheW91dC5jc2MsDQo+ICsJCQkJCQkgICAgMHg0YzkwMDA5MSk7DQo+ICsJCQlhdG1lbF9o bGNkY19sYXllcl93cml0ZV9jZmcoJnBsYW5lLT5sYXllciwNCj4gKwkJCQkJCSAgICBkZXNjLT5s YXlvdXQuY3NjICsgMSwNCj4gKwkJCQkJCSAgICAweDdhNWY1MDkwKTsNCj4gKwkJCWF0bWVsX2hs Y2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLA0KPiArCQkJCQkJICAgIGRlc2MtPmxh eW91dC5jc2MgKyAyLA0KPiArCQkJCQkJICAgIDB4NDAwNDA4OTApOw0KPiArCQl9DQo+ICsJfSBl bHNlIHsNCj4gIAkJLyoNCj4gLQkJICogVE9ETzogZGVjYXJlIGEgInl1di10by1yZ2ItY29udi1m YWN0b3JzIiBwcm9wZXJ0eSB0byBsZXQNCj4gLQkJICogdXNlcnNwYWNlIG1vZGlmeSB0aGVzZSBm YWN0b3JzICh1c2luZyBhIEJMT0IgcHJvcGVydHkgPykuDQo+ICsJCSAqIHl1di10by1yZ2ItY29u di1mYWN0b3JzIGFyZSBub3cgZGVmaW5lZCBmcm9tIExDRENfSEVPQ0ZHMTYgdG8NCj4gKwkJICog TENEQ19IRU9DRkcyMSByZWdpc3RlcnMgaW4gU0FNOVg3Lg0KPiAgCQkgKi8NCj4gLQkJYXRtZWxf aGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsDQo+IC0JCQkJCSAgICBkZXNjLT5s YXlvdXQuY3NjLA0KPiAtCQkJCQkgICAgMHg0YzkwMDA5MSk7DQo+IC0JCWF0bWVsX2hsY2RjX2xh eWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLA0KPiAtCQkJCQkgICAgZGVzYy0+bGF5b3V0LmNz YyArIDEsDQo+IC0JCQkJCSAgICAweDdhNWY1MDkwKTsNCj4gLQkJYXRtZWxfaGxjZGNfbGF5ZXJf d3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsDQo+IC0JCQkJCSAgICBkZXNjLT5sYXlvdXQuY3NjICsg MiwNCj4gLQkJCQkJICAgIDB4NDAwNDA4OTApOw0KPiArCQlpZiAoZGVzYy0+bGF5b3V0LmNzYykg ew0KPiArCQkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsDQo+ICsJ CQkJCQkgICAgZGVzYy0+bGF5b3V0LmNzYywNCj4gKwkJCQkJCSAgICAweDAwMDAwNDg4KTsNCj4g KwkJCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLA0KPiArCQkJCQkJ ICAgIGRlc2MtPmxheW91dC5jc2MgKyAxLA0KPiArCQkJCQkJICAgIDB4MDAwMDA2NDgpOw0KPiAr CQkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsDQo+ICsJCQkJCQkg ICAgZGVzYy0+bGF5b3V0LmNzYyArIDIsDQo+ICsJCQkJCQkgICAgMHgxRUEwMDQ4MCk7DQo+ICsJ CQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9jZmcoJnBsYW5lLT5sYXllciwNCj4gKwkJCQkJCSAg ICBkZXNjLT5sYXlvdXQuY3NjICsgMywNCj4gKwkJCQkJCSAgICAweDAwMDAxRDI4KTsNCj4gKwkJ CWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLA0KPiArCQkJCQkJICAg IGRlc2MtPmxheW91dC5jc2MgKyA0LA0KPiArCQkJCQkJICAgIDB4MDgxMDA0ODApOw0KPiArCQkJ YXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsDQo+ICsJCQkJCQkgICAg ZGVzYy0+bGF5b3V0LmNzYyArIDUsDQo+ICsJCQkJCQkgICAgMHgwMDAwMDAwMCk7DQo+ICsJCQlh dG1lbF9obGNkY19sYXllcl93cml0ZV9jZmcoJnBsYW5lLT5sYXllciwNCj4gKwkJCQkJCSAgICBk ZXNjLT5sYXlvdXQuY3NjICsgNiwNCj4gKwkJCQkJCSAgICAweDAwMDAwMDA3KTsNCj4gKwkJfQ0K PiAgCX0NCj4gIA0KPiAgCXJldHVybiAwOw0KPiBAQCAtODE5LDE5ICs5NzAsMzEgQEAgdm9pZCBh dG1lbF9obGNkY19wbGFuZV9pcnEoc3RydWN0IGF0bWVsX2hsY2RjX3BsYW5lICpwbGFuZSkNCj4g IHsNCj4gIAljb25zdCBzdHJ1Y3QgYXRtZWxfaGxjZGNfbGF5ZXJfZGVzYyAqZGVzYyA9IHBsYW5l LT5sYXllci5kZXNjOw0KPiAgCXUzMiBpc3I7DQo+ICsJc3RydWN0IGF0bWVsX2hsY2RjX2RjICpk YyA9IHBsYW5lLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7DQo+ICANCj4gLQlpc3IgPSBhdG1lbF9o bGNkY19sYXllcl9yZWFkX3JlZygmcGxhbmUtPmxheWVyLCBBVE1FTF9ITENEQ19MQVlFUl9JU1Ip Ow0KPiArCWlmICghKGRjLT5pc194bGNkYykpDQoNCnNhbWUgaGVyZS4NCg0KPiArCQlpc3IgPSBh dG1lbF9obGNkY19sYXllcl9yZWFkX3JlZygmcGxhbmUtPmxheWVyLCBBVE1FTF9ITENEQ19MQVlF Ul9JU1IpOw0KPiArCWVsc2UNCj4gKwkJaXNyID0gYXRtZWxfaGxjZGNfbGF5ZXJfcmVhZF9yZWco JnBsYW5lLT5sYXllciwgQVRNRUxfWExDRENfTEFZRVJfSVNSKTsNCj4gIA0KPiAgCS8qDQo+ICAJ ICogVGhlcmUncyBub3QgbXVjaCB3ZSBjYW4gZG8gaW4gY2FzZSBvZiBvdmVycnVuIGV4Y2VwdCBp bmZvcm1pbmcNCj4gIAkgKiB0aGUgdXNlci4gSG93ZXZlciwgd2UgYXJlIGluIGludGVycnVwdCBj b250ZXh0IGhlcmUsIGhlbmNlIHRoZQ0KPiAgCSAqIHVzZSBvZiBkZXZfZGJnKCkuDQo+ICAJICov DQo+IC0JaWYgKGlzciAmDQo+IC0JICAgIChBVE1FTF9ITENEQ19MQVlFUl9PVlJfSVJRKDApIHwg QVRNRUxfSExDRENfTEFZRVJfT1ZSX0lSUSgxKSB8DQo+IC0JICAgICBBVE1FTF9ITENEQ19MQVlF Ul9PVlJfSVJRKDIpKSkNCj4gLQkJZGV2X2RiZyhwbGFuZS0+YmFzZS5kZXYtPmRldiwgIm92ZXJy dW4gb24gcGxhbmUgJXNcbiIsDQo+IC0JCQlkZXNjLT5uYW1lKTsNCj4gKwlpZiAoIShkYy0+aXNf eGxjZGMpKSB7DQo+ICsJCWlmIChpc3IgJg0KPiArCQkgICAgKEFUTUVMX0hMQ0RDX0xBWUVSX09W Ul9JUlEoMCkgfCBBVE1FTF9ITENEQ19MQVlFUl9PVlJfSVJRKDEpIHwNCj4gKwkJICAgICBBVE1F TF9ITENEQ19MQVlFUl9PVlJfSVJRKDIpKSkNCj4gKwkJCWRldl9kYmcocGxhbmUtPmJhc2UuZGV2 LT5kZXYsICJvdmVycnVuIG9uIHBsYW5lICVzXG4iLA0KPiArCQkJCWRlc2MtPm5hbWUpOw0KPiAr CX0gZWxzZSB7DQo+ICsJCWlmIChpc3IgJg0KPiArCQkgICAgKEFUTUVMX1hMQ0RDX0xBWUVSX09W Ul9JUlEoMCkgfCBBVE1FTF9YTENEQ19MQVlFUl9PVlJfSVJRKDEpIHwNCj4gKwkJICAgICBBVE1F TF9YTENEQ19MQVlFUl9PVlJfSVJRKDIpKSkNCj4gKwkJCWRldl9kYmcocGxhbmUtPmJhc2UuZGV2 LT5kZXYsICJvdmVycnVuIG9uIHBsYW5lICVzXG4iLA0KPiArCQkJCWRlc2MtPm5hbWUpOw0KPiAr CX0NCj4gIH0NCj4gIA0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1 bmNzIGF0bWVsX2hsY2RjX2xheWVyX3BsYW5lX2hlbHBlcl9mdW5jcyA9IHsNCg0K 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 26048EB64DB for ; Wed, 14 Jun 2023 07:21:09 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7876010E1D6; Wed, 14 Jun 2023 07:20:52 +0000 (UTC) Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1379C10E0DD for ; Wed, 14 Jun 2023 07:10:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1686726645; x=1718262645; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=tRp+8M3hEkXmwZKzWj7JgT6nDCu729hergdYPdKPafI=; b=hQnXF1v8hCLStdHBMAwO+IUb0CKg9FlAXaoNxzfuf/TxctBisLyG3tnS FWpnzAS4v1yoO1V5mDtCKD8c0fuxDmcioPJWPfSDcoLBxeohHYiTiCE47 zeYwR6fUe4RfbY71bdZA74SfrJW4LBrrnGjIWnSroXDMcdutpkHXp04DI nWpPSQNoM6rXcncNmDS9Tl7afhLcftUSKAI3p0WNRkdZYdRgWAZuYaYxV yK+GBiybgHJXBzrDv+6INoZvtIpotqBckg+6ooIepk3EJy+gDBnvI/ywb Gi2VJEE1IjBYmskz1SZyfJXrREVp7A3Otanc3NBxHq4qFP0mo1WciLAPd Q==; X-IronPort-AV: E=Sophos;i="6.00,241,1681196400"; d="scan'208";a="220209001" X-Amp-Result: SKIPPED(no attachment in message) Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 14 Jun 2023 00:10:37 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Wed, 14 Jun 2023 00:10:20 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Wed, 14 Jun 2023 00:10:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Lykj/TVXJhdT+ixEaGRymxJsFfpEyYMmpAAREBpDfE51kkrwJGuvDPitxMBBeOvmdp5K8qjWsn9JWoPczLxjc8FKIpjddC9wv6OVatQXvQtnv+MF9Os8xhoOXV4Ea0r+t58nnA2tYRoQgzPtqNsFv+KUEa6OhO7SutpgeUdbWSSAynK9GxOkN7uoQ2U2c7f6EbgJg3sT2/9xOq+MCVUBeCNb2A3LH8GVmkTYOkxF+m0cyssoDmRdpoY5WToDB3i1C/o/sRDwzIlrGZBMC9Fl/girq7ksqgXQbs6XQjUEZfqbFYej8YIiUJ+J/WHoOsOSNG7rsG8WPOUhAVG1nuZbnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tRp+8M3hEkXmwZKzWj7JgT6nDCu729hergdYPdKPafI=; b=Ra6Pqurmezm5AV+rEp9P4EooNejQvM+Lf5oZLWUchITjvWkHifthcntSVABRUNlIhx4apLOGILxtD22ePnLAM4IBrJ3Iv3JqDK7A3P+tZTKNplQ5Bm6noNZafttFna03GMbBaY77x42NveC1OLSbcTj+yo+NLz9lMfeE8LXpVqqLukZEwcQFdnGwDI0++eL+iBS8NrC566rYftx/8Z61jYvY9sbLGN5kIwg2zyG/JPx4do830eY7L9NkDw0k+HfIsXqlDUqWckg9m+vre0Muy50bzCC2scwulACqihKeg6E/EOuhENb8F1eutMO2LwfzjFZmHzg7Wjvf4AwttEChww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tRp+8M3hEkXmwZKzWj7JgT6nDCu729hergdYPdKPafI=; b=SD/DKPq98JYlgLIQ/LSovH1rKgNz2PwyEoIX8gsh03lgQkM4TOyVFajpaxQQi9TohLJUnSqja+qv9fuMhL7DmAfzZXhtC5tD0sG8iIFHO0ewyPO9hPBP/ukv4G0kXOaHG0Ad++PtIC1ZOBGkL8RWGlTW+YAzKeHch2Yx8i5DfLQ= Received: from SJ2PR11MB7648.namprd11.prod.outlook.com (2603:10b6:a03:4c3::17) by MN0PR11MB6159.namprd11.prod.outlook.com (2603:10b6:208:3c9::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.29; Wed, 14 Jun 2023 07:10:17 +0000 Received: from SJ2PR11MB7648.namprd11.prod.outlook.com ([fe80::27bf:a69f:806f:67be]) by SJ2PR11MB7648.namprd11.prod.outlook.com ([fe80::27bf:a69f:806f:67be%5]) with mapi id 15.20.6433.024; Wed, 14 Jun 2023 07:10:17 +0000 From: To: , , , , , , , , , , , , , , Subject: Re: [PATCH 6/9] drm: atmel_hlcdc: Add support for XLCDC in atmel LCD driver Thread-Topic: [PATCH 6/9] drm: atmel_hlcdc: Add support for XLCDC in atmel LCD driver Thread-Index: AQHZno9Ff1Cuco+5VECF25MgwR1ezA== Date: Wed, 14 Jun 2023 07:10:17 +0000 Message-ID: References: <20230613070426.467389-1-manikandan.m@microchip.com> <20230613070426.467389-7-manikandan.m@microchip.com> In-Reply-To: <20230613070426.467389-7-manikandan.m@microchip.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ2PR11MB7648:EE_|MN0PR11MB6159:EE_ x-ms-office365-filtering-correlation-id: 7b7c7113-99c8-4f8a-4e8d-08db6ca6685f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 5qA+Gl0DWc3YdAEikCG3mT0+/NMFkmyLgk1IE4fr5Z0vAtJN9SjyBGefcogufgZ9b9bNaqSb6ElR3wRJrv5h7L5384GSGCWFTLoi3ne79IpEhOAf8MHAwm1Ti+VTpdXmo+P1d8hJQfnCZgyT9K1OxIZsHdJaZ0jnc+vhHp8dVQI8M4GJKGcKe811hLDNOojorZjAqLVIdOorvclZD4/JjPXRsB8xw4orxvTskfoFB1Jmbhdc7FDg/axE60eMcflBLj4TSM5sRIHZZjJs3KYXmwKerBK2G66/dnRL+pUXy8OXoRxfahRren+8JsL+1RTdIY9MpLx3Jj0Iz4ooeSoSzV963jxvgSqZUyNPpu4dFoVDNx+i1QngR2by3HaAhTGd4ciesLytueW40SKhnCJWb1bzcRd1qaaT78ke+IdTZt7+Xah72g3BAFGYVOEnjrVDzL9apvfzZeh6H/t1GsXXPRbWMLezM6G0700JPT0Ov4j3xZSSyYf+3OP84QZpD1KNApD55+gYzGDXHhTD5v0HVxcrEEKAzYlLUwjzNkfvYiSn8sqRnlZIFQlO1umeRVflUGwT5GTNgtoLGGAxhwAXN4y6gUztHW/ne85cSTekjrkH2S/OokjUH8SU1KSxDSJ9ruGPmTEy3PnHB8YWkZSmVeRGvBT8IbBvzt3llXqaZ38DYDYT3hlGE/kj4L/09A4laNfzn7rUD3P2RxN1oufje4WHI8DyW8PUJNHPFVU6+rw= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ2PR11MB7648.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(136003)(346002)(376002)(366004)(396003)(39860400002)(451199021)(71200400001)(6486002)(478600001)(6506007)(107886003)(26005)(83380400001)(186003)(6512007)(53546011)(36756003)(31696002)(86362001)(38070700005)(38100700002)(2616005)(921005)(122000001)(66556008)(66946007)(64756008)(66446008)(66476007)(4326008)(76116006)(316002)(91956017)(8936002)(8676002)(31686004)(7416002)(5660300002)(30864003)(2906002)(41300700001)(110136005)(54906003)(21314003)(45980500001)(43740500002)(579004)(559001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VmVXT2hkQjlHWVp6bGlzTVhvSnpud3ZZdEFyZVgxbS9GaCtxa1FCd3ZUaWtw?= =?utf-8?B?aEtuNEtYVmplYkhqYWJNZGtJYXhzRTdnRENTSVQrWjhhOGF2by9rbVBDYUto?= =?utf-8?B?RGk3ckFXOGg4Y2hvZE9hNEtGbDlIWDY2TUtYT2JibE1rdUxxVzJhZ004WGhn?= =?utf-8?B?OHJ2bWpTU1ZlQUdxYmh3NndZcUpUbUJIbTU2cVgyL2hjMDA4QUFJb1pxTjR2?= =?utf-8?B?bFRYUEtaYVdSZEVXc3UzTlptQUd0QXBJa2d3UU82TE4wZEtZdUZ4VWx5Vzc5?= =?utf-8?B?RUFVRTZSeENVWFRvTmxhaWFQUWxIMWpiaHJRRmM3eWRwdWdCandKSjRDOC9v?= =?utf-8?B?czYvN1RTMUx4UWVFYlNXL3o0VWFkUTVNOEphT0had1YxeHJyakxOYWFRdHgy?= =?utf-8?B?ZUZPVGF3ZS9NMitFSXA4em1ZZUUvSzgzZDNtbFhMdUlVbytUYVVVQzNxVkVz?= =?utf-8?B?Ky9TSFB5VkVpajZUbkFTdUJNbTZBc3E5azhpeUtpVzFwOFdIdzE1WnU2WXVa?= =?utf-8?B?dk9PSlppRjlqQmFuTnlVc2xGbzdaU3FicjFjYTF0cXlkWXNXQ3ZIK1JxbnZ1?= =?utf-8?B?ZVBid2ZFdWJtSFRjcytsVENoM0JyeGNYdzY5d2tBU3FhbWU1a21MU2orSFJ0?= =?utf-8?B?cFlmZHRKQXg5bXhGQmxpNU16ZjR6NkxGZ3R2T1huc0IzL3k4VFUwd0FqcndI?= =?utf-8?B?dDhQV2dOb0RmbjhzNENvUWFPdEhXSHpyOXdSM2NGQ3VnL0pZUlJISnBUTHYv?= =?utf-8?B?eS8zUUJzL3phVXhSTzRjYUdDREF3Y0NhQnRsdFNaY3lmSXNkQjlNK0Vmbm85?= =?utf-8?B?aFBjQ1g4WE1KL1ZIOGxxU0pSSUNOU3VDZ2laRXJnYUtXSU50Tlh4dEs1WSt2?= =?utf-8?B?RE8yQk45ZVFYTFdsWXRhNThyRGFFU1c0aXgwczBTTjQ0OHA2TGMvZkpIWDVP?= =?utf-8?B?NFQxNmx0MXNYanc0TTQ4RkdyUHRzUkc4N2h4cWg5Wnk0eGlwbHBRNnBYbzIz?= =?utf-8?B?Ti9Tc3FRNmx3enlyRzVNOXkrdnlxUGVsWE9jeUtQTnY4ajVpV2lrZWdkbFY0?= =?utf-8?B?bjVqck5SdUFSb1orK3NId3RmcGN5eWhtcTdiS3RYK0lITVZ1aTBmREF2Y09u?= =?utf-8?B?VEQ3WC9Uc0s5OWQ0TEhUcG8xbzBSS0oyOXBvUUlNL0FPSzZTb0pXclFvc1NX?= =?utf-8?B?VzBFemIwT0xNREJVMkRxYldTWG9vNWh0dENMUFM1S1hOTGpSUFlJdFBOeEE1?= =?utf-8?B?N2d0elE5NlZHcmYyVjVqenpLRFZWdGVwNGJrV0x2NFlTSVgzK2ExWVVyR1Vp?= =?utf-8?B?SDhMeTk4VkFpNnZvNEtzRGIwa1BRam9LUktwZk9TSHVBcElpRGZvVm0wcXAy?= =?utf-8?B?NFJ3T0Y5Q05mWUtrVzdjVTNna3NtZUJ2VTZFV1VpL28vZmlXbWdvMk1zTHlx?= =?utf-8?B?a1EraktEM3B5QzdDcmtta0ljYXVvMzBXVk5jTmNsdU9id0t3ZDdGTTFrQWRS?= =?utf-8?B?a0JWWjZqQ1ZNYVR5ZlRROThDVk1jbWJTbW1LVk1aM2dTSUR1RHkza3R1ZTNQ?= =?utf-8?B?MDJkcXNEb0U2NEk5YnJPdUxmMUhSaUNWaFZHek81dXdQekpNS1FyVkRlNUdD?= =?utf-8?B?ck5aVU9KdldINjI4Z2lxeWtaK0dWSS9hdENvOXliem9hV3lxSUs3TXJTRDhO?= =?utf-8?B?aS96V2J1d0IvdmFEZ091d1N0aG40QWJpcU1lQVRlOWcyWWpUakdiamlNWEx6?= =?utf-8?B?QnE0Z0QvcjFzK3dsTUZ4a1owU295K2NMVmVOTHRobkRaYnkyVk1tK0I1aGMx?= =?utf-8?B?RGtoYkUzYXgzQXg1UHZaWWtRU1pxd1VaUVoyeFcwcmpHd3R5ZWU4SGJ3KzhH?= =?utf-8?B?SElLb3FSWUs0TkJweUtUTSs2TGVvY1FSczB6SFp5M3dpRCtKSEN6cUxoUzY5?= =?utf-8?B?SVpBZk8rMW5STmVsdGE1dkNtMzc3azYzQnhSaHYwK0c4NHpMblMvWlB1c3dW?= =?utf-8?B?Q29pNkdHcE9OQlR2SmZXZ3VXcGd0c3k1ZGRQSGFVdkJkdEhDaWRtUW0rSkxC?= =?utf-8?B?MWNUYnlSaHpYQ3BXRHJCV2c0UjAzMUNUNEZwcE1yRk1IbFprSE9IYjFycUpX?= =?utf-8?Q?E2pDjZnHOAzBFiPKsvsaaE/3K?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ2PR11MB7648.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b7c7113-99c8-4f8a-4e8d-08db6ca6685f X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jun 2023 07:10:17.3915 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vAOL9XLWQ8MQEn/+xcqMRpWaWguz6frRmUSgHUtjZcFLQx3dyH5+dWq4+6PigIS1vda2UJiHZUOpYtZDe3N/Okiina/dvHcxxqjFvQ8kqjs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR11MB6159 X-Mailman-Approved-At: Wed, 14 Jun 2023 07:20:34 +0000 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: , Cc: Balakrishnan.S@microchip.com, Nayabbasha.Sayed@microchip.com, Balamanikandan.Gunasundar@microchip.com, Varshini.Rajendran@microchip.com, Dharma.B@microchip.com, Durai.ManickamKR@microchip.com, Hari.PrasathGE@microchip.com Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gMTMuMDYuMjAyMyAxMDowNCwgTWFuaWthbmRhbiBNdXJhbGlkaGFyYW4gd3JvdGU6DQo+IC0g WExDREMgaW4gU0FNOVg3IGhhcyBkaWZmZXJlbnQgc2V0cyBvZiByZWdpc3RlcnMgYW5kIGFkZGl0 aW9uYWwNCj4gY29uZmlndXJhdGlvbiBiaXRzIHdoZW4gY29tcGFyZWQgdG8gcHJldmlvdXMgSExD REMgSVAuIFJlYWQvd3JpdGUNCj4gb3BlcmF0aW9uIG9uIHRoZSBjb250cm9sbGVyIHJlZ2lzdGVy cyBpcyBub3cgc2VwYXJhdGVkIHVzaW5nIHRoZQ0KPiBYTENEQyBzdGF0dXMgZmxhZy4NCj4gCS0g SEVPIHNjYWxpbmcsIHdpbmRvdyByZXNhbXBsaW5nLCBBbHBoYSBibGVuZGluZywgWVVWLXRvLVJH Qg0KPiBjb252ZXJzaW9uIGluIFhMQ0RDIGlzIGRlcml2ZWQgYW5kIGhhbmRsZWQgdXNpbmcgYWRk aXRpb25hbA0KPiBjb25maWd1cmF0aW9uIGJpdHMgYW5kIHJlZ2lzdGVycy4NCj4gCS0gV3JpdGlu ZyBvbmUgdG8gdGhlIEVuYWJsZSBmaWVsZHMgb2YgZWFjaCBsYXllciBpbiBMQ0RfQVRUUkUNCj4g aXMgcmVxdWlyZWQgdG8gcmVmbGVjdCB0aGUgdmFsdWVzIHNldCBpbiBDb25maWd1cmF0aW9uLCBG QkEsIEVuYWJsZQ0KPiByZWdpc3RlcnMgb2YgZWFjaCBsYXllcg0KPiANCj4gU2lnbmVkLW9mZi1i eTogTWFuaWthbmRhbiBNdXJhbGlkaGFyYW4gPG1hbmlrYW5kYW4ubUBtaWNyb2NoaXAuY29tPg0K PiBbSGFyaS5QcmFzYXRoR0VAbWljcm9jaGlwLmNvbTogdXBkYXRlIHRoZSBhdHRyaWJ1dGUgZmll bGQgZm9yIGVhY2ggbGF5ZXJdDQo+IFNpZ25lZC1vZmYtYnk6IEhhcmkgUHJhc2F0aCBHdWp1bGFu IEVsYW5nbyA8SGFyaS5QcmFzYXRoR0VAbWljcm9jaGlwLmNvbT4NCj4gW2R1cmFpLm1hbmlja2Ft a3JAbWljcm9jaGlwLmNvbTogaW1wbGVtZW50IHN0YXR1cyBmbGFnIHRvIHNlcHJhdGUgcmVnaXN0 ZXIgdXBkYXRlXQ0KPiBTaWduZWQtb2ZmLWJ5OiBEdXJhaSBNYW5pY2thbSBLUiA8ZHVyYWkubWFu aWNrYW1rckBtaWNyb2NoaXAuY29tPg0KPiAtLS0NCj4gIC4uLi9ncHUvZHJtL2F0bWVsLWhsY2Rj L2F0bWVsX2hsY2RjX2NydGMuYyAgICB8ICAyOCArLQ0KPiAgLi4uL2dwdS9kcm0vYXRtZWwtaGxj ZGMvYXRtZWxfaGxjZGNfcGxhbmUuYyAgIHwgMjk3ICsrKysrKysrKysrKysrLS0tLQ0KPiAgMiBm aWxlcyBjaGFuZ2VkLCAyNTYgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pDQo+IA0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX2NydGMu YyBiL2RyaXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19jcnRjLmMNCj4gaW5k ZXggNTgxODRjZDZhYjBiLi43YzljZjdjMGM3NWQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19jcnRjLmMNCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX2NydGMuYw0KPiBAQCAtMTM5LDEwICsxMzksMTAg QEAgc3RhdGljIHZvaWQgYXRtZWxfaGxjZGNfY3J0Y19tb2RlX3NldF9ub2ZiKHN0cnVjdCBkcm1f Y3J0YyAqYykNCj4gIAlzdGF0ZSA9IGRybV9jcnRjX3N0YXRlX3RvX2F0bWVsX2hsY2RjX2NydGNf c3RhdGUoYy0+c3RhdGUpOw0KPiAgCWNmZyA9IHN0YXRlLT5vdXRwdXRfbW9kZSA8PCA4Ow0KPiAg DQo+IC0JaWYgKGFkai0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX05WU1lOQykNCj4gKwlpZiAoIWNy dGMtPmRjLT5pc194bGNkYyAmJiAoYWRqLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfTlZTWU5DKSkN Cj4gIAkJY2ZnIHw9IEFUTUVMX0hMQ0RDX1ZTUE9MOw0KPiAgDQo+IC0JaWYgKGFkai0+ZmxhZ3Mg JiBEUk1fTU9ERV9GTEFHX05IU1lOQykNCj4gKwlpZiAoIWNydGMtPmRjLT5pc194bGNkYyAmJiAo YWRqLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfTkhTWU5DKSkNCj4gIAkJY2ZnIHw9IEFUTUVMX0hM Q0RDX0hTUE9MOw0KPiAgDQo+ICAJcmVnbWFwX3VwZGF0ZV9iaXRzKHJlZ21hcCwgQVRNRUxfSExD RENfQ0ZHKDUpLA0KPiBAQCAtMTc3LDYgKzE3NywxOCBAQCBzdGF0aWMgdm9pZCBhdG1lbF9obGNk Y19jcnRjX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqYywNCj4gIA0KPiAgCXBtX3J1 bnRpbWVfZ2V0X3N5bmMoZGV2LT5kZXYpOw0KPiAgDQo+ICsJaWYgKGNydGMtPmRjLT5pc194bGNk Yykgew0KPiArCQlyZWdtYXBfd3JpdGUocmVnbWFwLCBBVE1FTF9ITENEQ19ESVMsIEFUTUVMX1hM Q0RDX0NNKTsNCj4gKwkJd2hpbGUgKCFyZWdtYXBfcmVhZChyZWdtYXAsIEFUTUVMX0hMQ0RDX1NS LCAmc3RhdHVzKSAmJg0KPiArCQkgICAgICAgKHN0YXR1cyAmIEFUTUVMX1hMQ0RDX0NNKSkNCj4g KwkJCWNwdV9yZWxheCgpOw0KDQpBIHRpbWVvdXQgd291bGQgYmUgZ29kIGhlcmUgdG8gYXZvaWQg cG90ZW50aWFsIGluZmluaXRlIGxvb3AgKGZvciBkaWZmZXJlbnQNCnJlYXNvbnMpLiBZb3UgY2Fu IGNoZWNrIHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dCgpLiBTYW1lIGZvciB0aGUgcmVzdCBvZg0K d2hpbGUgbG9vcHMgYWJvdmUuDQoNCj4gKw0KPiArCQlyZWdtYXBfd3JpdGUocmVnbWFwLCBBVE1F TF9ITENEQ19ESVMsIEFUTUVMX1hMQ0RDX1NEKTsNCj4gKwkJd2hpbGUgKCFyZWdtYXBfcmVhZChy ZWdtYXAsIEFUTUVMX0hMQ0RDX1NSLCAmc3RhdHVzKSAmJg0KPiArCQkgICAgICAgIShzdGF0dXMg JiBBVE1FTF9YTENEQ19TRCkpDQo+ICsJCQljcHVfcmVsYXgoKTsNCj4gKwl9DQo+ICsNCj4gIAly ZWdtYXBfd3JpdGUocmVnbWFwLCBBVE1FTF9ITENEQ19ESVMsIEFUTUVMX0hMQ0RDX0RJU1ApOw0K PiAgCXdoaWxlICghcmVnbWFwX3JlYWQocmVnbWFwLCBBVE1FTF9ITENEQ19TUiwgJnN0YXR1cykg JiYNCj4gIAkgICAgICAgKHN0YXR1cyAmIEFUTUVMX0hMQ0RDX0RJU1ApKQ0KPiBAQCAtMjMxLDYg KzI0MywxOCBAQCBzdGF0aWMgdm9pZCBhdG1lbF9obGNkY19jcnRjX2F0b21pY19lbmFibGUoc3Ry dWN0IGRybV9jcnRjICpjLA0KPiAgCSAgICAgICAhKHN0YXR1cyAmIEFUTUVMX0hMQ0RDX0RJU1Ap KQ0KPiAgCQljcHVfcmVsYXgoKTsNCj4gIA0KPiArCWlmIChjcnRjLT5kYy0+aXNfeGxjZGMpIHsN Cj4gKwkJcmVnbWFwX3dyaXRlKHJlZ21hcCwgQVRNRUxfSExDRENfRU4sIEFUTUVMX1hMQ0RDX0NN KTsNCj4gKwkJd2hpbGUgKCFyZWdtYXBfcmVhZChyZWdtYXAsIEFUTUVMX0hMQ0RDX1NSLCAmc3Rh dHVzKSAmJg0KPiArCQkgICAgICAgIShzdGF0dXMgJiBBVE1FTF9YTENEQ19DTSkpDQo+ICsJCQlj cHVfcmVsYXgoKTsNCj4gKw0KPiArCQlyZWdtYXBfd3JpdGUocmVnbWFwLCBBVE1FTF9ITENEQ19F TiwgQVRNRUxfWExDRENfU0QpOw0KPiArCQl3aGlsZSAoIXJlZ21hcF9yZWFkKHJlZ21hcCwgQVRN RUxfSExDRENfU1IsICZzdGF0dXMpICYmDQo+ICsJCSAgICAgICAoc3RhdHVzICYgQVRNRUxfWExD RENfU0QpKQ0KPiArCQkJY3B1X3JlbGF4KCk7DQo+ICsJfQ0KPiArDQo+ICAJcG1fcnVudGltZV9w dXRfc3luYyhkZXYtPmRldik7DQo+ICANCj4gIH0NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2F0 bWVsLWhsY2RjL2F0bWVsX2hsY2RjX3BsYW5lLmMNCj4gaW5kZXggZGFhNTA4NTA0ZjQ3Li5mZTMz NDc2ODE4YzQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1l bF9obGNkY19wbGFuZS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1l bF9obGNkY19wbGFuZS5jDQo+IEBAIC0zMzAsMTEgKzMzMCw1OSBAQCBzdGF0aWMgdm9pZCBhdG1l bF9obGNkY19wbGFuZV9zZXR1cF9zY2FsZXIoc3RydWN0IGF0bWVsX2hsY2RjX3BsYW5lICpwbGFu ZSwNCj4gIAkJCQkJCQkJICAgICB5ZmFjdG9yKSk7DQo+ICB9DQo+ICANCj4gK3N0YXRpYyB2b2lk IGF0bWVsX3hsY2RjX3BsYW5lX3NldHVwX3NjYWxlcihzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmUg KnBsYW5lLA0KPiArCQkJCQkgICBzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmVfc3RhdGUgKnN0YXRl KQ0KPiArew0KPiArCWNvbnN0IHN0cnVjdCBhdG1lbF9obGNkY19sYXllcl9kZXNjICpkZXNjID0g cGxhbmUtPmxheWVyLmRlc2M7DQo+ICsJdTMyIHhmYWN0b3IsIHlmYWN0b3I7DQo+ICsNCj4gKwlp ZiAoIWRlc2MtPmxheW91dC5zY2FsZXJfY29uZmlnKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlp ZiAoc3RhdGUtPmNydGNfdyA9PSBzdGF0ZS0+c3JjX3cgJiYgc3RhdGUtPmNydGNfaCA9PSBzdGF0 ZS0+c3JjX2gpIHsNCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5 ZXIsDQo+ICsJCQkJCSAgICBkZXNjLT5sYXlvdXQuc2NhbGVyX2NvbmZpZywgMCk7DQo+ICsJCXJl dHVybjsNCj4gKwl9DQo+ICsNCj4gKwkvKiB4ZmFjdG9yID0gcm91bmRbKDJeMjAgKiBYTUVNU0la RSkvWFNJWkUpXSAqLw0KPiArCXhmYWN0b3IgPSAoMTA0ODU3NiAqIHN0YXRlLT5zcmNfdykgLyBz dGF0ZS0+Y3J0Y193Ow0KPiArDQo+ICsJLyogeWZhY3RvciA9IHJvdW5kWygyXjIwICogWU1FTVNJ WkUpL1lTSVpFKV0gKi8NCj4gKwl5ZmFjdG9yID0gKDEwNDg1NzYgKiBzdGF0ZS0+c3JjX2gpIC8g c3RhdGUtPmNydGNfaDsNCj4gKw0KPiArCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX2NmZygmcGxh bmUtPmxheWVyLCBkZXNjLT5sYXlvdXQuc2NhbGVyX2NvbmZpZywNCj4gKwkJCQkgICAgQVRNRUxf WExDRENfTEFZRVJfVlNDQUxFUl9MVU1BX0VOQUJMRSB8DQo+ICsJCQkJICAgIEFUTUVMX1hMQ0RD X0xBWUVSX1ZTQ0FMRVJfQ0hST01BX0VOQUJMRSB8DQo+ICsJCQkJICAgIEFUTUVMX1hMQ0RDX0xB WUVSX0hTQ0FMRVJfTFVNQV9FTkFCTEUgfA0KPiArCQkJCSAgICBBVE1FTF9YTENEQ19MQVlFUl9I U0NBTEVSX0NIUk9NQV9FTkFCTEUpOw0KPiArDQo+ICsJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVf Y2ZnKCZwbGFuZS0+bGF5ZXIsIGRlc2MtPmxheW91dC5zY2FsZXJfY29uZmlnICsgMSwNCj4gKwkJ CQkgICAgeWZhY3Rvcik7DQo+ICsJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+ bGF5ZXIsIGRlc2MtPmxheW91dC5zY2FsZXJfY29uZmlnICsgMywNCj4gKwkJCQkgICAgeGZhY3Rv cik7DQo+ICsNCj4gKwkvKiBBcyBwZXIgWUNiQ3Igd2luZG93IHJlc2FtcGxpbmcgY29uZmlndXJh dGlvbiAqLw0KPiArCWlmIChzdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5mb3JtYXQgPT0gRFJNX0ZP Uk1BVF9ZVVY0MjApIHsNCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+ bGF5ZXIsIGRlc2MtPmxheW91dC5zY2FsZXJfY29uZmlnICsgMiwNCj4gKwkJCQkJICAgIHlmYWN0 b3IgLyAyKTsNCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIs IGRlc2MtPmxheW91dC5zY2FsZXJfY29uZmlnICsgNCwNCj4gKwkJCQkJICAgIHhmYWN0b3IgLyAy KTsNCj4gKwl9IGVsc2Ugew0KPiArCQkvKiBBcyBwZXIgQVJHQiB3aW5kb3cgcmVzYW1wbGluZyBj b25maWd1cmF0aW9uICovDQo+ICsJCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUt PmxheWVyLCBkZXNjLT5sYXlvdXQuc2NhbGVyX2NvbmZpZyArIDIsDQo+ICsJCQkJCSAgICB5ZmFj dG9yKTsNCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsIGRl c2MtPmxheW91dC5zY2FsZXJfY29uZmlnICsgNCwNCj4gKwkJCQkJICAgIHhmYWN0b3IpOw0KPiAr CX0NCj4gK30NCj4gKw0KPiAgc3RhdGljIHZvaWQNCj4gIGF0bWVsX2hsY2RjX3BsYW5lX3VwZGF0 ZV9wb3NfYW5kX3NpemUoc3RydWN0IGF0bWVsX2hsY2RjX3BsYW5lICpwbGFuZSwNCj4gIAkJCQkg ICAgICBzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmVfc3RhdGUgKnN0YXRlKQ0KPiAgew0KPiAgCWNv bnN0IHN0cnVjdCBhdG1lbF9obGNkY19sYXllcl9kZXNjICpkZXNjID0gcGxhbmUtPmxheWVyLmRl c2M7DQo+ICsJc3RydWN0IGF0bWVsX2hsY2RjX2RjICpkYyA9IHBsYW5lLT5iYXNlLmRldi0+ZGV2 X3ByaXZhdGU7DQo+ICANCj4gIAlpZiAoZGVzYy0+bGF5b3V0LnNpemUpDQo+ICAJCWF0bWVsX2hs Y2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLCBkZXNjLT5sYXlvdXQuc2l6ZSwNCj4g QEAgLTM1Miw3ICs0MDAsMTAgQEAgYXRtZWxfaGxjZGNfcGxhbmVfdXBkYXRlX3Bvc19hbmRfc2l6 ZShzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmUgKnBsYW5lLA0KPiAgCQkJCQlBVE1FTF9ITENEQ19M QVlFUl9QT1Moc3RhdGUtPmNydGNfeCwNCj4gIAkJCQkJCQkgICAgICBzdGF0ZS0+Y3J0Y195KSk7 DQo+ICANCj4gLQlhdG1lbF9obGNkY19wbGFuZV9zZXR1cF9zY2FsZXIocGxhbmUsIHN0YXRlKTsN Cj4gKwlpZiAoIShkYy0+aXNfeGxjZGMpKQ0KDQpZb3UgY2FuIHJldmVyc2UgdGhlIGxvZ2ljIGhl cmUgdG8gYXZvaWQgIWRjLT5pc194bGNkYy4gQWxzbywgbm8gbmVlZCBmb3IgKCkNCmFyb3VuZCBk Yy0+aXNfeGxjZGMNCg0KPiArCQlhdG1lbF9obGNkY19wbGFuZV9zZXR1cF9zY2FsZXIocGxhbmUs IHN0YXRlKTsNCj4gKwllbHNlDQo+ICsJCWF0bWVsX3hsY2RjX3BsYW5lX3NldHVwX3NjYWxlcihw bGFuZSwgc3RhdGUpOw0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgdm9pZA0KPiBAQCAtMzYyLDMzICs0 MTMsNTggQEAgYXRtZWxfaGxjZGNfcGxhbmVfdXBkYXRlX2dlbmVyYWxfc2V0dGluZ3Moc3RydWN0 IGF0bWVsX2hsY2RjX3BsYW5lICpwbGFuZSwNCj4gIAl1bnNpZ25lZCBpbnQgY2ZnID0gQVRNRUxf SExDRENfTEFZRVJfRE1BX0JMRU5fSU5DUjE2IHwgc3RhdGUtPmFoYl9pZDsNCj4gIAljb25zdCBz dHJ1Y3QgYXRtZWxfaGxjZGNfbGF5ZXJfZGVzYyAqZGVzYyA9IHBsYW5lLT5sYXllci5kZXNjOw0K PiAgCWNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmZvcm1hdCA9IHN0YXRlLT5iYXNlLmZi LT5mb3JtYXQ7DQo+IC0NCg0KZXh0cmEgbGluZQ0KDQo+ICsJc3RydWN0IGF0bWVsX2hsY2RjX2Rj ICpkYyA9IHBsYW5lLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7DQo+ICAJLyoNCj4gIAkgKiBSb3Rh dGlvbiBvcHRpbWl6YXRpb24gaXMgbm90IHdvcmtpbmcgb24gUkdCODg4IChyb3RhdGlvbiBpcyBz dGlsbA0KPiAgCSAqIHdvcmtpbmcgYnV0IHdpdGhvdXQgYW55IG9wdGltaXphdGlvbikuDQo+ICAJ ICovDQo+IC0JaWYgKGZvcm1hdC0+Zm9ybWF0ID09IERSTV9GT1JNQVRfUkdCODg4KQ0KPiArCWlm ICgoIShkYy0+aXNfeGxjZGMpKSAmJiBmb3JtYXQtPmZvcm1hdCA9PSBEUk1fRk9STUFUX1JHQjg4 OCkNCg0KTm8gbmVlZCBmb3IgZXh0cmEgKCkuDQoNCj4gIAkJY2ZnIHw9IEFUTUVMX0hMQ0RDX0xB WUVSX0RNQV9ST1RESVM7DQo+ICANCj4gLQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9jZmcoJnBs YW5lLT5sYXllciwgQVRNRUxfSExDRENfTEFZRVJfRE1BX0NGRywNCj4gLQkJCQkgICAgY2ZnKTsN Cj4gKwlpZiAoIShkYy0+aXNfeGxjZGMpKSB7DQoNCm5vIG5lZWQgZm9yIGV4dHJhICgpDQoNCj4g KwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsIEFUTUVMX0hMQ0RD X0xBWUVSX0RNQV9DRkcsDQo+ICsJCQkJCSAgICBjZmcpOw0KPiAgDQo+IC0JY2ZnID0gQVRNRUxf SExDRENfTEFZRVJfRE1BIHwgQVRNRUxfSExDRENfTEFZRVJfUkVQOw0KPiArCQljZmcgPSBBVE1F TF9ITENEQ19MQVlFUl9ETUEgfCBBVE1FTF9ITENEQ19MQVlFUl9SRVA7DQo+ICsJfSBlbHNlIHsN Cj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsIEFUTUVMX1hM Q0RDX0xBWUVSX0RNQV9DRkcsDQo+ICsJCQkJCSAgICBjZmcpOw0KPiArDQo+ICsJCWNmZyA9IEFU TUVMX1hMQ0RDX0xBWUVSX0RNQSB8IEFUTUVMX1hMQ0RDX0xBWUVSX1JFUDsNCj4gKwl9DQo+ICAN Cj4gIAlpZiAocGxhbmUtPmJhc2UudHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKSB7DQo+ IC0JCWNmZyB8PSBBVE1FTF9ITENEQ19MQVlFUl9PVlIgfCBBVE1FTF9ITENEQ19MQVlFUl9JVEVS MkJMIHwNCj4gLQkJICAgICAgIEFUTUVMX0hMQ0RDX0xBWUVSX0lURVI7DQo+ICsJCWlmICghKGRj LT5pc194bGNkYykpIHsNCg0Kbm8gbmVlZCBmb3IgZXh0cmEgKCkuIFNhbWUgZm9yIHRoZSByZXN0 IG9mIG9jY3VyZW5jaWVzIGFib3ZlLiBBbHNvLCB5b3UgY2FuDQpyZXZlcnNlIHRoZSBsb2dpYyB0 byBhdm9pZCAhIGluIGZyb250IG9mIChkYy0+aXNfeGxjZGMpDQoNCj4gKwkJCWNmZyB8PSBBVE1F TF9ITENEQ19MQVlFUl9PVlIgfCBBVE1FTF9ITENEQ19MQVlFUl9JVEVSMkJMIHwNCj4gKwkJCSAg ICAgICBBVE1FTF9ITENEQ19MQVlFUl9JVEVSOw0KPiArDQo+ICsJCQlpZiAoZm9ybWF0LT5oYXNf YWxwaGEpDQo+ICsJCQkJY2ZnIHw9IEFUTUVMX0hMQ0RDX0xBWUVSX0xBRU47DQo+ICsJCQllbHNl DQo+ICsJCQkJY2ZnIHw9IEFUTUVMX0hMQ0RDX0xBWUVSX0dBRU4gfA0KPiArCQkJCSAgICAgICBB VE1FTF9ITENEQ19MQVlFUl9HQShzdGF0ZS0+YmFzZS5hbHBoYSk7DQo+ICsJCX0gZWxzZSB7DQo+ ICsJCQkvKg0KPiArCQkJICogQWxwaGEgQmxlbmRpbmcgYml0cyBzcGVjaWZpYyB0byBTQU05WDcg U29DDQo+ICsJCQkgKi8NCj4gKwkJCWNmZyB8PSBBVE1FTF9YTENEQ19MQVlFUl9TRkFDVENfQTBf TVVMVF9BUyB8DQo+ICsJCQkgICAgICAgQVRNRUxfWExDRENfTEFZRVJfU0ZBQ1RBX09ORSB8DQo+ ICsJCQkgICAgICAgQVRNRUxfWExDRENfTEFZRVJfREZBQ1RDX01fQTBfTVVMVF9BUyB8DQo+ICsJ CQkgICAgICAgQVRNRUxfWExDRENfTEFZRVJfREZBQ1RBX09ORTsNCj4gKwkJCWlmIChmb3JtYXQt Pmhhc19hbHBoYSkNCj4gKwkJCQljZmcgfD0gQVRNRUxfWExDRENfTEFZRVJfQTAoMHhmZik7DQo+ ICsJCQllbHNlDQo+ICsJCQkJY2ZnIHw9IEFUTUVMX1hMQ0RDX0xBWUVSX0EwKHN0YXRlLT5iYXNl LmFscGhhKTsNCj4gKwkJfQ0KPiArCX0NCj4gIA0KPiAtCQlpZiAoZm9ybWF0LT5oYXNfYWxwaGEp DQo+IC0JCQljZmcgfD0gQVRNRUxfSExDRENfTEFZRVJfTEFFTjsNCj4gKwlpZiAoc3RhdGUtPmRp c2NfaCAmJiBzdGF0ZS0+ZGlzY193KSB7DQo+ICsJCWlmICghKGRjLT5pc194bGNkYykpDQo+ICsJ CQljZmcgfD0gQVRNRUxfSExDRENfTEFZRVJfRElTQ0VOOw0KPiAgCQllbHNlDQo+IC0JCQljZmcg fD0gQVRNRUxfSExDRENfTEFZRVJfR0FFTiB8DQo+IC0JCQkgICAgICAgQVRNRUxfSExDRENfTEFZ RVJfR0Eoc3RhdGUtPmJhc2UuYWxwaGEpOw0KPiArCQkJY2ZnIHw9IEFUTUVMX1hMQ0RDX0xBWUVS X0RJU0NFTjsNCj4gIAl9DQo+ICANCj4gLQlpZiAoc3RhdGUtPmRpc2NfaCAmJiBzdGF0ZS0+ZGlz Y193KQ0KPiAtCQljZmcgfD0gQVRNRUxfSExDRENfTEFZRVJfRElTQ0VOOw0KPiAtDQo+ICAJYXRt ZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsIGRlc2MtPmxheW91dC5nZW5l cmFsX2NvbmZpZywNCj4gIAkJCQkgICAgY2ZnKTsNCj4gIH0NCj4gQEAgLTQ0MSwzMyArNTE3LDQy IEBAIHN0YXRpYyB2b2lkIGF0bWVsX2hsY2RjX3BsYW5lX3VwZGF0ZV9idWZmZXJzKHN0cnVjdCBh dG1lbF9obGNkY19wbGFuZSAqcGxhbmUsDQo+ICAJCQkJCXN0cnVjdCBhdG1lbF9obGNkY19wbGFu ZV9zdGF0ZSAqc3RhdGUpDQo+ICB7DQo+ICAJY29uc3Qgc3RydWN0IGF0bWVsX2hsY2RjX2xheWVy X2Rlc2MgKmRlc2MgPSBwbGFuZS0+bGF5ZXIuZGVzYzsNCj4gKwlzdHJ1Y3QgYXRtZWxfaGxjZGNf ZGMgKmRjID0gcGxhbmUtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsNCj4gIAlzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOw0KPiAgCXUzMiBzcjsNCj4gIAlpbnQgaTsN Cj4gIA0KPiAtCXNyID0gYXRtZWxfaGxjZGNfbGF5ZXJfcmVhZF9yZWcoJnBsYW5lLT5sYXllciwg QVRNRUxfSExDRENfTEFZRVJfQ0hTUik7DQo+ICsJaWYgKCEoZGMtPmlzX3hsY2RjKSkNCg0KWW91 IGNhbiByZXZlcnNlIHRoZSBsb2dpYw0KDQo+ICsJCXNyID0gYXRtZWxfaGxjZGNfbGF5ZXJfcmVh ZF9yZWcoJnBsYW5lLT5sYXllciwgQVRNRUxfSExDRENfTEFZRVJfQ0hTUik7DQo+ICsJZWxzZQ0K PiArCQlzciA9IGF0bWVsX2hsY2RjX2xheWVyX3JlYWRfcmVnKCZwbGFuZS0+bGF5ZXIsIEFUTUVM X1hMQ0RDX0xBWUVSX0VOUik7DQo+ICANCj4gIAlmb3IgKGkgPSAwOyBpIDwgc3RhdGUtPm5wbGFu ZXM7IGkrKykgew0KPiAgCQlzdHJ1Y3QgZHJtX2dlbV9kbWFfb2JqZWN0ICpnZW0gPSBkcm1fZmJf ZG1hX2dldF9nZW1fb2JqKGZiLCBpKTsNCj4gIA0KPiAgCQlzdGF0ZS0+ZHNjcnNbaV0tPmFkZHIg PSBnZW0tPmRtYV9hZGRyICsgc3RhdGUtPm9mZnNldHNbaV07DQo+ICANCj4gLQkJYXRtZWxfaGxj ZGNfbGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIsDQo+IC0JCQkJCSAgICBBVE1FTF9ITENE Q19MQVlFUl9QTEFORV9IRUFEKGkpLA0KPiAtCQkJCQkgICAgc3RhdGUtPmRzY3JzW2ldLT5zZWxm KTsNCj4gLQ0KPiAtCQlpZiAoIShzciAmIEFUTUVMX0hMQ0RDX0xBWUVSX0VOKSkgew0KPiAtCQkJ YXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIsDQo+IC0JCQkJCUFUTUVM X0hMQ0RDX0xBWUVSX1BMQU5FX0FERFIoaSksDQo+IC0JCQkJCXN0YXRlLT5kc2Nyc1tpXS0+YWRk cik7DQo+ICsJCWlmICghKGRjLT5pc194bGNkYykpIHsNCg0KeW91IGNhbiByZXZlcnNlIHRoZSBs b2dpYw0KDQo+ICAJCQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9yZWcoJnBsYW5lLT5sYXllciwN Cj4gLQkJCQkJQVRNRUxfSExDRENfTEFZRVJfUExBTkVfQ1RSTChpKSwNCj4gLQkJCQkJc3RhdGUt PmRzY3JzW2ldLT5jdHJsKTsNCj4gKwkJCQkJCSAgICBBVE1FTF9ITENEQ19MQVlFUl9QTEFORV9I RUFEKGkpLA0KPiArCQkJCQkJICAgIHN0YXRlLT5kc2Nyc1tpXS0+c2VsZik7DQo+ICsNCj4gKwkJ CWlmICghKHNyICYgQVRNRUxfSExDRENfTEFZRVJfRU4pKSB7DQo+ICsJCQkJYXRtZWxfaGxjZGNf bGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIsDQo+ICsJCQkJCQkJICAgIEFUTUVMX0hMQ0RD X0xBWUVSX1BMQU5FX0FERFIoaSksDQo+ICsJCQkJCQkJICAgIHN0YXRlLT5kc2Nyc1tpXS0+YWRk cik7DQo+ICsJCQkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIsDQo+ ICsJCQkJCQkJICAgIEFUTUVMX0hMQ0RDX0xBWUVSX1BMQU5FX0NUUkwoaSksDQo+ICsJCQkJCQkJ ICAgIHN0YXRlLT5kc2Nyc1tpXS0+Y3RybCk7DQo+ICsJCQkJYXRtZWxfaGxjZGNfbGF5ZXJfd3Jp dGVfcmVnKCZwbGFuZS0+bGF5ZXIsDQo+ICsJCQkJCQkJICAgIEFUTUVMX0hMQ0RDX0xBWUVSX1BM QU5FX05FWFQoaSksDQo+ICsJCQkJCQkJICAgIHN0YXRlLT5kc2Nyc1tpXS0+c2VsZik7DQo+ICsJ CQl9DQo+ICsJCX0gZWxzZSB7DQo+ICAJCQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9yZWcoJnBs YW5lLT5sYXllciwNCj4gLQkJCQkJQVRNRUxfSExDRENfTEFZRVJfUExBTkVfTkVYVChpKSwNCj4g LQkJCQkJc3RhdGUtPmRzY3JzW2ldLT5zZWxmKTsNCj4gKwkJCQkJCSAgICBBVE1FTF9YTENEQ19M QVlFUl9QTEFORV9BRERSKGkpLA0KPiArCQkJCQkJICAgIHN0YXRlLT5kc2Nyc1tpXS0+YWRkcik7 DQo+ICAJCX0NCj4gLQ0KPiAgCQlpZiAoZGVzYy0+bGF5b3V0LnhzdHJpZGVbaV0pDQo+ICAJCQlh dG1lbF9obGNkY19sYXllcl93cml0ZV9jZmcoJnBsYW5lLT5sYXllciwNCj4gIAkJCQkJCSAgICBk ZXNjLT5sYXlvdXQueHN0cmlkZVtpXSwNCj4gQEAgLTcxNiwxOSArODAxLDMxIEBAIHN0YXRpYyB2 b2lkIGF0bWVsX2hsY2RjX3BsYW5lX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnAs DQo+ICAJCQkJCSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiAgew0KPiAg CXN0cnVjdCBhdG1lbF9obGNkY19wbGFuZSAqcGxhbmUgPSBkcm1fcGxhbmVfdG9fYXRtZWxfaGxj ZGNfcGxhbmUocCk7DQo+IC0NCg0KWW91IGNhbiBrZWVwIHRoaXMgbGluZSBhZnRlIHRoZSBhYm92 ZSB2YXJpYWJsZS4NCg0KPiArCXN0cnVjdCBhdG1lbF9obGNkY19kYyAqZGMgPSBwbGFuZS0+YmFz ZS5kZXYtPmRldl9wcml2YXRlOw0KPiAgCS8qIERpc2FibGUgaW50ZXJydXB0cyAqLw0KPiAtCWF0 bWVsX2hsY2RjX2xheWVyX3dyaXRlX3JlZygmcGxhbmUtPmxheWVyLCBBVE1FTF9ITENEQ19MQVlF Ul9JRFIsDQo+IC0JCQkJICAgIDB4ZmZmZmZmZmYpOw0KPiArCWlmICghKGRjLT5pc194bGNkYykp DQoNCnlvdSBjYW4gcmV2ZXJzZSB0aGUgbG9naWMNCg0KPiArCQlhdG1lbF9obGNkY19sYXllcl93 cml0ZV9yZWcoJnBsYW5lLT5sYXllciwgQVRNRUxfSExDRENfTEFZRVJfSURSLA0KPiArCQkJCQkg ICAgMHhmZmZmZmZmZik7DQo+ICsJZWxzZQ0KPiArCQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9y ZWcoJnBsYW5lLT5sYXllciwgQVRNRUxfWExDRENfTEFZRVJfSURSLA0KPiArCQkJCQkgICAgMHhm ZmZmZmZmZik7DQo+ICANCj4gIAkvKiBEaXNhYmxlIHRoZSBsYXllciAqLw0KPiAtCWF0bWVsX2hs Y2RjX2xheWVyX3dyaXRlX3JlZygmcGxhbmUtPmxheWVyLCBBVE1FTF9ITENEQ19MQVlFUl9DSERS LA0KPiAtCQkJCSAgICBBVE1FTF9ITENEQ19MQVlFUl9SU1QgfA0KPiAtCQkJCSAgICBBVE1FTF9I TENEQ19MQVlFUl9BMlEgfA0KPiAtCQkJCSAgICBBVE1FTF9ITENEQ19MQVlFUl9VUERBVEUpOw0K PiArCWlmICghKGRjLT5pc194bGNkYykpDQoNCnNhbWUgaGVyZS4NCg0KPiArCQlhdG1lbF9obGNk Y19sYXllcl93cml0ZV9yZWcoJnBsYW5lLT5sYXllciwNCj4gKwkJCQkJICAgIEFUTUVMX0hMQ0RD X0xBWUVSX0NIRFIsDQo+ICsJCQkJCSAgICBBVE1FTF9ITENEQ19MQVlFUl9SU1QgfA0KPiArCQkJ CQkgICAgQVRNRUxfSExDRENfTEFZRVJfQTJRIHwNCj4gKwkJCQkJICAgIEFUTUVMX0hMQ0RDX0xB WUVSX1VQREFURSk7DQo+ICsJZWxzZQ0KPiArCQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9yZWco JnBsYW5lLT5sYXllciwNCj4gKwkJCQkJICAgIEFUTUVMX1hMQ0RDX0xBWUVSX0VOUiwgMCk7DQo+ ICANCj4gIAkvKiBDbGVhciBhbGwgcGVuZGluZyBpbnRlcnJ1cHRzICovDQo+IC0JYXRtZWxfaGxj ZGNfbGF5ZXJfcmVhZF9yZWcoJnBsYW5lLT5sYXllciwgQVRNRUxfSExDRENfTEFZRVJfSVNSKTsN Cj4gKwlpZiAoIShkYy0+aXNfeGxjZGMpKQ0KPiArCQlhdG1lbF9obGNkY19sYXllcl9yZWFkX3Jl ZygmcGxhbmUtPmxheWVyLCBBVE1FTF9ITENEQ19MQVlFUl9JU1IpOw0KPiArCWVsc2UNCj4gKwkJ YXRtZWxfaGxjZGNfbGF5ZXJfcmVhZF9yZWcoJnBsYW5lLT5sYXllciwgQVRNRUxfWExDRENfTEFZ RVJfSVNSKTsNCj4gIH0NCj4gIA0KPiAgc3RhdGljIHZvaWQgYXRtZWxfaGxjZGNfcGxhbmVfYXRv bWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwLA0KPiBAQCAtNzM5LDYgKzgzNiw3IEBAIHN0 YXRpYyB2b2lkIGF0bWVsX2hsY2RjX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFu ZSAqcCwNCj4gIAlzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmUgKnBsYW5lID0gZHJtX3BsYW5lX3Rv X2F0bWVsX2hsY2RjX3BsYW5lKHApOw0KPiAgCXN0cnVjdCBhdG1lbF9obGNkY19wbGFuZV9zdGF0 ZSAqaHN0YXRlID0NCj4gIAkJCWRybV9wbGFuZV9zdGF0ZV90b19hdG1lbF9obGNkY19wbGFuZV9z dGF0ZShuZXdfcyk7DQo+ICsJc3RydWN0IGF0bWVsX2hsY2RjX2RjICpkYyA9IHAtPmRldi0+ZGV2 X3ByaXZhdGU7DQo+ICAJdTMyIHNyOw0KPiAgDQo+ICAJaWYgKCFuZXdfcy0+Y3J0YyB8fCAhbmV3 X3MtPmZiKQ0KPiBAQCAtNzU2LDIzICs4NTQsNDYgQEAgc3RhdGljIHZvaWQgYXRtZWxfaGxjZGNf cGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwLA0KPiAgCWF0bWVsX2hsY2Rj X3BsYW5lX3VwZGF0ZV9idWZmZXJzKHBsYW5lLCBoc3RhdGUpOw0KPiAgCWF0bWVsX2hsY2RjX3Bs YW5lX3VwZGF0ZV9kaXNjX2FyZWEocGxhbmUsIGhzdGF0ZSk7DQo+ICANCj4gLQkvKiBFbmFibGUg dGhlIG92ZXJydW4gaW50ZXJydXB0cy4gKi8NCj4gLQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9y ZWcoJnBsYW5lLT5sYXllciwgQVRNRUxfSExDRENfTEFZRVJfSUVSLA0KPiAtCQkJCSAgICBBVE1F TF9ITENEQ19MQVlFUl9PVlJfSVJRKDApIHwNCj4gLQkJCQkgICAgQVRNRUxfSExDRENfTEFZRVJf T1ZSX0lSUSgxKSB8DQo+IC0JCQkJICAgIEFUTUVMX0hMQ0RDX0xBWUVSX09WUl9JUlEoMikpOw0K PiAtDQo+IC0JLyogQXBwbHkgdGhlIG5ldyBjb25maWcgYXQgdGhlIG5leHQgU09GIGV2ZW50LiAq Lw0KPiAtCXNyID0gYXRtZWxfaGxjZGNfbGF5ZXJfcmVhZF9yZWcoJnBsYW5lLT5sYXllciwgQVRN RUxfSExDRENfTEFZRVJfQ0hTUik7DQo+IC0JYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZw bGFuZS0+bGF5ZXIsIEFUTUVMX0hMQ0RDX0xBWUVSX0NIRVIsDQo+IC0JCQlBVE1FTF9ITENEQ19M QVlFUl9VUERBVEUgfA0KPiAtCQkJKHNyICYgQVRNRUxfSExDRENfTEFZRVJfRU4gPw0KPiAtCQkJ IEFUTUVMX0hMQ0RDX0xBWUVSX0EyUSA6IEFUTUVMX0hMQ0RDX0xBWUVSX0VOKSk7DQo+ICsJaWYg KCEoZGMtPmlzX3hsY2RjKSkgew0KDQpzYW1lIGhlcmUNCg0KPiArCQkvKiBFbmFibGUgdGhlIG92 ZXJydW4gaW50ZXJydXB0cy4gKi8NCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZw bGFuZS0+bGF5ZXIsIEFUTUVMX0hMQ0RDX0xBWUVSX0lFUiwNCj4gKwkJCQkJICAgIEFUTUVMX0hM Q0RDX0xBWUVSX09WUl9JUlEoMCkgfA0KPiArCQkJCQkgICAgQVRNRUxfSExDRENfTEFZRVJfT1ZS X0lSUSgxKSB8DQo+ICsJCQkJCSAgICBBVE1FTF9ITENEQ19MQVlFUl9PVlJfSVJRKDIpKTsNCj4g Kw0KPiArCQkvKiBBcHBseSB0aGUgbmV3IGNvbmZpZyBhdCB0aGUgbmV4dCBTT0YgZXZlbnQuICov DQo+ICsJCXNyID0gYXRtZWxfaGxjZGNfbGF5ZXJfcmVhZF9yZWcoJnBsYW5lLT5sYXllciwgQVRN RUxfSExDRENfTEFZRVJfQ0hTUik7DQo+ICsJCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX3JlZygm cGxhbmUtPmxheWVyLCBBVE1FTF9ITENEQ19MQVlFUl9DSEVSLA0KPiArCQkJCQkgICAgQVRNRUxf SExDRENfTEFZRVJfVVBEQVRFIHwNCj4gKwkJCQkJICAgIChzciAmIEFUTUVMX0hMQ0RDX0xBWUVS X0VOID8NCj4gKwkJCQkJICAgIEFUTUVMX0hMQ0RDX0xBWUVSX0EyUSA6IEFUTUVMX0hMQ0RDX0xB WUVSX0VOKSk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJLyogRW5hYmxlIHRoZSBvdmVycnVuIGludGVy cnVwdHMuICovDQo+ICsJCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX3JlZygmcGxhbmUtPmxheWVy LCBBVE1FTF9YTENEQ19MQVlFUl9JRVIsDQo+ICsJCQkJCSAgICBBVE1FTF9YTENEQ19MQVlFUl9P VlJfSVJRKDApIHwNCj4gKwkJCQkJICAgIEFUTUVMX1hMQ0RDX0xBWUVSX09WUl9JUlEoMSkgfA0K PiArCQkJCQkgICAgQVRNRUxfWExDRENfTEFZRVJfT1ZSX0lSUSgyKSk7DQo+ICsNCj4gKwkJYXRt ZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIsIEFUTUVMX1hMQ0RDX0xBWUVS X0VOUiwNCj4gKwkJCQkJICAgIEFUTUVMX1hMQ0RDX0xBWUVSX0VOKTsNCj4gKwl9DQo+ICsNCj4g KwkvKg0KPiArCSAqIFVwZGF0aW5nIFhMQ0RDX3h4eENGR3gsIFhMQ0RDX3h4eEZCQSBhbmQgWExD RENfeHh4RU4sDQo+ICsJICogKHdoZXJlIHh4eCBpbmRpY2F0ZXMgZWFjaCBsYXllcikgcmVxdWly ZXMgd3JpdGluZyBvbmUgdG8gdGhlDQo+ICsJICogVXBkYXRlIEF0dHJpYnV0ZSBmaWVsZCBmb3Ig ZWFjaCBsYXllciBpbiBMQ0RDX0FUVFJFIHJlZ2lzdGVyIGZvciBTQU05WDcuDQo+ICsJICovDQo+ ICsJaWYgKGRjLT5pc194bGNkYykgew0KPiArCQlyZWdtYXBfd3JpdGUoZGMtPmhsY2RjLT5yZWdt YXAsIEFUTUVMX1hMQ0RDX0FUVFJFLCBBVE1FTF9YTENEQ19CQVNFX1VQREFURSB8DQo+ICsJCQkg ICAgIEFUTUVMX1hMQ0RDX09WUjFfVVBEQVRFIHwgQVRNRUxfWExDRENfT1ZSM19VUERBVEUgfA0K PiArCQkJICAgICBBVE1FTF9YTENEQ19IRU9fVVBEQVRFKTsNCj4gKwl9DQo+ICB9DQo+ICANCj4g IHN0YXRpYyBpbnQgYXRtZWxfaGxjZGNfcGxhbmVfaW5pdF9wcm9wZXJ0aWVzKHN0cnVjdCBhdG1l bF9obGNkY19wbGFuZSAqcGxhbmUpDQo+ICB7DQo+ICAJY29uc3Qgc3RydWN0IGF0bWVsX2hsY2Rj X2xheWVyX2Rlc2MgKmRlc2MgPSBwbGFuZS0+bGF5ZXIuZGVzYzsNCj4gKwlzdHJ1Y3QgYXRtZWxf aGxjZGNfZGMgKmRjID0gcGxhbmUtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsNCj4gIA0KPiAgCWlm IChkZXNjLT50eXBlID09IEFUTUVMX0hMQ0RDX09WRVJMQVlfTEFZRVIgfHwNCj4gIAkgICAgZGVz Yy0+dHlwZSA9PSBBVE1FTF9ITENEQ19DVVJTT1JfTEFZRVIpIHsNCj4gQEAgLTc5NiwyMCArOTE3 LDUwIEBAIHN0YXRpYyBpbnQgYXRtZWxfaGxjZGNfcGxhbmVfaW5pdF9wcm9wZXJ0aWVzKHN0cnVj dCBhdG1lbF9obGNkY19wbGFuZSAqcGxhbmUpDQo+ICAJCQlyZXR1cm4gcmV0Ow0KPiAgCX0NCj4g IA0KPiAtCWlmIChkZXNjLT5sYXlvdXQuY3NjKSB7DQo+ICsJaWYgKCEoZGMtPmlzX3hsY2RjKSkg ew0KDQp5b3UgY2FuIHJldmVyc2UgdGhlIGxvZ2ljDQoNCj4gKwkJaWYgKGRlc2MtPmxheW91dC5j c2MpIHsNCj4gKwkJCS8qDQo+ICsJCQkgKiBUT0RPOiBkZWNhcmUgYSAieXV2LXRvLXJnYi1jb252 LWZhY3RvcnMiIHByb3BlcnR5IHRvIGxldA0KPiArCQkJICogdXNlcnNwYWNlIG1vZGlmeSB0aGVz ZSBmYWN0b3JzICh1c2luZyBhIEJMT0IgcHJvcGVydHkgPykuDQo+ICsJCQkgKi8NCj4gKwkJCWF0 bWVsX2hsY2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLA0KPiArCQkJCQkJICAgIGRl c2MtPmxheW91dC5jc2MsDQo+ICsJCQkJCQkgICAgMHg0YzkwMDA5MSk7DQo+ICsJCQlhdG1lbF9o bGNkY19sYXllcl93cml0ZV9jZmcoJnBsYW5lLT5sYXllciwNCj4gKwkJCQkJCSAgICBkZXNjLT5s YXlvdXQuY3NjICsgMSwNCj4gKwkJCQkJCSAgICAweDdhNWY1MDkwKTsNCj4gKwkJCWF0bWVsX2hs Y2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLA0KPiArCQkJCQkJICAgIGRlc2MtPmxh eW91dC5jc2MgKyAyLA0KPiArCQkJCQkJICAgIDB4NDAwNDA4OTApOw0KPiArCQl9DQo+ICsJfSBl bHNlIHsNCj4gIAkJLyoNCj4gLQkJICogVE9ETzogZGVjYXJlIGEgInl1di10by1yZ2ItY29udi1m YWN0b3JzIiBwcm9wZXJ0eSB0byBsZXQNCj4gLQkJICogdXNlcnNwYWNlIG1vZGlmeSB0aGVzZSBm YWN0b3JzICh1c2luZyBhIEJMT0IgcHJvcGVydHkgPykuDQo+ICsJCSAqIHl1di10by1yZ2ItY29u di1mYWN0b3JzIGFyZSBub3cgZGVmaW5lZCBmcm9tIExDRENfSEVPQ0ZHMTYgdG8NCj4gKwkJICog TENEQ19IRU9DRkcyMSByZWdpc3RlcnMgaW4gU0FNOVg3Lg0KPiAgCQkgKi8NCj4gLQkJYXRtZWxf aGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsDQo+IC0JCQkJCSAgICBkZXNjLT5s YXlvdXQuY3NjLA0KPiAtCQkJCQkgICAgMHg0YzkwMDA5MSk7DQo+IC0JCWF0bWVsX2hsY2RjX2xh eWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLA0KPiAtCQkJCQkgICAgZGVzYy0+bGF5b3V0LmNz YyArIDEsDQo+IC0JCQkJCSAgICAweDdhNWY1MDkwKTsNCj4gLQkJYXRtZWxfaGxjZGNfbGF5ZXJf d3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsDQo+IC0JCQkJCSAgICBkZXNjLT5sYXlvdXQuY3NjICsg MiwNCj4gLQkJCQkJICAgIDB4NDAwNDA4OTApOw0KPiArCQlpZiAoZGVzYy0+bGF5b3V0LmNzYykg ew0KPiArCQkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsDQo+ICsJ CQkJCQkgICAgZGVzYy0+bGF5b3V0LmNzYywNCj4gKwkJCQkJCSAgICAweDAwMDAwNDg4KTsNCj4g KwkJCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLA0KPiArCQkJCQkJ ICAgIGRlc2MtPmxheW91dC5jc2MgKyAxLA0KPiArCQkJCQkJICAgIDB4MDAwMDA2NDgpOw0KPiAr CQkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsDQo+ICsJCQkJCQkg ICAgZGVzYy0+bGF5b3V0LmNzYyArIDIsDQo+ICsJCQkJCQkgICAgMHgxRUEwMDQ4MCk7DQo+ICsJ CQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9jZmcoJnBsYW5lLT5sYXllciwNCj4gKwkJCQkJCSAg ICBkZXNjLT5sYXlvdXQuY3NjICsgMywNCj4gKwkJCQkJCSAgICAweDAwMDAxRDI4KTsNCj4gKwkJ CWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLA0KPiArCQkJCQkJICAg IGRlc2MtPmxheW91dC5jc2MgKyA0LA0KPiArCQkJCQkJICAgIDB4MDgxMDA0ODApOw0KPiArCQkJ YXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsDQo+ICsJCQkJCQkgICAg ZGVzYy0+bGF5b3V0LmNzYyArIDUsDQo+ICsJCQkJCQkgICAgMHgwMDAwMDAwMCk7DQo+ICsJCQlh dG1lbF9obGNkY19sYXllcl93cml0ZV9jZmcoJnBsYW5lLT5sYXllciwNCj4gKwkJCQkJCSAgICBk ZXNjLT5sYXlvdXQuY3NjICsgNiwNCj4gKwkJCQkJCSAgICAweDAwMDAwMDA3KTsNCj4gKwkJfQ0K PiAgCX0NCj4gIA0KPiAgCXJldHVybiAwOw0KPiBAQCAtODE5LDE5ICs5NzAsMzEgQEAgdm9pZCBh dG1lbF9obGNkY19wbGFuZV9pcnEoc3RydWN0IGF0bWVsX2hsY2RjX3BsYW5lICpwbGFuZSkNCj4g IHsNCj4gIAljb25zdCBzdHJ1Y3QgYXRtZWxfaGxjZGNfbGF5ZXJfZGVzYyAqZGVzYyA9IHBsYW5l LT5sYXllci5kZXNjOw0KPiAgCXUzMiBpc3I7DQo+ICsJc3RydWN0IGF0bWVsX2hsY2RjX2RjICpk YyA9IHBsYW5lLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7DQo+ICANCj4gLQlpc3IgPSBhdG1lbF9o bGNkY19sYXllcl9yZWFkX3JlZygmcGxhbmUtPmxheWVyLCBBVE1FTF9ITENEQ19MQVlFUl9JU1Ip Ow0KPiArCWlmICghKGRjLT5pc194bGNkYykpDQoNCnNhbWUgaGVyZS4NCg0KPiArCQlpc3IgPSBh dG1lbF9obGNkY19sYXllcl9yZWFkX3JlZygmcGxhbmUtPmxheWVyLCBBVE1FTF9ITENEQ19MQVlF Ul9JU1IpOw0KPiArCWVsc2UNCj4gKwkJaXNyID0gYXRtZWxfaGxjZGNfbGF5ZXJfcmVhZF9yZWco JnBsYW5lLT5sYXllciwgQVRNRUxfWExDRENfTEFZRVJfSVNSKTsNCj4gIA0KPiAgCS8qDQo+ICAJ ICogVGhlcmUncyBub3QgbXVjaCB3ZSBjYW4gZG8gaW4gY2FzZSBvZiBvdmVycnVuIGV4Y2VwdCBp bmZvcm1pbmcNCj4gIAkgKiB0aGUgdXNlci4gSG93ZXZlciwgd2UgYXJlIGluIGludGVycnVwdCBj b250ZXh0IGhlcmUsIGhlbmNlIHRoZQ0KPiAgCSAqIHVzZSBvZiBkZXZfZGJnKCkuDQo+ICAJICov DQo+IC0JaWYgKGlzciAmDQo+IC0JICAgIChBVE1FTF9ITENEQ19MQVlFUl9PVlJfSVJRKDApIHwg QVRNRUxfSExDRENfTEFZRVJfT1ZSX0lSUSgxKSB8DQo+IC0JICAgICBBVE1FTF9ITENEQ19MQVlF Ul9PVlJfSVJRKDIpKSkNCj4gLQkJZGV2X2RiZyhwbGFuZS0+YmFzZS5kZXYtPmRldiwgIm92ZXJy dW4gb24gcGxhbmUgJXNcbiIsDQo+IC0JCQlkZXNjLT5uYW1lKTsNCj4gKwlpZiAoIShkYy0+aXNf eGxjZGMpKSB7DQo+ICsJCWlmIChpc3IgJg0KPiArCQkgICAgKEFUTUVMX0hMQ0RDX0xBWUVSX09W Ul9JUlEoMCkgfCBBVE1FTF9ITENEQ19MQVlFUl9PVlJfSVJRKDEpIHwNCj4gKwkJICAgICBBVE1F TF9ITENEQ19MQVlFUl9PVlJfSVJRKDIpKSkNCj4gKwkJCWRldl9kYmcocGxhbmUtPmJhc2UuZGV2 LT5kZXYsICJvdmVycnVuIG9uIHBsYW5lICVzXG4iLA0KPiArCQkJCWRlc2MtPm5hbWUpOw0KPiAr CX0gZWxzZSB7DQo+ICsJCWlmIChpc3IgJg0KPiArCQkgICAgKEFUTUVMX1hMQ0RDX0xBWUVSX09W Ul9JUlEoMCkgfCBBVE1FTF9YTENEQ19MQVlFUl9PVlJfSVJRKDEpIHwNCj4gKwkJICAgICBBVE1F TF9YTENEQ19MQVlFUl9PVlJfSVJRKDIpKSkNCj4gKwkJCWRldl9kYmcocGxhbmUtPmJhc2UuZGV2 LT5kZXYsICJvdmVycnVuIG9uIHBsYW5lICVzXG4iLA0KPiArCQkJCWRlc2MtPm5hbWUpOw0KPiAr CX0NCj4gIH0NCj4gIA0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1 bmNzIGF0bWVsX2hsY2RjX2xheWVyX3BsYW5lX2hlbHBlcl9mdW5jcyA9IHsNCg0K