* Initial msm8909 support @ 2017-12-19 9:44 Will Newton 2017-12-19 14:21 ` Will Newton 0 siblings, 1 reply; 10+ messages in thread From: Will Newton @ 2017-12-19 9:44 UTC (permalink / raw) To: linux-arm-msm; +Cc: Bjorn Andersson, Stephen Boyd, anYc Hi, I have a git tree with my initial start at msm8909 support in Linux 4.9 here: https://bitbucket.org/andromedauk/msm8909-linux It's based off the Linaro Qualcomm landing team tree (with Android drivers merged too for no useful reason). The current state is that pinctrl is pretty much done, regulators are mostly done, clocks is quite hard to say as I'm not doing a good job of parsing the docs right now. The serial port works! I've seen the USB driver enumerate a hub but not tested any further. Outstanding tasks: 1. Semi-random resets during boot. Occasionally the board will reset for no obvious reason during boot. I suspect this is something to do with regulators as it usually seems to be around the time something is setting voltage and turning on initcall debugging seems to make it less likely to happen (by slowing the boot). 2. Wifi. The wcnss remoteproc driver loads and starts but the wcn36xx driver is never probed. I am not 100% sure how this probe is meant to be triggered but I think the SMD driver should create a channel and trigger the probe but it never does. 3. Hexagon. It gets to the point of loading firmware but the lk I have on this board is not capable of booting an image with the firmware in (~30MB is too large it seems). 4. Graphics. I haven't really got very far into debugging this, but it uses mdp3 so may be a bit of work. Any comments would be much appreciated. Thanks, ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Initial msm8909 support 2017-12-19 9:44 Initial msm8909 support Will Newton @ 2017-12-19 14:21 ` Will Newton 2017-12-19 17:30 ` Will Newton 0 siblings, 1 reply; 10+ messages in thread From: Will Newton @ 2017-12-19 14:21 UTC (permalink / raw) To: linux-arm-msm; +Cc: Bjorn Andersson, Stephen Boyd, anYc On Tue, Dec 19, 2017 at 9:44 AM, Will Newton <will.newton@gmail.com> wrote: > Hi, > > I have a git tree with my initial start at msm8909 support in Linux 4.9 here: > > https://bitbucket.org/andromedauk/msm8909-linux > > It's based off the Linaro Qualcomm landing team tree (with Android > drivers merged too for no useful reason). > > The current state is that pinctrl is pretty much done, regulators are > mostly done, clocks is quite hard to say as I'm not doing a good job > of parsing the docs right now. The serial port works! I've seen the > USB driver enumerate a hub but not tested any further. > > Outstanding tasks: > > 1. Semi-random resets during boot. Occasionally the board will reset > for no obvious reason during boot. I suspect this is something to do > with regulators as it usually seems to be around the time something is > setting voltage and turning on initcall debugging seems to make it > less likely to happen (by slowing the boot). FWIW these resets go away if I disable the wcnss driver in the dts. > 2. Wifi. The wcnss remoteproc driver loads and starts but the wcn36xx > driver is never probed. I am not 100% sure how this probe is meant to > be triggered but I think the SMD driver should create a channel and > trigger the probe but it never does. > > 3. Hexagon. It gets to the point of loading firmware but the lk I have > on this board is not capable of booting an image with the firmware in > (~30MB is too large it seems). > > 4. Graphics. I haven't really got very far into debugging this, but it > uses mdp3 so may be a bit of work. > > Any comments would be much appreciated. > > Thanks, ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Initial msm8909 support 2017-12-19 14:21 ` Will Newton @ 2017-12-19 17:30 ` Will Newton 2017-12-19 19:08 ` Stephen Boyd 2017-12-21 6:45 ` Bjorn Andersson 0 siblings, 2 replies; 10+ messages in thread From: Will Newton @ 2017-12-19 17:30 UTC (permalink / raw) To: linux-arm-msm; +Cc: Bjorn Andersson, Stephen Boyd, anYc On Tue, Dec 19, 2017 at 2:21 PM, Will Newton <will.newton@gmail.com> wrote: > On Tue, Dec 19, 2017 at 9:44 AM, Will Newton <will.newton@gmail.com> wrote: >> Hi, >> >> I have a git tree with my initial start at msm8909 support in Linux 4.9 here: >> >> https://bitbucket.org/andromedauk/msm8909-linux >> >> It's based off the Linaro Qualcomm landing team tree (with Android >> drivers merged too for no useful reason). >> >> The current state is that pinctrl is pretty much done, regulators are >> mostly done, clocks is quite hard to say as I'm not doing a good job >> of parsing the docs right now. The serial port works! I've seen the >> USB driver enumerate a hub but not tested any further. >> >> Outstanding tasks: >> >> 1. Semi-random resets during boot. Occasionally the board will reset >> for no obvious reason during boot. I suspect this is something to do >> with regulators as it usually seems to be around the time something is >> setting voltage and turning on initcall debugging seems to make it >> less likely to happen (by slowing the boot). > > FWIW these resets go away if I disable the wcnss driver in the dts. Specifically the code that triggers the reset is the call to qcom_scm_pas_auth_and_reset in qcom_wcnss.c. If I comment that call out then the boot seems to be stable. Does anyone have any ideas what might cause that behaviour? Thanks, ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Initial msm8909 support 2017-12-19 17:30 ` Will Newton @ 2017-12-19 19:08 ` Stephen Boyd 2017-12-20 9:58 ` Will Newton 2017-12-21 6:45 ` Bjorn Andersson 1 sibling, 1 reply; 10+ messages in thread From: Stephen Boyd @ 2017-12-19 19:08 UTC (permalink / raw) To: Will Newton; +Cc: linux-arm-msm, Bjorn Andersson, anYc On 12/19, Will Newton wrote: > On Tue, Dec 19, 2017 at 2:21 PM, Will Newton <will.newton@gmail.com> wrote: > > On Tue, Dec 19, 2017 at 9:44 AM, Will Newton <will.newton@gmail.com> wrote: > >> Hi, > >> > >> I have a git tree with my initial start at msm8909 support in Linux 4.9 here: > >> > >> https://bitbucket.org/andromedauk/msm8909-linux > >> > >> It's based off the Linaro Qualcomm landing team tree (with Android > >> drivers merged too for no useful reason). > >> > >> The current state is that pinctrl is pretty much done, regulators are > >> mostly done, clocks is quite hard to say as I'm not doing a good job > >> of parsing the docs right now. The serial port works! I've seen the > >> USB driver enumerate a hub but not tested any further. The bus clks that you're missing aren't typically exposed in downstream kernels because we don't control the rates of those clks. We've been putting them into upstream to keep the clk tree connected to a root. If you can list the clks that are missing I can give you the info you need. > >> > >> Outstanding tasks: > >> > >> 1. Semi-random resets during boot. Occasionally the board will reset > >> for no obvious reason during boot. I suspect this is something to do > >> with regulators as it usually seems to be around the time something is > >> setting voltage and turning on initcall debugging seems to make it > >> less likely to happen (by slowing the boot). > > > > FWIW these resets go away if I disable the wcnss driver in the dts. > > Specifically the code that triggers the reset is the call to > qcom_scm_pas_auth_and_reset in qcom_wcnss.c. If I comment that call > out then the boot seems to be stable. Does anyone have any ideas what > might cause that behaviour? > The wcnss is probably crashing because some regulator or clk is not enabled, or voltages need to be bumped up. One idea to debug would be to make wcnss into a module that you load with modprobe. Then you can try turning on more regulators, and verify that they're actually on by dumping the SPMI registers, until you narrow down what's off that needs to be on. This would also allow you to confirm the RPM communication is working and regulators are actually working. -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Initial msm8909 support 2017-12-19 19:08 ` Stephen Boyd @ 2017-12-20 9:58 ` Will Newton 0 siblings, 0 replies; 10+ messages in thread From: Will Newton @ 2017-12-20 9:58 UTC (permalink / raw) To: Stephen Boyd; +Cc: linux-arm-msm, Bjorn Andersson, anYc On Tue, Dec 19, 2017 at 7:08 PM, Stephen Boyd <sboyd@codeaurora.org> wrote: > On 12/19, Will Newton wrote: >> On Tue, Dec 19, 2017 at 2:21 PM, Will Newton <will.newton@gmail.com> wrote: >> > On Tue, Dec 19, 2017 at 9:44 AM, Will Newton <will.newton@gmail.com> wrote: >> >> Hi, >> >> >> >> I have a git tree with my initial start at msm8909 support in Linux 4.9 here: >> >> >> >> https://bitbucket.org/andromedauk/msm8909-linux >> >> >> >> It's based off the Linaro Qualcomm landing team tree (with Android >> >> drivers merged too for no useful reason). >> >> >> >> The current state is that pinctrl is pretty much done, regulators are >> >> mostly done, clocks is quite hard to say as I'm not doing a good job >> >> of parsing the docs right now. The serial port works! I've seen the >> >> USB driver enumerate a hub but not tested any further. > > The bus clks that you're missing aren't typically exposed in > downstream kernels because we don't control the rates of those > clks. We've been putting them into upstream to keep the clk tree > connected to a root. If you can list the clks that are missing I > can give you the info you need. The two main clocks that are missing which are used in msm8916 are: pcnoc_bfdcd_clk_src system_noc_bfdcd_clk_src Which are the parents of the AXI/AHB clocks amongst others. It isn't clear from the msm8909 register reference what parent to use for these. Some of it's a bit of a mystery because there are clocks (registers) in the 3.10 kernel which are not listed in the doc I have (80-NP408-2x Rev. C) so it's hard to know if those clocks really should be there or not and the 3.10 kernel doesn't seem to list parents for these clocks (at least not in a way I have figured out yet). >> >> >> >> Outstanding tasks: >> >> >> >> 1. Semi-random resets during boot. Occasionally the board will reset >> >> for no obvious reason during boot. I suspect this is something to do >> >> with regulators as it usually seems to be around the time something is >> >> setting voltage and turning on initcall debugging seems to make it >> >> less likely to happen (by slowing the boot). >> > >> > FWIW these resets go away if I disable the wcnss driver in the dts. >> >> Specifically the code that triggers the reset is the call to >> qcom_scm_pas_auth_and_reset in qcom_wcnss.c. If I comment that call >> out then the boot seems to be stable. Does anyone have any ideas what >> might cause that behaviour? >> > > The wcnss is probably crashing because some regulator or clk is > not enabled, or voltages need to be bumped up. One idea to debug > would be to make wcnss into a module that you load with modprobe. > Then you can try turning on more regulators, and verify that > they're actually on by dumping the SPMI registers, until you > narrow down what's off that needs to be on. This would also allow > you to confirm the RPM communication is working and regulators > are actually working. Thanks, I'll give that a try. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Initial msm8909 support 2017-12-19 17:30 ` Will Newton 2017-12-19 19:08 ` Stephen Boyd @ 2017-12-21 6:45 ` Bjorn Andersson 2017-12-21 10:01 ` Will Newton 1 sibling, 1 reply; 10+ messages in thread From: Bjorn Andersson @ 2017-12-21 6:45 UTC (permalink / raw) To: Will Newton; +Cc: linux-arm-msm, Stephen Boyd, anYc On Tue 19 Dec 09:30 PST 2017, Will Newton wrote: > On Tue, Dec 19, 2017 at 2:21 PM, Will Newton <will.newton@gmail.com> wrote: > > On Tue, Dec 19, 2017 at 9:44 AM, Will Newton <will.newton@gmail.com> wrote: > >> Hi, > >> > >> I have a git tree with my initial start at msm8909 support in Linux 4.9 here: > >> > >> https://bitbucket.org/andromedauk/msm8909-linux > >> > >> It's based off the Linaro Qualcomm landing team tree (with Android > >> drivers merged too for no useful reason). > >> > >> The current state is that pinctrl is pretty much done, regulators are > >> mostly done, clocks is quite hard to say as I'm not doing a good job > >> of parsing the docs right now. The serial port works! I've seen the > >> USB driver enumerate a hub but not tested any further. > >> > >> Outstanding tasks: > >> > >> 1. Semi-random resets during boot. Occasionally the board will reset > >> for no obvious reason during boot. I suspect this is something to do > >> with regulators as it usually seems to be around the time something is > >> setting voltage and turning on initcall debugging seems to make it > >> less likely to happen (by slowing the boot). > > > > FWIW these resets go away if I disable the wcnss driver in the dts. > > Specifically the code that triggers the reset is the call to > qcom_scm_pas_auth_and_reset in qcom_wcnss.c. If I comment that call > out then the boot seems to be stable. Does anyone have any ideas what > might cause that behaviour? > It's worth noting that there are two sets of errors that occurs in qcom_scm_pas_auth_and_reset(); either the implementation of the call itself fails - typically from the lack of clocking of the crypto block - or if the call succeeds the ARM core in the WiFi subsystem will start execute the firmware and this might access hardware with expectations on what the Linux side has configured. Looking at the pronto in 8916, the only two pieces that comes to mind is that either vddmx or vddpx are off; or that there are some other nuances here that I missed when specifying the associated resources - which isn't needed on the db410c. Iirc any issues related to the iris (external RF module) will result in a controlled crash of the remoteproc, not a full system reset. Regards, Bjorn ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Initial msm8909 support 2017-12-21 6:45 ` Bjorn Andersson @ 2017-12-21 10:01 ` Will Newton 2017-12-21 15:58 ` Will Newton 0 siblings, 1 reply; 10+ messages in thread From: Will Newton @ 2017-12-21 10:01 UTC (permalink / raw) To: Bjorn Andersson; +Cc: linux-arm-msm, Stephen Boyd, anYc On Thu, Dec 21, 2017 at 6:45 AM, Bjorn Andersson <bjorn.andersson@linaro.org> wrote: > On Tue 19 Dec 09:30 PST 2017, Will Newton wrote: > >> On Tue, Dec 19, 2017 at 2:21 PM, Will Newton <will.newton@gmail.com> wrote: >> > On Tue, Dec 19, 2017 at 9:44 AM, Will Newton <will.newton@gmail.com> wrote: >> >> Hi, >> >> >> >> I have a git tree with my initial start at msm8909 support in Linux 4.9 here: >> >> >> >> https://bitbucket.org/andromedauk/msm8909-linux >> >> >> >> It's based off the Linaro Qualcomm landing team tree (with Android >> >> drivers merged too for no useful reason). >> >> >> >> The current state is that pinctrl is pretty much done, regulators are >> >> mostly done, clocks is quite hard to say as I'm not doing a good job >> >> of parsing the docs right now. The serial port works! I've seen the >> >> USB driver enumerate a hub but not tested any further. >> >> >> >> Outstanding tasks: >> >> >> >> 1. Semi-random resets during boot. Occasionally the board will reset >> >> for no obvious reason during boot. I suspect this is something to do >> >> with regulators as it usually seems to be around the time something is >> >> setting voltage and turning on initcall debugging seems to make it >> >> less likely to happen (by slowing the boot). >> > >> > FWIW these resets go away if I disable the wcnss driver in the dts. >> >> Specifically the code that triggers the reset is the call to >> qcom_scm_pas_auth_and_reset in qcom_wcnss.c. If I comment that call >> out then the boot seems to be stable. Does anyone have any ideas what >> might cause that behaviour? >> > > It's worth noting that there are two sets of errors that occurs in > qcom_scm_pas_auth_and_reset(); either the implementation of the call > itself fails - typically from the lack of clocking of the crypto block - > or if the call succeeds the ARM core in the WiFi subsystem will start > execute the firmware and this might access hardware with expectations on > what the Linux side has configured. The crash is unreliable (not every boot) and async - it doesn't happen exactly at the time of the scm call but soon after, suggesting it is the wifi subsystem that starts up and then may crash for some reason. > Looking at the pronto in 8916, the only two pieces that comes to mind is > that either vddmx or vddpx are off; or that there are some other nuances > here that I missed when specifying the associated resources - which > isn't needed on the db410c. AFAIK the vddmx (l3) and vddpx (l7) supplies are both setup correctly. The vddcx supply is not specified but I believe it is s1 which supplies the CPU core so should always be enabled. I've pasted the regulator summary on a successful boot (no crash but wcn driver did not probe) below. One difference I did notice in 3.10 is that msm8909 is listed as pronto "v3" and msm8916 is listed as "vt". This seems to mean the regulators are specified slightly differently: https://source.codeaurora.org/quic/la/kernel/msm-3.10/tree/drivers/net/wireless/wcnss/wcnss_vreg.c?h=LA.BR.1.2.9-03310-8x09.0#n149 But its using voltage corners which to be honest I don't really understand. regulator use open bypass voltage current min max ------------------------------------------------------------------------------- regulator-dummy 0 1 0 0mV 0mA 0mV 0mV a204000.wcnss 0mV 0mV vph_pwr 0 11 0 5000mV 0mA 5000mV 5000mV s1 0 0 0 1300mV 0mA 1300mV 1300mV s2 0 8 0 1850mV 0mA 1850mV 1850mV l1 0 0 0 1000mV 0mA 1000mV 1000mV l2 1 1 0 1200mV 0mA 1200mV 1200mV 78d9000.phy 1200mV 1200mV l3 0 1 0 1287mV 0mA 500mV 1350mV a204000.wcnss 1287mV 1287mV l4 0 0 0 1800mV 0mA 1800mV 1800mV l5 1 2 0 1800mV 0mA 1800mV 1800mV a204000.wcnss:iris 1800mV 1800mV 7824900.sdhci 1800mV 1950mV l6 0 1 0 1800mV 0mA 1800mV 1800mV 1ac8300.dsi-phy 0mV 0mV l7 1 3 0 1800mV 0mA 1800mV 1800mV a204000.wcnss:iris 1800mV 1800mV a204000.wcnss 1800mV 1800mV 78d9000.phy 1800mV 1800mV l10 0 1 0 1300mV 0mA 1225mV 1350mV a204000.wcnss:iris 1300mV 1300mV l8 1 1 0 2900mV 0mA 2850mV 2900mV 7824900.sdhci 2900mV 2900mV l9 0 1 0 3300mV 0mA 3000mV 3300mV a204000.wcnss:iris 3300mV 3300mV l11 0 0 0 1800mV 0mA 1800mV 2950mV l12 0 0 0 1800mV 0mA 1800mV 2950mV l13 1 1 0 3075mV 0mA 3075mV 3075mV 78d9000.phy 3050mV 3300mV l14 0 0 0 1800mV 0mA 1800mV 3000mV l15 0 0 0 1800mV 0mA 1800mV 3000mV l17 0 0 0 2800mV 0mA 2800mV 2850mV l18 0 0 0 2700mV 0mA 2700mV 2700mV ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Initial msm8909 support 2017-12-21 10:01 ` Will Newton @ 2017-12-21 15:58 ` Will Newton 2017-12-21 16:02 ` Will Newton 0 siblings, 1 reply; 10+ messages in thread From: Will Newton @ 2017-12-21 15:58 UTC (permalink / raw) To: Bjorn Andersson; +Cc: linux-arm-msm, Stephen Boyd, anYc On Thu, Dec 21, 2017 at 10:01 AM, Will Newton <will.newton@gmail.com> wrote: > On Thu, Dec 21, 2017 at 6:45 AM, Bjorn Andersson > <bjorn.andersson@linaro.org> wrote: >> On Tue 19 Dec 09:30 PST 2017, Will Newton wrote: >> >>> On Tue, Dec 19, 2017 at 2:21 PM, Will Newton <will.newton@gmail.com> wrote: >>> > On Tue, Dec 19, 2017 at 9:44 AM, Will Newton <will.newton@gmail.com> wrote: >>> >> Hi, >>> >> >>> >> I have a git tree with my initial start at msm8909 support in Linux 4.9 here: >>> >> >>> >> https://bitbucket.org/andromedauk/msm8909-linux >>> >> >>> >> It's based off the Linaro Qualcomm landing team tree (with Android >>> >> drivers merged too for no useful reason). >>> >> >>> >> The current state is that pinctrl is pretty much done, regulators are >>> >> mostly done, clocks is quite hard to say as I'm not doing a good job >>> >> of parsing the docs right now. The serial port works! I've seen the >>> >> USB driver enumerate a hub but not tested any further. >>> >> >>> >> Outstanding tasks: >>> >> >>> >> 1. Semi-random resets during boot. Occasionally the board will reset >>> >> for no obvious reason during boot. I suspect this is something to do >>> >> with regulators as it usually seems to be around the time something is >>> >> setting voltage and turning on initcall debugging seems to make it >>> >> less likely to happen (by slowing the boot). >>> > >>> > FWIW these resets go away if I disable the wcnss driver in the dts. >>> >>> Specifically the code that triggers the reset is the call to >>> qcom_scm_pas_auth_and_reset in qcom_wcnss.c. If I comment that call >>> out then the boot seems to be stable. Does anyone have any ideas what >>> might cause that behaviour? >>> >> >> It's worth noting that there are two sets of errors that occurs in >> qcom_scm_pas_auth_and_reset(); either the implementation of the call >> itself fails - typically from the lack of clocking of the crypto block - >> or if the call succeeds the ARM core in the WiFi subsystem will start >> execute the firmware and this might access hardware with expectations on >> what the Linux side has configured. > > The crash is unreliable (not every boot) and async - it doesn't happen > exactly at the time of the scm call but soon after, suggesting it is > the wifi subsystem that starts up and then may crash for some reason. I believe I have fixed the problem. I rejigged the reserved memory regions, adding rmtfs and rfsa regions and moving the wcnss region to a more aligned address. This allows it to continue to download the NV firmware and then fail with: [ 7.966472] qcom_wcnss_ctrl remoteproc0:smd-edge.WCNSS_CTRL.-1.-1: WCNSS Version 1.5 1.2 [ 18.451512] qcom_wcnss_ctrl remoteproc0:smd-edge.WCNSS_CTRL.-1.-1: expected cold boot completion So I guess I still have some debugging to do here. I also noticed that there seems to be a race between the wcnss and iris setup. On some boots I get: [ 3.364742] qcom-wcnss-pil a204000.wcnss: no iris registered [ 3.364751] remoteproc remoteproc0: can't start rproc a204000.wcnss: -22 The iris probe function has not yet assigned the iris pointer at this point but does later. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Initial msm8909 support 2017-12-21 15:58 ` Will Newton @ 2017-12-21 16:02 ` Will Newton 2018-01-04 10:37 ` Will Newton 0 siblings, 1 reply; 10+ messages in thread From: Will Newton @ 2017-12-21 16:02 UTC (permalink / raw) To: Bjorn Andersson; +Cc: linux-arm-msm, Stephen Boyd, anYc On Thu, Dec 21, 2017 at 3:58 PM, Will Newton <will.newton@gmail.com> wrote: > On Thu, Dec 21, 2017 at 10:01 AM, Will Newton <will.newton@gmail.com> wrote: >> On Thu, Dec 21, 2017 at 6:45 AM, Bjorn Andersson >> <bjorn.andersson@linaro.org> wrote: >>> On Tue 19 Dec 09:30 PST 2017, Will Newton wrote: >>> >>>> On Tue, Dec 19, 2017 at 2:21 PM, Will Newton <will.newton@gmail.com> wrote: >>>> > On Tue, Dec 19, 2017 at 9:44 AM, Will Newton <will.newton@gmail.com> wrote: >>>> >> Hi, >>>> >> >>>> >> I have a git tree with my initial start at msm8909 support in Linux 4.9 here: >>>> >> >>>> >> https://bitbucket.org/andromedauk/msm8909-linux >>>> >> >>>> >> It's based off the Linaro Qualcomm landing team tree (with Android >>>> >> drivers merged too for no useful reason). >>>> >> >>>> >> The current state is that pinctrl is pretty much done, regulators are >>>> >> mostly done, clocks is quite hard to say as I'm not doing a good job >>>> >> of parsing the docs right now. The serial port works! I've seen the >>>> >> USB driver enumerate a hub but not tested any further. >>>> >> >>>> >> Outstanding tasks: >>>> >> >>>> >> 1. Semi-random resets during boot. Occasionally the board will reset >>>> >> for no obvious reason during boot. I suspect this is something to do >>>> >> with regulators as it usually seems to be around the time something is >>>> >> setting voltage and turning on initcall debugging seems to make it >>>> >> less likely to happen (by slowing the boot). >>>> > >>>> > FWIW these resets go away if I disable the wcnss driver in the dts. >>>> >>>> Specifically the code that triggers the reset is the call to >>>> qcom_scm_pas_auth_and_reset in qcom_wcnss.c. If I comment that call >>>> out then the boot seems to be stable. Does anyone have any ideas what >>>> might cause that behaviour? >>>> >>> >>> It's worth noting that there are two sets of errors that occurs in >>> qcom_scm_pas_auth_and_reset(); either the implementation of the call >>> itself fails - typically from the lack of clocking of the crypto block - >>> or if the call succeeds the ARM core in the WiFi subsystem will start >>> execute the firmware and this might access hardware with expectations on >>> what the Linux side has configured. >> >> The crash is unreliable (not every boot) and async - it doesn't happen >> exactly at the time of the scm call but soon after, suggesting it is >> the wifi subsystem that starts up and then may crash for some reason. > > I believe I have fixed the problem. I rejigged the reserved memory > regions, adding rmtfs and rfsa regions and moving the wcnss region to > a more aligned address. This allows it to continue to download the NV > firmware and then fail with: > > [ 7.966472] qcom_wcnss_ctrl remoteproc0:smd-edge.WCNSS_CTRL.-1.-1: > WCNSS Version 1.5 1.2 > [ 18.451512] qcom_wcnss_ctrl remoteproc0:smd-edge.WCNSS_CTRL.-1.-1: > expected cold boot completion > > So I guess I still have some debugging to do here. I get a watchdog error if I leave the board up for long enough: [ 69.761944] qcom-wcnss-pil a204000.wcnss: fatal error received: dog.c:1684:Watchdog detects task starvation [ 69.762014] remoteproc remoteproc0: crash detected in a204000.wcnss: type fatal error [ 69.770561] remoteproc remoteproc0: handling crash #1 in a204000.wcnss [ 69.778636] remoteproc remoteproc0: recovering a204000.wcnss [ 69.983945] remoteproc remoteproc0: stopped remote processor a204000.wcnss [ 69.984008] remoteproc remoteproc0: powering up a204000.wcnss [ 69.990137] remoteproc remoteproc0: Booting fw image wcnss.mdt, size 924 [ 70.647291] remoteproc remoteproc0: remote processor a204000.wcnss is now up [ 71.651533] remoteproc0:smd-edge: remote side did not enter opening state [ 71.651581] qcom_wcnss_ctrl remoteproc0:smd-edge.WCNSS_CTRL.-1.-1: failed to create endpoint [ 71.657347] qcom_wcnss_ctrl: probe of remoteproc0:smd-edge.WCNSS_CTRL.-1.-1 failed with error -12 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Initial msm8909 support 2017-12-21 16:02 ` Will Newton @ 2018-01-04 10:37 ` Will Newton 0 siblings, 0 replies; 10+ messages in thread From: Will Newton @ 2018-01-04 10:37 UTC (permalink / raw) To: Bjorn Andersson; +Cc: linux-arm-msm, Stephen Boyd, anYc Hi, Has anyone seen this error before? It seems the firmware is crashing but giving little indication why this is. On Thu, Dec 21, 2017 at 4:02 PM, Will Newton <will.newton@gmail.com> wrote: > On Thu, Dec 21, 2017 at 3:58 PM, Will Newton <will.newton@gmail.com> wrote: >> On Thu, Dec 21, 2017 at 10:01 AM, Will Newton <will.newton@gmail.com> wrote: >>> On Thu, Dec 21, 2017 at 6:45 AM, Bjorn Andersson >>> <bjorn.andersson@linaro.org> wrote: >>>> On Tue 19 Dec 09:30 PST 2017, Will Newton wrote: >>>> >>>>> On Tue, Dec 19, 2017 at 2:21 PM, Will Newton <will.newton@gmail.com> wrote: >>>>> > On Tue, Dec 19, 2017 at 9:44 AM, Will Newton <will.newton@gmail.com> wrote: >>>>> >> Hi, >>>>> >> >>>>> >> I have a git tree with my initial start at msm8909 support in Linux 4.9 here: >>>>> >> >>>>> >> https://bitbucket.org/andromedauk/msm8909-linux >>>>> >> >>>>> >> It's based off the Linaro Qualcomm landing team tree (with Android >>>>> >> drivers merged too for no useful reason). >>>>> >> >>>>> >> The current state is that pinctrl is pretty much done, regulators are >>>>> >> mostly done, clocks is quite hard to say as I'm not doing a good job >>>>> >> of parsing the docs right now. The serial port works! I've seen the >>>>> >> USB driver enumerate a hub but not tested any further. >>>>> >> >>>>> >> Outstanding tasks: >>>>> >> >>>>> >> 1. Semi-random resets during boot. Occasionally the board will reset >>>>> >> for no obvious reason during boot. I suspect this is something to do >>>>> >> with regulators as it usually seems to be around the time something is >>>>> >> setting voltage and turning on initcall debugging seems to make it >>>>> >> less likely to happen (by slowing the boot). >>>>> > >>>>> > FWIW these resets go away if I disable the wcnss driver in the dts. >>>>> >>>>> Specifically the code that triggers the reset is the call to >>>>> qcom_scm_pas_auth_and_reset in qcom_wcnss.c. If I comment that call >>>>> out then the boot seems to be stable. Does anyone have any ideas what >>>>> might cause that behaviour? >>>>> >>>> >>>> It's worth noting that there are two sets of errors that occurs in >>>> qcom_scm_pas_auth_and_reset(); either the implementation of the call >>>> itself fails - typically from the lack of clocking of the crypto block - >>>> or if the call succeeds the ARM core in the WiFi subsystem will start >>>> execute the firmware and this might access hardware with expectations on >>>> what the Linux side has configured. >>> >>> The crash is unreliable (not every boot) and async - it doesn't happen >>> exactly at the time of the scm call but soon after, suggesting it is >>> the wifi subsystem that starts up and then may crash for some reason. >> >> I believe I have fixed the problem. I rejigged the reserved memory >> regions, adding rmtfs and rfsa regions and moving the wcnss region to >> a more aligned address. This allows it to continue to download the NV >> firmware and then fail with: >> >> [ 7.966472] qcom_wcnss_ctrl remoteproc0:smd-edge.WCNSS_CTRL.-1.-1: >> WCNSS Version 1.5 1.2 >> [ 18.451512] qcom_wcnss_ctrl remoteproc0:smd-edge.WCNSS_CTRL.-1.-1: >> expected cold boot completion >> >> So I guess I still have some debugging to do here. > > I get a watchdog error if I leave the board up for long enough: > > [ 69.761944] qcom-wcnss-pil a204000.wcnss: fatal error received: > dog.c:1684:Watchdog detects task starvation > [ 69.762014] remoteproc remoteproc0: crash detected in > a204000.wcnss: type fatal error > [ 69.770561] remoteproc remoteproc0: handling crash #1 in a204000.wcnss > [ 69.778636] remoteproc remoteproc0: recovering a204000.wcnss > [ 69.983945] remoteproc remoteproc0: stopped remote processor a204000.wcnss > [ 69.984008] remoteproc remoteproc0: powering up a204000.wcnss > [ 69.990137] remoteproc remoteproc0: Booting fw image wcnss.mdt, size 924 > [ 70.647291] remoteproc remoteproc0: remote processor a204000.wcnss is now up > [ 71.651533] remoteproc0:smd-edge: remote side did not enter opening state > [ 71.651581] qcom_wcnss_ctrl remoteproc0:smd-edge.WCNSS_CTRL.-1.-1: > failed to create endpoint > [ 71.657347] qcom_wcnss_ctrl: probe of > remoteproc0:smd-edge.WCNSS_CTRL.-1.-1 failed with error -12 ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2018-01-04 10:37 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-12-19 9:44 Initial msm8909 support Will Newton 2017-12-19 14:21 ` Will Newton 2017-12-19 17:30 ` Will Newton 2017-12-19 19:08 ` Stephen Boyd 2017-12-20 9:58 ` Will Newton 2017-12-21 6:45 ` Bjorn Andersson 2017-12-21 10:01 ` Will Newton 2017-12-21 15:58 ` Will Newton 2017-12-21 16:02 ` Will Newton 2018-01-04 10:37 ` Will Newton
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox