From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 E010534D3A9 for ; Fri, 24 Jul 2026 07:24:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784877901; cv=none; b=WUsuQwo4yBk1mpEOsgvhr2Qqtr2A8kRKZOUA4HsH8THJbGeuFZjU0d4wRCgbdOp9qbbh08/v+SVPSt2dJfpCfha4lKMv/bKZEJem1ZYXYA6H63bmnmOpzDe8A22cMz+Oi74K/rnLRWXGhu1kLwZQKoPgLJ2t7E6wG3nwjpzMSsc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784877901; c=relaxed/simple; bh=zdSd+aatIjxfvWmnDR5ofnxdz2j9GHhs6z1HLaTeDeo=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=o9XgDE2Mk7FLNVY67bGf9EDcNBSvSQLo6XM72tbGx19shohxD8aZRe3xOaWjFOVS9xFL6o+i8jBim//C32jcrbdV++Lije53nA5OQezvRLiukN3YzdIIQdOMqgi7PRh28HFWY58jcvrqs34tE2B71m5CUehV1RrKaRabNjMvm+k= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=htS+lPLL; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="htS+lPLL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 59CC71F000E9; Fri, 24 Jul 2026 07:24:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784877899; bh=hWRNBAZk+rd0mK/rzY9Ob7cqzY/bS1Ur8lYgvxu3bwc=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=htS+lPLLgfebDji/FaU0dzhtXPu3QCvsuYB4QitDUAgqp77hINIkoCst9YwL1etgJ +rBoq1h8TLFMRo2sGQTfiwvdwAbtLTFEVsFWqPd7U5uhhrb30KNrOPGt+dH919M+E3 nxq9oZ87yslyIQrOMrk8+vwUqEfhMexJMTBXh0Q/3cwNXRieg9+kj6LrQA8VxqYznl 2Qs28O+MJDRV+rpLCmAtN8+CFPlkyVUH8EZ+tUPcfpAHN6baF2BoV0YwQmDIe8cIPL ggompXB9EwNSCbC9lgFJQSw2FFeqPI9jzvUQa2RI1s1Agoq6ZDT4e7GYSx9LXwiOvr xvm+IqI9j2bZA== From: sashiko-bot@kernel.org Subject: Re: [PATCH v6 2/6] firmware: meson: sm: video firmware loading via secure monitor Reply-To: sashiko-reviews@lists.linux.dev To: "Zhentao Guo" Cc: linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, neil.armstrong@linaro.org, conor+dt@kernel.org, media-ci@linuxtv.org, robh@kernel.org In-Reply-To: <20260724-b4-s4-vdec-upstream-v6-2-6072a7ee7428@amlogic.com> References: <20260724-b4-s4-vdec-upstream-v6-0-6072a7ee7428@amlogic.com> <20260724-b4-s4-vdec-upstream-v6-2-6072a7ee7428@amlogic.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Fri, 24 Jul 2026 07:24:58 +0000 Message-Id: <20260724072459.59CC71F000E9@smtp.kernel.org> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Thank you for your contribution! Sashiko AI review found 5 potential issue(= s) to consider: New issues: - [Low] The patch series splits the addition of a new SMC command across tw= o commits in the wrong order, breaking the build and git bisect. Pre-existing issues: - [High] meson_sm_call always returns 0 on success of command dispatch, mas= king the actual SMC return code and leading to ignored firmware errors. - [High] Missing locking in meson_sm_call_write and meson_sm_call_read allo= ws concurrent threads to corrupt shared memory. - [High] meson_sm_map_shmem fails to handle SMCCC error codes, passing inva= lid physical addresses like 0xFFFFFFFF to ioremap_cache. - [High] meson_sm_get returns a pointer to devres-managed memory without ho= lding a device reference, causing a UAF if the driver is unbound. -- --- Patch [2]: [PATCH v6 2/6] firmware: meson: sm: video firmware loading v= ia secure monitor --- commit 712790e34d92d775f45e1b4ef265054cbaf878df Author: Zhentao Guo firmware: meson: sm: video firmware loading via secure monitor Add SM_LOAD_VIDEO_FW to the secure monitor command enum to allow decoder drivers to load firmware through the meson_sm interface. > diff --git a/include/linux/firmware/meson/meson_sm.h b/include/linux/firm= ware/meson/meson_sm.h > index 3ebc2bd9a9760..3b90b49d05529 100644 > --- a/include/linux/firmware/meson/meson_sm.h > +++ b/include/linux/firmware/meson/meson_sm.h > @@ -15,6 +15,7 @@ enum { > SM_THERMAL_CALIB_READ, > SM_A1_PWRC_SET, > SM_A1_PWRC_GET, > + SM_LOAD_VIDEO_FW, [Severity: Low] Does this patch fix a build break introduced earlier in the series? If SM_LOAD_VIDEO_FW was used in drivers/firmware/meson/meson_sm.c in a prior commit before being declared here in the enum, it would break git bisect. > }; > =20 > struct meson_sm_firmware; [Severity: High] This isn't a bug introduced by this patch, but does meson_sm_call() mask SMC errors? drivers/firmware/meson/meson_sm.c:meson_sm_call() { ... lret =3D __meson_sm_call(cmd, arg0, arg1, arg2, arg3, arg4); if (ret) *ret =3D lret; return 0; } If a caller passes NULL for ret, the function always returns 0. Should it propagate or validate lret when ret is NULL? [Severity: High] This is a pre-existing issue, but does the shared memory access lack synchronization? drivers/firmware/meson/meson_sm.c:meson_sm_call_write() { ... memcpy(fw->sm_shmem_in_base, buffer, size); if (meson_sm_call(fw, cmd_index, &written, arg0, arg1, ...) < 0) ... } And similarly in meson_sm_call_read(): drivers/firmware/meson/meson_sm.c:meson_sm_call_read() { ... if (meson_sm_call(fw, cmd_index, &size, arg0, arg1, ...) < 0) return -EINVAL; ... if (buffer) memcpy(buffer, fw->sm_shmem_out_base, size); ... } Can concurrent threads race here, overwriting shared memory before another thread finishes reading its response? [Severity: High] This is a pre-existing issue, but could this fail to handle SMCCC error cod= es correctly? drivers/firmware/meson/meson_sm.c:meson_sm_map_shmem() { u32 sm_phy_base; sm_phy_base =3D __meson_sm_call(cmd_shmem, 0, 0, 0, 0, 0); if (!sm_phy_base) return NULL; return ioremap_cache(sm_phy_base, size); } If the secure monitor returns a negative error code, sm_phy_base (u32) beco= mes 0xFFFFFFFF. Will ioremap_cache() attempt to map this invalid physical addre= ss? [Severity: High] This isn't a bug introduced by this patch, but can this result in a dangling pointer when returning devres-managed memory? drivers/firmware/meson/meson_sm.c:meson_sm_get() { struct platform_device *pdev =3D of_find_device_by_node(sm_node); struct meson_sm_firmware *fw; ... fw =3D platform_get_drvdata(pdev); put_device(&pdev->dev); return fw; } Since fw is allocated with devm_kzalloc() bound to the meson-sm device, if = the driver is unbound via sysfs, devres frees the memory. Do consumer drivers retain a dangling pointer to fw after put_device() drops the reference? --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260724-b4-s4-vdec= -upstream-v6-0-6072a7ee7428@amlogic.com?part=3D2 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 4ECDCC531F9 for ; Fri, 24 Jul 2026 07:25: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:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: References:In-Reply-To:Cc:To:Subject:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Dgdtaj6wu+VqfSsN6xboHA7T4mekZs8jwAhHFYxG1fs=; b=AL5o1zmaI9TdcV fQ8IYYqBNKpatvgkcIUFDskEMepKZDePTw9Z0RUldUZ1o7rx9ziH/yOi+m9K5yDrAtOTz0YRKL4LH lgjCCagP2hDfBZYR3XRrdkTaiopke5OMA6rHD6wpXUFnRydnvfE9Ru4kMLcS/FvYC3SHN2hK4A7eR diVb43J4H+rylXVnPVpOLWnHOzMu59/8qOp3xbr9YK4T9p1MFW4voqB0PcyInTSa/AcoFjx3emZzU f7o+WGyWAP3eH1+JrD8A+HgaSMYY7dHd4w9knlCurqVw9vqyr4o0Emm4eEUFVlyNpqEzxvOHxDYT1 mqx6X32dfusxqQVhPKKg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wnAHF-0000000FhMP-2Na9; Fri, 24 Jul 2026 07:25:01 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wnAHE-0000000FhLJ-0eXm for linux-amlogic@lists.infradead.org; Fri, 24 Jul 2026 07:25:00 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id E376943715; Fri, 24 Jul 2026 07:24:59 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 59CC71F000E9; Fri, 24 Jul 2026 07:24:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784877899; bh=hWRNBAZk+rd0mK/rzY9Ob7cqzY/bS1Ur8lYgvxu3bwc=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=htS+lPLLgfebDji/FaU0dzhtXPu3QCvsuYB4QitDUAgqp77hINIkoCst9YwL1etgJ +rBoq1h8TLFMRo2sGQTfiwvdwAbtLTFEVsFWqPd7U5uhhrb30KNrOPGt+dH919M+E3 nxq9oZ87yslyIQrOMrk8+vwUqEfhMexJMTBXh0Q/3cwNXRieg9+kj6LrQA8VxqYznl 2Qs28O+MJDRV+rpLCmAtN8+CFPlkyVUH8EZ+tUPcfpAHN6baF2BoV0YwQmDIe8cIPL ggompXB9EwNSCbC9lgFJQSw2FFeqPI9jzvUQa2RI1s1Agoq6ZDT4e7GYSx9LXwiOvr xvm+IqI9j2bZA== From: sashiko-bot@kernel.org Subject: Re: [PATCH v6 2/6] firmware: meson: sm: video firmware loading via secure monitor To: "Zhentao Guo" Cc: linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, neil.armstrong@linaro.org, conor+dt@kernel.org, media-ci@linuxtv.org, robh@kernel.org In-Reply-To: <20260724-b4-s4-vdec-upstream-v6-2-6072a7ee7428@amlogic.com> References: <20260724-b4-s4-vdec-upstream-v6-0-6072a7ee7428@amlogic.com> <20260724-b4-s4-vdec-upstream-v6-2-6072a7ee7428@amlogic.com> Date: Fri, 24 Jul 2026 07:24:58 +0000 Message-Id: <20260724072459.59CC71F000E9@smtp.kernel.org> X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg NSBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpOZXcgaXNzdWVzOgotIFtMb3ddIFRo ZSBwYXRjaCBzZXJpZXMgc3BsaXRzIHRoZSBhZGRpdGlvbiBvZiBhIG5ldyBTTUMgY29tbWFuZCBh Y3Jvc3MgdHdvIGNvbW1pdHMgaW4gdGhlIHdyb25nIG9yZGVyLCBicmVha2luZyB0aGUgYnVpbGQg YW5kIGdpdCBiaXNlY3QuCgpQcmUtZXhpc3RpbmcgaXNzdWVzOgotIFtIaWdoXSBtZXNvbl9zbV9j YWxsIGFsd2F5cyByZXR1cm5zIDAgb24gc3VjY2VzcyBvZiBjb21tYW5kIGRpc3BhdGNoLCBtYXNr aW5nIHRoZSBhY3R1YWwgU01DIHJldHVybiBjb2RlIGFuZCBsZWFkaW5nIHRvIGlnbm9yZWQgZmly bXdhcmUgZXJyb3JzLgotIFtIaWdoXSBNaXNzaW5nIGxvY2tpbmcgaW4gbWVzb25fc21fY2FsbF93 cml0ZSBhbmQgbWVzb25fc21fY2FsbF9yZWFkIGFsbG93cyBjb25jdXJyZW50IHRocmVhZHMgdG8g Y29ycnVwdCBzaGFyZWQgbWVtb3J5LgotIFtIaWdoXSBtZXNvbl9zbV9tYXBfc2htZW0gZmFpbHMg dG8gaGFuZGxlIFNNQ0NDIGVycm9yIGNvZGVzLCBwYXNzaW5nIGludmFsaWQgcGh5c2ljYWwgYWRk cmVzc2VzIGxpa2UgMHhGRkZGRkZGRiB0byBpb3JlbWFwX2NhY2hlLgotIFtIaWdoXSBtZXNvbl9z bV9nZXQgcmV0dXJucyBhIHBvaW50ZXIgdG8gZGV2cmVzLW1hbmFnZWQgbWVtb3J5IHdpdGhvdXQg aG9sZGluZyBhIGRldmljZSByZWZlcmVuY2UsIGNhdXNpbmcgYSBVQUYgaWYgdGhlIGRyaXZlciBp cyB1bmJvdW5kLgotLQoKLS0tIFBhdGNoIFsyXTogW1BBVENIIHY2IDIvNl0gZmlybXdhcmU6IG1l c29uOiBzbTogdmlkZW8gZmlybXdhcmUgbG9hZGluZyB2aWEgc2VjdXJlIG1vbml0b3IgLS0tCmNv bW1pdCA3MTI3OTBlMzRkOTJkNzc1ZjQ1ZTFiNGVmMjY1MDU0Y2JhZjg3OGRmCkF1dGhvcjogWmhl bnRhbyBHdW8gPHpoZW50YW8uZ3VvQGFtbG9naWMuY29tPgoKZmlybXdhcmU6IG1lc29uOiBzbTog dmlkZW8gZmlybXdhcmUgbG9hZGluZyB2aWEgc2VjdXJlIG1vbml0b3IKCkFkZCBTTV9MT0FEX1ZJ REVPX0ZXIHRvIHRoZSBzZWN1cmUgbW9uaXRvciBjb21tYW5kIGVudW0gdG8gYWxsb3cgZGVjb2Rl cgpkcml2ZXJzIHRvIGxvYWQgZmlybXdhcmUgdGhyb3VnaCB0aGUgbWVzb25fc20gaW50ZXJmYWNl LgoKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maXJtd2FyZS9tZXNvbi9tZXNvbl9zbS5o IGIvaW5jbHVkZS9saW51eC9maXJtd2FyZS9tZXNvbi9tZXNvbl9zbS5oCj4gaW5kZXggM2ViYzJi ZDlhOTc2MC4uM2I5MGI0OWQwNTUyOSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4L2Zpcm13 YXJlL21lc29uL21lc29uX3NtLmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L2Zpcm13YXJlL21lc29u L21lc29uX3NtLmgKPiBAQCAtMTUsNiArMTUsNyBAQCBlbnVtIHsKPiAgCVNNX1RIRVJNQUxfQ0FM SUJfUkVBRCwKPiAgCVNNX0ExX1BXUkNfU0VULAo+ICAJU01fQTFfUFdSQ19HRVQsCj4gKwlTTV9M T0FEX1ZJREVPX0ZXLAoKW1NldmVyaXR5OiBMb3ddCkRvZXMgdGhpcyBwYXRjaCBmaXggYSBidWls ZCBicmVhayBpbnRyb2R1Y2VkIGVhcmxpZXIgaW4gdGhlIHNlcmllcz8KCklmIFNNX0xPQURfVklE RU9fRlcgd2FzIHVzZWQgaW4gZHJpdmVycy9maXJtd2FyZS9tZXNvbi9tZXNvbl9zbS5jIGluIGEg cHJpb3IKY29tbWl0IGJlZm9yZSBiZWluZyBkZWNsYXJlZCBoZXJlIGluIHRoZSBlbnVtLCBpdCB3 b3VsZCBicmVhayBnaXQgYmlzZWN0LgoKPiAgfTsKPiAgCj4gIHN0cnVjdCBtZXNvbl9zbV9maXJt d2FyZTsKCltTZXZlcml0eTogSGlnaF0KVGhpcyBpc24ndCBhIGJ1ZyBpbnRyb2R1Y2VkIGJ5IHRo aXMgcGF0Y2gsIGJ1dCBkb2VzIG1lc29uX3NtX2NhbGwoKSBtYXNrIFNNQwplcnJvcnM/Cgpkcml2 ZXJzL2Zpcm13YXJlL21lc29uL21lc29uX3NtLmM6bWVzb25fc21fY2FsbCgpIHsKICAgIC4uLgog ICAgbHJldCA9IF9fbWVzb25fc21fY2FsbChjbWQsIGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMsIGFy ZzQpOwoKICAgIGlmIChyZXQpCiAgICAgICAgKnJldCA9IGxyZXQ7CgogICAgcmV0dXJuIDA7Cn0K CklmIGEgY2FsbGVyIHBhc3NlcyBOVUxMIGZvciByZXQsIHRoZSBmdW5jdGlvbiBhbHdheXMgcmV0 dXJucyAwLiBTaG91bGQgaXQKcHJvcGFnYXRlIG9yIHZhbGlkYXRlIGxyZXQgd2hlbiByZXQgaXMg TlVMTD8KCltTZXZlcml0eTogSGlnaF0KVGhpcyBpcyBhIHByZS1leGlzdGluZyBpc3N1ZSwgYnV0 IGRvZXMgdGhlIHNoYXJlZCBtZW1vcnkgYWNjZXNzIGxhY2sKc3luY2hyb25pemF0aW9uPwoKZHJp dmVycy9maXJtd2FyZS9tZXNvbi9tZXNvbl9zbS5jOm1lc29uX3NtX2NhbGxfd3JpdGUoKSB7CiAg ICAuLi4KICAgIG1lbWNweShmdy0+c21fc2htZW1faW5fYmFzZSwgYnVmZmVyLCBzaXplKTsKCiAg ICBpZiAobWVzb25fc21fY2FsbChmdywgY21kX2luZGV4LCAmd3JpdHRlbiwgYXJnMCwgYXJnMSwg Li4uKSA8IDApCiAgICAuLi4KfQoKQW5kIHNpbWlsYXJseSBpbiBtZXNvbl9zbV9jYWxsX3JlYWQo KToKCmRyaXZlcnMvZmlybXdhcmUvbWVzb24vbWVzb25fc20uYzptZXNvbl9zbV9jYWxsX3JlYWQo KSB7CiAgICAuLi4KICAgIGlmIChtZXNvbl9zbV9jYWxsKGZ3LCBjbWRfaW5kZXgsICZzaXplLCBh cmcwLCBhcmcxLCAuLi4pIDwgMCkKICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAgIC4uLgogICAg aWYgKGJ1ZmZlcikKICAgICAgICBtZW1jcHkoYnVmZmVyLCBmdy0+c21fc2htZW1fb3V0X2Jhc2Us IHNpemUpOwogICAgLi4uCn0KCkNhbiBjb25jdXJyZW50IHRocmVhZHMgcmFjZSBoZXJlLCBvdmVy d3JpdGluZyBzaGFyZWQgbWVtb3J5IGJlZm9yZSBhbm90aGVyCnRocmVhZCBmaW5pc2hlcyByZWFk aW5nIGl0cyByZXNwb25zZT8KCltTZXZlcml0eTogSGlnaF0KVGhpcyBpcyBhIHByZS1leGlzdGlu ZyBpc3N1ZSwgYnV0IGNvdWxkIHRoaXMgZmFpbCB0byBoYW5kbGUgU01DQ0MgZXJyb3IgY29kZXMK Y29ycmVjdGx5PwoKZHJpdmVycy9maXJtd2FyZS9tZXNvbi9tZXNvbl9zbS5jOm1lc29uX3NtX21h cF9zaG1lbSgpIHsKICAgIHUzMiBzbV9waHlfYmFzZTsKCiAgICBzbV9waHlfYmFzZSA9IF9fbWVz b25fc21fY2FsbChjbWRfc2htZW0sIDAsIDAsIDAsIDAsIDApOwogICAgaWYgKCFzbV9waHlfYmFz ZSkKICAgICAgICByZXR1cm4gTlVMTDsKCiAgICByZXR1cm4gaW9yZW1hcF9jYWNoZShzbV9waHlf YmFzZSwgc2l6ZSk7Cn0KCklmIHRoZSBzZWN1cmUgbW9uaXRvciByZXR1cm5zIGEgbmVnYXRpdmUg ZXJyb3IgY29kZSwgc21fcGh5X2Jhc2UgKHUzMikgYmVjb21lcwoweEZGRkZGRkZGLiBXaWxsIGlv cmVtYXBfY2FjaGUoKSBhdHRlbXB0IHRvIG1hcCB0aGlzIGludmFsaWQgcGh5c2ljYWwgYWRkcmVz cz8KCltTZXZlcml0eTogSGlnaF0KVGhpcyBpc24ndCBhIGJ1ZyBpbnRyb2R1Y2VkIGJ5IHRoaXMg cGF0Y2gsIGJ1dCBjYW4gdGhpcyByZXN1bHQgaW4gYSBkYW5nbGluZwpwb2ludGVyIHdoZW4gcmV0 dXJuaW5nIGRldnJlcy1tYW5hZ2VkIG1lbW9yeT8KCmRyaXZlcnMvZmlybXdhcmUvbWVzb24vbWVz b25fc20uYzptZXNvbl9zbV9nZXQoKSB7CiAgICBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShzbV9ub2RlKTsKICAgIHN0cnVjdCBtZXNvbl9zbV9m aXJtd2FyZSAqZnc7CiAgICAuLi4KICAgIGZ3ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7 CgogICAgcHV0X2RldmljZSgmcGRldi0+ZGV2KTsKCiAgICByZXR1cm4gZnc7Cn0KClNpbmNlIGZ3 IGlzIGFsbG9jYXRlZCB3aXRoIGRldm1fa3phbGxvYygpIGJvdW5kIHRvIHRoZSBtZXNvbi1zbSBk ZXZpY2UsIGlmIHRoZQpkcml2ZXIgaXMgdW5ib3VuZCB2aWEgc3lzZnMsIGRldnJlcyBmcmVlcyB0 aGUgbWVtb3J5LiBEbyBjb25zdW1lciBkcml2ZXJzCnJldGFpbiBhIGRhbmdsaW5nIHBvaW50ZXIg dG8gZncgYWZ0ZXIgcHV0X2RldmljZSgpIGRyb3BzIHRoZSByZWZlcmVuY2U/CgotLSAKU2FzaGlr byBBSSByZXZpZXcgwrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8jL3BhdGNoc2V0LzIwMjYwNzI0LWI0 LXM0LXZkZWMtdXBzdHJlYW0tdjYtMC02MDcyYTdlZTc0MjhAYW1sb2dpYy5jb20/cGFydD0yCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hbWxv Z2ljIG1haWxpbmcgbGlzdApsaW51eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hbWxvZ2ljCg==