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

Commit 4416662e authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx:
  dmaengine: struct device - replace bus_id with dev_name(), dev_set_name()
  iop-adma: use iop_paranoia() for debug BUG_ONs
  iop-adma: add a dummy read to flush next descriptor update
parents 3edac25f 06190d84
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -730,7 +730,8 @@ static inline void iop_desc_set_next_desc(struct iop_adma_desc_slot *desc,
{
	/* hw_desc->next_desc is the same location for all channels */
	union iop3xx_desc hw_desc = { .ptr = desc->hw_desc, };
	BUG_ON(hw_desc.dma->next_desc);

	iop_paranoia(hw_desc.dma->next_desc);
	hw_desc.dma->next_desc = next_desc_addr;
}

@@ -760,7 +761,7 @@ static inline int iop_desc_get_zero_result(struct iop_adma_desc_slot *desc)
	struct iop3xx_desc_aau *hw_desc = desc->hw_desc;
	struct iop3xx_aau_desc_ctrl desc_ctrl = hw_desc->desc_ctrl_field;

	BUG_ON(!(desc_ctrl.tx_complete && desc_ctrl.zero_result_en));
	iop_paranoia(!(desc_ctrl.tx_complete && desc_ctrl.zero_result_en));
	return desc_ctrl.zero_result_err;
}

+6 −0
Original line number Diff line number Diff line
@@ -23,6 +23,12 @@

#define IOP_ADMA_SLOT_SIZE 32
#define IOP_ADMA_THRESHOLD 4
#ifdef DEBUG
#define IOP_PARANOIA 1
#else
#define IOP_PARANOIA 0
#endif
#define iop_paranoia(x) BUG_ON(IOP_PARANOIA && (x))

/**
 * struct iop_adma_device - internal representation of an ADMA device
+2 −1
Original line number Diff line number Diff line
@@ -404,7 +404,8 @@ static inline void iop_desc_set_next_desc(struct iop_adma_desc_slot *desc,
					u32 next_desc_addr)
{
	struct iop13xx_adma_desc_hw *hw_desc = desc->hw_desc;
	BUG_ON(hw_desc->next_desc);

	iop_paranoia(hw_desc->next_desc);
	hw_desc->next_desc = next_desc_addr;
}

+2 −2
Original line number Diff line number Diff line
@@ -399,7 +399,7 @@ int dma_async_device_register(struct dma_device *device)
		chan->chan_id = chancnt++;
		chan->dev.class = &dma_devclass;
		chan->dev.parent = device->dev;
		snprintf(chan->dev.bus_id, BUS_ID_SIZE, "dma%dchan%d",
		dev_set_name(&chan->dev, "dma%dchan%d",
			     device->dev_id, chan->chan_id);

		rc = device_register(&chan->dev);
+11 −11
Original line number Diff line number Diff line
@@ -20,11 +20,11 @@ static unsigned int test_buf_size = 16384;
module_param(test_buf_size, uint, S_IRUGO);
MODULE_PARM_DESC(test_buf_size, "Size of the memcpy test buffer");

static char test_channel[BUS_ID_SIZE];
static char test_channel[20];
module_param_string(channel, test_channel, sizeof(test_channel), S_IRUGO);
MODULE_PARM_DESC(channel, "Bus ID of the channel to test (default: any)");

static char test_device[BUS_ID_SIZE];
static char test_device[20];
module_param_string(device, test_device, sizeof(test_device), S_IRUGO);
MODULE_PARM_DESC(device, "Bus ID of the DMA Engine to test (default: any)");

@@ -80,14 +80,14 @@ static bool dmatest_match_channel(struct dma_chan *chan)
{
	if (test_channel[0] == '\0')
		return true;
	return strcmp(chan->dev.bus_id, test_channel) == 0;
	return strcmp(dev_name(&chan->dev), test_channel) == 0;
}

static bool dmatest_match_device(struct dma_device *device)
{
	if (test_device[0] == '\0')
		return true;
	return strcmp(device->dev->bus_id, test_device) == 0;
	return strcmp(dev_name(device->dev), test_device) == 0;
}

static unsigned long dmatest_random(void)
@@ -332,7 +332,7 @@ static enum dma_state_client dmatest_add_channel(struct dma_chan *chan)

	dtc = kmalloc(sizeof(struct dmatest_chan), GFP_KERNEL);
	if (!dtc) {
		pr_warning("dmatest: No memory for %s\n", chan->dev.bus_id);
		pr_warning("dmatest: No memory for %s\n", dev_name(&chan->dev));
		return DMA_NAK;
	}

@@ -343,16 +343,16 @@ static enum dma_state_client dmatest_add_channel(struct dma_chan *chan)
		thread = kzalloc(sizeof(struct dmatest_thread), GFP_KERNEL);
		if (!thread) {
			pr_warning("dmatest: No memory for %s-test%u\n",
					chan->dev.bus_id, i);
				   dev_name(&chan->dev), i);
			break;
		}
		thread->chan = dtc->chan;
		smp_wmb();
		thread->task = kthread_run(dmatest_func, thread, "%s-test%u",
				chan->dev.bus_id, i);
				dev_name(&chan->dev), i);
		if (IS_ERR(thread->task)) {
			pr_warning("dmatest: Failed to run thread %s-test%u\n",
					chan->dev.bus_id, i);
					dev_name(&chan->dev), i);
			kfree(thread);
			break;
		}
@@ -362,7 +362,7 @@ static enum dma_state_client dmatest_add_channel(struct dma_chan *chan)
		list_add_tail(&thread->node, &dtc->threads);
	}

	pr_info("dmatest: Started %u threads using %s\n", i, chan->dev.bus_id);
	pr_info("dmatest: Started %u threads using %s\n", i, dev_name(&chan->dev));

	list_add_tail(&dtc->node, &dmatest_channels);
	nr_channels++;
@@ -379,7 +379,7 @@ static enum dma_state_client dmatest_remove_channel(struct dma_chan *chan)
			list_del(&dtc->node);
			dmatest_cleanup_channel(dtc);
			pr_debug("dmatest: lost channel %s\n",
					chan->dev.bus_id);
					dev_name(&chan->dev));
			return DMA_ACK;
		}
	}
@@ -418,7 +418,7 @@ dmatest_event(struct dma_client *client, struct dma_chan *chan,

	default:
		pr_info("dmatest: Unhandled event %u (%s)\n",
				state, chan->dev.bus_id);
				state, dev_name(&chan->dev));
		break;
	}

Loading