[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 11/66] isa: implement isa_is_ioport_assigned via mem
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 11/66] isa: implement isa_is_ioport_assigned via memory_region_find |
Date: |
Thu, 4 Jul 2013 17:13:07 +0200 |
From: Jan Kiszka <address@hidden>
Open-code isa_is_ioport_assigned via a memory region lookup. As all IO
ports are now directly or indirectly registered via the memory API, this
becomes possible and will finally allow us to drop the ioport tables.
Signed-off-by: Jan Kiszka <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/acpi/piix4.c | 9 +++++----
hw/isa/lpc_ich9.c | 9 +++++----
include/exec/ioport.h | 1 -
ioport.c | 7 -------
4 files changed, 10 insertions(+), 16 deletions(-)
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
index 756df3b..ff559c0 100644
--- a/hw/acpi/piix4.c
+++ b/hw/acpi/piix4.c
@@ -383,14 +383,15 @@ static void piix4_pm_powerdown_req(Notifier *n, void
*opaque)
static void piix4_pm_machine_ready(Notifier *n, void *opaque)
{
PIIX4PMState *s = container_of(n, PIIX4PMState, machine_ready);
+ MemoryRegion *io_as = pci_address_space_io(&s->dev);
uint8_t *pci_conf;
pci_conf = s->dev.config;
- pci_conf[0x5f] = (isa_is_ioport_assigned(0x378) ? 0x80 : 0) | 0x10;
+ pci_conf[0x5f] = 0x10 |
+ (memory_region_find(io_as, 0x378, 1).mr ? 0x80 : 0);
pci_conf[0x63] = 0x60;
- pci_conf[0x67] = (isa_is_ioport_assigned(0x3f8) ? 0x08 : 0) |
- (isa_is_ioport_assigned(0x2f8) ? 0x90 : 0);
-
+ pci_conf[0x67] = (memory_region_find(io_as, 0x3f8, 1).mr ? 0x08 : 0) |
+ (memory_region_find(io_as, 0x2f8, 1).mr ? 0x90 : 0);
}
static int piix4_pm_initfn(PCIDevice *dev)
diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
index 667e882..461ab7c 100644
--- a/hw/isa/lpc_ich9.c
+++ b/hw/isa/lpc_ich9.c
@@ -477,22 +477,23 @@ static const MemoryRegionOps rbca_mmio_ops = {
static void ich9_lpc_machine_ready(Notifier *n, void *opaque)
{
ICH9LPCState *s = container_of(n, ICH9LPCState, machine_ready);
+ MemoryRegion *io_as = pci_address_space_io(&s->d);
uint8_t *pci_conf;
pci_conf = s->d.config;
- if (isa_is_ioport_assigned(0x3f8)) {
+ if (memory_region_find(io_as, 0x3f8, 1).mr) {
/* com1 */
pci_conf[0x82] |= 0x01;
}
- if (isa_is_ioport_assigned(0x2f8)) {
+ if (memory_region_find(io_as, 0x2f8, 1).mr) {
/* com2 */
pci_conf[0x82] |= 0x02;
}
- if (isa_is_ioport_assigned(0x378)) {
+ if (memory_region_find(io_as, 0x378, 1).mr) {
/* lpt */
pci_conf[0x82] |= 0x04;
}
- if (isa_is_ioport_assigned(0x3f0)) {
+ if (memory_region_find(io_as, 0x3f0, 1).mr) {
/* floppy */
pci_conf[0x82] |= 0x08;
}
diff --git a/include/exec/ioport.h b/include/exec/ioport.h
index 4953892..eb99ffe 100644
--- a/include/exec/ioport.h
+++ b/include/exec/ioport.h
@@ -40,7 +40,6 @@ typedef void (IOPortDestructor)(void *opaque);
void ioport_register(IORange *iorange);
void isa_unassign_ioport(pio_addr_t start, int length);
-bool isa_is_ioport_assigned(pio_addr_t start);
void cpu_outb(pio_addr_t addr, uint8_t val);
void cpu_outw(pio_addr_t addr, uint16_t val);
diff --git a/ioport.c b/ioport.c
index d5b7fbd..56470c5 100644
--- a/ioport.c
+++ b/ioport.c
@@ -273,13 +273,6 @@ void isa_unassign_ioport(pio_addr_t start, int length)
}
}
-bool isa_is_ioport_assigned(pio_addr_t start)
-{
- return (ioport_read_table[0][start] || ioport_write_table[0][start] ||
- ioport_read_table[1][start] || ioport_write_table[1][start] ||
- ioport_read_table[2][start] || ioport_write_table[2][start]);
-}
-
/***********************************************************/
void cpu_outb(pio_addr_t addr, uint8_t val)
--
1.8.1.4
- Re: [Qemu-devel] [PATCH 03/66] dma: keep a device alive while it has SGLists, (continued)
[Qemu-devel] [PATCH 04/66] adlib: replace register_ioport*, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 05/66] applesmc: replace register_ioport*, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 06/66] wdt_ib700: replace register_ioport*, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 07/66] i82374: replace register_ioport*, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 08/66] prep: replace register_ioport*, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 09/66] vt82c686: replace register_ioport*, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 10/66] Privatize register_ioport_read/write, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 11/66] isa: implement isa_is_ioport_assigned via memory_region_find,
Paolo Bonzini <=
[Qemu-devel] [PATCH 12/66] vmware-vga: Accept unaligned I/O accesses, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 13/66] xen: Mark fixed platform I/O as unaligned, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 14/66] ioport: Switch dispatching to memory core layer, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 16/66] vmport: Disentangle read handler type from portio, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 15/66] ioport: Remove unused old dispatching services, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 17/66] ioport: Move portio types to ioport.h, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 19/66] memory: destroy phys_sections one by one, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 20/66] exec: simplify destruction of the phys map, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 21/66] memory: add getter for owner, Paolo Bonzini, 2013/07/04
[Qemu-devel] [PATCH 22/66] memory: add ref/unref, Paolo Bonzini, 2013/07/04