summaryrefslogtreecommitdiffstats
path: root/results/classifier/118/peripherals/60339453
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-06-16 16:59:00 +0000
committerChristian Krinitsin <mail@krinitsin.com>2025-06-16 16:59:33 +0000
commit9aba81d8eb048db908c94a3c40c25a5fde0caee6 (patch)
treeb765e7fb5e9a3c2143c68b0414e0055adb70e785 /results/classifier/118/peripherals/60339453
parentb89a938452613061c0f1f23e710281cf5c83cb29 (diff)
downloademulator-bug-study-9aba81d8eb048db908c94a3c40c25a5fde0caee6.tar.gz
emulator-bug-study-9aba81d8eb048db908c94a3c40c25a5fde0caee6.zip
add 18th iteration of classifier
Diffstat (limited to 'results/classifier/118/peripherals/60339453')
-rw-r--r--results/classifier/118/peripherals/6033945386
1 files changed, 86 insertions, 0 deletions
diff --git a/results/classifier/118/peripherals/60339453 b/results/classifier/118/peripherals/60339453
new file mode 100644
index 00000000..7862d43c
--- /dev/null
+++ b/results/classifier/118/peripherals/60339453
@@ -0,0 +1,86 @@
+peripherals: 0.824
+kernel: 0.805
+register: 0.787
+boot: 0.782
+arm: 0.780
+performance: 0.764
+permissions: 0.750
+TCG: 0.748
+VMM: 0.712
+risc-v: 0.707
+device: 0.706
+mistranslation: 0.699
+hypervisor: 0.697
+PID: 0.685
+network: 0.682
+vnc: 0.680
+debug: 0.672
+graphic: 0.671
+KVM: 0.669
+user-level: 0.663
+semantic: 0.662
+architecture: 0.649
+x86: 0.647
+virtual: 0.630
+files: 0.623
+ppc: 0.615
+socket: 0.607
+i386: 0.533
+assembly: 0.486
+
+[BUG] scsi: vmw_pvscsi: Boot hangs during scsi under qemu, post commit e662502b3a78
+
+Hi,
+
+Commit e662502b3a78 ("scsi: vmw_pvscsi: Set correct residual data length"),
+and its backports to stable trees, makes kernel hang during boot, when
+ran as a VM under qemu with following parameters:
+
+ -drive file=$DISKFILE,if=none,id=sda
+ -device pvscsi
+ -device scsi-hd,bus=scsi.0,drive=sda
+
+Diving deeper, commit e662502b3a78
+
+ @@ -585,7 +585,13 @@ static void pvscsi_complete_request(struct
+pvscsi_adapter *adapter,
+ case BTSTAT_SUCCESS:
+ + /*
+ + * Commands like INQUIRY may transfer less data than
+ + * requested by the initiator via bufflen. Set residual
+ + * count to make upper layer aware of the actual amount
+ + * of data returned.
+ + */
+ + scsi_set_resid(cmd, scsi_bufflen(cmd) - e->dataLen);
+
+assumes 'e->dataLen' is properly armed with actual num of bytes
+transferred; alas qemu's hw/scsi/vmw_pvscsi.c never arms the 'dataLen'
+field of the completion descriptor (kept zero).
+
+As a result, the residual count is set as the *entire* 'scsi_bufflen' of a
+good transfer, which makes upper scsi layers repeatedly ignore this
+valid transfer.
+
+Not properly arming 'dataLen' seems as an oversight in qemu, which needs
+to be fixed.
+
+However, since kernels with commit e662502b3a78 (and backports) now fail
+to boot under qemu's "-device pvscsi", a suggested workaround is to set
+the residual count *only* if 'e->dataLen' is armed, e.g:
+
+ @@ -588,7 +588,8 @@ static void pvscsi_complete_request(struct pvscsi_adapter
+*adapter,
+ * count to make upper layer aware of the actual
+amount
+ * of data returned.
+ */
+ - scsi_set_resid(cmd, scsi_bufflen(cmd) - e->dataLen);
+ + if (e->dataLen)
+ + scsi_set_resid(cmd, scsi_bufflen(cmd) -
+e->dataLen);
+
+in order to make kernels boot on old qemu binaries.
+
+Best,
+Shmulik
+