From patchwork Thu Jul 4 15:13:07 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 256978 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 2573F2C008A for ; Fri, 5 Jul 2013 02:57:58 +1000 (EST) Received: from localhost ([::1]:44547 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UulH3-0002q2-Ki for incoming@patchwork.ozlabs.org; Thu, 04 Jul 2013 11:16:45 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44443) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UulEz-0008GW-BN for qemu-devel@nongnu.org; Thu, 04 Jul 2013 11:14:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UulEx-0004uW-Ua for qemu-devel@nongnu.org; Thu, 04 Jul 2013 11:14:37 -0400 Received: from mail-wg0-x232.google.com ([2a00:1450:400c:c00::232]:45961) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UulEx-0004uJ-Nm for qemu-devel@nongnu.org; Thu, 04 Jul 2013 11:14:35 -0400 Received: by mail-wg0-f50.google.com with SMTP id k14so1246868wgh.29 for ; Thu, 04 Jul 2013 08:14:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=YNiVyuzZJp3l9jcVpPx4pFlasaUNS02NdGwoiT9T1p4=; b=TRZ6fnKJE3IObNr6DgSdi2+ZIRuY9+fNdKJ87R/XwsVxTnaDU0V5WRd8cUiMTrIqdS Q2Bl5qlejU69CkV6HoIQQejD24CCC5J6SErAsRc9H+e/kNjn4G+ARaLC/tX5wsdtj29i x4tTJYPxF87zXNNq3i6jq1DR87ZHEpDpbdyFi+5aP7n5eDVpp/QtTs+SNScJ8XfAbY+j NCcJQAHcLmNelwiEueRl6eiTIGylxoG01jzpwH0aVEhsCQZF/KWh/MptLUo9Gk/cFJ6Y P0TzuArUSPLS+XduG5HJ8H1ypIrMzNDQZDrVDTWzowlgPYclumw4dXeK9btQ6YLT3Hyb S3kw== X-Received: by 10.180.183.202 with SMTP id eo10mr21539296wic.2.1372950875125; Thu, 04 Jul 2013 08:14:35 -0700 (PDT) Received: from playground.station (net-37-117-148-210.cust.dsl.vodafone.it. [37.117.148.210]) by mx.google.com with ESMTPSA id d8sm4212546wiz.0.2013.07.04.08.14.33 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Thu, 04 Jul 2013 08:14:34 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 4 Jul 2013 17:13:07 +0200 Message-Id: <1372950842-32422-12-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.1.4 In-Reply-To: <1372950842-32422-1-git-send-email-pbonzini@redhat.com> References: <1372950842-32422-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:400c:c00::232 Cc: Jan Kiszka Subject: [Qemu-devel] [PATCH 11/66] isa: implement isa_is_ioport_assigned via memory_region_find X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Jan Kiszka 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 Signed-off-by: Paolo Bonzini --- 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)