mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: cauldwell.thomas@gmail.com, barebox@lists.infradead.org
Subject: Re: Issue CPU instructions to start watchdog?
Date: Mon, 20 Jan 2020 16:05:31 +0100	[thread overview]
Message-ID: <c20bdbbf-6a6e-9a47-a21a-4cb8fed3aea4@pengutronix.de> (raw)
In-Reply-To: <CALtZhhMAHMh0HBatmQVL=uU6hYBuK3wvYPntqbQ-7rR5OzX_xA@mail.gmail.com>

Hello Thomas/Frederick,

On 1/20/20 12:33 PM, Frederick Gotham wrote:
> I'm developing an embedded Linux device, and I'm using Barebox as a
> part of Buildroot. The CPU is x64 with 4 cores, and it has an Intel
> TCO watchdog timer.
> 
> The exact processor I'm using is the Intel Silver N5000, and the
> datasheet for it says:
> "TCO_TMR is the watchdog timer provided by the ACPI block. It is used
> by an OS monitor for OS crashes."
> 
> When I boot up Barebox, it does not have the file "/dev/watchdog".
> I've tried a few different things but I just simply can't get Barebox
> to recognise the Intel watchdog timer.
Upstream barebox has no iTCO driver.
> Ideally I would like to have the watchdog timer start running at Power
> On, however my current BIOS  hasn't got any watchdog settings, and so
> until I get a new BIOS (which might never happen), I have to start the
> watchdog timer from within Barebox in order to get the device to
> reboot if the Linux kernel freezes while it's loading.
Ok.
> At this stage I think I might actually have to write assembler to
> issue instructions to the CPU to start the Watchdog timer. I have
> looked this up and it's definitely not straight-forward, e.g.
> interfacing with the ACPI block and its registers... I would be pretty
> much writing a device driver.
Yes, it needs a device driver. All the assembly you need is wrapped
in macros though, so you can write it completely in C, like nearly
all other drivers.
> Anyone got any ideas?
Check out my iTCO driver here:
https://github.com/a3f/barebox/tree/itco

I haven't posted it for upstream inclusion yet, because I don't have
a suitable target to test it on. In QEMU, it works, but the NO_REBOOT bit
that controls system restart doesn't work yet and I haven't yet managed
to find the time to debug it (or the project that needs it).

It doesn't use direct IO ports/IO memory access, but instead uses the PCI
Device I/O routines provided by EFI. The IO memory writes to enable the
NO_REBOOT give me an INVALID_PARAMETER error under QEMU.

Only two variants of the iTCO are supported. You can port support for your
variant from the Linux kernel code. It should be straight forward to port.

Note that you shouldn't use {read,write,out}[lwb], but the wrappers with
itco_ in front.

Happy Hacking,
Ahmad

> 
> I really need my device to reboot if the Linux kernel freezes while loading.
> 
> Frederick
> 
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
> 
-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

      reply	other threads:[~2020-01-20 15:05 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-20 11:33 Frederick Gotham
2020-01-20 15:05 ` Ahmad Fatoum [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c20bdbbf-6a6e-9a47-a21a-4cb8fed3aea4@pengutronix.de \
    --to=a.fatoum@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    --cc=cauldwell.thomas@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox