blob: 611c189d91ab020d364d801ea943ee540ceca609 [file] [view]
# Validating driver changes in QEMU
**Prerequisites:** This process requires a graphical desktop environment.
The steps below do not work in a headless SSH session.
Use the steps below to validate a code change in QEMU.
1. Ensure the emulator is stopped: `ffx emu stop --all`
2. Build the project (may take a few minutes): `fx build --quiet`
3. Create the logs storage directory: `mkdir -p local`
4. Delete any old logs: `rm -f local/logs.qemu.*`
5. Start the emulator, saving QEMU tool logs:
`ffx emu start --engine qemu --net tap --log local/logs.qemu`
6. Wait for `ffx` to exit. The last output line should be: `Emulator is ready.`
7. Wait for the emulator ffx connection to stabilize: `ffx target wait`
8. Check for errors and inconsistencies in the driver's output in the UART logs.
Assuming the `ffx emu start` command above, the UART logs are at
`local/logs.qemu.serial`. Example:
`grep --context=3 "virtio-gpu-display" local/logs.qemu.serial`
9. Optionally, save the Fuchsia system logs:
`ffx log dump > local/logs.qemu.fuchsia`
10. Check for ERROR entries (software implementation errors) in the UART logs or
in the Fuchsia system logs. Example:
`grep --context=3 "ERROR" local/logs.qemu.serial`
Use the steps below to run shell tools in the emulator, such as
`display-tool`.
1. Run a package server (blocks; needs its own terminal):
`fx serve --foreground`
2. Wait for the command above to output a line similar to:
`Serving repository '/ssd/fuchsia/out/x64/amber-files' over address '[::]:8083'.`
3. Run the command: `ffx target ssh -- {COMMAND} [{ARGUMENTS...}]`.
Example: `ffx target ssh -- display-tool info`
4. If starting the command fails and the output contains
`Cannot create child process: -25 (ZX_ERR_NOT_FOUND)`, wait a few seconds for
the VM to connect to the package server, and try again.