Skip to contentSkip to conversation

kvm-37 release

ANNOUNCE Avi Kivity 3 participants 10 messages Sep 9, 2007 – Sep 12, 2007 5 messages not in the archive KVM

lore
Share & tools
lore

Avi Kivity

author
#0 lore raw

This release merges the pic/lapic/ioapic into mainline. While some known issues exist, we're now at the point where it's better to get some wider exposure rather than keep it alone on a branch.

Some regressions are expected; please report them as they appear. A new qmeu option -no-kvm-irqchip is available to disable the new functionality.

While many people are listed in the credits for this effort, I'd like to thank Eddie and Qing for persevering and doing the hard work of actually getting it in a form suitable for inclusion and fixing the bugs. This release is mostly their work.

Changes since kvm-36:
- in-kernel lapic, ioapic, and pic (Eddie Dong, Qing He, Sheng Yang, Gregory Haskins, Dor Laor, me)
- split segment reload (vmx microoptimization) (Laurent Vivier)
- fix vga redraw regression (Izik Eidus)
- fix testsuite compilation with older assemblers (H. Peter Anvin)

Notes:
If you use the modules bundled with kvm-37, you can use any version
of Linux from 2.6.9 upwards.
If you use the modules bundled with Linux 2.6.20, you need to use
kvm-12.
If you use the modules bundled with Linux 2.6.21, you need to use
kvm-17.
Modules from Linux 2.6.22 and up will work with any kvm version from
kvm-22. Some features may only be available in newer releases.
For best performance, use Linux 2.6.23-rc2 or later as the host.

http://kvm.qumranet.com

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

#1 lore raw
Quoted 7 lines · On Sun, 09 Sep 2007 14:05:13 +0300 Avi Kivity…

This release merges the pic/lapic/ioapic into mainline. While some known issues exist, we're now at the point where it's better to get some wider exposure rather than keep it alone on a branch.

Some regressions are expected; please report them as they appear. A new qmeu option -no-kvm-irqchip is available to disable the new functionality.

My experience so far:

On 32-bit Intel host, lapic fails to link due to missing 64bit division. I tried the attached patch to fix the build, but Windows XP froze before showing the booting screen. With -no-kvm-irqchip they work, except the IE plugins like Flash & Java, which are broken since kvm-29. With -no-kvm, qemu-system-x86_64 segfaults immediately.

Regards,

Signature · 1 line
Jindrich Makovicka
lapic.c renamed from lapic.c~ +3 -2
@@ -31,6 +31,7 @@
 #include <asm/current.h>
 #include <asm/apicdef.h>
 #include <asm/atomic.h>
+#include <asm/div64.h>
 #include "irq.h"
 
 #define PRId64 "d"
@@ -511,8 +512,8 @@
 	} else
 		passed = ktime_sub(now, apic->timer.last_update);
 
-	counter_passed = ktime_to_ns(passed) /
-	    (APIC_BUS_CYCLE_NS * apic->timer.divide_count);
+	counter_passed = div64_64(ktime_to_ns(passed),
+				  (APIC_BUS_CYCLE_NS * apic->timer.divide_count));
 	tmcct -= counter_passed;
 
 	if (tmcct <= 0) {

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

A message that is not in the archive (sent off-list or not yet received): 46E3D369.8000401-atKUWr5tajBWk0Htik3J/[email protected]

#3 lore raw

kvm-37 problem w/ 64-bit division in lapic.c

Quoted 7 lines · On Sun, 09 Sep 2007 14:05:13 +0300 Avi Kivity…

This release merges the pic/lapic/ioapic into mainline. While some known issues exist, we're now at the point where it's better to get some wider exposure rather than keep it alone on a branch.

Some regressions are expected; please report them as they appear. A new qmeu option -no-kvm-irqchip is available to disable the new functionality.

(message seems to get stuck at gmane, sorry if it appears twice eventually)

My experience so far:

On 32-bit Intel host, lapic fails to link due to missing 64bit division. I tried the attached patch to fix the build, but Windows XP froze before showing the booting screen. With -no-kvm-irqchip they work, except the IE plugins like Flash & Java, which are broken since kvm-29. With -no-kvm, qemu-system-x86_64 segfaults immediately.

Regards,

Signature · 1 line
Jindrich Makovicka
lapic.c renamed from lapic.c~ +3 -2
@@ -31,6 +31,7 @@
 #include <asm/current.h>
 #include <asm/apicdef.h>
 #include <asm/atomic.h>
+#include <asm/div64.h>
 #include "irq.h"
 
 #define PRId64 "d"
@@ -511,8 +512,8 @@
 	} else
 		passed = ktime_sub(now, apic->timer.last_update);
 
-	counter_passed = ktime_to_ns(passed) /
-	    (APIC_BUS_CYCLE_NS * apic->timer.divide_count);
+	counter_passed = div64_64(ktime_to_ns(passed),
+				  (APIC_BUS_CYCLE_NS * apic->timer.divide_count));
 	tmcct -= counter_passed;
 
 	if (tmcct <= 0) {

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

author Applied
#4 lore raw

Re: kvm-37 problem w/ 64-bit division in lapic.c

Quoted 16 lines · Jindrich Makovicka
Quoted 8 lines · On Sun, 09 Sep 2007 14:05:13 +0300 Avi Kivity…

This release merges the pic/lapic/ioapic into mainline. While some known issues exist, we're now at the point where it's better to get some wider exposure rather than keep it alone on a branch.

Some regressions are expected; please report them as they appear. A new qmeu option -no-kvm-irqchip is available to disable the new functionality.

(message seems to get stuck at gmane, sorry if it appears twice eventually)

Quoted 9 lines

My experience so far:

On 32-bit Intel host, lapic fails to link due to missing 64bit division. I tried the attached patch to fix the build, but Windows XP froze before showing the booting screen. With -no-kvm-irqchip they work, except the IE plugins like Flash & Java, which are broken since kvm-29. With -no-kvm, qemu-system-x86_64 segfaults immediately.

Applied, thanks. Please supply a signed-off-by line with future patches.

Signature · 7 lines
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
#5 lore raw

Re: kvm-37 problem w/ 64-bit division in lapic.c

In reply to Jindrich Makovicka
Quoted 22 lines · kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote:
Quoted 7 lines · On Sun, 09 Sep 2007 14:05:13 +0300 Avi Kivity…

This release merges the pic/lapic/ioapic into mainline. While some known issues exist, we're now at the point where it's better to get some wider exposure rather than keep it alone on a branch.

Some regressions are expected; please report them as they appear. A new qmeu option -no-kvm-irqchip is available to disable the new functionality.

(message seems to get stuck at gmane, sorry if it appears twice eventually)

My experience so far:

On 32-bit Intel host, lapic fails to link due to missing 64bit division. I tried the attached patch to fix the build, but Windows XP froze before showing the booting screen. With -no-kvm-irqchip they work, except the IE plugins like Flash & Java, which are broken since kvm-29. With -no-kvm, qemu-system-x86_64 segfaults immediately.

Quoted 3 lines

Regards,
--
Jindrich Makovicka

div64_32 is enough, does this function exist?

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

A message that is not in the archive (sent off-list or not yet received): 10EA09EFD8728347A513008B6B0DA77A02108583-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org

#7 lore raw

Re: kvm-37 problem w/ 64-bit division in lapic.c

Quoted 23 lines · Eddie
Quoted 22 lines · kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote:
Quoted 7 lines · On Sun, 09 Sep 2007 14:05:13 +0300 Avi Kivity…

This release merges the pic/lapic/ioapic into mainline. While some known issues exist, we're now at the point where it's better to get some wider exposure rather than keep it alone on a branch.

Some regressions are expected; please report them as they appear. A new qmeu option -no-kvm-irqchip is available to disable the new functionality.

(message seems to get stuck at gmane, sorry if it appears twice eventually)

My experience so far:

On 32-bit Intel host, lapic fails to link due to missing 64bit division. I tried the attached patch to fix the build, but Windows XP froze before showing the booting screen. With -no-kvm-irqchip they work, except the IE plugins like Flash & Java, which are broken since kvm-29. With -no-kvm, qemu-system-x86_64 segfaults immediately.

Quoted 5 lines
Quoted 3 lines

Regards,
--
Jindrich Makovicka

div64_32 is enough, does this function exist?

afaik, __div64_32 is architecture specific, but do_div() could be actually used here.

Signature · 6 lines
Jindrich Makovicka

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

A message that is not in the archive (sent off-list or not yet received): 5f0e26840709100249y239692c2gcdd3938fc6b23b6c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org

#9 lore raw

Re: kvm-37 problem w/ 64-bit division in lapic.c

Quoted 5 lines · On Mon, 10 Sep 2007 11:49:02 +0200 "Jindrich Makovicka"…
Quoted 1 line · Eddie

div64_32 is enough, does this function exist?

afaik, __div64_32 is architecture specific, but do_div() could be actually used here.

This version should be faster.

Signature · 1 line
Jindrich Makovicka

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

author
#10 lore raw

Re: kvm-37 problem w/ 64-bit division in lapic.c

Quoted 6 lines · Jindrich Makovicka
Quoted 2 lines · On Mon, 10 Sep 2007 11:49:02 +0200 "Jindrich Makovicka"…

On 9/10/07, Dong, Eddie <[email protected]> wrote:

Quoted 9 lines
Quoted 5 lines
Quoted 2 lines

div64_32 is enough, does this function exist?

afaik, __div64_32 is architecture specific, but do_div() could be actually used here.

This version should be faster.

[please don't post patches with extensions like ".diff2", which don't show in the mail reader]

Quoted 6 lines
(quoted diff) +1 -1
-       u32 counter_passed;
+       u64 counter_passed;
        ktime_t passed, now = apic->timer.dev.base->get_time();
        u32 tmcct = apic_get_reg(apic, APIC_TMICT);

Review static u32 apic_get_tmcct(struct kvm_lapic *apic) · line 519

Quoted 10 lines
(quoted diff) +2 -2
@@ -512,8 +512,8 @@ static u32 apic_get_tmcct(struct kvm_lapic *apic)
        } else
                passed = ktime_sub(now, apic->timer.last_update);
 
-       counter_passed = div64_64(ktime_to_ns(passed),
-                                 (APIC_BUS_CYCLE_NS * 
 apic->timer.divide_count));
+       counter_passed = ktime_to_ns(passed);
+       do_div(counter_passed, APIC_BUS_CYCLE_NS * 
 apic->timer.divide_count);
        tmcct -= counter_passed;

What if counter_passed overflows? Sure, that means kvm wasn't scheduled for 4 seconds, but it could happen.

Signature · 7 lines
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

A message that is not in the archive (sent off-list or not yet received): 46E79DCA.70101-atKUWr5tajBWk0Htik3J/[email protected]

#12 lore raw

Re: kvm-37 problem w/ 64-bit division in lapic.c

Quoted 29 lines · kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote:
Quoted 6 lines · Jindrich Makovicka
Quoted 2 lines · On Mon, 10 Sep 2007 11:49:02 +0200 "Jindrich Makovicka"…

On 9/10/07, Dong, Eddie <[email protected]> wrote:

Quoted 9 lines
Quoted 5 lines
Quoted 2 lines

div64_32 is enough, does this function exist?

afaik, __div64_32 is architecture specific, but do_div() could be actually used here.

This version should be faster.

[please don't post patches with extensions like ".diff2", which don't show in the mail reader]

Quoted 9 lines
(quoted diff) +1 -1
-       u32 counter_passed;
+       u64 counter_passed;
        ktime_t passed, now = apic->timer.dev.base->get_time();
        u32 tmcct = apic_get_reg(apic, APIC_TMICT);
@@ -512,8 +512,8 @@ static u32 apic_get_tmcct(struct kvm_lapic
                *apic)         } else passed = ktime_sub(now,
 apic->timer.last_update); 
 
Quoted 11 lines
Quoted 6 lines
(quoted diff) +0 -2
-       counter_passed = div64_64(ktime_to_ns(passed),
-                                 (APIC_BUS_CYCLE_NS *

apic->timer.divide_count)); + counter_passed =
ktime_to_ns(passed); + do_div(counter_passed,

APIC_BUS_CYCLE_NS * apic->timer.divide_count);
        tmcct -= counter_passed;

What if counter_passed overflows? Sure, that means kvm wasn't scheduled for 4 seconds, but it could happen.

It won't happen. see
passed = ktime_sub(now, apic->timer.last_update);

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

A message that is not in the archive (sent off-list or not yet received): 10EA09EFD8728347A513008B6B0DA77A0210915A-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org

author
#14 lore raw

Re: kvm-37 problem w/ 64-bit division in lapic.c

Quoted 48 lines · Eddie
Quoted 34 lines · kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote:
Quoted 8 lines · Jindrich Makovicka
Quoted 3 lines · On Mon, 10 Sep 2007 11:49:02 +0200 "Jindrich Makovicka"…

On 9/10/07, Dong, Eddie <[email protected]> wrote:

Quoted 11 lines
Quoted 7 lines
Quoted 3 lines

div64_32 is enough, does this function exist?

afaik, __div64_32 is architecture specific, but do_div() could be actually used here.

This version should be faster.

[please don't post patches with extensions like ".diff2", which don't show in the mail reader]

Quoted 9 lines
(quoted diff) +1 -1
-       u32 counter_passed;
+       u64 counter_passed;
        ktime_t passed, now = apic->timer.dev.base->get_time();
        u32 tmcct = apic_get_reg(apic, APIC_TMICT);
@@ -512,8 +512,8 @@ static u32 apic_get_tmcct(struct kvm_lapic
                *apic)         } else passed = ktime_sub(now,
 apic->timer.last_update); 
 
Quoted 12 lines
Quoted 7 lines
(quoted diff) +0 -2
-       counter_passed = div64_64(ktime_to_ns(passed),
-                                 (APIC_BUS_CYCLE_NS *

apic->timer.divide_count)); + counter_passed =
ktime_to_ns(passed); + do_div(counter_passed,

APIC_BUS_CYCLE_NS * apic->timer.divide_count);
        tmcct -= counter_passed;

What if counter_passed overflows? Sure, that means kvm wasn't scheduled for 4 seconds, but it could happen.

Quoted 3 lines

It won't happen. see
passed = ktime_sub(now, apic->timer.last_update);

Ah, okay.

I'll clean it up later. I'd like to proceed with the more important fixes first.

Signature · 7 lines
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/