Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-07-20 Thread Simon Glass
Hi Jan,

On Tue, 20 Jul 2021 at 06:58, Jan Kiszka  wrote:
>
> On 14.07.21 16:15, Simon Glass wrote:
> > Hi Jan,
> >
> > On Wed, 14 Jul 2021 at 03:53, Jan Kiszka  wrote:
> >>
> >> On 05.07.21 17:29, Simon Glass wrote:
> >>> Hi Jan,
> >>>
> >>> On Sun, 27 Jun 2021 at 23:40, Jan Kiszka  wrote:
> 
>  On 27.06.21 20:18, Simon Glass wrote:
> > Hi Jan,
> >
> > On Sun, 27 Jun 2021 at 12:01, Jan Kiszka  wrote:
> >>
> >> On 26.06.21 20:29, Simon Glass wrote:
> >>> Hi,
> >>>
> >>> On Fri, 11 Jun 2021 at 08:08, Tom Rini  wrote:
> 
>  On Fri, Jun 11, 2021 at 07:14:21PM +0530, Lokesh Vutla wrote:
> > Hi Tom,
> >
> > On 09/06/21 6:47 pm, Jan Kiszka wrote:
> >> On 07.06.21 13:44, Jan Kiszka wrote:
> >>> On 07.06.21 13:40, Tom Rini wrote:
>  On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
> > +Tom,
> >
> > Hi Tom,
> >
> > On 02/06/21 3:07 pm, Jan Kiszka wrote:
> >> From: Jan Kiszka 
> >>
> >> To avoid the need of extra boot scripting on AM65x for loading 
> >> a
> >> watchdog firmware, add the required rproc init and loading 
> >> logic for the
> >> first R5F core to the watchdog start handler. In case the R5F 
> >> cluster is
> >> in lock-step mode, also initialize the second core. The 
> >> firmware itself
> >> is embedded into U-Boot binary to ease access to it and ensure 
> >> it is
> >> properly hashed in case of secure boot.
> >>
> >> One possible firmware source is 
> >> https://github.com/siemens/k3-rti-wdt.
> >>
> >> Signed-off-by: Jan Kiszka 
> >> ---
> >>  drivers/watchdog/Kconfig  | 20 
> >>  drivers/watchdog/Makefile |  5 +++
> >>  drivers/watchdog/rti_wdt.c| 58 
> >> ++-
> >>  drivers/watchdog/rti_wdt_fw.S | 20 
> >>  4 files changed, 102 insertions(+), 1 deletion(-)
> >>  create mode 100644 drivers/watchdog/rti_wdt_fw.S
> >>
> >> diff --git a/drivers/watchdog/Kconfig 
> >> b/drivers/watchdog/Kconfig
> >> index f0ff2612a6..1a1fddfe9f 100644
> >> --- a/drivers/watchdog/Kconfig
> >> +++ b/drivers/watchdog/Kconfig
> >> @@ -209,6 +209,26 @@ config WDT_K3_RTI
> >>   Say Y here if you want to include support for the K3 
> >> watchdog
> >>   timer (RTI module) available in the K3 generation of 
> >> processors.
> >>
> >> +if WDT_K3_RTI
> >> +
> >> +config WDT_K3_RTI_LOAD_FW
> >> +   bool "Load watchdog firmware"
> >> +   depends on REMOTEPROC
> >> +   help
> >> + Automatically load the specified firmware image into 
> >> the MCU R5F
> >> + core 0. On the AM65x, this firmware is supposed to 
> >> handle the expiry
> >> + of the watchdog timer, typically by resetting the 
> >> system.
> >> +
> >> +config WDT_K3_RTI_FW_FILE
> >> +   string "Watchdog firmware image file"
> >> +   default "k3-rti-wdt.fw"
> >> +   depends on WDT_K3_RTI_LOAD_FW
> >> +   help
> >> + Firmware image to be embedded into U-Boot and loaded 
> >> on watchdog
> >> + start.
> >
> > I need your input on this proach. Is it okay to include the 
> > linker file unders
> > drivers?
> 
>  Maybe?  I suppose the first thing that springs to mind is why 
>  aren't we
>  using binman and including this blob (which I happily see is 
>  GPLv2)
>  similar to how we do things with x86 for one example.
> 
> >>>
> >>> See 
> >>> https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html
> >>>
> >>> Jan
> >>>
> >>
> >> Did this help to answer open questions? Otherwise, please let me 
> >> know.
> >>
> >> I'd also like to avoid that his patch alone blocks 1-3 of the 
> >> series
> >> needless - but I would also not mind getting everything in at once.
> >
> > Can you provide your reviewed-by if you are okay with this approach?
> 
>  I was kind of hoping Simon would chime in here on binman usage.  So,
>  re-re-reading the above URL, yes, fsloader wouldn't be the right 

Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-07-20 Thread Jan Kiszka
On 20.07.21 14:57, Jan Kiszka wrote:
> On 14.07.21 16:15, Simon Glass wrote:
>> Hi Jan,
>>
>> On Wed, 14 Jul 2021 at 03:53, Jan Kiszka  wrote:
>>>
>>> On 05.07.21 17:29, Simon Glass wrote:
 Hi Jan,

 On Sun, 27 Jun 2021 at 23:40, Jan Kiszka  wrote:
>
> On 27.06.21 20:18, Simon Glass wrote:
>> Hi Jan,
>>
>> On Sun, 27 Jun 2021 at 12:01, Jan Kiszka  wrote:
>>>
>>> On 26.06.21 20:29, Simon Glass wrote:
 Hi,

 On Fri, 11 Jun 2021 at 08:08, Tom Rini  wrote:
>
> On Fri, Jun 11, 2021 at 07:14:21PM +0530, Lokesh Vutla wrote:
>> Hi Tom,
>>
>> On 09/06/21 6:47 pm, Jan Kiszka wrote:
>>> On 07.06.21 13:44, Jan Kiszka wrote:
 On 07.06.21 13:40, Tom Rini wrote:
> On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
>> +Tom,
>>
>> Hi Tom,
>>
>> On 02/06/21 3:07 pm, Jan Kiszka wrote:
>>> From: Jan Kiszka 
>>>
>>> To avoid the need of extra boot scripting on AM65x for loading a
>>> watchdog firmware, add the required rproc init and loading 
>>> logic for the
>>> first R5F core to the watchdog start handler. In case the R5F 
>>> cluster is
>>> in lock-step mode, also initialize the second core. The 
>>> firmware itself
>>> is embedded into U-Boot binary to ease access to it and ensure 
>>> it is
>>> properly hashed in case of secure boot.
>>>
>>> One possible firmware source is 
>>> https://github.com/siemens/k3-rti-wdt.
>>>
>>> Signed-off-by: Jan Kiszka 
>>> ---
>>>  drivers/watchdog/Kconfig  | 20 
>>>  drivers/watchdog/Makefile |  5 +++
>>>  drivers/watchdog/rti_wdt.c| 58 
>>> ++-
>>>  drivers/watchdog/rti_wdt_fw.S | 20 
>>>  4 files changed, 102 insertions(+), 1 deletion(-)
>>>  create mode 100644 drivers/watchdog/rti_wdt_fw.S
>>>
>>> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
>>> index f0ff2612a6..1a1fddfe9f 100644
>>> --- a/drivers/watchdog/Kconfig
>>> +++ b/drivers/watchdog/Kconfig
>>> @@ -209,6 +209,26 @@ config WDT_K3_RTI
>>>   Say Y here if you want to include support for the K3 
>>> watchdog
>>>   timer (RTI module) available in the K3 generation of 
>>> processors.
>>>
>>> +if WDT_K3_RTI
>>> +
>>> +config WDT_K3_RTI_LOAD_FW
>>> +   bool "Load watchdog firmware"
>>> +   depends on REMOTEPROC
>>> +   help
>>> + Automatically load the specified firmware image into 
>>> the MCU R5F
>>> + core 0. On the AM65x, this firmware is supposed to 
>>> handle the expiry
>>> + of the watchdog timer, typically by resetting the 
>>> system.
>>> +
>>> +config WDT_K3_RTI_FW_FILE
>>> +   string "Watchdog firmware image file"
>>> +   default "k3-rti-wdt.fw"
>>> +   depends on WDT_K3_RTI_LOAD_FW
>>> +   help
>>> + Firmware image to be embedded into U-Boot and loaded 
>>> on watchdog
>>> + start.
>>
>> I need your input on this proach. Is it okay to include the 
>> linker file unders
>> drivers?
>
> Maybe?  I suppose the first thing that springs to mind is why 
> aren't we
> using binman and including this blob (which I happily see is 
> GPLv2)
> similar to how we do things with x86 for one example.
>

 See 
 https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html

 Jan

>>>
>>> Did this help to answer open questions? Otherwise, please let me 
>>> know.
>>>
>>> I'd also like to avoid that his patch alone blocks 1-3 of the series
>>> needless - but I would also not mind getting everything in at once.
>>
>> Can you provide your reviewed-by if you are okay with this approach?
>
> I was kind of hoping Simon would chime in here on binman usage.  So,
> re-re-reading the above URL, yes, fsloader wouldn't be the right 
> choice
> for watchdog firmware.  But I think binman_entry_find() and related
> could work, in general, for this case of "need firmware blob embedded 
> in

Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-07-20 Thread Jan Kiszka
On 14.07.21 16:15, Simon Glass wrote:
> Hi Jan,
> 
> On Wed, 14 Jul 2021 at 03:53, Jan Kiszka  wrote:
>>
>> On 05.07.21 17:29, Simon Glass wrote:
>>> Hi Jan,
>>>
>>> On Sun, 27 Jun 2021 at 23:40, Jan Kiszka  wrote:

 On 27.06.21 20:18, Simon Glass wrote:
> Hi Jan,
>
> On Sun, 27 Jun 2021 at 12:01, Jan Kiszka  wrote:
>>
>> On 26.06.21 20:29, Simon Glass wrote:
>>> Hi,
>>>
>>> On Fri, 11 Jun 2021 at 08:08, Tom Rini  wrote:

 On Fri, Jun 11, 2021 at 07:14:21PM +0530, Lokesh Vutla wrote:
> Hi Tom,
>
> On 09/06/21 6:47 pm, Jan Kiszka wrote:
>> On 07.06.21 13:44, Jan Kiszka wrote:
>>> On 07.06.21 13:40, Tom Rini wrote:
 On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
> +Tom,
>
> Hi Tom,
>
> On 02/06/21 3:07 pm, Jan Kiszka wrote:
>> From: Jan Kiszka 
>>
>> To avoid the need of extra boot scripting on AM65x for loading a
>> watchdog firmware, add the required rproc init and loading logic 
>> for the
>> first R5F core to the watchdog start handler. In case the R5F 
>> cluster is
>> in lock-step mode, also initialize the second core. The firmware 
>> itself
>> is embedded into U-Boot binary to ease access to it and ensure 
>> it is
>> properly hashed in case of secure boot.
>>
>> One possible firmware source is 
>> https://github.com/siemens/k3-rti-wdt.
>>
>> Signed-off-by: Jan Kiszka 
>> ---
>>  drivers/watchdog/Kconfig  | 20 
>>  drivers/watchdog/Makefile |  5 +++
>>  drivers/watchdog/rti_wdt.c| 58 
>> ++-
>>  drivers/watchdog/rti_wdt_fw.S | 20 
>>  4 files changed, 102 insertions(+), 1 deletion(-)
>>  create mode 100644 drivers/watchdog/rti_wdt_fw.S
>>
>> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
>> index f0ff2612a6..1a1fddfe9f 100644
>> --- a/drivers/watchdog/Kconfig
>> +++ b/drivers/watchdog/Kconfig
>> @@ -209,6 +209,26 @@ config WDT_K3_RTI
>>   Say Y here if you want to include support for the K3 
>> watchdog
>>   timer (RTI module) available in the K3 generation of 
>> processors.
>>
>> +if WDT_K3_RTI
>> +
>> +config WDT_K3_RTI_LOAD_FW
>> +   bool "Load watchdog firmware"
>> +   depends on REMOTEPROC
>> +   help
>> + Automatically load the specified firmware image into 
>> the MCU R5F
>> + core 0. On the AM65x, this firmware is supposed to 
>> handle the expiry
>> + of the watchdog timer, typically by resetting the 
>> system.
>> +
>> +config WDT_K3_RTI_FW_FILE
>> +   string "Watchdog firmware image file"
>> +   default "k3-rti-wdt.fw"
>> +   depends on WDT_K3_RTI_LOAD_FW
>> +   help
>> + Firmware image to be embedded into U-Boot and loaded 
>> on watchdog
>> + start.
>
> I need your input on this proach. Is it okay to include the 
> linker file unders
> drivers?

 Maybe?  I suppose the first thing that springs to mind is why 
 aren't we
 using binman and including this blob (which I happily see is GPLv2)
 similar to how we do things with x86 for one example.

>>>
>>> See https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html
>>>
>>> Jan
>>>
>>
>> Did this help to answer open questions? Otherwise, please let me 
>> know.
>>
>> I'd also like to avoid that his patch alone blocks 1-3 of the series
>> needless - but I would also not mind getting everything in at once.
>
> Can you provide your reviewed-by if you are okay with this approach?

 I was kind of hoping Simon would chime in here on binman usage.  So,
 re-re-reading the above URL, yes, fsloader wouldn't be the right choice
 for watchdog firmware.  But I think binman_entry_find() and related
 could work, in general, for this case of "need firmware blob embedded 
 in
 to image".  That said, this isn't just any firmware blob, it's the
 watchdog firmware.  The less reliance on other things the safer it is.
 That means this would be an 

Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-07-14 Thread Simon Glass
Hi Jan,

On Wed, 14 Jul 2021 at 03:53, Jan Kiszka  wrote:
>
> On 05.07.21 17:29, Simon Glass wrote:
> > Hi Jan,
> >
> > On Sun, 27 Jun 2021 at 23:40, Jan Kiszka  wrote:
> >>
> >> On 27.06.21 20:18, Simon Glass wrote:
> >>> Hi Jan,
> >>>
> >>> On Sun, 27 Jun 2021 at 12:01, Jan Kiszka  wrote:
> 
>  On 26.06.21 20:29, Simon Glass wrote:
> > Hi,
> >
> > On Fri, 11 Jun 2021 at 08:08, Tom Rini  wrote:
> >>
> >> On Fri, Jun 11, 2021 at 07:14:21PM +0530, Lokesh Vutla wrote:
> >>> Hi Tom,
> >>>
> >>> On 09/06/21 6:47 pm, Jan Kiszka wrote:
>  On 07.06.21 13:44, Jan Kiszka wrote:
> > On 07.06.21 13:40, Tom Rini wrote:
> >> On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
> >>> +Tom,
> >>>
> >>> Hi Tom,
> >>>
> >>> On 02/06/21 3:07 pm, Jan Kiszka wrote:
>  From: Jan Kiszka 
> 
>  To avoid the need of extra boot scripting on AM65x for loading a
>  watchdog firmware, add the required rproc init and loading logic 
>  for the
>  first R5F core to the watchdog start handler. In case the R5F 
>  cluster is
>  in lock-step mode, also initialize the second core. The firmware 
>  itself
>  is embedded into U-Boot binary to ease access to it and ensure 
>  it is
>  properly hashed in case of secure boot.
> 
>  One possible firmware source is 
>  https://github.com/siemens/k3-rti-wdt.
> 
>  Signed-off-by: Jan Kiszka 
>  ---
>   drivers/watchdog/Kconfig  | 20 
>   drivers/watchdog/Makefile |  5 +++
>   drivers/watchdog/rti_wdt.c| 58 
>  ++-
>   drivers/watchdog/rti_wdt_fw.S | 20 
>   4 files changed, 102 insertions(+), 1 deletion(-)
>   create mode 100644 drivers/watchdog/rti_wdt_fw.S
> 
>  diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
>  index f0ff2612a6..1a1fddfe9f 100644
>  --- a/drivers/watchdog/Kconfig
>  +++ b/drivers/watchdog/Kconfig
>  @@ -209,6 +209,26 @@ config WDT_K3_RTI
>    Say Y here if you want to include support for the K3 
>  watchdog
>    timer (RTI module) available in the K3 generation of 
>  processors.
> 
>  +if WDT_K3_RTI
>  +
>  +config WDT_K3_RTI_LOAD_FW
>  +   bool "Load watchdog firmware"
>  +   depends on REMOTEPROC
>  +   help
>  + Automatically load the specified firmware image into 
>  the MCU R5F
>  + core 0. On the AM65x, this firmware is supposed to 
>  handle the expiry
>  + of the watchdog timer, typically by resetting the 
>  system.
>  +
>  +config WDT_K3_RTI_FW_FILE
>  +   string "Watchdog firmware image file"
>  +   default "k3-rti-wdt.fw"
>  +   depends on WDT_K3_RTI_LOAD_FW
>  +   help
>  + Firmware image to be embedded into U-Boot and loaded 
>  on watchdog
>  + start.
> >>>
> >>> I need your input on this proach. Is it okay to include the 
> >>> linker file unders
> >>> drivers?
> >>
> >> Maybe?  I suppose the first thing that springs to mind is why 
> >> aren't we
> >> using binman and including this blob (which I happily see is GPLv2)
> >> similar to how we do things with x86 for one example.
> >>
> >
> > See https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html
> >
> > Jan
> >
> 
>  Did this help to answer open questions? Otherwise, please let me 
>  know.
> 
>  I'd also like to avoid that his patch alone blocks 1-3 of the series
>  needless - but I would also not mind getting everything in at once.
> >>>
> >>> Can you provide your reviewed-by if you are okay with this approach?
> >>
> >> I was kind of hoping Simon would chime in here on binman usage.  So,
> >> re-re-reading the above URL, yes, fsloader wouldn't be the right choice
> >> for watchdog firmware.  But I think binman_entry_find() and related
> >> could work, in general, for this case of "need firmware blob embedded 
> >> in
> >> to image".  That said, this isn't just any firmware blob, it's the
> >> watchdog firmware.  The less reliance on other things the safer it is.
> >> That means this would be an exception to the general firmware blob
> >> 

Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-07-14 Thread Jan Kiszka
On 05.07.21 17:29, Simon Glass wrote:
> Hi Jan,
> 
> On Sun, 27 Jun 2021 at 23:40, Jan Kiszka  wrote:
>>
>> On 27.06.21 20:18, Simon Glass wrote:
>>> Hi Jan,
>>>
>>> On Sun, 27 Jun 2021 at 12:01, Jan Kiszka  wrote:

 On 26.06.21 20:29, Simon Glass wrote:
> Hi,
>
> On Fri, 11 Jun 2021 at 08:08, Tom Rini  wrote:
>>
>> On Fri, Jun 11, 2021 at 07:14:21PM +0530, Lokesh Vutla wrote:
>>> Hi Tom,
>>>
>>> On 09/06/21 6:47 pm, Jan Kiszka wrote:
 On 07.06.21 13:44, Jan Kiszka wrote:
> On 07.06.21 13:40, Tom Rini wrote:
>> On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
>>> +Tom,
>>>
>>> Hi Tom,
>>>
>>> On 02/06/21 3:07 pm, Jan Kiszka wrote:
 From: Jan Kiszka 

 To avoid the need of extra boot scripting on AM65x for loading a
 watchdog firmware, add the required rproc init and loading logic 
 for the
 first R5F core to the watchdog start handler. In case the R5F 
 cluster is
 in lock-step mode, also initialize the second core. The firmware 
 itself
 is embedded into U-Boot binary to ease access to it and ensure it 
 is
 properly hashed in case of secure boot.

 One possible firmware source is 
 https://github.com/siemens/k3-rti-wdt.

 Signed-off-by: Jan Kiszka 
 ---
  drivers/watchdog/Kconfig  | 20 
  drivers/watchdog/Makefile |  5 +++
  drivers/watchdog/rti_wdt.c| 58 
 ++-
  drivers/watchdog/rti_wdt_fw.S | 20 
  4 files changed, 102 insertions(+), 1 deletion(-)
  create mode 100644 drivers/watchdog/rti_wdt_fw.S

 diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
 index f0ff2612a6..1a1fddfe9f 100644
 --- a/drivers/watchdog/Kconfig
 +++ b/drivers/watchdog/Kconfig
 @@ -209,6 +209,26 @@ config WDT_K3_RTI
   Say Y here if you want to include support for the K3 
 watchdog
   timer (RTI module) available in the K3 generation of 
 processors.

 +if WDT_K3_RTI
 +
 +config WDT_K3_RTI_LOAD_FW
 +   bool "Load watchdog firmware"
 +   depends on REMOTEPROC
 +   help
 + Automatically load the specified firmware image into the 
 MCU R5F
 + core 0. On the AM65x, this firmware is supposed to 
 handle the expiry
 + of the watchdog timer, typically by resetting the system.
 +
 +config WDT_K3_RTI_FW_FILE
 +   string "Watchdog firmware image file"
 +   default "k3-rti-wdt.fw"
 +   depends on WDT_K3_RTI_LOAD_FW
 +   help
 + Firmware image to be embedded into U-Boot and loaded on 
 watchdog
 + start.
>>>
>>> I need your input on this proach. Is it okay to include the linker 
>>> file unders
>>> drivers?
>>
>> Maybe?  I suppose the first thing that springs to mind is why aren't 
>> we
>> using binman and including this blob (which I happily see is GPLv2)
>> similar to how we do things with x86 for one example.
>>
>
> See https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html
>
> Jan
>

 Did this help to answer open questions? Otherwise, please let me know.

 I'd also like to avoid that his patch alone blocks 1-3 of the series
 needless - but I would also not mind getting everything in at once.
>>>
>>> Can you provide your reviewed-by if you are okay with this approach?
>>
>> I was kind of hoping Simon would chime in here on binman usage.  So,
>> re-re-reading the above URL, yes, fsloader wouldn't be the right choice
>> for watchdog firmware.  But I think binman_entry_find() and related
>> could work, in general, for this case of "need firmware blob embedded in
>> to image".  That said, this isn't just any firmware blob, it's the
>> watchdog firmware.  The less reliance on other things the safer it is.
>> That means this would be an exception to the general firmware blob
>> loading rule and yeah, OK, we can do it this way.  Sorry for the delay.
>
> Yes I've been a little tied up recently. But I think this should use
> binman. We really don't want to be building binary firmware into
> U-Boot itself!
>
> Also Tom says, see x86 for a load of binaries of different types and

Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-07-05 Thread Simon Glass
Hi Jan,

On Sun, 27 Jun 2021 at 23:40, Jan Kiszka  wrote:
>
> On 27.06.21 20:18, Simon Glass wrote:
> > Hi Jan,
> >
> > On Sun, 27 Jun 2021 at 12:01, Jan Kiszka  wrote:
> >>
> >> On 26.06.21 20:29, Simon Glass wrote:
> >>> Hi,
> >>>
> >>> On Fri, 11 Jun 2021 at 08:08, Tom Rini  wrote:
> 
>  On Fri, Jun 11, 2021 at 07:14:21PM +0530, Lokesh Vutla wrote:
> > Hi Tom,
> >
> > On 09/06/21 6:47 pm, Jan Kiszka wrote:
> >> On 07.06.21 13:44, Jan Kiszka wrote:
> >>> On 07.06.21 13:40, Tom Rini wrote:
>  On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
> > +Tom,
> >
> > Hi Tom,
> >
> > On 02/06/21 3:07 pm, Jan Kiszka wrote:
> >> From: Jan Kiszka 
> >>
> >> To avoid the need of extra boot scripting on AM65x for loading a
> >> watchdog firmware, add the required rproc init and loading logic 
> >> for the
> >> first R5F core to the watchdog start handler. In case the R5F 
> >> cluster is
> >> in lock-step mode, also initialize the second core. The firmware 
> >> itself
> >> is embedded into U-Boot binary to ease access to it and ensure it 
> >> is
> >> properly hashed in case of secure boot.
> >>
> >> One possible firmware source is 
> >> https://github.com/siemens/k3-rti-wdt.
> >>
> >> Signed-off-by: Jan Kiszka 
> >> ---
> >>  drivers/watchdog/Kconfig  | 20 
> >>  drivers/watchdog/Makefile |  5 +++
> >>  drivers/watchdog/rti_wdt.c| 58 
> >> ++-
> >>  drivers/watchdog/rti_wdt_fw.S | 20 
> >>  4 files changed, 102 insertions(+), 1 deletion(-)
> >>  create mode 100644 drivers/watchdog/rti_wdt_fw.S
> >>
> >> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> >> index f0ff2612a6..1a1fddfe9f 100644
> >> --- a/drivers/watchdog/Kconfig
> >> +++ b/drivers/watchdog/Kconfig
> >> @@ -209,6 +209,26 @@ config WDT_K3_RTI
> >>   Say Y here if you want to include support for the K3 
> >> watchdog
> >>   timer (RTI module) available in the K3 generation of 
> >> processors.
> >>
> >> +if WDT_K3_RTI
> >> +
> >> +config WDT_K3_RTI_LOAD_FW
> >> +   bool "Load watchdog firmware"
> >> +   depends on REMOTEPROC
> >> +   help
> >> + Automatically load the specified firmware image into the 
> >> MCU R5F
> >> + core 0. On the AM65x, this firmware is supposed to 
> >> handle the expiry
> >> + of the watchdog timer, typically by resetting the system.
> >> +
> >> +config WDT_K3_RTI_FW_FILE
> >> +   string "Watchdog firmware image file"
> >> +   default "k3-rti-wdt.fw"
> >> +   depends on WDT_K3_RTI_LOAD_FW
> >> +   help
> >> + Firmware image to be embedded into U-Boot and loaded on 
> >> watchdog
> >> + start.
> >
> > I need your input on this proach. Is it okay to include the linker 
> > file unders
> > drivers?
> 
>  Maybe?  I suppose the first thing that springs to mind is why aren't 
>  we
>  using binman and including this blob (which I happily see is GPLv2)
>  similar to how we do things with x86 for one example.
> 
> >>>
> >>> See https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html
> >>>
> >>> Jan
> >>>
> >>
> >> Did this help to answer open questions? Otherwise, please let me know.
> >>
> >> I'd also like to avoid that his patch alone blocks 1-3 of the series
> >> needless - but I would also not mind getting everything in at once.
> >
> > Can you provide your reviewed-by if you are okay with this approach?
> 
>  I was kind of hoping Simon would chime in here on binman usage.  So,
>  re-re-reading the above URL, yes, fsloader wouldn't be the right choice
>  for watchdog firmware.  But I think binman_entry_find() and related
>  could work, in general, for this case of "need firmware blob embedded in
>  to image".  That said, this isn't just any firmware blob, it's the
>  watchdog firmware.  The less reliance on other things the safer it is.
>  That means this would be an exception to the general firmware blob
>  loading rule and yeah, OK, we can do it this way.  Sorry for the delay.
> >>>
> >>> Yes I've been a little tied up recently. But I think this should use
> >>> binman. We really don't want to be building binary firmware into
> >>> U-Boot itself!
> >>>
> >>> Also Tom says, see x86 for a load of binaries of different types and
> >>> how they are accessed at runttime. This 

Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-06-27 Thread Jan Kiszka
On 27.06.21 20:18, Simon Glass wrote:
> Hi Jan,
> 
> On Sun, 27 Jun 2021 at 12:01, Jan Kiszka  wrote:
>>
>> On 26.06.21 20:29, Simon Glass wrote:
>>> Hi,
>>>
>>> On Fri, 11 Jun 2021 at 08:08, Tom Rini  wrote:

 On Fri, Jun 11, 2021 at 07:14:21PM +0530, Lokesh Vutla wrote:
> Hi Tom,
>
> On 09/06/21 6:47 pm, Jan Kiszka wrote:
>> On 07.06.21 13:44, Jan Kiszka wrote:
>>> On 07.06.21 13:40, Tom Rini wrote:
 On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
> +Tom,
>
> Hi Tom,
>
> On 02/06/21 3:07 pm, Jan Kiszka wrote:
>> From: Jan Kiszka 
>>
>> To avoid the need of extra boot scripting on AM65x for loading a
>> watchdog firmware, add the required rproc init and loading logic for 
>> the
>> first R5F core to the watchdog start handler. In case the R5F 
>> cluster is
>> in lock-step mode, also initialize the second core. The firmware 
>> itself
>> is embedded into U-Boot binary to ease access to it and ensure it is
>> properly hashed in case of secure boot.
>>
>> One possible firmware source is 
>> https://github.com/siemens/k3-rti-wdt.
>>
>> Signed-off-by: Jan Kiszka 
>> ---
>>  drivers/watchdog/Kconfig  | 20 
>>  drivers/watchdog/Makefile |  5 +++
>>  drivers/watchdog/rti_wdt.c| 58 
>> ++-
>>  drivers/watchdog/rti_wdt_fw.S | 20 
>>  4 files changed, 102 insertions(+), 1 deletion(-)
>>  create mode 100644 drivers/watchdog/rti_wdt_fw.S
>>
>> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
>> index f0ff2612a6..1a1fddfe9f 100644
>> --- a/drivers/watchdog/Kconfig
>> +++ b/drivers/watchdog/Kconfig
>> @@ -209,6 +209,26 @@ config WDT_K3_RTI
>>   Say Y here if you want to include support for the K3 
>> watchdog
>>   timer (RTI module) available in the K3 generation of 
>> processors.
>>
>> +if WDT_K3_RTI
>> +
>> +config WDT_K3_RTI_LOAD_FW
>> +   bool "Load watchdog firmware"
>> +   depends on REMOTEPROC
>> +   help
>> + Automatically load the specified firmware image into the 
>> MCU R5F
>> + core 0. On the AM65x, this firmware is supposed to handle 
>> the expiry
>> + of the watchdog timer, typically by resetting the system.
>> +
>> +config WDT_K3_RTI_FW_FILE
>> +   string "Watchdog firmware image file"
>> +   default "k3-rti-wdt.fw"
>> +   depends on WDT_K3_RTI_LOAD_FW
>> +   help
>> + Firmware image to be embedded into U-Boot and loaded on 
>> watchdog
>> + start.
>
> I need your input on this proach. Is it okay to include the linker 
> file unders
> drivers?

 Maybe?  I suppose the first thing that springs to mind is why aren't we
 using binman and including this blob (which I happily see is GPLv2)
 similar to how we do things with x86 for one example.

>>>
>>> See https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html
>>>
>>> Jan
>>>
>>
>> Did this help to answer open questions? Otherwise, please let me know.
>>
>> I'd also like to avoid that his patch alone blocks 1-3 of the series
>> needless - but I would also not mind getting everything in at once.
>
> Can you provide your reviewed-by if you are okay with this approach?

 I was kind of hoping Simon would chime in here on binman usage.  So,
 re-re-reading the above URL, yes, fsloader wouldn't be the right choice
 for watchdog firmware.  But I think binman_entry_find() and related
 could work, in general, for this case of "need firmware blob embedded in
 to image".  That said, this isn't just any firmware blob, it's the
 watchdog firmware.  The less reliance on other things the safer it is.
 That means this would be an exception to the general firmware blob
 loading rule and yeah, OK, we can do it this way.  Sorry for the delay.
>>>
>>> Yes I've been a little tied up recently. But I think this should use
>>> binman. We really don't want to be building binary firmware into
>>> U-Boot itself!
>>>
>>> Also Tom says, see x86 for a load of binaries of different types and
>>> how they are accessed at runttime. This is what binman is for.
>>>
>>
>> Please take the time and study my arguments. I'm open for better
>> proposals, but they need to be concrete and addressing my points.
> 
> Do you mean 'properly hashed' and 'easy access', or something else?
> What can binman not do?

Binman itself can stick things into binary 

Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-06-27 Thread Simon Glass
Hi Tom,

On Sun, 27 Jun 2021 at 13:34, Tom Rini  wrote:
>
> On Sun, Jun 27, 2021 at 12:18:09PM -0600, Simon Glass wrote:
> > Hi Jan,
> >
> > On Sun, 27 Jun 2021 at 12:01, Jan Kiszka  wrote:
> > >
> > > On 26.06.21 20:29, Simon Glass wrote:
> > > > Hi,
> > > >
> > > > On Fri, 11 Jun 2021 at 08:08, Tom Rini  wrote:
> > > >>
> > > >> On Fri, Jun 11, 2021 at 07:14:21PM +0530, Lokesh Vutla wrote:
> > > >>> Hi Tom,
> > > >>>
> > > >>> On 09/06/21 6:47 pm, Jan Kiszka wrote:
> > >  On 07.06.21 13:44, Jan Kiszka wrote:
> > > > On 07.06.21 13:40, Tom Rini wrote:
> > > >> On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
> > > >>> +Tom,
> > > >>>
> > > >>> Hi Tom,
> > > >>>
> > > >>> On 02/06/21 3:07 pm, Jan Kiszka wrote:
> > >  From: Jan Kiszka 
> > > 
> > >  To avoid the need of extra boot scripting on AM65x for loading a
> > >  watchdog firmware, add the required rproc init and loading logic 
> > >  for the
> > >  first R5F core to the watchdog start handler. In case the R5F 
> > >  cluster is
> > >  in lock-step mode, also initialize the second core. The firmware 
> > >  itself
> > >  is embedded into U-Boot binary to ease access to it and ensure 
> > >  it is
> > >  properly hashed in case of secure boot.
> > > 
> > >  One possible firmware source is 
> > >  https://github.com/siemens/k3-rti-wdt.
> > > 
> > >  Signed-off-by: Jan Kiszka 
> > >  ---
> > >   drivers/watchdog/Kconfig  | 20 
> > >   drivers/watchdog/Makefile |  5 +++
> > >   drivers/watchdog/rti_wdt.c| 58 
> > >  ++-
> > >   drivers/watchdog/rti_wdt_fw.S | 20 
> > >   4 files changed, 102 insertions(+), 1 deletion(-)
> > >   create mode 100644 drivers/watchdog/rti_wdt_fw.S
> > > 
> > >  diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> > >  index f0ff2612a6..1a1fddfe9f 100644
> > >  --- a/drivers/watchdog/Kconfig
> > >  +++ b/drivers/watchdog/Kconfig
> > >  @@ -209,6 +209,26 @@ config WDT_K3_RTI
> > >    Say Y here if you want to include support for the K3 
> > >  watchdog
> > >    timer (RTI module) available in the K3 generation of 
> > >  processors.
> > > 
> > >  +if WDT_K3_RTI
> > >  +
> > >  +config WDT_K3_RTI_LOAD_FW
> > >  +   bool "Load watchdog firmware"
> > >  +   depends on REMOTEPROC
> > >  +   help
> > >  + Automatically load the specified firmware image into 
> > >  the MCU R5F
> > >  + core 0. On the AM65x, this firmware is supposed to 
> > >  handle the expiry
> > >  + of the watchdog timer, typically by resetting the 
> > >  system.
> > >  +
> > >  +config WDT_K3_RTI_FW_FILE
> > >  +   string "Watchdog firmware image file"
> > >  +   default "k3-rti-wdt.fw"
> > >  +   depends on WDT_K3_RTI_LOAD_FW
> > >  +   help
> > >  + Firmware image to be embedded into U-Boot and loaded 
> > >  on watchdog
> > >  + start.
> > > >>>
> > > >>> I need your input on this proach. Is it okay to include the 
> > > >>> linker file unders
> > > >>> drivers?
> > > >>
> > > >> Maybe?  I suppose the first thing that springs to mind is why 
> > > >> aren't we
> > > >> using binman and including this blob (which I happily see is GPLv2)
> > > >> similar to how we do things with x86 for one example.
> > > >>
> > > >
> > > > See https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html
> > > >
> > > > Jan
> > > >
> > > 
> > >  Did this help to answer open questions? Otherwise, please let me 
> > >  know.
> > > 
> > >  I'd also like to avoid that his patch alone blocks 1-3 of the series
> > >  needless - but I would also not mind getting everything in at once.
> > > >>>
> > > >>> Can you provide your reviewed-by if you are okay with this approach?
> > > >>
> > > >> I was kind of hoping Simon would chime in here on binman usage.  So,
> > > >> re-re-reading the above URL, yes, fsloader wouldn't be the right choice
> > > >> for watchdog firmware.  But I think binman_entry_find() and related
> > > >> could work, in general, for this case of "need firmware blob embedded 
> > > >> in
> > > >> to image".  That said, this isn't just any firmware blob, it's the
> > > >> watchdog firmware.  The less reliance on other things the safer it is.
> > > >> That means this would be an exception to the general firmware blob
> > > >> loading rule and yeah, OK, we can do it this way.  Sorry for the delay.
> > > >
> > > > Yes I've been a 

Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-06-27 Thread Tom Rini
On Sun, Jun 27, 2021 at 12:18:09PM -0600, Simon Glass wrote:
> Hi Jan,
> 
> On Sun, 27 Jun 2021 at 12:01, Jan Kiszka  wrote:
> >
> > On 26.06.21 20:29, Simon Glass wrote:
> > > Hi,
> > >
> > > On Fri, 11 Jun 2021 at 08:08, Tom Rini  wrote:
> > >>
> > >> On Fri, Jun 11, 2021 at 07:14:21PM +0530, Lokesh Vutla wrote:
> > >>> Hi Tom,
> > >>>
> > >>> On 09/06/21 6:47 pm, Jan Kiszka wrote:
> >  On 07.06.21 13:44, Jan Kiszka wrote:
> > > On 07.06.21 13:40, Tom Rini wrote:
> > >> On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
> > >>> +Tom,
> > >>>
> > >>> Hi Tom,
> > >>>
> > >>> On 02/06/21 3:07 pm, Jan Kiszka wrote:
> >  From: Jan Kiszka 
> > 
> >  To avoid the need of extra boot scripting on AM65x for loading a
> >  watchdog firmware, add the required rproc init and loading logic 
> >  for the
> >  first R5F core to the watchdog start handler. In case the R5F 
> >  cluster is
> >  in lock-step mode, also initialize the second core. The firmware 
> >  itself
> >  is embedded into U-Boot binary to ease access to it and ensure it 
> >  is
> >  properly hashed in case of secure boot.
> > 
> >  One possible firmware source is 
> >  https://github.com/siemens/k3-rti-wdt.
> > 
> >  Signed-off-by: Jan Kiszka 
> >  ---
> >   drivers/watchdog/Kconfig  | 20 
> >   drivers/watchdog/Makefile |  5 +++
> >   drivers/watchdog/rti_wdt.c| 58 
> >  ++-
> >   drivers/watchdog/rti_wdt_fw.S | 20 
> >   4 files changed, 102 insertions(+), 1 deletion(-)
> >   create mode 100644 drivers/watchdog/rti_wdt_fw.S
> > 
> >  diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> >  index f0ff2612a6..1a1fddfe9f 100644
> >  --- a/drivers/watchdog/Kconfig
> >  +++ b/drivers/watchdog/Kconfig
> >  @@ -209,6 +209,26 @@ config WDT_K3_RTI
> >    Say Y here if you want to include support for the K3 
> >  watchdog
> >    timer (RTI module) available in the K3 generation of 
> >  processors.
> > 
> >  +if WDT_K3_RTI
> >  +
> >  +config WDT_K3_RTI_LOAD_FW
> >  +   bool "Load watchdog firmware"
> >  +   depends on REMOTEPROC
> >  +   help
> >  + Automatically load the specified firmware image into the 
> >  MCU R5F
> >  + core 0. On the AM65x, this firmware is supposed to 
> >  handle the expiry
> >  + of the watchdog timer, typically by resetting the system.
> >  +
> >  +config WDT_K3_RTI_FW_FILE
> >  +   string "Watchdog firmware image file"
> >  +   default "k3-rti-wdt.fw"
> >  +   depends on WDT_K3_RTI_LOAD_FW
> >  +   help
> >  + Firmware image to be embedded into U-Boot and loaded on 
> >  watchdog
> >  + start.
> > >>>
> > >>> I need your input on this proach. Is it okay to include the linker 
> > >>> file unders
> > >>> drivers?
> > >>
> > >> Maybe?  I suppose the first thing that springs to mind is why aren't 
> > >> we
> > >> using binman and including this blob (which I happily see is GPLv2)
> > >> similar to how we do things with x86 for one example.
> > >>
> > >
> > > See https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html
> > >
> > > Jan
> > >
> > 
> >  Did this help to answer open questions? Otherwise, please let me know.
> > 
> >  I'd also like to avoid that his patch alone blocks 1-3 of the series
> >  needless - but I would also not mind getting everything in at once.
> > >>>
> > >>> Can you provide your reviewed-by if you are okay with this approach?
> > >>
> > >> I was kind of hoping Simon would chime in here on binman usage.  So,
> > >> re-re-reading the above URL, yes, fsloader wouldn't be the right choice
> > >> for watchdog firmware.  But I think binman_entry_find() and related
> > >> could work, in general, for this case of "need firmware blob embedded in
> > >> to image".  That said, this isn't just any firmware blob, it's the
> > >> watchdog firmware.  The less reliance on other things the safer it is.
> > >> That means this would be an exception to the general firmware blob
> > >> loading rule and yeah, OK, we can do it this way.  Sorry for the delay.
> > >
> > > Yes I've been a little tied up recently. But I think this should use
> > > binman. We really don't want to be building binary firmware into
> > > U-Boot itself!
> > >
> > > Also Tom says, see x86 for a load of binaries of different types and
> > > how they are accessed at runttime. This is what binman is for.
> > >
> >
> > Please 

Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-06-27 Thread Simon Glass
Hi Jan,

On Sun, 27 Jun 2021 at 12:01, Jan Kiszka  wrote:
>
> On 26.06.21 20:29, Simon Glass wrote:
> > Hi,
> >
> > On Fri, 11 Jun 2021 at 08:08, Tom Rini  wrote:
> >>
> >> On Fri, Jun 11, 2021 at 07:14:21PM +0530, Lokesh Vutla wrote:
> >>> Hi Tom,
> >>>
> >>> On 09/06/21 6:47 pm, Jan Kiszka wrote:
>  On 07.06.21 13:44, Jan Kiszka wrote:
> > On 07.06.21 13:40, Tom Rini wrote:
> >> On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
> >>> +Tom,
> >>>
> >>> Hi Tom,
> >>>
> >>> On 02/06/21 3:07 pm, Jan Kiszka wrote:
>  From: Jan Kiszka 
> 
>  To avoid the need of extra boot scripting on AM65x for loading a
>  watchdog firmware, add the required rproc init and loading logic for 
>  the
>  first R5F core to the watchdog start handler. In case the R5F 
>  cluster is
>  in lock-step mode, also initialize the second core. The firmware 
>  itself
>  is embedded into U-Boot binary to ease access to it and ensure it is
>  properly hashed in case of secure boot.
> 
>  One possible firmware source is 
>  https://github.com/siemens/k3-rti-wdt.
> 
>  Signed-off-by: Jan Kiszka 
>  ---
>   drivers/watchdog/Kconfig  | 20 
>   drivers/watchdog/Makefile |  5 +++
>   drivers/watchdog/rti_wdt.c| 58 
>  ++-
>   drivers/watchdog/rti_wdt_fw.S | 20 
>   4 files changed, 102 insertions(+), 1 deletion(-)
>   create mode 100644 drivers/watchdog/rti_wdt_fw.S
> 
>  diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
>  index f0ff2612a6..1a1fddfe9f 100644
>  --- a/drivers/watchdog/Kconfig
>  +++ b/drivers/watchdog/Kconfig
>  @@ -209,6 +209,26 @@ config WDT_K3_RTI
>    Say Y here if you want to include support for the K3 
>  watchdog
>    timer (RTI module) available in the K3 generation of 
>  processors.
> 
>  +if WDT_K3_RTI
>  +
>  +config WDT_K3_RTI_LOAD_FW
>  +   bool "Load watchdog firmware"
>  +   depends on REMOTEPROC
>  +   help
>  + Automatically load the specified firmware image into the 
>  MCU R5F
>  + core 0. On the AM65x, this firmware is supposed to handle 
>  the expiry
>  + of the watchdog timer, typically by resetting the system.
>  +
>  +config WDT_K3_RTI_FW_FILE
>  +   string "Watchdog firmware image file"
>  +   default "k3-rti-wdt.fw"
>  +   depends on WDT_K3_RTI_LOAD_FW
>  +   help
>  + Firmware image to be embedded into U-Boot and loaded on 
>  watchdog
>  + start.
> >>>
> >>> I need your input on this proach. Is it okay to include the linker 
> >>> file unders
> >>> drivers?
> >>
> >> Maybe?  I suppose the first thing that springs to mind is why aren't we
> >> using binman and including this blob (which I happily see is GPLv2)
> >> similar to how we do things with x86 for one example.
> >>
> >
> > See https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html
> >
> > Jan
> >
> 
>  Did this help to answer open questions? Otherwise, please let me know.
> 
>  I'd also like to avoid that his patch alone blocks 1-3 of the series
>  needless - but I would also not mind getting everything in at once.
> >>>
> >>> Can you provide your reviewed-by if you are okay with this approach?
> >>
> >> I was kind of hoping Simon would chime in here on binman usage.  So,
> >> re-re-reading the above URL, yes, fsloader wouldn't be the right choice
> >> for watchdog firmware.  But I think binman_entry_find() and related
> >> could work, in general, for this case of "need firmware blob embedded in
> >> to image".  That said, this isn't just any firmware blob, it's the
> >> watchdog firmware.  The less reliance on other things the safer it is.
> >> That means this would be an exception to the general firmware blob
> >> loading rule and yeah, OK, we can do it this way.  Sorry for the delay.
> >
> > Yes I've been a little tied up recently. But I think this should use
> > binman. We really don't want to be building binary firmware into
> > U-Boot itself!
> >
> > Also Tom says, see x86 for a load of binaries of different types and
> > how they are accessed at runttime. This is what binman is for.
> >
>
> Please take the time and study my arguments. I'm open for better
> proposals, but they need to be concrete and addressing my points.

Do you mean 'properly hashed' and 'easy access', or something else?
What can binman not do?

Regards,
Simon


Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-06-27 Thread Jan Kiszka
On 26.06.21 20:29, Simon Glass wrote:
> Hi,
> 
> On Fri, 11 Jun 2021 at 08:08, Tom Rini  wrote:
>>
>> On Fri, Jun 11, 2021 at 07:14:21PM +0530, Lokesh Vutla wrote:
>>> Hi Tom,
>>>
>>> On 09/06/21 6:47 pm, Jan Kiszka wrote:
 On 07.06.21 13:44, Jan Kiszka wrote:
> On 07.06.21 13:40, Tom Rini wrote:
>> On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
>>> +Tom,
>>>
>>> Hi Tom,
>>>
>>> On 02/06/21 3:07 pm, Jan Kiszka wrote:
 From: Jan Kiszka 

 To avoid the need of extra boot scripting on AM65x for loading a
 watchdog firmware, add the required rproc init and loading logic for 
 the
 first R5F core to the watchdog start handler. In case the R5F cluster 
 is
 in lock-step mode, also initialize the second core. The firmware itself
 is embedded into U-Boot binary to ease access to it and ensure it is
 properly hashed in case of secure boot.

 One possible firmware source is https://github.com/siemens/k3-rti-wdt.

 Signed-off-by: Jan Kiszka 
 ---
  drivers/watchdog/Kconfig  | 20 
  drivers/watchdog/Makefile |  5 +++
  drivers/watchdog/rti_wdt.c| 58 ++-
  drivers/watchdog/rti_wdt_fw.S | 20 
  4 files changed, 102 insertions(+), 1 deletion(-)
  create mode 100644 drivers/watchdog/rti_wdt_fw.S

 diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
 index f0ff2612a6..1a1fddfe9f 100644
 --- a/drivers/watchdog/Kconfig
 +++ b/drivers/watchdog/Kconfig
 @@ -209,6 +209,26 @@ config WDT_K3_RTI
   Say Y here if you want to include support for the K3 watchdog
   timer (RTI module) available in the K3 generation of 
 processors.

 +if WDT_K3_RTI
 +
 +config WDT_K3_RTI_LOAD_FW
 +   bool "Load watchdog firmware"
 +   depends on REMOTEPROC
 +   help
 + Automatically load the specified firmware image into the MCU 
 R5F
 + core 0. On the AM65x, this firmware is supposed to handle 
 the expiry
 + of the watchdog timer, typically by resetting the system.
 +
 +config WDT_K3_RTI_FW_FILE
 +   string "Watchdog firmware image file"
 +   default "k3-rti-wdt.fw"
 +   depends on WDT_K3_RTI_LOAD_FW
 +   help
 + Firmware image to be embedded into U-Boot and loaded on 
 watchdog
 + start.
>>>
>>> I need your input on this proach. Is it okay to include the linker file 
>>> unders
>>> drivers?
>>
>> Maybe?  I suppose the first thing that springs to mind is why aren't we
>> using binman and including this blob (which I happily see is GPLv2)
>> similar to how we do things with x86 for one example.
>>
>
> See https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html
>
> Jan
>

 Did this help to answer open questions? Otherwise, please let me know.

 I'd also like to avoid that his patch alone blocks 1-3 of the series
 needless - but I would also not mind getting everything in at once.
>>>
>>> Can you provide your reviewed-by if you are okay with this approach?
>>
>> I was kind of hoping Simon would chime in here on binman usage.  So,
>> re-re-reading the above URL, yes, fsloader wouldn't be the right choice
>> for watchdog firmware.  But I think binman_entry_find() and related
>> could work, in general, for this case of "need firmware blob embedded in
>> to image".  That said, this isn't just any firmware blob, it's the
>> watchdog firmware.  The less reliance on other things the safer it is.
>> That means this would be an exception to the general firmware blob
>> loading rule and yeah, OK, we can do it this way.  Sorry for the delay.
> 
> Yes I've been a little tied up recently. But I think this should use
> binman. We really don't want to be building binary firmware into
> U-Boot itself!
> 
> Also Tom says, see x86 for a load of binaries of different types and
> how they are accessed at runttime. This is what binman is for.
> 

Please take the time and study my arguments. I'm open for better
proposals, but they need to be concrete and addressing my points.

Thanks,
Jan

-- 
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux


Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-06-26 Thread Simon Glass
Hi,

On Fri, 11 Jun 2021 at 08:08, Tom Rini  wrote:
>
> On Fri, Jun 11, 2021 at 07:14:21PM +0530, Lokesh Vutla wrote:
> > Hi Tom,
> >
> > On 09/06/21 6:47 pm, Jan Kiszka wrote:
> > > On 07.06.21 13:44, Jan Kiszka wrote:
> > >> On 07.06.21 13:40, Tom Rini wrote:
> > >>> On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
> >  +Tom,
> > 
> >  Hi Tom,
> > 
> >  On 02/06/21 3:07 pm, Jan Kiszka wrote:
> > > From: Jan Kiszka 
> > >
> > > To avoid the need of extra boot scripting on AM65x for loading a
> > > watchdog firmware, add the required rproc init and loading logic for 
> > > the
> > > first R5F core to the watchdog start handler. In case the R5F cluster 
> > > is
> > > in lock-step mode, also initialize the second core. The firmware 
> > > itself
> > > is embedded into U-Boot binary to ease access to it and ensure it is
> > > properly hashed in case of secure boot.
> > >
> > > One possible firmware source is https://github.com/siemens/k3-rti-wdt.
> > >
> > > Signed-off-by: Jan Kiszka 
> > > ---
> > >  drivers/watchdog/Kconfig  | 20 
> > >  drivers/watchdog/Makefile |  5 +++
> > >  drivers/watchdog/rti_wdt.c| 58 
> > > ++-
> > >  drivers/watchdog/rti_wdt_fw.S | 20 
> > >  4 files changed, 102 insertions(+), 1 deletion(-)
> > >  create mode 100644 drivers/watchdog/rti_wdt_fw.S
> > >
> > > diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> > > index f0ff2612a6..1a1fddfe9f 100644
> > > --- a/drivers/watchdog/Kconfig
> > > +++ b/drivers/watchdog/Kconfig
> > > @@ -209,6 +209,26 @@ config WDT_K3_RTI
> > >   Say Y here if you want to include support for the K3 
> > > watchdog
> > >   timer (RTI module) available in the K3 generation of 
> > > processors.
> > >
> > > +if WDT_K3_RTI
> > > +
> > > +config WDT_K3_RTI_LOAD_FW
> > > +   bool "Load watchdog firmware"
> > > +   depends on REMOTEPROC
> > > +   help
> > > + Automatically load the specified firmware image into the 
> > > MCU R5F
> > > + core 0. On the AM65x, this firmware is supposed to handle 
> > > the expiry
> > > + of the watchdog timer, typically by resetting the system.
> > > +
> > > +config WDT_K3_RTI_FW_FILE
> > > +   string "Watchdog firmware image file"
> > > +   default "k3-rti-wdt.fw"
> > > +   depends on WDT_K3_RTI_LOAD_FW
> > > +   help
> > > + Firmware image to be embedded into U-Boot and loaded on 
> > > watchdog
> > > + start.
> > 
> >  I need your input on this proach. Is it okay to include the linker 
> >  file unders
> >  drivers?
> > >>>
> > >>> Maybe?  I suppose the first thing that springs to mind is why aren't we
> > >>> using binman and including this blob (which I happily see is GPLv2)
> > >>> similar to how we do things with x86 for one example.
> > >>>
> > >>
> > >> See https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html
> > >>
> > >> Jan
> > >>
> > >
> > > Did this help to answer open questions? Otherwise, please let me know.
> > >
> > > I'd also like to avoid that his patch alone blocks 1-3 of the series
> > > needless - but I would also not mind getting everything in at once.
> >
> > Can you provide your reviewed-by if you are okay with this approach?
>
> I was kind of hoping Simon would chime in here on binman usage.  So,
> re-re-reading the above URL, yes, fsloader wouldn't be the right choice
> for watchdog firmware.  But I think binman_entry_find() and related
> could work, in general, for this case of "need firmware blob embedded in
> to image".  That said, this isn't just any firmware blob, it's the
> watchdog firmware.  The less reliance on other things the safer it is.
> That means this would be an exception to the general firmware blob
> loading rule and yeah, OK, we can do it this way.  Sorry for the delay.

