Skip to content

Commit aead27d

Browse files
committed
Merge tag 'fpga-for-6.12-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/fpga/linux-fpga into char-misc-next
Xu writes: FPGA Manager changes for 6.12-rc1 FPGA unit test: - Macro's change improves fpga tests using deferred actions FPGA vendor drivers: - Wolfram's change renames confusing variables for Altera & Xilinx drivers. All patches have been reviewed on the mailing list, and have been in the last linux-next releases (as part of our for-next branch). Signed-off-by: Xu Yilun <[email protected]> * tag 'fpga-for-6.12-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/fpga/linux-fpga: fpga: zynq-fpga: Rename 'timeout' variable as 'time_left' fpga: socfpga: Rename 'timeout' variable as 'time_left' fpga: Simplify and improve fpga region test using deferred actions fpga: Simplify and improve fpga bridge test using deferred actions fpga: Simplify and improve fpga mgr test using deferred actions
2 parents 88850f7 + 8de3678 commit aead27d

File tree

5 files changed

+60
-49
lines changed

5 files changed

+60
-49
lines changed

drivers/fpga/socfpga.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -301,16 +301,17 @@ static irqreturn_t socfpga_fpga_isr(int irq, void *dev_id)
301301

302302
static int socfpga_fpga_wait_for_config_done(struct socfpga_fpga_priv *priv)
303303
{
304-
int timeout, ret = 0;
304+
int ret = 0;
305+
long time_left;
305306

306307
socfpga_fpga_disable_irqs(priv);
307308
init_completion(&priv->status_complete);
308309
socfpga_fpga_enable_irqs(priv, SOCFPGA_FPGMGR_MON_CONF_DONE);
309310

310-
timeout = wait_for_completion_interruptible_timeout(
311+
time_left = wait_for_completion_interruptible_timeout(
311312
&priv->status_complete,
312313
msecs_to_jiffies(10));
313-
if (timeout == 0)
314+
if (time_left == 0)
314315
ret = -ETIMEDOUT;
315316

316317
socfpga_fpga_disable_irqs(priv);

drivers/fpga/tests/fpga-bridge-test.c

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ struct bridge_ctx {
2323
struct bridge_stats stats;
2424
};
2525

26+
/*
27+
* Wrapper to avoid a cast warning when passing the action function directly
28+
* to kunit_add_action().
29+
*/
30+
KUNIT_DEFINE_ACTION_WRAPPER(fpga_bridge_unregister_wrapper, fpga_bridge_unregister,
31+
struct fpga_bridge *);
32+
2633
static int op_enable_set(struct fpga_bridge *bridge, bool enable)
2734
{
2835
struct bridge_stats *stats = bridge->priv;
@@ -50,6 +57,7 @@ static const struct fpga_bridge_ops fake_bridge_ops = {
5057
static struct bridge_ctx *register_test_bridge(struct kunit *test, const char *dev_name)
5158
{
5259
struct bridge_ctx *ctx;
60+
int ret;
5361

5462
ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
5563
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
@@ -61,13 +69,10 @@ static struct bridge_ctx *register_test_bridge(struct kunit *test, const char *d
6169
&ctx->stats);
6270
KUNIT_ASSERT_FALSE(test, IS_ERR_OR_NULL(ctx->bridge));
6371

64-
return ctx;
65-
}
72+
ret = kunit_add_action_or_reset(test, fpga_bridge_unregister_wrapper, ctx->bridge);
73+
KUNIT_ASSERT_EQ(test, ret, 0);
6674

67-
static void unregister_test_bridge(struct kunit *test, struct bridge_ctx *ctx)
68-
{
69-
fpga_bridge_unregister(ctx->bridge);
70-
kunit_device_unregister(test, ctx->dev);
75+
return ctx;
7176
}
7277

7378
static void fpga_bridge_test_get(struct kunit *test)
@@ -141,8 +146,6 @@ static void fpga_bridge_test_get_put_list(struct kunit *test)
141146
fpga_bridges_put(&bridge_list);
142147

143148
KUNIT_EXPECT_TRUE(test, list_empty(&bridge_list));
144-
145-
unregister_test_bridge(test, ctx_1);
146149
}
147150

148151
static int fpga_bridge_test_init(struct kunit *test)
@@ -152,11 +155,6 @@ static int fpga_bridge_test_init(struct kunit *test)
152155
return 0;
153156
}
154157

155-
static void fpga_bridge_test_exit(struct kunit *test)
156-
{
157-
unregister_test_bridge(test, test->priv);
158-
}
159-
160158
static struct kunit_case fpga_bridge_test_cases[] = {
161159
KUNIT_CASE(fpga_bridge_test_get),
162160
KUNIT_CASE(fpga_bridge_test_toggle),
@@ -167,7 +165,6 @@ static struct kunit_case fpga_bridge_test_cases[] = {
167165
static struct kunit_suite fpga_bridge_suite = {
168166
.name = "fpga_bridge",
169167
.init = fpga_bridge_test_init,
170-
.exit = fpga_bridge_test_exit,
171168
.test_cases = fpga_bridge_test_cases,
172169
};
173170

drivers/fpga/tests/fpga-mgr-test.c

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,16 @@ struct mgr_ctx {
4444
struct mgr_stats stats;
4545
};
4646

47+
/*
48+
* Wrappers to avoid cast warnings when passing action functions directly
49+
* to kunit_add_action().
50+
*/
51+
KUNIT_DEFINE_ACTION_WRAPPER(sg_free_table_wrapper, sg_free_table,
52+
struct sg_table *);
53+
54+
KUNIT_DEFINE_ACTION_WRAPPER(fpga_image_info_free_wrapper, fpga_image_info_free,
55+
struct fpga_image_info *);
56+
4757
/**
4858
* init_test_buffer() - Allocate and initialize a test image in a buffer.
4959
* @test: KUnit test context object.
@@ -257,6 +267,9 @@ static void fpga_mgr_test_img_load_sgt(struct kunit *test)
257267
KUNIT_ASSERT_EQ(test, ret, 0);
258268
sg_init_one(sgt->sgl, img_buf, IMAGE_SIZE);
259269

270+
ret = kunit_add_action_or_reset(test, sg_free_table_wrapper, sgt);
271+
KUNIT_ASSERT_EQ(test, ret, 0);
272+
260273
ctx->img_info->sgt = sgt;
261274

262275
ret = fpga_mgr_load(ctx->mgr, ctx->img_info);
@@ -273,13 +286,12 @@ static void fpga_mgr_test_img_load_sgt(struct kunit *test)
273286
KUNIT_EXPECT_EQ(test, ctx->stats.op_write_init_seq, ctx->stats.op_parse_header_seq + 1);
274287
KUNIT_EXPECT_EQ(test, ctx->stats.op_write_sg_seq, ctx->stats.op_parse_header_seq + 2);
275288
KUNIT_EXPECT_EQ(test, ctx->stats.op_write_complete_seq, ctx->stats.op_parse_header_seq + 3);
276-
277-
sg_free_table(ctx->img_info->sgt);
278289
}
279290

280291
static int fpga_mgr_test_init(struct kunit *test)
281292
{
282293
struct mgr_ctx *ctx;
294+
int ret;
283295

284296
ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
285297
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
@@ -294,19 +306,14 @@ static int fpga_mgr_test_init(struct kunit *test)
294306
ctx->img_info = fpga_image_info_alloc(ctx->dev);
295307
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx->img_info);
296308

309+
ret = kunit_add_action_or_reset(test, fpga_image_info_free_wrapper, ctx->img_info);
310+
KUNIT_ASSERT_EQ(test, ret, 0);
311+
297312
test->priv = ctx;
298313

299314
return 0;
300315
}
301316

302-
static void fpga_mgr_test_exit(struct kunit *test)
303-
{
304-
struct mgr_ctx *ctx = test->priv;
305-
306-
fpga_image_info_free(ctx->img_info);
307-
kunit_device_unregister(test, ctx->dev);
308-
}
309-
310317
static struct kunit_case fpga_mgr_test_cases[] = {
311318
KUNIT_CASE(fpga_mgr_test_get),
312319
KUNIT_CASE(fpga_mgr_test_lock),
@@ -318,7 +325,6 @@ static struct kunit_case fpga_mgr_test_cases[] = {
318325
static struct kunit_suite fpga_mgr_suite = {
319326
.name = "fpga_mgr",
320327
.init = fpga_mgr_test_init,
321-
.exit = fpga_mgr_test_exit,
322328
.test_cases = fpga_mgr_test_cases,
323329
};
324330

drivers/fpga/tests/fpga-region-test.c

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,19 @@ struct test_ctx {
3535
struct mgr_stats mgr_stats;
3636
};
3737

38+
/*
39+
* Wrappers to avoid cast warnings when passing action functions directly
40+
* to kunit_add_action().
41+
*/
42+
KUNIT_DEFINE_ACTION_WRAPPER(fpga_image_info_free_wrapper, fpga_image_info_free,
43+
struct fpga_image_info *);
44+
45+
KUNIT_DEFINE_ACTION_WRAPPER(fpga_bridge_unregister_wrapper, fpga_bridge_unregister,
46+
struct fpga_bridge *);
47+
48+
KUNIT_DEFINE_ACTION_WRAPPER(fpga_region_unregister_wrapper, fpga_region_unregister,
49+
struct fpga_region *);
50+
3851
static int op_write(struct fpga_manager *mgr, const char *buf, size_t count)
3952
{
4053
struct mgr_stats *stats = mgr->priv;
@@ -111,6 +124,9 @@ static void fpga_region_test_program_fpga(struct kunit *test)
111124
img_info = fpga_image_info_alloc(ctx->mgr_dev);
112125
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, img_info);
113126

127+
ret = kunit_add_action_or_reset(test, fpga_image_info_free_wrapper, img_info);
128+
KUNIT_ASSERT_EQ(test, ret, 0);
129+
114130
img_info->buf = img_buf;
115131
img_info->count = sizeof(img_buf);
116132

@@ -130,8 +146,6 @@ static void fpga_region_test_program_fpga(struct kunit *test)
130146
KUNIT_EXPECT_EQ(test, 2, ctx->bridge_stats.cycles_count);
131147

132148
fpga_bridges_put(&ctx->region->bridge_list);
133-
134-
fpga_image_info_free(img_info);
135149
}
136150

137151
/*
@@ -144,6 +158,7 @@ static int fpga_region_test_init(struct kunit *test)
144158
{
145159
struct test_ctx *ctx;
146160
struct fpga_region_info region_info = { 0 };
161+
int ret;
147162

148163
ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
149164
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
@@ -164,6 +179,9 @@ static int fpga_region_test_init(struct kunit *test)
164179

165180
ctx->bridge_stats.enable = true;
166181

182+
ret = kunit_add_action_or_reset(test, fpga_bridge_unregister_wrapper, ctx->bridge);
183+
KUNIT_ASSERT_EQ(test, ret, 0);
184+
167185
ctx->region_dev = kunit_device_register(test, "fpga-region-test-dev");
168186
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx->region_dev);
169187

@@ -174,34 +192,23 @@ static int fpga_region_test_init(struct kunit *test)
174192
ctx->region = fpga_region_register_full(ctx->region_dev, &region_info);
175193
KUNIT_ASSERT_FALSE(test, IS_ERR_OR_NULL(ctx->region));
176194

195+
ret = kunit_add_action_or_reset(test, fpga_region_unregister_wrapper, ctx->region);
196+
KUNIT_ASSERT_EQ(test, ret, 0);
197+
177198
test->priv = ctx;
178199

179200
return 0;
180201
}
181202

182-
static void fpga_region_test_exit(struct kunit *test)
183-
{
184-
struct test_ctx *ctx = test->priv;
185-
186-
fpga_region_unregister(ctx->region);
187-
kunit_device_unregister(test, ctx->region_dev);
188-
189-
fpga_bridge_unregister(ctx->bridge);
190-
kunit_device_unregister(test, ctx->bridge_dev);
191-
192-
kunit_device_unregister(test, ctx->mgr_dev);
193-
}
194-
195203
static struct kunit_case fpga_region_test_cases[] = {
196204
KUNIT_CASE(fpga_region_test_class_find),
197205
KUNIT_CASE(fpga_region_test_program_fpga),
198206
{}
199207
};
200208

201209
static struct kunit_suite fpga_region_suite = {
202-
.name = "fpga_mgr",
210+
.name = "fpga_region",
203211
.init = fpga_region_test_init,
204-
.exit = fpga_region_test_exit,
205212
.test_cases = fpga_region_test_cases,
206213
};
207214

drivers/fpga/zynq-fpga.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ static int zynq_fpga_ops_write(struct fpga_manager *mgr, struct sg_table *sgt)
387387
const char *why;
388388
int err;
389389
u32 intr_status;
390-
unsigned long timeout;
390+
unsigned long time_left;
391391
unsigned long flags;
392392
struct scatterlist *sg;
393393
int i;
@@ -427,8 +427,8 @@ static int zynq_fpga_ops_write(struct fpga_manager *mgr, struct sg_table *sgt)
427427
zynq_step_dma(priv);
428428
spin_unlock_irqrestore(&priv->dma_lock, flags);
429429

430-
timeout = wait_for_completion_timeout(&priv->dma_done,
431-
msecs_to_jiffies(DMA_TIMEOUT_MS));
430+
time_left = wait_for_completion_timeout(&priv->dma_done,
431+
msecs_to_jiffies(DMA_TIMEOUT_MS));
432432

433433
spin_lock_irqsave(&priv->dma_lock, flags);
434434
zynq_fpga_set_irq(priv, 0);
@@ -452,7 +452,7 @@ static int zynq_fpga_ops_write(struct fpga_manager *mgr, struct sg_table *sgt)
452452

453453
if (priv->cur_sg ||
454454
!((intr_status & IXR_D_P_DONE_MASK) == IXR_D_P_DONE_MASK)) {
455-
if (timeout == 0)
455+
if (time_left == 0)
456456
why = "DMA timed out";
457457
else
458458
why = "DMA did not complete";

0 commit comments

Comments
 (0)