Re: [PATCH 0/13 v7] PCI: Linux kernel SR-IOV support

2008-12-16 Thread Greg KH
On Wed, Dec 17, 2008 at 03:07:23PM +0800, Zhao, Yu wrote:
> Greg KH wrote:
>> On Wed, Dec 17, 2008 at 10:37:54AM +0800, Jike Song wrote:
>>> Jesse Barnes wrote:
 Given a respin of 10-13 I think it's reasonable to merge this into 
 2.6.29, but I'd be much happier about it if we got some driver code 
 along with it, so as not to have an unused interface sitting around for 
 who knows how many releases.  Is that reasonable?  Do you know if any of 
 the corresponding PF/VF driver bits are ready yet?
>>> Hi Jesse, 
>>> Yu Zhao has posted a patch set with subject "SR-IOV driver example" at 
>>> November 26, which illustrated the usage of SR-IOV API in Intel 82576 
>>> VF/PF
>>> drivers;-)
>> Yes, but that driver was soundly rejected by the network driver
>> maintainers, so I wouldn't go around showing that as your primary
>> example of how to use this interface :)
>> The point is valid, I don't think these apis should go into the tree
>> without a driver or some other code using them.  Otherwise they make no
>> sense at all to have in-tree.
>
> I agree the point is valid, but on another hand this is a 'the chicken & 
> the egg' problem -- if we don't have the SR-IOV base, people who are 
> developing PF drivers can not get their changes in-tree. Maybe they are 
> holding the patches and waiting on the infrastructure... :-)

Are they?  They can both go in at the same time, like almost every other
api addition to the kernel, right?

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/13 v7] PCI: Linux kernel SR-IOV support

2008-12-16 Thread Zhao, Yu

Greg KH wrote:

On Wed, Dec 17, 2008 at 10:37:54AM +0800, Jike Song wrote:

Jesse Barnes wrote:
Given a respin of 10-13 I think it's reasonable to merge this into 2.6.29, but 
I'd be much happier about it if we got some driver code along with it, so as 
not to have an unused interface sitting around for who knows how many 
releases.  Is that reasonable?  Do you know if any of the corresponding PF/VF 
driver bits are ready yet?
Hi Jesse, 

Yu Zhao has posted a patch set with subject "SR-IOV driver example" 
at November 26, which illustrated the usage of SR-IOV API in Intel 82576 VF/PF

drivers;-)


Yes, but that driver was soundly rejected by the network driver
maintainers, so I wouldn't go around showing that as your primary
example of how to use this interface :)

The point is valid, I don't think these apis should go into the tree
without a driver or some other code using them.  Otherwise they make no
sense at all to have in-tree.


I agree the point is valid, but on another hand this is a 'the chicken & 
the egg' problem -- if we don't have the SR-IOV base, people who are 
developing PF drivers can not get their changes in-tree. Maybe they are 
holding the patches and waiting on the infrastructure... :-)

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


xen-in-kvm doesn't work with kvm-81.

2008-12-16 Thread Yiyi Hu
Host info:
h...@hs ~ $ uname -a
Linux Hs 2.6.27-gentoo-r6 #1 SMP Mon Dec 15 11:43:12 CST 2008 x86_64
AMD Athlon(tm) X2 Dual Core Processor BE-2350 AuthenticAMD GNU/Linux

KVM is version 81. Installed from portage.

The guest is 64bit debian lenny, Within guest, we install the xen system.
The xen-in-kvm won't boot fine after upgraded to kvm-81.

After testing, I found:
With kvm-81 userspace util and kernel modules bundled with kernel
2.6.27, xen-in-kvm boots fine..
If I try to use the kvm module bundled with kvm-81, The xen-in-kvm
doesn't boot, with guest screen messed up.

For the combination of both kernel modules and userspace utils are from kvm-81.
With either -no-kvm-irqchip or -no-kvm-pit option passed, xen-in-kvm boots fine.
With both -no-kvm-irqchip and -no-kvm-pit options passed, xen-in-kvm
also boots fine.
Though, We can see the screen messed up when the kernel boots. But the
mess up will be cleared by newer kernel messages.

The *problem* script used to start xen-in-kvm.

TAPNAME=tap0
sudo /usr/bin/tunctl -u hyy -t $TAPNAME
sudo /sbin/ifconfig $TAPNAME up
sudo /sbin/brctl addif br0 $TAPNAME
kvm -k en-us -m 2048 \
-daemonize \
-vnc localhost:5 \
-hda lenny-xen.img \
-net nic,model=rtl8139,macaddr=DE:AD:B3:EF:27:A8 \
-net tap,script=no,ifname=$TAPNAME \
-serial mon:telnet::,server,nowait \


Thanks.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/13 v7] PCI: Linux kernel SR-IOV support

2008-12-16 Thread Greg KH
On Wed, Dec 17, 2008 at 10:37:54AM +0800, Jike Song wrote:
> Jesse Barnes wrote:
> > Given a respin of 10-13 I think it's reasonable to merge this into 2.6.29, 
> > but 
> > I'd be much happier about it if we got some driver code along with it, so 
> > as 
> > not to have an unused interface sitting around for who knows how many 
> > releases.  Is that reasonable?  Do you know if any of the corresponding 
> > PF/VF 
> > driver bits are ready yet?
> 
> Hi Jesse, 
> 
> Yu Zhao has posted a patch set with subject "SR-IOV driver example" 
> at November 26, which illustrated the usage of SR-IOV API in Intel 82576 VF/PF
> drivers;-)

Yes, but that driver was soundly rejected by the network driver
maintainers, so I wouldn't go around showing that as your primary
example of how to use this interface :)

The point is valid, I don't think these apis should go into the tree
without a driver or some other code using them.  Otherwise they make no
sense at all to have in-tree.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] fix build w/ "--with-patched-kernel" on Ubuntu 8.10

2008-12-16 Thread Nolan
And presumably any other distribution that puts only symlinks
in /lib/modules//build/...

Signed-off-by: Nolan Leake  sigbus.net>

diff --git a/kernel/Makefile b/kernel/Makefile
index 8315e3d..6bf474b 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -65,12 +65,12 @@ headers-new = 
$(LINUX)/arch/$(ARCH_DIR)/include/asm/./kvm*.h \
 
 header-sync:
rm -rf $T
-   rsync -R \
+   rsync -R -L \
 "$(LINUX)"/./include/linux/kvm*.h \
 $(if $(wildcard $(headers-old)), $(headers-old)) \
  $T/
$(if $(wildcard $(headers-new)), \
-   rsync -R \
+   rsync -R -L \
 $(wildcard $(headers-new)) \
  $T/include/asm-$(ARCH_DIR)/)
 


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/13 v7] PCI: Linux kernel SR-IOV support

2008-12-16 Thread Jike Song
Jesse Barnes wrote:
> Given a respin of 10-13 I think it's reasonable to merge this into 2.6.29, 
> but 
> I'd be much happier about it if we got some driver code along with it, so as 
> not to have an unused interface sitting around for who knows how many 
> releases.  Is that reasonable?  Do you know if any of the corresponding PF/VF 
> driver bits are ready yet?

Hi Jesse, 

Yu Zhao has posted a patch set with subject "SR-IOV driver example" 
at November 26, which illustrated the usage of SR-IOV API in Intel 82576 VF/PF
drivers;-)

--
Thanks,
Jike
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: Re:RE: [PATCH 1/3] KVM: pci passthrough un-page-aligned mmio device on machines w/o VT-d

2008-12-16 Thread Han, Weidong
刘晓建 wrote:
> 2008-12-16,"Han, Weidong"  wrote:
>> Pls note that multiple devices may share one page for their MMIO,
>> and they may be assigned to different guests, there is potential
>> isolation issue. So we don't allow to assign these devices.
> 
> In my view, we can modify the get_real_device() to open the file
> /proc/iomem to find out whether the "potential issue" is a real one,
> instead of disabling this feature all the times.
> 
> Xiaojian Liu

As I know, there are few devices that have unpage-aligned mmio, and they are 
almost legacy. What's more, it's a little weird to map unpage-aligned memory 
slot, though I don't know what's problem on it. In short, I don't perfer to 
assign these devices.

Regards,
Weidong

Re: [Qemu-devel] [PATCH 0/3] Add BIOS splash image support

2008-12-16 Thread Carl-Daniel Hailfinger
On 16.12.2008 22:51, Laurent Vivier wrote:
> Le mardi 16 décembre 2008 à 22:46 +0200, Blue Swirl a écrit :
>   
>> On 12/16/08, Anthony Liguori  wrote:
>> 
>>> Blue Swirl wrote:
>>>   
>
>   
  The control channel may still be needed.

 Alternatively the BIOS could load the image and fade parameters from a
 new ROM or from the configuration device and draw it to screen. This
 would need some PNG support to BIOS, or that the image stored in raw
 form.


 
>>>  Yeah, having QEMU render to the VGA directly is a bit ugly.  It would be
>>> nicer if the BIOS actually rendered the image but I'm not sure I think we
>>> should reject the patch just because it doesn't.
>>>   
>> Actually this way the image can be in full color even if the emulated
>> device was an EGA in text mode.
>> 
>
> And you can provide the image name on the command line, and complexity
> is in Qemu, not in BIOS.
>   

If one of the goals of QEMU is to be somewhat similar to hardware, this
should be done in the BIOS.

What happens if the BIOS provides a splash screen? Will it override the
QEMU splash screen?

> But in fact, my first idea was to read the image data from the
> configuration device (which is always possible with LOGO_CMD_OFFSET),
> but when I saw how it has been done in VirtualBox, I though it was a
> good idea.
>   

Modern x86 BIOSes read the splash screen from the BIOS ROM and the
settings from NVRAM (sometimes the BIOS ROM is used for that as well by
reflashing a sector of the ROM on every boot).

Regards,
Carl-Daniel

-- 
http://www.hailfinger.org/

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


kvm-81 and Windows XP - delayed write failed

2008-12-16 Thread Ross McKay
G'day,

I must be doing something wrong, because it sounds like everyone else is
happy about kvm-81.

My Windows XP guests now constantly show "Delayed Write Failed" popups.
The problem vanishes when I revert to kvm-80, which I didn't have any
problems on.

The guest images are qcow2 compressed (via qemu-img convert -c) and I'm
hosting on Fedora 9 x86-64 on an AMD Turion TK-55 laptop.

Any ideas if I'm likely doing something wrong? I can happily stick with
kvm-80 for now, but don't know if I'm going to be stuck there; any
information appreciated.

cheers,
Ross
-- 
Ross McKay, Toronto, NSW Australia
"Let the laddie play wi the knife - he'll learn"
- The Wee Book of Calvin
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] avoid kvm-userspace merge conflict with PowerPC KVM support in qemu

2008-12-16 Thread Hollis Blanchard
PowerPC KVM support was accepted into upstream qemu. To ease the merge
conflicts, you should apply this patch to remove all traces of PowerPC
KVM code from kvm-userspace before the next qemu pull.

Signed-off-by: Hollis Blanchard 
---
You'll also want to remove qemu/pc-bios/bamboo.dtb, which I can't
express in this patch because guilt sucks.

Sorry if I missed anything; let me know if you you have problems.

diff --git a/qemu/Makefile b/qemu/Makefile
index b2ca039..745851d 100644
--- a/qemu/Makefile
+++ b/qemu/Makefile
@@ -228,7 +228,6 @@ BLOBS=bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \
 video.x openbios-sparc32 openbios-sparc64 pxe-ne2k_pci.bin \
 pxe-rtl8139.bin pxe-pcnet.bin pxe-e1000.bin
 BLOBS += extboot.bin
-BLOBS += bamboo.dtb
 else
 BLOBS=
 endif
diff --git a/qemu/Makefile.target b/qemu/Makefile.target
index 315c3c9..a304570 100644
--- a/qemu/Makefile.target
+++ b/qemu/Makefile.target
@@ -231,12 +231,6 @@ LIBOBJS+=qemu-kvm-helper.o
 endif
 endif
 
-ifeq ($(TARGET_BASE_ARCH), ppc)
-ifeq ($(USE_KVM), 1)
-LIBOBJS+= qemu-kvm-powerpc.o
-endif
-endif
-
 LIBOBJS+= op_helper.o
 
 ifneq ($(TARGET_ARCH), ia64)
@@ -679,11 +673,6 @@ ifdef CONFIG_BLUEZ
 LIBS += $(CONFIG_BLUEZ_LIBS)
 endif
 
-ifdef CONFIG_LIBFDT
-LIBS += -lfdt
-DEPLIBS += ../libfdt/libfdt.a
-endif
-
 # SCSI layer
 OBJS+= lsi53c895a.o esp.o
 
@@ -747,7 +736,6 @@ OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o
 OBJS+= unin_pci.o ppc_chrp.o
 # PowerPC 4xx boards
 OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc4xx_pci.o ppc405_uc.o ppc405_boards.o
-OBJS+= ppc440.o ppc440_bamboo.o device_tree.o
 # virtio support
 OBJS+= virtio.o virtio-blk.o virtio-balloon.o
 OBJS+= virtio-net.o
diff --git a/qemu/configure b/qemu/configure
index 5f5264f..468896e 100755
--- a/qemu/configure
+++ b/qemu/configure
@@ -124,7 +124,6 @@ blobs="yes"
 signalfd="no"
 eventfd="no"
 cpu_emulation="yes"
-device_tree_support=""
 
 # OS specific
 targetos=`uname -s`
@@ -389,8 +388,6 @@ for opt do
   ;;
   --disable-cpu-emulation) cpu_emulation="no"
   ;;
-  --disable-libfdt) device_tree_support="no"
-  ;;
   *) echo "ERROR: unknown option $opt"; exit 1
   ;;
   esac
@@ -503,7 +500,6 @@ echo "  --disable-aiodisable AIO support"
 echo "  --disable-blobs  disable installing provided firmware blobs"
 echo "  --kerneldir=PATH look for kernel includes in PATH"
 echo "  --disable-cpu-emulation  disables use of qemu cpu emulation code"
-echo "  --disable-libfdt disables use of libfdt support for device 
tree"
 echo ""
 echo "NOTE: The object files are built at the place where configure is 
launched"
 exit 1
@@ -1092,31 +1088,6 @@ else
   binsuffix="/bin"
 fi
 
-##
-# libfdt probe
-#
-if test -z "$device_tree_support" -a \
-   "$cpu" = "powerpc"; then
-  device_tree_support="no"
-  cat > $TMPC << EOF
-#include 
-/* XXX uncomment later when libfdt is built before this test */
-//int main(void) { void *fdt; return fdt_create(fdt, 1024); }
-int main (void) {return 0;}
-EOF
-# XXX for now do not try to link to libfdt and just check for header */
-# if $cc $ARCH_CFLAGS $CFLAGS $LDFLAGS -o $TMPE $TMPC -lfdt 2> /dev/null ; then
-  if $cc $ARCH_CFLAGS $CFLAGS $LDFLAGS -o $TMPE $TMPC 2> /dev/null; then
-   device_tree_support="yes"
-  else
-echo
-echo "Error: Could not find libfdt"
-echo "Make sure to have the libfdt libs and headers installed."
-echo
-exit 1
-  fi
-fi
-
 echo "Install prefix$prefix"
 echo "BIOS directory$prefix$datasuffix"
 echo "binary directory  $prefix$binsuffix"
@@ -1161,9 +1132,6 @@ fi
 echo "kqemu support $kqemu"
 echo "kvm support   $kvm"
 echo "CPU emulation $cpu_emulation"
-if test $cpu = "powerpc"; then
-echo "libfdt support$device_tree_support"
-fi
 echo "brlapi support$brlapi"
 echo "Documentation $build_docs"
 [ ! -z "$uname_release" ] && \
@@ -1726,10 +1694,6 @@ case "$target_cpu" in
 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
 echo "#define TARGET_PPC 1" >> $config_h
 echo "#define TARGET_PPCEMB 1" >> $config_h
-if test "$device_tree_support" = "yes" ; then
-   echo "#define CONFIG_LIBFDT 1" >> $config_h
-   echo "CONFIG_LIBFDT=1" >> $config_mak
-fi
 configure_kvm
   ;;
   ppc64)
diff --git a/qemu/hw/boards.h b/qemu/hw/boards.h
index d2b26c6..fae6d19 100644
--- a/qemu/hw/boards.h
+++ b/qemu/hw/boards.h
@@ -40,7 +40,6 @@ extern QEMUMachine core99_machine;
 extern QEMUMachine heathrow_machine;
 extern QEMUMachine ref405ep_machine;
 extern QEMUMachine taihu_machine;
-extern QEMUMachine bamboo_machine;
 
 /* mips_r4k.c */
 extern QEMUMachine mips_machine;
diff --git a/qemu/hw/device_tree.c b/qemu/hw/device_tree.c
deleted file mode 100644
index 2621ff1..000
--- a/qemu/hw/device_tree.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Functions to help device tree manipulation using libfdt.
- * It also provides functions to read entries from device tree proc
- * interface.
- *
- * Copyright 2008 IBM Corporation.

Re: [PATCH 0/13 v7] PCI: Linux kernel SR-IOV support

2008-12-16 Thread Jesse Barnes
On Friday, November 21, 2008 10:36 am Yu Zhao wrote:
> Greetings,
>
> Following patches are intended to support SR-IOV capability in the
> Linux kernel. With these patches, people can turn a PCI device with
> the capability into multiple ones from software perspective, which
> will benefit KVM and achieve other purposes such as QoS, security,
> and etc.
>
> The Physical Function and Virtual Function drivers using the SR-IOV
> APIs will come soon!
>
> Major changes from v6 to v7:
> 1, remove boot-time resource rebalancing support. (Greg KH)
> 2, emit uevent upon the PF driver is loaded. (Greg KH)
> 3, put SR-IOV callback function into the 'pci_driver'. (Matthew Wilcox)
> 4, register SR-IOV service at the PF loading stage.
> 5, remove unnecessary APIs (pci_iov_enable/disable).

Thanks for your patience with this, Yu, I know it's been a long haul. :)

I applied 1-9 to my linux-next branch; and at least patch #10 needs a respin, 
so can you re-do 10-13 as a new patch set?

On re-reading the last thread, there was a lot of smoke, but very little fire 
afaict.  The main questions I saw were:

  1) do we need SR-IOV at all?  why not just make each subsystem export
 devices to guests?
This is a bit of a red herring.  Nothing about SR-IOV prevents us from
making subsystems more v12n friendly.  And since SR-IOV is a hardware
feature supported by devices these days, we should make Linux support it.

  2) should the PF/VF drivers be the same or not?
Again, the SR-IOV patchset and PCI spec don't dictate this.  We're free to
do what we want here.

  3) should VF devices be represented by pci_dev structs?
Yes.  (This is an easy one :)

  4) can VF devices be used on the host?
Yet again, SR-IOV doesn't dictate this.  Developers can make PF/VF combo
drivers or split them, and export the resulting devices however they want. 
Some subsystem work may be needed to make this efficient, but SR-IOV
itself is agnostic about it.

So overall I didn't see many objections to the actual code in the last post, 
and the issues above certainly don't merit a NAK IMO...

Given a respin of 10-13 I think it's reasonable to merge this into 2.6.29, but 
I'd be much happier about it if we got some driver code along with it, so as 
not to have an unused interface sitting around for who knows how many 
releases.  Is that reasonable?  Do you know if any of the corresponding PF/VF 
driver bits are ready yet?

Thanks,
-- 
Jesse Barnes, Intel Open Source Technology Center

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] AF_VMCHANNEL address family for guest<->host communication.

2008-12-16 Thread Dor Laor

Evgeniy Polyakov wrote:

On Tue, Dec 16, 2008 at 08:57:27AM +0200, Gleb Natapov (g...@redhat.com) wrote:
  

Another approach is to implement that virtio backend with netlink based
userspace interface (like using connector or genetlink). This does not
differ too much from what you have with special socket family, but at
least it does not duplicate existing functionality of
userspace-kernelspace communications.

  

I implemented vmchannel using connector initially (the downside is that
message can be dropped). Is this more expectable for upstream? The
implementation was 300 lines of code.



Hard to tell, it depends on implementation. But if things are good, I
have no objections as connector maintainer :)

Messages in connector in particular and netlink in general are only
dropped, when receiving buffer is full (or when there is no memory), you
can tune buffer size to match virtual queue size or vice versa.

  
Gleb was aware of that and it's not a problem since all of the 
anticipated usages may
drop msgs (guest statistics, cut&paste, mouse movements, single sign on 
commands, etc).

Service that would need reliability could use basic acks.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Qemu-devel] [PATCH 0/3] Add BIOS splash image support

2008-12-16 Thread Laurent Vivier
Le mardi 16 décembre 2008 à 22:46 +0200, Blue Swirl a écrit :
> On 12/16/08, Anthony Liguori  wrote:
> > Blue Swirl wrote:

> > >  The control channel may still be needed.
> > >
> > > Alternatively the BIOS could load the image and fade parameters from a
> > > new ROM or from the configuration device and draw it to screen. This
> > > would need some PNG support to BIOS, or that the image stored in raw
> > > form.
> > >
> > >
> >
> >  Yeah, having QEMU render to the VGA directly is a bit ugly.  It would be
> > nicer if the BIOS actually rendered the image but I'm not sure I think we
> > should reject the patch just because it doesn't.
> 
> Actually this way the image can be in full color even if the emulated
> device was an EGA in text mode.

And you can provide the image name on the command line, and complexity
is in Qemu, not in BIOS.

But in fact, my first idea was to read the image data from the
configuration device (which is always possible with LOGO_CMD_OFFSET),
but when I saw how it has been done in VirtualBox, I though it was a
good idea.

But I agree, it's ugly.

Regards,
Laurent
-- 
-- laurent.viv...@bull.net  --
"Tout ce qui est impossible reste à accomplir"Jules Verne
"Things are only impossible until they're not" Jean-Luc Picard

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] AF_VMCHANNEL address family for guest<->host communication.

2008-12-16 Thread Evgeniy Polyakov
On Tue, Dec 16, 2008 at 08:57:27AM +0200, Gleb Natapov (g...@redhat.com) wrote:
> > Another approach is to implement that virtio backend with netlink based
> > userspace interface (like using connector or genetlink). This does not
> > differ too much from what you have with special socket family, but at
> > least it does not duplicate existing functionality of
> > userspace-kernelspace communications.
> > 
> I implemented vmchannel using connector initially (the downside is that
> message can be dropped). Is this more expectable for upstream? The
> implementation was 300 lines of code.

Hard to tell, it depends on implementation. But if things are good, I
have no objections as connector maintainer :)

Messages in connector in particular and netlink in general are only
dropped, when receiving buffer is full (or when there is no memory), you
can tune buffer size to match virtual queue size or vice versa.

-- 
Evgeniy Polyakov
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Qemu-devel] [PATCH 0/3] Add BIOS splash image support

2008-12-16 Thread Blue Swirl
On 12/16/08, Anthony Liguori  wrote:
> Blue Swirl wrote:
>
> > On 12/16/08, Laurent Vivier  wrote:
> >
> >
> > > This series of patches adds a nice BIOS startup splash screen.
> > >
> > >  It adds a "-splash" option allowing to specify the picture file name (a
> 640x480 (or less) and true color PNG) to display. You can enable/disable
> fade in,
> > >  fade out and bootmenu. The time to display the image can be also given
> (in
> > >  seconds).
> > >
> > >  Idea and some parts of code are stollen from VirtualBox (GPLv2/CDDL).
> > >
> > >  [PATCH 1/3] Correct fw_cfg_add_callback()
> > >  [PATCH 2/3] [BIOS] Add splash image support
> > >  [PATCH 3/3] [QEMU] Add BIOS splash image
> > >
> > >
> >
> > On second thought, there is no Gtk/Qt GUI because that is supposed to
> > be external to Qemu. By the same logic, why should there be any splash
> > screen? The external GUI can probably show it as easily using the same
> > Gtk/Qt/whatever.
> >
>
>  You need it to be consistent on the SDL/VNC display.

Oh, I didn't consider the VNC case. Then it may be difficult for the
GUI to manage the boot screen.

>  Modern BIOSes have splash screens.  I don't see why our BIOS shouldn't have
> one too.
>
> >  The control channel may still be needed.
> >
> > Alternatively the BIOS could load the image and fade parameters from a
> > new ROM or from the configuration device and draw it to screen. This
> > would need some PNG support to BIOS, or that the image stored in raw
> > form.
> >
> >
>
>  Yeah, having QEMU render to the VGA directly is a bit ugly.  It would be
> nicer if the BIOS actually rendered the image but I'm not sure I think we
> should reject the patch just because it doesn't.

Actually this way the image can be in full color even if the emulated
device was an EGA in text mode.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Qemu-devel] [PATCH 0/3] Add BIOS splash image support

2008-12-16 Thread Anthony Liguori

Blue Swirl wrote:

On 12/16/08, Laurent Vivier  wrote:
  

This series of patches adds a nice BIOS startup splash screen.

 It adds a "-splash" option allowing to specify the picture file name (a 
640x480 (or less) and true color PNG) to display. You can enable/disable fade in,
 fade out and bootmenu. The time to display the image can be also given (in
 seconds).

 Idea and some parts of code are stollen from VirtualBox (GPLv2/CDDL).

 [PATCH 1/3] Correct fw_cfg_add_callback()
 [PATCH 2/3] [BIOS] Add splash image support
 [PATCH 3/3] [QEMU] Add BIOS splash image



On second thought, there is no Gtk/Qt GUI because that is supposed to
be external to Qemu. By the same logic, why should there be any splash
screen? The external GUI can probably show it as easily using the same
Gtk/Qt/whatever.


You need it to be consistent on the SDL/VNC display.

Modern BIOSes have splash screens.  I don't see why our BIOS shouldn't 
have one too.



 The control channel may still be needed.

Alternatively the BIOS could load the image and fade parameters from a
new ROM or from the configuration device and draw it to screen. This
would need some PNG support to BIOS, or that the image stored in raw
form.
  


Yeah, having QEMU render to the VGA directly is a bit ugly.  It would be 
nicer if the BIOS actually rendered the image but I'm not sure I think 
we should reject the patch just because it doesn't.


Regards,

Anthony Liguori



--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Loss of lock drop in qemu/net.c

2008-12-16 Thread Anthony Liguori

Avi Kivity wrote:
hThe recent qemu merged does not allow net.h to include kvm code (due 
to a dependency on cpu.h).  This means I had to drop the 
kvm_sleep_begin()/kvm_sleep_end() around the packet send (which, btw, 
makes the whole thing vulnerable to hotunplug; we need refcounting or 
locking here).


Why does net.h include cpu.h and why would net.h need kvm code?

Regards,

Anthony Liguori


We'll need to find some way to put this back in.



--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Qemu-devel] [PATCH 0/3] Add BIOS splash image support

2008-12-16 Thread Blue Swirl
On 12/16/08, Laurent Vivier  wrote:
> This series of patches adds a nice BIOS startup splash screen.
>
>  It adds a "-splash" option allowing to specify the picture file name (a 
> 640x480 (or less) and true color PNG) to display. You can enable/disable fade 
> in,
>  fade out and bootmenu. The time to display the image can be also given (in
>  seconds).
>
>  Idea and some parts of code are stollen from VirtualBox (GPLv2/CDDL).
>
>  [PATCH 1/3] Correct fw_cfg_add_callback()
>  [PATCH 2/3] [BIOS] Add splash image support
>  [PATCH 3/3] [QEMU] Add BIOS splash image

On second thought, there is no Gtk/Qt GUI because that is supposed to
be external to Qemu. By the same logic, why should there be any splash
screen? The external GUI can probably show it as easily using the same
Gtk/Qt/whatever. The control channel may still be needed.

Alternatively the BIOS could load the image and fade parameters from a
new ROM or from the configuration device and draw it to screen. This
would need some PNG support to BIOS, or that the image stored in raw
form.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Loss of lock drop in qemu/net.c

2008-12-16 Thread Avi Kivity
hThe recent qemu merged does not allow net.h to include kvm code (due to 
a dependency on cpu.h).  This means I had to drop the 
kvm_sleep_begin()/kvm_sleep_end() around the packet send (which, btw, 
makes the whole thing vulnerable to hotunplug; we need refcounting or 
locking here).


We'll need to find some way to put this back in.

--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Qemu-devel] Re: [PATCH 2 of 5] add can_dma/post_dma for direct IO

2008-12-16 Thread Blue Swirl
On 12/16/08, Anthony Liguori  wrote:
> Avi Kivity wrote:
>
> > Blue Swirl wrote:
> >
> > >
> > > >  I don't understand.  It's not a device that needs bouncing, it's a
> > > > particular transfer.  This could be either due to the transfer
> targeting
> > > > mmio, or due to the transfer requiring a transformation.
> > > >
> > > >
> > >
> > > Should the bouncing be something more much complex, for example
> > > negotiated between the devices? Or maybe the devices set up a
> > > transforming and non-transforming channel (which the other end should
> > > be able to transform some more) and use them as needed?
> > >
> > >
> >
> > Yes.  We already have two cases:
> >
> > - may do partial request: useful for block storage where requests can be
> huge
> > - need full request: networking, where you can't send or receive half a
> packet; on the other hand, packets are small (even with tso)
> >
> > You're adding a third case, always bounce, when the data undergoes a
> transformation which can't happen in-place.
> >
>
>  IMHO, IOMMU translation is distinct from mapping/data transformation.  I
> would think the IOMMU translation API would be different in that it took a
> physical address and returned a physical address.

Fully agree. On Sparc32, the incoming address is called DVMA (device
virtual memory address).

>  The IOMMU DMA API (which could transform data potentially) should return a
> virtual address and data a physical address.  In the normal case
> (non-transforming IOMMU), it should just fall-through to CPU DMA API (which
> is just map/unmap).
>
>  The PCI DMA API would normally fall through to the IOMMU DMA API.
>
>  So we would have:
>
>  PCI DMA map(addr):
>   if IOMMU:
> return IOMMU DMA map(addr)
>   return CPU DMA map(addr)
>
>  IOMMU DMA map(addr):
>   new_address = IOMMU translate(addr)
>   if transform:
>return IOMMU byte-swap map(addr)
>   return CPU DMA map(addr)

But with this we would be back to the original merged API.

I'd propose three to four distinct steps:
1. Resolve the device addresses via IOMMU etc. to guest physical
addresses (typically no changes if no IOMMU)
2. Negotiate bouncing (if bounced, the step returns a host address, if
not, a physical address)
3. Map the physical addresses to host addresses, bypass for the bounce cases
4. Perform vectorized zero-copy AIO. (Profit?)

2 & 3 may/should be merged but I'm not sure we have the full picture yet.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [ANNOUNCE] kvm-81 release

2008-12-16 Thread Simon Gao

Farkas Levente wrote:

Avi Kivity wrote:
  

This release fixes a bunch of display regressions, and restores
userspace/kernel compatibility with older kernel modules.  There are a
few other goodies hidden in there, for example scsi is now enabled on


4G guests.
  


the best news in the last 10-20 kmv release we finally able to run all
of our guests with kvm-81 (even mandrake-10:-)))

the only problem that fedora-9's older kernel can not boot, but i boot
with the latest fedora-9 kernel, upgrade to fedora-10 hand in graphical
mode, crash in text mode and preupgrade hang with 100% cpu) so we can
use only f-9.
i hope it'll be easier to fix this fedora kernel's problem the the
mandrake one.

our setup:
- host:
  - Intel(R) Core(TM)2 Quad CPU Q6600  @ 2.40GHz
  - Intel S3000AHV
  - 8GB RAM
  - CentOS-5.2
  - kernel-2.6.18-92.1.18.el5 x86_64 64bit
- guest-1:
  - CentOS-5.2 - 4 vcpu
  - kernel-2.6.18-92.1.18.el5 i386 32bit
- guest-2:
  - CentOS-5.2 - 4 vcpu
  - kernel-2.6.18-92.1.18.el5 x86_64 64bit
- guest-3:
  - Mandrake-9 - 1 vcpu
  - kernel-2.4.19.16mdk-1-1mdk 32bit
- guest-4:
  - Mandrake-10 - 1 vcpu
  - kernel-2.6.14.2-p4-smp 32bit
- guest-5:
  - Windows XP Professional 32bit - 2 vcpu
- guest-7:
  - Fedora-9 - 4 vcpu
  - kernel-2.6.27.5-37.fc9.i686

  
Solaris 10 guest does not boot on CentOS 5.2. The boot screen keeps 
circling.


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3 of 3] [PATCH] kvm-userspace: fix gdbstub kvm integration

2008-12-16 Thread Michal Suchanek
Hello

I was trying to debug my patch that is not working and noticed this
crash in current kvm git.

The patch below makes kvm not crash when gdb is attched to gdbserver
so it certainly improves things.

Thanks

Michal

PS if you want further input from me add me to CC

On 16/12/2008, Christian Ehrhardt  wrote:
> # HG changeset patch
>  # User Christian Ehrhardt 
>  # Date 1228989958 -3600
>  # Node ID f80fb35de91fe69dae889c70948c9a53212ee444
>  # Parent  6f228c807ad0b239b7342d2974debfc66418d784
>  [PATCH] kvm-userspace: fix gdbstub kvm integration
>
>  From: Christian Ehrhardt 
>
>  Some recent qemu upstream merges brought in a new concept to not use "env" as
>  current cpu in gdb_handle_packet anymore. But the kvm calls still do, this
>  leads to SIGDEV's as env is not initialized when calling the functions like
>  kvm_save_registers.
>
>  Insted there is now a gdbstate structure holding current cpu for
>  step/continue and "other" ops splitted.
>
>  This patch changes the kvm_save_registers calls to use the right CPUState
>  variable for the kvm calls in gdb_handle_packet.
>
>  Signed-off-by: Christian Ehrhardt 
>  ---
>
>  [diffstat]
>   gdbstub.c |8 
>   1 file changed, 4 insertions(+), 4 deletions(-)
>
>  [diff]
>
>  diff --git a/qemu/gdbstub.c b/qemu/gdbstub.c
>  --- a/qemu/gdbstub.c
>  +++ b/qemu/gdbstub.c
>  @@ -1348,7 +1348,7 @@ static int gdb_handle_packet(GDBState *s
>  }
>  break;
>  case 'g':
>  -kvm_save_registers(env);
>  +kvm_save_registers(s->g_cpu);
>  len = 0;
>  for (addr = 0; addr < num_g_regs; addr++) {
>  reg_size = gdb_read_register(s->g_cpu, mem_buf + len, addr);
>  @@ -1366,7 +1366,7 @@ static int gdb_handle_packet(GDBState *s
>  len -= reg_size;
>  registers += reg_size;
>  }
>  -kvm_load_registers(env);
>  +kvm_load_registers(s->g_cpu);
>  put_packet(s, "OK");
>  break;
>  case 'm':
>
> --
>  To unsubscribe from this list: send the line "unsubscribe kvm" in
>  the body of a message to majord...@vger.kernel.org
>  More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Qemu-devel] Re: [PATCH 2 of 5] add can_dma/post_dma for direct IO

