Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Oct 2011 18:55:24 +0200
From:      Rafal Jaworowski <raj@semihalf.com>
To:        Marcel Moolenaar <marcel@xcllnt.net>
Cc:        "Jayachandran C." <jchandra@freebsd.org>, FreeBSD Current <freebsd-current@freebsd.org>, Nathan Whitehorn <nwhitehorn@freebsd.org>, Andrew Duane <aduane@juniper.net>
Subject:   Re: [RFC] FDT fix for 64 bit platforms
Message-ID:  <B149C582-DA23-4D19-879F-1A5D6D4861C7@semihalf.com>
In-Reply-To: <82FC5404-7B93-426B-9303-14BD8BC37542@xcllnt.net>
References:  <CA%2B7sy7AhU7WLuabx6HCtUgvEtUHWBmGe-eP=N8L9VknM65r-mg@mail.gmail.com> <4E989C28.3030606@freebsd.org> <CA%2B7sy7Ba6zrRGQuon%2B7FPk8EhgnpYLWTGv0EAPy0pdRXJfc3ZQ@mail.gmail.com> <4E99A319.20801@freebsd.org> <CA%2B7sy7DRTM%2Bmgxx4ogEwttLtsaVyWA5XQ4bnfJ54rQLmHZ34Pw@mail.gmail.com> <82FC5404-7B93-426B-9303-14BD8BC37542@xcllnt.net>

next in thread | previous in thread | raw e-mail | index | archive | help

On 2011-10-15, at 18:48, Marcel Moolenaar wrote:

>=20
> On Oct 15, 2011, at 9:33 AM, Jayachandran C. wrote:
>=20
>> On Sat, Oct 15, 2011 at 8:43 PM, Nathan Whitehorn
>> <nwhitehorn@freebsd.org> wrote:
>>> On 10/15/11 01:12, Jayachandran C. wrote:
>>>>=20
>>>> On Sat, Oct 15, 2011 at 2:01 AM, Nathan Whitehorn
>>>> <nwhitehorn@freebsd.org>  wrote:
>>>>>=20
>>>>> On 10/14/11 14:10, Jayachandran C. wrote:
>>>>>>=20
>>>>>> I'm planning commit this -CURRENT if there an no objections.
>>>>>>=20
>>>>>> In the current implementation, phandle is used to store a pointer =
to
>>>>>> the location inside the device tree.  Since phandle_t is u32, =
this
>>>>>> will not work on 64 bit platforms. With this fix, the phandle is =
the
>>>>>> offset from the start of device tree pointer 'fdtp', which will =
be 32
>>>>>> bit.
>>>>>>=20
>>>>>> Review or testing from device tree users will be welcome.
>>>>>>=20
>>>>>> JC.
>>>>>=20
>>>>> Why not use offsets into the FDT rather than full pointers? I =
believe
>>>>> having
>>>>> phandles greater than 32 bits violates the FDT spec, and declaring =
that
>>>>> the
>>>>> FDT can't itself be larger than 4 GB seems reasonable.
>>>>=20
>>>> I am actually using the offset from the beginning of FDT (fdtp) as
>>>> phandle.  I cannot use the usual fdt offset (after off_dt_struct) =
as
>>>> phandle, because in that case offset of 0 is valid, but phandle 0
>>>> should not be valid.
>>>=20
>>> Why shouldn't phandle 0 be valid? The invalid phandle is -1. This is =
one of
>>> the problems with our existing FDT code -- it makes all kinds of =
wrong
>>> assumptions like this about IEEE 1275.
>>=20
>> Well, the existing FDT code returns 0 as the invalid handle and I do
>> not want to change that in this commit.
>>=20
>> If the return value is really wrong, we will need a bigger exercise =
to
>> change the return value and fix any callers which are affected by =
that
>> change.
>=20
> It should be fairly easy to change the base from fdtp to the "usual"
> fdt offset, so let me propose the following:
>=20
> 1.  JC commits what he has and based on the current code.
> 2.  We get all the facts on the table. I say this because I
>    read different and contradictory things (0 being an
>    invalid phandle in OF, negative phandles exist, etc).
> 3.  We change the implementation, if such is warranted, in
>    a separate effort.
>=20
> The point really is that 0 is an invalid phandle right now,
> right or wrong, and JCs changes are based on that. I see no
> problem proceeding on the path we're on, while we discuss
> what's the correct implementation and whether or not we
> should have a course change...
>=20
> Thoughts?

The patch looks fine to me, but we didn't have a chance yet to test it =
on any PPC/ARM system, have you, Marcel? Regarding the phandle validity =
I need to recall the context as this was a while back and I don't quite =
remember all constraints and motivations.

Rafal




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B149C582-DA23-4D19-879F-1A5D6D4861C7>