@@ -1350,6 +1350,7 @@ static int ioat_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1350
1350
void __iomem * const * iomap ;
1351
1351
struct device * dev = & pdev -> dev ;
1352
1352
struct ioatdma_device * device ;
1353
+ u8 version ;
1353
1354
int err ;
1354
1355
1355
1356
err = pcim_enable_device (pdev );
@@ -1363,6 +1364,10 @@ static int ioat_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1363
1364
if (!iomap )
1364
1365
return - ENOMEM ;
1365
1366
1367
+ version = readb (iomap [IOAT_MMIO_BAR ] + IOAT_VER_OFFSET );
1368
+ if (version < IOAT_VER_3_0 )
1369
+ return - ENODEV ;
1370
+
1366
1371
err = dma_set_mask_and_coherent (& pdev -> dev , DMA_BIT_MASK (64 ));
1367
1372
if (err )
1368
1373
return err ;
@@ -1373,16 +1378,14 @@ static int ioat_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1373
1378
pci_set_master (pdev );
1374
1379
pci_set_drvdata (pdev , device );
1375
1380
1376
- device -> version = readb ( device -> reg_base + IOAT_VER_OFFSET ) ;
1381
+ device -> version = version ;
1377
1382
if (device -> version >= IOAT_VER_3_4 )
1378
1383
ioat_dca_enabled = 0 ;
1379
- if (device -> version >= IOAT_VER_3_0 ) {
1380
- if (is_skx_ioat (pdev ))
1381
- device -> version = IOAT_VER_3_2 ;
1382
- err = ioat3_dma_probe (device , ioat_dca_enabled );
1383
- } else
1384
- return - ENODEV ;
1385
1384
1385
+ if (is_skx_ioat (pdev ))
1386
+ device -> version = IOAT_VER_3_2 ;
1387
+
1388
+ err = ioat3_dma_probe (device , ioat_dca_enabled );
1386
1389
if (err ) {
1387
1390
dev_err (dev , "Intel(R) I/OAT DMA Engine init failed\n" );
1388
1391
return - ENODEV ;
0 commit comments