From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 848CE200A4; Wed, 7 Feb 2024 07:27:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707290871; cv=none; b=UN1rLOWtI6sN/4GzIz+OsV/BAgrRB+U0tXqDegpXtZ7f4HfLGuXzSu/xRDXU6AVuLTp5FTVFHqM6Stpe0pCr8qwDnTEsSHOCxvnsMJbBZb4IOzufzQdeM0buI1LEZ/pOk2zDqn8OqdRDD5lH/+wHZzyfLAvkiuX0OoEhEzLySEg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707290871; c=relaxed/simple; bh=tEZnWAW1WLvWFg7OBlQaqlPnnLL0RBXGxDvchX99pdY=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID: MIME-Version:Content-Type; b=udhCgIUUyQxpNBHKEViq/hlJGojfZw9M+qb8S9TtZXbI8pXGy608Vztt7ecFihhXlYnfWb4fReCVUXXE/5V2i21uJCPs1bvGMRY6NYLtc17hp669W4FriEmv4o0WN5xqgiqfuLz3CVzpRJY7CNgeyJ3wcV6itfjaKUIaVs//DOg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QOb7mJN8; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="QOb7mJN8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7ADF0C433C7; Wed, 7 Feb 2024 07:27:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707290871; bh=tEZnWAW1WLvWFg7OBlQaqlPnnLL0RBXGxDvchX99pdY=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=QOb7mJN82YyN+0GfAzTMA5T+JNOvvAQxdQNzdM8XENErQnYNYErfQ10O/mIKRGdTF bKdv2gE9hycUvh3pEOQ7oo7nc08Edp+cj2to5e+Rc2mXV7W++glUWTICkXYDrDrt63 ypP2XCEzM1RJ7S9l4V3eyElb8Gns175HDwXs5CuWPC8eSoYio5jWs66nOqKFL3twMZ khZ3gofxXcjMMgVyho0ppFfu8j7TdCBJnBO2cGDFWLe/bU85w1U6tDK5ErZa+Vkxu5 8JY7dYgpxxXOvOCO2QQbTyHeMad9drqAcafMb4vZHcA+CMRipPssxPEB0yXDG0XPww uCb14HcMTTaVA== From: =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= To: Anup Patel Cc: Anup Patel , Palmer Dabbelt , Paul Walmsley , Thomas Gleixner , Rob Herring , Krzysztof Kozlowski , Frank Rowand , Conor Dooley , devicetree@vger.kernel.org, Saravana Kannan , Marc Zyngier , linux-kernel@vger.kernel.org, Atish Patra , linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Andrew Jones Subject: Re: [PATCH v12 00/25] Linux RISC-V AIA Support In-Reply-To: References: <20240127161753.114685-1-apatel@ventanamicro.com> <87h6ily53k.fsf@all.your.base.are.belong.to.us> Date: Wed, 07 Feb 2024 08:27:47 +0100 Message-ID: <874jekag3w.fsf@all.your.base.are.belong.to.us> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi! Anup Patel writes: > On Tue, Feb 6, 2024 at 9:09=E2=80=AFPM Bj=C3=B6rn T=C3=B6pel wrote: >> >> Hi Anup, >> >> Anup Patel writes: >> >> > The RISC-V AIA specification is ratified as-per the RISC-V internation= al >> > process. The latest ratified AIA specifcation can be found at: >> > https://github.com/riscv/riscv-aia/releases/download/1.0/riscv-interru= pts-1.0.pdf >> > >> > At a high-level, the AIA specification adds three things: >> > 1) AIA CSRs >> > - Improved local interrupt support >> > 2) Incoming Message Signaled Interrupt Controller (IMSIC) >> > - Per-HART MSI controller >> > - Support MSI virtualization >> > - Support IPI along with virtualization >> > 3) Advanced Platform-Level Interrupt Controller (APLIC) >> > - Wired interrupt controller >> > - In MSI-mode, converts wired interrupt into MSIs (i.e. MSI generat= or) >> > - In Direct-mode, injects external interrupts directly into HARTs >> > >> > For an overview of the AIA specification, refer the AIA virtualization >> > talk at KVM Forum 2022: >> > https://static.sched.com/hosted_files/kvmforum2022/a1/AIA_Virtualizati= on_in_KVM_RISCV_final.pdf >> > https://www.youtube.com/watch?v=3Dr071dL8Z0yo >> >> Thank you for continuing to work on this series! I like this >> direction of the series! >> >> TL;DR: I think we can get rid of most of the id/householding data >> structures, except for the irq matrix. >> >> Most of my comments are more of a design/overview nature, so I'll >> comment here in the cover letter. >> >> I took the series for a spin with and it with Alex' ftrace fix it, >> passes all my tests nicely! >> >> Now some thoughts/comments (I'm coming from the x86 side of things!): >> >> id/enable-tracking: There are a lot of different id/enabled tracking >> with corresponding locks, where there's IMO overlap with what the >> matrix provides. > > The matrix allocator does not track the enabled/disabled state of > the per-CPU IDs. This is why we have a separate per-CPU > ids_enabled_bitmap which is also used for remote synchronization > across CPUs. Exactly, but what I'm asking is if that structure is really needed. More below. >> Let's start with struct imsic_priv: >> >> | /* Dummy HW interrupt numbers */ >> | unsigned int nr_hwirqs; >> | raw_spinlock_t hwirqs_lock; >> | unsigned long *hwirqs_used_bitmap; > > The matrix allocator manages actual IDs for each CPU whereas > the Linux irq_data expects a fixed hwirq which does not change. > > Due to this, we have a dummy hwirq space which is always > fixed. The only thing that is changed under-the-hood by the > IMSIC driver is the dummy hwirq to actual HW vector (cpu, id) > mapping. Read below. I'm not talking about local_id from the irq_matrix, I'm saying use virq, which has the properties you're asking for, and doesn't require an additional structure. When an irq/desc is allocated, you have a nice unique number with the virq for the lifetime of the interrupt. >> These are used to for the domain routing (hwirq -> desc/virq), and not >> needed. Just use the same id as virq (at allocation time), and get rid >> of these data structures/corresponding functions. The lookup in the >> interrupt handler via imsic_local_priv.vectors doesn't care about >> hwirq. This is what x86 does... The imsic_vector roughly corresponds >> to apic_chip_data (nit: imsic_vector could have the chip_data suffix >> as well, at least it would have helped me!) > > Yes, imsic_vector corresponds to apic_chip_data in the x86 world. ...and I'm trying to ask the following; Given the IMSIC is pretty much x86 vector (arch/x86/kernel/apic/vector.c), I'm trying to figure out the rational why IMSIC has all the extra householding data, not needed by x86. The x86 has been battle proven, and having to deal with all kind of quirks (e.g. lost interrupts on affinity changes). >> Moving/affinity changes. The moving of a vector to another CPU >> currently involves: >> >> 1. Allocate a new vector from the matrix >> 2. Disable/enable the corresponding per-cpu ids_enabled_bitmap (nested >> spinlocks) >> 3. Trigger two IPIs to apply the bitmap >> 4. On each CPU target (imsic_local_sync()) loop the bitmap and flip >> all bits, and potentially rearm >> >> This seems a bit heavy-weight: Why are you explicitly setting/clearing >> all the bits in a loop at the local sync? > > This can be certainly optimized by introducing another > ids_dirty_bitmap. I will add this in the next revision. I rather have fewer maps, and less locks! ;-) >> x86 does it a bit differently (more lazily): The chip_data has >> prev_{cpu,vector}/move_in_progress fields, and keep both vectors >> enabled until there's an interrupt on the new vector, and then the old >> one is cleaned (irq_complete_move()). >> >> Further; When it's time to remove the old vector, x86 doesn't trigger >> an IPI on the disabling side, but queues a cleanup job on a per-cpu >> list and triggers a timeout. So, the per-cpu chip_data (per-cpu >> "vectors" in your series) can reside in two places during the transit. > > We can't avoid IPIs when moving vectors from one CPU to another > CPU because IMSIC id enable/disable is only possible through > CSRs. Also, keep in-mind that irq affinity change might be initiated > on CPU X for some interrupt targeting CPU Y which is then changed > to target CPU Z. > > In the case of x86, they have memory mapped registers which > allows one CPU to enable/disable the ID of another CPU. Nope. Same mechanics on x86 -- the cleanup has to be done one the originating core. What I asked was "what about using a timer instead of an IPI". I think this was up in the last rev as well? Check out commit bdc1dad299bb ("x86/vector: Replace IRQ_MOVE_CLEANUP_VECTOR with a timer callback") Specifically, the comment about lost interrupts, and the rational for keeping the original target active until there's a new interrupt on the new cpu. >> I wonder if this clean up is less intrusive, and you just need to >> perform what's in the per-list instead of dealing with the >> ids_enabled_bitmap? Maybe we can even remove that bitmap as well. The >> chip_data/desc has that information. This would mean that >> imsic_local_priv() would only have the local vectors (chip_data), and >> a cleanup list/timer. >> >> My general comment is that instead of having these global id-tracking >> structures, use the matrix together with some desc/chip_data local >> data, which should be sufficient. > > The "ids_enabled_bitmap", "dummy hwirqs" and private imsic_vectors > are required since the matrix allocator only manages allocation of > per-CPU IDs. The information in ids_enabled_bitmap is/could be inherent in imsic_local_priv.vectors (guess what x86 does... ;-)). Dummy hwirqs could be replaced with the virq. Hmm, seems like we're talking past each other, or at least I get the feeling I can't get my opinions out right. I'll try to do a quick PoC, to show you what I mean. That's probably easier than just talking about it. ...and maybe I'll come realizing I'm all wrong! My reaction is -- you're doing a lot of householding with a lot of locks, and my worry is that we'll just end up with same issues/bloat that x86 once had (has? ;-)). >> Random thought: Do we need to explicitly disable (csr) the vector, >> when we're changing the affinity? What if we just leave it enabled, >> and only when mask/unmask is performed it's actually explicitly masked >> (writes to the csr)? > > We should not leave it enabled because some rough/buggy device > can inject spurious interrupts using MSI writes to unused enabled > interrupts. OK! >> >> Missing features (which can be added later): >> * Reservation mode/activate support (allocate many MSI, but only >> request/activate a subset) > > I did not see any PCIe or platform device requiring this kind of > reservation. Any examples ? It's not a requirement. Some devices allocate a gazillion interrupts (NICs with many QoS queues, e.g.), but only activate a subset (via request_irq()). A system using these kind of devices might run out of interrupts. Problems you run into once you leave the embedded world, pretty much. >> * Handle managed interrupts > > Any examples of managed interrupts in the RISC-V world ? E.g. all nvme drives: nvme_setup_irqs(), and I'd assume contemporary netdev drivers would use it. Typically devices with per-cpu queues. >> * There might be some irqd flags are missing, which mostly cpuhp care >> about (e.g. irqd_*_single_target())... > > Okay, let me check and update. I haven't dug much into cpuhp, so I'm out on a limb here... >> Finally; Given that the APLIC requires a lot more patches, depending >> on how the review process moves on -- maybe the IMSIC side could go as >> a separate series? >> > > The most popular implementation choice across RISC-V platforms > will be IMSIC + APLIC so both drivers should go together. In fact, > we need both drivers for the QEMU virt machine as well because > UART interrupt (and other wired interrupts) on the QEMU virt > machine goes through APLIC. Thanks for clearing that out! Hmm, an IMSIC only QEMU would be awesome. Cheers, Bj=C3=B6rn 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 A4792C4828F for ; Wed, 7 Feb 2024 07:28:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:References :In-Reply-To:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=q3xxvNoff9l7f2gGa+stGSy4TFXE6h8UrbFTvTsVh4s=; b=u7vkQPTgwrPRC2 CzuzBUhjIN9X4LMQZogSecOmXAqdOkkTbdzOAVeoDFSc8RhmIVZs+6Oxg96WyoU964xZ5mrT0P94g YKI8aQntApMFWf0Mm2R+7Tv/FZGgBemgl5z2FRKMPJ/XAxEV60G1qN60DlRiy5+gZX7W+duUI+Z2+ t50t2wggzuKiMb32kg8KfFmRW3+VYwBur/8f8yRDO3C+BFfVdJn45FFFrCLn6Uz4lEzpxKW66OqP2 N/RNvWNCBX6lhzBZZucNdZUyi/dHnEXl4ptI/yR7PzahAW4Yzn1WQFsh/Js9fydglR26wgk4GMMUG 762drLyLXcDc1ZT4QIaw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rXcLd-00000009w9L-0HCP; Wed, 07 Feb 2024 07:27:57 +0000 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rXcLZ-00000009w8b-3SK3; Wed, 07 Feb 2024 07:27:55 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id C89F3CE17BB; Wed, 7 Feb 2024 07:27:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7ADF0C433C7; Wed, 7 Feb 2024 07:27:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707290871; bh=tEZnWAW1WLvWFg7OBlQaqlPnnLL0RBXGxDvchX99pdY=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=QOb7mJN82YyN+0GfAzTMA5T+JNOvvAQxdQNzdM8XENErQnYNYErfQ10O/mIKRGdTF bKdv2gE9hycUvh3pEOQ7oo7nc08Edp+cj2to5e+Rc2mXV7W++glUWTICkXYDrDrt63 ypP2XCEzM1RJ7S9l4V3eyElb8Gns175HDwXs5CuWPC8eSoYio5jWs66nOqKFL3twMZ khZ3gofxXcjMMgVyho0ppFfu8j7TdCBJnBO2cGDFWLe/bU85w1U6tDK5ErZa+Vkxu5 8JY7dYgpxxXOvOCO2QQbTyHeMad9drqAcafMb4vZHcA+CMRipPssxPEB0yXDG0XPww uCb14HcMTTaVA== From: =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= To: Anup Patel Cc: Anup Patel , Palmer Dabbelt , Paul Walmsley , Thomas Gleixner , Rob Herring , Krzysztof Kozlowski , Frank Rowand , Conor Dooley , devicetree@vger.kernel.org, Saravana Kannan , Marc Zyngier , linux-kernel@vger.kernel.org, Atish Patra , linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Andrew Jones Subject: Re: [PATCH v12 00/25] Linux RISC-V AIA Support In-Reply-To: References: <20240127161753.114685-1-apatel@ventanamicro.com> <87h6ily53k.fsf@all.your.base.are.belong.to.us> Date: Wed, 07 Feb 2024 08:27:47 +0100 Message-ID: <874jekag3w.fsf@all.your.base.are.belong.to.us> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240206_232754_247294_A227A859 X-CRM114-Status: GOOD ( 51.80 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org SGkhCgpBbnVwIFBhdGVsIDxhbnVwQGJyYWluZmF1bHQub3JnPiB3cml0ZXM6Cgo+IE9uIFR1ZSwg RmViIDYsIDIwMjQgYXQgOTowOeKAr1BNIEJqw7ZybiBUw7ZwZWwgPGJqb3JuQGtlcm5lbC5vcmc+ IHdyb3RlOgo+Pgo+PiBIaSBBbnVwLAo+Pgo+PiBBbnVwIFBhdGVsIDxhcGF0ZWxAdmVudGFuYW1p Y3JvLmNvbT4gd3JpdGVzOgo+Pgo+PiA+IFRoZSBSSVNDLVYgQUlBIHNwZWNpZmljYXRpb24gaXMg cmF0aWZpZWQgYXMtcGVyIHRoZSBSSVNDLVYgaW50ZXJuYXRpb25hbAo+PiA+IHByb2Nlc3MuIFRo ZSBsYXRlc3QgcmF0aWZpZWQgQUlBIHNwZWNpZmNhdGlvbiBjYW4gYmUgZm91bmQgYXQ6Cj4+ID4g aHR0cHM6Ly9naXRodWIuY29tL3Jpc2N2L3Jpc2N2LWFpYS9yZWxlYXNlcy9kb3dubG9hZC8xLjAv cmlzY3YtaW50ZXJydXB0cy0xLjAucGRmCj4+ID4KPj4gPiBBdCBhIGhpZ2gtbGV2ZWwsIHRoZSBB SUEgc3BlY2lmaWNhdGlvbiBhZGRzIHRocmVlIHRoaW5nczoKPj4gPiAxKSBBSUEgQ1NScwo+PiA+ ICAgIC0gSW1wcm92ZWQgbG9jYWwgaW50ZXJydXB0IHN1cHBvcnQKPj4gPiAyKSBJbmNvbWluZyBN ZXNzYWdlIFNpZ25hbGVkIEludGVycnVwdCBDb250cm9sbGVyIChJTVNJQykKPj4gPiAgICAtIFBl ci1IQVJUIE1TSSBjb250cm9sbGVyCj4+ID4gICAgLSBTdXBwb3J0IE1TSSB2aXJ0dWFsaXphdGlv bgo+PiA+ICAgIC0gU3VwcG9ydCBJUEkgYWxvbmcgd2l0aCB2aXJ0dWFsaXphdGlvbgo+PiA+IDMp IEFkdmFuY2VkIFBsYXRmb3JtLUxldmVsIEludGVycnVwdCBDb250cm9sbGVyIChBUExJQykKPj4g PiAgICAtIFdpcmVkIGludGVycnVwdCBjb250cm9sbGVyCj4+ID4gICAgLSBJbiBNU0ktbW9kZSwg Y29udmVydHMgd2lyZWQgaW50ZXJydXB0IGludG8gTVNJcyAoaS5lLiBNU0kgZ2VuZXJhdG9yKQo+ PiA+ICAgIC0gSW4gRGlyZWN0LW1vZGUsIGluamVjdHMgZXh0ZXJuYWwgaW50ZXJydXB0cyBkaXJl Y3RseSBpbnRvIEhBUlRzCj4+ID4KPj4gPiBGb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIEFJQSBzcGVj aWZpY2F0aW9uLCByZWZlciB0aGUgQUlBIHZpcnR1YWxpemF0aW9uCj4+ID4gdGFsayBhdCBLVk0g Rm9ydW0gMjAyMjoKPj4gPiBodHRwczovL3N0YXRpYy5zY2hlZC5jb20vaG9zdGVkX2ZpbGVzL2t2 bWZvcnVtMjAyMi9hMS9BSUFfVmlydHVhbGl6YXRpb25faW5fS1ZNX1JJU0NWX2ZpbmFsLnBkZgo+ PiA+IGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9cjA3MWRMOFoweW8KPj4KPj4gVGhh bmsgeW91IGZvciBjb250aW51aW5nIHRvIHdvcmsgb24gdGhpcyBzZXJpZXMhIEkgbGlrZSB0aGlz Cj4+IGRpcmVjdGlvbiBvZiB0aGUgc2VyaWVzIQo+Pgo+PiBUTDtEUjogSSB0aGluayB3ZSBjYW4g Z2V0IHJpZCBvZiBtb3N0IG9mIHRoZSBpZC9ob3VzZWhvbGRpbmcgZGF0YQo+PiBzdHJ1Y3R1cmVz LCBleGNlcHQgZm9yIHRoZSBpcnEgbWF0cml4Lgo+Pgo+PiBNb3N0IG9mIG15IGNvbW1lbnRzIGFy ZSBtb3JlIG9mIGEgZGVzaWduL292ZXJ2aWV3IG5hdHVyZSwgc28gSSdsbAo+PiBjb21tZW50IGhl cmUgaW4gdGhlIGNvdmVyIGxldHRlci4KPj4KPj4gSSB0b29rIHRoZSBzZXJpZXMgZm9yIGEgc3Bp biB3aXRoIGFuZCBpdCB3aXRoIEFsZXgnIGZ0cmFjZSBmaXggaXQsCj4+IHBhc3NlcyBhbGwgbXkg dGVzdHMgbmljZWx5IQo+Pgo+PiBOb3cgc29tZSB0aG91Z2h0cy9jb21tZW50cyAoSSdtIGNvbWlu ZyBmcm9tIHRoZSB4ODYgc2lkZSBvZiB0aGluZ3MhKToKPj4KPj4gaWQvZW5hYmxlLXRyYWNraW5n OiBUaGVyZSBhcmUgYSBsb3Qgb2YgZGlmZmVyZW50IGlkL2VuYWJsZWQgdHJhY2tpbmcKPj4gd2l0 aCBjb3JyZXNwb25kaW5nIGxvY2tzLCB3aGVyZSB0aGVyZSdzIElNTyBvdmVybGFwIHdpdGggd2hh dCB0aGUKPj4gbWF0cml4IHByb3ZpZGVzLgo+Cj4gVGhlIG1hdHJpeCBhbGxvY2F0b3IgZG9lcyBu b3QgdHJhY2sgdGhlIGVuYWJsZWQvZGlzYWJsZWQgc3RhdGUgb2YKPiB0aGUgcGVyLUNQVSBJRHMu IFRoaXMgaXMgd2h5IHdlIGhhdmUgYSBzZXBhcmF0ZSBwZXItQ1BVCj4gaWRzX2VuYWJsZWRfYml0 bWFwIHdoaWNoIGlzIGFsc28gdXNlZCBmb3IgcmVtb3RlIHN5bmNocm9uaXphdGlvbgo+IGFjcm9z cyBDUFVzLgoKRXhhY3RseSwgYnV0IHdoYXQgSSdtIGFza2luZyBpcyBpZiB0aGF0IHN0cnVjdHVy ZSBpcyByZWFsbHkgbmVlZGVkLiBNb3JlCmJlbG93LgoKPj4gTGV0J3Mgc3RhcnQgd2l0aCBzdHJ1 Y3QgaW1zaWNfcHJpdjoKPj4KPj4gICAgfCAvKiBEdW1teSBIVyBpbnRlcnJ1cHQgbnVtYmVycyAq Lwo+PiAgICB8IHVuc2lnbmVkIGludCBucl9od2lycXM7Cj4+ICAgIHwgcmF3X3NwaW5sb2NrX3Qg aHdpcnFzX2xvY2s7Cj4+ICAgIHwgdW5zaWduZWQgbG9uZyAqaHdpcnFzX3VzZWRfYml0bWFwOwo+ Cj4gVGhlIG1hdHJpeCBhbGxvY2F0b3IgbWFuYWdlcyBhY3R1YWwgSURzIGZvciBlYWNoIENQVSB3 aGVyZWFzCj4gdGhlIExpbnV4IGlycV9kYXRhIGV4cGVjdHMgYSBmaXhlZCBod2lycSB3aGljaCBk b2VzIG5vdCBjaGFuZ2UuCj4KPiBEdWUgdG8gdGhpcywgd2UgaGF2ZSBhIGR1bW15IGh3aXJxIHNw YWNlIHdoaWNoIGlzIGFsd2F5cwo+IGZpeGVkLiBUaGUgb25seSB0aGluZyB0aGF0IGlzIGNoYW5n ZWQgdW5kZXItdGhlLWhvb2QgYnkgdGhlCj4gSU1TSUMgZHJpdmVyIGlzIHRoZSBkdW1teSBod2ly cSB0byBhY3R1YWwgSFcgdmVjdG9yIChjcHUsIGlkKQo+IG1hcHBpbmcuCgpSZWFkIGJlbG93LiBJ J20gbm90IHRhbGtpbmcgYWJvdXQgbG9jYWxfaWQgZnJvbSB0aGUgaXJxX21hdHJpeCwgSSdtCnNh eWluZyB1c2UgdmlycSwgd2hpY2ggaGFzIHRoZSBwcm9wZXJ0aWVzIHlvdSdyZSBhc2tpbmcgZm9y LCBhbmQgZG9lc24ndApyZXF1aXJlIGFuIGFkZGl0aW9uYWwgc3RydWN0dXJlLiBXaGVuIGFuIGly cS9kZXNjIGlzIGFsbG9jYXRlZCwgeW91IGhhdmUKYSBuaWNlIHVuaXF1ZSBudW1iZXIgd2l0aCB0 aGUgdmlycSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBpbnRlcnJ1cHQuCgo+PiBUaGVzZSBhcmUg dXNlZCB0byBmb3IgdGhlIGRvbWFpbiByb3V0aW5nIChod2lycSAtPiBkZXNjL3ZpcnEpLCBhbmQg bm90Cj4+IG5lZWRlZC4gSnVzdCB1c2UgdGhlIHNhbWUgaWQgYXMgdmlycSAoYXQgYWxsb2NhdGlv biB0aW1lKSwgYW5kIGdldCByaWQKPj4gb2YgdGhlc2UgZGF0YSBzdHJ1Y3R1cmVzL2NvcnJlc3Bv bmRpbmcgZnVuY3Rpb25zLiBUaGUgbG9va3VwIGluIHRoZQo+PiBpbnRlcnJ1cHQgaGFuZGxlciB2 aWEgaW1zaWNfbG9jYWxfcHJpdi52ZWN0b3JzIGRvZXNuJ3QgY2FyZSBhYm91dAo+PiBod2lycS4g VGhpcyBpcyB3aGF0IHg4NiBkb2VzLi4uIFRoZSBpbXNpY192ZWN0b3Igcm91Z2hseSBjb3JyZXNw b25kcwo+PiB0byBhcGljX2NoaXBfZGF0YSAobml0OiBpbXNpY192ZWN0b3IgY291bGQgaGF2ZSB0 aGUgY2hpcF9kYXRhIHN1ZmZpeAo+PiBhcyB3ZWxsLCBhdCBsZWFzdCBpdCB3b3VsZCBoYXZlIGhl bHBlZCBtZSEpCj4KPiBZZXMsIGltc2ljX3ZlY3RvciBjb3JyZXNwb25kcyB0byBhcGljX2NoaXBf ZGF0YSBpbiB0aGUgeDg2IHdvcmxkLgoKLi4uYW5kIEknbSB0cnlpbmcgdG8gYXNrIHRoZSBmb2xs b3dpbmc7IEdpdmVuIHRoZSBJTVNJQyBpcyBwcmV0dHkgbXVjaAp4ODYgdmVjdG9yIChhcmNoL3g4 Ni9rZXJuZWwvYXBpYy92ZWN0b3IuYyksIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUKcmF0 aW9uYWwgd2h5IElNU0lDIGhhcyBhbGwgdGhlIGV4dHJhIGhvdXNlaG9sZGluZyBkYXRhLCBub3Qg bmVlZGVkIGJ5Cng4Ni4gVGhlIHg4NiBoYXMgYmVlbiBiYXR0bGUgcHJvdmVuLCBhbmQgaGF2aW5n IHRvIGRlYWwgd2l0aCBhbGwga2luZCBvZgpxdWlya3MgKGUuZy4gbG9zdCBpbnRlcnJ1cHRzIG9u IGFmZmluaXR5IGNoYW5nZXMpLgoKPj4gTW92aW5nL2FmZmluaXR5IGNoYW5nZXMuIFRoZSBtb3Zp bmcgb2YgYSB2ZWN0b3IgdG8gYW5vdGhlciBDUFUKPj4gY3VycmVudGx5IGludm9sdmVzOgo+Pgo+ PiAxLiBBbGxvY2F0ZSBhIG5ldyB2ZWN0b3IgZnJvbSB0aGUgbWF0cml4Cj4+IDIuIERpc2FibGUv ZW5hYmxlIHRoZSBjb3JyZXNwb25kaW5nIHBlci1jcHUgaWRzX2VuYWJsZWRfYml0bWFwIChuZXN0 ZWQKPj4gICAgc3BpbmxvY2tzKQo+PiAzLiBUcmlnZ2VyIHR3byBJUElzIHRvIGFwcGx5IHRoZSBi aXRtYXAKPj4gNC4gT24gZWFjaCBDUFUgdGFyZ2V0IChpbXNpY19sb2NhbF9zeW5jKCkpIGxvb3Ag dGhlIGJpdG1hcCBhbmQgZmxpcAo+PiAgICBhbGwgYml0cywgYW5kIHBvdGVudGlhbGx5IHJlYXJt Cj4+Cj4+IFRoaXMgc2VlbXMgYSBiaXQgaGVhdnktd2VpZ2h0OiBXaHkgYXJlIHlvdSBleHBsaWNp dGx5IHNldHRpbmcvY2xlYXJpbmcKPj4gYWxsIHRoZSBiaXRzIGluIGEgbG9vcCBhdCB0aGUgbG9j YWwgc3luYz8KPgo+IFRoaXMgY2FuIGJlIGNlcnRhaW5seSBvcHRpbWl6ZWQgYnkgaW50cm9kdWNp bmcgYW5vdGhlcgo+IGlkc19kaXJ0eV9iaXRtYXAuIEkgd2lsbCBhZGQgdGhpcyBpbiB0aGUgbmV4 dCByZXZpc2lvbi4KCkkgcmF0aGVyIGhhdmUgZmV3ZXIgbWFwcywgYW5kIGxlc3MgbG9ja3MhIDst KQoKPj4geDg2IGRvZXMgaXQgYSBiaXQgZGlmZmVyZW50bHkgKG1vcmUgbGF6aWx5KTogVGhlIGNo aXBfZGF0YSBoYXMKPj4gcHJldl97Y3B1LHZlY3Rvcn0vbW92ZV9pbl9wcm9ncmVzcyBmaWVsZHMs IGFuZCBrZWVwIGJvdGggdmVjdG9ycwo+PiBlbmFibGVkIHVudGlsIHRoZXJlJ3MgYW4gaW50ZXJy dXB0IG9uIHRoZSBuZXcgdmVjdG9yLCBhbmQgdGhlbiB0aGUgb2xkCj4+IG9uZSBpcyBjbGVhbmVk IChpcnFfY29tcGxldGVfbW92ZSgpKS4KPj4KPj4gRnVydGhlcjsgV2hlbiBpdCdzIHRpbWUgdG8g cmVtb3ZlIHRoZSBvbGQgdmVjdG9yLCB4ODYgZG9lc24ndCB0cmlnZ2VyCj4+IGFuIElQSSBvbiB0 aGUgZGlzYWJsaW5nIHNpZGUsIGJ1dCBxdWV1ZXMgYSBjbGVhbnVwIGpvYiBvbiBhIHBlci1jcHUK Pj4gbGlzdCBhbmQgdHJpZ2dlcnMgYSB0aW1lb3V0LiBTbywgdGhlIHBlci1jcHUgY2hpcF9kYXRh IChwZXItY3B1Cj4+ICJ2ZWN0b3JzIiBpbiB5b3VyIHNlcmllcykgY2FuIHJlc2lkZSBpbiB0d28g cGxhY2VzIGR1cmluZyB0aGUgdHJhbnNpdC4KPgo+IFdlIGNhbid0IGF2b2lkIElQSXMgd2hlbiBt b3ZpbmcgdmVjdG9ycyBmcm9tIG9uZSBDUFUgdG8gYW5vdGhlcgo+IENQVSBiZWNhdXNlIElNU0lD IGlkIGVuYWJsZS9kaXNhYmxlIGlzIG9ubHkgcG9zc2libGUgdGhyb3VnaAo+IENTUnMuIEFsc28s IGtlZXAgaW4tbWluZCB0aGF0IGlycSBhZmZpbml0eSBjaGFuZ2UgbWlnaHQgYmUgaW5pdGlhdGVk Cj4gb24gQ1BVIFggZm9yIHNvbWUgaW50ZXJydXB0IHRhcmdldGluZyBDUFUgWSB3aGljaCBpcyB0 aGVuIGNoYW5nZWQKPiB0byB0YXJnZXQgQ1BVIFouCj4KPiBJbiB0aGUgY2FzZSBvZiB4ODYsIHRo ZXkgaGF2ZSBtZW1vcnkgbWFwcGVkIHJlZ2lzdGVycyB3aGljaAo+IGFsbG93cyBvbmUgQ1BVIHRv IGVuYWJsZS9kaXNhYmxlIHRoZSBJRCBvZiBhbm90aGVyIENQVS4KCk5vcGUuIFNhbWUgbWVjaGFu aWNzIG9uIHg4NiAtLSB0aGUgY2xlYW51cCBoYXMgdG8gYmUgZG9uZSBvbmUgdGhlCm9yaWdpbmF0 aW5nIGNvcmUuIFdoYXQgSSBhc2tlZCB3YXMgIndoYXQgYWJvdXQgdXNpbmcgYSB0aW1lciBpbnN0 ZWFkIG9mCmFuIElQSSIuIEkgdGhpbmsgdGhpcyB3YXMgdXAgaW4gdGhlIGxhc3QgcmV2IGFzIHdl bGw/CgpDaGVjayBvdXQgY29tbWl0IGJkYzFkYWQyOTliYiAoIng4Ni92ZWN0b3I6IFJlcGxhY2UK SVJRX01PVkVfQ0xFQU5VUF9WRUNUT1Igd2l0aCBhIHRpbWVyIGNhbGxiYWNrIikgU3BlY2lmaWNh bGx5LCB0aGUKY29tbWVudCBhYm91dCBsb3N0IGludGVycnVwdHMsIGFuZCB0aGUgcmF0aW9uYWwg Zm9yIGtlZXBpbmcgdGhlIG9yaWdpbmFsCnRhcmdldCBhY3RpdmUgdW50aWwgdGhlcmUncyBhIG5l dyBpbnRlcnJ1cHQgb24gdGhlIG5ldyBjcHUuCgo+PiBJIHdvbmRlciBpZiB0aGlzIGNsZWFuIHVw IGlzIGxlc3MgaW50cnVzaXZlLCBhbmQgeW91IGp1c3QgbmVlZCB0bwo+PiBwZXJmb3JtIHdoYXQn cyBpbiB0aGUgcGVyLWxpc3QgaW5zdGVhZCBvZiBkZWFsaW5nIHdpdGggdGhlCj4+IGlkc19lbmFi bGVkX2JpdG1hcD8gTWF5YmUgd2UgY2FuIGV2ZW4gcmVtb3ZlIHRoYXQgYml0bWFwIGFzIHdlbGwu IFRoZQo+PiBjaGlwX2RhdGEvZGVzYyBoYXMgdGhhdCBpbmZvcm1hdGlvbi4gVGhpcyB3b3VsZCBt ZWFuIHRoYXQKPj4gaW1zaWNfbG9jYWxfcHJpdigpIHdvdWxkIG9ubHkgaGF2ZSB0aGUgbG9jYWwg dmVjdG9ycyAoY2hpcF9kYXRhKSwgYW5kCj4+IGEgY2xlYW51cCBsaXN0L3RpbWVyLgo+Pgo+PiBN eSBnZW5lcmFsIGNvbW1lbnQgaXMgdGhhdCBpbnN0ZWFkIG9mIGhhdmluZyB0aGVzZSBnbG9iYWwg aWQtdHJhY2tpbmcKPj4gc3RydWN0dXJlcywgdXNlIHRoZSBtYXRyaXggdG9nZXRoZXIgd2l0aCBz b21lIGRlc2MvY2hpcF9kYXRhIGxvY2FsCj4+IGRhdGEsIHdoaWNoIHNob3VsZCBiZSBzdWZmaWNp ZW50Lgo+Cj4gVGhlICJpZHNfZW5hYmxlZF9iaXRtYXAiLCAiZHVtbXkgaHdpcnFzIiBhbmQgcHJp dmF0ZSBpbXNpY192ZWN0b3JzCj4gYXJlIHJlcXVpcmVkIHNpbmNlIHRoZSBtYXRyaXggYWxsb2Nh dG9yIG9ubHkgbWFuYWdlcyBhbGxvY2F0aW9uIG9mCj4gcGVyLUNQVSBJRHMuCgpUaGUgaW5mb3Jt YXRpb24gaW4gaWRzX2VuYWJsZWRfYml0bWFwIGlzL2NvdWxkIGJlIGluaGVyZW50IGluCmltc2lj X2xvY2FsX3ByaXYudmVjdG9ycyAoZ3Vlc3Mgd2hhdCB4ODYgZG9lcy4uLiA7LSkpLgoKRHVtbXkg aHdpcnFzIGNvdWxkIGJlIHJlcGxhY2VkIHdpdGggdGhlIHZpcnEuCgpIbW0sIHNlZW1zIGxpa2Ug d2UncmUgdGFsa2luZyBwYXN0IGVhY2ggb3RoZXIsIG9yIGF0IGxlYXN0IEkgZ2V0IHRoZQpmZWVs aW5nIEkgY2FuJ3QgZ2V0IG15IG9waW5pb25zIG91dCByaWdodC4gSSdsbCB0cnkgdG8gZG8gYSBx dWljayBQb0MsCnRvIHNob3cgeW91IHdoYXQgSSBtZWFuLiBUaGF0J3MgcHJvYmFibHkgZWFzaWVy IHRoYW4ganVzdCB0YWxraW5nIGFib3V0Cml0LiAuLi5hbmQgbWF5YmUgSSdsbCBjb21lIHJlYWxp emluZyBJJ20gYWxsIHdyb25nIQoKTXkgcmVhY3Rpb24gaXMgLS0geW91J3JlIGRvaW5nIGEgbG90 IG9mIGhvdXNlaG9sZGluZyB3aXRoIGEgbG90IG9mCmxvY2tzLCBhbmQgbXkgd29ycnkgaXMgdGhh dCB3ZSdsbCBqdXN0IGVuZCB1cCB3aXRoIHNhbWUgaXNzdWVzL2Jsb2F0CnRoYXQgeDg2IG9uY2Ug aGFkIChoYXM/IDstKSkuCgo+PiBSYW5kb20gdGhvdWdodDogRG8gd2UgbmVlZCB0byBleHBsaWNp dGx5IGRpc2FibGUgKGNzcikgdGhlIHZlY3RvciwKPj4gd2hlbiB3ZSdyZSBjaGFuZ2luZyB0aGUg YWZmaW5pdHk/IFdoYXQgaWYgd2UganVzdCBsZWF2ZSBpdCBlbmFibGVkLAo+PiBhbmQgb25seSB3 aGVuIG1hc2svdW5tYXNrIGlzIHBlcmZvcm1lZCBpdCdzIGFjdHVhbGx5IGV4cGxpY2l0bHkgbWFz a2VkCj4+ICh3cml0ZXMgdG8gdGhlIGNzcik/Cj4KPiBXZSBzaG91bGQgbm90IGxlYXZlIGl0IGVu YWJsZWQgYmVjYXVzZSBzb21lIHJvdWdoL2J1Z2d5IGRldmljZQo+IGNhbiBpbmplY3Qgc3B1cmlv dXMgaW50ZXJydXB0cyB1c2luZyBNU0kgd3JpdGVzIHRvIHVudXNlZCBlbmFibGVkCj4gaW50ZXJy dXB0cy4KCk9LIQoKPj4KPj4gTWlzc2luZyBmZWF0dXJlcyAod2hpY2ggY2FuIGJlIGFkZGVkIGxh dGVyKToKPj4gKiBSZXNlcnZhdGlvbiBtb2RlL2FjdGl2YXRlIHN1cHBvcnQgKGFsbG9jYXRlIG1h bnkgTVNJLCBidXQgb25seQo+PiAgIHJlcXVlc3QvYWN0aXZhdGUgYSBzdWJzZXQpCj4KPiBJIGRp ZCBub3Qgc2VlIGFueSBQQ0llIG9yIHBsYXRmb3JtIGRldmljZSByZXF1aXJpbmcgdGhpcyBraW5k IG9mCj4gcmVzZXJ2YXRpb24uIEFueSBleGFtcGxlcyA/CgpJdCdzIG5vdCBhIHJlcXVpcmVtZW50 LiBTb21lIGRldmljZXMgYWxsb2NhdGUgYSBnYXppbGxpb24gaW50ZXJydXB0cwooTklDcyB3aXRo IG1hbnkgUW9TIHF1ZXVlcywgZS5nLiksIGJ1dCBvbmx5IGFjdGl2YXRlIGEgc3Vic2V0ICh2aWEK cmVxdWVzdF9pcnEoKSkuIEEgc3lzdGVtIHVzaW5nIHRoZXNlIGtpbmQgb2YgZGV2aWNlcyBtaWdo dCBydW4gb3V0IG9mCmludGVycnVwdHMuCgpQcm9ibGVtcyB5b3UgcnVuIGludG8gb25jZSB5b3Ug bGVhdmUgdGhlIGVtYmVkZGVkIHdvcmxkLCBwcmV0dHkgbXVjaC4KCj4+ICogSGFuZGxlIG1hbmFn ZWQgaW50ZXJydXB0cwo+Cj4gQW55IGV4YW1wbGVzIG9mIG1hbmFnZWQgaW50ZXJydXB0cyBpbiB0 aGUgUklTQy1WIHdvcmxkID8KCkUuZy4gYWxsIG52bWUgZHJpdmVzOiBudm1lX3NldHVwX2lycXMo KSwgYW5kIEknZCBhc3N1bWUgY29udGVtcG9yYXJ5Cm5ldGRldiBkcml2ZXJzIHdvdWxkIHVzZSBp dC4gVHlwaWNhbGx5IGRldmljZXMgd2l0aCBwZXItY3B1IHF1ZXVlcy4KCj4+ICogVGhlcmUgbWln aHQgYmUgc29tZSBpcnFkIGZsYWdzIGFyZSBtaXNzaW5nLCB3aGljaCBtb3N0bHkgY3B1aHAgY2Fy ZQo+PiAgIGFib3V0IChlLmcuIGlycWRfKl9zaW5nbGVfdGFyZ2V0KCkpLi4uCj4KPiBPa2F5LCBs ZXQgbWUgY2hlY2sgYW5kIHVwZGF0ZS4KCkkgaGF2ZW4ndCBkdWcgbXVjaCBpbnRvIGNwdWhwLCBz byBJJ20gb3V0IG9uIGEgbGltYiBoZXJlLi4uCgo+PiBGaW5hbGx5OyBHaXZlbiB0aGF0IHRoZSBB UExJQyByZXF1aXJlcyBhIGxvdCBtb3JlIHBhdGNoZXMsIGRlcGVuZGluZwo+PiBvbiBob3cgdGhl IHJldmlldyBwcm9jZXNzIG1vdmVzIG9uIC0tIG1heWJlIHRoZSBJTVNJQyBzaWRlIGNvdWxkIGdv IGFzCj4+IGEgc2VwYXJhdGUgc2VyaWVzPwo+Pgo+Cj4gVGhlIG1vc3QgcG9wdWxhciBpbXBsZW1l bnRhdGlvbiBjaG9pY2UgYWNyb3NzIFJJU0MtViBwbGF0Zm9ybXMKPiB3aWxsIGJlIElNU0lDICsg QVBMSUMgc28gYm90aCBkcml2ZXJzIHNob3VsZCBnbyB0b2dldGhlci4gSW4gZmFjdCwKPiB3ZSBu ZWVkIGJvdGggZHJpdmVycyBmb3IgdGhlIFFFTVUgdmlydCBtYWNoaW5lIGFzIHdlbGwgYmVjYXVz ZQo+IFVBUlQgaW50ZXJydXB0IChhbmQgb3RoZXIgd2lyZWQgaW50ZXJydXB0cykgb24gdGhlIFFF TVUgdmlydAo+IG1hY2hpbmUgZ29lcyB0aHJvdWdoIEFQTElDLgoKVGhhbmtzIGZvciBjbGVhcmlu ZyB0aGF0IG91dCEgSG1tLCBhbiBJTVNJQyBvbmx5IFFFTVUgd291bGQgYmUgYXdlc29tZS4KCgpD aGVlcnMsCkJqw7ZybgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVh ZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1y aXNjdgo= 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 35D00C4828D for ; Wed, 7 Feb 2024 07:28:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:References :In-Reply-To:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=j0Y4XFjgtj/egRZr+iPVjbJudccw6keefK9wYMNjDJc=; b=MqOaBXB1mF3LO8 UNcmoYmQGjneFg9rOplo9JdRFWuKg5tA/0s96fFYaStA8c9++i2aX7KSQpN5F6civM0ewR5fSXTS/ +hSxJqrrmC5nQ7vSrqTSnJ13ItgP72MhvdKljJOw7BCZHsP/T/ocvH4FfGi7LOvvSnUd0LeF8IQYA O7WQQBlvol+0yO2F8trqfd9oJvx2lyifi8dsv2hhB/+L6TpKMh0W1K7a/mPvBAgJy4NOQGNkue066 aEA3o08Wcfei+zsIR9sAWpMjwGq/P7b2+bdvj4+Y+hig+XsSbbfGfB8snfrYZAqF8CztDFqwamcS1 HEaHDpCKU/Eb0pvD603Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rXcLc-00000009w94-1uwE; Wed, 07 Feb 2024 07:27:56 +0000 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rXcLZ-00000009w8b-3SK3; Wed, 07 Feb 2024 07:27:55 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id C89F3CE17BB; Wed, 7 Feb 2024 07:27:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7ADF0C433C7; Wed, 7 Feb 2024 07:27:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707290871; bh=tEZnWAW1WLvWFg7OBlQaqlPnnLL0RBXGxDvchX99pdY=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=QOb7mJN82YyN+0GfAzTMA5T+JNOvvAQxdQNzdM8XENErQnYNYErfQ10O/mIKRGdTF bKdv2gE9hycUvh3pEOQ7oo7nc08Edp+cj2to5e+Rc2mXV7W++glUWTICkXYDrDrt63 ypP2XCEzM1RJ7S9l4V3eyElb8Gns175HDwXs5CuWPC8eSoYio5jWs66nOqKFL3twMZ khZ3gofxXcjMMgVyho0ppFfu8j7TdCBJnBO2cGDFWLe/bU85w1U6tDK5ErZa+Vkxu5 8JY7dYgpxxXOvOCO2QQbTyHeMad9drqAcafMb4vZHcA+CMRipPssxPEB0yXDG0XPww uCb14HcMTTaVA== From: =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= To: Anup Patel Cc: Anup Patel , Palmer Dabbelt , Paul Walmsley , Thomas Gleixner , Rob Herring , Krzysztof Kozlowski , Frank Rowand , Conor Dooley , devicetree@vger.kernel.org, Saravana Kannan , Marc Zyngier , linux-kernel@vger.kernel.org, Atish Patra , linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Andrew Jones Subject: Re: [PATCH v12 00/25] Linux RISC-V AIA Support In-Reply-To: References: <20240127161753.114685-1-apatel@ventanamicro.com> <87h6ily53k.fsf@all.your.base.are.belong.to.us> Date: Wed, 07 Feb 2024 08:27:47 +0100 Message-ID: <874jekag3w.fsf@all.your.base.are.belong.to.us> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240206_232754_247294_A227A859 X-CRM114-Status: GOOD ( 51.80 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkhCgpBbnVwIFBhdGVsIDxhbnVwQGJyYWluZmF1bHQub3JnPiB3cml0ZXM6Cgo+IE9uIFR1ZSwg RmViIDYsIDIwMjQgYXQgOTowOeKAr1BNIEJqw7ZybiBUw7ZwZWwgPGJqb3JuQGtlcm5lbC5vcmc+ IHdyb3RlOgo+Pgo+PiBIaSBBbnVwLAo+Pgo+PiBBbnVwIFBhdGVsIDxhcGF0ZWxAdmVudGFuYW1p Y3JvLmNvbT4gd3JpdGVzOgo+Pgo+PiA+IFRoZSBSSVNDLVYgQUlBIHNwZWNpZmljYXRpb24gaXMg cmF0aWZpZWQgYXMtcGVyIHRoZSBSSVNDLVYgaW50ZXJuYXRpb25hbAo+PiA+IHByb2Nlc3MuIFRo ZSBsYXRlc3QgcmF0aWZpZWQgQUlBIHNwZWNpZmNhdGlvbiBjYW4gYmUgZm91bmQgYXQ6Cj4+ID4g aHR0cHM6Ly9naXRodWIuY29tL3Jpc2N2L3Jpc2N2LWFpYS9yZWxlYXNlcy9kb3dubG9hZC8xLjAv cmlzY3YtaW50ZXJydXB0cy0xLjAucGRmCj4+ID4KPj4gPiBBdCBhIGhpZ2gtbGV2ZWwsIHRoZSBB SUEgc3BlY2lmaWNhdGlvbiBhZGRzIHRocmVlIHRoaW5nczoKPj4gPiAxKSBBSUEgQ1NScwo+PiA+ ICAgIC0gSW1wcm92ZWQgbG9jYWwgaW50ZXJydXB0IHN1cHBvcnQKPj4gPiAyKSBJbmNvbWluZyBN ZXNzYWdlIFNpZ25hbGVkIEludGVycnVwdCBDb250cm9sbGVyIChJTVNJQykKPj4gPiAgICAtIFBl ci1IQVJUIE1TSSBjb250cm9sbGVyCj4+ID4gICAgLSBTdXBwb3J0IE1TSSB2aXJ0dWFsaXphdGlv bgo+PiA+ICAgIC0gU3VwcG9ydCBJUEkgYWxvbmcgd2l0aCB2aXJ0dWFsaXphdGlvbgo+PiA+IDMp IEFkdmFuY2VkIFBsYXRmb3JtLUxldmVsIEludGVycnVwdCBDb250cm9sbGVyIChBUExJQykKPj4g PiAgICAtIFdpcmVkIGludGVycnVwdCBjb250cm9sbGVyCj4+ID4gICAgLSBJbiBNU0ktbW9kZSwg Y29udmVydHMgd2lyZWQgaW50ZXJydXB0IGludG8gTVNJcyAoaS5lLiBNU0kgZ2VuZXJhdG9yKQo+ PiA+ICAgIC0gSW4gRGlyZWN0LW1vZGUsIGluamVjdHMgZXh0ZXJuYWwgaW50ZXJydXB0cyBkaXJl Y3RseSBpbnRvIEhBUlRzCj4+ID4KPj4gPiBGb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIEFJQSBzcGVj aWZpY2F0aW9uLCByZWZlciB0aGUgQUlBIHZpcnR1YWxpemF0aW9uCj4+ID4gdGFsayBhdCBLVk0g Rm9ydW0gMjAyMjoKPj4gPiBodHRwczovL3N0YXRpYy5zY2hlZC5jb20vaG9zdGVkX2ZpbGVzL2t2 bWZvcnVtMjAyMi9hMS9BSUFfVmlydHVhbGl6YXRpb25faW5fS1ZNX1JJU0NWX2ZpbmFsLnBkZgo+ PiA+IGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9cjA3MWRMOFoweW8KPj4KPj4gVGhh bmsgeW91IGZvciBjb250aW51aW5nIHRvIHdvcmsgb24gdGhpcyBzZXJpZXMhIEkgbGlrZSB0aGlz Cj4+IGRpcmVjdGlvbiBvZiB0aGUgc2VyaWVzIQo+Pgo+PiBUTDtEUjogSSB0aGluayB3ZSBjYW4g Z2V0IHJpZCBvZiBtb3N0IG9mIHRoZSBpZC9ob3VzZWhvbGRpbmcgZGF0YQo+PiBzdHJ1Y3R1cmVz LCBleGNlcHQgZm9yIHRoZSBpcnEgbWF0cml4Lgo+Pgo+PiBNb3N0IG9mIG15IGNvbW1lbnRzIGFy ZSBtb3JlIG9mIGEgZGVzaWduL292ZXJ2aWV3IG5hdHVyZSwgc28gSSdsbAo+PiBjb21tZW50IGhl cmUgaW4gdGhlIGNvdmVyIGxldHRlci4KPj4KPj4gSSB0b29rIHRoZSBzZXJpZXMgZm9yIGEgc3Bp biB3aXRoIGFuZCBpdCB3aXRoIEFsZXgnIGZ0cmFjZSBmaXggaXQsCj4+IHBhc3NlcyBhbGwgbXkg dGVzdHMgbmljZWx5IQo+Pgo+PiBOb3cgc29tZSB0aG91Z2h0cy9jb21tZW50cyAoSSdtIGNvbWlu ZyBmcm9tIHRoZSB4ODYgc2lkZSBvZiB0aGluZ3MhKToKPj4KPj4gaWQvZW5hYmxlLXRyYWNraW5n OiBUaGVyZSBhcmUgYSBsb3Qgb2YgZGlmZmVyZW50IGlkL2VuYWJsZWQgdHJhY2tpbmcKPj4gd2l0 aCBjb3JyZXNwb25kaW5nIGxvY2tzLCB3aGVyZSB0aGVyZSdzIElNTyBvdmVybGFwIHdpdGggd2hh dCB0aGUKPj4gbWF0cml4IHByb3ZpZGVzLgo+Cj4gVGhlIG1hdHJpeCBhbGxvY2F0b3IgZG9lcyBu b3QgdHJhY2sgdGhlIGVuYWJsZWQvZGlzYWJsZWQgc3RhdGUgb2YKPiB0aGUgcGVyLUNQVSBJRHMu IFRoaXMgaXMgd2h5IHdlIGhhdmUgYSBzZXBhcmF0ZSBwZXItQ1BVCj4gaWRzX2VuYWJsZWRfYml0 bWFwIHdoaWNoIGlzIGFsc28gdXNlZCBmb3IgcmVtb3RlIHN5bmNocm9uaXphdGlvbgo+IGFjcm9z cyBDUFVzLgoKRXhhY3RseSwgYnV0IHdoYXQgSSdtIGFza2luZyBpcyBpZiB0aGF0IHN0cnVjdHVy ZSBpcyByZWFsbHkgbmVlZGVkLiBNb3JlCmJlbG93LgoKPj4gTGV0J3Mgc3RhcnQgd2l0aCBzdHJ1 Y3QgaW1zaWNfcHJpdjoKPj4KPj4gICAgfCAvKiBEdW1teSBIVyBpbnRlcnJ1cHQgbnVtYmVycyAq Lwo+PiAgICB8IHVuc2lnbmVkIGludCBucl9od2lycXM7Cj4+ICAgIHwgcmF3X3NwaW5sb2NrX3Qg aHdpcnFzX2xvY2s7Cj4+ICAgIHwgdW5zaWduZWQgbG9uZyAqaHdpcnFzX3VzZWRfYml0bWFwOwo+ Cj4gVGhlIG1hdHJpeCBhbGxvY2F0b3IgbWFuYWdlcyBhY3R1YWwgSURzIGZvciBlYWNoIENQVSB3 aGVyZWFzCj4gdGhlIExpbnV4IGlycV9kYXRhIGV4cGVjdHMgYSBmaXhlZCBod2lycSB3aGljaCBk b2VzIG5vdCBjaGFuZ2UuCj4KPiBEdWUgdG8gdGhpcywgd2UgaGF2ZSBhIGR1bW15IGh3aXJxIHNw YWNlIHdoaWNoIGlzIGFsd2F5cwo+IGZpeGVkLiBUaGUgb25seSB0aGluZyB0aGF0IGlzIGNoYW5n ZWQgdW5kZXItdGhlLWhvb2QgYnkgdGhlCj4gSU1TSUMgZHJpdmVyIGlzIHRoZSBkdW1teSBod2ly cSB0byBhY3R1YWwgSFcgdmVjdG9yIChjcHUsIGlkKQo+IG1hcHBpbmcuCgpSZWFkIGJlbG93LiBJ J20gbm90IHRhbGtpbmcgYWJvdXQgbG9jYWxfaWQgZnJvbSB0aGUgaXJxX21hdHJpeCwgSSdtCnNh eWluZyB1c2UgdmlycSwgd2hpY2ggaGFzIHRoZSBwcm9wZXJ0aWVzIHlvdSdyZSBhc2tpbmcgZm9y LCBhbmQgZG9lc24ndApyZXF1aXJlIGFuIGFkZGl0aW9uYWwgc3RydWN0dXJlLiBXaGVuIGFuIGly cS9kZXNjIGlzIGFsbG9jYXRlZCwgeW91IGhhdmUKYSBuaWNlIHVuaXF1ZSBudW1iZXIgd2l0aCB0 aGUgdmlycSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBpbnRlcnJ1cHQuCgo+PiBUaGVzZSBhcmUg dXNlZCB0byBmb3IgdGhlIGRvbWFpbiByb3V0aW5nIChod2lycSAtPiBkZXNjL3ZpcnEpLCBhbmQg bm90Cj4+IG5lZWRlZC4gSnVzdCB1c2UgdGhlIHNhbWUgaWQgYXMgdmlycSAoYXQgYWxsb2NhdGlv biB0aW1lKSwgYW5kIGdldCByaWQKPj4gb2YgdGhlc2UgZGF0YSBzdHJ1Y3R1cmVzL2NvcnJlc3Bv bmRpbmcgZnVuY3Rpb25zLiBUaGUgbG9va3VwIGluIHRoZQo+PiBpbnRlcnJ1cHQgaGFuZGxlciB2 aWEgaW1zaWNfbG9jYWxfcHJpdi52ZWN0b3JzIGRvZXNuJ3QgY2FyZSBhYm91dAo+PiBod2lycS4g VGhpcyBpcyB3aGF0IHg4NiBkb2VzLi4uIFRoZSBpbXNpY192ZWN0b3Igcm91Z2hseSBjb3JyZXNw b25kcwo+PiB0byBhcGljX2NoaXBfZGF0YSAobml0OiBpbXNpY192ZWN0b3IgY291bGQgaGF2ZSB0 aGUgY2hpcF9kYXRhIHN1ZmZpeAo+PiBhcyB3ZWxsLCBhdCBsZWFzdCBpdCB3b3VsZCBoYXZlIGhl bHBlZCBtZSEpCj4KPiBZZXMsIGltc2ljX3ZlY3RvciBjb3JyZXNwb25kcyB0byBhcGljX2NoaXBf ZGF0YSBpbiB0aGUgeDg2IHdvcmxkLgoKLi4uYW5kIEknbSB0cnlpbmcgdG8gYXNrIHRoZSBmb2xs b3dpbmc7IEdpdmVuIHRoZSBJTVNJQyBpcyBwcmV0dHkgbXVjaAp4ODYgdmVjdG9yIChhcmNoL3g4 Ni9rZXJuZWwvYXBpYy92ZWN0b3IuYyksIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUKcmF0 aW9uYWwgd2h5IElNU0lDIGhhcyBhbGwgdGhlIGV4dHJhIGhvdXNlaG9sZGluZyBkYXRhLCBub3Qg bmVlZGVkIGJ5Cng4Ni4gVGhlIHg4NiBoYXMgYmVlbiBiYXR0bGUgcHJvdmVuLCBhbmQgaGF2aW5n IHRvIGRlYWwgd2l0aCBhbGwga2luZCBvZgpxdWlya3MgKGUuZy4gbG9zdCBpbnRlcnJ1cHRzIG9u IGFmZmluaXR5IGNoYW5nZXMpLgoKPj4gTW92aW5nL2FmZmluaXR5IGNoYW5nZXMuIFRoZSBtb3Zp bmcgb2YgYSB2ZWN0b3IgdG8gYW5vdGhlciBDUFUKPj4gY3VycmVudGx5IGludm9sdmVzOgo+Pgo+ PiAxLiBBbGxvY2F0ZSBhIG5ldyB2ZWN0b3IgZnJvbSB0aGUgbWF0cml4Cj4+IDIuIERpc2FibGUv ZW5hYmxlIHRoZSBjb3JyZXNwb25kaW5nIHBlci1jcHUgaWRzX2VuYWJsZWRfYml0bWFwIChuZXN0 ZWQKPj4gICAgc3BpbmxvY2tzKQo+PiAzLiBUcmlnZ2VyIHR3byBJUElzIHRvIGFwcGx5IHRoZSBi aXRtYXAKPj4gNC4gT24gZWFjaCBDUFUgdGFyZ2V0IChpbXNpY19sb2NhbF9zeW5jKCkpIGxvb3Ag dGhlIGJpdG1hcCBhbmQgZmxpcAo+PiAgICBhbGwgYml0cywgYW5kIHBvdGVudGlhbGx5IHJlYXJt Cj4+Cj4+IFRoaXMgc2VlbXMgYSBiaXQgaGVhdnktd2VpZ2h0OiBXaHkgYXJlIHlvdSBleHBsaWNp dGx5IHNldHRpbmcvY2xlYXJpbmcKPj4gYWxsIHRoZSBiaXRzIGluIGEgbG9vcCBhdCB0aGUgbG9j YWwgc3luYz8KPgo+IFRoaXMgY2FuIGJlIGNlcnRhaW5seSBvcHRpbWl6ZWQgYnkgaW50cm9kdWNp bmcgYW5vdGhlcgo+IGlkc19kaXJ0eV9iaXRtYXAuIEkgd2lsbCBhZGQgdGhpcyBpbiB0aGUgbmV4 dCByZXZpc2lvbi4KCkkgcmF0aGVyIGhhdmUgZmV3ZXIgbWFwcywgYW5kIGxlc3MgbG9ja3MhIDst KQoKPj4geDg2IGRvZXMgaXQgYSBiaXQgZGlmZmVyZW50bHkgKG1vcmUgbGF6aWx5KTogVGhlIGNo aXBfZGF0YSBoYXMKPj4gcHJldl97Y3B1LHZlY3Rvcn0vbW92ZV9pbl9wcm9ncmVzcyBmaWVsZHMs IGFuZCBrZWVwIGJvdGggdmVjdG9ycwo+PiBlbmFibGVkIHVudGlsIHRoZXJlJ3MgYW4gaW50ZXJy dXB0IG9uIHRoZSBuZXcgdmVjdG9yLCBhbmQgdGhlbiB0aGUgb2xkCj4+IG9uZSBpcyBjbGVhbmVk IChpcnFfY29tcGxldGVfbW92ZSgpKS4KPj4KPj4gRnVydGhlcjsgV2hlbiBpdCdzIHRpbWUgdG8g cmVtb3ZlIHRoZSBvbGQgdmVjdG9yLCB4ODYgZG9lc24ndCB0cmlnZ2VyCj4+IGFuIElQSSBvbiB0 aGUgZGlzYWJsaW5nIHNpZGUsIGJ1dCBxdWV1ZXMgYSBjbGVhbnVwIGpvYiBvbiBhIHBlci1jcHUK Pj4gbGlzdCBhbmQgdHJpZ2dlcnMgYSB0aW1lb3V0LiBTbywgdGhlIHBlci1jcHUgY2hpcF9kYXRh IChwZXItY3B1Cj4+ICJ2ZWN0b3JzIiBpbiB5b3VyIHNlcmllcykgY2FuIHJlc2lkZSBpbiB0d28g cGxhY2VzIGR1cmluZyB0aGUgdHJhbnNpdC4KPgo+IFdlIGNhbid0IGF2b2lkIElQSXMgd2hlbiBt b3ZpbmcgdmVjdG9ycyBmcm9tIG9uZSBDUFUgdG8gYW5vdGhlcgo+IENQVSBiZWNhdXNlIElNU0lD IGlkIGVuYWJsZS9kaXNhYmxlIGlzIG9ubHkgcG9zc2libGUgdGhyb3VnaAo+IENTUnMuIEFsc28s IGtlZXAgaW4tbWluZCB0aGF0IGlycSBhZmZpbml0eSBjaGFuZ2UgbWlnaHQgYmUgaW5pdGlhdGVk Cj4gb24gQ1BVIFggZm9yIHNvbWUgaW50ZXJydXB0IHRhcmdldGluZyBDUFUgWSB3aGljaCBpcyB0 aGVuIGNoYW5nZWQKPiB0byB0YXJnZXQgQ1BVIFouCj4KPiBJbiB0aGUgY2FzZSBvZiB4ODYsIHRo ZXkgaGF2ZSBtZW1vcnkgbWFwcGVkIHJlZ2lzdGVycyB3aGljaAo+IGFsbG93cyBvbmUgQ1BVIHRv IGVuYWJsZS9kaXNhYmxlIHRoZSBJRCBvZiBhbm90aGVyIENQVS4KCk5vcGUuIFNhbWUgbWVjaGFu aWNzIG9uIHg4NiAtLSB0aGUgY2xlYW51cCBoYXMgdG8gYmUgZG9uZSBvbmUgdGhlCm9yaWdpbmF0 aW5nIGNvcmUuIFdoYXQgSSBhc2tlZCB3YXMgIndoYXQgYWJvdXQgdXNpbmcgYSB0aW1lciBpbnN0 ZWFkIG9mCmFuIElQSSIuIEkgdGhpbmsgdGhpcyB3YXMgdXAgaW4gdGhlIGxhc3QgcmV2IGFzIHdl bGw/CgpDaGVjayBvdXQgY29tbWl0IGJkYzFkYWQyOTliYiAoIng4Ni92ZWN0b3I6IFJlcGxhY2UK SVJRX01PVkVfQ0xFQU5VUF9WRUNUT1Igd2l0aCBhIHRpbWVyIGNhbGxiYWNrIikgU3BlY2lmaWNh bGx5LCB0aGUKY29tbWVudCBhYm91dCBsb3N0IGludGVycnVwdHMsIGFuZCB0aGUgcmF0aW9uYWwg Zm9yIGtlZXBpbmcgdGhlIG9yaWdpbmFsCnRhcmdldCBhY3RpdmUgdW50aWwgdGhlcmUncyBhIG5l dyBpbnRlcnJ1cHQgb24gdGhlIG5ldyBjcHUuCgo+PiBJIHdvbmRlciBpZiB0aGlzIGNsZWFuIHVw IGlzIGxlc3MgaW50cnVzaXZlLCBhbmQgeW91IGp1c3QgbmVlZCB0bwo+PiBwZXJmb3JtIHdoYXQn cyBpbiB0aGUgcGVyLWxpc3QgaW5zdGVhZCBvZiBkZWFsaW5nIHdpdGggdGhlCj4+IGlkc19lbmFi bGVkX2JpdG1hcD8gTWF5YmUgd2UgY2FuIGV2ZW4gcmVtb3ZlIHRoYXQgYml0bWFwIGFzIHdlbGwu IFRoZQo+PiBjaGlwX2RhdGEvZGVzYyBoYXMgdGhhdCBpbmZvcm1hdGlvbi4gVGhpcyB3b3VsZCBt ZWFuIHRoYXQKPj4gaW1zaWNfbG9jYWxfcHJpdigpIHdvdWxkIG9ubHkgaGF2ZSB0aGUgbG9jYWwg dmVjdG9ycyAoY2hpcF9kYXRhKSwgYW5kCj4+IGEgY2xlYW51cCBsaXN0L3RpbWVyLgo+Pgo+PiBN eSBnZW5lcmFsIGNvbW1lbnQgaXMgdGhhdCBpbnN0ZWFkIG9mIGhhdmluZyB0aGVzZSBnbG9iYWwg aWQtdHJhY2tpbmcKPj4gc3RydWN0dXJlcywgdXNlIHRoZSBtYXRyaXggdG9nZXRoZXIgd2l0aCBz b21lIGRlc2MvY2hpcF9kYXRhIGxvY2FsCj4+IGRhdGEsIHdoaWNoIHNob3VsZCBiZSBzdWZmaWNp ZW50Lgo+Cj4gVGhlICJpZHNfZW5hYmxlZF9iaXRtYXAiLCAiZHVtbXkgaHdpcnFzIiBhbmQgcHJp dmF0ZSBpbXNpY192ZWN0b3JzCj4gYXJlIHJlcXVpcmVkIHNpbmNlIHRoZSBtYXRyaXggYWxsb2Nh dG9yIG9ubHkgbWFuYWdlcyBhbGxvY2F0aW9uIG9mCj4gcGVyLUNQVSBJRHMuCgpUaGUgaW5mb3Jt YXRpb24gaW4gaWRzX2VuYWJsZWRfYml0bWFwIGlzL2NvdWxkIGJlIGluaGVyZW50IGluCmltc2lj X2xvY2FsX3ByaXYudmVjdG9ycyAoZ3Vlc3Mgd2hhdCB4ODYgZG9lcy4uLiA7LSkpLgoKRHVtbXkg aHdpcnFzIGNvdWxkIGJlIHJlcGxhY2VkIHdpdGggdGhlIHZpcnEuCgpIbW0sIHNlZW1zIGxpa2Ug d2UncmUgdGFsa2luZyBwYXN0IGVhY2ggb3RoZXIsIG9yIGF0IGxlYXN0IEkgZ2V0IHRoZQpmZWVs aW5nIEkgY2FuJ3QgZ2V0IG15IG9waW5pb25zIG91dCByaWdodC4gSSdsbCB0cnkgdG8gZG8gYSBx dWljayBQb0MsCnRvIHNob3cgeW91IHdoYXQgSSBtZWFuLiBUaGF0J3MgcHJvYmFibHkgZWFzaWVy IHRoYW4ganVzdCB0YWxraW5nIGFib3V0Cml0LiAuLi5hbmQgbWF5YmUgSSdsbCBjb21lIHJlYWxp emluZyBJJ20gYWxsIHdyb25nIQoKTXkgcmVhY3Rpb24gaXMgLS0geW91J3JlIGRvaW5nIGEgbG90 IG9mIGhvdXNlaG9sZGluZyB3aXRoIGEgbG90IG9mCmxvY2tzLCBhbmQgbXkgd29ycnkgaXMgdGhh dCB3ZSdsbCBqdXN0IGVuZCB1cCB3aXRoIHNhbWUgaXNzdWVzL2Jsb2F0CnRoYXQgeDg2IG9uY2Ug aGFkIChoYXM/IDstKSkuCgo+PiBSYW5kb20gdGhvdWdodDogRG8gd2UgbmVlZCB0byBleHBsaWNp dGx5IGRpc2FibGUgKGNzcikgdGhlIHZlY3RvciwKPj4gd2hlbiB3ZSdyZSBjaGFuZ2luZyB0aGUg YWZmaW5pdHk/IFdoYXQgaWYgd2UganVzdCBsZWF2ZSBpdCBlbmFibGVkLAo+PiBhbmQgb25seSB3 aGVuIG1hc2svdW5tYXNrIGlzIHBlcmZvcm1lZCBpdCdzIGFjdHVhbGx5IGV4cGxpY2l0bHkgbWFz a2VkCj4+ICh3cml0ZXMgdG8gdGhlIGNzcik/Cj4KPiBXZSBzaG91bGQgbm90IGxlYXZlIGl0IGVu YWJsZWQgYmVjYXVzZSBzb21lIHJvdWdoL2J1Z2d5IGRldmljZQo+IGNhbiBpbmplY3Qgc3B1cmlv dXMgaW50ZXJydXB0cyB1c2luZyBNU0kgd3JpdGVzIHRvIHVudXNlZCBlbmFibGVkCj4gaW50ZXJy dXB0cy4KCk9LIQoKPj4KPj4gTWlzc2luZyBmZWF0dXJlcyAod2hpY2ggY2FuIGJlIGFkZGVkIGxh dGVyKToKPj4gKiBSZXNlcnZhdGlvbiBtb2RlL2FjdGl2YXRlIHN1cHBvcnQgKGFsbG9jYXRlIG1h bnkgTVNJLCBidXQgb25seQo+PiAgIHJlcXVlc3QvYWN0aXZhdGUgYSBzdWJzZXQpCj4KPiBJIGRp ZCBub3Qgc2VlIGFueSBQQ0llIG9yIHBsYXRmb3JtIGRldmljZSByZXF1aXJpbmcgdGhpcyBraW5k IG9mCj4gcmVzZXJ2YXRpb24uIEFueSBleGFtcGxlcyA/CgpJdCdzIG5vdCBhIHJlcXVpcmVtZW50 LiBTb21lIGRldmljZXMgYWxsb2NhdGUgYSBnYXppbGxpb24gaW50ZXJydXB0cwooTklDcyB3aXRo IG1hbnkgUW9TIHF1ZXVlcywgZS5nLiksIGJ1dCBvbmx5IGFjdGl2YXRlIGEgc3Vic2V0ICh2aWEK cmVxdWVzdF9pcnEoKSkuIEEgc3lzdGVtIHVzaW5nIHRoZXNlIGtpbmQgb2YgZGV2aWNlcyBtaWdo dCBydW4gb3V0IG9mCmludGVycnVwdHMuCgpQcm9ibGVtcyB5b3UgcnVuIGludG8gb25jZSB5b3Ug bGVhdmUgdGhlIGVtYmVkZGVkIHdvcmxkLCBwcmV0dHkgbXVjaC4KCj4+ICogSGFuZGxlIG1hbmFn ZWQgaW50ZXJydXB0cwo+Cj4gQW55IGV4YW1wbGVzIG9mIG1hbmFnZWQgaW50ZXJydXB0cyBpbiB0 aGUgUklTQy1WIHdvcmxkID8KCkUuZy4gYWxsIG52bWUgZHJpdmVzOiBudm1lX3NldHVwX2lycXMo KSwgYW5kIEknZCBhc3N1bWUgY29udGVtcG9yYXJ5Cm5ldGRldiBkcml2ZXJzIHdvdWxkIHVzZSBp dC4gVHlwaWNhbGx5IGRldmljZXMgd2l0aCBwZXItY3B1IHF1ZXVlcy4KCj4+ICogVGhlcmUgbWln aHQgYmUgc29tZSBpcnFkIGZsYWdzIGFyZSBtaXNzaW5nLCB3aGljaCBtb3N0bHkgY3B1aHAgY2Fy ZQo+PiAgIGFib3V0IChlLmcuIGlycWRfKl9zaW5nbGVfdGFyZ2V0KCkpLi4uCj4KPiBPa2F5LCBs ZXQgbWUgY2hlY2sgYW5kIHVwZGF0ZS4KCkkgaGF2ZW4ndCBkdWcgbXVjaCBpbnRvIGNwdWhwLCBz byBJJ20gb3V0IG9uIGEgbGltYiBoZXJlLi4uCgo+PiBGaW5hbGx5OyBHaXZlbiB0aGF0IHRoZSBB UExJQyByZXF1aXJlcyBhIGxvdCBtb3JlIHBhdGNoZXMsIGRlcGVuZGluZwo+PiBvbiBob3cgdGhl IHJldmlldyBwcm9jZXNzIG1vdmVzIG9uIC0tIG1heWJlIHRoZSBJTVNJQyBzaWRlIGNvdWxkIGdv IGFzCj4+IGEgc2VwYXJhdGUgc2VyaWVzPwo+Pgo+Cj4gVGhlIG1vc3QgcG9wdWxhciBpbXBsZW1l bnRhdGlvbiBjaG9pY2UgYWNyb3NzIFJJU0MtViBwbGF0Zm9ybXMKPiB3aWxsIGJlIElNU0lDICsg QVBMSUMgc28gYm90aCBkcml2ZXJzIHNob3VsZCBnbyB0b2dldGhlci4gSW4gZmFjdCwKPiB3ZSBu ZWVkIGJvdGggZHJpdmVycyBmb3IgdGhlIFFFTVUgdmlydCBtYWNoaW5lIGFzIHdlbGwgYmVjYXVz ZQo+IFVBUlQgaW50ZXJydXB0IChhbmQgb3RoZXIgd2lyZWQgaW50ZXJydXB0cykgb24gdGhlIFFF TVUgdmlydAo+IG1hY2hpbmUgZ29lcyB0aHJvdWdoIEFQTElDLgoKVGhhbmtzIGZvciBjbGVhcmlu ZyB0aGF0IG91dCEgSG1tLCBhbiBJTVNJQyBvbmx5IFFFTVUgd291bGQgYmUgYXdlc29tZS4KCgpD aGVlcnMsCkJqw7ZybgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0 cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtYXJtLWtlcm5lbAo=