sdk/emulator/qemu.git
13 years agoioapic: Do not set irr for masked edge IRQs
Jan Kiszka [Sat, 9 Apr 2011 11:18:59 +0000 (13:18 +0200)]
ioapic: Do not set irr for masked edge IRQs

So far we set IRR for edge IRQs even if the pin is masked. If the guest
later on unmasks and switches the pin to level-triggered mode, irr will
remain set, causing an IRQ storm. The point is that setting IRR is not
correct in this case according to the spec, and avoiding this resolves
the issue.

Reported-and-tested-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agopflash: Restore & fix lazy ROMD switching
Jan Kiszka [Sun, 10 Apr 2011 10:53:39 +0000 (12:53 +0200)]
pflash: Restore & fix lazy ROMD switching

Commit 5145b3d1cc revealed a bug in the lazy ROMD switch-back logic, but
resolved it by breaking that feature. This approach addresses the issue
by switching back to ROMD after a certain amount of read accesses
without further unlock sequences.

Signed-off-by: Jan Kiszka <jan.kiszka@web.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agodarwin-user: Remove unneeded null pointer check
Stefan Weil [Sun, 3 Apr 2011 16:22:45 +0000 (18:22 +0200)]
darwin-user: Remove unneeded null pointer check

cppcheck reports this error:

commpage.c:223: error: Possible null pointer dereference:
value - otherwise it is redundant to check if value is null at line 214

The null pointer check in line 214 is indeed not needed.
If value were null, the code would crash in line 223.
See do_compare_and_swap64 were for a reference.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoMerge branch 'for-anthony' of git://repo.or.cz/qemu/kevin
Aurelien Jarno [Wed, 27 Apr 2011 14:26:18 +0000 (16:26 +0200)]
Merge branch 'for-anthony' of git://repo.or.cz/qemu/kevin

* 'for-anthony' of git://repo.or.cz/qemu/kevin:
  Remove obsolete 'enabled' variable from progress state
  Add dd-style SIGUSR1 progress reporting
  qed: Fix consistency check on 32-bit hosts
  ide/atapi: Introduce CHECK_READY flag for commands
  ide/atapi: Replace bdrv_get_geometry calls by s->nb_sectors
  ide/atapi: Use table instead of switch for commands
  ide/atapi: Factor commands out
  ide: Split atapi.c out
  Improve accuracy of block migration bandwidth calculation
  atapi: Add 'medium ready' to 'medium not ready' transition on cd change
  qemu-img: allow rebase to a NULL backing file when unsafe

13 years agortl8139: Fix compilation for w32/w64
Stefan Weil [Tue, 26 Apr 2011 08:17:48 +0000 (10:17 +0200)]
rtl8139: Fix compilation for w32/w64

Compilation for Windows needs a different declaration for the
printf format attribute, so use the macro which was defined for
this purpose.

Cc: Benjamin Poirier <benjamin.poirier@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoRemove obsolete 'enabled' variable from progress state
Jes Sorensen [Wed, 27 Apr 2011 12:31:51 +0000 (14:31 +0200)]
Remove obsolete 'enabled' variable from progress state

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoAdd dd-style SIGUSR1 progress reporting
Jes Sorensen [Wed, 27 Apr 2011 12:31:50 +0000 (14:31 +0200)]
Add dd-style SIGUSR1 progress reporting

This introduces support for dd-style progress reporting on POSIX
systems, if the user hasn't specified -p to report progress. If sent a
SIGUSR1, qemu-img will report current progress for commands that
support progress reporting.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoqed: Fix consistency check on 32-bit hosts
Stefan Hajnoczi [Sun, 24 Apr 2011 17:38:58 +0000 (18:38 +0100)]
qed: Fix consistency check on 32-bit hosts

The qed_bytes_to_clusters() function is normally used with size_t
lengths.  Consistency check used it with file size length and therefore
failed on 32-bit hosts when the image file is 4 GB or more.

Make qed_bytes_to_clusters() explicitly 64-bit and update consistency
check to keep 64-bit cluster counts.

Reported-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoide/atapi: Introduce CHECK_READY flag for commands
Kevin Wolf [Tue, 19 Apr 2011 11:15:52 +0000 (13:15 +0200)]
ide/atapi: Introduce CHECK_READY flag for commands

Some commands are supposed to report a Not Ready Condition (i.e. they require
a medium to be present in order to execute successfully). Instead of
duplicating the check in each command implementation, let's add a flag and
check it before calling the command.

This patch only converts existing checks, it does not introduce new checks for
any of the other commands that can/should report a Not Ready Condition.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoide/atapi: Replace bdrv_get_geometry calls by s->nb_sectors
Kevin Wolf [Tue, 19 Apr 2011 11:13:44 +0000 (13:13 +0200)]
ide/atapi: Replace bdrv_get_geometry calls by s->nb_sectors

The disk size can only change when the medium is changed, and the change
callback takes care of updating s->nb_sectors in this case.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoide/atapi: Use table instead of switch for commands
Kevin Wolf [Mon, 18 Apr 2011 15:55:08 +0000 (17:55 +0200)]
ide/atapi: Use table instead of switch for commands

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoide/atapi: Factor commands out
Kevin Wolf [Mon, 18 Apr 2011 15:55:08 +0000 (17:55 +0200)]
ide/atapi: Factor commands out

In preparation for a table of function pointers, factor each command out from
ide_atapi_cmd() into its own function.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoide: Split atapi.c out
Kevin Wolf [Mon, 18 Apr 2011 14:45:49 +0000 (16:45 +0200)]
ide: Split atapi.c out

Besides moving code, this patch only fixes some whitespace issues in the moved
code and makes all functions in atapi.c static which can be static.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoImprove accuracy of block migration bandwidth calculation
Avishay Traeger [Sun, 3 Apr 2011 08:31:45 +0000 (11:31 +0300)]
Improve accuracy of block migration bandwidth calculation

block_mig_state.total_time is currently the sum of the read request
latencies.  This is not very accurate because block migration uses aio and
so several requests can be submitted at once.  Bandwidth should be computed
with wall-clock time, not by adding the latencies.  In this case,
"total_time" has a higher value than it should, and so the computed
bandwidth is lower than it is in reality.  This means that migration can
take longer than it needs to.
However, we don't want to use pure wall-clock time here.  We are computing
bandwidth in the asynchronous phase, where the migration repeatedly wakes
up and sends some aio requests.  The computed bandwidth will be used for
synchronous transfer.

Signed-off-by: Avishay Traeger <avishay@il.ibm.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoatapi: Add 'medium ready' to 'medium not ready' transition on cd change
Amit Shah [Mon, 18 Apr 2011 11:45:46 +0000 (17:15 +0530)]
atapi: Add 'medium ready' to 'medium not ready' transition on cd change

MMC-5 Table F.1 lists errors that can be thrown for the TEST_UNIT_READY
command.  Going from medium not ready to medium ready states is
communicated by throwing an error.

This adds the missing 'tray opened' event that we fail to report to
guests.  After doing this, older Linux guests properly revalidate a disc
on the change command.  HSM violation errors, which caused Linux guests
to do a soft-reset of the link, also go away:

ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6
sr 1:0:0:0: CDB: Test Unit Ready: 00 00 00 00 00 00
ata2.00: cmd a0/00:00:00:00:00/00:00:00:00:00/a0 tag 0
         res 01/60:00:00:00:00/00:00:00:00:00/a0 Emask 0x3 (HSM violation)
ata2.00: status: { ERR }
ata2: soft resetting link
ata2.00: configured for MWDMA2
ata2: EH complete

Signed-off-by: Amit Shah <amit.shah@redhat.com>
Acked-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Tested-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoqemu-img: allow rebase to a NULL backing file when unsafe
Anthony Liguori [Wed, 13 Apr 2011 14:51:47 +0000 (15:51 +0100)]
qemu-img: allow rebase to a NULL backing file when unsafe

QEMU can drop a backing file so that an image file no longer depends on
the backing file, but this feature has not been exposed in qemu-img.
This is useful in an image streaming usecase or when an image file has
been fully allocated and no reads can hit the backing file anymore.

Since the dropping the backing file can make the image unusable, only
allow this when the unsafe flag has been set.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoconfigure: reenable opengl by default
Michael Walle [Mon, 25 Apr 2011 22:09:01 +0000 (00:09 +0200)]
configure: reenable opengl by default

Because the opengl library is only linked to for the lm32 target, we can
now safely enable opengl by default again.

Signed-off-by: Michael Walle <michael@walle.cc>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoconfigure: support target dependent linking
Michael Walle [Mon, 25 Apr 2011 22:24:07 +0000 (00:24 +0200)]
configure: support target dependent linking