Yes I've been a little tied up recently. But I think this should use
binman. We really don't want to be building binary firmware into
U-Boot itself!

Also Tom says, see x86 for a load of binaries of different types and
how they are accessed at runttime. This is what binman is for.

>
> Reviewed-by: Tom Rini 
>
> --
> Tom

Regards,
Simon


Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-06-11 Thread Tom Rini
On Fri, Jun 11, 2021 at 07:14:21PM +0530, Lokesh Vutla wrote:
> Hi Tom,
> 
> On 09/06/21 6:47 pm, Jan Kiszka wrote:
> > On 07.06.21 13:44, Jan Kiszka wrote:
> >> On 07.06.21 13:40, Tom Rini wrote:
> >>> On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
>  +Tom,
> 
>  Hi Tom,
> 
>  On 02/06/21 3:07 pm, Jan Kiszka wrote:
> > From: Jan Kiszka 
> >
> > To avoid the need of extra boot scripting on AM65x for loading a
> > watchdog firmware, add the required rproc init and loading logic for the
> > first R5F core to the watchdog start handler. In case the R5F cluster is
> > in lock-step mode, also initialize the second core. The firmware itself
> > is embedded into U-Boot binary to ease access to it and ensure it is
> > properly hashed in case of secure boot.
> >
> > One possible firmware source is https://github.com/siemens/k3-rti-wdt.
> >
> > Signed-off-by: Jan Kiszka 
> > ---
> >  drivers/watchdog/Kconfig  | 20 
> >  drivers/watchdog/Makefile |  5 +++
> >  drivers/watchdog/rti_wdt.c| 58 ++-
> >  drivers/watchdog/rti_wdt_fw.S | 20 
> >  4 files changed, 102 insertions(+), 1 deletion(-)
> >  create mode 100644 drivers/watchdog/rti_wdt_fw.S
> >
> > diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> > index f0ff2612a6..1a1fddfe9f 100644
> > --- a/drivers/watchdog/Kconfig
> > +++ b/drivers/watchdog/Kconfig
> > @@ -209,6 +209,26 @@ config WDT_K3_RTI
> >   Say Y here if you want to include support for the K3 watchdog
> >   timer (RTI module) available in the K3 generation of 
> > processors.
> >  
> > +if WDT_K3_RTI
> > +
> > +config WDT_K3_RTI_LOAD_FW
> > +   bool "Load watchdog firmware"
> > +   depends on REMOTEPROC
> > +   help
> > + Automatically load the specified firmware image into the MCU 
> > R5F
> > + core 0. On the AM65x, this firmware is supposed to handle the 
> > expiry
> > + of the watchdog timer, typically by resetting the system.
> > +
> > +config WDT_K3_RTI_FW_FILE
> > +   string "Watchdog firmware image file"
> > +   default "k3-rti-wdt.fw"
> > +   depends on WDT_K3_RTI_LOAD_FW
> > +   help
> > + Firmware image to be embedded into U-Boot and loaded on 
> > watchdog
> > + start.
> 
>  I need your input on this proach. Is it okay to include the linker file 
>  unders
>  drivers?
> >>>
> >>> Maybe?  I suppose the first thing that springs to mind is why aren't we
> >>> using binman and including this blob (which I happily see is GPLv2)
> >>> similar to how we do things with x86 for one example.
> >>>
> >>
> >> See https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html
> >>
> >> Jan
> >>
> > 
> > Did this help to answer open questions? Otherwise, please let me know.
> > 
> > I'd also like to avoid that his patch alone blocks 1-3 of the series
> > needless - but I would also not mind getting everything in at once.
> 
> Can you provide your reviewed-by if you are okay with this approach?

I was kind of hoping Simon would chime in here on binman usage.  So,
re-re-reading the above URL, yes, fsloader wouldn't be the right choice
for watchdog firmware.  But I think binman_entry_find() and related
could work, in general, for this case of "need firmware blob embedded in
to image".  That said, this isn't just any firmware blob, it's the
watchdog firmware.  The less reliance on other things the safer it is.
That means this would be an exception to the general firmware blob
loading rule and yeah, OK, we can do it this way.  Sorry for the delay.

Reviewed-by: Tom Rini 

-- 
Tom


signature.asc
Description: PGP signature


Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-06-11 Thread Lokesh Vutla
Hi Tom,

On 09/06/21 6:47 pm, Jan Kiszka wrote:
> On 07.06.21 13:44, Jan Kiszka wrote:
>> On 07.06.21 13:40, Tom Rini wrote:
>>> On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
 +Tom,

 Hi Tom,

 On 02/06/21 3:07 pm, Jan Kiszka wrote:
> From: Jan Kiszka 
>
> To avoid the need of extra boot scripting on AM65x for loading a
> watchdog firmware, add the required rproc init and loading logic for the
> first R5F core to the watchdog start handler. In case the R5F cluster is
> in lock-step mode, also initialize the second core. The firmware itself
> is embedded into U-Boot binary to ease access to it and ensure it is
> properly hashed in case of secure boot.
>
> One possible firmware source is https://github.com/siemens/k3-rti-wdt.
>
> Signed-off-by: Jan Kiszka 
> ---
>  drivers/watchdog/Kconfig  | 20 
>  drivers/watchdog/Makefile |  5 +++
>  drivers/watchdog/rti_wdt.c| 58 ++-
>  drivers/watchdog/rti_wdt_fw.S | 20 
>  4 files changed, 102 insertions(+), 1 deletion(-)
>  create mode 100644 drivers/watchdog/rti_wdt_fw.S
>
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> index f0ff2612a6..1a1fddfe9f 100644
> --- a/drivers/watchdog/Kconfig
> +++ b/drivers/watchdog/Kconfig
> @@ -209,6 +209,26 @@ config WDT_K3_RTI
> Say Y here if you want to include support for the K3 watchdog
> timer (RTI module) available in the K3 generation of processors.
>  
> +if WDT_K3_RTI
> +
> +config WDT_K3_RTI_LOAD_FW
> + bool "Load watchdog firmware"
> + depends on REMOTEPROC
> + help
> +   Automatically load the specified firmware image into the MCU R5F
> +   core 0. On the AM65x, this firmware is supposed to handle the expiry
> +   of the watchdog timer, typically by resetting the system.
> +
> +config WDT_K3_RTI_FW_FILE
> + string "Watchdog firmware image file"
> + default "k3-rti-wdt.fw"
> + depends on WDT_K3_RTI_LOAD_FW
> + help
> +   Firmware image to be embedded into U-Boot and loaded on watchdog
> +   start.

 I need your input on this proach. Is it okay to include the linker file 
 unders
 drivers?
>>>
>>> Maybe?  I suppose the first thing that springs to mind is why aren't we
>>> using binman and including this blob (which I happily see is GPLv2)
>>> similar to how we do things with x86 for one example.
>>>
>>
>> See https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html
>>
>> Jan
>>
> 
> Did this help to answer open questions? Otherwise, please let me know.
> 
> I'd also like to avoid that his patch alone blocks 1-3 of the series
> needless - but I would also not mind getting everything in at once.

Can you provide your reviewed-by if you are okay with this approach?

Thanks and regards,
Lokesh

> 
> Thanks,
> Jan
> 


Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-06-09 Thread Jan Kiszka
On 07.06.21 13:44, Jan Kiszka wrote:
> On 07.06.21 13:40, Tom Rini wrote:
>> On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
>>> +Tom,
>>>
>>> Hi Tom,
>>>
>>> On 02/06/21 3:07 pm, Jan Kiszka wrote:
 From: Jan Kiszka 

 To avoid the need of extra boot scripting on AM65x for loading a
 watchdog firmware, add the required rproc init and loading logic for the
 first R5F core to the watchdog start handler. In case the R5F cluster is
 in lock-step mode, also initialize the second core. The firmware itself
 is embedded into U-Boot binary to ease access to it and ensure it is
 properly hashed in case of secure boot.

 One possible firmware source is https://github.com/siemens/k3-rti-wdt.

 Signed-off-by: Jan Kiszka 
 ---
  drivers/watchdog/Kconfig  | 20 
  drivers/watchdog/Makefile |  5 +++
  drivers/watchdog/rti_wdt.c| 58 ++-
  drivers/watchdog/rti_wdt_fw.S | 20 
  4 files changed, 102 insertions(+), 1 deletion(-)
  create mode 100644 drivers/watchdog/rti_wdt_fw.S

 diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
 index f0ff2612a6..1a1fddfe9f 100644
 --- a/drivers/watchdog/Kconfig
 +++ b/drivers/watchdog/Kconfig
 @@ -209,6 +209,26 @@ config WDT_K3_RTI
  Say Y here if you want to include support for the K3 watchdog
  timer (RTI module) available in the K3 generation of processors.
  
 +if WDT_K3_RTI
 +
 +config WDT_K3_RTI_LOAD_FW
 +  bool "Load watchdog firmware"
 +  depends on REMOTEPROC
 +  help
 +Automatically load the specified firmware image into the MCU R5F
 +core 0. On the AM65x, this firmware is supposed to handle the expiry
 +of the watchdog timer, typically by resetting the system.
 +
 +config WDT_K3_RTI_FW_FILE
 +  string "Watchdog firmware image file"
 +  default "k3-rti-wdt.fw"
 +  depends on WDT_K3_RTI_LOAD_FW
 +  help
 +Firmware image to be embedded into U-Boot and loaded on watchdog
 +start.
