qemu/hw
aliguori 492c30af25 Make DMA bottom-half driven (v2)
The current DMA routines are driven by a call in main_loop_wait() after every
select.

This patch converts the DMA code to be driven by a constantly rescheduled
bottom half.  The advantage of using a scheduled bottom half is that we can
stop scheduling the bottom half when there no DMA channels are runnable.  This
means we can potentially detect this case and sleep longer in the main loop.

The only two architectures implementing DMA_run() are cris and i386.  For cris,
I converted it to a simple repeating bottom half.  I've only compile tested
this as cris does not seem to work on a 64-bit host.  It should be functionally
identical to the previous implementation so I expect it to work.

For x86, I've made sure to only fire the DMA bottom half if there is a DMA
channel that is runnable.  The effect of this is that unless you're using sb16
or a floppy disk, the DMA bottom half never fires.

You probably should test this malc.  My own benchmarks actually show slight
improvement by it's possible the change in timing could affect your demos.

Since v1, I've changed the code to use a BH instead of a timer.  cris at least
seems to depend on faster than 10ms polling.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>



git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5573 c046a42c-6fe2-441c-8c8c-71466251a162
2008-10-31 17:25:56 +00:00
..
ac97.c Add calls to pci_device_save/load 2008-06-21 17:14:50 +00:00
acpi.c x86: Fix powerdown for non-ACPI case 2008-09-02 00:09:25 +00:00
adb.c
adlib.c
ads7846.c Remove duplicate device index calculations. 2008-07-01 21:31:54 +00:00
alpha_palcode.c [PATCH] alpha: fix linux syscall convention 2008-09-17 22:04:29 +00:00
an5206.c Make DMA bottom-half driven (v2) 2008-10-31 17:25:56 +00:00
apb_pci.c Wrap long lines 2008-05-12 16:13:33 +00:00
apic.c hw/apic.c: use functions from host-utils.h 2008-10-12 20:16:03 +00:00
arm_boot.c
arm_gic.c Save/restore for stellaris boards. 2008-07-02 16:48:32 +00:00
arm_pic.c
arm_sysctl.c
arm_timer.c Save/restore for stellaris boards. 2008-07-02 16:48:32 +00:00
arm-misc.h Fix warnings that would be caused by ld flag --warn-common 2008-09-17 19:04:14 +00:00
armv7m_nvic.c Fix warnings that would be caused by ld flag --warn-common 2008-09-17 19:04:14 +00:00
armv7m.c
audiodev.h ISA version of CS4231A 2008-06-13 10:48:22 +00:00
baum.c
baum.h
blizzard_template.h Fix update region size in EPSON blizzard. 2008-04-22 02:52:38 +00:00
blizzard.c Add qemu_realloc(), by Gerd Hoffmann. 2008-08-06 08:37:17 +00:00
boards.h machine struct - specify max_cpus at the per machine level (Jes Sorensen) 2008-10-07 20:39:39 +00:00
bt-hci-csr.c Emulate a serial bluetooth HCI with H4+ extensions and attach to n8x0's UART. 2008-09-28 23:34:13 +00:00
bt-hci.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
bt-hid.c Bluetooth HIDP emulation on top of usb-hid.c and L2CAP and SDP. 2008-09-29 00:25:17 +00:00
bt-l2cap.c Add L2CAP logic and a virtual SDP server for use in emulated devices. 2008-09-29 00:14:22 +00:00
bt-sdp.c Fix a bad memcpy length (Bruce Rogers). 2008-10-25 00:10:20 +00:00
bt.c Add a "null" bluetooth HCI and a header file for bluetooth. 2008-09-28 23:19:47 +00:00
bt.h Use VHCI to allow the host os to participate in a qemu bluetooth "vlan". 2008-09-29 00:31:41 +00:00
cbus.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
cdrom.c
cirrus_vga_rop2.h
cirrus_vga_rop.h CVE-2007-1320 - Cirrus LGD-54XX "bitblt" heap overflow 2008-05-05 21:26:31 +00:00
cirrus_vga.c Optional "precise" VGA retrace support 2008-09-28 00:42:12 +00:00
cs4231.c Wrap long lines 2008-05-12 16:13:33 +00:00
cs4231a.c Disable xLaw debugging 2008-06-21 17:15:00 +00:00
cuda.c
devices.h TC6393XB system features (Dmitry Baryshkov). 2008-06-09 00:03:13 +00:00
dma.c Make DMA bottom-half driven (v2) 2008-10-31 17:25:56 +00:00
ds1225y.c
dummy_m68k.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
e1000_hw.h
e1000.c Resurrect the safe part of r5274 2008-10-02 19:14:17 +00:00
ecc.c
eccmemctl.c Fix buffer overruns (reported by Julian Seward) 2008-06-19 17:38:15 +00:00
eepro100.c Various NICs: Fix suspend/resume of multiple instances, by Jan Kiszka. 2008-07-18 18:02:34 +00:00
eeprom93xx.c
eeprom93xx.h
es1370.c Add calls to pci_device_save/load 2008-06-21 17:14:50 +00:00
esp.c Resurrect the safe part of r5274 2008-10-02 19:14:17 +00:00
etraxfs_dma.c Make DMA bottom-half driven (v2) 2008-10-31 17:25:56 +00:00
etraxfs_dma.h Add support for parts of the etraxfs dma controller. 2008-05-11 15:03:06 +00:00
etraxfs_eth.c ETRAX-FS: Drop DMA polling for ethernet. 2008-10-24 09:18:39 +00:00
etraxfs_pic.c ETRAX: Add NMI support to the watchdog and the interrupt controller. 2008-06-09 23:33:30 +00:00
etraxfs_ser.c Avoid refering to CRIS specific cpu-state to be able to use these blocks with other cores. 2008-06-30 11:51:12 +00:00
etraxfs_timer.c Avoid refering to CRIS specific cpu-state to be able to use these blocks with other cores. 2008-06-30 11:51:12 +00:00
etraxfs.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
etraxfs.h ETRAX: Add NMI support to the watchdog and the interrupt controller. 2008-06-09 23:33:30 +00:00
fdc.c FDC: Fix data transfer len (Hervé Poussineau) 2008-05-01 19:05:12 +00:00
fdc.h
firmware_abi.h Fix some compiler signed/unsigned char warnings 2008-06-23 17:52:43 +00:00
flash.h Fill in WLAN and BT platform data in CAL area as expected by Maemo. 2008-07-29 14:19:16 +00:00
fmopl.c
fmopl.h
fw_cfg.c Move nographic export to sysemu.h 2008-10-04 07:22:29 +00:00
fw_cfg.h Add common keys to firmware configuration 2008-09-18 18:33:18 +00:00
g364fb_template.h Fix g364fb video emulation 2008-08-17 01:44:53 +00:00
g364fb.c Fix g364fb video emulation 2008-08-17 01:44:53 +00:00
grackle_pci.c
gt64xxx.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
gumstix.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
gus.c Avoid signedness warnings 2008-07-05 13:40:58 +00:00
gusemu_hal.c
gusemu_mixer.c Fix some signedness issues caught by gcc 4.3 2008-06-08 01:42:47 +00:00
gusemu.h Fix some signedness issues caught by gcc 4.3 2008-06-08 01:42:47 +00:00
gustate.h
heathrow_pic.c
hw.h Live migration for Win32 (Hervé Poussineau) 2008-10-24 21:55:17 +00:00
i2c.c Fix load width for slave address in i2c_bus_load (Chris Lalancette). 2008-07-29 13:57:48 +00:00
i2c.h Fix i2c save/restore. 2008-07-01 23:16:53 +00:00
i8254.c
i8259.c Special Mask Mode for i8259 PIC (Sebastian Reichelt). 2008-07-19 09:18:48 +00:00
ide.c Fix IDE DIAGNOSE for packet devices (Vincent Sanders) 2008-10-09 14:19:34 +00:00
integratorcp.c Make DMA bottom-half driven (v2) 2008-10-31 17:25:56 +00:00
iommu.c Fix DMA length bug seen with NetBSD (Cliff Wright) 2008-07-01 19:28:23 +00:00
irq.c
irq.h
isa_mmio.c
isa.h Make DMA bottom-half driven (v2) 2008-10-31 17:25:56 +00:00
jazz_led.c Implement resolution switching in common console code. 2008-07-01 16:24:38 +00:00
lm832x.c Remove duplicate device index calculations. 2008-07-01 21:31:54 +00:00
lsi53c895a.c Add comment to windows SCSI hack. 2008-09-22 16:30:29 +00:00
m48t59.c
mac_dbdma.c
mac_nvram.c
macio.c
mainstone.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
mainstone.h
max111x.c Remove duplicate device index calculations. 2008-07-01 21:31:54 +00:00
max7310.c Remove duplicate device index calculations. 2008-07-01 21:31:54 +00:00
mc146818rtc.c
mcf5206.c
mcf5208.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
mcf_fec.c
mcf_intc.c
mcf_uart.c
mcf.h
mips_int.c
mips_jazz.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
mips_malta.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
mips_mipssim.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
mips_r4k.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
mips_timer.c MIPS: remove empty cpu_mips_irqctrl_init() 2008-09-14 16:38:57 +00:00
mips.h MIPS: remove empty cpu_mips_irqctrl_init() 2008-09-14 16:38:57 +00:00
mipsnet.c
mpcore.c
mst_fpga.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
musicpal.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
nand.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
ne2000.c Various NICs: Fix suspend/resume of multiple instances, by Jan Kiszka. 2008-07-18 18:02:34 +00:00
nseries.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
nvram.h Suppress gcc 4.x -Wpointer-sign (included in -Wall) warnings 2008-09-20 08:07:15 +00:00
omap1.c Use a QEMUBH when an OMAP timer must expire immediately. 2008-09-20 01:32:07 +00:00
omap2.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
omap_clk.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
omap_dma.c Fix a bad comparison, spotted by Paul Brook. 2008-07-22 01:57:42 +00:00
omap_dss.c array overflow in hw/stellaris.c and hw/omap_dss.c 2008-08-22 08:57:19 +00:00
omap_i2c.c Omap DPLL & APLL locking logic. 2008-07-21 19:52:54 +00:00
omap_lcd_template.h
omap_lcdc.c Implement resolution switching in common console code. 2008-07-01 16:24:38 +00:00
omap_mmc.c Collapse omap peripherals on L4 bus into one io entry (temporarily). 2008-05-18 12:14:41 +00:00
omap.h Allow attaching devices to OMAP UARTs. 2008-09-20 01:10:32 +00:00
onenand.c Fill in WLAN and BT platform data in CAL area as expected by Maemo. 2008-07-29 14:19:16 +00:00
openpic.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
palm.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
parallel.c Parallel Port Direction Fix 2008-08-22 08:57:09 +00:00
pc.c hw/pc: don't register the memory hole as unassigned twice 2008-10-24 13:12:42 +00:00
pc.h Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
pci_host.h
pci.c Make PCI class description tables const 2008-10-02 18:33:50 +00:00
pci.h
pckbd.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
pcmcia.h
pcnet.c Resurrect the safe part of r5274 2008-10-02 19:14:17 +00:00
pcspk.c
pflash_cfi01.c Increase write buffer size in pflash emulation (Thomas Petazzoni). 2008-10-11 09:19:57 +00:00
pflash_cfi02.c Clean up MMIO TLB handling. 2008-06-09 00:20:13 +00:00
piix_pci.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
pixel_ops.h
pl011.c Save/restore for stellaris boards. 2008-07-02 16:48:32 +00:00
pl022.c Save/restore for stellaris boards. 2008-07-02 16:48:32 +00:00
pl031.c
pl050.c
pl061.c Save/restore for stellaris boards. 2008-07-02 16:48:32 +00:00
pl080.c Suppress gcc 4.x -Wpointer-sign (included in -Wall) warnings 2008-09-20 08:07:15 +00:00
pl110_template.h
pl110.c Implement resolution switching in common console code. 2008-07-01 16:24:38 +00:00
pl181.c
pl190.c Remove bogus DisplayState member. 2008-05-25 10:10:12 +00:00
ppc4xx_devs.c Use qemu-log.h 2008-10-04 07:20:07 +00:00
ppc4xx.h Suppress gcc 4.x -Wpointer-sign (included in -Wall) warnings 2008-09-20 08:07:15 +00:00
ppc405_boards.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
ppc405_uc.c Use qemu-log.h 2008-10-04 07:20:07 +00:00
ppc405.h
ppc_chrp.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
ppc_mac.h
ppc_oldworld.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
ppc_prep.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
ppc.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
ppc.h Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
prep_pci.c
primecell.h
ps2.c
ps2.h
ptimer.c Resurrect the safe part of r5274 2008-10-02 19:14:17 +00:00
pxa2xx_dma.c Suppress gcc 4.x -Wpointer-sign (included in -Wall) warnings 2008-09-20 08:07:15 +00:00
pxa2xx_gpio.c
pxa2xx_keypad.c
pxa2xx_lcd.c Implement resolution switching in common console code. 2008-07-01 16:24:38 +00:00
pxa2xx_mmci.c
pxa2xx_pcmcia.c
pxa2xx_pic.c
pxa2xx_template.h
pxa2xx_timer.c Resurrect the safe part of r5274 2008-10-02 19:14:17 +00:00
pxa2xx.c Resurrect the safe part of r5274 2008-10-02 19:14:17 +00:00
pxa.h
r2d.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
rc4030.c
realview_gic.c
realview.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
rtl8139.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
sb16.c
sbi.c
scsi-disk.c Correct SCSI error reporting (Laurent Vivier) 2008-10-11 09:33:03 +00:00
scsi-disk.h
scsi-generic.c scsi-generic: correct error management 2008-10-17 08:08:56 +00:00
scsi.h
sd.c Enable SD card on creation. 2008-06-02 00:55:08 +00:00
sd.h
serial.c Add a comment about masking of CTI interrupt in 16550A UART. 2008-09-20 01:15:04 +00:00
sh7750_regnames.c
sh7750_regnames.h
sh7750_regs.h
sh7750.c sh4: CPU versioning. 2008-09-02 16:18:28 +00:00
sh_intc.c
sh_intc.h
sh_serial.c SH4: Serial controller improvement 2008-09-15 07:05:18 +00:00
sh_timer.c
sh.h Fix warnings that would be caused by gcc flag -Wwrite-strings 2008-09-14 06:45:34 +00:00
sharpsl.h Provide basic emulation for Sharp SL-6000 PDA (Tosa), Dmitry Baryshkov. 2008-06-02 01:33:11 +00:00
shix.c Make DMA bottom-half driven (v2) 2008-10-31 17:25:56 +00:00
slavio_intctl.c Wrap long lines 2008-05-12 16:13:33 +00:00
slavio_misc.c Fix compiler warnings 2008-05-10 10:12:00 +00:00
slavio_serial.c Fix NetBSD keyboard problem 2008-07-02 15:17:21 +00:00
slavio_timer.c Wrap long lines 2008-05-12 16:13:33 +00:00
smbus_eeprom.c Fix smbus_eeprom.c compile with DEBUG (spotted by Duilio Protti). 2008-06-02 01:48:27 +00:00
smbus.c
smbus.h
smc91c111.c
soc_dma.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
soc_dma.h Handle on-chip DMA controllers in one place, convert OMAP DMA to use it. 2008-07-21 20:40:22 +00:00
sparc32_dma.c
sparc32_dma.h
spitz.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
ssd0303.c Eliminate spurous screen updates. 2008-07-07 23:01:25 +00:00
ssd0323.c Eliminate spurous screen updates. 2008-07-07 23:01:25 +00:00
ssi-sd.c Save/restore for stellaris boards. 2008-07-02 16:48:32 +00:00
stellaris_enet.c Save/restore for stellaris boards. 2008-07-02 16:48:32 +00:00
stellaris_input.c Save/restore for stellaris boards. 2008-07-02 16:48:32 +00:00
stellaris.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
sun4c_intctl.c Wrap long lines 2008-05-12 16:13:33 +00:00
sun4m.c Make DMA bottom-half driven (v2) 2008-10-31 17:25:56 +00:00
sun4m.h Fix compiler warnings 2008-05-10 10:12:00 +00:00
sun4u.c Make DMA bottom-half driven (v2) 2008-10-31 17:25:56 +00:00
tc6393xb.c Add proper file header. 2008-06-09 14:31:18 +00:00
tc58128.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
tcx.c Resurrect the safe part of r5274 2008-10-02 19:14:17 +00:00
tmp105.c Resurrect the safe part of r5274 2008-10-02 19:14:17 +00:00
tosa.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
tsc210x.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
tsc2005.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
tusb6010.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
twl92230.c Fix some warnings that would be generated by gcc -Wmissing-prototypes 2008-08-17 20:26:25 +00:00
unin_pci.c
usb-bt.c Emulate a USB bluetooth dongle (or HCI Transport layer). 2008-09-29 00:40:44 +00:00
usb-hid.c Bluetooth HIDP emulation on top of usb-hid.c and L2CAP and SDP. 2008-09-29 00:25:17 +00:00
usb-hub.c
usb-msd.c Add image format option for USB mass-storage devices 2008-08-21 22:24:32 +00:00
usb-musb.c Inventra MUSB-HDRC host-mode USB. 2008-04-22 03:15:10 +00:00
usb-net.c Suppress gcc 4.x -Wpointer-sign (included in -Wall) warnings 2008-09-20 08:07:15 +00:00
usb-ohci.c Fix warnings that would be caused by gcc flag -Wwrite-strings 2008-09-14 06:45:34 +00:00
usb-serial.c [PATCH] usb-serial: Fix data corruption with usb serial emulation 2008-09-17 22:04:21 +00:00
usb-uhci.c uhci: Change default transaction lifetime to 32 frames (Max Krasnyansky) 2008-09-11 19:42:00 +00:00
usb-wacom.c
usb.c usb: generic packet handler cleanup and documentation (Max Krasnyansky) 2008-08-21 19:29:38 +00:00
usb.h Emulate a USB bluetooth dongle (or HCI Transport layer). 2008-09-29 00:40:44 +00:00
versatile_pci.c
versatilepb.c Set default max_cpus to one. 2008-10-28 10:59:59 +00:00
vga_int.h Optional "precise" VGA retrace support 2008-09-28 00:42:12 +00:00
vga_template.h
vga.c Fix some debugging mistakes/leftovers 2008-10-11 17:37:25 +00:00
vmmouse.c
vmport.c Silence vmport unless DEBUG is enabled. 2008-08-19 19:13:06 +00:00
vmware_vga.c Don't use ds->dpy_copy directly from hw/ (Jan Niehusmann). 2008-09-24 02:21:24 +00:00
wm8750.c Remove duplicate device index calculations. 2008-07-01 21:31:54 +00:00
zaurus.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00