From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F295F1804A for ; Wed, 11 Sep 2024 00:45:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1726015517; cv=none; b=HWANfHkq9DVWf7rSGTSSIIurKEMctVZk6kSHyC9wwTQsRQBffM82W0J1IwXny3kHkGDA2uqenH1XSHxiMTlxFN2YnU4p+bp0gBvmBeULX8oB2lz+43Ylsoc4R0T5trZLLbZzenPHd+jriZzA3r7ccUYhA/69nYlUTJltbiVCGHA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1726015517; c=relaxed/simple; bh=8uhBmyPDd+dw+VI5uhVYY1EG3bpNisgmno6ZxW+y4TE=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=bMUO2G0KFM+Otxcx9Xlb0gCABdvkgxigV7VG64PAClCwP2dzpz8WPiUOr7LWaxTLIV77V0ylODZlC1HzzJDymq9uUdmfojXThW8LydWGqZTSzCjuK/1J8qU7JB+WX2+0DkRZSLshYKDIspCuolnaJAVDrmHZInLH5EEaDpyXVXs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=HRG7/y+a; arc=none smtp.client-ip=209.85.214.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="HRG7/y+a" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-20536dcc6e9so39406085ad.2 for ; Tue, 10 Sep 2024 17:45:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1726015513; x=1726620313; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:to:from:date:from:to:cc :subject:date:message-id:reply-to; bh=N9UqXwHRW6ngdlKfPJV8zADUN4nB1bOhg7HrFQqhnhI=; b=HRG7/y+aX1MXBuj4PxCAfrJQARzvotcj/icoF4vbUzZN0X3VaPtSQAhpGkfukLxuJf OGWcaVOFerPLWqviXmrUTxPFQvhRFuM1MCcd0S8EMK9H0Du6nuh5Mpuxa2xLksqKZCHL EwEdRZB6gFHzy3tNDLeWGmXTQW874dnEa1W4JPqaD3gYXhMsBlhk2nZlD/75wrLIOKXK qQKs2husBROsrfAkb15B2yWo/Q+BbAWJG7P2I6cv7jy7N2tKWqKUREjM9xt+/3PTTxGU 7jBrbdNwyu+VbnJO6Dj5QYrcg9xWRPBfKKBvT+V12UGZyUTXl3lt9IhOO7aUqicV3OLH gqCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726015513; x=1726620313; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=N9UqXwHRW6ngdlKfPJV8zADUN4nB1bOhg7HrFQqhnhI=; b=lDM7QrtP1YOWo6JeHuwz18KK3rRG/GySR9QTrx7MC/c7ttbUQxm/uwKjPp1yMNCgZI LnsRugp2ve6J4qKRZhhGwTlzElEF+bzOT+eWEG+RD/rbtSiIbMizYQYylvLgEgtf5PXf dT8iUwGW31qfQVxzZ1/Hun5qUQhREt2AxqXR7FzlBVL7sNIYQtlDJSUks17H5g2LnHQS PMJvg7ILOZ+6rtBi+xtEww2ZYdr5jwKYr3M8nm+YRedszjNKXznTYWkscZCzKbaLnLCw za+/BuGmIiTYBoMY7dfVrh/aRfBYqOGNHnmzJ70yRq4N1GZR+feoiv+0FMaufRytfAtD bRxw== X-Forwarded-Encrypted: i=1; AJvYcCWvaPPE8mozagDNlY7w75ocNL8fkC9OUDu5aYkdzCR/7Ba2FsPAzgJ8Dxe0/8C0YBB9q0R7ir20d69oMg==@vger.kernel.org X-Gm-Message-State: AOJu0Yx/T0KiM28Z+vVLBCPmCfOZAAt88AEGmXrrtDFZr2YkDRF1VB1S owlYxPYzEYj7IgTPW7clfDmM60ighRhLG3K5yDEdMDFhPoIaXwxpOOEHlrSS7tA= X-Google-Smtp-Source: AGHT+IFSjrtRoDoL7sPwVRBWFNV85MfE4DpNXnElb7X54mGXN2iqCTI2uhxpyL/CAIcKh7QAswSthg== X-Received: by 2002:a17:902:d2ce:b0:205:5427:2231 with SMTP id d9443c01a7336-2074c6a338fmr45444085ad.47.1726015512680; Tue, 10 Sep 2024 17:45:12 -0700 (PDT) Received: from ghost ([50.145.13.30]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-20710eef1f2sm53832165ad.145.2024.09.10.17.45.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Sep 2024 17:45:11 -0700 (PDT) Date: Tue, 10 Sep 2024 17:45:07 -0700 From: Charlie Jenkins To: "Liam R. Howlett" , Catalin Marinas , Arnd Bergmann , guoren , Richard Henderson , Ivan Kokshaysky , Matt Turner , Vineet Gupta , Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , "James E . J . Bottomley" , Helge Deller , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Naveen N Rao , Alexander Gordeev , Gerald Schaefer , Heiko Carstens , Vasily Gorbik , Christian Borntraeger , Sven Schnelle , Yoshinori Sato , Rich Felker , John Paul Adrian Glaubitz , "David S . Miller" , Andreas Larsson , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Muchun Song , Andrew Morton , Vlastimil Babka , Lorenzo Stoakes , shuah , Christoph Hellwig , Michal Hocko , "Kirill A. Shutemov" , Chris Torek , Linux-Arch , linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, "linux-csky@vger.kernel.org" , loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-abi-devel@lists.sourceforge.net Subject: Re: [PATCH RFC v3 1/2] mm: Add personality flag to limit address to 47 bits Message-ID: References: <20240905-patches-below_hint_mmap-v3-0-3cd5564efbbb@rivosinc.com> <20240905-patches-below_hint_mmap-v3-1-3cd5564efbbb@rivosinc.com> <9fc4746b-8e9d-4a75-b966-e0906187e6b7@app.fastmail.com> Precedence: bulk X-Mailing-List: linux-alpha@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Tue, Sep 10, 2024 at 03:08:14PM -0400, Liam R. Howlett wrote: > * Catalin Marinas [240906 07:44]: > > On Fri, Sep 06, 2024 at 09:55:42AM +0000, Arnd Bergmann wrote: > > > On Fri, Sep 6, 2024, at 09:14, Guo Ren wrote: > > > > On Fri, Sep 6, 2024 at 3:18 PM Arnd Bergmann wrote: > > > >> It's also unclear to me how we want this flag to interact with > > > >> the existing logic in arch_get_mmap_end(), which attempts to > > > >> limit the default mapping to a 47-bit address space already. > > > > > > > > To optimize RISC-V progress, I recommend: > > > > > > > > Step 1: Approve the patch. > > > > Step 2: Update Go and OpenJDK's RISC-V backend to utilize it. > > > > Step 3: Wait approximately several iterations for Go & OpenJDK > > > > Step 4: Remove the 47-bit constraint in arch_get_mmap_end() > > > > > > I really want to first see a plausible explanation about why > > > RISC-V can't just implement this using a 47-bit DEFAULT_MAP_WINDOW > > > like all the other major architectures (x86, arm64, powerpc64), > > > > FWIW arm64 actually limits DEFAULT_MAP_WINDOW to 48-bit in the default > > configuration. We end up with a 47-bit with 16K pages but for a > > different reason that has to do with LPA2 support (I doubt we need this > > for the user mapping but we need to untangle some of the macros there; > > that's for a separate discussion). > > > > That said, we haven't encountered any user space problems with a 48-bit > > DEFAULT_MAP_WINDOW. So I also think RISC-V should follow a similar > > approach (47 or 48 bit default limit). Better to have some ABI > > consistency between architectures. One can still ask for addresses above > > this default limit via mmap(). > > I think that is best as well. > > Can we please just do what x86 and arm64 does? > > Thanks, > Liam I responded to Arnd in the other thread, but I am still not convinced that the solution that x86 and arm64 have selected is the best solution. The solution of defaulting to 47 bits does allow applications the ability to get addresses that are below 47 bits. However, due to differences across architectures it doesn't seem possible to have all architectures default to the same value. Additionally, this flag will be able to help users avoid potential bugs where a hint address is passed that causes upper bits of a VA to be used. The other issue I have with this is that if there is not a hint address specified to be greater than 47 bits on x86, then mmap() may return an address that is greater than 47-bits. The documentation in Documentation/arch/x86/x86_64/5level-paging.rst says: "If hint address set above 47-bit, but MAP_FIXED is not specified, we try to look for unmapped area by specified address. If it's already occupied, we look for unmapped area in *full* address space, rather than from 47-bit window." arm64 on the other hand defines this as only being able to opt-into the 52-bit VA space with the hint address, and my understanding is that mmap() will not fall back to the 52-bit address space. Please correct me if I am wrong. From Documentation/arch/arm64/memory.rst: "To maintain compatibility with software that relies on the ARMv8.0 VA space maximum size of 48-bits, the kernel will, by default, return virtual addresses to userspace from a 48-bit range. "Software can "opt-in" to receiving VAs from a 52-bit space by specifying an mmap hint parameter that is larger than 48-bit." This is an inconsistency I am trying to solve with this personality flag. - Charlie From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5FDD3EE01F1 for ; Wed, 11 Sep 2024 00:45:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=YA1YcybDW7YqnO6fFi6UB+Dp/rbGG5M8XsZjm7NBF0Q=; b=umAIsIwIYMQUIV Z80qjDUkg7kVDKjuNYhuU7W4j4/1Fr6zPS87EEmJuqif9UX1axmBhDnqQ943t1LS4Nl9DrtCpTiPF wnVxR9molGp2cm8kWbZhfGLKiXi5NX55a8Ol5wEbNNuvpK+IWr/vmyYlv6eULywMG/zYoSE3eQOCt ak82orKKhBNYUP/8Jv/26HP5N5cR0/gHldTYO8a9zrp+Lt8LL9K/0R2rcNQA04o0Vv0NT9VcvZWQY 9Q+doUnMuUTkEvuuZIT3qA8DrY5qfsvz/Z+b067OeRVYEVFQGgrmoCAkNh6lHM2qDwWgMinEgUpRR /hYpwJrNF/2U1E07MYnw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1soBUD-00000007d0q-3Tvi; Wed, 11 Sep 2024 00:45:33 +0000 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1soBTu-00000007ctE-0sbp for linux-snps-arc@lists.infradead.org; Wed, 11 Sep 2024 00:45:16 +0000 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-20536dcc6e9so39406045ad.2 for ; Tue, 10 Sep 2024 17:45:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1726015513; x=1726620313; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:to:from:date:from:to:cc :subject:date:message-id:reply-to; bh=N9UqXwHRW6ngdlKfPJV8zADUN4nB1bOhg7HrFQqhnhI=; b=uNwf7kSuuvO4I5ZXJWta2ikhQhQ5X7ZLik6wu0jRc2OYmp5TbApc34bmFo4wWdO1xj Y69/kOj/fBcXSsfbOddkK2QwwO9gbspCZY0M4A9PW72qqeAk/teG4ASwEjcl+UrRz/W+ rpAF6lTHt9pqjeqBcxl+L/+bkt2zsZZbKSMYXCtIzd75bTmC72sLzenPQJwzmFdKumuF sJ+8590zBpknXm/jJiEoLj7x9/ijKHjRr1DADrxjClWSZFJEMgm8mMzLcpmBjjJHKYZX 4yuZyoMFasDDCf8weTfHOY54fKUfKcxtROfsubKamG1aa3skp63EClYXumN8X9eysPag I3Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726015513; x=1726620313; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=N9UqXwHRW6ngdlKfPJV8zADUN4nB1bOhg7HrFQqhnhI=; b=Py2WTVEY4L4/MPVzwE5QWgzrYrDEmUoUgS7yQ40MFCL/L0BTTjDzY9WYrlPfh+xHCR mp8QqITwgpryE9+IYjSIT59LlX3EuTZGfliPnJfjbEATvtJ4kKEPSlYFb0ZiigK09TW9 A5yBGReYVtul7aUMXz4QnS71BvQJe6lyH/+vwLv8FbN9QqDp/pmMcPrAN7a3sc1+IcIE lA6pznJCvBEFcNMGX9WkuBWe4jIEsxxsyh1S76deK47NbjuWfT2s3KPM2a55+PhDSrrh GVoMFn4FwcMmS7eODhaeHeqhEfbgkjmn6Ej9Si0IWH3RJtb43GNAicUU8AHh59nqZiHW QjTw== X-Forwarded-Encrypted: i=1; AJvYcCW4Kab5lu9e1POBQFLo+0EKIVS7sTauGE0l+yccbcZ9DCBSwU0TaYAykCgtexIlmR3rh9/oqLa4/FhbSU+a4w==@lists.infradead.org X-Gm-Message-State: AOJu0Yzj7U798CdTcWz+jgxIfn+bzmuZyUxI0o7pzXE7021KO68PAAMM wcJuNAbqi01p2PVZu4fciYdglDsKqwGZtUZmnO+2mYHBzrXLtQJVfDKvBfnmJ1g= X-Google-Smtp-Source: AGHT+IFSjrtRoDoL7sPwVRBWFNV85MfE4DpNXnElb7X54mGXN2iqCTI2uhxpyL/CAIcKh7QAswSthg== X-Received: by 2002:a17:902:d2ce:b0:205:5427:2231 with SMTP id d9443c01a7336-2074c6a338fmr45444085ad.47.1726015512680; Tue, 10 Sep 2024 17:45:12 -0700 (PDT) Received: from ghost ([50.145.13.30]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-20710eef1f2sm53832165ad.145.2024.09.10.17.45.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Sep 2024 17:45:11 -0700 (PDT) Date: Tue, 10 Sep 2024 17:45:07 -0700 From: Charlie Jenkins To: "Liam R. Howlett" , Catalin Marinas , Arnd Bergmann , guoren , Richard Henderson , Ivan Kokshaysky , Matt Turner , Vineet Gupta , Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , "James E . J . Bottomley" , Helge Deller , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Naveen N Rao , Alexander Gordeev , Gerald Schaefer , Heiko Carstens , Vasily Gorbik , Christian Borntraeger , Sven Schnelle , Yoshinori Sato , Rich Felker , John Paul Adrian Glaubitz , "David S . Miller" , Andreas Larsson , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Muchun Song , Andrew Morton , Vlastimil Babka , Lorenzo Stoakes , shuah , Christoph Hellwig , Michal Hocko , "Kirill A. Shutemov" , Chris Torek , Linux-Arch , linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, "linux-csky@vger.kernel.org" , loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-abi-devel@lists.sourceforge.net Subject: Re: [PATCH RFC v3 1/2] mm: Add personality flag to limit address to 47 bits Message-ID: References: <20240905-patches-below_hint_mmap-v3-0-3cd5564efbbb@rivosinc.com> <20240905-patches-below_hint_mmap-v3-1-3cd5564efbbb@rivosinc.com> <9fc4746b-8e9d-4a75-b966-e0906187e6b7@app.fastmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240910_174514_509701_66FE1346 X-CRM114-Status: GOOD ( 34.44 ) X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+linux-snps-arc=archiver.kernel.org@lists.infradead.org T24gVHVlLCBTZXAgMTAsIDIwMjQgYXQgMDM6MDg6MTRQTSAtMDQwMCwgTGlhbSBSLiBIb3dsZXR0 IHdyb3RlOgo+ICogQ2F0YWxpbiBNYXJpbmFzIDxjYXRhbGluLm1hcmluYXNAYXJtLmNvbT4gWzI0 MDkwNiAwNzo0NF06Cj4gPiBPbiBGcmksIFNlcCAwNiwgMjAyNCBhdCAwOTo1NTo0MkFNICswMDAw LCBBcm5kIEJlcmdtYW5uIHdyb3RlOgo+ID4gPiBPbiBGcmksIFNlcCA2LCAyMDI0LCBhdCAwOTox NCwgR3VvIFJlbiB3cm90ZToKPiA+ID4gPiBPbiBGcmksIFNlcCA2LCAyMDI0IGF0IDM6MTjigK9Q TSBBcm5kIEJlcmdtYW5uIDxhcm5kQGFybmRiLmRlPiB3cm90ZToKPiA+ID4gPj4gSXQncyBhbHNv IHVuY2xlYXIgdG8gbWUgaG93IHdlIHdhbnQgdGhpcyBmbGFnIHRvIGludGVyYWN0IHdpdGgKPiA+ ID4gPj4gdGhlIGV4aXN0aW5nIGxvZ2ljIGluIGFyY2hfZ2V0X21tYXBfZW5kKCksIHdoaWNoIGF0 dGVtcHRzIHRvCj4gPiA+ID4+IGxpbWl0IHRoZSBkZWZhdWx0IG1hcHBpbmcgdG8gYSA0Ny1iaXQg YWRkcmVzcyBzcGFjZSBhbHJlYWR5Lgo+ID4gPiA+Cj4gPiA+ID4gVG8gb3B0aW1pemUgUklTQy1W IHByb2dyZXNzLCBJIHJlY29tbWVuZDoKPiA+ID4gPgo+ID4gPiA+IFN0ZXAgMTogQXBwcm92ZSB0 aGUgcGF0Y2guCj4gPiA+ID4gU3RlcCAyOiBVcGRhdGUgR28gYW5kIE9wZW5KREsncyBSSVNDLVYg YmFja2VuZCB0byB1dGlsaXplIGl0Lgo+ID4gPiA+IFN0ZXAgMzogV2FpdCBhcHByb3hpbWF0ZWx5 IHNldmVyYWwgaXRlcmF0aW9ucyBmb3IgR28gJiBPcGVuSkRLCj4gPiA+ID4gU3RlcCA0OiBSZW1v dmUgdGhlIDQ3LWJpdCBjb25zdHJhaW50IGluIGFyY2hfZ2V0X21tYXBfZW5kKCkKPiA+ID4gCj4g PiA+IEkgcmVhbGx5IHdhbnQgdG8gZmlyc3Qgc2VlIGEgcGxhdXNpYmxlIGV4cGxhbmF0aW9uIGFi b3V0IHdoeQo+ID4gPiBSSVNDLVYgY2FuJ3QganVzdCBpbXBsZW1lbnQgdGhpcyB1c2luZyBhIDQ3 LWJpdCBERUZBVUxUX01BUF9XSU5ET1cKPiA+ID4gbGlrZSBhbGwgdGhlIG90aGVyIG1ham9yIGFy Y2hpdGVjdHVyZXMgKHg4NiwgYXJtNjQsIHBvd2VycGM2NCksCj4gPiAKPiA+IEZXSVcgYXJtNjQg YWN0dWFsbHkgbGltaXRzIERFRkFVTFRfTUFQX1dJTkRPVyB0byA0OC1iaXQgaW4gdGhlIGRlZmF1 bHQKPiA+IGNvbmZpZ3VyYXRpb24uIFdlIGVuZCB1cCB3aXRoIGEgNDctYml0IHdpdGggMTZLIHBh Z2VzIGJ1dCBmb3IgYQo+ID4gZGlmZmVyZW50IHJlYXNvbiB0aGF0IGhhcyB0byBkbyB3aXRoIExQ QTIgc3VwcG9ydCAoSSBkb3VidCB3ZSBuZWVkIHRoaXMKPiA+IGZvciB0aGUgdXNlciBtYXBwaW5n IGJ1dCB3ZSBuZWVkIHRvIHVudGFuZ2xlIHNvbWUgb2YgdGhlIG1hY3JvcyB0aGVyZTsKPiA+IHRo YXQncyBmb3IgYSBzZXBhcmF0ZSBkaXNjdXNzaW9uKS4KPiA+IAo+ID4gVGhhdCBzYWlkLCB3ZSBo YXZlbid0IGVuY291bnRlcmVkIGFueSB1c2VyIHNwYWNlIHByb2JsZW1zIHdpdGggYSA0OC1iaXQK PiA+IERFRkFVTFRfTUFQX1dJTkRPVy4gU28gSSBhbHNvIHRoaW5rIFJJU0MtViBzaG91bGQgZm9s bG93IGEgc2ltaWxhcgo+ID4gYXBwcm9hY2ggKDQ3IG9yIDQ4IGJpdCBkZWZhdWx0IGxpbWl0KS4g QmV0dGVyIHRvIGhhdmUgc29tZSBBQkkKPiA+IGNvbnNpc3RlbmN5IGJldHdlZW4gYXJjaGl0ZWN0 dXJlcy4gT25lIGNhbiBzdGlsbCBhc2sgZm9yIGFkZHJlc3NlcyBhYm92ZQo+ID4gdGhpcyBkZWZh dWx0IGxpbWl0IHZpYSBtbWFwKCkuCj4gCj4gSSB0aGluayB0aGF0IGlzIGJlc3QgYXMgd2VsbC4K PiAKPiBDYW4gd2UgcGxlYXNlIGp1c3QgZG8gd2hhdCB4ODYgYW5kIGFybTY0IGRvZXM/Cj4gCj4g VGhhbmtzLAo+IExpYW0KCkkgcmVzcG9uZGVkIHRvIEFybmQgaW4gdGhlIG90aGVyIHRocmVhZCwg YnV0IEkgYW0gc3RpbGwgbm90IGNvbnZpbmNlZAp0aGF0IHRoZSBzb2x1dGlvbiB0aGF0IHg4NiBh bmQgYXJtNjQgaGF2ZSBzZWxlY3RlZCBpcyB0aGUgYmVzdCBzb2x1dGlvbi4KVGhlIHNvbHV0aW9u IG9mIGRlZmF1bHRpbmcgdG8gNDcgYml0cyBkb2VzIGFsbG93IGFwcGxpY2F0aW9ucyB0aGUKYWJp bGl0eSB0byBnZXQgYWRkcmVzc2VzIHRoYXQgYXJlIGJlbG93IDQ3IGJpdHMuIEhvd2V2ZXIsIGR1 ZSB0bwpkaWZmZXJlbmNlcyBhY3Jvc3MgYXJjaGl0ZWN0dXJlcyBpdCBkb2Vzbid0IHNlZW0gcG9z c2libGUgdG8gaGF2ZSBhbGwKYXJjaGl0ZWN0dXJlcyBkZWZhdWx0IHRvIHRoZSBzYW1lIHZhbHVl LiBBZGRpdGlvbmFsbHksIHRoaXMgZmxhZyB3aWxsIGJlCmFibGUgdG8gaGVscCB1c2VycyBhdm9p ZCBwb3RlbnRpYWwgYnVncyB3aGVyZSBhIGhpbnQgYWRkcmVzcyBpcyBwYXNzZWQKdGhhdCBjYXVz ZXMgdXBwZXIgYml0cyBvZiBhIFZBIHRvIGJlIHVzZWQuCgpUaGUgb3RoZXIgaXNzdWUgSSBoYXZl IHdpdGggdGhpcyBpcyB0aGF0IGlmIHRoZXJlIGlzIG5vdCBhIGhpbnQgYWRkcmVzcwpzcGVjaWZp ZWQgdG8gYmUgZ3JlYXRlciB0aGFuIDQ3IGJpdHMgb24geDg2LCB0aGVuIG1tYXAoKSBtYXkgcmV0 dXJuIGFuCmFkZHJlc3MgdGhhdCBpcyBncmVhdGVyIHRoYW4gNDctYml0cy4gVGhlIGRvY3VtZW50 YXRpb24gaW4KRG9jdW1lbnRhdGlvbi9hcmNoL3g4Ni94ODZfNjQvNWxldmVsLXBhZ2luZy5yc3Qg c2F5czoKCiJJZiBoaW50IGFkZHJlc3Mgc2V0IGFib3ZlIDQ3LWJpdCwgYnV0IE1BUF9GSVhFRCBp cyBub3Qgc3BlY2lmaWVkLCB3ZSB0cnkKdG8gbG9vayBmb3IgdW5tYXBwZWQgYXJlYSBieSBzcGVj aWZpZWQgYWRkcmVzcy4gSWYgaXQncyBhbHJlYWR5Cm9jY3VwaWVkLCB3ZSBsb29rIGZvciB1bm1h cHBlZCBhcmVhIGluICpmdWxsKiBhZGRyZXNzIHNwYWNlLCByYXRoZXIgdGhhbgpmcm9tIDQ3LWJp dCB3aW5kb3cuIgoKYXJtNjQgb24gdGhlIG90aGVyIGhhbmQgZGVmaW5lcyB0aGlzIGFzIG9ubHkg YmVpbmcgYWJsZSB0byBvcHQtaW50byB0aGUKNTItYml0IFZBIHNwYWNlIHdpdGggdGhlIGhpbnQg YWRkcmVzcywgYW5kIG15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdAptbWFwKCkgd2lsbCBub3QgZmFs bCBiYWNrIHRvIHRoZSA1Mi1iaXQgYWRkcmVzcyBzcGFjZS4gUGxlYXNlIGNvcnJlY3QgbWUKaWYg SSBhbSB3cm9uZy4gRnJvbSBEb2N1bWVudGF0aW9uL2FyY2gvYXJtNjQvbWVtb3J5LnJzdDoKCiJU byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggc29mdHdhcmUgdGhhdCByZWxpZXMgb24gdGhl IEFSTXY4LjAKVkEgc3BhY2UgbWF4aW11bSBzaXplIG9mIDQ4LWJpdHMsIHRoZSBrZXJuZWwgd2ls bCwgYnkgZGVmYXVsdCwKcmV0dXJuIHZpcnR1YWwgYWRkcmVzc2VzIHRvIHVzZXJzcGFjZSBmcm9t IGEgNDgtYml0IHJhbmdlLgoKIlNvZnR3YXJlIGNhbiAib3B0LWluIiB0byByZWNlaXZpbmcgVkFz IGZyb20gYSA1Mi1iaXQgc3BhY2UgYnkKc3BlY2lmeWluZyBhbiBtbWFwIGhpbnQgcGFyYW1ldGVy IHRoYXQgaXMgbGFyZ2VyIHRoYW4gNDgtYml0LiIKClRoaXMgaXMgYW4gaW5jb25zaXN0ZW5jeSBJ IGFtIHRyeWluZyB0byBzb2x2ZSB3aXRoIHRoaXMgcGVyc29uYWxpdHkKZmxhZy4KCi0gQ2hhcmxp ZQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4 LXNucHMtYXJjIG1haWxpbmcgbGlzdApsaW51eC1zbnBzLWFyY0BsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtc25wcy1h cmMK