Patchwork hw/armv7m_nvic: Correctly register GIC region when setting up NVIC

login
register
mail settings
Submitter Meador Inge
Date Aug. 27, 2012, 11:41 p.m.
Message ID <1346110871-11631-1-git-send-email-meadori@codesourcery.com>
Download mbox | patch
Permalink /patch/180315/
State New
Headers show

Comments

Meador Inge - Aug. 27, 2012, 11:41 p.m.
When setting up the NVIC memory regions the memory range
0x100..0xcff is aliased to an IO memory region that belongs
to the ARM GIC.  This aliased region should be added to the
NVIC memory container, but the actual GIC IO memory region
was being added instead.  This mixup was causing the wrong
IO memory access functions to be called when accessing parts
of the NVIC memory.

Signed-off-by: Meador Inge <meadori@codesourcery.com>
---
 hw/armv7m_nvic.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
Peter Maydell - Aug. 28, 2012, 12:32 p.m.
On 28 August 2012 00:41, Meador Inge <meadori@codesourcery.com> wrote:
> When setting up the NVIC memory regions the memory range
> 0x100..0xcff is aliased to an IO memory region that belongs
> to the ARM GIC.  This aliased region should be added to the
> NVIC memory container, but the actual GIC IO memory region
> was being added instead.  This mixup was causing the wrong
> IO memory access functions to be called when accessing parts
> of the NVIC memory.
>
> Signed-off-by: Meador Inge <meadori@codesourcery.com>

Whoops.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

-- PMM
Peter Maydell - Aug. 31, 2012, 5:45 p.m.
Hi Anthony; I realised somewhat belatedly that this bugfix
should probably go into 1.2 if possible. Can we still
squeeze it in or is it too late?

Patchwork url: http://patchwork.ozlabs.org/patch/180315/

thanks
-- PMM

On 28 August 2012 00:41, Meador Inge <meadori@codesourcery.com> wrote:
> When setting up the NVIC memory regions the memory range
> 0x100..0xcff is aliased to an IO memory region that belongs
> to the ARM GIC.  This aliased region should be added to the
> NVIC memory container, but the actual GIC IO memory region
> was being added instead.  This mixup was causing the wrong
> IO memory access functions to be called when accessing parts
> of the NVIC memory.
>
> Signed-off-by: Meador Inge <meadori@codesourcery.com>
> ---
>  hw/armv7m_nvic.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/hw/armv7m_nvic.c b/hw/armv7m_nvic.c
> index 6a0832e..5c09116 100644
> --- a/hw/armv7m_nvic.c
> +++ b/hw/armv7m_nvic.c
> @@ -489,7 +489,8 @@ static int armv7m_nvic_init(SysBusDevice *dev)
>       */
>      memory_region_init_alias(&s->gic_iomem_alias, "nvic-gic", &s->gic.iomem,
>                               0x100, 0xc00);
> -    memory_region_add_subregion_overlap(&s->container, 0x100, &s->gic.iomem, 1);
> +    memory_region_add_subregion_overlap(&s->container, 0x100,
> +                                        &s->gic_iomem_alias, 1);
>      /* Map the whole thing into system memory at the location required
>       * by the v7M architecture.
>       */
> --
> 1.7.7.6
>
Anthony Liguori - Aug. 31, 2012, 6:16 p.m.
Peter Maydell <peter.maydell@linaro.org> writes:

> Hi Anthony; I realised somewhat belatedly that this bugfix
> should probably go into 1.2 if possible. Can we still
> squeeze it in or is it too late?
>
> Patchwork url: http://patchwork.ozlabs.org/patch/180315/

It's too late for GA.  Can go in via stable though.

Regards,

Anthony Liguori

>
> thanks
> -- PMM
>
> On 28 August 2012 00:41, Meador Inge <meadori@codesourcery.com> wrote:
>> When setting up the NVIC memory regions the memory range
>> 0x100..0xcff is aliased to an IO memory region that belongs
>> to the ARM GIC.  This aliased region should be added to the
>> NVIC memory container, but the actual GIC IO memory region
>> was being added instead.  This mixup was causing the wrong
>> IO memory access functions to be called when accessing parts
>> of the NVIC memory.
>>
>> Signed-off-by: Meador Inge <meadori@codesourcery.com>
>> ---
>>  hw/armv7m_nvic.c |    3 ++-
>>  1 files changed, 2 insertions(+), 1 deletions(-)
>>
>> diff --git a/hw/armv7m_nvic.c b/hw/armv7m_nvic.c
>> index 6a0832e..5c09116 100644
>> --- a/hw/armv7m_nvic.c
>> +++ b/hw/armv7m_nvic.c
>> @@ -489,7 +489,8 @@ static int armv7m_nvic_init(SysBusDevice *dev)
>>       */
>>      memory_region_init_alias(&s->gic_iomem_alias, "nvic-gic", &s->gic.iomem,
>>                               0x100, 0xc00);
>> -    memory_region_add_subregion_overlap(&s->container, 0x100, &s->gic.iomem, 1);
>> +    memory_region_add_subregion_overlap(&s->container, 0x100,
>> +                                        &s->gic_iomem_alias, 1);
>>      /* Map the whole thing into system memory at the location required
>>       * by the v7M architecture.
>>       */
>> --
>> 1.7.7.6
>>
Peter Maydell - Sept. 1, 2012, 1:52 a.m.
On 31 August 2012 19:16, Anthony Liguori <aliguori@us.ibm.com> wrote:
> Peter Maydell <peter.maydell@linaro.org> writes:
>> Hi Anthony; I realised somewhat belatedly that this bugfix
>> should probably go into 1.2 if possible. Can we still
>> squeeze it in or is it too late?
>>
>> Patchwork url: http://patchwork.ozlabs.org/patch/180315/
>
> It's too late for GA.  Can go in via stable though.

Oh well, never mind. (I don't generally bother to feed
ARM patches to stable; I figure people can wait til the
next mainline release.)

-- PMM

Patch

diff --git a/hw/armv7m_nvic.c b/hw/armv7m_nvic.c
index 6a0832e..5c09116 100644
--- a/hw/armv7m_nvic.c
+++ b/hw/armv7m_nvic.c
@@ -489,7 +489,8 @@  static int armv7m_nvic_init(SysBusDevice *dev)
      */
     memory_region_init_alias(&s->gic_iomem_alias, "nvic-gic", &s->gic.iomem,
                              0x100, 0xc00);
-    memory_region_add_subregion_overlap(&s->container, 0x100, &s->gic.iomem, 1);
+    memory_region_add_subregion_overlap(&s->container, 0x100,
+                                        &s->gic_iomem_alias, 1);
     /* Map the whole thing into system memory at the location required
      * by the v7M architecture.
      */