All of lore.kernel.org
 help / color / mirror / Atom feed
From: Grant Likely <grant.likely@secretlab.ca>
To: Nicolas Pitre <nicolas.pitre@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org,
	Russell King <linux@arm.linux.org.uk>,
	Catalin Marinas <catalin.marinas@arm.com>,
	devicetree-discuss@lists.ozlabs.org,
	lkml <linux-kernel@vger.kernel.org>,
	Olof Johansson <olof@lixom.net>,
	Jeremy Kerr <jeremy.kerr@canonical.com>,
	John Linn <John.Linn@xilinx.com>,
	Lennert Buijtenhek <buytenh@wantstofly.org>
Subject: Re: [PATCH 1/8] arm/dt: Make __vet_atags also accept a dtb image
Date: Tue, 18 Jan 2011 14:42:52 -0700	[thread overview]
Message-ID: <AANLkTinLRkqY1Ovf4xbBeYCRfs5fsEG7JKnbE1Z_dd29@mail.gmail.com> (raw)
In-Reply-To: <alpine.LFD.2.00.1101181621140.8580@xanadu.home>

Hi Nicolas,

On Tue, Jan 18, 2011 at 2:26 PM, Nicolas Pitre <nicolas.pitre@linaro.org> wrote:
> On Tue, 18 Jan 2011, Grant Likely wrote:
>
>> The dtb is passed to the kernel via register r2, which is the same
>> method that is used to pass an atags pointer.  This patch modifies
>> __vet_atags to not clear r2 when it encounters a dtb image.
>>
>> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
>> ---
>>  arch/arm/kernel/head-common.S |   19 +++++++++++++------
>>  arch/arm/kernel/head.S        |    8 ++++----
>>  2 files changed, 17 insertions(+), 10 deletions(-)
>>
>> diff --git a/arch/arm/kernel/head-common.S b/arch/arm/kernel/head-common.S
>> index 8f57515..d9a9105 100644
>> --- a/arch/arm/kernel/head-common.S
>> +++ b/arch/arm/kernel/head-common.S
>> @@ -14,6 +14,7 @@
>>  #define ATAG_CORE 0x54410001
>>  #define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
>>  #define ATAG_CORE_SIZE_EMPTY ((2*4) >> 2)
>> +#define OF_DT_MAGIC 0xedfe0dd0 /* 0xd00dfeed in big-endian */
>
> ARM can be big endian too.  Would be nice to make this endian
> independent, or at least list this limitation in the commit log.

How about:
#ifdef CONFIG_CPU_BIG_ENDIAN
#define OF_DT_MAGIC 0xd00dfeed
#else
#define OF_DT_MAGIC 0xedfe0dd0 /* 0xd00dfeed in big-endian */
#endif

Or is there a better way for loading and comparing big endian values in ARM?