This patch is the first attempt to make configure more intelligent with
regard to how it links to libraries. It divides the softmmu libraries into
two lists, a general one and a list which depends on the target
architecture.

Signed-off-by: Michael Walle <michael@walle.cc>
Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
Acked-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoMerge branch 'linux-user-for-upstream' of git://gitorious.org/qemu-maemo/qemu
Aurelien Jarno [Tue, 26 Apr 2011 21:23:02 +0000 (23:23 +0200)]
Merge branch 'linux-user-for-upstream' of git://gitorious.org/qemu-maemo/qemu

* 'linux-user-for-upstream' of git://gitorious.org/qemu-maemo/qemu:
  linux-user: untie syscalls from UID16
  linux-user: add s390x to llseek list
  linux-user: add ioctl(SIOCGIWNAME, ...) support.
  linux-user: convert ioctl(SIOCGIFCONF, ...) result.
  linux-user: improve traces
  [v2] linux-user: bigger default stack

13 years agoconfigure: Make epoll_create1 test work around SPARC glibc bug
Peter Maydell [Tue, 26 Apr 2011 15:56:40 +0000 (16:56 +0100)]
configure: Make epoll_create1 test work around SPARC glibc bug

Work around a SPARC glibc bug which caused the epoll_create1 configure
test to wrongly claim that the function was present. Some versions of
SPARC glibc provided the function in the library but didn't declare
it in the include file; the result is that gcc warns about an implicit
declaration but a link succeeds. So we reference the function as a
value rather than a function call to induce a compile time error
if the declaration was not present.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoMerge remote-tracking branch 'stefanha/tracing' into staging
Anthony Liguori [Tue, 26 Apr 2011 13:07:49 +0000 (08:07 -0500)]
Merge remote-tracking branch 'stefanha/tracing' into staging

13 years agovl: trivial spelling fix
Brad Hards [Sat, 23 Apr 2011 11:50:06 +0000 (21:50 +1000)]
vl: trivial spelling fix

Signed-off-by: Brad Hards <bradh@frogmouth.net>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
13 years agotrace: [trace-events] fix print formats in some events
Lluís [Wed, 6 Apr 2011 18:34:11 +0000 (20:34 +0200)]
trace: [trace-events] fix print formats in some events

Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
13 years agotrace: [ust] fix generation of 'trace.c' on events without args
Lluís [Wed, 6 Apr 2011 18:34:03 +0000 (20:34 +0200)]
trace: [ust] fix generation of 'trace.c' on events without args

Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
13 years agodocs/tracing.txt: minor documentation fixes
Lluís [Wed, 6 Apr 2011 18:33:56 +0000 (20:33 +0200)]
docs/tracing.txt: minor documentation fixes

Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
13 years agodocs: Trace events must not expect pointer dereferencing
Stefan Hajnoczi [Thu, 14 Apr 2011 17:24:50 +0000 (18:24 +0100)]
docs: Trace events must not expect pointer dereferencing

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
13 years agotrace: Remove %s in grlib trace events
Stefan Hajnoczi [Thu, 14 Apr 2011 17:11:00 +0000 (18:11 +0100)]
trace: Remove %s in grlib trace events

Trace events cannot use %s in their format strings because trace
backends vary in how they can deference pointers (if at all).  Recording
const char * values is not meaningful if their contents are not recorded
too.

Change grlib trace events that rely on strings so that they communicate
similar information without using strings.

A follow-up patch explains this limitation and updates docs/tracing.txt.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
13 years agotracetool: allow ) in trace output string
Paolo Bonzini [Fri, 15 Apr 2011 13:23:59 +0000 (15:23 +0200)]
tracetool: allow ) in trace output string

Be greedy in matching the trailing "\)*" pattern.  Otherwise, all the
text in the trace string up to the last closed parenthesis is taken as
part of the prototype.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
13 years agolinux-user: untie syscalls from UID16
Riku Voipio [Mon, 18 Apr 2011 12:23:06 +0000 (15:23 +0300)]
linux-user: untie syscalls from UID16

Quite a number of uid/gid related syscalls are only defined on systems
with USE_UID16 defined. This is apperently based on the idea that these
system calls would never be called on non-UID16 systems. Make these
syscalls available for all architectures that define them.

drop alpha hack to support selected UID16 syscalls. MIPS and PowerPC
were also defined as UID16, to get uid/gid syscalls available, drop
this error as well.

Change QEMU to reflect this.

Cc: Ulrich Hecht <uli@suse.de>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Alexander Graf <agraf@suse.de>
Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
13 years agolinux-user: add s390x to llseek list
Alexander Graf [Fri, 15 Apr 2011 15:32:45 +0000 (17:32 +0200)]
linux-user: add s390x to llseek list

We keep a list of host architectures that do llseek with the same
syscall as lseek. S390x is one of them, so let's add it to the list.

Original-patch-by: Ulrich Hecht <uli@suse.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
13 years agolinux-user: add ioctl(SIOCGIWNAME, ...) support.
Laurent Vivier [Tue, 29 Mar 2011 23:35:23 +0000 (01:35 +0200)]
linux-user: add ioctl(SIOCGIWNAME, ...) support.

Allow to run properly following program from linux-user:

/* cc -o wifi wifi.c */

 #include <stdio.h>
 #include <sys/ioctl.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <linux/wireless.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <string.h>

int main(int argc, char **argv)
{
    int ret;
    struct ifreq req;
    struct sockaddr_in *addr;
    int s;

    if (argc != 2) {
        fprintf(stderr, "Need an interface name (like wlan0)\n");
return 1;
    }

    s = socket( AF_INET, SOCK_DGRAM, 0 );
    if (s < 0) {
        perror("Cannot open socket");
        return 1;
    }
    strncpy(req.ifr_name, argv[1], sizeof(req.ifr_name));
    ret = ioctl( s, SIOCGIWNAME, &req );
    if (ret < 0) {
fprintf(stderr, "No wireless extension\n");
        return 1;
    }

    printf("%s\n", req.ifr_name);
    printf("%s\n", req.ifr_newname);
    return 0;
}

$ ./wifi eth0
No wireless extension

$ ./wifi wlan0
wlan0
IEEE 802.11bg

Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
13 years agolinux-user: convert ioctl(SIOCGIFCONF, ...) result.
Laurent Vivier [Tue, 29 Mar 2011 22:12:12 +0000 (00:12 +0200)]
linux-user: convert ioctl(SIOCGIFCONF, ...) result.

The result needs to be converted as it is stored in an array of struct
ifreq and sizeof(struct ifreq) differs according to target and host
alignment rules.

This patch allows to execute correctly the following program on arm
and m68k:

 #include <stdio.h>
 #include <sys/ioctl.h>
 #include <net/if.h>
 #include <alloca.h>
 #include <string.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>

int main(void)
{
    int s, ret;
    struct ifconf ifc;
    int i;

    memset( &ifc, 0, sizeof( struct ifconf ) );
    ifc.ifc_len = 8 * sizeof(struct ifreq);
    ifc.ifc_buf = alloca(ifc.ifc_len);

    s = socket( AF_INET, SOCK_DGRAM, 0 );
    if (s < 0) {
        perror("Cannot open socket");
        return 1;
    }
    ret = ioctl( s, SIOCGIFCONF, &ifc );
    if (s < 0) {
        perror("ioctl() failed");
        return 1;
    }

    for (i = 0; i < ifc.ifc_len / sizeof(struct ifreq) ; i ++) {
        struct sockaddr_in *s;
        s = (struct sockaddr_in*)&ifc.ifc_req[i].ifr_addr;
        printf("%s\n", ifc.ifc_req[i].ifr_name);
        printf("%s\n", inet_ntoa(s->sin_addr));
    }
}

Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
13 years agolinux-user: improve traces
Laurent Vivier [Wed, 6 Apr 2011 22:25:32 +0000 (00:25 +0200)]
linux-user: improve traces

Add trace details for getpid(), kill(), _llseek(), rt_sigaction(),
rt_sigprocmask(), clone().

Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
13 years ago[v2] linux-user: bigger default stack
Riku Voipio [Fri, 4 Mar 2011 13:27:29 +0000 (15:27 +0200)]
[v2] linux-user: bigger default stack

PTHREAD_STACK_MIN (16KB) is somewhat inadequate for a new stack for new
QEMU threads. Set new limit to 256K which should be enough, yet doesn't
increase memory pressure significantly.

Signed-off-by: Riku Voipio <riku.voipio@nokia.com>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
13 years agodoc: fix slirp description
Brad Hards [Sun, 24 Apr 2011 07:19:56 +0000 (17:19 +1000)]
doc: fix slirp description

net/slirp.c says:
    /* default settings according to historic slirp */
    struct in_addr net  = { .s_addr = htonl(0x0a000200) }; /* 10.0.2.0 */
    struct in_addr mask = { .s_addr = htonl(0xffffff00) }; /* 255.255.255.0 */
    struct in_addr host = { .s_addr = htonl(0x0a000202) }; /* 10.0.2.2 */
    struct in_addr dhcp = { .s_addr = htonl(0x0a00020f) }; /* 10.0.2.15 */
    struct in_addr dns  = { .s_addr = htonl(0x0a000203) }; /* 10.0.2.3 */

Which I think is not what the documentation says.

Signed-off-by: Brad Hards <bradh@frogmouth.net>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agortl8139: add format attribute to DPRINTF
Benjamin Poirier [Wed, 20 Apr 2011 23:39:02 +0000 (19:39 -0400)]
rtl8139: add format attribute to DPRINTF

gcc can check the format string for correctness even when debugging output is
not enabled.
Have to make sure arguments are always available. They are optimized out if
unneeded.

Signed-off-by: Benjamin Poirier <benjamin.poirier@gmail.com>
Cc: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agortl8139: use variadic macro for debug statements
Benjamin Poirier [Wed, 20 Apr 2011 23:39:01 +0000 (19:39 -0400)]
rtl8139: use variadic macro for debug statements

Removes double (( )) to make DEBUG_PRINT compatible with real function calls.
Change the name to DPRINTF to be consistent with other DPRINTF macros
throughout qemu.
Include the "RTL8139: " prefix in the macro. This changes some debug output
slightly since the prefix wasn't present on all lines.

Part of the change was done using the "coccinelle" tool with the following
small semantic match:
    @@ expression E; @@

    - DEBUG_PRINT((E))
    + DPRINTF(E)

Signed-off-by: Benjamin Poirier <benjamin.poirier@gmail.com>
Cc: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agortl8139: use TARGET_FMT_plx in debug messages
Benjamin Poirier [Wed, 20 Apr 2011 23:39:00 +0000 (19:39 -0400)]
rtl8139: use TARGET_FMT_plx in debug messages

Prevents a compilation failure when DEBUG_RTL8139 is defined:

CC    libhw32/rtl8139.o
cc1: warnings being treated as errors
hw/rtl8139.c: In function ‘rtl8139_cplus_transmit_one’:
hw/rtl8139.c:1960: error: format ‘%8lx’ expects type ‘long unsigned int’, but argument 5 has type ‘target_phys_addr_t’
make[1]: *** [rtl8139.o] Error 1

Signed-off-by: Benjamin Poirier <benjamin.poirier@gmail.com>
Cc: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agolinux-user/arm/nwfpe: rename REG_PC to ARM_REG_PC
Peter Maydell [Wed, 20 Apr 2011 10:19:15 +0000 (11:19 +0100)]
linux-user/arm/nwfpe: rename REG_PC to ARM_REG_PC

The REG_PC constant used in the ARM nwfpe code is fine in the kernel
but when used in qemu can clash with a definition in the host system
include files (in particular on Ubuntu Lucid SPARC, including signal.h
will define a REG_PC). Rename the constant to avoid this issue.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Handle UNDEF cases for Neon VLD/VST multiple-structures
Peter Maydell [Mon, 18 Apr 2011 18:07:12 +0000 (19:07 +0100)]
target-arm: Handle UNDEF cases for Neon VLD/VST multiple-structures

Correctly UNDEF for Neon VLD/VST "multiple structures" forms where the
align field is not valid.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Handle UNDEFs for Neon single element load/stores
Peter Maydell [Mon, 18 Apr 2011 18:07:11 +0000 (19:07 +0100)]
target-arm: Handle UNDEFs for Neon single element load/stores

Handle the UNDEF and UNPREDICTABLE cases for Neon "single element to
one lane" VLD and "single element from one lane" VST.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoMerge remote-tracking branch 'awilliam/ipxe' into staging
Anthony Liguori [Mon, 25 Apr 2011 15:26:10 +0000 (10:26 -0500)]
Merge remote-tracking branch 'awilliam/ipxe' into staging

13 years agotarget-i386: switch to softfloat
Aurelien Jarno [Wed, 20 Apr 2011 11:04:23 +0000 (13:04 +0200)]
target-i386: switch to softfloat

This increase the correctness (precision, NaN values, corner cases) on
non-x86 machines, and add the possibility to handle the exception
correctly.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-i386: fix constants wrt softfloat
Aurelien Jarno [Wed, 20 Apr 2011 11:04:23 +0000 (13:04 +0200)]
target-i386: fix constants wrt softfloat

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-i386: fix helper_fprem() and helper_fprem1() wrt softfloat
Aurelien Jarno [Wed, 20 Apr 2011 11:04:23 +0000 (13:04 +0200)]
target-i386: fix helper_fprem() and helper_fprem1() wrt softfloat

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-i386: fix logarithmic and trigonometric helpers wrt softfloat
Aurelien Jarno [Wed, 20 Apr 2011 11:04:23 +0000 (13:04 +0200)]
target-i386: fix logarithmic and trigonometric helpers wrt softfloat

Use the new CPU86_LDouble <-> double conversion functions to make logarithmic
and trigonometric helpers working with softfloat.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-i386: add CPU86_LDouble <-> double conversion functions
Aurelien Jarno [Wed, 20 Apr 2011 11:04:23 +0000 (13:04 +0200)]
target-i386: add CPU86_LDouble <-> double conversion functions

Add functions to convert CPU86_LDouble to double and vice versa. They
are going to be used to implement logarithmic and trigonometric function
until softfloat implement them.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-i386: replace approx_rsqrt and approx_rcp by softfloat ops
Aurelien Jarno [Wed, 20 Apr 2011 11:04:23 +0000 (13:04 +0200)]
target-i386: replace approx_rsqrt and approx_rcp by softfloat ops

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-i386: fix helper_fsqrt() wrt softfloat
Aurelien Jarno [Wed, 20 Apr 2011 11:04:23 +0000 (13:04 +0200)]
target-i386: fix helper_fsqrt() wrt softfloat

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-i386: fix helper_fdiv() wrt softfloat
Aurelien Jarno [Wed, 20 Apr 2011 11:04:23 +0000 (13:04 +0200)]
target-i386: fix helper_fdiv() wrt softfloat

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-i386: fix helper_fxtract() wrt softfloat
Aurelien Jarno [Wed, 20 Apr 2011 11:04:23 +0000 (13:04 +0200)]
target-i386: fix helper_fxtract() wrt softfloat

With softfloat it's not possible to play with the overflow of an
unsigned value to get the 0 case partially correct. Use a special case
for that. Using a division to generate an infinity is the easiest way
that works for both softfloat and softfloat-native.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-i386: fix helper_fbld_ST0() wrt softfloat
Aurelien Jarno [Wed, 20 Apr 2011 11:04:23 +0000 (13:04 +0200)]
target-i386: fix helper_fbld_ST0() wrt softfloat

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-i386: fix helper_fscale() wrt softfloat
Aurelien Jarno [Wed, 20 Apr 2011 11:04:23 +0000 (13:04 +0200)]
target-i386: fix helper_fscale() wrt softfloat

Use the scalbn softfloat function to implement helper_fscale(). This
fixes corner cases (e.g. NaN) and makes a few more GNU libc math tests
to pass.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agosoftfloat-native: add float*_is_any_nan() functions
Aurelien Jarno [Wed, 20 Apr 2011 11:04:23 +0000 (13:04 +0200)]
softfloat-native: add float*_is_any_nan() functions

Add float*_is_any_nan() functions to match the softfloat API.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agosoftfloat-native: fix float*_scalbn() functions
Aurelien Jarno [Wed, 20 Apr 2011 11:04:23 +0000 (13:04 +0200)]
softfloat-native: fix float*_scalbn() functions

float*_scalbn() should be able to take a status parameter. Fix that.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agosoftfloat: fix float*_scalnb() corner cases
Aurelien Jarno [Wed, 20 Apr 2011 11:04:22 +0000 (13:04 +0200)]
softfloat: fix float*_scalnb() corner cases

float*_scalnb() were not taking into account all cases. This patch fixes
some corner cases:
- NaN values in input were not properly propagated and the invalid flag
  not correctly raised. Use propagateFloat*NaN() for that.
- NaN or infinite values in input of floatx80_scalnb() were not correctly
  detected due to a typo.
- The sum of exponent and n could overflow, leading to strange results.
  Additionally having int16 defined to int make that happening for a very
  small range of values. Fix that by saturating n to the maximum exponent
  range, and using an explicit wider type if needed.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agosoftfloat: add floatx80_compare*() functions
Aurelien Jarno [Wed, 20 Apr 2011 11:04:22 +0000 (13:04 +0200)]
softfloat: add floatx80_compare*() functions

Add floatx80_compare() and floatx80_compare_quiet() functions to match
the softfloat-native ones.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agosoftfloat-native: add a few constant values
Aurelien Jarno [Wed, 20 Apr 2011 11:04:22 +0000 (13:04 +0200)]
softfloat-native: add a few constant values

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agosoftfloat: add pi constants
Aurelien Jarno [Wed, 20 Apr 2011 11:04:22 +0000 (13:04 +0200)]
softfloat: add pi constants

Add a pi constant for float32, float64, floatx80. It will be used by
target-i386 and later by the trigonometric functions.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agosoftfloat: add floatx80 constants
Aurelien Jarno [Wed, 20 Apr 2011 11:04:22 +0000 (13:04 +0200)]
softfloat: add floatx80 constants

Add floatx80 constants similarly to float32 or float64.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agosoftfloat: fix floatx80_is_infinity()
Aurelien Jarno [Wed, 20 Apr 2011 11:04:22 +0000 (13:04 +0200)]
softfloat: fix floatx80_is_infinity()

With floatx80, the explicit bit is set for infinity.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agosoftfloat: fix floatx80 handling of NaN
Aurelien Jarno [Wed, 20 Apr 2011 11:04:22 +0000 (13:04 +0200)]
softfloat: fix floatx80 handling of NaN

The floatx80 format uses an explicit bit that should be taken into account
when converting to and from commonNaN format.

When converting to commonNaN, the explicit bit should be removed if it is
a 1, and a default NaN should be used if it is 0.

When converting from commonNan, the explicit bit should be added.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agovmstate: port mac_dbdma
Juan Quintela [Thu, 2 Dec 2010 23:07:26 +0000 (00:07 +0100)]
vmstate: port mac_dbdma

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agomac_dbdma: create DBDMAState instead of passing one array around
Juan Quintela [Thu, 2 Dec 2010 23:04:02 +0000 (00:04 +0100)]
mac_dbdma: create DBDMAState instead of passing one array around

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port piix4
Juan Quintela [Thu, 2 Dec 2010 15:59:33 +0000 (16:59 +0100)]
vmstate: port piix4

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agopiix4: create PIIX4State
Juan Quintela [Thu, 2 Dec 2010 15:26:56 +0000 (16:26 +0100)]
piix4: create PIIX4State

