Revision Date Author Comments
# 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 ...


# 162c7bfb 17-Sep-2020 Andrew Geissler <geissonator@yahoo.com>

bootblock: ensure no power operation on block

Systemd does not treat targets the same way it treats services. If you
start a target which has Wants/Requires, it will execute the services

bootblock: ensure no power operation on block

Systemd does not treat targets the same way it treats services. If you
start a target which has Wants/Requires, it will execute the services
associated with that target before the Wants/Requires for the target
have been fulfilled. The target will not set itself as complete until the
Wants/Requires is fulfilled but this causes a weird behavior currently.

For example, if ErrorBlocksTransition interface is present on D-Bus and
the obmc-chassis-poweron@.target is started, the system will fully power
on, but the chassis power state will continue to report as off. This is
because all services were launched under the target to power on the
system but because the target does not complete, the BMC still reports
the chassis power as not being on.

The solution is to move the bootblock dependencies from target
responsible for starting all of the services to the synchronization
target that services utilize to order their execution.

Putting the bootblock dependencies in the obmc-power-start-pre@.target
ensure no power on services will be run.

Tested:
- Ensured a bootblock now stops the system from powering on

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

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 ...