Revision Date Author Comments
# b62410b3 01-Mar-2024 Patrick Williams <patrick@stwcx.xyz>

remove 'flush' failure modes

The `flush` failure mode is impossible to use for a multi-host system.
If one of the services or targets fail on one host, it would cause the
pending operations for the

remove 'flush' failure modes

The `flush` failure mode is impossible to use for a multi-host system.
If one of the services or targets fail on one host, it would cause the
pending operations for the other host to be flushed from the systemd
job queue. This leaves the other hosts in an indeterminate state.

We need to use `fail` in order to allow jobs targeting other hosts to
continue operating. This triggers the OnFailure for the target(s),
including ones which are pending awaiting dependencies.

As a result of this change, we may need to tweak some of the existing
services to add correct OnFailures.

Tested: Ran on a yosemite4 image in QEMU, which always fails part of
the boot sequence due to a missing PLDM-based satellite management
controller. After a few host reboot attempts the system settles into a
stable state on all hosts.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I2071219c9c139723785ba05bed18a6ff808ad565

show more ...


# 6f882c09 23-Feb-2022 Andrew Geissler <geissonator@yahoo.com>

obmc-targets: remove RefuseManualStop

Per freedesktop.org, this option is "mostly a safety feature to ensure
that the user does not accidentally activate units that are not
intended to be activated

obmc-targets: remove RefuseManualStop

Per freedesktop.org, this option is "mostly a safety feature to ensure
that the user does not accidentally activate units that are not
intended to be activated explicitly".

There have been a few instances when doing some systemd debugging, that
the ability to manually stop these targets would be useful. Given that
the only users logged into the BMC should know what they're doing, this
should not be much of a concern.

IBM has a tool called "istep" which can be used to boot the host
firmware independently from the different openbmc targets and services.
It's primarily used by the chip design and bringup team to have more
fine grained control over the initialization of the host hardware. The
problem with using istep is that it does not start any systemd targets
to boot the host firmware, but it does depend on systemd targets to
power the system off. The issue here is that if you don't start the
targets to boot the system, their "Conflicts" will not stop
the targets used to power down the system. When that doesn't happen,
there is no synchronization provided by those targets because they are
already running.

The solution will be to provide a shell script that istep (or any other
independent boot application) can call to manually stop all the targets
needs to synchronize the power off.

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: Ic3bce98dc7ed2c6f57a78bb8ef590f1b447621ba

show more ...


# c50e9bad 26-Jan-2021 Andrew Geissler <geissonator@yahoo.com>

ensure synch targets started by execution targets

Some systemd services within OpenBMC are run in multiple targets, or
sometimes in standalone situations. When those services are run as

ensure synch targets started by execution targets

Some systemd services within OpenBMC are run in multiple targets, or
sometimes in standalone situations. When those services are run as a
part of a target, they sometimes need to ensure they run before or after
a synchronization target. They can utilize the Before/After directive
for this but they need assurance the target has been started (i.e.
Wants).

They do not want to put the Wants relationship in their service file
because they do not know the target they are in or if they are being run
as a standalone service via the command line. Starting a synchronization
target outside of the target it is meant for could have impacts on power
on or off operations.

To ensure the synchronization targets are started in the appropriate
situations, add them to the main power on and off targets directly.

Testing:
- Built image, verified basic boot and power off
- Ran HW CI tests and verified they passed

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I558e1c7df57c5543fd0db4d965fe2422ffd83f41

show more ...


# 34b3b407 06-May-2020 Andrew Geissler <geissonator@yahoo.com>

multi-user: do not use wants relationship

The multi-user target is run by systemd when the BMC first boots. It
contains all of the initial startup services. Some OpenBMC targets want

multi-user: do not use wants relationship

The multi-user target is run by systemd when the BMC first boots. It
contains all of the initial startup services. Some OpenBMC targets want
to ensure they are run after the multi-user target completes. A lot of
these targets did both a Wants and After relationship with multi-user.

The latest systemd, version 245, now takes that Wants relationship
seriously and will start any services within multi-user that are
stopped. This includes oneshot services which do not have the
"RemainAfterExit=yes" clause. If these services only expected to be run
once, as a part of multi-user, then they should include this clause but
you can see how they may expected to have only been run once.

The solution is twofold:
1) Fix the oneshot services that fall in the above scenario
2) Change the targets to not Wants=multi-user.target

1 will be changes throughout a few repositories.
2 is fixed in this commit.

Resolves openbmc/phosphor-state-manager#14

Tested:
Provided test image to George and he verified this fixed the above
issue

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I6eb7e5d2cb7d5a3c95f2e8ef6efc708dbb63fd52

show more ...


# c101157e 27-Jan-2020 Andrew Geissler <geissonator@yahoo.com>

move openbmc targets into this repo

OpenBMC is moving towards individual repos hosting and maintaining their
own systemd files. This allows the corresponding maintainer more control

move openbmc targets into this repo

OpenBMC is moving towards individual repos hosting and maintaining their
own systemd files. This allows the corresponding maintainer more control
over their systemd files and removes the meta-* layer maintainer from
needing to be involved.

The systemd targets defined and used by OpenBMC are implemented by
phosphor-state-manager code and services so move them into this
repository.

Once this is merged, its bump will need to be combined with a change in
the meta-phosphor layer that removes the target files.

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I248bf79c95f66afefffcc152de79cd2791945819

show more ...