Frediano Ziglio [Tue, 23 Aug 2011 13:21:11 +0000 (15:21 +0200)]
qcow: Remove QCowAIOCB
Embed qcow_aio_read_cb into qcow_co_readv and qcow_aio_write_cb into qcow_co_writev
Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Frediano Ziglio [Tue, 23 Aug 2011 13:21:10 +0000 (15:21 +0200)]
qcow: move some blocks of code to avoid useless variable initialization
Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Frediano Ziglio [Tue, 23 Aug 2011 13:21:09 +0000 (15:21 +0200)]
qcow: QCowAIOCB field cleanup
remove unused field from this structure and put some of them in qcow_aio_read_cb and qcow_aio_write_cb
Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Frediano Ziglio [Tue, 23 Aug 2011 13:21:08 +0000 (15:21 +0200)]
qcow/qcow2: Allocate QCowAIOCB structure using stack
instead of calling qemi_aio_get use stack
Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Avi Kivity [Sun, 14 Aug 2011 04:04:49 +0000 (07:04 +0300)]
posix-aio-compat: fix latency issues
In certain circumstances, posix-aio-compat can incur a lot of latency:
- threads are created by vcpu threads, so if vcpu affinity is set,
aio threads inherit vcpu affinity. This can cause many aio threads
to compete for one cpu.
- we can create up to max_threads (64) aio threads in one go; since a
pthread_create can take around 30μs, we have up to 2ms of cpu time
under a global lock.
Fix by:
- moving thread creation to the main thread, so we inherit the main
thread's affinity instead of the vcpu thread's affinity.
- if a thread is currently being created, and we need to create yet
another thread, let thread being born create the new thread, reducing
the amount of time we spend under the main thread.
- drop the local lock while creating a thread (we may still hold the
global mutex, though)
Note this doesn't eliminate latency completely; scheduler artifacts or
lack of host cpu resources can still cause it. We may want pre-allocated
threads when this cannot be tolerated.
Thanks to Uli Obergfell of Red Hat for his excellent analysis and suggestions.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Christoph Hellwig [Sun, 21 Aug 2011 22:25:58 +0000 (00:25 +0200)]
block: include flush requests in info blockstats
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Nicholas Thomas [Mon, 15 Aug 2011 09:00:34 +0000 (10:00 +0100)]
block/curl: Handle failed reads gracefully.
Current behaviour if a read fails is for the acb to not get finished.
This causes an infinite loop in bdrv_read_em (block.c). The read failure
never gets reported to the guest and if the error condition clears, the
process never recovers.
With this patch, when curl reports a failure we finish the acb as a
failure. This results in the guest receiving an I/O error (rather than
the read hanging indefinitely) and if the error condition subsequently
clears, retries work as expected.
The simplest test is to put an ISO on a web server you have control over
and open it with qemu-io. Then move the ISO out of the way and attempt
to read some data - you should see behaviour matching the above.
Signed-off-by: Nick Thomas <nick@bytemark.co.uk>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Stefan Hajnoczi [Wed, 17 Aug 2011 16:41:09 +0000 (17:41 +0100)]
qemu-img: print error codes when convert fails
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Scott Wood [Thu, 11 Aug 2011 21:27:15 +0000 (16:27 -0500)]
qcow: initialize coroutine mutex
commit
52b8eb60132b27ad53476490e9d7579003390cfa added a mutex,
but never initialized it. This caused a segfault.
Reported-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Devin Nakamura [Sun, 7 Aug 2011 23:47:36 +0000 (19:47 -0400)]
qcow2: fix typo in documentation for qcow2_get_cluster_offset()
Documentation states the num is measured in clusters, but its
actually measured in sectors
Signed-off-by: Devin Nakamura <devin122@gmail.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Kevin Wolf [Mon, 8 Aug 2011 12:09:12 +0000 (14:09 +0200)]
qemu-img: Use qemu_blockalign
Now that you can use cache=none for the output file in qemu-img, we should
properly align our buffers so that raw-posix doesn't have to use its (smaller)
bounce buffer.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Philipp Hahn [Thu, 4 Aug 2011 17:22:10 +0000 (19:22 +0200)]
qcow2: Fix DEBUG_* compilation
By introducing BlockDriverState compiling qcow2 with DEBUG_ALLOC and DEBUG_EXT
defined got broken.
Define a BdrvCheckResult structure locally which is now needed as the second
argument.
Also fix qcow2_read_extensions() needing BDRVQcowState.
Signed-off-by: Philipp Hahn <hahn@univention.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Stefan Hajnoczi [Thu, 4 Aug 2011 11:26:52 +0000 (12:26 +0100)]
block: add cache=directsync parameter to -drive
This patch adds -drive cache=directsync for O_DIRECT | O_SYNC host file
I/O with no disk write cache presented to the guest.
This mode is useful when guests may not be sending flushes when
appropriate and therefore leave data at risk in case of power failure.
When cache=directsync is used, write operations are only completed to
the guest when data is safely on disk.
This new mode is like cache=writethrough but it bypasses the host page
cache.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Stefan Hajnoczi [Thu, 4 Aug 2011 11:26:51 +0000 (12:26 +0100)]
block: parse cache mode flags in a single place
This patch introduces bdrv_parse_cache_flags() which sets open flags
given a cache mode. Previously this was duplicated in blockdev.c and
qemu-img.c.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Aneesh Kumar K.V [Tue, 2 Aug 2011 06:32:51 +0000 (12:02 +0530)]
coroutine: Add CoRwlock support
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Peter A. G. Crosthwaite [Mon, 22 Aug 2011 08:15:25 +0000 (18:15 +1000)]
xilinx: removed microbalze_pic_init from xilinx.h
This is a microblaze target specific function that belongs outside
of xilinx.h (which is a collection of target independent device model
instantiator functions)
Signed-off-by: Peter A. G. Crosthwaite <peter.crosthwaite@petalogix.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Peter A. G. Crosthwaite [Mon, 22 Aug 2011 08:15:24 +0000 (18:15 +1000)]
xilinx.h: Added missing includes
Added some missing #includes for this file. Previously this file
relied on its clients to pre-include its dependencies.
Signed-off-by: Peter A. G. Crosthwaite <peter.crosthwaite@petalogix.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Jan Kiszka [Mon, 22 Aug 2011 16:42:42 +0000 (18:42 +0200)]
sdl: Don't release input on mouse mode change in full-screen mode
While in full-screen mode, the input focus naturally belongs to the SDL
window. Avoid dropping it when switching from absolute to relative
mouse mode.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Jan Kiszka [Mon, 22 Aug 2011 16:35:25 +0000 (18:35 +0200)]
Replace qemu_system_cond with VCPU stop mechanism
We can express the VCPU thread wakeup with the stop mechanism, saving
both qemu_system_ready and the qemu_system_cond. For KVM threads, we can
just enter the main loop as long as the thread is stopped. The central
TCG thread is better held back before the loop as there can be side
effects of the services called even when all CPUs are stopped.
Creating VCPUs in stopped state will also be required for proper CPU
hotplugging support.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Jan Kiszka [Mon, 22 Aug 2011 17:12:13 +0000 (19:12 +0200)]
vga: Drop some unused fields
Memory region refactorings obsoleted them.
CC: Avi Kivity <avi@redhat.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Jan Kiszka [Mon, 22 Aug 2011 17:12:12 +0000 (19:12 +0200)]
vga: Use linear mapping + dirty logging in chain 4 memory access mode
Most VGA memory access modes require MMIO handling as they demand weird
logic to get a byte from or into the video RAM. However, there is one
exception: chain 4 mode with all memory planes enabled for writing. This
mode actually allows lineary mapping, which can then be combined with
dirty logging to accelerate KVM.
This patch accelerates specifically VBE accesses like they are used by
grub in graphical mode. Not only the standard VGA adapter benefits from
this, also vmware and spice in VGA mode.
CC: Gerd Hoffmann <kraxel@redhat.com>
CC: Avi Kivity <avi@redhat.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Jan Kiszka [Mon, 22 Aug 2011 17:12:11 +0000 (19:12 +0200)]
vmware-vga: Eliminate vga_dirty_log_restart
After the conversion to the new Memory API, vga_dirty_log_restart became
seriously pointless. Remove it from vmware-vga and and then finally drop
the service.
CC: Andrzej Zaborowski <balrogg@gmail.com>
CC: Avi Kivity <avi@redhat.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Jan Kiszka [Mon, 22 Aug 2011 17:12:10 +0000 (19:12 +0200)]
vmware-vga: Remove dead DIRECT_VRAM mode
The code was disabled since day 1 of vmware-vga, and now it does not
even build anymore. Time for a cleanup.
CC: Andrzej Zaborowski <balrogg@gmail.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Jan Kiszka [Mon, 22 Aug 2011 17:12:09 +0000 (19:12 +0200)]
vmware-vga: Disable verbose mode
Elimiates 'vmsvga_value_write: guest runs Linux.' messages from the
console.
CC: Andrzej Zaborowski <balrogg@gmail.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Jan Kiszka [Mon, 22 Aug 2011 17:12:08 +0000 (19:12 +0200)]
vmware-vga: Register reset service
Fixes cold reset in vmware graphic modes. We need to split up the reset
function for this purpose, breaking out init-once bits.
Cc: Andrzej Zaborowski <balrogg@gmail.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Jan Kiszka [Mon, 22 Aug 2011 15:46:42 +0000 (17:46 +0200)]
ioapic: Implement polarity
If the polarity bit is set in the redirection table, the input level
simply has to inverted as it is low active in this case.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Jan Kiszka [Mon, 22 Aug 2011 15:46:31 +0000 (17:46 +0200)]
target-i386: Remove unused polarity arguments from APIC API
Polarity of external interrupts needs to be handled in the IOAPIC.
Passing it to the APIC is pointless. So remove all these arguments.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Jan Kiszka [Mon, 22 Aug 2011 15:46:03 +0000 (17:46 +0200)]
Do not kick vcpus in TCG mode
In TCG mode, iothread and vcpus run in lock-step. So it's pointless to
send a signal from qemu_cpu_kick to the vcpu thread - if we got here,
the receiver already left the vcpu loop.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Jan Kiszka [Mon, 22 Aug 2011 15:46:02 +0000 (17:46 +0200)]
Poll main loop after I/O events were received
Polling until select returns empty fdsets helps to reduce the switches
between iothread and vcpus. The benefit of this patch is best visible
when running an SMP guest on an SMP host in emulation mode.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Jan Kiszka [Mon, 22 Aug 2011 15:46:01 +0000 (17:46 +0200)]
Do not drop global mutex for polled main loop runs
If we call select without a timeout, it's more efficient to keep the
global mutex locked as we may otherwise just play ping pong with a
vcpu thread contending for it. This is particularly important for TCG
mode where we run in lock-step with the vcpu thread.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 22 Aug 2011 17:26:30 +0000 (12:26 -0500)]
Merge remote-tracking branch 'qemu-kvm/memory/core' into staging
Edgar E. Iglesias [Mon, 22 Aug 2011 16:42:54 +0000 (18:42 +0200)]
microblaze-user: Deliver SIGFPE on div by zero
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Richard Henderson [Wed, 10 Aug 2011 22:28:19 +0000 (15:28 -0700)]
memory: Fix old_portio vs non-zero offset
The legacy functions that we're wrapping expect that offset
to be included in the register. Indeed, they generally
expect the absolute address and then mask off the "high" bits.
The FDC is the first converted device with a non-zero offset.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Avi Kivity <avi@redhat.com>
Anthony Liguori [Mon, 22 Aug 2011 16:14:56 +0000 (11:14 -0500)]
memory: temporarily suppress the subregion collision warning
After
312b4234, the APIC and PCI devices are colliding with each other. This
is harmless in practice because the APIC accesses are special cased and never
make there way onto the bus.
Avi is working on a proper fix, but until that's ready, avoid printing the
warning.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:38 +0000 (17:17 +0300)]
440fx: fix PAM, PCI holes
The current implementation of PAM and the PCI holes is broken in several
ways:
- PCI BARs are not restricted to the PCI hole (a BAR may hide memory)
- PCI devices do not respect PAM (if a PCI device maps a region while
PAM maps the region to RAM, the request will be honored)
This patch fixes things by introducing a pci address space, and using
memory region aliases to represent PAM regions, SMRAM, and PCI holes.
The memory hierarchy looks something like
system_memory
|
+--- low memory alias (0-0xe0000000)
| |
| +-- ram@0
|
+--- high memory alias (0x100000000-EOM)
| |
| +-- ram@0xe0000000
|
+--- pci hole alias (end of low memory-0x100000000)
| |
| +-- pci@end-of-low-memory
|
|
+--- pam[n] (0xc0000-0xc3fff etc) (when set to pci, priority 1)
| |
| +-- pci@0xc4000 etc
|
+--- smram (0xa0000-0xbffff) (when set to pci/vga, priority 1)
|
+-- pci@0xa0000 etc
ram (simple ram region)
pci
|
+--- BARn
|
+--- VGA 0xa0000-0xbffff
|
+--- ROMs
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:37 +0000 (17:17 +0300)]
vga: drop get_system_memory() from vga devices and derivatives
Instead, use the bus accessors, or get the address space directly
from the board constructor.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:36 +0000 (17:17 +0300)]
pci: add pci_address_space()
Returns the PCI address space. Useful for bridges that can obscure
part of the PCI address space.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:35 +0000 (17:17 +0300)]
isa: add isa_address_space()
A helper that returns the address space used by ISA devices. Useful
for getting rid of isa_mem_base, multiple ISA buses, or ISA buses behind
bridges.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:34 +0000 (17:17 +0300)]
sysbus: remove sysbus_init_mmio_cb()
This problem with this function is that it is not reversible - it is
impossible to know where things are registered and unregister them
exactly. As there are no more users, we can remove it.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:33 +0000 (17:17 +0300)]
ppce500_pci: convert to sysbus_init_mmio_cb2()
Not a huge step forward, but at least we now have a 1:1 relationship
between registration and unregistration.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:32 +0000 (17:17 +0300)]
versatile_pci: convert to memory API
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:31 +0000 (17:17 +0300)]
arm11mpcore: use sysbus_init_mmio_cb2
This tells the sysbus code it need not use IO_MEM_UNASSIGNED.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:30 +0000 (17:17 +0300)]
sh_pci: convert to memory API
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:29 +0000 (17:17 +0300)]
sysbus: add a variant of sysbus_init_mmio_cb with an unmap callback
sysbus_init_mmio_cb() uses the destructive IO_MEM_UNASSIGNED to remove a
region. Provide an alternative that calls an unmap callback, so the removal
may be done non-destructively.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:27 +0000 (17:17 +0300)]
ppc4xx_sdram: convert to memory API
Clumsy due to the lack of clipping support, needed for
changing exposed ram size.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:26 +0000 (17:17 +0300)]
ppc405_uc: convert to memory API
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:25 +0000 (17:17 +0300)]
pcie_host: convert to memory API
Assuming that mmcfg size cannot change at runtime.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:24 +0000 (17:17 +0300)]
onenand: convert to memory API
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:23 +0000 (17:17 +0300)]
omap_gpmc/nseries/tusb6010: convert to memory API
Somewhat clumsy since it needs a variable sized region.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:22 +0000 (17:17 +0300)]
tusb6010: move declarations to new file tusb6010.h
Avoid #include hell.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:21 +0000 (17:17 +0300)]
gt64xxx.c: convert to memory API
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:20 +0000 (17:17 +0300)]
armv7m: convert to memory API
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:19 +0000 (17:17 +0300)]
arm_timer: convert to memory API
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:18 +0000 (17:17 +0300)]
arm_sysctl: convert to memory API
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:17 +0000 (17:17 +0300)]
arm_gic: convert to memory API
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:16 +0000 (17:17 +0300)]
apic: convert to memory API
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Mon, 15 Aug 2011 14:17:15 +0000 (17:17 +0300)]
apb_pci: convert to memory API
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Hervé Poussineau [Sat, 20 Aug 2011 14:29:50 +0000 (16:29 +0200)]
pcnet: fix wrong opaque (broken by
bd8d6f7cadb6ace98c779135217a4ed7b5fccc23)
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Brad [Sun, 14 Aug 2011 00:30:14 +0000 (20:30 -0400)]
Improvements to libtool support.
Improvements to the libtool support in QEMU. Replace hard coded
libtool in the infrastructure with $(LIBTOOL) and allow
overriding the libtool binary used via the configure
script.
Reviewed-by: Andreas F=E4rber <andreas.faerber@web.de>
Signed-off-by: Brad Smith <brad@comstyle.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Stefan Weil [Sat, 20 Aug 2011 10:10:05 +0000 (12:10 +0200)]
w32: Fix qemu_ftruncate64
SetFilePointer returns INVALID_SET_FILE_POINTER when it fails.
In addition, GetLastError must be checked.
The first call of SetFilePointer did not use INVALID_SET_FILE_POINTER,
the second call used wrong error handling.
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diego Elio Pettenò [Sun, 14 Aug 2011 13:31:24 +0000 (15:31 +0200)]
build: list libraries after objects, for proper linkage
Without this change, when using -Wl,--as-needed with GNU linker, the
libraries would be discarded.
Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.eu>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Robert Wang [Fri, 19 Aug 2011 09:17:12 +0000 (17:17 +0800)]
fix code format
Fix code format to make checkpatch.pl happy.
Signed-off-by: Robert Wang <wdongxu@linux.vnet.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Bjørn Mork [Wed, 17 Aug 2011 09:03:14 +0000 (11:03 +0200)]
e1000: use MII status register for link up/down
Some guests will use the standard MII status register
to verify link state. They will not notice link changes
unless this register is updated.
Verified with Linux 3.0 and Windows XP guests.
Without this patch, ethtool will report speed and duplex as
unknown when the link is down, but still report the link as
up. This is because the Linux e1000 driver checks the
mac_reg[STATUS] register link state before it checks speed
and duplex, but uses the phy_reg[PHY_STATUS] register for
the actual link state check. Fix by updating both registers
on link state changes.
Linux guest before:
(qemu) set_link e1000.0 off
kvm-sid:~# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: Unknown!
Duplex: Unknown! (255)
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown
Supports Wake-on: umbg
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
(qemu) set_link e1000.0 on
Linux guest after:
(qemu) set_link e1000.0 off
[ 63.384221] e1000: eth0 NIC Link is Down
kvm-sid:~# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: Unknown!
Duplex: Unknown! (255)
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown
Supports Wake-on: umbg
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: no
(qemu) set_link e1000.0 on
[ 84.304582] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 15 Aug 2011 16:17:41 +0000 (11:17 -0500)]
char: document the functions that will be the public interface
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 15 Aug 2011 16:17:40 +0000 (11:17 -0500)]
char: remove qemu_chr_send_event()
It's dead code.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 15 Aug 2011 16:17:39 +0000 (11:17 -0500)]
char: rename qemu_chr_get_msgfd() -> qemu_chr_fe_get_msgfd()
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 15 Aug 2011 16:17:38 +0000 (11:17 -0500)]
char: rename qemu_chr_close() -> qemu_chr_delete()
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 15 Aug 2011 16:17:37 +0000 (11:17 -0500)]
char: qemu_chr_open_opts() -> qemu_chr_new_from_opts()
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 15 Aug 2011 16:17:36 +0000 (11:17 -0500)]
char: rename qemu_chr_open() -> qemu_chr_new()
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 15 Aug 2011 16:17:35 +0000 (11:17 -0500)]
char: rename qemu_chr_set_echo() -> qemu_chr_fe_set_echo()
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 15 Aug 2011 16:17:34 +0000 (11:17 -0500)]
char: qemu_chr_ioctl() -> qemu_chr_fe_ioctl()
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 15 Aug 2011 16:17:33 +0000 (11:17 -0500)]
char: rename qemu_chr_guest_close() -> qemu_chr_fe_close()
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 15 Aug 2011 16:17:32 +0000 (11:17 -0500)]
char: rename qemu_chr_guest_open() -> qemu_chr_fe_open()
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 15 Aug 2011 16:17:31 +0000 (11:17 -0500)]
char: rename qemu_chr_can_read() -> qemu_chr_be_can_read()
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 15 Aug 2011 16:17:30 +0000 (11:17 -0500)]
char: rename qemu_chr_read() -> qemu_chr_be_write()
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 15 Aug 2011 16:17:29 +0000 (11:17 -0500)]
char: rename qemu_chr_printf() -> qemu_chr_fe_printf()
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 15 Aug 2011 16:17:28 +0000 (11:17 -0500)]
char: rename qemu_chr_write() -> qemu_chr_fe_write()
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
malc [Mon, 22 Aug 2011 14:26:15 +0000 (18:26 +0400)]
tcg/ppc64: fix 16/32 mixup
Signed-off-by: malc <av1474@comtv.ru>
malc [Mon, 22 Aug 2011 10:41:12 +0000 (14:41 +0400)]
Merge branch 'master' of git://git.qemu.org/qemu
malc [Mon, 22 Aug 2011 10:40:00 +0000 (14:40 +0400)]
tcg/ppc64: implement not_i32/64 and ext32u_i64
Signed-off-by: malc <av1474@comtv.ru>
malc [Mon, 22 Aug 2011 10:39:00 +0000 (14:39 +0400)]
tcg/ppc32: implement deposit_i32
Signed-off-by: malc <av1474@comtv.ru>
Anthony Liguori [Sun, 21 Aug 2011 23:34:33 +0000 (18:34 -0500)]
Merge remote-tracking branch 'pmaydell/armhw-for-upstream' into staging
Michael Roth [Thu, 11 Aug 2011 20:38:12 +0000 (15:38 -0500)]
guest agent: remove uneeded dependencies
This patch tries to cull any uneeded library dependencies from the guest
agent to improve portability across various distros. We do so by being
as explicit as possible about in-tree dependencies rather than relying
on existing *-obj-y targets, and by manually setting LIBS for the
qemu-ga target to avoid pulling in LIBS_TOOLS libraries discovered by
configure.
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Michael Roth [Thu, 11 Aug 2011 20:38:11 +0000 (15:38 -0500)]
guest agent: remove g_strcmp0 usage
g_strcmp0 isn't in all version of glib 2.0, so don't use it to avoid
build breakage on older distros.
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Thu, 11 Aug 2011 07:40:26 +0000 (10:40 +0300)]
memory: crack wide ioport accesses into smaller ones when needed
The memory API supports cracking wide accesses into narrower ones
when needed; but this was no implemented for the pio address space,
causing lsi53c895a's IO BAR to malfunction.
Fix by correctly cracking wide accesses when needed.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Avi Kivity [Thu, 11 Aug 2011 07:40:25 +0000 (10:40 +0300)]
memory: abstract cracking of write access ops into a function
The memory API automatically cracks large reads and writes into smaller
ones when needed. Factor out this mechanism, which is now duplicated between
memory reads and memory writes, into a function.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Blue Swirl [Sun, 7 Aug 2011 11:01:05 +0000 (11:01 +0000)]
escc: replace DPRINTFs with tracepoints
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Blue Swirl [Sun, 7 Aug 2011 20:02:02 +0000 (20:02 +0000)]
m48t59: avoid structure holes spotted by pahole
Report from pahole on amd64 host:
struct M48t59State {
uint32_t type; /* 0 4 */
/* XXX 4 bytes hole, try to pack */
qemu_irq IRQ; /* 8 8 */
uint32_t io_base; /* 16 4 */
uint32_t size; /* 20 4 */
time_t time_offset; /* 24 8 */
time_t stop_time; /* 32 8 */
struct tm alarm; /* 40 56 */
/* --- cacheline 1 boundary (64 bytes) was 32 bytes ago --- */
struct QEMUTimer * alrm_timer; /* 96 8 */
struct QEMUTimer * wd_timer; /* 104 8 */
uint8_t lock; /* 112 1 */
/* XXX 1 byte hole, try to pack */
uint16_t addr; /* 114 2 */
/* XXX 4 bytes hole, try to pack */
uint8_t * buffer; /* 120 8 */
/* --- cacheline 2 boundary (128 bytes) --- */
/* size: 128, cachelines: 2 */
/* sum members: 119, holes: 3, sum holes: 9 */
}; /* definitions: 1 */
Fix by rearranging the structure to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Blue Swirl [Sun, 7 Aug 2011 19:55:23 +0000 (19:55 +0000)]
escc: avoid structure holes spotted by pahole
Edited report from pahole on amd64 host:
struct ChannelState {
...
ChnType type; /* 32 4 */
/* XXX 4 bytes hole, try to pack */
...
uint8_t rregs[16]; /* 66 16 */
/* XXX 2 bytes hole, try to pack */
...
/* size: 392, cachelines: 7 */
/* sum members: 382, holes: 2, sum holes: 6 */
/* padding: 4 */
/* last cacheline: 8 bytes */
}; /* definitions: 1 */
Fix by rearranging the structure to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Blue Swirl [Sun, 7 Aug 2011 19:43:38 +0000 (19:43 +0000)]
fdc: avoid structure holes spotted by pahole
Edited report from pahole on amd64 host:
struct FDCtrl {
uint8_t version; /* 0 1 */
/* XXX 7 bytes hole, try to pack */
qemu_irq irq; /* 8 8 */
int dma_chann; /* 16 4 */
/* XXX 4 bytes hole, try to pack */
...
uint8_t status2; /* 42 1 */
/* XXX 5 bytes hole, try to pack */
uint8_t * fifo; /* 48 8 */
...
uint8_t pwrd; /* 76 1 */
/* XXX 3 bytes hole, try to pack */
int sun4m; /* 80 4 */
uint8_t num_floppies; /* 84 1 */
/* XXX 3 bytes hole, try to pack */
FDrive drives[2]; /* 88 64 */
/* --- cacheline 2 boundary (128 bytes) was 24 bytes ago --- */
int reset_sensei; /* 152 4 */
/* size: 160, cachelines: 3 */
/* sum members: 134, holes: 5, sum holes: 22 */
/* padding: 4 */
/* last cacheline: 32 bytes */
}; /* definitions: 1 */
Fix by rearranging the structure to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Blue Swirl [Sun, 7 Aug 2011 19:38:49 +0000 (19:38 +0000)]
pcnet: avoid structure holes spotted by pahole
Edited report from pahole on amd64 host:
struct PCNetState_st {
...
uint16_t bcr[32]; /* 340 64 */
/* XXX 4 bytes hole, try to pack */
...
int tx_busy; /* 4520 4 */
/* XXX 4 bytes hole, try to pack */
qemu_irq irq; /* 4528 8 */
void (*phys_mem_read)(void *, target_phys_addr_t, uint8_t *, int, int); /* 4536 8 */
/* --- cacheline 71 boundary (4544 bytes) --- */
void (*phys_mem_write)(void *, target_phys_addr_t, uint8_t *, int, int); /* 4544 8 */
void * dma_opaque; /* 4552 8 */
int looptest; /* 4560 4 */
/* size: 4568, cachelines: 72 */
/* sum members: 4556, holes: 2, sum holes: 8 */
/* padding: 4 */
/* last cacheline: 24 bytes */
}; /* definitions: 2 */
Fix by rearranging the structure to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Blue Swirl [Sun, 7 Aug 2011 19:33:30 +0000 (19:33 +0000)]
esp: avoid structure holes spotted by pahole
Report from pahole on amd64 host:
struct ESPState {
SysBusDevice busdev; /* 0 5648 */
/* --- cacheline 88 boundary (5632 bytes) was 16 bytes ago --- */
uint32_t it_shift; /* 5648 4 */
/* XXX 4 bytes hole, try to pack */
qemu_irq irq; /* 5656 8 */
uint8_t rregs[16]; /* 5664 16 */
uint8_t wregs[16]; /* 5680 16 */
/* --- cacheline 89 boundary (5696 bytes) --- */
int32_t ti_size; /* 5696 4 */
uint32_t ti_rptr; /* 5700 4 */
uint32_t ti_wptr; /* 5704 4 */
uint8_t ti_buf[16]; /* 5708 16 */
uint32_t status; /* 5724 4 */
uint32_t dma; /* 5728 4 */
/* XXX 4 bytes hole, try to pack */
SCSIBus bus; /* 5736 2120 */
/* --- cacheline 122 boundary (7808 bytes) was 48 bytes ago --- */
SCSIDevice * current_dev; /* 7856 8 */
SCSIRequest * current_req; /* 7864 8 */
/* --- cacheline 123 boundary (7872 bytes) --- */
uint8_t cmdbuf[16]; /* 7872 16 */
uint32_t cmdlen; /* 7888 4 */
uint32_t do_cmd; /* 7892 4 */
uint32_t dma_left; /* 7896 4 */
uint32_t dma_counter; /* 7900 4 */
uint8_t * async_buf; /* 7904 8 */
uint32_t async_len; /* 7912 4 */
/* XXX 4 bytes hole, try to pack */
ESPDMAMemoryReadWriteFunc dma_memory_read; /* 7920 8 */
ESPDMAMemoryReadWriteFunc dma_memory_write; /* 7928 8 */
/* --- cacheline 124 boundary (7936 bytes) --- */
void * dma_opaque; /* 7936 8 */
int dma_enabled; /* 7944 4 */
/* XXX 4 bytes hole, try to pack */
void (*dma_cb)(ESPState *); /* 7952 8 */
/* size: 7960, cachelines: 125 */
/* sum members: 7944, holes: 4, sum holes: 16 */
/* last cacheline: 24 bytes */
}; /* definitions: 1 */
Fix by rearranging the structure to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Blue Swirl [Sun, 7 Aug 2011 19:22:46 +0000 (19:22 +0000)]
sun4m: avoid structure holes spotted by pahole
Edited report from pahole on amd64 host:
struct sun4c_hwdef {
...
uint8_t nvram_machine_id; /* 112 1 */
/* XXX 1 byte hole, try to pack */
...
/* size: 136, cachelines: 3 */
/* sum members: 135, holes: 1, sum holes: 1 */
/* last cacheline: 8 bytes */
}; /* definitions: 1 */
struct sun4d_hwdef {
...
uint8_t nvram_machine_id; /* 128 1 */
/* XXX 1 byte hole, try to pack */
...
/* size: 152, cachelines: 3 */
/* sum members: 151, holes: 1, sum holes: 1 */
/* last cacheline: 24 bytes */
}; /* definitions: 1 */
struct sun4m_hwdef {
...
uint8_t nvram_machine_id; /* 260 1 */
/* XXX 1 byte hole, try to pack */
uint16_t machine_id; /* 262 2 */
uint32_t iommu_version; /* 264 4 */
/* XXX 4 bytes hole, try to pack */
...
/* size: 288, cachelines: 5 */
/* sum members: 283, holes: 2, sum holes: 5 */
/* last cacheline: 32 bytes */
}; /* definitions: 1 */
Fix by rearranging the structures to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Blue Swirl [Sun, 7 Aug 2011 19:13:24 +0000 (19:13 +0000)]
tcx: avoid structure holes spotted by pahole
Report from pahole on amd64 host:
struct TCXState {
SysBusDevice busdev; /* 0 5648 */
/* --- cacheline 88 boundary (5632 bytes) was 16 bytes ago --- */
target_phys_addr_t addr; /* 5648 8 */
DisplayState * ds; /* 5656 8 */
uint8_t * vram; /* 5664 8 */
uint32_t * vram24; /* 5672 8 */
uint32_t * cplane; /* 5680 8 */
ram_addr_t vram_offset; /* 5688 8 */
/* --- cacheline 89 boundary (5696 bytes) --- */
ram_addr_t vram24_offset; /* 5696 8 */
ram_addr_t cplane_offset; /* 5704 8 */
uint32_t vram_size; /* 5712 4 */
uint16_t width; /* 5716 2 */
uint16_t height; /* 5718 2 */
uint16_t depth; /* 5720 2 */
uint8_t r[256]; /* 5722 256 */
/* --- cacheline 93 boundary (5952 bytes) was 26 bytes ago --- */
uint8_t g[256]; /* 5978 256 */
/* --- cacheline 97 boundary (6208 bytes) was 26 bytes ago --- */
uint8_t b[256]; /* 6234 256 */
/* XXX 2 bytes hole, try to pack */
/* --- cacheline 101 boundary (6464 bytes) was 28 bytes ago --- */
uint32_t palette[256]; /* 6492 1024 */
/* --- cacheline 117 boundary (7488 bytes) was 28 bytes ago --- */
uint8_t dac_index; /* 7516 1 */
uint8_t dac_state; /* 7517 1 */
/* size: 7520, cachelines: 118 */
/* sum members: 7516, holes: 1, sum holes: 2 */
/* padding: 2 */
/* last cacheline: 32 bytes */
}; /* definitions: 1 */
Fix by rearranging the structure to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Blue Swirl [Sun, 7 Aug 2011 19:09:50 +0000 (19:09 +0000)]
sun4m_iommu: avoid structure holes spotted by pahole
Report from pahole on amd64 host:
struct IOMMUState {
SysBusDevice busdev; /* 0 5648 */
/* --- cacheline 88 boundary (5632 bytes) was 16 bytes ago --- */
uint32_t regs[4096]; /* 5648 16384 */
/* --- cacheline 344 boundary (22016 bytes) was 16 bytes ago --- */
target_phys_addr_t iostart; /* 22032 8 */
uint32_t version; /* 22040 4 */
/* XXX 4 bytes hole, try to pack */
qemu_irq irq; /* 22048 8 */
/* size: 22056, cachelines: 345 */
/* sum members: 22052, holes: 1, sum holes: 4 */
/* last cacheline: 40 bytes */
}; /* definitions: 1 */
Fix by rearranging the structure to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Blue Swirl [Sun, 7 Aug 2011 19:06:26 +0000 (19:06 +0000)]
slavio_intctl: avoid structure holes spotted by pahole
Report from pahole on amd64 host:
struct SLAVIO_INTCTLState {
SysBusDevice busdev; /* 0 5648 */
/* --- cacheline 88 boundary (5632 bytes) was 16 bytes ago --- */
uint32_t intregm_pending; /* 5648 4 */
uint32_t intregm_disabled; /* 5652 4 */
uint32_t target_cpu; /* 5656 4 */
/* XXX 4 bytes hole, try to pack */
qemu_irq cpu_irqs[16][16]; /* 5664 2048 */
/* --- cacheline 120 boundary (7680 bytes) was 32 bytes ago --- */
SLAVIO_CPUINTCTLState slaves[16]; /* 7712 384 */
/* --- cacheline 126 boundary (8064 bytes) was 32 bytes ago --- */
/* size: 8096, cachelines: 127 */
/* sum members: 8092, holes: 1, sum holes: 4 */
/* last cacheline: 32 bytes */
}; /* definitions: 1 */
struct SLAVIO_CPUINTCTLState {
uint32_t intreg_pending; /* 0 4 */
/* XXX 4 bytes hole, try to pack */
struct SLAVIO_INTCTLState * master; /* 8 8 */
uint32_t cpu; /* 16 4 */
uint32_t irl_out; /* 20 4 */
/* size: 24, cachelines: 1 */
/* sum members: 20, holes: 1, sum holes: 4 */
/* last cacheline: 24 bytes */
}; /* definitions: 1 */
Fix by rearranging the structures to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Blue Swirl [Sun, 7 Aug 2011 19:03:18 +0000 (19:03 +0000)]
slavio_misc: avoid structure holes spotted by pahole
Report from pahole on amd64 host:
struct MiscState {
SysBusDevice busdev; /* 0 5648 */
/* --- cacheline 88 boundary (5632 bytes) was 16 bytes ago --- */
qemu_irq irq; /* 5648 8 */
uint32_t dummy; /* 5656 4 */
uint8_t config; /* 5660 1 */
uint8_t aux1; /* 5661 1 */
uint8_t aux2; /* 5662 1 */
uint8_t diag; /* 5663 1 */
uint8_t mctrl; /* 5664 1 */
uint8_t sysctrl; /* 5665 1 */
uint16_t leds; /* 5666 2 */
/* XXX 4 bytes hole, try to pack */
qemu_irq fdc_tc; /* 5672 8 */
/* size: 5680, cachelines: 89 */
/* sum members: 5676, holes: 1, sum holes: 4 */
/* last cacheline: 48 bytes */
}; /* definitions: 1 */
Fix by rearranging the structure to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Blue Swirl [Sun, 7 Aug 2011 19:00:23 +0000 (19:00 +0000)]
slavio_timer: avoid structure holes spotted by pahole
Report from pahole on amd64 host:
struct SLAVIO_TIMERState {
SysBusDevice busdev; /* 0 5648 */
/* --- cacheline 88 boundary (5632 bytes) was 16 bytes ago --- */
uint32_t num_cpus; /* 5648 4 */
/* XXX 4 bytes hole, try to pack */
CPUTimerState cputimer[17]; /* 5656 816 */
/* --- cacheline 101 boundary (6464 bytes) was 8 bytes ago --- */
uint32_t cputimer_mode; /* 6472 4 */
/* size: 6480, cachelines: 102 */
/* sum members: 6472, holes: 1, sum holes: 4 */
/* padding: 4 */
/* last cacheline: 16 bytes */
}; /* definitions: 1 */
struct CPUTimerState {
qemu_irq irq; /* 0 8 */
ptimer_state * timer; /* 8 8 */
uint32_t count; /* 16 4 */
uint32_t counthigh; /* 20 4 */
uint32_t reached; /* 24 4 */
/* XXX 4 bytes hole, try to pack */
uint64_t limit; /* 32 8 */
uint32_t running; /* 40 4 */
/* size: 48, cachelines: 1 */
/* sum members: 40, holes: 1, sum holes: 4 */
/* padding: 4 */
/* last cacheline: 48 bytes */
}; /* definitions: 1 */
Fix by rearranging the structures to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Austin Clements [Sun, 21 Aug 2011 18:49:45 +0000 (14:49 -0400)]
monitor: Prevent sign-extension of 32-bit addresses printed by info tlb
This is the same fix that was recently applied to info mem. Before
this change, info tlb output looked like:
ffffffffffffc000:
000000000fffc000 --------W
ffffffffffffd000:
000000000fffd000 --------W
ffffffffffffe000:
000000000fffe000 --------W
fffffffffffff000:
000000000ffff000 --------W
With this change, it looks like
00000000ffffc000:
000000000fffc000 --------W
00000000ffffd000:
000000000fffd000 --------W
00000000ffffe000:
000000000fffe000 --------W
00000000fffff000:
000000000ffff000 --------W
Signed-off-by: Austin Clements <amdragon@mit.edu>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Blue Swirl [Sun, 21 Aug 2011 19:19:29 +0000 (19:19 +0000)]
Merge branch 'queues/slirp' of git://git.kiszka.org/qemu
* 'queues/slirp' of git://git.kiszka.org/qemu:
slirp: Fix bit field types in IP header structs