Merge tag 'drm-for-v4.15' of git://people.freedesktop.org/~airlied/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 16 Nov 2017 04:42:10 +0000 (20:42 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 16 Nov 2017 04:42:10 +0000 (20:42 -0800)
Pull drm updates from Dave Airlie:
 "This is the main drm pull request for v4.15.

  Core:
   - Atomic object lifetime fixes
   - Atomic iterator improvements
   - Sparse/smatch fixes
   - Legacy kms ioctls to be interruptible
   - EDID override improvements
   - fb/gem helper cleanups
   - Simple outreachy patches
   - Documentation improvements
   - Fix dma-buf rcu races
   - DRM mode object leasing for improving VR use cases.
   - vgaarb improvements for non-x86 platforms.

  New driver:
   - tve200: Faraday Technology TVE200 block.

     This "TV Encoder" encodes a ITU-T BT.656 stream and can be found in
     the StorLink SL3516 (later Cortina Systems CS3516) as well as the
     Grain Media GM8180.

  New bridges:
   - SiI9234 support

  New panels:
   - S6E63J0X03, OTM8009A, Seiko 43WVF1G, 7" rpi touch panel, Toshiba
     LT089AC19000, Innolux AT043TN24

  i915:
   - Remove Coffeelake from alpha support
   - Cannonlake workarounds
   - Infoframe refactoring for DisplayPort
   - VBT updates
   - DisplayPort vswing/emph/buffer translation refactoring
   - CCS fixes
   - Restore GPU clock boost on missed vblanks
   - Scatter list updates for userptr allocations
   - Gen9+ transition watermarks
   - Display IPC (Isochronous Priority Control)
   - Private PAT management
   - GVT: improved error handling and pci config sanitizing
   - Execlist refactoring
   - Transparent Huge Page support
   - User defined priorities support
   - HuC/GuC firmware refactoring
   - DP MST fixes
   - eDP power sequencing fixes
   - Use RCU instead of stop_machine
   - PSR state tracking support
   - Eviction fixes
   - BDW DP aux channel timeout fixes
   - LSPCON fixes
   - Cannonlake PLL fixes

  amdgpu:
   - Per VM BO support
   - Powerplay cleanups
   - CI powerplay support
   - PASID mgr for kfd
   - SR-IOV fixes
   - initial GPU reset for vega10
   - Prime mmap support
   - TTM updates
   - Clock query interface for Raven
   - Fence to handle ioctl
   - UVD encode ring support on Polaris
   - Transparent huge page DMA support
   - Compute LRU pipe tweaks
   - BO flag to allow buffers to opt out of implicit sync
   - CTX priority setting API
   - VRAM lost infrastructure plumbing

  qxl:
   - fix flicker since atomic rework

  amdkfd:
   - Further improvements from internal AMD tree
   - Usermode events
   - Drop radeon support

  nouveau:
   - Pascal temperature sensor support
   - Improved BAR2 handling
   - MMU rework to support Pascal MMU

  exynos:
   - Improved HDMI/mixer support
   - HDMI audio interface support

  tegra:
   - Prep work for tegra186
   - Cleanup/fixes

  msm:
   - Preemption support for a5xx
   - Display fixes for 8x96 (snapdragon 820)
   - Async cursor plane fixes
   - FW loading rework
   - GPU debugging improvements

  vc4:
   - Prep for DSI panels
   - fix T-format tiling scanout
   - New madvise ioctl

  Rockchip:
   - LVDS support

  omapdrm:
   - omap4 HDMI CEC support

  etnaviv:
   - GPU performance counters groundwork

  sun4i:
   - refactor driver load + TCON backend
   - HDMI improvements
   - A31 support
   - Misc fixes

  udl:
   - Probe/EDID read fixes.

  tilcdc:
   - Misc fixes.

  pl111:
   - Support more variants

  adv7511:
   - Improve EDID handling.
   - HDMI CEC support

  sii8620:
   - Add remote control support"

* tag 'drm-for-v4.15' of git://people.freedesktop.org/~airlied/linux: (1480 commits)
  drm/rockchip: analogix_dp: Use mutex rather than spinlock
  drm/mode_object: fix documentation for object lookups.
  drm/i915: Reorder context-close to avoid calling i915_vma_close() under RCU
  drm/i915: Move init_clock_gating() back to where it was
  drm/i915: Prune the reservation shared fence array
  drm/i915: Idle the GPU before shinking everything
  drm/i915: Lock llist_del_first() vs llist_del_all()
  drm/i915: Calculate ironlake intermediate watermarks correctly, v2.
  drm/i915: Disable lazy PPGTT page table optimization for vGPU
  drm/i915/execlists: Remove the priority "optimisation"
  drm/i915: Filter out spurious execlists context-switch interrupts
  drm/amdgpu: use irq-safe lock for kiq->ring_lock
  drm/amdgpu: bypass lru touch for KIQ ring submission
  drm/amdgpu: Potential uninitialized variable in amdgpu_vm_update_directories()
  drm/amdgpu: potential uninitialized variable in amdgpu_vce_ring_parse_cs()
  drm/amd/powerplay: initialize a variable before using it
  drm/amd/powerplay: suppress KASAN out of bounds warning in vega10_populate_all_memory_levels
  drm/amd/amdgpu: fix evicted VRAM bo adjudgement condition
  drm/vblank: Tune drm_crtc_accurate_vblank_count() WARN down to a debug
  drm/rockchip: add CONFIG_OF dependency for lvds
  ...

