Commit 236f651bf79ab7d521bdacf4753ddd0764334980

Authored by Dave Airlie

Merge branch 'drm-fixes-3.9' of git://people.freedesktop.org/~agd5f/linux into drm-next

Alex writes:
"Mostly just small bug fixes.  Big change is new pci ids
for Richland APUs."

* 'drm-fixes-3.9' of git://people.freedesktop.org/~agd5f/linux:
  drm/radeon: add Richland pci ids
  drm/radeon: add support for Richland APUs
  drm/radeon/benchmark: allow same domains for dma copy
  drm/radeon/benchmark: make sure bo blit copy exists before using it
  drm/radeon: fix backend map setup on 1 RB trinity boards
  drm/radeon: fix S/R on VM systems (cayman/TN/SI)

Showing 4 changed files Side-by-side Diff

drivers/gpu/drm/radeon/ni.c
... ... @@ -468,13 +468,19 @@
468 468 (rdev->pdev->device == 0x9907) ||
469 469 (rdev->pdev->device == 0x9908) ||
470 470 (rdev->pdev->device == 0x9909) ||
  471 + (rdev->pdev->device == 0x990B) ||
  472 + (rdev->pdev->device == 0x990C) ||
  473 + (rdev->pdev->device == 0x990F) ||
471 474 (rdev->pdev->device == 0x9910) ||
472   - (rdev->pdev->device == 0x9917)) {
  475 + (rdev->pdev->device == 0x9917) ||
  476 + (rdev->pdev->device == 0x9999)) {
473 477 rdev->config.cayman.max_simds_per_se = 6;
474 478 rdev->config.cayman.max_backends_per_se = 2;
475 479 } else if ((rdev->pdev->device == 0x9903) ||
476 480 (rdev->pdev->device == 0x9904) ||
477 481 (rdev->pdev->device == 0x990A) ||
  482 + (rdev->pdev->device == 0x990D) ||
  483 + (rdev->pdev->device == 0x990E) ||
478 484 (rdev->pdev->device == 0x9913) ||
479 485 (rdev->pdev->device == 0x9918)) {
480 486 rdev->config.cayman.max_simds_per_se = 4;
... ... @@ -483,6 +489,9 @@
483 489 (rdev->pdev->device == 0x9990) ||
484 490 (rdev->pdev->device == 0x9991) ||
485 491 (rdev->pdev->device == 0x9994) ||
  492 + (rdev->pdev->device == 0x9995) ||
  493 + (rdev->pdev->device == 0x9996) ||
  494 + (rdev->pdev->device == 0x999A) ||
486 495 (rdev->pdev->device == 0x99A0)) {
487 496 rdev->config.cayman.max_simds_per_se = 3;
488 497 rdev->config.cayman.max_backends_per_se = 1;
... ... @@ -616,11 +625,22 @@
616 625 WREG32(DMA_TILING_CONFIG + DMA0_REGISTER_OFFSET, gb_addr_config);
617 626 WREG32(DMA_TILING_CONFIG + DMA1_REGISTER_OFFSET, gb_addr_config);
618 627  
619   - tmp = gb_addr_config & NUM_PIPES_MASK;
620   - tmp = r6xx_remap_render_backend(rdev, tmp,
621   - rdev->config.cayman.max_backends_per_se *
622   - rdev->config.cayman.max_shader_engines,
623   - CAYMAN_MAX_BACKENDS, disabled_rb_mask);
  628 + if ((rdev->config.cayman.max_backends_per_se == 1) &&
  629 + (rdev->flags & RADEON_IS_IGP)) {
  630 + if ((disabled_rb_mask & 3) == 1) {
  631 + /* RB0 disabled, RB1 enabled */
  632 + tmp = 0x11111111;
  633 + } else {
  634 + /* RB1 disabled, RB0 enabled */
  635 + tmp = 0x00000000;
  636 + }
  637 + } else {
  638 + tmp = gb_addr_config & NUM_PIPES_MASK;
  639 + tmp = r6xx_remap_render_backend(rdev, tmp,
  640 + rdev->config.cayman.max_backends_per_se *
  641 + rdev->config.cayman.max_shader_engines,
  642 + CAYMAN_MAX_BACKENDS, disabled_rb_mask);
  643 + }
624 644 WREG32(GB_BACKEND_MAP, tmp);
625 645  
626 646 cgts_tcc_disable = 0xffff0000;
... ... @@ -1771,6 +1791,7 @@
1771 1791 int cayman_suspend(struct radeon_device *rdev)
1772 1792 {
1773 1793 r600_audio_fini(rdev);
  1794 + radeon_vm_manager_fini(rdev);
1774 1795 cayman_cp_enable(rdev, false);
1775 1796 cayman_dma_stop(rdev);
1776 1797 evergreen_irq_suspend(rdev);
drivers/gpu/drm/radeon/radeon_benchmark.c
... ... @@ -122,10 +122,7 @@
122 122 goto out_cleanup;
123 123 }
124 124  
125   - /* r100 doesn't have dma engine so skip the test */
126   - /* also, VRAM-to-VRAM test doesn't make much sense for DMA */
127   - /* skip it as well if domains are the same */
128   - if ((rdev->asic->copy.dma) && (sdomain != ddomain)) {
  125 + if (rdev->asic->copy.dma) {
129 126 time = radeon_benchmark_do_move(rdev, size, saddr, daddr,
130 127 RADEON_BENCHMARK_COPY_DMA, n);
131 128 if (time < 0)
... ... @@ -135,13 +132,15 @@
135 132 sdomain, ddomain, "dma");
136 133 }
137 134  
138   - time = radeon_benchmark_do_move(rdev, size, saddr, daddr,
139   - RADEON_BENCHMARK_COPY_BLIT, n);
140   - if (time < 0)
141   - goto out_cleanup;
142   - if (time > 0)
143   - radeon_benchmark_log_results(n, size, time,
144   - sdomain, ddomain, "blit");
  135 + if (rdev->asic->copy.blit) {
  136 + time = radeon_benchmark_do_move(rdev, size, saddr, daddr,
  137 + RADEON_BENCHMARK_COPY_BLIT, n);
  138 + if (time < 0)
  139 + goto out_cleanup;
  140 + if (time > 0)
  141 + radeon_benchmark_log_results(n, size, time,
  142 + sdomain, ddomain, "blit");
  143 + }
145 144  
146 145 out_cleanup:
147 146 if (sobj) {
drivers/gpu/drm/radeon/si.c
... ... @@ -4469,6 +4469,7 @@
4469 4469  
4470 4470 int si_suspend(struct radeon_device *rdev)
4471 4471 {
  4472 + radeon_vm_manager_fini(rdev);
4472 4473 si_cp_enable(rdev, false);
4473 4474 cayman_dma_stop(rdev);
4474 4475 si_irq_suspend(rdev);
include/drm/drm_pciids.h
... ... @@ -581,7 +581,11 @@
581 581 {0x1002, 0x9908, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
582 582 {0x1002, 0x9909, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
583 583 {0x1002, 0x990A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
584   - {0x1002, 0x990F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
  584 + {0x1002, 0x990B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
  585 + {0x1002, 0x990C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
  586 + {0x1002, 0x990D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
  587 + {0x1002, 0x990E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
  588 + {0x1002, 0x990F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
585 589 {0x1002, 0x9910, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
586 590 {0x1002, 0x9913, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
587 591 {0x1002, 0x9917, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
... ... @@ -592,6 +596,13 @@
592 596 {0x1002, 0x9992, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
593 597 {0x1002, 0x9993, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
594 598 {0x1002, 0x9994, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
  599 + {0x1002, 0x9995, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
  600 + {0x1002, 0x9996, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
  601 + {0x1002, 0x9997, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
  602 + {0x1002, 0x9998, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
  603 + {0x1002, 0x9999, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
  604 + {0x1002, 0x999A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
  605 + {0x1002, 0x999B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
595 606 {0x1002, 0x99A0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
596 607 {0x1002, 0x99A2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
597 608 {0x1002, 0x99A4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \