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 X-Spam-Level: X-Spam-Status: No, score=-17.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 779A8C48BC2 for ; Wed, 23 Jun 2021 12:59:12 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 3F04261075 for ; Wed, 23 Jun 2021 12:59:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3F04261075 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8D7BA6E8D4; Wed, 23 Jun 2021 12:59:11 +0000 (UTC) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2046.outbound.protection.outlook.com [40.107.92.46]) by gabe.freedesktop.org (Postfix) with ESMTPS id 719FB6E0E9; Wed, 23 Jun 2021 12:59:10 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V7BRFHWn1jOioeEniE1oQJ+Bn3lsIowkqS7dBAeBYsbZnQ5TZEeDsaHotAj15Y2e3uLWcbaPg5TjiQsebBuE2G9OOC7KylSql/BD4XSVNY7mjeFNnC2P5BPyd/dD71h116JOK1Z6Gbs6OuySVCapJL7Q0/tWEgS+gvw5CZaDial2WzOJwq/1BYH6DlY0HLvYYMs9HxeHUtxAY7KoRedXUTCoxknj3Bek0iCw5SxVNmlOgFZoi8v7xJWnsW9ZdSQ2p1FHEpPA+gy44/bzECThPty+MrpRL12/0PDc0BXulazYjPn35qF6fylu6HLBfy261TwuN9D6r7gFK/h1pZqw9A== 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-SenderADCheck; bh=0poL/xck/F+X6ASXMufxMmar/+nD5KtqcU6yt4hGGOY=; b=fjbp07Z6otmkDps0XSGfy/73X8s+PZcnfzr6bzeFZMGgyD2VImymEEWjPWSqNl1rQ8xwwdbKSExaaRyXGEy14erheMBG+Pasux4dZ+E2FFyFj7mJBbrSB6cyTb6beMsdyEgz6BM7dahJclFUvPd07iqyCeWtdZPvnCD7qvWBUsjY7qLLKZQT0f5oPEaR3ZzsKUH4BpyzJGP+Yp1efb634h9R8soPGuMAgBHs4eki9Yti8cWDiiayuK4098GGIWR3Bau7NZWTMTzuD01y+7TR8BYs112Mlr3R4Y4NFVeWtiM6b6CX4x4g3ihVqKAMhMNXd+sjKzQsivp/hEu8SxuY8A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0poL/xck/F+X6ASXMufxMmar/+nD5KtqcU6yt4hGGOY=; b=rFb8kEa8NgwbKSevBcfA8DNOXvDkqzU1NMorkKNVhFv260t3ginFax3+lhBR5tEds9fQ+o3YYbL2wjrrs/ngsTH8xnJ1CQZJhpJXvIhDqQLqFD6onSR//6HeW73dFd6iXj6+e3NVYQRRBjyxIkuj0JcCsVYIkLkYadtDrZnEI9o= Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=amd.com; Received: from MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) by BL0PR12MB4961.namprd12.prod.outlook.com (2603:10b6:208:1c9::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18; Wed, 23 Jun 2021 12:59:08 +0000 Received: from MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::6c9e:1e08:7617:f756]) by MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::6c9e:1e08:7617:f756%5]) with mapi id 15.20.4242.024; Wed, 23 Jun 2021 12:59:08 +0000 Subject: Re: [PATCH 15/15] RFC: drm/amdgpu: Implement a proper implicit fencing uapi To: Daniel Vetter , Bas Nieuwenhuizen References: <20210622165511.3169559-1-daniel.vetter@ffwll.ch> <20210622165511.3169559-16-daniel.vetter@ffwll.ch> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <3bf45006-4256-763d-601b-3a25a7057820@amd.com> Date: Wed, 23 Jun 2021 14:59:02 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-Originating-IP: [2a02:908:1252:fb60:871f:87e2:f394:e667] X-ClientProxiedBy: PR3P189CA0050.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:53::25) To MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2a02:908:1252:fb60:871f:87e2:f394:e667] (2a02:908:1252:fb60:871f:87e2:f394:e667) by PR3P189CA0050.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:53::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18 via Frontend Transport; Wed, 23 Jun 2021 12:59:05 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5d828fe0-edc1-4ea0-0775-08d93646b01b X-MS-TrafficTypeDiagnostic: BL0PR12MB4961: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EOg6G0Rmymmk2PuyDbe0mP7P4sjc7tMrLAc6CTvGZHGz1aRCQjFO9L4VRypUas8huTi4IpqKEkCUo2FNrEWDOaWJbL1G9I7OE9XebY1j0EbIlcxV1kiU0Qf0xJ6S62BgtM3hTtJCLZwVSudLSY4gFGXlHM0Ori2oiU1qeFuC09SZQiOt/ueIDXm+oxuZz2k6nUDaSBWPLjTCKURxNRy6gF3Z6dGp5iWhnD3vK/EvPNQu54lqszpFyPUpk3UBVpV751rnjvTPfJ/3HsVKLRyul1Yn+WfyEXMWxqdydKLis55L2Wxoa0s++rcaijDgFOdDlA80X3a7HTpZAxtxe4tWM7IOLgWZITM+tgwrP0YaT/JNHNtQRNKJOhQzOLd6z1a4wyJ4Zix0hRRaYiFkp2C2dCnH50rlpczpBGahMAifRfkMTnMwss9TuxcR/f8cQ9V67x9awFeToLOv4xBOHBwi/w01zvTU7S+FGNnO151JuSKWlzbE3PZgqPZYzzO01Z5xOXsstYlFRcafSXi12iIDtXY/+V6WVsq9RslKGHBBXluX5l0gXWoDe2uJrhuR6gFWc6u4+X23dIYpt52Y6IMEH+dfgQFKlGJihHFIVVnOhUfO2qSVdUPRi0QgPiHKuDeM4gJDfN5tlKDpGblWxhCGE1WmQr+sroTH8WxvQS+I1sjCTxOULQLehRFnrS6YbjP0u45Blb095mADVRuNyONryzazTri7eoTUYTB07TL98oY05QlGyApyMcKnL/5YO41VFdE9KNxI3rJFCeuwy8I3hSF9pgKoGhI9UDS3X7bxLj4m456j+p2uBxU1UfTutwdhlC/JumVi/6DLZt4xRmiDyi8v7crE1Fx6QVp3FYKk3t4= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR12MB3775.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(39860400002)(366004)(346002)(376002)(396003)(5660300002)(8936002)(8676002)(66946007)(66556008)(66476007)(966005)(83380400001)(66574015)(30864003)(31696002)(110136005)(36756003)(86362001)(478600001)(45080400002)(6486002)(7416002)(2616005)(31686004)(54906003)(53546011)(16526019)(186003)(316002)(6666004)(4326008)(2906002)(38100700002)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aDhhakZoMDF2d0hqWGV5K0t2YzM3Qm93U3BjTk5IRTF0Vmp5YitYdVUyUkkx?= =?utf-8?B?T0ZNYjVHMzhZTTNyeGUyRXU5SXhmb081aUxKTG9QdUI4K1hMT1F1NmZUU2Z2?= =?utf-8?B?ellhM3oyWlZaeTA3aGxvS0pWZldzcE0xYVB1TnhibTVEdVNVQS8wQWEyQWdn?= =?utf-8?B?VnAzNGhlb01CS0Q4SW5yMWx2am9Da29BN01raWtXQWhrR3dDakR6aDBjMlVV?= =?utf-8?B?Ykw4Rkk0YUZuTTZ1OVM5eGlIRkxicHRVWVFtNlQ5ZjFtckxFZng1NXNMdnNP?= =?utf-8?B?ZWh5anRXQXp5QjFZVXFwS01telJYMnN0ajdlQjVWdm5ZWW5LSUcvbHlPS09u?= =?utf-8?B?SFZKekVvdmtZcU9wVXkzaHZNaEdKQmgrM0V4cmFRc3VSdSs2SU83SlJNOGly?= =?utf-8?B?R0tYNS9td3JZK2R1VUpySWhwVXd5U2J4NzZEQUREeUx3VFFaN2x3TmJ5NFdQ?= =?utf-8?B?TDJNaVlBd1FVR29Ka1ZqSytWbkM3akZtZVpNVjhzcStML21jbWREL2cyc0ox?= =?utf-8?B?VUwyZ0hRaSs4ZE04eUUxWkltMWRhMUtRVmEwYThKWkxCaVJobFlVL2tnSkkx?= =?utf-8?B?elE5T0FhNExXdkNtSzdkS3o0d0V3eFF5TVlNQjBkMTE5NUl5ZnQ1VDFqRHJ3?= =?utf-8?B?QnRlQUZNeGpWR0tiZ01ZYTlPYkJuczVONUpNMXp0dG9zaG9vRVMyR2dGS1RR?= =?utf-8?B?d0NQY0Nod3dBbG1HVG5STyt0QVJwMUNYV1RBUGJWZnpObHFtUWZBRWdLa2Zv?= =?utf-8?B?Q1RpVTJOcFo3OHZpZ0lNVE9BS3ZPenJKaUZBcXJzUllicVRsL292QlFPdEVQ?= =?utf-8?B?TSt4MllTdWNDR1laUzNMTGpIUWtyRVVQdERVM0VMSmFxeFQ2VzZxcWY1NVQ0?= =?utf-8?B?MlpkbjlDU1J0NHZKYU1QcWtxaFBETnpvSHBWV3UyeUcxNU83SWNUU2QxWGVh?= =?utf-8?B?Z0RpM1pVcFc3N3ExakdqTmVuem9IS2VKaGJCbzl1NzJFbFp4cHZ3czRaNHRk?= =?utf-8?B?QVBOMUpJeXpWZys3SmZJd080TG9QSUNUY3g1anFNeUVUSmVJWDhIQS82ZlBN?= =?utf-8?B?RTFDbjlWcGJJZS9wYmNDSkhIa1pwNVZmR0tyMVdzUmtRZC8vVHV5aVNyQkVI?= =?utf-8?B?ZEVncXB5S0dzNitDRTZLdUJobGRWVVJwVWYzVXQvTG9CelN5MERNY0N2RGV0?= =?utf-8?B?S1RvWGsvNFJyWVFvR0llYnRyZUJMTXE5VmZBbVl0dUJIR2J0Mkg3UmRGdzB0?= =?utf-8?B?MHRRQ1p5VW91UkpYNURVOE5tNEorN3poR2Nhd1d5V3J6NjFoRjZ2TldOQ3NW?= =?utf-8?B?bmxTMzdzWG5KeDVvTTNjYjRkUjFXcFpsTVEwUGZuRTV0a3hNYVRtaXZmclNv?= =?utf-8?B?N3VFTExBK3c5bzhiVWIveTRlQ0dCZkZnZFFiNXNSczF6aTJjUEh0aXNkVjZD?= =?utf-8?B?d0o1YWJmOXVLQ0lQek1ERHE0S21vMDhLMERFOElzSVhyS0xKMmhUbC9KSVB1?= =?utf-8?B?UDZYZ3ZRYUlEeVpvbGs4Mmh3Mm56NmhNMmhOdzR5YU15N25yM2ZWc29ZZTFW?= =?utf-8?B?M0l5dDEvOGFoeHFtTWJJenpIVHVqMUdrejA4K3ovQjBDREplSFYxS1Bydlhv?= =?utf-8?B?NG9FQ2JGVzBwMGVRTWFLcXVwZjFzTHNacWI3RVJVY2QxR2ZVbmlnY0VaRWZh?= =?utf-8?B?emhVdVRvT04zUTNyV01aREFpTDNEb1h1Rk5rNDVFR1lnclhHUTFXNTVyWW1S?= =?utf-8?B?U2UzNDFYVm03bzRzWk03WjZrSVBsYmY3WEJUekNYOSs2dFVLeFZvOGg4RmpC?= =?utf-8?B?TlBYRktwTllJZG5IcWdLRVp4UG9pS0dtNkdURDlKc3lpUkVLUVZwZHJxbkcr?= =?utf-8?Q?GghELAqFnnDsE?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5d828fe0-edc1-4ea0-0775-08d93646b01b X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3775.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2021 12:59:08.1886 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ORbxC8mc2TGoQ9KzoUAFLrB4PcIdJJj/RsVMHl3FSpWzoIpmVJ67edN2bf6JjnRn X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB4961 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: Rob Clark , Daniel Stone , Intel Graphics Development , Kevin Wang , DRI Development , "moderated list:DMA BUFFER SHARING FRAMEWORK" , Luben Tuikov , "Kristian H . Kristensen" , Chen Li , Daniel Vetter , Alex Deucher , mesa-dev , =?UTF-8?Q?Michel_D=c3=a4nzer?= , Dennis Li , Deepak R Varma Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Am 23.06.21 um 14:18 schrieb Daniel Vetter: > On Wed, Jun 23, 2021 at 11:45 AM Bas Nieuwenhuizen > wrote: >> On Tue, Jun 22, 2021 at 6:55 PM Daniel Vetter wrote: >>> WARNING: Absolutely untested beyond "gcc isn't dying in agony". >>> >>> Implicit fencing done properly needs to treat the implicit fencing >>> slots like a funny kind of IPC mailbox. In other words it needs to be >>> explicitly. This is the only way it will mesh well with explicit >>> fencing userspace like vk, and it's also the bare minimum required to >>> be able to manage anything else that wants to use the same buffer on >>> multiple engines in parallel, and still be able to share it through >>> implicit sync. >>> >>> amdgpu completely lacks such an uapi. Fix this. >>> >>> Luckily the concept of ignoring implicit fences exists already, and >>> takes care of all the complexities of making sure that non-optional >>> fences (like bo moves) are not ignored. This support was added in >>> >>> commit 177ae09b5d699a5ebd1cafcee78889db968abf54 >>> Author: Andres Rodriguez >>> Date: Fri Sep 15 20:44:06 2017 -0400 >>> >>> drm/amdgpu: introduce AMDGPU_GEM_CREATE_EXPLICIT_SYNC v2 >>> >>> Unfortuantely it's the wrong semantics, because it's a bo flag and >>> disables implicit sync on an allocated buffer completely. >>> >>> We _do_ want implicit sync, but control it explicitly. For this we >>> need a flag on the drm_file, so that a given userspace (like vulkan) >>> can manage the implicit sync slots explicitly. The other side of the >>> pipeline (compositor, other process or just different stage in a media >>> pipeline in the same process) can then either do the same, or fully >>> participate in the implicit sync as implemented by the kernel by >>> default. >>> >>> By building on the existing flag for buffers we avoid any issues with >>> opening up additional security concerns - anything this new flag here >>> allows is already. >>> >>> All drivers which supports this concept of a userspace-specific >>> opt-out of implicit sync have a flag in their CS ioctl, but in reality >>> that turned out to be a bit too inflexible. See the discussion below, >>> let's try to do a bit better for amdgpu. >>> >>> This alone only allows us to completely avoid any stalls due to >>> implicit sync, it does not yet allow us to use implicit sync as a >>> strange form of IPC for sync_file. >>> >>> For that we need two more pieces: >>> >>> - a way to get the current implicit sync fences out of a buffer. Could >>> be done in a driver ioctl, but everyone needs this, and generally a >>> dma-buf is involved anyway to establish the sharing. So an ioctl on >>> the dma-buf makes a ton more sense: >>> >>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fdri-devel%2F20210520190007.534046-4-jason%40jlekstrand.net%2F&data=04%7C01%7Cchristian.koenig%40amd.com%7Cf026055f523d4e4df95b08d936410e39%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637600475351085536%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=gUnM8%2Fulx%2B%2BDLxByO%2F0V3cLqt%2Fc2unWjizEpptQqM8g%3D&reserved=0 >>> >>> Current drivers in upstream solves this by having the opt-out flag >>> on their CS ioctl. This has the downside that very often the CS >>> which must actually stall for the implicit fence is run a while >>> after the implicit fence point was logically sampled per the api >>> spec (vk passes an explicit syncobj around for that afaiui), and so >>> results in oversync. Converting the implicit sync fences into a >>> snap-shot sync_file is actually accurate. >>> >>> - Simillar we need to be able to set the exclusive implicit fence. >>> Current drivers again do this with a CS ioctl flag, with again the >>> same problems that the time the CS happens additional dependencies >>> have been added. An explicit ioctl to only insert a sync_file (while >>> respecting the rules for how exclusive and shared fence slots must >>> be update in struct dma_resv) is much better. This is proposed here: >>> >>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fdri-devel%2F20210520190007.534046-5-jason%40jlekstrand.net%2F&data=04%7C01%7Cchristian.koenig%40amd.com%7Cf026055f523d4e4df95b08d936410e39%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637600475351085536%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=wFGNyeL1YSpkebf1L1DDb2euihf1fvmR9G8cfywrpVU%3D&reserved=0 >>> >>> These three pieces together allow userspace to fully control implicit >>> fencing and remove all unecessary stall points due to them. >>> >>> Well, as much as the implicit fencing model fundamentally allows: >>> There is only one set of fences, you can only choose to sync against >>> only writers (exclusive slot), or everyone. Hence suballocating >>> multiple buffers or anything else like this is fundamentally not >>> possible, and can only be fixed by a proper explicit fencing model. >>> >>> Aside from that caveat this model gets implicit fencing as closely to >>> explicit fencing semantics as possible: >>> >>> On the actual implementation I opted for a simple setparam ioctl, no >>> locking (just atomic reads/writes) for simplicity. There is a nice >>> flag parameter in the VM ioctl which we could use, except: >>> - it's not checked, so userspace likely passes garbage >>> - there's already a comment that userspace _does_ pass garbage in the >>> priority field >>> So yeah unfortunately this flag parameter for setting vm flags is >>> useless, and we need to hack up a new one. >>> >>> v2: Explain why a new SETPARAM (Jason) >>> >>> v3: Bas noticed I forgot to hook up the dependency-side shortcut. We >>> need both, or this doesn't do much. >>> >>> v4: Rebase over the amdgpu patch to always set the implicit sync >>> fences. >> So I think there is still a case missing in this implementation. >> Consider these 3 cases >> >> (format: a->b: b waits on a. Yes, I know arrows are hard) >> >> explicit->explicit: This doesn't wait now, which is good >> Implicit->explicit: This doesn't wait now, which is good >> explicit->implicit : This still waits as the explicit submission still >> adds shared fences and most things that set an exclusive fence for >> implicit sync will hence wait on it. >> >> This is probably good enough for what radv needs now but also sounds >> like a risk wrt baking in new uapi behavior that we don't want to be >> the end result. >> >> Within AMDGPU this is probably solvable in two ways: >> >> 1) Downgrade AMDGPU_SYNC_NE_OWNER to AMDGPU_SYNC_EXPLICIT for shared fences. > I'm not sure that works. I think the right fix is that radeonsi also > switches to this model, with maybe a per-bo CS flag to set indicate > write access, to cut down on the number of ioctls that are needed > otherwise on shared buffers. This per-bo flag would essentially select > between SYNC_NE_OWNER and SYNC_EXPLICIT on a per-buffer basis. Yeah, but I'm still not entirely sure why that approach isn't sufficient? Problem with the per context or per vm flag is that you then don't get any implicit synchronization any more when another process starts using the buffer. > The current amdgpu uapi just doesn't allow any other model without an > explicit opt-in. So current implicit sync userspace just has to > oversync, there's not much choice. > >> 2) Have an EXPLICIT fence owner that is used for explicit submissions >> that is ignored by AMDGPU_SYNC_NE_OWNER. >> >> But this doesn't solve cross-driver interactions here. > Yeah cross-driver is still entirely unsolved, because > amdgpu_bo_explicit_sync() on the bo didn't solve that either. Hui? You have lost me. Why is that still unsolved? Regards, Christian. > -Daniel > >>> Cc: mesa-dev@lists.freedesktop.org >>> Cc: Bas Nieuwenhuizen >>> Cc: Dave Airlie >>> Cc: Rob Clark >>> Cc: Kristian H. Kristensen >>> Cc: Michel Dänzer >>> Cc: Daniel Stone >>> Cc: Sumit Semwal >>> Cc: "Christian König" >>> Cc: Alex Deucher >>> Cc: Daniel Vetter >>> Cc: Deepak R Varma >>> Cc: Chen Li >>> Cc: Kevin Wang >>> Cc: Dennis Li >>> Cc: Luben Tuikov >>> Cc: linaro-mm-sig@lists.linaro.org >>> Signed-off-by: Daniel Vetter >>> --- >>> drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 7 +++++-- >>> drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 21 +++++++++++++++++++++ >>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 6 ++++++ >>> include/uapi/drm/amdgpu_drm.h | 10 ++++++++++ >>> 4 files changed, 42 insertions(+), 2 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c >>> index 65df34c17264..c5386d13eb4a 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c >>> @@ -498,6 +498,7 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p, >>> struct amdgpu_bo *gds; >>> struct amdgpu_bo *gws; >>> struct amdgpu_bo *oa; >>> + bool no_implicit_sync = READ_ONCE(fpriv->vm.no_implicit_sync); >>> int r; >>> >>> INIT_LIST_HEAD(&p->validated); >>> @@ -577,7 +578,8 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p, >>> >>> e->bo_va = amdgpu_vm_bo_find(vm, bo); >>> >>> - if (bo->tbo.base.dma_buf && !amdgpu_bo_explicit_sync(bo)) { >>> + if (bo->tbo.base.dma_buf && >>> + !(no_implicit_sync || amdgpu_bo_explicit_sync(bo))) { >>> e->chain = dma_fence_chain_alloc(); >>> if (!e->chain) { >>> r = -ENOMEM; >>> @@ -649,6 +651,7 @@ static int amdgpu_cs_sync_rings(struct amdgpu_cs_parser *p) >>> { >>> struct amdgpu_fpriv *fpriv = p->filp->driver_priv; >>> struct amdgpu_bo_list_entry *e; >>> + bool no_implicit_sync = READ_ONCE(fpriv->vm.no_implicit_sync); >>> int r; >>> >>> list_for_each_entry(e, &p->validated, tv.head) { >>> @@ -656,7 +659,7 @@ static int amdgpu_cs_sync_rings(struct amdgpu_cs_parser *p) >>> struct dma_resv *resv = bo->tbo.base.resv; >>> enum amdgpu_sync_mode sync_mode; >>> >>> - sync_mode = amdgpu_bo_explicit_sync(bo) ? >>> + sync_mode = no_implicit_sync || amdgpu_bo_explicit_sync(bo) ? >>> AMDGPU_SYNC_EXPLICIT : AMDGPU_SYNC_NE_OWNER; >>> r = amdgpu_sync_resv(p->adev, &p->job->sync, resv, sync_mode, >>> &fpriv->vm); >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c >>> index c080ba15ae77..f982626b5328 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c >>> @@ -1724,6 +1724,26 @@ int amdgpu_file_to_fpriv(struct file *filp, struct amdgpu_fpriv **fpriv) >>> return 0; >>> } >>> >>> +int amdgpu_setparam_ioctl(struct drm_device *dev, void *data, >>> + struct drm_file *filp) >>> +{ >>> + struct drm_amdgpu_setparam *setparam = data; >>> + struct amdgpu_fpriv *fpriv = filp->driver_priv; >>> + >>> + switch (setparam->param) { >>> + case AMDGPU_SETPARAM_NO_IMPLICIT_SYNC: >>> + if (setparam->value) >>> + WRITE_ONCE(fpriv->vm.no_implicit_sync, true); >>> + else >>> + WRITE_ONCE(fpriv->vm.no_implicit_sync, false); >>> + break; >>> + default: >>> + return -EINVAL; >>> + } >>> + >>> + return 0; >>> +} >>> + >>> const struct drm_ioctl_desc amdgpu_ioctls_kms[] = { >>> DRM_IOCTL_DEF_DRV(AMDGPU_GEM_CREATE, amdgpu_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), >>> DRM_IOCTL_DEF_DRV(AMDGPU_CTX, amdgpu_ctx_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), >>> @@ -1742,6 +1762,7 @@ const struct drm_ioctl_desc amdgpu_ioctls_kms[] = { >>> DRM_IOCTL_DEF_DRV(AMDGPU_GEM_VA, amdgpu_gem_va_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), >>> DRM_IOCTL_DEF_DRV(AMDGPU_GEM_OP, amdgpu_gem_op_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), >>> DRM_IOCTL_DEF_DRV(AMDGPU_GEM_USERPTR, amdgpu_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), >>> + DRM_IOCTL_DEF_DRV(AMDGPU_SETPARAM, amdgpu_setparam_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), >>> }; >>> >>> static const struct drm_driver amdgpu_kms_driver = { >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h >>> index ddb85a85cbba..0e8c440c6303 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h >>> @@ -321,6 +321,12 @@ struct amdgpu_vm { >>> bool bulk_moveable; >>> /* Flag to indicate if VM is used for compute */ >>> bool is_compute_context; >>> + /* >>> + * Flag to indicate whether implicit sync should always be skipped on >>> + * this context. We do not care about races at all, userspace is allowed >>> + * to shoot itself with implicit sync to its fullest liking. >>> + */ >>> + bool no_implicit_sync; >>> }; >>> >>> struct amdgpu_vm_manager { >>> diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h >>> index 0cbd1540aeac..9eae245c14d6 100644 >>> --- a/include/uapi/drm/amdgpu_drm.h >>> +++ b/include/uapi/drm/amdgpu_drm.h >>> @@ -54,6 +54,7 @@ extern "C" { >>> #define DRM_AMDGPU_VM 0x13 >>> #define DRM_AMDGPU_FENCE_TO_HANDLE 0x14 >>> #define DRM_AMDGPU_SCHED 0x15 >>> +#define DRM_AMDGPU_SETPARAM 0x16 >>> >>> #define DRM_IOCTL_AMDGPU_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_CREATE, union drm_amdgpu_gem_create) >>> #define DRM_IOCTL_AMDGPU_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_MMAP, union drm_amdgpu_gem_mmap) >>> @@ -71,6 +72,7 @@ extern "C" { >>> #define DRM_IOCTL_AMDGPU_VM DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_VM, union drm_amdgpu_vm) >>> #define DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_FENCE_TO_HANDLE, union drm_amdgpu_fence_to_handle) >>> #define DRM_IOCTL_AMDGPU_SCHED DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_SCHED, union drm_amdgpu_sched) >>> +#define DRM_IOCTL_AMDGPU_SETPARAM DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_SETPARAM, struct drm_amdgpu_setparam) >>> >>> /** >>> * DOC: memory domains >>> @@ -306,6 +308,14 @@ union drm_amdgpu_sched { >>> struct drm_amdgpu_sched_in in; >>> }; >>> >>> +#define AMDGPU_SETPARAM_NO_IMPLICIT_SYNC 1 >>> + >>> +struct drm_amdgpu_setparam { >>> + /* AMDGPU_SETPARAM_* */ >>> + __u32 param; >>> + __u32 value; >>> +}; >>> + >>> /* >>> * This is not a reliable API and you should expect it to fail for any >>> * number of reasons and have fallback path that do not use userptr to >>> -- >>> 2.32.0.rc2 >>> > > 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 X-Spam-Level: X-Spam-Status: No, score=-15.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A73C9C4743C for ; Wed, 23 Jun 2021 12:59:11 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 7517E60698 for ; Wed, 23 Jun 2021 12:59:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7517E60698 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 323386E0E9; Wed, 23 Jun 2021 12:59:11 +0000 (UTC) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2046.outbound.protection.outlook.com [40.107.92.46]) by gabe.freedesktop.org (Postfix) with ESMTPS id 719FB6E0E9; Wed, 23 Jun 2021 12:59:10 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V7BRFHWn1jOioeEniE1oQJ+Bn3lsIowkqS7dBAeBYsbZnQ5TZEeDsaHotAj15Y2e3uLWcbaPg5TjiQsebBuE2G9OOC7KylSql/BD4XSVNY7mjeFNnC2P5BPyd/dD71h116JOK1Z6Gbs6OuySVCapJL7Q0/tWEgS+gvw5CZaDial2WzOJwq/1BYH6DlY0HLvYYMs9HxeHUtxAY7KoRedXUTCoxknj3Bek0iCw5SxVNmlOgFZoi8v7xJWnsW9ZdSQ2p1FHEpPA+gy44/bzECThPty+MrpRL12/0PDc0BXulazYjPn35qF6fylu6HLBfy261TwuN9D6r7gFK/h1pZqw9A== 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-SenderADCheck; bh=0poL/xck/F+X6ASXMufxMmar/+nD5KtqcU6yt4hGGOY=; b=fjbp07Z6otmkDps0XSGfy/73X8s+PZcnfzr6bzeFZMGgyD2VImymEEWjPWSqNl1rQ8xwwdbKSExaaRyXGEy14erheMBG+Pasux4dZ+E2FFyFj7mJBbrSB6cyTb6beMsdyEgz6BM7dahJclFUvPd07iqyCeWtdZPvnCD7qvWBUsjY7qLLKZQT0f5oPEaR3ZzsKUH4BpyzJGP+Yp1efb634h9R8soPGuMAgBHs4eki9Yti8cWDiiayuK4098GGIWR3Bau7NZWTMTzuD01y+7TR8BYs112Mlr3R4Y4NFVeWtiM6b6CX4x4g3ihVqKAMhMNXd+sjKzQsivp/hEu8SxuY8A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0poL/xck/F+X6ASXMufxMmar/+nD5KtqcU6yt4hGGOY=; b=rFb8kEa8NgwbKSevBcfA8DNOXvDkqzU1NMorkKNVhFv260t3ginFax3+lhBR5tEds9fQ+o3YYbL2wjrrs/ngsTH8xnJ1CQZJhpJXvIhDqQLqFD6onSR//6HeW73dFd6iXj6+e3NVYQRRBjyxIkuj0JcCsVYIkLkYadtDrZnEI9o= Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=amd.com; Received: from MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) by BL0PR12MB4961.namprd12.prod.outlook.com (2603:10b6:208:1c9::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18; Wed, 23 Jun 2021 12:59:08 +0000 Received: from MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::6c9e:1e08:7617:f756]) by MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::6c9e:1e08:7617:f756%5]) with mapi id 15.20.4242.024; Wed, 23 Jun 2021 12:59:08 +0000 To: Daniel Vetter , Bas Nieuwenhuizen References: <20210622165511.3169559-1-daniel.vetter@ffwll.ch> <20210622165511.3169559-16-daniel.vetter@ffwll.ch> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <3bf45006-4256-763d-601b-3a25a7057820@amd.com> Date: Wed, 23 Jun 2021 14:59:02 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 In-Reply-To: Content-Language: en-US X-Originating-IP: [2a02:908:1252:fb60:871f:87e2:f394:e667] X-ClientProxiedBy: PR3P189CA0050.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:53::25) To MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2a02:908:1252:fb60:871f:87e2:f394:e667] (2a02:908:1252:fb60:871f:87e2:f394:e667) by PR3P189CA0050.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:53::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18 via Frontend Transport; Wed, 23 Jun 2021 12:59:05 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5d828fe0-edc1-4ea0-0775-08d93646b01b X-MS-TrafficTypeDiagnostic: BL0PR12MB4961: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EOg6G0Rmymmk2PuyDbe0mP7P4sjc7tMrLAc6CTvGZHGz1aRCQjFO9L4VRypUas8huTi4IpqKEkCUo2FNrEWDOaWJbL1G9I7OE9XebY1j0EbIlcxV1kiU0Qf0xJ6S62BgtM3hTtJCLZwVSudLSY4gFGXlHM0Ori2oiU1qeFuC09SZQiOt/ueIDXm+oxuZz2k6nUDaSBWPLjTCKURxNRy6gF3Z6dGp5iWhnD3vK/EvPNQu54lqszpFyPUpk3UBVpV751rnjvTPfJ/3HsVKLRyul1Yn+WfyEXMWxqdydKLis55L2Wxoa0s++rcaijDgFOdDlA80X3a7HTpZAxtxe4tWM7IOLgWZITM+tgwrP0YaT/JNHNtQRNKJOhQzOLd6z1a4wyJ4Zix0hRRaYiFkp2C2dCnH50rlpczpBGahMAifRfkMTnMwss9TuxcR/f8cQ9V67x9awFeToLOv4xBOHBwi/w01zvTU7S+FGNnO151JuSKWlzbE3PZgqPZYzzO01Z5xOXsstYlFRcafSXi12iIDtXY/+V6WVsq9RslKGHBBXluX5l0gXWoDe2uJrhuR6gFWc6u4+X23dIYpt52Y6IMEH+dfgQFKlGJihHFIVVnOhUfO2qSVdUPRi0QgPiHKuDeM4gJDfN5tlKDpGblWxhCGE1WmQr+sroTH8WxvQS+I1sjCTxOULQLehRFnrS6YbjP0u45Blb095mADVRuNyONryzazTri7eoTUYTB07TL98oY05QlGyApyMcKnL/5YO41VFdE9KNxI3rJFCeuwy8I3hSF9pgKoGhI9UDS3X7bxLj4m456j+p2uBxU1UfTutwdhlC/JumVi/6DLZt4xRmiDyi8v7crE1Fx6QVp3FYKk3t4= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR12MB3775.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(39860400002)(366004)(346002)(376002)(396003)(5660300002)(8936002)(8676002)(66946007)(66556008)(66476007)(966005)(83380400001)(66574015)(30864003)(31696002)(110136005)(36756003)(86362001)(478600001)(45080400002)(6486002)(7416002)(2616005)(31686004)(54906003)(53546011)(16526019)(186003)(316002)(6666004)(4326008)(2906002)(38100700002)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aDhhakZoMDF2d0hqWGV5K0t2YzM3Qm93U3BjTk5IRTF0Vmp5YitYdVUyUkkx?= =?utf-8?B?T0ZNYjVHMzhZTTNyeGUyRXU5SXhmb081aUxKTG9QdUI4K1hMT1F1NmZUU2Z2?= =?utf-8?B?ellhM3oyWlZaeTA3aGxvS0pWZldzcE0xYVB1TnhibTVEdVNVQS8wQWEyQWdn?= =?utf-8?B?VnAzNGhlb01CS0Q4SW5yMWx2am9Da29BN01raWtXQWhrR3dDakR6aDBjMlVV?= =?utf-8?B?Ykw4Rkk0YUZuTTZ1OVM5eGlIRkxicHRVWVFtNlQ5ZjFtckxFZng1NXNMdnNP?= =?utf-8?B?ZWh5anRXQXp5QjFZVXFwS01telJYMnN0ajdlQjVWdm5ZWW5LSUcvbHlPS09u?= =?utf-8?B?SFZKekVvdmtZcU9wVXkzaHZNaEdKQmgrM0V4cmFRc3VSdSs2SU83SlJNOGly?= =?utf-8?B?R0tYNS9td3JZK2R1VUpySWhwVXd5U2J4NzZEQUREeUx3VFFaN2x3TmJ5NFdQ?= =?utf-8?B?TDJNaVlBd1FVR29Ka1ZqSytWbkM3akZtZVpNVjhzcStML21jbWREL2cyc0ox?= =?utf-8?B?VUwyZ0hRaSs4ZE04eUUxWkltMWRhMUtRVmEwYThKWkxCaVJobFlVL2tnSkkx?= =?utf-8?B?elE5T0FhNExXdkNtSzdkS3o0d0V3eFF5TVlNQjBkMTE5NUl5ZnQ1VDFqRHJ3?= =?utf-8?B?QnRlQUZNeGpWR0tiZ01ZYTlPYkJuczVONUpNMXp0dG9zaG9vRVMyR2dGS1RR?= =?utf-8?B?d0NQY0Nod3dBbG1HVG5STyt0QVJwMUNYV1RBUGJWZnpObHFtUWZBRWdLa2Zv?= =?utf-8?B?Q1RpVTJOcFo3OHZpZ0lNVE9BS3ZPenJKaUZBcXJzUllicVRsL292QlFPdEVQ?= =?utf-8?B?TSt4MllTdWNDR1laUzNMTGpIUWtyRVVQdERVM0VMSmFxeFQ2VzZxcWY1NVQ0?= =?utf-8?B?MlpkbjlDU1J0NHZKYU1QcWtxaFBETnpvSHBWV3UyeUcxNU83SWNUU2QxWGVh?= =?utf-8?B?Z0RpM1pVcFc3N3ExakdqTmVuem9IS2VKaGJCbzl1NzJFbFp4cHZ3czRaNHRk?= =?utf-8?B?QVBOMUpJeXpWZys3SmZJd080TG9QSUNUY3g1anFNeUVUSmVJWDhIQS82ZlBN?= =?utf-8?B?RTFDbjlWcGJJZS9wYmNDSkhIa1pwNVZmR0tyMVdzUmtRZC8vVHV5aVNyQkVI?= =?utf-8?B?ZEVncXB5S0dzNitDRTZLdUJobGRWVVJwVWYzVXQvTG9CelN5MERNY0N2RGV0?= =?utf-8?B?S1RvWGsvNFJyWVFvR0llYnRyZUJMTXE5VmZBbVl0dUJIR2J0Mkg3UmRGdzB0?= =?utf-8?B?MHRRQ1p5VW91UkpYNURVOE5tNEorN3poR2Nhd1d5V3J6NjFoRjZ2TldOQ3NW?= =?utf-8?B?bmxTMzdzWG5KeDVvTTNjYjRkUjFXcFpsTVEwUGZuRTV0a3hNYVRtaXZmclNv?= =?utf-8?B?N3VFTExBK3c5bzhiVWIveTRlQ0dCZkZnZFFiNXNSczF6aTJjUEh0aXNkVjZD?= =?utf-8?B?d0o1YWJmOXVLQ0lQek1ERHE0S21vMDhLMERFOElzSVhyS0xKMmhUbC9KSVB1?= =?utf-8?B?UDZYZ3ZRYUlEeVpvbGs4Mmh3Mm56NmhNMmhOdzR5YU15N25yM2ZWc29ZZTFW?= =?utf-8?B?M0l5dDEvOGFoeHFtTWJJenpIVHVqMUdrejA4K3ovQjBDREplSFYxS1Bydlhv?= =?utf-8?B?NG9FQ2JGVzBwMGVRTWFLcXVwZjFzTHNacWI3RVJVY2QxR2ZVbmlnY0VaRWZh?= =?utf-8?B?emhVdVRvT04zUTNyV01aREFpTDNEb1h1Rk5rNDVFR1lnclhHUTFXNTVyWW1S?= =?utf-8?B?U2UzNDFYVm03bzRzWk03WjZrSVBsYmY3WEJUekNYOSs2dFVLeFZvOGg4RmpC?= =?utf-8?B?TlBYRktwTllJZG5IcWdLRVp4UG9pS0dtNkdURDlKc3lpUkVLUVZwZHJxbkcr?= =?utf-8?Q?GghELAqFnnDsE?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5d828fe0-edc1-4ea0-0775-08d93646b01b X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3775.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2021 12:59:08.1886 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ORbxC8mc2TGoQ9KzoUAFLrB4PcIdJJj/RsVMHl3FSpWzoIpmVJ67edN2bf6JjnRn X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB4961 Subject: Re: [Intel-gfx] [PATCH 15/15] RFC: drm/amdgpu: Implement a proper implicit fencing uapi X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rob Clark , Daniel Stone , Intel Graphics Development , Kevin Wang , DRI Development , Sumit Semwal , "moderated list:DMA BUFFER SHARING FRAMEWORK" , Luben Tuikov , "Kristian H . Kristensen" , Chen Li , Daniel Vetter , Alex Deucher , mesa-dev , Dave Airlie , =?UTF-8?Q?Michel_D=c3=a4nzer?= , Dennis Li , Deepak R Varma Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" QW0gMjMuMDYuMjEgdW0gMTQ6MTggc2NocmllYiBEYW5pZWwgVmV0dGVyOgo+IE9uIFdlZCwgSnVu IDIzLCAyMDIxIGF0IDExOjQ1IEFNIEJhcyBOaWV1d2VuaHVpemVuCj4gPGJhc0BiYXNuaWV1d2Vu aHVpemVuLm5sPiB3cm90ZToKPj4gT24gVHVlLCBKdW4gMjIsIDIwMjEgYXQgNjo1NSBQTSBEYW5p ZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPiB3cm90ZToKPj4+IFdBUk5JTkc6IEFi c29sdXRlbHkgdW50ZXN0ZWQgYmV5b25kICJnY2MgaXNuJ3QgZHlpbmcgaW4gYWdvbnkiLgo+Pj4K Pj4+IEltcGxpY2l0IGZlbmNpbmcgZG9uZSBwcm9wZXJseSBuZWVkcyB0byB0cmVhdCB0aGUgaW1w bGljaXQgZmVuY2luZwo+Pj4gc2xvdHMgbGlrZSBhIGZ1bm55IGtpbmQgb2YgSVBDIG1haWxib3gu IEluIG90aGVyIHdvcmRzIGl0IG5lZWRzIHRvIGJlCj4+PiBleHBsaWNpdGx5LiBUaGlzIGlzIHRo ZSBvbmx5IHdheSBpdCB3aWxsIG1lc2ggd2VsbCB3aXRoIGV4cGxpY2l0Cj4+PiBmZW5jaW5nIHVz ZXJzcGFjZSBsaWtlIHZrLCBhbmQgaXQncyBhbHNvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQg dG8KPj4+IGJlIGFibGUgdG8gbWFuYWdlIGFueXRoaW5nIGVsc2UgdGhhdCB3YW50cyB0byB1c2Ug dGhlIHNhbWUgYnVmZmVyIG9uCj4+PiBtdWx0aXBsZSBlbmdpbmVzIGluIHBhcmFsbGVsLCBhbmQg c3RpbGwgYmUgYWJsZSB0byBzaGFyZSBpdCB0aHJvdWdoCj4+PiBpbXBsaWNpdCBzeW5jLgo+Pj4K Pj4+IGFtZGdwdSBjb21wbGV0ZWx5IGxhY2tzIHN1Y2ggYW4gdWFwaS4gRml4IHRoaXMuCj4+Pgo+ Pj4gTHVja2lseSB0aGUgY29uY2VwdCBvZiBpZ25vcmluZyBpbXBsaWNpdCBmZW5jZXMgZXhpc3Rz IGFscmVhZHksIGFuZAo+Pj4gdGFrZXMgY2FyZSBvZiBhbGwgdGhlIGNvbXBsZXhpdGllcyBvZiBt YWtpbmcgc3VyZSB0aGF0IG5vbi1vcHRpb25hbAo+Pj4gZmVuY2VzIChsaWtlIGJvIG1vdmVzKSBh cmUgbm90IGlnbm9yZWQuIFRoaXMgc3VwcG9ydCB3YXMgYWRkZWQgaW4KPj4+Cj4+PiBjb21taXQg MTc3YWUwOWI1ZDY5OWE1ZWJkMWNhZmNlZTc4ODg5ZGI5NjhhYmY1NAo+Pj4gQXV0aG9yOiBBbmRy ZXMgUm9kcmlndWV6IDxhbmRyZXN4N0BnbWFpbC5jb20+Cj4+PiBEYXRlOiAgIEZyaSBTZXAgMTUg MjA6NDQ6MDYgMjAxNyAtMDQwMAo+Pj4KPj4+ICAgICAgZHJtL2FtZGdwdTogaW50cm9kdWNlIEFN REdQVV9HRU1fQ1JFQVRFX0VYUExJQ0lUX1NZTkMgdjIKPj4+Cj4+PiBVbmZvcnR1YW50ZWx5IGl0 J3MgdGhlIHdyb25nIHNlbWFudGljcywgYmVjYXVzZSBpdCdzIGEgYm8gZmxhZyBhbmQKPj4+IGRp c2FibGVzIGltcGxpY2l0IHN5bmMgb24gYW4gYWxsb2NhdGVkIGJ1ZmZlciBjb21wbGV0ZWx5Lgo+ Pj4KPj4+IFdlIF9kb18gd2FudCBpbXBsaWNpdCBzeW5jLCBidXQgY29udHJvbCBpdCBleHBsaWNp dGx5LiBGb3IgdGhpcyB3ZQo+Pj4gbmVlZCBhIGZsYWcgb24gdGhlIGRybV9maWxlLCBzbyB0aGF0 IGEgZ2l2ZW4gdXNlcnNwYWNlIChsaWtlIHZ1bGthbikKPj4+IGNhbiBtYW5hZ2UgdGhlIGltcGxp Y2l0IHN5bmMgc2xvdHMgZXhwbGljaXRseS4gVGhlIG90aGVyIHNpZGUgb2YgdGhlCj4+PiBwaXBl bGluZSAoY29tcG9zaXRvciwgb3RoZXIgcHJvY2VzcyBvciBqdXN0IGRpZmZlcmVudCBzdGFnZSBp biBhIG1lZGlhCj4+PiBwaXBlbGluZSBpbiB0aGUgc2FtZSBwcm9jZXNzKSBjYW4gdGhlbiBlaXRo ZXIgZG8gdGhlIHNhbWUsIG9yIGZ1bGx5Cj4+PiBwYXJ0aWNpcGF0ZSBpbiB0aGUgaW1wbGljaXQg c3luYyBhcyBpbXBsZW1lbnRlZCBieSB0aGUga2VybmVsIGJ5Cj4+PiBkZWZhdWx0Lgo+Pj4KPj4+ IEJ5IGJ1aWxkaW5nIG9uIHRoZSBleGlzdGluZyBmbGFnIGZvciBidWZmZXJzIHdlIGF2b2lkIGFu eSBpc3N1ZXMgd2l0aAo+Pj4gb3BlbmluZyB1cCBhZGRpdGlvbmFsIHNlY3VyaXR5IGNvbmNlcm5z IC0gYW55dGhpbmcgdGhpcyBuZXcgZmxhZyBoZXJlCj4+PiBhbGxvd3MgaXMgYWxyZWFkeS4KPj4+ Cj4+PiBBbGwgZHJpdmVycyB3aGljaCBzdXBwb3J0cyB0aGlzIGNvbmNlcHQgb2YgYSB1c2Vyc3Bh Y2Utc3BlY2lmaWMKPj4+IG9wdC1vdXQgb2YgaW1wbGljaXQgc3luYyBoYXZlIGEgZmxhZyBpbiB0 aGVpciBDUyBpb2N0bCwgYnV0IGluIHJlYWxpdHkKPj4+IHRoYXQgdHVybmVkIG91dCB0byBiZSBh IGJpdCB0b28gaW5mbGV4aWJsZS4gU2VlIHRoZSBkaXNjdXNzaW9uIGJlbG93LAo+Pj4gbGV0J3Mg dHJ5IHRvIGRvIGEgYml0IGJldHRlciBmb3IgYW1kZ3B1Lgo+Pj4KPj4+IFRoaXMgYWxvbmUgb25s eSBhbGxvd3MgdXMgdG8gY29tcGxldGVseSBhdm9pZCBhbnkgc3RhbGxzIGR1ZSB0bwo+Pj4gaW1w bGljaXQgc3luYywgaXQgZG9lcyBub3QgeWV0IGFsbG93IHVzIHRvIHVzZSBpbXBsaWNpdCBzeW5j IGFzIGEKPj4+IHN0cmFuZ2UgZm9ybSBvZiBJUEMgZm9yIHN5bmNfZmlsZS4KPj4+Cj4+PiBGb3Ig dGhhdCB3ZSBuZWVkIHR3byBtb3JlIHBpZWNlczoKPj4+Cj4+PiAtIGEgd2F5IHRvIGdldCB0aGUg Y3VycmVudCBpbXBsaWNpdCBzeW5jIGZlbmNlcyBvdXQgb2YgYSBidWZmZXIuIENvdWxkCj4+PiAg ICBiZSBkb25lIGluIGEgZHJpdmVyIGlvY3RsLCBidXQgZXZlcnlvbmUgbmVlZHMgdGhpcywgYW5k IGdlbmVyYWxseSBhCj4+PiAgICBkbWEtYnVmIGlzIGludm9sdmVkIGFueXdheSB0byBlc3RhYmxp c2ggdGhlIHNoYXJpbmcuIFNvIGFuIGlvY3RsIG9uCj4+PiAgICB0aGUgZG1hLWJ1ZiBtYWtlcyBh IHRvbiBtb3JlIHNlbnNlOgo+Pj4KPj4+ICAgIGh0dHBzOi8vbmFtMTEuc2FmZWxpbmtzLnByb3Rl Y3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmxvcmUua2VybmVsLm9yZyUyRmRy aS1kZXZlbCUyRjIwMjEwNTIwMTkwMDA3LjUzNDA0Ni00LWphc29uJTQwamxla3N0cmFuZC5uZXQl MkYmYW1wO2RhdGE9MDQlN0MwMSU3Q2NocmlzdGlhbi5rb2VuaWclNDBhbWQuY29tJTdDZjAyNjA1 NWY1MjNkNGU0ZGY5NWIwOGQ5MzY0MTBlMzklN0MzZGQ4OTYxZmU0ODg0ZTYwOGUxMWE4MmQ5OTRl MTgzZCU3QzAlN0MwJTdDNjM3NjAwNDc1MzUxMDg1NTM2JTdDVW5rbm93biU3Q1RXRnBiR1pzYjNk OGV5SldJam9pTUM0d0xqQXdNREFpTENKUUlqb2lWMmx1TXpJaUxDSkJUaUk2SWsxaGFXd2lMQ0pY VkNJNk1uMCUzRCU3QzEwMDAmYW1wO3NkYXRhPWdVbk04JTJGdWx4JTJCJTJCREx4QnlPJTJGMFYz Y0xxdCUyRmMydW5Xaml6RXBwdFFxTThnJTNEJmFtcDtyZXNlcnZlZD0wCj4+Pgo+Pj4gICAgQ3Vy cmVudCBkcml2ZXJzIGluIHVwc3RyZWFtIHNvbHZlcyB0aGlzIGJ5IGhhdmluZyB0aGUgb3B0LW91 dCBmbGFnCj4+PiAgICBvbiB0aGVpciBDUyBpb2N0bC4gVGhpcyBoYXMgdGhlIGRvd25zaWRlIHRo YXQgdmVyeSBvZnRlbiB0aGUgQ1MKPj4+ICAgIHdoaWNoIG11c3QgYWN0dWFsbHkgc3RhbGwgZm9y IHRoZSBpbXBsaWNpdCBmZW5jZSBpcyBydW4gYSB3aGlsZQo+Pj4gICAgYWZ0ZXIgdGhlIGltcGxp Y2l0IGZlbmNlIHBvaW50IHdhcyBsb2dpY2FsbHkgc2FtcGxlZCBwZXIgdGhlIGFwaQo+Pj4gICAg c3BlYyAodmsgcGFzc2VzIGFuIGV4cGxpY2l0IHN5bmNvYmogYXJvdW5kIGZvciB0aGF0IGFmYWl1 aSksIGFuZCBzbwo+Pj4gICAgcmVzdWx0cyBpbiBvdmVyc3luYy4gQ29udmVydGluZyB0aGUgaW1w bGljaXQgc3luYyBmZW5jZXMgaW50byBhCj4+PiAgICBzbmFwLXNob3Qgc3luY19maWxlIGlzIGFj dHVhbGx5IGFjY3VyYXRlLgo+Pj4KPj4+IC0gU2ltaWxsYXIgd2UgbmVlZCB0byBiZSBhYmxlIHRv IHNldCB0aGUgZXhjbHVzaXZlIGltcGxpY2l0IGZlbmNlLgo+Pj4gICAgQ3VycmVudCBkcml2ZXJz IGFnYWluIGRvIHRoaXMgd2l0aCBhIENTIGlvY3RsIGZsYWcsIHdpdGggYWdhaW4gdGhlCj4+PiAg ICBzYW1lIHByb2JsZW1zIHRoYXQgdGhlIHRpbWUgdGhlIENTIGhhcHBlbnMgYWRkaXRpb25hbCBk ZXBlbmRlbmNpZXMKPj4+ICAgIGhhdmUgYmVlbiBhZGRlZC4gQW4gZXhwbGljaXQgaW9jdGwgdG8g b25seSBpbnNlcnQgYSBzeW5jX2ZpbGUgKHdoaWxlCj4+PiAgICByZXNwZWN0aW5nIHRoZSBydWxl cyBmb3IgaG93IGV4Y2x1c2l2ZSBhbmQgc2hhcmVkIGZlbmNlIHNsb3RzIG11c3QKPj4+ICAgIGJl IHVwZGF0ZSBpbiBzdHJ1Y3QgZG1hX3Jlc3YpIGlzIG11Y2ggYmV0dGVyLiBUaGlzIGlzIHByb3Bv c2VkIGhlcmU6Cj4+Pgo+Pj4gICAgaHR0cHM6Ly9uYW0xMS5zYWZlbGlua3MucHJvdGVjdGlvbi5v dXRsb29rLmNvbS8/dXJsPWh0dHBzJTNBJTJGJTJGbG9yZS5rZXJuZWwub3JnJTJGZHJpLWRldmVs JTJGMjAyMTA1MjAxOTAwMDcuNTM0MDQ2LTUtamFzb24lNDBqbGVrc3RyYW5kLm5ldCUyRiZhbXA7 ZGF0YT0wNCU3QzAxJTdDY2hyaXN0aWFuLmtvZW5pZyU0MGFtZC5jb20lN0NmMDI2MDU1ZjUyM2Q0 ZTRkZjk1YjA4ZDkzNjQxMGUzOSU3QzNkZDg5NjFmZTQ4ODRlNjA4ZTExYTgyZDk5NGUxODNkJTdD MCU3QzAlN0M2Mzc2MDA0NzUzNTEwODU1MzYlN0NVbmtub3duJTdDVFdGcGJHWnNiM2Q4ZXlKV0lq b2lNQzR3TGpBd01EQWlMQ0pRSWpvaVYybHVNeklpTENKQlRpSTZJazFoYVd3aUxDSlhWQ0k2TW4w JTNEJTdDMTAwMCZhbXA7c2RhdGE9d0ZHTnllTDFZU3BrZWJmMUwxRERiMmV1aWhmMWZ2bVI5Rzhj Znl3cnBWVSUzRCZhbXA7cmVzZXJ2ZWQ9MAo+Pj4KPj4+IFRoZXNlIHRocmVlIHBpZWNlcyB0b2dl dGhlciBhbGxvdyB1c2Vyc3BhY2UgdG8gZnVsbHkgY29udHJvbCBpbXBsaWNpdAo+Pj4gZmVuY2lu ZyBhbmQgcmVtb3ZlIGFsbCB1bmVjZXNzYXJ5IHN0YWxsIHBvaW50cyBkdWUgdG8gdGhlbS4KPj4+ Cj4+PiBXZWxsLCBhcyBtdWNoIGFzIHRoZSBpbXBsaWNpdCBmZW5jaW5nIG1vZGVsIGZ1bmRhbWVu dGFsbHkgYWxsb3dzOgo+Pj4gVGhlcmUgaXMgb25seSBvbmUgc2V0IG9mIGZlbmNlcywgeW91IGNh biBvbmx5IGNob29zZSB0byBzeW5jIGFnYWluc3QKPj4+IG9ubHkgd3JpdGVycyAoZXhjbHVzaXZl IHNsb3QpLCBvciBldmVyeW9uZS4gSGVuY2Ugc3ViYWxsb2NhdGluZwo+Pj4gbXVsdGlwbGUgYnVm ZmVycyBvciBhbnl0aGluZyBlbHNlIGxpa2UgdGhpcyBpcyBmdW5kYW1lbnRhbGx5IG5vdAo+Pj4g cG9zc2libGUsIGFuZCBjYW4gb25seSBiZSBmaXhlZCBieSBhIHByb3BlciBleHBsaWNpdCBmZW5j aW5nIG1vZGVsLgo+Pj4KPj4+IEFzaWRlIGZyb20gdGhhdCBjYXZlYXQgdGhpcyBtb2RlbCBnZXRz IGltcGxpY2l0IGZlbmNpbmcgYXMgY2xvc2VseSB0bwo+Pj4gZXhwbGljaXQgZmVuY2luZyBzZW1h bnRpY3MgYXMgcG9zc2libGU6Cj4+Pgo+Pj4gT24gdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBJ IG9wdGVkIGZvciBhIHNpbXBsZSBzZXRwYXJhbSBpb2N0bCwgbm8KPj4+IGxvY2tpbmcgKGp1c3Qg YXRvbWljIHJlYWRzL3dyaXRlcykgZm9yIHNpbXBsaWNpdHkuIFRoZXJlIGlzIGEgbmljZQo+Pj4g ZmxhZyBwYXJhbWV0ZXIgaW4gdGhlIFZNIGlvY3RsIHdoaWNoIHdlIGNvdWxkIHVzZSwgZXhjZXB0 Ogo+Pj4gLSBpdCdzIG5vdCBjaGVja2VkLCBzbyB1c2Vyc3BhY2UgbGlrZWx5IHBhc3NlcyBnYXJi YWdlCj4+PiAtIHRoZXJlJ3MgYWxyZWFkeSBhIGNvbW1lbnQgdGhhdCB1c2Vyc3BhY2UgX2RvZXNf IHBhc3MgZ2FyYmFnZSBpbiB0aGUKPj4+ICAgIHByaW9yaXR5IGZpZWxkCj4+PiBTbyB5ZWFoIHVu Zm9ydHVuYXRlbHkgdGhpcyBmbGFnIHBhcmFtZXRlciBmb3Igc2V0dGluZyB2bSBmbGFncyBpcwo+ Pj4gdXNlbGVzcywgYW5kIHdlIG5lZWQgdG8gaGFjayB1cCBhIG5ldyBvbmUuCj4+Pgo+Pj4gdjI6 IEV4cGxhaW4gd2h5IGEgbmV3IFNFVFBBUkFNIChKYXNvbikKPj4+Cj4+PiB2MzogQmFzIG5vdGlj ZWQgSSBmb3Jnb3QgdG8gaG9vayB1cCB0aGUgZGVwZW5kZW5jeS1zaWRlIHNob3J0Y3V0LiBXZQo+ Pj4gbmVlZCBib3RoLCBvciB0aGlzIGRvZXNuJ3QgZG8gbXVjaC4KPj4+Cj4+PiB2NDogUmViYXNl IG92ZXIgdGhlIGFtZGdwdSBwYXRjaCB0byBhbHdheXMgc2V0IHRoZSBpbXBsaWNpdCBzeW5jCj4+ PiBmZW5jZXMuCj4+IFNvIEkgdGhpbmsgdGhlcmUgaXMgc3RpbGwgYSBjYXNlIG1pc3NpbmcgaW4g dGhpcyBpbXBsZW1lbnRhdGlvbi4KPj4gQ29uc2lkZXIgdGhlc2UgMyBjYXNlcwo+Pgo+PiAoZm9y bWF0OiBhLT5iOiBiIHdhaXRzIG9uIGEuIFllcywgSSBrbm93IGFycm93cyBhcmUgaGFyZCkKPj4K Pj4gZXhwbGljaXQtPmV4cGxpY2l0OiBUaGlzIGRvZXNuJ3Qgd2FpdCBub3csIHdoaWNoIGlzIGdv b2QKPj4gSW1wbGljaXQtPmV4cGxpY2l0OiBUaGlzIGRvZXNuJ3Qgd2FpdCBub3csIHdoaWNoIGlz IGdvb2QKPj4gZXhwbGljaXQtPmltcGxpY2l0IDogVGhpcyBzdGlsbCB3YWl0cyBhcyB0aGUgZXhw bGljaXQgc3VibWlzc2lvbiBzdGlsbAo+PiBhZGRzIHNoYXJlZCBmZW5jZXMgYW5kIG1vc3QgdGhp bmdzIHRoYXQgc2V0IGFuIGV4Y2x1c2l2ZSBmZW5jZSBmb3IKPj4gaW1wbGljaXQgc3luYyB3aWxs IGhlbmNlIHdhaXQgb24gaXQuCj4+Cj4+IFRoaXMgaXMgcHJvYmFibHkgZ29vZCBlbm91Z2ggZm9y IHdoYXQgcmFkdiBuZWVkcyBub3cgYnV0IGFsc28gc291bmRzCj4+IGxpa2UgYSByaXNrIHdydCBi YWtpbmcgaW4gbmV3IHVhcGkgYmVoYXZpb3IgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGJlCj4+IHRo ZSBlbmQgcmVzdWx0Lgo+Pgo+PiBXaXRoaW4gQU1ER1BVIHRoaXMgaXMgcHJvYmFibHkgc29sdmFi bGUgaW4gdHdvIHdheXM6Cj4+Cj4+IDEpIERvd25ncmFkZSBBTURHUFVfU1lOQ19ORV9PV05FUiB0 byBBTURHUFVfU1lOQ19FWFBMSUNJVCBmb3Igc2hhcmVkIGZlbmNlcy4KPiBJJ20gbm90IHN1cmUg dGhhdCB3b3Jrcy4gSSB0aGluayB0aGUgcmlnaHQgZml4IGlzIHRoYXQgcmFkZW9uc2kgYWxzbwo+ IHN3aXRjaGVzIHRvIHRoaXMgbW9kZWwsIHdpdGggbWF5YmUgYSBwZXItYm8gQ1MgZmxhZyB0byBz ZXQgaW5kaWNhdGUKPiB3cml0ZSBhY2Nlc3MsIHRvIGN1dCBkb3duIG9uIHRoZSBudW1iZXIgb2Yg aW9jdGxzIHRoYXQgYXJlIG5lZWRlZAo+IG90aGVyd2lzZSBvbiBzaGFyZWQgYnVmZmVycy4gVGhp cyBwZXItYm8gZmxhZyB3b3VsZCBlc3NlbnRpYWxseSBzZWxlY3QKPiBiZXR3ZWVuIFNZTkNfTkVf T1dORVIgYW5kIFNZTkNfRVhQTElDSVQgb24gYSBwZXItYnVmZmVyIGJhc2lzLgoKWWVhaCwgYnV0 IEknbSBzdGlsbCBub3QgZW50aXJlbHkgc3VyZSB3aHkgdGhhdCBhcHByb2FjaCBpc24ndCBzdWZm aWNpZW50PwoKUHJvYmxlbSB3aXRoIHRoZSBwZXIgY29udGV4dCBvciBwZXIgdm0gZmxhZyBpcyB0 aGF0IHlvdSB0aGVuIGRvbid0IGdldCAKYW55IGltcGxpY2l0IHN5bmNocm9uaXphdGlvbiBhbnkg bW9yZSB3aGVuIGFub3RoZXIgcHJvY2VzcyBzdGFydHMgdXNpbmcgCnRoZSBidWZmZXIuCgo+IFRo ZSBjdXJyZW50IGFtZGdwdSB1YXBpIGp1c3QgZG9lc24ndCBhbGxvdyBhbnkgb3RoZXIgbW9kZWwg d2l0aG91dCBhbgo+IGV4cGxpY2l0IG9wdC1pbi4gU28gY3VycmVudCBpbXBsaWNpdCBzeW5jIHVz ZXJzcGFjZSBqdXN0IGhhcyB0bwo+IG92ZXJzeW5jLCB0aGVyZSdzIG5vdCBtdWNoIGNob2ljZS4K Pgo+PiAyKSBIYXZlIGFuIEVYUExJQ0lUIGZlbmNlIG93bmVyIHRoYXQgaXMgdXNlZCBmb3IgZXhw bGljaXQgc3VibWlzc2lvbnMKPj4gdGhhdCBpcyBpZ25vcmVkIGJ5IEFNREdQVV9TWU5DX05FX09X TkVSLgo+Pgo+PiBCdXQgdGhpcyBkb2Vzbid0IHNvbHZlIGNyb3NzLWRyaXZlciBpbnRlcmFjdGlv bnMgaGVyZS4KPiBZZWFoIGNyb3NzLWRyaXZlciBpcyBzdGlsbCBlbnRpcmVseSB1bnNvbHZlZCwg YmVjYXVzZQo+IGFtZGdwdV9ib19leHBsaWNpdF9zeW5jKCkgb24gdGhlIGJvIGRpZG4ndCBzb2x2 ZSB0aGF0IGVpdGhlci4KCkh1aT8gWW91IGhhdmUgbG9zdCBtZS4gV2h5IGlzIHRoYXQgc3RpbGwg dW5zb2x2ZWQ/CgpSZWdhcmRzLApDaHJpc3RpYW4uCgo+IC1EYW5pZWwKPgo+Pj4gQ2M6IG1lc2Et ZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4gQ2M6IEJhcyBOaWV1d2VuaHVpemVuIDxiYXNA YmFzbmlldXdlbmh1aXplbi5ubD4KPj4+IENjOiBEYXZlIEFpcmxpZSA8YWlybGllZEBnbWFpbC5j b20+Cj4+PiBDYzogUm9iIENsYXJrIDxyb2JkY2xhcmtAY2hyb21pdW0ub3JnPgo+Pj4gQ2M6IEty aXN0aWFuIEguIEtyaXN0ZW5zZW4gPGhvZWdzYmVyZ0Bnb29nbGUuY29tPgo+Pj4gQ2M6IE1pY2hl bCBEw6RuemVyIDxtaWNoZWxAZGFlbnplci5uZXQ+Cj4+PiBDYzogRGFuaWVsIFN0b25lIDxkYW5p ZWxzQGNvbGxhYm9yYS5jb20+Cj4+PiBDYzogU3VtaXQgU2Vtd2FsIDxzdW1pdC5zZW13YWxAbGlu YXJvLm9yZz4KPj4+IENjOiAiQ2hyaXN0aWFuIEvDtm5pZyIgPGNocmlzdGlhbi5rb2VuaWdAYW1k LmNvbT4KPj4+IENjOiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+Cj4+ PiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPj4+IENjOiBEZWVw YWsgUiBWYXJtYSA8bWgxMmd4MjgyNUBnbWFpbC5jb20+Cj4+PiBDYzogQ2hlbiBMaSA8Y2hlbmxp QHVuaW9udGVjaC5jb20+Cj4+PiBDYzogS2V2aW4gV2FuZyA8a2V2aW4xLndhbmdAYW1kLmNvbT4K Pj4+IENjOiBEZW5uaXMgTGkgPERlbm5pcy5MaUBhbWQuY29tPgo+Pj4gQ2M6IEx1YmVuIFR1aWtv diA8bHViZW4udHVpa292QGFtZC5jb20+Cj4+PiBDYzogbGluYXJvLW1tLXNpZ0BsaXN0cy5saW5h cm8ub3JnCj4+PiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGlu dGVsLmNvbT4KPj4+IC0tLQo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Y3MuYyAgfCAgNyArKysrKy0tCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9kcnYuYyB8IDIxICsrKysrKysrKysrKysrKysrKysrKwo+Pj4gICBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdm0uaCAgfCAgNiArKysrKysKPj4+ICAgaW5jbHVkZS91YXBpL2Ry bS9hbWRncHVfZHJtLmggICAgICAgICAgIHwgMTAgKysrKysrKysrKwo+Pj4gICA0IGZpbGVzIGNo YW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKPj4+IGluZGV4IDY1ZGYzNGMxNzI2NC4uYzUzODZk MTNlYjRhIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2NzLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+ PiBAQCAtNDk4LDYgKzQ5OCw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX3BhcnNlcl9ib3Moc3Ry dWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsCj4+PiAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2JvICpn ZHM7Cj4+PiAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2JvICpnd3M7Cj4+PiAgICAgICAgICBzdHJ1 Y3QgYW1kZ3B1X2JvICpvYTsKPj4+ICsgICAgICAgYm9vbCBub19pbXBsaWNpdF9zeW5jID0gUkVB RF9PTkNFKGZwcml2LT52bS5ub19pbXBsaWNpdF9zeW5jKTsKPj4+ICAgICAgICAgIGludCByOwo+ Pj4KPj4+ICAgICAgICAgIElOSVRfTElTVF9IRUFEKCZwLT52YWxpZGF0ZWQpOwo+Pj4gQEAgLTU3 Nyw3ICs1NzgsOCBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19wYXJzZXJfYm9zKHN0cnVjdCBhbWRn cHVfY3NfcGFyc2VyICpwLAo+Pj4KPj4+ICAgICAgICAgICAgICAgICAgZS0+Ym9fdmEgPSBhbWRn cHVfdm1fYm9fZmluZCh2bSwgYm8pOwo+Pj4KPj4+IC0gICAgICAgICAgICAgICBpZiAoYm8tPnRi by5iYXNlLmRtYV9idWYgJiYgIWFtZGdwdV9ib19leHBsaWNpdF9zeW5jKGJvKSkgewo+Pj4gKyAg ICAgICAgICAgICAgIGlmIChiby0+dGJvLmJhc2UuZG1hX2J1ZiAmJgo+Pj4gKyAgICAgICAgICAg ICAgICAgICAhKG5vX2ltcGxpY2l0X3N5bmMgfHwgYW1kZ3B1X2JvX2V4cGxpY2l0X3N5bmMoYm8p KSkgewo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgIGUtPmNoYWluID0gZG1hX2ZlbmNlX2No YWluX2FsbG9jKCk7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLT5jaGFpbikg ewo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IC1FTk9NRU07Cj4+PiBA QCAtNjQ5LDYgKzY1MSw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX3N5bmNfcmluZ3Moc3RydWN0 IGFtZGdwdV9jc19wYXJzZXIgKnApCj4+PiAgIHsKPj4+ICAgICAgICAgIHN0cnVjdCBhbWRncHVf ZnByaXYgKmZwcml2ID0gcC0+ZmlscC0+ZHJpdmVyX3ByaXY7Cj4+PiAgICAgICAgICBzdHJ1Y3Qg YW1kZ3B1X2JvX2xpc3RfZW50cnkgKmU7Cj4+PiArICAgICAgIGJvb2wgbm9faW1wbGljaXRfc3lu YyA9IFJFQURfT05DRShmcHJpdi0+dm0ubm9faW1wbGljaXRfc3luYyk7Cj4+PiAgICAgICAgICBp bnQgcjsKPj4+Cj4+PiAgICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGUsICZwLT52YWxpZGF0 ZWQsIHR2LmhlYWQpIHsKPj4+IEBAIC02NTYsNyArNjU5LDcgQEAgc3RhdGljIGludCBhbWRncHVf Y3Nfc3luY19yaW5ncyhzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCkKPj4+ICAgICAgICAgICAg ICAgICAgc3RydWN0IGRtYV9yZXN2ICpyZXN2ID0gYm8tPnRiby5iYXNlLnJlc3Y7Cj4+PiAgICAg ICAgICAgICAgICAgIGVudW0gYW1kZ3B1X3N5bmNfbW9kZSBzeW5jX21vZGU7Cj4+Pgo+Pj4gLSAg ICAgICAgICAgICAgIHN5bmNfbW9kZSA9IGFtZGdwdV9ib19leHBsaWNpdF9zeW5jKGJvKSA/Cj4+ PiArICAgICAgICAgICAgICAgc3luY19tb2RlID0gbm9faW1wbGljaXRfc3luYyB8fCBhbWRncHVf Ym9fZXhwbGljaXRfc3luYyhibykgPwo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgIEFNREdQ VV9TWU5DX0VYUExJQ0lUIDogQU1ER1BVX1NZTkNfTkVfT1dORVI7Cj4+PiAgICAgICAgICAgICAg ICAgIHIgPSBhbWRncHVfc3luY19yZXN2KHAtPmFkZXYsICZwLT5qb2ItPnN5bmMsIHJlc3YsIHN5 bmNfbW9kZSwKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZwcml2 LT52bSk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCj4+PiBpbmRl eCBjMDgwYmExNWFlNzcuLmY5ODI2MjZiNTMyOCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2Rydi5jCj4+PiBAQCAtMTcyNCw2ICsxNzI0LDI2IEBAIGludCBhbWRn cHVfZmlsZV90b19mcHJpdihzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGFtZGdwdV9mcHJpdiAq KmZwcml2KQo+Pj4gICAgICAgICAgcmV0dXJuIDA7Cj4+PiAgIH0KPj4+Cj4+PiAraW50IGFtZGdw dV9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApCj4+PiArewo+ Pj4gKyAgICAgICBzdHJ1Y3QgZHJtX2FtZGdwdV9zZXRwYXJhbSAqc2V0cGFyYW0gPSBkYXRhOwo+ Pj4gKyAgICAgICBzdHJ1Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiA9IGZpbHAtPmRyaXZlcl9wcml2 Owo+Pj4gKwo+Pj4gKyAgICAgICBzd2l0Y2ggKHNldHBhcmFtLT5wYXJhbSkgewo+Pj4gKyAgICAg ICBjYXNlIEFNREdQVV9TRVRQQVJBTV9OT19JTVBMSUNJVF9TWU5DOgo+Pj4gKyAgICAgICAgICAg ICAgIGlmIChzZXRwYXJhbS0+dmFsdWUpCj4+PiArICAgICAgICAgICAgICAgICAgICAgICBXUklU RV9PTkNFKGZwcml2LT52bS5ub19pbXBsaWNpdF9zeW5jLCB0cnVlKTsKPj4+ICsgICAgICAgICAg ICAgICBlbHNlCj4+PiArICAgICAgICAgICAgICAgICAgICAgICBXUklURV9PTkNFKGZwcml2LT52 bS5ub19pbXBsaWNpdF9zeW5jLCBmYWxzZSk7Cj4+PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4+ PiArICAgICAgIGRlZmF1bHQ6Cj4+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ PiArICAgICAgIH0KPj4+ICsKPj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4g ICBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2MgYW1kZ3B1X2lvY3Rsc19rbXNbXSA9IHsKPj4+ ICAgICAgICAgIERSTV9JT0NUTF9ERUZfRFJWKEFNREdQVV9HRU1fQ1JFQVRFLCBhbWRncHVfZ2Vt X2NyZWF0ZV9pb2N0bCwgRFJNX0FVVEh8RFJNX1JFTkRFUl9BTExPVyksCj4+PiAgICAgICAgICBE Uk1fSU9DVExfREVGX0RSVihBTURHUFVfQ1RYLCBhbWRncHVfY3R4X2lvY3RsLCBEUk1fQVVUSHxE Uk1fUkVOREVSX0FMTE9XKSwKPj4+IEBAIC0xNzQyLDYgKzE3NjIsNyBAQCBjb25zdCBzdHJ1Y3Qg ZHJtX2lvY3RsX2Rlc2MgYW1kZ3B1X2lvY3Rsc19rbXNbXSA9IHsKPj4+ICAgICAgICAgIERSTV9J T0NUTF9ERUZfRFJWKEFNREdQVV9HRU1fVkEsIGFtZGdwdV9nZW1fdmFfaW9jdGwsIERSTV9BVVRI fERSTV9SRU5ERVJfQUxMT1cpLAo+Pj4gICAgICAgICAgRFJNX0lPQ1RMX0RFRl9EUlYoQU1ER1BV X0dFTV9PUCwgYW1kZ3B1X2dlbV9vcF9pb2N0bCwgRFJNX0FVVEh8RFJNX1JFTkRFUl9BTExPVyks Cj4+PiAgICAgICAgICBEUk1fSU9DVExfREVGX0RSVihBTURHUFVfR0VNX1VTRVJQVFIsIGFtZGdw dV9nZW1fdXNlcnB0cl9pb2N0bCwgRFJNX0FVVEh8RFJNX1JFTkRFUl9BTExPVyksCj4+PiArICAg ICAgIERSTV9JT0NUTF9ERUZfRFJWKEFNREdQVV9TRVRQQVJBTSwgYW1kZ3B1X3NldHBhcmFtX2lv Y3RsLCBEUk1fQVVUSHxEUk1fUkVOREVSX0FMTE9XKSwKPj4+ICAgfTsKPj4+Cj4+PiAgIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBhbWRncHVfa21zX2RyaXZlciA9IHsKPj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaCBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oCj4+PiBpbmRleCBkZGI4NWE4NWNiYmEuLjBl OGM0NDBjNjMwMyAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV92bS5oCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0u aAo+Pj4gQEAgLTMyMSw2ICszMjEsMTIgQEAgc3RydWN0IGFtZGdwdV92bSB7Cj4+PiAgICAgICAg ICBib29sICAgICAgICAgICAgICAgICAgICBidWxrX21vdmVhYmxlOwo+Pj4gICAgICAgICAgLyog RmxhZyB0byBpbmRpY2F0ZSBpZiBWTSBpcyB1c2VkIGZvciBjb21wdXRlICovCj4+PiAgICAgICAg ICBib29sICAgICAgICAgICAgICAgICAgICBpc19jb21wdXRlX2NvbnRleHQ7Cj4+PiArICAgICAg IC8qCj4+PiArICAgICAgICAqIEZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciBpbXBsaWNpdCBzeW5j IHNob3VsZCBhbHdheXMgYmUgc2tpcHBlZCBvbgo+Pj4gKyAgICAgICAgKiB0aGlzIGNvbnRleHQu IFdlIGRvIG5vdCBjYXJlIGFib3V0IHJhY2VzIGF0IGFsbCwgdXNlcnNwYWNlIGlzIGFsbG93ZWQK Pj4+ICsgICAgICAgICogdG8gc2hvb3QgaXRzZWxmIHdpdGggaW1wbGljaXQgc3luYyB0byBpdHMg ZnVsbGVzdCBsaWtpbmcuCj4+PiArICAgICAgICAqLwo+Pj4gKyAgICAgICBib29sIG5vX2ltcGxp Y2l0X3N5bmM7Cj4+PiAgIH07Cj4+Pgo+Pj4gICBzdHJ1Y3QgYW1kZ3B1X3ZtX21hbmFnZXIgewo+ Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5oIGIvaW5jbHVkZS91 YXBpL2RybS9hbWRncHVfZHJtLmgKPj4+IGluZGV4IDBjYmQxNTQwYWVhYy4uOWVhZTI0NWMxNGQ2 IDEwMDY0NAo+Pj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9hbWRncHVfZHJtLmgKPj4+ICsrKyBi L2luY2x1ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5oCj4+PiBAQCAtNTQsNiArNTQsNyBAQCBleHRl cm4gIkMiIHsKPj4+ICAgI2RlZmluZSBEUk1fQU1ER1BVX1ZNICAgICAgICAgICAgICAgICAgMHgx Mwo+Pj4gICAjZGVmaW5lIERSTV9BTURHUFVfRkVOQ0VfVE9fSEFORExFICAgICAweDE0Cj4+PiAg ICNkZWZpbmUgRFJNX0FNREdQVV9TQ0hFRCAgICAgICAgICAgICAgIDB4MTUKPj4+ICsjZGVmaW5l IERSTV9BTURHUFVfU0VUUEFSQU0gICAgICAgICAgICAweDE2Cj4+Pgo+Pj4gICAjZGVmaW5lIERS TV9JT0NUTF9BTURHUFVfR0VNX0NSRUFURSAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsg RFJNX0FNREdQVV9HRU1fQ1JFQVRFLCB1bmlvbiBkcm1fYW1kZ3B1X2dlbV9jcmVhdGUpCj4+PiAg ICNkZWZpbmUgRFJNX0lPQ1RMX0FNREdQVV9HRU1fTU1BUCAgICAgIERSTV9JT1dSKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fQU1ER1BVX0dFTV9NTUFQLCB1bmlvbiBkcm1fYW1kZ3B1X2dlbV9tbWFw KQo+Pj4gQEAgLTcxLDYgKzcyLDcgQEAgZXh0ZXJuICJDIiB7Cj4+PiAgICNkZWZpbmUgRFJNX0lP Q1RMX0FNREdQVV9WTSAgICAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1f QU1ER1BVX1ZNLCB1bmlvbiBkcm1fYW1kZ3B1X3ZtKQo+Pj4gICAjZGVmaW5lIERSTV9JT0NUTF9B TURHUFVfRkVOQ0VfVE9fSEFORExFIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fQU1E R1BVX0ZFTkNFX1RPX0hBTkRMRSwgdW5pb24gZHJtX2FtZGdwdV9mZW5jZV90b19oYW5kbGUpCj4+ PiAgICNkZWZpbmUgRFJNX0lPQ1RMX0FNREdQVV9TQ0hFRCAgICAgICAgIERSTV9JT1coRFJNX0NP TU1BTkRfQkFTRSArIERSTV9BTURHUFVfU0NIRUQsIHVuaW9uIGRybV9hbWRncHVfc2NoZWQpCj4+ PiArI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX1NFVFBBUkFNICAgICAgRFJNX0lPVyhEUk1fQ09N TUFORF9CQVNFICsgRFJNX0FNREdQVV9TRVRQQVJBTSwgc3RydWN0IGRybV9hbWRncHVfc2V0cGFy YW0pCj4+Pgo+Pj4gICAvKioKPj4+ICAgICogRE9DOiBtZW1vcnkgZG9tYWlucwo+Pj4gQEAgLTMw Niw2ICszMDgsMTQgQEAgdW5pb24gZHJtX2FtZGdwdV9zY2hlZCB7Cj4+PiAgICAgICAgICBzdHJ1 Y3QgZHJtX2FtZGdwdV9zY2hlZF9pbiBpbjsKPj4+ICAgfTsKPj4+Cj4+PiArI2RlZmluZSBBTURH UFVfU0VUUEFSQU1fTk9fSU1QTElDSVRfU1lOQyAgICAgICAxCj4+PiArCj4+PiArc3RydWN0IGRy bV9hbWRncHVfc2V0cGFyYW0gewo+Pj4gKyAgICAgICAvKiBBTURHUFVfU0VUUEFSQU1fKiAqLwo+ Pj4gKyAgICAgICBfX3UzMiAgIHBhcmFtOwo+Pj4gKyAgICAgICBfX3UzMiAgIHZhbHVlOwo+Pj4g K307Cj4+PiArCj4+PiAgIC8qCj4+PiAgICAqIFRoaXMgaXMgbm90IGEgcmVsaWFibGUgQVBJIGFu ZCB5b3Ugc2hvdWxkIGV4cGVjdCBpdCB0byBmYWlsIGZvciBhbnkKPj4+ICAgICogbnVtYmVyIG9m IHJlYXNvbnMgYW5kIGhhdmUgZmFsbGJhY2sgcGF0aCB0aGF0IGRvIG5vdCB1c2UgdXNlcnB0ciB0 bwo+Pj4gLS0KPj4+IDIuMzIuMC5yYzIKPj4+Cj4KPgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==