From patchwork Thu May 26 10:30:10 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 820382 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p4QAUu30008898 for ; Thu, 26 May 2011 10:30:56 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757407Ab1EZKaw (ORCPT ); Thu, 26 May 2011 06:30:52 -0400 Received: from mail-ww0-f44.google.com ([74.125.82.44]:60477 "EHLO mail-ww0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754488Ab1EZKap (ORCPT ); Thu, 26 May 2011 06:30:45 -0400 Received: by mail-ww0-f44.google.com with SMTP id 36so599461wwa.1 for ; Thu, 26 May 2011 03:30:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references; bh=O6f0COtBWIH9CYQyYt9UUBP8LyaiOWOsKRhif3iQ1pk=; b=b0ua+rz5/vgnfbR+ZRR9jhB5B/B2lP0jAjoMzueBzrflmAlnnPy2MyuslNn+upDDJZ 3q3UCBkSGF75nLEElwBJJPr8+j03y1gprMHrhk9Uo8Su4pRMxZG9Vmvj+ReZvsSfOfsM GVe9MOdhJk+guPPJHPXaXxNciGbgjl2wg1wWE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; b=nmmMNhZjdincVDs5id1y57qa3CJ4lkB8kM8N8aIs96c6AcVug4eA9BP6mKjQ9Q4k+2 hl51pHkwUutmepw4170GHxTJEXQsUYLS5KoHrFPrW6Urdf9YZQQPKhKnzygxahrdJ/R+ rgo1lLOUTYdwzZbbPWWWbkYlKX4SXvMqF7cyg= Received: by 10.227.7.18 with SMTP id b18mr654871wbb.103.1306405845240; Thu, 26 May 2011 03:30:45 -0700 (PDT) Received: from localhost.localdomain ([109.66.201.145]) by mx.google.com with ESMTPS id et5sm365858wbb.33.2011.05.26.03.30.43 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 26 May 2011 03:30:44 -0700 (PDT) From: Sasha Levin To: penberg@kernel.org Cc: john@jfloren.net, kvm@vger.kernel.org, mingo@elte.hu, asias.hejun@gmail.com, gorcunov@gmail.com, prasadjoshi124@gmail.com, Sasha Levin Subject: [PATCH v3 7/8] kvm tools: Use dynamic IO port allocation in virtio-console Date: Thu, 26 May 2011 13:30:10 +0300 Message-Id: <1306405811-4482-7-git-send-email-levinsasha928@gmail.com> X-Mailer: git-send-email 1.7.5.rc3 In-Reply-To: <1306405811-4482-1-git-send-email-levinsasha928@gmail.com> References: <1306405811-4482-1-git-send-email-levinsasha928@gmail.com> Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Thu, 26 May 2011 10:30:56 +0000 (UTC) Signed-off-by: Sasha Levin --- tools/kvm/include/kvm/ioport.h | 2 -- tools/kvm/virtio/console.c | 11 +++++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/tools/kvm/include/kvm/ioport.h b/tools/kvm/include/kvm/ioport.h index 310f75d..4fccbd6 100644 --- a/tools/kvm/include/kvm/ioport.h +++ b/tools/kvm/include/kvm/ioport.h @@ -12,8 +12,6 @@ #define IOPORT_START 0x6200 #define IOPORT_SIZE 0x400 -#define IOPORT_VIRTIO_CONSOLE 0xd200 /* Virtio console device */ -#define IOPORT_VIRTIO_CONSOLE_SIZE 256 #define IOPORT_VIRTIO_NET 0xe200 /* Virtio network device */ #define IOPORT_VIRTIO_NET_SIZE 256 diff --git a/tools/kvm/virtio/console.c b/tools/kvm/virtio/console.c index 614f0d2..038e53f 100644 --- a/tools/kvm/virtio/console.c +++ b/tools/kvm/virtio/console.c @@ -36,7 +36,6 @@ static struct pci_device_header virtio_console_pci_device = { .class = 0x078000, .subsys_vendor_id = PCI_SUBSYSTEM_VENDOR_ID_REDHAT_QUMRANET, .subsys_id = VIRTIO_ID_CONSOLE, - .bar[0] = IOPORT_VIRTIO_CONSOLE | PCI_BASE_ADDRESS_SPACE_IO, }; struct con_dev { @@ -50,6 +49,7 @@ struct con_dev { u8 status; u8 isr; u16 queue_selector; + u16 base_addr; void *jobs[VIRTIO_CONSOLE_NUM_QUEUES]; }; @@ -113,7 +113,7 @@ static bool virtio_console_pci_io_device_specific_in(void *data, unsigned long o static bool virtio_console_pci_io_in(struct ioport *ioport, struct kvm *kvm, u16 port, void *data, int size, u32 count) { - unsigned long offset = port - IOPORT_VIRTIO_CONSOLE; + unsigned long offset = port - cdev.base_addr; bool ret = true; mutex_lock(&cdev.mutex); @@ -181,7 +181,7 @@ static void virtio_console_handle_callback(struct kvm *kvm, void *param) static bool virtio_console_pci_io_out(struct ioport *ioport, struct kvm *kvm, u16 port, void *data, int size, u32 count) { - unsigned long offset = port - IOPORT_VIRTIO_CONSOLE; + unsigned long offset = port - cdev.base_addr; bool ret = true; mutex_lock(&cdev.mutex); @@ -243,12 +243,15 @@ static struct ioport_operations virtio_console_io_ops = { void virtio_console__init(struct kvm *kvm) { u8 dev, line, pin; + u16 console_base_addr; if (irq__register_device(VIRTIO_ID_CONSOLE, &dev, &pin, &line) < 0) return; virtio_console_pci_device.irq_pin = pin; virtio_console_pci_device.irq_line = line; + console_base_addr = ioport__register(IOPORT_EMPTY, &virtio_console_io_ops, IOPORT_SIZE, NULL); + virtio_console_pci_device.bar[0] = console_base_addr | PCI_BASE_ADDRESS_SPACE_IO; + cdev.base_addr = console_base_addr; pci__register(&virtio_console_pci_device, dev); - ioport__register(IOPORT_VIRTIO_CONSOLE, &virtio_console_io_ops, IOPORT_VIRTIO_CONSOLE_SIZE, NULL); }