>>>
>>> I need your input on this proach. Is it okay to include the linker file 
>>> unders
>>> drivers?
>>
>> Maybe?  I suppose the first thing that springs to mind is why aren't we
>> using binman and including this blob (which I happily see is GPLv2)
>> similar to how we do things with x86 for one example.
>>
> 
> See https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html
> 
> Jan
> 

Did this help to answer open questions? Otherwise, please let me know.

I'd also like to avoid that his patch alone blocks 1-3 of the series
needless - but I would also not mind getting everything in at once.

Thanks,
Jan

-- 
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux


Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-06-07 Thread Jan Kiszka
On 07.06.21 13:40, Tom Rini wrote:
> On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
>> +Tom,
>>
>> Hi Tom,
>>
>> On 02/06/21 3:07 pm, Jan Kiszka wrote:
>>> From: Jan Kiszka 
>>>
>>> To avoid the need of extra boot scripting on AM65x for loading a
>>> watchdog firmware, add the required rproc init and loading logic for the
>>> first R5F core to the watchdog start handler. In case the R5F cluster is
>>> in lock-step mode, also initialize the second core. The firmware itself
>>> is embedded into U-Boot binary to ease access to it and ensure it is
>>> properly hashed in case of secure boot.
>>>
>>> One possible firmware source is https://github.com/siemens/k3-rti-wdt.
>>>
>>> Signed-off-by: Jan Kiszka 
>>> ---
>>>  drivers/watchdog/Kconfig  | 20 
>>>  drivers/watchdog/Makefile |  5 +++
>>>  drivers/watchdog/rti_wdt.c| 58 ++-
>>>  drivers/watchdog/rti_wdt_fw.S | 20 
>>>  4 files changed, 102 insertions(+), 1 deletion(-)
>>>  create mode 100644 drivers/watchdog/rti_wdt_fw.S
>>>
>>> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
>>> index f0ff2612a6..1a1fddfe9f 100644
>>> --- a/drivers/watchdog/Kconfig
>>> +++ b/drivers/watchdog/Kconfig
>>> @@ -209,6 +209,26 @@ config WDT_K3_RTI
>>>   Say Y here if you want to include support for the K3 watchdog
>>>   timer (RTI module) available in the K3 generation of processors.
>>>  
>>> +if WDT_K3_RTI
>>> +
>>> +config WDT_K3_RTI_LOAD_FW
>>> +   bool "Load watchdog firmware"
>>> +   depends on REMOTEPROC
>>> +   help
>>> + Automatically load the specified firmware image into the MCU R5F
>>> + core 0. On the AM65x, this firmware is supposed to handle the expiry
>>> + of the watchdog timer, typically by resetting the system.
>>> +
>>> +config WDT_K3_RTI_FW_FILE
>>> +   string "Watchdog firmware image file"
>>> +   default "k3-rti-wdt.fw"
>>> +   depends on WDT_K3_RTI_LOAD_FW
>>> +   help
>>> + Firmware image to be embedded into U-Boot and loaded on watchdog
>>> + start.
>>
>> I need your input on this proach. Is it okay to include the linker file 
>> unders
>> drivers?
> 
> Maybe?  I suppose the first thing that springs to mind is why aren't we
> using binman and including this blob (which I happily see is GPLv2)
> similar to how we do things with x86 for one example.
> 

See https://www.mail-archive.com/u-boot@lists.denx.de/msg377894.html

Jan

-- 
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux


Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-06-07 Thread Tom Rini
On Mon, Jun 07, 2021 at 03:33:52PM +0530, Lokesh Vutla wrote:
> +Tom,
> 
> Hi Tom,
> 
> On 02/06/21 3:07 pm, Jan Kiszka wrote:
> > From: Jan Kiszka 
> > 
> > To avoid the need of extra boot scripting on AM65x for loading a
> > watchdog firmware, add the required rproc init and loading logic for the
> > first R5F core to the watchdog start handler. In case the R5F cluster is
> > in lock-step mode, also initialize the second core. The firmware itself
> > is embedded into U-Boot binary to ease access to it and ensure it is
> > properly hashed in case of secure boot.
> > 
> > One possible firmware source is https://github.com/siemens/k3-rti-wdt.
> > 
> > Signed-off-by: Jan Kiszka 
> > ---
> >  drivers/watchdog/Kconfig  | 20 
> >  drivers/watchdog/Makefile |  5 +++
> >  drivers/watchdog/rti_wdt.c| 58 ++-
> >  drivers/watchdog/rti_wdt_fw.S | 20 
> >  4 files changed, 102 insertions(+), 1 deletion(-)
> >  create mode 100644 drivers/watchdog/rti_wdt_fw.S
> > 
> > diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> > index f0ff2612a6..1a1fddfe9f 100644
> > --- a/drivers/watchdog/Kconfig
> > +++ b/drivers/watchdog/Kconfig
> > @@ -209,6 +209,26 @@ config WDT_K3_RTI
> >   Say Y here if you want to include support for the K3 watchdog
> >   timer (RTI module) available in the K3 generation of processors.
> >  
> > +if WDT_K3_RTI
> > +
> > +config WDT_K3_RTI_LOAD_FW
> > +   bool "Load watchdog firmware"
> > +   depends on REMOTEPROC
> > +   help
> > + Automatically load the specified firmware image into the MCU R5F
> > + core 0. On the AM65x, this firmware is supposed to handle the expiry
> > + of the watchdog timer, typically by resetting the system.
> > +
> > +config WDT_K3_RTI_FW_FILE
> > +   string "Watchdog firmware image file"
> > +   default "k3-rti-wdt.fw"
> > +   depends on WDT_K3_RTI_LOAD_FW
> > +   help
> > + Firmware image to be embedded into U-Boot and loaded on watchdog
> > + start.
> 
> I need your input on this proach. Is it okay to include the linker file unders
> drivers?

Maybe?  I suppose the first thing that springs to mind is why aren't we
using binman and including this blob (which I happily see is GPLv2)
similar to how we do things with x86 for one example.

-- 
Tom


signature.asc
Description: PGP signature


Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-06-07 Thread Jan Kiszka
On 07.06.21 12:03, Lokesh Vutla wrote:
> +Tom,
> 
> Hi Tom,
> 
> On 02/06/21 3:07 pm, Jan Kiszka wrote:
>> From: Jan Kiszka 
>>
>> To avoid the need of extra boot scripting on AM65x for loading a
>> watchdog firmware, add the required rproc init and loading logic for the
>> first R5F core to the watchdog start handler. In case the R5F cluster is
>> in lock-step mode, also initialize the second core. The firmware itself
>> is embedded into U-Boot binary to ease access to it and ensure it is
>> properly hashed in case of secure boot.
>>
>> One possible firmware source is https://github.com/siemens/k3-rti-wdt.
>>
>> Signed-off-by: Jan Kiszka 
>> ---
>>  drivers/watchdog/Kconfig  | 20 
>>  drivers/watchdog/Makefile |  5 +++
>>  drivers/watchdog/rti_wdt.c| 58 ++-
>>  drivers/watchdog/rti_wdt_fw.S | 20 
>>  4 files changed, 102 insertions(+), 1 deletion(-)
>>  create mode 100644 drivers/watchdog/rti_wdt_fw.S
>>
>> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
>> index f0ff2612a6..1a1fddfe9f 100644
>> --- a/drivers/watchdog/Kconfig
>> +++ b/drivers/watchdog/Kconfig
>> @@ -209,6 +209,26 @@ config WDT_K3_RTI
>>Say Y here if you want to include support for the K3 watchdog
>>timer (RTI module) available in the K3 generation of processors.
>>  
>> +if WDT_K3_RTI
>> +
>> +config WDT_K3_RTI_LOAD_FW
>> +bool "Load watchdog firmware"
>> +depends on REMOTEPROC
>> +help
>> +  Automatically load the specified firmware image into the MCU R5F
>> +  core 0. On the AM65x, this firmware is supposed to handle the expiry
>> +  of the watchdog timer, typically by resetting the system.
>> +
>> +config WDT_K3_RTI_FW_FILE
>> +string "Watchdog firmware image file"
>> +default "k3-rti-wdt.fw"
>> +depends on WDT_K3_RTI_LOAD_FW
>> +help
>> +  Firmware image to be embedded into U-Boot and loaded on watchdog
>> +  start.
> 
> I need your input on this proach. Is it okay to include the linker file unders
> drivers?
> 
>> +
>> +endif
>> +
>>  config WDT_SANDBOX
>>  bool "Enable Watchdog Timer support for Sandbox"
>>  depends on SANDBOX && WDT
>> diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
>> index 5c7ef593fe..5016ee4708 100644
>> --- a/drivers/watchdog/Makefile
>> +++ b/drivers/watchdog/Makefile
>> @@ -33,7 +33,12 @@ obj-$(CONFIG_WDT_OCTEONTX) += octeontx_wdt.o
>>  obj-$(CONFIG_WDT_OMAP3) += omap_wdt.o
>>  obj-$(CONFIG_WDT_SBSA) += sbsa_gwdt.o
>>  obj-$(CONFIG_WDT_K3_RTI) += rti_wdt.o
>> +obj-$(CONFIG_WDT_K3_RTI_LOAD_FW) += rti_wdt_fw.o
>>  obj-$(CONFIG_WDT_SP805) += sp805_wdt.o
>>  obj-$(CONFIG_WDT_STM32MP) += stm32mp_wdt.o
>>  obj-$(CONFIG_WDT_TANGIER) += tangier_wdt.o
>>  obj-$(CONFIG_WDT_XILINX) += xilinx_wwdt.o
>> +
> 
> [...snip..]
> 
>>  timer_margin = timeout_ms * priv->clk_khz / 1000;
>>  timer_margin >>= WDT_PRELOAD_SHIFT;
>>  if (timer_margin > WDT_PRELOAD_MAX)
>> diff --git a/drivers/watchdog/rti_wdt_fw.S b/drivers/watchdog/rti_wdt_fw.S
>> new file mode 100644
>> index 00..78d99ff9f2
>> --- /dev/null
>> +++ b/drivers/watchdog/rti_wdt_fw.S
> 
> Isn't this usecase specific? IMHO, drivers might not be the right place. Did I
> misunderstand something?
> 

