mirror of https://gitee.com/openkylin/linux.git
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)
This commit is contained in:
commit
236f651bf7
|
@ -468,13 +468,19 @@ static void cayman_gpu_init(struct radeon_device *rdev)
|
|||
(rdev->pdev->device == 0x9907) ||
|
||||
(rdev->pdev->device == 0x9908) ||
|
||||
(rdev->pdev->device == 0x9909) ||
|
||||
(rdev->pdev->device == 0x990B) ||
|
||||
(rdev->pdev->device == 0x990C) ||
|
||||
(rdev->pdev->device == 0x990F) ||
|
||||
(rdev->pdev->device == 0x9910) ||
|
||||
(rdev->pdev->device == 0x9917)) {
|
||||
(rdev->pdev->device == 0x9917) ||
|
||||
(rdev->pdev->device == 0x9999)) {
|
||||
rdev->config.cayman.max_simds_per_se = 6;
|
||||
rdev->config.cayman.max_backends_per_se = 2;
|
||||
} else if ((rdev->pdev->device == 0x9903) ||
|
||||
(rdev->pdev->device == 0x9904) ||
|
||||
(rdev->pdev->device == 0x990A) ||
|
||||
(rdev->pdev->device == 0x990D) ||
|
||||
(rdev->pdev->device == 0x990E) ||
|
||||
(rdev->pdev->device == 0x9913) ||
|
||||
(rdev->pdev->device == 0x9918)) {
|
||||
rdev->config.cayman.max_simds_per_se = 4;
|
||||
|
@ -483,6 +489,9 @@ static void cayman_gpu_init(struct radeon_device *rdev)
|
|||
(rdev->pdev->device == 0x9990) ||
|
||||
(rdev->pdev->device == 0x9991) ||
|
||||
(rdev->pdev->device == 0x9994) ||
|
||||
(rdev->pdev->device == 0x9995) ||
|
||||
(rdev->pdev->device == 0x9996) ||
|
||||
(rdev->pdev->device == 0x999A) ||
|
||||
(rdev->pdev->device == 0x99A0)) {
|
||||
rdev->config.cayman.max_simds_per_se = 3;
|
||||
rdev->config.cayman.max_backends_per_se = 1;
|
||||
|
@ -616,11 +625,22 @@ static void cayman_gpu_init(struct radeon_device *rdev)
|
|||
WREG32(DMA_TILING_CONFIG + DMA0_REGISTER_OFFSET, gb_addr_config);
|
||||
WREG32(DMA_TILING_CONFIG + DMA1_REGISTER_OFFSET, gb_addr_config);
|
||||
|
||||
tmp = gb_addr_config & NUM_PIPES_MASK;
|
||||
tmp = r6xx_remap_render_backend(rdev, tmp,
|
||||
rdev->config.cayman.max_backends_per_se *
|
||||
rdev->config.cayman.max_shader_engines,
|
||||
CAYMAN_MAX_BACKENDS, disabled_rb_mask);
|
||||
if ((rdev->config.cayman.max_backends_per_se == 1) &&
|
||||
(rdev->flags & RADEON_IS_IGP)) {
|
||||
if ((disabled_rb_mask & 3) == 1) {
|
||||
/* RB0 disabled, RB1 enabled */
|
||||
tmp = 0x11111111;
|
||||
} else {
|
||||
/* RB1 disabled, RB0 enabled */
|
||||
tmp = 0x00000000;
|
||||
}
|
||||
} else {
|
||||
tmp = gb_addr_config & NUM_PIPES_MASK;
|
||||
tmp = r6xx_remap_render_backend(rdev, tmp,
|
||||
rdev->config.cayman.max_backends_per_se *
|
||||
rdev->config.cayman.max_shader_engines,
|
||||
CAYMAN_MAX_BACKENDS, disabled_rb_mask);
|
||||
}
|
||||
WREG32(GB_BACKEND_MAP, tmp);
|
||||
|
||||
cgts_tcc_disable = 0xffff0000;
|
||||
|
@ -1771,6 +1791,7 @@ int cayman_resume(struct radeon_device *rdev)
|
|||
int cayman_suspend(struct radeon_device *rdev)
|
||||
{
|
||||
r600_audio_fini(rdev);
|
||||
radeon_vm_manager_fini(rdev);
|
||||
cayman_cp_enable(rdev, false);
|
||||
cayman_dma_stop(rdev);
|
||||
evergreen_irq_suspend(rdev);
|
||||
|
|
|
@ -122,10 +122,7 @@ static void radeon_benchmark_move(struct radeon_device *rdev, unsigned size,
|
|||
goto out_cleanup;
|
||||
}
|
||||
|
||||
/* r100 doesn't have dma engine so skip the test */
|
||||
/* also, VRAM-to-VRAM test doesn't make much sense for DMA */
|
||||
/* skip it as well if domains are the same */
|
||||
if ((rdev->asic->copy.dma) && (sdomain != ddomain)) {
|
||||
if (rdev->asic->copy.dma) {
|
||||
time = radeon_benchmark_do_move(rdev, size, saddr, daddr,
|
||||
RADEON_BENCHMARK_COPY_DMA, n);
|
||||
if (time < 0)
|
||||
|
@ -135,13 +132,15 @@ static void radeon_benchmark_move(struct radeon_device *rdev, unsigned size,
|
|||
sdomain, ddomain, "dma");
|
||||
}
|
||||
|
||||
time = radeon_benchmark_do_move(rdev, size, saddr, daddr,
|
||||
RADEON_BENCHMARK_COPY_BLIT, n);
|
||||
if (time < 0)
|
||||
goto out_cleanup;
|
||||
if (time > 0)
|
||||
radeon_benchmark_log_results(n, size, time,
|
||||
sdomain, ddomain, "blit");
|
||||
if (rdev->asic->copy.blit) {
|
||||
time = radeon_benchmark_do_move(rdev, size, saddr, daddr,
|
||||
RADEON_BENCHMARK_COPY_BLIT, n);
|
||||
if (time < 0)
|
||||
goto out_cleanup;
|
||||
if (time > 0)
|
||||
radeon_benchmark_log_results(n, size, time,
|
||||
sdomain, ddomain, "blit");
|
||||
}
|
||||
|
||||
out_cleanup:
|
||||
if (sobj) {
|
||||
|
|
|
@ -4469,6 +4469,7 @@ int si_resume(struct radeon_device *rdev)
|
|||
|
||||
int si_suspend(struct radeon_device *rdev)
|
||||
{
|
||||
radeon_vm_manager_fini(rdev);
|
||||
si_cp_enable(rdev, false);
|
||||
cayman_dma_stop(rdev);
|
||||
si_irq_suspend(rdev);
|
||||
|
|
|
@ -581,7 +581,11 @@
|
|||
{0x1002, 0x9908, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x9909, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x990A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x990F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x990B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x990C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x990D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x990E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x990F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x9910, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x9913, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x9917, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
|
@ -592,6 +596,13 @@
|
|||
{0x1002, 0x9992, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x9993, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x9994, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x9995, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x9996, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x9997, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x9998, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x9999, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x999A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x999B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x99A0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x99A2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x99A4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
|
|
Loading…
Reference in New Issue