aboutsummaryrefslogtreecommitdiff
path: root/drivers/parisc
diff options
context:
space:
mode:
authorGravatar Helge Deller <deller@gmx.de> 2023-08-21 17:29:18 +0200
committerGravatar Helge Deller <deller@gmx.de> 2023-08-22 10:24:47 +0200
commit8f01caf0c5c14b2dc086c766cf5321fbcdc40bd1 (patch)
tree6371d5b0841e6a8d559f9356ddcc175cdae512c8 /drivers/parisc
parentparisc: unaligned: Simplify 32-bit assembly in emulate_std() (diff)
downloadlinux-8f01caf0c5c14b2dc086c766cf5321fbcdc40bd1.tar.gz
linux-8f01caf0c5c14b2dc086c766cf5321fbcdc40bd1.tar.bz2
linux-8f01caf0c5c14b2dc086c766cf5321fbcdc40bd1.zip
parisc: Avoid ioremap() for same addresss in iosapic_register()
The LBA has already called ioremap() to get it's virtual address, which can be used for the IOSAPIC as well. Avoid calling ioremap() again and just reuse the correct iomem address for the IOSAPIC. Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'drivers/parisc')
-rw-r--r--drivers/parisc/iosapic.c4
-rw-r--r--drivers/parisc/lba_pci.c3
2 files changed, 4 insertions, 3 deletions
diff --git a/drivers/parisc/iosapic.c b/drivers/parisc/iosapic.c
index bcc1dae00780..27478e9f4e84 100644
--- a/drivers/parisc/iosapic.c
+++ b/drivers/parisc/iosapic.c
@@ -890,7 +890,7 @@ iosapic_rd_version(struct iosapic_info *isi)
** o allocate and initialize isi_vector[]
** o allocate irq region
*/
-void *iosapic_register(unsigned long hpa)
+void *iosapic_register(unsigned long hpa, void __iomem *vaddr)
{
struct iosapic_info *isi = NULL;
struct irt_entry *irte = irt_cell;
@@ -919,7 +919,7 @@ void *iosapic_register(unsigned long hpa)
return NULL;
}
- isi->addr = ioremap(hpa, 4096);
+ isi->addr = vaddr;
isi->isi_hpa = hpa;
isi->isi_version = iosapic_rd_version(isi);
isi->isi_num_vectors = IOSAPIC_IRDT_MAX_ENTRY(isi->isi_version) + 1;
diff --git a/drivers/parisc/lba_pci.c b/drivers/parisc/lba_pci.c
index 702bfd64e6e1..9e22b117fb3a 100644
--- a/drivers/parisc/lba_pci.c
+++ b/drivers/parisc/lba_pci.c
@@ -1535,7 +1535,8 @@ lba_driver_probe(struct parisc_device *dev)
}
/* Tell I/O SAPIC driver we have a IRQ handler/region. */
- tmp_obj = iosapic_register(dev->hpa.start + LBA_IOSAPIC_BASE);
+ tmp_obj = iosapic_register(dev->hpa.start + LBA_IOSAPIC_BASE,
+ addr + LBA_IOSAPIC_BASE);
/* NOTE: PCI devices (e.g. 103c:1005 graphics card) which don't
** have an IRT entry will get NULL back from iosapic code.