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 ED964C52D7C for ; Mon, 19 Aug 2024 21:47: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:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=5i3QGxLXW7Smf3gC1B/HyknoiSOoPDoSpBLly3zAdUU=; b=ME+gt2GT1SWKI+ FANgNCVeGiE4pgaOQod0uYaSMk+MIXN2+ficwaSaFVTWU1p7YUz5Ir4uuiwxYzKG0q4NCm8ixL185 G8Xku7LDn51WDSsn3LLLqNEWGi/k8JNf439v+LPXIJc8kY4qMIEUdkfie8Jj9iCSph1nKWeLL5dBp yovnJf3rBYkgk9vgyLIDIrNeMwwvv4BFK+Gs6EPWGWc5vwUwP4I/8NwKYXpTTvraaCPwlY2a/ehwH q42GlOnYWMBWoINa9bKO6HeNhYMUwmboAe33dI8ewSHoMJK7AjXKs+Id0+CQLkFer4+KtVk/XWcpy ZBD9eo7w/+9cU8OjApYw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sgADm-000000031z1-484O; Mon, 19 Aug 2024 21:47:27 +0000 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sgADj-000000031xb-1ZBf for linux-riscv@lists.infradead.org; Mon, 19 Aug 2024 21:47:25 +0000 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-70f5ef740b7so4312595b3a.2 for ; Mon, 19 Aug 2024 14:47:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1724104042; x=1724708842; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=YAIpKwWRKKlilWVBBY+nEUF6W52ydp0wp2I/YH4MPRg=; b=aCvJ0SuqYWPU+415Px7xbbsdSeG6Xoj55x6ClSBxaUhhfHiSXY9OkVesLIYQBuz3za XcmItD9+R++0CeSRv1u+ontVrtYWnF9j6X32IkCJmIdvKhMqYMlzZUU4Fx88s8YZ7gm4 IoDXED6qLH0/MRwAl2CU1p+TJSccdqbdX0GNKP1uyDBuBaSxV6WN++yxBMRfTzyE24p0 S8eGE9XAvlnSnZ6GBpzyroQBIA1cLp/L22M50cp7NJ/ihJtycsf+y6y1Evs5rrhGGbBr JsMOwYOitpvb8c5+D76067RORq0ZNMiiyyRr0ZsbooZWJduwCkacO6oHRf9sr4NOrhVg isRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724104042; x=1724708842; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YAIpKwWRKKlilWVBBY+nEUF6W52ydp0wp2I/YH4MPRg=; b=BviSw8yBNlN/D+XKfifD4Frlbmw/4p3bky6alOkqgIDKZALMxSE1uKkeUnAtd+HslM 4qTht18cRKaDdAJoCsO4Jph1ipWgtIa+Rezw+WecX9P54DD2iMNljMl1X7hc0ZV8TPvT pzQzdFL+8seBm65nasX96yLz3X/Y1YrM/5TQ4zx6DymfRGulVfLh1e2pSXQkATpXxehe 9b/zgMtgVfdD1T59qCLKyrajk/28pAZgcseBjWaLVkN59HqnEviHoCwWXVoUv4E87jLM ifZAIIwVxrzn8jwFuqbqE+TF4eB4elXPOdZADOFdkt5AWyXSt8HAGZMkP9ypVfoADbum ZuLA== X-Forwarded-Encrypted: i=1; AJvYcCW8uIMiMKUd2eGm71NGpvrOvU8NpgwrIBALTYXXqmd0u7Vqb8UT1u63j3QuQZKvsE6WUdvznX2495DdjNJZE4l8oZbVVOZc60IAj5u2Ic1+ X-Gm-Message-State: AOJu0YzYM8Pw4IzXD2+xVZqFk3gVtA7HUKVpSlpRkIzmhmD95D8GyCle QfVlbC5Peuhh8Szt2oXtAlEmyunoPhunLACuK2nqArfcwIV/eyagocptpOwzKFo= X-Google-Smtp-Source: AGHT+IGhe40HZJYU3TXvbpXci7yynru6I/nJh1BQm9O/6IPDEaLrJH/3SG9nDoUD2mtPbVkSMh7q6Q== X-Received: by 2002:a05:6a20:3141:b0:1ca:31dd:6a0e with SMTP id adf61e73a8af0-1ca31dd6b29mr10845204637.1.1724104041872; Mon, 19 Aug 2024 14:47:21 -0700 (PDT) Received: from ghost ([50.145.13.30]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7127af416fbsm6999741b3a.207.2024.08.19.14.47.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Aug 2024 14:47:21 -0700 (PDT) Date: Mon, 19 Aug 2024 14:47:18 -0700 From: Charlie Jenkins To: Anup Patel Cc: Emil Renner Berthing , Thomas Gleixner , Anup Patel , Paul Walmsley , linux-kernel@vger.kernel.org, Samuel Holland , Palmer Dabbelt , Atish Patra , linux-riscv@lists.infradead.org, Andrew Jones Subject: Re: [PATCH v2] irqchip/sifive-plic: Probe plic driver early for Allwinner D1 platform Message-ID: References: <20240817081218.2985171-1-apatel@ventanamicro.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-20240819_144723_460061_57CBA622 X-CRM114-Status: GOOD ( 37.99 ) 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 T24gTW9uLCBBdWcgMTksIDIwMjQgYXQgMDg6Mjc6MzNQTSArMDUzMCwgQW51cCBQYXRlbCB3cm90 ZToKPiBPbiBNb24sIEF1ZyAxOSwgMjAyNCBhdCAxMjoyN+KAr1BNIEVtaWwgUmVubmVyIEJlcnRo aW5nCj4gPGVtaWwucmVubmVyLmJlcnRoaW5nQGNhbm9uaWNhbC5jb20+IHdyb3RlOgo+ID4KPiA+ IEFudXAgUGF0ZWwgd3JvdGU6Cj4gPiA+IFRoZSBsYXRlc3QgTGludXggUklTQy1WIG5vIGxvbmdl ciBib290cyBvbiB0aGUgQWxsd2lubmVyIEQxIHBsYXRmb3JtCj4gPiA+IGJlY2F1c2UgdGhlIHN1 bjRpX3RpbWVyIGRyaXZlciBmYWlscyB0byBnZXQgYW4gaW50ZXJydXB0IGZyb20gUExJQy4KPiA+ ID4KPiA+ID4gVGhlIHJlYWwgZml4IHJlcXVpcmVzIGVuYWJsaW5nIHRoZSBTQkkgdGltZSBleHRl bnNpb24gaW4gdGhlIHBsYXRmb3JtCj4gPiA+IGZpcm13YXJlIChPcGVuU0JJKSBhbmQgY29udmVy dCBzdW40aV90aW1lciBpbnRvIHBsYXRmb3JtIGRyaXZlci4KPiA+ID4gVW5mb3J0dW5hdGVseSwg dGhlIHJlYWwgZml4IGludm9sdmVzIGNoYW5naW5nIG11bHRpcGxlIHBsYWNlcyBhbmQKPiA+ID4g Y2FuJ3QgYmUgYWNoaWV2ZWQgaW4gYSBzaG9ydCBkdXJhdGlvbi4KPiA+ID4KPiA+ID4gQXMgYSB3 b3JrLWFyb3VuZCwgcmV0cm9maXQgcGxpYyBwcm9iaW5nIHN1Y2ggdGhhdCBwbGljIGlzIHByb2Jl ZAo+ID4gPiBlYXJseSBvbmx5IGZvciB0aGUgQWxsd2lubmVyIEQxIHBsYXRmb3JtIGFuZCBwcm9i ZWQgYXMgYSByZWd1bGFyCj4gPiA+IHBsYXRmb3JtIGRyaXZlciBmb3IgcmVzdCBvZiB0aGUgUklT Qy1WIHBsYXRmb3Jtcy4gSW4gdGhlIHByb2Nlc3MsCj4gPiA+IHBhcnRpYWxseSByZXZlcnQgc29t ZSBvZiB0aGUgcHJldmlvdXMgcGF0Y2hlcyBiZWNhdXNlIFBMSUMgZGV2aWNlCj4gPiA+IHBvaW50 ZXIgaXMgbm90IGF2YWlsYWJsZSBpbiBhbGwgcHJvYmluZyBwYXRocy4KPiA+ID4KPiA+ID4gTW9y ZSBkZXRhaWxlZCBkaXNjdXNzaW9uIGNhbiBmb3VuZCBoZXJlOgo+ID4gPiBodHRwczovL2xvcmUu a2VybmVsLm9yZy9sa21sLzIwMjQwODE0MTQ1NjQyLjM0NDQ4NS0xLWVtaWwucmVubmVyLmJlcnRo aW5nQGNhbm9uaWNhbC5jb20vCj4gPiA+Cj4gPiA+IEZpeGVzOiBlMzA2YTg5NGJkNTEgKCJpcnFj aGlwL3NpZml2ZS1wbGljOiBDaGFpbiB0byBwYXJlbnQgSVJRIGFmdGVyIGhhbmRsZXJzIGFyZSBy ZWFkeSIpCj4gPiA+IEZpeGVzOiA4ZWM5OWIwMzMxNDcgKCJpcnFjaGlwL3NpZml2ZS1wbGljOiBD b252ZXJ0IFBMSUMgZHJpdmVyIGludG8gYSBwbGF0Zm9ybSBkcml2ZXIiKQo+ID4gPiBTdWdnZXN0 ZWQtYnk6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgo+ID4gPiBSZXZpZXdl ZC1ieTogU2FtdWVsIEhvbGxhbmQgPHNhbXVlbC5ob2xsYW5kQHNpZml2ZS5jb20+Cj4gPiA+IFRl c3RlZC1ieTogU2FtdWVsIEhvbGxhbmQgPHNhbXVlbC5ob2xsYW5kQHNpZml2ZS5jb20+Cj4gPiA+ IFNpZ25lZC1vZmYtYnk6IEFudXAgUGF0ZWwgPGFwYXRlbEB2ZW50YW5hbWljcm8uY29tPgo+ID4g PiAtLS0KPiA+ID4gQ2hhbmdlcyBzaW5jZSB2MToKPiA+ID4gIC0gU2V0IHN1cHByZXNzX2JpbmRf YXR0cnMgZm9yIFBMSUMgcGxhdGZvcm0gZHJpdmVyCj4gPiA+IC0tLQo+ID4gPiAgZHJpdmVycy9p cnFjaGlwL2lycS1zaWZpdmUtcGxpYy5jIHwgMTI4ICsrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLQo+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDgwIGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9u cygtKQo+ID4gPgo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL2lycS1zaWZpdmUt cGxpYy5jIGIvZHJpdmVycy9pcnFjaGlwL2lycS1zaWZpdmUtcGxpYy5jCj4gPiA+IGluZGV4IDll MjJmN2UzNzhmNS4uMzMzOTVjNWE5YjViIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2lycWNo aXAvaXJxLXNpZml2ZS1wbGljLmMKPiA+ID4gKysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1zaWZp dmUtcGxpYy5jCj4gPiA+IEBAIC0zLDYgKzMsNyBAQAo+ID4gPiAgICogQ29weXJpZ2h0IChDKSAy MDE3IFNpRml2ZQo+ID4gPiAgICogQ29weXJpZ2h0IChDKSAyMDE4IENocmlzdG9waCBIZWxsd2ln Cj4gPiA+ICAgKi8KPiA+ID4gKyNkZWZpbmUgcHJfZm10KGZtdCkgInJpc2N2LXBsaWM6ICIgZm10 Cj4gPiA+ICAjaW5jbHVkZSA8bGludXgvY3B1Lmg+Cj4gPiA+ICAjaW5jbHVkZSA8bGludXgvaW50 ZXJydXB0Lmg+Cj4gPiA+ICAjaW5jbHVkZSA8bGludXgvaW8uaD4KPiA+ID4gQEAgLTYzLDcgKzY0 LDcgQEAKPiA+ID4gICNkZWZpbmUgUExJQ19RVUlSS19FREdFX0lOVEVSUlVQVCAgICAwCj4gPiA+ Cj4gPiA+ICBzdHJ1Y3QgcGxpY19wcml2IHsKPiA+ID4gLSAgICAgc3RydWN0IGRldmljZSAqZGV2 Owo+ID4gPiArICAgICBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlOwo+ID4gPiAgICAgICBz dHJ1Y3QgY3B1bWFzayBsbWFzazsKPiA+ID4gICAgICAgc3RydWN0IGlycV9kb21haW4gKmlycWRv bWFpbjsKPiA+ID4gICAgICAgdm9pZCBfX2lvbWVtICpyZWdzOwo+ID4gPiBAQCAtMzc4LDggKzM3 OSw4IEBAIHN0YXRpYyB2b2lkIHBsaWNfaGFuZGxlX2lycShzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2Mp Cj4gPiA+ICAgICAgICAgICAgICAgaW50IGVyciA9IGdlbmVyaWNfaGFuZGxlX2RvbWFpbl9pcnEo aGFuZGxlci0+cHJpdi0+aXJxZG9tYWluLAo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGh3aXJxKTsKPiA+ID4gICAgICAgICAgICAgICBpZiAo dW5saWtlbHkoZXJyKSkgewo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgZGV2X3dhcm5fcmF0 ZWxpbWl0ZWQoaGFuZGxlci0+cHJpdi0+ZGV2LAo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImNhbid0IGZpbmQgbWFwcGluZyBmb3IgaHdpcnEgJWx1XG4i LCBod2lycSk7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBwcl93YXJuX3JhdGVsaW1pdGVk KCIlcGZ3UDogY2FuJ3QgZmluZCBtYXBwaW5nIGZvciBod2lycSAlbHVcbiIsCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXItPnByaXYtPmZ3bm9k ZSwgaHdpcnEpOwo+ID4gPiAgICAgICAgICAgICAgIH0KPiA+ID4gICAgICAgfQo+ID4gPgo+ID4g PiBAQCAtNDA4LDE1ICs0MDksMTQgQEAgc3RhdGljIGludCBwbGljX3N0YXJ0aW5nX2NwdSh1bnNp Z25lZCBpbnQgY3B1KQo+ID4gPiAgICAgICAgICAgICAgIGVuYWJsZV9wZXJjcHVfaXJxKHBsaWNf cGFyZW50X2lycSwKPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcnFfZ2V0 X3RyaWdnZXJfdHlwZShwbGljX3BhcmVudF9pcnEpKTsKPiA+ID4gICAgICAgZWxzZQo+ID4gPiAt ICAgICAgICAgICAgIGRldl93YXJuKGhhbmRsZXItPnByaXYtPmRldiwgImNwdSVkOiBwYXJlbnQg aXJxIG5vdCBhdmFpbGFibGVcbiIsIGNwdSk7Cj4gPiA+ICsgICAgICAgICAgICAgcHJfd2Fybigi JXBmd1A6IGNwdSVkOiBwYXJlbnQgaXJxIG5vdCBhdmFpbGFibGVcbiIsCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICBoYW5kbGVyLT5wcml2LT5md25vZGUsIGNwdSk7Cj4gPiA+ICAgICAgIHBs aWNfc2V0X3RocmVzaG9sZChoYW5kbGVyLCBQTElDX0VOQUJMRV9USFJFU0hPTEQpOwo+ID4gPgo+ ID4gPiAgICAgICByZXR1cm4gMDsKPiA+ID4gIH0KPiA+ID4KPiA+ID4gLXN0YXRpYyBjb25zdCBz dHJ1Y3Qgb2ZfZGV2aWNlX2lkIHBsaWNfbWF0Y2hbXSA9IHsKPiA+ID4gLSAgICAgeyAuY29tcGF0 aWJsZSA9ICJzaWZpdmUscGxpYy0xLjAuMCIgfSwKPiA+ID4gLSAgICAgeyAuY29tcGF0aWJsZSA9 ICJyaXNjdixwbGljMCIgfSwKPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IHBsaWNfcXVpcmtzX21hdGNoW10gPSB7Cj4gPiA+ICAgICAgIHsgLmNvbXBhdGlibGUgPSAiYW5k ZXN0ZWNoLG5jZXBsaWMxMDAiLAo+ID4gPiAgICAgICAgIC5kYXRhID0gKGNvbnN0IHZvaWQgKilC SVQoUExJQ19RVUlSS19FREdFX0lOVEVSUlVQVCkgfSwKPiA+ID4gICAgICAgeyAuY29tcGF0aWJs ZSA9ICJ0aGVhZCxjOTAwLXBsaWMiLAo+ID4gPiBAQCAtNDI0LDM4ICs0MjQsMzYgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcGxpY19tYXRjaFtdID0gewo+ID4gPiAgICAgICB7 fQo+ID4gPiAgfTsKPiA+ID4KPiA+ID4gLXN0YXRpYyBpbnQgcGxpY19wYXJzZV9ucl9pcnFzX2Fu ZF9jb250ZXh0cyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+ID4gPiArc3RhdGljIGlu dCBwbGljX3BhcnNlX25yX2lycXNfYW5kX2NvbnRleHRzKHN0cnVjdCBmd25vZGVfaGFuZGxlICpm d25vZGUsCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMy ICpucl9pcnFzLCB1MzIgKm5yX2NvbnRleHRzKQo+ID4gPiAgewo+ID4gPiAtICAgICBzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+ID4gPiAgICAgICBpbnQgcmM7Cj4gPiA+Cj4gPiA+ ICAgICAgIC8qCj4gPiA+ICAgICAgICAqIEN1cnJlbnRseSwgb25seSBPRiBmd25vZGUgaXMgc3Vw cG9ydGVkIHNvIGV4dGVuZCB0aGlzCj4gPiA+ICAgICAgICAqIGZ1bmN0aW9uIGZvciBBQ1BJIHN1 cHBvcnQuCj4gPiA+ICAgICAgICAqLwo+ID4gPiAtICAgICBpZiAoIWlzX29mX25vZGUoZGV2LT5m d25vZGUpKQo+ID4gPiArICAgICBpZiAoIWlzX29mX25vZGUoZndub2RlKSkKPiA+ID4gICAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ID4KPiA+ID4gLSAgICAgcmMgPSBvZl9wcm9wZXJ0 eV9yZWFkX3UzMih0b19vZl9ub2RlKGRldi0+Zndub2RlKSwgInJpc2N2LG5kZXYiLCBucl9pcnFz KTsKPiA+ID4gKyAgICAgcmMgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMih0b19vZl9ub2RlKGZ3bm9k ZSksICJyaXNjdixuZGV2IiwgbnJfaXJxcyk7Cj4gPiA+ICAgICAgIGlmIChyYykgewo+ID4gPiAt ICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAicmlzY3YsbmRldiBwcm9wZXJ0eSBub3QgYXZhaWxh YmxlXG4iKTsKPiA+ID4gKyAgICAgICAgICAgICBwcl9lcnIoIiVwZndQOiByaXNjdixuZGV2IHBy b3BlcnR5IG5vdCBhdmFpbGFibGVcbiIsIGZ3bm9kZSk7Cj4gPiA+ICAgICAgICAgICAgICAgcmV0 dXJuIHJjOwo+ID4gPiAgICAgICB9Cj4gPiA+Cj4gPiA+IC0gICAgICpucl9jb250ZXh0cyA9IG9m X2lycV9jb3VudCh0b19vZl9ub2RlKGRldi0+Zndub2RlKSk7Cj4gPiA+ICsgICAgICpucl9jb250 ZXh0cyA9IG9mX2lycV9jb3VudCh0b19vZl9ub2RlKGZ3bm9kZSkpOwo+ID4gPiAgICAgICBpZiAo V0FSTl9PTighKCpucl9jb250ZXh0cykpKSB7Cj4gPiA+IC0gICAgICAgICAgICAgZGV2X2Vycihk ZXYsICJubyBQTElDIGNvbnRleHQgYXZhaWxhYmxlXG4iKTsKPiA+ID4gKyAgICAgICAgICAgICBw cl9lcnIoIiVwZndQOiBubyBQTElDIGNvbnRleHQgYXZhaWxhYmxlXG4iLCBmd25vZGUpOwo+ID4g PiAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiAgICAgICB9Cj4gPiA+Cj4gPiA+ ICAgICAgIHJldHVybiAwOwo+ID4gPiAgfQo+ID4gPgo+ID4gPiAtc3RhdGljIGludCBwbGljX3Bh cnNlX2NvbnRleHRfcGFyZW50KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHUzMiBjb250 ZXh0LAo+ID4gPiArc3RhdGljIGludCBwbGljX3BhcnNlX2NvbnRleHRfcGFyZW50KHN0cnVjdCBm d25vZGVfaGFuZGxlICpmd25vZGUsIHUzMiBjb250ZXh0LAo+ID4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHUzMiAqcGFyZW50X2h3aXJxLCBpbnQgKnBhcmVudF9jcHUpCj4g PiA+ICB7Cj4gPiA+IC0gICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4gPiA+ ICAgICAgIHN0cnVjdCBvZl9waGFuZGxlX2FyZ3MgcGFyZW50Owo+ID4gPiAgICAgICB1bnNpZ25l ZCBsb25nIGhhcnRpZDsKPiA+ID4gICAgICAgaW50IHJjOwo+ID4gPiBAQCAtNDY0LDEwICs0NjIs MTAgQEAgc3RhdGljIGludCBwbGljX3BhcnNlX2NvbnRleHRfcGFyZW50KHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYsIHUzMiBjb250ZXh0LAo+ID4gPiAgICAgICAgKiBDdXJyZW50bHksIG9u bHkgT0YgZndub2RlIGlzIHN1cHBvcnRlZCBzbyBleHRlbmQgdGhpcwo+ID4gPiAgICAgICAgKiBm dW5jdGlvbiBmb3IgQUNQSSBzdXBwb3J0Lgo+ID4gPiAgICAgICAgKi8KPiA+ID4gLSAgICAgaWYg KCFpc19vZl9ub2RlKGRldi0+Zndub2RlKSkKPiA+ID4gKyAgICAgaWYgKCFpc19vZl9ub2RlKGZ3 bm9kZSkpCj4gPiA+ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiA+Cj4gPiA+IC0g ICAgIHJjID0gb2ZfaXJxX3BhcnNlX29uZSh0b19vZl9ub2RlKGRldi0+Zndub2RlKSwgY29udGV4 dCwgJnBhcmVudCk7Cj4gPiA+ICsgICAgIHJjID0gb2ZfaXJxX3BhcnNlX29uZSh0b19vZl9ub2Rl KGZ3bm9kZSksIGNvbnRleHQsICZwYXJlbnQpOwo+ID4gPiAgICAgICBpZiAocmMpCj4gPiA+ICAg ICAgICAgICAgICAgcmV0dXJuIHJjOwo+ID4gPgo+ID4gPiBAQCAtNDgwLDQ4ICs0NzgsNTUgQEAg c3RhdGljIGludCBwbGljX3BhcnNlX2NvbnRleHRfcGFyZW50KHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYsIHUzMiBjb250ZXh0LAo+ID4gPiAgICAgICByZXR1cm4gMDsKPiA+ID4gIH0KPiA+ ID4KPiA+ID4gLXN0YXRpYyBpbnQgcGxpY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQo+ID4gPiArc3RhdGljIGludCBwbGljX3Byb2JlKHN0cnVjdCBmd25vZGVfaGFuZGxlICpm d25vZGUpCj4gPiA+ICB7Cj4gPiA+ICAgICAgIGludCBlcnJvciA9IDAsIG5yX2NvbnRleHRzLCBu cl9oYW5kbGVycyA9IDAsIGNwdSwgaTsKPiA+ID4gLSAgICAgc3RydWN0IGRldmljZSAqZGV2ID0g JnBkZXYtPmRldjsKPiA+ID4gICAgICAgdW5zaWduZWQgbG9uZyBwbGljX3F1aXJrcyA9IDA7Cj4g PiA+ICAgICAgIHN0cnVjdCBwbGljX2hhbmRsZXIgKmhhbmRsZXI7Cj4gPiA+ICAgICAgIHUzMiBu cl9pcnFzLCBwYXJlbnRfaHdpcnE7Cj4gPiA+ICAgICAgIHN0cnVjdCBwbGljX3ByaXYgKnByaXY7 Cj4gPiA+ICAgICAgIGlycV9od19udW1iZXJfdCBod2lycTsKPiA+ID4gKyAgICAgdm9pZCBfX2lv bWVtICpyZWdzOwo+ID4gPgo+ID4gPiAtICAgICBpZiAoaXNfb2Zfbm9kZShkZXYtPmZ3bm9kZSkp IHsKPiA+ID4gKyAgICAgaWYgKGlzX29mX25vZGUoZndub2RlKSkgewo+ID4gPiAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKmlkOwo+ID4gPgo+ID4gPiAtICAgICAgICAg ICAgIGlkID0gb2ZfbWF0Y2hfbm9kZShwbGljX21hdGNoLCB0b19vZl9ub2RlKGRldi0+Zndub2Rl KSk7Cj4gPiA+ICsgICAgICAgICAgICAgaWQgPSBvZl9tYXRjaF9ub2RlKHBsaWNfcXVpcmtzX21h dGNoLCB0b19vZl9ub2RlKGZ3bm9kZSkpOwo+ID4gPiAgICAgICAgICAgICAgIGlmIChpZCkKPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgIHBsaWNfcXVpcmtzID0gKHVuc2lnbmVkIGxvbmcpaWQt PmRhdGE7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgICByZWdzID0gb2ZfaW9tYXAodG9fb2Zf bm9kZShmd25vZGUpLCAwKTsKPiA+ID4gKyAgICAgICAgICAgICBpZiAoIXJlZ3MpCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+ID4gKyAgICAgfSBlbHNlIHsK PiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsKPiA+Cj4gPiBUaGlzIGRyaXZlciBu ZXZlciB3b3JrZWQgd2l0aCBBQ1BJIGFueXdheXM/Cj4gPgo+ID4gPiAgICAgICB9Cj4gPiA+Cj4g PiA+IC0gICAgIGVycm9yID0gcGxpY19wYXJzZV9ucl9pcnFzX2FuZF9jb250ZXh0cyhwZGV2LCAm bnJfaXJxcywgJm5yX2NvbnRleHRzKTsKPiA+ID4gKyAgICAgZXJyb3IgPSBwbGljX3BhcnNlX25y X2lycXNfYW5kX2NvbnRleHRzKGZ3bm9kZSwgJm5yX2lycXMsICZucl9jb250ZXh0cyk7Cj4gPiA+ ICAgICAgIGlmIChlcnJvcikKPiA+ID4gLSAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Cj4gPiA+ ICsgICAgICAgICAgICAgZ290byBmYWlsX2ZyZWVfcmVnczsKPiA+ID4KPiA+ID4gLSAgICAgcHJp diA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOwo+ID4gPiAt ICAgICBpZiAoIXByaXYpCj4gPiA+IC0gICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiA+ ICsgICAgIHByaXYgPSBremFsbG9jKHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOwo+ID4gPiAr ICAgICBpZiAoIXByaXYpIHsKPiA+ID4gKyAgICAgICAgICAgICBlcnJvciA9IC1FTk9NRU07Cj4g PiA+ICsgICAgICAgICAgICAgZ290byBmYWlsX2ZyZWVfcmVnczsKPiA+ID4gKyAgICAgfQo+ID4g Pgo+ID4gPiAtICAgICBwcml2LT5kZXYgPSBkZXY7Cj4gPiA+ICsgICAgIHByaXYtPmZ3bm9kZSA9 IGZ3bm9kZTsKPiA+ID4gICAgICAgcHJpdi0+cGxpY19xdWlya3MgPSBwbGljX3F1aXJrczsKPiA+ ID4gICAgICAgcHJpdi0+bnJfaXJxcyA9IG5yX2lycXM7Cj4gPiA+ICsgICAgIHByaXYtPnJlZ3Mg PSByZWdzOwo+ID4gPgo+ID4gPiAtICAgICBwcml2LT5yZWdzID0gZGV2bV9wbGF0Zm9ybV9pb3Jl bWFwX3Jlc291cmNlKHBkZXYsIDApOwo+ID4gPiAtICAgICBpZiAoV0FSTl9PTighcHJpdi0+cmVn cykpCj4gPiA+IC0gICAgICAgICAgICAgcmV0dXJuIC1FSU87Cj4gPiA+IC0KPiA+ID4gLSAgICAg cHJpdi0+cHJpb19zYXZlID0gZGV2bV9iaXRtYXBfemFsbG9jKGRldiwgbnJfaXJxcywgR0ZQX0tF Uk5FTCk7Cj4gPiA+IC0gICAgIGlmICghcHJpdi0+cHJpb19zYXZlKQo+ID4gPiAtICAgICAgICAg ICAgIHJldHVybiAtRU5PTUVNOwo+ID4gPiArICAgICBwcml2LT5wcmlvX3NhdmUgPSBiaXRtYXBf emFsbG9jKG5yX2lycXMsIEdGUF9LRVJORUwpOwo+ID4gPiArICAgICBpZiAoIXByaXYtPnByaW9f c2F2ZSkgewo+ID4gPiArICAgICAgICAgICAgIGVycm9yID0gLUVOT01FTTsKPiA+ID4gKyAgICAg ICAgICAgICBnb3RvIGZhaWxfZnJlZV9wcml2Owo+ID4gPiArICAgICB9Cj4gPiA+Cj4gPiA+ICAg ICAgIGZvciAoaSA9IDA7IGkgPCBucl9jb250ZXh0czsgaSsrKSB7Cj4gPiA+IC0gICAgICAgICAg ICAgZXJyb3IgPSBwbGljX3BhcnNlX2NvbnRleHRfcGFyZW50KHBkZXYsIGksICZwYXJlbnRfaHdp cnEsICZjcHUpOwo+ID4gPiArICAgICAgICAgICAgIGVycm9yID0gcGxpY19wYXJzZV9jb250ZXh0 X3BhcmVudChmd25vZGUsIGksICZwYXJlbnRfaHdpcnEsICZjcHUpOwo+ID4gPiAgICAgICAgICAg ICAgIGlmIChlcnJvcikgewo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgZGV2X3dhcm4oZGV2 LCAiaHdpcnEgZm9yIGNvbnRleHQlZCBub3QgZm91bmRcbiIsIGkpOwo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgcHJfd2FybigiJXBmd1A6IGh3aXJxIGZvciBjb250ZXh0JWQgbm90IGZvdW5k XG4iLCBmd25vZGUsIGkpOwo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4g PiA+ICAgICAgICAgICAgICAgfQo+ID4gPgo+ID4gPiBAQCAtNTQzLDcgKzU0OCw3IEBAIHN0YXRp YyBpbnQgcGxpY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gPiAgICAg ICAgICAgICAgIH0KPiA+ID4KPiA+ID4gICAgICAgICAgICAgICBpZiAoY3B1IDwgMCkgewo+ID4g PiAtICAgICAgICAgICAgICAgICAgICAgZGV2X3dhcm4oZGV2LCAiSW52YWxpZCBjcHVpZCBmb3Ig Y29udGV4dCAlZFxuIiwgaSk7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBwcl93YXJuKCIl cGZ3UDogSW52YWxpZCBjcHVpZCBmb3IgY29udGV4dCAlZFxuIiwgZndub2RlLCBpKTsKPiA+ID4g ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gPiAgICAgICAgICAgICAgIH0KPiA+ ID4KPiA+ID4gQEAgLTU1NCw3ICs1NTksNyBAQCBzdGF0aWMgaW50IHBsaWNfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+ID4gICAgICAgICAgICAgICAgKi8KPiA+ID4gICAg ICAgICAgICAgICBoYW5kbGVyID0gcGVyX2NwdV9wdHIoJnBsaWNfaGFuZGxlcnMsIGNwdSk7Cj4g PiA+ICAgICAgICAgICAgICAgaWYgKGhhbmRsZXItPnByZXNlbnQpIHsKPiA+ID4gLSAgICAgICAg ICAgICAgICAgICAgIGRldl93YXJuKGRldiwgImhhbmRsZXIgYWxyZWFkeSBwcmVzZW50IGZvciBj b250ZXh0ICVkLlxuIiwgaSk7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBwcl93YXJuKCIl cGZ3UDogaGFuZGxlciBhbHJlYWR5IHByZXNlbnQgZm9yIGNvbnRleHQgJWQuXG4iLCBmd25vZGUs IGkpOwo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgcGxpY19zZXRfdGhyZXNob2xkKGhhbmRs ZXIsIFBMSUNfRElTQUJMRV9USFJFU0hPTEQpOwo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAg Z290byBkb25lOwo+ID4gPiAgICAgICAgICAgICAgIH0KPiA+ID4gQEAgLTU2OCw4ICs1NzMsOCBA QCBzdGF0aWMgaW50IHBsaWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgIGkgKiBDT05URVhUX0VOQUJMRV9TSVpFOwo+ID4gPiAg ICAgICAgICAgICAgIGhhbmRsZXItPnByaXYgPSBwcml2Owo+ID4gPgo+ID4gPiAtICAgICAgICAg ICAgIGhhbmRsZXItPmVuYWJsZV9zYXZlID0gZGV2bV9rY2FsbG9jKGRldiwgRElWX1JPVU5EX1VQ KG5yX2lycXMsIDMyKSwKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplb2YoKmhhbmRsZXItPmVuYWJsZV9zYXZlKSwgR0ZQX0tFUk5FTCk7 Cj4gPiA+ICsgICAgICAgICAgICAgaGFuZGxlci0+ZW5hYmxlX3NhdmUgPSBrY2FsbG9jKERJVl9S T1VORF9VUChucl9pcnFzLCAzMiksCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVvZigqaGFuZGxlci0+ZW5hYmxlX3NhdmUpLCBHRlBfS0VSTkVM KTsKPiA+ID4gICAgICAgICAgICAgICBpZiAoIWhhbmRsZXItPmVuYWJsZV9zYXZlKQo+ID4gPiAg ICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsX2NsZWFudXBfY29udGV4dHM7Cj4gPiA+ICBk b25lOgo+ID4gPiBAQCAtNTgxLDcgKzU4Niw3IEBAIHN0YXRpYyBpbnQgcGxpY19wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gPiAgICAgICAgICAgICAgIG5yX2hhbmRsZXJz Kys7Cj4gPiA+ICAgICAgIH0KPiA+ID4KPiA+ID4gLSAgICAgcHJpdi0+aXJxZG9tYWluID0gaXJx X2RvbWFpbl9hZGRfbGluZWFyKHRvX29mX25vZGUoZGV2LT5md25vZGUpLCBucl9pcnFzICsgMSwK PiA+ID4gKyAgICAgcHJpdi0+aXJxZG9tYWluID0gaXJxX2RvbWFpbl9hZGRfbGluZWFyKHRvX29m X25vZGUoZndub2RlKSwgbnJfaXJxcyArIDEsCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmcGxpY19pcnFkb21haW5fb3BzLCBwcml2KTsKPiA+ID4g ICAgICAgaWYgKFdBUk5fT04oIXByaXYtPmlycWRvbWFpbikpCj4gPiA+ICAgICAgICAgICAgICAg Z290byBmYWlsX2NsZWFudXBfY29udGV4dHM7Cj4gPiA+IEBAIC02MTksMTMgKzYyNCwxMyBAQCBz dGF0aWMgaW50IHBsaWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+ID4g ICAgICAgICAgICAgICB9Cj4gPiA+ICAgICAgIH0KPiA+ID4KPiA+ID4gLSAgICAgZGV2X2luZm8o ZGV2LCAibWFwcGVkICVkIGludGVycnVwdHMgd2l0aCAlZCBoYW5kbGVycyBmb3IgJWQgY29udGV4 dHMuXG4iLAo+ID4gPiAtICAgICAgICAgICAgICBucl9pcnFzLCBucl9oYW5kbGVycywgbnJfY29u dGV4dHMpOwo+ID4gPiArICAgICBwcl9pbmZvKCIlcGZ3UDogbWFwcGVkICVkIGludGVycnVwdHMg d2l0aCAlZCBoYW5kbGVycyBmb3IgJWQgY29udGV4dHMuXG4iLAo+ID4gPiArICAgICAgICAgICAg IGZ3bm9kZSwgbnJfaXJxcywgbnJfaGFuZGxlcnMsIG5yX2NvbnRleHRzKTsKPiA+ID4gICAgICAg cmV0dXJuIDA7Cj4gPiA+Cj4gPiA+ICBmYWlsX2NsZWFudXBfY29udGV4dHM6Cj4gPiA+ICAgICAg IGZvciAoaSA9IDA7IGkgPCBucl9jb250ZXh0czsgaSsrKSB7Cj4gPiA+IC0gICAgICAgICAgICAg aWYgKHBsaWNfcGFyc2VfY29udGV4dF9wYXJlbnQocGRldiwgaSwgJnBhcmVudF9od2lycSwgJmNw dSkpCj4gPiA+ICsgICAgICAgICAgICAgaWYgKHBsaWNfcGFyc2VfY29udGV4dF9wYXJlbnQoZndu b2RlLCBpLCAmcGFyZW50X2h3aXJxLCAmY3B1KSkKPiA+ID4gICAgICAgICAgICAgICAgICAgICAg IGNvbnRpbnVlOwo+ID4gPiAgICAgICAgICAgICAgIGlmIChwYXJlbnRfaHdpcnEgIT0gUlZfSVJR X0VYVCB8fCBjcHUgPCAwKQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4g PiA+IEBAIC02MzQsMTcgKzYzOSw0NCBAQCBzdGF0aWMgaW50IHBsaWNfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPiA+ID4gICAgICAgICAgICAgICBoYW5kbGVyLT5wcmVzZW50 ID0gZmFsc2U7Cj4gPiA+ICAgICAgICAgICAgICAgaGFuZGxlci0+aGFydF9iYXNlID0gTlVMTDsK PiA+ID4gICAgICAgICAgICAgICBoYW5kbGVyLT5lbmFibGVfYmFzZSA9IE5VTEw7Cj4gPiA+ICsg ICAgICAgICAgICAga2ZyZWUoaGFuZGxlci0+ZW5hYmxlX3NhdmUpOwo+ID4gPiAgICAgICAgICAg ICAgIGhhbmRsZXItPmVuYWJsZV9zYXZlID0gTlVMTDsKPiA+ID4gICAgICAgICAgICAgICBoYW5k bGVyLT5wcml2ID0gTlVMTDsKPiA+ID4gICAgICAgfQo+ID4gPiAtICAgICByZXR1cm4gLUVOT01F TTsKPiA+ID4gKyAgICAgYml0bWFwX2ZyZWUocHJpdi0+cHJpb19zYXZlKTsKPiA+ID4gK2ZhaWxf ZnJlZV9wcml2Ogo+ID4gPiArICAgICBrZnJlZShwcml2KTsKPiA+ID4gK2ZhaWxfZnJlZV9yZWdz Ogo+ID4gPiArICAgICBpb3VubWFwKHJlZ3MpOwo+ID4gPiArICAgICByZXR1cm4gZXJyb3I7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgcGxpY19wbGF0Zm9ybV9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gPiArewo+ID4gPiArICAgICByZXR1cm4gcGxp Y19wcm9iZShwZGV2LT5kZXYuZndub2RlKTsKPiA+ID4gIH0KPiA+ID4KPiA+ID4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHBsaWNfcGxhdGZvcm1fbWF0Y2hbXSA9IHsKPiA+ID4g KyAgICAgeyAuY29tcGF0aWJsZSA9ICJzaWZpdmUscGxpYy0xLjAuMCIgfSwKPiA+ID4gKyAgICAg eyAuY29tcGF0aWJsZSA9ICJyaXNjdixwbGljMCIgfSwKPiA+ID4gKyAgICAgeyAuY29tcGF0aWJs ZSA9ICJhbmRlc3RlY2gsbmNlcGxpYzEwMCIgfSwKPiA+ID4gKyAgICAge30KPiA+ID4gK307Cj4g PiA+ICsKPiA+ID4gIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHBsaWNfZHJpdmVyID0g ewo+ID4gPiAgICAgICAuZHJpdmVyID0gewo+ID4gPiAgICAgICAgICAgICAgIC5uYW1lICAgICAg ICAgICA9ICJyaXNjdi1wbGljIiwKPiA+ID4gLSAgICAgICAgICAgICAub2ZfbWF0Y2hfdGFibGUg PSBwbGljX21hdGNoLAo+ID4gPiArICAgICAgICAgICAgIC5vZl9tYXRjaF90YWJsZSA9IHBsaWNf cGxhdGZvcm1fbWF0Y2gsCj4gPiA+ICsgICAgICAgICAgICAgLnN1cHByZXNzX2JpbmRfYXR0cnMg PSB0cnVlLAo+ID4gPiAgICAgICB9LAo+ID4gPiAtICAgICAucHJvYmUgPSBwbGljX3Byb2JlLAo+ ID4gPiArICAgICAucHJvYmUgPSBwbGljX3BsYXRmb3JtX3Byb2JlLAo+ID4gPiAgfTsKPiA+ID4g IGJ1aWx0aW5fcGxhdGZvcm1fZHJpdmVyKHBsaWNfZHJpdmVyKTsKPiA+ID4gKwo+ID4gPiArc3Rh dGljIGludCBfX2luaXQgcGxpY19lYXJseV9wcm9iZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUs Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9k ZSAqcGFyZW50KQo+ID4gPiArewo+ID4gPiArICAgICByZXR1cm4gcGxpY19wcm9iZSgmbm9kZS0+ Zndub2RlKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArSVJRQ0hJUF9ERUNMQVJFKHJpc2N2LCAi dGhlYWQsYzkwMC1wbGljIiwgcGxpY19lYXJseV9wcm9iZSk7Cj4gPgo+ID4gSWYgdGhpcyBpcyBv bmx5IG5lZWRlZCBvbiB0aGUgQWxsd2lubmVyIEQxIG1heWJlIHRoaXMgc2hvdWxkIG9ubHkgbWF0 Y2ggdGhlCj4gPiBtb3JlIHNwZWNpZmljICJhbGx3aW5uZXIsc3VuMjBpLWQxLXBsaWMiPwo+ID4K PiA+IEluIGFueSBjYXNlIHRoaXMgd29ya3MgYnkgaXRzZWxmLCBidXQgbm90IHdpdGggU2FtdWVs J3MgcGF0Y2hbMV0gYXBwbGllZCwgc28KPiA+IFRlc3RlZC1ieTogRW1pbCBSZW5uZXIgQmVydGhp bmcgPGVtaWwucmVubmVyLmJlcnRoaW5nQGNhbm9uaWNhbC5jb20+Cj4gPgo+ID4gWzFdOiBodHRw czovL2xvcmUua2VybmVsLm9yZy9yLzIwMjQwMzEyMTkyNTE5LjE2MDI0OTMtMS1zYW11ZWwuaG9s bGFuZEBzaWZpdmUuY29tCj4gCj4gVGhhbmtzIGZvciB0ZXN0aW5nLgo+IAo+IENhbiB5b3UgY29u ZmlybSB0aGF0IHVzaW5nICJhbGx3aW5uZXIsc3VuMjBpLWQxLXBsaWMiIGZvciBlYXJseQo+IHBy b2JlIHdvcmtzIG9uIHRoZSBBbGx3aW5uZXIgRDEgYm9hcmQgPyBJZiB5ZXMsIHRoZSBJIHdpbGwg cXVpY2tseQo+IHNlbmQgYSB2My4KCkkgY2FuIGNvbmZpcm0gdGhhdCB0aGlzIHBhdGNoIHdvcmtz IGFzLWlzLCBhbmQgd2l0aAoiYWxsd2lubmVyLHN1bjIwaS1kMS1wbGljIiBmb3IgZWFybHkgcHJv YmUgb24gdGhlIEFsbHdpbmVyIEQxIGJvYXJkLgpUaGFuayB5b3UgZm9yIHRoaXMgZml4IEFudXAh CgpSZXZpZXdlZC1ieTogQ2hhcmxpZSBKZW5raW5zIDxjaGFybGllQHJpdm9zaW5jLmNvbT4KVGVz dGVkLWJ5OiBDaGFybGllIEplbmtpbnMgPGNoYXJsaWVAcml2b3NpbmMuY29tPgoKPiAKPiBSZWdh cmRzLAo+IEFudXAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+IGxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdAo+IGxpbnV4LXJpc2N2QGxpc3RzLmlu ZnJhZGVhZC5vcmcKPiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LXJpc2N2CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJp c2N2Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) (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 20A293F9CC for ; Mon, 19 Aug 2024 21:47:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.179 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724104045; cv=none; b=KW2usd70l9DS9sPXGeE+2pvCklTVbeQFILOqeF5dzMrC5H1Y1k9+5s1+jxOb6GAaTqqA1kcYmT5CvCgomIx2opuSZZujnW+jsHGKneuq88ptXeIvOxXVfax5m/oBJupGjATKgURUWzOPoiXqaYMtustIKYpvlm21gXTRmio8O/I= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724104045; c=relaxed/simple; bh=Gyc2UrL1ENV59090R5zlnEmz6QEldc6C3EJMSOBaZLM=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=CmAbCRmm3zMiyOZdvvEHvRPEfgnGB9RNTrXXsgEHW5A/lqq04r+2mX+CqOjZkCP5cmcCBbR6ko27U1dsmtyCa/FlXs/9B2p1c3BWoKy4g2u8HXHkwqsfo0VtFTY5/x8dRC1buLANMIq3tYc0ZSHxd7xHK41G2kbogfJ4KVxYYXo= 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=ARenZIVE; arc=none smtp.client-ip=209.85.210.179 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="ARenZIVE" Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-70d399da0b5so4107815b3a.3 for ; Mon, 19 Aug 2024 14:47:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1724104042; x=1724708842; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=YAIpKwWRKKlilWVBBY+nEUF6W52ydp0wp2I/YH4MPRg=; b=ARenZIVEpTK3HbnPXU7duC8fEuNrc050zY2wqIpHM6vpGJOdMfkFozAluekq+NoScR cdVj4nO3BlMP7erR+gOL3IyXiLsdv/7T8n89JAYzhgLGAYAHL8wSyQ6Z4FjIvUwun98w t3E0f7e7Slfdy3SMJv0PoLnZOqXAxvGiYkCWqEgXLCLa8WVIumc4/kq8Gl42HNm57V/S jF4RuQH+UFuRCBAvkxtl2axj1aNtsr9XtqXCuivfUWhkV56ZBFBlbdIklZFmCKrnUyka Mm13mk+naayBMwfnk3p47V34K9IxB3NlV+Z5e18ZCi5U2PhDov2TPzXzPQIgRvF+N9Cw ChyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724104042; x=1724708842; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YAIpKwWRKKlilWVBBY+nEUF6W52ydp0wp2I/YH4MPRg=; b=fALPmzz7xVR4Ylv8GkTwUCq8szo6p1qr33CI8+GYcLG6/1DJQ3NxHaNZyMIPVUBi/j YbFk07yR/LLh32JDYtZK1wWqgVlCNcgUcRiExQsHilEnYugoZlu2W3JuqipaeuMgqqmc VuGSmVueweLbMcKdv4GIuyn6X5LQS9je9DjEuFNAgFv/0dmWGv7AbvKqDSIdaq+mM+a+ 3yZ/F5VchCVbNZKeWUf2/6GBji7/C8mCPGrI8xs1gpeCM2TFQOWDtgNAH4xa+XwqGmd7 41yUgvwc9vHKI45zhuLWmJfaShQQxhLsX4q6qPnDlh1qAsHU1UPezPMqpAdx8ExXhidD L2PQ== X-Forwarded-Encrypted: i=1; AJvYcCWF6NTaxsJ52S8wPn9mOeeKr+Px97GWJ9ogjZzPdF97XrPyurWzZkd0Aq7RUlVwwBXjqm7jI7cMiYVIe0aY3pNTJ1S0Tlb2sEDx9lNZ X-Gm-Message-State: AOJu0Yz6VW93F89sHQU/Wiyc/vJZa6MP1cRo33JBxU9x27+3rnwTK4vT CgTeVgMFFftYgu9iFlHE54ejz+9r3UBvL7RWStAFqnwcWOEeotnwVXk8yjUB6T0= X-Google-Smtp-Source: AGHT+IGhe40HZJYU3TXvbpXci7yynru6I/nJh1BQm9O/6IPDEaLrJH/3SG9nDoUD2mtPbVkSMh7q6Q== X-Received: by 2002:a05:6a20:3141:b0:1ca:31dd:6a0e with SMTP id adf61e73a8af0-1ca31dd6b29mr10845204637.1.1724104041872; Mon, 19 Aug 2024 14:47:21 -0700 (PDT) Received: from ghost ([50.145.13.30]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7127af416fbsm6999741b3a.207.2024.08.19.14.47.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Aug 2024 14:47:21 -0700 (PDT) Date: Mon, 19 Aug 2024 14:47:18 -0700 From: Charlie Jenkins To: Anup Patel Cc: Emil Renner Berthing , Thomas Gleixner , Anup Patel , Paul Walmsley , linux-kernel@vger.kernel.org, Samuel Holland , Palmer Dabbelt , Atish Patra , linux-riscv@lists.infradead.org, Andrew Jones Subject: Re: [PATCH v2] irqchip/sifive-plic: Probe plic driver early for Allwinner D1 platform Message-ID: References: <20240817081218.2985171-1-apatel@ventanamicro.com> 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-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Mon, Aug 19, 2024 at 08:27:33PM +0530, Anup Patel wrote: > On Mon, Aug 19, 2024 at 12:27 PM Emil Renner Berthing > wrote: > > > > Anup Patel wrote: > > > The latest Linux RISC-V no longer boots on the Allwinner D1 platform > > > because the sun4i_timer driver fails to get an interrupt from PLIC. > > > > > > The real fix requires enabling the SBI time extension in the platform > > > firmware (OpenSBI) and convert sun4i_timer into platform driver. > > > Unfortunately, the real fix involves changing multiple places and > > > can't be achieved in a short duration. > > > > > > As a work-around, retrofit plic probing such that plic is probed > > > early only for the Allwinner D1 platform and probed as a regular > > > platform driver for rest of the RISC-V platforms. In the process, > > > partially revert some of the previous patches because PLIC device > > > pointer is not available in all probing paths. > > > > > > More detailed discussion can found here: > > > https://lore.kernel.org/lkml/20240814145642.344485-1-emil.renner.berthing@canonical.com/ > > > > > > Fixes: e306a894bd51 ("irqchip/sifive-plic: Chain to parent IRQ after handlers are ready") > > > Fixes: 8ec99b033147 ("irqchip/sifive-plic: Convert PLIC driver into a platform driver") > > > Suggested-by: Thomas Gleixner > > > Reviewed-by: Samuel Holland > > > Tested-by: Samuel Holland > > > Signed-off-by: Anup Patel > > > --- > > > Changes since v1: > > > - Set suppress_bind_attrs for PLIC platform driver > > > --- > > > drivers/irqchip/irq-sifive-plic.c | 128 +++++++++++++++++++----------- > > > 1 file changed, 80 insertions(+), 48 deletions(-) > > > > > > diff --git a/drivers/irqchip/irq-sifive-plic.c b/drivers/irqchip/irq-sifive-plic.c > > > index 9e22f7e378f5..33395c5a9b5b 100644 > > > --- a/drivers/irqchip/irq-sifive-plic.c > > > +++ b/drivers/irqchip/irq-sifive-plic.c > > > @@ -3,6 +3,7 @@ > > > * Copyright (C) 2017 SiFive > > > * Copyright (C) 2018 Christoph Hellwig > > > */ > > > +#define pr_fmt(fmt) "riscv-plic: " fmt > > > #include > > > #include > > > #include > > > @@ -63,7 +64,7 @@ > > > #define PLIC_QUIRK_EDGE_INTERRUPT 0 > > > > > > struct plic_priv { > > > - struct device *dev; > > > + struct fwnode_handle *fwnode; > > > struct cpumask lmask; > > > struct irq_domain *irqdomain; > > > void __iomem *regs; > > > @@ -378,8 +379,8 @@ static void plic_handle_irq(struct irq_desc *desc) > > > int err = generic_handle_domain_irq(handler->priv->irqdomain, > > > hwirq); > > > if (unlikely(err)) { > > > - dev_warn_ratelimited(handler->priv->dev, > > > - "can't find mapping for hwirq %lu\n", hwirq); > > > + pr_warn_ratelimited("%pfwP: can't find mapping for hwirq %lu\n", > > > + handler->priv->fwnode, hwirq); > > > } > > > } > > > > > > @@ -408,15 +409,14 @@ static int plic_starting_cpu(unsigned int cpu) > > > enable_percpu_irq(plic_parent_irq, > > > irq_get_trigger_type(plic_parent_irq)); > > > else > > > - dev_warn(handler->priv->dev, "cpu%d: parent irq not available\n", cpu); > > > + pr_warn("%pfwP: cpu%d: parent irq not available\n", > > > + handler->priv->fwnode, cpu); > > > plic_set_threshold(handler, PLIC_ENABLE_THRESHOLD); > > > > > > return 0; > > > } > > > > > > -static const struct of_device_id plic_match[] = { > > > - { .compatible = "sifive,plic-1.0.0" }, > > > - { .compatible = "riscv,plic0" }, > > > +static const struct of_device_id plic_quirks_match[] = { > > > { .compatible = "andestech,nceplic100", > > > .data = (const void *)BIT(PLIC_QUIRK_EDGE_INTERRUPT) }, > > > { .compatible = "thead,c900-plic", > > > @@ -424,38 +424,36 @@ static const struct of_device_id plic_match[] = { > > > {} > > > }; > > > > > > -static int plic_parse_nr_irqs_and_contexts(struct platform_device *pdev, > > > +static int plic_parse_nr_irqs_and_contexts(struct fwnode_handle *fwnode, > > > u32 *nr_irqs, u32 *nr_contexts) > > > { > > > - struct device *dev = &pdev->dev; > > > int rc; > > > > > > /* > > > * Currently, only OF fwnode is supported so extend this > > > * function for ACPI support. > > > */ > > > - if (!is_of_node(dev->fwnode)) > > > + if (!is_of_node(fwnode)) > > > return -EINVAL; > > > > > > - rc = of_property_read_u32(to_of_node(dev->fwnode), "riscv,ndev", nr_irqs); > > > + rc = of_property_read_u32(to_of_node(fwnode), "riscv,ndev", nr_irqs); > > > if (rc) { > > > - dev_err(dev, "riscv,ndev property not available\n"); > > > + pr_err("%pfwP: riscv,ndev property not available\n", fwnode); > > > return rc; > > > } > > > > > > - *nr_contexts = of_irq_count(to_of_node(dev->fwnode)); > > > + *nr_contexts = of_irq_count(to_of_node(fwnode)); > > > if (WARN_ON(!(*nr_contexts))) { > > > - dev_err(dev, "no PLIC context available\n"); > > > + pr_err("%pfwP: no PLIC context available\n", fwnode); > > > return -EINVAL; > > > } > > > > > > return 0; > > > } > > > > > > -static int plic_parse_context_parent(struct platform_device *pdev, u32 context, > > > +static int plic_parse_context_parent(struct fwnode_handle *fwnode, u32 context, > > > u32 *parent_hwirq, int *parent_cpu) > > > { > > > - struct device *dev = &pdev->dev; > > > struct of_phandle_args parent; > > > unsigned long hartid; > > > int rc; > > > @@ -464,10 +462,10 @@ static int plic_parse_context_parent(struct platform_device *pdev, u32 context, > > > * Currently, only OF fwnode is supported so extend this > > > * function for ACPI support. > > > */ > > > - if (!is_of_node(dev->fwnode)) > > > + if (!is_of_node(fwnode)) > > > return -EINVAL; > > > > > > - rc = of_irq_parse_one(to_of_node(dev->fwnode), context, &parent); > > > + rc = of_irq_parse_one(to_of_node(fwnode), context, &parent); > > > if (rc) > > > return rc; > > > > > > @@ -480,48 +478,55 @@ static int plic_parse_context_parent(struct platform_device *pdev, u32 context, > > > return 0; > > > } > > > > > > -static int plic_probe(struct platform_device *pdev) > > > +static int plic_probe(struct fwnode_handle *fwnode) > > > { > > > int error = 0, nr_contexts, nr_handlers = 0, cpu, i; > > > - struct device *dev = &pdev->dev; > > > unsigned long plic_quirks = 0; > > > struct plic_handler *handler; > > > u32 nr_irqs, parent_hwirq; > > > struct plic_priv *priv; > > > irq_hw_number_t hwirq; > > > + void __iomem *regs; > > > > > > - if (is_of_node(dev->fwnode)) { > > > + if (is_of_node(fwnode)) { > > > const struct of_device_id *id; > > > > > > - id = of_match_node(plic_match, to_of_node(dev->fwnode)); > > > + id = of_match_node(plic_quirks_match, to_of_node(fwnode)); > > > if (id) > > > plic_quirks = (unsigned long)id->data; > > > + > > > + regs = of_iomap(to_of_node(fwnode), 0); > > > + if (!regs) > > > + return -ENOMEM; > > > + } else { > > > + return -ENODEV; > > > > This driver never worked with ACPI anyways? > > > > > } > > > > > > - error = plic_parse_nr_irqs_and_contexts(pdev, &nr_irqs, &nr_contexts); > > > + error = plic_parse_nr_irqs_and_contexts(fwnode, &nr_irqs, &nr_contexts); > > > if (error) > > > - return error; > > > + goto fail_free_regs; > > > > > > - priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); > > > - if (!priv) > > > - return -ENOMEM; > > > + priv = kzalloc(sizeof(*priv), GFP_KERNEL); > > > + if (!priv) { > > > + error = -ENOMEM; > > > + goto fail_free_regs; > > > + } > > > > > > - priv->dev = dev; > > > + priv->fwnode = fwnode; > > > priv->plic_quirks = plic_quirks; > > > priv->nr_irqs = nr_irqs; > > > + priv->regs = regs; > > > > > > - priv->regs = devm_platform_ioremap_resource(pdev, 0); > > > - if (WARN_ON(!priv->regs)) > > > - return -EIO; > > > - > > > - priv->prio_save = devm_bitmap_zalloc(dev, nr_irqs, GFP_KERNEL); > > > - if (!priv->prio_save) > > > - return -ENOMEM; > > > + priv->prio_save = bitmap_zalloc(nr_irqs, GFP_KERNEL); > > > + if (!priv->prio_save) { > > > + error = -ENOMEM; > > > + goto fail_free_priv; > > > + } > > > > > > for (i = 0; i < nr_contexts; i++) { > > > - error = plic_parse_context_parent(pdev, i, &parent_hwirq, &cpu); > > > + error = plic_parse_context_parent(fwnode, i, &parent_hwirq, &cpu); > > > if (error) { > > > - dev_warn(dev, "hwirq for context%d not found\n", i); > > > + pr_warn("%pfwP: hwirq for context%d not found\n", fwnode, i); > > > continue; > > > } > > > > > > @@ -543,7 +548,7 @@ static int plic_probe(struct platform_device *pdev) > > > } > > > > > > if (cpu < 0) { > > > - dev_warn(dev, "Invalid cpuid for context %d\n", i); > > > + pr_warn("%pfwP: Invalid cpuid for context %d\n", fwnode, i); > > > continue; > > > } > > > > > > @@ -554,7 +559,7 @@ static int plic_probe(struct platform_device *pdev) > > > */ > > > handler = per_cpu_ptr(&plic_handlers, cpu); > > > if (handler->present) { > > > - dev_warn(dev, "handler already present for context %d.\n", i); > > > + pr_warn("%pfwP: handler already present for context %d.\n", fwnode, i); > > > plic_set_threshold(handler, PLIC_DISABLE_THRESHOLD); > > > goto done; > > > } > > > @@ -568,8 +573,8 @@ static int plic_probe(struct platform_device *pdev) > > > i * CONTEXT_ENABLE_SIZE; > > > handler->priv = priv; > > > > > > - handler->enable_save = devm_kcalloc(dev, DIV_ROUND_UP(nr_irqs, 32), > > > - sizeof(*handler->enable_save), GFP_KERNEL); > > > + handler->enable_save = kcalloc(DIV_ROUND_UP(nr_irqs, 32), > > > + sizeof(*handler->enable_save), GFP_KERNEL); > > > if (!handler->enable_save) > > > goto fail_cleanup_contexts; > > > done: > > > @@ -581,7 +586,7 @@ static int plic_probe(struct platform_device *pdev) > > > nr_handlers++; > > > } > > > > > > - priv->irqdomain = irq_domain_add_linear(to_of_node(dev->fwnode), nr_irqs + 1, > > > + priv->irqdomain = irq_domain_add_linear(to_of_node(fwnode), nr_irqs + 1, > > > &plic_irqdomain_ops, priv); > > > if (WARN_ON(!priv->irqdomain)) > > > goto fail_cleanup_contexts; > > > @@ -619,13 +624,13 @@ static int plic_probe(struct platform_device *pdev) > > > } > > > } > > > > > > - dev_info(dev, "mapped %d interrupts with %d handlers for %d contexts.\n", > > > - nr_irqs, nr_handlers, nr_contexts); > > > + pr_info("%pfwP: mapped %d interrupts with %d handlers for %d contexts.\n", > > > + fwnode, nr_irqs, nr_handlers, nr_contexts); > > > return 0; > > > > > > fail_cleanup_contexts: > > > for (i = 0; i < nr_contexts; i++) { > > > - if (plic_parse_context_parent(pdev, i, &parent_hwirq, &cpu)) > > > + if (plic_parse_context_parent(fwnode, i, &parent_hwirq, &cpu)) > > > continue; > > > if (parent_hwirq != RV_IRQ_EXT || cpu < 0) > > > continue; > > > @@ -634,17 +639,44 @@ static int plic_probe(struct platform_device *pdev) > > > handler->present = false; > > > handler->hart_base = NULL; > > > handler->enable_base = NULL; > > > + kfree(handler->enable_save); > > > handler->enable_save = NULL; > > > handler->priv = NULL; > > > } > > > - return -ENOMEM; > > > + bitmap_free(priv->prio_save); > > > +fail_free_priv: > > > + kfree(priv); > > > +fail_free_regs: > > > + iounmap(regs); > > > + return error; > > > +} > > > + > > > +static int plic_platform_probe(struct platform_device *pdev) > > > +{ > > > + return plic_probe(pdev->dev.fwnode); > > > } > > > > > > +static const struct of_device_id plic_platform_match[] = { > > > + { .compatible = "sifive,plic-1.0.0" }, > > > + { .compatible = "riscv,plic0" }, > > > + { .compatible = "andestech,nceplic100" }, > > > + {} > > > +}; > > > + > > > static struct platform_driver plic_driver = { > > > .driver = { > > > .name = "riscv-plic", > > > - .of_match_table = plic_match, > > > + .of_match_table = plic_platform_match, > > > + .suppress_bind_attrs = true, > > > }, > > > - .probe = plic_probe, > > > + .probe = plic_platform_probe, > > > }; > > > builtin_platform_driver(plic_driver); > > > + > > > +static int __init plic_early_probe(struct device_node *node, > > > + struct device_node *parent) > > > +{ > > > + return plic_probe(&node->fwnode); > > > +} > > > + > > > +IRQCHIP_DECLARE(riscv, "thead,c900-plic", plic_early_probe); > > > > If this is only needed on the Allwinner D1 maybe this should only match the > > more specific "allwinner,sun20i-d1-plic"? > > > > In any case this works by itself, but not with Samuel's patch[1] applied, so > > Tested-by: Emil Renner Berthing > > > > [1]: https://lore.kernel.org/r/20240312192519.1602493-1-samuel.holland@sifive.com > > Thanks for testing. > > Can you confirm that using "allwinner,sun20i-d1-plic" for early > probe works on the Allwinner D1 board ? If yes, the I will quickly > send a v3. I can confirm that this patch works as-is, and with "allwinner,sun20i-d1-plic" for early probe on the Allwiner D1 board. Thank you for this fix Anup! Reviewed-by: Charlie Jenkins Tested-by: Charlie Jenkins > > Regards, > Anup > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv