From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) (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 06BDD26ED3E; Mon, 21 Sep 2026 05:58:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=52.59.177.22 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789970294; cv=none; b=HKudMyccUpNy6OqXt4XjsWBPU2MV01bp8SUO1nWYhBSYRdv8d5n/QuUhPaQlea8Pbnt8LNNG2HTGISz+wkKweXKUKDk8FdYNm97R1Y8OoXPIErMUoLfAo4t6XKaF9WgNSgcm4e2GzrL2Jem/UoHCcb1abfF1ZsEcyWux7IsZdWU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789970294; c=relaxed/simple; bh=Gy0U82MW4TsD0e4b9KeSeYvK3g+Bctl2cohvlZ8HfqA=; h=Mime-Version:Content-Type:Date:Message-Id:Cc:Subject:From:To: References:In-Reply-To; b=KgJgquovFYgjUIRLt86+6LGm5NdD+umYHn75Cuap/pD/SH+zZqTvWcvZu9Y4NQLNiyhVNU6HNR9Oo+gZ63/Y8vWEJTIfJEii2bdYMzyndT+YvZXbj3EanRxt4Au+d2vl37AZ7PM4PxPcxMeLCn+uCG8qmeh25iHW+pdSxS2PTnk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com; spf=none smtp.mailfrom=linux.spacemit.com; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b=NG2jhQ8x; arc=none smtp.client-ip=52.59.177.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b="NG2jhQ8x" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.spacemit.com; s=mxsw2412; t=1789970156; bh=pyhixoq/RXMQq/EUePQqUA2MsL1uQc0Uc52l03+BnGA=; h=Mime-Version:Date:Message-Id:Subject:From:To; b=NG2jhQ8xrDAEU/02FRx43/3xUsx3o9PwvEikXNYunZ4fqrTikdL0mqzrQ/9A/+Apy +cKHSYmnwzMQ3AF5KViX1WvrJgQzlJMmqFp1kW7aSvTaE9X6b7x60SLA/a8ZhG9MDp WqnbslBBaZBrPRjIqwp0DF4SBqCbWbZHzmxi1ON0= X-QQ-mid: esmtpgz14t1789970151tf16cf137 X-QQ-Originating-IP: QCgaxLI7jDhwJHBvAR2ArdVF5Rj/K1zGCGKIgOuRbNw= Received: from localhost ( [8.217.118.106]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 21 Sep 2026 13:55:42 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 18343756932076772268 Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Mon, 21 Sep 2026 13:55:42 +0800 Message-Id: Cc: "Alex Elder" , "Yixun Lan" , "Manivannan Sadhasivam" , "Lorenzo Pieralisi" , "Krzysztof Wilczynski" , "Rob Herring" , "Bjorn Helgaas" , "Danilo Krummrich" , "Uwe Kleine-Koenig" , "Javier Martinez Canillas" , , "linux-riscv" Subject: Re: [BUG] PCI: spacemit-k1: port C probe hard-hangs a CPU with one endpoint on Milk-V Jupiter From: "Encrow Thorne" To: "Bruno Banelli" , , , X-Mailer: aerc 0.22.0-0-gc2f86b7abde3 References: <20260825052249.66921-1-bbanelli@gmail.com> In-Reply-To: <20260825052249.66921-1-bbanelli@gmail.com> X-QQ-SENDSIZE: 520 Feedback-ID: esmtpgz:linux.spacemit.com:qybglogicsvrsz:qybglogicsvrsz3b-0 X-QQ-XMAILINFO: MACXe2l6e7j9A7dM9VfTYUnw6oxnzmeWixSrplKglMxJfmgzA21Op+TN uKRe6BDLaUBA2SU2E9yJfEg93hrsFdtRCvuWMfdzl3xhRdG5deJy8K9vKHBmjLE1qu9Em0G WyfJUXo9UYcpL8eAaYmoMnF4GoWRAtNj4xMROGtKvPevqQAxnsqm+cvuH2kb+Ce3vryu7Du nBZ8R4/M/fMRE8GyyEuKlhTg1AwjXpfaxmGSjUPedvOTe61uBeRPY6lfxScslzDnCOborLB 1KaqCBVeBgwQEWc6PnimF+eaekTqyFMFkr3AYWhKJndn1VLNKCZ3l8LPkOnE89tallS/ELZ d3uiTl/1yH8z0wADJQ/+iBc9fvwvSeOI1pb10eKVjkX1eHVc293jr71O0Y8vci7SHq27w93 0cKen3uMlLsIu8TrJcJIXAtY4SEAh4TlpGYBHy1ajv2rtKWAgyIrkyD4eK9EFwm90Jqxo2N Cl9uJoJuD3HvOutLZLHWk89sP8riaBmtPw4rkDR46utlz2KSFsLxH9PXXE1x3s2grmW52UN x87AGc3aQMHucqtOUUMwXJpnQN5YriHtroiqFi54xzC58o+usxmIFzUZsjq4mji6NWKaodB HXStMo3RVYILyTuMmJayOZxYNIhHPBmtMuEbjBh4EvhIV/7s+ml0hdnKxy4XnCB1+jdXH1l ClRL5pxaTokqt9ayDC8iXrnujfmzvLStoFBRgB0AnDWuRq0KEI1EJwUwaWaEg08PBYBypNg E4k6hMqHHUCaD4hiCX13A3dOv+CQC4JxLOniUUX9BBRkeSsfuM+hKOGa3lOrPC5tEn3wuKJ zhsh+fLkMAU3cubQxiH+tWt7pRPUqhhP7aDW7m09OY9LcnnwsodPgcdahDmjPLrkTk/nzpJ 3hcPS9dJ4UrKOjJ5H3tqHtMTQlAobzWin5URiRiI9sA74/ItU9F6eR130FQ62S91g9wsa7T B1iXtLpClg7qUJqE2hUKVOFWenHNE8PxbuKPCmBP12stWYlLmjfBDucHbWVUbrjK48+s= X-QQ-XMRINFO: OWPUhxQsoeAVwkVaQIEGSKwwgKCxK/fD5g== X-QQ-RECHKSPAM: 0 On Tue Aug 25, 2026 at 1:22 PM CST, Bruno Banelli wrote: > Hi, > > On a Milk-V Jupiter, probing the PCIe controller at ca800000 (port C, the > card slot) permanently wedges the CPU that runs the probe when one > particular add-in card is installed. The CPU stops responding to NMI, an= d > because the probe is asynchronous, kernel_init() then blocks forever in > async_synchronize_full() and the machine never finishes booting. > > The same card, in the same slot, on the same board, does *not* hang the > vendor 6.6 kernel -- it reports "Phy link never came up" and boots normal= ly. > Six other cards do not hang mainline either. So whatever the electrical > cause, this looks like a robustness problem in pcie-spacemit-k1: an endpo= int > should not be able to hang a host-side DBI register access. > > > HARDWARE > -------- > Milk-V Jupiter v1.1, SpacemiT M1 (socinfo: CPU[M1-8571] REV[C] DRO[130]= ), > 16 GiB LPDDR4X. > Firmware: stock vendor U-Boot 2022.10 (k1-bl-v2.2.9), unmodified. > Port B (ca400000, M.2) has a Samsung PM9B1 NVMe and works throughout. > Port C (ca800000) is the card slot -- an x8-length connector, silkscree= ned > PCIE_X2, wired x2. > > > REPRODUCED ON > ------------- > v7.1 and v7.2, riscv defconfig (plus PHY_SPACEMIT_K1_USB2, USB_DWC3, > SPACEMIT_K1_TSENSOR, IGB, IGC, NVMe/ext4 built in). > gcc 13.3.0 (cross) and gcc 16.2.0 (native, Debian sid). > Identical failure in all combinations. Not a regression -- port C has > never worked with this card on mainline. > > Command line: > console=3DttyS0,115200 earlycon root=3D/dev/nvme0n1p2 rootwait rw > swiotlb=3D65536 clk_ignore_unused pd_ignore_unused > > > SYMPTOM > ------- > Port C prints its address ranges and then never speaks again. (Log below= is > from a run with port B disabled in DT, so nothing is interleaved.) > > [ 1.290074] spacemit-k1-pcie ca800000.pcie: host bridge /soc/pcie-bus/p= cie@ca800000 ranges: > [ 1.297283] spacemit-k1-pcie ca800000.pcie: IO 0x00b7002000..0x00= b7101fff -> 0x0000000000 > [ 1.312783] spacemit-k1-pcie ca800000.pcie: MEM 0x00a0000000..0x00= afffffff -> 0x00a0000000 > [ 1.326753] spacemit-k1-pcie ca800000.pcie: MEM 0x00b0000000..0x00= b6ffffff -> 0x00b0000000 > [22.348490] rcu: INFO: rcu_sched detected stalls on CPUs/tasks: > [22.351764] rcu: 4-...0: (12 GPs behind) idle=3D051c/1/0x4000000000= 000000 softirq=3D43/43 fqs=3D1908 > [22.367040] Sending NMI from CPU 2 to CPUs 4: > [32.367049] After 10 seconds, these CPUS still haven't responded to the= NMI: 4 > > The CPU ignoring an NMI for ten seconds is why I read this as an MMIO acc= ess > that never receives a completion rather than a spin or a deadlock. > > > LOCALISATION > ------------ > I added a dev_info() before each step of k1_pcie_init() (patch at the end= of > this mail). The last marker port C prints is the one immediately before = the > first DBI access: > > [1.347050] spacemit-k1-pcie ca800000.pcie: K1DBG 1 toggle_soft_reset > [1.362635] spacemit-k1-pcie ca800000.pcie: K1DBG 2 enable_resources > [1.370918] spacemit-k1-pcie ca800000.pcie: K1DBG 3 first DBI write (ven= dor/device ID) > > > i.e. it dies in > > dw_pcie_dbi_ro_wr_en(pci); > dw_pcie_writew_dbi(pci, PCI_VENDOR_ID, PCI_VENDOR_ID_SPACEMIT); > > which is the first register access to the controller after > k1_pcie_enable_resources() has enabled the clocks and deasserted the rese= ts. > > I also tried moving phy_init() ahead of that block, in case the DBI domai= n > needed the PHY running (port B is masked here, because vendor U-Boot > initialises port B's PHY and never touches port C's). phy_init() returne= d > success and the DBI access still hung: > > K1DBG 1 toggle_soft_reset > K1DBG 2 enable_resources > K1DBG 4 assert PERST# + 100ms > K1DBG 5 RC mode + AUX_PWR_DET > K1DBG 6 phy_init > K1DBG 3 first DBI write (vendor/device ID) <- still the last line > > > CARD MATRIX (port C, mainline 7.2, otherwise identical boots) > ------------------------------------------------------------- > empty slot boots > Intel I210 [8086:1533] Gen1 x1 link up, enumerates > HP NC360T [8086:105e] Gen1 x2 link up, enumerates > NVIDIA Quadro P400[10de:1cb3] Gen1 x2 link up, enumerates > NVIDIA Quadro T400[10de:1fb2] Gen1 x1 link up, enumerates > AMD Radeon RX 550 [1002:699f] Gen1 x2 link up, enumerates > Sun ATLS1QGE "Device found, but not active" > HP NC375T "Device found, but not active" > Intel I225-V rev 01 *** CPU HANG *** > > Note the two cards that do not train fail *politely* -- the DWC core logs > "Device found, but not active", the probe completes, an empty bus 0002:00= is > created and the machine boots. So port C is perfectly capable of handlin= g a > link that never comes up. The I225-V is different, and it fails long bef= ore > link training is reached. > > The I225-V card itself is good: it works on a MACCHIATObin (Armada 8040) = in > the same office, and it works on this same Jupiter under the vendor kerne= l. > > > THE VENDOR DRIVER SURVIVES THE SAME CARD > ---------------------------------------- > Bianbu 2.3.5 / Linux 6.6.63, vendor k1x-dwc-pcie driver, same board, same > slot, same I225-V: > > [ 1.657482] k1x-dwc-pcie ca400000.pcie: PCIe Gen.2 x2 link up > [ 2.949762] k1x-dwc-pcie ca800000.pcie: Phy link never came up > [ 2.952808] k1x-dwc-pcie ca800000.pcie: PCI host bridge to bus 0002:00 > ... boots to a login prompt > > The vendor driver does not do the "set the PCI vendor and device ID" DBI > write at that point in its sequence. > > > HYPOTHESES ELIMINATED BY EXPERIMENT > ----------------------------------- > nvme driver initcall_blacklist=3Dnvme_init -- still hangs > power domains pd_ignore_unused -- still hangs > link training dies before dw_pcie_iatu_detect() > kernel version identical on v7.1 and v7.2 > compiler identical with gcc 13.3 and gcc 16.2 > PHY init ordering phy_init() first -- returns 0, still hangs > CLKREQ# pinmux CLKREQ# removed from pcie2_4_cfg -- still hangs > port B interference port B disabled in DT -- still hangs > power supply 12 V / 12.5 A bench supply, not USB-C PD > > > A POSSIBLY RELATED OBSERVATION > ------------------------------ > k1_pcie_init() writes PCI_VENDOR_ID_SPACEMIT / PCI_DEVICE_ID_SPACEMIT_K1 = to > both ports. On this board the write takes effect on port B but not on po= rt C > -- including on the boots where port C works fine: > > pci 0001:00:00.0: [201f:0001] type 01 class 0x060400 PCIe Root Port > pci 0002:00:00.0: [1e5d:3003] type 01 class 0x060400 PCIe Root Port > > 1e5d:3003 is the hardware default (ASR Microelectronics). So that same D= BI > read-only write is being silently dropped on port C even when it does not > hang. I do not know whether this is the same underlying issue, but it is= in > the same function and on the same port, so it seemed worth mentioning. > > > WORKAROUND > ---------- > &pcie2 { status =3D "disabled"; }; > > or, from U-Boot, before booti: > > fdt set /soc/pcie-bus/pcie@ca800000 status disabled > > With that, mainline 7.2 boots Debian happily on this board with root on t= he > M.2 NVMe. Nobody's board is stuck; the slot is just unusable with this c= ard. > > Note this is not a problem with the DTS enablement of &pcie2 (added in 7.= 1) -- > an empty slot, and six of seven cards, work fine. > > > WHAT I AM ASKING > ---------------- > I do not have the K1 documentation, so I have gone as far as I can from > outside. I would appreciate a pointer to what could gate that first DBI > access on port C -- CLK_PCIE2_DBI/MASTER/SLAVE, RESET_PCIE2_*, or somethi= ng > in the PMU/APMU block -- and I am happy to run any test you like on this > board. > > Separately, and regardless of the cause: a hard CPU hang on an unanswered > DBI read is an unpleasant failure mode, since there is no completion time= out > and no machine check to abort it on RISC-V. If there is a sane way to bo= und > it, that seems worth having. > > Full logs for every boot referenced above are available on request. > > Thanks, > Bruno Banelli > > Hi Bruno, The issue was caused by a missing hardware configuration in the K1 PCIe initialization. The PMU PCIE_CONTROL_LOGIC register contains an IGNORE_PERSTN bit (BIT(2)). The hardware manual describes it as follows: =E2=80=9CWhen set to 1, the PCIe controller and PHY ignore the PERSTN signa= l from the link partner in both RC and EP modes.=E2=80=9D This bit was not configured during RC initialization. As a result, the controller and PHY could still be affected by the PERSTN input during the early DBI accesses. With the Intel I225-V installed, the first DBI access could remain pending and hang the CPU. After configuring this bit during PCIe initialization, the DBI hang and the resulting RCU stall no longer occur in our testing. Regards, Encrow Thorne > -------------------------------------------------------------------------= ------- > Instrumentation used for the localisation above (not for merging): > > diff --git a/drivers/pci/controller/dwc/pcie-spacemit-k1.c b/drivers/pci/= controller/dwc/pcie-spacemit-k1.c > index 04241df8f..d4c08e021 100644 > --- a/drivers/pci/controller/dwc/pcie-spacemit-k1.c > +++ b/drivers/pci/controller/dwc/pcie-spacemit-k1.c > @@ -130,17 +130,21 @@ static int k1_pcie_init(struct dw_pcie_rp *pp) > { > struct dw_pcie *pci =3D to_dw_pcie_from_pp(pp); > struct k1_pcie *k1 =3D to_k1_pcie(pci); > + struct device *dev =3D pci->dev; > u32 reset_ctrl; > u32 val; > int ret; > =20 > + dev_info(dev, "K1DBG 1 toggle_soft_reset\n"); > k1_pcie_toggle_soft_reset(k1); > =20 > + dev_info(dev, "K1DBG 2 enable_resources\n"); > ret =3D k1_pcie_enable_resources(k1); > if (ret) > return ret; > =20 > /* Set the PCI vendor and device ID */ > + dev_info(dev, "K1DBG 3 first DBI write (vendor/device ID)\n"); > dw_pcie_dbi_ro_wr_en(pci); > dw_pcie_writew_dbi(pci, PCI_VENDOR_ID, PCI_VENDOR_ID_SPACEMIT); > dw_pcie_writew_dbi(pci, PCI_DEVICE_ID, PCI_DEVICE_ID_SPACEMIT_K1); > @@ -153,6 +157,7 @@ static int k1_pcie_init(struct dw_pcie_rp *pp) > * delay first. Write, then read it back to guarantee the write > * reaches the device before we start the delay. > */ > + dev_info(dev, "K1DBG 4 assert PERST# + 100ms\n"); > reset_ctrl =3D k1->pmu_off + PCIE_CLK_RESET_CONTROL; > regmap_set_bits(k1->pmu, reset_ctrl, PCIE_RC_PERST); > regmap_read(k1->pmu, reset_ctrl, &val); > @@ -162,8 +167,10 @@ static int k1_pcie_init(struct dw_pcie_rp *pp) > * Put the controller in root complex mode, and indicate that > * Vaux (3.3v) is present. > */ > + dev_info(dev, "K1DBG 5 RC mode + AUX_PWR_DET\n"); > regmap_set_bits(k1->pmu, reset_ctrl, DEVICE_TYPE_RC | PCIE_AUX_PWR_DET)= ; > =20 > + dev_info(dev, "K1DBG 6 phy_init\n"); > ret =3D phy_init(k1->phy); > if (ret) { > k1_pcie_disable_resources(k1); > @@ -172,11 +179,14 @@ static int k1_pcie_init(struct dw_pcie_rp *pp) > } > =20 > /* Deassert fundamental reset (drive PERST# high) */ > + dev_info(dev, "K1DBG 7 deassert PERST#\n"); > regmap_clear_bits(k1->pmu, reset_ctrl, PCIE_RC_PERST); > =20 > /* Finally, as a workaround, disable ASPM L1 */ > + dev_info(dev, "K1DBG 8 disable_aspm_l1\n"); > k1_pcie_disable_aspm_l1(k1); > =20 > + dev_info(dev, "K1DBG 9 init complete\n"); > return 0; > } > =20 > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv 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 C6174C982DE for ; Mon, 21 Sep 2026 05:56:29 +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:References:To:From:Subject: Cc:Message-Id:Date:Mime-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=EjBqJIm8BTOb+rKIMn7Ww98EVf0ZhjJXAEVLcRg+Y7o=; b=eVhcIImM1w1AXs KsVIdP6a8mguxjwIqq7YiGtM51Jr7ZjCia7GFf/90fy4WLO22IG2nU/1BBwEkgUWOjVizoy2aQjKC OucYfjk2moi5dUrfRt1DDP+G/GOovNcPbUL+40pSCI0fjpwfUmAlNIMUDri3vgv218qC6plimWyMn AgUWIQY+2U54t1s+1D6jKjy+aKLzjw6ynenR91dT9z7+E+G7VV2ET11mPItF0uUsXMrvBNxw94QSu USZtyH2CSK3kbyfcXRuDuGcuJPlBFBYcuB/zULel+TNlLG/opWUdl7/IECIn2tkNNkDQPIVEwAbiV 7UhUvxqbaSV/86GXSSnA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x8X0i-00000000yoS-0Iu0; Mon, 21 Sep 2026 05:56:16 +0000 Received: from smtpbguseast2.qq.com ([54.204.34.130]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x8X0d-00000000ynd-1yrT for linux-riscv@lists.infradead.org; Mon, 21 Sep 2026 05:56:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.spacemit.com; s=mxsw2412; t=1789970156; bh=pyhixoq/RXMQq/EUePQqUA2MsL1uQc0Uc52l03+BnGA=; h=Mime-Version:Date:Message-Id:Subject:From:To; b=NG2jhQ8xrDAEU/02FRx43/3xUsx3o9PwvEikXNYunZ4fqrTikdL0mqzrQ/9A/+Apy +cKHSYmnwzMQ3AF5KViX1WvrJgQzlJMmqFp1kW7aSvTaE9X6b7x60SLA/a8ZhG9MDp WqnbslBBaZBrPRjIqwp0DF4SBqCbWbZHzmxi1ON0= X-QQ-mid: esmtpgz14t1789970151tf16cf137 X-QQ-Originating-IP: QCgaxLI7jDhwJHBvAR2ArdVF5Rj/K1zGCGKIgOuRbNw= Received: from localhost ( [8.217.118.106]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 21 Sep 2026 13:55:42 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 18343756932076772268 Mime-Version: 1.0 Date: Mon, 21 Sep 2026 13:55:42 +0800 Message-Id: Cc: "Alex Elder" , "Yixun Lan" , "Manivannan Sadhasivam" , "Lorenzo Pieralisi" , "Krzysztof Wilczynski" , "Rob Herring" , "Bjorn Helgaas" , "Danilo Krummrich" , "Uwe Kleine-Koenig" , "Javier Martinez Canillas" , , "linux-riscv" Subject: Re: [BUG] PCI: spacemit-k1: port C probe hard-hangs a CPU with one endpoint on Milk-V Jupiter From: "Encrow Thorne" To: "Bruno Banelli" , , , X-Mailer: aerc 0.22.0-0-gc2f86b7abde3 References: <20260825052249.66921-1-bbanelli@gmail.com> In-Reply-To: <20260825052249.66921-1-bbanelli@gmail.com> X-QQ-SENDSIZE: 520 Feedback-ID: esmtpgz:linux.spacemit.com:qybglogicsvrsz:qybglogicsvrsz3b-0 X-QQ-XMAILINFO: MACXe2l6e7j9A7dM9VfTYUnw6oxnzmeWixSrplKglMxJfmgzA21Op+TN uKRe6BDLaUBA2SU2E9yJfEg93hrsFdtRCvuWMfdzl3xhRdG5deJy8K9vKHBmjLE1qu9Em0G WyfJUXo9UYcpL8eAaYmoMnF4GoWRAtNj4xMROGtKvPevqQAxnsqm+cvuH2kb+Ce3vryu7Du nBZ8R4/M/fMRE8GyyEuKlhTg1AwjXpfaxmGSjUPedvOTe61uBeRPY6lfxScslzDnCOborLB 1KaqCBVeBgwQEWc6PnimF+eaekTqyFMFkr3AYWhKJndn1VLNKCZ3l8LPkOnE89tallS/ELZ d3uiTl/1yH8z0wADJQ/+iBc9fvwvSeOI1pb10eKVjkX1eHVc293jr71O0Y8vci7SHq27w93 0cKen3uMlLsIu8TrJcJIXAtY4SEAh4TlpGYBHy1ajv2rtKWAgyIrkyD4eK9EFwm90Jqxo2N Cl9uJoJuD3HvOutLZLHWk89sP8riaBmtPw4rkDR46utlz2KSFsLxH9PXXE1x3s2grmW52UN x87AGc3aQMHucqtOUUMwXJpnQN5YriHtroiqFi54xzC58o+usxmIFzUZsjq4mji6NWKaodB HXStMo3RVYILyTuMmJayOZxYNIhHPBmtMuEbjBh4EvhIV/7s+ml0hdnKxy4XnCB1+jdXH1l ClRL5pxaTokqt9ayDC8iXrnujfmzvLStoFBRgB0AnDWuRq0KEI1EJwUwaWaEg08PBYBypNg E4k6hMqHHUCaD4hiCX13A3dOv+CQC4JxLOniUUX9BBRkeSsfuM+hKOGa3lOrPC5tEn3wuKJ zhsh+fLkMAU3cubQxiH+tWt7pRPUqhhP7aDW7m09OY9LcnnwsodPgcdahDmjPLrkTk/nzpJ 3hcPS9dJ4UrKOjJ5H3tqHtMTQlAobzWin5URiRiI9sA74/ItU9F6eR130FQ62S91g9wsa7T B1iXtLpClg7qUJqE2hUKVOFWenHNE8PxbuKPCmBP12stWYlLmjfBDucHbWVUbrjK48+s= X-QQ-XMRINFO: OWPUhxQsoeAVwkVaQIEGSKwwgKCxK/fD5g== X-QQ-RECHKSPAM: 0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260920_225612_432117_E2A322A2 X-CRM114-Status: GOOD ( 51.20 ) 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 T24gVHVlIEF1ZyAyNSwgMjAyNiBhdCAxOjIyIFBNIENTVCwgQnJ1bm8gQmFuZWxsaSB3cm90ZToK PiBIaSwKPgo+IE9uIGEgTWlsay1WIEp1cGl0ZXIsIHByb2JpbmcgdGhlIFBDSWUgY29udHJvbGxl ciBhdCBjYTgwMDAwMCAocG9ydCBDLCB0aGUKPiBjYXJkIHNsb3QpIHBlcm1hbmVudGx5IHdlZGdl cyB0aGUgQ1BVIHRoYXQgcnVucyB0aGUgcHJvYmUgd2hlbiBvbmUKPiBwYXJ0aWN1bGFyIGFkZC1p biBjYXJkIGlzIGluc3RhbGxlZC4gIFRoZSBDUFUgc3RvcHMgcmVzcG9uZGluZyB0byBOTUksIGFu ZAo+IGJlY2F1c2UgdGhlIHByb2JlIGlzIGFzeW5jaHJvbm91cywga2VybmVsX2luaXQoKSB0aGVu IGJsb2NrcyBmb3JldmVyIGluCj4gYXN5bmNfc3luY2hyb25pemVfZnVsbCgpIGFuZCB0aGUgbWFj aGluZSBuZXZlciBmaW5pc2hlcyBib290aW5nLgo+Cj4gVGhlIHNhbWUgY2FyZCwgaW4gdGhlIHNh bWUgc2xvdCwgb24gdGhlIHNhbWUgYm9hcmQsIGRvZXMgKm5vdCogaGFuZyB0aGUKPiB2ZW5kb3Ig Ni42IGtlcm5lbCAtLSBpdCByZXBvcnRzICJQaHkgbGluayBuZXZlciBjYW1lIHVwIiBhbmQgYm9v dHMgbm9ybWFsbHkuCj4gU2l4IG90aGVyIGNhcmRzIGRvIG5vdCBoYW5nIG1haW5saW5lIGVpdGhl ci4gIFNvIHdoYXRldmVyIHRoZSBlbGVjdHJpY2FsCj4gY2F1c2UsIHRoaXMgbG9va3MgbGlrZSBh IHJvYnVzdG5lc3MgcHJvYmxlbSBpbiBwY2llLXNwYWNlbWl0LWsxOiBhbiBlbmRwb2ludAo+IHNo b3VsZCBub3QgYmUgYWJsZSB0byBoYW5nIGEgaG9zdC1zaWRlIERCSSByZWdpc3RlciBhY2Nlc3Mu Cj4KPgo+IEhBUkRXQVJFCj4gLS0tLS0tLS0KPiAgIE1pbGstViBKdXBpdGVyIHYxLjEsIFNwYWNl bWlUIE0xIChzb2NpbmZvOiBDUFVbTTEtODU3MV0gUkVWW0NdIERST1sxMzBdKSwKPiAgIDE2IEdp QiBMUEREUjRYLgo+ICAgRmlybXdhcmU6IHN0b2NrIHZlbmRvciBVLUJvb3QgMjAyMi4xMCAoazEt YmwtdjIuMi45KSwgdW5tb2RpZmllZC4KPiAgIFBvcnQgQiAoY2E0MDAwMDAsIE0uMikgaGFzIGEg U2Ftc3VuZyBQTTlCMSBOVk1lIGFuZCB3b3JrcyB0aHJvdWdob3V0Lgo+ICAgUG9ydCBDIChjYTgw MDAwMCkgaXMgdGhlIGNhcmQgc2xvdCAtLSBhbiB4OC1sZW5ndGggY29ubmVjdG9yLCBzaWxrc2Ny ZWVuZWQKPiAgIFBDSUVfWDIsIHdpcmVkIHgyLgo+Cj4KPiBSRVBST0RVQ0VEIE9OCj4gLS0tLS0t LS0tLS0tLQo+ICAgdjcuMSBhbmQgdjcuMiwgcmlzY3YgZGVmY29uZmlnIChwbHVzIFBIWV9TUEFD RU1JVF9LMV9VU0IyLCBVU0JfRFdDMywKPiAgIFNQQUNFTUlUX0sxX1RTRU5TT1IsIElHQiwgSUdD LCBOVk1lL2V4dDQgYnVpbHQgaW4pLgo+ICAgZ2NjIDEzLjMuMCAoY3Jvc3MpIGFuZCBnY2MgMTYu Mi4wIChuYXRpdmUsIERlYmlhbiBzaWQpLgo+ICAgSWRlbnRpY2FsIGZhaWx1cmUgaW4gYWxsIGNv bWJpbmF0aW9ucy4gIE5vdCBhIHJlZ3Jlc3Npb24gLS0gcG9ydCBDIGhhcwo+ICAgbmV2ZXIgd29y a2VkIHdpdGggdGhpcyBjYXJkIG9uIG1haW5saW5lLgo+Cj4gQ29tbWFuZCBsaW5lOgo+ICAgY29u c29sZT10dHlTMCwxMTUyMDAgZWFybHljb24gcm9vdD0vZGV2L252bWUwbjFwMiByb290d2FpdCBy dwo+ICAgc3dpb3RsYj02NTUzNiBjbGtfaWdub3JlX3VudXNlZCBwZF9pZ25vcmVfdW51c2VkCj4K Pgo+IFNZTVBUT00KPiAtLS0tLS0tCj4gUG9ydCBDIHByaW50cyBpdHMgYWRkcmVzcyByYW5nZXMg YW5kIHRoZW4gbmV2ZXIgc3BlYWtzIGFnYWluLiAgKExvZyBiZWxvdyBpcwo+IGZyb20gYSBydW4g d2l0aCBwb3J0IEIgZGlzYWJsZWQgaW4gRFQsIHNvIG5vdGhpbmcgaXMgaW50ZXJsZWF2ZWQuKQo+ Cj4gICBbIDEuMjkwMDc0XSBzcGFjZW1pdC1rMS1wY2llIGNhODAwMDAwLnBjaWU6IGhvc3QgYnJp ZGdlIC9zb2MvcGNpZS1idXMvcGNpZUBjYTgwMDAwMCByYW5nZXM6Cj4gICBbIDEuMjk3MjgzXSBz cGFjZW1pdC1rMS1wY2llIGNhODAwMDAwLnBjaWU6ICAgICAgIElPIDB4MDBiNzAwMjAwMC4uMHgw MGI3MTAxZmZmIC0+IDB4MDAwMDAwMDAwMAo+ICAgWyAxLjMxMjc4M10gc3BhY2VtaXQtazEtcGNp ZSBjYTgwMDAwMC5wY2llOiAgICAgIE1FTSAweDAwYTAwMDAwMDAuLjB4MDBhZmZmZmZmZiAtPiAw eDAwYTAwMDAwMDAKPiAgIFsgMS4zMjY3NTNdIHNwYWNlbWl0LWsxLXBjaWUgY2E4MDAwMDAucGNp ZTogICAgICBNRU0gMHgwMGIwMDAwMDAwLi4weDAwYjZmZmZmZmYgLT4gMHgwMGIwMDAwMDAwCj4g ICBbMjIuMzQ4NDkwXSByY3U6IElORk86IHJjdV9zY2hlZCBkZXRlY3RlZCBzdGFsbHMgb24gQ1BV cy90YXNrczoKPiAgIFsyMi4zNTE3NjRdIHJjdTogICAgIDQtLi4uMDogKDEyIEdQcyBiZWhpbmQp IGlkbGU9MDUxYy8xLzB4NDAwMDAwMDAwMDAwMDAwMCBzb2Z0aXJxPTQzLzQzIGZxcz0xOTA4Cj4g ICBbMjIuMzY3MDQwXSBTZW5kaW5nIE5NSSBmcm9tIENQVSAyIHRvIENQVXMgNDoKPiAgIFszMi4z NjcwNDldIEFmdGVyIDEwIHNlY29uZHMsIHRoZXNlIENQVVMgc3RpbGwgaGF2ZW4ndCByZXNwb25k ZWQgdG8gdGhlIE5NSTogNAo+Cj4gVGhlIENQVSBpZ25vcmluZyBhbiBOTUkgZm9yIHRlbiBzZWNv bmRzIGlzIHdoeSBJIHJlYWQgdGhpcyBhcyBhbiBNTUlPIGFjY2Vzcwo+IHRoYXQgbmV2ZXIgcmVj ZWl2ZXMgYSBjb21wbGV0aW9uIHJhdGhlciB0aGFuIGEgc3BpbiBvciBhIGRlYWRsb2NrLgo+Cj4K PiBMT0NBTElTQVRJT04KPiAtLS0tLS0tLS0tLS0KPiBJIGFkZGVkIGEgZGV2X2luZm8oKSBiZWZv cmUgZWFjaCBzdGVwIG9mIGsxX3BjaWVfaW5pdCgpIChwYXRjaCBhdCB0aGUgZW5kIG9mCj4gdGhp cyBtYWlsKS4gIFRoZSBsYXN0IG1hcmtlciBwb3J0IEMgcHJpbnRzIGlzIHRoZSBvbmUgaW1tZWRp YXRlbHkgYmVmb3JlIHRoZQo+IGZpcnN0IERCSSBhY2Nlc3M6Cj4KPiAgIFsxLjM0NzA1MF0gc3Bh Y2VtaXQtazEtcGNpZSBjYTgwMDAwMC5wY2llOiBLMURCRyAxIHRvZ2dsZV9zb2Z0X3Jlc2V0Cj4g ICBbMS4zNjI2MzVdIHNwYWNlbWl0LWsxLXBjaWUgY2E4MDAwMDAucGNpZTogSzFEQkcgMiBlbmFi bGVfcmVzb3VyY2VzCj4gICBbMS4zNzA5MThdIHNwYWNlbWl0LWsxLXBjaWUgY2E4MDAwMDAucGNp ZTogSzFEQkcgMyBmaXJzdCBEQkkgd3JpdGUgKHZlbmRvci9kZXZpY2UgSUQpCj4gICA8bm90aGlu ZyBmdXJ0aGVyPgo+Cj4gaS5lLiBpdCBkaWVzIGluCj4KPiAgICAgICAgIGR3X3BjaWVfZGJpX3Jv X3dyX2VuKHBjaSk7Cj4gICAgICAgICBkd19wY2llX3dyaXRld19kYmkocGNpLCBQQ0lfVkVORE9S X0lELCBQQ0lfVkVORE9SX0lEX1NQQUNFTUlUKTsKPgo+IHdoaWNoIGlzIHRoZSBmaXJzdCByZWdp c3RlciBhY2Nlc3MgdG8gdGhlIGNvbnRyb2xsZXIgYWZ0ZXIKPiBrMV9wY2llX2VuYWJsZV9yZXNv dXJjZXMoKSBoYXMgZW5hYmxlZCB0aGUgY2xvY2tzIGFuZCBkZWFzc2VydGVkIHRoZSByZXNldHMu Cj4KPiBJIGFsc28gdHJpZWQgbW92aW5nIHBoeV9pbml0KCkgYWhlYWQgb2YgdGhhdCBibG9jaywg aW4gY2FzZSB0aGUgREJJIGRvbWFpbgo+IG5lZWRlZCB0aGUgUEhZIHJ1bm5pbmcgKHBvcnQgQiBp cyBtYXNrZWQgaGVyZSwgYmVjYXVzZSB2ZW5kb3IgVS1Cb290Cj4gaW5pdGlhbGlzZXMgcG9ydCBC J3MgUEhZIGFuZCBuZXZlciB0b3VjaGVzIHBvcnQgQydzKS4gIHBoeV9pbml0KCkgcmV0dXJuZWQK PiBzdWNjZXNzIGFuZCB0aGUgREJJIGFjY2VzcyBzdGlsbCBodW5nOgo+Cj4gICBLMURCRyAxIHRv Z2dsZV9zb2Z0X3Jlc2V0Cj4gICBLMURCRyAyIGVuYWJsZV9yZXNvdXJjZXMKPiAgIEsxREJHIDQg YXNzZXJ0IFBFUlNUIyArIDEwMG1zCj4gICBLMURCRyA1IFJDIG1vZGUgKyBBVVhfUFdSX0RFVAo+ ICAgSzFEQkcgNiBwaHlfaW5pdAo+ICAgSzFEQkcgMyBmaXJzdCBEQkkgd3JpdGUgKHZlbmRvci9k ZXZpY2UgSUQpICAgICA8LSBzdGlsbCB0aGUgbGFzdCBsaW5lCj4KPgo+IENBUkQgTUFUUklYIChw b3J0IEMsIG1haW5saW5lIDcuMiwgb3RoZXJ3aXNlIGlkZW50aWNhbCBib290cykKPiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4g ICBlbXB0eSBzbG90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v dHMKPiAgIEludGVsIEkyMTAgICAgICAgIFs4MDg2OjE1MzNdICBHZW4xIHgxICAgbGluayB1cCwg ZW51bWVyYXRlcwo+ICAgSFAgTkMzNjBUICAgICAgICAgWzgwODY6MTA1ZV0gIEdlbjEgeDIgICBs aW5rIHVwLCBlbnVtZXJhdGVzCj4gICBOVklESUEgUXVhZHJvIFA0MDBbMTBkZToxY2IzXSAgR2Vu MSB4MiAgIGxpbmsgdXAsIGVudW1lcmF0ZXMKPiAgIE5WSURJQSBRdWFkcm8gVDQwMFsxMGRlOjFm YjJdICBHZW4xIHgxICAgbGluayB1cCwgZW51bWVyYXRlcwo+ICAgQU1EIFJhZGVvbiBSWCA1NTAg WzEwMDI6Njk5Zl0gIEdlbjEgeDIgICBsaW5rIHVwLCBlbnVtZXJhdGVzCj4gICBTdW4gQVRMUzFR R0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXZpY2UgZm91bmQsIGJ1dCBub3QgYWN0 aXZlIgo+ICAgSFAgTkMzNzVUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGV2aWNl IGZvdW5kLCBidXQgbm90IGFjdGl2ZSIKPiAgIEludGVsIEkyMjUtViByZXYgMDEgICAgICAgICAg ICAgICAgICAgICAgKioqIENQVSBIQU5HICoqKgo+Cj4gTm90ZSB0aGUgdHdvIGNhcmRzIHRoYXQg ZG8gbm90IHRyYWluIGZhaWwgKnBvbGl0ZWx5KiAtLSB0aGUgRFdDIGNvcmUgbG9ncwo+ICJEZXZp Y2UgZm91bmQsIGJ1dCBub3QgYWN0aXZlIiwgdGhlIHByb2JlIGNvbXBsZXRlcywgYW4gZW1wdHkg YnVzIDAwMDI6MDAgaXMKPiBjcmVhdGVkIGFuZCB0aGUgbWFjaGluZSBib290cy4gIFNvIHBvcnQg QyBpcyBwZXJmZWN0bHkgY2FwYWJsZSBvZiBoYW5kbGluZyBhCj4gbGluayB0aGF0IG5ldmVyIGNv bWVzIHVwLiAgVGhlIEkyMjUtViBpcyBkaWZmZXJlbnQsIGFuZCBpdCBmYWlscyBsb25nIGJlZm9y ZQo+IGxpbmsgdHJhaW5pbmcgaXMgcmVhY2hlZC4KPgo+IFRoZSBJMjI1LVYgY2FyZCBpdHNlbGYg aXMgZ29vZDogaXQgd29ya3Mgb24gYSBNQUNDSElBVE9iaW4gKEFybWFkYSA4MDQwKSBpbgo+IHRo ZSBzYW1lIG9mZmljZSwgYW5kIGl0IHdvcmtzIG9uIHRoaXMgc2FtZSBKdXBpdGVyIHVuZGVyIHRo ZSB2ZW5kb3Iga2VybmVsLgo+Cj4KPiBUSEUgVkVORE9SIERSSVZFUiBTVVJWSVZFUyBUSEUgU0FN RSBDQVJECj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IEJpYW5i dSAyLjMuNSAvIExpbnV4IDYuNi42MywgdmVuZG9yIGsxeC1kd2MtcGNpZSBkcml2ZXIsIHNhbWUg Ym9hcmQsIHNhbWUKPiBzbG90LCBzYW1lIEkyMjUtVjoKPgo+ICAgWyAxLjY1NzQ4Ml0gazF4LWR3 Yy1wY2llIGNhNDAwMDAwLnBjaWU6IFBDSWUgR2VuLjIgeDIgbGluayB1cAo+ICAgWyAyLjk0OTc2 Ml0gazF4LWR3Yy1wY2llIGNhODAwMDAwLnBjaWU6IFBoeSBsaW5rIG5ldmVyIGNhbWUgdXAKPiAg IFsgMi45NTI4MDhdIGsxeC1kd2MtcGNpZSBjYTgwMDAwMC5wY2llOiBQQ0kgaG9zdCBicmlkZ2Ug dG8gYnVzIDAwMDI6MDAKPiAgIC4uLiBib290cyB0byBhIGxvZ2luIHByb21wdAo+Cj4gVGhlIHZl bmRvciBkcml2ZXIgZG9lcyBub3QgZG8gdGhlICJzZXQgdGhlIFBDSSB2ZW5kb3IgYW5kIGRldmlj ZSBJRCIgREJJCj4gd3JpdGUgYXQgdGhhdCBwb2ludCBpbiBpdHMgc2VxdWVuY2UuCj4KPgo+IEhZ UE9USEVTRVMgRUxJTUlOQVRFRCBCWSBFWFBFUklNRU5UCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiAgIG52bWUgZHJpdmVyICAgICAgICAgIGluaXRjYWxsX2JsYWNrbGlz dD1udm1lX2luaXQgIC0tIHN0aWxsIGhhbmdzCj4gICBwb3dlciBkb21haW5zICAgICAgICBwZF9p Z25vcmVfdW51c2VkICAgICAgICAgICAgICAtLSBzdGlsbCBoYW5ncwo+ICAgbGluayB0cmFpbmlu ZyAgICAgICAgZGllcyBiZWZvcmUgZHdfcGNpZV9pYXR1X2RldGVjdCgpCj4gICBrZXJuZWwgdmVy c2lvbiAgICAgICBpZGVudGljYWwgb24gdjcuMSBhbmQgdjcuMgo+ICAgY29tcGlsZXIgICAgICAg ICAgICAgaWRlbnRpY2FsIHdpdGggZ2NjIDEzLjMgYW5kIGdjYyAxNi4yCj4gICBQSFkgaW5pdCBv cmRlcmluZyAgICBwaHlfaW5pdCgpIGZpcnN0IC0tIHJldHVybnMgMCwgc3RpbGwgaGFuZ3MKPiAg IENMS1JFUSMgcGlubXV4ICAgICAgIENMS1JFUSMgcmVtb3ZlZCBmcm9tIHBjaWUyXzRfY2ZnIC0t IHN0aWxsIGhhbmdzCj4gICBwb3J0IEIgaW50ZXJmZXJlbmNlICBwb3J0IEIgZGlzYWJsZWQgaW4g RFQgLS0gc3RpbGwgaGFuZ3MKPiAgIHBvd2VyIHN1cHBseSAgICAgICAgIDEyIFYgLyAxMi41IEEg YmVuY2ggc3VwcGx5LCBub3QgVVNCLUMgUEQKPgo+Cj4gQSBQT1NTSUJMWSBSRUxBVEVEIE9CU0VS VkFUSU9OCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gazFfcGNpZV9pbml0KCkg d3JpdGVzIFBDSV9WRU5ET1JfSURfU1BBQ0VNSVQgLyBQQ0lfREVWSUNFX0lEX1NQQUNFTUlUX0sx IHRvCj4gYm90aCBwb3J0cy4gIE9uIHRoaXMgYm9hcmQgdGhlIHdyaXRlIHRha2VzIGVmZmVjdCBv biBwb3J0IEIgYnV0IG5vdCBvbiBwb3J0IEMKPiAtLSBpbmNsdWRpbmcgb24gdGhlIGJvb3RzIHdo ZXJlIHBvcnQgQyB3b3JrcyBmaW5lOgo+Cj4gICBwY2kgMDAwMTowMDowMC4wOiBbMjAxZjowMDAx XSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwIFBDSWUgUm9vdCBQb3J0Cj4gICBwY2kgMDAwMjowMDow MC4wOiBbMWU1ZDozMDAzXSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwIFBDSWUgUm9vdCBQb3J0Cj4K PiAxZTVkOjMwMDMgaXMgdGhlIGhhcmR3YXJlIGRlZmF1bHQgKEFTUiBNaWNyb2VsZWN0cm9uaWNz KS4gIFNvIHRoYXQgc2FtZSBEQkkKPiByZWFkLW9ubHkgd3JpdGUgaXMgYmVpbmcgc2lsZW50bHkg ZHJvcHBlZCBvbiBwb3J0IEMgZXZlbiB3aGVuIGl0IGRvZXMgbm90Cj4gaGFuZy4gIEkgZG8gbm90 IGtub3cgd2hldGhlciB0aGlzIGlzIHRoZSBzYW1lIHVuZGVybHlpbmcgaXNzdWUsIGJ1dCBpdCBp cyBpbgo+IHRoZSBzYW1lIGZ1bmN0aW9uIGFuZCBvbiB0aGUgc2FtZSBwb3J0LCBzbyBpdCBzZWVt ZWQgd29ydGggbWVudGlvbmluZy4KPgo+Cj4gV09SS0FST1VORAo+IC0tLS0tLS0tLS0KPiAgICAg ICAgICZwY2llMiB7IHN0YXR1cyA9ICJkaXNhYmxlZCI7IH07Cj4KPiBvciwgZnJvbSBVLUJvb3Qs IGJlZm9yZSBib290aToKPgo+ICAgICAgICAgZmR0IHNldCAvc29jL3BjaWUtYnVzL3BjaWVAY2E4 MDAwMDAgc3RhdHVzIGRpc2FibGVkCj4KPiBXaXRoIHRoYXQsIG1haW5saW5lIDcuMiBib290cyBE ZWJpYW4gaGFwcGlseSBvbiB0aGlzIGJvYXJkIHdpdGggcm9vdCBvbiB0aGUKPiBNLjIgTlZNZS4g IE5vYm9keSdzIGJvYXJkIGlzIHN0dWNrOyB0aGUgc2xvdCBpcyBqdXN0IHVudXNhYmxlIHdpdGgg dGhpcyBjYXJkLgo+Cj4gTm90ZSB0aGlzIGlzIG5vdCBhIHByb2JsZW0gd2l0aCB0aGUgRFRTIGVu YWJsZW1lbnQgb2YgJnBjaWUyIChhZGRlZCBpbiA3LjEpIC0tCj4gYW4gZW1wdHkgc2xvdCwgYW5k IHNpeCBvZiBzZXZlbiBjYXJkcywgd29yayBmaW5lLgo+Cj4KPiBXSEFUIEkgQU0gQVNLSU5HCj4g LS0tLS0tLS0tLS0tLS0tLQo+IEkgZG8gbm90IGhhdmUgdGhlIEsxIGRvY3VtZW50YXRpb24sIHNv IEkgaGF2ZSBnb25lIGFzIGZhciBhcyBJIGNhbiBmcm9tCj4gb3V0c2lkZS4gIEkgd291bGQgYXBw cmVjaWF0ZSBhIHBvaW50ZXIgdG8gd2hhdCBjb3VsZCBnYXRlIHRoYXQgZmlyc3QgREJJCj4gYWNj ZXNzIG9uIHBvcnQgQyAtLSBDTEtfUENJRTJfREJJL01BU1RFUi9TTEFWRSwgUkVTRVRfUENJRTJf Kiwgb3Igc29tZXRoaW5nCj4gaW4gdGhlIFBNVS9BUE1VIGJsb2NrIC0tIGFuZCBJIGFtIGhhcHB5 IHRvIHJ1biBhbnkgdGVzdCB5b3UgbGlrZSBvbiB0aGlzCj4gYm9hcmQuCj4KPiBTZXBhcmF0ZWx5 LCBhbmQgcmVnYXJkbGVzcyBvZiB0aGUgY2F1c2U6IGEgaGFyZCBDUFUgaGFuZyBvbiBhbiB1bmFu c3dlcmVkCj4gREJJIHJlYWQgaXMgYW4gdW5wbGVhc2FudCBmYWlsdXJlIG1vZGUsIHNpbmNlIHRo ZXJlIGlzIG5vIGNvbXBsZXRpb24gdGltZW91dAo+IGFuZCBubyBtYWNoaW5lIGNoZWNrIHRvIGFi b3J0IGl0IG9uIFJJU0MtVi4gIElmIHRoZXJlIGlzIGEgc2FuZSB3YXkgdG8gYm91bmQKPiBpdCwg dGhhdCBzZWVtcyB3b3J0aCBoYXZpbmcuCj4KPiBGdWxsIGxvZ3MgZm9yIGV2ZXJ5IGJvb3QgcmVm ZXJlbmNlZCBhYm92ZSBhcmUgYXZhaWxhYmxlIG9uIHJlcXVlc3QuCj4KPiBUaGFua3MsCj4gQnJ1 bm8gQmFuZWxsaQo+Cj4KSGkgQnJ1bm8sCgpUaGUgaXNzdWUgd2FzIGNhdXNlZCBieSBhIG1pc3Np bmcgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBpbiB0aGUgSzEgUENJZQppbml0aWFsaXphdGlvbi4K ClRoZSBQTVUgUENJRV9DT05UUk9MX0xPR0lDIHJlZ2lzdGVyIGNvbnRhaW5zIGFuIElHTk9SRV9Q RVJTVE4gYml0IChCSVQoMikpLgpUaGUgaGFyZHdhcmUgbWFudWFsIGRlc2NyaWJlcyBpdCBhcyBm b2xsb3dzOgoK4oCcV2hlbiBzZXQgdG8gMSwgdGhlIFBDSWUgY29udHJvbGxlciBhbmQgUEhZIGln bm9yZSB0aGUgUEVSU1ROIHNpZ25hbCBmcm9tCnRoZSBsaW5rIHBhcnRuZXIgaW4gYm90aCBSQyBh bmQgRVAgbW9kZXMu4oCdCgpUaGlzIGJpdCB3YXMgbm90IGNvbmZpZ3VyZWQgZHVyaW5nIFJDIGlu aXRpYWxpemF0aW9uLiBBcyBhIHJlc3VsdCwgdGhlCmNvbnRyb2xsZXIgYW5kIFBIWSBjb3VsZCBz dGlsbCBiZSBhZmZlY3RlZCBieSB0aGUgUEVSU1ROIGlucHV0IGR1cmluZyB0aGUKZWFybHkgREJJ IGFjY2Vzc2VzLiBXaXRoIHRoZSBJbnRlbCBJMjI1LVYgaW5zdGFsbGVkLCB0aGUgZmlyc3QgREJJ IGFjY2Vzcwpjb3VsZCByZW1haW4gcGVuZGluZyBhbmQgaGFuZyB0aGUgQ1BVLgoKQWZ0ZXIgY29u ZmlndXJpbmcgdGhpcyBiaXQgZHVyaW5nIFBDSWUgaW5pdGlhbGl6YXRpb24sIHRoZSBEQkkgaGFu ZyBhbmQKdGhlIHJlc3VsdGluZyBSQ1Ugc3RhbGwgbm8gbG9uZ2VyIG9jY3VyIGluIG91ciB0ZXN0 aW5nLgoKUmVnYXJkcywKRW5jcm93IFRob3JuZQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4g SW5zdHJ1bWVudGF0aW9uIHVzZWQgZm9yIHRoZSBsb2NhbGlzYXRpb24gYWJvdmUgKG5vdCBmb3Ig bWVyZ2luZyk6Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNp ZS1zcGFjZW1pdC1rMS5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1zcGFjZW1p dC1rMS5jCj4gaW5kZXggMDQyNDFkZjhmLi5kNGMwOGUwMjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1zcGFjZW1pdC1rMS5jCj4gKysrIGIvZHJpdmVycy9w Y2kvY29udHJvbGxlci9kd2MvcGNpZS1zcGFjZW1pdC1rMS5jCj4gQEAgLTEzMCwxNyArMTMwLDIx IEBAIHN0YXRpYyBpbnQgazFfcGNpZV9pbml0KHN0cnVjdCBkd19wY2llX3JwICpwcCkKPiAgewo+ ICAJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChwcCk7Cj4gIAlzdHJ1 Y3QgazFfcGNpZSAqazEgPSB0b19rMV9wY2llKHBjaSk7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYg PSBwY2ktPmRldjsKPiAgCXUzMiByZXNldF9jdHJsOwo+ICAJdTMyIHZhbDsKPiAgCWludCByZXQ7 Cj4gIAo+ICsJZGV2X2luZm8oZGV2LCAiSzFEQkcgMSB0b2dnbGVfc29mdF9yZXNldFxuIik7Cj4g IAlrMV9wY2llX3RvZ2dsZV9zb2Z0X3Jlc2V0KGsxKTsKPiAgCj4gKwlkZXZfaW5mbyhkZXYsICJL MURCRyAyIGVuYWJsZV9yZXNvdXJjZXNcbiIpOwo+ICAJcmV0ID0gazFfcGNpZV9lbmFibGVfcmVz b3VyY2VzKGsxKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gIAkvKiBTZXQg dGhlIFBDSSB2ZW5kb3IgYW5kIGRldmljZSBJRCAqLwo+ICsJZGV2X2luZm8oZGV2LCAiSzFEQkcg MyBmaXJzdCBEQkkgd3JpdGUgKHZlbmRvci9kZXZpY2UgSUQpXG4iKTsKPiAgCWR3X3BjaWVfZGJp X3JvX3dyX2VuKHBjaSk7Cj4gIAlkd19wY2llX3dyaXRld19kYmkocGNpLCBQQ0lfVkVORE9SX0lE LCBQQ0lfVkVORE9SX0lEX1NQQUNFTUlUKTsKPiAgCWR3X3BjaWVfd3JpdGV3X2RiaShwY2ksIFBD SV9ERVZJQ0VfSUQsIFBDSV9ERVZJQ0VfSURfU1BBQ0VNSVRfSzEpOwo+IEBAIC0xNTMsNiArMTU3 LDcgQEAgc3RhdGljIGludCBrMV9wY2llX2luaXQoc3RydWN0IGR3X3BjaWVfcnAgKnBwKQo+ICAJ ICogZGVsYXkgZmlyc3QuICBXcml0ZSwgdGhlbiByZWFkIGl0IGJhY2sgdG8gZ3VhcmFudGVlIHRo ZSB3cml0ZQo+ICAJICogcmVhY2hlcyB0aGUgZGV2aWNlIGJlZm9yZSB3ZSBzdGFydCB0aGUgZGVs YXkuCj4gIAkgKi8KPiArCWRldl9pbmZvKGRldiwgIksxREJHIDQgYXNzZXJ0IFBFUlNUIyArIDEw MG1zXG4iKTsKPiAgCXJlc2V0X2N0cmwgPSBrMS0+cG11X29mZiArIFBDSUVfQ0xLX1JFU0VUX0NP TlRST0w7Cj4gIAlyZWdtYXBfc2V0X2JpdHMoazEtPnBtdSwgcmVzZXRfY3RybCwgUENJRV9SQ19Q RVJTVCk7Cj4gIAlyZWdtYXBfcmVhZChrMS0+cG11LCByZXNldF9jdHJsLCAmdmFsKTsKPiBAQCAt MTYyLDggKzE2NywxMCBAQCBzdGF0aWMgaW50IGsxX3BjaWVfaW5pdChzdHJ1Y3QgZHdfcGNpZV9y cCAqcHApCj4gIAkgKiBQdXQgdGhlIGNvbnRyb2xsZXIgaW4gcm9vdCBjb21wbGV4IG1vZGUsIGFu ZCBpbmRpY2F0ZSB0aGF0Cj4gIAkgKiBWYXV4ICgzLjN2KSBpcyBwcmVzZW50Lgo+ICAJICovCj4g KwlkZXZfaW5mbyhkZXYsICJLMURCRyA1IFJDIG1vZGUgKyBBVVhfUFdSX0RFVFxuIik7Cj4gIAly ZWdtYXBfc2V0X2JpdHMoazEtPnBtdSwgcmVzZXRfY3RybCwgREVWSUNFX1RZUEVfUkMgfCBQQ0lF X0FVWF9QV1JfREVUKTsKPiAgCj4gKwlkZXZfaW5mbyhkZXYsICJLMURCRyA2IHBoeV9pbml0XG4i KTsKPiAgCXJldCA9IHBoeV9pbml0KGsxLT5waHkpOwo+ICAJaWYgKHJldCkgewo+ICAJCWsxX3Bj aWVfZGlzYWJsZV9yZXNvdXJjZXMoazEpOwo+IEBAIC0xNzIsMTEgKzE3OSwxNCBAQCBzdGF0aWMg aW50IGsxX3BjaWVfaW5pdChzdHJ1Y3QgZHdfcGNpZV9ycCAqcHApCj4gIAl9Cj4gIAo+ICAJLyog RGVhc3NlcnQgZnVuZGFtZW50YWwgcmVzZXQgKGRyaXZlIFBFUlNUIyBoaWdoKSAqLwo+ICsJZGV2 X2luZm8oZGV2LCAiSzFEQkcgNyBkZWFzc2VydCBQRVJTVCNcbiIpOwo+ICAJcmVnbWFwX2NsZWFy X2JpdHMoazEtPnBtdSwgcmVzZXRfY3RybCwgUENJRV9SQ19QRVJTVCk7Cj4gIAo+ICAJLyogRmlu YWxseSwgYXMgYSB3b3JrYXJvdW5kLCBkaXNhYmxlIEFTUE0gTDEgKi8KPiArCWRldl9pbmZvKGRl diwgIksxREJHIDggZGlzYWJsZV9hc3BtX2wxXG4iKTsKPiAgCWsxX3BjaWVfZGlzYWJsZV9hc3Bt X2wxKGsxKTsKPiAgCj4gKwlkZXZfaW5mbyhkZXYsICJLMURCRyA5IGluaXQgY29tcGxldGVcbiIp Owo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwo+IGxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdAo+IGxpbnV4LXJp c2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKPiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtcmlzY3YK