| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
Any is the preferred over interface{} now in Go.
|
| | |
|
| |
|
|
| |
This is a much cleaner logic than string matching.
|
| |
|
|
|
|
| |
In almost all cases these mean some boot time crash.
It also doesn't make much sense to continue string matching since the
boot output may contain the matched strings in benign contexts.
|
| |
|
|
|
|
|
|
|
|
| |
Enable external abortion of the instance creation process. This is
especially useful for the qemu case where we retry the creation/boot up
to 1000 times, which can take significant time (e.g. it timeouts
syz-cluster pods on unstable kernels).
The context can be further propagated to WaitForSSH, but that requires
another quite significant vm/ refactoring.
|
| |
|
|
| |
./tools/syz-env bin/golangci-lint run ./... --fix
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
virtio-net-ccw is a preferred way to set up a virtual network interface on
s390x at the moment because it is faster than virtio-net-pci
(eventfd and irqfd is missing). This also allows disabling of zPCI in QEMU
which was required only because virtio-net-pci was used as a network
interface. PCI is special on s390x and, for instance, does not use MMIO or
expose topology [1,2,3]. Furthermore, any features like PXE are
not supported with virtio-net-pci on s390x.
[1] https://people.redhat.com/~cohuck/2018/02/19/notes-on-pci-on-s390x.html
[2] https://wiki.qemu.org/Documentation/Platforms/S390X#A_note_on_PCI_support
[3] https://www.qemu.org/docs/master/system/s390x/pcidevices.html
Signed-off-by: Alexander Egorenkov <eaibmz@gmail.com>
|
| |
|
|
| |
It allows to use context as a single termination signal source.
|
| |
|
|
| |
This reverts commit 85a5a23f228f2de970f578bf3b452a23a222c09d.
|
| |
|
|
|
|
|
| |
The previously used combination does not boot our buildroot image:
[ 6.334727][ T1] Run /sbin/init as init process
[ 6.668200][ T1] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004
|
| |
|
|
| |
Closes #5870.
|
| |
|
|
| |
It reduces WaitForSSH parameter count from 9 to 6.
|
| |
|
|
|
| |
Riscv is far from having a hw with a 5-level support, so let's focus on the
4-level.
|
| |
|
|
|
|
| |
The chance of port collision is very low, but still not 0.
There's no reason to report an error on the first ocurrence of the problem,
let it first retry 100 times.
|
| |
|
|
|
|
|
|
|
| |
The new qemu versions began to fail with the settings we previously
used. It's probably not worth extensive debugging, so let's just do what
qemu suggests.
qemu-system-arm: Invalid CPU model: max
The only valid type is: cortex-a15
|
| |
|
|
|
|
|
| |
Move the VM count restriction logic info vm package.
This avoids lots of duplication, makes it supported
for VM types that failed to do this, and allows
to unify more VM count logic in future.
|
| |
|
|
|
|
| |
Even though we are yet to see arm64 hosts on which `-accel kvm` works
properly, require the users to explicitly set request TCG in their
manager configs.
|
| |
|
|
| |
I want to create more than 128.
|
| |
|
|
| |
This seems to be an acceptable compromise between speed and coverage
|
| |
|
|
|
| |
Include VM output into snapshot error messages.
Otherwise it's hard to understand what happened.
|
| |
|
|
|
|
| |
This is needed to have access to newer features like nested virtualization.
Because those features slow down CPU emulation in QEMU, disable SVE and
pointer authentication, which are of less importance for us now.
|
| |
|
|
|
| |
Newer virtual IRQ controllers provide more features, so this should
hopefully increase the coverage.
|
| | |
|
| |
|
|
|
| |
More qemu arguments building into separate function to prevent
linter error about max function length in next commits.
|
| |
|
|
|
|
|
|
|
| |
Pass Type struct directly during registration.
This allows to add additional optional parameters to VM types
without changing all VM implementations.
We we will need to add SupportsSnapshots flag and one flag to resolve #5028.
With this change it will be possible to add "SupportsSnapshots: true"
to just one VM type implemenetation.
|
| |
|
|
| |
It's better to follow standard interfaces.
|
| |
|
|
|
| |
If qmp is used all the time for snapshotting,
it produces tons of uniniteresting logs at level 1 (manager web UI).
|
| |
|
|
|
|
| |
Sometimes qemu just returns an "Error: ..." string in reply
instead of returning an error. Handle these cases.
Also log all qmp commands in debug mode.
|
| |
|
|
|
| |
Introduce a MultiplexConfig structure that contains optional parameters.
Include a Scale parameter to control the intended slowdown.
|
| | |
|
| |
|
|
| |
We never write to the channel.
|
| |
|
|
|
|
|
| |
Move all syz-fuzzer logic into syz-executor and remove syz-fuzzer.
Also restore syz-runtest functionality in the manager.
Update #4917 (sets most signal handlers to SIG_IGN)
|
| |
|
|
|
|
| |
Remove things that are only needed for target VM communication:
conditional compression, timeout scaling, traffic stats.
To minimize diffs when we switch target VM communication to flatrpc.
|
| |
|
|
| |
It seems to bring more problems than it solves.
|
| |
|
|
|
|
|
| |
Akaros support is unused, it was shutdown on syzbot for a while,
the akaros development seems to be frozen for years as well.
We have a bunch of hacks for Akaros since it supported
only super old gcc and haven't supported Go. Remove it.
|
| |
|
|
|
| |
We're seeing a lot of `Image format was not specified for '%PATH' and
probing guessed raw.` errors.
|
| |
|
|
|
|
|
|
| |
RPC compression take up to 10% of CPU time in profiles,
but it's unlikely to be beneficial for local VM runs
(we are mostly copying memory in this case).
Enable RPC compression based on the VM type
(local VM don't use it, remove machines use it).
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Most of the VM types tightly manage the target they SSH into and can
safely assume that system wide SSH configuration would mess with the SSH
flags provided by syzkaller. However, in the "isolate" VM type, one can
connect to a host that is not at all managed by syzkaller. In this case,
it can be useful to leverage system wide SSH config, maybe provided by a
corporate environment.
This adds an option to the isolated config to skip some of the SSH and
SCP flags that would drop system wide config.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
os.Stat() may return (nil, err) if it fails to open a file.
So, the code below wrongly validates st as it will be always nil
if err != nil, causing nil pointer dereference in st.Size().
```
if st, err := os.Stat(inst.image); err != nil && st.Size() == 0 {
```
To fix this, this patch allows st.Size() only if err == nil.
|
| |
|
|
| |
Forward the default pprof port to enable direct connections from the host.
|
| | |
|
| |
|
|
|
| |
The `-accel tcg,thread=multi` option speeds up boot by ~25%. Execution
speed shoud also increase.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a temporary work-around for s390x until it supports CONFIG_CMDLINE.
Failing to do so might cause a failure to establish a SSH connection
when syz-ci tests a built image.
syz-ci output:
--------------
building kernel...
testing image...
VM boot failed with: can't ssh into the instance
failure log:
------------
failed to run ["ssh" "-p" "34490" ... "root@localhost" "pwd"]: exit status 255
Connection timed out during banner exchange
Connection to 127.0.0.1 port 34490 timed out
qemu dmesg
----------
[ 6.646475] virtio_net virtio0 eno1: renamed from eth0
Signed-off-by: Alexander Egorenov <eaibmz@gmail.com>
|
| |
|
|
|
|
| |
PR #3387 inadvertently set the heartbeat period to the same value as the
heartbeat age threshold, which is incorrect. This removes that
configuration line, allowing the period to revert to its default of
1sec.
|
| |
|
|
|
|
|
|
|
|
|
| |
Syzkaller currently only supports 8 (0-7) pass-through VFs.
Add support for VFs > 8 by incrementing the Device # and
resetting the VF # to zero when INDEX modulo 8 = zero.
Introduce "{{FN%8}}" to trigger this support.
Ex: vfio-pci,host=31:0a.{{FN%8}}
Signed-off-by: George Kennedy <george.kennedy@oracle.com>
|
| |
|
|
|
|
|
|
| |
Add "Device or resource busy" check to delay loop in function
Create to avoid resource busy caused by qemu "lazy release" of
VFs when VMs are restarted.
Signed-off-by: George Kennedy <george.kennedy@oracle.com>
|
| |
|
|
|
| |
Running with nested virtualization, this was causing many false
positives, so we relax it to a similar level as used for Linux targets.
|
| |
|
|
|
|
| |
Invoking qemu with the nowait option produces a warning that the
short-form boolean options are deprecated and that wait=off is
preferred.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
QEMU occasionally sends events in the same stream used for QMP commands
so from time time the received packet is not a QMP reponse but a QMP event
which breaks the parser. For example, events are send when a machine state
changed.
This adds basic support for event. For now we skip them and wait until
the expected QMP command response arrives.
Signed-off-by: Alexey Kardashevskiy <aik@linux.ibm.com>
|