From: Michael S. Tsirkin Date: Tue, 2 Dec 2014 12:35:27 +0000 (+0200) Subject: virtio_pci: add isr field X-Git-Tag: v4.9.8~5109^2~27 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=af535722f8f2ff057dc676ca3f0a99612cd6b02e;p=platform%2Fkernel%2Flinux-rpi3.git 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 --- diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c index 9be59d9..ee1b54c 100644 --- a/drivers/virtio/virtio_pci.c +++ b/drivers/virtio/virtio_pci.c @@ -40,6 +40,9 @@ struct virtio_pci_device /* the IO mapping for the PCI config space */ void __iomem *ioaddr; + /* the IO mapping for ISR operation */ + void __iomem *isr; + /* a list of queues so we can dispatch IRQs */ spinlock_t lock; struct list_head virtqueues; @@ -248,7 +251,7 @@ static irqreturn_t vp_interrupt(int irq, void *opaque) /* reading the ISR has the effect of also clearing it so it's very * important to save off the value. */ - isr = ioread8(vp_dev->ioaddr + VIRTIO_PCI_ISR); + isr = ioread8(vp_dev->isr); /* It's definitely not us if the ISR was not high */ if (!isr) @@ -719,6 +722,8 @@ static int virtio_pci_probe(struct pci_dev *pci_dev, goto out_req_regions; } + vp_dev->isr = vp_dev->ioaddr + VIRTIO_PCI_ISR; + pci_set_drvdata(pci_dev, vp_dev); pci_set_master(pci_dev);