Commit Graph

155 Commits

Author SHA1 Message Date
Mario Limonciello
9289e7d817 trivial: set firwmare attributes class directory for all tests
We don't want the system's firmware attributes class directory to
conflict.
2022-07-28 17:30:57 -05:00
Richard Hughes
829258401e Allow plugins and backends to print debugging information to the console
This is really useful for debugging.
2022-07-28 16:10:06 +01:00
Richard Hughes
0c51630991 Check firmware magic in a more standard way
Some parsers are ignoring the magic when using _FLAG_IGNORE_CHECKSUM
(which is wrong; fuzzers have no problem with enforcing a static prefix)
and other either disregard the offset or check the magic in an unsafe
way. Also, use FWUPD_ERROR_INVALID_FILE consistently for magic failure.

Add a vfunc, and move all the clever code into one place.
2022-07-14 14:48:15 +01:00
Richard Hughes
a61bb37881 Build the quirk files into the daemon as a GResource
Interestingly, this increases the `fwupd` binary size by ~30kb but
reduces the installed size of /usr/share/fwupd/quirks.d by ~330kb.
2022-06-30 18:52:24 +01:00
Richard Hughes
0491b07a93 Make the FuFirmware->parse() vfunc more helpful
This removes the 100% unused addr_end parameter and explicitly makes
the addr_start into the start offset in more cases.
2022-06-27 15:40:11 -05:00
Richard Hughes
b8be6daf1f trivial: Use 'priv' for plugin private data to be consistent 2022-06-26 13:57:53 -05:00
Richard Hughes
dc1730c439 trivial: Some clang-format fixups 2022-06-22 15:55:32 +01:00
Gaël PORTAY
299b42fe96 trivial: Make meson.build indentation consistent 2022-06-21 03:27:38 -04:00
Richard Hughes
fc2da47b69 Remove fu_strtoull_full() 2022-06-14 14:36:52 -05:00
Richard Hughes
4105768a01 Remove the 'common' prefix when parsing version numbers 2022-06-14 14:36:52 -05:00
Richard Hughes
3e0a4dc1c3 Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
Richard Hughes
067d7d8088 Split out the path helpers to a new source file 2022-06-14 14:36:52 -05:00
Richard Hughes
7f86ffab6f Split out the dump helpers to a new source file 2022-06-14 14:36:52 -05:00
Richard Hughes
ed1b13da28 Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
Richard Hughes
4b1313b406 Split out the GByte helpers to a new source file 2022-06-14 14:36:52 -05:00
Richard Hughes
9d33c29e92 Split out the string helpers to a new source file 2022-06-14 14:36:52 -05:00
Richard Hughes
619677fc3f redfish: Also reconnect the network during BMC re-coldplug 2022-06-10 13:15:08 +01:00
Richard Hughes
b75553cb49 redfish: Be more helpful when debugging connection failures 2022-06-10 13:15:08 +01:00
Richard Hughes
09f9ea7d06 redfish: Autoconnect the Redfish network device when rebooting the BMC 2022-06-10 11:09:26 +01:00
Richard Hughes
0c8079b13c redfish: Never manually modprobe ipmi-devintf
This produces startup failures on images that do not ship that exact
module, e.g. guest-images.

Just rely on the kernel driver to be auto-loaded when required.

Fixes https://github.com/fwupd/fwupd/issues/4550
2022-06-06 08:20:21 -05:00
Richard Hughes
e6b487e762 Add FuProgress to ->startup() and ->coldplug()
This allows us to profile the daemon startup so we can find any plugins
taking an inordinate amount of time to start.
2022-06-04 20:21:50 +01:00
Richard Hughes
dc91d59f8e Remove the recently added fu_progress_add_step_full()
Just break API instead.
2022-06-03 13:47:11 -05:00
Richard Hughes
0cbcac93cd Rename fu_udev_device_ioctl_full() as we broke ABI 2022-06-03 13:47:11 -05:00
Richard Hughes
5ef0ae182d Add a 'name' attribute to each FuProgress step
This allows us to print better warning strings, and in the future
would allow us to profile each operation in a meaningful way.