>
>>  /*
>>   * Exception handling.  Something went wrong and we can't proceed.  We
>> @@ -105,22 +106,28 @@ __lookup_machine_type_data:
>>
>>  /* Determine validity of the r2 atags pointer.  The heuristic requires
>>   * that the pointer be aligned, in the first 16k of physical RAM and
>> - * that the ATAG_CORE marker is first and present.  Future revisions
>> + * that the ATAG_CORE marker is first and present.  If CONFIG_OF_FLATTREE
>> + * is selected, then it will also accept a dtb pointer.  Future revisions
>>   * of this function may be more lenient with the physical address and
>>   * may also be able to move the ATAGS block if necessary.
>>   *
>>   * r8  = machinfo
>>   *
>>   * Returns:
>> - *  r2 either valid atags pointer, or zero
>> + *  r2 either valid atags pointer, valid dtb pointer, or zero
>>   *  r5, r6 corrupted
>>   */
>>  __vet_atags:
>>       tst     r2, #0x3                        @ aligned?
>>       bne     1f
>>
>> -     ldr     r5, [r2, #0]                    @ is first tag ATAG_CORE?
>> -     cmp     r5, #ATAG_CORE_SIZE
>> +#ifdef CONFIG_OF_FLATTREE
>> +     ldr     r5, [r2, #0]                    @ is it a DTB?
>> +     ldr     r6, =OF_DT_MAGIC
>> +     cmp     r5, r6
>> +     beq     2f
>> +#endif
>> +     cmp     r5, #ATAG_CORE_SIZE             @ is first tag ATAG_CORE?
>
> The "ldr r5 ..." is now done only within #ifdef CONFIG_OF_FLATTREE.  So
> if CONFIG_OF_FLATTREE is undefined then r5 will contain garbage.

Oops, that was a silly oversight.  Fixed now.

g.

>
>
> Nicolas
>



-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

WARNING: multiple messages have this Message-ID (diff)
From: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
To: Nicolas Pitre <nicolas.pitre-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
	Catalin Marinas <catalin.marinas-5wv7dgnIgG8@public.gmane.org>,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
	lkml <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Lennert Buijtenhek
	<buytenh-OLH4Qvv75CYX/NnBR394Jw@public.gmane.org>,
	Jeremy Kerr <jeremy.kerr-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH 1/8] arm/dt: Make __vet_atags also accept a dtb image
Date: Tue, 18 Jan 2011 14:42:52 -0700	[thread overview]
Message-ID: <AANLkTinLRkqY1Ovf4xbBeYCRfs5fsEG7JKnbE1Z_dd29@mail.gmail.com> (raw)
In-Reply-To: <alpine.LFD.2.00.1101181621140.8580-QuJgVwGFrdf/9pzu0YdTqQ@public.gmane.org>

Hi Nicolas,

On Tue, Jan 18, 2011 at 2:26 PM, Nicolas Pitre <nicolas.pitre-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
> On Tue, 18 Jan 2011, Grant Likely wrote:
>
>> The dtb is passed to the kernel via register r2, which is the same
>> method that is used to pass an atags pointer.  This patch modifies
>> __vet_atags to not clear r2 when it encounters a dtb image.
>>
>> Signed-off-by: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
>> ---
>>  arch/arm/kernel/head-common.S |   19 +++++++++++++------
>>  arch/arm/kernel/head.S        |    8 ++++----
>>  2 files changed, 17 insertions(+), 10 deletions(-)
>>
>> diff --git a/arch/arm/kernel/head-common.S b/arch/arm/kernel/head-common.S
>> index 8f57515..d9a9105 100644
>> --- a/arch/arm/kernel/head-common.S
>> +++ b/arch/arm/kernel/head-common.S
>> @@ -14,6 +14,7 @@
>>  #define ATAG_CORE 0x54410001
>>  #define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
>>  #define ATAG_CORE_SIZE_EMPTY ((2*4) >> 2)
>> +#define OF_DT_MAGIC 0xedfe0dd0 /* 0xd00dfeed in big-endian */
>
> ARM can be big endian too.  Would be nice to make this endian
> independent, or at least list this limitation in the commit log.

How about:
#ifdef CONFIG_CPU_BIG_ENDIAN
#define OF_DT_MAGIC 0xd00dfeed
#else
#define OF_DT_MAGIC 0xedfe0dd0 /* 0xd00dfeed in big-endian */
#endif

Or is there a better way for loading and comparing big endian values in ARM?

>
>>  /*
>>   * Exception handling.  Something went wrong and we can't proceed.  We
>> @@ -105,22 +106,28 @@ __lookup_machine_type_data:
>>
>>  /* Determine validity of the r2 atags pointer.  The heuristic requires
>>   * that the pointer be aligned, in the first 16k of physical RAM and
>> - * that the ATAG_CORE marker is first and present.  Future revisions
>> + * that the ATAG_CORE marker is first and present.  If CONFIG_OF_FLATTREE
>> + * is selected, then it will also accept a dtb pointer.  Future revisions
>>   * of this function may be more lenient with the physical address and
>>   * may also be able to move the ATAGS block if necessary.
>>   *
>>   * r8  = machinfo
>>   *
>>   * Returns:
>> - *  r2 either valid atags pointer, or zero
>> + *  r2 either valid atags pointer, valid dtb pointer, or zero
>>   *  r5, r6 corrupted
>>   */
>>  __vet_atags:
>>       tst     r2, #0x3                        @ aligned?
>>       bne     1f
>>
>> -     ldr     r5, [r2, #0]                    @ is first tag ATAG_CORE?
>> -     cmp     r5, #ATAG_CORE_SIZE
>> +#ifdef CONFIG_OF_FLATTREE
>> +     ldr     r5, [r2, #0]                    @ is it a DTB?
>> +     ldr     r6, =OF_DT_MAGIC
>> +     cmp     r5, r6
>> +     beq     2f
>> +#endif
>> +     cmp     r5, #ATAG_CORE_SIZE             @ is first tag ATAG_CORE?
>
> The "ldr r5 ..." is now done only within #ifdef CONFIG_OF_FLATTREE.  So
> if CONFIG_OF_FLATTREE is undefined then r5 will contain garbage.

Oops, that was a silly oversight.  Fixed now.

g.

>
>
> Nicolas
>



-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

WARNING: multiple messages have this Message-ID (diff)
From: grant.likely@secretlab.ca (Grant Likely)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/8] arm/dt: Make __vet_atags also accept a dtb image
Date: Tue, 18 Jan 2011 14:42:52 -0700	[thread overview]
Message-ID: <AANLkTinLRkqY1Ovf4xbBeYCRfs5fsEG7JKnbE1Z_dd29@mail.gmail.com> (raw)
In-Reply-To: <alpine.LFD.2.00.1101181621140.8580@xanadu.home>

Hi Nicolas,

On Tue, Jan 18, 2011 at 2:26 PM, Nicolas Pitre <nicolas.pitre@linaro.org> wrote:
> On Tue, 18 Jan 2011, Grant Likely wrote:
>
>> The dtb is passed to the kernel via register r2, which is the same
>> method that is used to pass an atags pointer. ?This patch modifies
>> __vet_atags to not clear r2 when it encounters a dtb image.
>>
>> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
>> ---
>> ?arch/arm/kernel/head-common.S | ? 19 +++++++++++++------
>> ?arch/arm/kernel/head.S ? ? ? ?| ? ?8 ++++----
>> ?2 files changed, 17 insertions(+), 10 deletions(-)
>>
>> diff --git a/arch/arm/kernel/head-common.S b/arch/arm/kernel/head-common.S
>> index 8f57515..d9a9105 100644
>> --- a/arch/arm/kernel/head-common.S
>> +++ b/arch/arm/kernel/head-common.S
>> @@ -14,6 +14,7 @@
>> ?#define ATAG_CORE 0x54410001
>> ?#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
>> ?#define ATAG_CORE_SIZE_EMPTY ((2*4) >> 2)
>> +#define OF_DT_MAGIC 0xedfe0dd0 /* 0xd00dfeed in big-endian */
>
> ARM can be big endian too. ?Would be nice to make this endian
> independent, or at least list this limitation in the commit log.

How about:
#ifdef CONFIG_CPU_BIG_ENDIAN
#define OF_DT_MAGIC 0xd00dfeed
#else
#define OF_DT_MAGIC 0xedfe0dd0 /* 0xd00dfeed in big-endian */
#endif

Or is there a better way for loading and comparing big endian values in ARM?

>
>> ?/*
>> ? * Exception handling. ?Something went wrong and we can't proceed. ?We
>> @@ -105,22 +106,28 @@ __lookup_machine_type_data:
>>
>> ?/* Determine validity of the r2 atags pointer. ?The heuristic requires
>> ? * that the pointer be aligned, in the first 16k of physical RAM and
>> - * that the ATAG_CORE marker is first and present. ?Future revisions
>> + * that the ATAG_CORE marker is first and present. ?If CONFIG_OF_FLATTREE
>> + * is selected, then it will also accept a dtb pointer. ?Future revisions
>> ? * of this function may be more lenient with the physical address and
>> ? * may also be able to move the ATAGS block if necessary.
>> ? *
>> ? * r8 ?= machinfo
>> ? *
>> ? * Returns:
>> - * ?r2 either valid atags pointer, or zero
>> + * ?r2 either valid atags pointer, valid dtb pointer, or zero
>> ? * ?r5, r6 corrupted
>> ? */
>> ?__vet_atags:
>> ? ? ? tst ? ? r2, #0x3 ? ? ? ? ? ? ? ? ? ? ? ?@ aligned?
>> ? ? ? bne ? ? 1f
>>
>> - ? ? ldr ? ? r5, [r2, #0] ? ? ? ? ? ? ? ? ? ?@ is first tag ATAG_CORE?
>> - ? ? cmp ? ? r5, #ATAG_CORE_SIZE
>> +#ifdef CONFIG_OF_FLATTREE
>> + ? ? ldr ? ? r5, [r2, #0] ? ? ? ? ? ? ? ? ? ?@ is it a DTB?
>> + ? ? ldr ? ? r6, =OF_DT_MAGIC
>> + ? ? cmp ? ? r5, r6
>> + ? ? beq ? ? 2f
>> +#endif
>> + ? ? cmp ? ? r5, #ATAG_CORE_SIZE ? ? ? ? ? ? @ is first tag ATAG_CORE?
>
> The "ldr r5 ..." is now done only within #ifdef CONFIG_OF_FLATTREE. ?So
> if CONFIG_OF_FLATTREE is undefined then r5 will contain garbage.

Oops, that was a silly oversight.  Fixed now.

g.

>
>
> Nicolas
>



-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

  reply	other threads:[~2011-01-18 21:43 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-18 20:28 [PATCH 0/8] Basic ARM device tree support Grant Likely
2011-01-18 20:28 ` Grant Likely
2011-01-18 20:28 ` Grant Likely
2011-01-18 20:29 ` [PATCH 1/8] arm/dt: Make __vet_atags also accept a dtb image Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 21:26   ` Nicolas Pitre
2011-01-18 21:26     ` Nicolas Pitre
2011-01-18 21:42     ` Grant Likely [this message]
2011-01-18 21:42       ` Grant Likely
2011-01-18 21:42       ` Grant Likely
2011-01-18 20:29 ` [PATCH 2/8] arm/dt: allow bootmem reservation for device tree blob and initrd Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 20:29 ` [PATCH 3/8] arm/dt: Allow CONFIG_OF on ARM Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 20:29 ` [PATCH 4/8] arm/dt: consolidate atags setup into setup_machine_atags Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 20:29 ` [PATCH 5/8] arm/dt: probe for platforms via the device tree Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 20:29 ` [PATCH 6/8] arm/dt: Basic versatile devicetree support Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 20:29 ` [PATCH 7/8] arm/tegra: Fix tegra irq_data conversion Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 20:29 ` [PATCH 8/8] arm/dt: Basic tegra devicetree support Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 20:29   ` Grant Likely
2011-01-18 21:47   ` Nicolas Pitre
2011-01-18 21:47     ` Nicolas Pitre
2011-01-18 21:55     ` Grant Likely
2011-01-18 21:55       ` Grant Likely
2011-01-18 21:55       ` Grant Likely
2011-01-19 12:14   ` Sergei Shtylyov
2011-01-19 12:14     ` Sergei Shtylyov
2011-01-19 12:14     ` Sergei Shtylyov
2011-01-26 20:04 ` [PATCH 0/8] Basic ARM device tree support John Linn
2011-01-26 20:04   ` John Linn
2011-01-26 20:04   ` John Linn
2011-01-26 22:32   ` Rob Herring
2011-01-26 22:32     ` Rob Herring
2011-01-28  6:37     ` Jason Liu
2011-01-28  6:37       ` Jason Liu
2011-01-31 18:05   ` Grant Likely
2011-01-31 18:05     ` Grant Likely
2011-01-31 18:05     ` Grant Likely
2011-01-31 18:06     ` John Linn
2011-01-31 18:06       ` John Linn
2011-01-31 18:06       ` John Linn

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=AANLkTinLRkqY1Ovf4xbBeYCRfs5fsEG7JKnbE1Z_dd29@mail.gmail.com \
    --to=grant.likely@secretlab.ca \
    --cc=John.Linn@xilinx.com \
    --cc=buytenh@wantstofly.org \
    --cc=catalin.marinas@arm.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=jeremy.kerr@canonical.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=nicolas.pitre@linaro.org \
    --cc=olof@lixom.net \
    /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 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.