Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f2e39221 authored by Jerome Glisse's avatar Jerome Glisse Committed by Dave Airlie
Browse files

drm/radeon: make the ib an inline object



No need to malloc it any more.

Signed-off-by: default avatarJerome Glisse <jglisse@redhat.com>
Signed-off-by: default avatarChristian König <deathsimple@vodafone.de>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent f237750f
Loading
Loading
Loading
Loading
+5 −5
Original line number Original line Diff line number Diff line
@@ -1057,7 +1057,7 @@ static int evergreen_cs_packet_parse_vline(struct radeon_cs_parser *p)
	uint32_t header, h_idx, reg, wait_reg_mem_info;
	uint32_t header, h_idx, reg, wait_reg_mem_info;
	volatile uint32_t *ib;
	volatile uint32_t *ib;


	ib = p->ib->ptr;
	ib = p->ib.ptr;


	/* parse the WAIT_REG_MEM */
	/* parse the WAIT_REG_MEM */
	r = evergreen_cs_packet_parse(p, &wait_reg_mem, p->idx);
	r = evergreen_cs_packet_parse(p, &wait_reg_mem, p->idx);
@@ -1215,7 +1215,7 @@ static int evergreen_cs_check_reg(struct radeon_cs_parser *p, u32 reg, u32 idx)
		if (!(evergreen_reg_safe_bm[i] & m))
		if (!(evergreen_reg_safe_bm[i] & m))
			return 0;
			return 0;
	}
	}
	ib = p->ib->ptr;
	ib = p->ib.ptr;
	switch (reg) {
	switch (reg) {
	/* force following reg to 0 in an attempt to disable out buffer
	/* force following reg to 0 in an attempt to disable out buffer
	 * which will need us to better understand how it works to perform
	 * which will need us to better understand how it works to perform
@@ -1896,7 +1896,7 @@ static int evergreen_packet3_check(struct radeon_cs_parser *p,
	u32 idx_value;
	u32 idx_value;


	track = (struct evergreen_cs_track *)p->track;
	track = (struct evergreen_cs_track *)p->track;
	ib = p->ib->ptr;
	ib = p->ib.ptr;
	idx = pkt->idx + 1;
	idx = pkt->idx + 1;
	idx_value = radeon_get_ib_value(p, idx);
	idx_value = radeon_get_ib_value(p, idx);


@@ -2610,8 +2610,8 @@ int evergreen_cs_parse(struct radeon_cs_parser *p)
		}
		}
	} while (p->idx < p->chunks[p->chunk_ib_idx].length_dw);
	} while (p->idx < p->chunks[p->chunk_ib_idx].length_dw);
#if 0
#if 0
	for (r = 0; r < p->ib->length_dw; r++) {
	for (r = 0; r < p->ib.length_dw; r++) {
		printk(KERN_INFO "%05d  0x%08X\n", r, p->ib->ptr[r]);
		printk(KERN_INFO "%05d  0x%08X\n", r, p->ib.ptr[r]);
		mdelay(1);
		mdelay(1);
	}
	}
#endif
#endif
+19 −19
Original line number Original line Diff line number Diff line
@@ -139,9 +139,9 @@ int r100_reloc_pitch_offset(struct radeon_cs_parser *p,
		}
		}


		tmp |= tile_flags;
		tmp |= tile_flags;
		p->ib->ptr[idx] = (value & 0x3fc00000) | tmp;
		p->ib.ptr[idx] = (value & 0x3fc00000) | tmp;
	} else
	} else
		p->ib->ptr[idx] = (value & 0xffc00000) | tmp;
		p->ib.ptr[idx] = (value & 0xffc00000) | tmp;
	return 0;
	return 0;
}
}


@@ -156,7 +156,7 @@ int r100_packet3_load_vbpntr(struct radeon_cs_parser *p,
	volatile uint32_t *ib;
	volatile uint32_t *ib;
	u32 idx_value;
	u32 idx_value;


	ib = p->ib->ptr;
	ib = p->ib.ptr;
	track = (struct r100_cs_track *)p->track;
	track = (struct r100_cs_track *)p->track;
	c = radeon_get_ib_value(p, idx++) & 0x1F;
	c = radeon_get_ib_value(p, idx++) & 0x1F;
	if (c > 16) {
	if (c > 16) {
@@ -1275,7 +1275,7 @@ void r100_cs_dump_packet(struct radeon_cs_parser *p,
	unsigned i;
	unsigned i;
	unsigned idx;
	unsigned idx;


	ib = p->ib->ptr;
	ib = p->ib.ptr;
	idx = pkt->idx;
	idx = pkt->idx;
	for (i = 0; i <= (pkt->count + 1); i++, idx++) {
	for (i = 0; i <= (pkt->count + 1); i++, idx++) {
		DRM_INFO("ib[%d]=0x%08X\n", idx, ib[idx]);
		DRM_INFO("ib[%d]=0x%08X\n", idx, ib[idx]);
@@ -1354,7 +1354,7 @@ int r100_cs_packet_parse_vline(struct radeon_cs_parser *p)
	uint32_t header, h_idx, reg;
	uint32_t header, h_idx, reg;
	volatile uint32_t *ib;
	volatile uint32_t *ib;


	ib = p->ib->ptr;
	ib = p->ib.ptr;


	/* parse the wait until */
	/* parse the wait until */
	r = r100_cs_packet_parse(p, &waitreloc, p->idx);
	r = r100_cs_packet_parse(p, &waitreloc, p->idx);
@@ -1533,7 +1533,7 @@ static int r100_packet0_check(struct radeon_cs_parser *p,
	u32 tile_flags = 0;
	u32 tile_flags = 0;
	u32 idx_value;
	u32 idx_value;


	ib = p->ib->ptr;
	ib = p->ib.ptr;
	track = (struct r100_cs_track *)p->track;
	track = (struct r100_cs_track *)p->track;


	idx_value = radeon_get_ib_value(p, idx);
	idx_value = radeon_get_ib_value(p, idx);
@@ -1889,7 +1889,7 @@ static int r100_packet3_check(struct radeon_cs_parser *p,
	volatile uint32_t *ib;
	volatile uint32_t *ib;
	int r;
	int r;


	ib = p->ib->ptr;
	ib = p->ib.ptr;
	idx = pkt->idx + 1;
	idx = pkt->idx + 1;
	track = (struct r100_cs_track *)p->track;
	track = (struct r100_cs_track *)p->track;
	switch (pkt->opcode) {
	switch (pkt->opcode) {
@@ -3684,7 +3684,7 @@ void r100_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib)


int r100_ib_test(struct radeon_device *rdev, struct radeon_ring *ring)
int r100_ib_test(struct radeon_device *rdev, struct radeon_ring *ring)
{
{
	struct radeon_ib *ib;
	struct radeon_ib ib;
	uint32_t scratch;
	uint32_t scratch;
	uint32_t tmp = 0;
	uint32_t tmp = 0;
	unsigned i;
	unsigned i;
@@ -3700,22 +3700,22 @@ int r100_ib_test(struct radeon_device *rdev, struct radeon_ring *ring)
	if (r) {
	if (r) {
		return r;
		return r;
	}
	}
	ib->ptr[0] = PACKET0(scratch, 0);
	ib.ptr[0] = PACKET0(scratch, 0);
	ib->ptr[1] = 0xDEADBEEF;
	ib.ptr[1] = 0xDEADBEEF;
	ib->ptr[2] = PACKET2(0);
	ib.ptr[2] = PACKET2(0);
	ib->ptr[3] = PACKET2(0);
	ib.ptr[3] = PACKET2(0);
	ib->ptr[4] = PACKET2(0);
	ib.ptr[4] = PACKET2(0);
	ib->ptr[5] = PACKET2(0);
	ib.ptr[5] = PACKET2(0);
	ib->ptr[6] = PACKET2(0);
	ib.ptr[6] = PACKET2(0);
	ib->ptr[7] = PACKET2(0);
	ib.ptr[7] = PACKET2(0);
	ib->length_dw = 8;
	ib.length_dw = 8;
	r = radeon_ib_schedule(rdev, ib);
	r = radeon_ib_schedule(rdev, &ib);
	if (r) {
	if (r) {
		radeon_scratch_free(rdev, scratch);
		radeon_scratch_free(rdev, scratch);
		radeon_ib_free(rdev, &ib);
		radeon_ib_free(rdev, &ib);
		return r;
		return r;
	}
	}
	r = radeon_fence_wait(ib->fence, false);
	r = radeon_fence_wait(ib.fence, false);
	if (r) {
	if (r) {
		return r;
		return r;
	}
	}
+1 −1
Original line number Original line Diff line number Diff line
@@ -154,7 +154,7 @@ int r200_packet0_check(struct radeon_cs_parser *p,
	u32 tile_flags = 0;
	u32 tile_flags = 0;
	u32 idx_value;
	u32 idx_value;


	ib = p->ib->ptr;
	ib = p->ib.ptr;
	track = (struct r100_cs_track *)p->track;
	track = (struct r100_cs_track *)p->track;
	idx_value = radeon_get_ib_value(p, idx);
	idx_value = radeon_get_ib_value(p, idx);
	switch (reg) {
	switch (reg) {
+2 −2
Original line number Original line Diff line number Diff line
@@ -604,7 +604,7 @@ static int r300_packet0_check(struct radeon_cs_parser *p,
	int r;
	int r;
	u32 idx_value;
	u32 idx_value;


	ib = p->ib->ptr;
	ib = p->ib.ptr;
	track = (struct r100_cs_track *)p->track;
	track = (struct r100_cs_track *)p->track;
	idx_value = radeon_get_ib_value(p, idx);
	idx_value = radeon_get_ib_value(p, idx);


@@ -1146,7 +1146,7 @@ static int r300_packet3_check(struct radeon_cs_parser *p,
	unsigned idx;
	unsigned idx;
	int r;
	int r;


	ib = p->ib->ptr;
	ib = p->ib.ptr;
	idx = pkt->idx + 1;
	idx = pkt->idx + 1;
	track = (struct r100_cs_track *)p->track;
	track = (struct r100_cs_track *)p->track;
	switch(pkt->opcode) {
	switch(pkt->opcode) {
+8 −8
Original line number Original line Diff line number Diff line
@@ -2681,7 +2681,7 @@ void r600_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib)


int r600_ib_test(struct radeon_device *rdev, struct radeon_ring *ring)
int r600_ib_test(struct radeon_device *rdev, struct radeon_ring *ring)
{
{
	struct radeon_ib *ib;
	struct radeon_ib ib;
	uint32_t scratch;
	uint32_t scratch;
	uint32_t tmp = 0;
	uint32_t tmp = 0;
	unsigned i;
	unsigned i;
@@ -2699,18 +2699,18 @@ int r600_ib_test(struct radeon_device *rdev, struct radeon_ring *ring)
		DRM_ERROR("radeon: failed to get ib (%d).\n", r);
		DRM_ERROR("radeon: failed to get ib (%d).\n", r);
		return r;
		return r;
	}
	}
	ib->ptr[0] = PACKET3(PACKET3_SET_CONFIG_REG, 1);
	ib.ptr[0] = PACKET3(PACKET3_SET_CONFIG_REG, 1);
	ib->ptr[1] = ((scratch - PACKET3_SET_CONFIG_REG_OFFSET) >> 2);
	ib.ptr[1] = ((scratch - PACKET3_SET_CONFIG_REG_OFFSET) >> 2);
	ib->ptr[2] = 0xDEADBEEF;
	ib.ptr[2] = 0xDEADBEEF;
	ib->length_dw = 3;
	ib.length_dw = 3;
	r = radeon_ib_schedule(rdev, ib);
	r = radeon_ib_schedule(rdev, &ib);
	if (r) {
	if (r) {
		radeon_scratch_free(rdev, scratch);
		radeon_scratch_free(rdev, scratch);
		radeon_ib_free(rdev, &ib);
		radeon_ib_free(rdev, &ib);
		DRM_ERROR("radeon: failed to schedule ib (%d).\n", r);
		DRM_ERROR("radeon: failed to schedule ib (%d).\n", r);
		return r;
		return r;
	}
	}
	r = radeon_fence_wait(ib->fence, false);
	r = radeon_fence_wait(ib.fence, false);
	if (r) {
	if (r) {
		DRM_ERROR("radeon: fence wait failed (%d).\n", r);
		DRM_ERROR("radeon: fence wait failed (%d).\n", r);
		return r;
		return r;
@@ -2722,7 +2722,7 @@ int r600_ib_test(struct radeon_device *rdev, struct radeon_ring *ring)
		DRM_UDELAY(1);
		DRM_UDELAY(1);
	}
	}
	if (i < rdev->usec_timeout) {
	if (i < rdev->usec_timeout) {
		DRM_INFO("ib test on ring %d succeeded in %u usecs\n", ib->fence->ring, i);
		DRM_INFO("ib test on ring %d succeeded in %u usecs\n", ib.fence->ring, i);
	} else {
	} else {
		DRM_ERROR("radeon: ib test failed (scratch(0x%04X)=0x%08X)\n",
		DRM_ERROR("radeon: ib test failed (scratch(0x%04X)=0x%08X)\n",
			  scratch, tmp);
			  scratch, tmp);
Loading