Also, add context to some of the progress steps as required.
2022-06-01 15:05:43 +01:00
Richard Hughes
4925fc3ba2 redfish: Fix a tiny leak when making requests 2022-05-27 11:59:28 +01:00
Richard Hughes
cc10990628 redfish: Fix a memory leak when running coldplug multiple times 2022-05-27 11:59:28 +01:00
Richard Hughes
54a1ef4642 redfish: Do not show a warning when there is no post delay 2022-05-26 11:55:32 +01:00
Richard Hughes
15a0288141 redfish: Don't reboot the BMC for all updates
The WILDCARD_TARGETS private flag had the same value as MANAGER_RESET...
2022-05-26 11:55:32 +01:00
Richard Hughes
0ad49b444e redfish: Be more resilient when restarting the BMC 2022-05-24 14:45:56 +01:00
Richard Hughes
317887cf85 redfish: Do not print unhelpful coldplug text 2022-05-24 14:45:56 +01:00
Richard Hughes
353a772e1a redfish: Use the correct key name for BMC reboot 2022-05-24 13:01:12 +01:00
Richard Hughes
d3d7cfa816 Add plugin quirk keys earlier in the startup process
This allows creating the silo when starting the engine with custom
plugin keys such as WacomI2cFlashBaseAddr.

If we move the plugin initialization earlier then we don't get the
HwID matches, so we really do have to split this into a 4-stage startup,
e.g. ->load(), ->init(), ->startup() and ->coldplug().
2022-05-09 11:13:52 +01:00
Richard Hughes
5aefc520b6 redfish: Poll less frequently during cleanup
The BMC can take more than 30 minutes to start (!) if lots of devices
are installed.
2022-05-09 11:00:18 +01:00
Richard Hughes
e90367d854 redfish: hardcode the filedata name to firmware.bin
Unbelievably, using a filename with spaces causes Lenovo XCC to return a message
with InternalError, 'The request failed due to an internal service error.
The service is still operational.'

As we're using a multipart update rather than a legacy HttpPushUriTargetsBusy
PATCHing, hardcoding should be quite safe.
2022-05-09 11:00:18 +01:00
Richard Hughes
fb93b6c51c redfish: Do not mark all updates as UPDATABLE 2022-05-09 11:00:18 +01:00
Richard Hughes
5ebcfa909c redfish: Use actual FuProgress steps for ->cleanup() 2022-05-09 11:00:18 +01:00
Richard Hughes
b7bf0a7611 Do not fallback to audio-card
Let the frontend choose the most appropriate icon if unspecified.
2022-04-25 14:49:30 +01:00
Richard Hughes
81fbff8445 redfish: Restart the BMC after installing BCM updates 2022-04-19 20:24:59 +01:00
Richard Hughes
a374254d74 redfish: Drop the cache when invalidated 2022-04-15 16:49:48 +01:00
Richard Hughes
08a3fd8b65 redfish: Fix a memory leak when calling ->setup() more than once 2022-04-15 16:49:48 +01:00
Richard Hughes
064cb648c1 redfish: Allow specifying the request type 2022-04-15 07:43:09 +01:00
Richard Hughes
f8f5cd1f25 redfish: Don't add a device to itself when replugging 2022-04-14 13:06:21 +01:00
Richard Hughes
3b0d1a6c6b trivial: Ignore the return value of curl_easy_setopt() in most cases
This makes Coverity happy.
2022-04-13 15:08:12 +01:00
Richard Hughes
0b7af7d54b trivial: Ignore the return value of setenv() in most cases
This makes Coverity happy.
2022-04-13 15:08:12 +01:00
Richard Hughes
200302bbc6 redfish: Remove some logically dead code 2022-04-13 15:08:12 +01:00
Richard Hughes
a11fefff35 redfish: Don't add the backup BMC device as it shares the same GUIDs
This fixes the problem when the UEFI update depends on a specific BMC
version -- including the backup BMC device means we checking that both
the primary and the backup were above a specific version.

I don't think it's ever useful to show the backup BMC device, so just
don't include it as an enumerated device.

Fixes https://github.com/fwupd/fwupd/issues/4404
2022-03-18 11:03:14 +00:00
Richard Hughes
c4ca026294 Allow devices to build instance IDs more easily
Provide a device instance builder that allows plugins to easily
create multiple instance IDs based on parent attributes.

Also fix a lot of the instance ID orders, so that we add more generic
IDs first, and more specific IDs after.
2022-03-03 09:13:29 +00:00
Mario Limonciello
5bc5462213 trivial: redfish: use the configured prefix to determine if it's an installed test
fixes: #3880
2022-02-28 13:36:49 -06:00
Mario Limonciello
661990ed98 Convert build system to use meson tristate features
tristate features will automatically disable if dependencies marked
as required are missing.

Packagers can manually override using `auto_features`.

Link: https://mesonbuild.com/Build-options.html#features
2022-02-28 08:34:48 -06:00
Richard Hughes
f3a13f89dd Allow specifing the DeviceIntegrity flag from metadata 2022-02-22 19:12:06 +00:00