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://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6

* 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
drm/radeon/kms: add pci id to acer travelmate quirk for 5730
drm/radeon: fix order of doing things in radeon_crtc_cursor_set
drm: mm: fix debug output
drm/radeon/kms: ATPX switcheroo fixes
drm/nouveau: Fix a crash at card takedown for NV40 and older cards

+41 -13
+3 -3
drivers/gpu/drm/drm_mm.c
··· 431 431 void drm_mm_replace_node(struct drm_mm_node *old, struct drm_mm_node *new) 432 432 { 433 433 list_replace(&old->node_list, &new->node_list); 434 - list_replace(&old->node_list, &new->hole_stack); 434 + list_replace(&old->hole_stack, &new->hole_stack); 435 435 new->hole_follows = old->hole_follows; 436 436 new->mm = old->mm; 437 437 new->start = old->start; ··· 699 699 entry->size); 700 700 total_used += entry->size; 701 701 if (entry->hole_follows) { 702 - hole_start = drm_mm_hole_node_start(&mm->head_node); 703 - hole_end = drm_mm_hole_node_end(&mm->head_node); 702 + hole_start = drm_mm_hole_node_start(entry); 703 + hole_end = drm_mm_hole_node_end(entry); 704 704 hole_size = hole_end - hole_start; 705 705 seq_printf(m, "0x%08lx-0x%08lx: 0x%08lx: free\n", 706 706 hole_start, hole_end, hole_size);
-2
drivers/gpu/drm/nouveau/nouveau_mem.c
··· 152 152 { 153 153 struct drm_nouveau_private *dev_priv = dev->dev_private; 154 154 155 - nouveau_bo_ref(NULL, &dev_priv->vga_ram); 156 - 157 155 ttm_bo_device_release(&dev_priv->ttm.bdev); 158 156 159 157 nouveau_ttm_global_release(dev_priv);
+5
drivers/gpu/drm/nouveau/nouveau_state.c
··· 768 768 engine->mc.takedown(dev); 769 769 engine->display.late_takedown(dev); 770 770 771 + if (dev_priv->vga_ram) { 772 + nouveau_bo_unpin(dev_priv->vga_ram); 773 + nouveau_bo_ref(NULL, &dev_priv->vga_ram); 774 + } 775 + 771 776 mutex_lock(&dev->struct_mutex); 772 777 ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_VRAM); 773 778 ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_TT);
+2 -2
drivers/gpu/drm/radeon/radeon_atombios.c
··· 431 431 } 432 432 } 433 433 434 - /* Acer laptop (Acer TravelMate 5730G) has an HDMI port 434 + /* Acer laptop (Acer TravelMate 5730/5730G) has an HDMI port 435 435 * on the laptop and a DVI port on the docking station and 436 436 * both share the same encoder, hpd pin, and ddc line. 437 437 * So while the bios table is technically correct, ··· 440 440 * with different crtcs which isn't possible on the hardware 441 441 * side and leaves no crtcs for LVDS or VGA. 442 442 */ 443 - if ((dev->pdev->device == 0x95c4) && 443 + if (((dev->pdev->device == 0x95c4) || (dev->pdev->device == 0x9591)) && 444 444 (dev->pdev->subsystem_vendor == 0x1025) && 445 445 (dev->pdev->subsystem_device == 0x013c)) { 446 446 if ((*connector_type == DRM_MODE_CONNECTOR_DVII) &&
+27 -2
drivers/gpu/drm/radeon/radeon_atpx_handler.c
··· 15 15 #define ATPX_VERSION 0 16 16 #define ATPX_GPU_PWR 2 17 17 #define ATPX_MUX_SELECT 3 18 + #define ATPX_I2C_MUX_SELECT 4 19 + #define ATPX_SWITCH_START 5 20 + #define ATPX_SWITCH_END 6 18 21 19 22 #define ATPX_INTEGRATED 0 20 23 #define ATPX_DISCRETE 1 ··· 152 149 return radeon_atpx_execute(handle, ATPX_MUX_SELECT, mux_id); 153 150 } 154 151 152 + static int radeon_atpx_switch_i2c_mux(acpi_handle handle, int mux_id) 153 + { 154 + return radeon_atpx_execute(handle, ATPX_I2C_MUX_SELECT, mux_id); 155 + } 156 + 157 + static int radeon_atpx_switch_start(acpi_handle handle, int gpu_id) 158 + { 159 + return radeon_atpx_execute(handle, ATPX_SWITCH_START, gpu_id); 160 + } 161 + 162 + static int radeon_atpx_switch_end(acpi_handle handle, int gpu_id) 163 + { 164 + return radeon_atpx_execute(handle, ATPX_SWITCH_END, gpu_id); 165 + } 155 166 156 167 static int radeon_atpx_switchto(enum vga_switcheroo_client_id id) 157 168 { 169 + int gpu_id; 170 + 158 171 if (id == VGA_SWITCHEROO_IGD) 159 - radeon_atpx_switch_mux(radeon_atpx_priv.atpx_handle, 0); 172 + gpu_id = ATPX_INTEGRATED; 160 173 else 161 - radeon_atpx_switch_mux(radeon_atpx_priv.atpx_handle, 1); 174 + gpu_id = ATPX_DISCRETE; 175 + 176 + radeon_atpx_switch_start(radeon_atpx_priv.atpx_handle, gpu_id); 177 + radeon_atpx_switch_mux(radeon_atpx_priv.atpx_handle, gpu_id); 178 + radeon_atpx_switch_i2c_mux(radeon_atpx_priv.atpx_handle, gpu_id); 179 + radeon_atpx_switch_end(radeon_atpx_priv.atpx_handle, gpu_id); 180 + 162 181 return 0; 163 182 } 164 183
+3 -3
drivers/gpu/drm/radeon/radeon_cursor.c
··· 167 167 return -EINVAL; 168 168 } 169 169 170 - radeon_crtc->cursor_width = width; 171 - radeon_crtc->cursor_height = height; 172 - 173 170 obj = drm_gem_object_lookup(crtc->dev, file_priv, handle); 174 171 if (!obj) { 175 172 DRM_ERROR("Cannot find cursor object %x for crtc %d\n", handle, radeon_crtc->crtc_id); ··· 176 179 ret = radeon_gem_object_pin(obj, RADEON_GEM_DOMAIN_VRAM, &gpu_addr); 177 180 if (ret) 178 181 goto fail; 182 + 183 + radeon_crtc->cursor_width = width; 184 + radeon_crtc->cursor_height = height; 179 185 180 186 radeon_lock_cursor(crtc, true); 181 187 /* XXX only 27 bit offset for legacy cursor */
+1 -1
include/drm/drm_mm.h
··· 86 86 } 87 87 #define drm_mm_for_each_node(entry, mm) list_for_each_entry(entry, \ 88 88 &(mm)->head_node.node_list, \ 89 - node_list); 89 + node_list) 90 90 #define drm_mm_for_each_scanned_node_reverse(entry, n, mm) \ 91 91 for (entry = (mm)->prev_scanned_node, \ 92 92 next = entry ? list_entry(entry->node_list.next, \