powerpc: halt and reboot via firmware via cuda fail Description of problem: Both shutdown and reboot cause errors preventing the action from occuring. With logging turned on as above, it can be seen that the issue is with CUDA. If the option `-M mac99,via=pmu` is given the action happens as expected. ``` # qemu-system-ppc -trace 'cuda_*' -d unimp,guest_errors -serial file:/dev/stdout -hda /tmp/grub-shell.CdAU68FI6P/grub.iso -boot c WARNING: Image format was not specified for '/tmp/grub-shell.CdAU68FI6P/grub.iso' and probing guessed raw. Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. Specify the 'raw' format explicitly to remove the restrictions. cuda_delay_set_sr_int cuda_data_send send: 0x00 cuda_delay_set_sr_int cuda_data_send send: 0x00 cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_packet_receive length 2 cuda_packet_receive_data [0] 0x00 cuda_packet_receive_data [1] 0x00 cuda_packet_send length 3 cuda_packet_send_data [0] 0x00 cuda_packet_send_data [1] 0x00 cuda_packet_send_data [2] 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_data_send send: 0x00 cuda_delay_set_sr_int cuda_data_send send: 0x1f cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_packet_receive length 2 cuda_packet_receive_data [0] 0x00 cuda_packet_receive_data [1] 0x1f cuda_packet_send length 3 cuda_packet_send_data [0] 0x00 cuda_packet_send_data [1] 0x02 cuda_packet_send_data [2] 0x1f cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x02 cuda_delay_set_sr_int cuda_data_recv recv: 0x1f cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_data_send send: 0x00 cuda_delay_set_sr_int cuda_data_send send: 0x2f cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_packet_receive length 2 cuda_packet_receive_data [0] 0x00 cuda_packet_receive_data [1] 0x2f cuda_packet_send length 4 cuda_packet_send_data [0] 0x00 cuda_packet_send_data [1] 0x00 cuda_packet_send_data [2] 0x02 cuda_packet_send_data [3] 0x01 cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x02 cuda_delay_set_sr_int cuda_data_recv recv: 0x01 cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_data_send send: 0x00 cuda_delay_set_sr_int cuda_data_send send: 0x2b cuda_delay_set_sr_int cuda_data_send send: 0x28 cuda_delay_set_sr_int cuda_data_send send: 0xfe cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_packet_receive length 4 cuda_packet_receive_data [0] 0x00 cuda_packet_receive_data [1] 0x2b cuda_packet_receive_data [2] 0x28 cuda_packet_receive_data [3] 0xfe cuda_packet_send length 3 cuda_packet_send_data [0] 0x00 cuda_packet_send_data [1] 0x00 cuda_packet_send_data [2] 0x2b cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x2b cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_data_send send: 0x00 cuda_delay_set_sr_int cuda_data_send send: 0x81 cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_packet_receive length 2 cuda_packet_receive_data [0] 0x00 cuda_packet_receive_data [1] 0x81 cuda_packet_send length 3 cuda_packet_send_data [0] 0x00 cuda_packet_send_data [1] 0x00 cuda_packet_send_data [2] 0x81 cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x81 cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_data_send send: 0x00 cuda_delay_set_sr_int cuda_data_send send: 0x2f cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_packet_receive length 2 cuda_packet_receive_data [0] 0x00 cuda_packet_receive_data [1] 0x2f cuda_packet_send length 3 cuda_packet_send_data [0] 0x00 cuda_packet_send_data [1] 0x02 cuda_packet_send_data [2] 0x2f cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x02 cuda_delay_set_sr_int cuda_data_recv recv: 0x2f cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_data_send send: 0x00 cuda_delay_set_sr_int cuda_data_send send: 0x3f cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_packet_receive length 2 cuda_packet_receive_data [0] 0x00 cuda_packet_receive_data [1] 0x3f cuda_packet_send length 4 cuda_packet_send_data [0] 0x00 cuda_packet_send_data [1] 0x00 cuda_packet_send_data [2] 0x03 cuda_packet_send_data [3] 0x02 cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x03 cuda_delay_set_sr_int cuda_data_recv recv: 0x02 cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_data_send send: 0x00 cuda_delay_set_sr_int cuda_data_send send: 0x3b cuda_delay_set_sr_int cuda_data_send send: 0x29 cuda_delay_set_sr_int cuda_data_send send: 0xfe cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_packet_receive length 4 cuda_packet_receive_data [0] 0x00 cuda_packet_receive_data [1] 0x3b cuda_packet_receive_data [2] 0x29 cuda_packet_receive_data [3] 0xfe cuda_packet_send length 3 cuda_packet_send_data [0] 0x00 cuda_packet_send_data [1] 0x00 cuda_packet_send_data [2] 0x3b cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x3b cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_data_send send: 0x00 cuda_delay_set_sr_int cuda_data_send send: 0x91 cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_packet_receive length 2 cuda_packet_receive_data [0] 0x00 cuda_packet_receive_data [1] 0x91 cuda_packet_send length 3 cuda_packet_send_data [0] 0x00 cuda_packet_send_data [1] 0x00 cuda_packet_send_data [2] 0x91 cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x91 cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_data_send send: 0x00 cuda_delay_set_sr_int cuda_data_send send: 0x3f cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_packet_receive length 2 cuda_packet_receive_data [0] 0x00 cuda_packet_receive_data [1] 0x3f cuda_packet_send length 3 cuda_packet_send_data [0] 0x00 cuda_packet_send_data [1] 0x02 cuda_packet_send_data [2] 0x3f cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x02 cuda_delay_set_sr_int cuda_data_recv recv: 0x3f cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_data_send send: 0x00 cuda_delay_set_sr_int cuda_data_send send: 0x4f cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_packet_receive length 2 cuda_packet_receive_data [0] 0x00 cuda_packet_receive_data [1] 0x4f cuda_packet_send length 3 cuda_packet_send_data [0] 0x00 cuda_packet_send_data [1] 0x02 cuda_packet_send_data [2] 0x4f cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x02 cuda_delay_set_sr_int cuda_data_recv recv: 0x4f cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_data_send send: 0x00 cuda_delay_set_sr_int cuda_data_send send: 0x5f cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_packet_receive length 2 cuda_packet_receive_data [0] 0x00 cuda_packet_receive_data [1] 0x5f cuda_packet_send length 3 cuda_packet_send_data [0] 0x00 cuda_packet_send_data [1] 0x02 cuda_packet_send_data [2] 0x5f cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x02 cuda_delay_set_sr_int cuda_data_recv recv: 0x5f cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_data_send send: 0x00 cuda_delay_set_sr_int cuda_data_send send: 0x7f cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_packet_receive length 2 cuda_packet_receive_data [0] 0x00 cuda_packet_receive_data [1] 0x7f cuda_packet_send length 3 cuda_packet_send_data [0] 0x00 cuda_packet_send_data [1] 0x02 cuda_packet_send_data [2] 0x7f cuda_delay_set_sr_int cuda_data_recv recv: 0x00 cuda_delay_set_sr_int cuda_data_recv recv: 0x02 cuda_delay_set_sr_int cuda_data_recv recv: 0x7f cuda_delay_set_sr_int cuda_delay_set_sr_int >> ============================================================= >> OpenBIOS 1.1 [Aug 12 2021 13:35] >> Configuration device id QEMU version 1 machine id 2 >> CPUs: 1 >> Memory: 128M >> UUID: 00000000-0000-0000-0000-000000000000 >> CPU type PowerPC,750 milliseconds isn't unique. >> switching to new context: >> call-method block-size failed with error ffffffdf >> call-method block-size failed with error ffffffdf cuda_data_send send: 0x01 cuda_delay_set_sr_int cuda_data_send send: 0x0a cuda_delay_set_sr_int cuda_data_send send: 0xfa cuda_delay_set_sr_int cuda_delay_set_sr_int cuda_packet_receive length 3 cuda_packet_receive_data [0] 0x01 cuda_packet_receive_data [1] 0x0a cuda_packet_receive_data [2] 0xfa cuda_receive_packet_cmd handling command POWERDOWN CUDA: POWERDOWN: wrong parameters 2 cuda_packet_send length 4 cuda_packet_send_data [0] 0x02 cuda_packet_send_data [1] 0x05 cuda_packet_send_data [2] 0x01 cuda_packet_send_data [3] 0x0a cuda_delay_set_sr_int cuda_data_recv recv: 0x02 cuda_delay_set_sr_int cuda_data_recv recv: 0x05 cuda_delay_set_sr_int cuda_data_recv recv: 0x01 cuda_delay_set_sr_int cuda_data_recv recv: 0x0a cuda_delay_set_sr_int cuda_delay_set_sr_int >> interpret shut-down failed with error ffffffed >> interpret poweroff failed with error ffffffed ``` Steps to reproduce: 1. Download attached iso file: [grub.iso.xz](/uploads/dea8f2bde4d90b9928f54bb9b73d76e9/grub.iso.xz) 2. Decompress iso 3. Run qemu as specified above Additional information: