Skip to content

"trace error" stress test for start playback and capture at sametime cause dma trace error on BYT #173

@xiulipan

Description

@xiulipan

reproduce step:
start playback
start and stop capture when error happen

rmbox log:

0x0 [188.520303] delta [188.520303] dma eS0
0x10 [188.520305] delta [0.000003] value 0x0000000000000007
0x20 [188.520308] delta [0.000003] value 0x0000000000000203
0x30 [188.520310] delta [0.000002] value 0x0000000000000003
0x40 [188.520313] delta [0.000003] buffer ebb
0x50 [188.520315] delta [0.000002] value 0x00000000fffffff0
0x60 [189.015096] delta [0.494781] dma eS0
0x70 [189.015098] delta [0.000003] value 0x0000000000000007
0x80 [189.015101] delta [0.000003] value 0x0000000000000203
0x90 [189.015103] delta [0.000002] value 0x0000000000000003
0xa0 [189.015106] delta [0.000003] buffer ebb
0xb0 [189.015108] delta [0.000002] value 0x00000000fffffff0
0x0 [188.520303] delta [188.520303] dma eS0
0x10 [188.520305] delta [0.000003] value 0x0000000000000007
0x20 [188.520308] delta [0.000003] value 0x0000000000000203
0x30 [188.520310] delta [0.000002] value 0x0000000000000003
0x40 [188.520313] delta [0.000003] buffer ebb
0x50 [188.520315] delta [0.000002] value 0x00000000fffffff0
0x60 [189.015096] delta [0.494781] dma eS0
0x70 [189.015098] delta [0.000003] value 0x0000000000000007
0x80 [189.015101] delta [0.000003] value 0x0000000000000203
0x90 [189.015103] delta [0.000002] value 0x0000000000000003
0xa0 [189.015106] delta [0.000003] buffer ebb
0xb0 [189.015108] delta [0.000002] value 0x00000000fffffff0

related code
src/drivers/dw-dma.c

	/* is channel idle, disabled and ready ? */
	if (p->chan[channel].status != COMP_STATE_PREPARE ||
		(dw_read(dma, DW_DMA_CHAN_EN) & (0x1 << channel))) {
		ret = -EBUSY;
		trace_dma_error("eS0");
		trace_error_value(dw_read(dma, DW_DMA_CHAN_EN));
		trace_error_value(dw_read(dma, DW_CFG_LOW(channel)));
		trace_error_value(p->chan[channel].status);
		goto out;
	}

src/lib/dma-trace.c

	/* copy this section to host */
	size = dma_copy_to_host_nowait(&d->dc, config, d->host_offset,
		buffer->r_ptr, size);
	if (size < 0) {
		trace_buffer_error("ebb");
		trace_error_value(size);
		goto out;
	}

Metadata

Metadata

Assignees

Labels

BYTApplies to Baytrail platformbugSomething isn't working as expected

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions