Ian Jackson [Mon, 2 Mar 2009 11:21:51 +0000 (11:21 +0000)]
Override default cache mode for disk images to write-back
Upstream qemu changed the default cache mode to write-through (ie,
O_DSYNC) which is much slower. We do not need this as we have
explicit control of cacheing with the IDE cache control commands.
Original patch by Yang Zhang modified by Ian Jackson.
Signed-off-by: Yang Zhang <yang.zhang@intel.com> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Ian Jackson [Mon, 2 Mar 2009 11:15:37 +0000 (11:15 +0000)]
wake up PCI passthru device on boot
Commit 8c771eb6294afc5b3754a9e3de51568d4e5986c2 enables a guest
OS to program D0-D3hot states, thus PCI passsthru devices transit
into D3hot state when the guest Windows shutdown.
That disables reboot from passthru devices because the device is
not active in the POST phase. Actually, the option ROM can't be read
from the guest bios.
Ian Jackson [Mon, 2 Mar 2009 11:13:44 +0000 (11:13 +0000)]
passthrough: MSI-X mask bit acceleration
Read MSI-X mask bit directly from the device, since buffered version
may not be up-to-date when MSI-X mask bit interception is working.
Also rebind every MSI-X vector on guest PCI BAR rebalancing so that
MSI-X mask bit intercept handler can get the correct gpa
[ Also, fix declaration of pt_msix_update_remap in pt-msi.h, which
was misspelled pt_msi_update_remap. -iwj ]
Signed-off-by: Qing He <qing.he@intel.com> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
blueswir1 [Sat, 28 Feb 2009 20:14:00 +0000 (20:14 +0000)]
Flush stdout after printing usage()
Fixes qemu-arm|grep cpu - with _exit() getting output from qemu --help
is a bit random. Since no atexit() handlers are registered for user mode
emulation, just use exit() instead.
aliguori [Sat, 28 Feb 2009 16:51:01 +0000 (16:51 +0000)]
Change default werror semantics from "report" to "enospc"
Practically speaking, "report" causes a lot of issues when encountering a host
ENOSPC error. Switch to "enospc" as the default werror semantics. All host
errors other than ENOSPC will be reported to the guest. ENOSPC will cause the
VM to stop. Asynchronous notifications are needed to inform management tools
that some action should be taken but stopping the VM is at least better than
undefined behavior in the guest.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6655 c046a42c-6fe2-441c-8c8c-71466251a162
blueswir1 [Sat, 28 Feb 2009 08:25:29 +0000 (08:25 +0000)]
Fix typo in gen_qemu_ld32s
When the CPU is in little endian mode, it should load values from RAM
in byte swapped manner. This check is in all the ld and st functions,
but misspelled in gen_qemu_ld32s.
This patch fixes the misspelling and makes ppc64 Linux happier.
Signed-off-by: Alexander Graf <alex@csgraf.de>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6654 c046a42c-6fe2-441c-8c8c-71466251a162
aliguori [Fri, 27 Feb 2009 22:09:45 +0000 (22:09 +0000)]
chroot and change user support (Nolan)
Resent with fixed formatting.
This patch adds two new command line options:
-chroot <dir>
-runas <user>
This is useful for running qemu as an unprivileged user in a chroot
jail. To avoid having to populate the jail, chrooting happens right
before the start of guest execution.
aliguori [Fri, 27 Feb 2009 19:53:57 +0000 (19:53 +0000)]
Missing cirrus_invalidate_region() in cirrus_do_copy() (Brian Kress)
After doing a video to video copy, cirrus_do_copy() in cirrus_vga.c does a
conditional call to cirrus_invalidate_region() with an "if (!notify)" test.
However at this point the blt has already been done so it seems like this call
should be made unconditionally. The patch below fixes some display update
problems when dragging windows under both X (fedora 10 guest) and a Windows XP
guest.
Signed-off-by: Brian Kress <kressb@moose.net> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6646 c046a42c-6fe2-441c-8c8c-71466251a162
The anonymouys structure inside PHPSlots only has one element,
so things can be simplified by moving the element into PHPSlots
and removing the anonymous structure.
Ian Jackson [Mon, 23 Feb 2009 11:33:56 +0000 (11:33 +0000)]
Cleanup PCI passthrough code
The patch cleanups the code of PCI passthrough.
- Use LIST_FOREACH(). Don't use lh_first, le_next directly.
- Use pci_{read, write}_block instead of "switch(len) case [124]
pci_{read, write}_{byte, word, long}();".
- Eliminate duplicate codes using PT_MEARGE_VALUE macro.
- Define PCI_ERR_* macro in pass-through.h if libpci is old.
- Remove the unreasonable loop from pt_aer_reg_{save,restore}.
- Enable pt_aer_reg_{save,restore}, even if libpci is old.
- Fix ro_mask and remove unnecessary pt_xxx_reg_write functions.
- Add "Error:" or "Warning:" to messages.
- Remove verbose messages.
Trailing whitespace does not survive some people's mailers, with the
result that their patches do not apply. Therefore in this commit I'm
removing it from the pass-through code, which is currently entirely in
the Xen tree.
This change is the result of this rune:
perl -i~ -pe 's/[\t ]*$//' hw/pass-through.[ch] hw/pt-msi.[ch]
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
edgar_igl [Sun, 22 Feb 2009 11:59:59 +0000 (11:59 +0000)]
CRIS: Fix remaining build warnings.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Acked-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6638 c046a42c-6fe2-441c-8c8c-71466251a162
malc [Sat, 21 Feb 2009 05:48:19 +0000 (05:48 +0000)]
Properly handle pthread_cond_timedwait timing out
pthread_cond_timedwait is allowed to both consume the signal and
return with the value indicating the timeout, hence predicate should
always be (re)checked before taking an action
malc [Sat, 21 Feb 2009 05:48:15 +0000 (05:48 +0000)]
Avoid thundering herd problem
Broadcast was used so that the I/O threads would wakeup, reset their
ts values and all but one go to sleep, in other words an optimization
to prevent threads from exiting in presence of continuing I/O
activity. Spurious wakeups make the looping around cond_timedwait with
ever reinitialized ts potentially unsafe and as such ts in no longer
reinitilized inside the loop, hence switch to signal is warranted and
this benefits of this particlaur optimization are lost.
(It's worth noting that timed variants of pthread calls use realtime
clock by default, and therefore can hang "forever" should the host
time be changed. Unfortunatelly not all host systems QEMU runs on
support CLOCK_MONOTONIC and/or pthread_condattr_setclock with this
value)
Ian Jackson [Thu, 19 Feb 2009 17:55:54 +0000 (17:55 +0000)]
fix raw_aio_remove list walk bug
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cherry picked and cross-ported by Ian Jackson
from Stefano's submission to qemu-devel, 18 Feb 2009 16:56:16 GMT.
aurel32 [Wed, 18 Feb 2009 21:37:17 +0000 (21:37 +0000)]
Fix cpu_physical_memory_rw() for 64-bit I/O accesses
KVM uses cpu_physical_memory_rw() to access the I/O devices. When a
read or write with a length of 8-byte is requested, it is split into 2
4-byte accesses.
This has been broken in revision 5849. After this revision, only the
first 4 bytes are actually read/write to the device, as the target
address is changed, so on the next iteration of the loop the next 4
bytes are actually read/written elsewhere (in the RAM for the graphic
card).
This patch fixes screen corruption (and most probably data corruption)
with FreeBSD/amd64. Bug #2556746 in KVM bugzilla.
aliguori [Mon, 16 Feb 2009 14:59:35 +0000 (14:59 +0000)]
Fix hardware accelerated video to video copy on Cirrus VGA (Brian Kress)
cirrus_do_copy() in hw/cirrus_vga.c seems to make some incorrect assumptions
about video memory layout. It tries to convert addresses to coordinates
assuming that one row of data is (width * depth) bytes long. The correct way
seems to be to use the pitch fields in the CirrusVGAState structure instead.
Without this patch, I get lots of screen corruption when I try to drag a window
under X as it's passing the wrong coordinates to the display surface for the
copy. With this patch I can drag a window with no screen corruption.
Signed-off-by: Brian Kress <kressb@moose.net> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6622 c046a42c-6fe2-441c-8c8c-71466251a162
aliguori [Mon, 16 Feb 2009 14:59:30 +0000 (14:59 +0000)]
Support multiple VNC clients (Brian Kress)
Change structure associated with a display from VncState to a new structure
VncDisplay. Remove client specific fields from VncDisplay. Remove display
specific fields from VncState. Maintain a linked list of VncStates per
VncDisplay structure, update as necessary. When updates/resizes/copies come in
from the hardware, dispatch to all clients.
Signed-off-by: Brian Kress <kressb@moose.net> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6621 c046a42c-6fe2-441c-8c8c-71466251a162
aliguori [Wed, 11 Feb 2009 21:00:43 +0000 (21:00 +0000)]
KVM: cpuid function 2: store all values (Amit Shah)
Incrementing the array index was missed in the previous series which causes
us to not store all the values.
Signed-off-by: Amit Shah <amit.shah@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6617 c046a42c-6fe2-441c-8c8c-71466251a162
aliguori [Wed, 11 Feb 2009 21:00:32 +0000 (21:00 +0000)]
Fix qemu_realloc() (Kevin Wolf)
For qemu_realloc with size == 0 a result of NULL is perfectly fine
Signed-off-by: Kevin Wolf <kwolf@suse.de> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6615 c046a42c-6fe2-441c-8c8c-71466251a162
It returns the domain, bus and slot for the newly added device on success.
It is possible to attach a disk to a device after PCI initialization via
the drive_add command. If so, a manual scan of the SCSI bus on the guest
is necessary.
Save QEMUMachine necessary for drive_init.
Add monitor command to hot-remove devices, remove device data on _EJ0 notification.