It's specific to this driver - on a subset of supported hardware
platforms, namely AM65x SR1.0.

Jan

-- 
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux


Re: [PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-06-07 Thread Lokesh Vutla
+Tom,

Hi Tom,

On 02/06/21 3:07 pm, Jan Kiszka wrote:
> From: Jan Kiszka 
> 
> To avoid the need of extra boot scripting on AM65x for loading a
> watchdog firmware, add the required rproc init and loading logic for the
> first R5F core to the watchdog start handler. In case the R5F cluster is
> in lock-step mode, also initialize the second core. The firmware itself
> is embedded into U-Boot binary to ease access to it and ensure it is
> properly hashed in case of secure boot.
> 
> One possible firmware source is https://github.com/siemens/k3-rti-wdt.
> 
> Signed-off-by: Jan Kiszka 
> ---
>  drivers/watchdog/Kconfig  | 20 
>  drivers/watchdog/Makefile |  5 +++
>  drivers/watchdog/rti_wdt.c| 58 ++-
>  drivers/watchdog/rti_wdt_fw.S | 20 
>  4 files changed, 102 insertions(+), 1 deletion(-)
>  create mode 100644 drivers/watchdog/rti_wdt_fw.S
> 
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> index f0ff2612a6..1a1fddfe9f 100644
> --- a/drivers/watchdog/Kconfig
> +++ b/drivers/watchdog/Kconfig
> @@ -209,6 +209,26 @@ config WDT_K3_RTI
> Say Y here if you want to include support for the K3 watchdog
> timer (RTI module) available in the K3 generation of processors.
>  
> +if WDT_K3_RTI
> +
> +config WDT_K3_RTI_LOAD_FW
> + bool "Load watchdog firmware"
> + depends on REMOTEPROC
> + help
> +   Automatically load the specified firmware image into the MCU R5F
> +   core 0. On the AM65x, this firmware is supposed to handle the expiry
> +   of the watchdog timer, typically by resetting the system.
> +
> +config WDT_K3_RTI_FW_FILE
> + string "Watchdog firmware image file"
> + default "k3-rti-wdt.fw"
> + depends on WDT_K3_RTI_LOAD_FW
> + help
> +   Firmware image to be embedded into U-Boot and loaded on watchdog
> +   start.

I need your input on this proach. Is it okay to include the linker file unders
drivers?

> +
> +endif
> +
>  config WDT_SANDBOX
>   bool "Enable Watchdog Timer support for Sandbox"
>   depends on SANDBOX && WDT
> diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
> index 5c7ef593fe..5016ee4708 100644
> --- a/drivers/watchdog/Makefile
> +++ b/drivers/watchdog/Makefile
> @@ -33,7 +33,12 @@ obj-$(CONFIG_WDT_OCTEONTX) += octeontx_wdt.o
>  obj-$(CONFIG_WDT_OMAP3) += omap_wdt.o
>  obj-$(CONFIG_WDT_SBSA) += sbsa_gwdt.o
>  obj-$(CONFIG_WDT_K3_RTI) += rti_wdt.o
> +obj-$(CONFIG_WDT_K3_RTI_LOAD_FW) += rti_wdt_fw.o
>  obj-$(CONFIG_WDT_SP805) += sp805_wdt.o
>  obj-$(CONFIG_WDT_STM32MP) += stm32mp_wdt.o
>  obj-$(CONFIG_WDT_TANGIER) += tangier_wdt.o
>  obj-$(CONFIG_WDT_XILINX) += xilinx_wwdt.o
> +

[...snip..]

>   timer_margin = timeout_ms * priv->clk_khz / 1000;
>   timer_margin >>= WDT_PRELOAD_SHIFT;
>   if (timer_margin > WDT_PRELOAD_MAX)
> diff --git a/drivers/watchdog/rti_wdt_fw.S b/drivers/watchdog/rti_wdt_fw.S
> new file mode 100644
> index 00..78d99ff9f2
> --- /dev/null
> +++ b/drivers/watchdog/rti_wdt_fw.S

Isn't this usecase specific? IMHO, drivers might not be the right place. Did I
misunderstand something?

Thanks and regards,
Lokesh

> @@ -0,0 +1,20 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (c) Siemens AG, 2020
> + *
> + * Authors:
> + *   Jan Kiszka 
> + */
> +
> +.section .rodata
> +
> +.global rti_wdt_fw
> +.global rti_wdt_fw_size
> +
> +rti_wdt_fw:
> +.align 4
> +.incbin CONFIG_WDT_K3_RTI_FW_FILE
> +rti_wdt_fw_end:
> +
> +rti_wdt_fw_size:
> +.int rti_wdt_fw_end - rti_wdt_fw
> 


[PATCH v2 4/5] watchdog: rti_wdt: Add support for loading firmware

2021-06-02 Thread Jan Kiszka
From: Jan Kiszka 

To avoid the need of extra boot scripting on AM65x for loading a
watchdog firmware, add the required rproc init and loading logic for the
first R5F core to the watchdog start handler. In case the R5F cluster is
in lock-step mode, also initialize the second core. The firmware itself
is embedded into U-Boot binary to ease access to it and ensure it is
properly hashed in case of secure boot.

One possible firmware source is https://github.com/siemens/k3-rti-wdt.

Signed-off-by: Jan Kiszka 
---
 drivers/watchdog/Kconfig  | 20 
 drivers/watchdog/Makefile |  5 +++
 drivers/watchdog/rti_wdt.c| 58 ++-
 drivers/watchdog/rti_wdt_fw.S | 20 
 4 files changed, 102 insertions(+), 1 deletion(-)
 create mode 100644 drivers/watchdog/rti_wdt_fw.S

diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index f0ff2612a6..1a1fddfe9f 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -209,6 +209,26 @@ config WDT_K3_RTI
  Say Y here if you want to include support for the K3 watchdog
  timer (RTI module) available in the K3 generation of processors.
 
+if WDT_K3_RTI
+
+config WDT_K3_RTI_LOAD_FW
+   bool "Load watchdog firmware"
+   depends on REMOTEPROC
+   help
+ Automatically load the specified firmware image into the MCU R5F
+ core 0. On the AM65x, this firmware is supposed to handle the expiry
+ of the watchdog timer, typically by resetting the system.
+
+config WDT_K3_RTI_FW_FILE
+   string "Watchdog firmware image file"
+   default "k3-rti-wdt.fw"
+   depends on WDT_K3_RTI_LOAD_FW
+   help
+ Firmware image to be embedded into U-Boot and loaded on watchdog
+ start.
+
+endif
+
 config WDT_SANDBOX
bool "Enable Watchdog Timer support for Sandbox"
depends on SANDBOX && WDT
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index 5c7ef593fe..5016ee4708 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -33,7 +33,12 @@ obj-$(CONFIG_WDT_OCTEONTX) += octeontx_wdt.o
 obj-$(CONFIG_WDT_OMAP3) += omap_wdt.o
 obj-$(CONFIG_WDT_SBSA) += sbsa_gwdt.o
 obj-$(CONFIG_WDT_K3_RTI) += rti_wdt.o
+obj-$(CONFIG_WDT_K3_RTI_LOAD_FW) += rti_wdt_fw.o
 obj-$(CONFIG_WDT_SP805) += sp805_wdt.o
 obj-$(CONFIG_WDT_STM32MP) += stm32mp_wdt.o
 obj-$(CONFIG_WDT_TANGIER) += tangier_wdt.o
 obj-$(CONFIG_WDT_XILINX) += xilinx_wwdt.o
+
+ifeq ($(CONFIG_WDT_K3_RTI_LOAD_FW),y)
+$(obj)/rti_wdt_fw.o: $(shell readlink -f $(CONFIG_WDT_K3_RTI_FW_FILE)) FORCE
+endif
diff --git a/drivers/watchdog/rti_wdt.c b/drivers/watchdog/rti_wdt.c
index 8335b20ae8..97daf40145 100644
--- a/drivers/watchdog/rti_wdt.c
+++ b/drivers/watchdog/rti_wdt.c
@@ -11,9 +11,11 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
+#include 
 
 /* Timer register set definition */
 #define RTIDWDCTRL 0x90
@@ -42,15 +44,69 @@ struct rti_wdt_priv {
unsigned int clk_khz;
 };
 
+extern const u32 rti_wdt_fw[];
+extern const int rti_wdt_fw_size;
+
 static int rti_wdt_start(struct udevice *dev, u64 timeout_ms, ulong flags)
 {
+#ifdef CONFIG_WDT_K3_RTI_LOAD_FW
+   struct udevice *rproc_dev;
+   int primary_core, ret;
+   u32 cluster_mode;
+   ofnode node;
+#endif
struct rti_wdt_priv *priv = dev_get_priv(dev);
u32 timer_margin;
-   int ret;
 
if (readl(priv->regs + RTIDWDCTRL) == WDENABLE_KEY)
return -EBUSY;
 
+#ifdef CONFIG_WDT_K3_RTI_LOAD_FW
+   node = ofnode_by_compatible(ofnode_null(), "ti,am654-r5fss");
+   if (!ofnode_valid(node)) {
+   dt_error:
+   dev_err(dev, "No compatible firmware target processor found\n");
+   return -ENODEV;
+   }
+
+   ret = ofnode_read_u32(node, "ti,cluster-mode", _mode);
+   if (ret)
+   cluster_mode = 1;
+
+   node = ofnode_by_compatible(node, "ti,am654-r5f");
+   if (!ofnode_valid(node))
+   goto dt_error;
+
+   ret = uclass_get_device_by_ofnode(UCLASS_REMOTEPROC, node, _dev);
+   if (ret)
+   return ret;
+
+   primary_core = dev_seq(rproc_dev);
+
+   ret = rproc_dev_init(primary_core);
+   if (ret) {
+   fw_error:
+   dev_err(dev, "Failed to load watchdog firmware into remote 
processor %d\n",
+   primary_core);
+   return ret;
+   }
+
+   if (cluster_mode == 1) {
+   ret = rproc_dev_init(primary_core + 1);
+   if (ret)
+   goto fw_error;
+   }
+
+   ret = rproc_load(primary_core, (ulong)rti_wdt_fw,
+rti_wdt_fw_size);
+   if (ret)
+   goto fw_error;
+
+   ret = rproc_start(primary_core);
+   if (ret)
+   goto fw_error;
+#endif
+
timer_margin = timeout_ms * priv->clk_khz / 1000;
timer_margin >>= WDT_PRELOAD_SHIFT;
if