diff options
Diffstat (limited to 'results/classifier/zero-shot/118/performance/1853123')
| -rw-r--r-- | results/classifier/zero-shot/118/performance/1853123 | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/results/classifier/zero-shot/118/performance/1853123 b/results/classifier/zero-shot/118/performance/1853123 new file mode 100644 index 00000000..19b35142 --- /dev/null +++ b/results/classifier/zero-shot/118/performance/1853123 @@ -0,0 +1,79 @@ +performance: 0.931 +KVM: 0.893 +device: 0.877 +peripherals: 0.842 +user-level: 0.819 +network: 0.813 +graphic: 0.785 +architecture: 0.774 +files: 0.664 +semantic: 0.654 +hypervisor: 0.640 +debug: 0.632 +PID: 0.605 +mistranslation: 0.555 +TCG: 0.500 +permissions: 0.467 +virtual: 0.454 +kernel: 0.429 +ppc: 0.413 +x86: 0.402 +boot: 0.388 +socket: 0.364 +vnc: 0.364 +register: 0.345 +risc-v: 0.338 +i386: 0.273 +VMM: 0.228 +assembly: 0.132 +arm: 0.104 + +Memory synchronization error between kvm and target, e1000(dpdk) + +Hi folks. + +I use linux with dpdk drivers on the target system, and e1000 emulation device with tap interface for host. I use kvm for accelerate. +Version qemu 4.0.94 and master (Nov 12 10:14:33 2019) +Version dpdk stable-17.11.4 +Version linux host 4.15.0-66-generic (ubuntu 18.04) + +I type command "ping <target ip> -f" and wait about 1-2 minutes. Network subsystem freezes. + +For receive the eth pack from host system (tap interface) to host system the e1000 using ring buffer. + +The e1000 write body of eth pack, set E1000_RXD_STAT_DD flag and move RDH (Ring Device Head). +(file hw/net/e1000.c function e1000_receive_iov() ) + +The dpdk driver is reading from E1000_RXD_STAT_DD flags (ignoring RDH), if flag is set: read buffer, unset flag E1000_RXD_STAT_DD and move RDT (Ring Device Tail). +(source drivers/net/e1000/em_rxtx.c function eth_em_recv_scattered_pkts() ) + +I see what the driver unet E1000_RXD_STAT_DD (rxdp->status = 0; ), but sometimes rxdp->status remains equal to 7. On the next cycle, this this buffer is read, RDT moved to far. RDH becomes equal RDT and network is freezes. + +If I insert some delay after unset E1000_RXD_STAT_DD, and repeatedly unset E1000_RXD_STAT_DD (if rxdp->status == 7 ), then all work fine. +If check E1000_RXD_STAT_DD without delay, status rxdp->status always valid. + +This only appears on kvm. If I use tcg all works fine. + +I trying set watchpoint for memory on the qemu (for tcg), and see, that for one package cycle of set/unse STAT_DD repeated once. + +I trying set watchpoint for memory on the qemu (for kvm), and see, that rxdp->status changed to 0(unset) only once, but is changes immediately before set flag. + + +Please help me with advice on how to catch and fix this error. +Theoretically, it would help me to trace the memory access when writing to E1000_RXD_STAT_DD, RHD and RDT, both from the target and the host system. But I have no idea how this can be done. + +The QEMU project is currently considering to move its bug tracking to +another system. For this we need to know which bugs are still valid +and which could be closed already. Thus we are setting older bugs to +"Incomplete" now. + +If you still think this bug report here is valid, then please switch +the state back to "New" within the next 60 days, otherwise this report +will be marked as "Expired". Or please mark it as "Fix Released" if +the problem has been solved with a newer version of QEMU already. + +Thank you and sorry for the inconvenience. + + +[Expired for QEMU because there has been no activity for 60 days.] + |