From b37c049ef4a81413117616508e25dcda7bff50c1 Mon Sep 17 00:00:00 2001 From: Zhao Yakui Date: Fri, 20 Apr 2018 10:42:13 +0800 Subject: [PATCH] HV: Use mmio_read/write_long for IOAPIC mmio-access This is to do the clean-up of IOAPIC mmio-access. Use the same API to access the IOAPIC register. At the same time it also helps to avoid the optimization in direct access mode.(The volatile is already added in mmio_read_long/mmio_write_long) V1->V2: Follow Fengwei's suggestion to use the mmio_read/write_long Signed-off-by: Zhao Yakui Reviewed-by: Yin Fengwei --- hypervisor/arch/x86/ioapic.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hypervisor/arch/x86/ioapic.c b/hypervisor/arch/x86/ioapic.c index 1baf697bd..19d1c4a94 100644 --- a/hypervisor/arch/x86/ioapic.c +++ b/hypervisor/arch/x86/ioapic.c @@ -95,9 +95,9 @@ ioapic_read_reg32(const void *ioapic_base, const uint8_t offset) spinlock_irqsave_obtain(&ioapic_lock); /* Write IOREGSEL */ - *(uint32_t *)(ioapic_base) = offset; + mmio_write_long(offset, (void *)ioapic_base); /* Read IOWIN */ - v = *(uint32_t *)(ioapic_base + IOAPIC_WINSWL_OFFSET); + v = mmio_read_long((void *)ioapic_base + IOAPIC_WINSWL_OFFSET); spinlock_irqrestore_release(&ioapic_lock); return v; @@ -112,9 +112,9 @@ ioapic_write_reg32(const void *ioapic_base, spinlock_irqsave_obtain(&ioapic_lock); /* Write IOREGSEL */ - *(uint32_t *)(ioapic_base) = offset; + mmio_write_long(offset, (void *)ioapic_base); /* Write IOWIN */ - *(uint32_t *)(ioapic_base + IOAPIC_WINSWL_OFFSET) = value; + mmio_write_long(value, (void *)ioapic_base + IOAPIC_WINSWL_OFFSET); spinlock_irqrestore_release(&ioapic_lock); }