sdk/emulator/qemu.git
15 years agoslirp: Factor out internal state structure
Jan Kiszka [Wed, 24 Jun 2009 12:42:31 +0000 (14:42 +0200)]
slirp: Factor out internal state structure

The essence of this patch is to stuff (almost) all global variables of
the slirp stack into the structure Slirp. In this step, we still keep
the structure as global variable, directly accessible by the whole
stack. Changes to the external interface of slirp will be applied in
the following patches.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Drop link_up checks from if_output and slirp_socket_can_recv
Jan Kiszka [Wed, 24 Jun 2009 12:42:30 +0000 (14:42 +0200)]
slirp: Drop link_up checks from if_output and slirp_socket_can_recv

link_up is true once slirp is initialized, so these check are really not
required.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Clean up timeout handling around slirp_select_fill/poll
Jan Kiszka [Wed, 24 Jun 2009 12:42:30 +0000 (14:42 +0200)]
slirp: Clean up timeout handling around slirp_select_fill/poll

Again lot of dead code. Remove it.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Drop redundant checks from slirp_output
Jan Kiszka [Wed, 24 Jun 2009 12:42:30 +0000 (14:42 +0200)]
slirp: Drop redundant checks from slirp_output

Slirp doesn't invoke slirp[_can]_output before it is initialized. The
motivation for these checks (3b7f5d479c) no longer applies. So drop
them.

Note: slirp_vc will become invalid if the slirp stack is removed during
runtime. But this is no new bug and will be fixed later.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Kill slirp_is_inited
Jan Kiszka [Wed, 24 Jun 2009 12:42:30 +0000 (14:42 +0200)]
slirp: Kill slirp_is_inited

Avoid the need for slirp_is_inited by refactoring the protected
slirp_select_* functions. This also avoids the clearing of all fd sets
on select errors.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Clean up updtime
Jan Kiszka [Wed, 24 Jun 2009 12:42:30 +0000 (14:42 +0200)]
slirp: Clean up updtime

Drop redundant typecasts in both variants and remove the pointless
round-up in the UNIX version.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Make IP packet ID consistent
Jan Kiszka [Wed, 24 Jun 2009 12:42:30 +0000 (14:42 +0200)]
slirp: Make IP packet ID consistent

Currently, ip_id is always initialized to 0 on slirp startup (despite
the broken attempt to derive it from the clock). This is good for
reproducibility. But it is not preserved across save/restore. This patch
therefore drops the dead initialization code from ip_init and introduces
ip_id to the persistent slirp state.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Factor out one-time initialization
Jan Kiszka [Wed, 24 Jun 2009 12:42:30 +0000 (14:42 +0200)]
slirp: Factor out one-time initialization

In order to prepare re-initialization and multi-instance slirp, factor
out init code that is of global scope and (at least for now) only need
to be run once.

This also fixes the potentially uninitialized use of our_addr in
get_dns_addr.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: tftp: Rework filename handling
Jan Kiszka [Wed, 24 Jun 2009 12:42:30 +0000 (14:42 +0200)]
slirp: tftp: Rework filename handling

This changes the filename handling from a static buffer in tftp_session
for the client-provided name + prefix to a dynamically allocated buffer
that keeps the combined path in one place.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: tftp: Refactor tftp_handle_rrq
Jan Kiszka [Wed, 24 Jun 2009 12:42:30 +0000 (14:42 +0200)]
slirp: tftp: Refactor tftp_handle_rrq

Specifically make the filename extraction more readable, and always
report errors back to the client.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: tftp: Clean up tftp_send_error
Jan Kiszka [Wed, 24 Jun 2009 12:42:30 +0000 (14:42 +0200)]
slirp: tftp: Clean up tftp_send_error

The return code of tftp_send_error is not used, drop it. And also make
sure to always terminate the session.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: tftp: Cleanup tftp_prefix check
Jan Kiszka [Wed, 24 Jun 2009 12:42:29 +0000 (14:42 +0200)]
slirp: tftp: Cleanup tftp_prefix check

Perform check for set prefix early (if it's not given, tftp is disabled)
and drop redundant second check.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Drop unused icmp_var.h
Jan Kiszka [Wed, 24 Jun 2009 12:42:29 +0000 (14:42 +0200)]
slirp: Drop unused icmp_var.h

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Cleanup and basic reanimation of debug code
Jan Kiszka [Wed, 24 Jun 2009 12:42:29 +0000 (14:42 +0200)]
slirp: Cleanup and basic reanimation of debug code

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Drop statistic code
Jan Kiszka [Wed, 24 Jun 2009 12:42:29 +0000 (14:42 +0200)]
slirp: Drop statistic code

As agreed on the mailing list, there is no interest in keeping the
usually disabled slirp statistics in the tree. So this patch removes
them.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Drop dead code
Jan Kiszka [Wed, 24 Jun 2009 12:42:29 +0000 (14:42 +0200)]
slirp: Drop dead code

After all its years inside the qemu tree, there is no point in keeping
the dead code paths of slirp. This patch is a first round of removing
usually commented out code parts. More cleanups need to follow (and
maybe finally a proper reindention).

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Add info usernet for dumping connection states
Jan Kiszka [Wed, 24 Jun 2009 12:42:29 +0000 (14:42 +0200)]
slirp: Add info usernet for dumping connection states

Break out sockstats from the slirp statistics and present them under the
new info category "usernet". This patch also improves the current output
/wrt proper reporting connection source and destination.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Mark sockets of incoming TCP connections
Jan Kiszka [Wed, 24 Jun 2009 12:42:29 +0000 (14:42 +0200)]
slirp: Mark sockets of incoming TCP connections

Required for pretty-printing.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Do not allow to remove non-hostfwd sockets
Jan Kiszka [Wed, 24 Jun 2009 12:42:29 +0000 (14:42 +0200)]
slirp: Do not allow to remove non-hostfwd sockets

Prevent that the users accidentally shoots down dynamic sockets. This
allows to remove looping for removals as there can now only be one
match.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Explicitely mark host-forwarding sockets
Jan Kiszka [Wed, 24 Jun 2009 12:42:29 +0000 (14:42 +0200)]
slirp: Explicitely mark host-forwarding sockets

Mark sockets that describe host forwardings. This is required for their
(and only their) proper deletion and for pretty-printing.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Prepare for persistent socket state flags
Jan Kiszka [Wed, 24 Jun 2009 12:42:29 +0000 (14:42 +0200)]
slirp: Prepare for persistent socket state flags

This prepares for adding flags to socket.so_state that must not be
removed during the lifetime of a socket.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Bind support for host forwarding rules
Jan Kiszka [Wed, 24 Jun 2009 12:42:28 +0000 (14:42 +0200)]
slirp: Bind support for host forwarding rules

Extend the hostfwd rule format so that the user can specify on which
host interface qemu should listen for incoming connections. If omitted,
binding will takes place against all interfaces.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Rework monitor commands for host forwarding
Jan Kiszka [Wed, 24 Jun 2009 12:42:28 +0000 (14:42 +0200)]
slirp: Rework monitor commands for host forwarding

Improve the monitor interface for adding and removing host forwarding
rules by splitting it up in two commands and rename them to hostfwd_add
and hostfwd_remove. Also split up the paths taken for legacy -redir
support and the monitor add command as the latter will be extended later
on.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Fix port comparision in slirp_remove_hostfwd
Jan Kiszka [Wed, 24 Jun 2009 12:42:28 +0000 (14:42 +0200)]
slirp: Fix port comparision in slirp_remove_hostfwd

For UDP host forwardings, fport is not stable, every outgoing packet of
the redirection can modify it. Use getsockname instead to look up the
port that is actually used on the host side.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Rework external configuration interface
Jan Kiszka [Wed, 24 Jun 2009 12:42:28 +0000 (14:42 +0200)]
slirp: Rework external configuration interface

With the internal IP configuration made more flexible, we can now
enhance the user interface. This patch adds a number of new options to
"-net user": net (address and mask), host, dhcpstart, dns and smbserver.
It also renames "redir" to "hostfwd" and "channel" to "guestfwd" in
order to (hopefully) clarify their meanings. The format of guestfwd is
extended so that the user can define not only the port but also the
virtual server's IP address the forwarding starts from.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Rework internal configuration
Jan Kiszka [Wed, 24 Jun 2009 12:42:28 +0000 (14:42 +0200)]
slirp: Rework internal configuration

The user mode IP stack is currently only minimally configurable /wrt to
its virtual IP addresses. This is unfortunate if some guest has a fixed
idea of which IP addresses to use.

Therefore this patch prepares the stack for fully configurable IP
addresses and masks. The user interface and default addresses remain
untouched in this step, they will be enhanced in the following patch.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Move smb, redir, tftp and bootp parameters and -net channel
Jan Kiszka [Wed, 24 Jun 2009 12:42:28 +0000 (14:42 +0200)]
slirp: Move smb, redir, tftp and bootp parameters and -net channel

So far a couple of slirp-related parameters were expressed via
stand-alone command line options. This it inconsistent and unintuitive.
Moreover, it prevents both dynamically reconfigured (host_net_add/
delete) and multi-instance slirp.

This patch refactors the configuration by turning -smb, -redir, -tftp
and -bootp as well as -net channel into options of "-net user". The old
stand-alone command line options are still processed, but no longer
advertised. This allows smooth migration of management applications to
to the new syntax and also the extension of that syntax later in this
series.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoIntroduce get_next_param_value
Jan Kiszka [Wed, 24 Jun 2009 12:42:28 +0000 (14:42 +0200)]
Introduce get_next_param_value

In order to parse multiple instances of the same param=value pair,
introduce get_next_param_value which can pass back to string parsing
position after reading a parameter value.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoRevert "User networking: Show active connections"
Jan Kiszka [Wed, 24 Jun 2009 12:42:28 +0000 (14:42 +0200)]
Revert "User networking: Show active connections"

This reverts commit 1c6ed9f3379faac83da0ed3e95cbd49003ac0dd1.

It's redundant to slirp statistics, which are going to be split up /
reworked later on.

Conflicts:

monitor.c
net.c

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Refactor tcp_ctl
Jan Kiszka [Wed, 24 Jun 2009 12:42:28 +0000 (14:42 +0200)]
slirp: Refactor tcp_ctl

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoslirp: Drop redundant lines from udp_input
Jan Kiszka [Wed, 24 Jun 2009 12:42:27 +0000 (14:42 +0200)]
slirp: Drop redundant lines from udp_input

The socket faddr/fport is already updated a few lines below, so these
are completely redundant.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agosdl zooming
Stefano Stabellini [Wed, 24 Jun 2009 10:58:25 +0000 (11:58 +0100)]
sdl zooming

Hi all,
this patch implements zooming capabilities for the sdl interface.
A new sdl_zoom_blit function is added that is able to scale and blit a
portion of a surface into another.
This way we can enable SDL_RESIZABLE and have a real_screen surface with
a different size than the guest surface and let sdl_zoom_blit take care
of the problem.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoFix QCOW2 debugging code to compile again
Filip Navara [Wed, 24 Jun 2009 00:17:30 +0000 (19:17 -0500)]
Fix QCOW2 debugging code to compile again

Updated to use C99 comments.

Signed-off-by: Filip Navara <filip.navara@gmail.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoAdd serial number support for virtio_blk
john cooper [Mon, 22 Jun 2009 18:26:51 +0000 (14:26 -0400)]
Add serial number support for virtio_blk

[brought forward to current qemu-kvm.git]

This patch implements the missing qemu logic to
interpret a '-drive .. serial=XYZ ..' flag for
a virtio_blk device.

The serial number string is contained in a
skeletal IDENTIFY DEVICE data structure and
this structure is made available to the guest
virtio_blk driver via pci i/o region 0.

Signed-off-by: john cooper <john.cooper@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoRemove unused gen_bx_T0 function.
Filip Navara [Mon, 22 Jun 2009 18:40:10 +0000 (13:40 -0500)]
Remove unused gen_bx_T0 function.

Signed-off-by: Filip Navara <filip.navara@gmail.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoMake sure to zero out memory before calling madvise to increase robustness
Anthony Liguori [Mon, 22 Jun 2009 17:39:00 +0000 (12:39 -0500)]
Make sure to zero out memory before calling madvise to increase robustness

Avi pointed out that it's not entirely safe to rely on madvise zeroing out
memory.  So let's do it explicitly before calling madvise.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoqemu-io: add aio read/write/flush commands
Christoph Hellwig [Sat, 20 Jun 2009 19:10:44 +0000 (21:10 +0200)]
qemu-io: add aio read/write/flush commands

Add commands to exercise asynchronous reads/writes and to flush all
outstanding aio commands.  Commands to exercise aio cancellations will
follow in a separate patch.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoqemu-io: Fix spelling in help message.
Stefan Weil [Mon, 22 Jun 2009 13:08:47 +0000 (15:08 +0200)]
qemu-io: Fix spelling in help message.

excerciser -> exerciser

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoFix dump output in qemu-io.
Stefan Weil [Sun, 21 Jun 2009 16:35:03 +0000 (18:35 +0200)]
Fix dump output in qemu-io.

The dump output was not nicely formatted for bytes
larger than 0x7f, because signed values expanded to
sizeof(int) bytes. So for example 0xab did not print
as "ab", but as "ffffffab".

I also cleaned the function prototype, which avoids
new type casts and allows to remove an existing
type cast.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoqemu/net: flag to control the number of vectors a nic has
Michael S. Tsirkin [Sun, 21 Jun 2009 16:51:18 +0000 (19:51 +0300)]
qemu/net: flag to control the number of vectors a nic has

Add an option to specify the number of MSI-X vectors for PCI NIC cards. This
can also be used to disable MSI-X, for compatibility with old qemu. This
option currently only affects virtio cards.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoqemu/net: request 3 vectors in virtio-net
Michael S. Tsirkin [Sun, 21 Jun 2009 16:51:04 +0000 (19:51 +0300)]
qemu/net: request 3 vectors in virtio-net

Request up to 3 vectors in virtio-net. Actual bindings might supply
less.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoqemu/pci: add pci_get/set_byte
Michael S. Tsirkin [Sun, 21 Jun 2009 16:50:57 +0000 (19:50 +0300)]
qemu/pci: add pci_get/set_byte

Add pci_get/set_byte to keep *_word and *_long access functions company.
They are unused for now.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoqemu/virtio: virtio save/load bindings
Michael S. Tsirkin [Sun, 21 Jun 2009 16:50:40 +0000 (19:50 +0300)]
qemu/virtio: virtio save/load bindings

Implement bindings for virtio save/load. Use them in virtio pci.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoqemu/virtio: MSI-X support in virtio PCI
Michael S. Tsirkin [Sun, 21 Jun 2009 16:50:26 +0000 (19:50 +0300)]
qemu/virtio: MSI-X support in virtio PCI

This enables actual support for MSI-X in virtio PCI.
First user will be virtio-net.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoqemu/virtio: virtio support for many interrupt vectors
Michael S. Tsirkin [Sun, 21 Jun 2009 16:50:13 +0000 (19:50 +0300)]
qemu/virtio: virtio support for many interrupt vectors

Extend virtio to support many interrupt vectors, and rearrange code in
preparation for multi-vector support (mostly move reset out to bindings,
because we will have to reset the vectors in transport-specific code).
Actual bindings in pci, and use in net, to follow.
Load and save are not connected to bindings yet, so they are left
stubbed out for now.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoqemu/apic: minimal MSI/MSI-X implementation for PC
Michael S. Tsirkin [Sun, 21 Jun 2009 16:50:03 +0000 (19:50 +0300)]
qemu/apic: minimal MSI/MSI-X implementation for PC

Implement MSI support in APIC. Note that MSI and MMIO APIC registers
are at the same memory location, but actually not on the global bus: MSI
is on PCI bus, APIC is connected directly to the CPU. We map them on the
global bus at the same address which happens to work because MSI
registers are reserved in APIC MMIO and vice versa.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoqemu/pci: MSI-X support functions
Michael S. Tsirkin [Sun, 21 Jun 2009 16:49:54 +0000 (19:49 +0300)]
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: this
is a safety measure to avoid breaking platforms which should support
MSI-X but currently lack this in the interrupt controller emulation.
For PC this will be set by APIC.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoqemu/pci: check constant registers on load
Michael S. Tsirkin [Sun, 21 Jun 2009 16:49:40 +0000 (19:49 +0300)]
qemu/pci: check constant registers on load

Add "cmask" table of constant register masks: if a bit is not writeable
and is set in cmask table, this bit is checked on load.  An attempt to
load an image that would change such a register causes load to fail.
Use this table to make sure that load does not modify registers that
guest can not change (directly or indirectly).

Note: we can't just assume that read-only registers never change,
because the guest could change a register indirectly.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoqemu/pci: add routines to manage PCI capabilities
Michael S. Tsirkin [Sun, 21 Jun 2009 16:45:40 +0000 (19:45 +0300)]
qemu/pci: add routines to manage PCI capabilities

Add routines to manage PCI capability list. First user will be MSI-X.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoqemu/pci: helper routines for pci access
Michael S. Tsirkin [Sun, 21 Jun 2009 16:45:30 +0000 (19:45 +0300)]
qemu/pci: helper routines for pci access

Add inline routines for convenient access to pci devices
with 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>
15 years agoqemu/pci: make default_write_config use mask table
Michael S. Tsirkin [Sun, 21 Jun 2009 16:45:18 +0000 (19:45 +0300)]
qemu/pci: make default_write_config use mask table

Change much of hw/pci to use symbolic constants and a table-driven
design: 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
bit layout differs between devices, depending on capabilities present.

As a result, writing a single byte in BAR registers now works as
it should. Writing to upper limit registers in the bridge
also works as it should. Code is also shorter.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoadd sparc64-softmmu to default configure targets list
Igor V. Kovalenko [Tue, 23 Jun 2009 18:04:16 +0000 (18:04 +0000)]
add sparc64-softmmu to default configure targets list

Add sparc64 to default list of softmmu targets
Signed-off-by: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>
15 years agosparc64 follow pci_nic_init change
Igor V. Kovalenko [Tue, 23 Jun 2009 18:04:08 +0000 (18:04 +0000)]
sparc64 follow pci_nic_init change

sun4u.c: correct pci_nic_init arguments following
commit 5607c38820366954c38dd702e979499486057481

Signed-off-by: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>
15 years agomicroblaze: Support the latest mmu-kernel stat64 ABI.
Edgar E. Iglesias [Tue, 23 Jun 2009 17:19:33 +0000 (19:19 +0200)]
microblaze: Support the latest mmu-kernel stat64 ABI.

Microblaze recently changed their ABI. The new is not backwards compatible
and 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
hande both ABI's later.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
15 years agotarget-ppc: permit linux-user to read PVR
Nathan Froyd [Fri, 5 Jun 2009 01:45:03 +0000 (18:45 -0700)]
target-ppc: permit linux-user to read PVR

Access to the PVR SPR is normally forbidden from userspace apps.  The
Linux kernel, however, fixes up reads in the appropriate trap handler.
To permit applications that read PVR to run on QEMU, then, we need to
implement the same handling of PVR reads.

Signed-off-by: Nathan Froyd <froydnj@codesourcery.com>
Signed-off-by: malc <av1474@comtv.ru>
15 years agocris: Remove unused internal flag.
Edgar E. Iglesias [Tue, 23 Jun 2009 08:27:00 +0000 (10:27 +0200)]
cris: Remove unused internal flag.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
15 years agoWin32: Reduce section alignment for Windows.
Stefan Weil [Thu, 18 Jun 2009 21:04:48 +0000 (23:04 +0200)]
Win32: Reduce section alignment for Windows.

Maximum alignment for Win32 is 16, so don't try
to 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

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoWin: Install keymaps for Windows, too (needed for VNC).
Stefan Weil [Thu, 18 Jun 2009 21:04:15 +0000 (23:04 +0200)]
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>
15 years agoWin32: Fix compilation with SDL.
Stefan Weil [Thu, 18 Jun 2009 18:11:03 +0000 (20:11 +0200)]
Win32: Fix compilation with SDL.

`sdl-config --cflags` defines main = SDL_main
on some platforms. One of these platforms is
Windows with mingw32.

For those platforms, the solution already developed
for __APPLE__ is now applied.

A compiler warning (missing return value) is fixed, too.

Maybe __APPLE__ no longer needs a separate check.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agovirtio-net: implement async packet sending
Mark McLoughlin [Thu, 18 Jun 2009 17:21:36 +0000 (18:21 +0100)]
virtio-net: implement async packet sending

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agonet: add packet length to NetPacketSent callback
Mark McLoughlin [Thu, 18 Jun 2009 17:21:35 +0000 (18:21 +0100)]
net: add packet length to NetPacketSent callback

virtio-net needs this - for the same purpose that it currently uses the
return value from qemu_sendv_packet().

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agonet: add '-net tap,sndbuf=nbytes'
Mark McLoughlin [Thu, 18 Jun 2009 17:21:34 +0000 (18:21 +0100)]
net: add '-net tap,sndbuf=nbytes'

2.6.30 adds a new TUNSETSNDBUF ioctl() which allows a send buffer limit
for the tap device to be specified. When this limit is reached, a tap
write() will return EAGAIN and poll() will indicate the fd isn't
writable.

This allows people to tune their setups so as to avoid e.g. UDP packet
loss when the sending application in the guest out-runs the NIC in the
host.

There is no obviously sensible default setting - a suitable value
depends mostly on the capabilities of the physical NIC through which the
packets are being sent.

Also, note that when using a bridge with netfilter enabled, we currently
never get EAGAIN because netfilter causes the packet to be immediately
orphaned. Set /proc/sys/net/bridge/bridge nf-call-iptables to zero to
disable this behaviour.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agonet: return TAPState from net_tap_init()
Mark McLoughlin [Thu, 18 Jun 2009 17:21:33 +0000 (18:21 +0100)]
net: return TAPState from net_tap_init()

net_tap_fd_init() already returns TAPState, so this is a sensible
cleanup in its own right.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agonet: handle EAGAIN from tapfd write()
Mark McLoughlin [Thu, 18 Jun 2009 17:21:32 +0000 (18:21 +0100)]
net: handle EAGAIN from tapfd write()

If a write() on tapfd returns EAGAIN, return zero so that the packet
gets queued (in the case of async send) and enable polling tapfd for
writing.

When tapfd becomes writable, disable write polling and flush any queued
packets.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agonet: add tap_read_poll() helper
Mark McLoughlin [Thu, 18 Jun 2009 17:21:31 +0000 (18:21 +0100)]
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 too
and enable/disable both types of polling independently.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agonet: purge queued packets in tap_cleanup()
Mark McLoughlin [Thu, 18 Jun 2009 17:21:30 +0000 (18:21 +0100)]
net: purge queued packets in tap_cleanup()

If tap has any packets queued at host_net_remove time, it needs to purge
them in order to prevent a sent callback being invoked for it.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agonet: add qemu_purge_queued_packets()
Mark McLoughlin [Thu, 18 Jun 2009 17:21:29 +0000 (18:21 +0100)]
net: add qemu_purge_queued_packets()

If net client sends packets asynchronously, it needs to purge its queued
packets in cleanup() so as to prevent sent callbacks being invoked with
a freed client.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoFix build on Mac OS X
Anthony Liguori [Thu, 18 Jun 2009 18:31:51 +0000 (13:31 -0500)]
Fix build on Mac OS X

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoDon't register cpu reset handler for cpu with APIC.
Gleb Natapov [Thu, 18 Jun 2009 13:29:18 +0000 (16:29 +0300)]
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 to
add additional code to main_cpu_reset() by mistake.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoSupport addr=... in option argument of -drive if=virtio
Markus Armbruster [Thu, 18 Jun 2009 13:14:10 +0000 (15:14 +0200)]
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
second argument of drive_add, because that clashes with their first
arguments.  Admittedly unelegant.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoMake first argument of monitor command pci_add work
Markus Armbruster [Thu, 18 Jun 2009 13:14:09 +0000 (15:14 +0200)]
Make first argument of monitor command pci_add work

Simply pass the PCI address through qemu_pci_hot_add_nic() to
pci_nic_init() and through qemu_pci_hot_add_storage() to pci_create().

Before, pci_device_hot_add() passed along the PCI bus to use, and
ignored any user-specified slot.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoSupport addr=... in option argument of -net nic
Markus Armbruster [Thu, 18 Jun 2009 13:14:08 +0000 (15:14 +0200)]
Support addr=... in option argument of -net nic

Make net_client_init() accept addr=, put the value into struct
NICinfo.  Use it in pci_nic_init(), and remove arguments bus and
devfn.

Don't support addr= in third argument of monitor command pci_add,
because that clashes with its first argument.  Admittedly unelegant.

Machines "malta" and "r2d" have a default NIC with a well-known PCI
address.  Deal with that the same way as the NIC model: make
pci_nic_init() take an optional default to be used when the user
doesn't specify one.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoFix do_pci_register_device() to reject devfn already in use
Markus Armbruster [Thu, 18 Jun 2009 13:14:07 +0000 (15:14 +0200)]
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>
15 years agovmware_vga: clean up
Isaku Yamahata [Thu, 18 Jun 2009 10:55:38 +0000 (19:55 +0900)]
vmware_vga: clean up

use NULL instead of 0 for pci_register_device() argument
for consistency. Any other caller uses NULL.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agodot gitignore: add qemu-monitor.texi
Isaku Yamahata [Thu, 18 Jun 2009 10:55:09 +0000 (19:55 +0900)]
dot gitignore: add qemu-monitor.texi

add qemu-monitor.texi to .gitignore.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agovirtio-net: enable mergeable receive buffers
Mark McLoughlin [Thu, 18 Jun 2009 10:31:07 +0000 (11:31 +0100)]
virtio-net: enable mergeable receive buffers

When virtio-net was merged in from qemu-kvm.git, the VNET_HDR related
features were dropped from the code.

However, VIRTIO_NET_F_MRG_RXBUF appears to have accidentally been
dropped too. Re-instate that now.

Reported-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoacpi.c: make qemu_system_device_hot_add piix independent.
Isaku Yamahata [Thu, 18 Jun 2009 10:57:00 +0000 (19:57 +0900)]
acpi.c: make qemu_system_device_hot_add piix independent.

introruce piix4_device_hot_add() for piix4 specific code
and make qemu_system_device_hot_add() generic.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoInstead of writing a zero page, madvise it away
Anthony Liguori [Wed, 17 Jun 2009 21:46:12 +0000 (16:46 -0500)]
Instead of writing a zero page, madvise it away

Otherwise, after migration, we end up with a much larger RSS size then we
ought to have.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoHandle init/sipi in a main cpu exec loop. (v2)
Gleb Natapov [Wed, 17 Jun 2009 20:26:59 +0000 (23:26 +0300)]
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 main
cpu exec loop. When KVM will gain thread per vcpu capability it will
be much more clear to handle those event by cpu thread itself and not
modify one cpu's state from the context of the other.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoAdd pci_bus_reset() function.
Gleb Natapov [Wed, 17 Jun 2009 16:32:00 +0000 (19:32 +0300)]
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>
15 years agovirtio: add support for indirect ring entries
Mark McLoughlin [Wed, 17 Jun 2009 10:38:28 +0000 (11:38 +0100)]
virtio: add support for indirect ring entries

Support a new feature flag for indirect ring entries. These are ring
entries which point to a table of buffer descriptors.

The idea here is to increase the ring capacity by allowing a larger
effective ring size whereby the ring size dictates the number of
requests that may be outstanding, rather than the size of those
requests.

This should be most effective in the case of block I/O where we can
potentially benefit by concurrently dispatching a large number of
large requests. Even in the simple case of single segment block
requests, this results in a threefold increase in ring capacity.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agovirtio: make vring_desc_*() take phys addrs
Mark McLoughlin [Wed, 17 Jun 2009 10:37:32 +0000 (11:37 +0100)]
virtio: make vring_desc_*() take phys addrs

Change the vring descriptor helpers to take the physical
address of the descriptor table rather than a virtqueue.

This is needed in order to allow these helpers to be used
with an indirect descriptor table.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoAdd O_BINARY to open call in net_dump_init.
Filip Navara [Wed, 17 Jun 2009 17:48:08 +0000 (19:48 +0200)]
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>
15 years agoMake nic option rom loading less painful.
Glauber Costa [Wed, 17 Jun 2009 13:05:30 +0000 (09:05 -0400)]
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 loading
code that linux_boot and vga are already using.

This patch introduces a "bootable" state in NICInfo structure,
that we can use to keep track of whether or not a given nic should
be bootable, avoiding the introduction of yet another global state.

With that in hands, we move the code in vl.c to hw/pc.c, and use
the already existing infra structure to load those option roms.

Error checking code suggested by Mark McLoughlin

Signed-off-by: Glauber Costa <glommer@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoDisable _FORTIFY_SOURCE to fix Ubuntu build with -Werror
Anthony Liguori [Wed, 17 Jun 2009 19:27:09 +0000 (14:27 -0500)]
Disable _FORTIFY_SOURCE to fix Ubuntu build with -Werror

This eliminates the results unused warnings.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
15 years agoApply TCGV_UNUSED on variables that GCC mistakenly thinks can be used
malc [Sat, 20 Jun 2009 01:51:47 +0000 (05:51 +0400)]
Apply TCGV_UNUSED on variables that GCC mistakenly thinks can be used
uninitialized

15 years agoRestore consistent formatting of audio devices
malc [Sat, 20 Jun 2009 01:13:29 +0000 (05:13 +0400)]
Restore consistent formatting of audio devices

15 years agolinux-user: strace now handles guest stringscorrectly [v2]
Riku Voipio [Thu, 18 Jun 2009 19:51:31 +0000 (22:51 +0300)]
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:
>> /usr/include/linux/futex.h:48: error: field `__user' has incomplete type
>> /usr/include/linux/futex.h:48: error: syntax error before '*' token
>> /usr/include/linux/futex.h:63: error: field `list' has incomplete type
>> /usr/include/linux/futex.h:83: error: field `__user' has incomplete type
>> /usr/include/linux/futex.h:83: error: syntax error before '*' token
>> make[1]: *** [strace.o] Error 1

> We had the same problem with usb-linux.c.  It's broken system headers,
> the __user stuff is supposed to get removed as part of the headers
> installation.

> It builds fine on my system (Fedora 10).

Howabout something like this:

commit eb8387cb0eda32a18880664eb5f0ca5c8bf05b45
Author: Riku Voipio <riku.voipio@iki.fi>
Date:   Thu Jun 18 22:44:31 2009 +0300
Subject: linux-user: include futex defines directly

Since some common distributions have broken linux/futex.h, stop
including it. Instead add the defines directly.

Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
15 years agofix qemu_alloc/qemu_free for audio subsystem
Jean-Christophe Dubois [Thu, 18 Jun 2009 20:50:14 +0000 (22:50 +0200)]
fix qemu_alloc/qemu_free for audio subsystem

Signed-off-by: Jean-Christophe DUBOIS <jcd@tribudubois.net>
15 years agoalsa: fix warning
Gerd Hoffmann [Wed, 17 Jun 2009 11:51:20 +0000 (13:51 +0200)]
alsa: fix warning

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
15 years agoxilinx-eth: Remove debug print.
Edgar E. Iglesias [Thu, 18 Jun 2009 08:28:10 +0000 (10:28 +0200)]
xilinx-eth: Remove debug print.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
15 years agoDon't set IRQs on device reset and loadvm/savevm
Blue Swirl [Wed, 17 Jun 2009 19:23:44 +0000 (19:23 +0000)]
Don't set IRQs on device reset and loadvm/savevm

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
15 years agoCall piix4_reset() on system reset.
Blue Swirl [Wed, 17 Jun 2009 17:36:51 +0000 (17:36 +0000)]
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.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
15 years agoDon't set IRQs on device reset and loadvm/savevm
Blue Swirl [Wed, 17 Jun 2009 17:20:01 +0000 (17:20 +0000)]
Don't set IRQs on device reset and loadvm/savevm

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
15 years agoCall piix3_reset() on system reset.
Gleb Natapov [Wed, 17 Jun 2009 16:32:01 +0000 (19:32 +0300)]
Call piix3_reset() on system reset.

Also zero pci_irq_levels on reset to avoid stuck irq after reset.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Yaniv Kamay <ykamay@redhat.com>
15 years agoRegister usb-uhci reset function.
Gleb Natapov [Wed, 17 Jun 2009 16:32:02 +0000 (19:32 +0300)]
Register usb-uhci reset function.

The device is not reset on system reset currently.
Without this patch RHEL4.8 hangs after reboot if -usbdevice table
is in use.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
15 years agoRevert "Update irqs on reset and device load"
Blue Swirl [Wed, 17 Jun 2009 17:01:03 +0000 (17:01 +0000)]
Revert "Update irqs on reset and device load"

This reverts commit 3dcd219f09d6c1817bf9a132899e6b925f7a0914.

It is incorrect to call qemu_irq functions (or any other functions that
access other device state) during savevm/loadvm.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
15 years agoAllow user to specify CPU model
Blue Swirl [Wed, 17 Jun 2009 15:49:37 +0000 (15:49 +0000)]
Allow user to specify CPU model

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
15 years agoFix opening of read only raw images
Blue Swirl [Wed, 17 Jun 2009 15:27:44 +0000 (18:27 +0300)]
Fix opening of read only raw images

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
15 years agoReplace ELF section hack with normal table
Blue Swirl [Wed, 17 Jun 2009 15:22:31 +0000 (15:22 +0000)]
Replace ELF section hack with normal table

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>