@@ -329,7 +329,6 @@ static void pci_epf_test_copy(struct pci_epf_test *epf_test,
329
329
struct pci_epf_test_reg * reg )
330
330
{
331
331
int ret ;
332
- bool use_dma ;
333
332
void __iomem * src_addr ;
334
333
void __iomem * dst_addr ;
335
334
phys_addr_t src_phys_addr ;
@@ -372,14 +371,7 @@ static void pci_epf_test_copy(struct pci_epf_test *epf_test,
372
371
}
373
372
374
373
ktime_get_ts64 (& start );
375
- use_dma = !!(reg -> flags & FLAG_USE_DMA );
376
- if (use_dma ) {
377
- if (!epf_test -> dma_supported ) {
378
- dev_err (dev , "Cannot transfer data using DMA\n" );
379
- ret = - EINVAL ;
380
- goto err_map_addr ;
381
- }
382
-
374
+ if (reg -> flags & FLAG_USE_DMA ) {
383
375
if (epf_test -> dma_private ) {
384
376
dev_err (dev , "Cannot transfer data using DMA\n" );
385
377
ret = - EINVAL ;
@@ -405,7 +397,8 @@ static void pci_epf_test_copy(struct pci_epf_test *epf_test,
405
397
kfree (buf );
406
398
}
407
399
ktime_get_ts64 (& end );
408
- pci_epf_test_print_rate ("COPY" , reg -> size , & start , & end , use_dma );
400
+ pci_epf_test_print_rate ("COPY" , reg -> size , & start , & end ,
401
+ reg -> flags & FLAG_USE_DMA );
409
402
410
403
err_map_addr :
411
404
pci_epc_unmap_addr (epc , epf -> func_no , epf -> vfunc_no , dst_phys_addr );
@@ -433,7 +426,6 @@ static void pci_epf_test_read(struct pci_epf_test *epf_test,
433
426
void __iomem * src_addr ;
434
427
void * buf ;
435
428
u32 crc32 ;
436
- bool use_dma ;
437
429
phys_addr_t phys_addr ;
438
430
phys_addr_t dst_phys_addr ;
439
431
struct timespec64 start , end ;
@@ -464,14 +456,7 @@ static void pci_epf_test_read(struct pci_epf_test *epf_test,
464
456
goto err_map_addr ;
465
457
}
466
458
467
- use_dma = !!(reg -> flags & FLAG_USE_DMA );
468
- if (use_dma ) {
469
- if (!epf_test -> dma_supported ) {
470
- dev_err (dev , "Cannot transfer data using DMA\n" );
471
- ret = - EINVAL ;
472
- goto err_dma_map ;
473
- }
474
-
459
+ if (reg -> flags & FLAG_USE_DMA ) {
475
460
dst_phys_addr = dma_map_single (dma_dev , buf , reg -> size ,
476
461
DMA_FROM_DEVICE );
477
462
if (dma_mapping_error (dma_dev , dst_phys_addr )) {
@@ -496,7 +481,8 @@ static void pci_epf_test_read(struct pci_epf_test *epf_test,
496
481
ktime_get_ts64 (& end );
497
482
}
498
483
499
- pci_epf_test_print_rate ("READ" , reg -> size , & start , & end , use_dma );
484
+ pci_epf_test_print_rate ("READ" , reg -> size , & start , & end ,
485
+ reg -> flags & FLAG_USE_DMA );
500
486
501
487
crc32 = crc32_le (~0 , buf , reg -> size );
502
488
if (crc32 != reg -> checksum )
@@ -524,7 +510,6 @@ static void pci_epf_test_write(struct pci_epf_test *epf_test,
524
510
int ret ;
525
511
void __iomem * dst_addr ;
526
512
void * buf ;
527
- bool use_dma ;
528
513
phys_addr_t phys_addr ;
529
514
phys_addr_t src_phys_addr ;
530
515
struct timespec64 start , end ;
@@ -558,14 +543,7 @@ static void pci_epf_test_write(struct pci_epf_test *epf_test,
558
543
get_random_bytes (buf , reg -> size );
559
544
reg -> checksum = crc32_le (~0 , buf , reg -> size );
560
545
561
- use_dma = !!(reg -> flags & FLAG_USE_DMA );
562
- if (use_dma ) {
563
- if (!epf_test -> dma_supported ) {
564
- dev_err (dev , "Cannot transfer data using DMA\n" );
565
- ret = - EINVAL ;
566
- goto err_dma_map ;
567
- }
568
-
546
+ if (reg -> flags & FLAG_USE_DMA ) {
569
547
src_phys_addr = dma_map_single (dma_dev , buf , reg -> size ,
570
548
DMA_TO_DEVICE );
571
549
if (dma_mapping_error (dma_dev , src_phys_addr )) {
@@ -592,7 +570,8 @@ static void pci_epf_test_write(struct pci_epf_test *epf_test,
592
570
ktime_get_ts64 (& end );
593
571
}
594
572
595
- pci_epf_test_print_rate ("WRITE" , reg -> size , & start , & end , use_dma );
573
+ pci_epf_test_print_rate ("WRITE" , reg -> size , & start , & end ,
574
+ reg -> flags & FLAG_USE_DMA );
596
575
597
576
/*
598
577
* wait 1ms inorder for the write to complete. Without this delay L3
@@ -679,6 +658,12 @@ static void pci_epf_test_cmd_handler(struct work_struct *work)
679
658
WRITE_ONCE (reg -> command , 0 );
680
659
WRITE_ONCE (reg -> status , 0 );
681
660
661
+ if ((READ_ONCE (reg -> flags ) & FLAG_USE_DMA ) &&
662
+ !epf_test -> dma_supported ) {
663
+ dev_err (dev , "Cannot transfer data using DMA\n" );
664
+ goto reset_handler ;
665
+ }
666
+
682
667
if (reg -> irq_type > IRQ_TYPE_MSIX ) {
683
668
dev_err (dev , "Failed to detect IRQ type\n" );
684
669
goto reset_handler ;
0 commit comments