All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] ARM: qemu-arm: Fix qemu_arm64_defconfig for QEMU 3.0
@ 2018-09-04 15:16 Tuomas Tynkkynen
  2018-09-04 16:54 ` Jonathan Gray
  2018-09-06 13:45 ` [U-Boot] " Tom Rini
  0 siblings, 2 replies; 3+ messages in thread
From: Tuomas Tynkkynen @ 2018-09-04 15:16 UTC (permalink / raw)
  To: u-boot

QEMU 3.0 introduced additional memory-mapped regions for PCI-E ECAM and
MMIO. Thus we need to add them to our MMU map or U-Boot will crash with
a Synchronous Abort during PCI-E probing when it tries to access the
unmapped ECAM memory area.

Reported-by: Jonathan Gray <jsg@jsg.id.au>
Signed-off-by: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
---
 board/emulation/qemu-arm/qemu-arm.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/board/emulation/qemu-arm/qemu-arm.c b/board/emulation/qemu-arm/qemu-arm.c
index 1f5a33d520..812c90636d 100644
--- a/board/emulation/qemu-arm/qemu-arm.c
+++ b/board/emulation/qemu-arm/qemu-arm.c
@@ -17,7 +17,7 @@ static struct mm_region qemu_arm64_mem_map[] = {
 		.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
 			 PTE_BLOCK_INNER_SHARE
 	}, {
-		/* Peripherals */
+		/* Lowmem peripherals */
 		.virt = 0x08000000UL,
 		.phys = 0x08000000UL,
 		.size = 0x38000000,
@@ -31,6 +31,22 @@ static struct mm_region qemu_arm64_mem_map[] = {
 		.size = 255UL * SZ_1G,
 		.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
 			 PTE_BLOCK_INNER_SHARE
+	}, {
+		/* Highmem PCI-E ECAM memory area */
+		.virt = 0x4010000000ULL,
+		.phys = 0x4010000000ULL,
+		.size = 0x10000000,
+		.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
+			 PTE_BLOCK_NON_SHARE |
+			 PTE_BLOCK_PXN | PTE_BLOCK_UXN
+	}, {
+		/* Highmem PCI-E MMIO memory area */
+		.virt = 0x8000000000ULL,
+		.phys = 0x8000000000ULL,
+		.size = 0x8000000000ULL,
+		.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
+			 PTE_BLOCK_NON_SHARE |
+			 PTE_BLOCK_PXN | PTE_BLOCK_UXN
 	}, {
 		/* List terminator */
 		0,
-- 
2.16.3

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [U-Boot] [PATCH] ARM: qemu-arm: Fix qemu_arm64_defconfig for QEMU 3.0
  2018-09-04 15:16 [U-Boot] [PATCH] ARM: qemu-arm: Fix qemu_arm64_defconfig for QEMU 3.0 Tuomas Tynkkynen
@ 2018-09-04 16:54 ` Jonathan Gray
  2018-09-06 13:45 ` [U-Boot] " Tom Rini
  1 sibling, 0 replies; 3+ messages in thread
From: Jonathan Gray @ 2018-09-04 16:54 UTC (permalink / raw)
  To: u-boot

On Tue, Sep 04, 2018 at 06:16:52PM +0300, Tuomas Tynkkynen wrote:
> QEMU 3.0 introduced additional memory-mapped regions for PCI-E ECAM and
> MMIO. Thus we need to add them to our MMU map or U-Boot will crash with
> a Synchronous Abort during PCI-E probing when it tries to access the
> unmapped ECAM memory area.
> 
> Reported-by: Jonathan Gray <jsg@jsg.id.au>
> Signed-off-by: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>

Thanks, qemu-system-aarch64 -M virt works without having to disable
highmem with this.

Tested-by: Jonathan Gray <jsg@jsg.id.au>

> ---
>  board/emulation/qemu-arm/qemu-arm.c | 18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/board/emulation/qemu-arm/qemu-arm.c b/board/emulation/qemu-arm/qemu-arm.c
> index 1f5a33d520..812c90636d 100644
> --- a/board/emulation/qemu-arm/qemu-arm.c
> +++ b/board/emulation/qemu-arm/qemu-arm.c
> @@ -17,7 +17,7 @@ static struct mm_region qemu_arm64_mem_map[] = {
>  		.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
>  			 PTE_BLOCK_INNER_SHARE
>  	}, {
> -		/* Peripherals */
> +		/* Lowmem peripherals */
>  		.virt = 0x08000000UL,
>  		.phys = 0x08000000UL,
>  		.size = 0x38000000,
> @@ -31,6 +31,22 @@ static struct mm_region qemu_arm64_mem_map[] = {
>  		.size = 255UL * SZ_1G,
>  		.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
>  			 PTE_BLOCK_INNER_SHARE
> +	}, {
> +		/* Highmem PCI-E ECAM memory area */
> +		.virt = 0x4010000000ULL,
> +		.phys = 0x4010000000ULL,
> +		.size = 0x10000000,
> +		.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
> +			 PTE_BLOCK_NON_SHARE |
> +			 PTE_BLOCK_PXN | PTE_BLOCK_UXN
> +	}, {
> +		/* Highmem PCI-E MMIO memory area */
> +		.virt = 0x8000000000ULL,
> +		.phys = 0x8000000000ULL,
> +		.size = 0x8000000000ULL,
> +		.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
> +			 PTE_BLOCK_NON_SHARE |
> +			 PTE_BLOCK_PXN | PTE_BLOCK_UXN
>  	}, {
>  		/* List terminator */
>  		0,
> -- 
> 2.16.3
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [U-Boot] ARM: qemu-arm: Fix qemu_arm64_defconfig for QEMU 3.0
  2018-09-04 15:16 [U-Boot] [PATCH] ARM: qemu-arm: Fix qemu_arm64_defconfig for QEMU 3.0 Tuomas Tynkkynen
  2018-09-04 16:54 ` Jonathan Gray
@ 2018-09-06 13:45 ` Tom Rini
  1 sibling, 0 replies; 3+ messages in thread
From: Tom Rini @ 2018-09-06 13:45 UTC (permalink / raw)
  To: u-boot

On Tue, Sep 04, 2018 at 06:16:52PM +0300, Tuomas Tynkkynen wrote:

> QEMU 3.0 introduced additional memory-mapped regions for PCI-E ECAM and
> MMIO. Thus we need to add them to our MMU map or U-Boot will crash with
> a Synchronous Abort during PCI-E probing when it tries to access the
> unmapped ECAM memory area.
> 
> Reported-by: Jonathan Gray <jsg@jsg.id.au>
> Signed-off-by: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
> Tested-by: Jonathan Gray <jsg@jsg.id.au>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180906/b816a039/attachment.sig>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-09-06 13:45 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-04 15:16 [U-Boot] [PATCH] ARM: qemu-arm: Fix qemu_arm64_defconfig for QEMU 3.0 Tuomas Tynkkynen
2018-09-04 16:54 ` Jonathan Gray
2018-09-06 13:45 ` [U-Boot] " Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.