It only contains a PCIDevice by know, but it makes easy to use migration code

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port mac_nvram
Juan Quintela [Fri, 3 Dec 2010 00:59:09 +0000 (01:59 +0100)]
vmstate: port mac_nvram

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agomac_nvram: size is a size, no need to be a target dependent type
Juan Quintela [Fri, 3 Dec 2010 00:54:21 +0000 (01:54 +0100)]
mac_nvram: size is a size, no need to be a target dependent type

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port nand
Juan Quintela [Fri, 3 Dec 2010 00:50:10 +0000 (01:50 +0100)]
vmstate: port nand

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agonand: pin values are uint8_t
Juan Quintela [Fri, 3 Dec 2010 00:39:22 +0000 (01:39 +0100)]
nand: pin values are uint8_t

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port max111x
Juan Quintela [Fri, 3 Dec 2010 00:03:59 +0000 (01:03 +0100)]
vmstate: port max111x

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agomax111x: input field is only used as uint8_t
Juan Quintela [Fri, 3 Dec 2010 00:03:10 +0000 (01:03 +0100)]
max111x: input field is only used as uint8_t

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port pxa2xx_lcd
Juan Quintela [Thu, 2 Dec 2010 15:11:24 +0000 (16:11 +0100)]
vmstate: port pxa2xx_lcd

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agopxa2xx_lcd: up field is used as a bool and migrated as an uint8_t
Juan Quintela [Thu, 2 Dec 2010 15:01:57 +0000 (16:01 +0100)]
pxa2xx_lcd: up field is used as a bool and migrated as an uint8_t

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agopxa2xx_lcd: name anonymous struct
Juan Quintela [Thu, 2 Dec 2010 14:56:04 +0000 (15:56 +0100)]
pxa2xx_lcd: name anonymous struct

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: stellaris use unused for placeholder entries
Juan Quintela [Thu, 2 Dec 2010 13:07:44 +0000 (14:07 +0100)]
vmstate: stellaris use unused for placeholder entries

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port stellaris gamepad
Juan Quintela [Thu, 2 Dec 2010 01:36:38 +0000 (02:36 +0100)]
vmstate: port stellaris gamepad

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port syborg_keyboard
Juan Quintela [Wed, 1 Dec 2010 21:51:07 +0000 (22:51 +0100)]
vmstate: port syborg_keyboard

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port syborg_serial
Juan Quintela [Fri, 3 Dec 2010 01:10:53 +0000 (02:10 +0100)]
vmstate: port syborg_serial

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port stellaris_adc
Juan Quintela [Fri, 3 Dec 2010 00:27:58 +0000 (01:27 +0100)]
vmstate: port stellaris_adc

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port syborg_pointer
Juan Quintela [Thu, 2 Dec 2010 23:37:35 +0000 (00:37 +0100)]
vmstate: port syborg_pointer

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port ppc4xx_pci
Juan Quintela [Thu, 2 Dec 2010 16:27:49 +0000 (17:27 +0100)]
vmstate: port ppc4xx_pci

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port ppce500_pci
Juan Quintela [Thu, 2 Dec 2010 14:29:42 +0000 (15:29 +0100)]
vmstate: port ppce500_pci

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port pxa2xx_pm
Juan Quintela [Thu, 2 Dec 2010 13:54:38 +0000 (14:54 +0100)]
vmstate: port pxa2xx_pm

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port pxa2xx_mm
Juan Quintela [Thu, 2 Dec 2010 13:36:57 +0000 (14:36 +0100)]
vmstate: port pxa2xx_mm

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port pxa2xx_cm
Juan Quintela [Thu, 2 Dec 2010 13:31:14 +0000 (14:31 +0100)]
vmstate: port pxa2xx_cm

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port pxa2xx_i2s
Juan Quintela [Thu, 2 Dec 2010 13:14:56 +0000 (14:14 +0100)]
vmstate: port pxa2xx_i2s

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port stellaris gptm
Juan Quintela [Thu, 2 Dec 2010 13:07:01 +0000 (14:07 +0100)]
vmstate: port stellaris gptm

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port cuda
Juan Quintela [Thu, 2 Dec 2010 12:53:24 +0000 (13:53 +0100)]
vmstate: port cuda

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port heathrow_pic
Juan Quintela [Thu, 2 Dec 2010 12:17:23 +0000 (13:17 +0100)]
vmstate: port heathrow_pic

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port pl022 ssp
Juan Quintela [Thu, 2 Dec 2010 11:43:50 +0000 (12:43 +0100)]
vmstate: port pl022 ssp

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port stellaris sys
Juan Quintela [Thu, 2 Dec 2010 02:03:11 +0000 (03:03 +0100)]
vmstate: port stellaris sys

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port stellaris ssi bus
Juan Quintela [Thu, 2 Dec 2010 01:51:29 +0000 (02:51 +0100)]
vmstate: port stellaris ssi bus

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port stellaris i2c
Juan Quintela [Thu, 2 Dec 2010 01:48:43 +0000 (02:48 +0100)]
vmstate: port stellaris i2c

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port armv7m nvic
Juan Quintela [Thu, 2 Dec 2010 01:17:33 +0000 (02:17 +0100)]
vmstate: port armv7m nvic

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port pl011
Juan Quintela [Thu, 2 Dec 2010 00:50:33 +0000 (01:50 +0100)]
vmstate: port pl011

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port pxa2xx_keypad
Juan Quintela [Thu, 2 Dec 2010 00:06:08 +0000 (01:06 +0100)]
vmstate: port pxa2xx_keypad

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port syborg_rtc
Juan Quintela [Wed, 1 Dec 2010 23:44:28 +0000 (00:44 +0100)]
vmstate: port syborg_rtc

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port pmtimer
Juan Quintela [Wed, 1 Dec 2010 22:51:14 +0000 (23:51 +0100)]
vmstate: port pmtimer

It was a half conversion.  Finish it.
enabled can only get values of 0, 1 or 2, was declared as an int but
sent as an unint8_t, change its type.

Signed-off-by: Juan Quintela <quintela@redhat.com>
13 years agovmstate: port sysborg_timer
Juan Quintela [Wed, 1 Dec 2010 22:18:59 +0000 (23:18 +0100)]
vmstate: port sysborg_timer

Signed-off-by: Juan Quintela <quintela@redhat.com>