130 files changed:
1  2 
Documentation/admin-guide/kernel-parameters.txt
Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
Documentation/devicetree/bindings/vendor-prefixes.txt
MAINTAINERS
drivers/gpu/drm/Makefile
drivers/gpu/drm/amd/amdgpu/Makefile
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
drivers/gpu/drm/amd/amdgpu/amdgpu_trace_points.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
drivers/gpu/drm/amd/powerplay/Makefile
drivers/gpu/drm/amd/powerplay/hwmgr/Makefile
drivers/gpu/drm/amd/powerplay/hwmgr/pp_overdriver.c
drivers/gpu/drm/amd/powerplay/smumgr/Makefile
drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
drivers/gpu/drm/armada/Makefile
drivers/gpu/drm/armada/armada_trace.h
drivers/gpu/drm/bridge/Makefile
drivers/gpu/drm/drm_trace.h
drivers/gpu/drm/etnaviv/Makefile
drivers/gpu/drm/etnaviv/etnaviv_gem.c
drivers/gpu/drm/etnaviv/etnaviv_gpu.c
drivers/gpu/drm/i915/Makefile
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_gem_context.c
drivers/gpu/drm/i915/i915_gem_execbuffer.c
drivers/gpu/drm/i915/i915_gem_gtt.c
drivers/gpu/drm/i915/i915_gem_userptr.c
drivers/gpu/drm/i915/i915_trace.h
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_dp.c
drivers/gpu/drm/i915/intel_drv.h
drivers/gpu/drm/i915/intel_pm.c
drivers/gpu/drm/i915/intel_ringbuffer.h
drivers/gpu/drm/i915/selftests/i915_live_selftests.h
drivers/gpu/drm/i915/selftests/i915_mock_selftests.h
drivers/gpu/drm/msm/Makefile
drivers/gpu/drm/nouveau/include/nvif/cl506e.h
drivers/gpu/drm/nouveau/include/nvif/cl506f.h
drivers/gpu/drm/nouveau/include/nvif/cl826e.h
drivers/gpu/drm/nouveau/include/nvif/cl826f.h
drivers/gpu/drm/nouveau/include/nvif/cl906f.h
drivers/gpu/drm/nouveau/include/nvif/cla06f.h
drivers/gpu/drm/nouveau/include/nvif/class.h
drivers/gpu/drm/nouveau/include/nvif/device.h
drivers/gpu/drm/nouveau/include/nvif/ioctl.h
drivers/gpu/drm/nouveau/include/nvif/object.h
drivers/gpu/drm/nouveau/include/nvif/os.h
drivers/gpu/drm/nouveau/include/nvkm/core/client.h
drivers/gpu/drm/nouveau/include/nvkm/core/device.h
drivers/gpu/drm/nouveau/include/nvkm/core/engine.h
drivers/gpu/drm/nouveau/include/nvkm/core/gpuobj.h
drivers/gpu/drm/nouveau/include/nvkm/core/memory.h
drivers/gpu/drm/nouveau/include/nvkm/core/mm.h
drivers/gpu/drm/nouveau/include/nvkm/core/object.h
drivers/gpu/drm/nouveau/include/nvkm/core/os.h
drivers/gpu/drm/nouveau/include/nvkm/core/ramht.h
drivers/gpu/drm/nouveau/include/nvkm/core/subdev.h
drivers/gpu/drm/nouveau/include/nvkm/engine/dma.h
drivers/gpu/drm/nouveau/include/nvkm/engine/falcon.h
drivers/gpu/drm/nouveau/include/nvkm/engine/fifo.h
drivers/gpu/drm/nouveau/include/nvkm/subdev/bar.h
drivers/gpu/drm/nouveau/include/nvkm/subdev/fb.h
drivers/gpu/drm/nouveau/include/nvkm/subdev/instmem.h
drivers/gpu/drm/nouveau/include/nvkm/subdev/ltc.h
drivers/gpu/drm/nouveau/include/nvkm/subdev/mmu.h
drivers/gpu/drm/nouveau/include/nvkm/subdev/therm.h
drivers/gpu/drm/nouveau/nouveau_abi16.h
drivers/gpu/drm/nouveau/nouveau_bo.h
drivers/gpu/drm/nouveau/nouveau_chan.h
drivers/gpu/drm/nouveau/nouveau_display.h
drivers/gpu/drm/nouveau/nouveau_drv.h
drivers/gpu/drm/nouveau/nouveau_fence.h
drivers/gpu/drm/nouveau/nouveau_gem.h
drivers/gpu/drm/nouveau/nouveau_sgdma.c
drivers/gpu/drm/nouveau/nv50_display.c
drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.h
drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.h
drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h
drivers/gpu/drm/nouveau/nvkm/engine/fifo/changf100.h
drivers/gpu/drm/nouveau/nvkm/engine/fifo/changk104.h
drivers/gpu/drm/nouveau/nvkm/engine/fifo/channv50.h
drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.h
drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.h
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.h
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.h
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.h
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv50.h
drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv31.h
drivers/gpu/drm/nouveau/nvkm/engine/pm/priv.h
drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.h
drivers/gpu/drm/nouveau/nvkm/engine/sw/nvsw.h
drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.h
drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.h
drivers/gpu/drm/nouveau/nvkm/subdev/bar/priv.h
drivers/gpu/drm/nouveau/nvkm/subdev/fb/gf100.h
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv50.h
drivers/gpu/drm/nouveau/nvkm/subdev/fb/priv.h
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.h
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv40.h
drivers/gpu/drm/nouveau/nvkm/subdev/instmem/priv.h
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h
drivers/gpu/drm/omapdrm/dss/Makefile
drivers/gpu/drm/panel/Makefile
drivers/gpu/drm/pl111/Makefile
drivers/gpu/drm/radeon/Makefile
drivers/gpu/drm/radeon/radeon_trace.h
drivers/gpu/drm/radeon/radeon_ttm.c
drivers/gpu/drm/rockchip/Makefile
drivers/gpu/drm/sun4i/Makefile
drivers/gpu/drm/tegra/drm.c
drivers/gpu/drm/tilcdc/tilcdc_slave_compat.c
drivers/gpu/drm/vc4/Makefile
drivers/gpu/host1x/Makefile
drivers/gpu/host1x/bus.c
drivers/gpu/host1x/dev.c
drivers/staging/vboxvideo/vbox_mode.c
include/drm/drm_fb_cma_helper.h
include/drm/drm_of.h
include/linux/scatterlist.h
include/linux/shmem_fs.h
include/uapi/drm/etnaviv_drm.h
include/uapi/drm/i915_drm.h
mm/shmem.c
scripts/coccinelle/api/drm-get-put.cocci

