[PATCH v2 2/2] powerpc: introduce CONFIG_CACHE_FLUSH_WATCHDOG_THRESHOLD

Stefan Roese sr at denx.de
Thu Apr 15 08:55:16 CEST 2021


On 15.04.21 08:46, Rasmus Villemoes wrote:
> On 15/04/2021 07.34, Stefan Roese wrote:
>> On 13.04.21 21:38, Rasmus Villemoes wrote:
>>>
>>> I have checked with objdump that the generated code doesn't change
>>> when this option is left at its default value of 0: gcc is smart
>>> enough to see that wd_limit is constant 0, the ">=" comparisons are
>>> tautologically true, hence all assignments to "flushed" are eliminated
>>
>> Nitpicking:
>> s/tautologically/autologically.
> 
> No.
> 
> https://www.merriam-webster.com/dictionary/tautological
> https://en.wikipedia.org/wiki/Tautology_(logic)
> "In Mathematical logic, a tautology (from Greek: ταυτολογία) is a
> formula or assertion that is true in every possible interpretation."
> 
> It even exists in gcc docs in the form of -Wtautological-compare. [But I
> do admit that "tautologically true" is a pleonasm; "tautologies" or
> "automatically true" could have been used instead. And going full meta,
> now that I look up pleonasm in wikipedia to check that I'm using it
> right, that article has a reference to "tautology (language)" in its
> second sentence.]

Interesting. Thanks for the detailed info.

>>>        /* wait for all dcbst to complete on bus */
>>>        asm volatile("sync" : : : "memory");
>>> @@ -27,7 +33,11 @@ void flush_cache(ulong start_addr, ulong size)
>>>        for (addr = start; (addr <= end) && (addr >= start);
>>>                addr += CONFIG_SYS_CACHELINE_SIZE) {
>>>            asm volatile("icbi 0,%0" : : "r" (addr) : "memory");
>>> -        WATCHDOG_RESET();
>>> +        flushed += CONFIG_SYS_CACHELINE_SIZE;
>>> +        if (flushed >= wd_limit) {
>>> +            WATCHDOG_RESET();
>>> +            flushed = 0;
>>> +        }
>>
>> It might make sense to pull these 2 identical code snippets into a
>> function to not duplicate this code.
> 
> Something like
> 
> static ulong maybe_reset(ulong flushed)
> {
>    const ulong wd_limit = ...;
>    flushed += CONFIG_SYS_CACHELINE_SIZE;
>    if (flushed >= wd_limit) {
>      WATCHDOG_RESET();
>      flushed = 0;
>    }
>    return flushed;
> }
> 
> and "flushed = maybe_reset(flushed);"? I don't think that improves
> readability.

Yes, something like this. I agree that it's not really beautiful but for
my personal taste it's a bit better. But I don't have hard feeling here.
Let's see what other comment on this.

Thanks,
Stefan


More information about the U-Boot mailing list