1. 20 May, 2022 4 commits
    • Ard Biesheuvel's avatar
      ARM: 9195/1: entry: avoid explicit literal loads · 50807460
      Ard Biesheuvel authored
      ARMv7 has MOVW/MOVT instruction pairs to load symbol addresses into
      registers without having to rely on literal loads that go via the
      D-cache.  For older cores, we now support a similar arrangement, based
      on PC-relative group relocations.
      
      This means we can elide most literal loads entirely from the entry path,
      by switching to the ldr_va macro to emit the appropriate sequence
      depending on the target architecture revision.
      
      While at it, switch to the bl_r macro for invoking the right PABT/DABT
      helpers instead of setting the LR register explicitly, which does not
      play well with cores that speculate across function returns.
      Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
      Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      50807460
    • Ard Biesheuvel's avatar
      ARM: 9194/1: assembler: simplify ldr_this_cpu for !SMP builds · 952f0331
      Ard Biesheuvel authored
      When CONFIG_SMP is not defined, the CPU offset is always zero, and so
      we can simplify the sequence to load a per-CPU variable.
      Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
      Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      952f0331
    • Wang Kefeng's avatar
      ARM: 9192/1: amba: fix memory leak in amba_device_try_add() · 7719a68b
      Wang Kefeng authored
      If amba_device_try_add() return error code (not EPROBE_DEFER),
      memory leak occurred when amba device fails to read periphid.
      
      unreferenced object 0xc1c60800 (size 1024):
        comm "swapper/0", pid 1, jiffies 4294937333 (age 75.200s)
        hex dump (first 32 bytes):
          40 40 db c1 04 08 c6 c1 04 08 c6 c1 00 00 00 00  @@..............
          00 d9 c1 c1 84 6f 38 c1 00 00 00 00 01 00 00 00  .....o8.........
        backtrace:
          [<(ptrval)>] kmem_cache_alloc_trace+0x168/0x2b4
          [<(ptrval)>] amba_device_alloc+0x38/0x7c
          [<(ptrval)>] of_platform_bus_create+0x2f4/0x4e8
          [<(ptrval)>] of_platform_bus_create+0x380/0x4e8
          [<(ptrval)>] of_platform_bus_create+0x380/0x4e8
          [<(ptrval)>] of_platform_bus_create+0x380/0x4e8
          [<(ptrval)>] of_platform_populate+0x70/0xc4
          [<(ptrval)>] of_platform_default_populate_init+0xb4/0xcc
          [<(ptrval)>] do_one_initcall+0x58/0x218
          [<(ptrval)>] kernel_init_freeable+0x250/0x29c
          [<(ptrval)>] kernel_init+0x24/0x148
          [<(ptrval)>] ret_from_fork+0x14/0x1c
          [<00000000>] 0x0
      unreferenced object 0xc1db4040 (size 64):
        comm "swapper/0", pid 1, jiffies 4294937333 (age 75.200s)
        hex dump (first 32 bytes):
          31 63 30 66 30 30 30 30 2e 77 64 74 00 00 00 00  1c0f0000.wdt....
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        backtrace:
          [<(ptrval)>] __kmalloc_track_caller+0x19c/0x2f8
          [<(ptrval)>] kvasprintf+0x60/0xcc
          [<(ptrval)>] kvasprintf_const+0x54/0x78
          [<(ptrval)>] kobject_set_name_vargs+0x34/0xa8
          [<(ptrval)>] dev_set_name+0x40/0x5c
          [<(ptrval)>] of_device_make_bus_id+0x128/0x1f8
          [<(ptrval)>] of_platform_bus_create+0x4dc/0x4e8
          [<(ptrval)>] of_platform_bus_create+0x380/0x4e8
          [<(ptrval)>] of_platform_bus_create+0x380/0x4e8
          [<(ptrval)>] of_platform_bus_create+0x380/0x4e8
          [<(ptrval)>] of_platform_populate+0x70/0xc4
          [<(ptrval)>] of_platform_default_populate_init+0xb4/0xcc
          [<(ptrval)>] do_one_initcall+0x58/0x218
          [<(ptrval)>] kernel_init_freeable+0x250/0x29c
          [<(ptrval)>] kernel_init+0x24/0x148
          [<(ptrval)>] ret_from_fork+0x14/0x1c
      
      Fix them by adding amba_device_put() to release device name and
      amba device.
      Signed-off-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
      Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      7719a68b
    • Wang Kefeng's avatar
      ARM: 9193/1: amba: Add amba_read_periphid() helper · 1f44de0f
      Wang Kefeng authored
      Add new amba_read_periphid() helper to simplify error handling.
      Signed-off-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
      Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      1f44de0f
  2. 18 May, 2022 2 commits
  3. 03 Apr, 2022 8 commits
  4. 02 Apr, 2022 26 commits