2008-12-16 Thread Anthony Liguori

Avi Kivity wrote:

Blue Swirl wrote:

 I don't understand.  It's not a device that needs bouncing, it's a
particular transfer.  This could be either due to the transfer 
targeting

mmio, or due to the transfer requiring a transformation.



Should the bouncing be something more much complex, for example
negotiated between the devices? Or maybe the devices set up a
transforming and non-transforming channel (which the other end should
be able to transform some more) and use them as needed?
  


Yes.  We already have two cases:

- may do partial request: useful for block storage where requests can 
be huge
- need full request: networking, where you can't send or receive half 
a packet; on the other hand, packets are small (even with tso)


You're adding a third case, always bounce, when the data undergoes a 
transformation which can't happen in-place.


IMHO, IOMMU translation is distinct from mapping/data transformation.  I 
would think the IOMMU translation API would be different in that it took 
a physical address and returned a physical address.


The IOMMU DMA API (which could transform data potentially) should return 
a virtual address and data a physical address.  In the normal case 
(non-transforming IOMMU), it should just fall-through to CPU DMA API 
(which is just map/unmap).


The PCI DMA API would normally fall through to the IOMMU DMA API.

So we would have:

PCI DMA map(addr):
 if IOMMU:
return IOMMU DMA map(addr)
 return CPU DMA map(addr)

IOMMU DMA map(addr):
 new_address = IOMMU translate(addr)
 if transform:
   return IOMMU byte-swap map(addr)
 return CPU DMA map(addr)

Regards,

Anthony Liguori

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Qemu-devel] Re: [PATCH 2 of 5] add can_dma/post_dma for direct IO

2008-12-16 Thread Avi Kivity

Blue Swirl wrote:

 I don't understand.  It's not a device that needs bouncing, it's a
particular transfer.  This could be either due to the transfer targeting
mmio, or due to the transfer requiring a transformation.



Should the bouncing be something more much complex, for example
negotiated between the devices? Or maybe the devices set up a
transforming and non-transforming channel (which the other end should
be able to transform some more) and use them as needed?
  


Yes.  We already have two cases:

- may do partial request: useful for block storage where requests can be 
huge
- need full request: networking, where you can't send or receive half a 
packet; on the other hand, packets are small (even with tso)


You're adding a third case, always bounce, when the data undergoes a 
transformation which can't happen in-place.


--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Qemu-devel] Re: [PATCH 2 of 5] add can_dma/post_dma for direct IO

2008-12-16 Thread Blue Swirl
On 12/16/08, Avi Kivity  wrote:
> Anthony Liguori wrote:
>
> >
> > > There are still some issues I'm not happy yet:
> > > - handling of access violations: resolving should stop before the bad
> > > page, the transfers should be done until that and then post error.
> > > - bounce buffers needed for Lance byte swapping are not well designed
> (stack)
> > >
> > >
> >
> > I think you could approach the bouncing via a map/unmap API but I'm not
> sure.  You would need a map() function to take a virtual address which is
> sort of weird.  That would allow you to stack them in an arbitrary fashion
> though.
> >
> >
>
>  I think that's broken.  iommus converts physical addresses to physical
> addresses (or bus addresses), possibly generating faults along the way, and
> depending on the iommu context.  map()/unmap() converts physical/bus
> addresses to virtual addresses, possibly bouncing.  Except for both doing
> conversions, they're very different.
>
>
> >
> > > This lead me to the thought that maybe we should not hide the bounce
> > > buffer activity, but instead make it more explicit for the device that
> > > needs bouncing. For the other device, the buffering or lack of it
> > > should be opaque.
> > >
> > >
> >
> > I think that's reasonable.
> >
>
>  I don't understand.  It's not a device that needs bouncing, it's a
> particular transfer.  This could be either due to the transfer targeting
> mmio, or due to the transfer requiring a transformation.

Should the bouncing be something more much complex, for example
negotiated between the devices? Or maybe the devices set up a
transforming and non-transforming channel (which the other end should
be able to transform some more) and use them as needed?

In the Lance case, some of the DMA is byte swapped and some not,
depending on the memory region used, some is swapped because of a
global bit in a register and finally the Sparc32 DMA controller
reverses the swapping.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Qemu-devel] Re: [PATCH 2 of 5] add can_dma/post_dma for direct IO

2008-12-16 Thread Blue Swirl
On 12/16/08, Paul Brook  wrote:
> > The generic resolving API should look something like
>  >
>  > int (*resolve)(target_phys_addr_t address_in, target_phys_addr_t
>  > length_in, target_phys_addr_t &address_out, target_phys_addr_t
>  > &length_out)
>
>
> I don't think this is sufficient. A paged iommu may split a single range into
>  multiple disjoint sections. i.e. we need SG lists.

That's why there is the length_out, it is called repeatedly until the
length is zero or it fails.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Qemu-devel] Re: [PATCH 2 of 5] add can_dma/post_dma for direct IO

2008-12-16 Thread Paul Brook
> The generic resolving API should look something like
>
> int (*resolve)(target_phys_addr_t address_in, target_phys_addr_t
> length_in, target_phys_addr_t &address_out, target_phys_addr_t
> &length_out)

I don't think this is sufficient. A paged iommu may split a single range into 
multiple disjoint sections. i.e. we need SG lists.

Paul
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Qemu-devel] [PATCH 3/3] [QEMU] Add BIOS splash image

2008-12-16 Thread Blue Swirl
On 12/16/08, Laurent Vivier  wrote:
> This patch adds to qemu the function needed to display a splash image under
>  BIOS control through the firmware control device.
>
>  It adds a "-splash" option allowing to specify the picture file name (a .PNG)
>  to display. You can enable/disable a fade in, fade out and the bootmenu. The
>  time to display the image can be also given (in seconds).

Nice. But shouldn't this be more generic, I think we want to use this
on OpenBIOS/Sparc (or PPC) too?
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Qemu-devel] Re: [PATCH 2 of 5] add can_dma/post_dma for direct IO

2008-12-16 Thread Blue Swirl
On 12/16/08, Anthony Liguori  wrote:
> Blue Swirl wrote:
>
> > I changed the ESP SCSI and Lance Ethernet on Sparc32 to resolve the IO
> > address to physical memory (see patch). ESP works (no zero copy yet),
> > Lance doesn't. It looks much better. Because the resolving activity is
> > performed in serial steps, unbounded IO vector allocation does not
> > happen, but we still could launch as many IO as there are free IO
> > vectors.
> >
> >
>
>  It is a good cleanup.
>
>
> > There are still some issues I'm not happy yet:
> > - handling of access violations: resolving should stop before the bad
> > page, the transfers should be done until that and then post error.
> > - bounce buffers needed for Lance byte swapping are not well designed
> (stack)
> >
> >
>
>  I think you could approach the bouncing via a map/unmap API but I'm not
> sure.  You would need a map() function to take a virtual address which is
> sort of weird.  That would allow you to stack them in an arbitrary fashion
> though.

I'd still like to keep resolving virtual addresses to physical
addresses separate from physical address to host pointer mapping. I
think this was the enlightening discovery we made earlier.

The generic resolving API should look something like

int (*resolve)(target_phys_addr_t address_in, target_phys_addr_t
length_in, target_phys_addr_t &address_out, target_phys_addr_t
&length_out)

whereas the map/unmap API would be as you specified earlier.

> > This lead me to the thought that maybe we should not hide the bounce
> > buffer activity, but instead make it more explicit for the device that
> > needs bouncing. For the other device, the buffering or lack of it
> > should be opaque.
> >
> >
>
>  I think that's reasonable.
>
>
> > Also the virtual-to-physical address resolution API could be generic,
> > ie all resolver functions should take same parameters so that the
> > devices would not need to know the next higher level device.
> >
> >
>
>  Yes.  I think this is key.  The only observation I would make is that the
> resolution API should have some sort of release function (so map/unmap,
> lock/unlock, whatever).

I'm not so sure resolving works the same symmetric way, because the
virtual to physical mapping will change over time because of guest
activity. We could cache the resolved translations, but then there
should be a way to invalidate the cache entries throughout the device
chain with callbacks etc.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/3] [QEMU] Add BIOS splash image

2008-12-16 Thread Laurent Vivier
This patch adds to qemu the function needed to display a splash image under
BIOS control through the firmware control device.

It adds a "-splash" option allowing to specify the picture file name (a .PNG)
to display. You can enable/disable a fade in, fade out and the bootmenu. The
time to display the image can be also given (in seconds).

Signed-off-by: Laurent Vivier 
---
 qemu/Makefile.target  |2 +-
 qemu/configure|   19 +++
 qemu/hw/bootmenu_pixmap.h |  231 +
 qemu/hw/fw_cfg.h  |1 +
 qemu/hw/pc.c  |  276 -
 qemu/sysemu.h |1 +
 qemu/vl.c |   19 +++
 7 files changed, 545 insertions(+), 4 deletions(-)
 create mode 100644 qemu/hw/bootmenu_pixmap.h

diff --git a/qemu/Makefile.target b/qemu/Makefile.target
index d6a6479..65f0252 100644
--- a/qemu/Makefile.target
+++ b/qemu/Makefile.target
@@ -894,7 +894,7 @@ firmware.o: firmware.c
 endif
 
 $(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a $(DEPLIBS)
-   $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) 
$(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS)
+   $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) 
$(PNGLITE_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS)
 
 endif # !CONFIG_USER_ONLY
 
diff --git a/qemu/configure b/qemu/configure
index 1f8b9b4..7f20a4b 100755
--- a/qemu/configure
+++ b/qemu/configure
@@ -833,6 +833,19 @@ else
 fi
 
 ##
+# libpnglite check
+
+cat > $TMPC << EOF
+#include 
+int main(void) { (void)png_init(NULL, NULL); return 0; }
+EOF
+if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz -lpnglite 2> /dev/null ; 
then
+pnglite=yes
+else
+pnglite=no
+fi
+
+##
 # SDL probe
 
 sdl_too_old=no
@@ -1187,6 +1200,7 @@ echo "SDL support   $sdl"
 if test "$sdl" != "no" ; then
 echo "SDL static link   $sdl_static"
 fi
+echo "pnglite support   $pnglite"
 echo "curses support$curses"
 echo "mingw32 support   $mingw32"
 echo "Audio drivers $audio_drv_list"
@@ -1477,6 +1491,11 @@ if test "$cocoa" = "yes" ; then
   echo "#define CONFIG_COCOA 1" >> $config_h
   echo "CONFIG_COCOA=yes" >> $config_mak
 fi
+if test "$pnglite" = "yes" ; then
+  echo "#define CONFIG_PNGLITE 1" >> $config_h
+  echo "CONFIG_PNGLITE=yes" >> $config_mak
+  echo "PNGLITE_LIBS=-lpnglite" >> $config_mak
+fi
 if test "$curses" = "yes" ; then
   echo "#define CONFIG_CURSES 1" >> $config_h
   echo "CONFIG_CURSES=yes" >> $config_mak
diff --git a/qemu/hw/bootmenu_pixmap.h b/qemu/hw/bootmenu_pixmap.h
new file mode 100644
index 000..a33ddb4
--- /dev/null
+++ b/qemu/hw/bootmenu_pixmap.h
@@ -0,0 +1,231 @@
+/*  GIMP header image file format (INDEXED): /home/vivierl/Desktop/Press F12 
for boot menu.h  */
+
+#define SPLASH_BOOTMENU_WIDTH 216
+#define SPLASH_BOOTMENU_HEIGHT 16
+
+static char bootmenu_pixmap[] = {
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,
+   1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,
+   0,0,1,1,0,0,0,0,0,1,1,1,1,1,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
+   1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

[PATCH 1/3] Correct fw_cfg_add_callback()

2008-12-16 Thread Laurent Vivier
This patch is needed to be able to register firmware configuration
device callback.
It is already included in qemu as commit r5978.

Signed-off-by: Laurent Vivier 
---
 qemu/hw/fw_cfg.c |7 ---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/qemu/hw/fw_cfg.c b/qemu/hw/fw_cfg.c
index 4e68670..c3b09c6 100644
--- a/qemu/hw/fw_cfg.c
+++ b/qemu/hw/fw_cfg.c
@@ -57,7 +57,6 @@ static void fw_cfg_write(FWCfgState *s, uint8_t value)
 FWCfgEntry *e = &s->entries[arch][s->cur_entry & FW_CFG_ENTRY_MASK];
 
 FW_CFG_DPRINTF("write %d\n", value);
-
 if (s->cur_entry & FW_CFG_WRITE_CHANNEL && s->cur_offset < e->len) {
 e->data[s->cur_offset++] = value;
 if (s->cur_offset == e->len) {
@@ -240,10 +239,12 @@ int fw_cfg_add_callback(void *opaque, uint16_t key, 
FWCfgCallback callback,
 FWCfgState *s = opaque;
 int arch = !!(key & FW_CFG_ARCH_LOCAL);
 
+if (!(key & FW_CFG_WRITE_CHANNEL))
+return 0;
+
 key &= FW_CFG_ENTRY_MASK;
 
-if (key >= FW_CFG_MAX_ENTRY || !(key & FW_CFG_WRITE_CHANNEL)
-|| len > 65535)
+if (key >= FW_CFG_MAX_ENTRY || len > 65535)
 return 0;
 
 s->entries[arch][key].data = data;
-- 
1.5.6.5

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 0/3] Add BIOS splash image support

2008-12-16 Thread Laurent Vivier
This series of patches adds a nice BIOS startup splash screen.

It adds a "-splash" option allowing to specify the picture file name (a 640x480 
(or less) and true color PNG) to display. You can enable/disable fade in,
fade out and bootmenu. The time to display the image can be also given (in
seconds).

Idea and some parts of code are stollen from VirtualBox (GPLv2/CDDL).

[PATCH 1/3] Correct fw_cfg_add_callback()
[PATCH 2/3] [BIOS] Add splash image support
[PATCH 3/3] [QEMU] Add BIOS splash image

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/3] [BIOS] Add splash image support

2008-12-16 Thread Laurent Vivier
This patch adds Qemu firmware configuration device interface to display
a splash image at BIOS startup.

Idea and some parts of code are stollen from VirtualBox.

Signed-off-by: Laurent Vivier 
---
 bios/Makefile  |4 +-
 bios/logo.c|  206 
 bios/logo.h|   56 +++
 bios/rombios.c |  125 +-
 4 files changed, 340 insertions(+), 51 deletions(-)
 create mode 100644 bios/logo.c
 create mode 100644 bios/logo.h

diff --git a/bios/Makefile b/bios/Makefile
index a2759a9..d30be7d 100644
--- a/bios/Makefile
+++ b/bios/Makefile
@@ -79,7 +79,7 @@ dist-clean: clean
 bios-clean:
rm -f  BIOS-bochs-*
 
-BIOS-bochs-legacy: rombios.c apmbios.S biossums rombios.h
+BIOS-bochs-legacy: rombios.c apmbios.S biossums rombios.h logo.c logo.h
$(GCC) $(BIOS_BUILD_DATE) -DLEGACY -E -P $< > _rombiosl_.c
$(BCC) -o rombiosl.s -C-c -D__i86__ -0 -S _rombiosl_.c
sed -e 's/^\.text//' -e 's/^\.data//' rombiosl.s > _rombiosl_.s
@@ -90,7 +90,7 @@ BIOS-bochs-legacy: rombios.c apmbios.S biossums rombios.h
rm -f  _rombiosl_.s
 
 
-rombios16.bin: rombios.c apmbios.S biossums rombios.h
+rombios16.bin: rombios.c apmbios.S biossums rombios.h logo.c logo.h
$(GCC) $(BIOS_BUILD_DATE) -E -P $< > _rombios_.c
$(BCC) -o rombios.s -C-c -D__i86__ -0 -S _rombios_.c
sed -e 's/^\.text//' -e 's/^\.data//' rombios.s > _rombios_.s
diff --git a/bios/logo.c b/bios/logo.c
new file mode 100644
index 000..d41eb10
--- /dev/null
+++ b/bios/logo.c
@@ -0,0 +1,206 @@
+/**
+ * Stuff for drawing the BIOS logo.
+ */
+
+/*
+ * Copyright (C) 2004-2008 Sun Microsystems, Inc.
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
+ * Clara, CA 95054 USA or visit http://www.sun.com if you need
+ * additional information or have any questions.
+ *
+ * QEMU/KVM port by Laurent Vivier 
+ *
+ */
+
+#include "logo.h"
+
+#define BIOS_CFG_IOPORT 0x510
+#define BIOS_CFG_SIGNATURE 0x
+#define BIOS_CFG_SPLASH 0x4007
+
+#define WAIT_MS 16
+
+/**
+ * Set video mode (VGA).
+ * @paramsNew video mode.
+ */
+void set_mode(mode)
+  Bit8u mode;
+  {
+  ASM_START
+push bp
+mov  bp, sp
+
+  push ax
+
+  mov  ah, #0
+  mov  al, 4[bp] ; mode
+  int  #0x10
+
+  pop  ax
+
+pop  bp
+  ASM_END
+  }
+
+Bit8u read_logo_byte(offset)
+  Bit8u offset;
+{
+outw(BIOS_CFG_IOPORT, BIOS_CFG_SPLASH);
+outb(BIOS_CFG_IOPORT + 1, LOGO_CMD_SET_OFFSET);
+outb(BIOS_CFG_IOPORT + 1, offset);
+return inb(BIOS_CFG_IOPORT + 1);
+}
+
+Bit16u read_logo_word(offset)
+  Bit8u offset;
+{
+Bit16u word;
+outw(BIOS_CFG_IOPORT, BIOS_CFG_SPLASH);
+outb(BIOS_CFG_IOPORT + 1, LOGO_CMD_SET_OFFSET);
+outb(BIOS_CFG_IOPORT + 1, offset);
+word = inb(BIOS_CFG_IOPORT + 1);
+word = (inb(BIOS_CFG_IOPORT + 1) << 8) | word;
+return word;
+}
+
+void clear_screen()
+{
+// Hide cursor, clear screen and move cursor to starting position
+ASM_START
+push bx
+push cx
+push dx
+
+mov  ax, #0x100
+mov  cx, #0x1000
+int  #0x10
+
+mov  ax, #0x700
+mov  bh, #7
+xor  cx, cx
+mov  dx, #0x184f
+int  #0x10
+
+mov  ax, #0x200
+xor  bx, bx
+xor  dx, dx
+int  #0x10
+
+pop  dx
+pop  cx
+pop  bx
+ASM_END
+}
+
+Bit8u
+logo_enabled()
+{
+LOGOHDR*logo_hdr = 0;
+Bit8u  is_fade_in, is_fade_out, uBootMenu;
+Bit16u logo_time;
+
+/* check QEMU signature */
+
+outw(BIOS_CFG_IOPORT, BIOS_CFG_SIGNATURE);
+if (inb(BIOS_CFG_IOPORT + 1) != 'Q')
+return 0;
+if (inb(BIOS_CFG_IOPORT + 1) != 'E')
+return 0;
+if (inb(BIOS_CFG_IOPORT + 1) != 'M')
+return 0;
+if (inb(BIOS_CFG_IOPORT + 1) != 'U')
+return 0;
+
+/* check splash signature */
+
+if (read_logo_word(&logo_hdr->u16Signature) != LOGO_HDR_MAGIC)
+return 0;
+
+/* Get options */
+
+is_fade_in = read_logo_byte(&logo_hdr->fu8FadeIn);
+is_fade_out = read_logo_byte(&logo_hdr->fu8FadeOut);
+logo_time = read_logo_word(&logo_hdr->u16LogoMillies);
+
+return (is_fade_in || is_fade_out || logo_time);
+}
+
+void logo_show()
+{
+LOGOHDR*logo_hdr = 0;
+Bit8u is_fade_in;
+Bit16u i;
+
+set_mode(0x12); /* 640x480 */
+
+is_fade_in = read_logo_byte(&logo_hdr->fu8FadeIn);
+
+outw(BIOS_CFG_IOPORT, BIOS_CFG_SPLASH);
+if (is_fade_in)
+{
+for (i = 0; i < LOGO_SHOW_STEPS; i++)

Re: Status of pci passthrough work?

2008-12-16 Thread Amit Shah

- "xming"  wrote:

> > It's usable; but not ported to newer kernel versions. I can't say
> when I'll get around doing it. In the meanwhile if someone else is
> interested, drop me a line.
> 
> Do you mean interested in porting to newer versions (kvm + kernel) or
> interested
> in to use pvdma?
> 
> If it's the latter, I am.

I mean interested in porting it.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Status of pci passthrough work?

2008-12-16 Thread xming
> It's usable; but not ported to newer kernel versions. I can't say when I'll 
> get around doing it. In the meanwhile if someone else is interested, drop me 
> a line.

Do you mean interested in porting to newer versions (kvm + kernel) or
interested
in to use pvdma?

If it's the latter, I am.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Status of pci passthrough work?

2008-12-16 Thread Amit Shah
Hello,

- "xming"  wrote:

> When can we expect pvdma updates? Is it ever going to be merged into
> mainline kvm?

The pvdma tree at

http://git.kernel.org/?p=linux/kernel/git/amit/kvm.git;a=shortlog;h=pvdma

is based of an older Linux version.

It's usable; but not ported to newer kernel versions. I can't say when I'll get 
around doing it. In the meanwhile if someone else is interested, drop me a line.

Amit.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [ANNOUNCE] kvm-81 release

2008-12-16 Thread Farkas Levente
Avi Kivity wrote:
> This release fixes a bunch of display regressions, and restores
> userspace/kernel compatibility with older kernel modules.  There are a
> few other goodies hidden in there, for example scsi is now enabled on
>>4G guests.

the best news in the last 10-20 kmv release we finally able to run all
of our guests with kvm-81 (even mandrake-10:-)))

the only problem that fedora-9's older kernel can not boot, but i boot
with the latest fedora-9 kernel, upgrade to fedora-10 hand in graphical
mode, crash in text mode and preupgrade hang with 100% cpu) so we can
use only f-9.
i hope it'll be easier to fix this fedora kernel's problem the the
mandrake one.

our setup:
- host:
  - Intel(R) Core(TM)2 Quad CPU Q6600  @ 2.40GHz
  - Intel S3000AHV
  - 8GB RAM
  - CentOS-5.2
  - kernel-2.6.18-92.1.18.el5 x86_64 64bit
- guest-1:
  - CentOS-5.2 - 4 vcpu
  - kernel-2.6.18-92.1.18.el5 i386 32bit
- guest-2:
  - CentOS-5.2 - 4 vcpu
  - kernel-2.6.18-92.1.18.el5 x86_64 64bit
- guest-3:
  - Mandrake-9 - 1 vcpu
  - kernel-2.4.19.16mdk-1-1mdk 32bit
- guest-4:
  - Mandrake-10 - 1 vcpu
  - kernel-2.6.14.2-p4-smp 32bit
- guest-5:
  - Windows XP Professional 32bit - 2 vcpu
- guest-7:
  - Fedora-9 - 4 vcpu
  - kernel-2.6.27.5-37.fc9.i686


-- 
  Levente   "Si vis pacem para bellum!"
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re:RE: [PATCH 1/3] KVM: pci passthrough un-page-aligned mmio device on machines w/o VT-d

2008-12-16 Thread 刘晓建
2008-12-16,"Han, Weidong"  wrote:
>Pls note that multiple devices may share one page for their MMIO, and they may
> be
> assigned to different guests, there is potential isolation issue. So we don't
> allow to assign these devices.

In my view, we can modify the get_real_device() to open the file /proc/iomem to
find out whether the "potential issue" is a real one, instead of disabling this
feature all the times.

Xiaojian Liu
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re:RE: [PATCH 1/3] KVM: pci passthrough un-page-aligned mmio device on machines w/o VT-d

2008-12-16 Thread 刘晓建
> In my view, we can modify the get_real_device() to open the file /dev/iomem to
> find out whether the "potential issue" is a real one, instead of disabling 
> this
> feature all the times.

Sorry, I made a mistake. I mean the file /proc/iomem, not /dev/iomem.

Regards,
Xiaojian Liu


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Qemu-devel] Re: [PATCH 2 of 5] add can_dma/post_dma for direct IO

2008-12-16 Thread Avi Kivity

Anthony Liguori wrote:

There are still some issues I'm not happy yet:
- handling of access violations: resolving should stop before the bad
page, the transfers should be done until that and then post error.
- bounce buffers needed for Lance byte swapping are not well designed 
(stack)
  


I think you could approach the bouncing via a map/unmap API but I'm 
not sure.  You would need a map() function to take a virtual address 
which is sort of weird.  That would allow you to stack them in an 
arbitrary fashion though.




I think that's broken.  iommus converts physical addresses to physical 
addresses (or bus addresses), possibly generating faults along the way, 
and depending on the iommu context.  map()/unmap() converts physical/bus 
addresses to virtual addresses, possibly bouncing.  Except for both 
doing conversions, they're very different.



This lead me to the thought that maybe we should not hide the bounce
buffer activity, but instead make it more explicit for the device that
needs bouncing. For the other device, the buffering or lack of it
should be opaque.
  


I think that's reasonable.


I don't understand.  It's not a device that needs bouncing, it's a 
particular transfer.  This could be either due to the transfer targeting 
mmio, or due to the transfer requiring a transformation.





Also the virtual-to-physical address resolution API could be generic,
ie all resolver functions should take same parameters so that the
devices would not need to know the next higher level device.
  


Yes.  I think this is key.  The only observation I would make is that 
the resolution API should have some sort of release function (so 
map/unmap, lock/unlock, whatever).


Also, in order to support chaining, the input and output parameters need 
to be the same (both sglists).


--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH] Kvm: Qemu: save nvram

2008-12-16 Thread Zhang, Yang
Hi
Please drop former. 
This is the modify patch for save nvram.
I add the new command line arg of "-nvram file" to specify the location 
Of the file. Without the arg ,it will save the nvram in the current dir 
and named as "nvram.dat". Also, it will read the saved file "nvram.dat" 
from current dir without the arg.

>From 902ac71c035a641ac0c9e0a0859d8198dfbe3319 Mon Sep 17 00:00:00 2001
From: Zhang Yang 
Date: Mon, 15 Dec 2008 23:56:12 +0800
Subject: [PATCH] KVM : Qemu: Save nvram

Save nvram to the file

Signed-off-by: Zhang Yang 
---
 qemu/hw/ipf.c   |   20 +++-
 qemu/target-ia64/firmware.c |  110 --
 qemu/target-ia64/firmware.h |   24 +-
 qemu/vl.c   |9 
 4 files changed, 154 insertions(+), 9 deletions(-)

diff --git a/qemu/hw/ipf.c b/qemu/hw/ipf.c
index 3e24c98..ba3f0b4 100644
--- a/qemu/hw/ipf.c
+++ b/qemu/hw/ipf.c
@@ -53,6 +53,7 @@ static fdctrl_t *floppy_controller;
 static RTCState *rtc_state;
 static PCIDevice *i440fx_state;
 
+uint8_t *g_fw_start;
 static uint32_t ipf_to_legacy_io(target_phys_addr_t addr)
 {
 return (uint32_t)(((addr&0x3ff) >> 12 << 2)|((addr) & 0x3));
@@ -454,9 +455,14 @@ static void ipf_init1(ram_addr_t ram_size, int 
vga_ram_size,
 unsigned long  image_size;
 char *image = NULL;
 uint8_t *fw_image_start;
+unsigned long nvram_addr = 0;
+unsigned long nvram_fd = 0;
+unsigned long type = READ_FROM_NVRAM;
+unsigned long i = 0;
 ram_addr_t fw_offset = qemu_ram_alloc(GFW_SIZE);
 uint8_t *fw_start = phys_ram_base + fw_offset;
 
+g_fw_start = fw_start;
 snprintf(buf, sizeof(buf), "%s/%s", bios_dir, FW_FILENAME);
 image = read_image(buf, &image_size );
 if (NULL == image || !image_size) {
@@ -472,7 +478,19 @@ static void ipf_init1(ram_addr_t ram_size, int 
vga_ram_size,
 free(image);
 flush_icache_range((unsigned long)fw_image_start,
(unsigned long)fw_image_start + image_size);
-kvm_ia64_build_hob(ram_size + above_4g_mem_size, smp_cpus, fw_start);
+
+nvram_addr = NVRAM_START;
+nvram_fd = kvm_ia64_nvram_init(type);
+if (nvram_fd != -1) {
+kvm_ia64_copy_from_nvram_to_GFW(nvram_fd, g_fw_start);
+close(nvram_fd);
+}
+i = atexit(kvm_ia64_copy_from_GFW_to_nvram);
+if (i != 0)
+fprintf(stderr, "cannot set exit function\n");
+
+kvm_ia64_build_hob(ram_size + above_4g_mem_size, smp_cpus,
+   fw_start, nvram_addr);
 }
 
 /*Register legacy io address space, size:64M*/
diff --git a/qemu/target-ia64/firmware.c b/qemu/target-ia64/firmware.c
index bac2721..88fcaa8 100644
--- a/qemu/target-ia64/firmware.c
+++ b/qemu/target-ia64/firmware.c
@@ -31,6 +31,8 @@
 
 #include "firmware.h"
 
+#include "qemu-common.h"
+
 typedef struct {
 unsigned long signature;
 unsigned int  type;
@@ -85,14 +87,16 @@ static int hob_init(void  *buffer ,unsigned long buf_size);
 static int add_pal_hob(void* hob_buf);
 static int add_mem_hob(void* hob_buf, unsigned long dom_mem_size);
 static int add_vcpus_hob(void* hob_buf, unsigned long nr_vcpu);
-static int build_hob(void* hob_buf, unsigned long hob_buf_size,
- unsigned long dom_mem_size, unsigned long vcpus);
+static int add_nvram_hob(void *hob_buf, unsigned long nvram_addr);
+static int build_hob(void *hob_buf, unsigned long hob_buf_size,
+ unsigned long dom_mem_size, unsigned long vcpus,
+ unsigned long nvram_addr);
 static int load_hob(void *hob_buf,
 unsigned long dom_mem_size, void* hob_start);
 
 int
-kvm_ia64_build_hob(unsigned long memsize,
-   unsigned long vcpus, uint8_t* fw_start)
+kvm_ia64_build_hob(unsigned long memsize, unsigned long vcpus,
+   uint8_t *fw_start, unsigned long nvram_addr)
 {
 char   *hob_buf;
 
@@ -102,7 +106,7 @@ kvm_ia64_build_hob(unsigned long memsize,
 return -1;
 }
 
-if (build_hob(hob_buf, GFW_HOB_SIZE, memsize, vcpus) < 0) {
+if (build_hob(hob_buf, GFW_HOB_SIZE, memsize, vcpus, nvram_addr) < 0) {
 free(hob_buf);
 Hob_Output("Could not build hob");
 return -1;
@@ -206,7 +210,8 @@ add_max_hob_entry(void* hob_buf)
 
 static int
 build_hob(void* hob_buf, unsigned long hob_buf_size,
-  unsigned long dom_mem_size, unsigned long vcpus)
+  unsigned long dom_mem_size, unsigned long vcpus,
+  unsigned long nvram_addr)
 {
 //Init HOB List
 if (hob_init(hob_buf, hob_buf_size) < 0) {
@@ -229,6 +234,11 @@ build_hob(void* hob_buf, unsigned long hob_buf_size,
 goto err_out;
 }
 
+if (add_nvram_hob(hob_buf, nvram_addr) < 0) {
+   Hob_Output("Add nvram hob failed, buffer too small");
+   goto err_out;
+   }
+
 if (add_max_hob_entry(ho

[ kvm-Bugs-2411975 ] PAE Vista Guest display broken

2008-12-16 Thread SourceForge.net
Bugs item #2411975, was opened at 2008-12-09 07:24
Message generated for change (Comment added) made by jiajun
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=893831&aid=2411975&group_id=180599

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: None
>Status: Closed
Resolution: Fixed
Priority: 5
Private: No
Submitted By: Jiajun Xu (jiajun)
Assigned to: Nobody/Anonymous (nobody)
>Summary: PAE Vista Guest display broken

Initial Comment:
Testing Environment:
Kernel Commit:9ff66047142bd6a22825ada67eeaebbdf60c0280
Userspace Commit:8eae225cf8cd82316fcc78569aeb1adbbc077cb8
Host Kernel Version: 2.6.28-rc6


Bug detailed description:
--
PAE Vista guest may not be able to boot on PAE host. (1) If with 2 vcpus 
assigned, vista guest can never boot up.
(2) If 1 vcpus assigned, sometimes Vista guest can boot up and get network up, 
but the guest display always shows nothing(black).
(3) on 32e platform PAE and IA32e Vista guest can boot up well with smp=1 and 
smp=2.


Reproduce steps:

(1) qemu-img create -b /share/xvs/img/Windows/ia32p_vista.img -f qcow2
/share/xvs/var/tmp-img_gbp18_1228724677_1
(2) qemu-system-x86_64  -m 768 -smp 2  -net
nic,macaddr=00:16:3e:0a:52:36,model=rtl8139 -net tap,script=/etc/kvm/qemu-ifup
-hda /share/xvs/var/tmp-img_gbp18_1228730668_1


--

>Comment By: Jiajun Xu (jiajun)
Date: 2008-12-16 00:51

Message:
I changed the bug title since the commit
18b8d7e31fda064559e5ddb06e6dd3a2ff21cca0 is for display issue on 32bit
host.
And we verified with the commit, the issue is fixed.

--

Comment By: Avi Kivity (avik)
Date: 2008-12-14 05:19

Message:
Fixed by:

commit 18b8d7e31fda064559e5ddb06e6dd3a2ff21cca0
Author: Avi Kivity 
Date:   Sun Dec 14 15:16:27 2008 +0200

kvm: libkvm: check for slot overlap using 64-bit arithmetic

otherwise, a slot that ends on the 4GB boundary wraps around,
resulting
in a false positive, and leading to an early failure when attempting
to get
the bios slot's dirty log (which doesn't have dirty logging enabled).

fixed broken display on 32-bit userspace.


--

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=893831&aid=2411975&group_id=180599
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html