From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 8AE603858D39 for ; Mon, 6 Mar 2023 13:46:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8AE603858D39 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ibm.com Received: from pps.filterd (m0098416.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 326DWd0p032400; Mon, 6 Mar 2023 13:45:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=pp1; bh=EHfElkkkyTa3tKTYu2l2LREXWxUgX6ky/Yx/hvZ0RXE=; b=WSH6p3YIKv7/8wHsKgHqa91P+ZSHc+sRrju7IdqGZhtDFMqKAyYsNUBZQdw6DdQMhXOG 0PMdJ0pTwLUp9ylrut7yhwXjcFmhHCinS/APR3lemYMYJyO0V5cMkA8r83pliLoujilE vuKBuK8UyyN4rNhCKhGBxrfZ5/mEA1TCdBhmoDY/grc8KviAslVYm6IaA8sJ0V7sJoPh 1Ps6QWr+1iqWHq5ENpd4CgNQ6F1+2450Va/G8anU5GGI/nsPJ++qgXBVKTn4C7vXocwR dNTLFDdyvBnX9m1ixZ0yzviwlEM3c1P3ufUBsurUt9aNNqmSVFENRCzMC14Xa1RFgvZ6 jA== Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2175.outbound.protection.outlook.com [104.47.56.175]) by mx0b-001b2d01.pphosted.com (PPS) with ESMTPS id 3p4x1hpt4k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Mar 2023 13:45:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T1dwti/8/xwURCwyY7OEzwBTfKRmZ63o7/5uxj1iytEdK4z0DG8uRrOjDvt3IzIKBpBpaEXLo1BQIuBCeTnv6es3eu+6g7YqSi51xRDuKrS9SzKtyoZDkYUsYc1SZako7Yrq/N8/K05IFbMO4PmosJwOLCfO0hfNqwzOsB8idh4kAWICVtIMOmV0rPWDeQeAbGmTEIRXqGMjjh76T3nOH4GCNPWbm5MTsl2Q8Bl/p7q0aRJaxRA0vKOnRJUYE2eqrPL+QFJ0PhIlc4I3ueSJDLZCat+qWnTu4NlVo+aUT7TozY4zCpuQ7WTuOeJea1nVFU/MMxkjnWWV3G4kPW05MA== 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=EHfElkkkyTa3tKTYu2l2LREXWxUgX6ky/Yx/hvZ0RXE=; b=NTlSWiCGDpbMZwJ/ASstUn9JkPBT9usJpGq7QRw/Rj0fGyy3b6XSM4KAvo3czB+OyYySWJYNL45grA8hoMcpnaGWphmi6P+63LrsR2d6Duxnut2QhvgXNPL/Lj6MC0miriTz43Xq8VhRPxOh9xOB0A5VcVOK8Qqa5J9T69BCMBBF9o2K82JJkqyj56dZiI+ZO8/d4cFua/7SkXgmZvuMt/1yoI+GTNypTHQpWiMzaHl/mjC8pTqY+nL37bNQVAlBmgf4uQRmF5FRCj2s/a2SKxMhWBjA054zt+yvvzI4pYZlY7dm4i7X2ZRehFYoZiWdF+bwi3qbI/32diZOGaNGAw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ibm.com; dmarc=pass action=none header.from=ibm.com; dkim=pass header.d=ibm.com; arc=none Received: from CH2PR15MB3544.namprd15.prod.outlook.com (2603:10b6:610:5::26) by PH7PR15MB5253.namprd15.prod.outlook.com (2603:10b6:510:136::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.19; Mon, 6 Mar 2023 13:45:55 +0000 Received: from CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::cb98:8c4d:b2e2:c281]) by CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::cb98:8c4d:b2e2:c281%7]) with mapi id 15.20.6156.028; Mon, 6 Mar 2023 13:45:55 +0000 From: Aditya Kamath1 To: Ulrich Weigand , "gdb-patches@sourceware.org" , "simark@simark.ca" CC: Sangamesh Mallayya Subject: Re: [PATCH] Enable vector instruction debugging for AIX Thread-Topic: [PATCH] Enable vector instruction debugging for AIX Thread-Index: AQHY3u6lF+eu5MBiPkac4T2UQTTsTa4N1rEAgBXdOaaAACL2AIAa9qYHgAG+XYCAnK7VvIAB0CqAgAeraRCAA01QgIAEn//S Date: Mon, 6 Mar 2023 13:45:55 +0000 Message-ID: References: <3914469e72960a5d0d659f9ea8ea84c4456d64e2.camel@de.ibm.com> <02d8d62d9980ea5ae8e30b3ee1e7ac46a1b9f412.camel@de.ibm.com> <17dcfeee50a782539d977be334836e5f2d232a2c.camel@de.ibm.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-IN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR15MB3544:EE_|PH7PR15MB5253:EE_ x-ms-office365-filtering-correlation-id: 0273f5f0-c190-4632-77ee-08db1e491bd7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nYLof2zgoD4RM5XO1JIlkAk6H99U0modyJTfkOW8RvJ24S0DiyTMnU04MwvGUIF4cXXNOAciD9EqXA4HnnYzHNmUfuwkIuf37UbWS07P842FUgL6M0veIve2bUsV0IEsHBNe/ZRnhJpVW665Ac6qw/HD0KZyyjMZwmk6nUqjQlcLwHxDbrIT9Td1Jfitj34+aDlKufaTjw23Tajj8ZHb0MWmCTipjRFKGzMNvyAuTyrwjbDLv2qwx3TIfVCMx5aAMGOmjQfSZ4L23S0Pzw6SOxnCFtfK9Mo1J2mjjz5HiPBvVX700MpYb9OIgG65GxhrTcUelk4e6ivKBH8c5CEyX0Dk3X8R7p8TeKEz5oetFGWxfdiwdusChYo2OX9Y5Gib3K30eU5Q93xvGZZ0RVKzblm50qL41ACLn0Lc/ZFXChWIrgcgqG/Lc1vD+heC87ol1xOj/iPH+JyMv4n5NldQ4ztz7lx65rpQmMe7ZHbyN8vC2CEfaB/D0RTpC2LShP5788OavoW+DbMLlEA7jay6tpMy9+JfBGZkR1182o7qZ2bDMcUFySgp87UjTJ7ZPeC56uhI18VNVvvPtBa+tgZk/KCB1B9l+pixPbCGWJnj+Uh8SNV0qH0G3ZIBUaPzTwSdx6XVRsxuwy7TH1ukxe6WvxuWcyq4fbidFkAjERAHFdqt4csNsfc9Pt5vFmoQg13FeCH/zgiR3Y1aU+kT+qR3nA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR15MB3544.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(39860400002)(366004)(376002)(396003)(136003)(346002)(451199018)(52536014)(8936002)(5660300002)(2906002)(55016003)(33656002)(38100700002)(186003)(122000001)(478600001)(7696005)(110136005)(316002)(99936003)(66446008)(8676002)(66946007)(83380400001)(66556008)(4326008)(91956017)(76116006)(66476007)(64756008)(71200400001)(53546011)(9686003)(6506007)(86362001)(38070700005)(41300700001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?ICqpQb9t3FNb3rjy4nLizBk3gKbcESy0HVvENl9jmEfZKAWuTWilL0WQUK1n?= =?us-ascii?Q?PZMERoXoLAKfpSknOegLuKipNZUiLa2cOy32hujroTZNafeCY5OLyqtq2jw9?= =?us-ascii?Q?Qgzgxt+8k4S9tHdWrUr/MtQOhb6RMcKuKAOuCXmfTfdx0tMdxQzDfpTPOd8f?= =?us-ascii?Q?Lc9AbUTqpvva1i0/XBPPrnwYWbgA3j7yHLSRESe42QBY+G3kDNv/EdPodTvT?= =?us-ascii?Q?0SMYII2A29Gcqtr40hm+GaBiHhWCSw/bwaCczLuorKuSwExuKdNZCEUND0Fb?= =?us-ascii?Q?KCnWg5qr/pbE8/n6PkY9kor1yMBugRpvtI9Gso3yaiRaZeB8Ssh1bMGFkbuY?= =?us-ascii?Q?mrqA1eLIPWkn3My2tQZeKlzy/8fd1obTBEwOSXX3TAVmHQpMUOBbJpPB3uie?= =?us-ascii?Q?RiU5gMwdnhES9n3JKRCPGUjADnqEz6qGdn1I/O9m+pEC/+PMGunCxhZCPD75?= =?us-ascii?Q?J6tj1GeaE0+1RxcYJu1jt1lpZ0ZtB3t9vZNnjRk95gPe05k9gnOOTECMQ4qz?= =?us-ascii?Q?+21OvXWl8dHYT2p67RvvMjoIzfYAgP7AaYCyb++ZG5yuuF4CmTjM1G08sxfX?= =?us-ascii?Q?Ri9x5NiXspmoZBrNpXSirTxIYMYBTioOWiBPkcLQkuxYrufscSnC26LiazUE?= =?us-ascii?Q?LvNcQqlv7Fs8k7oe63TTmSwAg3w+vlAJpuVEDzH8D9Urj+jcuB3PLLGDTy6s?= =?us-ascii?Q?jjHwmXEqJpSuHbNxC5p8gJnLdC7gghMTu1xSpXevUNS5e70gmdmOoa/nwAi6?= =?us-ascii?Q?eMJOM5pgxqkOLictibQxrqoUplHxdVZuIA3T33maRkmudKzMprk87DI5+8hL?= =?us-ascii?Q?2arc/Vgd3964uX9SLsK8JHk1nltCYYVwpP5laG/Qg1Mjl9EU5IPWXJRahtxe?= =?us-ascii?Q?whGLZgyrrywPYoaHxH6jhFUwmFHXk33PgiqszVMQzWAnehUxmA4CbTJas/6x?= =?us-ascii?Q?Juub61Hph4oa3ZYWRIwpVuzfCoz2I76aT5XX+o3hkVBVHPC14PBhSdjznJEU?= =?us-ascii?Q?IXh/8XaskaFMXEFZlcH9pMtAP5YDVpuHxtfc+YSYuTwcYhv+GTVinsLxaUEY?= =?us-ascii?Q?hG41YI4mmFbjb99hVl23mJqb0wvddJPdUm9Dh4J2TjwvKN1XnH1sIRNgpq2a?= =?us-ascii?Q?FvHKySkr708RMP0IkrIKTvweWBIclA0nPuIdcePPJy+TD3KRurCjnh43Hejk?= =?us-ascii?Q?Llx+PDFCy7tNx8xSoCItg57FSez9ItOFK0xia3LqyoEQ7F8gLstnjeiEeWes?= =?us-ascii?Q?t+GHALor+UPJQ4r0ums+9weNux2p6wbVTj1tiOk8Py6z4fK+/619TGI1Bid1?= =?us-ascii?Q?P7/lsKBGDj6nxnY36WF8ZgSUakf91aiL8rkrlX1wOqtzGSTyDFCdrkYkCd1q?= =?us-ascii?Q?Igjhh7mWNolLh9Ni3p6NpMx9S+1ivI4pkJgtpPXjH2dY95HCYOjyy9HMtj2k?= =?us-ascii?Q?auXSksvZcL0CdnJ4vXNdxxhl3OohLZ/3kROAH/VxjmsUQie5Jloqm+wksOf9?= =?us-ascii?Q?mBbgKDhj9iBj7mVPJa0JbOn0kxx0i3BBA50iDo706vZhIuP4igPAaEbxk9xy?= =?us-ascii?Q?svpz8JFP4+hOq0vdStBlu5eCJG7FiCFhmrGm7vfYA00vVO4CTbEHgjEwIXWw?= =?us-ascii?Q?hR9LcELljCrUQOCBRuTJhuuCq/0NeIRuU8Wk3mUehF7MfzzmVsYablBYGD4l?= =?us-ascii?Q?n9zSGQ=3D=3D?= Content-Type: multipart/mixed; boundary="_004_CH2PR15MB3544D484ACE103AAC5299A1ED6B69CH2PR15MB3544namp_" MIME-Version: 1.0 X-OriginatorOrg: ibm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR15MB3544.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0273f5f0-c190-4632-77ee-08db1e491bd7 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Mar 2023 13:45:55.1296 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fcf67057-50c9-4ad4-98f3-ffca64add9e9 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8c5BvTzm9jcScH5UppqajGtMmFWYOSYrMC/5p8yezrRyRMYCeRekQGwdEUXO2ewYToPsDEhTpyVOQCNpnyJ6gg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR15MB5253 X-Proofpoint-GUID: 38sVvXZM3chcCntSAJe7a_g3xsOT7AqP X-Proofpoint-ORIG-GUID: 38sVvXZM3chcCntSAJe7a_g3xsOT7AqP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-03-06_05,2023-03-06_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 mlxlogscore=999 spamscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 adultscore=0 phishscore=0 mlxscore=0 bulkscore=0 impostorscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2303060120 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HTML_MESSAGE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_004_CH2PR15MB3544D484ACE103AAC5299A1ED6B69CH2PR15MB3544namp_ Content-Type: multipart/alternative; boundary="_000_CH2PR15MB3544D484ACE103AAC5299A1ED6B69CH2PR15MB3544namp_" --_000_CH2PR15MB3544D484ACE103AAC5299A1ED6B69CH2PR15MB3544namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Ulrich and community, Please find attached the patch. {See: 0001-Enable-vector-instruction-debugg= ing-for-AIX.patch}. Kindly push this patch is there are no further changes. Have a nice day ahead. Thanks and regards, Aditya. >GDB no longer supports AIX 4.x and AIX 5.1. The minimum supported >AIX version is now AIX 5.2. >As a separate note, I see that even AIX 5.2 itself has been out of >support for over 13 years now, so I'm wondering how much sense it >makes to still claim support for this in GDB. If we're already >deprecating old versions, maybe it would be better to set the >minimum supported version at 6.1 or even 7.1 at this point? So I connected with my seniors on this. So AIX folks are using 7.1 now. So = I have changed this to minimum 7.x.. Kindly see it in this patch. For those= who are below 7.1, we are not supporting. >-RS/6000 AIX 4.x rs6000-*-aix4* >+RS/6000 AIX 5.2 or higher rs6000-*-aix4* >This describes what was added in GDB 4.18 - I don't think this >section should be retroactively modified. This is not modified anymore. Kindly see the patch. >+static void >+supply_altivec_regs (struct regcache *regcache, __vmx_context_t vmx) >+{ >+ ppc_gdbarch_tdep *tdep >+ =3D gdbarch_tdep (regcache->arch ()); >+ int regno; >+ int num_of_vrregs =3D tdep->ppc_vrsave_regnum - tdep->ppc_vr0_regnum + = 1; >+ for (regno =3D 0; regno < num_of_vrregs; regno++) >+ regcache->raw_supply (tdep->ppc_vr0_regnum + regno, >+ &(vmx.__vr[regno])); >Now that you've taken VRSAVE and VSCR separately, this loop now >only needs to execute 32 times, but you still do it 34 times. >I think you should just use ppc_num_vrs instead of this >num_of_vrregs you compute here. This is done. >+ if (REG_VALID =3D=3D regcache->get_register_status (tdep->ppc_vrsav= e_regnum)) >+ { >+ ctx.vmx.__vrsave =3D vmx.__vrsave; >+ ctx.vmx.__vscr =3D vmx.__vscr; >Also should do a separate REG_VALID check. This is done. >@@ -1766,6 +1979,56 @@ store_regs_kernel_thread (const struct regcache *re= gcache, int regno, >+ /* vmx registers. */ >Should be VSX ? Yes. This is done. >+ if (tdep->ppc_vsr0_upper_regnum !=3D -1 && tdep->ppc_vrsave_regnum != =3D -1 >+ && (regno =3D=3D -1 || (regno >=3D tdep->ppc_vsr0_upper_regnum >+ && regno <=3D tdep->ppc_vrsave_regnum))) >The regno comparison looks inconsistent (lower bound VSX; upper bound VMX). This is done. It was an error. >+ for (i =3D 0; i < num_of_vrregs; i++) >+ regcache->raw_supply (tdep->ppc_vr0_regnum + i, >+ &(vmx->__vr[i])); >Same loop count problem here. >+ regcache->raw_supply (tdep->ppc_vrsave_regnum, &(vmx->__vrsave)); >+ regcache->raw_supply (tdep->ppc_vrsave_regnum - 1, &(vmx->__vscr)); This is done. >+ /*Alti-vec register. */ Missing space >+ /*VSX register. */ >Here as well. This is done. >Fix coding style ({ should be indented). This is done. I have eliminated all RHS space and aligned the flower bracke= ts wherever I saw it was not aligned. From: Ulrich Weigand Date: Friday, 3 March 2023 at 8:29 PM To: gdb-patches@sourceware.org , Aditya Kamath1= , simark@simark.ca Cc: Sangamesh Mallayya Subject: Re: [PATCH] Enable vector instruction debugging for AIX Aditya Kamath1 wrote: >Please find attached the patch. {See: 0001-Enable-vector-instruction-debug= ging-for-AIX.patch}. This should be nearly ready to commit, I've just found a few minor issues - see below. Also, please provide commit message. >--- a/gdb/NEWS >+++ b/gdb/NEWS >@@ -3,6 +3,8 @@ > > *** Changes since GDB 13 > >+* AIX now needs to be of version 5.2 or higher to install GDB. >+ > * Multi-target feature configuration > > GDB now supports the individual configuration of remote targets' feature I think these are usually under a separate section, something like: * Removed targets and native configurations GDB no longer supports AIX 4.x and AIX 5.1. The minimum supported AIX version is now AIX 5.2. As a separate note, I see that even AIX 5.2 itself has been out of support for over 13 years now, so I'm wondering how much sense it makes to still claim support for this in GDB. If we're already deprecating old versions, maybe it would be better to set the minimum supported version at 6.1 or even 7.1 at this point? >@@ -7606,10 +7608,10 @@ the possible architectures. > > Windows 95, x86 Windows NT i[345]86-*-cygwin32 > M68K NetBSD m68k-*-netbsd* >-PowerPC AIX 4.x powerpc-*-aix* >+PowerPC AIX 5.2 or higher powerpc-*-aix* > PowerPC MacOS powerpc-*-macos* > PowerPC Windows NT powerpcle-*-cygwin32 >-RS/6000 AIX 4.x rs6000-*-aix4* >+RS/6000 AIX 5.2 or higher rs6000-*-aix4* This describes what was added in GDB 4.18 - I don't think this section should be retroactively modified. >+static void >+supply_altivec_regs (struct regcache *regcache, __vmx_context_t vmx) >+{ >+ ppc_gdbarch_tdep *tdep >+ =3D gdbarch_tdep (regcache->arch ()); >+ int regno; >+ int num_of_vrregs =3D tdep->ppc_vrsave_regnum - tdep->ppc_vr0_regnum + = 1; >+ for (regno =3D 0; regno < num_of_vrregs; regno++) >+ regcache->raw_supply (tdep->ppc_vr0_regnum + regno, >+ &(vmx.__vr[regno])); Now that you've taken VRSAVE and VSCR separately, this loop now only needs to execute 32 times, but you still do it 34 times. I think you should just use ppc_num_vrs instead of this num_of_vrregs you compute here. >+ regcache->raw_supply (tdep->ppc_vrsave_regnum, &(vmx.__vrsave)); >+ regcache->raw_supply (tdep->ppc_vrsave_regnum - 1, &(vmx.__vscr)); >+ /* vector registers. */ >+ if (tdep->ppc_vr0_regnum !=3D -1) >+ { >+ int ret =3D 0; >+ int num_of_vrregs =3D tdep->ppc_vrsave_regnum - tdep->ppc_vr0_regnu= m + 1; >+ __vmx_context_t vmx; >+ if (data->arch64) >+ ret =3D ptrace64aix (PTT_READ_VEC, tid, (long long) &vmx, 0, 0); >+ else >+ ret =3D ptrace32 (PTT_READ_VEC, tid, (uintptr_t) &vmx, 0, 0); >+ if (ret < 0) >+ memset(&vmx, 0, sizeof(__vmx_context_t)); >+ for (i =3D 0; i < num_of_vrregs; i++) >+ regcache->raw_supply (tdep->ppc_vr0_regnum + i, &(vmx.__vr[i])); Same problem here. >+ regcache->raw_supply (tdep->ppc_vrsave_regnum, &(vmx.__vrsave)); >+ regcache->raw_supply (tdep->ppc_vrsave_regnum - 1, &(vmx.__vscr)); >+static void >+fill_altivec (const struct regcache *regcache, __vmx_context_t *vmx) >+{ >+ struct gdbarch *gdbarch =3D regcache->arch (); >+ ppc_gdbarch_tdep *tdep =3D gdbarch_tdep (gdbarch); >+ int num_of_vrregs =3D tdep->ppc_vrsave_regnum - tdep->ppc_vr0_regnum + = 1; >+ int regno; >+ >+ for (regno =3D 0; regno < num_of_vrregs; regno++) >+ if (REG_VALID =3D=3D regcache->get_register_status (tdep->ppc_vr0_reg= num + regno)) >+ regcache->raw_collect (tdep->ppc_vr0_regnum + regno, >+ &(vmx->__vr[regno])); And here. >+ if (REG_VALID =3D=3D regcache->get_register_status (tdep->ppc_vrsave_re= gnum)) >+ { >+ regcache->raw_collect (tdep->ppc_vrsave_regnum, &(vmx->__vrsave)); >+ regcache->raw_collect (tdep->ppc_vrsave_regnum - 1, &(vmx->__vscr)); You should separately check VSCR for REG_VALID. >+ int num_of_vrregs =3D tdep->ppc_vrsave_regnum - tdep->ppc_vr0_regnum + = 1; Same problem here. >+ if (REG_VALID =3D=3D regcache->get_register_status (tdep->ppc_vrsav= e_regnum)) >+ { >+ ctx.vmx.__vrsave =3D vmx.__vrsave; >+ ctx.vmx.__vscr =3D vmx.__vscr; Also should do a separate REG_VALID check. >@@ -1766,6 +1979,56 @@ store_regs_kernel_thread (const struct regcache *re= gcache, int regno, >+ /* vmx registers. */ Should be VSX ? >+ if (tdep->ppc_vsr0_upper_regnum !=3D -1 && tdep->ppc_vrsave_regnum != =3D -1 >+ && (regno =3D=3D -1 || (regno >=3D tdep->ppc_vsr0_upper_regnum >+ && regno <=3D tdep->ppc_vrsave_regnum))) The regno comparison looks inconsistent (lower bound VSX; upper bound VMX). >+supply_vrregset_aix (struct regcache *regcache, __vmx_context_t *vmx) >+{ >+ int i; >+ struct gdbarch *gdbarch =3D regcache->arch (); >+ ppc_gdbarch_tdep *tdep =3D gdbarch_tdep (gdbarch); >+ int num_of_vrregs =3D tdep->ppc_vrsave_regnum - tdep->ppc_vr0_regnum + = 1; >+ >+ for (i =3D 0; i < num_of_vrregs; i++) >+ regcache->raw_supply (tdep->ppc_vr0_regnum + i, >+ &(vmx->__vr[i])); Same loop count problem here. >+ regcache->raw_supply (tdep->ppc_vrsave_regnum, &(vmx->__vrsave)); >+ regcache->raw_supply (tdep->ppc_vrsave_regnum - 1, &(vmx->__vscr)); >+ /*Alti-vec register. */ Missing space >+ /*VSX register. */ Here as well. >+ if (altivec_register_p (gdbarch, regno)) >+ { >+ store_altivec_register_aix (regcache, regno); >+ return; >+ } >+ >+ if (vsx_register_p (gdbarch, regno)) >+ { >+ store_vsx_register_aix (regcache, regno); >+ return; >+ } Fix coding style ({ should be indented). Bye, Ulrich --_000_CH2PR15MB3544D484ACE103AAC5299A1ED6B69CH2PR15MB3544namp_-- --_004_CH2PR15MB3544D484ACE103AAC5299A1ED6B69CH2PR15MB3544namp_ Content-Type: application/octet-stream; name="0001-Enable-vector-instruction-debugging-for-AIX.patch" Content-Description: 0001-Enable-vector-instruction-debugging-for-AIX.patch Content-Disposition: attachment; filename="0001-Enable-vector-instruction-debugging-for-AIX.patch"; size=26306; creation-date="Mon, 06 Mar 2023 13:44:21 GMT"; modification-date="Mon, 06 Mar 2023 13:44:21 GMT" Content-Transfer-Encoding: base64 RnJvbSBmNjhkYzg4ZDQ4MGZkOTQxODYzNDgwNjJhODQxYWExNTQwM2IzYzU1 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFk aGFyIEthbWF0aCA8QWRpdHlhLkthbWF0aDFAaWJtLmNvbT4KRGF0ZTogTW9u LCA2IE1hciAyMDIzIDA3OjM0OjE0IC0wNjAwClN1YmplY3Q6IFtQQVRDSF0g RW5hYmxlIHZlY3RvciBpbnN0cnVjdGlvbiBkZWJ1Z2dpbmcgZm9yIEFJWAoK QUlYIG5vdyBzdXBwb3J0cyB2ZWN0b3IgcmVnaXN0ZXIgY29udGVudHMgZGVi dWdnaW5nIGZvciBib3RoIFZNWApWU1ggcmVnaXN0ZXJzLgotLS0KIGdkYi9O RVdTICAgICAgICAgICAgICB8ICAgMyArCiBnZGIvYWl4LXRocmVhZC5jICAg ICAgfCAyNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystCiBnZGIvcnM2MDAwLWFpeC1uYXQuYyAgfCAyMjIgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBnZGIvcnM2MDAwLWFpeC10 ZGVwLmMgfCAxODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQg ZmlsZXMgY2hhbmdlZCwgNjY0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9nZGIvTkVXUyBiL2dkYi9ORVdTCmluZGV4IDc1 Y2QxMWIyMDRlLi5lMzhjNWRjNjRjNSAxMDA2NDQKLS0tIGEvZ2RiL05FV1MK KysrIGIvZ2RiL05FV1MKQEAgLTkzOCw2ICs5MzgsOSBAQCBpbmZvIHNvdXJj ZXMKIAogQVJNIFN5bWJpYW4JCQlhcm0qLSotc3ltYmlhbmVsZioKIAorR0RC IG5vIGxvbmdlciBzdXBwb3J0cyBBSVggNC54LCBBSVggNS54IGFuZCBBSVgg Ni54LiAgVGhlIG1pbmltdW0gc3VwcG9ydGVkCitBSVggdmVyc2lvbiBpcyBu b3cgQUlYIDcuMS4KKwogKiBOZXcgcmVtb3RlIHBhY2tldHMKIAogcU1lbVRh Z3MKZGlmZiAtLWdpdCBhL2dkYi9haXgtdGhyZWFkLmMgYi9nZGIvYWl4LXRo cmVhZC5jCmluZGV4IDQxODRjODdhOTJiLi5lNDY1YjQ5NzM4YiAxMDA2NDQK LS0tIGEvZ2RiL2FpeC10aHJlYWQuYworKysgYi9nZGIvYWl4LXRocmVhZC5j CkBAIC0zMDEsNyArMzAxLDE2IEBAIHB0cmFjZV9jaGVjayAoaW50IHJlcSwg aW50IGlkLCBpbnQgcmV0KQogCQkJcmVxLCBpZCwgcmV0LCBlcnJubyk7CiAJ ICByZXR1cm4gcmV0ID09IC0xID8gMCA6IDE7CiAJfQotICAgICAgYnJlYWs7 CisJYnJlYWs7CisgICAgIGNhc2UgUFRUX1JFQURfVkVDOgorICAgICBjYXNl IFBUVF9SRUFEX1ZTWDoKKyAgICAgICAgaWYgKGRlYnVnX2FpeF90aHJlYWQp CisgICAgICAgICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLAorICAgICAg ICAgICAgICAgICAgICAgICAgInB0cmFjZSAoJWQsICVkKSA9ICVkIChlcnJu byA9ICVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcSwgaWQs IHJldCwgZXJybm8pOworCWlmIChyZXQgPT0gLTEpCisJICByZXR1cm4gLTE7 CisJYnJlYWs7CiAgICAgfQogICBlcnJvciAoXygiYWl4LXRocmVhZDogcHRy YWNlICglZCwgJWQpIHJldHVybmVkICVkIChlcnJubyA9ICVkICVzKSIpLAog CSByZXEsIGlkLCByZXQsIGVycm5vLCBzYWZlX3N0cmVycm9yIChlcnJubykp OwpAQCAtNDc1LDYgKzQ4NCw0MiBAQCBwZGNfcmVhZF9yZWdzIChwdGhkYl91 c2VyX3QgdXNlcl9jdXJyZW50X3BpZCwKIAkgIG1lbWNweSAoJmNvbnRleHQt Pm1zciwgJnNwcnMzMiwgc2l6ZW9mKHNwcnMzMikpOwogCX0KICAgICB9ICAK KworICAvKiB2ZWN0b3IgcmVnaXN0ZXJzLiAgKi8KKyAgX192bXhfY29udGV4 dF90IHZteDsKKyAgaWYgKF9fcG93ZXJfdm14KCkgJiYgKGZsYWdzICYgUFRI REJfRkxBR19SRUdTKSkKKyAgeworICAgIGlmIChkYXRhLT5hcmNoNjQpCisg ICAgICB7CisJaWYgKCFwdHJhY2U2NGFpeCAoUFRUX1JFQURfVkVDLCB0aWQs IChsb25nIGxvbmcpICZ2bXgsIDAsIDApKQorCSAgbWVtc2V0ICgmdm14LCAw LCBzaXplb2YgKHZteCkpOworCW1lbWNweSAoJmNvbnRleHQtPnZteCwgJnZt eCwgc2l6ZW9mKF9fdm14X2NvbnRleHRfdCkpOworICAgICAgfQorICAgIGVs c2UKKyAgICAgIHsKKwlpZiAoIXB0cmFjZTMyIChQVFRfUkVBRF9WRUMsIHRp ZCwgKGxvbmcgbG9uZykgJnZteCwgMCwgMCkpCisJICBtZW1zZXQgKCZ2bXgs IDAsIHNpemVvZiAodm14KSk7CisJbWVtY3B5ICgmY29udGV4dC0+dm14LCAm dm14LCBzaXplb2YoX192bXhfY29udGV4dF90KSk7CisgICAgICB9CisgIH0K KworICAvKiB2c3ggcmVnaXN0ZXJzLiAgKi8KKyAgX192c3hfY29udGV4dF90 IHZzeDsKKyAgaWYgKF9fcG93ZXJfdnN4KCkgJiYgKGZsYWdzICYgUFRIREJf RkxBR19SRUdTKSkKKyAgeworICAgIGlmIChkYXRhLT5hcmNoNjQpCisgICAg eworCWlmICghcHRyYWNlNjRhaXggKFBUVF9SRUFEX1ZTWCwgdGlkLCAobG9u ZyBsb25nKSAmdnN4LCAwLCAwKSkKKwkgIG1lbXNldCAoJnZzeCwgMCwgc2l6 ZW9mICh2c3gpKTsKKwltZW1jcHkgKCZjb250ZXh0LT52c3gsICZ2c3gsIHNp emVvZihfX3ZzeF9jb250ZXh0X3QpKTsKKyAgICB9CisgICAgZWxzZQorICAg IHsKKyAgICAgIGlmICghcHRyYWNlMzIgKFBUVF9SRUFEX1ZTWCwgdGlkLCAo bG9uZyBsb25nKSAmdnN4LCAwLCAwKSkKKwltZW1zZXQgKCZ2c3gsIDAsIHNp emVvZiAodnN4KSk7CisgICAgICBtZW1jcHkgKCZjb250ZXh0LT52c3gsICZ2 c3gsIHNpemVvZihfX3ZzeF9jb250ZXh0X3QpKTsKKyAgICB9CisgIH0KICAg cmV0dXJuIDA7CiB9CiAKQEAgLTUzMSw2ICs1NzYsMjQgQEAgcGRjX3dyaXRl X3JlZ3MgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlkLAogCSAgcHRy YWNlMzIgKFBUVF9XUklURV9TUFJTLCB0aWQsICh1aW50cHRyX3QpICZjb250 ZXh0LT5tc3IsIDAsIE5VTEwpOwogCX0KICAgICB9CisKKyAgLyogdmVjdG9y IHJlZ2lzdGVycy4gICovCisgIGlmIChfX3Bvd2VyX3ZteCgpICYmIChmbGFn cyAmIFBUSERCX0ZMQUdfUkVHUykpCisgIHsKKyAgICBpZiAoZGF0YS0+YXJj aDY0KQorICAgICAgcHRyYWNlNjRhaXggKFBUVF9XUklURV9WRUMsIHRpZCwg KHVuc2lnbmVkIGxvbmcpICZjb250ZXh0LT52bXgsIDAsIDApOworICAgIGVs c2UKKyAgICAgIHB0cmFjZTMyIChQVFRfV1JJVEVfVkVDLCB0aWQsICh1aW50 cHRyX3QpICZjb250ZXh0LT52bXgsIDAsIDApOworICB9CisKKyAgLyogdnN4 IHJlZ2lzdGVycy4gICovCisgIGlmIChfX3Bvd2VyX3ZzeCgpICYmIChmbGFn cyAmIFBUSERCX0ZMQUdfUkVHUykpCisgIHsKKyAgICBpZiAoZGF0YS0+YXJj aDY0KQorICAgICAgcHRyYWNlNjRhaXggKFBUVF9XUklURV9WU1gsIHRpZCwg KHVuc2lnbmVkIGxvbmcpICZjb250ZXh0LT52c3gsIDAsIDApOworICAgIGVs c2UKKyAgICAgIHB0cmFjZTMyIChQVFRfV1JJVEVfVlNYLCB0aWQsICh1aW50 cHRyX3QpICZjb250ZXh0LT52c3gsIDAsIDApOworICB9CiAgIHJldHVybiAw OwogfQogCkBAIC0xMTcyLDYgKzEyMzUsMzUgQEAgYWl4X3RocmVhZF90YXJn ZXQ6OndhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0 dXMgKnN0YXR1cywKICAgcmV0dXJuIHBkX3VwZGF0ZSAocHRpZC5waWQgKCkp OwogfQogCisvKiBTdXBwbHkgQUlYIGFsdGl2ZWMgcmVnaXN0ZXJzLCBib3Ro IDY0IGFuZCAzMiBiaXQuICAqLworCitzdGF0aWMgdm9pZCAKK3N1cHBseV9h bHRpdmVjX3JlZ3MgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIF9fdm14 X2NvbnRleHRfdCB2bXgpCit7CisgIHBwY19nZGJhcmNoX3RkZXAgKnRkZXAK KyAgICA9IGdkYmFyY2hfdGRlcDxwcGNfZ2RiYXJjaF90ZGVwPiAocmVnY2Fj aGUtPmFyY2ggKCkpOworICBpbnQgcmVnbm87CisgIGZvciAocmVnbm8gPSAw OyByZWdubyA8IHBwY19udW1fdnJzOyByZWdubysrKQorICAgICByZWdjYWNo ZS0+cmF3X3N1cHBseSAodGRlcC0+cHBjX3ZyMF9yZWdudW0gKyByZWdubywK KwkJCSAgICYodm14Ll9fdnJbcmVnbm9dKSk7CisgIHJlZ2NhY2hlLT5yYXdf c3VwcGx5ICh0ZGVwLT5wcGNfdnJzYXZlX3JlZ251bSwgJih2bXguX192cnNh dmUpKTsKKyAgcmVnY2FjaGUtPnJhd19zdXBwbHkgKHRkZXAtPnBwY192cnNh dmVfcmVnbnVtIC0gMSwgJih2bXguX192c2NyKSk7Cit9CisKKy8qIFN1cHBs eSBBSVggVlNYIHJlZ2lzdGVycywgYm90aCA2NCBhbmQgMzIgYml0LiAgKi8K Kworc3RhdGljIHZvaWQKK3N1cHBseV92c3hfcmVncyAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSwgX192c3hfY29udGV4dF90IHZzeCkKK3sKKyAgcHBj X2dkYmFyY2hfdGRlcCAqdGRlcAorICAgID0gZ2RiYXJjaF90ZGVwPHBwY19n ZGJhcmNoX3RkZXA+IChyZWdjYWNoZS0+YXJjaCAoKSk7CisgIGludCByZWdu bzsKKworICBmb3IgKHJlZ25vID0gMDsgcmVnbm8gPCBwcGNfbnVtX3ZzaHJz OyByZWdubysrKQorICAgICByZWdjYWNoZS0+cmF3X3N1cHBseSAodGRlcC0+ cHBjX3ZzcjBfdXBwZXJfcmVnbnVtICsgcmVnbm8sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAmKHZzeC5fX3Zzcl9kdzFbcmVnbm9dKSk7Cit9CisK IC8qIFJlY29yZCB0aGF0IHRoZSA2NC1iaXQgZ2VuZXJhbC1wdXJwb3NlIHJl Z2lzdGVycyBjb250YWluIFZBTFMuICAqLwogCiBzdGF0aWMgdm9pZApAQCAt MTMyMSw2ICsxNDEzLDEyIEBAIGZldGNoX3JlZ3NfdXNlcl90aHJlYWQgKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHB0aGRiX3B0aHJlYWRfdCBwZHRp ZCkKICAgZWxzZQogICAgIHN1cHBseV9zcHJzMzIgKHJlZ2NhY2hlLCBjdHgu aWFyLCBjdHgubXNyLCBjdHguY3IsIGN0eC5sciwgY3R4LmN0ciwKIAkJCSAg ICAgY3R4LnhlciwgY3R4LmZwc2NyKTsKKworICAvKiBBbHRpdmVjIHJlZ2lz dGVycy4gICovCisgIHN1cHBseV9hbHRpdmVjX3JlZ3MgKHJlZ2NhY2hlLCBj dHgudm14KTsKKworICAvKiBWU1ggcmVnaXN0ZXJzLiAgKi8KKyAgc3VwcGx5 X3ZzeF9yZWdzIChyZWdjYWNoZSwgY3R4LnZzeCk7CiB9CiAKIC8qIEZldGNo IHJlZ2lzdGVyIFJFR05PIGlmICE9IC0xIG9yIGFsbCByZWdpc3RlcnMgb3Ro ZXJ3aXNlIGZyb20KQEAgLTEzODAsNiArMTQ3OCwzOCBAQCBmZXRjaF9yZWdz X2tlcm5lbF90aHJlYWQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGlu dCByZWdubywKIAl9CiAgICAgfQogCisgIC8qIHZlY3RvciByZWdpc3RlcnMu ICAqLworICBpZiAodGRlcC0+cHBjX3ZyMF9yZWdudW0gIT0gLTEpCisgICAg eworICAgICAgaW50IHJldCA9IDA7CisgICAgICBfX3ZteF9jb250ZXh0X3Qg dm14OworICAgICAgaWYgKGRhdGEtPmFyY2g2NCkKKwlyZXQgPSBwdHJhY2U2 NGFpeCAoUFRUX1JFQURfVkVDLCB0aWQsIChsb25nIGxvbmcpICZ2bXgsIDAs IDApOworICAgICAgZWxzZQorCXJldCA9IHB0cmFjZTMyIChQVFRfUkVBRF9W RUMsIHRpZCwgKHVpbnRwdHJfdCkgJnZteCwgMCwgMCk7CisgICAgICBpZiAo cmV0IDwgMCkKKwltZW1zZXQoJnZteCwgMCwgc2l6ZW9mKF9fdm14X2NvbnRl eHRfdCkpOworICAgICAgZm9yIChpID0gMDsgaSA8IHBwY19udW1fdnJzOyBp KyspCisJcmVnY2FjaGUtPnJhd19zdXBwbHkgKHRkZXAtPnBwY192cjBfcmVn bnVtICsgaSwgJih2bXguX192cltpXSkpOworICAgICAgcmVnY2FjaGUtPnJh d19zdXBwbHkgKHRkZXAtPnBwY192cnNhdmVfcmVnbnVtLCAmKHZteC5fX3Zy c2F2ZSkpOworICAgICAgcmVnY2FjaGUtPnJhd19zdXBwbHkgKHRkZXAtPnBw Y192cnNhdmVfcmVnbnVtIC0gMSwgJih2bXguX192c2NyKSk7CisgICAgfQor CisgIC8qIHZzeCByZWdpc3RlcnMuICAqLworICBpZiAodGRlcC0+cHBjX3Zz cjBfdXBwZXJfcmVnbnVtICE9IC0xKQorICAgIHsKKyAgICAgIF9fdnN4X2Nv bnRleHRfdCB2c3g7CisgICAgICBpbnQgcmV0ID0gMDsKKyAgICAgIGlmIChk YXRhLT5hcmNoNjQpCisJcmV0ID0gcHRyYWNlNjRhaXggKFBUVF9SRUFEX1ZT WCwgdGlkLCAobG9uZyBsb25nKSAmdnN4LCAwLCAwKTsKKyAgICAgIGVsc2UK KwlyZXQgPSBwdHJhY2UzMiAoUFRUX1JFQURfVlNYLCB0aWQsIChsb25nIGxv bmcpICZ2c3gsIDAsIDApOworICAgICAgaWYgKHJldCA8IDApCisgICAgICAg IG1lbXNldCgmdnN4LCAwLCBzaXplb2YoX192c3hfY29udGV4dF90KSk7Cisg ICAgICBmb3IgKGkgPSAwOyBpIDwgcHBjX251bV92c2hyczsgaSsrKQorICAg ICAgICByZWdjYWNoZS0+cmF3X3N1cHBseSAodGRlcC0+cHBjX3ZzcjBfdXBw ZXJfcmVnbnVtICsgaSwgJih2c3guX192c3JfZHcxW2ldKSk7CisgICAgfQor CiAgIC8qIEZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCiAKICAgaWYg KHBwY19mbG9hdGluZ19wb2ludF91bml0X3AgKGdkYmFyY2gpCkBAIC0xNDQ3 LDYgKzE1NzcsNDEgQEAgYWl4X3RocmVhZF90YXJnZXQ6OmZldGNoX3JlZ2lz dGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKQog ICAgIH0KIH0KIAorLyogRmlsbCBhbHRpdmVjIHJlZ2lzdGVycy4gICovCisK K3N0YXRpYyB2b2lkCitmaWxsX2FsdGl2ZWMgKGNvbnN0IHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUsIF9fdm14X2NvbnRleHRfdCAqdm14KQoreworICBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOwor ICBwcGNfZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwPHBwY19n ZGJhcmNoX3RkZXA+IChnZGJhcmNoKTsKKyAgaW50IHJlZ25vOworCisgIGZv ciAocmVnbm8gPSAwOyByZWdubyA8IHBwY19udW1fdnJzOyByZWdubysrKQor ICAgIGlmIChSRUdfVkFMSUQgPT0gcmVnY2FjaGUtPmdldF9yZWdpc3Rlcl9z dGF0dXMgKHRkZXAtPnBwY192cjBfcmVnbnVtICsgcmVnbm8pKQorICAgICAg cmVnY2FjaGUtPnJhd19jb2xsZWN0ICh0ZGVwLT5wcGNfdnIwX3JlZ251bSAr IHJlZ25vLAorCQkJCSAgICAgJih2bXgtPl9fdnJbcmVnbm9dKSk7CisKKyAg aWYgKFJFR19WQUxJRCA9PSByZWdjYWNoZS0+Z2V0X3JlZ2lzdGVyX3N0YXR1 cyAodGRlcC0+cHBjX3Zyc2F2ZV9yZWdudW0pKQorICAgIHJlZ2NhY2hlLT5y YXdfY29sbGVjdCAodGRlcC0+cHBjX3Zyc2F2ZV9yZWdudW0sICYodm14LT5f X3Zyc2F2ZSkpOworICBpZiAoUkVHX1ZBTElEID09IHJlZ2NhY2hlLT5nZXRf cmVnaXN0ZXJfc3RhdHVzICh0ZGVwLT5wcGNfdnJzYXZlX3JlZ251bSAtIDEp KQorICAgIHJlZ2NhY2hlLT5yYXdfY29sbGVjdCAodGRlcC0+cHBjX3Zyc2F2 ZV9yZWdudW0gLSAxLCAmKHZteC0+X192c2NyKSk7Cit9CisKKy8qIEZpbGwg dnN4IHJlZ2lzdGVycy4gKi8KKworc3RhdGljIHZvaWQKK2ZpbGxfdnN4IChj b25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBfX3ZzeF9jb250ZXh0 X3QgICp2c3gpCit7CisgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gcmVn Y2FjaGUtPmFyY2ggKCk7CisgIHBwY19nZGJhcmNoX3RkZXAgKnRkZXAgPSBn ZGJhcmNoX3RkZXA8cHBjX2dkYmFyY2hfdGRlcD4gKGdkYmFyY2gpOworICBp bnQgcmVnbm87CisKKyAgZm9yIChyZWdubyA9IDA7IHJlZ25vIDwgcHBjX251 bV92c2hyczsgcmVnbm8rKykKKyAgICBpZiAoUkVHX1ZBTElEID09IHJlZ2Nh Y2hlLT5nZXRfcmVnaXN0ZXJfc3RhdHVzICggdGRlcC0+cHBjX3ZzcjBfdXBw ZXJfcmVnbnVtICsgcmVnbm8pKQorICAgICAgcmVnY2FjaGUtPnJhd19jb2xs ZWN0ICh0ZGVwLT5wcGNfdnNyMF91cHBlcl9yZWdudW0gKyByZWdubywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih2c3gtPl9fdnNy X2R3MVswXSkgKyByZWdubyk7Cit9CisKIC8qIFN0b3JlIHRoZSBncCByZWdp c3RlcnMgaW50byBhbiBhcnJheSBvZiB1aW50MzJfdCBvciB1aW50NjRfdC4g ICovCiAKIHN0YXRpYyB2b2lkCkBAIC0xNTgyLDYgKzE3NDcsOSBAQCBzdG9y ZV9yZWdzX3VzZXJfdGhyZWFkIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLCBwdGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAgIHVpbnQ2NF90IGlu dDY0OwogICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7CiAg IGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChpbmZl cmlvcl9wdGlkKTsKKyAgaW50IHJldDsKKyAgX192bXhfY29udGV4dF90IHZt eDsKKyAgX192c3hfY29udGV4dF90ICB2c3g7CiAKICAgaWYgKGRlYnVnX2Fp eF90aHJlYWQpCiAgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywgCkBAIC0x NTk0LDYgKzE3NjIsNDQgQEAgc3RvcmVfcmVnc191c2VyX3RocmVhZCAoY29u c3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVhZF90 IHBkdGlkKQogICAgIGVycm9yIChfKCJhaXgtdGhyZWFkOiBzdG9yZV9yZWdp c3RlcnM6IHB0aGRiX3B0aHJlYWRfY29udGV4dCByZXR1cm5lZCAlcyIpLAog CSAgIHBkX3N0YXR1czJzdHIgKHN0YXR1cykpOwogCisgIC8qIEZpbGwgYWx0 aXZlYy1yZWdpc3RlcnMuICAqLworCisgIGlmIChfX3Bvd2VyX3ZteCgpKQor ICB7CisgICAgbWVtc2V0KCZ2bXgsIDAsIHNpemVvZihfX3ZteF9jb250ZXh0 X3QpKTsKKyAgICBpZiAoZGF0YS0+YXJjaDY0KQorICAgIHsKKyAgICAgIGZv ciAoaSA9IDA7IGkgPCBwcGNfbnVtX3ZyczsgaSsrKQorCWlmIChSRUdfVkFM SUQgPT0gcmVnY2FjaGUtPmdldF9yZWdpc3Rlcl9zdGF0dXMgKHRkZXAtPnBw Y192cjBfcmVnbnVtICsgaSkpCisJICB7CisJICAgIHJlZ2NhY2hlLT5yYXdf Y29sbGVjdCAodGRlcC0+cHBjX3ZyMF9yZWdudW0gKyBpLAorCQkJCSAgICYo dm14Ll9fdnJbaV0pKTsKKwkgICAgY3R4LnZteC5fX3ZyW2ldID0gdm14Ll9f dnJbaV07CisJICB9CisgICAgICBpZiAoUkVHX1ZBTElEID09IHJlZ2NhY2hl LT5nZXRfcmVnaXN0ZXJfc3RhdHVzICh0ZGVwLT5wcGNfdnJzYXZlX3JlZ251 bSkpCisJY3R4LnZteC5fX3Zyc2F2ZSA9IHZteC5fX3Zyc2F2ZTsKKyAgICAg IGlmIChSRUdfVkFMSUQgPT0gcmVnY2FjaGUtPmdldF9yZWdpc3Rlcl9zdGF0 dXMgKHRkZXAtPnBwY192cnNhdmVfcmVnbnVtIC0gMSkpCisJY3R4LnZteC5f X3ZzY3IgPSB2bXguX192c2NyOworICAgIH0KKyAgfQorCisgIC8qIEZpbGwg dnN4IHJlZ2lzdGVycy4gKi8KKworICBpZiAoX19wb3dlcl92c3goKSkKKyAg eworICAgIG1lbXNldCgmdnN4LCAwLCBzaXplb2YoX192c3hfY29udGV4dF90 KSk7CisgICAgaWYgKGRhdGEtPmFyY2g2NCkKKyAgICB7CisgICAgICBmb3Ig KGkgPSAwOyBpIDwgcHBjX251bV92c2hyczsgaSsrKQorCSBpZiAoUkVHX1ZB TElEID09IHJlZ2NhY2hlLT5nZXRfcmVnaXN0ZXJfc3RhdHVzICh0ZGVwLT5w cGNfdnNyMF9yZWdudW0gKyBpKSkKKwkgeworCSAgIHJlZ2NhY2hlLT5yYXdf Y29sbGVjdCAodGRlcC0+cHBjX3ZyMF9yZWdudW0gKyBpLAorCQkJCSAgICAg ICYodnN4Ll9fdnNyX2R3MVtpXSkpOworCSAgIGN0eC52c3guX192c3JfZHcx W2ldID0gdnN4Ll9fdnNyX2R3MVtpXTsKKwkgfQorICAgIH0KKyAgfQorCiAg IC8qIENvbGxlY3QgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIHZhbHVlcyBm cm9tIHRoZSByZWdjYWNoZS4gICovCiAKICAgZm9yIChpID0gMDsgaSA8IHBw Y19udW1fZ3ByczsgaSsrKQpAQCAtMTY3NCw2ICsxODgwLDcgQEAgc3RvcmVf cmVnc19rZXJuZWxfdGhyZWFkIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLCBpbnQgcmVnbm8sCiAgIHN0cnVjdCBwdHhzcHJzIHNwcnM2NDsK ICAgc3RydWN0IHB0c3BycyAgc3ByczMyOwogICBzdHJ1Y3QgYWl4X3RocmVh ZF92YXJpYWJsZXMgKmRhdGE7CisgIGludCByZXQgPSAwOwogCiAgIGRhdGEg PSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChyZWdjYWNoZS0+ cHRpZCAoKSk7CiAKQEAgLTE3NjYsNiArMTk3Myw1NSBAQCBzdG9yZV9yZWdz X2tlcm5lbF90aHJlYWQgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUsIGludCByZWdubywKIAkgIHB0cmFjZTMyIChQVFRfV1JJVEVfU1BSUywg dGlkLCAodWludHB0cl90KSAmc3ByczMyLCAwLCBOVUxMKTsKIAl9CiAgICAg fQorICAgIAorICAgIC8qIFZlY3RvciByZWdpc3RlcnMuICAqLworICAgIGlm ICh0ZGVwLT5wcGNfdnIwX3JlZ251bSAhPSAtMSAmJiB0ZGVwLT5wcGNfdnJz YXZlX3JlZ251bSAhPSAtMQorCSYmIChyZWdubyA9PSAtMSB8fCAocmVnbm8g Pj0gdGRlcC0+cHBjX3ZyMF9yZWdudW0KKwkmJiByZWdubyA8PSB0ZGVwLT5w cGNfdnJzYXZlX3JlZ251bSkpKQorICAgIHsKKyAgICAgIF9fdm14X2NvbnRl eHRfdCB2bXg7CisgICAgICBpZiAoX19wb3dlcl92bXgoKSkKKyAgICAgIHsK KwlpZiAoZGF0YS0+YXJjaDY0KQorCSAgcmV0ID0gcHRyYWNlNjRhaXggKFBU VF9SRUFEX1ZFQywgdGlkLCAobG9uZyBsb25nKSAmdm14LCAwLCAwKTsKKwll bHNlCisJICByZXQgPSBwdHJhY2UzMiAoUFRUX1JFQURfVkVDLCB0aWQsIChs b25nIGxvbmcpICZ2bXgsIDAsIDApOworICAgICAgICBpZiAocmV0ID4gMCkK KyAgICAgICAgeworCSAgZmlsbF9hbHRpdmVjKHJlZ2NhY2hlLCAmdm14KTsK KwkgIGlmIChkYXRhLT5hcmNoNjQpCisJICAgIHJldCA9IHB0cmFjZTY0YWl4 IChQVFRfV1JJVEVfVkVDLCB0aWQsIChsb25nIGxvbmcpICZ2bXgsIDAsIDAp OworCSAgZWxzZQorCSAgICByZXQgPSBwdHJhY2UzMiAoUFRUX1dSSVRFX1ZF QywgdGlkLCAobG9uZyBsb25nKSAmdm14LCAwLCAwKTsKKwkgIGlmIChyZXQg PCAwKQorCSAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJVbmFibGUgdG8gc3Rv cmUgQWx0aVZlYyByZWdpc3RlciBhZnRlciByZWFkIikpOworCX0KKyAgICAg IH0KKyAgICB9CisKKyAgICAvKiBWU1ggcmVnaXN0ZXJzLiAgKi8KKyAgICBp ZiAodGRlcC0+cHBjX3ZzcjBfdXBwZXJfcmVnbnVtICE9IC0xICYmIChyZWdu byA9PSAtMQorCXx8IChyZWdubyA+PXRkZXAtPnBwY192c3IwX3VwcGVyX3Jl Z251bSkpKQorICAgIHsKKyAgICAgIF9fdnN4X2NvbnRleHRfdCB2c3g7Cisg ICAgICBpZiAoX19wb3dlcl92c3goKSkKKyAgICAgIHsKKwlpZiAoZGF0YS0+ YXJjaDY0KQorCSAgcmV0ID0gIHB0cmFjZTY0YWl4IChQVFRfUkVBRF9WU1gs IHRpZCwgKGxvbmcgbG9uZykgJnZzeCwgMCwgMCk7CisJZWxzZQorCSAgcmV0 ID0gIHB0cmFjZTMyIChQVFRfUkVBRF9WU1gsIHRpZCwgKGxvbmcgbG9uZykg JnZzeCwgMCwgMCk7CisJaWYgKHJldCA+IDApCisJeworCSAgZmlsbF92c3gg KHJlZ2NhY2hlLCAmdnN4KTsKKwkgIGlmIChkYXRhLT5hcmNoNjQpCisJICAg IHJldCA9IHB0cmFjZTY0YWl4IChQVFRfV1JJVEVfVlNYLCB0aWQsIChsb25n IGxvbmcpICZ2c3gsIDAsIDApOworCSAgZWxzZQorCSAgICByZXQgPSBwdHJh Y2UzMiAoUFRUX1dSSVRFX1ZTWCwgdGlkLCAobG9uZyBsb25nKSAmdnN4LCAw LCAwKTsKKwkgIGlmIChyZXQgPCAwKQorCSAgICBwZXJyb3Jfd2l0aF9uYW1l IChfKCJVbmFibGUgdG8gc3RvcmUgVlNYIHJlZ2lzdGVyIGFmdGVyIHJlYWQi KSk7CisJfQorICAgICAgfQorICAgIH0KIH0KIAogLyogU3RvcmUgZ2RiJ3Mg Y3VycmVudCB2aWV3IG9mIHRoZSByZWdpc3RlciBzZXQgaW50byB0aGUKZGlm ZiAtLWdpdCBhL2dkYi9yczYwMDAtYWl4LW5hdC5jIGIvZ2RiL3JzNjAwMC1h aXgtbmF0LmMKaW5kZXggOGM5ZGMxYTZlNjguLjhjZDk2Nzc4OTkyIDEwMDY0 NAotLS0gYS9nZGIvcnM2MDAwLWFpeC1uYXQuYworKysgYi9nZGIvcnM2MDAw LWFpeC1uYXQuYwpAQCAtNTgsNiArNTgsMTQgQEAKICNpbmNsdWRlIDxwcm9j aW5mby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogCisvKiBIZWFkZXIg ZmlsZXMgZm9yIGFsdGktdmVjIHJlZy4gICovCisjaW5jbHVkZSA8c3lzL2Nv bnRleHQuaD4KKworI2luY2x1ZGUgImZlYXR1cmVzL3JzNjAwMC9wb3dlcnBj LXZzeDY0LmMiCisjaW5jbHVkZSAiZmVhdHVyZXMvcnM2MDAwL3Bvd2VycGMt dnN4MzIuYyIKKyNpbmNsdWRlICJmZWF0dXJlcy9yczYwMDAvcG93ZXJwYy1h bHRpdmVjMzIuYyIKKyNpbmNsdWRlICJmZWF0dXJlcy9yczYwMDAvcG93ZXJw Yy1hbHRpdmVjNjQuYyIKKwogLyogT24gQUlYNC4zKywgc3lzL2xkci5oIHBy b3ZpZGVzIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBzdHJ1Y3QgbGRfaW5mbyBm b3IKICAgIGRlYnVnZ2luZyAzMi1iaXQgYW5kIDY0LWJpdCBwcm9jZXNzZXMu ICBEZWZpbmUgYSB0eXBlZGVmIGFuZCBtYWNyb3MgZm9yCiAgICBhY2Nlc3Np bmcgZmllbGRzIGluIHRoZSBhcHByb3ByaWF0ZSBzdHJ1Y3R1cmVzLiAgKi8K QEAgLTk5LDYgKzEwNyw4IEBAIGNsYXNzIHJzNjAwMF9uYXRfdGFyZ2V0IGZp bmFsIDogcHVibGljIGluZl9wdHJhY2VfdGFyZ2V0CiAgICAgIHN1cHBvcnQu ICAqLwogICB2b2lkIGZvbGxvd19mb3JrIChpbmZlcmlvciAqLCBwdGlkX3Qs IHRhcmdldF93YWl0a2luZCwgYm9vbCwgYm9vbCkgb3ZlcnJpZGU7CiAKKyAg Y29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICpyZWFkX2Rlc2NyaXB0aW9uICgp ICBvdmVycmlkZTsKKwogcHJvdGVjdGVkOgogCiAgIHZvaWQgcG9zdF9zdGFy dHVwX2luZmVyaW9yIChwdGlkX3QgcHRpZCkgb3ZlcnJpZGU7CkBAIC0yNzIs NiArMjgyLDE2NiBAQCByczYwMDBfcHRyYWNlNjQgKGludCByZXEsIGludCBp ZCwgbG9uZyBsb25nIGFkZHIsIGludCBkYXRhLCB2b2lkICpidWYpCiAgIHJl dHVybiByZXQ7CiB9CiAKKy8qIFN0b3JlIHRoZSB2c3ggcmVnaXN0ZXJzLiAg Ki8KKworc3RhdGljIHZvaWQKK3N0b3JlX3ZzeF9yZWdpc3Rlcl9haXggKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubykKK3sKKyAgaW50 IHJldDsKKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSByZWdjYWNoZS0+ YXJjaCAoKTsKKyAgcHBjX2dkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hf dGRlcDxwcGNfZ2RiYXJjaF90ZGVwPiAoZ2RiYXJjaCk7CisgIHN0cnVjdCB0 aHJkZW50cnk2NCB0aHJkZW50cnk7CisgIF9fdnN4X2NvbnRleHRfdCB2c3g7 CisgIHBpZF90IHBpZCA9IGluZmVyaW9yX3B0aWQucGlkICgpOworICB0aWQ2 NF90IHRocmRfaSA9IDA7CisKKyAgaWYgKGdldHRocmRzNjQocGlkLCAmdGhy ZGVudHJ5LCBzaXplb2Yoc3RydWN0IHRocmRlbnRyeTY0KSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZF9pLCAx KSA9PSAxKQorICAgIHRocmRfaSA9IHRocmRlbnRyeS50aV90aWQ7CisKKyAg bWVtc2V0KCZ2c3gsIDAsIHNpemVvZihfX3ZzeF9jb250ZXh0X3QpKTsKKyAg aWYgKF9fcG93ZXJfdnN4KCkgJiYgdGhyZF9pID4gMCkKKyAgeworICAgIGlm IChBUkNINjQgKCkpCisgICAgICByZXQgPSByczYwMDBfcHRyYWNlNjQgKFBU VF9SRUFEX1ZTWCwgdGhyZF9pLCAobG9uZyBsb25nKSAmdnN4LCAwLCAwKTsK KyAgICBlbHNlCisgICAgICByZXQgPSByczYwMDBfcHRyYWNlMzIgKFBUVF9S RUFEX1ZTWCwgdGhyZF9pLCAoaW50ICopJnZzeCwgMCwgMCk7CisgICAgaWYg KHJldCA8IDApCisgICAgICByZXR1cm47CisKKyAgICByZWdjYWNoZS0+cmF3 X2NvbGxlY3QgKHJlZ25vLCAmKHZzeC5fX3Zzcl9kdzFbMF0pKworICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVnbm8gLSB0ZGVwLT5wcGNfdnNyMF91 cHBlcl9yZWdudW0pOworCisgICAgaWYgKEFSQ0g2NCAoKSkKKyAgICAgIHJl dCA9IHJzNjAwMF9wdHJhY2U2NCAoUFRUX1dSSVRFX1ZTWCwgdGhyZF9pLCAo bG9uZyBsb25nKSAmdnN4LCAwLCAwKTsKKyAgICBlbHNlCisgICAgICByZXQg PSByczYwMDBfcHRyYWNlMzIgKFBUVF9XUklURV9WU1gsIHRocmRfaSwgKGlu dCAqKSAmdnN4LCAwLCAwKTsKKworICAgIGlmIChyZXQgPCAwKQorICAgICAg cGVycm9yX3dpdGhfbmFtZSAoXygiVW5hYmxlIHRvIHdyaXRlIFZTWCByZWdp c3RlcnMgYWZ0ZXIgcmVhZGluZyBpdCIpKTsKKyAgfQorfQorCisvKiBTdG9y ZSBBbHRpdmVjIHJlZ2lzdGVycy4gICovCisKK3N0YXRpYyB2b2lkCitzdG9y ZV9hbHRpdmVjX3JlZ2lzdGVyX2FpeCAoc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSwgaW50IHJlZ25vKQoreworICBpbnQgcmV0OworICBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOworICBwcGNfZ2Ri YXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwPHBwY19nZGJhcmNoX3Rk ZXA+IChnZGJhcmNoKTsKKyAgc3RydWN0IHRocmRlbnRyeTY0IHRocmRlbnRy eTsKKyAgX192bXhfY29udGV4dF90IHZteDsKKyAgcGlkX3QgcGlkID0gaW5m ZXJpb3JfcHRpZC5waWQgKCk7CisgIHRpZDY0X3QgIHRocmRfaSA9IDA7CisK KyAgaWYgKGdldHRocmRzNjQocGlkLCAmdGhyZGVudHJ5LCBzaXplb2Yoc3Ry dWN0IHRocmRlbnRyeTY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJnRocmRfaSwgMSkgPT0gMSkKKyAgICB0aHJk X2kgPSB0aHJkZW50cnkudGlfdGlkOworCisgIG1lbXNldCgmdm14LCAwLCBz aXplb2YoX192bXhfY29udGV4dF90KSk7CisgIGlmIChfX3Bvd2VyX3ZteCgp ICYmIHRocmRfaSA+IDApCisgIHsKKyAgICBpZiAoQVJDSDY0ICgpKQorICAg ICAgcmV0ID0gcnM2MDAwX3B0cmFjZTY0IChQVFRfUkVBRF9WRUMsIHRocmRf aSwgKGxvbmcgbG9uZykgJnZteCwgMCwgMCk7CisgICAgZWxzZQorICAgICAg cmV0ID0gcnM2MDAwX3B0cmFjZTMyIChQVFRfUkVBRF9WRUMsIHRocmRfaSwg KGludCAqKSAmdm14LCAwLCAwKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAg IHJldHVybjsKKworICAgIHJlZ2NhY2hlLT5yYXdfY29sbGVjdCAocmVnbm8s ICYodm14Ll9fdnJbMF0pICsgcmVnbm8KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtIHRkZXAtPnBwY192cjBfcmVnbnVtKTsKKworICAg IGlmIChBUkNINjQgKCkpCisgICAgICByZXQgPSByczYwMDBfcHRyYWNlNjQg KFBUVF9XUklURV9WRUMsIHRocmRfaSwgKGxvbmcgbG9uZykgJnZteCwgMCwg MCk7CisgICAgZWxzZQorICAgICAgcmV0ID0gcnM2MDAwX3B0cmFjZTMyIChQ VFRfV1JJVEVfVkVDLCB0aHJkX2ksIChpbnQgKikgJnZteCwgMCwgMCk7Cisg ICAgaWYgKHJldCA8IDApCisgICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJV bmFibGUgdG8gc3RvcmUgQWx0aVZlYyByZWdpc3RlciBhZnRlciByZWFkaW5n IGl0IikpOworICB9CisKK30KKworLyogU3VwcGx5IGFsdGl2ZWMgcmVnaXN0 ZXJzLiAgKi8KKworc3RhdGljIHZvaWQKK3N1cHBseV92cnJlZ3NldF9haXgg KHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIF9fdm14X2NvbnRleHRfdCAq dm14KQoreworICBpbnQgaTsKKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gg PSByZWdjYWNoZS0+YXJjaCAoKTsKKyAgcHBjX2dkYmFyY2hfdGRlcCAqdGRl cCA9IGdkYmFyY2hfdGRlcDxwcGNfZ2RiYXJjaF90ZGVwPiAoZ2RiYXJjaCk7 CisgIGludCBudW1fb2ZfdnJyZWdzID0gdGRlcC0+cHBjX3Zyc2F2ZV9yZWdu dW0gLSB0ZGVwLT5wcGNfdnIwX3JlZ251bSArIDE7CisKKyAgZm9yIChpID0g MDsgaSA8IG51bV9vZl92cnJlZ3M7IGkrKykKKyAgICByZWdjYWNoZS0+cmF3 X3N1cHBseSAodGRlcC0+cHBjX3ZyMF9yZWdudW0gKyBpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJih2bXgtPl9fdnJbaV0pKTsK KyAgcmVnY2FjaGUtPnJhd19zdXBwbHkgKHRkZXAtPnBwY192cnNhdmVfcmVn bnVtLCAmKHZteC0+X192cnNhdmUpKTsKKyAgcmVnY2FjaGUtPnJhd19zdXBw bHkgKHRkZXAtPnBwY192cnNhdmVfcmVnbnVtIC0gMSwgJih2bXgtPl9fdnNj cikpOworfQorCisvKiBGZXRjaCBhbHRpdmVjIHJlZ2lzdGVyLiAgKi8KKwor c3RhdGljIHZvaWQKK2ZldGNoX2FsdGl2ZWNfcmVnaXN0ZXJzX2FpeCAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKK3sKKyAgc3RydWN0IHRocmRlbnRy eTY0IHRocmRlbnRyeTsKKyAgX192bXhfY29udGV4dF90IHZteDsKKyAgcGlk X3QgcGlkID0gY3VycmVudF9pbmZlcmlvciAoKS0+cGlkOworICB0aWQ2NF90 ICB0aHJkX2kgPSAwOworCisgIGlmIChnZXR0aHJkczY0KHBpZCwgJnRocmRl bnRyeSwgc2l6ZW9mKHN0cnVjdCB0aHJkZW50cnk2NCksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnRocmRfaSwgMSkgPT0gMSkKKyAgICB0 aHJkX2kgPSB0aHJkZW50cnkudGlfdGlkOworCisgIG1lbXNldCgmdm14LCAw LCBzaXplb2YoX192bXhfY29udGV4dF90KSk7CisgIGlmIChfX3Bvd2VyX3Zt eCgpICYmIHRocmRfaSA+IDApCisgIHsKKyAgICBpZiAoQVJDSDY0ICgpKQor ICAgICAgcnM2MDAwX3B0cmFjZTY0IChQVFRfUkVBRF9WRUMsIHRocmRfaSwg KGxvbmcgbG9uZykgJnZteCwgMCwgMCk7CisgICAgZWxzZQorICAgICAgcnM2 MDAwX3B0cmFjZTMyIChQVFRfUkVBRF9WRUMsIHRocmRfaSwgKGludCAqKSAm dm14LCAwLCAwKTsKKyAgICBzdXBwbHlfdnJyZWdzZXRfYWl4IChyZWdjYWNo ZSwgJnZteCk7CisgIH0KK30KKworLyogc3VwcGx5IHZzeCByZWdpc3Rlci4g ICovCisKK3N0YXRpYyB2b2lkCitzdXBwbHlfdnN4cmVnc2V0X2FpeCAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgX192c3hfY29udGV4dF90ICp2c3gp Cit7CisgIGludCBpOworICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJl Z2NhY2hlLT5hcmNoICgpOworICBwcGNfZ2RiYXJjaF90ZGVwICp0ZGVwID0g Z2RiYXJjaF90ZGVwPHBwY19nZGJhcmNoX3RkZXA+IChnZGJhcmNoKTsKKwor ICBmb3IgKGkgPSAwOyBpIDwgcHBjX251bV92c2hyczsgaSsrKQorICAgcmVn Y2FjaGUtPnJhd19zdXBwbHkgKHRkZXAtPnBwY192c3IwX3VwcGVyX3JlZ251 bSArIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYo dnN4LT5fX3Zzcl9kdzFbaV0pKTsKK30KKworLyogRmV0Y2ggdnN4IHJlZ2lz dGVycy4gICovCitzdGF0aWMgdm9pZAorZmV0Y2hfdnN4X3JlZ2lzdGVyc19h aXggKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCit7CisgIHN0cnVjdCB0 aHJkZW50cnk2NCB0aHJkZW50cnk7CisgIF9fdnN4X2NvbnRleHRfdCB2c3g7 CisgIHBpZF90IHBpZCA9IGN1cnJlbnRfaW5mZXJpb3IgKCktPnBpZDsKKyAg dGlkNjRfdCAgdGhyZF9pID0gMDsKKworICBpZiAoZ2V0dGhyZHM2NChwaWQs ICZ0aHJkZW50cnksIHNpemVvZihzdHJ1Y3QgdGhyZGVudHJ5NjQpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhy ZF9pLCAxKSA9PSAxKQorICAgIHRocmRfaSA9IHRocmRlbnRyeS50aV90aWQ7 CisKKyAgbWVtc2V0KCZ2c3gsIDAsIHNpemVvZihfX3ZzeF9jb250ZXh0X3Qp KTsKKyAgaWYgKF9fcG93ZXJfdnN4KCkgJiYgdGhyZF9pID4gMCkKKyAgewor ICAgIGlmIChBUkNINjQgKCkpCisgICAgICByczYwMDBfcHRyYWNlNjQgKFBU VF9SRUFEX1ZTWCwgdGhyZF9pLCAobG9uZyBsb25nKSAmdnN4LCAwLCAwKTsK KyAgICBlbHNlCisgICAgICByczYwMDBfcHRyYWNlMzIgKFBUVF9SRUFEX1ZT WCwgdGhyZF9pLCAoaW50ICopICZ2c3gsIDAsIDApOworICAgIHN1cHBseV92 c3hyZWdzZXRfYWl4IChyZWdjYWNoZSwgJnZzeCk7CisgIH0KK30KKwogdm9p ZCByczYwMDBfbmF0X3RhcmdldDo6cG9zdF9zdGFydHVwX2luZmVyaW9yIChw dGlkX3QgcHRpZCkKIHsKIApAQCAtMzI2LDYgKzQ5NiwyMCBAQCBmZXRjaF9y ZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25v KQogICAvKiBSZXRyaWV2ZWQgdmFsdWVzIG1heSBiZSAtMSwgc28gaW5mZXIg ZXJyb3JzIGZyb20gZXJybm8uICAqLwogICBlcnJubyA9IDA7CiAKKyAgLyog QWx0aS12ZWMgcmVnaXN0ZXIuICAqLworICBpZiAoYWx0aXZlY19yZWdpc3Rl cl9wIChnZGJhcmNoLCByZWdubykpCisgIHsKKyAgICBmZXRjaF9hbHRpdmVj X3JlZ2lzdGVyc19haXggKHJlZ2NhY2hlKTsKKyAgICByZXR1cm47CisgIH0K KworICAvKiBWU1ggcmVnaXN0ZXIuICAqLworICBpZiAodnN4X3JlZ2lzdGVy X3AgKGdkYmFyY2gsIHJlZ25vKSkKKyAgeworICAgIGZldGNoX3ZzeF9yZWdp c3RlcnNfYWl4IChyZWdjYWNoZSk7CisgICAgcmV0dXJuOworICB9CisKICAg bnIgPSByZWdtYXAgKGdkYmFyY2gsIHJlZ25vLCAmaXNmbG9hdCk7CiAKICAg LyogRmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAgKi8KQEAgLTM4OCw2ICs1 NzIsMTggQEAgc3RvcmVfcmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIGludCByZWdubykKICAgLyogLTEgY2FuIGJlIGEgc3VjY2Vzc2Z1 bCByZXR1cm4gdmFsdWUsIHNvIGluZmVyIGVycm9ycyBmcm9tIGVycm5vLiAg Ki8KICAgZXJybm8gPSAwOwogCisgIGlmIChhbHRpdmVjX3JlZ2lzdGVyX3Ag KGdkYmFyY2gsIHJlZ25vKSkKKyAgeworICAgIHN0b3JlX2FsdGl2ZWNfcmVn aXN0ZXJfYWl4IChyZWdjYWNoZSwgcmVnbm8pOworICAgIHJldHVybjsKKyAg fQorCisgIGlmICh2c3hfcmVnaXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbm8pKQor ICB7CisgICAgc3RvcmVfdnN4X3JlZ2lzdGVyX2FpeCAocmVnY2FjaGUsIHJl Z25vKTsKKyAgICByZXR1cm47CisgIH0KKwogICBuciA9IHJlZ21hcCAoZ2Ri YXJjaCwgcmVnbm8sICZpc2Zsb2F0KTsKIAogICAvKiBGbG9hdGluZy1wb2lu dCByZWdpc3RlcnMuICAqLwpAQCAtNDU4LDYgKzY1NCwxMiBAQCByczYwMDBf bmF0X3RhcmdldDo6ZmV0Y2hfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBpbnQgcmVnbm8pCiAJZm9yIChyZWdubyA9IDA7IHJlZ25v IDwgcHBjX251bV9mcHJzOyByZWdubysrKQogCSAgZmV0Y2hfcmVnaXN0ZXIg KHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIHJlZ25vKTsKIAor ICAgICAgaWYgKHRkZXAtPnBwY192cjBfcmVnbnVtICE9IC0xICYmIHRkZXAt PnBwY192cnNhdmVfcmVnbnVtICE9IC0xKQorICAgICAgICBmZXRjaF9hbHRp dmVjX3JlZ2lzdGVyc19haXggKHJlZ2NhY2hlKTsKKworICAgICAgaWYgKHRk ZXAtPnBwY192c3IwX3VwcGVyX3JlZ251bSAhPSAtMSkKKyAgICAgICAgZmV0 Y2hfdnN4X3JlZ2lzdGVyc19haXggKHJlZ2NhY2hlKTsKKwogICAgICAgLyog UmVhZCBzcGVjaWFsIHJlZ2lzdGVycy4gICovCiAgICAgICBmZXRjaF9yZWdp c3RlciAocmVnY2FjaGUsIGdkYmFyY2hfcGNfcmVnbnVtIChnZGJhcmNoKSk7 CiAgICAgICBmZXRjaF9yZWdpc3RlciAocmVnY2FjaGUsIHRkZXAtPnBwY19w c19yZWdudW0pOwpAQCAtNDcyLDYgKzY3NCwyNiBAQCByczYwMDBfbmF0X3Rh cmdldDo6ZmV0Y2hfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBpbnQgcmVnbm8pCiAgICAgfQogfQogCitjb25zdCBzdHJ1Y3QgdGFy Z2V0X2Rlc2MgKgorcnM2MDAwX25hdF90YXJnZXQ6OnJlYWRfZGVzY3JpcHRp b24gKCkKK3sKKyAgIGlmIChBUkNINjQoKSkKKyAgIHsKKyAgICAgaWYgKF9f cG93ZXJfdnN4ICgpKQorICAgICAgIHJldHVybiB0ZGVzY19wb3dlcnBjX3Zz eDY0OworICAgICBlbHNlIGlmIChfX3Bvd2VyX3ZteCAoKSkKKyAgICAgICBy ZXR1cm4gdGRlc2NfcG93ZXJwY19hbHRpdmVjNjQ7CisgICB9CisgICBlbHNl CisgICB7CisgICAgIGlmIChfX3Bvd2VyX3ZzeCAoKSkKKyAgICAgICByZXR1 cm4gdGRlc2NfcG93ZXJwY192c3gzMjsKKyAgICAgZWxzZSBpZiAoX19wb3dl cl92bXggKCkpCisgICAgICAgcmV0dXJuIHRkZXNjX3Bvd2VycGNfYWx0aXZl YzMyOworICAgfQorICAgcmV0dXJuIE5VTEw7Cit9CisKIC8qIFN0b3JlIG91 ciByZWdpc3RlciB2YWx1ZXMgYmFjayBpbnRvIHRoZSBpbmZlcmlvci4KICAg IElmIFJFR05PIGlzIC0xLCBkbyB0aGlzIGZvciBhbGwgcmVnaXN0ZXJzLgog ICAgT3RoZXJ3aXNlLCBSRUdOTyBzcGVjaWZpZXMgd2hpY2ggcmVnaXN0ZXIg KHNvIHdlIGNhbiBzYXZlIHRpbWUpLiAgKi8KZGlmZiAtLWdpdCBhL2dkYi9y czYwMDAtYWl4LXRkZXAuYyBiL2dkYi9yczYwMDAtYWl4LXRkZXAuYwppbmRl eCAxNTYwMmM4MGIwMC4uYjcxYmJlNzUwZGIgMTAwNjQ0Ci0tLSBhL2dkYi9y czYwMDAtYWl4LXRkZXAuYworKysgYi9nZGIvcnM2MDAwLWFpeC10ZGVwLmMK QEAgLTY4LDYgKzY4LDE3OCBAQAogLyogTWluaW11bSBwb3NzaWJsZSB0ZXh0 IGFkZHJlc3MgaW4gQUlYLiAgKi8KICNkZWZpbmUgQUlYX1RFWFRfU0VHTUVO VF9CQVNFIDB4MTAwMDAwMDAKIAorc3RydWN0IHJzNjAwMF9haXhfcmVnX3Zy cmVnX29mZnNldAoreworICBpbnQgdnIwX29mZnNldDsKKyAgaW50IHZzY3Jf b2Zmc2V0OworICBpbnQgdnJzYXZlX29mZnNldDsKK307CisKK3N0YXRpYyBz dHJ1Y3QgcnM2MDAwX2FpeF9yZWdfdnJyZWdfb2Zmc2V0IHJzNjAwMF9haXhf dnJyZWdfb2Zmc2V0ID0KK3sKKyAgIC8qIEFsdGlWZWMgcmVnaXN0ZXJzLiAg Ki8KKyAgMzIsIC8qIHZyMF9vZmZzZXQgKi8KKyAgNTQ0LCAvKiB2c2NyX29m ZnNldC4gKi8KKyAgNTYwIC8qIHZyc2F2ZV9vZmZzZXQgKi8KK307CisKK3N0 YXRpYyBpbnQKK3JzNjAwMF9haXhfZ2V0X3ZycmVnX29mZnNldCAocHBjX2dk YmFyY2hfdGRlcCAqdGRlcCwKKyAgY29uc3Qgc3RydWN0IHJzNjAwMF9haXhf cmVnX3ZycmVnX29mZnNldCAqb2Zmc2V0cywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlZ251bSkKK3sKKyAgaWYg KHJlZ251bSA+PSB0ZGVwLT5wcGNfdnIwX3JlZ251bSAmJgorICByZWdudW0g PCB0ZGVwLT5wcGNfdnIwX3JlZ251bSArIHBwY19udW1fdnJzKQorICAgIHJl dHVybiBvZmZzZXRzLT52cjBfb2Zmc2V0ICsgKHJlZ251bSAtIHRkZXAtPnBw Y192cjBfcmVnbnVtKSAqIDE2OworCisgIGlmIChyZWdudW0gPT0gdGRlcC0+ cHBjX3Zyc2F2ZV9yZWdudW0gLSAxKQorICAgIHJldHVybiBvZmZzZXRzLT52 c2NyX29mZnNldDsKKworICBpZiAocmVnbnVtID09IHRkZXAtPnBwY192cnNh dmVfcmVnbnVtKQorICAgIHJldHVybiBvZmZzZXRzLT52cnNhdmVfb2Zmc2V0 OworCisgIHJldHVybiAtMTsKK30KKworc3RhdGljIHZvaWQKK3JzNjAwMF9h aXhfc3VwcGx5X3ZycmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdz ZXQsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlZ251bSwgY29uc3Qg dm9pZCAqdnJyZWdzLCBzaXplX3QgbGVuKQoreworICBzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOworICBjb25zdCBzdHJ1 Y3QgcnM2MDAwX2FpeF9yZWdfdnJyZWdfb2Zmc2V0ICAqb2Zmc2V0czsKKyAg c2l6ZV90IG9mZnNldDsKKyAgcHBjX2dkYmFyY2hfdGRlcCAqdGRlcCA9IGdk YmFyY2hfdGRlcDxwcGNfZ2RiYXJjaF90ZGVwPiAoZ2RiYXJjaCk7CisgIGlm ICghKHRkZXAtPnBwY192cjBfcmVnbnVtID49IDAgICYmIHRkZXAtPnBwY192 cnNhdmVfcmVnbnVtID49IDApKQorICAgIHJldHVybjsKKworICBvZmZzZXRz ID0gKGNvbnN0IHN0cnVjdCByczYwMDBfYWl4X3JlZ192cnJlZ19vZmZzZXQg KikgcmVnc2V0LT5yZWdtYXA7CisgIGlmIChyZWdudW0gPT0gLTEpCisgIHsK KyAgICBpbnQgaTsKKworICAgIGZvciAoaSA9IHRkZXAtPnBwY192cjBfcmVn bnVtLCBvZmZzZXQgPSBvZmZzZXRzLT52cjBfb2Zmc2V0OworICAgICAgICAg ICAgICAgICAgICAgICAgIGkgPCB0ZGVwLT5wcGNfdnIwX3JlZ251bSArIHBw Y19udW1fdnJzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGkrKywgb2Zmc2V0ICs9IDE2KQorICAgICAgICBwcGNf c3VwcGx5X3JlZyAocmVnY2FjaGUsIGksIChjb25zdCBnZGJfYnl0ZSAqKSB2 cnJlZ3MsIG9mZnNldCwgMTYpOworCisgICAgcHBjX3N1cHBseV9yZWcgKHJl Z2NhY2hlLCAodGRlcC0+cHBjX3Zyc2F2ZV9yZWdudW0gLSAxKSwKKyAgICAg ICAgKGNvbnN0IGdkYl9ieXRlICopIHZycmVncywgb2Zmc2V0cy0+dnNjcl9v ZmZzZXQsIDQpOworCisgICAgcHBjX3N1cHBseV9yZWcgKHJlZ2NhY2hlLCB0 ZGVwLT5wcGNfdnJzYXZlX3JlZ251bSwKKyAgICAoY29uc3QgZ2RiX2J5dGUg KikgdnJyZWdzLCBvZmZzZXRzLT52cnNhdmVfb2Zmc2V0LCA0KTsKKworICAg IHJldHVybjsKKyAgfQorICBvZmZzZXQgPSByczYwMDBfYWl4X2dldF92cnJl Z19vZmZzZXQgKHRkZXAsIG9mZnNldHMsIHJlZ251bSk7CisgIGlmIChyZWdu dW0gIT0gdGRlcC0+cHBjX3Zyc2F2ZV9yZWdudW0gJiYKKyAgICAgIHJlZ251 bSAhPSB0ZGVwLT5wcGNfdnJzYXZlX3JlZ251bSAtIDEpCisgICAgcHBjX3N1 cHBseV9yZWcgKHJlZ2NhY2hlLCByZWdudW0sIChjb25zdCBnZGJfYnl0ZSAq KSB2cnJlZ3MsIG9mZnNldCwgMTYpOworICBlbHNlCisgICAgcHBjX3N1cHBs eV9yZWcgKHJlZ2NhY2hlLCByZWdudW0sCisgICAgIChjb25zdCBnZGJfYnl0 ZSAqKSB2cnJlZ3MsIG9mZnNldCwgNCk7CisKK30KKworc3RhdGljIHZvaWQK K3JzNjAwMF9haXhfc3VwcGx5X3ZzeHJlZ3NldCAoY29uc3Qgc3RydWN0IHJl Z3NldCAqcmVnc2V0LCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZWdu dW0sIGNvbnN0IHZvaWQgKnZzeHJlZ3MsIHNpemVfdCBsZW4pCit7CisgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gcmVnY2FjaGUtPmFyY2ggKCk7Cisg IHBwY19nZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXA8cHBjX2dk YmFyY2hfdGRlcD4gKGdkYmFyY2gpOworICBpZiAoISh0ZGVwLT5wcGNfdnNy MF9yZWdudW0gPj0gMCkpCisgICAgcmV0dXJuOworCisgIGlmIChyZWdudW0g PT0gLTEpCisgIHsKKyAgICBpbnQgaSwgb2Zmc2V0ID0gMDsKKworICAgIGZv ciAoaSA9IHRkZXAtPnBwY192c3IwX3VwcGVyX3JlZ251bTsgaSA8IHRkZXAt PnBwY192c3IwX3VwcGVyX3JlZ251bSAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMzI7IGkrKywgb2Zm c2V0ICs9IDgpCisgICAgICBwcGNfc3VwcGx5X3JlZyAocmVnY2FjaGUsIGks IChjb25zdCBnZGJfYnl0ZSAqKSB2c3hyZWdzLCBvZmZzZXQsIDgpOworCisg ICAgcmV0dXJuOworICB9CisgIGVsc2UKKyAgICBwcGNfc3VwcGx5X3JlZyAo cmVnY2FjaGUsIHJlZ251bSwgKGNvbnN0IGdkYl9ieXRlICopIHZzeHJlZ3Ms IDAsIDgpOworfQorCitzdGF0aWMgdm9pZAorcnM2MDAwX2FpeF9jb2xsZWN0 X3ZzeHJlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAorICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLAorICAgICAgICAgICAgICAgICAgICBpbnQgcmVnbnVtLCB2 b2lkICp2c3hyZWdzLCBzaXplX3QgbGVuKQoreworICBzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOworICBwcGNfZ2RiYXJj aF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwPHBwY19nZGJhcmNoX3RkZXA+ IChnZGJhcmNoKTsKKyAgaWYgKCEodGRlcC0+cHBjX3ZzcjBfcmVnbnVtID49 IDApKQorICAgIHJldHVybjsKKworICBpZiAocmVnbnVtID09IC0xKQorICB7 CisgICAgaW50IGk7CisgICAgaW50IG9mZnNldCA9IDA7CisgICAgZm9yIChp ID0gdGRlcC0+cHBjX3ZzcjBfdXBwZXJfcmVnbnVtOyBpIDwgdGRlcC0+cHBj X3ZzcjBfdXBwZXJfcmVnbnVtCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsgMzI7IGkrKywgb2Zmc2V0ICs9 IDgpCisgICAgICBwcGNfY29sbGVjdF9yZWcgKHJlZ2NhY2hlLCBpLCAoZ2Ri X2J5dGUgKikgdnN4cmVncywgb2Zmc2V0LCA4KTsKKworICAgIHJldHVybjsK KyAgfQorCisgZWxzZQorICAgIHBwY19jb2xsZWN0X3JlZyAocmVnY2FjaGUs IHJlZ251bSwgKGdkYl9ieXRlICopIHZzeHJlZ3MsIDAsIDgpOworfQorCitz dGF0aWMgdm9pZAorcnM2MDAwX2FpeF9jb2xsZWN0X3ZycmVnc2V0IChjb25z dCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKyAgICAg ICAgICAgICAgICAgICAgaW50IHJlZ251bSwgdm9pZCAqdnJyZWdzLCBzaXpl X3QgbGVuKQoreworICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJlZ2Nh Y2hlLT5hcmNoICgpOworICBjb25zdCBzdHJ1Y3QgcnM2MDAwX2FpeF9yZWdf dnJyZWdfb2Zmc2V0ICpvZmZzZXRzOworICBzaXplX3Qgb2Zmc2V0OworCisg IHBwY19nZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXA8cHBjX2dk YmFyY2hfdGRlcD4gKGdkYmFyY2gpOworICBpZiAoISh0ZGVwLT5wcGNfdnIw X3JlZ251bSA+PSAwICYmIHRkZXAtPnBwY192cnNhdmVfcmVnbnVtID49IDAp KQorICAgIHJldHVybjsKKworICBvZmZzZXRzID0gKGNvbnN0IHN0cnVjdCBy czYwMDBfYWl4X3JlZ192cnJlZ19vZmZzZXQgKikgcmVnc2V0LT5yZWdtYXA7 CisgIGlmIChyZWdudW0gPT0gLTEpCisgIHsKKyAgICBpbnQgaTsKKworICAg IGZvciAoaSA9IHRkZXAtPnBwY192cjBfcmVnbnVtLCBvZmZzZXQgPSBvZmZz ZXRzLT52cjBfb2Zmc2V0OyBpIDwKKyAgICAgICAgICAgICAgdGRlcC0+cHBj X3ZyMF9yZWdudW0gKyBwcGNfbnVtX3ZyczsgaSsrLCBvZmZzZXQgKz0gMTYp CisgICAgICBwcGNfY29sbGVjdF9yZWcgKHJlZ2NhY2hlLCBpLCAoZ2RiX2J5 dGUgKikgdnJyZWdzLCBvZmZzZXQsIDE2KTsKKworICAgIHBwY19jb2xsZWN0 X3JlZyAocmVnY2FjaGUsICh0ZGVwLT5wcGNfdnJzYXZlX3JlZ251bSAtIDEp LAorICAgICAgICAgICAgICAgKGdkYl9ieXRlICopIHZycmVncywgb2Zmc2V0 cy0+dnNjcl9vZmZzZXQsIDQpOworCisgICAgcHBjX2NvbGxlY3RfcmVnIChy ZWdjYWNoZSwgdGRlcC0+cHBjX3Zyc2F2ZV9yZWdudW0sCisgICAgICAgICAg ICAgKGdkYl9ieXRlICopIHZycmVncywgb2Zmc2V0cy0+dnJzYXZlX29mZnNl dCwgNCk7CisKKyAgICByZXR1cm47CisgIH0KKworICBvZmZzZXQgPSByczYw MDBfYWl4X2dldF92cnJlZ19vZmZzZXQgKHRkZXAsIG9mZnNldHMsIHJlZ251 bSk7CisgIGlmIChyZWdudW0gIT0gdGRlcC0+cHBjX3Zyc2F2ZV9yZWdudW0K KyAgICAgICYmIHJlZ251bSAhPSB0ZGVwLT5wcGNfdnJzYXZlX3JlZ251bSAt IDEpCisgICAgcHBjX2NvbGxlY3RfcmVnIChyZWdjYWNoZSwgcmVnbnVtLCAo Z2RiX2J5dGUgKikgdnJyZWdzLCBvZmZzZXQsIDE2KTsKKyAgZWxzZQorICAg IHBwY19jb2xsZWN0X3JlZyAocmVnY2FjaGUsIHJlZ251bSwKKyAgICAgICAg ICAgICAgICAgICAoZ2RiX2J5dGUgKikgdnJyZWdzLCBvZmZzZXQsIDQpOwor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ3NldCByczYwMDBfYWl4X3Zy cmVnc2V0ID0geworICAmcnM2MDAwX2FpeF92cnJlZ19vZmZzZXQsCisgIHJz NjAwMF9haXhfc3VwcGx5X3ZycmVnc2V0LAorICByczYwMDBfYWl4X2NvbGxl Y3RfdnJyZWdzZXQKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnc2V0 IHJzNjAwMF9haXhfdnN4cmVnc2V0ID0geworICAmcnM2MDAwX2FpeF92cnJl Z19vZmZzZXQsCisgIHJzNjAwMF9haXhfc3VwcGx5X3ZzeHJlZ3NldCwKKyAg cnM2MDAwX2FpeF9jb2xsZWN0X3ZzeHJlZ3NldAorfTsKKwogc3RhdGljIHN0 cnVjdCB0cmFkX2ZyYW1lX2NhY2hlICoKIGFpeF9zaWdoYW5kbGVfZnJhbWVf Y2FjaGUgKGZyYW1lX2luZm9fcHRyIHRoaXNfZnJhbWUsCiAJCQkgICB2b2lk ICoqdGhpc19jYWNoZSkKQEAgLTI2MiwxMCArNDM0LDIwIEBAIHJzNjAwMF9h aXhfaXRlcmF0ZV9vdmVyX3JlZ3NldF9zZWN0aW9ucyAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsCiAJCQkJCSBjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlKQogewogICBwcGNfZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJj aF90ZGVwPHBwY19nZGJhcmNoX3RkZXA+IChnZGJhcmNoKTsKKyAgaW50IGhh dmVfYWx0aXZlYyA9IHRkZXAtPnBwY192cjBfcmVnbnVtICE9IC0xOworICBp bnQgaGF2ZV92c3ggPSB0ZGVwLT5wcGNfdnNyMF91cHBlcl9yZWdudW0gIT0g LTE7CisKICAgaWYgKHRkZXAtPndvcmRzaXplID09IDQpCiAgICAgY2IgKCIu cmVnIiwgNTkyLCA1OTIsICZyczYwMDBfYWl4MzJfcmVnc2V0LCBOVUxMLCBj Yl9kYXRhKTsKICAgZWxzZQogICAgIGNiICgiLnJlZyIsIDU3NiwgNTc2LCAm cnM2MDAwX2FpeDY0X3JlZ3NldCwgTlVMTCwgY2JfZGF0YSk7CisKKyAgaWYg KGhhdmVfYWx0aXZlYykKKyAgIGNiICgiLmFpeC12bXgiLCA1NjAsIDU2MCwg JnJzNjAwMF9haXhfdnJyZWdzZXQsICJBSVggYWx0aXZlYyIsIGNiX2RhdGEp OworCisgIGlmIChoYXZlX3ZzeCkKKyAgIGNiICgiLmFpeC12c3giLCAyNTYs IDI1NiwgJnJzNjAwMF9haXhfdnN4cmVnc2V0LCAiQUlYIHZzeCIsIGNiX2Rh dGEpOworCiB9CiAKIAotLSAKMi4zOC4zCgo= --_004_CH2PR15MB3544D484ACE103AAC5299A1ED6B69CH2PR15MB3544namp_--