From patchwork Thu Jul 23 11:42:52 2015
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Pavel Fedin
X-Patchwork-Id: 499355
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))
(No client certificate requested)
by ozlabs.org (Postfix) with ESMTPS id 2F624140D19
for ;
Thu, 23 Jul 2015 21:43:22 +1000 (AEST)
Received: from localhost ([::1]:40660 helo=lists.gnu.org)
by lists.gnu.org with esmtp (Exim 4.71) (envelope-from
)
id 1ZIEuF-00018Z-Ny
for incoming@patchwork.ozlabs.org; Thu, 23 Jul 2015 07:43:19 -0400
Received: from eggs.gnu.org ([2001:4830:134:3::10]:52754)
by lists.gnu.org with esmtp (Exim 4.71)
(envelope-from ) id 1ZIEty-0000rS-DB
for qemu-devel@nongnu.org; Thu, 23 Jul 2015 07:43:03 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
(envelope-from ) id 1ZIEtu-0006a1-Uf
for qemu-devel@nongnu.org; Thu, 23 Jul 2015 07:43:02 -0400
Received: from mailout4.w1.samsung.com ([210.118.77.14]:53655)
by eggs.gnu.org with esmtp (Exim 4.71)
(envelope-from ) id 1ZIEtu-0006Zi-OL
for qemu-devel@nongnu.org; Thu, 23 Jul 2015 07:42:58 -0400
Received: from eucpsbgm2.samsung.com (unknown [203.254.199.245])
by mailout4.w1.samsung.com
(Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5
2014)) with ESMTP id <0NRX005QKV7H8140@mailout4.w1.samsung.com> for
qemu-devel@nongnu.org; Thu, 23 Jul 2015 12:42:53 +0100 (BST)
X-AuditID: cbfec7f5-f794b6d000001495-25-55b0d33d6495
Received: from eusync3.samsung.com ( [203.254.199.213])
by eucpsbgm2.samsung.com (EUCPMTA) with SMTP id E8.E1.05269.D33D0B55;
Thu, 23 Jul 2015 12:42:53 +0100 (BST)
Received: from fedinw7x64 ([106.109.131.169])
by eusync3.samsung.com (Oracle Communications Messaging Server
7.0.5.31.0 64bit (built May 5 2014))
with ESMTPA id <0NRX00JBRV7GZ700@eusync3.samsung.com>; Thu,
23 Jul 2015 12:42:53 +0100 (BST)
From: Pavel Fedin
To: 'QEMU Developers'
Date: Thu, 23 Jul 2015 14:42:52 +0300
Message-id: <01d301d0c53c$b5f1d9a0$21d58ce0$@samsung.com>
MIME-version: 1.0
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7bit
X-Mailer: Microsoft Outlook 14.0
Thread-index: AdDFPLVu3kWh1S+CRYa7R5cRDK2xMw==
Content-language: ru
X-Brightmail-Tracker:
H4sIAAAAAAAAA+NgFrrELMWRmVeSWpSXmKPExsVy+t/xq7q2lzeEGjx6KGdx4so/RovTRzuY
LeacecBicbx3B4sDi8eda3vYPJ5c28zk8X7fVTaPzaerA1iiuGxSUnMyy1KL9O0SuDIOzljB
UtAvUdHxaQp7A+NVwS5GTg4JAROJqW+XMkPYYhIX7q1n62Lk4hASWMoosXbJPTaQhJDAd0aJ
B5NqQGw2AXWJ018/sIDYIgK6EvtfTgSzmQUqJd48egFmCwvYS8z+8ZAVxGYRUJWY8vgU2AJe
AUuJN6v3Q9mCEj8m34Pq1ZJYv/M4E4QtL7F5zVuogxQkdpx9zdjFyAG0S0/i3zJ5iBIRiWn/
7jFPYBSYhWTSLCSTZiGZNAtJywJGllWMoqmlyQXFSem5RnrFibnFpXnpesn5uZsYISH9dQfj
0mNWhxgFOBiVeHh/+GwIFWJNLCuuzD3EKMHBrCTCm3gSKMSbklhZlVqUH19UmpNafIhRmoNF
SZx35q73IUIC6YklqdmpqQWpRTBZJg5OqQZGr4SXWgv7Xzw5zDVRdKPGxsVKfM/t0z41ycmd
LzRutKw+uI13wx0/VgvGnP1voydHbNilWSAf+dXu1SIpjrlS3bynjGLTv3OWfTbacFXsx8UQ
CYOpEb/fa61os9hdf27yo5wKrtlKN3VP2NvcydWXXBq9fBabe23CW65/miEFG7IdN2UtMjir
xFKckWioxVxUnAgAJS62nWUCAAA=
X-detected-operating-system: by eggs.gnu.org: Genre and OS details not
recognized.
X-Received-From: 210.118.77.14
Cc: 'Peter Maydell' ,
'Alexander Graf' , 'Igor Mammedov'
Subject: [Qemu-devel] [PATCH] arm/virt: Add high MMIO PCI region, 2G in size
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
This large region is necessary for some devices like ivshmem and video cards
Signed-off-by: Pavel Fedin
---
A small merge conflict in virt.h is possible when applying the patch to current master. It is
caused by change made by my vGICv3 series (VIRT_GIC_V2M changed).
---
hw/arm/virt.c | 13 ++++++++++++-
include/hw/arm/virt.h | 1 +
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index e798f72..a9badec 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -125,6 +125,7 @@ static const MemMapEntry a15memmap[] = {
[VIRT_PCIE_PIO] = { 0x3eff0000, 0x00010000 },
[VIRT_PCIE_ECAM] = { 0x3f000000, 0x01000000 },
[VIRT_MEM] = { 0x40000000, 30ULL * 1024 * 1024 * 1024 },
+ [VIRT_PCIE_MMIO_HIGH] = {0x800000000, 0x80000000 },
};
static const int a15irqmap[] = {
@@ -759,6 +760,8 @@ static void create_pcie(const VirtBoardInfo *vbi, qemu_irq *pic)
hwaddr size_pio = vbi->memmap[VIRT_PCIE_PIO].size;
hwaddr base_ecam = vbi->memmap[VIRT_PCIE_ECAM].base;
hwaddr size_ecam = vbi->memmap[VIRT_PCIE_ECAM].size;
+ hwaddr base_mmio_high = vbi->memmap[VIRT_PCIE_MMIO_HIGH].base;
+ hwaddr size_mmio_high = vbi->memmap[VIRT_PCIE_MMIO_HIGH].size;
hwaddr base = base_mmio;
int nr_pcie_buses = size_ecam / PCIE_MMCFG_SIZE_MIN;
int irq = vbi->irqmap[VIRT_PCIE];
@@ -794,6 +797,12 @@ static void create_pcie(const VirtBoardInfo *vbi, qemu_irq *pic)
/* Map IO port space */
sysbus_mmio_map(SYS_BUS_DEVICE(dev), 2, base_pio);
+ /* High MMIO space */
+ mmio_alias = g_new0(MemoryRegion, 1);
+ memory_region_init_alias(mmio_alias, OBJECT(dev), "pcie-mmio-high",
+ mmio_reg, base_mmio_high, size_mmio_high);
+ memory_region_add_subregion(get_system_memory(), base_mmio_high, mmio_alias);
+
for (i = 0; i < GPEX_NUM_IRQS; i++) {
sysbus_connect_irq(SYS_BUS_DEVICE(dev), i, pic[irq + i]);
}
@@ -819,7 +828,9 @@ static void create_pcie(const VirtBoardInfo *vbi, qemu_irq *pic)
1, FDT_PCI_RANGE_IOPORT, 2, 0,
2, base_pio, 2, size_pio,
1, FDT_PCI_RANGE_MMIO, 2, base_mmio,
- 2, base_mmio, 2, size_mmio);
+ 2, base_mmio, 2, size_mmio,
+ 1, FDT_PCI_RANGE_MMIO, 2, base_mmio_high,
+ 2, base_mmio_high, 2, size_mmio_high);
qemu_fdt_setprop_cell(vbi->fdt, nodename, "#interrupt-cells", 1);
create_pcie_irq_map(vbi, vbi->gic_phandle, irq, nodename);
diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
index 852efb9..1d43598 100644
--- a/include/hw/arm/virt.h
+++ b/include/hw/arm/virt.h
@@ -60,6 +60,7 @@ enum {
VIRT_PCIE_PIO,
VIRT_PCIE_ECAM,
VIRT_PLATFORM_BUS,
+ VIRT_PCIE_MMIO_HIGH,
};
typedef struct MemMapEntry {