]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/radeon/si.c
Merge branch 'linus' into perf/urgent
[karo-tx-linux.git] / drivers / gpu / drm / radeon / si.c
index 27bda986fc2bd8a6ad948d19e819bb1e8ec415df..549732e56ca959b0f07d4ce32f0ff0af0e480ab1 100644 (file)
@@ -2217,8 +2217,6 @@ bool si_gpu_is_lockup(struct radeon_device *rdev, struct radeon_ring *ring)
        u32 srbm_status;
        u32 grbm_status, grbm_status2;
        u32 grbm_status_se0, grbm_status_se1;
-       struct r100_gpu_lockup *lockup = &rdev->config.si.lockup;
-       int r;
 
        srbm_status = RREG32(SRBM_STATUS);
        grbm_status = RREG32(GRBM_STATUS);
@@ -2226,20 +2224,12 @@ bool si_gpu_is_lockup(struct radeon_device *rdev, struct radeon_ring *ring)
        grbm_status_se0 = RREG32(GRBM_STATUS_SE0);
        grbm_status_se1 = RREG32(GRBM_STATUS_SE1);
        if (!(grbm_status & GUI_ACTIVE)) {
-               r100_gpu_lockup_update(lockup, ring);
+               radeon_ring_lockup_update(ring);
                return false;
        }
        /* force CP activities */
-       r = radeon_ring_lock(rdev, ring, 2);
-       if (!r) {
-               /* PACKET2 NOP */
-               radeon_ring_write(ring, 0x80000000);
-               radeon_ring_write(ring, 0x80000000);
-               radeon_ring_unlock_commit(rdev, ring);
-       }
-       /* XXX deal with CP0,1,2 */
-       ring->rptr = RREG32(ring->rptr_reg);
-       return r100_gpu_cp_is_lockup(rdev, lockup, ring);
+       radeon_ring_force_activity(rdev, ring);
+       return radeon_ring_test_lockup(rdev, ring);
 }
 
 static int si_gpu_soft_reset(struct radeon_device *rdev)
@@ -2275,6 +2265,7 @@ static int si_gpu_soft_reset(struct radeon_device *rdev)
                      SOFT_RESET_GDS |
                      SOFT_RESET_PA |
                      SOFT_RESET_SC |
+                     SOFT_RESET_BCI |
                      SOFT_RESET_SPI |
                      SOFT_RESET_SX |
                      SOFT_RESET_TC |
@@ -2985,7 +2976,8 @@ int si_rlc_init(struct radeon_device *rdev)
        /* save restore block */
        if (rdev->rlc.save_restore_obj == NULL) {
                r = radeon_bo_create(rdev, RADEON_GPU_PAGE_SIZE, PAGE_SIZE, true,
-                               RADEON_GEM_DOMAIN_VRAM, &rdev->rlc.save_restore_obj);
+                                    RADEON_GEM_DOMAIN_VRAM, NULL,
+                                    &rdev->rlc.save_restore_obj);
                if (r) {
                        dev_warn(rdev->dev, "(%d) create RLC sr bo failed\n", r);
                        return r;
@@ -3009,7 +3001,8 @@ int si_rlc_init(struct radeon_device *rdev)
        /* clear state block */
        if (rdev->rlc.clear_state_obj == NULL) {
                r = radeon_bo_create(rdev, RADEON_GPU_PAGE_SIZE, PAGE_SIZE, true,
-                               RADEON_GEM_DOMAIN_VRAM, &rdev->rlc.clear_state_obj);
+                                    RADEON_GEM_DOMAIN_VRAM, NULL,
+                                    &rdev->rlc.clear_state_obj);
                if (r) {
                        dev_warn(rdev->dev, "(%d) create RLC c bo failed\n", r);
                        si_rlc_fini(rdev);
@@ -3216,6 +3209,8 @@ static int si_irq_init(struct radeon_device *rdev)
        /* force the active interrupt state to all disabled */
        si_disable_interrupt_state(rdev);
 
+       pci_set_master(rdev->pdev);
+
        /* enable irqs */
        si_enable_interrupts(rdev);
 
@@ -3994,10 +3989,6 @@ int si_init(struct radeon_device *rdev)
        struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
        int r;
 
-       /* This don't do much */
-       r = radeon_gem_init(rdev);
-       if (r)
-               return r;
        /* Read BIOS */
        if (!radeon_get_bios(rdev)) {
                if (ASIC_IS_AVIVO(rdev))
@@ -4117,7 +4108,6 @@ void si_fini(struct radeon_device *rdev)
        si_pcie_gart_fini(rdev);
        r600_vram_scratch_fini(rdev);
        radeon_gem_fini(rdev);
-       radeon_semaphore_driver_fini(rdev);
        radeon_fence_driver_fini(rdev);
        radeon_bo_fini(rdev);
        radeon_atombios_fini(rdev);