QEMU With E2K User Support
Go to file
Alex Williamson a697a334b3 virtio-net: Introduce a new bottom half packet TX
Based on a patch from Mark McLoughlin, this patch introduces a new
bottom half packet transmitter that avoids the latency imposed by
the tx_timer approach.  Rather than scheduling a timer when a TX
packet comes in, schedule a bottom half to be run from the iothread.
The bottom half handler first attempts to flush the queue with
notification disabled (this is where we could race with a guest
without txburst).  If we flush a full burst, reschedule immediately.
If we send short of a full burst, try to re-enable notification.
To avoid a race with TXs that may have occurred, we must then
flush again.  If we find some packets to send, the guest it probably
active, so we can reschedule again.

tx_timer and tx_bh are mutually exclusive, so we can re-use the
tx_waiting flag to indicate one or the other needs to be setup.
This allows us to seamlessly migrate between timer and bh TX
handling.

The bottom half handler becomes the new default and we add a new
tx= option to virtio-net-pci.  Usage:

-device virtio-net-pci,tx=timer # select timer mitigation vs "bh"

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2010-09-07 20:29:29 +03:00
audio audio/sdl: return on error 2010-08-07 20:04:24 +04:00
block block: Fix bdrv_has_zero_init 2010-08-03 15:57:22 +02:00
bsd-user rename CONFIG_QEMU_PREFIX 2010-06-10 00:09:49 +02:00
darwin-user Fix %lld or %llx printf format use 2010-05-22 08:02:12 +00:00
default-configs piix4: compile only once 2010-07-03 06:49:47 +00:00
docs Device specification for shared memory PCI device 2010-08-10 16:25:15 -05:00
fpu softfloat: add float32_exp2() 2010-07-13 18:18:23 +02:00
fsdev virtio-9p: Introduces an option to specify the security model. 2010-06-22 15:15:30 -05:00
gdb-xml
hw virtio-net: Introduce a new bottom half packet TX 2010-09-07 20:29:29 +03:00
linux-user microblaze: Fix the target version of stat64 struct 2010-08-09 10:13:33 +02:00
net tap: add APIs for vnet header length 2010-09-07 20:27:33 +03:00
pc-bios Sparc: update OpenBIOS images to r859 2010-08-26 17:57:47 +00:00
QMP QMP: Update README file 2010-08-22 17:11:06 -05:00
roms Update SeaBIOS 2010-07-13 08:55:04 -05:00
slirp Change DPRINTF() to do{}while(0) to avoid compiler warning 2010-09-04 09:45:54 +00:00
sysconfigs/target
target-alpha remove exec-all.h inclusion from cpu.h 2010-07-03 09:48:24 +03:00
target-arm remove exec-all.h inclusion from cpu.h 2010-07-03 09:48:24 +03:00
target-cris cris: Avoid debug clobbering for both I & D MMU state. 2010-07-05 11:39:04 +02:00
target-i386 QemuOpts: make most qemu_*_opts static 2010-08-22 17:11:06 -05:00
target-m68k remove exec-all.h inclusion from cpu.h 2010-07-03 09:48:24 +03:00
target-microblaze microblaze: Remove unused members from the disas context 2010-07-25 00:09:41 +02:00
target-mips mips: Add support for VInt and VEIC irq modes 2010-08-06 12:21:16 +02:00
target-ppc PPC: Add PV hypercall transport through fw_cfg 2010-08-26 18:13:38 +02:00
target-s390x remove exec-all.h inclusion from cpu.h 2010-07-03 09:48:24 +03:00
target-sh4 target-sh4: Add support for ldc & stc with sgr 2010-07-12 10:20:31 +02:00
target-sparc remove exec-all.h inclusion from cpu.h 2010-07-03 09:48:24 +03:00
tcg TCG: Revert ppc64 tcg_out_movi32 change 2010-08-15 00:57:40 +04:00
tests cris: Correct settls1 testcase. 2010-07-29 17:15:28 +02:00
ui vnc: use bswapNN() rather than bswap_NN() 2010-09-04 10:11:32 +00:00
.gitignore add cscope.* to .gitignore 2010-07-25 17:03:49 +02:00
.gitmodules
a.out.h
acl.c
acl.h
aes.c
aes.h
aio.c block: fix aio_flush segfaults for read-only protocols (e.g. curl) 2010-05-21 11:49:18 +02:00
alpha-dis.c
alpha.ld
arch_init.c arch_init: replace tabs by spaces. 2010-08-22 16:19:00 -05:00
arch_init.h
arm-dis.c arm: remove dead assignments, spotted by clang analyzer 2010-04-25 19:31:06 +00:00
arm-semi.c GDB exit status for semihosting 2010-06-16 13:03:51 +01:00
arm.ld
async.c
balloon.c move balloon handling to balloon.c 2010-04-09 18:55:56 +02:00
balloon.h move balloon handling to balloon.c 2010-04-09 18:55:56 +02:00
block_int.h block: Change bdrv_eject() not to drop the image 2010-08-03 15:57:22 +02:00
block-migration.c block migration: replace tabs by spaces. 2010-08-03 15:57:22 +02:00
block-migration.h
block.c block: Change bdrv_eject() not to drop the image 2010-08-03 15:57:22 +02:00
block.h Fix -snapshot deleting images on disk change 2010-07-26 13:39:40 +02:00
blockdev.c QemuOpts: make most qemu_*_opts static 2010-08-22 17:11:06 -05:00
blockdev.h Rearrange block headers 2010-08-24 15:22:24 +00:00
bswap.h Fix leul_to_cpu on big endian hosts 2010-05-31 20:55:23 +02:00
bt-host.c bt: remove dead assignments, spotted by clang analyzer 2010-04-25 18:20:28 +00:00
bt-host.h
bt-vhci.c
buffered_file.c set proper migration status on ->write error (v5) 2010-08-19 08:44:37 -05:00
buffered_file.h
cache-utils.c
cache-utils.h
Changelog
check-qdict.c check-qdict: Introduce test for the new iteration API 2010-07-01 14:27:13 -03:00
check-qfloat.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
check-qint.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
check-qjson.c Merge remote branch 'qmp/for-anthony' into staging 2010-06-14 09:39:01 -05:00
check-qlist.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
check-qstring.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
cmd.c qemu-io: check registered fds in command_loop() 2010-06-22 14:38:02 +02:00
cmd.h
CODING_STYLE
config.h
configure Fix "make install" with a cross toolchain 2010-08-26 18:18:26 +02:00
console.c Add support for depth 15 to qemu_default_pixelformat() 2010-06-01 12:53:36 -05:00
console.h un-register kbd driver in case of USB kbd unplug. 2010-06-14 15:46:28 -05:00
COPYING
COPYING.LIB
cpu-all.h linux-user: fix build on hosts not using guest base 2010-07-30 21:09:10 +02:00
cpu-common.h Add qemu_ram_alloc_from_ptr function 2010-08-10 16:25:15 -05:00
cpu-defs.h move stop/stopped CPU_COMMON fields after area zeroed by reset 2010-05-11 14:02:22 -03:00
cpu-exec.c mips: Add support for VInt and VEIC irq modes 2010-08-06 12:21:16 +02:00
cpus.c Rework debug exception processing for gdb use 2010-07-22 05:52:09 +02:00
cpus.h Rename tcg_cpu_exec and tcg_has_work 2010-07-22 05:52:09 +02:00
create_config configure: Fix evaluation of config-host.mak in create_config 2010-06-13 12:50:30 +02:00
cris-dis.c
cursor_hidden.xpm cursor: add cursor functions. 2010-05-24 15:18:23 -05:00
cursor_left_ptr.xpm cursor: add cursor functions. 2010-05-24 15:18:23 -05:00
cursor.c cursor: add cursor functions. 2010-05-24 15:18:23 -05:00
cutils.c
def-helper.h tcg: Optionally sign-extend 32-bit arguments for 64-bit hosts. 2010-06-16 11:29:11 +02:00
device_tree.c
device_tree.h
dis-asm.h
disas.c
disas.h
dma-helpers.c
dma.h
dyngen-exec.h Move stdbool.h 2010-06-13 19:00:50 +01:00
elf.h Add more DT_* and AT_* constants to qemu's copy of elf.h. 2010-07-29 08:32:27 +02:00
envlist.c
envlist.h
exec-all.h remove dead code 2010-07-24 14:42:29 +02:00
exec.c Fix segfault in mmio subpage handling code. 2010-08-28 08:47:23 +00:00
feature_to_c.sh
gdbstub.c remove exec-all.h inclusion from cpu.h 2010-07-03 09:48:24 +03:00
gdbstub.h GDB exit status for semihosting 2010-06-16 13:03:51 +01:00
gen-icount.h
host-utils.c
host-utils.h
hpet.h
hppa-dis.c
hppa.ld
hxtool hxtool: Fix line number reporting on SQMP/EQMP errors 2010-06-11 16:35:46 -03:00
i386-dis.c i386-dis: Fix unused return value, spotted by clang 2010-04-18 14:27:44 +00:00
i386.ld
ia64-dis.c Fix %lld or %llx printf format use 2010-05-22 08:02:12 +00:00
ia64.ld
input.c un-register kbd driver in case of USB kbd unplug. 2010-06-14 15:46:28 -05:00
ioport-user.c
ioport.c
ioport.h
iov.c iov: Move from hw/ to topdir 2010-05-10 11:36:03 -05:00
iov.h iov: Move from hw/ to topdir 2010-05-10 11:36:03 -05:00
json-lexer.c remove unnecessary lookaheads 2010-06-11 15:25:14 -03:00
json-lexer.h
json-parser.c Merge remote branch 'qmp/for-anthony' into staging 2010-06-14 09:39:01 -05:00
json-parser.h
json-streamer.c json-streamer: Don't use qdict_put_obj() 2010-06-11 15:25:14 -03:00
json-streamer.h
kvm-all.c Merge remote branch 'qemu-kvm/uq/master' into staging 2010-08-23 15:10:12 -05:00
kvm-stub.c Add kvm_set_ioeventfd_mmio_long definition for non-KVM systems 2010-08-15 09:44:47 +00:00
kvm.h Add function to assign ioeventfd to MMIO. 2010-08-10 16:25:15 -05:00
libfdt_env.h
LICENSE
linux-aio.c linux-aio: Fix typo in read() EINTR check 2010-04-23 16:21:57 +02:00
m68k-dis.c m68k-dis: fix unused return value, spotted by clang 2010-04-23 19:22:17 +00:00
m68k-semi.c GDB exit status for semihosting 2010-06-16 13:03:51 +01:00
m68k.ld
MAINTAINERS
Makefile ui: move all ui components in ui/ 2010-07-26 17:35:54 -05:00
Makefile.dis
Makefile.hw Clean libhw subdirs as well 2010-05-22 08:24:49 +00:00
Makefile.objs vnc: threaded VNC server 2010-07-26 17:36:14 -05:00
Makefile.target Fix "make install" with a cross toolchain 2010-08-26 18:18:26 +02:00
Makefile.user
microblaze-dis.c microblaze: fix custom fprintf 2010-04-27 18:56:11 +00:00
migration-exec.c Factorize common migration incoming code 2010-06-22 15:15:51 -05:00
migration-fd.c Factorize common migration incoming code 2010-06-22 15:15:51 -05:00
migration-tcp.c Close socket file descriptor when qemu_accept fails 2010-07-25 17:03:51 +02:00
migration-unix.c Factorize common migration incoming code 2010-06-22 15:15:51 -05:00
migration.c set proper migration status on ->write error (v5) 2010-08-19 08:44:37 -05:00
migration.h Factorize common migration incoming code 2010-06-22 15:15:51 -05:00
mips-dis.c mips-dis: add support for Godson integer instructions 2010-06-29 23:26:34 +02:00
mips.ld
module.c
module.h
monitor.c QMP/monitor: update do_info_version() to output broken down version string 2010-08-22 17:11:06 -05:00
monitor.h monitor: Allow to exclude commands from QMP 2010-07-01 14:27:14 -03:00
nbd.c Remove unused argument for nbd_client() 2010-09-04 09:45:50 +00:00
nbd.h Remove unused argument for nbd_client() 2010-09-04 09:45:50 +00:00
net-checksum.c
net.c QemuOpts: make most qemu_*_opts static 2010-08-22 17:11:06 -05:00
net.h Move stdbool.h 2010-06-13 19:00:50 +01:00
notify.c
notify.h
os-posix.c Use ARRAY_SIZE macro 2010-08-20 21:03:24 +00:00
os-win32.c win32: Add missing function setenv 2010-08-15 09:45:28 +00:00
osdep.c win32: Add missing function ffs 2010-06-27 19:25:25 +03:00
osdep.h win32: Add missing function setenv 2010-08-15 09:45:28 +00:00
path.c
pci-ids.txt
poison.h move targphys.h and hw/poison.h inclusion to cpu-common.h 2010-04-09 18:55:55 +02:00
posix-aio-compat.c posix-aio-compat: Expand tabs that have crept in 2010-05-28 13:14:26 +02:00
ppc64.ld
ppc-dis.c
ppc.ld
qbool.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qbool.h
qdict-test-data.txt
qdict.c QDict: Introduce qdict_get_try_bool() 2010-07-01 14:27:13 -03:00
qdict.h QDict: Introduce qdict_get_try_bool() 2010-07-01 14:27:13 -03:00
qemu_socket.h move socket_init to qemu-sockets.c 2010-04-09 18:55:54 +02:00
qemu-aio.h
qemu-barrier.h Introduce proper compiler barrier 2010-07-22 05:52:08 +02:00
qemu-binfmt-conf.sh
qemu-char.c QemuOpts: make most qemu_*_opts static 2010-08-22 17:11:06 -05:00
qemu-char.h RESEND: Inter-VM shared memory PCI device 2010-08-10 16:25:16 -05:00
qemu-common.h Rearrange block headers 2010-08-24 15:22:24 +00:00
qemu-config.c Fix repeated typo: was "end if list" instead of "end of list" 2010-09-04 09:45:52 +00:00
qemu-config.h QemuOpts: make most qemu_*_opts static 2010-08-22 17:11:06 -05:00
qemu-doc.texi RESEND: Inter-VM shared memory PCI device 2010-08-10 16:25:16 -05:00
qemu-error.c
qemu-error.h
qemu-img-cmds.hx qemu-img: Fix copy+paste bug in documentation 2010-07-13 17:48:17 +02:00
qemu-img.c qemu-img check: Distinguish different kinds of errors 2010-07-06 17:05:48 +02:00
qemu-img.texi qemu-img: Add 'resize' command to grow/shrink disk images 2010-05-03 10:07:32 +02:00
qemu-io.c fix variable type in qemu-io.c 2010-07-30 23:05:51 +02:00
qemu-lock.h
qemu-log.h
qemu-malloc.c cow: stop using mmap 2010-06-15 09:41:59 +02:00
qemu-monitor.hx QMP doc: Add 'Stability Considerations' section 2010-08-22 17:11:06 -05:00
qemu-nbd.c Respect return value from nbd_client() 2010-09-04 09:45:51 +00:00
qemu-nbd.texi
qemu-objects.h Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qemu-option.c error: New qemu_opts_loc_restore() 2010-07-06 17:05:49 +02:00
qemu-option.h error: New qemu_opts_loc_restore() 2010-07-06 17:05:49 +02:00
qemu-options.h Introduce OS specific cmdline argument handling and move SMB arg to os-posix.c 2010-06-12 08:49:15 +03:00
qemu-options.hx compile -fsdev and -virtfs cmd line options unconditionally. 2010-08-22 17:11:06 -05:00
qemu-os-posix.h Move set_proc_name() to OS specific files. 2010-06-12 08:49:15 +03:00
qemu-os-win32.h win32: Add define for missing EPROTONOSUPPORT 2010-06-27 19:09:56 +03:00
qemu-queue.h
qemu-sockets.c qemu-sockets: avoid strlen of NULL pointer 2010-05-18 19:49:16 +02:00
qemu-tech.texi
qemu-thread.c qemu-thread: add qemu_mutex/cond_destroy and qemu_mutex_exit 2010-07-26 17:36:14 -05:00
qemu-thread.h qemu-thread: add qemu_mutex/cond_destroy and qemu_mutex_exit 2010-07-26 17:36:14 -05:00
qemu-timer.c savevm: Add DeviceState param 2010-07-06 10:36:28 -05:00
qemu-timer.h Implement cpu_get_real_ticks for Alpha. 2010-04-27 05:50:42 +02:00
qemu-tool.c
qemu-x509.h
qemu.sasl
qerror.c migration: Accept 'cont' only after successful incoming migration 2010-07-30 23:14:08 +02:00
qerror.h migration: Accept 'cont' only after successful incoming migration 2010-07-30 23:14:08 +02:00
qfloat.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qfloat.h
qint.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qint.h Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qjson.c qjson: Handle "\f" 2010-06-11 15:25:14 -03:00
qjson.h
qlist.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qlist.h Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qobject.h Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qstring.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qstring.h Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
readline.c
readline.h
README
rules.mak Put dependency files in proper subdir 2010-05-22 08:31:20 +00:00
rwhandler.c
rwhandler.h
s390-dis.c s390: Disassemble some general-instruction-extension insns. 2010-06-10 00:46:41 +02:00
s390.ld
savevm.c Support marking a device as non-migratable 2010-08-10 16:25:15 -05:00
sh4-dis.c sh4: Fix compiler warning (fprintf format string) 2010-04-14 01:04:02 +02:00
softmmu_defs.h
softmmu_exec.h sparc64: handle asi referencing nucleus and secondary MMU contexts 2010-05-06 23:14:26 +03:00
softmmu_header.h sparc64: fix 32bit load sign extension 2010-06-02 20:04:52 +00:00
softmmu_template.h Split TLB addend and target_phys_addr_t 2010-04-05 00:28:53 +01:00
softmmu-semi.h
sparc64.ld
sparc-dis.c sparc64: more ultrasparc asi extensions for disassembler 2010-05-06 20:13:02 +00:00
sparc.ld
sysemu.h migration: Accept 'cont' only after successful incoming migration 2010-07-30 23:14:08 +02:00
targphys.h Split TLB addend and target_phys_addr_t 2010-04-05 00:28:53 +01:00
tcg-runtime.c
texi2pod.pl
thunk.c
thunk.h
TODO
translate-all.c tcg: get rid of copy_size in TCGOpDef 2010-06-09 16:10:50 +02:00
uboot_image.h
usb-bsd.c
usb-linux.c Return usb device to host on exit 2010-06-30 22:51:17 +02:00
usb-stub.c
VERSION Update version for 0.13.x 2010-07-28 07:58:15 -05:00
vgafont.h
vl.c virtio-9p: Make sure -virtfs option works correctly 2010-09-04 09:52:53 +00:00
x86_64.ld

Read the documentation in qemu-doc.html.

Fabrice Bellard.