-
Notifications
You must be signed in to change notification settings - Fork 61
Description
Running a build of humility from the current HEAD commit (098ca7e) against a Hubris archive (Gimletlet built from a recent branch), I see a number of errors in which humility hiffy complains that it couldn't find types for a large number of types that appear in IPC interfaces (including the return type of a new IPC I was trying to test):
eliza@hekate ~/Code/oxide/humility $ cargo run -- -t gimletlet hiffy -l | rg "couldn't find type"
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.11s
Running `target/debug/humility -t gimletlet hiffy -l`
humility: WARNING: archive in environment variable overriding archive in environment file
humility: attached to 0483:3754:000B00154D46501520383832 via ST-Link V3
humility: WARNING: couldn't find type Option<FaultReport> for Jefe.read_fault_report
humility: WARNING: couldn't find type [u32; 3] for Sys.read_uid
humility: WARNING: couldn't find type Option<(Result<f32, NoData>, u64)> for Sensor.get_raw_reading
humility: WARNING: couldn't find type Option<(NoData, u64)> for Sensor.get_last_nodata
humility: WARNING: couldn't find type [u8; 64] for Sequencer.read_fpga_regs
humility: WARNING: couldn't find type RenesasBlackbox for Power.rendmp_blackbox_dumpHere's the complete output of humility hiffy -l showing all the IPC interfaces. Note that this is quite long.
Full `humility hiffy -l` output
eliza@hekate ~/Code/oxide/humility $ cargo run -- -t gimletlet hiffy
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.10s
Running `target/debug/humility -t gimletlet hiffy`
humility: WARNING: archive in environment variable overriding archive in environment file
humility: attached to 0483:3754:000B00154D46501520383832 via ST-Link V3
humility hiffy failed: expected one of -l, -L, or -c
Stack backtrace:
0: anyhow::__private::format_err
at /home/eliza/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.70/src/lib.rs:668:13
1: humility_cmd_hiffy::hiffy
at ./cmd/hiffy/src/lib.rs:328:9
2: humility::cmd::subcommand::{{closure}}
at ./humility-bin/src/cmd.rs:98:17
3: humility_cmd::attach
at ./humility-cmd/src/lib.rs:189:5
4: humility::cmd::subcommand
at ./humility-bin/src/cmd.rs:97:13
5: humility::main
at ./humility-bin/src/main.rs:46:23
6: core::ops::function::FnOnce::call_once
at /home/eliza/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:253:5
7: std::sys::backtrace::__rust_begin_short_backtrace
at /home/eliza/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs:158:18
8: std::rt::lang_start::{{closure}}
at /home/eliza/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:206:18
9: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/core/src/ops/function.rs:290:21
std::panicking::catch_unwind::do_call
at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/std/src/panicking.rs:589:40
std::panicking::catch_unwind
at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/std/src/panicking.rs:552:19
std::panic::catch_unwind
at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/std/src/panic.rs:359:14
std::rt::lang_start_internal::{{closure}}
at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/std/src/rt.rs:175:24
std::panicking::catch_unwind::do_call
at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/std/src/panicking.rs:589:40
std::panicking::catch_unwind
at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/std/src/panicking.rs:552:19
std::panic::catch_unwind
at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/std/src/panic.rs:359:14
std::rt::lang_start_internal
at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/std/src/rt.rs:171:5
10: std::rt::lang_start
at /home/eliza/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:205:5
11: main
12: __libc_start_call_main
13: __libc_start_main_alias_1
14: _start
# ⏲ 11:33:31 env loaded in ❄️ nix-shell-env(±) on ⎇ master [?] using ⚙️ v1.90.0 ❌ ERROR
eliza@hekate ~/Code/oxide/humility $ cargo run -- -t gimletlet hiffy -l
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.11s
Running `target/debug/humility -t gimletlet hiffy -l`
humility: WARNING: archive in environment variable overriding archive in environment file
humility: attached to 0483:3754:000B00154D46501520383832 via ST-Link V3
INTERFACE TASK
Jefe jefe
|
+--> Jefe.get_state
| <ok> u32
|
+--> Jefe.set_state
| state u32
| <ok> ()
|
+--> Jefe.request_reset
| <ok> ()
|
+--> Jefe.get_reset_reason
| <ok> ResetReason
|
+--> Jefe.set_reset_reason
| reason ResetReason
| <ok> ()
|
+--> Jefe.reinitialize_dump_areas
| <ok> ()
| <error> DumpAgentError
|
+--> Jefe.get_dump_area
| index u8
| <ok> humpty::DumpArea
| <error> DumpAgentError
|
+--> Jefe.claim_dump_area
| <ok> humpty::DumpArea
| <error> DumpAgentError
|
+--> Jefe.dump_task
| task_index u32
| <ok> u8
| <error> DumpAgentError
|
+--> Jefe.dump_task_region
| task_index u32
| address u32
| length u32
| <ok> u8
| <error> DumpAgentError
|
+--> Jefe.reinitialize_dump_from
| index u8
| <ok> ()
| <error> DumpAgentError
|
+--> Jefe.restart_me_raw
| <ok> ()
|
+--> Jefe.read_fault_report
humility: WARNING: couldn't find type Option<FaultReport> for Jefe.read_fault_report
INTERFACE TASK
Sys sys
|
+--> Sys.enable_clock_raw
| peripheral u32
| <ok> ()
| <error> RccError
|
+--> Sys.disable_clock_raw
| peripheral u32
| <ok> ()
| <error> RccError
|
+--> Sys.enter_reset_raw
| peripheral u32
| <ok> ()
| <error> RccError
|
+--> Sys.leave_reset_raw
| peripheral u32
| <ok> ()
| <error> RccError
|
+--> Sys.gpio_configure_raw
| port Port
| pins u16
| packed_attributes u16
| <ok> ()
|
+--> Sys.gpio_set_reset
| port Port
| set_pins u16
| reset_pins u16
| <ok> ()
|
+--> Sys.gpio_read_input
| port Port
| <ok> u16
|
+--> Sys.gpio_toggle
| port Port
| pins u16
| <ok> ()
|
+--> Sys.read_uid
humility: WARNING: couldn't find type [u32; 3] for Sys.read_uid
|
+--> Sys.gpio_irq_configure
| mask u32
| sensitivity Edge
| <ok> ()
|
+--> Sys.gpio_irq_control
mask u32
op IrqControl
<ok> bool
INTERFACE TASK
UserLeds user_leds
|
+--> UserLeds.led_on
| index usize
| <ok> ()
| <error> LedError
|
+--> UserLeds.led_off
| index usize
| <ok> ()
| <error> LedError
|
+--> UserLeds.led_toggle
| index usize
| <ok> ()
| <error> LedError
|
+--> UserLeds.led_blink
index usize
<ok> ()
<error> LedError
INTERFACE TASK
Validate validate
|
+--> Validate.validate_i2c
index u32
<ok> ValidateOk
<error> ValidateError
INTERFACE TASK
Rng rng_driver
|
+--> Rng.fill
<ok> usize
<error> RngError
INTERFACE TASK
Update update_server
|
+--> Update.block_size
| <ok> usize
| <error> UpdateError
|
+--> Update.prep_image_update
| <ok> ()
| <error> UpdateError
|
+--> Update.write_one_block
| block_num usize
| <ok> ()
| <error> UpdateError
|
+--> Update.abort_update
| <ok> ()
| <error> UpdateError
|
+--> Update.finish_image_update
| <ok> ()
| <error> UpdateError
|
+--> Update.current_version
| <ok> ImageVersion
|
+--> Update.read_caboose_value
| name [u8; 4]
| <ok> u32
| <error> CabooseError
|
+--> Update.get_pending_boot_slot
| <ok> SlotId
|
+--> Update.set_pending_boot_slot
slot SlotId
<ok> ()
<error> UpdateError
INTERFACE TASK
Packrat packrat
|
+--> Packrat.get_mac_address_block
| <ok> MacAddressBlock
| <error> CacheGetError
|
+--> Packrat.set_mac_address_block
| macs MacAddressBlock
| <ok> ()
| <error> CacheSetError
|
+--> Packrat.get_identity
| <ok> OxideIdentity
| <error> CacheGetError
|
+--> Packrat.set_identity
| macs OxideIdentity
| <ok> ()
| <error> CacheSetError
|
+--> Packrat.get_next_boot_host_startup_options
| <ok> HostStartupOptions
|
+--> Packrat.set_next_boot_host_startup_options
| startup_options HostStartupOptions
| <ok> ()
|
+--> Packrat.remove_spd
| index u8
| <ok> ()
|
+--> Packrat.set_spd_eeprom
| index u8
| offset usize
| <ok> ()
|
+--> Packrat.get_spd_present
| index u8
| <ok> bool
|
+--> Packrat.get_spd_data
| index u8
| offset usize
| <ok> u8
|
+--> Packrat.get_full_spd_data
| index u8
| <ok> ()
|
+--> Packrat.set_ereport_restart_id
| restart_id u128
| <ok> ()
| <error> CacheSetError
|
+--> Packrat.deliver_ereport
| <ok> ()
| <error> EreportWriteError
|
+--> Packrat.read_ereports
request_id ereport_messages::RequestIdV0
restart_id ereport_messages::RestartId
start_ena ereport_messages::Ena
limit u8
committed_ena ereport_messages::Ena
<ok> usize
<error> EreportReadError
INTERFACE TASK
ControlPlaneAgent control_plane_agent
|
+--> ControlPlaneAgent.fetch_host_phase2_data
| image_hash [u8; 32]
| offset u64
| notification_bit u8
| <ok> ()
| <error> ControlPlaneAgentError
|
+--> ControlPlaneAgent.get_host_phase2_data
| image_hash [u8; 32]
| offset u64
| <ok> usize
| <error> ControlPlaneAgentError
|
+--> ControlPlaneAgent.get_startup_options
| <ok> HostStartupOptions
| <error> ControlPlaneAgentError
|
+--> ControlPlaneAgent.set_startup_options
| startup_options u64
| <ok> ()
| <error> ControlPlaneAgentError
|
+--> ControlPlaneAgent.identity
| <ok> OxideIdentity
|
+--> ControlPlaneAgent.get_uart_client
| <ok> UartClient
|
+--> ControlPlaneAgent.get_installinator_image_id
| <ok> usize
|
+--> ControlPlaneAgent.set_humility_uart_client
| attach bool
| <ok> ()
| <error> ControlPlaneAgentError
|
+--> ControlPlaneAgent.uart_read
| <ok> usize
| <error> ControlPlaneAgentError
|
+--> ControlPlaneAgent.uart_write
<ok> usize
<error> ControlPlaneAgentError
INTERFACE TASK
Sensor sensor
|
+--> Sensor.get
| id SensorId
| <ok> f32
| <error> SensorError
|
+--> Sensor.get_reading
| id SensorId
| <ok> Reading
| <error> SensorError
|
+--> Sensor.get_raw_reading
| id SensorId
humility: WARNING: couldn't find type Option<(Result<f32, NoData>, u64)> for Sensor.get_raw_reading
|
+--> Sensor.get_last_data
| id SensorId
| <ok> Option<(f32, u64)>
|
+--> Sensor.get_last_nodata
| id SensorId
humility: WARNING: couldn't find type Option<(NoData, u64)> for Sensor.get_last_nodata
|
+--> Sensor.get_min
| id SensorId
| <ok> (f32, u64)
|
+--> Sensor.get_max
| id SensorId
| <ok> (f32, u64)
|
+--> Sensor.post
| id SensorId
| value f32
| timestamp u64
| <ok> ()
|
+--> Sensor.nodata
| id SensorId
| nodata NoData
| timestamp u64
| <ok> ()
|
+--> Sensor.get_nerrors
id SensorId
<ok> u32
INTERFACE TASK
DumpAgent dump_agent
|
+--> DumpAgent.read_dump
| index u8
| offset u32
| <ok> [u8; DUMP_READ_SIZE]
| <error> DumpAgentError
|
+--> DumpAgent.read_dump_into
| index u8
| offset u32
| <ok> usize
| <error> DumpAgentError
|
+--> DumpAgent.get_dump_area
| index u8
| <ok> DumpArea
| <error> DumpAgentError
|
+--> DumpAgent.initialize_dump
| <ok> ()
| <error> DumpAgentError
|
+--> DumpAgent.add_dump_segment
| address u32
| length u32
| <ok> ()
| <error> DumpAgentError
|
+--> DumpAgent.take_dump
| <ok> ()
| <error> DumpAgentError
|
+--> DumpAgent.dump_task
| task_index u32
| <ok> u8
| <error> DumpAgentError
|
+--> DumpAgent.dump_task_region
| task_index u32
| start u32
| length u32
| <ok> u8
| <error> DumpAgentError
|
+--> DumpAgent.reinitialize_dump_from
index u8
<ok> ()
<error> DumpAgentError
INTERFACE TASK
Sequencer gimlet_seq
|
+--> Sequencer.get_state
| <ok> drv_cpu_power_state::PowerState
|
+--> Sequencer.set_state
| state drv_cpu_power_state::PowerState
| <ok> drv_cpu_seq_api::Transition
| <error> SeqError
|
+--> Sequencer.set_state_with_reason
| state drv_cpu_power_state::PowerState
| reason StateChangeReason
| <ok> drv_cpu_seq_api::Transition
| <error> SeqError
|
+--> Sequencer.send_hardware_nmi
| <ok> ()
|
+--> Sequencer.read_fpga_regs
humility: WARNING: couldn't find type [u8; 64] for Sequencer.read_fpga_regs
|
+--> Sequencer.last_post_code
| <ok> u32
|
+--> Sequencer.gpio_edge_count
| <ok> u32
|
+--> Sequencer.gpio_cycle_count
<ok> u32
INTERFACE TASK
HostSpComms host_sp_comms
|
+--> HostSpComms.set_status
| status u64
| <ok> ()
| <error> HostSpCommsError
|
+--> HostSpComms.get_status
<ok> Status
<error> HostSpCommsError
INTERFACE TASK
HostFlash hf
|
+--> HostFlash.read_id
| <ok> HfChipId
| <error> HfError
|
+--> HostFlash.capacity
| <ok> usize
| <error> HfError
|
+--> HostFlash.read_status
| <ok> u8
| <error> HfError
|
+--> HostFlash.bulk_erase
| protect HfProtectMode
| <ok> ()
| <error> HfError
|
+--> HostFlash.page_program
| address u32
| protect HfProtectMode
| <ok> ()
| <error> HfError
|
+--> HostFlash.page_program_dev
| dev HfDevSelect
| address u32
| protect HfProtectMode
| <ok> ()
| <error> HfError
|
+--> HostFlash.read
| address u32
| <ok> ()
| <error> HfError
|
+--> HostFlash.read_dev
| dev HfDevSelect
| address u32
| <ok> ()
| <error> HfError
|
+--> HostFlash.sector_erase
| address u32
| protect HfProtectMode
| <ok> ()
| <error> HfError
|
+--> HostFlash.sector_erase_dev
| dev HfDevSelect
| address u32
| protect HfProtectMode
| <ok> ()
| <error> HfError
|
+--> HostFlash.get_mux
| <ok> HfMuxState
| <error> HfError
|
+--> HostFlash.set_mux
| state HfMuxState
| <ok> ()
| <error> HfError
|
+--> HostFlash.get_dev
| <ok> HfDevSelect
| <error> HfError
|
+--> HostFlash.set_dev
| dev HfDevSelect
| <ok> ()
| <error> HfError
|
+--> HostFlash.check_dev
| dev HfDevSelect
| <ok> ()
| <error> HfError
|
+--> HostFlash.hash
| address u32
| len u32
| <ok> [u8; drv_hash_api::SHA256_SZ]
| <error> HfError
|
+--> HostFlash.hash_significant_bits
| dev HfDevSelect
| <ok> ()
| <error> HfError
|
+--> HostFlash.get_cached_hash
| dev HfDevSelect
| <ok> [u8; drv_hash_api::SHA256_SZ]
| <error> HfError
|
+--> HostFlash.get_persistent_data
| <ok> HfPersistentData
| <error> HfError
|
+--> HostFlash.write_persistent_data
| dev_select HfDevSelect
| <ok> ()
| <error> HfError
|
+--> HostFlash.apob_begin
| length u32
| algorithm ApobHash
| <ok> ()
| <error> ApobBeginError
|
+--> HostFlash.apob_write
| offset u32
| <ok> ()
| <error> ApobWriteError
|
+--> HostFlash.apob_commit
| <ok> ()
| <error> ApobCommitError
|
+--> HostFlash.apob_lock
| <ok> ()
|
+--> HostFlash.apob_read
offset u32
<ok> usize
<error> ApobReadError
INTERFACE TASK
Hash hash_driver
|
+--> Hash.init_sha256
| <ok> ()
| <error> HashError
|
+--> Hash.update
| len u32
| <ok> ()
| <error> HashError
|
+--> Hash.finalize_sha256
| <ok> [u8; crate::SHA256_SZ]
| <error> HashError
|
+--> Hash.digest_sha256
len u32
<ok> [u8; crate::SHA256_SZ]
<error> HashError
INTERFACE TASK
Net net
|
+--> Net.recv_packet
| socket SocketName
| large_payload_behavior LargePayloadBehavior
| <ok> UdpMetadata
| <error> RecvError
|
+--> Net.send_packet
| socket SocketName
| metadata UdpMetadata
| <ok> ()
| <error> SendError
|
+--> Net.smi_read
| phy u8
| register u8
| <ok> u16
|
+--> Net.smi_write
| phy u8
| register u8
| value u16
| <ok> ()
|
+--> Net.read_phy_reg
| port u8
| page u16
| reg u8
| <ok> u16
| <error> PhyError
|
+--> Net.write_phy_reg
| port u8
| page u16
| reg u8
| value u16
| <ok> ()
| <error> PhyError
|
+--> Net.read_ksz8463_mac_count
| <ok> usize
| <error> KszError
|
+--> Net.read_ksz8463_mac
| i u16
| <ok> KszMacTableEntry
| <error> KszError
|
+--> Net.read_ksz8463_reg
| reg u16
| <ok> u16
| <error> KszError
|
+--> Net.get_mac_address
| <ok> MacAddress
|
+--> Net.get_spare_mac_addresses
| <ok> MacAddressBlock
|
+--> Net.management_link_status
| <ok> ManagementLinkStatus
| <error> MgmtError
|
+--> Net.management_counters
| <ok> ManagementCounters
| <error> MgmtError
|
+--> Net.trust_vlan
| vid VLanId
| trust_until u64
| <ok> ()
| <error> TrustError
|
+--> Net.distrust_vlan
vid VLanId
<ok> ()
<error> TrustError
INTERFACE TASK
SpRot sprot
|
+--> SpRot.status
| <ok> SprotStatus
| <error> SprotError
|
+--> SpRot.io_stats
| <ok> SprotIoStats
| <error> SprotError
|
+--> SpRot.rot_state
| <ok> RotState
| <error> SprotError
|
+--> SpRot.pulse_cs
| delay u16
| <ok> PulseStatus
| <error> SprotError
|
+--> SpRot.block_size
| <ok> u32
| <error> SprotError
|
+--> SpRot.prep_image_update
| target UpdateTarget
| <ok> ()
| <error> SprotError
|
+--> SpRot.write_one_block
| block_num u32
| <ok> ()
| <error> SprotError
|
+--> SpRot.abort_update
| <ok> ()
| <error> SprotError
|
+--> SpRot.finish_image_update
| <ok> ()
| <error> SprotError
|
+--> SpRot.switch_default_image
| slot SlotId
| duration SwitchDuration
| <ok> ()
| <error> SprotError
|
+--> SpRot.reset
| <ok> ()
| <error> SprotError
|
+--> SpRot.dump
| address u32
| <ok> ()
| <error> DumpOrSprotError
|
+--> SpRot.caboose_size
| slot SlotId
| <ok> u32
| <error> RawCabooseOrSprotError
|
+--> SpRot.read_caboose_region
| offset u32
| slot SlotId
| <ok> ()
| <error> RawCabooseOrSprotError
|
+--> SpRot.rot_boot_info
| <ok> RotBootInfo
| <error> SprotError
|
+--> SpRot.cert_chain_len
| <ok> u32
| <error> AttestOrSprotError
|
+--> SpRot.cert_len
| index u32
| <ok> u32
| <error> AttestOrSprotError
|
+--> SpRot.cert
| index u32
| offset u32
| <ok> ()
| <error> AttestOrSprotError
|
+--> SpRot.record
| algorithm HashAlgorithm
| <ok> ()
| <error> AttestOrSprotError
|
+--> SpRot.read_rot_page
| page RotPage
| <ok> ()
| <error> SprotError
|
+--> SpRot.log
| offset u32
| <ok> ()
| <error> AttestOrSprotError
|
+--> SpRot.log_len
| <ok> u32
| <error> AttestOrSprotError
|
+--> SpRot.attest
| <ok> ()
| <error> AttestOrSprotError
|
+--> SpRot.attest_len
| <ok> u32
| <error> AttestOrSprotError
|
+--> SpRot.enable_sp_slot_watchdog
| time_ms u32
| <ok> ()
| <error> SprotError
|
+--> SpRot.disable_sp_slot_watchdog
| <ok> ()
| <error> SprotError
|
+--> SpRot.sp_slot_watchdog_supported
| <ok> ()
| <error> SprotError
|
+--> SpRot.versioned_rot_boot_info
| version u8
| <ok> VersionedRotBootInfo
| <error> SprotError
|
+--> SpRot.component_caboose_size
| component RotComponent
| slot SlotId
| <ok> u32
| <error> RawCabooseOrSprotError
|
+--> SpRot.component_read_caboose_region
| offset u32
| component RotComponent
| slot SlotId
| <ok> ()
| <error> RawCabooseOrSprotError
|
+--> SpRot.component_prep_image_update
| component RotComponent
| slot SlotId
| <ok> ()
| <error> SprotError
|
+--> SpRot.component_switch_default_image
| component RotComponent
| slot SlotId
| duration SwitchDuration
| <ok> ()
| <error> SprotError
|
+--> SpRot.lifecycle_state
| <ok> LifecycleState
| <error> StateOrSprotError
|
+--> SpRot.tq_cert_chain_len
| <ok> u32
| <error> AttestOrSprotError
|
+--> SpRot.tq_cert_len
| index u32
| <ok> u32
| <error> AttestOrSprotError
|
+--> SpRot.tq_cert
| index u32
| offset u32
| <ok> ()
| <error> AttestOrSprotError
|
+--> SpRot.tq_sign
| <ok> ()
| <error> AttestOrSprotError
|
+--> SpRot.tq_sign_len
<ok> u32
<error> AttestOrSprotError
INTERFACE TASK
Power power
|
+--> Power.pmbus_read
| dev Device
| rail u8
| index u32
| op Operation
| <ok> PmbusValue
| <error> ResponseCode
|
+--> Power.read_mode
| dev Device
| rail u8
| index u32
| <ok> u8
| <error> ResponseCode
|
+--> Power.phase_current
| rail SensorId
| phase u8
| <ok> f32
| <error> ResponseCode
|
+--> Power.bmr491_event_log_read
| index u8
| <ok> Bmr491Event
| <error> ResponseCode
|
+--> Power.bmr491_fault_log_clear
| <ok> ()
| <error> ResponseCode
|
+--> Power.bmr491_max_fault_event_index
| <ok> u8
| <error> ResponseCode
|
+--> Power.bmr491_max_lifecycle_event_index
| <ok> u8
| <error> ResponseCode
|
+--> Power.rendmp_blackbox_dump
| addr u8
humility: WARNING: couldn't find type RenesasBlackbox for Power.rendmp_blackbox_dump
|
+--> Power.rendmp_dma_read
| addr u8
| reg u16
| <ok> u32
| <error> ResponseCode
|
+--> Power.rendmp_dma_write
| addr u8
| reg u16
| data u32
| <ok> ()
| <error> ResponseCode
|
+--> Power.raw_pmbus_read_byte
| index u32
| has_rail bool
| op u8
| <ok> u8
| <error> ResponseCode
|
+--> Power.raw_pmbus_read_word
| index u32
| has_rail bool
| op u8
| <ok> u16
| <error> ResponseCode
|
+--> Power.raw_pmbus_read_word32
| index u32
| has_rail bool
| op u8
| <ok> u32
| <error> ResponseCode
|
+--> Power.raw_pmbus_read_block
| index u32
| has_rail bool
| op u8
| <ok> RawPmbusBlock
| <error> ResponseCode
|
+--> Power.raw_pmbus_set
| index u32
| has_rail bool
| op u8
| <ok> ()
| <error> ResponseCode
|
+--> Power.raw_pmbus_write_byte
| index u32
| has_rail bool
| op u8
| data u8
| <ok> ()
| <error> ResponseCode
|
+--> Power.raw_pmbus_write_word
| index u32
| has_rail bool
| op u8
| data u16
| <ok> ()
| <error> ResponseCode
|
+--> Power.raw_pmbus_write_word32
| index u32
| has_rail bool
| op u8
| data u32
| <ok> ()
| <error> ResponseCode
|
+--> Power.raw_pmbus_write_block
index u32
has_rail bool
op u8
data RawPmbusBlock
<ok> ()
<error> ResponseCode
INTERFACE TASK
Ereportulator ereportulator
|
+--> Ereportulator.fake_ereport
| n u32
| <ok> ()
|
+--> Ereportulator.set_fake_vpd
| <ok> ()
| <error> CacheSetError
|
+--> Ereportulator.panic_me
<ok> ()What's particularly weird about this is that I note that it complains about some normal byte arrays, which naively, I feel like it ought to be able to understand:
humility: WARNING: couldn't find type [u8; 64] for Sequencer.read_fpga_regs
...but, other IPCs which also involve byte array types were interpreted successfully:
+--> ControlPlaneAgent.fetch_host_phase2_data
| image_hash [u8; 32]
| offset u64
| notification_bit u8
| <ok> ()
| <error> ControlPlaneAgentError
|
+--> ControlPlaneAgent.get_host_phase2_data
| image_hash [u8; 32]
| offset u64
| <ok> usize
| <error> ControlPlaneAgentError
|
...
+--> DumpAgent.read_dump
| index u8
| offset u32
| <ok> [u8; DUMP_READ_SIZE]
| <error> DumpAgentError
I've also attached my Hubris archive that this behavior was observed against, in case that's useful, though I'not sure whether this is caused by anything specific to my archive:
build-gimletlet-ereportlet-image-default.zip