qemu/pci: make default_write_config use mask table
Change much of hw/pci to use symbolic constants and a table-drivendesign: add a mask table with writable bits set and readonly bits unset.Detect change by comparing original and new registers.
This makes it easy to support capabilities where read-only/writeable...
qemu/pci: helper routines for pci access
Add inline routines for convenient access to pci deviceswith correct (little) endianness. Will be used by MSI-X support.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
qemu/pci: add routines to manage PCI capabilities
Add routines to manage PCI capability list. First user will be MSI-X.
qemu/pci: check constant registers on load
Add "cmask" table of constant register masks: if a bit is not writeableand is set in cmask table, this bit is checked on load. An attempt toload an image that would change such a register causes load to fail....
qemu/pci: MSI-X support functions
Add functions implementing MSI-X support. First user will be virtio-pci.Note that platform must set a flag to declare MSI supported: thisis a safety measure to avoid breaking platforms which should supportMSI-X but currently lack this in the interrupt controller emulation....
add sparc64-softmmu to default configure targets list
Add sparc64 to default list of softmmu targetsSigned-off-by: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>
sparc64 follow pci_nic_init change
sun4u.c: correct pci_nic_init arguments followingcommit 5607c38820366954c38dd702e979499486057481
Signed-off-by: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>
microblaze: Support the latest mmu-kernel stat64 ABI.
Microblaze recently changed their ABI. The new is not backwards compatibleand there doesn't seem to be a way to distinguish old/new binaries.Let's support the latest ABI for now and hope someone figures out a way to...
target-ppc: permit linux-user to read PVR
Access to the PVR SPR is normally forbidden from userspace apps. TheLinux kernel, however, fixes up reads in the appropriate trap handler.To permit applications that read PVR to run on QEMU, then, we need toimplement the same handling of PVR reads....
cris: Remove unused internal flag.
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Win32: Reduce section alignment for Windows.
Maximum alignment for Win32 is 16, so don't tryto set it to 32. Otherwise the compiler complains:
exec.c:102: warning: alignment of 'code_gen_prologue'is greater than maximum object file alignment. Using 16...
net: add qemu_purge_queued_packets()
If net client sends packets asynchronously, it needs to purge its queuedpackets in cleanup() so as to prevent sent callbacks being invoked witha freed client.
Signed-off-by: Mark McLoughlin <markmc@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
net: purge queued packets in tap_cleanup()
If tap has any packets queued at host_net_remove time, it needs to purgethem in order to prevent a sent callback being invoked for it.
net: add tap_read_poll() helper
Add a helper to enable/disable the read polling on tapfd.
We need this, because we want to start write polling on the tapfd tooand enable/disable both types of polling independently.
Signed-off-by: Mark McLoughlin <markmc@redhat.com>...
net: handle EAGAIN from tapfd write()
If a write() on tapfd returns EAGAIN, return zero so that the packetgets queued (in the case of async send) and enable polling tapfd forwriting.
When tapfd becomes writable, disable write polling and flush any queued...
net: return TAPState from net_tap_init()
net_tap_fd_init() already returns TAPState, so this is a sensiblecleanup in its own right.
net: add '-net tap,sndbuf=nbytes'
2.6.30 adds a new TUNSETSNDBUF ioctl() which allows a send buffer limitfor the tap device to be specified. When this limit is reached, a tapwrite() will return EAGAIN and poll() will indicate the fd isn'twritable.
This allows people to tune their setups so as to avoid e.g. UDP packet...
net: add packet length to NetPacketSent callback
virtio-net needs this - for the same purpose that it currently uses thereturn value from qemu_sendv_packet().
virtio-net: implement async packet sending
Win32: Fix compilation with SDL.
`sdl-config --cflags` defines main = SDL_mainon some platforms. One of these platforms isWindows with mingw32.
For those platforms, the solution already developedfor APPLE is now applied.
A compiler warning (missing return value) is fixed, too....
Win: Install keymaps for Windows, too (needed for VNC).
Signed-off-by: Stefan Weil <weil@mail.berlios.de>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
vmware_vga: clean up
use NULL instead of 0 for pci_register_device() argumentfor consistency. Any other caller uses NULL.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Fix do_pci_register_device() to reject devfn already in use
Signed-off-by: Markus Armbruster <armbru@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Support addr=... in option argument of -net nic
Make net_client_init() accept addr=, put the value into structNICinfo. Use it in pci_nic_init(), and remove arguments bus anddevfn.
Don't support addr= in third argument of monitor command pci_add,because that clashes with its first argument. Admittedly unelegant....
Make first argument of monitor command pci_add work
Simply pass the PCI address through qemu_pci_hot_add_nic() topci_nic_init() and through qemu_pci_hot_add_storage() to pci_create().
Before, pci_device_hot_add() passed along the PCI bus to use, andignored any user-specified slot....
Support addr=... in option argument of -drive if=virtio
Make drive_init() accept addr=, put the value into struct DriveInfo.Use it in all the places that create virtio-blk-pci devices:pc_init1(), bamboo_init(), mpc8544ds_init().
Don't support addr= in third argument of monitor command pci_add and...
Don't register cpu reset handler for cpu with APIC.
APIC reset handler already resets cpu, no need to reset it twice.Also register cpu_reset handler directly to make it impossible toadd additional code to main_cpu_reset() by mistake.
Signed-off-by: Gleb Natapov <gleb@redhat.com>...
Fix build on Mac OS X
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Handle init/sipi in a main cpu exec loop. (v2)
This should fix compilation problem in case of CONFIG_USER_ONLY.
Currently INIT/SIPI is handled in the context of CPU that sends IPI.This patch changes this to handle them like all other events in a maincpu exec loop. When KVM will gain thread per vcpu capability it will...
Instead of writing a zero page, madvise it away
Otherwise, after migration, we end up with a much larger RSS size then weought to have.
acpi.c: make qemu_system_device_hot_add piix independent.
introruce piix4_device_hot_add() for piix4 specific codeand make qemu_system_device_hot_add() generic.
virtio-net: enable mergeable receive buffers
When virtio-net was merged in from qemu-kvm.git, the VNET_HDR relatedfeatures were dropped from the code.
However, VIRTIO_NET_F_MRG_RXBUF appears to have accidentally beendropped too. Re-instate that now.
Reported-by: Michael S. Tsirkin <mst@redhat.com>...
dot gitignore: add qemu-monitor.texi
add qemu-monitor.texi to .gitignore.
Disable _FORTIFY_SOURCE to fix Ubuntu build with -Werror
This eliminates the results unused warnings.
Make nic option rom loading less painful.
The code how it is today, is totally painful to read and keep.To begin with, the code is duplicated with the option rom loadingcode that linux_boot and vga are already using.
This patch introduces a "bootable" state in NICInfo structure,...
Add O_BINARY to open call in net_dump_init.
Fix the pcap dumps on Win32 and other systems where O_BINARY is required.
Signed-off-by: Filip Navara <filip.navara@gmail.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
virtio: make vring_desc_*() take phys addrs
Change the vring descriptor helpers to take the physicaladdress of the descriptor table rather than a virtqueue.
This is needed in order to allow these helpers to be usedwith an indirect descriptor table.
virtio: add support for indirect ring entries
Support a new feature flag for indirect ring entries. These are ringentries which point to a table of buffer descriptors.
The idea here is to increase the ring capacity by allowing a largereffective ring size whereby the ring size dictates the number of...
Add pci_bus_reset() function.
To reset internal irq handling data structures.
Signed-off-by: Gleb Natapov <gleb@redhat.com>Signed-off-by: Yaniv Kamay <ykamay@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Apply TCGV_UNUSED on variables that GCC mistakenly thinks can be useduninitialized
Restore consistent formatting of audio devices
linux-user: strace now handles guest stringscorrectly [v2]
On Tue, Jun 16, 2009 at 08:19:23PM -0500, Anthony Liguori wrote:
malc wrote: On my system the above line causes gcc to emit: In file included from /home/malc/x/rcs/git/qemu/linux-user/strace.c:12:...
malc wrote:
On my system the above line causes gcc to emit: In file included from /home/malc/x/rcs/git/qemu/linux-user/strace.c:12:...
On my system the above line causes gcc to emit:
In file included from /home/malc/x/rcs/git/qemu/linux-user/strace.c:12:...
fix qemu_alloc/qemu_free for audio subsystem
Signed-off-by: Jean-Christophe DUBOIS <jcd@tribudubois.net>
alsa: fix warning
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
xilinx-eth: Remove debug print.
Don't set IRQs on device reset and loadvm/savevm
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Call piix4_reset() on system reset.
Also zero pci_irq_levels on reset to avoid stuck irq after reset.
Based on 15a1956af94e36105494f782a752698103addf63 by Gleb Natapov.
Call piix3_reset() on system reset.
Signed-off-by: Gleb Natapov <gleb@redhat.com>Signed-off-by: Yaniv Kamay <ykamay@redhat.com>
Register usb-uhci reset function.
The device is not reset on system reset currently.Without this patch RHEL4.8 hangs after reboot if -usbdevice tableis in use.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Revert "Update irqs on reset and device load"
This reverts commit 3dcd219f09d6c1817bf9a132899e6b925f7a0914.
It is incorrect to call qemu_irq functions (or any other functions thataccess other device state) during savevm/loadvm.
Allow user to specify CPU model
Fix opening of read only raw images
Replace ELF section hack with normal table
Concentrate rest of table entries to top
Concentrate most table entries to top
Clean up GEN_HANDLER2
Clean up GEN_HANDLER
Fix vga_screen_dump_blank() PPM generation
vga_screen_dump_blank() was not generating a valid PPM file: the width of theimage made no sense (why it was multiplied by sizeof(uint32_t)?), and there wasonly one sample per pixel, instead of three.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>...
exec.c: remove unnecessary #if NB_MMU_MODES
remove unnecessary #if NB_MMU_MODES by using loop.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>Acked-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Prevent CD-ROM media eject while device is locked
Section 10.8.25 ("START/STOP UNIT Command") of SFF-8020i states thatif the device is locked we should refuse to eject if the device islocked.
ASC_MEDIA_REMOVAL_PREVENTED is the appropriate return in this case....
set migration max downtime
provide a monitor command to allow one to set the maximumdowntime he is willing to suffer during migration, in seconds."ms", "us", "ns" and "s" are accepted as modifiers.
This parameter will be used by ram_save_live() code to determine...
add non-arbitrary migration stop condition
Currently, we're entering migration's stage 3 whena treshold of 10 pages remain to be transferred in the system.
This has hurt some users. However, any proposed threshold isarbitrary by nature, and would only shift the annoyance....
pci: add define for communication class devices
Signed-off-by: Amit Shah <amit.shah@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
provide cpu_index to env mapping
There are some people interested in, given a cpu number,pick its CPUState. KVM is an example, although not yet in tree.This patch provides a way of doing that.
Signed-off-by: Glauber Costa <glommer@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Fix help message for new configure option --enable-debug.
The new option is --enable-debug, not --disable-debug.
allow CPUID vendor override
KVM-enabled QEMU will always report the vendor ID of the physical CPU it isrunning on. Allow to override this if explicitly requested on thecommand line. It will not suffice to name a CPU type (like -cpu phenom),but you have to explicitly set the vendor: -cpu phenom,vendor=AuthenticAMD...
QEMU KVM: i386: Fix the cpu reset state
As per the IA32 processor manual, the accessed bit is set to 1 in theprocessor state after reset. qemu pc cpu_reset code was missing thisaccessed bit setting.
Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>...
Remove dead code
vl.c contains some dead code that initialises a 'label' string with the nameof the char device being initialised. This is unused.
Call qemu_bh_delete at bdrv_aio_bh_cb.
Also replave qemu_bh_cancel with qemu_bh_delete in bdrv_aio_cancel_em. Otherwise the bh will live forever in the bh list.
Signed-off-by: Dor Laor <dor@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
kvm: Fix IRQ injection into full queue
User space may only inject interrupts during kvm_arch_pre_run ifready_for_interrupt_injection is set in kvm_run. But that field isupdated on exit from KVM_RUN, so we must ensure that we enter thekernel after potentially queuing an interrupt, otherwise we risk to...
lsi53c895a: Implement write access to DMA Byte Counter
Adds CASE_SET_REG24 and fixes the following errors:
lsi_scsi: error: Unhandled writeb 0x24 = 0x0lsi_scsi: error: Unhandled writeb 0x25 = 0x0
Signed-off-by: Sebastian Herbszt <herbszt@gmx.de>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
virtio blk: fix warning.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
vnc: improve numpad support for qemu console.
Reorganize qemu console emulation code. Make it look at the numlockstate and interpret numpad keys as arrow+friends (numlock off) ordigits (numlock on). While being at it also wind up the other numpadkeys....
Rearrange io_mem_init()
Move io_mem_init() downwards to avoid a forward declaration. No code change.
Signed-off-by: Avi Kivity <avi@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Rename pci_register_io_region() to pci_register_bar()
This function is used to manage a PCI BAR, so make the more genericpci_register_io_region() available to other uses.
lsi53c895a: Implement Scratch Byte Register
Fixes the following errors:
lsi_scsi: error: Unhandled writeb 0x3a = 0x0lsi_scsi: error: readb 0x3a
lsi53c895a: Implement read and write access to DMA Next Address
lsi_scsi: error: Unhandled writeb 0x28 = 0x0lsi_scsi: error: Unhandled writeb 0x29 = 0x0lsi_scsi: error: Unhandled writeb 0x2a = 0x0lsi_scsi: error: Unhandled writeb 0x2b = 0x0...
update_refcount: Write complete sectors
When updating the refcount blocks in update_refcount(), write complete sectorsinstead of updating single entries.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
readline: Remove unneeded qemu_mallocz() check
qemu_mallocz() already checks for NULL returns, readline_init() doesn'thave to do it again.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
mux-term: Localize timestamps
As we can have multiple multiplexed terminals, timestamp control andtracking should better take place per MuxDriver.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
mux-term: Fix timestamp association
So far a new timestamp was generated after a full line had beenprinted. Fix this.
kvm: Restrict configure check to Linux
There is no point in trying to find KVM on anything else than Linux, atleast for the moment.
Remove io_index argument from cpu_register_io_memory()
The parameter is always zero except when registering the three internalio regions (ROM, unassigned, notdirty). Remove the parameter to reducethe API's power, thus facilitating future change.
Signed-off-by: Avi Kivity <avi@redhat.com>...
vnc: rework VncState release workflow.
Split socket closing and releasing of VncState into two steps. Firstclose the socket and set the variable to -1 to indicate shutdown inprogress. Do the actual release in a few places where we can be sure itdoesn't cause trouble in form of use-after-free. Add some checks for a...
qcow2: Change default cluster size to 64k
Larger cluster sizes mean less metadata. This has been discussion a few times,let's do it now. This turns 64k clusters on by default for new images.
qcow2: Split out refcount handling
qcow2-refcount.c contains all functions which are related to clusterallocation and management in the image file. A large part of this is thereference counting of these clusters.
Also a header file qcow2.h is introduced which will contain the interface of...
qcow2: Split out guest cluster functions
qcow2-cluster.c contains all functions related to the management of guestclusters, i.e. what the guest sees on its virtual disk. This code is aboutmapping these guest clusters to host clusters in the image file using the...
qcow2: Split out snapshot functions
qcow2-snapshot.c contains the code related to snapshotting.
qcow2: Rename global functions
The qcow2 source is now split into several more manageable files. During theconversion quite some functions that were static before needed to be changed tobe global to make the source compile again.
We were lucky enough not to get name conflicts with these additional global...
l2_allocate: Write complete sectors
When modifying the L1 table, l2_allocate() needs to write complete sectorsinstead of single entries. The L1 table is already in memory, reading it fromdisk in the block layer to align the request is wasted performance....
alloc_cluster_link_l2: Write complete sectors
When updating the L2 tables in alloc_cluster_link_l2(), write completesectors instead of updating single entries.
qdev: Fix regression in "pci_add ... storage if=virtio, ..."
qemu_pci_hot_add_storage() runs qdev_init() twice. Broken in commit07e3af9a "Virtio-blk qdev conversion".
raw-posix: open flags use BDRV_ namespace, not posix namespace
The flags argument to raw_common_open() contain bits defined by the BDRV_O_*namespace, not the posix O_* namespace.
Adjust to use the correct constants.
raw-posix: Remove O_RDWR when attempting to open a file read-only
When we open a file, we first attempt to open it read-write, then fall backto read-only. Unfortunately we reuse the flags from the previous attempt,so both attempts try to open the file with write permissions, and fail....
Make sure to use SDL_CFLAGS everywhere we include SDL headers
RFC: fix fcntl support in linux-user - new try
Hi,
This is a new try to fix the fcntl support in linux-user. I tried toadress all comments but as the previous version is several weeks old,it's possible that I've missed some.
This patch doesn't handle linux specific fcntl flags. My plan is to get...
linux-user: initialize mmap_mutex properly
We initialize mmap_mutex in any child threads/processes, but we need tocorrectly statically initialize it for the original process.
Signed-off-by: Nathan Froyd <froydnj@codesourcery.com>Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
linux-user/syscall.c: define _ATFILE_SOURCE
Needed to make sure the xxxat() functions are available.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
linux-user: remove duplicate tswap32() from do_getsockopt()
This issue has been detected with tests/linux-tests.c:
linux-test.c:330: getsockopt
327 len = sizeof(val);328 chk_error(getsockopt(server_fd, SOL_SOCKET, SO_TYPE, &val, &len));329 if (val != SOCK_STREAM)...