diff options
| author | Michael S. Tsirkin <mst@redhat.com> | 2014-12-02 07:35:27 -0500 |
|---|---|---|
| committer | Michael S. Tsirkin <mst@redhat.com> | 2014-12-09 14:42:00 -0500 |
| commit | af535722f8f2ff057dc676ca3f0a99612cd6b02e (patch) | |
| tree | cbb10af471c6287b04ebfd474befe9b4bd66e1d5 /drivers/virtio | |
| parent | d71a6fc6b97fba1de999c6f0fab5c75544afab76 (diff) | |
virtio_pci: add isr field
Use isr field instead of direct access to ioaddr.
This way generalizes easily to virtio 1.0.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'drivers/virtio')
| -rw-r--r-- | drivers/virtio/virtio_pci.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c index 9be59d9f2f19..ee1b54c93913 100644 --- a/drivers/virtio/virtio_pci.c +++ b/drivers/virtio/virtio_pci.c | |||
| @@ -40,6 +40,9 @@ struct virtio_pci_device | |||
| 40 | /* the IO mapping for the PCI config space */ | 40 | /* the IO mapping for the PCI config space */ |
| 41 | void __iomem *ioaddr; | 41 | void __iomem *ioaddr; |
| 42 | 42 | ||
| 43 | /* the IO mapping for ISR operation */ | ||
| 44 | void __iomem *isr; | ||
| 45 | |||
| 43 | /* a list of queues so we can dispatch IRQs */ | 46 | /* a list of queues so we can dispatch IRQs */ |
| 44 | spinlock_t lock; | 47 | spinlock_t lock; |
| 45 | struct list_head virtqueues; | 48 | struct list_head virtqueues; |
| @@ -248,7 +251,7 @@ static irqreturn_t vp_interrupt(int irq, void *opaque) | |||
| 248 | 251 | ||
| 249 | /* reading the ISR has the effect of also clearing it so it's very | 252 | /* reading the ISR has the effect of also clearing it so it's very |
| 250 | * important to save off the value. */ | 253 | * important to save off the value. */ |
| 251 | isr = ioread8(vp_dev->ioaddr + VIRTIO_PCI_ISR); | 254 | isr = ioread8(vp_dev->isr); |
| 252 | 255 | ||
| 253 | /* It's definitely not us if the ISR was not high */ | 256 | /* It's definitely not us if the ISR was not high */ |
| 254 | if (!isr) | 257 | if (!isr) |
| @@ -719,6 +722,8 @@ static int virtio_pci_probe(struct pci_dev *pci_dev, | |||
| 719 | goto out_req_regions; | 722 | goto out_req_regions; |
| 720 | } | 723 | } |
| 721 | 724 | ||
| 725 | vp_dev->isr = vp_dev->ioaddr + VIRTIO_PCI_ISR; | ||
| 726 | |||
| 722 | pci_set_drvdata(pci_dev, vp_dev); | 727 | pci_set_drvdata(pci_dev, vp_dev); |
| 723 | pci_set_master(pci_dev); | 728 | pci_set_master(pci_dev); |
| 724 | 729 | ||
