Lines Matching refs:ib
128 * @ib: IB object to schedule
133 struct radeon_ib *ib)
135 struct radeon_ring *ring = &rdev->ring[ib->ring];
136 u32 extra_bits = (ib->vm ? ib->vm->ids[ib->ring].id : 0) & 0xf;
154 radeon_ring_write(ring, ib->gpu_addr & 0xffffffe0); /* base must be 32 byte aligned */
155 radeon_ring_write(ring, upper_32_bits(ib->gpu_addr));
156 radeon_ring_write(ring, ib->length_dw);
703 struct radeon_ib ib;
720 r = radeon_ib_get(rdev, ring->idx, &ib, NULL, 256);
722 DRM_ERROR("radeon: failed to get ib (%d).\n", r);
726 ib.ptr[0] = SDMA_PACKET(SDMA_OPCODE_WRITE, SDMA_WRITE_SUB_OPCODE_LINEAR, 0);
727 ib.ptr[1] = lower_32_bits(gpu_addr);
728 ib.ptr[2] = upper_32_bits(gpu_addr);
729 ib.ptr[3] = 1;
730 ib.ptr[4] = 0xDEADBEEF;
731 ib.length_dw = 5;
733 r = radeon_ib_schedule(rdev, &ib, NULL, false);
735 radeon_ib_free(rdev, &ib);
736 DRM_ERROR("radeon: failed to schedule ib (%d).\n", r);
739 r = radeon_fence_wait_timeout(ib.fence, false, usecs_to_jiffies(
756 DRM_INFO("ib test on ring %d succeeded in %u usecs\n", ib.fence->ring, i);
758 DRM_ERROR("radeon: ib test failed (0x%08X)\n", tmp);
761 radeon_ib_free(rdev, &ib);
795 * @ib: indirect buffer to fill with commands
803 struct radeon_ib *ib,
812 ib->ptr[ib->length_dw++] = SDMA_PACKET(SDMA_OPCODE_COPY,
814 ib->ptr[ib->length_dw++] = bytes;
815 ib->ptr[ib->length_dw++] = 0; /* src/dst endian swap */
816 ib->ptr[ib->length_dw++] = lower_32_bits(src);
817 ib->ptr[ib->length_dw++] = upper_32_bits(src);
818 ib->ptr[ib->length_dw++] = lower_32_bits(pe);
819 ib->ptr[ib->length_dw++] = upper_32_bits(pe);
831 * @ib: indirect buffer to fill with commands
841 struct radeon_ib *ib,
855 ib->ptr[ib->length_dw++] = SDMA_PACKET(SDMA_OPCODE_WRITE,
857 ib->ptr[ib->length_dw++] = pe;
858 ib->ptr[ib->length_dw++] = upper_32_bits(pe);
859 ib->ptr[ib->length_dw++] = ndw;
870 ib->ptr[ib->length_dw++] = value;
871 ib->ptr[ib->length_dw++] = upper_32_bits(value);
880 * @ib: indirect buffer to fill with commands
890 struct radeon_ib *ib,
909 ib->ptr[ib->length_dw++] = SDMA_PACKET(SDMA_OPCODE_GENERATE_PTE_PDE, 0, 0);
910 ib->ptr[ib->length_dw++] = pe; /* dst addr */
911 ib->ptr[ib->length_dw++] = upper_32_bits(pe);
912 ib->ptr[ib->length_dw++] = flags; /* mask */
913 ib->ptr[ib->length_dw++] = 0;
914 ib->ptr[ib->length_dw++] = value; /* value */
915 ib->ptr[ib->length_dw++] = upper_32_bits(value);
916 ib->ptr[ib->length_dw++] = incr; /* increment size */
917 ib->ptr[ib->length_dw++] = 0;
918 ib->ptr[ib->length_dw++] = ndw; /* number of entries */
929 * @ib: indirect buffer to fill with padding
932 void cik_sdma_vm_pad_ib(struct radeon_ib *ib)
934 while (ib->length_dw & 0x7)
935 ib->ptr[ib->length_dw++] = SDMA_PACKET(SDMA_OPCODE_NOP, 0, 0);