issue reported as

https://bugs.launchpad.net/gcc-linaro/+bug/1243022

Thanks,
Victor

On 21 October 2013 00:54, Victor Kamensky <victor.kamen...@linaro.org> wrote:
> I've debugged the issue under JTAG. I do believe it is compiler
> bug. Briefly: compiler miscalculated size of wonderful arrays in
> xhci_check_trb_in_td_math function as result this function
> corrupts registers saved on stack, upon restoring of those
> xhci_mem_init accesses not existent memory and crashes.
> At this point I think error is present in both 4.8 and 4.7 the
> only difference is registers allocation is a bit different so
> corruption does not manifest itself as severe problem in
> case of 4.7. Will double check 4.7 tomorrow, quite sure
> about 4.8.
>
> I will file detailed bug report tomorrow PST, with test case
> and detailed explanation.
>
> Thanks,
> Victor
>
>
>
> On 18 October 2013 23:45, Fathi Boudra <fathi.bou...@linaro.org> wrote:
>> Hi,
>>
>> On 4 October 2013 19:01, Maxim Uvarov <maxim.uva...@linaro.org> wrote:
>>> On 10/04/2013 07:40 PM, Victor Kamensky wrote:
>>>>
>>>> Hi Maxim,
>>>>
>>>> readl and writel are stronger version of readl_realxed and
>>>> writel_relaxed:
>>>>
>>>> #define readl(c)        ({ u32 __v = readl_relaxed(c); __iormb(); __v; })
>>>> #define writel(v,c)        ({ __iowmb(); writel_relaxed(v,c); })
>>>>
>>>> They just add __iormb and __iowmb,  I think it is very
>>>> dangerous thing to drop those memory barriers. I don't
>>>> think your change is correct and/or it requires way
>>>> better explanation.
>>>>
>>>> I've run into the same crash while working on 3.12-rc3 BE
>>>> issues. In fact I saw this failure on both BE and LE and on
>>>> old versions of BE kernels when I tried to use 4.8 gcc version
>>>> from 13.09 release. When I fall back to 4.7 (i.e 13.04) it
>>>> works fine
>>>>
>>>> I would think it is compiler issue or preexisting issue
>>>> in the code uncovered by compiler change. Personally
>>>> I think it is the first. Since I am chasing another problem
>>>> I did not have time to look more deeply into the issue.
>>>> IMHO it definitely require more digging. In mean time you
>>>> can quickly check your current version and try another one
>>>> if your looks as one described in this email.
>>>>
>>>> Thanks,
>>>> Victor
>>>
>>> Ah, yes, it  __raw_write has direct access  and writel swaps bits.
>>>
>>> If it's compiler issue then it has to be simple to compare objdump disasm
>>> output for that function.
>>
>> I think I've hit this issue. We use latest Linaro GCC 4.8 in the CI
>> loop to build Arndale BE kernel.
>> Is there a bug reported to TCWG? If not, please create one:
>> https://bugs.launchpad.net/gcc-linaro/+filebug
>>
>> FYI, I'm using Linaro GCC 4.8-2013.09 (pre-built) and latest
>> linaro-linaro (based on 3.12-rc5 with Victor's topic branch). Boot log
>> attached.
>>
>> Cheers,
>> Fathi

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to