1. 29 Aug, 2023 1 commit
  2. 28 Aug, 2023 2 commits
  3. 25 Aug, 2023 1 commit
    • Russell Currey's avatar
      powerpc/iommu: Fix notifiers being shared by PCI and VIO buses · c37b6908
      Russell Currey authored
      fail_iommu_setup() registers the fail_iommu_bus_notifier struct to both
      PCI and VIO buses.  struct notifier_block is a linked list node, so this
      causes any notifiers later registered to either bus type to also be
      registered to the other since they share the same node.
      
      This causes issues in (at least) the vgaarb code, which registers a
      notifier for PCI buses.  pci_notify() ends up being called on a vio
      device, converted with to_pci_dev() even though it's not a PCI device,
      and finally makes a bad access in vga_arbiter_add_pci_device() as
      discovered with KASAN:
      
       BUG: KASAN: slab-out-of-bounds in vga_arbiter_add_pci_device+0x60/0xe00
       Read of size 4 at addr c000000264c26fdc by task swapper/0/1
      
       Call Trace:
         dump_stack_lvl+0x1bc/0x2b8 (unreliable)
         print_report+0x3f4/0xc60
         kasan_report+0x244/0x698
         __asan_load4+0xe8/0x250
         vga_arbiter_add_pci_device+0x60/0xe00
         pci_notify+0x88/0x444
         notifier_call_chain+0x104/0x320
         blocking_notifier_call_chain+0xa0/0x140
         device_add+0xac8/0x1d30
         device_register+0x58/0x80
         vio_register_device_node+0x9ac/0xce0
         vio_bus_scan_register_devices+0xc4/0x13c
         __machine_initcall_pseries_vio_device_init+0x94/0xf0
         do_one_initcall+0x12c/0xaa8
         kernel_init_freeable+0xa48/0xba8
         kernel_init+0x64/0x400
         ret_from_kernel_thread+0x5c/0x64
      
      Fix this by creating separate notifier_block structs for each bus type.
      
      Fixes: d6b9a81b ("powerpc: IOMMU fault injection")
      Reported-by: default avatarNageswara R Sastry <rnsastry@linux.ibm.com>
      Signed-off-by: default avatarRussell Currey <ruscur@russell.cc>
      Tested-by: default avatarNageswara R Sastry <rnsastry@linux.ibm.com>
      Reviewed-by: default avatarAndrew Donnellan <ajd@linux.ibm.com>
      [mpe: Add #ifdef to fix CONFIG_IBMVIO=n build]
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://msgid.link/20230322035322.328709-1-ruscur@russell.cc
      c37b6908
  4. 24 Aug, 2023 16 commits
  5. 23 Aug, 2023 3 commits
    • Christophe Leroy's avatar
      powerpc/85xx: Mark some functions static and add missing includes to fix no... · c265735f
      Christophe Leroy authored
      powerpc/85xx: Mark some functions static and add missing includes to fix no previous prototype error
      
      corenet{32/64}_smp_defconfig leads to:
      
        CC      arch/powerpc/sysdev/ehv_pic.o
      arch/powerpc/sysdev/ehv_pic.c:45:6: error: no previous prototype for 'ehv_pic_unmask_irq' [-Werror=missing-prototypes]
         45 | void ehv_pic_unmask_irq(struct irq_data *d)
            |      ^~~~~~~~~~~~~~~~~~
      arch/powerpc/sysdev/ehv_pic.c:52:6: error: no previous prototype for 'ehv_pic_mask_irq' [-Werror=missing-prototypes]
         52 | void ehv_pic_mask_irq(struct irq_data *d)
            |      ^~~~~~~~~~~~~~~~
      arch/powerpc/sysdev/ehv_pic.c:59:6: error: no previous prototype for 'ehv_pic_end_irq' [-Werror=missing-prototypes]
         59 | void ehv_pic_end_irq(struct irq_data *d)
            |      ^~~~~~~~~~~~~~~
      arch/powerpc/sysdev/ehv_pic.c:66:6: error: no previous prototype for 'ehv_pic_direct_end_irq' [-Werror=missing-prototypes]
         66 | void ehv_pic_direct_end_irq(struct irq_data *d)
            |      ^~~~~~~~~~~~~~~~~~~~~~
      arch/powerpc/sysdev/ehv_pic.c:71:5: error: no previous prototype for 'ehv_pic_set_affinity' [-Werror=missing-prototypes]
         71 | int ehv_pic_set_affinity(struct irq_data *d, const struct cpumask *dest,
            |     ^~~~~~~~~~~~~~~~~~~~
      arch/powerpc/sysdev/ehv_pic.c:112:5: error: no previous prototype for 'ehv_pic_set_irq_type' [-Werror=missing-prototypes]
        112 | int ehv_pic_set_irq_type(struct irq_data *d, unsigned int flow_type)
            |     ^~~~~~~~~~~~~~~~~~~~
        CC      arch/powerpc/sysdev/fsl_rio.o
      arch/powerpc/sysdev/fsl_rio.c:102:5: error: no previous prototype for 'fsl_rio_mcheck_exception' [-Werror=missing-prototypes]
        102 | int fsl_rio_mcheck_exception(struct pt_regs *regs)
            |     ^~~~~~~~~~~~~~~~~~~~~~~~
      arch/powerpc/sysdev/fsl_rio.c:306:5: error: no previous prototype for 'fsl_map_inb_mem' [-Werror=missing-prototypes]
        306 | int fsl_map_inb_mem(struct rio_mport *mport, dma_addr_t lstart,
            |     ^~~~~~~~~~~~~~~
      arch/powerpc/sysdev/fsl_rio.c:357:6: error: no previous prototype for 'fsl_unmap_inb_mem' [-Werror=missing-prototypes]
        357 | void fsl_unmap_inb_mem(struct rio_mport *mport, dma_addr_t lstart)
            |      ^~~~~~~~~~~~~~~~~
      arch/powerpc/sysdev/fsl_rio.c:445:5: error: no previous prototype for 'fsl_rio_setup' [-Werror=missing-prototypes]
        445 | int fsl_rio_setup(struct platform_device *dev)
            |     ^~~~~~~~~~~~~
        CC      arch/powerpc/sysdev/fsl_rmu.o
      arch/powerpc/sysdev/fsl_rmu.c:362:6: error: no previous prototype for 'msg_unit_error_handler' [-Werror=missing-prototypes]
        362 | void msg_unit_error_handler(void)
            |      ^~~~~~~~~~~~~~~~~~~~~~
        CC      arch/powerpc/platforms/85xx/corenet_generic.o
      arch/powerpc/platforms/85xx/corenet_generic.c:33:13: error: no previous prototype for 'corenet_gen_pic_init' [-Werror=missing-prototypes]
         33 | void __init corenet_gen_pic_init(void)
            |             ^~~~~~~~~~~~~~~~~~~~
      arch/powerpc/platforms/85xx/corenet_generic.c:51:13: error: no previous prototype for 'corenet_gen_setup_arch' [-Werror=missing-prototypes]
         51 | void __init corenet_gen_setup_arch(void)
            |             ^~~~~~~~~~~~~~~~~~~~~~
      arch/powerpc/platforms/85xx/corenet_generic.c:104:12: error: no previous prototype for 'corenet_gen_publish_devices' [-Werror=missing-prototypes]
        104 | int __init corenet_gen_publish_devices(void)
            |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~
        CC      arch/powerpc/platforms/85xx/qemu_e500.o
      arch/powerpc/platforms/85xx/qemu_e500.c:28:13: error: no previous prototype for 'qemu_e500_pic_init' [-Werror=missing-prototypes]
         28 | void __init qemu_e500_pic_init(void)
            |             ^~~~~~~~~~~~~~~~~~
        CC      arch/powerpc/kernel/pmc.o
      arch/powerpc/kernel/pmc.c:78:6: error: no previous prototype for 'power4_enable_pmcs' [-Werror=missing-prototypes]
         78 | void power4_enable_pmcs(void)
            |      ^~~~~~~~~~~~~~~~~~
      Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://msgid.link/c90780017b624b91771a3e4240dcbadc68137915.1692684784.git.christophe.leroy@csgroup.eu
      
      c265735f
    • Christophe Leroy's avatar
      powerpc/64e: Fix circular dependency with CONFIG_SMP disabled · 0e2a34c4
      Christophe Leroy authored
      asm/percpu.h includes asm/paca.h which needs struct tlb_core_data
      which is defined in mmu-e500.h
      
      asm/percpu.h is included from asm/mmu.h in a #ifdef CONFIG_E500
      before the inclusion of mmu-e500.h
      
      To fix that, move the inclusion of asm/percpu.h into mmu-e500.h
      after the definition of struct tlb_core_data
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Closes: https://lore.kernel.org/oe-kbuild-all/202308220708.nRf5AUAe-lkp@intel.com/
      Closes: https://lore.kernel.org/oe-kbuild-all/202308220857.uFq2oAxM-lkp@intel.com/
      Closes: https://lore.kernel.org/oe-kbuild-all/202308221055.lw3UzJIL-lkp@intel.com/
      Fixes: 3a24ea0d ("powerpc/kuap: Use ASM feature fixups instead of static branches")
      Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://msgid.link/5e0f97d5cbcd05238b56b4424ab096468296824d.1692684461.git.christophe.leroy@csgroup.eu
      0e2a34c4
    • Immad Mir's avatar
      powerpc/powernv: fix debugfs_create_dir() error checking · 429356fa
      Immad Mir authored
      The debugfs_create_dir returns ERR_PTR incase of an error and the
      correct way of checking it by using the IS_ERR inline function, and
      not the simple null comparision. This patch fixes this.
      Suggested-by: default avatarIvan Orlov <ivan.orlov0322@gmail.com>
      Signed-off-by: default avatarImmad Mir <mirimmad17@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://msgid.link/CY5PR12MB64553EE96EBB3927311DB598C6459@CY5PR12MB6455.namprd12.prod.outlook.com
      429356fa
  6. 21 Aug, 2023 16 commits
  7. 18 Aug, 2023 1 commit