Merge tag 'drm-intel-next-2015-03-27-merge' of git://anongit.freedesktop.org/drm...
authorDave Airlie <airlied@redhat.com>
Tue, 31 Mar 2015 22:21:46 +0000 (08:21 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 31 Mar 2015 22:21:46 +0000 (08:21 +1000)
This backmerges 4.0-rc6 due to the recent fixes in rc5/6

- DP link rate refactoring from Ville
- byt/bsw rps tuning from Chris
- kerneldoc for the shrinker code
- more dynamic ppgtt pte work (Michel, Ben, ...)
- vlv dpll code refactoring to prep fro bxt (Imre)
- refactoring the sprite colorkey code (Ville)
- rotated ggtt view support from Tvrtko
- roll out struct drm_atomic_state to prep for atomic update (Ander)

* tag 'drm-intel-next-2015-03-27-merge' of git://anongit.freedesktop.org/drm-intel: (473 commits)
  Linux 4.0-rc6
  arm64: juno: Fix misleading name of UART reference clock
  drm/i915: Update DRIVER_DATE to 20150327
  drm/i915: Skip allocating shadow batch for 0-length batches
  drm/i915: Handle error to get connector state when staging config
  drm/i915: Compare GGTT view structs instead of types
  drm/i915: fix simple_return.cocci warnings
  drm/i915: Add module param to test the load detect code
  drm/i915: Remove usage of encoder->new_crtc from clock computations
  drm/i915: Don't look at staged config crtc when changing DRRS state
  drm/i915: Convert intel_pipe_will_have_type() to using atomic state
  drm/i915: Pass an atomic state to modeset_global_resources() functions
  drm/i915: Add dynamic page trace events
  drm/i915: Finish gen6/7 dynamic page table allocation
  drm/i915: Remove unnecessary gen6_ppgtt_unmap_pages
  drm/i915: Fix i915_dma_map_single positive error code
  drm/i915: Prevent out of range pt in gen6_for_each_pde
  drm/i915: fix definition of the DRM_IOCTL_I915_GET_SPRITE_COLORKEY ioctl
  drm/i915: Rip out GET_SPRITE_COLORKEY ioctl
  watchdog: imgpdc: Fix default heartbeat
  ...

1  2 
MAINTAINERS
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
drivers/gpu/drm/radeon/radeon_kfd.c

diff --combined MAINTAINERS
index 74778886321ea5c096d0aae3488930e2f9842c7a,1de6afa8ee51c747b592e6a10fce1cf742d2bc96..36cf1007037c0464d73d83a7357d2c55638e0aff
@@@ -1186,7 -1186,7 +1186,7 @@@ M:      Sebastian Hesselbarth <sebastian.hes
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-mvebu/
- F:    drivers/rtc/armada38x-rtc
+ F:    drivers/rtc/rtc-armada38x.c
  
  ARM/Marvell Berlin SoC support
  M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
@@@ -1362,6 -1362,7 +1362,7 @@@ F:      drivers/i2c/busses/i2c-rk3x.
  F:    drivers/*/*rockchip*
  F:    drivers/*/*/*rockchip*
  F:    sound/soc/rockchip/
+ N:    rockchip
  
  ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
  M:    Kukjin Kim <kgene@kernel.org>
@@@ -1675,8 -1676,8 +1676,8 @@@ F:      drivers/misc/eeprom/at24.
  F:    include/linux/platform_data/at24.h
  
  ATA OVER ETHERNET (AOE) DRIVER
- M:    "Ed L. Cashin" <ecashin@coraid.com>
- W:    http://support.coraid.com/support/linux
+ M:    "Ed L. Cashin" <ed.cashin@acm.org>
+ W:    http://www.openaoe.org/
  S:    Supported
  F:    Documentation/aoe/
  F:    drivers/block/aoe/
@@@ -1741,7 -1742,7 +1742,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/atheros/
  
  ATM
- M:    Chas Williams <chas@cmf.nrl.navy.mil>
+ M:    Chas Williams <3chas3@gmail.com>
  L:    linux-atm-general@lists.sourceforge.net (moderated for non-subscribers)
  L:    netdev@vger.kernel.org
  W:    http://linux-atm.sourceforge.net
@@@ -3252,6 -3253,13 +3253,13 @@@ S:    Maintaine
  F:    Documentation/hwmon/dme1737
  F:    drivers/hwmon/dme1737.c
  
+ DMI/SMBIOS SUPPORT
+ M:    Jean Delvare <jdelvare@suse.de>
+ S:    Maintained
+ F:    drivers/firmware/dmi-id.c
+ F:    drivers/firmware/dmi_scan.c
+ F:    include/linux/dmi.h
  DOCKING STATION DRIVER
  M:    Shaohua Li <shaohua.li@intel.com>
  L:    linux-acpi@vger.kernel.org
@@@ -3389,6 -3397,7 +3397,6 @@@ T:      git git://people.freedesktop.org/~ai
  S:    Supported
  F:    drivers/gpu/drm/rcar-du/
  F:    drivers/gpu/drm/shmobile/
 -F:    include/linux/platform_data/rcar-du.h
  F:    include/linux/platform_data/shmob_drm.h
  
  DSBR100 USB FM RADIO DRIVER
@@@ -10206,6 -10215,13 +10214,13 @@@ S: Maintaine
  F:    Documentation/usb/ohci.txt
  F:    drivers/usb/host/ohci*
  
+ USB OTG FSM (Finite State Machine)
+ M:    Peter Chen <Peter.Chen@freescale.com>
+ T:    git git://github.com/hzpeterchen/linux-usb.git
+ L:    linux-usb@vger.kernel.org
+ S:    Maintained
+ F:    drivers/usb/common/usb-otg-fsm.c
  USB OVER IP DRIVER
  M:    Valentina Manea <valentina.manea.m@gmail.com>
  M:    Shuah Khan <shuah.kh@samsung.com>
index d7174300f50114af983bc84b1d673d6c13f67532,d8135adb2238012460cfb67165d0f322f809230a..69af73f153103075f00c9344f836bd7eb3b24668
@@@ -82,8 -82,7 +82,8 @@@ static inline unsigned int get_pipes_nu
  void program_sh_mem_settings(struct device_queue_manager *dqm,
                                        struct qcm_process_device *qpd)
  {
 -      return kfd2kgd->program_sh_mem_settings(dqm->dev->kgd, qpd->vmid,
 +      return dqm->dev->kfd2kgd->program_sh_mem_settings(
 +                                              dqm->dev->kgd, qpd->vmid,
                                                qpd->sh_mem_config,
                                                qpd->sh_mem_ape1_base,
                                                qpd->sh_mem_ape1_limit,
@@@ -458,12 -457,9 +458,12 @@@ set_pasid_vmid_mapping(struct device_qu
  {
        uint32_t pasid_mapping;
  
 -      pasid_mapping = (pasid == 0) ? 0 : (uint32_t)pasid |
 -                                              ATC_VMID_PASID_MAPPING_VALID;
 -      return kfd2kgd->set_pasid_vmid_mapping(dqm->dev->kgd, pasid_mapping,
 +      pasid_mapping = (pasid == 0) ? 0 :
 +              (uint32_t)pasid |
 +              ATC_VMID_PASID_MAPPING_VALID;
 +
 +      return dqm->dev->kfd2kgd->set_pasid_vmid_mapping(
 +                                              dqm->dev->kgd, pasid_mapping,
                                                vmid);
  }
  
@@@ -515,7 -511,7 +515,7 @@@ int init_pipelines(struct device_queue_
                pipe_hpd_addr = dqm->pipelines_addr + i * CIK_HPD_EOP_BYTES;
                pr_debug("kfd: pipeline address %llX\n", pipe_hpd_addr);
                /* = log2(bytes/4)-1 */
 -              kfd2kgd->init_pipeline(dqm->dev->kgd, inx,
 +              dqm->dev->kfd2kgd->init_pipeline(dqm->dev->kgd, inx,
                                CIK_HPD_EOP_BYTES_LOG2 - 3, pipe_hpd_addr);
        }
  
@@@ -649,6 -645,7 +649,7 @@@ static int create_sdma_queue_nocpsch(st
        pr_debug("     sdma queue id: %d\n", q->properties.sdma_queue_id);
        pr_debug("     sdma engine id: %d\n", q->properties.sdma_engine_id);
  
+       init_sdma_vm(dqm, q, qpd);
        retval = mqd->init_mqd(mqd, &q->mqd, &q->mqd_mem_obj,
                                &q->gart_mqd_addr, &q->properties);
        if (retval != 0) {
                return retval;
        }
  
-       init_sdma_vm(dqm, q, qpd);
+       retval = mqd->load_mqd(mqd, q->mqd, 0,
+                               0, NULL);
+       if (retval != 0) {
+               deallocate_sdma_queue(dqm, q->sdma_id);
+               mqd->uninit_mqd(mqd, q->mqd, q->mqd_mem_obj);
+               return retval;
+       }
        return 0;
  }
  
@@@ -901,7 -905,7 +909,7 @@@ out
        return retval;
  }
  
 -static int fence_wait_timeout(unsigned int *fence_addr,
 +static int amdkfd_fence_wait_timeout(unsigned int *fence_addr,
                                unsigned int fence_value,
                                unsigned long timeout)
  {
@@@ -957,7 -961,7 +965,7 @@@ static int destroy_queues_cpsch(struct 
        pm_send_query_status(&dqm->packets, dqm->fence_gpu_addr,
                                KFD_FENCE_COMPLETED);
        /* should be timed out */
 -      fence_wait_timeout(dqm->fence_addr, KFD_FENCE_COMPLETED,
 +      amdkfd_fence_wait_timeout(dqm->fence_addr, KFD_FENCE_COMPLETED,
                                QUEUE_PREEMPT_DEFAULT_TIMEOUT_MS);
        pm_release_ib(&dqm->packets);
        dqm->active_runlist = false;
index 4cdcaf8361e1b3271133af8ccfbe9128515bea26,122eb5693ba191a7458a3496e6bb96b06aee1ac7..3db23007cdf469c8ee9271d23b25a4bbd078d2e6
@@@ -103,14 -103,15 +103,14 @@@ static const struct kgd2kfd_calls *kgd2
  bool radeon_kfd_init(void)
  {
  #if defined(CONFIG_HSA_AMD_MODULE)
 -      bool (*kgd2kfd_init_p)(unsigned, const struct kfd2kgd_calls*,
 -                              const struct kgd2kfd_calls**);
 +      bool (*kgd2kfd_init_p)(unsigned, const struct kgd2kfd_calls**);
  
        kgd2kfd_init_p = symbol_request(kgd2kfd_init);
  
        if (kgd2kfd_init_p == NULL)
                return false;
  
 -      if (!kgd2kfd_init_p(KFD_INTERFACE_VERSION, &kfd2kgd, &kgd2kfd)) {
 +      if (!kgd2kfd_init_p(KFD_INTERFACE_VERSION, &kgd2kfd)) {
                symbol_put(kgd2kfd_init);
                kgd2kfd = NULL;
  
  
        return true;
  #elif defined(CONFIG_HSA_AMD)
 -      if (!kgd2kfd_init(KFD_INTERFACE_VERSION, &kfd2kgd, &kgd2kfd)) {
 +      if (!kgd2kfd_init(KFD_INTERFACE_VERSION, &kgd2kfd)) {
                kgd2kfd = NULL;
  
                return false;
@@@ -142,8 -143,7 +142,8 @@@ void radeon_kfd_fini(void
  void radeon_kfd_device_probe(struct radeon_device *rdev)
  {
        if (kgd2kfd)
 -              rdev->kfd = kgd2kfd->probe((struct kgd_dev *)rdev, rdev->pdev);
 +              rdev->kfd = kgd2kfd->probe((struct kgd_dev *)rdev,
 +                      rdev->pdev, &kfd2kgd);
  }
  
  void radeon_kfd_device_init(struct radeon_device *rdev)
                        .compute_vmid_bitmap = 0xFF00,
  
                        .first_compute_pipe = 1,
-                       .compute_pipe_count = 8 - 1,
+                       .compute_pipe_count = 4 - 1,
                };
  
                radeon_doorbell_get_kfd_info(rdev,