xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@arm.com>
To: xen-devel@lists.xen.org
Cc: Julien Grall <julien.grall@arm.com>,
	sstabellini@kernel.org, shankerd@codeaurora.org
Subject: [PATCH 1/8] xen/arm: acpi: Handle correctly detection of GICv2 on GICv3
Date: Fri,  3 Feb 2017 19:18:45 +0000	[thread overview]
Message-ID: <1486149538-20432-2-git-send-email-julien.grall@arm.com> (raw)
In-Reply-To: <1486149538-20432-1-git-send-email-julien.grall@arm.com>

When the GICv3 is not GICv2 compatible, the associated field in the MADT
will be zeroed. However, the rest of the code expects the variable to
be set to INVALID_PADDR.

This will result to false detection of GICv2 and give I/O access to page
0 for the hardware domain.

Thankfully, it will fail because the size of GICV has not been set.

Fix the detection by converting 0 to INVALID_PADDR for the GICC and
GICV base. At the same time only set the size of each region when the
base address is not 0.

Signed-off-by: Julien Grall <julien.grall@arm.com>
---
 xen/arch/arm/gic-v3.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
index 955591b..bb1861e 100644
--- a/xen/arch/arm/gic-v3.c
+++ b/xen/arch/arm/gic-v3.c
@@ -1356,7 +1356,6 @@ gic_acpi_parse_madt_cpu(struct acpi_subtable_header *header,
     if ( !cpu_base_assigned )
     {
         cbase = processor->base_address;
-        csize = SZ_8K;
         vbase = processor->gicv_base_address;
         gicv3_info.maintenance_irq = processor->vgic_interrupt;
 
@@ -1505,6 +1504,25 @@ static void __init gicv3_acpi_init(void)
         panic("GICv3: No valid GICC entries exists");
 
     gicv3.rdist_stride = 0;
+
+    /*
+     * In ACPI, 0 is considered as the invalid address. However the rest
+     * of the initialization rely on the invalid address to be
+     * INVALID_ADDR.
+     *
+     * Also set the size of the GICC and GICV when there base address
+     * is not invalid as those values are not present in ACPI.
+     */
+    if ( !cbase )
+        cbase = INVALID_PADDR;
+    else
+        csize = SZ_8K;
+
+    if ( !vbase )
+        vbase = INVALID_PADDR;
+    else
+        vsize = GUEST_GICC_SIZE;
+
 }
 #else
 static void __init gicv3_acpi_init(void) { }
-- 
1.9.1


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

  reply	other threads:[~2017-02-03 19:18 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-03 19:18 [PATCH 0/8] xen/arm: Fix and clean-up for ACPI and EFI Julien Grall
2017-02-03 19:18 ` Julien Grall [this message]
2017-02-16  1:36   ` [PATCH 1/8] xen/arm: acpi: Handle correctly detection of GICv2 on GICv3 Stefano Stabellini
2017-02-03 19:18 ` [PATCH 1/7] xen/arm: acpi: Rework acpi_boot_table_init error paths Julien Grall
2017-02-03 22:09   ` Wei Liu
2017-02-03 19:18 ` [PATCH 2/7] xen/arm: acpi: Don't fallback on DT when user request ACPI Julien Grall
2017-02-03 19:18 ` [PATCH 2/8] xen/arm: acpi: Rework acpi_boot_table_init error paths Julien Grall
2017-02-03 20:44   ` Andrew Cooper
2017-02-08 18:25     ` Julien Grall
2017-02-16  1:39   ` Stefano Stabellini
2017-02-03 19:18 ` [PATCH 3/8] xen/arm: acpi: Don't fallback on DT when user request ACPI Julien Grall
2017-02-16  1:41   ` Stefano Stabellini
2017-02-20  8:47     ` Julien Grall
2017-02-20 18:12       ` Stefano Stabellini
2017-02-20 18:13         ` Julien Grall
2017-03-03 18:35           ` Julien Grall
2017-02-03 19:18 ` [PATCH 3/7] xen/arm: Print whether Xen is booting using ACPI or DT Julien Grall
2017-02-03 19:18 ` [PATCH 4/7] xen/arm: efi: Avoid duplicating the addition of a new bank Julien Grall
2017-02-03 19:18 ` [PATCH 4/8] xen/arm: Print whether Xen is booting using ACPI or DT Julien Grall
2017-02-16  1:42   ` Stefano Stabellini
2017-02-03 19:18 ` [PATCH 5/8] xen/arm: efi: Avoid duplicating the addition of a new bank Julien Grall
2017-02-16  1:47   ` Stefano Stabellini
2017-02-16  1:49     ` Stefano Stabellini
2017-03-03 18:31       ` Julien Grall
2017-02-03 19:18 ` [PATCH 6/8] xen/arm: efi: Avoid duplicating the addition of a new efi memory descriptor Julien Grall
2017-02-16  1:52   ` Stefano Stabellini
2017-02-03 19:18 ` [PATCH 6/7] xen/arm: efi: Rework acpi_create_efi_mmap_table to avoid memory_map[offset] Julien Grall
2017-02-03 19:18 ` [PATCH 7/7] xen/arm: acpi: Move the ACPI banks in bootinfo Julien Grall
2017-02-03 19:18 ` [PATCH 7/8] xen/arm: efi: Rework acpi_create_efi_mmap_table to avoid memory_map[offset] Julien Grall
2017-02-16  1:57   ` Stefano Stabellini
2017-02-03 19:18 ` [PATCH 8/8] xen/arm: acpi: Move the ACPI banks in bootinfo Julien Grall
2017-02-16  2:00   ` Stefano Stabellini
2017-02-16  1:58 ` [PATCH 0/8] xen/arm: Fix and clean-up for ACPI and EFI Stefano Stabellini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1486149538-20432-2-git-send-email-julien.grall@arm.com \
    --to=julien.grall@arm.com \
    --cc=shankerd@codeaurora.org \
    --cc=sstabellini@kernel.org \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).