powerpc/powernv: Fix crash on releasing compound PE
Michael Ellerman
patch-notifications at ellerman.id.au
Thu Sep 8 19:47:53 AEST 2016
On Tue, 2016-06-09 at 04:16:44 UTC, Gavin Shan wrote:
> The compound PE is created to accommodate the devices attached to
> one specific PCI bus that consume multiple M64 segments. The compound
> PE is made up of one master PE and possibly multiple slave PEs. The
> slave PEs should be destroyed when releasing the master PE. A kernel
> crash happens when derferencing @pe->pdev on releasing the slave PE
> in pnv_ioda_deconfigure_pe().
>
> # echo 0 > /sys/bus/pci/slots/C7/power
> iommu: Removing device 0000:01:00.1 from group 0
> iommu: Removing device 0000:01:00.0 from group 0
> Unable to handle kernel paging request for data at address 0x00000010
> Faulting instruction address: 0xc00000000005d898
> cpu 0x1: Vector: 300 (Data Access) at [c000000fe8217620]
> pc: c00000000005d898: pnv_ioda_release_pe+0x288/0x610
> lr: c00000000005dbdc: pnv_ioda_release_pe+0x5cc/0x610
> sp: c000000fe82178a0
> msr: 9000000000009033
> dar: 10
> dsisr: 40000000
> current = 0xc000000fe815ab80
> paca = 0xc00000000ff00400 softe: 0 irq_happened: 0x01
> pid = 2709, comm = sh
> Linux version 4.8.0-rc5-gavin-00006-g745efdb (gwshan at gwshan) \
> (gcc version 4.9.3 (Buildroot 2016.02-rc2-00093-g5ea3bce) ) #586 SMP \
> Tue Sep 6 13:37:29 AEST 2016
> enter ? for help
> [c000000fe8217940] c00000000005d684 pnv_ioda_release_pe+0x74/0x610
> [c000000fe82179e0] c000000000034460 pcibios_release_device+0x50/0x70
> [c000000fe8217a10] c0000000004aba80 pci_release_dev+0x50/0xa0
> [c000000fe8217a40] c000000000704898 device_release+0x58/0xf0
> [c000000fe8217ac0] c000000000470510 kobject_release+0x80/0xf0
> [c000000fe8217b00] c000000000704dd4 put_device+0x24/0x40
> [c000000fe8217b20] c0000000004af94c pci_remove_bus_device+0x12c/0x150
> [c000000fe8217b60] c000000000034244 pci_hp_remove_devices+0x94/0xd0
> [c000000fe8217ba0] c0000000004ca444 pnv_php_disable_slot+0x64/0xb0
> [c000000fe8217bd0] c0000000004c88c0 power_write_file+0xa0/0x190
> [c000000fe8217c50] c0000000004c248c pci_slot_attr_store+0x3c/0x60
> [c000000fe8217c70] c0000000002d6494 sysfs_kf_write+0x94/0xc0
> [c000000fe8217cb0] c0000000002d50f0 kernfs_fop_write+0x180/0x260
> [c000000fe8217d00] c0000000002334a0 __vfs_write+0x40/0x190
> [c000000fe8217d90] c000000000234738 vfs_write+0xc8/0x240
> [c000000fe8217de0] c000000000236250 SyS_write+0x60/0x110
> [c000000fe8217e30] c000000000009524 system_call+0x38/0x108
>
> It fixes the kernel crash by bypassing releasing resources (DMA,
> IO and memory segments, PELTM) because there are no resources assigned
> to the slave PE.
>
> Fixes: c5f7700bbd2e ("powerpc/powernv: Dynamically release PE")
> Reported-by: Frederic Barrat <fbarrat at linux.vnet.ibm.com>
> Signed-off-by: Gavin Shan <gwshan at linux.vnet.ibm.com>
Applied to powerpc fixes, thanks.
https://git.kernel.org/powerpc/c/b314427a52fd8daa1215d30e56
cheers
More information about the Linuxppc-dev
mailing list