hc
2024-05-10 61598093bbdd283a7edc367d900f223070ead8d2
kernel/drivers/block/umem.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * mm.c - Micro Memory(tm) PCI memory board block device driver - v2.3
34 *
....@@ -7,10 +8,6 @@
78 *
89 * This driver for the Micro Memory PCI Memory Module with Battery Backup
910 * is Copyright Micro Memory Inc 2001-2002. All rights reserved.
10
- *
11
- * This driver is released to the public under the terms of the
12
- * GNU GENERAL PUBLIC LICENSE version 2
13
- * See the file COPYING for details.
1411 *
1512 * This driver provides a standard block device interface for Micro Memory(tm)
1613 * PCI based RAM boards.
....@@ -363,12 +360,12 @@
363360
364361 vec = bio_iter_iovec(bio, card->current_iter);
365362
366
- dma_handle = pci_map_page(card->dev,
363
+ dma_handle = dma_map_page(&card->dev->dev,
367364 vec.bv_page,
368365 vec.bv_offset,
369366 vec.bv_len,
370367 bio_op(bio) == REQ_OP_READ ?
371
- PCI_DMA_FROMDEVICE : PCI_DMA_TODEVICE);
368
+ DMA_FROM_DEVICE : DMA_TO_DEVICE);
372369
373370 p = &card->mm_pages[card->Ready];
374371 desc = &p->desc[p->cnt];
....@@ -421,7 +418,7 @@
421418 struct cardinfo *card = (struct cardinfo *)data;
422419 unsigned int dma_status = card->dma_status;
423420
424
- spin_lock_bh(&card->lock);
421
+ spin_lock(&card->lock);
425422 if (card->Active < 0)
426423 goto out_unlock;
427424 page = &card->mm_pages[card->Active];
....@@ -448,10 +445,10 @@
448445 page->iter = page->bio->bi_iter;
449446 }
450447
451
- pci_unmap_page(card->dev, desc->data_dma_handle,
448
+ dma_unmap_page(&card->dev->dev, desc->data_dma_handle,
452449 vec.bv_len,
453450 (control & DMASCR_TRANSFER_READ) ?
454
- PCI_DMA_TODEVICE : PCI_DMA_FROMDEVICE);
451
+ DMA_TO_DEVICE : DMA_FROM_DEVICE);
455452 if (control & DMASCR_HARD_ERROR) {
456453 /* error */
457454 bio->bi_status = BLK_STS_IOERR;
....@@ -496,7 +493,7 @@
496493 mm_start_io(card);
497494 }
498495 out_unlock:
499
- spin_unlock_bh(&card->lock);
496
+ spin_unlock(&card->lock);
500497
501498 while (return_bio) {
502499 struct bio *bio = return_bio;
....@@ -522,14 +519,15 @@
522519 return !!blk_check_plugged(mm_unplug, card, sizeof(struct blk_plug_cb));
523520 }
524521
525
-static blk_qc_t mm_make_request(struct request_queue *q, struct bio *bio)
522
+static blk_qc_t mm_submit_bio(struct bio *bio)
526523 {
527
- struct cardinfo *card = q->queuedata;
524
+ struct cardinfo *card = bio->bi_disk->private_data;
525
+
528526 pr_debug("mm_make_request %llu %u\n",
529527 (unsigned long long)bio->bi_iter.bi_sector,
530528 bio->bi_iter.bi_size);
531529
532
- blk_queue_split(q, &bio);
530
+ blk_queue_split(&bio);
533531
534532 spin_lock_irq(&card->lock);
535533 *card->biotail = bio;
....@@ -781,13 +779,14 @@
781779
782780 static const struct block_device_operations mm_fops = {
783781 .owner = THIS_MODULE,
782
+ .submit_bio = mm_submit_bio,
784783 .getgeo = mm_getgeo,
785784 .revalidate_disk = mm_revalidate,
786785 };
787786
788787 static int mm_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
789788 {
790
- int ret = -ENODEV;
789
+ int ret;
791790 struct cardinfo *card = &cards[num_cards];
792791 unsigned char mem_present;
793792 unsigned char batt_status;
....@@ -817,8 +816,8 @@
817816 dev_printk(KERN_INFO, &dev->dev,
818817 "Micro Memory(tm) controller found (PCI Mem Module (Battery Backup))\n");
819818
820
- if (pci_set_dma_mask(dev, DMA_BIT_MASK(64)) &&
821
- pci_set_dma_mask(dev, DMA_BIT_MASK(32))) {
819
+ if (dma_set_mask(&dev->dev, DMA_BIT_MASK(64)) &&
820
+ dma_set_mask(&dev->dev, DMA_BIT_MASK(32))) {
822821 dev_printk(KERN_WARNING, &dev->dev, "NO suitable DMA found\n");
823822 return -ENOMEM;
824823 }
....@@ -830,7 +829,7 @@
830829 goto failed_req_csr;
831830 }
832831
833
- card->csr_remap = ioremap_nocache(csr_base, csr_len);
832
+ card->csr_remap = ioremap(csr_base, csr_len);
834833 if (!card->csr_remap) {
835834 dev_printk(KERN_ERR, &card->dev->dev,
836835 "Unable to remap memory region\n");
....@@ -871,15 +870,14 @@
871870 goto failed_magic;
872871 }
873872
874
- card->mm_pages[0].desc = pci_alloc_consistent(card->dev,
875
- PAGE_SIZE * 2,
876
- &card->mm_pages[0].page_dma);
877
- card->mm_pages[1].desc = pci_alloc_consistent(card->dev,
878
- PAGE_SIZE * 2,
879
- &card->mm_pages[1].page_dma);
873
+ card->mm_pages[0].desc = dma_alloc_coherent(&card->dev->dev,
874
+ PAGE_SIZE * 2, &card->mm_pages[0].page_dma, GFP_KERNEL);
875
+ card->mm_pages[1].desc = dma_alloc_coherent(&card->dev->dev,
876
+ PAGE_SIZE * 2, &card->mm_pages[1].page_dma, GFP_KERNEL);
880877 if (card->mm_pages[0].desc == NULL ||
881878 card->mm_pages[1].desc == NULL) {
882879 dev_printk(KERN_ERR, &card->dev->dev, "alloc failed\n");
880
+ ret = -ENOMEM;
883881 goto failed_alloc;
884882 }
885883 reset_page(&card->mm_pages[0]);
....@@ -890,13 +888,11 @@
890888 card->biotail = &card->bio;
891889 spin_lock_init(&card->lock);
892890
893
- card->queue = blk_alloc_queue_node(GFP_KERNEL, NUMA_NO_NODE,
894
- &card->lock);
895
- if (!card->queue)
891
+ card->queue = blk_alloc_queue(NUMA_NO_NODE);
892
+ if (!card->queue) {
893
+ ret = -ENOMEM;
896894 goto failed_alloc;
897
-
898
- blk_queue_make_request(card->queue, mm_make_request);
899
- card->queue->queuedata = card;
895
+ }
900896
901897 tasklet_init(&card->tasklet, process_page, (unsigned long)card);
902898
....@@ -1002,13 +998,13 @@
1002998 failed_req_irq:
1003999 failed_alloc:
10041000 if (card->mm_pages[0].desc)
1005
- pci_free_consistent(card->dev, PAGE_SIZE*2,
1006
- card->mm_pages[0].desc,
1007
- card->mm_pages[0].page_dma);
1001
+ dma_free_coherent(&card->dev->dev, PAGE_SIZE * 2,
1002
+ card->mm_pages[0].desc,
1003
+ card->mm_pages[0].page_dma);
10081004 if (card->mm_pages[1].desc)
1009
- pci_free_consistent(card->dev, PAGE_SIZE*2,
1010
- card->mm_pages[1].desc,
1011
- card->mm_pages[1].page_dma);
1005
+ dma_free_coherent(&card->dev->dev, PAGE_SIZE * 2,
1006
+ card->mm_pages[1].desc,
1007
+ card->mm_pages[1].page_dma);
10121008 failed_magic:
10131009 iounmap(card->csr_remap);
10141010 failed_remap_csr:
....@@ -1027,11 +1023,11 @@
10271023 iounmap(card->csr_remap);
10281024
10291025 if (card->mm_pages[0].desc)
1030
- pci_free_consistent(card->dev, PAGE_SIZE*2,
1026
+ dma_free_coherent(&card->dev->dev, PAGE_SIZE * 2,
10311027 card->mm_pages[0].desc,
10321028 card->mm_pages[0].page_dma);
10331029 if (card->mm_pages[1].desc)
1034
- pci_free_consistent(card->dev, PAGE_SIZE*2,
1030
+ dma_free_coherent(&card->dev->dev, PAGE_SIZE * 2,
10351031 card->mm_pages[1].desc,
10361032 card->mm_pages[1].page_dma);
10371033 blk_cleanup_queue(card->queue);