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 8E1C7480331; Mon, 31 Aug 2026 13:37:56 +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=1788183478; cv=none; b=X0QWmHWCnAwWRTDsHMs3w8KF2l7odUCFeG1DZk3zXkzaMvEUSnIcClqq1nZDozs7lamwITMNy5PbXP5z3oSPfCU0ow0eym8ugnLUZyRycGdkyswZ0lZ3jy7kRAcTq4KSlL1ziKke+hz9D5KfJmAKE331N6ydRKEwc7rBbu3a2UY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788183478; c=relaxed/simple; bh=NPSNlMd2dyiS+0NW6Z4zhLy5239fLsj646Pe7Hx53Us=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=AzHiMnNkGNAqR0VR5T43WSVJm8dreeVX0iE25WhrFGwRibfBXfJsVILCM+VrAZWE4obt0rwEYtog9jhLcR7/KB2PHLQhb1Dha0ZNH7G3RLMk/SS6LorT799qOXUCH8mMeUQDM/1OO2NM+WMYWRtd7V77HoPOCtkVRWbTcByZW4A= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jI+ndjq7; 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="jI+ndjq7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D91401F000E9; Mon, 31 Aug 2026 13:37:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788183476; bh=7omeuAaScmWAEKQyvgrvSICA5UGv4oMV1eMMTqvJPYY=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=jI+ndjq7u3ZUMSoMFriKK50SK0rT+OqOQG/T58vyVFih+C+S6/B0wpPNops+cc5kX 4L06Yb7ErsT70j9AVo/XIdgejxHoD0n0tCMhk2aDYpOgw91PdJfC0x20z31ywcm06F RSAW8XlXXfXnkaKVRgVDC1JA7+5KKjqbf3JRiZnTW7o3DMtzkERNxNrSlHqfrWMx3B /dqqK8oPF7xqi2lk9EvoiCF4KIgfYfHmW6VwONB0CjskAzlklKxEWe7G3zgEayNbci R2v5l42XXA+DHPE1/DTYV5oUtmRkYs7wuJ1e0iw9UJNN3p+b3apMjKyNVvEJmIw+RR HUO/HTJWcCJzQ== From: Sasha Levin To: patches@lists.linux.dev, stable@vger.kernel.org Cc: Hans Zhang <18255117159@163.com>, Manivannan Sadhasivam , Bjorn Helgaas , Sasha Levin , shawn.lin@rock-chips.com, lpieralisi@kernel.org, kwilczynski@kernel.org, heiko@sntech.de, linux-pci@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH AUTOSEL 6.18-5.10] PCI: rockchip: Protect root bus removal with rescan lock Date: Mon, 31 Aug 2026 09:22:27 -0400 Message-ID: <20260831133314.4125787-119-sashal@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260831133314.4125787-1-sashal@kernel.org> References: <20260831133314.4125787-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.18.48 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Hans Zhang <18255117159@163.com> [ Upstream commit 0bd9611587bb494c33566d825fe34b2705e4b167 ] Hold the pci_rescan_remove_lock lock while stopping and removing a root bus to avoid racing with concurrent rescan or hotplug operations triggered via sysfs. Such races may lead to use-after-free issues or system crashes. Signed-off-by: Hans Zhang <18255117159@163.com> Signed-off-by: Manivannan Sadhasivam [bhelgaas: commit log] Signed-off-by: Bjorn Helgaas Link: https://patch.msgid.link/20260521161822.132996-8-18255117159@163.com Signed-off-by: Sasha Levin --- LLM Generated explanations, may be completely bogus: ## Phase 1: Commit Message Forensics ### Step 1.1: Parse the Subject Line **Record:** `[PCI: rockchip] [Protect] Protect root bus removal with rescan lock` — subsystem is Rockchip PCIe host controller; action is synchronization/protection (bug fix). ### Step 1.2: Parse All Commit Message Tags **Record:** - **Fixes:** none - **Reported-by:** none - **Tested-by:** none - **Reviewed-by:** none - **Acked-by:** none - **Link:** `https://patch.msgid.link/20260521161822.132996-8-18255117159@163.com` - **Cc: stable:** none - **Signed-off-by:** Hans Zhang, Manivannan Sadhasivam, Bjorn Helgaas (ignore pipeline-added SOBs per instructions) Notable: Signed-off-by from PCI maintainer Bjorn Helgaas. No syzbot or user bug reports. ### Step 1.3: Analyze Commit Body **Record:** - **Bug:** `rockchip_pcie_remove()` tears down the root bus without holding the global PCI rescan/remove mutex, allowing concurrent sysfs- driven rescan or hotplug to operate on the same bus hierarchy. - **Symptom:** Use-after-free or system crash. - **Root cause:** Missing `pci_lock_rescan_remove()` / `pci_unlock_rescan_remove()` around `pci_stop_root_bus()` + `pci_remove_root_bus()`. - **Version info:** None in commit message. ### Step 1.4: Detect Hidden Bug Fixes **Record:** Not disguised — explicitly a race-condition / crash fix, not cleanup or optimization. --- ## Phase 2: Diff Analysis ### Step 2.1: Inventory the Changes **Record:** - **Files:** `drivers/pci/controller/pcie-rockchip-host.c` (+2 lines) - **Functions:** `rockchip_pcie_remove()` - **Scope:** Single-file, surgical fix (2 lines added) ### Step 2.2: Code Flow Change **Record:** - **Hunk (remove path):** Before — `pci_stop_root_bus()` and `pci_remove_root_bus()` run unlocked. After — same calls wrapped in `pci_lock_rescan_remove()` / `pci_unlock_rescan_remove()`. Affects driver remove / module-unbind path only. ### Step 2.3: Identify Bug Mechanism **Record:** **Category:** Synchronization / race condition. **Mechanism:** Concurrent sysfs PCI rescan (`/sys/bus/pci/rescan`, per- device `rescan`, `remove`) or hotplug can walk/modify the bus device list while `rockchip_pcie_remove()` is tearing it down without the global mutex that sysfs paths already hold. ### Step 2.4: Assess Fix Quality **Record:** Obviously correct — matches the established pattern in `pci_host_common_remove()`, `mtk_pcie_remove()`, `mvebu` and `aardvark` remove paths. Minimal, no API changes. **Regression risk:** Very low; mutex is the same one used everywhere else for this purpose. --- ## Phase 3: Git History Investigation ### Step 3.1: Blame Changed Lines **Record:** `pci_stop_root_bus()` / `pci_remove_root_bus()` in `rockchip_pcie_remove()` introduced by Rob Herring (2020-05-22, commit `f473182c7524dd`). Remove function itself dates to Shawn Lin (2018-05-09). Driver added 2016 (`e77f847df54c6`). Bug has been present since the stop/remove calls were added without locking. ### Step 3.2: Follow Fixes: Tag **Record:** No `Fixes:` tag present — N/A. ### Step 3.3: File History for Related Changes **Record:** Part of a 9-patch series "[PATCH 0/9] PCI: controller: Add missing rescan lock around root bus removal" (local mbox). Each patch is independent per cover letter. `pci_lock_rescan_remove()` infrastructure added in 2014 (`9d16947b75831`). `pci_host_common_remove()` has used the lock since 2018 (`01fcb7f777a9f`). Fix is **not** yet merged in this tree (grep shows no lock in rockchip remove; `git log --grep` for subject returned empty). ### Step 3.4: Author's Other Commits **Record:** Hans Zhang is an active PCI contributor (cadence, dwc capability-search series, etc.). Not the Rockchip driver author; fixing a cross-driver synchronization gap. ### Step 3.5: Prerequisites **Record:** No dependencies. `pci_lock_rescan_remove()` / `pci_unlock_rescan_remove()` exist in this tree (since 2014). Driver includes `../pci.h` → ``, so no new includes needed. Standalone, applies cleanly. --- ## Phase 4: Mailing List and External Research ### Step 4.1: Original Patch Discussion **Record:** `b4 dig` could not be run on an unmerged commit hash. Used local mbox `20260522_18255117159_pci_controller_add_missing_rescan_lock_ around_root_bus_removal.mbx`. Cover letter explains race with sysfs rescan/hotplug → UAF/crash. References sashiko-bot review flagging the same pattern in cadence code. **No review replies** in the mbox (patches only). WebFetch of lore URL blocked by bot protection. ### Step 4.2: Reviewers **Record:** Cover letter only; no Reviewed-by/Acked-by in thread. Commit has SOB from Manivannan Sadhasivam and Bjorn Helgaas (PCI maintainer). ### Step 4.3: Bug Report **Record:** No external bug report, syzbot, or KASAN trace. Issue identified by code review / bot review of the pattern. ### Step 4.4: Related Patches **Record:** 9-patch series for cadence, dwc, altera, brcmstb, iproc, mediatek, rockchip, vmd, plda. Each independent. Rockchip is patch 7/9. ### Step 4.5: Stable Mailing List **Record:** No stable-list discussion found in available sources. --- ## Phase 5: Code Semantic Analysis ### Step 5.1: Key Functions **Record:** `rockchip_pcie_remove()` — only function modified. ### Step 5.2: Trace Callers **Record:** Called via `.remove = rockchip_pcie_remove` in `rockchip_pcie_driver`, registered with `module_platform_driver()`. Triggers on platform device removal: module unload (`rmmod` if built as module), driver unbind, or platform teardown. ### Step 5.3: Trace Callees **Record:** `pci_lock_rescan_remove()`, `pci_stop_root_bus()`, `pci_remove_root_bus()`, `pci_unlock_rescan_remove()`, then `irq_domain_remove()`, clock/regulator cleanup. ### Step 5.4: Call Chain / Reachability **Record:** Race is between `rockchip_pcie_remove()` and sysfs paths in `pci-sysfs.c` (`rescan_store`, `dev_rescan_store`, `remove_store`, `bus_rescan_store`) — all hold `pci_lock_rescan_remove()`. An admin writing to `/sys/bus/pci/rescan` (or per-bus/device rescan/remove) while the driver is being removed can hit the race. Reachable on any Rockchip system with `CONFIG_PCIE_ROCKCHIP_HOST`. ### Step 5.5: Similar Patterns **Record:** Controllers **with** lock: `pci-host-common.c`, `pcie- mediatek-gen3.c`, `pci-mvebu.c`, `pci-aardvark.c`, `pci-hyperv.c`. Controllers **without** lock (same bug class): rockchip, cadence, dwc, altera, brcmstb, iproc, mediatek (non-gen3), vmd, plda, tegra, etc. Rockchip is a clear oversight relative to the common pattern. --- ## Phase 6: Cross-Reference Against Local Tree ### Step 6.1: Does Buggy Code Exist? **Record:** **Yes.** Tree is **v6.18.44** (`git describe HEAD` → `v6.18.44-1-g2736c32da98b9`, `make kernelversion` → `6.18.44`). `rockchip_pcie_remove()` at lines 1015–1016 calls `pci_stop_root_bus()` / `pci_remove_root_bus()` **without** the lock. Driver present since v4.8 era; bug since ~2020. ### Step 6.2: Backport Complications **Record:** **Clean apply** — 2-line addition, no structural changes, no conflicts expected. ### Step 6.3: Related Fixes Already Present? **Record:** No equivalent fix in this tree. `git log --grep="Protect root bus removal"` returned empty. Mediatek-gen3, mvebu, aardvark, pci- host-common already have the lock; rockchip does not. --- ## Phase 7: Subsystem and Maintainer Context ### Step 7.1: Subsystem Criticality **Record:** **drivers/pci/controller** — IMPORTANT. PCI core affects device enumeration and all downstream PCI devices on Rockchip SoCs (RK3399, RK3568, etc.). ### Step 7.2: Subsystem Activity **Record:** Actively maintained; recent rockchip commits in this tree (link speed, error logging, reset timing). --- ## Phase 8: Impact and Risk Assessment ### Step 8.1: Who Is Affected **Record:** Users of Rockchip SoCs with `CONFIG_PCIE_ROCKCHIP_HOST` (depends on `ARCH_ROCKCHIP`). Embedded/ARM boards using the legacy Rockchip AXI PCIe host controller. ### Step 8.2: Trigger Conditions **Record:** Driver remove/unbind concurrent with PCI sysfs rescan or remove (typically root). Uncommon in steady state but realistic during module reload, driver unbind testing, or admin sysfs operations. Requires privileges for sysfs writes; remove path can be triggered by module unload or device unbind. ### Step 8.3: Failure Mode Severity **Record:** UAF / kernel crash — **HIGH** (potential **CRITICAL** depending on exploitability of the freed PCI structures). ### Step 8.4: Risk-Benefit **Record:** **Benefit:** HIGH — prevents real crashes on a long-standing code path. **Risk:** VERY LOW — 2-line addition using existing, well- tested API, matching multiple peer drivers. **Ratio:** Strongly favors backport. --- ## Phase 9: Final Synthesis ### Step 9.1: Evidence Summary **FOR backport:** - Real synchronization bug with documented crash/UAF consequence - Matches PCI core documentation: rescan/remove must run under `pci_rescan_remove_lock` (comment in `probe.c` lines 3536–3538) - Peer drivers already use this pattern; rockchip is an outlier - 2-line, obviously correct fix - Buggy code confirmed present in v6.18.44 tree - Driver has been in production kernels for years - Signed-off-by PCI maintainer **AGAINST backport:** - No user-reported crash or syzbot reproducer (theoretical/code-review finding) - Part of a 9-patch series (but each patch is independent) **Unresolved:** No runtime crash report; lore thread review discussion unavailable (bot-blocked). ### Step 9.2: Stable Rules Checklist 1. Obviously correct and tested? **PASS** — pattern proven across multiple drivers; no Tested-by but change is trivial. 2. Fixes a real bug? **PASS** — missing mutex on a documented-required code path. 3. Important issue? **PASS** — UAF/system crash. 4. Small and contained? **PASS** — 2 lines, one function. 5. No new features/APIs? **PASS** — synchronization only. 6. Can apply to local tree? **PASS** — APIs and buggy code both present. ### Step 9.3: Exception Categories **Record:** None (not device ID, quirk, DT, build, or docs). Standard bug fix. ### Step 9.4: Decision Rationale This commit closes a long-standing race in `rockchip_pcie_remove()` where root bus teardown was not serialized against sysfs PCI rescan/remove operations. The PCI core has required this mutex since 2014, and the generic host-common remove path has used it since 2018. Rockchip was simply missed. The fix is minimal, follows established convention, and prevents crashes on Rockchip platforms during driver removal concurrent with PCI sysfs operations. For the v6.18.44 tree being evaluated, the buggy code is present and the fix applies cleanly. --- ## Verification - **[Phase 1]** Parsed subject, tags, body; no Fixes:/Reported-by/syzbot - **[Phase 2]** Diff: +2 lines in `rockchip_pcie_remove()` wrapping stop/remove with lock - **[Phase 3]** `git describe HEAD` → v6.18.44; `git blame` → stop/remove added f473182c (2020); driver since e77f847df54c6 (2016) - **[Phase 3]** `git show 9d16947b75831` → lock API added 2014; `git blame pci-host-common.c` → lock in remove since 01fcb7f777a9f (2018) - **[Phase 3]** `git log --grep="Protect root bus removal"` → empty (not merged) - **[Phase 4]** Read local mbox cover + patch 7/9; 9 independent patches; sashiko-bot race comment verified - **[Phase 4]** WebFetch lore URL → blocked; b4 dig on unmerged commit → N/A - **[Phase 5]** `grep pci_lock_rescan_remove drivers/pci/controller/` → rockchip absent; mvebu/aardvark/mediatek-gen3/hyperv present - **[Phase 5]** Read `pci-sysfs.c` rescan/remove stores — all hold lock - **[Phase 5]** Read `probe.c:3536-3552` — documents lock requirement - **[Phase 6]** Read `rockchip_pcie_remove()` lines 1009–1016 — buggy code confirmed in tree - **[Phase 6]** `Kconfig` → `PCIE_ROCKCHIP_HOST` tristate, `ARCH_ROCKCHIP` - **[Phase 8]** Race between remove and sysfs rescan → UAF/crash per commit message and PCI core design **YES**The background checks finished and match what the analysis already assumed: - **Search for commit in tree:** `b4 dig` on HEAD didn’t match this patch; `git log --grep` for the subject also found nothing. The fix isn’t in this tree yet. - **Check if fix already merged:** `git log --grep="rockchip.*rescan lock"` and `--grep="Protect root bus removal"` both returned empty — confirmed not merged in v6.18.44. **Verdict stands: YES** — backport the 2-line `pci_lock_rescan_remove()` wrap in `rockchip_pcie_remove()` to close the sysfs rescan/remove race. drivers/pci/controller/pcie-rockchip-host.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/pci/controller/pcie-rockchip-host.c b/drivers/pci/controller/pcie-rockchip-host.c index ee1822ca01db3..d203c4876d304 100644 --- a/drivers/pci/controller/pcie-rockchip-host.c +++ b/drivers/pci/controller/pcie-rockchip-host.c @@ -1012,8 +1012,10 @@ static void rockchip_pcie_remove(struct platform_device *pdev) struct rockchip_pcie *rockchip = dev_get_drvdata(dev); struct pci_host_bridge *bridge = pci_host_bridge_from_priv(rockchip); + pci_lock_rescan_remove(); pci_stop_root_bus(bridge->bus); pci_remove_root_bus(bridge->bus); + pci_unlock_rescan_remove(); irq_domain_remove(rockchip->irq_domain); rockchip_pcie_deinit_phys(rockchip); -- 2.53.0 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 B9E9BC624C6 for ; Mon, 31 Aug 2026 13:38: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:References:In-Reply-To: Message-ID:Date: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=fc6iGnEJOKthJ1Dmi0j0kt8+AjMC2/Fmq1COtjuc4K4=; b=fLtOX6QHybq4Jt u4EaG0dEvdhpQfOEWsnP7NvuBRL9xL2Cvh2ALfU1gyxujonNAsO0yylDUOguw0B93OJN4PAAJiveH o8cN3JUN3GM+ffXFnKjMGoznHYFogHzdNxF4g+m/ldZcZF2YtS+zX2DDHVBS9uMVi+SJkWMhgOT01 6Ff3NSFIQZIFSSCyyvTrudheYBh7kBwaj3K0/K8mARdJEd7xHEMTD+f/RtDYYAYOm2FxfXKfyhjhD jWTgKf/5b5fkZEE0MIbDpreoCfR1evKHTG4Jcte4OXhiydbVYzeejZA3gPyqX6tMSvl8VkRNkMHC/ ZqhrBClU82V4IY11Wnww==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x12D1-00000009Rbg-1tMt; Mon, 31 Aug 2026 13:37:59 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x12Cz-00000009Rb3-2Fbz; Mon, 31 Aug 2026 13:37:57 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id BEC9260237; Mon, 31 Aug 2026 13:37:56 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D91401F000E9; Mon, 31 Aug 2026 13:37:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788183476; bh=7omeuAaScmWAEKQyvgrvSICA5UGv4oMV1eMMTqvJPYY=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=jI+ndjq7u3ZUMSoMFriKK50SK0rT+OqOQG/T58vyVFih+C+S6/B0wpPNops+cc5kX 4L06Yb7ErsT70j9AVo/XIdgejxHoD0n0tCMhk2aDYpOgw91PdJfC0x20z31ywcm06F RSAW8XlXXfXnkaKVRgVDC1JA7+5KKjqbf3JRiZnTW7o3DMtzkERNxNrSlHqfrWMx3B /dqqK8oPF7xqi2lk9EvoiCF4KIgfYfHmW6VwONB0CjskAzlklKxEWe7G3zgEayNbci R2v5l42XXA+DHPE1/DTYV5oUtmRkYs7wuJ1e0iw9UJNN3p+b3apMjKyNVvEJmIw+RR HUO/HTJWcCJzQ== From: Sasha Levin To: patches@lists.linux.dev, stable@vger.kernel.org Cc: Hans Zhang <18255117159@163.com>, Manivannan Sadhasivam , Bjorn Helgaas , Sasha Levin , shawn.lin@rock-chips.com, lpieralisi@kernel.org, kwilczynski@kernel.org, heiko@sntech.de, linux-pci@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH AUTOSEL 6.18-5.10] PCI: rockchip: Protect root bus removal with rescan lock Date: Mon, 31 Aug 2026 09:22:27 -0400 Message-ID: <20260831133314.4125787-119-sashal@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260831133314.4125787-1-sashal@kernel.org> References: <20260831133314.4125787-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.18.48 X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org RnJvbTogSGFucyBaaGFuZyA8MTgyNTUxMTcxNTlAMTYzLmNvbT4KClsgVXBzdHJlYW0gY29tbWl0 IDBiZDk2MTE1ODdiYjQ5NGMzMzU2NmQ4MjVmZTM0YjI3MDVlNGIxNjcgXQoKSG9sZCB0aGUgcGNp X3Jlc2Nhbl9yZW1vdmVfbG9jayBsb2NrIHdoaWxlIHN0b3BwaW5nIGFuZCByZW1vdmluZyBhIHJv b3QgYnVzCnRvIGF2b2lkIHJhY2luZyB3aXRoIGNvbmN1cnJlbnQgcmVzY2FuIG9yIGhvdHBsdWcg b3BlcmF0aW9ucyB0cmlnZ2VyZWQgdmlhCnN5c2ZzLiAgU3VjaCByYWNlcyBtYXkgbGVhZCB0byB1 c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgb3Igc3lzdGVtIGNyYXNoZXMuCgpTaWduZWQtb2ZmLWJ5OiBI YW5zIFpoYW5nIDwxODI1NTExNzE1OUAxNjMuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYW5pdmFubmFu IFNhZGhhc2l2YW0gPG1hbmlAa2VybmVsLm9yZz4KW2JoZWxnYWFzOiBjb21taXQgbG9nXQpTaWdu ZWQtb2ZmLWJ5OiBCam9ybiBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPgpMaW5rOiBodHRw czovL3BhdGNoLm1zZ2lkLmxpbmsvMjAyNjA1MjExNjE4MjIuMTMyOTk2LTgtMTgyNTUxMTcxNTlA MTYzLmNvbQpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8c2FzaGFsQGtlcm5lbC5vcmc+Ci0t LQoKTExNIEdlbmVyYXRlZCBleHBsYW5hdGlvbnMsIG1heSBiZSBjb21wbGV0ZWx5IGJvZ3VzOgoK IyMgUGhhc2UgMTogQ29tbWl0IE1lc3NhZ2UgRm9yZW5zaWNzCgojIyMgU3RlcCAxLjE6IFBhcnNl IHRoZSBTdWJqZWN0IExpbmUKKipSZWNvcmQ6KiogYFtQQ0k6IHJvY2tjaGlwXSBbUHJvdGVjdF0g UHJvdGVjdCByb290IGJ1cyByZW1vdmFsIHdpdGgKcmVzY2FuIGxvY2tgIOKAlCBzdWJzeXN0ZW0g aXMgUm9ja2NoaXAgUENJZSBob3N0IGNvbnRyb2xsZXI7IGFjdGlvbiBpcwpzeW5jaHJvbml6YXRp b24vcHJvdGVjdGlvbiAoYnVnIGZpeCkuCgojIyMgU3RlcCAxLjI6IFBhcnNlIEFsbCBDb21taXQg TWVzc2FnZSBUYWdzCioqUmVjb3JkOioqCi0gKipGaXhlczoqKiBub25lCi0gKipSZXBvcnRlZC1i eToqKiBub25lCi0gKipUZXN0ZWQtYnk6Kiogbm9uZQotICoqUmV2aWV3ZWQtYnk6Kiogbm9uZQot ICoqQWNrZWQtYnk6Kiogbm9uZQotICoqTGluazoqKgogIGBodHRwczovL3BhdGNoLm1zZ2lkLmxp bmsvMjAyNjA1MjExNjE4MjIuMTMyOTk2LTgtMTgyNTUxMTcxNTlAMTYzLmNvbWAKLSAqKkNjOiBz dGFibGU6Kiogbm9uZQotICoqU2lnbmVkLW9mZi1ieToqKiBIYW5zIFpoYW5nLCBNYW5pdmFubmFu IFNhZGhhc2l2YW0sIEJqb3JuIEhlbGdhYXMKICAoaWdub3JlIHBpcGVsaW5lLWFkZGVkIFNPQnMg cGVyIGluc3RydWN0aW9ucykKCk5vdGFibGU6IFNpZ25lZC1vZmYtYnkgZnJvbSBQQ0kgbWFpbnRh aW5lciBCam9ybiBIZWxnYWFzLiBObyBzeXpib3Qgb3IKdXNlciBidWcgcmVwb3J0cy4KCiMjIyBT dGVwIDEuMzogQW5hbHl6ZSBDb21taXQgQm9keQoqKlJlY29yZDoqKgotICoqQnVnOioqIGByb2Nr Y2hpcF9wY2llX3JlbW92ZSgpYCB0ZWFycyBkb3duIHRoZSByb290IGJ1cyB3aXRob3V0CiAgaG9s ZGluZyB0aGUgZ2xvYmFsIFBDSSByZXNjYW4vcmVtb3ZlIG11dGV4LCBhbGxvd2luZyBjb25jdXJy ZW50IHN5c2ZzLQogIGRyaXZlbiByZXNjYW4gb3IgaG90cGx1ZyB0byBvcGVyYXRlIG9uIHRoZSBz YW1lIGJ1cyBoaWVyYXJjaHkuCi0gKipTeW1wdG9tOioqIFVzZS1hZnRlci1mcmVlIG9yIHN5c3Rl bSBjcmFzaC4KLSAqKlJvb3QgY2F1c2U6KiogTWlzc2luZyBgcGNpX2xvY2tfcmVzY2FuX3JlbW92 ZSgpYCAvCiAgYHBjaV91bmxvY2tfcmVzY2FuX3JlbW92ZSgpYCBhcm91bmQgYHBjaV9zdG9wX3Jv b3RfYnVzKClgICsKICBgcGNpX3JlbW92ZV9yb290X2J1cygpYC4KLSAqKlZlcnNpb24gaW5mbzoq KiBOb25lIGluIGNvbW1pdCBtZXNzYWdlLgoKIyMjIFN0ZXAgMS40OiBEZXRlY3QgSGlkZGVuIEJ1 ZyBGaXhlcwoqKlJlY29yZDoqKiBOb3QgZGlzZ3Vpc2VkIOKAlCBleHBsaWNpdGx5IGEgcmFjZS1j b25kaXRpb24gLyBjcmFzaCBmaXgsIG5vdApjbGVhbnVwIG9yIG9wdGltaXphdGlvbi4KCi0tLQoK IyMgUGhhc2UgMjogRGlmZiBBbmFseXNpcwoKIyMjIFN0ZXAgMi4xOiBJbnZlbnRvcnkgdGhlIENo YW5nZXMKKipSZWNvcmQ6KioKLSAqKkZpbGVzOioqIGBkcml2ZXJzL3BjaS9jb250cm9sbGVyL3Bj aWUtcm9ja2NoaXAtaG9zdC5jYCAoKzIgbGluZXMpCi0gKipGdW5jdGlvbnM6KiogYHJvY2tjaGlw X3BjaWVfcmVtb3ZlKClgCi0gKipTY29wZToqKiBTaW5nbGUtZmlsZSwgc3VyZ2ljYWwgZml4ICgy IGxpbmVzIGFkZGVkKQoKIyMjIFN0ZXAgMi4yOiBDb2RlIEZsb3cgQ2hhbmdlCioqUmVjb3JkOioq Ci0gKipIdW5rIChyZW1vdmUgcGF0aCk6KiogQmVmb3JlIOKAlCBgcGNpX3N0b3Bfcm9vdF9idXMo KWAgYW5kCiAgYHBjaV9yZW1vdmVfcm9vdF9idXMoKWAgcnVuIHVubG9ja2VkLiBBZnRlciDigJQg c2FtZSBjYWxscyB3cmFwcGVkIGluCiAgYHBjaV9sb2NrX3Jlc2Nhbl9yZW1vdmUoKWAgLyBgcGNp X3VubG9ja19yZXNjYW5fcmVtb3ZlKClgLiBBZmZlY3RzCiAgZHJpdmVyIHJlbW92ZSAvIG1vZHVs ZS11bmJpbmQgcGF0aCBvbmx5LgoKIyMjIFN0ZXAgMi4zOiBJZGVudGlmeSBCdWcgTWVjaGFuaXNt CioqUmVjb3JkOioqICoqQ2F0ZWdvcnk6KiogU3luY2hyb25pemF0aW9uIC8gcmFjZSBjb25kaXRp b24uCioqTWVjaGFuaXNtOioqIENvbmN1cnJlbnQgc3lzZnMgUENJIHJlc2NhbiAoYC9zeXMvYnVz L3BjaS9yZXNjYW5gLCBwZXItCmRldmljZSBgcmVzY2FuYCwgYHJlbW92ZWApIG9yIGhvdHBsdWcg Y2FuIHdhbGsvbW9kaWZ5IHRoZSBidXMgZGV2aWNlCmxpc3Qgd2hpbGUgYHJvY2tjaGlwX3BjaWVf cmVtb3ZlKClgIGlzIHRlYXJpbmcgaXQgZG93biB3aXRob3V0IHRoZQpnbG9iYWwgbXV0ZXggdGhh dCBzeXNmcyBwYXRocyBhbHJlYWR5IGhvbGQuCgojIyMgU3RlcCAyLjQ6IEFzc2VzcyBGaXggUXVh bGl0eQoqKlJlY29yZDoqKiBPYnZpb3VzbHkgY29ycmVjdCDigJQgbWF0Y2hlcyB0aGUgZXN0YWJs aXNoZWQgcGF0dGVybiBpbgpgcGNpX2hvc3RfY29tbW9uX3JlbW92ZSgpYCwgYG10a19wY2llX3Jl bW92ZSgpYCwgYG12ZWJ1YCBhbmQgYGFhcmR2YXJrYApyZW1vdmUgcGF0aHMuIE1pbmltYWwsIG5v IEFQSSBjaGFuZ2VzLiAqKlJlZ3Jlc3Npb24gcmlzazoqKiBWZXJ5IGxvdzsKbXV0ZXggaXMgdGhl IHNhbWUgb25lIHVzZWQgZXZlcnl3aGVyZSBlbHNlIGZvciB0aGlzIHB1cnBvc2UuCgotLS0KCiMj IFBoYXNlIDM6IEdpdCBIaXN0b3J5IEludmVzdGlnYXRpb24KCiMjIyBTdGVwIDMuMTogQmxhbWUg Q2hhbmdlZCBMaW5lcwoqKlJlY29yZDoqKiBgcGNpX3N0b3Bfcm9vdF9idXMoKWAgLyBgcGNpX3Jl bW92ZV9yb290X2J1cygpYCBpbgpgcm9ja2NoaXBfcGNpZV9yZW1vdmUoKWAgaW50cm9kdWNlZCBi eSBSb2IgSGVycmluZyAoMjAyMC0wNS0yMiwgY29tbWl0CmBmNDczMTgyYzc1MjRkZGApLiBSZW1v dmUgZnVuY3Rpb24gaXRzZWxmIGRhdGVzIHRvIFNoYXduIExpbgooMjAxOC0wNS0wOSkuIERyaXZl ciBhZGRlZCAyMDE2IChgZTc3Zjg0N2RmNTRjNmApLiBCdWcgaGFzIGJlZW4gcHJlc2VudApzaW5j ZSB0aGUgc3RvcC9yZW1vdmUgY2FsbHMgd2VyZSBhZGRlZCB3aXRob3V0IGxvY2tpbmcuCgojIyMg U3RlcCAzLjI6IEZvbGxvdyBGaXhlczogVGFnCioqUmVjb3JkOioqIE5vIGBGaXhlczpgIHRhZyBw cmVzZW50IOKAlCBOL0EuCgojIyMgU3RlcCAzLjM6IEZpbGUgSGlzdG9yeSBmb3IgUmVsYXRlZCBD aGFuZ2VzCioqUmVjb3JkOioqIFBhcnQgb2YgYSA5LXBhdGNoIHNlcmllcyAiW1BBVENIIDAvOV0g UENJOiBjb250cm9sbGVyOiBBZGQKbWlzc2luZyByZXNjYW4gbG9jayBhcm91bmQgcm9vdCBidXMg cmVtb3ZhbCIgKGxvY2FsIG1ib3gpLiBFYWNoIHBhdGNoIGlzCmluZGVwZW5kZW50IHBlciBjb3Zl ciBsZXR0ZXIuIGBwY2lfbG9ja19yZXNjYW5fcmVtb3ZlKClgIGluZnJhc3RydWN0dXJlCmFkZGVk IGluIDIwMTQgKGA5ZDE2OTQ3Yjc1ODMxYCkuIGBwY2lfaG9zdF9jb21tb25fcmVtb3ZlKClgIGhh cyB1c2VkIHRoZQpsb2NrIHNpbmNlIDIwMTggKGAwMWZjYjdmNzc3YTlmYCkuIEZpeCBpcyAqKm5v dCoqIHlldCBtZXJnZWQgaW4gdGhpcwp0cmVlIChncmVwIHNob3dzIG5vIGxvY2sgaW4gcm9ja2No aXAgcmVtb3ZlOyBgZ2l0IGxvZyAtLWdyZXBgIGZvcgpzdWJqZWN0IHJldHVybmVkIGVtcHR5KS4K CiMjIyBTdGVwIDMuNDogQXV0aG9yJ3MgT3RoZXIgQ29tbWl0cwoqKlJlY29yZDoqKiBIYW5zIFpo YW5nIGlzIGFuIGFjdGl2ZSBQQ0kgY29udHJpYnV0b3IgKGNhZGVuY2UsIGR3YwpjYXBhYmlsaXR5 LXNlYXJjaCBzZXJpZXMsIGV0Yy4pLiBOb3QgdGhlIFJvY2tjaGlwIGRyaXZlciBhdXRob3I7IGZp eGluZwphIGNyb3NzLWRyaXZlciBzeW5jaHJvbml6YXRpb24gZ2FwLgoKIyMjIFN0ZXAgMy41OiBQ cmVyZXF1aXNpdGVzCioqUmVjb3JkOioqIE5vIGRlcGVuZGVuY2llcy4gYHBjaV9sb2NrX3Jlc2Nh bl9yZW1vdmUoKWAgLwpgcGNpX3VubG9ja19yZXNjYW5fcmVtb3ZlKClgIGV4aXN0IGluIHRoaXMg dHJlZSAoc2luY2UgMjAxNCkuIERyaXZlcgppbmNsdWRlcyBgLi4vcGNpLmhgIOKGkiBgPGxpbnV4 L3BjaS5oPmAsIHNvIG5vIG5ldyBpbmNsdWRlcyBuZWVkZWQuClN0YW5kYWxvbmUsIGFwcGxpZXMg Y2xlYW5seS4KCi0tLQoKIyMgUGhhc2UgNDogTWFpbGluZyBMaXN0IGFuZCBFeHRlcm5hbCBSZXNl YXJjaAoKIyMjIFN0ZXAgNC4xOiBPcmlnaW5hbCBQYXRjaCBEaXNjdXNzaW9uCioqUmVjb3JkOioq IGBiNCBkaWdgIGNvdWxkIG5vdCBiZSBydW4gb24gYW4gdW5tZXJnZWQgY29tbWl0IGhhc2guIFVz ZWQKbG9jYWwgbWJveCBgMjAyNjA1MjJfMTgyNTUxMTcxNTlfcGNpX2NvbnRyb2xsZXJfYWRkX21p c3NpbmdfcmVzY2FuX2xvY2tfCmFyb3VuZF9yb290X2J1c19yZW1vdmFsLm1ieGAuIENvdmVyIGxl dHRlciBleHBsYWlucyByYWNlIHdpdGggc3lzZnMKcmVzY2FuL2hvdHBsdWcg4oaSIFVBRi9jcmFz aC4gUmVmZXJlbmNlcyBzYXNoaWtvLWJvdCByZXZpZXcgZmxhZ2dpbmcgdGhlCnNhbWUgcGF0dGVy biBpbiBjYWRlbmNlIGNvZGUuICoqTm8gcmV2aWV3IHJlcGxpZXMqKiBpbiB0aGUgbWJveCAocGF0 Y2hlcwpvbmx5KS4gV2ViRmV0Y2ggb2YgbG9yZSBVUkwgYmxvY2tlZCBieSBib3QgcHJvdGVjdGlv bi4KCiMjIyBTdGVwIDQuMjogUmV2aWV3ZXJzCioqUmVjb3JkOioqIENvdmVyIGxldHRlciBvbmx5 OyBubyBSZXZpZXdlZC1ieS9BY2tlZC1ieSBpbiB0aHJlYWQuIENvbW1pdApoYXMgU09CIGZyb20g TWFuaXZhbm5hbiBTYWRoYXNpdmFtIGFuZCBCam9ybiBIZWxnYWFzIChQQ0kgbWFpbnRhaW5lciku CgojIyMgU3RlcCA0LjM6IEJ1ZyBSZXBvcnQKKipSZWNvcmQ6KiogTm8gZXh0ZXJuYWwgYnVnIHJl cG9ydCwgc3l6Ym90LCBvciBLQVNBTiB0cmFjZS4gSXNzdWUKaWRlbnRpZmllZCBieSBjb2RlIHJl dmlldyAvIGJvdCByZXZpZXcgb2YgdGhlIHBhdHRlcm4uCgojIyMgU3RlcCA0LjQ6IFJlbGF0ZWQg UGF0Y2hlcwoqKlJlY29yZDoqKiA5LXBhdGNoIHNlcmllcyBmb3IgY2FkZW5jZSwgZHdjLCBhbHRl cmEsIGJyY21zdGIsIGlwcm9jLAptZWRpYXRlaywgcm9ja2NoaXAsIHZtZCwgcGxkYS4gRWFjaCBp bmRlcGVuZGVudC4gUm9ja2NoaXAgaXMgcGF0Y2ggNy85LgoKIyMjIFN0ZXAgNC41OiBTdGFibGUg TWFpbGluZyBMaXN0CioqUmVjb3JkOioqIE5vIHN0YWJsZS1saXN0IGRpc2N1c3Npb24gZm91bmQg aW4gYXZhaWxhYmxlIHNvdXJjZXMuCgotLS0KCiMjIFBoYXNlIDU6IENvZGUgU2VtYW50aWMgQW5h bHlzaXMKCiMjIyBTdGVwIDUuMTogS2V5IEZ1bmN0aW9ucwoqKlJlY29yZDoqKiBgcm9ja2NoaXBf cGNpZV9yZW1vdmUoKWAg4oCUIG9ubHkgZnVuY3Rpb24gbW9kaWZpZWQuCgojIyMgU3RlcCA1LjI6 IFRyYWNlIENhbGxlcnMKKipSZWNvcmQ6KiogQ2FsbGVkIHZpYSBgLnJlbW92ZSA9IHJvY2tjaGlw X3BjaWVfcmVtb3ZlYCBpbgpgcm9ja2NoaXBfcGNpZV9kcml2ZXJgLCByZWdpc3RlcmVkIHdpdGgg YG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoKWAuClRyaWdnZXJzIG9uIHBsYXRmb3JtIGRldmljZSBy ZW1vdmFsOiBtb2R1bGUgdW5sb2FkIChgcm1tb2RgIGlmIGJ1aWx0IGFzCm1vZHVsZSksIGRyaXZl ciB1bmJpbmQsIG9yIHBsYXRmb3JtIHRlYXJkb3duLgoKIyMjIFN0ZXAgNS4zOiBUcmFjZSBDYWxs ZWVzCioqUmVjb3JkOioqIGBwY2lfbG9ja19yZXNjYW5fcmVtb3ZlKClgLCBgcGNpX3N0b3Bfcm9v dF9idXMoKWAsCmBwY2lfcmVtb3ZlX3Jvb3RfYnVzKClgLCBgcGNpX3VubG9ja19yZXNjYW5fcmVt b3ZlKClgLCB0aGVuCmBpcnFfZG9tYWluX3JlbW92ZSgpYCwgY2xvY2svcmVndWxhdG9yIGNsZWFu dXAuCgojIyMgU3RlcCA1LjQ6IENhbGwgQ2hhaW4gLyBSZWFjaGFiaWxpdHkKKipSZWNvcmQ6Kiog UmFjZSBpcyBiZXR3ZWVuIGByb2NrY2hpcF9wY2llX3JlbW92ZSgpYCBhbmQgc3lzZnMgcGF0aHMg aW4KYHBjaS1zeXNmcy5jYCAoYHJlc2Nhbl9zdG9yZWAsIGBkZXZfcmVzY2FuX3N0b3JlYCwgYHJl bW92ZV9zdG9yZWAsCmBidXNfcmVzY2FuX3N0b3JlYCkg4oCUIGFsbCBob2xkIGBwY2lfbG9ja19y ZXNjYW5fcmVtb3ZlKClgLiBBbiBhZG1pbgp3cml0aW5nIHRvIGAvc3lzL2J1cy9wY2kvcmVzY2Fu YCAob3IgcGVyLWJ1cy9kZXZpY2UgcmVzY2FuL3JlbW92ZSkgd2hpbGUKdGhlIGRyaXZlciBpcyBi ZWluZyByZW1vdmVkIGNhbiBoaXQgdGhlIHJhY2UuIFJlYWNoYWJsZSBvbiBhbnkgUm9ja2NoaXAK c3lzdGVtIHdpdGggYENPTkZJR19QQ0lFX1JPQ0tDSElQX0hPU1RgLgoKIyMjIFN0ZXAgNS41OiBT aW1pbGFyIFBhdHRlcm5zCioqUmVjb3JkOioqIENvbnRyb2xsZXJzICoqd2l0aCoqIGxvY2s6IGBw Y2ktaG9zdC1jb21tb24uY2AsIGBwY2llLQptZWRpYXRlay1nZW4zLmNgLCBgcGNpLW12ZWJ1LmNg LCBgcGNpLWFhcmR2YXJrLmNgLCBgcGNpLWh5cGVydi5jYC4KQ29udHJvbGxlcnMgKip3aXRob3V0 KiogbG9jayAoc2FtZSBidWcgY2xhc3MpOiByb2NrY2hpcCwgY2FkZW5jZSwgZHdjLAphbHRlcmEs IGJyY21zdGIsIGlwcm9jLCBtZWRpYXRlayAobm9uLWdlbjMpLCB2bWQsIHBsZGEsIHRlZ3JhLCBl dGMuClJvY2tjaGlwIGlzIGEgY2xlYXIgb3ZlcnNpZ2h0IHJlbGF0aXZlIHRvIHRoZSBjb21tb24g cGF0dGVybi4KCi0tLQoKIyMgUGhhc2UgNjogQ3Jvc3MtUmVmZXJlbmNlIEFnYWluc3QgTG9jYWwg VHJlZQoKIyMjIFN0ZXAgNi4xOiBEb2VzIEJ1Z2d5IENvZGUgRXhpc3Q/CioqUmVjb3JkOioqICoq WWVzLioqIFRyZWUgaXMgKip2Ni4xOC40NCoqIChgZ2l0IGRlc2NyaWJlIEhFQURgIOKGkgpgdjYu MTguNDQtMS1nMjczNmMzMmRhOThiOWAsIGBtYWtlIGtlcm5lbHZlcnNpb25gIOKGkiBgNi4xOC40 NGApLgpgcm9ja2NoaXBfcGNpZV9yZW1vdmUoKWAgYXQgbGluZXMgMTAxNeKAkzEwMTYgY2FsbHMg YHBjaV9zdG9wX3Jvb3RfYnVzKClgCi8gYHBjaV9yZW1vdmVfcm9vdF9idXMoKWAgKip3aXRob3V0 KiogdGhlIGxvY2suIERyaXZlciBwcmVzZW50IHNpbmNlCnY0LjggZXJhOyBidWcgc2luY2UgfjIw MjAuCgojIyMgU3RlcCA2LjI6IEJhY2twb3J0IENvbXBsaWNhdGlvbnMKKipSZWNvcmQ6KiogKipD bGVhbiBhcHBseSoqIOKAlCAyLWxpbmUgYWRkaXRpb24sIG5vIHN0cnVjdHVyYWwgY2hhbmdlcywg bm8KY29uZmxpY3RzIGV4cGVjdGVkLgoKIyMjIFN0ZXAgNi4zOiBSZWxhdGVkIEZpeGVzIEFscmVh ZHkgUHJlc2VudD8KKipSZWNvcmQ6KiogTm8gZXF1aXZhbGVudCBmaXggaW4gdGhpcyB0cmVlLiBg Z2l0IGxvZyAtLWdyZXA9IlByb3RlY3QKcm9vdCBidXMgcmVtb3ZhbCJgIHJldHVybmVkIGVtcHR5 LiBNZWRpYXRlay1nZW4zLCBtdmVidSwgYWFyZHZhcmssIHBjaS0KaG9zdC1jb21tb24gYWxyZWFk eSBoYXZlIHRoZSBsb2NrOyByb2NrY2hpcCBkb2VzIG5vdC4KCi0tLQoKIyMgUGhhc2UgNzogU3Vi c3lzdGVtIGFuZCBNYWludGFpbmVyIENvbnRleHQKCiMjIyBTdGVwIDcuMTogU3Vic3lzdGVtIENy aXRpY2FsaXR5CioqUmVjb3JkOioqICoqZHJpdmVycy9wY2kvY29udHJvbGxlcioqIOKAlCBJTVBP UlRBTlQuIFBDSSBjb3JlIGFmZmVjdHMKZGV2aWNlIGVudW1lcmF0aW9uIGFuZCBhbGwgZG93bnN0 cmVhbSBQQ0kgZGV2aWNlcyBvbiBSb2NrY2hpcCBTb0NzCihSSzMzOTksIFJLMzU2OCwgZXRjLiku CgojIyMgU3RlcCA3LjI6IFN1YnN5c3RlbSBBY3Rpdml0eQoqKlJlY29yZDoqKiBBY3RpdmVseSBt YWludGFpbmVkOyByZWNlbnQgcm9ja2NoaXAgY29tbWl0cyBpbiB0aGlzIHRyZWUKKGxpbmsgc3Bl ZWQsIGVycm9yIGxvZ2dpbmcsIHJlc2V0IHRpbWluZykuCgotLS0KCiMjIFBoYXNlIDg6IEltcGFj dCBhbmQgUmlzayBBc3Nlc3NtZW50CgojIyMgU3RlcCA4LjE6IFdobyBJcyBBZmZlY3RlZAoqKlJl Y29yZDoqKiBVc2VycyBvZiBSb2NrY2hpcCBTb0NzIHdpdGggYENPTkZJR19QQ0lFX1JPQ0tDSElQ X0hPU1RgCihkZXBlbmRzIG9uIGBBUkNIX1JPQ0tDSElQYCkuIEVtYmVkZGVkL0FSTSBib2FyZHMg dXNpbmcgdGhlIGxlZ2FjeQpSb2NrY2hpcCBBWEkgUENJZSBob3N0IGNvbnRyb2xsZXIuCgojIyMg U3RlcCA4LjI6IFRyaWdnZXIgQ29uZGl0aW9ucwoqKlJlY29yZDoqKiBEcml2ZXIgcmVtb3ZlL3Vu YmluZCBjb25jdXJyZW50IHdpdGggUENJIHN5c2ZzIHJlc2NhbiBvcgpyZW1vdmUgKHR5cGljYWxs eSByb290KS4gVW5jb21tb24gaW4gc3RlYWR5IHN0YXRlIGJ1dCByZWFsaXN0aWMgZHVyaW5nCm1v ZHVsZSByZWxvYWQsIGRyaXZlciB1bmJpbmQgdGVzdGluZywgb3IgYWRtaW4gc3lzZnMgb3BlcmF0 aW9ucy4KUmVxdWlyZXMgcHJpdmlsZWdlcyBmb3Igc3lzZnMgd3JpdGVzOyByZW1vdmUgcGF0aCBj YW4gYmUgdHJpZ2dlcmVkIGJ5Cm1vZHVsZSB1bmxvYWQgb3IgZGV2aWNlIHVuYmluZC4KCiMjIyBT dGVwIDguMzogRmFpbHVyZSBNb2RlIFNldmVyaXR5CioqUmVjb3JkOioqIFVBRiAvIGtlcm5lbCBj cmFzaCDigJQgKipISUdIKiogKHBvdGVudGlhbCAqKkNSSVRJQ0FMKioKZGVwZW5kaW5nIG9uIGV4 cGxvaXRhYmlsaXR5IG9mIHRoZSBmcmVlZCBQQ0kgc3RydWN0dXJlcykuCgojIyMgU3RlcCA4LjQ6 IFJpc2stQmVuZWZpdAoqKlJlY29yZDoqKiAqKkJlbmVmaXQ6KiogSElHSCDigJQgcHJldmVudHMg cmVhbCBjcmFzaGVzIG9uIGEgbG9uZy1zdGFuZGluZwpjb2RlIHBhdGguICoqUmlzazoqKiBWRVJZ IExPVyDigJQgMi1saW5lIGFkZGl0aW9uIHVzaW5nIGV4aXN0aW5nLCB3ZWxsLQp0ZXN0ZWQgQVBJ LCBtYXRjaGluZyBtdWx0aXBsZSBwZWVyIGRyaXZlcnMuICoqUmF0aW86KiogU3Ryb25nbHkgZmF2 b3JzCmJhY2twb3J0LgoKLS0tCgojIyBQaGFzZSA5OiBGaW5hbCBTeW50aGVzaXMKCiMjIyBTdGVw IDkuMTogRXZpZGVuY2UgU3VtbWFyeQoKKipGT1IgYmFja3BvcnQ6KioKLSBSZWFsIHN5bmNocm9u aXphdGlvbiBidWcgd2l0aCBkb2N1bWVudGVkIGNyYXNoL1VBRiBjb25zZXF1ZW5jZQotIE1hdGNo ZXMgUENJIGNvcmUgZG9jdW1lbnRhdGlvbjogcmVzY2FuL3JlbW92ZSBtdXN0IHJ1biB1bmRlcgog IGBwY2lfcmVzY2FuX3JlbW92ZV9sb2NrYCAoY29tbWVudCBpbiBgcHJvYmUuY2AgbGluZXMgMzUz NuKAkzM1MzgpCi0gUGVlciBkcml2ZXJzIGFscmVhZHkgdXNlIHRoaXMgcGF0dGVybjsgcm9ja2No aXAgaXMgYW4gb3V0bGllcgotIDItbGluZSwgb2J2aW91c2x5IGNvcnJlY3QgZml4Ci0gQnVnZ3kg Y29kZSBjb25maXJtZWQgcHJlc2VudCBpbiB2Ni4xOC40NCB0cmVlCi0gRHJpdmVyIGhhcyBiZWVu IGluIHByb2R1Y3Rpb24ga2VybmVscyBmb3IgeWVhcnMKLSBTaWduZWQtb2ZmLWJ5IFBDSSBtYWlu dGFpbmVyCgoqKkFHQUlOU1QgYmFja3BvcnQ6KioKLSBObyB1c2VyLXJlcG9ydGVkIGNyYXNoIG9y IHN5emJvdCByZXByb2R1Y2VyICh0aGVvcmV0aWNhbC9jb2RlLXJldmlldwogIGZpbmRpbmcpCi0g UGFydCBvZiBhIDktcGF0Y2ggc2VyaWVzIChidXQgZWFjaCBwYXRjaCBpcyBpbmRlcGVuZGVudCkK CioqVW5yZXNvbHZlZDoqKiBObyBydW50aW1lIGNyYXNoIHJlcG9ydDsgbG9yZSB0aHJlYWQgcmV2 aWV3IGRpc2N1c3Npb24KdW5hdmFpbGFibGUgKGJvdC1ibG9ja2VkKS4KCiMjIyBTdGVwIDkuMjog U3RhYmxlIFJ1bGVzIENoZWNrbGlzdAoxLiBPYnZpb3VzbHkgY29ycmVjdCBhbmQgdGVzdGVkPyAq KlBBU1MqKiDigJQgcGF0dGVybiBwcm92ZW4gYWNyb3NzCiAgIG11bHRpcGxlIGRyaXZlcnM7IG5v IFRlc3RlZC1ieSBidXQgY2hhbmdlIGlzIHRyaXZpYWwuCjIuIEZpeGVzIGEgcmVhbCBidWc/ICoq UEFTUyoqIOKAlCBtaXNzaW5nIG11dGV4IG9uIGEgZG9jdW1lbnRlZC1yZXF1aXJlZAogICBjb2Rl IHBhdGguCjMuIEltcG9ydGFudCBpc3N1ZT8gKipQQVNTKiog4oCUIFVBRi9zeXN0ZW0gY3Jhc2gu CjQuIFNtYWxsIGFuZCBjb250YWluZWQ/ICoqUEFTUyoqIOKAlCAyIGxpbmVzLCBvbmUgZnVuY3Rp b24uCjUuIE5vIG5ldyBmZWF0dXJlcy9BUElzPyAqKlBBU1MqKiDigJQgc3luY2hyb25pemF0aW9u IG9ubHkuCjYuIENhbiBhcHBseSB0byBsb2NhbCB0cmVlPyAqKlBBU1MqKiDigJQgQVBJcyBhbmQg YnVnZ3kgY29kZSBib3RoIHByZXNlbnQuCgojIyMgU3RlcCA5LjM6IEV4Y2VwdGlvbiBDYXRlZ29y aWVzCioqUmVjb3JkOioqIE5vbmUgKG5vdCBkZXZpY2UgSUQsIHF1aXJrLCBEVCwgYnVpbGQsIG9y IGRvY3MpLiBTdGFuZGFyZApidWcgZml4LgoKIyMjIFN0ZXAgOS40OiBEZWNpc2lvbiBSYXRpb25h bGUKClRoaXMgY29tbWl0IGNsb3NlcyBhIGxvbmctc3RhbmRpbmcgcmFjZSBpbiBgcm9ja2NoaXBf cGNpZV9yZW1vdmUoKWAKd2hlcmUgcm9vdCBidXMgdGVhcmRvd24gd2FzIG5vdCBzZXJpYWxpemVk IGFnYWluc3Qgc3lzZnMgUENJCnJlc2Nhbi9yZW1vdmUgb3BlcmF0aW9ucy4gVGhlIFBDSSBjb3Jl IGhhcyByZXF1aXJlZCB0aGlzIG11dGV4IHNpbmNlCjIwMTQsIGFuZCB0aGUgZ2VuZXJpYyBob3N0 LWNvbW1vbiByZW1vdmUgcGF0aCBoYXMgdXNlZCBpdCBzaW5jZSAyMDE4LgpSb2NrY2hpcCB3YXMg c2ltcGx5IG1pc3NlZC4gVGhlIGZpeCBpcyBtaW5pbWFsLCBmb2xsb3dzIGVzdGFibGlzaGVkCmNv bnZlbnRpb24sIGFuZCBwcmV2ZW50cyBjcmFzaGVzIG9uIFJvY2tjaGlwIHBsYXRmb3JtcyBkdXJp bmcgZHJpdmVyCnJlbW92YWwgY29uY3VycmVudCB3aXRoIFBDSSBzeXNmcyBvcGVyYXRpb25zLiBG b3IgdGhlIHY2LjE4LjQ0IHRyZWUKYmVpbmcgZXZhbHVhdGVkLCB0aGUgYnVnZ3kgY29kZSBpcyBw cmVzZW50IGFuZCB0aGUgZml4IGFwcGxpZXMgY2xlYW5seS4KCi0tLQoKIyMgVmVyaWZpY2F0aW9u CgotICoqW1BoYXNlIDFdKiogUGFyc2VkIHN1YmplY3QsIHRhZ3MsIGJvZHk7IG5vIEZpeGVzOi9S ZXBvcnRlZC1ieS9zeXpib3QKLSAqKltQaGFzZSAyXSoqIERpZmY6ICsyIGxpbmVzIGluIGByb2Nr Y2hpcF9wY2llX3JlbW92ZSgpYCB3cmFwcGluZwogIHN0b3AvcmVtb3ZlIHdpdGggbG9jawotICoq W1BoYXNlIDNdKiogYGdpdCBkZXNjcmliZSBIRUFEYCDihpIgdjYuMTguNDQ7IGBnaXQgYmxhbWVg IOKGkgogIHN0b3AvcmVtb3ZlIGFkZGVkIGY0NzMxODJjICgyMDIwKTsgZHJpdmVyIHNpbmNlIGU3 N2Y4NDdkZjU0YzYgKDIwMTYpCi0gKipbUGhhc2UgM10qKiBgZ2l0IHNob3cgOWQxNjk0N2I3NTgz MWAg4oaSIGxvY2sgQVBJIGFkZGVkIDIwMTQ7IGBnaXQKICBibGFtZSBwY2ktaG9zdC1jb21tb24u Y2Ag4oaSIGxvY2sgaW4gcmVtb3ZlIHNpbmNlIDAxZmNiN2Y3NzdhOWYgKDIwMTgpCi0gKipbUGhh c2UgM10qKiBgZ2l0IGxvZyAtLWdyZXA9IlByb3RlY3Qgcm9vdCBidXMgcmVtb3ZhbCJgIOKGkiBl bXB0eSAobm90CiAgbWVyZ2VkKQotICoqW1BoYXNlIDRdKiogUmVhZCBsb2NhbCBtYm94IGNvdmVy ICsgcGF0Y2ggNy85OyA5IGluZGVwZW5kZW50CiAgcGF0Y2hlczsgc2FzaGlrby1ib3QgcmFjZSBj b21tZW50IHZlcmlmaWVkCi0gKipbUGhhc2UgNF0qKiBXZWJGZXRjaCBsb3JlIFVSTCDihpIgYmxv Y2tlZDsgYjQgZGlnIG9uIHVubWVyZ2VkIGNvbW1pdCDihpIKICBOL0EKLSAqKltQaGFzZSA1XSoq IGBncmVwIHBjaV9sb2NrX3Jlc2Nhbl9yZW1vdmUgZHJpdmVycy9wY2kvY29udHJvbGxlci9gIOKG kgogIHJvY2tjaGlwIGFic2VudDsgbXZlYnUvYWFyZHZhcmsvbWVkaWF0ZWstZ2VuMy9oeXBlcnYg cHJlc2VudAotICoqW1BoYXNlIDVdKiogUmVhZCBgcGNpLXN5c2ZzLmNgIHJlc2Nhbi9yZW1vdmUg c3RvcmVzIOKAlCBhbGwgaG9sZCBsb2NrCi0gKipbUGhhc2UgNV0qKiBSZWFkIGBwcm9iZS5jOjM1 MzYtMzU1MmAg4oCUIGRvY3VtZW50cyBsb2NrIHJlcXVpcmVtZW50Ci0gKipbUGhhc2UgNl0qKiBS ZWFkIGByb2NrY2hpcF9wY2llX3JlbW92ZSgpYCBsaW5lcyAxMDA54oCTMTAxNiDigJQgYnVnZ3kK ICBjb2RlIGNvbmZpcm1lZCBpbiB0cmVlCi0gKipbUGhhc2UgNl0qKiBgS2NvbmZpZ2Ag4oaSIGBQ Q0lFX1JPQ0tDSElQX0hPU1RgIHRyaXN0YXRlLAogIGBBUkNIX1JPQ0tDSElQYAotICoqW1BoYXNl IDhdKiogUmFjZSBiZXR3ZWVuIHJlbW92ZSBhbmQgc3lzZnMgcmVzY2FuIOKGkiBVQUYvY3Jhc2gg cGVyCiAgY29tbWl0IG1lc3NhZ2UgYW5kIFBDSSBjb3JlIGRlc2lnbgoKKipZRVMqKlRoZSBiYWNr Z3JvdW5kIGNoZWNrcyBmaW5pc2hlZCBhbmQgbWF0Y2ggd2hhdCB0aGUgYW5hbHlzaXMKYWxyZWFk eSBhc3N1bWVkOgoKLSAqKlNlYXJjaCBmb3IgY29tbWl0IGluIHRyZWU6KiogYGI0IGRpZ2Agb24g SEVBRCBkaWRu4oCZdCBtYXRjaCB0aGlzCiAgcGF0Y2g7IGBnaXQgbG9nIC0tZ3JlcGAgZm9yIHRo ZSBzdWJqZWN0IGFsc28gZm91bmQgbm90aGluZy4gVGhlIGZpeAogIGlzbuKAmXQgaW4gdGhpcyB0 cmVlIHlldC4KLSAqKkNoZWNrIGlmIGZpeCBhbHJlYWR5IG1lcmdlZDoqKiBgZ2l0IGxvZyAtLWdy ZXA9InJvY2tjaGlwLipyZXNjYW4KICBsb2NrImAgYW5kIGAtLWdyZXA9IlByb3RlY3Qgcm9vdCBi dXMgcmVtb3ZhbCJgIGJvdGggcmV0dXJuZWQgZW1wdHkg4oCUCiAgY29uZmlybWVkIG5vdCBtZXJn ZWQgaW4gdjYuMTguNDQuCgoqKlZlcmRpY3Qgc3RhbmRzOiBZRVMqKiDigJQgYmFja3BvcnQgdGhl IDItbGluZSBgcGNpX2xvY2tfcmVzY2FuX3JlbW92ZSgpYAp3cmFwIGluIGByb2NrY2hpcF9wY2ll X3JlbW92ZSgpYCB0byBjbG9zZSB0aGUgc3lzZnMgcmVzY2FuL3JlbW92ZSByYWNlLgoKIGRyaXZl cnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC1ob3N0LmMgfCAyICsrCiAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxl ci9wY2llLXJvY2tjaGlwLWhvc3QuYyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2Nr Y2hpcC1ob3N0LmMKaW5kZXggZWUxODIyY2EwMWRiMy4uZDIwM2M0ODc2ZDMwNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYworKysgYi9kcml2 ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtaG9zdC5jCkBAIC0xMDEyLDggKzEwMTIs MTAgQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfcGNpZV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKIAlzdHJ1Y3Qgcm9ja2NoaXBfcGNpZSAqcm9ja2NoaXAgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsKIAlzdHJ1Y3QgcGNpX2hvc3RfYnJpZGdlICpicmlkZ2UgPSBwY2lfaG9zdF9i cmlkZ2VfZnJvbV9wcml2KHJvY2tjaGlwKTsKIAorCXBjaV9sb2NrX3Jlc2Nhbl9yZW1vdmUoKTsK IAlwY2lfc3RvcF9yb290X2J1cyhicmlkZ2UtPmJ1cyk7CiAJcGNpX3JlbW92ZV9yb290X2J1cyhi cmlkZ2UtPmJ1cyk7CisJcGNpX3VubG9ja19yZXNjYW5fcmVtb3ZlKCk7CiAJaXJxX2RvbWFpbl9y ZW1vdmUocm9ja2NoaXAtPmlycV9kb21haW4pOwogCiAJcm9ja2NoaXBfcGNpZV9kZWluaXRfcGh5 cyhyb2NrY2hpcCk7Ci0tIAoyLjUzLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2No aXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg==