Commit Graph
172 Commits
Author SHA1 Message Date
kaf24@firebug.cl.cam.ac.uk 9402c1936d [HVM] Clean up formatting of new piix acpi file.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-06-17 09:19:16 +01:00
kaf24@firebug.cl.cam.ac.uk 9c15ad745c [HVM] ACPI support patch 4 of 4: shutdown.
The patch is incorporated  from Ben's Virtual Iron's ACPI shutdown patch
in changeset 9989:f8d20c3e4225
The patch support guest ACPI Windows shutdown, as well as ACPI guest
Linux "halt -p" and "shutdown -h now".

Signed-off-by: Ben Thomas <ben@virtualiron.com>
Signed-off-by: Winston Wang <winston.l.wang@intel.com>
2006-06-17 09:08:14 +01:00
kaf24@firebug.cl.cam.ac.uk c45e9f7a4f [HVM] ACPI support patch 2 of 4: ACPI timer.
ACPI timer is required during guest windows installation and boot.

Signed-off-by: Tang Liang <tangliang@lenovo.com>
Signed-off-by: Winston Wang <winston.l.wang@intel.com>
2006-06-17 09:05:34 +01:00
kaf24@firebug.cl.cam.ac.uk f4cdf1dbe8 [HVM] ACPI support patch 1 of 4: main components.
The patch support ACPI UP Guest Windows 2000,  XP and 2003, based on
this we are going to add more support on SMP and 64bit Windows( which
are only working in ACPI mode) later. We tested: in ia32 guest:

  a. Installation and boot of  Windows XP sp2 and 2003 server in ACPI
mode
  b  when boot to both window, no yellow mark in device manger and  USB,
network card and IDE DMA are working.
  c. clean boot (without ACPI related errors) on UP and  4 vcpu rhel4u1
SMP guest and got ioapic Interrupt assigned according to ACPI DSDT
table's _PRT table's GSI.
  
To minimize the implementation efforts to satisfy the ACPI OS
installation and boot, we implemented  ACPI only event logical model by
emulating ACPI hardware based on PIIX4 (Intel 82371ab) by:  Populating
the PIIX4  ACPI bridge PCI configuration space; Adding ACPI timer
(required during windows installation/boot), PM1 event register block
and PM1 control register block (both are required during
installation/boot, shutdown, entering and leaving PM S state if adding
those features later), we provided full ACPI hardware registers above
using byte/word/dword access per ACPI spec requirement.

The patch also fixed many existing hvm ACPI related bugs, such as
warnings when boot to ACPI  UP and SMP guest Linux OS; adding new ACPI
_PRT table reporting PCI IRQ routing table in PIC mode,  adding new _PRT
table in APIC mode, that fixed no IRQ GSI cause it is forced to shutdown
when OS find new device to assign IRQ without ACPI event service; The
patch also fixed the ACPI DSDT table's  PCI resource conflict with guest
e820 table when booting and installing ACPI Windows; we also added ACPI
shutdown service by incorporating the code in ACPI "hardware enable
register writer" from  Ben's Virtual Iron's team's patch in changeset
9989:f8d20c3e4225.

We only provide minimum power management requirement support per spec-c1
and S5 for shutdown, may be S4 (hibernating which is meaningful for user
to save their working section)  in the future.

Please note, current patch needs to  have following switches in guest
configuration to enable proper ACPI support
  a. need to add ACPI=1 (apic=1 if boot SMP Linux guest plus vcpu=
number want to test) in xmexample.hvm
  b. need to add USB support: USB=1 and usbdevice='device' (or
='tablet') as the pm register base is static..., I will adding dynamic
ACPI FADT table for pm register base pointer later.

When installing guest OS in ACPI mode, need to manually tell Windows
setup program to install single core ACPI HAL:
   After passing the 1st screen of windows setup of install Windows,
   the first thing you'll see at the bottom of the screen is the
   option to press F6 if you need to install a SCSI or RAID
   controller. Don't press F6. Press F5 instead. This will take
   you to a separate menu of Hardware Abstraction Layer's where
   you can choose an appropriate HAL .The choices will be:
  
   ACPI Multiprocessor PC
   ACPI Uniprocessor PC
   Advanced Configuration and Power Interface (ACPI) PC
   ...
   Standard PC
   Standard PC with C-Step i486
  
Please select "Advanced Configuration and Power Interface (ACPI) PC"
using current patch.

Signed-off-by: Winston Wang <winston.l.wang@intel.com>
2006-06-17 09:00:16 +01:00
kaf24@firebug.cl.cam.ac.uk 76f880fe7d [TOOLS] Introduce xc_evtchn_*() interface for interacting with /dev/xen/evtchn.
No longer open the device as non-blocking: all reads immediately follow
a select() on the device indicating it's ready to read.

Signed-off-by: John Levon <john.levon@sun.com>
2006-06-15 13:11:31 +01:00
kaf24@firebug.cl.cam.ac.uk c33ae33cb8 [HVM][QEMU] Fix SDL mouse "invisible wall".
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Don Dugger <donald.d.dugger@intel.com>
2006-06-14 22:15:13 +01:00
kaf24@firebug.cl.cam.ac.uk 6a551e7f23 [HVM] Fix ioemu build with new Linux headers. We must define __user
attribute to nothing.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-06-13 11:41:15 +01:00
kaf24@firebug.cl.cam.ac.uk cd9d70925c [HVM][DM] Backport the USB support from QEMU 0.8.1 to the current Xen
device model. To support USB there are two new optional config lines
that can be added to the guest config file:

    usb=1
        This will enable USB without defining a specific USB device.
        This option is assumed and not needed if the `usbdevice' option
        is given.

    usbdevice='device'
        This will enable USB and also enable support for the given device.
        Currently, the only two devices are `mouse' (a PS/2 mouse) and
        `tablet' (an absolute pointing device).  The advantage of `tablet'
        is that Windows guests will automatically recognize and support this
        device so specifying the config line:

                usbdevice='tablet'

        will create a mouse that works transparently with Windows guests
        under VNC.  (Linux doesn't recognize the USB tablet yet so Linux
        guests under VNC will still need the Summagraphics emulation.)

Signed-off-by: Don Dugger <donald.d.dugger@intel.com>
2006-06-12 09:06:55 +01:00
kaf24@firebug.cl.cam.ac.uk 104f354554 [HVM][DM] Cleaner way of clearing VGA memory on mode changes (thanks to
Fabrice Bellard on the QEMU project). This patch clears the
memory in the BIOS call rather than when the Cirrus Logic register changes,
which more closely matches what happens on the real hardware.

Signed-off-by: Don Dugger <donald.d.dugger@intel.com>
2006-06-07 14:13:22 +01:00
kaf24@firebug.cl.cam.ac.uk ab8096f27d Represent PFNs with their own type, rather than 'unsigned long'.
('long' changes size and alignment between 32- and 64-bit ABIs.)
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
2006-06-06 09:48:17 +01:00
kaf24@firebug.cl.cam.ac.uk 78f168bc8d [IA64][HVM] Enable CGA acceleration for VTI.
Signed-off-by: Kevin Tian <kevin.tian@intel.com>
2006-06-02 09:20:58 +01:00
kaf24@firebug.cl.cam.ac.uk bee50046c9 [HVM] Allow more dynamic use of the qemu serial lines by allowing the Summagraphics port to float.
qemu will emulate up to 4 serial lines (COM1 - COM4).  One of these
lines supports a Summagraphics protocol.  This has changed recently,
and it's now always COM2.  This patch allows the user to specify
to qemu which lines should be serial lines, and the code will place
the Summagraphics compatible line at just above the last specified
serial line.  qemu defaults serial line 0 (COM1) to be "vc", resulting
in the Summagraphics support residing on COM2. This is in keeping
with the current behavior.

The results, via qemu command line, are:
<none>                                    COM2
-serial x                                 COM2
-serial x -serial x                       COM3
-serial x -serial x -serial x             COM4
-serial x -serial x -serial x -serial x  <none>

The results are deterministic, and allow the use of up to 4 serial
lines including none with Summagraphics support.  There is no
change from current behavior, unless requested.

Signed-off-by: Ben Thomas <ben@virtualiron.com>
2006-06-01 18:32:04 +01:00
kaf24@firebug.cl.cam.ac.uk 678b2e21b2 [HVM] Fixes to buffer handling in ne2000 device model.
Signed-off-by: hanzhu <zhu.han@intel.com>
2006-05-31 09:30:40 +01:00
kaf24@firebug.cl.cam.ac.uk bca9460e94 Allow to specify different time-of-day clock offsets for HVM guests.
There are some usage scenarios in which differing user domains want
to be using different base TOD clocks. This patch adds the ability
to specify the base TOD time difference.  The patch also adds a
hook point to notify another entity when the domain changes this
offset. This might occur, for instance, on a Linux domain using
hwclock -w.

Signed-off-by: Ben Thomas <ben@virtualiron.com>
2006-05-17 23:43:32 +01:00
kaf24@firebug.cl.cam.ac.uk 46257c9226 Remove unnecessary extra linker parameters from qemu-dm build.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-05-15 07:44:12 +01:00
kaf24@firebug.cl.cam.ac.uk fe38e9e562 Add rudimentary ACPI support which allows a fully virtualized domain
to perform a poweroff via the S5 state.  This involves adding S5
information to the ASL file; adding ACPI I/O address processing to
qemu and modifying the FADT to point to these specific I/O addresses.
Note that this is a rudimentary implementation, which is expected
to allow growth over time.  Currently, only allow/detect writes
to one of the PM registers, even though the S5 package specifies
data for both.  Currently, this is sufficient for the kernels
tested. (Specifically, use of _PST, and _GST and other methods
are unnecessary and not implemented.)

Signed-off-by: Ben Thomas <ben@virtualiron.com>
2006-05-15 07:38:32 +01:00
kaf24@firebug.cl.cam.ac.uk 17af31bde6 Fix the cirrus vga model to not leak memory when switching between
initial vga mode and linear framebuffer.

When creating device model, the vga memory is allocated through
xc_domain_memory_increase_reservation(), however, when switch to use
linear framebuffer, we didn't free that memory, and re-allocate the vga
memory through set_mm_mapping(), that caused memory leak. Now it is
changed to just using qemu_malloc when create device model, and free
that memory when switch to linear framebuffer.

After unset_vram_mapping(), the old memory pointer should be
unmapped; after set_vram_mapping(), the old memory should be freed.

Signed-off-by: Yunhong Jiang <yunhong.jiang@intel.com>
2006-05-12 15:17:21 +01:00
kaf24@firebug.cl.cam.ac.uk 4b769f4b61 Move set/unset_vram_mapping into cirrus_vga.c, pending a fixup patch.
Signed-off-by: Yunhong Jiang <yunhong.jiang@intel.com>
2006-05-12 15:15:59 +01:00
kaf24@firebug.cl.cam.ac.uk 4886fcc749 This patch enhances the Summagraphics emulation by adding 2 features:
1)  Move the tablet to the second serial port.  This way the tablet will
not interfere with people who want to use a serial console on the guest.

2)  Enhance the Summagraphics emulation so that the Windows XP driver
works.  Turns out the Windows driver was using capabilities the X driver
didn't care about and it wouldn't recognize the tablet without these
capabilities.

Signed-off-by: donald.d.dugger@intel.com
2006-05-10 16:06:55 +01:00
kaf24@firebug.cl.cam.ac.uk ff712d654d Reset Cirrus device model `VRAM' whenever a VGA/SVGA mode switch occurs.
If you change the video resolution on a Windows XP guest such that it uses
fewer bytes of VRAM (either by using fewer bytes per pixel or by lowering the
resolution) then some window backgrounds will become corrupted.  This happens
because the Windows XP Cirrus Logic driver assumes that VRAM is initialized
to 0xff whenever the video mode switches between VGA and SVGA.

Signed-off-by: Donald.D.Dugger@intel.com
2006-05-10 16:05:24 +01:00
kaf24@firebug.cl.cam.ac.uk 1f516c94dc Replace a bash-specific redirection in tools/ioemu/configure with a
standard POSIX one which allows the Xen tools to be built with a POSIX
shell other than bash.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2006-05-05 13:58:13 +01:00
kaf24@firebug.cl.cam.ac.uk 1f401246c1 When boot device is cdrom but the cdrom is not bootable, the guest appears
to hang. This patch fixes this by filling in second- and third-priority
fallback boot devices.

Signed-off by: Chen Jun <chenjunb@lenovo.com>
2006-04-28 14:33:40 +01:00
awilliam@xenbuild.aw aaf9402dab merge with xen-unstable.hg 2006-04-25 23:35:55 -06:00
kaf24@firebug.cl.cam.ac.uk 44d4831475 Fix swapped calloc() arguments.
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
2006-04-19 18:39:36 +01:00
kaf24@firebug.cl.cam.ac.uk dacb15d5e4 Sync PIT device model with latest qemu and move it to hypervisor.
Signed-off-by: Edwin Zhai <edwin.zhai@intel.com>
2006-04-19 18:38:14 +01:00
awilliam@xenbuild.aw dc1c0a8170 merge with xen-unstable.hg 2006-04-18 09:35:40 -06:00
kaf24@firebug.cl.cam.ac.uk a94a960c97 The default value used to control whether the guest is set up with localtime
or utc in the RTC was wrong.

Signed-Off-By: Bruce Rogers <brogers@novell.com>
2006-04-13 10:33:46 +01:00
awilliam@xenbuild.aw b4fa7c40e9 merge with xen-unstable.hg 2006-04-11 18:54:18 -06:00
kaf24@firebug.cl.cam.ac.uk 201c3aa978 Fix a couple of typos.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-04-10 17:28:02 +01:00
kaf24@firebug.cl.cam.ac.uk 4f32cad22c Fix push/pop usage in tools/ioemu for x86/64.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-04-10 17:25:42 +01:00
kaf24@firebug.cl.cam.ac.uk 73004d34e4 If the 'cdrom=' option is specified in the definition file but media is
not found in the CD drive then main() in vl.c exits and the guest appears 
to hang.  This patch modifies vl.c slightly to check for the presents of 
media.  If the cdrom cannot be opened then the cd entry is removed from 
hd_filename[] and bs_table[] allowing the guest to continue initializing. 
If the guest requires the CD media then the guest should report, gracefully
or otherwise, that it's missing.

From: Ross Maxfield <rmaxfiel@novell.com>

Signed-off-by: Keir Fraser <keir@xensource.com>
2006-04-10 17:16:25 +01:00
kaf24@firebug.cl.cam.ac.uk b5fa90ac8e build: Clean up use of .PHONY
* Move .PHONY directives next to targets,
  this makes them a lot harder to miss
* Add missing .PHONY directives
* Remove nonexistent .PHONY directives
* Hopefully I didn'T miss anything...

Signed-Off-By: Horms <horms@verge.net.au>
2006-04-10 17:02:49 +01:00
vhanquez@kneesa.uk.xensource.com cfca4d6941 fix bug #609 - error: PIC register bx' clobbered in asm'
Signed-off-by: Vincent Hanquez <vincent@xensource.com>
2006-04-10 14:51:10 +00:00
kaf24@firebug.cl.cam.ac.uk 66edd49a38 Add code to make handling domain poweroff/reboot symmetrical between
paravirtualized and fully virtualized.  This approach uses the new
sched_op to handle other domains than the current domain.  The new
code, SCHEDOP_remote_shutdown, is very much like SCHEDOP_shutdown, but
is called with the id of the domain which is to be shut down. This
allows fully virtualized shutdown and para-virtualized shutdown to be
identical from that point forward.

A paravirtualized domain uses sched_op to shut down and set the reason
code. This will send a VIRQ_DOM_EXC, which can be handled in dom0 by
control software.  In some ways, this resembles SIGCHILD/waitpid, and
is a reasonable model.

The fully virtualized case has qemu invoke xm directly. This is a
different path than paravirtualized. It also removes decision and
policy making choices from the rest of the control software and places
it within qemu. When any dom0 logic eventually gets a VIRQ_DOM_EXC,
the information about the domain is gone having been destroyed by xm.

A libxenctrl wrapper, xc_shutdown_domain has been added and qemu now
calls it.

As a freebie, #if 0 some very verbose logging code in qemu.  Totally
unrelated, but as long as I was there...

Signed-off-by: Ben Thomas <ben@virtualiron.com>
2006-04-06 15:24:00 +01:00
awilliam@xenbuild.aw f7e98914da [IA64] Add memory operations for xen/ia64
This patch removes ugly hack upon memory operation and thus
allow inc/decrease_reservation op available for xen/ia64 now.

As a result:
  * Now we conform to common sequence where all domain pages
    are allocated together by increase_reservation before
    image builder
  * physmap table is now built at point of arch_set_info_guest
  * DOM0_GETMEMLIST can only query without allocation now
  
After this patch, some long-existing hacks due to mismatched
memory interface are cleaned this time. Also this is a base
step toward introducing balloon feature into xen/ia64.
    
Signed-off-by Kevin Tian <kevin.tian@intel.com>
2006-04-04 09:43:41 -06:00
kaf24@firebug.cl.cam.ac.uk ac58fadfa5 The attached patch to the qemu emulation of the pcnet hardware fixes
several problems.  It will now only read and write a transmit or receive
descriptor once.  It will correctly handle transmitting frames with more
than two fragments.  It will discard oversize frames instead of
corrupting memory.  I have tested all the changes I have made and even
seen an improvement in receive performance from 1.7MB/s to 3.3MB/s.
Your mileage will vary.

The code could be simplified if multi-fragment frames were deleted.  It
appears that both Linux and Windows XP don't use fragmented frames.

The mac crc computation code was deleted, since it has never been used.
The code was checking the wrong bit in the control register.

I tested type 3 descriptors by modifying the linux pcnet32 driver, but
did not see any difference in performance over type 2 currently used.

I have not made any change to type 0 (16-bit) transmit/receive
descriptors as I have no way to test the changes.

Please test this as soon as possible, as I will be on vacation next week
and in a class the following week.  I will check email from time to
time, but my ability to make changes to code will be greatly dimished.

One other thing I noticed in my testing, is that if I tell a linux domU
to reboot, it will reboot but not have any pcnet32 device after
rebooting.  By doing a shutdown, xm destroy and xm create, I was able to
get around that problem.

Signed-off-by:  Don Fry <brazilnut@us.ibm.com>
2006-03-26 11:39:04 +01:00
kaf24@firebug.cl.cam.ac.uk 57ac22d899 Fix a protocol violation in the pcnet emulation. Tested on at least
two systems and fixes the 'corrupt MAC' with scp or sftp.  See bug 574
for more information.

Signed-off-by:  Don Fry <brazilnut@us.ibm.com>
2006-03-20 12:01:32 +01:00
kaf24@firebug.cl.cam.ac.uk fceb225f85 Declare inline function as 'static inline', not 'extern inline'.
Fixes the ioemu build which was broken on some systems.

Signed-off-by: Keir Fraser <keir@xensource.com>
2006-03-17 10:57:28 +01:00
kaf24@firebug.cl.cam.ac.uk 7d258cc98e Add Summagraphics Tablet emulation for VNC users. The current PS/2 emulation
is unusable under VNC since a PS/2 mouse provides deltas while VNC only
provides absolute coordinates.  Fortunately, the Summagraphics Tablet provides
absolute coordinates and works perfectly with VNC.

Signed-off-by: Don Dugger <donald.d.dugger@intel.com>
2006-03-16 18:57:54 +01:00
kaf24@firebug.cl.cam.ac.uk 1409287078 Change the VNC main input loop delay from 1 second down to 10
msec.  The 1 second delay was causing significant latency problems
with the mouse while there is no measurable overhead in lowering the
delay down to 10 msec.

Signed-off-by: Don Dugger <donald.d.dugger@intel.com>
2006-03-16 18:43:07 +01:00
kaf24@firebug.cl.cam.ac.uk 3fd07d7995 Add a shadow VRAM to track changes to the real VRAM. When the guest
OS was given write access to the VRAM the device model tracked all
VRAM changes by updating the entire screen on every output loop,
causing significant overhead (a CPU bound loop in a guest slows down
by about 35%) and significant mouse latency (VNC uses the same data
path for mouse events and video updates).  With the shadow VRAM only
modified pages need to be updated and the comparison of the shadow
VRAM to the real VRAM only adds ~4% overhead while eliminating the
mouse latencies.

Signed-off-by: Don Dugger <donald.d.dugger@intel.com>
2006-03-16 18:41:01 +01:00
kaf24@firebug.cl.cam.ac.uk 996548fdac Enable the ejection of the physical cdrom tray, when user enters
"eject cdrom" in the control console of a VMX guest.

Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
2006-03-11 10:44:48 +01:00
kaf24@firebug.cl.cam.ac.uk 945758df89 More build config changes:
- Build -O2 rather than -O3
 - Build with -Wstrict-prototypes
 - Move target-specific generic compiler switches to Config.mk

Signed-off-by: Keir Fraser <keir@xensource.com>
2006-03-10 17:32:04 +01:00
kaf24@firebug.cl.cam.ac.uk d27fbb0061 Move 'debug' build option into the outermost Config.mk file.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-03-09 22:31:45 +01:00
kaf24@firebug.cl.cam.ac.uk 326450f67e Clean up the usage of CFLAGS. This is nice for packagers, who would
like to control the base compilation flags from a central place.

Signed-off-by: Charles Coffing <ccoffing@novell.com>
2006-03-09 21:17:45 +01:00
kaf24@firebug.cl.cam.ac.uk 0a4522458b Fix some warnings when compiling tools.
Signed-off-by: Xin Li <xin.b.li@intel.com>
2006-03-04 10:25:05 +01:00
kaf24@firebug.cl.cam.ac.uk dfd53f76ba Fix tools Makefiles to respect CFLAGS. Disable stack-smash
protection when building vmxassist/hvmloader.

Signed-off-by: Keir Fraser <keir@xensource.com>
2006-02-28 11:41:54 +01:00
kaf24@firebug.cl.cam.ac.uk f9ef80600b Fix a multi HVM domain issue (bugzilla bug #542):
This issue can be reproduced on SMP platform, while the domain 0
is UP. The reason is, after finishing a dma request, the dma thread will
trigger the interrupt and then clear the call back function. When guest
get the interrupt , it will try to check the call back function, if it
is set, then it will trigger a dma request again. So if the checking for
the callbackfunction happens between trigger interrupt and clear
callback function on dma thread, it will cause NULL function calling.
After with domain 0 UP and smp platform, this situation can be
reproduced easily.

Signed-off-by: Yunhong Jiang <yunhong.jiang@intel.com>
2006-02-28 10:18:34 +01:00
kaf24@firebug.cl.cam.ac.uk 73f56b3d57 Avoid pcnet dm packet loss / corruption.
Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
2006-02-25 12:27:53 +01:00
kaf24@firebug.cl.cam.ac.uk bb86d19e6e Per-vcpu IO evtchn patch for HVM domain.
We are starting to send patches to support SMP VMX guest.

Signed-off-by: Xin Li <xin.b.li@intel.com>
2006-02-23 11:22:25 +01:00