|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC 08/24] xen/dts: Don't add a fake property "name" in the device tree
On 08/22/2013 02:16 PM, Ian Campbell wrote:
> On Fri, 2013-08-16 at 22:05 +0100, Julien Grall wrote:
>> On new Flat Device Tree version, the property "name" may not exist.
>> The property is never used in Xen code except to set the field "name" of
>> dt_device_node.
>>
>> For convenience, remove the fake property. It will save space during the
>> creation of the dom0 FDT.
>>
>> Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx>
>> ---
>> xen/common/device_tree.c | 21 +++++++++------------
>> 1 file changed, 9 insertions(+), 12 deletions(-)
>>
>> diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c
>> index 362dd66..315b284 100644
>> --- a/xen/common/device_tree.c
>> +++ b/xen/common/device_tree.c
>> @@ -1528,6 +1528,7 @@ static unsigned long __init unflatten_dt_node(const
>> void *fdt,
>> if ( !has_name )
>> {
>> char *p1 = pathp, *ps = pathp, *pa = NULL;
>> + char *tmp = NULL;
>> int sz;
>>
>> while ( *p1 )
>> @@ -1541,25 +1542,21 @@ static unsigned long __init unflatten_dt_node(const
>> void *fdt,
>> if ( pa < ps )
>> pa = p1;
>> sz = (pa - ps) + 1;
>> - pp = unflatten_dt_alloc(&mem, sizeof(struct dt_property) + sz,
>> - __alignof__(struct dt_property));
>
> pp appears to not be assigned anywhere else now? I'm not sure if prev_pp
> becomes obsolete or not.
pp is also assigned in the loop that create the properties. (see few
lines below in xen/common/device_tree.c). So prev_pp should be kept.
>
>> +
>> + tmp = unflatten_dt_alloc(&mem, sz, 1);
>> if ( allnextpp )
>> {
>> - pp->name = "name";
>> - pp->length = sz;
>> - pp->value = pp + 1;
>> - *prev_pp = pp;
>> - prev_pp = &pp->next;
>> - memcpy(pp->value, ps, sz - 1);
>> - ((char *)pp->value)[sz - 1] = 0;
>> - dt_dprintk("fixed up name for %s -> %s\n", pathp,
>> - (char *)pp->value);
>> + memcpy(tmp, ps, sz - 1);
>> + np->name = tmp;
>> + tmp[sz - 1] = 0;
>> + dt_dprintk("fixed up name for %s -> %s\n", pathp, np->name);
>> }
>> }
>> +
>> if ( allnextpp )
>> {
>> *prev_pp = NULL;
>> - np->name = dt_get_property(np, "name", NULL);
>> + np->name = (np->name) ? : dt_get_property(np, "name", NULL);
>> np->type = dt_get_property(np, "device_type", NULL);
>>
>> if ( !np->name )
>
>
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |