sdk/emulator/qemu.git
13 years agohw/pl061.c: Implement ARM PL061 as well as Luminary one
Peter Maydell [Mon, 21 Feb 2011 20:57:51 +0000 (20:57 +0000)]
hw/pl061.c: Implement ARM PL061 as well as Luminary one

ARM's PL061 has a different set of ID registers to the one in the
Luminary Stellaris; implement this so that the Linux driver can
identify the Realview PBX PL061 correctly.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agohw/arm_sysctl.c: Wire MCI register MMC card status bits to GPIO inputs
Peter Maydell [Mon, 21 Feb 2011 20:57:50 +0000 (20:57 +0000)]
hw/arm_sysctl.c: Wire MCI register MMC card status bits to GPIO inputs

Implement some GPIO inputs which a board can connect up to set the
MMC card status bits in the MCI register.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agohw/pl181: Implement GPIO output pins for card status
Peter Maydell [Mon, 21 Feb 2011 20:57:49 +0000 (20:57 +0000)]
hw/pl181: Implement GPIO output pins for card status

Add two GPIO output pins to the PL181 model to indicate the card
present and readonly status information. On ARM boards these usually
are reflected in a system register.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agolsi53c895a: Update dnad when skipping MSGOUT bytes
Stefan Hajnoczi [Wed, 26 Jan 2011 12:31:00 +0000 (12:31 +0000)]
lsi53c895a: Update dnad when skipping MSGOUT bytes

Update not only dbc but also dnad when skipping bytes during the MSGOUT
phase.  Previously only dbc was updated which is probably wrong and
could lead to bogus message codes being read.

Tested on Linux and Windows Server 2003.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoWIN32: Add missing include for 'struct timeval', used in vnc.h
Hervé Poussineau [Sun, 6 Mar 2011 13:23:13 +0000 (13:23 +0000)]
WIN32: Add missing include for 'struct timeval', used in vnc.h

Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agohw/pcnet.c: Fix EPROM contents to suit AMD netware drivers
Gerhard Wiesinger [Sat, 5 Mar 2011 12:44:39 +0000 (13:44 +0100)]
hw/pcnet.c: Fix EPROM contents to suit AMD netware drivers

bugfix under DOS for AMD netware driver:
AMD PCNTNW Ethernet MLID v3.10 (960115), network card not found

bugfix works well under DOS with:
1.) AMD NDIS driver v2.0.1
2.) AMD PCNTNW Ethernet MLID v3.10 (960115)
3.) Knoppix 6.2

Signed-off-by: Gerhard Wiesinger <lists@wiesinger.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agonet: fix qemu_can_send_packet logic
Vincent Palatin [Wed, 2 Mar 2011 22:25:02 +0000 (17:25 -0500)]
net: fix qemu_can_send_packet logic

If any of the clients is not ready to receive (ie it has a can_receive
callback and can_receive() returns false), we don't want to start
sending, else this client may miss/discard the packet.

I got this behaviour with the following setup :
the emulated machine is using an USB-ethernet adapter, it is connected
to the network using SLIRP and I'm dumping the traffic in a .pcap file.
As per the following command line :
-net nic,model=usb,vlan=1 -net user,vlan=1 -net dump,vlan=1,file=/tmp/pkt.pcap
Every time that two packets are coming in a row from the host, the
usb-net code will receive the first one, then returns 0 to can_receive
call since it has a 1 packet long queue. But as the dump code is always
ready to receive, qemu_can_send_packet will return true and the next
packet will discard the previous one in the usb-net code.

Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agonet: fix trace when debug is activated in slirp
Vincent Palatin [Wed, 2 Mar 2011 22:25:01 +0000 (17:25 -0500)]
net: fix trace when debug is activated in slirp

make the code compile correctly when DEBUG is activated.

Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agolinux-user: fix compile failure if !CONFIG_USE_GUEST_BASE
Peter Maydell [Thu, 10 Feb 2011 16:53:04 +0000 (16:53 +0000)]
linux-user: fix compile failure if !CONFIG_USE_GUEST_BASE

If CONFIG_USE_GUEST_BASE is not defined, gcc complains:
 linux-user/mmap.c:235: error: comparison of unsigned expression >= 0 is always true

because RESERVED_VA is #defined to 0. Since mmap_find_vma_reserved()
will never be called anyway if RESERVED_VA is always 0, fix this by
simply #ifdef'ing away the function and its callsite.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agovirtio-net: Fix lduw_p() pointer argument of wrong size
Stefan Hajnoczi [Thu, 3 Mar 2011 21:42:28 +0000 (21:42 +0000)]
virtio-net: Fix lduw_p() pointer argument of wrong size

A pointer to a size_t variable was passed as the void * pointer to
lduw_p() in virtio_net_receive().  Instead of acting on the 16-bit value
this caused failure on big-endian hosts.

Avoid this issue in the future by using stw_p() instead.  In general we
should use ld*_p() for loading from target memory and st*_p() for
storing to target memory anyway, not the other way around.

Also tighten up a correct use of lduw_p() when stw_p() should be used
instead in virtio_net_get_config().

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-sh4: move intr_at_halt out of cpu_halted()
Aurelien Jarno [Thu, 24 Feb 2011 11:31:41 +0000 (12:31 +0100)]
target-sh4: move intr_at_halt out of cpu_halted()

All targets except SH4 have the same cpu_halted() routine, and it has
only one caller. It is therefore a good candidate for inlining.

The difference is the handling of the intr_at_halt, which is necessary
to ignore SR.BL when sleeping. Move intr_at_halt handling out of it, by
setting this variable while executing the sleep instruction, and
clearing it when the CPU has been woken-up by an interrupt, whatever the
state of SR.BL. Also rename this variable in_sleep.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agopxa2xx: port pxa2xx_rtc to using qdev/vmstate
Andrzej Zaborowski [Thu, 3 Mar 2011 14:13:42 +0000 (15:13 +0100)]
pxa2xx: port pxa2xx_rtc to using qdev/vmstate

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
13 years agopxa2xx_dma: Get rid of a forward declaration.
Andrzej Zaborowski [Thu, 3 Mar 2011 14:06:03 +0000 (15:06 +0100)]
pxa2xx_dma: Get rid of a forward declaration.

13 years agopxa2xx_dma: port to qdev/vmstate
Andrzej Zaborowski [Thu, 3 Mar 2011 14:04:51 +0000 (15:04 +0100)]
pxa2xx_dma: port to qdev/vmstate

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
13 years agovmstate: move VMSTATE_PCIE_AER_ERRS to hw/hw.h
Dmitry Eremin-Solenikov [Sun, 20 Feb 2011 13:50:35 +0000 (16:50 +0300)]
vmstate: move VMSTATE_PCIE_AER_ERRS to hw/hw.h

VMSTATE_PCIE_AER_ERRS is indeed useful for other emulation drivers.
Move it to hw/hw.h under the name of VMSTATE_STRUCT_VARRAY_POINTER_UINT16.
Also add VMSTATE_STRUCT_VARRAY_POINTER_INT32 which is more or less
the same as _UINT16 macro, except the fact it uses int32_t internally.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
13 years agopxa2xx_dma: drop unused pxa2xx_dma_handler_t/handler field
Dmitry Eremin-Solenikov [Sun, 20 Feb 2011 13:50:36 +0000 (16:50 +0300)]
pxa2xx_dma: drop unused pxa2xx_dma_handler_t/handler field

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
13 years agopxa2xx_timer: Store relevant irq line in each timer.
Andrzej Zaborowski [Thu, 3 Mar 2011 13:24:25 +0000 (14:24 +0100)]
pxa2xx_timer: Store relevant irq line in each timer.

13 years agopxa2xx_timer: switch to using qdev/vmstate
Dmitry Eremin-Solenikov [Thu, 3 Mar 2011 13:14:44 +0000 (14:14 +0100)]
pxa2xx_timer: switch to using qdev/vmstate

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
13 years agopxa2xx_timer: change info struct name to comply with guidelines
Dmitry Eremin-Solenikov [Sun, 20 Feb 2011 13:50:33 +0000 (16:50 +0300)]
pxa2xx_timer: change info struct name to comply with guidelines

It should be PXA2xxTimerInfo, not pxa2xx_timer_info. Replace all
occurences of old name with the new one.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
13 years agopxa2xx_pic: Set base address for sysbus device.
Andrzej Zaborowski [Thu, 3 Mar 2011 02:43:40 +0000 (03:43 +0100)]
pxa2xx_pic: Set base address for sysbus device.

Thid device's registration was broken since
e1f8c729fa890c67bb4532f22c22ace6fb0e1aaf, this should fix it.

13 years agovmstate: add VMSTATE_STRUCT_ARRAY_TEST
Dmitry Eremin-Solenikov [Thu, 3 Mar 2011 02:34:01 +0000 (03:34 +0100)]
vmstate: add VMSTATE_STRUCT_ARRAY_TEST

This is a _TEST variant of VMSTATE_STRUCT_ARRAY, necessary e.g.
for future patch changing pxa2xx_timer to use vmstate.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
13 years agomicroblaze: Correct copy+paste:o in defconfigs
Edgar E. Iglesias [Tue, 1 Mar 2011 21:17:52 +0000 (22:17 +0100)]
microblaze: Correct copy+paste:o in defconfigs

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
13 years agoHACKING: Update status of format checking
Stefan Weil [Fri, 25 Feb 2011 22:30:20 +0000 (16:30 -0600)]
HACKING: Update status of format checking

Hopefully all functions with printf like arguments now use format checking.

This was tested with default build configuration on linux
and windows hosts (including some cross compilations),
so chances are good that there remain few (if any) functions
without format checking.

Therefore the last comment in HACKING is no longer valid but misleading.

Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: fix a memory leak in threaded vnc server
Corentin Chary [Fri, 25 Feb 2011 21:54:53 +0000 (22:54 +0100)]
vnc: fix a memory leak in threaded vnc server

VncJobQueue's buffer is intended to be used for
as the output buffer for all operations in this queue,
but unfortunatly.

vnc_async_encoding_start() is in charge of setting this
buffer as the current output buffer, but
vnc_async_encoding_end() was not writting the changes back
to VncJobQueue, resulting in a big and ugly memleak.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agoUse sigwait instead of sigwaitinfo.
Tristan Gingold [Fri, 18 Feb 2011 13:17:16 +0000 (14:17 +0100)]
Use sigwait instead of sigwaitinfo.

Fix compilation failure on Darwin.

Signed-off-by: Tristan Gingold <gingold@adacore.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agobitops: fix error on OpenBSD and mingw32
Blue Swirl [Fri, 25 Feb 2011 17:21:22 +0000 (17:21 +0000)]
bitops: fix error on OpenBSD and mingw32

Fix this error:
  CC    bitops.o
In file included from /src/qemu/bitops.c:14:
/src/qemu/bitops.h:69: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'unsigned'

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agobitops: fix test_and_change_bit()
Corentin Chary [Thu, 24 Feb 2011 22:47:08 +0000 (23:47 +0100)]
bitops: fix test_and_change_bit()

./bitops.h:192: warning: ‘old’ is used uninitialized in this function

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoslirp: Remove some type casts caused by bad declaration of x.tp_buf
Stefan Weil [Wed, 23 Feb 2011 18:40:14 +0000 (19:40 +0100)]
slirp: Remove some type casts caused by bad declaration of x.tp_buf

x.tp_buf was declared as a uint8_t array, but always used as
a char array (which needed a lot of type casts).

The patch includes these changes:

* Fix declaration of x.tp_buf and remove all type casts.

* Use offsetof() to get the offset of x.tp_buf.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoFixing tap adapter for win32
Pavel Dovgaluk [Mon, 21 Feb 2011 11:47:50 +0000 (14:47 +0300)]
Fixing tap adapter for win32

   This fix allows connection of internal VLAN to the external TAP interface.
If tap_win32_write function always returns 0, the TAP network interface
in QEMU is disabled.

Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoFixing network over sockets implementation for win32
Pavel Dovgaluk [Mon, 21 Feb 2011 11:46:44 +0000 (14:46 +0300)]
Fixing network over sockets implementation for win32

  MSDN includes the following in WSAEALREADY error description for connect()
function: "To preserve backward compatibility, this error is reported as
WSAEINVAL to Winsock applications that link to either Winsock.dll or
Wsock32.dll". So check of this error code was added to allow network
connections through the sockets in Windows.

Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agopxa2xx_pic: update to use qdev
Dmitry Eremin-Solenikov [Fri, 25 Feb 2011 11:13:38 +0000 (12:13 +0100)]
pxa2xx_pic: update to use qdev

Use qdev/sysbus framework to handle pxa2xx-pic. Instead of exposing IRQs
via array, reference them via qdev_get_gpio_in().

Patch has been modified by the committer.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
13 years agomst_fpga: correct irq level settings
Dmitry Eremin-Solenikov [Wed, 16 Feb 2011 13:22:33 +0000 (16:22 +0300)]
mst_fpga: correct irq level settings

Final corrections for IRQ levels that are set by mst_fpga:

* Don't retranslate IRQ if previously IRQ was masked.
* After setting or clearing IRQs through register, apply mask
  before setting parent IRQ level.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
13 years agoui/vnc-enc-tight.c: Fix compile failure if CONFIG_VNC_JPEG not defined
Peter Maydell [Thu, 24 Feb 2011 16:04:22 +0000 (16:04 +0000)]
ui/vnc-enc-tight.c: Fix compile failure if CONFIG_VNC_JPEG not defined

Add some missing #ifdefs to fix compilation failures in the !CONFIG_VNC_JPEG
case introduced by commit ce702e93.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovirtio-serial: kill VirtIOSerialDevice
Gerd Hoffmann [Thu, 24 Feb 2011 05:44:12 +0000 (11:14 +0530)]
virtio-serial: kill VirtIOSerialDevice

VirtIOSerialDevice is like VirtIOSerialPort with just the first two
fields, which makes it pretty pointless.  Using VirtIOSerialPort
directly works equally well and is less confusing.

[Amit: - rebase
       - rename 'dev' to 'port' in function params in virtio-serial.h ]

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agoAdd TAGS and *~ to .gitignore
David Gibson [Thu, 24 Feb 2011 05:34:59 +0000 (16:34 +1100)]
Add TAGS and *~ to .gitignore

Add the etags output generated by "make TAGS" and editor backup files
to .gitignore.

This patch has previously appeared in my series of patches to add
pSeries emulation support.  However, it obviously has no real
connection to that, and can be applied seperately.

Please apply.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agotarget-arm: fix support for VRSQRTE.
Christophe Lyon [Mon, 21 Feb 2011 16:38:48 +0000 (17:38 +0100)]
target-arm: fix support for VRSQRTE.

Now use the same algorithm as described in the ARM ARM.

Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: fix support for VRECPE.
Christophe Lyon [Mon, 21 Feb 2011 16:38:47 +0000 (17:38 +0100)]
target-arm: fix support for VRECPE.

Now use the same algorithm as described in the ARM ARM.

Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Introduce float64_256 and float64_512 constants.
Christophe Lyon [Mon, 21 Feb 2011 16:38:46 +0000 (17:38 +0100)]
target-arm: Introduce float64_256 and float64_512 constants.

These two constants will be used by helper functions such as recpe_f32
and rsqrte_f32.

Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agosoftfloat: add _set_sign(), _infinity and _half for 32 and 64 bits floats.
Christophe Lyon [Mon, 21 Feb 2011 16:38:45 +0000 (17:38 +0100)]
softfloat: add _set_sign(), _infinity and _half for 32 and 64 bits floats.

These constants and utility function are needed to implement some
helpers. Defining constants avoids the need to re-compute them at
runtime.

Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agosoftfloat: move all default NaN definitions to softfloat.h.
Christophe Lyon [Mon, 21 Feb 2011 16:38:44 +0000 (17:38 +0100)]
softfloat: move all default NaN definitions to softfloat.h.

These special values are needed to implement some helper functions,
which return/use these values in some cases.

Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agohw/sd.c: Add missing state change for SD_STATUS, SEND_NUM_WR_BLOCKS
Peter Maydell [Fri, 18 Feb 2011 13:39:00 +0000 (13:39 +0000)]
hw/sd.c: Add missing state change for SD_STATUS, SEND_NUM_WR_BLOCKS

The SD_STATUS and SEND_NUM_WR_BLOCKS commands are supposed to cause
the card to send data back to the host. However sd.c was missing the
state change to sd_sendingdata_state for these commands, with the effect
that the Linux driver would either hang indefinitely waiting for
nonexistent data (pl181) or read zeroes and provoke a qemu warning
message (omap).

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agovnc: Fix fatal crash with vnc reverse mode
Stefan Weil [Wed, 16 Feb 2011 19:48:00 +0000 (20:48 +0100)]
vnc: Fix fatal crash with vnc reverse mode

Reverse mode is unusable:

qemu -vnc localhost:5500,reverse

crashes in vnc_refresh_server_surface because some pointers are NULL.

Fix this by calling vnc_dpy_resize (which initializes these pointers)
before calling vnc_refresh.

Cc: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: add a non-adaptive option
Corentin Chary [Fri, 4 Feb 2011 08:06:08 +0000 (09:06 +0100)]
vnc: add a non-adaptive option

This option allow to disable adaptive behaviors in some encodings.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: tight: tweak adaptive tight settings
Corentin Chary [Fri, 4 Feb 2011 08:06:07 +0000 (09:06 +0100)]
vnc: tight: tweak adaptive tight settings

The force_jpeg threshold was too low.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: don't try to send bigger updates that client height
Corentin Chary [Fri, 4 Feb 2011 08:06:06 +0000 (09:06 +0100)]
vnc: don't try to send bigger updates that client height

Respect client size if it doesn't not support desktop resizing.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: use the new generic bitmap functions
Corentin Chary [Fri, 4 Feb 2011 08:06:05 +0000 (09:06 +0100)]
vnc: use the new generic bitmap functions

Switch to bitmap.h and bitops.h instead of redefining our own bitmap
helpers.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agobitmap: add a generic bitmap and bitops library
Corentin Chary [Fri, 4 Feb 2011 08:06:04 +0000 (09:06 +0100)]
bitmap: add a generic bitmap and bitops library

Add most used bitmap and bitops functions into bitmap.c and bitops.c.
Theses functions are mostly copied from Linux kernel source.

Some of these functions are already redefined in the VNC server. Some
of them could be used for some block stuff. The yet yo be submitted
NUMA work also need bitmaps.

bitops_ffsl() and bitops_flsl() are here because bitops/bitmap works
on unsigned long, not int, and we can't use current code because:
* ffs only works on int
* qemu_fls only works on int
* ffsl is a GNU extension

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: fix lossy rect refreshing
Corentin Chary [Fri, 4 Feb 2011 08:06:03 +0000 (09:06 +0100)]
vnc: fix lossy rect refreshing

The for loop in send_lossy_rect was totally wrong, and we can't
call vnc_set_bits() because it does not really do what it should.
Use vnc_set_bit() directly instead.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: fix uint8_t comparisons with negative values
Corentin Chary [Fri, 4 Feb 2011 08:06:02 +0000 (09:06 +0100)]
vnc: fix uint8_t comparisons with negative values

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: Add ZRLE and ZYWRLE encodings.
Corentin Chary [Fri, 4 Feb 2011 08:06:01 +0000 (09:06 +0100)]
vnc: Add ZRLE and ZYWRLE encodings.

Add ZRLE [1] and ZYWRLE [2] encodings. The code is inspire^W stolen
from libvncserver (again), but have been rewriten to match QEMU coding
style.

[1] http://www.realvnc.com/docs/rfbproto.pdf
[2] http://micro-vnc.jp/research/remote_desktop_ng/ZYWRLE/publications/

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: palette: and fill and color calls.
Corentin Chary [Fri, 4 Feb 2011 08:06:00 +0000 (09:06 +0100)]
vnc: palette: and fill and color calls.

These two helpers are needed for zrle and zywrle.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: palette: add palette_init calls
Corentin Chary [Fri, 4 Feb 2011 08:05:59 +0000 (09:05 +0100)]
vnc: palette: add palette_init calls

This allow to use palette on the stack instead of always
allocating them.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: palette: use a pool to reduce memory allocations
Corentin Chary [Fri, 4 Feb 2011 08:05:58 +0000 (09:05 +0100)]
vnc: palette: use a pool to reduce memory allocations

We now that the palette will never have more than 256
elements. Let's use a pool to reduce malloc calls.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: tight: use the update frequency to choose between lossy and lossless
Corentin Chary [Fri, 4 Feb 2011 08:05:57 +0000 (09:05 +0100)]
vnc: tight: use the update frequency to choose between lossy and lossless

Use the new update frequency infrastructure to use jpeg for regions with
high update frequency.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: refresh lossy rect after a given timeout
Corentin Chary [Fri, 4 Feb 2011 08:05:56 +0000 (09:05 +0100)]
vnc: refresh lossy rect after a given timeout

If an adaptive encoding has choosen to send a lossy update
based on the result of vnc_update_freq(), then it should advertise
it with vnc_sent_lossy_rect(). This will allow to automatically refresh
this rect once it's static again.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: add a way to get the update frequency for a given region
Corentin Chary [Fri, 4 Feb 2011 08:05:55 +0000 (09:05 +0100)]
vnc: add a way to get the update frequency for a given region

This patch compute the update frequency (in Hz) for each 64x64 rects.
Any adaptive encoding can get this value using vnc_update_freq(), and
switch to a lossy encoding if the value is too high.

The frequency is pre-calculated every 500ms, based on the last 10
updates per 64x64 rect.

If a 64x64 rect was not updated in the last 2 second, then the frequency
became 0, and all the stored timestamp are reseted.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agovnc: don't set the quality if lossy encoding are disabled
Corentin Chary [Fri, 4 Feb 2011 08:05:54 +0000 (09:05 +0100)]
vnc: don't set the quality if lossy encoding are disabled

This should not change the current behavior, but if any new
encoding try to use the tight quality, it will always be set
to -1 when lossy encodings are disabled.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agomicroblaze: Allow targeting little-endian mb
Edgar E. Iglesias [Mon, 21 Feb 2011 11:42:20 +0000 (12:42 +0100)]
microblaze: Allow targeting little-endian mb

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@petalogix.com>
13 years agopls3adsp1800: Base load_elf endianness on target endianness
Edgar E. Iglesias [Mon, 21 Feb 2011 11:30:27 +0000 (12:30 +0100)]
pls3adsp1800: Base load_elf endianness on target endianness

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@petalogix.com>
13 years agodo not use qemu_icount_delta in the !use_icount case
Paolo Bonzini [Mon, 21 Feb 2011 08:51:23 +0000 (09:51 +0100)]
do not use qemu_icount_delta in the !use_icount case

The !use_icount code is the same for iothread and non-iothread,
except that the timeout is different.  Since the timeout might as
well be infinite and is only masking bugs, use the higher value.
With this change the !use_icount code is handled equivalently
in qemu_icount_delta and qemu_calculate_timeout, and we rip it
out of the former.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@petalogix.com>
13 years agohw/irq.h: Remove unused SetIRQFunc typedef
Peter Maydell [Mon, 21 Feb 2011 14:58:26 +0000 (14:58 +0000)]
hw/irq.h: Remove unused SetIRQFunc typedef

Remove the typedef SetIRQFunc, as it is not used by anything.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoRevert "prep: Disable second IDE channel, as long as ISA IDE emulation doesn't suppor...
Aurelien Jarno [Mon, 21 Feb 2011 14:53:05 +0000 (15:53 +0100)]
Revert "prep: Disable second IDE channel, as long as ISA IDE emulation doesn't support same irq for both channels"

This reverts commit 491e2a338fdf8310c84f6ebaed1683a871a0700e.

13 years agoisa-bus: Remove bogus IRQ sharing check
Jan Kiszka [Sat, 19 Feb 2011 17:56:22 +0000 (18:56 +0100)]
isa-bus: Remove bogus IRQ sharing check

Nothing prevented IRQ sharing on the ISA bus in principle. Not all
boards supported this, neither each and every card nor driver and OS.
Still, there existed valid IRQ sharing scenarios, (at least) two of them
can also be found in QEMU: >2 PC UARTs and the PREP IDE buses.

So remove this artificial restriction from our ISA model.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoPS/2 keyboard Scancode Set 3 support
Roy Tam [Mon, 21 Feb 2011 00:06:32 +0000 (08:06 +0800)]
PS/2 keyboard Scancode Set 3 support

The following patch adds PS/2 keyboard Scancode Set 3 support.

Signed-off-by: Roy Tam <roytam@gmail.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Fix shift by immediate and narrow where src, dest overlap
Peter Maydell [Mon, 21 Feb 2011 11:05:22 +0000 (11:05 +0000)]
target-arm: Fix shift by immediate and narrow where src, dest overlap

For Neon shifts by immediate and narrow, correctly handle the case
where the source registers and the destination registers overlap
(the second pass should use the original register contents, not the
results of the first pass).

This includes a refactoring to pull the size check outside the
loop rather than inside, since there is now very little common
code between the size == 3 and size != 3 case.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Refactor to pull narrowing decode into separate function
Peter Maydell [Mon, 21 Feb 2011 11:05:21 +0000 (11:05 +0000)]
target-arm: Refactor to pull narrowing decode into separate function

Pull the code which decodes narrowing operations as being either
signed/unsigned saturate or plain out into its own function.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agow32: Remove implementation of function ffs
Stefan Weil [Fri, 4 Feb 2011 21:38:48 +0000 (22:38 +0100)]
w32: Remove implementation of function ffs

This implementation is no longer needed.

ffs is either a built-in function (for compilations with optimisation)
or taken from libiberty.a (which was added by the previous patch).

Cc: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agow32: Use additional library libiberty.a
Stefan Weil [Fri, 4 Feb 2011 21:38:47 +0000 (22:38 +0100)]
w32: Use additional library libiberty.a

libiberty.a is part of MinGW and provides useful functions
like ffs (MinGW) and getopt (MinGW-w64).

It is needed for w64 compilations and allows simpler code for w32.

Cc: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoFix obvious mistake in pxa2xx i2s driver
Vasily Khoruzhick [Sun, 20 Feb 2011 19:23:59 +0000 (21:23 +0200)]
Fix obvious mistake in pxa2xx i2s driver

RST bit is (1 << 4) bit, not (1 << 3), fix condition
that enables i2s if ENB is set and RST is not set.

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agopxa2xx_keypad: Handle 0xe0xx keycodes
Vasily Khoruzhick [Tue, 15 Feb 2011 13:27:29 +0000 (15:27 +0200)]
pxa2xx_keypad: Handle 0xe0xx keycodes

Add handling of 0xe0xx keycodes to pxa2xx_driver.
Extended keycodes in keymap should be marked with most significant
bit set (i.e. 0x80). Without this patch it's not possible to handle
i.e. cursor keys.

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agopxa2xx_keypad: enhance emulation of KPAS, KPASMKP regs
Vasily Khoruzhick [Tue, 15 Feb 2011 13:27:28 +0000 (15:27 +0200)]
pxa2xx_keypad: enhance emulation of KPAS, KPASMKP regs

Add emulation of KPAS register and proper emulation of
KPASMKP regs, so now driver supports multipresses and properly
works with Linux driver.

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoqdev: Fix printout of bit device properties with bit index >= 8
David 'Digit' Turner [Mon, 10 Jan 2011 22:11:40 +0000 (23:11 +0100)]
qdev: Fix printout of bit device properties with bit index >= 8

Signed-off-by: David 'Digit' Turner <digit@google.com>
Acked-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agocheck-qdict: Fix possible crash
Stefan Weil [Fri, 21 Jan 2011 21:50:30 +0000 (22:50 +0100)]
check-qdict: Fix possible crash

This warning is reported by cppcheck:

check-qdict.c:270: warning: scanf without field width limits can crash with huge input data

Fix it by limiting the field widths to 127 (both key and value take
127 characters + a terminating '\0' byte).

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotests: Fix two memory leaks
Stefan Weil [Fri, 21 Jan 2011 21:49:29 +0000 (22:49 +0100)]
tests: Fix two memory leaks

Although both leaks are not really important, fix them
to avoid cppcheck warnings:

tests/linux-test.c:433: error: Memory leak: stack1
tests/linux-test.c:433: error: Memory leak: stack2

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoqemu-char: Check for missing backend name
Stefan Hajnoczi [Sat, 22 Jan 2011 13:07:26 +0000 (13:07 +0000)]
qemu-char: Check for missing backend name

Check if the backend option is missing before searching the backend
table.  This fixes a NULL pointer dereference when QEMU is invoked with
the following invalid command-line:

  $ qemu -chardev id=foo,path=/tmp/socket

Previously QEMU would segfault, now it produces this error message:

  chardev: "foo" missing backend

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agos390: Fix memory leak
Stefan Weil [Sat, 22 Jan 2011 12:02:46 +0000 (13:02 +0100)]
s390: Fix memory leak

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoppc405: Fix memory leak
Stefan Weil [Sat, 22 Jan 2011 12:02:45 +0000 (13:02 +0100)]
ppc405: Fix memory leak

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Acked-by: Andreas Färber <andreas.faerber@web.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agopci: Fix memory leak
Stefan Weil [Sat, 22 Jan 2011 12:02:44 +0000 (13:02 +0100)]
pci: Fix memory leak

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agovhost: disable on tap link down
Michael S. Tsirkin [Wed, 9 Feb 2011 16:45:09 +0000 (18:45 +0200)]
vhost: disable on tap link down

qemu makes it possible to disable link at tap which is not communicated
to the guest but causes all packets to be dropped.

When vhost-net is enabled, vhost needs to be aware of both the virtio
link_down and the peer link_down. we switch to userspace emulation when
either is down.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reported-by: pradeep <psuriset@linux.vnet.ibm.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agonet: notify peer about link status change
Michael S. Tsirkin [Wed, 9 Feb 2011 16:45:04 +0000 (18:45 +0200)]
net: notify peer about link status change

qemu makes it possible to disable link at tap which is not communicated
to the guest but causes all packets to be dropped.

This works for virtio userspace, as qemu stops giving it packets, but
not for virtio-net connected to vhost-net as that does not get notified
about this change.

Notify peer when this happens, which will then be used by the follow-up
patch to stop/start vhost-net.

Note: it might be a good idea to make peer link status match tap in this
case, so the guest gets an event and updates the carrier state. For now
stay bug for bug compatible with what we used to have in userspace.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reported-by: pradeep <psuriset@linux.vnet.ibm.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agow32: Fix arguments for GetProcessAffinityMask, SetProcessAffinityMask
Stefan Weil [Sat, 5 Feb 2011 19:59:49 +0000 (20:59 +0100)]
w32: Fix arguments for GetProcessAffinityMask, SetProcessAffinityMask

These functions take arguments of type PDWORD_PTR which is a
pointer to a DWORD_PTR, not a pointer to a DWORD.

Cc: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Fix unsigned VQRSHL by large shift counts
Peter Maydell [Tue, 15 Feb 2011 13:44:49 +0000 (13:44 +0000)]
target-arm: Fix unsigned VQRSHL by large shift counts

Correctly handle VQRSHL of unsigned values by a shift count of the
width of the data type or larger, which must be special-cased in the
qrshl_u* helper functions.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Fix signed VQRSHL by large shift counts
Peter Maydell [Tue, 15 Feb 2011 13:44:48 +0000 (13:44 +0000)]
target-arm: Fix signed VQRSHL by large shift counts

Handle the case of signed VQRSHL by a shift count of the width of the
data type or larger, which must be special cased in the qrshl_s*
helper functions.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: fix decoding of Neon 64 bit shifts.
Christophe Lyon [Tue, 15 Feb 2011 13:44:47 +0000 (13:44 +0000)]
target-arm: fix decoding of Neon 64 bit shifts.

Fix decoding of 64 bits variants of VSHRN, VRSHRN, VQSHRN, VQSHRUN,
VQRSHRN, VQRSHRUN, taking into account whether inputs are unsigned
or not.

Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: fix Neon VQSHRN and VSHRN.
Christophe Lyon [Tue, 15 Feb 2011 13:44:46 +0000 (13:44 +0000)]
target-arm: fix Neon VQSHRN and VSHRN.

Call the normal shift helpers instead of the rounding ones.

Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Fix saturated values for Neon right shifts
Peter Maydell [Tue, 15 Feb 2011 13:44:45 +0000 (13:44 +0000)]
target-arm: Fix saturated values for Neon right shifts

Fix value returned by signed 8 and 16 bit qrshl helpers
when the result has saturated.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: fix unsigned 64 bit right shifts.
Christophe Lyon [Tue, 15 Feb 2011 13:44:44 +0000 (13:44 +0000)]
target-arm: fix unsigned 64 bit right shifts.

Fix range of shift amounts which always give 0 as result.

Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Fix unsigned VRSHL.s8 and .s16 right shifts by type width
Christophe Lyon [Tue, 15 Feb 2011 13:44:43 +0000 (13:44 +0000)]
target-arm: Fix unsigned VRSHL.s8 and .s16 right shifts by type width

Fix handling of unsigned VRSHL.s8 and .s16 right shifts by the type
width.

Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Fix signed VRSHL by large shift counts
Peter Maydell [Tue, 15 Feb 2011 13:44:42 +0000 (13:44 +0000)]
target-arm: Fix signed VRSHL by large shift counts

Correctly handle VRSHL of signed values by a shift count of the
width of the data type or larger, which must be special-cased in the
rshl_s* helper functions.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Fix rounding constant addition for Neon shifts
Christophe Lyon [Tue, 15 Feb 2011 13:44:41 +0000 (13:44 +0000)]
target-arm: Fix rounding constant addition for Neon shifts

Handle cases where adding the rounding constant could overflow in Neon
shift instructions: VRSHR, VRSRA, VQRSHRN, VQRSHRUN, VRSHRN.

Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
[peter.maydell@linaro.org: fix handling of large shifts in rshl_s32,
calculate signed saturated value as other functions do.]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Move Neon VZIP to helper functions
Peter Maydell [Mon, 14 Feb 2011 10:22:49 +0000 (10:22 +0000)]
target-arm: Move Neon VZIP to helper functions

Move the implementation of the Neon VUZP unzip instruction from inline
code to helper functions. (At 50+ TCG ops it was well over the
recommended limit for coding inline.) The helper implementations also
give the correct answers where the inline implementation did not.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Move Neon VUZP to helper functions
Peter Maydell [Mon, 14 Feb 2011 10:22:48 +0000 (10:22 +0000)]
target-arm: Move Neon VUZP to helper functions

Move the implementation of the Neon VUZP unzip instruction from inline
code to helper functions. (At 50+ TCG ops it was well over the
recommended limit for coding inline.) The helper implementations also
fix the handling of the quadword version of the instruction.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Correct conversion of Thumb Neon dp encodings into ARM
Juha Riihimäki [Fri, 11 Feb 2011 13:35:25 +0000 (13:35 +0000)]
target-arm: Correct conversion of Thumb Neon dp encodings into ARM

We handle Thumb Neon data processing instructions by converting them
into the equivalent ARM encoding, as the two are very close. However
the ARM encoding should have bit 28 set, not clear. This wasn't causing
any problems because we don't actually look at that bit during decode;
however it is better to do the conversion correctly to avoid problems
later if we add checks to UNDEF on SBZ/SBO bits.

Signed-off-by: Juha Riihimäki <juha.riihimaki@nokia.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Fix Neon VQDMLSL instruction
Peter Maydell [Fri, 11 Feb 2011 12:26:48 +0000 (12:26 +0000)]
target-arm: Fix Neon VQDMLSL instruction

For VQDMLSL, negation has to occur after saturation, not before.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Refactor handling of VQDMULL
Peter Maydell [Fri, 11 Feb 2011 12:26:47 +0000 (12:26 +0000)]
target-arm: Refactor handling of VQDMULL

Refactor the handling of VQDMULL so that it is dealt with in
its own if() case rather than together with the accumulating
instructions.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Implement VMULL.P8
Peter Maydell [Thu, 10 Feb 2011 19:07:55 +0000 (19:07 +0000)]
target-arm: Implement VMULL.P8

Implement VMULL.P8 (the 32x32->64 version of the polynomial multiply
instruction).

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoqemu-lock.h: Remove non-pthreads spinlock implementations
Peter Maydell [Mon, 31 Jan 2011 18:26:40 +0000 (18:26 +0000)]
qemu-lock.h: Remove non-pthreads spinlock implementations

Since configure guarantees us that we have pthreads on all hosts
except mingw (which doesn't support a USER_ONLY config), we can
and should use the pthread_mutex based implementation of spin_lock()
and spin_unlock() in all USER_ONLY cases. This means that all the
inline-native-assembly code supporting the "USER_ONLY but not USE_NPTL"
case can go away.

The not-USER_ONLY case remains as empty implementations; there is
no change in behaviour here.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoe1000: verify we have buffers, upfront
Michael S. Tsirkin [Tue, 15 Feb 2011 16:27:55 +0000 (18:27 +0200)]
e1000: verify we have buffers, upfront

The spec says: Any descriptor with a non-zero status byte has been
processed by the hardware, and is ready to be handled by the software.

Thus, once we change a descriptor status to non-zero we should
never move the head backwards and try to reuse this
descriptor from hardware.

This actually happened with a multibuffer packet
that arrives when we don't have enough buffers.

Fix by checking that we have enough buffers upfront
so we never need to discard the packet midway through.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
Acked-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoe1000: clear EOP for multi-buffer descriptors
Michael S. Tsirkin [Tue, 15 Feb 2011 16:27:52 +0000 (18:27 +0200)]
e1000: clear EOP for multi-buffer descriptors

The e1000 spec says: if software statically allocates
buffers, and uses memory read to check for completed descriptors, it
simply has to zero the status byte in the descriptor to make it ready
for reuse by hardware. This is not a hardware requirement (moving the
hardware tail pointer is), but is necessary for performing an in–memory
scan.

Thus the guest does not have to clear the status byte.  In case it
doesn't we need to clear EOP for all descriptors
except the last.  While I don't know of any such guests,
it's probably a good idea to stick to the spec.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reported-by: Juan Quintela <quintela@redhat.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
Acked-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoe1000: multi-buffer packet support
Michael S. Tsirkin [Tue, 15 Feb 2011 16:27:48 +0000 (18:27 +0200)]
e1000: multi-buffer packet support

e1000 supports multi-buffer packets larger than rxbuf_size.

This fixes the following (on linux):
- in guest: ifconfig eth1 mtu 16110
- in host: ifconfig tap0 mtu 16110
           ping -s 16082 <guest-ip>

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
Acked-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>