Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux

Pull intel and dp mst drm fixes from Dave Airlie:
"Intel had a few more fixes lined up and no point me sitting on them,
along with a DP MST fix from Rob for a race at undock + vt switch"

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
drm: fix fb-helper vs MST dangling connector ptrs (v2)
drm/i915: BDW Fix Halo PCI IDs marked as ULT.
drm/i915: Fix and clean BDW PCH identification
drm/i915: Only fence tiled region of object.
drm/i915: fix inconsistent brightness after resume
drm/i915: Init PPGTT before context enable

+49 -26
+30
drivers/gpu/drm/drm_fb_helper.c
··· 145 145 } 146 146 EXPORT_SYMBOL(drm_fb_helper_add_one_connector); 147 147 148 + static void remove_from_modeset(struct drm_mode_set *set, 149 + struct drm_connector *connector) 150 + { 151 + int i, j; 152 + 153 + for (i = 0; i < set->num_connectors; i++) { 154 + if (set->connectors[i] == connector) 155 + break; 156 + } 157 + 158 + if (i == set->num_connectors) 159 + return; 160 + 161 + for (j = i + 1; j < set->num_connectors; j++) { 162 + set->connectors[j - 1] = set->connectors[j]; 163 + } 164 + set->num_connectors--; 165 + 166 + /* because i915 is pissy about this.. 167 + * TODO maybe need to makes sure we set it back to !=NULL somewhere? 168 + */ 169 + if (set->num_connectors == 0) 170 + set->fb = NULL; 171 + } 172 + 148 173 int drm_fb_helper_remove_one_connector(struct drm_fb_helper *fb_helper, 149 174 struct drm_connector *connector) 150 175 { ··· 192 167 } 193 168 fb_helper->connector_count--; 194 169 kfree(fb_helper_connector); 170 + 171 + /* also cleanup dangling references to the connector: */ 172 + for (i = 0; i < fb_helper->crtc_count; i++) 173 + remove_from_modeset(&fb_helper->crtc_info[i].mode_set, connector); 174 + 195 175 return 0; 196 176 } 197 177 EXPORT_SYMBOL(drm_fb_helper_remove_one_connector);
+4 -10
drivers/gpu/drm/i915/i915_drv.c
··· 462 462 } else if (id == INTEL_PCH_LPT_DEVICE_ID_TYPE) { 463 463 dev_priv->pch_type = PCH_LPT; 464 464 DRM_DEBUG_KMS("Found LynxPoint PCH\n"); 465 - WARN_ON(!IS_HASWELL(dev)); 466 - WARN_ON(IS_HSW_ULT(dev)); 467 - } else if (IS_BROADWELL(dev)) { 468 - dev_priv->pch_type = PCH_LPT; 469 - dev_priv->pch_id = 470 - INTEL_PCH_LPT_LP_DEVICE_ID_TYPE; 471 - DRM_DEBUG_KMS("This is Broadwell, assuming " 472 - "LynxPoint LP PCH\n"); 465 + WARN_ON(!IS_HASWELL(dev) && !IS_BROADWELL(dev)); 466 + WARN_ON(IS_HSW_ULT(dev) || IS_BDW_ULT(dev)); 473 467 } else if (id == INTEL_PCH_LPT_LP_DEVICE_ID_TYPE) { 474 468 dev_priv->pch_type = PCH_LPT; 475 469 DRM_DEBUG_KMS("Found LynxPoint LP PCH\n"); 476 - WARN_ON(!IS_HASWELL(dev)); 477 - WARN_ON(!IS_HSW_ULT(dev)); 470 + WARN_ON(!IS_HASWELL(dev) && !IS_BROADWELL(dev)); 471 + WARN_ON(!IS_HSW_ULT(dev) && !IS_BDW_ULT(dev)); 478 472 } else if (id == INTEL_PCH_SPT_DEVICE_ID_TYPE) { 479 473 dev_priv->pch_type = PCH_SPT; 480 474 DRM_DEBUG_KMS("Found SunrisePoint PCH\n");
+1 -2
drivers/gpu/drm/i915/i915_drv.h
··· 2159 2159 #define IS_HSW_EARLY_SDV(dev) (IS_HASWELL(dev) && \ 2160 2160 (INTEL_DEVID(dev) & 0xFF00) == 0x0C00) 2161 2161 #define IS_BDW_ULT(dev) (IS_BROADWELL(dev) && \ 2162 - ((INTEL_DEVID(dev) & 0xf) == 0x2 || \ 2163 - (INTEL_DEVID(dev) & 0xf) == 0x6 || \ 2162 + ((INTEL_DEVID(dev) & 0xf) == 0x6 || \ 2164 2163 (INTEL_DEVID(dev) & 0xf) == 0xe)) 2165 2164 #define IS_BDW_GT3(dev) (IS_BROADWELL(dev) && \ 2166 2165 (INTEL_DEVID(dev) & 0x00F0) == 0x0020)
+13 -13
drivers/gpu/drm/i915/i915_gem.c
··· 3148 3148 u32 size = i915_gem_obj_ggtt_size(obj); 3149 3149 uint64_t val; 3150 3150 3151 + /* Adjust fence size to match tiled area */ 3152 + if (obj->tiling_mode != I915_TILING_NONE) { 3153 + uint32_t row_size = obj->stride * 3154 + (obj->tiling_mode == I915_TILING_Y ? 32 : 8); 3155 + size = (size / row_size) * row_size; 3156 + } 3157 + 3151 3158 val = (uint64_t)((i915_gem_obj_ggtt_offset(obj) + size - 4096) & 3152 3159 0xfffff000) << 32; 3153 3160 val |= i915_gem_obj_ggtt_offset(obj) & 0xfffff000; ··· 4891 4884 for (i = 0; i < NUM_L3_SLICES(dev); i++) 4892 4885 i915_gem_l3_remap(&dev_priv->ring[RCS], i); 4893 4886 4894 - /* 4895 - * XXX: Contexts should only be initialized once. Doing a switch to the 4896 - * default context switch however is something we'd like to do after 4897 - * reset or thaw (the latter may not actually be necessary for HW, but 4898 - * goes with our code better). Context switching requires rings (for 4899 - * the do_switch), but before enabling PPGTT. So don't move this. 4900 - */ 4887 + ret = i915_ppgtt_init_hw(dev); 4888 + if (ret && ret != -EIO) { 4889 + DRM_ERROR("PPGTT enable failed %d\n", ret); 4890 + i915_gem_cleanup_ringbuffer(dev); 4891 + } 4892 + 4901 4893 ret = i915_gem_context_enable(dev_priv); 4902 4894 if (ret && ret != -EIO) { 4903 4895 DRM_ERROR("Context enable failed %d\n", ret); 4904 4896 i915_gem_cleanup_ringbuffer(dev); 4905 4897 4906 4898 return ret; 4907 - } 4908 - 4909 - ret = i915_ppgtt_init_hw(dev); 4910 - if (ret && ret != -EIO) { 4911 - DRM_ERROR("PPGTT enable failed %d\n", ret); 4912 - i915_gem_cleanup_ringbuffer(dev); 4913 4899 } 4914 4900 4915 4901 return ret;
+1 -1
drivers/gpu/drm/i915/intel_panel.c
··· 962 962 963 963 WARN_ON(panel->backlight.max == 0); 964 964 965 - if (panel->backlight.level == 0) { 965 + if (panel->backlight.level <= panel->backlight.min) { 966 966 panel->backlight.level = panel->backlight.max; 967 967 if (panel->backlight.device) 968 968 panel->backlight.device->props.brightness =