On 9/9/19 7:37 PM, Rob Herring wrote:
[...]
>> drivers/of/address.c | 47 ++++++++++++++++++++++++--------------------
>> 1 file changed, 26 insertions(+), 21 deletions(-)
>>
>> diff --git a/drivers/of/address.c b/drivers/of/address.c
>> index 978427a9d5e6..df82ef88823f 100644
>> --- a/drivers/of/address.c
>> +++ b/drivers/of/address.c
>> @@ -473,21 +473,42 @@ static struct of_bus *of_match_bus(struct device_node
>> *np)
>> return NULL;
>> }
>>
>> -static int of_empty_ranges_quirk(struct device_node *np)
>> +static bool of_missing_ranges_is_ok(struct device_node *np)
>> {
>> + /*
>> + * Normally, an absence of a "ranges" property means we are
>> + * crossing a non-translatable boundary, and thus the addresses
>> + * below the current cannot be converted to CPU physical ones.
>> + * Unfortunately, while this is very clear in the spec, it's not
>> + * what Apple understood, and they do have things like /uni-n or
>> + * /ht nodes with no "ranges" property and a lot of perfectly
>> + * useable mapped devices below them. Thus we treat the absence of
>> + * "ranges" as equivalent to an empty "ranges" property which means
>> + * a 1:1 translation at that level. It's up to the caller not to try
>> + * to translate addresses that aren't supposed to be translated in
>> + * the first place. --BenH.
>> + *
>> + * As far as we know, this damage only exists on Apple machines, so
>> + * This code is only enabled on powerpc.
>
> You dropped Grant's name on this. Wouldn't matter too much as we can
> run 'git blame', but now we have another level to trace back thru.
I think that's what Frank suggested, since he reworded this message before.
>> + */
>> +
>> if (IS_ENABLED(CONFIG_PPC)) {
>> /* To save cycles, we cache the result for global "Mac"
>> setting */
>> - static int quirk_state = -1;
>> + static int quirk_state_initialized;
>
> This can be bool too.
Fine
[...]
--
Best regards,
Marek Vasut