@@@ -249,11 -245,10 +249,12 @@@ olimex  OLIMEX Ltd
  onion Onion Corporation
  onnn  ON Semiconductor Corp.
  ontat On Tat Industrial Company
 +opalkelly     Opal Kelly Incorporated
  opencores     OpenCores.org
 +openrisc      OpenRISC.io
  option        Option NV
  ORCL  Oracle Corporation
+ orisetech     Orise Technology
  ortustech     Ortus Technology Co., Ltd.
  ovti  OmniVision Technologies
  oxsemi        Oxford Semiconductor, Ltd.
diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
@@@ -553,7 -562,8 +562,7 @@@ static int amdgpu_cs_parser_bos(struct 
                                 * invalidated it. Free it and try again
                                 */
                                release_pages(e->user_pages,
-                                             e->robj->tbo.ttm->num_pages);
 -                                            bo->tbo.ttm->num_pages,
 -                                            false);
++                                            bo->tbo.ttm->num_pages);
                                kvfree(e->user_pages);
                                e->user_pages = NULL;
                        }
@@@ -1,5 -1,23 +1,24 @@@
 +// SPDX-License-Identifier: GPL-2.0
  /* Copyright Red Hat Inc 2010.
+  *
+  * Permission is hereby granted, free of charge, to any person obtaining a
+  * copy of this software and associated documentation files (the "Software"),
+  * to deal in the Software without restriction, including without limitation
+  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  * and/or sell copies of the Software, and to permit persons to whom the
+  * Software is furnished to do so, subject to the following conditions:
+  *
+  * The above copyright notice and this permission notice shall be included in
+  * all copies or substantial portions of the Software.
+  *
+  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+  * OTHER DEALINGS IN THE SOFTWARE.
+  *
   * Author : Dave Airlie <airlied@redhat.com>
   */
  #include <drm/drmP.h>
@@@ -659,7 -746,8 +746,8 @@@ int amdgpu_ttm_tt_get_user_pages(struc
        return 0;
  
  release_pages:
 -      release_pages(pages, pinned, 0);
 +      release_pages(pages, pinned);
+       up_read(&current->mm->mmap_sem);
        return r;
  }
  
@@@ -93,11 -371,13 +371,17 @@@ static int uvd_v6_0_early_init(void *ha
  {
        struct amdgpu_device *adev = (struct amdgpu_device *)handle;
  
 +      if (!(adev->flags & AMD_IS_APU) &&
 +          (RREG32_SMC(ixCC_HARVEST_FUSES) & CC_HARVEST_FUSES__UVD_DISABLE_MASK))
 +              return -ENOENT;
 +
        uvd_v6_0_set_ring_funcs(adev);
+       if (uvd_v6_0_enc_support(adev)) {
+               adev->uvd.num_enc_rings = 2;
+               uvd_v6_0_set_enc_ring_funcs(adev);
+       }
        uvd_v6_0_set_irq_funcs(adev);
  
        return 0;
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -104,19 -104,12 +104,14 @@@ static void lut_close(struct i915_gem_c
                kmem_cache_free(ctx->i915->luts, lut);
        }
  
 +      rcu_read_lock();
        radix_tree_for_each_slot(slot, &ctx->handles_vma, &iter, 0) {
                struct i915_vma *vma = rcu_dereference_raw(*slot);
-               struct drm_i915_gem_object *obj = vma->obj;
  
                radix_tree_iter_delete(&ctx->handles_vma, &iter, slot);
-               if (!i915_vma_is_ggtt(vma))
-                       i915_vma_close(vma);
-               __i915_gem_object_release_unless_active(obj);
+               __i915_gem_object_release_unless_active(vma->obj);
        }
 +      rcu_read_unlock();
  }
  
  static void i915_gem_context_free(struct i915_gem_context *ctx)
@@@ -933,13 -1158,24 +1158,20 @@@ static void gen8_ppgtt_insert_4lvl(stru
                                   u32 unused)
  {
        struct i915_hw_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
 -      struct sgt_dma iter = {
 -              .sg = vma->pages->sgl,
 -              .dma = sg_dma_address(iter.sg),
 -              .max = iter.dma + iter.sg->length,
 -      };
 +      struct sgt_dma iter = sgt_dma(vma);
        struct i915_page_directory_pointer **pdps = ppgtt->pml4.pdps;
-       struct gen8_insert_pte idx = gen8_insert_pte(vma->node.start);
  
-       while (gen8_ppgtt_insert_pte_entries(ppgtt, pdps[idx.pml4e++], &iter,
-                                            &idx, cache_level))
-               GEM_BUG_ON(idx.pml4e >= GEN8_PML4ES_PER_PML4);
+       if (vma->page_sizes.sg > I915_GTT_PAGE_SIZE) {
+               gen8_ppgtt_insert_huge_entries(vma, pdps, &iter, cache_level);
+       } else {
+               struct gen8_insert_pte idx = gen8_insert_pte(vma->node.start);
+               while (gen8_ppgtt_insert_pte_entries(ppgtt, pdps[idx.pml4e++],
+                                                    &iter, &idx, cache_level))
+                       GEM_BUG_ON(idx.pml4e >= GEN8_PML4ES_PER_PML4);
+               vma->page_sizes.gtt = I915_GTT_PAGE_SIZE;
+       }
  }
  
  static void gen8_free_page_tables(struct i915_address_space *vm,
@@@ -668,10 -660,10 +660,10 @@@ static int i915_gem_userptr_get_pages(s
                __i915_gem_userptr_set_active(obj, true);
  
        if (IS_ERR(pages))
 -              release_pages(pvec, pinned, 0);
 +              release_pages(pvec, pinned);
        kvfree(pvec);
  
-       return pages;
+       return PTR_ERR_OR_ZERO(pages);
  }
  
  static void
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -1,8 -1,7 +1,8 @@@
 +/* SPDX-License-Identifier: GPL-2.0 */
  #ifndef __NVKM_DEVICE_H__
  #define __NVKM_DEVICE_H__
+ #include <core/oclass.h>
  #include <core/event.h>
- #include <core/object.h>
  
  enum nvkm_devidx {
        NVKM_SUBDEV_PCI,
@@@ -1,11 -1,7 +1,8 @@@
 +/* SPDX-License-Identifier: GPL-2.0 */
  #ifndef __NVKM_GPUOBJ_H__
  #define __NVKM_GPUOBJ_H__
- #include <core/object.h>
  #include <core/memory.h>
  #include <core/mm.h>
- struct nvkm_vma;
- struct nvkm_vm;
  
  #define NVOBJ_FLAG_ZERO_ALLOC 0x00000001
  #define NVOBJ_FLAG_HEAP       0x00000004
@@@ -1,11 -1,8 +1,9 @@@
 +/* SPDX-License-Identifier: GPL-2.0 */
  #ifndef __NVKM_OBJECT_H__
  #define __NVKM_OBJECT_H__
- #include <core/os.h>
- #include <core/debug.h>
+ #include <core/oclass.h>
  struct nvkm_event;
  struct nvkm_gpuobj;
- struct nvkm_oclass;
  
  struct nvkm_object {
        const struct nvkm_object_func *func;
Simple merge
@@@ -1,9 -1,5 +1,6 @@@
 +/* SPDX-License-Identifier: GPL-2.0 */
  #ifndef __NOUVEAU_DISPLAY_H__
  #define __NOUVEAU_DISPLAY_H__
- #include <subdev/mmu.h>
  #include "nouveau_drv.h"
  
  struct nouveau_framebuffer {
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -1,6 -1,5 +1,6 @@@
- pl111_drm-y +=        pl111_connector.o \
-               pl111_display.o \
 +# SPDX-License-Identifier: GPL-2.0
+ pl111_drm-y +=        pl111_display.o \
+               pl111_versatile.o \
                pl111_drv.o
  
  pl111_drm-$(CONFIG_DEBUG_FS) += pl111_debugfs.o
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -1,25 -1,25 +1,26 @@@
- sun4i-drm-y += sun4i_drv.o
- sun4i-drm-y += sun4i_framebuffer.o
 +# SPDX-License-Identifier: GPL-2.0
+ sun4i-backend-y                       += sun4i_backend.o sun4i_layer.o
  
- sun4i-drm-hdmi-y += sun4i_hdmi_enc.o
- sun4i-drm-hdmi-y += sun4i_hdmi_i2c.o
- sun4i-drm-hdmi-y += sun4i_hdmi_ddc_clk.o
- sun4i-drm-hdmi-y += sun4i_hdmi_tmds_clk.o
+ sun4i-drm-y                   += sun4i_drv.o
+ sun4i-drm-y                   += sun4i_framebuffer.o
  
- sun4i-tcon-y += sun4i_tcon.o
- sun4i-tcon-y += sun4i_rgb.o
- sun4i-tcon-y += sun4i_dotclock.o
- sun4i-tcon-y += sun4i_crtc.o
+ sun4i-drm-hdmi-y              += sun4i_hdmi_ddc_clk.o
+ sun4i-drm-hdmi-y              += sun4i_hdmi_enc.o
+ sun4i-drm-hdmi-y              += sun4i_hdmi_i2c.o
+ sun4i-drm-hdmi-y              += sun4i_hdmi_tmds_clk.o
  
- sun4i-backend-y += sun4i_backend.o sun4i_layer.o
+ sun8i-mixer-y                 += sun8i_mixer.o sun8i_layer.o
  
- sun8i-mixer-y += sun8i_mixer.o sun8i_layer.o
+ sun4i-tcon-y                  += sun4i_crtc.o
+ sun4i-tcon-y                  += sun4i_dotclock.o
+ sun4i-tcon-y                  += sun4i_tcon.o
+ sun4i-tcon-y                  += sun4i_rgb.o
  
- obj-$(CONFIG_DRM_SUN4I)               += sun4i-drm.o sun4i-tcon.o
- obj-$(CONFIG_DRM_SUN4I)               += sun6i_drc.o
+ obj-$(CONFIG_DRM_SUN4I)               += sun4i-drm.o
+ obj-$(CONFIG_DRM_SUN4I)               += sun4i-tcon.o
  obj-$(CONFIG_DRM_SUN4I)               += sun4i_tv.o
+ obj-$(CONFIG_DRM_SUN4I)               += sun6i_drc.o
  
- obj-$(CONFIG_DRM_SUN4I_BACKEND)               += sun4i-backend.o
+ obj-$(CONFIG_DRM_SUN4I_BACKEND)       += sun4i-backend.o
  obj-$(CONFIG_DRM_SUN4I_HDMI)  += sun4i-drm-hdmi.o
- obj-$(CONFIG_DRM_SUN8I_MIXER)         += sun8i-mixer.o
+ obj-$(CONFIG_DRM_SUN8I_MIXER) += sun8i-mixer.o
Simple merge
@@@ -162,8 -163,12 +162,6 @@@ static struct device_node * __init tilc
                return NULL;
        }
  
-       of_node_set_flag(overlay, OF_DETACHED);
 -      ret = of_resolve_phandles(overlay);
 -      if (ret) {
 -              pr_err("%s: Failed to resolve phandles: %d\n", __func__, ret);
 -              return NULL;
 -      }
--
        return overlay;
  }
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc mm/shmem.c
Simple merge