Patch "powerpc/pseries/iommu: LPAR panics during boot up with a frozen PE" has been added to the 6.8-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    powerpc/pseries/iommu: LPAR panics during boot up with a frozen PE

to the 6.8-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     powerpc-pseries-iommu-lpar-panics-during-boot-up-wit.patch
and it can be found in the queue-6.8 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 286fb5de6fa91b2cde59be5fd24ad8f1fbbf08e2
Author: Gaurav Batra <gbatra@xxxxxxxxxxxxx>
Date:   Mon Apr 22 15:51:41 2024 -0500

    powerpc/pseries/iommu: LPAR panics during boot up with a frozen PE
    
    [ Upstream commit 49a940dbdc3107fecd5e6d3063dc07128177e058 ]
    
    At the time of LPAR boot up, partition firmware provides Open Firmware
    property ibm,dma-window for the PE. This property is provided on the PCI
    bus the PE is attached to.
    
    There are execptions where the partition firmware might not provide this
    property for the PE at the time of LPAR boot up. One of the scenario is
    where the firmware has frozen the PE due to some error condition. This
    PE is frozen for 24 hours or unless the whole system is reinitialized.
    
    Within this time frame, if the LPAR is booted, the frozen PE will be
    presented to the LPAR but ibm,dma-window property could be missing.
    
    Today, under these circumstances, the LPAR oopses with NULL pointer
    dereference, when configuring the PCI bus the PE is attached to.
    
      BUG: Kernel NULL pointer dereference on read at 0x000000c8
      Faulting instruction address: 0xc0000000001024c0
      Oops: Kernel access of bad area, sig: 7 [#1]
      LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=2048 NUMA pSeries
      Modules linked in:
      Supported: Yes
      CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.4.0-150600.9-default #1
      Hardware name: IBM,9043-MRX POWER10 (raw) 0x800200 0xf000006 of:IBM,FW1060.00 (NM1060_023) hv:phyp pSeries
      NIP:  c0000000001024c0 LR: c0000000001024b0 CTR: c000000000102450
      REGS: c0000000037db5c0 TRAP: 0300   Not tainted  (6.4.0-150600.9-default)
      MSR:  8000000002009033 <SF,VEC,EE,ME,IR,DR,RI,LE>  CR: 28000822  XER: 00000000
      CFAR: c00000000010254c DAR: 00000000000000c8 DSISR: 00080000 IRQMASK: 0
      ...
      NIP [c0000000001024c0] pci_dma_bus_setup_pSeriesLP+0x70/0x2a0
      LR [c0000000001024b0] pci_dma_bus_setup_pSeriesLP+0x60/0x2a0
      Call Trace:
        pci_dma_bus_setup_pSeriesLP+0x60/0x2a0 (unreliable)
        pcibios_setup_bus_self+0x1c0/0x370
        __of_scan_bus+0x2f8/0x330
        pcibios_scan_phb+0x280/0x3d0
        pcibios_init+0x88/0x12c
        do_one_initcall+0x60/0x320
        kernel_init_freeable+0x344/0x3e4
        kernel_init+0x34/0x1d0
        ret_from_kernel_user_thread+0x14/0x1c
    
    Fixes: b1fc44eaa9ba ("pseries/iommu/ddw: Fix kdump to work in absence of ibm,dma-window")
    Signed-off-by: Gaurav Batra <gbatra@xxxxxxxxxxxxx>
    Signed-off-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
    Link: https://msgid.link/20240422205141.10662-1-gbatra@xxxxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c
index e8c4129697b14..b1e6d275cda9e 100644
--- a/arch/powerpc/platforms/pseries/iommu.c
+++ b/arch/powerpc/platforms/pseries/iommu.c
@@ -786,8 +786,16 @@ static void pci_dma_bus_setup_pSeriesLP(struct pci_bus *bus)
 	 * parent bus. During reboot, there will be ibm,dma-window property to
 	 * define DMA window. For kdump, there will at least be default window or DDW
 	 * or both.
+	 * There is an exception to the above. In case the PE goes into frozen
+	 * state, firmware may not provide ibm,dma-window property at the time
+	 * of LPAR boot up.
 	 */
 
+	if (!pdn) {
+		pr_debug("  no ibm,dma-window property !\n");
+		return;
+	}
+
 	ppci = PCI_DN(pdn);
 
 	pr_debug("  parent is %pOF, iommu_table: 0x%p\n",




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux