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 == 0x9907) ||
|
||||||
(rdev->pdev->device == 0x9908) ||
|
(rdev->pdev->device == 0x9908) ||
|
||||||
(rdev->pdev->device == 0x9909) ||
|
(rdev->pdev->device == 0x9909) ||
|
||||||
|
(rdev->pdev->device == 0x990B) ||
|
||||||
|
(rdev->pdev->device == 0x990C) ||
|
||||||
|
(rdev->pdev->device == 0x990F) ||
|
||||||
(rdev->pdev->device == 0x9910) ||
|
(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_simds_per_se = 6;
|
||||||
rdev->config.cayman.max_backends_per_se = 2;
|
rdev->config.cayman.max_backends_per_se = 2;
|
||||||
} else if ((rdev->pdev->device == 0x9903) ||
|
} else if ((rdev->pdev->device == 0x9903) ||
|
||||||
(rdev->pdev->device == 0x9904) ||
|
(rdev->pdev->device == 0x9904) ||
|
||||||
(rdev->pdev->device == 0x990A) ||
|
(rdev->pdev->device == 0x990A) ||
|
||||||
|
(rdev->pdev->device == 0x990D) ||
|
||||||
|
(rdev->pdev->device == 0x990E) ||
|
||||||
(rdev->pdev->device == 0x9913) ||
|
(rdev->pdev->device == 0x9913) ||
|
||||||
(rdev->pdev->device == 0x9918)) {
|
(rdev->pdev->device == 0x9918)) {
|
||||||
rdev->config.cayman.max_simds_per_se = 4;
|
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 == 0x9990) ||
|
||||||
(rdev->pdev->device == 0x9991) ||
|
(rdev->pdev->device == 0x9991) ||
|
||||||
(rdev->pdev->device == 0x9994) ||
|
(rdev->pdev->device == 0x9994) ||
|
||||||
|
(rdev->pdev->device == 0x9995) ||
|
||||||
|
(rdev->pdev->device == 0x9996) ||
|
||||||
|
(rdev->pdev->device == 0x999A) ||
|
||||||
(rdev->pdev->device == 0x99A0)) {
|
(rdev->pdev->device == 0x99A0)) {
|
||||||
rdev->config.cayman.max_simds_per_se = 3;
|
rdev->config.cayman.max_simds_per_se = 3;
|
||||||
rdev->config.cayman.max_backends_per_se = 1;
|
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 + DMA0_REGISTER_OFFSET, gb_addr_config);
|
||||||
WREG32(DMA_TILING_CONFIG + DMA1_REGISTER_OFFSET, gb_addr_config);
|
WREG32(DMA_TILING_CONFIG + DMA1_REGISTER_OFFSET, gb_addr_config);
|
||||||
|
|
||||||
tmp = gb_addr_config & NUM_PIPES_MASK;
|
if ((rdev->config.cayman.max_backends_per_se == 1) &&
|
||||||
tmp = r6xx_remap_render_backend(rdev, tmp,
|
(rdev->flags & RADEON_IS_IGP)) {
|
||||||
rdev->config.cayman.max_backends_per_se *
|
if ((disabled_rb_mask & 3) == 1) {
|
||||||
rdev->config.cayman.max_shader_engines,
|
/* RB0 disabled, RB1 enabled */
|
||||||
CAYMAN_MAX_BACKENDS, disabled_rb_mask);
|
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);
|
WREG32(GB_BACKEND_MAP, tmp);
|
||||||
|
|
||||||
cgts_tcc_disable = 0xffff0000;
|
cgts_tcc_disable = 0xffff0000;
|
||||||
@ -1771,6 +1791,7 @@ int cayman_resume(struct radeon_device *rdev)
|
|||||||
int cayman_suspend(struct radeon_device *rdev)
|
int cayman_suspend(struct radeon_device *rdev)
|
||||||
{
|
{
|
||||||
r600_audio_fini(rdev);
|
r600_audio_fini(rdev);
|
||||||
|
radeon_vm_manager_fini(rdev);
|
||||||
cayman_cp_enable(rdev, false);
|
cayman_cp_enable(rdev, false);
|
||||||
cayman_dma_stop(rdev);
|
cayman_dma_stop(rdev);
|
||||||
evergreen_irq_suspend(rdev);
|
evergreen_irq_suspend(rdev);
|
||||||
|
@ -122,10 +122,7 @@ static void radeon_benchmark_move(struct radeon_device *rdev, unsigned size,
|
|||||||
goto out_cleanup;
|
goto out_cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* r100 doesn't have dma engine so skip the test */
|
if (rdev->asic->copy.dma) {
|
||||||
/* 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)) {
|
|
||||||
time = radeon_benchmark_do_move(rdev, size, saddr, daddr,
|
time = radeon_benchmark_do_move(rdev, size, saddr, daddr,
|
||||||
RADEON_BENCHMARK_COPY_DMA, n);
|
RADEON_BENCHMARK_COPY_DMA, n);
|
||||||
if (time < 0)
|
if (time < 0)
|
||||||
@ -135,13 +132,15 @@ static void radeon_benchmark_move(struct radeon_device *rdev, unsigned size,
|
|||||||
sdomain, ddomain, "dma");
|
sdomain, ddomain, "dma");
|
||||||
}
|
}
|
||||||
|
|
||||||
time = radeon_benchmark_do_move(rdev, size, saddr, daddr,
|
if (rdev->asic->copy.blit) {
|
||||||
RADEON_BENCHMARK_COPY_BLIT, n);
|
time = radeon_benchmark_do_move(rdev, size, saddr, daddr,
|
||||||
if (time < 0)
|
RADEON_BENCHMARK_COPY_BLIT, n);
|
||||||
goto out_cleanup;
|
if (time < 0)
|
||||||
if (time > 0)
|
goto out_cleanup;
|
||||||
radeon_benchmark_log_results(n, size, time,
|
if (time > 0)
|
||||||
sdomain, ddomain, "blit");
|
radeon_benchmark_log_results(n, size, time,
|
||||||
|
sdomain, ddomain, "blit");
|
||||||
|
}
|
||||||
|
|
||||||
out_cleanup:
|
out_cleanup:
|
||||||
if (sobj) {
|
if (sobj) {
|
||||||
|
@ -4469,6 +4469,7 @@ int si_resume(struct radeon_device *rdev)
|
|||||||
|
|
||||||
int si_suspend(struct radeon_device *rdev)
|
int si_suspend(struct radeon_device *rdev)
|
||||||
{
|
{
|
||||||
|
radeon_vm_manager_fini(rdev);
|
||||||
si_cp_enable(rdev, false);
|
si_cp_enable(rdev, false);
|
||||||
cayman_dma_stop(rdev);
|
cayman_dma_stop(rdev);
|
||||||
si_irq_suspend(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, 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, 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, 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, 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, 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}, \
|
{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, 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, 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, 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, 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, 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}, \
|
{0x1002, 0x99A4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||||
|
Loading…
Reference in New Issue
Block a user