@@ -1136,8 +1136,7 @@ static int iaa_compress(struct crypto_tfm *tfm, struct acomp_req *req,
1136
1136
struct idxd_wq * wq ,
1137
1137
dma_addr_t src_addr , unsigned int slen ,
1138
1138
dma_addr_t dst_addr , unsigned int * dlen ,
1139
- u32 * compression_crc ,
1140
- bool disable_async )
1139
+ u32 * compression_crc )
1141
1140
{
1142
1141
struct iaa_device_compression_mode * active_compression_mode ;
1143
1142
struct iaa_compression_ctx * ctx = crypto_tfm_ctx (tfm );
@@ -1180,7 +1179,7 @@ static int iaa_compress(struct crypto_tfm *tfm, struct acomp_req *req,
1180
1179
desc -> src2_size = sizeof (struct aecs_comp_table_record );
1181
1180
desc -> completion_addr = idxd_desc -> compl_dma ;
1182
1181
1183
- if (ctx -> use_irq && ! disable_async ) {
1182
+ if (ctx -> use_irq ) {
1184
1183
desc -> flags |= IDXD_OP_FLAG_RCI ;
1185
1184
1186
1185
idxd_desc -> crypto .req = req ;
@@ -1193,7 +1192,7 @@ static int iaa_compress(struct crypto_tfm *tfm, struct acomp_req *req,
1193
1192
" src_addr %llx, dst_addr %llx\n" , __func__ ,
1194
1193
active_compression_mode -> name ,
1195
1194
src_addr , dst_addr );
1196
- } else if (ctx -> async_mode && ! disable_async )
1195
+ } else if (ctx -> async_mode )
1197
1196
req -> base .data = idxd_desc ;
1198
1197
1199
1198
dev_dbg (dev , "%s: compression mode %s,"
@@ -1214,7 +1213,7 @@ static int iaa_compress(struct crypto_tfm *tfm, struct acomp_req *req,
1214
1213
update_total_comp_calls ();
1215
1214
update_wq_comp_calls (wq );
1216
1215
1217
- if (ctx -> async_mode && ! disable_async ) {
1216
+ if (ctx -> async_mode ) {
1218
1217
ret = - EINPROGRESS ;
1219
1218
dev_dbg (dev , "%s: returning -EINPROGRESS\n" , __func__ );
1220
1219
goto out ;
@@ -1234,7 +1233,7 @@ static int iaa_compress(struct crypto_tfm *tfm, struct acomp_req *req,
1234
1233
1235
1234
* compression_crc = idxd_desc -> iax_completion -> crc ;
1236
1235
1237
- if (!ctx -> async_mode || disable_async )
1236
+ if (!ctx -> async_mode )
1238
1237
idxd_free_desc (wq , idxd_desc );
1239
1238
out :
1240
1239
return ret ;
@@ -1500,13 +1499,11 @@ static int iaa_comp_acompress(struct acomp_req *req)
1500
1499
struct iaa_compression_ctx * compression_ctx ;
1501
1500
struct crypto_tfm * tfm = req -> base .tfm ;
1502
1501
dma_addr_t src_addr , dst_addr ;
1503
- bool disable_async = false;
1504
1502
int nr_sgs , cpu , ret = 0 ;
1505
1503
struct iaa_wq * iaa_wq ;
1506
1504
u32 compression_crc ;
1507
1505
struct idxd_wq * wq ;
1508
1506
struct device * dev ;
1509
- int order = -1 ;
1510
1507
1511
1508
compression_ctx = crypto_tfm_ctx (tfm );
1512
1509
@@ -1536,21 +1533,6 @@ static int iaa_comp_acompress(struct acomp_req *req)
1536
1533
1537
1534
iaa_wq = idxd_wq_get_private (wq );
1538
1535
1539
- if (!req -> dst ) {
1540
- gfp_t flags = req -> base .flags & CRYPTO_TFM_REQ_MAY_SLEEP ? GFP_KERNEL : GFP_ATOMIC ;
1541
-
1542
- /* incompressible data will always be < 2 * slen */
1543
- req -> dlen = 2 * req -> slen ;
1544
- order = order_base_2 (round_up (req -> dlen , PAGE_SIZE ) / PAGE_SIZE );
1545
- req -> dst = sgl_alloc_order (req -> dlen , order , false, flags , NULL );
1546
- if (!req -> dst ) {
1547
- ret = - ENOMEM ;
1548
- order = -1 ;
1549
- goto out ;
1550
- }
1551
- disable_async = true;
1552
- }
1553
-
1554
1536
dev = & wq -> idxd -> pdev -> dev ;
1555
1537
1556
1538
nr_sgs = dma_map_sg (dev , req -> src , sg_nents (req -> src ), DMA_TO_DEVICE );
@@ -1580,7 +1562,7 @@ static int iaa_comp_acompress(struct acomp_req *req)
1580
1562
req -> dst , req -> dlen , sg_dma_len (req -> dst ));
1581
1563
1582
1564
ret = iaa_compress (tfm , req , wq , src_addr , req -> slen , dst_addr ,
1583
- & req -> dlen , & compression_crc , disable_async );
1565
+ & req -> dlen , & compression_crc );
1584
1566
if (ret == - EINPROGRESS )
1585
1567
return ret ;
1586
1568
@@ -1611,100 +1593,6 @@ static int iaa_comp_acompress(struct acomp_req *req)
1611
1593
out :
1612
1594
iaa_wq_put (wq );
1613
1595
1614
- if (order >= 0 )
1615
- sgl_free_order (req -> dst , order );
1616
-
1617
- return ret ;
1618
- }
1619
-
1620
- static int iaa_comp_adecompress_alloc_dest (struct acomp_req * req )
1621
- {
1622
- gfp_t flags = req -> base .flags & CRYPTO_TFM_REQ_MAY_SLEEP ?
1623
- GFP_KERNEL : GFP_ATOMIC ;
1624
- struct crypto_tfm * tfm = req -> base .tfm ;
1625
- dma_addr_t src_addr , dst_addr ;
1626
- int nr_sgs , cpu , ret = 0 ;
1627
- struct iaa_wq * iaa_wq ;
1628
- struct device * dev ;
1629
- struct idxd_wq * wq ;
1630
- int order = -1 ;
1631
-
1632
- cpu = get_cpu ();
1633
- wq = wq_table_next_wq (cpu );
1634
- put_cpu ();
1635
- if (!wq ) {
1636
- pr_debug ("no wq configured for cpu=%d\n" , cpu );
1637
- return - ENODEV ;
1638
- }
1639
-
1640
- ret = iaa_wq_get (wq );
1641
- if (ret ) {
1642
- pr_debug ("no wq available for cpu=%d\n" , cpu );
1643
- return - ENODEV ;
1644
- }
1645
-
1646
- iaa_wq = idxd_wq_get_private (wq );
1647
-
1648
- dev = & wq -> idxd -> pdev -> dev ;
1649
-
1650
- nr_sgs = dma_map_sg (dev , req -> src , sg_nents (req -> src ), DMA_TO_DEVICE );
1651
- if (nr_sgs <= 0 || nr_sgs > 1 ) {
1652
- dev_dbg (dev , "couldn't map src sg for iaa device %d,"
1653
- " wq %d: ret=%d\n" , iaa_wq -> iaa_device -> idxd -> id ,
1654
- iaa_wq -> wq -> id , ret );
1655
- ret = - EIO ;
1656
- goto out ;
1657
- }
1658
- src_addr = sg_dma_address (req -> src );
1659
- dev_dbg (dev , "dma_map_sg, src_addr %llx, nr_sgs %d, req->src %p,"
1660
- " req->slen %d, sg_dma_len(sg) %d\n" , src_addr , nr_sgs ,
1661
- req -> src , req -> slen , sg_dma_len (req -> src ));
1662
-
1663
- req -> dlen = 4 * req -> slen ; /* start with ~avg comp rato */
1664
- alloc_dest :
1665
- order = order_base_2 (round_up (req -> dlen , PAGE_SIZE ) / PAGE_SIZE );
1666
- req -> dst = sgl_alloc_order (req -> dlen , order , false, flags , NULL );
1667
- if (!req -> dst ) {
1668
- ret = - ENOMEM ;
1669
- order = -1 ;
1670
- goto out ;
1671
- }
1672
-
1673
- nr_sgs = dma_map_sg (dev , req -> dst , sg_nents (req -> dst ), DMA_FROM_DEVICE );
1674
- if (nr_sgs <= 0 || nr_sgs > 1 ) {
1675
- dev_dbg (dev , "couldn't map dst sg for iaa device %d,"
1676
- " wq %d: ret=%d\n" , iaa_wq -> iaa_device -> idxd -> id ,
1677
- iaa_wq -> wq -> id , ret );
1678
- ret = - EIO ;
1679
- goto err_map_dst ;
1680
- }
1681
-
1682
- dst_addr = sg_dma_address (req -> dst );
1683
- dev_dbg (dev , "dma_map_sg, dst_addr %llx, nr_sgs %d, req->dst %p,"
1684
- " req->dlen %d, sg_dma_len(sg) %d\n" , dst_addr , nr_sgs ,
1685
- req -> dst , req -> dlen , sg_dma_len (req -> dst ));
1686
- ret = iaa_decompress (tfm , req , wq , src_addr , req -> slen ,
1687
- dst_addr , & req -> dlen , true);
1688
- if (ret == - EOVERFLOW ) {
1689
- dma_unmap_sg (dev , req -> dst , sg_nents (req -> dst ), DMA_FROM_DEVICE );
1690
- req -> dlen *= 2 ;
1691
- if (req -> dlen > CRYPTO_ACOMP_DST_MAX )
1692
- goto err_map_dst ;
1693
- goto alloc_dest ;
1694
- }
1695
-
1696
- if (ret != 0 )
1697
- dev_dbg (dev , "asynchronous decompress failed ret=%d\n" , ret );
1698
-
1699
- dma_unmap_sg (dev , req -> dst , sg_nents (req -> dst ), DMA_FROM_DEVICE );
1700
- err_map_dst :
1701
- dma_unmap_sg (dev , req -> src , sg_nents (req -> src ), DMA_TO_DEVICE );
1702
- out :
1703
- iaa_wq_put (wq );
1704
-
1705
- if (order >= 0 )
1706
- sgl_free_order (req -> dst , order );
1707
-
1708
1596
return ret ;
1709
1597
}
1710
1598
@@ -1727,9 +1615,6 @@ static int iaa_comp_adecompress(struct acomp_req *req)
1727
1615
return - EINVAL ;
1728
1616
}
1729
1617
1730
- if (!req -> dst )
1731
- return iaa_comp_adecompress_alloc_dest (req );
1732
-
1733
1618
cpu = get_cpu ();
1734
1619
wq = wq_table_next_wq (cpu );
1735
1620
put_cpu ();
@@ -1810,19 +1695,10 @@ static int iaa_comp_init_fixed(struct crypto_acomp *acomp_tfm)
1810
1695
return 0 ;
1811
1696
}
1812
1697
1813
- static void dst_free (struct scatterlist * sgl )
1814
- {
1815
- /*
1816
- * Called for req->dst = NULL cases but we free elsewhere
1817
- * using sgl_free_order().
1818
- */
1819
- }
1820
-
1821
1698
static struct acomp_alg iaa_acomp_fixed_deflate = {
1822
1699
.init = iaa_comp_init_fixed ,
1823
1700
.compress = iaa_comp_acompress ,
1824
1701
.decompress = iaa_comp_adecompress ,
1825
- .dst_free = dst_free ,
1826
1702
.base = {
1827
1703
.cra_name = "deflate" ,
1828
1704
.cra_driver_name = "deflate-iaa" ,
0 commit comments