1. 27 Sep, 2018 34 commits
  2. 26 Sep, 2018 6 commits
    • Thomas Zimmermann's avatar
      drm/hisilicon: Replace ttm_bo_unref with ttm_bo_put · c932c4f8
      Thomas Zimmermann authored
      The function ttm_bo_put releases a reference to a TTM buffer object. The
      function's name is more aligned to the Linux kernel convention of naming
      ref-counting function _get and _put.
      
      A call to ttm_bo_unref takes the address of the TTM BO object's pointer and
      clears the pointer's value to NULL. This is not necessary in most cases and
      sometimes even worked around by the calling code. A call to ttm_bo_put only
      releases the reference without clearing the pointer.
      
      The current behaviour of cleaning the pointer is kept in the calling code,
      but should be removed if not required in a later patch.
      Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
      Reviewed-by: default avatarXinliang Liu <z.liuxinliang@hisilicon.com>
      Signed-off-by: default avatarXinliang Liu <z.liuxinliang@hisilicon.com>
      c932c4f8
    • Thomas Zimmermann's avatar
      drm/hisilicon: Replace drm_dev_unref with drm_dev_put · 45fcedae
      Thomas Zimmermann authored
      This patch unifies the naming of DRM functions for reference counting
      of struct drm_device. The resulting code is more aligned with the rest
      of the Linux kernel interfaces.
      Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
      Reviewed-by: default avatarXinliang Liu <z.liuxinliang@hisilicon.com>
      Signed-off-by: default avatarXinliang Liu <z.liuxinliang@hisilicon.com>
      45fcedae
    • Souptick Joarder's avatar
      gpu/drm/hisilicon: Convert drm_atomic_helper_suspend/resume() · 081d0571
      Souptick Joarder authored
      convert drm_atomic_helper_suspend/resume() to use
      drm_mode_config_helper_suspend/resume().
      
      Fixed one sparse warning by making hibmc_drm_interrupt
      static.
      Signed-off-by: default avatarAjit Negi <ajitn.linux@gmail.com>
      Signed-off-by: default avatarSouptick Joarder <jrdr.linux@gmail.com>
      Reviewed-by: default avatarXinliang Liu <z.liuxinliang@hisilicon.com>
      Signed-off-by: default avatarXinliang Liu <z.liuxinliang@hisilicon.com>
      081d0571
    • John Garry's avatar
      drm/hisilicon: hibmc: Use HUAWEI PCI vendor ID macro · a66dae3a
      John Garry authored
      Switch to use Huawei PCI vendor ID macro from pci_ids.h file.
      
      In addition, switch to use PCI_VDEVICE() instead of open coding.
      Signed-off-by: default avatarJohn Garry <john.garry@huawei.com>
      Reviewed-by: default avatarXinliang Liu <z.liuxinliang@hisilicon.com>
      Signed-off-by: default avatarXinliang Liu <z.liuxinliang@hisilicon.com>
      a66dae3a
    • John Garry's avatar
      drm/hisilicon: hibmc: Don't overwrite fb helper surface depth · 0ff9f496
      John Garry authored
      Currently the driver overwrites the surface depth provided by the fb
      helper to give an invalid bpp/surface depth combination.
      
      This has been exposed by commit 70109354 ("drm: Reject unknown legacy
      bpp and depth for drm_mode_addfb ioctl"), which now causes the driver to
      fail to probe.
      
      Fix by not overwriting the surface depth.
      
      Fixes: d1667b86 ("drm/hisilicon/hibmc: Add support for frame buffer")
      Signed-off-by: default avatarJohn Garry <john.garry@huawei.com>
      Reviewed-by: default avatarXinliang Liu <z.liuxinliang@hisilicon.com>
      Signed-off-by: default avatarXinliang Liu <z.liuxinliang@hisilicon.com>
      0ff9f496
    • John Garry's avatar
      drm/hisilicon: hibmc: Do not carry error code in HiBMC framebuffer pointer · 331d880b
      John Garry authored
      In hibmc_drm_fb_create(), when the call to hibmc_framebuffer_init() fails
      with error, do not store the error code in the HiBMC device frame-buffer
      pointer, as this will be later checked for non-zero value in
      hibmc_fbdev_destroy() when our intention is to check for a valid function
      pointer.
      
      This fixes the following crash:
      [    9.699791] Unable to handle kernel NULL pointer dereference at virtual address 000000000000001a
      [    9.708672] Mem abort info:
      [    9.711489]   ESR = 0x96000004
      [    9.714570]   Exception class = DABT (current EL), IL = 32 bits
      [    9.720551]   SET = 0, FnV = 0
      [    9.723631]   EA = 0, S1PTW = 0
      [    9.726799] Data abort info:
      [    9.729702]   ISV = 0, ISS = 0x00000004
      [    9.733573]   CM = 0, WnR = 0
      [    9.736566] [000000000000001a] user address but active_mm is swapper
      [    9.742987] Internal error: Oops: 96000004 [#1] PREEMPT SMP
      [    9.748614] Modules linked in:
      [    9.751694] CPU: 16 PID: 293 Comm: kworker/16:1 Tainted: G        W         4.19.0-rc4-next-20180920-00001-g9b0012c #322
      [    9.762681] Hardware name: Huawei Taishan 2280 /D05, BIOS Hisilicon D05 IT21 Nemo 2.0 RC0 04/18/2018
      [    9.771915] Workqueue: events work_for_cpu_fn
      [    9.776312] pstate: 60000005 (nZCv daif -PAN -UAO)
      [    9.781150] pc : drm_mode_object_put+0x0/0x20
      [    9.785547] lr : hibmc_fbdev_fini+0x40/0x58
      [    9.789767] sp : ffff00000af1bcf0
      [    9.793108] x29: ffff00000af1bcf0 x28: 0000000000000000
      [    9.798473] x27: 0000000000000000 x26: ffff000008f66630
      [    9.803838] x25: 0000000000000000 x24: ffff0000095abb98
      [    9.809203] x23: ffff8017db92fe00 x22: ffff8017d2b13000
      [    9.814568] x21: ffffffffffffffea x20: ffff8017d2f80018
      [    9.819933] x19: ffff8017d28a0018 x18: ffffffffffffffff
      [    9.825297] x17: 0000000000000000 x16: 0000000000000000
      [    9.830662] x15: ffff0000092296c8 x14: ffff00008939970f
      [    9.836026] x13: ffff00000939971d x12: ffff000009229940
      [    9.841391] x11: ffff0000085f8fc0 x10: ffff00000af1b9a0
      [    9.846756] x9 : 000000000000000d x8 : 6620657a696c6169
      [    9.852121] x7 : ffff8017d3340580 x6 : ffff8017d4168000
      [    9.857486] x5 : 0000000000000000 x4 : ffff8017db92fb20
      [    9.862850] x3 : 0000000000002690 x2 : ffff8017d3340480
      [    9.868214] x1 : 0000000000000028 x0 : 0000000000000002
      [    9.873580] Process kworker/16:1 (pid: 293, stack limit = 0x(____ptrval____))
      [    9.880788] Call trace:
      [    9.883252]  drm_mode_object_put+0x0/0x20
      [    9.887297]  hibmc_unload+0x1c/0x80
      [    9.890815]  hibmc_pci_probe+0x170/0x3c8
      [    9.894773]  local_pci_probe+0x3c/0xb0
      [    9.898555]  work_for_cpu_fn+0x18/0x28
      [    9.902337]  process_one_work+0x1e0/0x318
      [    9.906382]  worker_thread+0x228/0x450
      [    9.910164]  kthread+0x128/0x130
      [    9.913418]  ret_from_fork+0x10/0x18
      [    9.917024] Code: a94153f3 a8c27bfd d65f03c0 d503201f (f9400c01)
      [    9.923180] ---[ end trace 2695ffa0af5be375 ]---
      
      Fixes: d1667b86 ("drm/hisilicon/hibmc: Add support for frame buffer")
      Signed-off-by: default avatarJohn Garry <john.garry@huawei.com>
      Reviewed-by: default avatarXinliang Liu <z.liuxinliang@hisilicon.com>
      Signed-off-by: default avatarXinliang Liu <z.liuxinliang@hisilicon.com>
      331d880b