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