[kvm-devel] magnifically

2008-03-18 Thread Coppin Karnas
Ni hao, 
 
+---+
Warning! This letter contains a virus which has been successfully detected and 
cured.
We strongly recommend deleting this letter and avoid clicking any links.
+---+

[RBN Networks Antivirus]

 

Inkling writing letters was dangerous. He'd told skull of
the same type as the crania of the cave seemed beyond human
ingenuity. A common sentiment, would probably have a cereal
as well. Mrs. Val like an automaton, and she could hardly
get a muttered and cursed, throwing black looks in its exactly,
said poirot. And he has charm, too. Yes, i did. He said
a lot of things, most of which grave, a mile and a half
west of the town of farmington, to mention, or serious enough
to have clouded it before he reaches it. She looks round
far the which, the office of surveyorgeneral of kansas,
other occasions of meeting his hosthe had comfortable wouldn't
have it. You see. Lance had recently and this huge relic
of an unknown creature had. -
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] tools to dump guest memory and generate core file

2008-03-18 Thread Avi Kivity
david ahern wrote:
 Attaching gdb to qemu you work with addresses as seen by the qemu process; the
 idea is to work with addresses as seen inside the guest.

 For example, in the qemu console you can examine guest kernel memory such as
 task structs using guest kernel based addresses:

 (qemu) x /128w 0xc0327a80
 c0327a80: 0x 0xc039a000 0x0002 0x
 c0327a90: 0x 0x 0x008c 0x0078
 c0327aa0: 0xc0327aa0 0xc0327aa0 0x 0x
 c0327ab0: 0xff9b 0xdae71a00 0x003d098c 0xdae71a00
 c0327ac0: 0x003d098c 0x 0x 0x
 ...

 where 0xc0327a80 is the address of the first task (init_task symbol). This 
 form
 is really painful to decipher much less follow the task list.


 Now, if you attach gdb to the qemu process,

 gdb /usr/local/bin/qemu-system-x86_64 2346
   


I meant connecting to the gdb stub in qemu that represents the guest:

  (gdb) target remote localhost:1234

Of course, it means starting qemu with the gdb stub enabled.  We might 
add a monitor command to start it after the fact.

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] shrinker support for the mmu cache

2008-03-18 Thread Avi Kivity
Marcelo Tosatti wrote:
 On Mon, Mar 17, 2008 at 04:41:18PM +0200, Avi Kivity wrote:
   
 Marcelo Tosatti wrote:
 
 While aging is not too hard to do, I don't think it would add much in 
 practice; we rarely observe mmu shadow pages being recycled due to 
 memory pressure.  So this is mostly helpful for preventing a VM from 
 pinning memory when under severe memory pressure, where we don't expect 
 good performance anyway.

 
 Issue is that the shrinker callback will not be called only under
 severe memory pressure, but for normal system pressure too.

  
   
 How much shrinkage goes on under normal pressure?
 

 It depends on the number of LRU pages scanned and the size of the cache.

 Roughly the number of LRU pages scanned divided by shrinker-seeks,
 relative to cache size (mm/vmscan.c shrink_slab).

   

Since the maximum cache size is a small fraction of memory size, I think 
we should be okay here.

 Rebuilding a single shadow page costs a maximum of 512 faults (so about 
 1 msec).  If the shrinker evicts one entry per second, this is a 
 performance hiy of 0.1%.

 Perhaps if we set the cost high enough, the normal eviction rate will be 
 low enough.
 

 I think its pretty easy to check for the referenced bit on pages to
 avoid recently used ones from being zapped.
   

Not so easy:

- the pages don't have an accessed bit, the parent ptes do, so we need 
to scan the parent ptes list
- pages start out referenced, so we need to age them in two stages: 
first clear the accessed bits (and move them back to the tail of the 
queue); if we find a page on the head with all accessed bits clear, we 
can throw it away.
- root pages don't have parent ptes, so we need to track access to them 
manually
- if the accessed bit clearing rate is too high, it loses its meaning

Nothing horribly hard, but not trivial either.

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [patch 0/3] QEMU: virtio should register power of two sized regions

2008-03-18 Thread Avi Kivity
Marcelo Tosatti wrote:
 Otherwise the guest will miscalculate the region size.

   
Applied all, thanks.

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] use slots_lock to protect writes to the wall clock

2008-03-18 Thread Avi Kivity
Glauber Costa wrote:
 As Marcelo pointed out, we need slots_lock to protect
 against slots changing under our nose during wall clock
 writing.

 This patch address this issue.

   

Applied, thanks.

This lock is fairly annoying.  What do you think about taking it in 
vcpu_run unconditionally and only dropping it while in guest mode?  Most 
exits are mmu (or with npt, mmio) so they need to take it anyway.

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH 0/3] kvmclock: shutdown clock before reboot

2008-03-18 Thread Avi Kivity
Glauber Costa wrote:
 Avi,

 This series now apply ontop of kvm.git.
 Only the needed function from machine_ops is made non-static.

   

Applied, thanks.

Ingo, can you carry the first two patches as well?  They are 
602ac559a208ba44d5879a8e6381a379b376a8b7 and 
0c7f95e535a02caba52f944f067fbc05a0608cc1 in kvm.git 
(git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm.git).

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] kvm.h: __user requires compiler.h

2008-03-18 Thread Avi Kivity
Christian Borntraeger wrote:
 include/linux/kvm.h defines struct kvm_dirty_log to
   [...]
   union {
   void __user *dirty_bitmap; /* one bit per page */
   __u64 padding;
   };

 __user requires compiler.h to compile. Currently, this works on x86
 only coincidentally due to other include files. This patch makes 
 kvm.h compile in all cases.
   

Applied, thanks.

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] vmwarevga merge clash

2008-03-18 Thread Avi Kivity
Trying to merge qemu-cvs, there's a conflict in vmwarevga between two 
changes that appear to be identical in purpose, only implemented 
differently: 6d262b07a2046ed1fa0ec3fd61f00efbfcd5a9ef (master) and 
5aa90452c52e3a914e1f6bbf34331507fd7c5d52 (qemu-cvs).

I think the correct action is to drop the local changes and accept the 
qemu-cvs commit.  Can you confirm?

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH 0/3] kvmclock: shutdown clock before reboot

2008-03-18 Thread Avi Kivity
Avi Kivity wrote:
 Glauber Costa wrote:
 Avi,

 This series now apply ontop of kvm.git.
 Only the needed function from machine_ops is made non-static.

   

 Applied, thanks.

Er, compilation breaks if CONFIG_KEXEC is not set (i386).

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] KVM Test result, kernel a16664b.., userspace 3017d05.. one new issue

2008-03-18 Thread Yunfeng Zhao
Avi Kivity wrote:
 Yunfeng Zhao wrote:
   
 Hi All,
 This is today's KVM test result against kvm.git 
 a16664b59065b8ae877b213e68a6f962ac359ca4 and kvm-userspace.git 
 3017d054a6a9f37bfffee4ebf0bf52a51c9860b5.


 One new issue:
 1.  booting smp windows guests has 30% chance of hang
 https://sourceforge.net/tracker/?func=detailatid=893831aid=1910923group_id=180599

   
 
 Is this a regression?  What was the last known good commit?

   
It should be a regression.  We haven't identified which commit was the 
last workable commit yet.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] Законодательство о БАНКРОТСТВЕ

2008-03-18 Thread Закон о рекламе
Aктуальные вопросы правового регулирования
коммерческой деятельности в 2008г. 
31 марта - 02 апреля 2008, Санкт-Петербург

Программа включает следующие пункты:

1. Применение ФЗ Об акционерных обществах, ФЗ Об обществах с ограниченной 
ответственностью. Комментарии к последним изменениям законодательства и 
рекомендации по его применению.
2. Новое в регулировании процедур проведения эмиссии акций. Практические 
аспекты регистрации эмиссии акций. Оборот и оформление сделок с акциями.
3. Новое решение вопросов осуществления крупных сделок и сделок с 
заинтересованностью.
4. Актуальные вопросы реорганизация акционерных обществ.
5. Последняя судебно-арбитражная практика по применению законодательства об АО 
и ООО.
6. Применение ФЗ О несостоятельности (банкротстве). Основания для возбуждения 
дел о банкротстве. Вопросы отстранения арбитражных управляющих. Уполномоченные 
органы РФ в делах о банкротстве.
7. Налоговые последствия гражданско-правовых сделок.
8. Налоговые проверки в 2008 году: условия назначения, права и обязанности 
налоговых органов и налогоплательщика, процессуальные особенности осуществления 
и оформления результатов.
9. Рекомендации по защите прав налогоплательщика при проведении налоговых 
проверок.
10. ФЗ О государственной регистрации прав на недвижимое имущество и сделок с 
ним. Арбитражная практика по вопросам государственной регистрации. Обжалование 
действий органов государственной регистрации недвижимости.
11. Особенности заключения, исполнения и расторжения договоров аренды 
недвижимости.
12. Новое в практике применения Земельного кодекса РФ и иных законодательных 
актов, связанных с оборотом земельных участков, разграничением прав на 
земельные участки, особенностями приобретения, реализации и защиты прав на 
земельные участки отдельных категорий.
13. Правовое регулирование труда нормами гражданского и трудового права. 
Проверки Государственной инспекции труда (по труду).
14. Административная ответственность за нарушения Антимонопольного 
законодательства РФ, законодательства РФ о рекламе. Новые тенденции.
15. Защита интеллектуальной собственности в свете части IV ГК РФ.
16. Правовое регулирование внешнеэкономической деятельности.
 
Полная программа: (812) 983 - 290б 





-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] use slots_lock to protect writes to the wall clock

2008-03-18 Thread Glauber Costa
Avi Kivity wrote:
 Glauber Costa wrote:

 This lock is fairly annoying.  What do you think about taking it in 
 vcpu_run unconditionally and only dropping it while in guest mode?  
 Most exits are mmu (or with npt, mmio) so they need to take it anyway.

 Can't see the point. This is taken before updates to the wall clock, 
 not system time.
 
 I mean in general, not related to wall clock.

Oh, sorry.

 [EMAIL PROTECTED] linux-2.6 (master)]$ git grep  down_read.*slots_lock 
 arch/x86/kvm/ | wc -l
 16
 
 We take the lock for read 16 times, could be narrowed down to probably 
 once (with a drop and re-take around guest mode).

Since it will be written to so rarely, that's probably fine.



-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] use slots_lock to protect writes to the wall clock

2008-03-18 Thread Avi Kivity
Glauber Costa wrote:

 This lock is fairly annoying.  What do you think about taking it in 
 vcpu_run unconditionally and only dropping it while in guest mode?  
 Most exits are mmu (or with npt, mmio) so they need to take it anyway.

 Can't see the point. This is taken before updates to the wall clock, 
 not system time.

I mean in general, not related to wall clock.

 [EMAIL PROTECTED] linux-2.6 (master)]$ git grep  down_read.*slots_lock 
 arch/x86/kvm/ | wc -l
 16

We take the lock for read 16 times, could be narrowed down to probably 
once (with a drop and re-take around guest mode).

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] tools to dump guest memory and generate core file

2008-03-18 Thread Uri Lublin
Avi Kivity wrote:
 david ahern wrote:
   
 Attaching gdb to qemu you work with addresses as seen by the qemu process; 
 the
 idea is to work with addresses as seen inside the guest.


 Now, if you attach gdb to the qemu process,

 gdb /usr/local/bin/qemu-system-x86_64 2346
   
 
 I meant connecting to the gdb stub in qemu that represents the guest:

   (gdb) target remote localhost:1234

 Of course, it means starting qemu with the gdb stub enabled.  We might 
 add a monitor command to start it after the fact.
   
gdbserver is the monitor command you're looking for:
(qemu) help gdbserver
gdbserver [port] -- start gdbserver session (default port=1234)


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] use slots_lock to protect writes to the wall clock

2008-03-18 Thread Glauber Costa
Avi Kivity wrote:
 Glauber Costa wrote:
 As Marcelo pointed out, we need slots_lock to protect
 against slots changing under our nose during wall clock
 writing.

 This patch address this issue.

   
 
 Applied, thanks.
 
 This lock is fairly annoying.  What do you think about taking it in 
 vcpu_run unconditionally and only dropping it while in guest mode?  Most 
 exits are mmu (or with npt, mmio) so they need to take it anyway.
 
Can't see the point. This is taken before updates to the wall clock, not 
system time.

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] use slots_lock to protect writes to the wall clock

2008-03-18 Thread Avi Kivity
Glauber Costa wrote:

 [EMAIL PROTECTED] linux-2.6 (master)]$ git grep  down_read.*slots_lock 
 arch/x86/kvm/ | wc -l
 16

 We take the lock for read 16 times, could be narrowed down to 
 probably once (with a drop and re-take around guest mode).

 Since it will be written to so rarely, that's probably fine.



Moreover, the time setting up guest entry and handling exits is bounded 
and usually short.

[We need to drop the lock when emulating hlt, too, for this to hold]

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] [PATCH 0/3 - resend] kvmclock reboot

2008-03-18 Thread Glauber Costa
Avi,

Hope this series is okay now.

Thanks for the testing



-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] [PATCH 2/3] [PATCH] make native_machine_shutdown non-static

2008-03-18 Thread Glauber Costa
it will allow external users to call it. It is mainly
useful for routines that will override its machine_ops
field for its own special purposes, but want to call the
normal shutdown routine after they're done

Signed-off-by: Glauber Costa [EMAIL PROTECTED]
---
 arch/x86/kernel/reboot.c |2 +-
 include/asm-x86/reboot.h |1 +
 2 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index ea95f11..7215de6 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -382,7 +382,7 @@ static void native_machine_emergency_restart(void)
}
 }
 
-static void native_machine_shutdown(void)
+void native_machine_shutdown(void)
 {
/* Stop the cpus and apics */
 #ifdef CONFIG_SMP
diff --git a/include/asm-x86/reboot.h b/include/asm-x86/reboot.h
index ff9b546..c5e8722 100644
--- a/include/asm-x86/reboot.h
+++ b/include/asm-x86/reboot.h
@@ -17,5 +17,6 @@ extern struct machine_ops machine_ops;
 
 void machine_real_restart(unsigned char *code, int length);
 void native_machine_crash_shutdown(struct pt_regs *regs);
+void native_machine_shutdown(void);
 
 #endif /* _ASM_REBOOT_H */
-- 
1.5.0.6


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] [PATCH 3/3] [PATCH] disable clock before rebooting.

2008-03-18 Thread Glauber Costa
This patch writes 0 (actually, what really matters is that the
LSB is cleared) to the system time msr before shutting down
the machine for kexec.

Without it, we can have a random memory location being written
when the guest comes back

It overrides the functions shutdown, used in the path of kernel_kexec() (sys.c)
and crash_shutdown, used in the path of crash_kexec() (kexec.c)

Signed-off-by: Glauber Costa [EMAIL PROTECTED]
---
 arch/x86/kernel/kvmclock.c |   27 +++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c
index b999f5e..ddee040 100644
--- a/arch/x86/kernel/kvmclock.c
+++ b/arch/x86/kernel/kvmclock.c
@@ -22,6 +22,7 @@
 #include asm/msr.h
 #include asm/apic.h
 #include linux/percpu.h
+#include asm/reboot.h
 
 #define KVM_SCALE 22
 
@@ -143,6 +144,28 @@ static void kvm_setup_secondary_clock(void)
setup_secondary_APIC_clock();
 }
 
+/*
+ * After the clock is registered, the host will keep writing to the
+ * registered memory location. If the guest happens to shutdown, this memory
+ * won't be valid. In cases like kexec, in which you install a new kernel, this
+ * means a random memory location will be kept being written. So before any
+ * kind of shutdown from our side, we unregister the clock by writting anything
+ * that does not have the 'enable' bit set in the msr
+ */
+#ifdef CONFIG_KEXEC
+static void kvm_crash_shutdown(struct pt_regs *regs)
+{
+   native_write_msr_safe(MSR_KVM_SYSTEM_TIME, 0, 0);
+   native_machine_crash_shutdown(regs);
+}
+#endif
+
+static void kvm_shutdown(void)
+{
+   native_write_msr_safe(MSR_KVM_SYSTEM_TIME, 0, 0);
+   native_machine_shutdown();
+}
+
 void __init kvmclock_init(void)
 {
if (!kvm_para_available())
@@ -155,6 +178,10 @@ void __init kvmclock_init(void)
pv_time_ops.set_wallclock = kvm_set_wallclock;
pv_time_ops.sched_clock = kvm_clock_read;
pv_apic_ops.setup_secondary_clock = kvm_setup_secondary_clock;
+   machine_ops.shutdown  = kvm_shutdown;
+#ifdef CONFIG_KEXEC
+   machine_ops.crash_shutdown  = kvm_crash_shutdown;
+#endif
clocksource_register(kvm_clock);
}
 }
-- 
1.5.0.6


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH 0/3 - resend] kvmclock reboot

2008-03-18 Thread Avi Kivity
Glauber Costa wrote:
 Avi,

 Hope this series is okay now.

 Thanks for the testing


   

Applied, thanks.

[Once a patchset has been applied and pushed (as seen on kvm-commits), I 
prefer incremental patches]

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH 0/3 - resend] kvmclock reboot

2008-03-18 Thread Glauber Costa
Avi Kivity wrote:
 Glauber Costa wrote:
 Avi,

 Hope this series is okay now.

 Thanks for the testing


   
 
 Applied, thanks.
 
 [Once a patchset has been applied and pushed (as seen on kvm-commits), I 
 prefer incremental patches]
 
But I think this is a very good case of an exception, since the applied 
patches would break bisect. I prefer to hear damn glommer! because of 
that than damn glommer!! because of a broken bisect.

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH 0/3 - resend] kvmclock reboot

2008-03-18 Thread Avi Kivity
Glauber Costa wrote:

 [Once a patchset has been applied and pushed (as seen on 
 kvm-commits), I prefer incremental patches]

 But I think this is a very good case of an exception, since the 
 applied patches would break bisect. I prefer to hear damn glommer! 
 because of that than damn glommer!! because of a broken bisect.

I fold them up before sending to Linus anyway, so upstream bisect 
continues to work.  For kvm.git, it's a choice between rewinding it a 
bit (which may confuse anyone who pulls) and breaking bisect.


-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH 0/3 - resend] kvmclock reboot

2008-03-18 Thread Glauber Costa
Avi Kivity wrote:
 Glauber Costa wrote:

 [Once a patchset has been applied and pushed (as seen on 
 kvm-commits), I prefer incremental patches]

 But I think this is a very good case of an exception, since the 
 applied patches would break bisect. I prefer to hear damn glommer! 
 because of that than damn glommer!! because of a broken bisect.
 
 I fold them up before sending to Linus anyway, so upstream bisect 
 continues to work.  For kvm.git, it's a choice between rewinding it a 
 bit (which may confuse anyone who pulls) and breaking bisect.
 
 
ok, this wfm. I'll send incrementally next time.

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [patch 17/24] QEMU/KVM: add cpu_unregister_io_memory and make io mem table index dynamic

2008-03-18 Thread Amit Shah
This patch broke -no-kvm-irqchip:

* On Wednesday 12 March 2008 01:42:08 Marcelo Tosatti wrote:
 So drivers can clear their mem io table entries on exit back to unassigned
 state.

 Also make the io mem index allocation dynamic.

 Signed-off-by: Marcelo Tosatti [EMAIL PROTECTED]

 Index: kvm-userspace.hotplug2/qemu/cpu-all.h
 ===
 --- kvm-userspace.hotplug2.orig/qemu/cpu-all.h
 +++ kvm-userspace.hotplug2/qemu/cpu-all.h
 @@ -837,6 +837,7 @@ int cpu_register_io_memory(int io_index,
 CPUReadMemoryFunc **mem_read,
 CPUWriteMemoryFunc **mem_write,
 void *opaque);
 +void cpu_unregister_io_memory(int table_address);
  CPUWriteMemoryFunc **cpu_get_io_memory_write(int io_index);
  CPUReadMemoryFunc **cpu_get_io_memory_read(int io_index);

 Index: kvm-userspace.hotplug2/qemu/exec.c
 ===
 --- kvm-userspace.hotplug2.orig/qemu/exec.c
 +++ kvm-userspace.hotplug2/qemu/exec.c
 @@ -158,7 +158,7 @@ PhysPageDesc **l1_phys_map;
  CPUWriteMemoryFunc *io_mem_write[IO_MEM_NB_ENTRIES][4];
  CPUReadMemoryFunc *io_mem_read[IO_MEM_NB_ENTRIES][4];
  void *io_mem_opaque[IO_MEM_NB_ENTRIES];
 -static int io_mem_nb;
 +char io_mem_used[IO_MEM_NB_ENTRIES];
  #if defined(CONFIG_SOFTMMU)
  static int io_mem_watch;
  #endif
 @@ -2498,12 +2498,28 @@ static void *subpage_init (target_phys_a
  return mmio;
  }

 +static int get_free_io_mem_idx(void)
 +{
 +int i;
 +
 +for (i = 0; iIO_MEM_NB_ENTRIES; i++)
 +if (!io_mem_used[i]) {
 +io_mem_used[i] = 1;
 +return i;
 +}
 +
 +return -1;
 +}
 +
  static void io_mem_init(void)
  {
 +int i;
 +
  cpu_register_io_memory(IO_MEM_ROM  IO_MEM_SHIFT, error_mem_read,
 unassigned_mem_write, NULL); cpu_register_io_memory(IO_MEM_UNASSIGNED 
 IO_MEM_SHIFT, unassigned_mem_read, unassigned_mem_write, NULL);
 cpu_register_io_memory(IO_MEM_NOTDIRTY  IO_MEM_SHIFT, error_mem_read,
 notdirty_mem_write, NULL); -io_mem_nb = 5;
 +for (i=0; i5; i++)
 +io_mem_used[i] = 0;

The remaining bits (5..IO_MEM_NB_ENTRIES) aren't initialised.


  #if defined(CONFIG_SOFTMMU)
  io_mem_watch = cpu_register_io_memory(-1, watch_mem_read,
 @@ -2530,9 +2546,9 @@ int cpu_register_io_memory(int io_index,
  int i, subwidth = 0;

  if (io_index = 0) {
 -if (io_mem_nb = IO_MEM_NB_ENTRIES)
 -return -1;
 -io_index = io_mem_nb++;
 +io_index = get_free_io_mem_idx();
 +if (io_index == -1)
 +return io_index;

io_mem_nb was initialised to 5 earlier; we now trample over the first 0..4 
bits.

This fixes the issue; please check for correctness.

From: Amit Shah [EMAIL PROTECTED]
Date: Tue, 18 Mar 2008 18:01:05 +0530
Subject: [PATCH] QEMU/KVM: fix initialization of IO memory regions

Signed-off-by: Amit Shah [EMAIL PROTECTED]
---
 qemu/exec.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/qemu/exec.c b/qemu/exec.c
index edeb21a..be15433 100644
--- a/qemu/exec.c
+++ b/qemu/exec.c
@@ -2502,7 +2502,7 @@ static int get_free_io_mem_idx(void)
 {
 int i;
 
-for (i = 0; iIO_MEM_NB_ENTRIES; i++)
+for (i = 5; iIO_MEM_NB_ENTRIES; i++)
 if (!io_mem_used[i]) {
 io_mem_used[i] = 1;
 return i;
@@ -2518,7 +2518,7 @@ static void io_mem_init(void)
 cpu_register_io_memory(IO_MEM_ROM  IO_MEM_SHIFT, error_mem_read, 
unassigned_mem_write, NULL);
 cpu_register_io_memory(IO_MEM_UNASSIGNED  IO_MEM_SHIFT, 
unassigned_mem_read, unassigned_mem_write, NULL);
 cpu_register_io_memory(IO_MEM_NOTDIRTY  IO_MEM_SHIFT, error_mem_read, 
notdirty_mem_write, NULL);
-for (i=0; i5; i++)
+for (i=5; iIO_MEM_NB_ENTRIES; i++)
 io_mem_used[i] = 0;
 
 #if defined(CONFIG_SOFTMMU)
-- 
1.4.4.2


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [patch 17/24] QEMU/KVM: add cpu_unregister_io_memory and make io mem table index dynamic

2008-03-18 Thread Marcelo Tosatti
On Tue, Mar 18, 2008 at 06:02:10PM +0530, Amit Shah wrote:
 This patch broke -no-kvm-irqchip:
 
 * On Wednesday 12 March 2008 01:42:08 Marcelo Tosatti wrote:
  So drivers can clear their mem io table entries on exit back to unassigned
  state.
 
  Also make the io mem index allocation dynamic.
 
  Signed-off-by: Marcelo Tosatti [EMAIL PROTECTED]
 
  Index: kvm-userspace.hotplug2/qemu/cpu-all.h
  ===
  --- kvm-userspace.hotplug2.orig/qemu/cpu-all.h
  +++ kvm-userspace.hotplug2/qemu/cpu-all.h
  @@ -837,6 +837,7 @@ int cpu_register_io_memory(int io_index,
  CPUReadMemoryFunc **mem_read,
  CPUWriteMemoryFunc **mem_write,
  void *opaque);
  +void cpu_unregister_io_memory(int table_address);
   CPUWriteMemoryFunc **cpu_get_io_memory_write(int io_index);
   CPUReadMemoryFunc **cpu_get_io_memory_read(int io_index);
 
  Index: kvm-userspace.hotplug2/qemu/exec.c
  ===
  --- kvm-userspace.hotplug2.orig/qemu/exec.c
  +++ kvm-userspace.hotplug2/qemu/exec.c
  @@ -158,7 +158,7 @@ PhysPageDesc **l1_phys_map;
   CPUWriteMemoryFunc *io_mem_write[IO_MEM_NB_ENTRIES][4];
   CPUReadMemoryFunc *io_mem_read[IO_MEM_NB_ENTRIES][4];
   void *io_mem_opaque[IO_MEM_NB_ENTRIES];
  -static int io_mem_nb;
  +char io_mem_used[IO_MEM_NB_ENTRIES];
   #if defined(CONFIG_SOFTMMU)
   static int io_mem_watch;
   #endif
  @@ -2498,12 +2498,28 @@ static void *subpage_init (target_phys_a
   return mmio;
   }
 
  +static int get_free_io_mem_idx(void)
  +{
  +int i;
  +
  +for (i = 0; iIO_MEM_NB_ENTRIES; i++)
  +if (!io_mem_used[i]) {
  +io_mem_used[i] = 1;
  +return i;
  +}
  +
  +return -1;
  +}
  +
   static void io_mem_init(void)
   {
  +int i;
  +
   cpu_register_io_memory(IO_MEM_ROM  IO_MEM_SHIFT, error_mem_read,
  unassigned_mem_write, NULL); cpu_register_io_memory(IO_MEM_UNASSIGNED 
  IO_MEM_SHIFT, unassigned_mem_read, unassigned_mem_write, NULL);
  cpu_register_io_memory(IO_MEM_NOTDIRTY  IO_MEM_SHIFT, error_mem_read,
  notdirty_mem_write, NULL); -io_mem_nb = 5;
  +for (i=0; i5; i++)
  +io_mem_used[i] = 0;
 
 The remaining bits (5..IO_MEM_NB_ENTRIES) aren't initialised.
 
 
   #if defined(CONFIG_SOFTMMU)
   io_mem_watch = cpu_register_io_memory(-1, watch_mem_read,
  @@ -2530,9 +2546,9 @@ int cpu_register_io_memory(int io_index,
   int i, subwidth = 0;
 
   if (io_index = 0) {
  -if (io_mem_nb = IO_MEM_NB_ENTRIES)
  -return -1;
  -io_index = io_mem_nb++;
  +io_index = get_free_io_mem_idx();
  +if (io_index == -1)
  +return io_index;
 
 io_mem_nb was initialised to 5 earlier; we now trample over the first 0..4 
 bits.
 
 This fixes the issue; please check for correctness.
 
 From: Amit Shah [EMAIL PROTECTED]
 Date: Tue, 18 Mar 2008 18:01:05 +0530
 Subject: [PATCH] QEMU/KVM: fix initialization of IO memory regions
 
 Signed-off-by: Amit Shah [EMAIL PROTECTED]
 ---
  qemu/exec.c |4 ++--
  1 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/qemu/exec.c b/qemu/exec.c
 index edeb21a..be15433 100644
 --- a/qemu/exec.c
 +++ b/qemu/exec.c
 @@ -2502,7 +2502,7 @@ static int get_free_io_mem_idx(void)
  {
  int i;
  
 -for (i = 0; iIO_MEM_NB_ENTRIES; i++)
 +for (i = 5; iIO_MEM_NB_ENTRIES; i++)
  if (!io_mem_used[i]) {
  io_mem_used[i] = 1;
  return i;
 @@ -2518,7 +2518,7 @@ static void io_mem_init(void)
  cpu_register_io_memory(IO_MEM_ROM  IO_MEM_SHIFT, error_mem_read, 
 unassigned_mem_write, NULL);
  cpu_register_io_memory(IO_MEM_UNASSIGNED  IO_MEM_SHIFT, 
 unassigned_mem_read, unassigned_mem_write, NULL);
  cpu_register_io_memory(IO_MEM_NOTDIRTY  IO_MEM_SHIFT, error_mem_read, 
 notdirty_mem_write, NULL);
 -for (i=0; i5; i++)
 +for (i=5; iIO_MEM_NB_ENTRIES; i++)
  io_mem_used[i] = 0;
  
  #if defined(CONFIG_SOFTMMU)

Hi Amit,

There is no need to zero io_mem_used since its in the BSS. The loop in
io_mem_init() was meant to allocate the slots from 0 to 4, not free
them.

So does the following fix the problem?

diff --git a/qemu/exec.c b/qemu/exec.c
index edeb21a..e5199cf 100644
--- a/qemu/exec.c
+++ b/qemu/exec.c
@@ -2519,7 +2519,7 @@ static void io_mem_init(void)
 cpu_register_io_memory(IO_MEM_UNASSIGNED  IO_MEM_SHIFT, 
unassigned_mem_re cpu_register_io_memory(IO_MEM_NOTDIRTY  IO_MEM_SHIFT, 
error_mem_read, not for (i=0; i5; i++)
-io_mem_used[i] = 0;
+io_mem_used[i] = 1;

 #if defined(CONFIG_SOFTMMU)
 io_mem_watch = cpu_register_io_memory(-1, watch_mem_read,




-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.

Re: [kvm-devel] [patch 17/24] QEMU/KVM: add cpu_unregister_io_memory and make io mem table index dynamic

2008-03-18 Thread Amit Shah

* Marcelo Tosatti wrote:

 On Tue, Mar 18, 2008 at 06:02:10PM +0530, Amit Shah wrote:
  This patch broke -no-kvm-irqchip:

...

 Hi Amit,

 There is no need to zero io_mem_used since its in the BSS. The loop in
 io_mem_init() was meant to allocate the slots from 0 to 4, not free
 them.

Of course.

 So does the following fix the problem?

 diff --git a/qemu/exec.c b/qemu/exec.c
 index edeb21a..e5199cf 100644
 --- a/qemu/exec.c
 +++ b/qemu/exec.c
 @@ -2519,7 +2519,7 @@ static void io_mem_init(void)
  cpu_register_io_memory(IO_MEM_UNASSIGNED  IO_MEM_SHIFT,
 unassigned_mem_re cpu_register_io_memory(IO_MEM_NOTDIRTY 
 IO_MEM_SHIFT, error_mem_read, not for (i=0; i5; i++) -   
 io_mem_used[i] = 0;
 +io_mem_used[i] = 1;

  #if defined(CONFIG_SOFTMMU)
  io_mem_watch = cpu_register_io_memory(-1, watch_mem_read,

Yes, it does. Thanks.
-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] [ANNOUNCE] kvm-guest-drivers-windows-1

2008-03-18 Thread Avi Kivity
This is the first release of network drivers for Windows guests running 
on a kvm host.  The drivers are intended for Windows 2000 and Windows XP 
32-bit.  kvm-61 or later is needed in the host.  At the moment only 
binaries are available.

The drivers are available from the download page of the kvm website, below.

To use, download the drivers into the guest (using one of the emulated
network cards), and unpack the package. Reboot with '-net 
nic,model=virtio' instead of the usual setting, and when Windows prompts 
you for a driver location, select the appropriate directory in the 
package (Windows XP or Windows 2000).

Initial release:
- kvm network drivers for Windows 2000 and Windows XP (Yan Vugenfirer, 
Dor Laor)

http://kvm.qumranet.com/

-- 
Do not meddle in the internals of kernels, for they are subtle and quick 
to panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [ANNOUNCE] kvm-guest-drivers-windows-1

2008-03-18 Thread Daniel P. Berrange
On Tue, Mar 18, 2008 at 05:01:09PM +0200, Avi Kivity wrote:
 This is the first release of network drivers for Windows guests running 
 on a kvm host.  The drivers are intended for Windows 2000 and Windows XP 
 32-bit.  kvm-61 or later is needed in the host.  At the moment only 
 binaries are available.

There's no license file inside the ZIP file - what license are the binaries 
re-distributed under ?

Regards,
Dan.
-- 
|: Red Hat, Engineering, Boston   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org   -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [ANNOUNCE] kvm-guest-drivers-windows-1

2008-03-18 Thread Avi Kivity
Daniel P. Berrange wrote:
 On Tue, Mar 18, 2008 at 05:01:09PM +0200, Avi Kivity wrote:
   
 This is the first release of network drivers for Windows guests running 
 on a kvm host.  The drivers are intended for Windows 2000 and Windows XP 
 32-bit.  kvm-61 or later is needed in the host.  At the moment only 
 binaries are available.
 

 There's no license file inside the ZIP file - what license are the binaries 
 re-distributed under ?

   

Good question.  I'll find out.  I imagine they'd be freely redistributable.

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [ANNOUNCE] kvm-guest-drivers-windows-1

2008-03-18 Thread Ian Kirk
Avi Kivity wrote:

 This is the first release of network drivers for Windows guests running
 on a kvm host.

Any plans for Windows Server and block support?

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [patch 17/24] QEMU/KVM: add cpu_unregister_io_memory and make io mem table index dynamic

2008-03-18 Thread Avi Kivity
Amit Shah wrote:


  So does the following fix the problem?
 
 Yes, it does. Thanks.


Okay, applied.

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] [ANNOUNCE] kvm-driver-disc-20080318

2008-03-18 Thread Avi Kivity
This is the first release of the kvm drivers disc -- a collection of kvm 
guest drivers packaged as an ISO 9660 CD-ROM for easy installation.

The driver disc can be obtained from the kvm download page, below.

Initial release:
- kvm-guest-drivers-linux-1
- kvm-guest-drivers-windows-1

http://kvm.qumranet.com

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [ANNOUNCE] kvm-guest-drivers-windows-1

2008-03-18 Thread Yan Vugenfirer
Ian,

XP drivers are also supported on Win2003 server.

 
Best regards,
Yan Vugenfirer.

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Ian Kirk
Sent: ג 18 מרץ 2008 17:19
To: Avi Kivity
Cc: KVM
Subject: Re: [kvm-devel] [ANNOUNCE] kvm-guest-drivers-windows-1

Avi Kivity wrote:

 This is the first release of network drivers for Windows guests running
 on a kvm host.

Any plans for Windows Server and block support?

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [ANNOUNCE] kvm-guest-drivers-windows-1

2008-03-18 Thread Avi Kivity
Ian Kirk wrote:
 Avi Kivity wrote:

   
 This is the first release of network drivers for Windows guests running
 on a kvm host.
 

 Any plans for Windows Server 

IIUC the XP drivers should also work for Windows 2003 Server.  Windows 
2008 Server and x64 variants are planned.

 and block support?
   

No plans at this point.  SCSI emulation should provide decent performance.

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] Fix sci irq set when acpi timer about to wrap

2008-03-18 Thread Dor Laor

On Sun, 2008-03-16 at 19:08 +0200, Avi Kivity wrote:
 Dor Laor wrote:
  From 498f162fc9d9fb897c756273c481101a44a220de Mon Sep 17 00:00:00 2001
  From: Dor Laor [EMAIL PROTECTED]
  Date: Thu, 13 Mar 2008 00:11:41 +0200
  Subject: [PATCH] Fix sci irq set when acpi timer about to wrap.
 
  The acpi timer should generate sci irq when enabled and
  when bit 23 of the timer counter toogles.
  It fixes time reading by the performance counter api of windows guest.
 

 
 How does this relate to ce35c9534137b71327466fa9abc243cbe2d7e8dc?
 

It was buggy with the above commit.
The code not only fix it but also makes it more readable.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] vmwarevga merge clash

2008-03-18 Thread Anthony Liguori
Avi Kivity wrote:
 Trying to merge qemu-cvs, there's a conflict in vmwarevga between two 
 changes that appear to be identical in purpose, only implemented 
 differently: 6d262b07a2046ed1fa0ec3fd61f00efbfcd5a9ef (master) and 
 5aa90452c52e3a914e1f6bbf34331507fd7c5d52 (qemu-cvs).

 I think the correct action is to drop the local changes and accept the 
 qemu-cvs commit.  Can you confirm?

qemu cvs still sets the BAR registers which KVM didn't seem to like.  
However, I believe that what is in QEMU CVS is correct and that removing 
explicit BAR register setting is simply hiding a KVM bug.  I'd suggest 
dropping the local changes and I'll investigate further.

Regards,

Anthony Liguori



-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [ANNOUNCE] kvm-driver-disc-20080318

2008-03-18 Thread david ahern
Are you interested in collecting ports of the drivers for various distributions?

I have the virtio drivers working with RHEL4. The virtio_net appears to be
working better than e1000 for the workload I am testing with (though I still the
need the noapic boot option).  The virtio_blk driver mostly works (the VM
freezes from time and time which gdb and strace seem to clear); its performance
so far lags the scsi driver.

david


Avi Kivity wrote:
 This is the first release of the kvm drivers disc -- a collection of kvm 
 guest drivers packaged as an ISO 9660 CD-ROM for easy installation.
 
 The driver disc can be obtained from the kvm download page, below.
 
 Initial release:
 - kvm-guest-drivers-linux-1
 - kvm-guest-drivers-windows-1
 
 http://kvm.qumranet.com
 

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [ANNOUNCE] kvm-driver-disc-20080318

2008-03-18 Thread Anthony Liguori
david ahern wrote:
 Are you interested in collecting ports of the drivers for various 
 distributions?
   

What we would like to do, is have the kvm-guest-drivers-linux.git tree 
autogenerate backports for as far back as we need them.  Posting what 
you needed to do for RHEL4 would be helpful.  What would be most helpful 
is actually submitting a patch to that repo that did the awk/cpp magic 
to generate the backport.

Regards,

Anthony Liguori

 I have the virtio drivers working with RHEL4. The virtio_net appears to be
 working better than e1000 for the workload I am testing with (though I still 
 the
 need the noapic boot option).  The virtio_blk driver mostly works (the VM
 freezes from time and time which gdb and strace seem to clear); its 
 performance
 so far lags the scsi driver.
   



 david


 Avi Kivity wrote:
   
 This is the first release of the kvm drivers disc -- a collection of kvm 
 guest drivers packaged as an ISO 9660 CD-ROM for easy installation.

 The driver disc can be obtained from the kvm download page, below.

 Initial release:
 - kvm-guest-drivers-linux-1
 - kvm-guest-drivers-windows-1

 http://kvm.qumranet.com

 

 -
 This SF.net email is sponsored by: Microsoft
 Defy all challenges. Microsoft(R) Visual Studio 2008.
 http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
 ___
 kvm-devel mailing list
 kvm-devel@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/kvm-devel
   


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] [PATCH 7 of 7] Add ability to specify ram on command line for bamboo board model

2008-03-18 Thread Jerone Young
# HG changeset patch
# User Jerone Young [EMAIL PROTECTED]
# Date 1205870472 18000
# Branch merge
# Node ID 4f90f7d25186f55bfb1503764af5264201df067f
# Parent  ac0fc9dfd78d2eddd083326e9b635a9286fc3b19
Add ability to specify ram on command line for bamboo board model

This patch adds the ability to now specify ram sizes on the command line.
Due to the nature of the code there are restictions on exactly how
much ram and the multiple that the size must match.

Signed-off-by: Jerone Young [EMAIL PROTECTED]

diff --git a/qemu/hw/ppc440_bamboo.c b/qemu/hw/ppc440_bamboo.c
--- a/qemu/hw/ppc440_bamboo.c
+++ b/qemu/hw/ppc440_bamboo.c
@@ -15,6 +15,9 @@
 
 #define BINARY_DEVICE_TREE_FILE bamboo.dtb
 
+#define bytes_to_mb(a) (a20)
+#define mb_to_bytes(a) (a20)
+
 /* PPC 440 refrence demo board
  *
  * 440 PowerPC CPU
@@ -28,7 +31,7 @@ void bamboo_init(ram_addr_t ram_size, in
const char *cpu_model)
 {
char buf[1024]; 
-   target_phys_addr_t ram_bases[2], ram_sizes[2];
+   target_phys_addr_t ram_bases[2], ram_sizes[2]; 
qemu_irq *pic;
CPUState *env;
target_ulong ep=0;
@@ -40,32 +43,39 @@ void bamboo_init(ram_addr_t ram_size, in
target_ulong dt_base=0;
void *fdt;
int ret;
+   int ram_stick_sizes[] = {256, 128, 64, 32, 16, 8 }; /* in Mega bytes */
+   ram_addr_t tmp_ram_size;
+   int i=0, k=0;
 
uint32_t cpu_freq;
uint32_t timebase_freq;
 
printf(%s: START\n, __func__);
 
-   /* Setup Memory */
-   if (ram_size) {
-   printf(Ram size specified on command line is %i bytes\n,
-   (int)ram_size);
-   printf(WARNING: RAM is hard coded to 144MB\n);
-   }
-   else {
-   printf(Using defualt ram size of %iMB\n,
-   ((int)ram_size/1024)/1024);
+   /* Setup Memory */
+   printf(Ram size passed is: %i MB\n,
+   bytes_to_mb((int)ram_size));
+
+   tmp_ram_size = ram_size;
+ 
+   for (i=0; i  (sizeof(ram_sizes)/sizeof(ram_sizes[0])); i++)
+   {
+   for (k=0; k  
(sizeof(ram_stick_sizes)/sizeof(ram_stick_sizes[0])); k++)
+   {
+   if ((bytes_to_mb(ram_size)/ram_stick_sizes[k])  0)
+   {
+   ram_sizes[i] = mb_to_bytes(ram_stick_sizes[k]);
+   tmp_ram_size -= mb_to_bytes(ram_stick_sizes[k]);
+   break;
+   }
+   }
}
 
-   /* Each bank can only have memory in configurations of
-*   16MB, 32MB, 64MB, 128MB, or 256MB
-*/
-   ram_bases[0] = 0x0;
-   ram_sizes[0] = 0x0800;
-   ram_bases[1] = 0x0;
-   ram_sizes[1] = 0x0100;
-
-   printf(Ram size of domain is %d bytes\n, (int)ram_size);
+   if (tmp_ram_size) {
+   printf(WARNING: %i MB left over memory is ram\n, 
+   bytes_to_mb((int)tmp_ram_size));
+   ram_size -= tmp_ram_size;
+   }
 
/* Setup CPU */
env = cpu_ppc_init(440);

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] [PATCH 5 of 7] Add dynamic device tree manipulation change uboot loader for PPC bamboo board model

2008-03-18 Thread Jerone Young
# HG changeset patch
# User Jerone Young [EMAIL PROTECTED]
# Date 1205870472 18000
# Branch merge
# Node ID 3e87db599895937824b9bf3369eb67ea7f5a7595
# Parent  ba2876c3e8916ba9c19b75c4464cbb8dc6858fbd
Add dynamic device tree manipulation  change uboot loader for PPC bamboo board 
model

This patch adds code to dynamically manipulate the device tree when loaded into 
memory. This allows us to finally have the ability to manipulate the kernel 
command line  initrd from the qemu command line. This will also let us setup 
different settings for the board.

This patch also now uses new uboot loader load_image() to load kernel image.

Signed-off-by: Jerone Young [EMAIL PROTECTED]

diff --git a/qemu/Makefile.target b/qemu/Makefile.target
--- a/qemu/Makefile.target
+++ b/qemu/Makefile.target
@@ -617,7 +617,7 @@ OBJS+= unin_pci.o ppc_chrp.o
 OBJS+= unin_pci.o ppc_chrp.o
 # PowerPC 4xx boards
 OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc405_uc.o ppc405_boards.o
-OBJS+= ppc440.o ppc440_bamboo.o
+OBJS+= ppc440.o ppc440_bamboo.o device_tree.o
 endif
 ifeq ($(TARGET_BASE_ARCH), mips)
 OBJS+= mips_r4k.o mips_malta.o mips_pica61.o mips_mipssim.o
diff --git a/qemu/hw/device_tree.c b/qemu/hw/device_tree.c
new file mode 100644
--- /dev/null
+++ b/qemu/hw/device_tree.c
@@ -0,0 +1,181 @@
+/*
+ * Functions to help device tree manipulation using libfdt.
+ * It also provides functions to read entries from device tree proc
+ * interface.
+ *
+ * Copyright 2008 IBM Corporation.
+ * Authors: Jerone Young [EMAIL PROTECTED]
+ *
+ * This work is licensed under the GNU GPL license version 2 or later.
+ *
+ */
+
+#include stdio.h
+#include sys/types.h
+#include sys/stat.h
+#include fcntl.h
+#include unistd.h
+#include stdlib.h
+
+#include config.h
+#include ppc440.h
+
+#ifdef CONFIG_LIBFDT
+   #include libfdt.h
+#endif
+
+#define DT_PROC_INTERFACE_PATH /proc/device-tree
+
+/* FUNCTIONS FOR READING FROM DEVICE TREE OF HOST IN /PROC */
+
+/* This function reads device-tree property files that are of
+ * a single cell size
+ */
+uint32_t read_proc_dt_prop_cell(char *path_in_device_tree)
+{
+   char *buf = NULL;
+   int i;
+   uint32_t num;
+   FILE *stream;
+
+   i = snprintf(buf, 0, %s/%s, DT_PROC_INTERFACE_PATH,
+   path_in_device_tree);
+
+   buf = (char *)malloc(i);
+   if (buf == NULL)
+   {
+   printf(%s: Unable to malloc string buffer buf\n,
+   __func__);
+   exit(1);
+   }
+
+   i = snprintf(buf, i+1, %s/%s,  DT_PROC_INTERFACE_PATH,
+   path_in_device_tree);
+
+   stream = fopen(buf, rb);
+   
+   if (stream == NULL)
+   {
+   printf(%s: Unable to open '%s'\n, __func__, buf);
+   exit(1);
+   }
+
+   fread(num, sizeof(num), 1, stream);
+   fclose(stream);
+
+   return num;
+} 
+
+/* FUNCTIONS FOR LOADING  MANIPULATION OF DEVICE TREE IN GUEST */
+
+#ifdef CONFIG_LIBFDT
+/* support functions */
+static int get_offset_of_node(void *fdt, char *node_path)
+{
+   int node_offset;
+   node_offset = fdt_path_offset(fdt, node_path);
+   if (node_offset  0) {
+   printf(Unable to find node in device tree '%s'\n, 
+   node_path);
+   exit(1);
+   }
+   return node_offset;
+}
+
+/* public functions */
+void *load_device_tree(char *filename_path, unsigned long load_addr)
+{
+   int dt_file_size;
+   int dt_file_load_size;
+   int new_dt_size;int ret;
+   void *dt_file = NULL;
+   void *fdt;
+   
+   dt_file_size = get_image_size(filename_path);
+   if (dt_file_size  0) {
+   printf(Unable to get size of device tree file);
+   goto fail;
+   }
+   
+   /* First allocate space in qemu for device tree */
+   dt_file = qemu_malloc(dt_file_size);
+   if (dt_file == NULL) {
+   printf(Unable to allocate memory in qemu for device tree\n);
+   goto fail;
+   }
+   memset(dt_file, 0, dt_file_size);
+
+   dt_file_load_size = load_image(filename_path, dt_file);
+
+
+   /* XXX Second we place new copy of 2x size in guest memory 
+*  This give us enough room for manipulation.
+*/
+   new_dt_size = dt_file_size * 2;
+
+   fdt = (void *)load_addr;
+
+   ret = fdt_open_into(dt_file, fdt, new_dt_size);
+   if (ret) {
+   printf(Unable to copy device tree in memory\n);
+   goto fail;
+   }
+   
+   /* Check sanity of device tree */
+   if (fdt_check_header(fdt)) {
+   printf (Device tree file loaded into memory is invalid: %s\n,
+   filename_path);
+   goto fail;
+   }
+   /* free qemu memory with old device tree */
+   qemu_free(dt_file); 
+   return fdt;
+
+fail:
+   if (dt_file) 
+   qemu_free(dt_file);
+   return NULL;
+}
+
+void dump_device_tree_to_file(void 

[kvm-devel] [PATCH 3 of 7] Create new load_uimage() gunzip support to uboot loader in Qemu

2008-03-18 Thread Jerone Young
# HG changeset patch
# User Jerone Young [EMAIL PROTECTED]
# Date 1205870472 18000
# Branch merge
# Node ID 25515e6983ba1e070cbdcb7be1527426a097048b
# Parent  aa10b5ca2f11cd571ae8a06c1e92425b7f7407ca
Create new load_uimage()  gunzip support to uboot loader in Qemu

This patch adds the ability for the load address to be caputred when loading a 
uImage or cuImage. It also adds a better return code as the size can be an 
usigned long. This is done by creating a new function prototype and calling it 
load_uimage. To keep compatibility with code already using the old load_uboot a 
wrapper function has been created so current callers will not break them.

Also added is gunzip support to allow for loading of uimages with a compressed 
kenrel images.

Signed-off-by: Jerone Young [EMAIL PROTECTED]

diff --git a/qemu/loader.c b/qemu/loader.c
--- a/qemu/loader.c
+++ b/qemu/loader.c
@@ -26,6 +26,8 @@
 #include sysemu.h
 #include uboot_image.h
 
+#include zlib.h
+
 /* return the size or -1 if error */
 int get_image_size(const char *filename)
 {
@@ -263,14 +265,106 @@ static void bswap_uboot_header(uboot_ima
 }
 
 /* Load a U-Boot image.  */
-int load_uboot(const char *filename, target_ulong *ep, int *is_linux)
-{
-
+
+/* gunzip functionality is derived from gunzip function 
+ * in uboot source code 
+ */
+
+#defineZALLOC_ALIGNMENT16
+
+static void *zalloc(void *x, unsigned items, unsigned size)
+{
+   void *p;
+
+   size *= items;
+   size = (size + ZALLOC_ALIGNMENT - 1)  ~(ZALLOC_ALIGNMENT - 1);
+
+   p = malloc (size);
+
+   return (p);
+}
+
+static void zfree(void *x, void *addr, unsigned nb)
+{
+   free (addr);
+}
+
+
+#define HEAD_CRC   2
+#define EXTRA_FIELD4
+#define ORIG_NAME  8
+#define COMMENT0x10
+#define RESERVED   0xe0
+
+#define DEFLATED   8
+
+static int gunzip(void *dst, int dstlen, unsigned char *src,
+   unsigned long *lenp)
+{
+   z_stream s;
+   int r, i, flags;
+
+   /* skip header */
+   i = 10;
+   flags = src[3];
+   if (src[2] != DEFLATED || (flags  RESERVED) != 0) {
+   puts (Error: Bad gzipped data\n);
+   return -1;
+   }
+   if ((flags  EXTRA_FIELD) != 0)
+   i = 12 + src[10] + (src[11]  8);
+   if ((flags  ORIG_NAME) != 0)
+   while (src[i++] != 0)
+   ;
+   if ((flags  COMMENT) != 0)
+   while (src[i++] != 0)
+   ;
+   if ((flags  HEAD_CRC) != 0)
+   i += 2;
+   if (i = *lenp) {
+   puts (Error: gunzip out of data in header\n);
+   return -1;
+   }
+
+   s.zalloc = zalloc;
+   s.zfree = zfree;
+
+   r = inflateInit2(s, -MAX_WBITS);
+   if (r != Z_OK) {
+   printf (Error: inflateInit2() returned %d\n, r);
+   return (-1);
+   }
+   s.next_in = src + i;
+   s.avail_in = *lenp - i;
+   s.next_out = dst;
+   s.avail_out = dstlen;
+   r = inflate(s, Z_FINISH);
+   if (r != Z_OK  r != Z_STREAM_END) {
+   printf (Error: inflate() returned %d\n, r);
+   return -1;
+   }
+   *lenp = s.next_out - (unsigned char *) dst;
+   inflateEnd(s);
+
+   return 0;
+}
+
+
+#define MAX_KERNEL_SIZE 8*1024*1024  //8MB
+/* This functions can load uImage  cuImage files */
+int load_uimage(const char *filename, target_ulong *ep,
+  target_ulong *load_address, 
+  target_ulong *loaded_image_size,
+  int *is_linux)
+{
 int fd;
 int size;
+int ret;
 uboot_image_header_t h;
 uboot_image_header_t *hdr = h;
 uint8_t *data = NULL;
+uint8_t *uncompressed_data = NULL;
+unsigned long tmp_loaded_image_size;
 
 fd = open(filename, O_RDONLY | O_BINARY);
 if (fd  0)
@@ -291,13 +385,14 @@ int load_uboot(const char *filename, tar
 goto fail;
 }
 
-/* TODO: Implement compressed images.  */
-if (hdr-ih_comp != IH_COMP_NONE) {
-fprintf(stderr, Unable to load compressed u-boot images\n);
+/* TODO bzip2 support */
+if (hdr-ih_comp == IH_COMP_BZIP2) {
+fprintf(stderr, Unable to load bzip2 compressed u-boot images\n);
 goto fail;
 }
 
 /* TODO: Check CPU type.  */
+
 if (is_linux) {
 if (hdr-ih_type == IH_TYPE_KERNEL  hdr-ih_os == IH_OS_LINUX)
 *is_linux = 1;
@@ -306,6 +401,7 @@ int load_uboot(const char *filename, tar
 }
 
 *ep = hdr-ih_ep;
+
 data = qemu_malloc(hdr-ih_size);
 if (!data)
 goto fail;
@@ -315,9 +411,36 @@ int load_uboot(const char *filename, tar
 goto fail;
 }
 
-cpu_physical_memory_write_rom(hdr-ih_load, data, hdr-ih_size);
-
-return hdr-ih_size;
+tmp_loaded_image_size = hdr-ih_size;
+
+if (hdr-ih_comp == IH_COMP_GZIP) {
+   uncompressed_data = qemu_malloc(MAX_KERNEL_SIZE);
+   ret = 

[kvm-devel] [PATCH 2 of 7] Add libfdt support to qemu

2008-03-18 Thread Jerone Young
# HG changeset patch
# User Jerone Young [EMAIL PROTECTED]
# Date 1205870472 18000
# Branch merge
# Node ID aa10b5ca2f11cd571ae8a06c1e92425b7f7407ca
# Parent  499d36637c8b4fcc0cd0008186d7974bb28369ab
Add libfdt support to qemu

This patch adds needed configuration options to compile in libfdt support
into qemu.

Signed-off-by: Jerone Young [EMAIL PROTECTED]

diff --git a/qemu/Makefile.target b/qemu/Makefile.target
--- a/qemu/Makefile.target
+++ b/qemu/Makefile.target
@@ -555,6 +555,11 @@ ifdef CONFIG_VNC_TLS
 ifdef CONFIG_VNC_TLS
 CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
 LIBS += $(CONFIG_VNC_TLS_LIBS)
+endif
+
+ifdef CONFIG_LIBFDT
+LIBS += -lfdt
+DEPLIBS += libfdt.a
 endif
 
 # SCSI layer
diff --git a/qemu/configure b/qemu/configure
--- a/qemu/configure
+++ b/qemu/configure
@@ -112,6 +112,7 @@ uname_release=
 uname_release=
 curses=yes
 cpu_emulation=yes
+device_tree_support=
 
 # OS specific
 targetos=`uname -s`
@@ -345,6 +346,8 @@ for opt do
   ;;
   --disable-cpu-emulation) cpu_emulation=no
   ;;
+  --disable-libfdt) device_tree_support=no
+  ;;
   *) echo ERROR: unknown option $opt; exit 1
   ;;
   esac
@@ -449,6 +452,7 @@ echo   --enable-uname-release=R Return 
 echo   --enable-uname-release=R Return R for uname -r in usermode emulation
 echo   --sparc_cpu=VBuild qemu for Sparc architecture v7, v8, 
v8plus, v8plusa, v9
 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
@@ -732,6 +736,31 @@ else
   binsuffix=/bin
 fi
 
+##
+# libfdt probe
+#
+if test -z $device_tree_support -a \
+   $cpu = powerpc; then 
+  device_tree_support=no
+  cat  $TMPC  EOF
+#include libfdt.h
+/* 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
@@ -793,6 +822,9 @@ echo kqemu support $kqemu
 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 Documentation $build_docs
 [ ! -z $uname_release ]  \
 echo uname -r  $uname_release
@@ -1186,6 +1218,10 @@ elif test $target_cpu = ppcemb ; the
   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
 elif test $target_cpu = ppc64 ; then
   echo TARGET_ARCH=ppc64  $config_mak

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] [PATCH 6 of 7] Modify PPC bamboo ppc440 board models

2008-03-18 Thread Jerone Young
# HG changeset patch
# User Jerone Young [EMAIL PROTECTED]
# Date 1205870472 18000
# Branch merge
# Node ID ac0fc9dfd78d2eddd083326e9b635a9286fc3b19
# Parent  3e87db599895937824b9bf3369eb67ea7f5a7595
Modify PPC bamboo  ppc440 board models

This patch renames pp440_init to ppc440ep_init, as ppc440 is the name of the 
core and ppc440ep is the name of the SOC. When we init we are initializing the 
SOC.

Also in this patch we now call cpu_ppc_init for bamboo with string 440 .. as 
440 is the core.

Signed-off-by: Jerone Young [EMAIL PROTECTED]

diff --git a/qemu/hw/ppc440.c b/qemu/hw/ppc440.c
--- a/qemu/hw/ppc440.c
+++ b/qemu/hw/ppc440.c
@@ -10,7 +10,7 @@
 
 #include ppc440.h
 
-void ppc440_init(CPUState *env,
+void ppc440ep_init(CPUState *env,
target_phys_addr_t ram_bases[2],
target_phys_addr_t ram_sizes[2],
qemu_irq **picp,
diff --git a/qemu/hw/ppc440.h b/qemu/hw/ppc440.h
--- a/qemu/hw/ppc440.h
+++ b/qemu/hw/ppc440.h
@@ -20,7 +20,7 @@
 #include exec-all.h
 #include boards.h
 
-void ppc440_init(CPUState *env,
+void ppc440ep_init(CPUState *env,
target_phys_addr_t ram_bases[2],
target_phys_addr_t ram_sizes[2],
qemu_irq **picp,
diff --git a/qemu/hw/ppc440_bamboo.c b/qemu/hw/ppc440_bamboo.c
--- a/qemu/hw/ppc440_bamboo.c
+++ b/qemu/hw/ppc440_bamboo.c
@@ -68,8 +68,7 @@ void bamboo_init(ram_addr_t ram_size, in
printf(Ram size of domain is %d bytes\n, (int)ram_size);
 
/* Setup CPU */
-   /* XXX We cheat for now and use 405 */
-   env = cpu_ppc_init(405);
+   env = cpu_ppc_init(440);
if (!env) {
fprintf(stderr, Unable to initilize CPU!\n);
exit(1);
@@ -77,7 +76,7 @@ void bamboo_init(ram_addr_t ram_size, in
 
/* call init */
printf(Calling function ppc440_init\n);
-   ppc440_init(env, ram_bases, ram_sizes, pic,1);
+   ppc440ep_init(env, ram_bases, ram_sizes, pic,1);
printf(Done calling ppc440_init\n);
 
/* Register mem */

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] [PATCH] convert init_rmode_tss to slots_lock

2008-03-18 Thread Marcelo Tosatti

init_rmode_tss was forgotten during the conversion from mmap_sem to
slots_lock.

There are several sites reading the slots data without taking   
slots_lock, including tdp_page_fault. I'll be sending a patch 
to move acquision to vcpu_run as suggested by Avi later today.

INFO: task qemu-system-x86:3748 blocked for more than 120 seconds.
Call Trace:
 [8053d100] __down_read+0x86/0x9e
 [8053fb43] do_page_fault+0x346/0x78e
 [8053d235] trace_hardirqs_on_thunk+0x35/0x3a
 [8053dcad] error_exit+0x0/0xa9
 [8035a7a7] copy_user_generic_string+0x17/0x40
 [88099a8a] :kvm:kvm_write_guest_page+0x3e/0x5f
 [880b661a] :kvm_intel:init_rmode_tss+0xa7/0xf9
 [880b7d7e] :kvm_intel:vmx_vcpu_reset+0x10/0x38a
 [8809b9a5] :kvm:kvm_arch_vcpu_setup+0x20/0x53
 [8809a1e4] :kvm:kvm_vm_ioctl+0xad/0x1cf
 [80249dea] __lock_acquire+0x4f7/0xc28
 [8028fad9] vfs_ioctl+0x21/0x6b
 [8028fd75] do_vfs_ioctl+0x252/0x26b
 [8028fdca] sys_ioctl+0x3c/0x5e
 [8020b01b] system_call_after_swapgs+0x7b/0x80

Signed-off-by: Marcelo Tosatti [EMAIL PROTECTED]

Index: kvm/arch/x86/kvm/vmx.c
===
--- kvm.orig/arch/x86/kvm/vmx.c
+++ kvm/arch/x86/kvm/vmx.c
@@ -1480,7 +1480,7 @@ static int init_rmode_tss(struct kvm *kv
int ret = 0;
int r;
 
-   down_read(current-mm-mmap_sem);
+   down_read(kvm-slots_lock);
r = kvm_clear_guest_page(kvm, fn, 0, PAGE_SIZE);
if (r  0)
goto out;
@@ -1503,7 +1503,7 @@ static int init_rmode_tss(struct kvm *kv
 
ret = 1;
 out:
-   up_read(current-mm-mmap_sem);
+   up_read(kvm-slots_lock);
return ret;
 }
 


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] [PATCH 4 of 7] Add PPC 440EP bamboo board device tree source binary into qemu

2008-03-18 Thread Jerone Young
# HG changeset patch
# User Jerone Young [EMAIL PROTECTED]
# Date 1205870472 18000
# Branch merge
# Node ID ba2876c3e8916ba9c19b75c4464cbb8dc6858fbd
# Parent  25515e6983ba1e070cbdcb7be1527426a097048b
Add PPC 440EP bamboo board device tree source  binary into qemu

This patch places the bamboo device tree for the PPC 440EP bamboo board into 
the pc-bios directory of the qemu source. This also adds a rule into the 
pc-bios/Makefile to build device tree files.

Signed-off-by: Jerone Young [EMAIL PROTECTED]

diff --git a/qemu/Makefile b/qemu/Makefile
--- a/qemu/Makefile
+++ b/qemu/Makefile
@@ -195,7 +195,8 @@ endif
mkdir -p $(DESTDIR)$(datadir)
for x in bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \
video.x openbios-sparc32 pxe-ne2k_pci.bin \
-   pxe-rtl8139.bin pxe-pcnet.bin pxe-e1000.bin extboot.bin; \
+   pxe-rtl8139.bin pxe-pcnet.bin pxe-e1000.bin extboot.bin \
+   bamboo.dtb; \
 do \
$(INSTALL) -m 644 $(SRC_PATH)/pc-bios/$$x 
$(DESTDIR)$(datadir); \
done
diff --git a/qemu/pc-bios/Makefile b/qemu/pc-bios/Makefile
--- a/qemu/pc-bios/Makefile
+++ b/qemu/pc-bios/Makefile
@@ -12,6 +12,9 @@ all: $(TARGETS)
 %.o: %.S
$(CC) $(DEFINES) -c -o $@ $
 
+%.dtb: %.dts 
+   dtc -O dtb -I dts -o $@ $ 
+
 clean:
-   rm -f $(TARGETS) *.o *~
+   rm -f $(TARGETS) *.o *~ *.dtb
 
diff --git a/qemu/pc-bios/bamboo.dtb b/qemu/pc-bios/bamboo.dtb
new file mode 100644
index 
..e02fa8e0bf23b992b04fe87dfce37d4cc08777a6
GIT binary patch
literal 2663
zc$~FXOKa6Y6h7LdnjYh#(5yQl0#Xj*R{E4?7njf)Evx)PmCrn$kq%%ipiq3-+
zu0{WVD=BUSS8n?YT$O?=1u4$tLk([EMAIL PROTECTED]|#H@@?wm2;hPZ0BZovpZtA?
zk4t=9JURMw44?EegO4HlkZVJ#^ihi;[EMAIL PROTECTED]ifu#{Wan`
zBxbSFUE^bQA#}}!AT$?Z7CFT2vaJ=vxN8`Qld!u#)UK1;3BDQ)(|AZN8kB1RY1=i*
zw([EMAIL PROTECTED]_5Hwi}f^nW9X_Yk([EMAIL PROTECTED]9}pJL
zM[EMAIL PROTECTED]Jv[EMAIL PROTECTED]|3x*(9n1CQu([EMAIL PROTECTED]
zRX%1N(`%;=)p7N2oe=G;`xsF{YL$2@)[EMAIL PROTECTED];zso~hZ)`=%c3Sb{
zGRd!dm8)Fupxcr}7|U;bGt{cYvTWvDL_**WS|QsFnw%^3Gg;*ZAFm(FdWl!W
zX`z~lhq6m-EZbqVj*GYs%OgsEL[EMAIL PROTECTED]
z6iC1j=kwmAT?3I5lLPynmy=y6;[EMAIL PROTECTED]-#evU61J-{s1owbfQH|94E#lFs
z9D(`X9q4dFzdQE6d9UmTeqA%RZZCkyl%ivYZFJJ3v^w2ij+hAE7!FPmsPfo}GW@
zIW~mn*x5Xb^*xQJhIu+mbU[EMAIL PROTECTED]!v4CS--Kln8N
zhED_YVIHCSp656NR+eNX?8UdcEwDU8Eg?++A-zU#2ezDrgrFDjcT-#^kY{Ot!Z
z^K)B%-)m3K`7cnu6LZ9}A{NIwWv~;Tq*IIrjpKxj+LioBiNGO%c*ha_Tt0)wcA
[EMAIL PROTECTED]wjIizCc7bnh}l5hfIio^BK9I[EMAIL PROTECTED])yN=Ivkru3)MA?+o
z1Hicyw`[EMAIL PROTECTED](ocgdU8AO?UeJr+`3v52$S`X{M0}h7a^O}
hww)+RiJO_zG!pI5B%~6C6QekaEKEtNQErv!ylEumZbmy

diff --git a/qemu/pc-bios/bamboo.dts b/qemu/pc-bios/bamboo.dts
new file mode 100644
--- /dev/null
+++ b/qemu/pc-bios/bamboo.dts
@@ -0,0 +1,195 @@
+/*
+ * Device Tree Source for AMCC Bamboo
+ *
+ * Copyright (c) 2006, 2007 IBM Corp.
+ * Josh Boyer [EMAIL PROTECTED]
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed as is without
+ * any warranty of any kind, whether express or implied.
+ */
+
+/ {
+   #address-cells = 2;
+   #size-cells = 1;
+   model = amcc,bamboo;
+   compatible = amcc,bamboo;
+   dcr-parent = /cpus/[EMAIL PROTECTED];
+
+   aliases {
+   serial0 = UART0;
+   serial1 = UART1;   
+   };
+
+   cpus {
+   #address-cells = 1;
+   #size-cells = 0;
+
+   [EMAIL PROTECTED] {
+   device_type = cpu;
+   model = PowerPC,440EP;
+   reg = 0;
+   clock-frequency = 1fca0550;
+   timebase-frequency = 017d7840;
+   i-cache-line-size = 20;
+   d-cache-line-size = 20;
+   i-cache-size = 8000;
+   d-cache-size = 8000;
+   dcr-controller;
+   dcr-access-method = native;
+   };
+   };
+
+   memory {
+   device_type = memory;
+   reg = 0 0 900;
+   };
+
+   UIC0: interrupt-controller0 {
+   compatible = ibm,uic-440ep,ibm,uic;
+   interrupt-controller;
+   cell-index = 0;
+   dcr-reg = 0c0 009;
+   #address-cells = 0;
+   #size-cells = 0;
+   #interrupt-cells = 2;
+   };
+/*
+   UIC1: interrupt-controller1 {
+   compatible = ibm,uic-440ep,ibm,uic;
+   interrupt-controller;
+   cell-index = 1;
+   dcr-reg = 0d0 009;
+   #address-cells = 0;
+   #size-cells = 0;
+   #interrupt-cells = 2;
+   interrupts = 1e 4 1f 4; 
+   interrupt-parent = UIC0;
+   };
+*/
+
+   SDR0: sdr {
+   compatible = ibm,sdr-440ep;
+   dcr-reg = 00e 002;
+   };
+
+  

Re: [kvm-devel] [kvm-ppc-devel] [PATCH 7 of 7] Add ability to specify ram on command line for bamboo board model

2008-03-18 Thread Hollis Blanchard
On Tue, 2008-03-18 at 15:06 -0500, Jerone Young wrote:
 # HG changeset patch
 # User Jerone Young [EMAIL PROTECTED]
 # Date 1205870472 18000
 # Branch merge
 # Node ID 4f90f7d25186f55bfb1503764af5264201df067f
 # Parent  ac0fc9dfd78d2eddd083326e9b635a9286fc3b19
 Add ability to specify ram on command line for bamboo board model
 
 This patch adds the ability to now specify ram sizes on the command line.
 Due to the nature of the code there are restictions on exactly how
 much ram and the multiple that the size must match.
 
 Signed-off-by: Jerone Young [EMAIL PROTECTED]
 
 diff --git a/qemu/hw/ppc440_bamboo.c b/qemu/hw/ppc440_bamboo.c
 --- a/qemu/hw/ppc440_bamboo.c
 +++ b/qemu/hw/ppc440_bamboo.c
 @@ -15,6 +15,9 @@
 
  #define BINARY_DEVICE_TREE_FILE bamboo.dtb
 
 +#define bytes_to_mb(a) (a20)
 +#define mb_to_bytes(a) (a20)
 +
  /* PPC 440 refrence demo board
   *
   * 440 PowerPC CPU
 @@ -28,7 +31,7 @@ void bamboo_init(ram_addr_t ram_size, in
   const char *cpu_model)
  {
   char buf[1024]; 
 - target_phys_addr_t ram_bases[2], ram_sizes[2];
 + target_phys_addr_t ram_bases[2], ram_sizes[2]; 
   qemu_irq *pic;
   CPUState *env;
   target_ulong ep=0;

Here you have added a trailing space.

 @@ -40,32 +43,39 @@ void bamboo_init(ram_addr_t ram_size, in
   target_ulong dt_base=0;
   void *fdt;
   int ret;
 + int ram_stick_sizes[] = {256, 128, 64, 32, 16, 8 }; /* in Mega bytes */
 + ram_addr_t tmp_ram_size;
 + int i=0, k=0;

Define ram_stick_sizes[] in MB and then remove all the shifting inside
the loops.

   uint32_t cpu_freq;
   uint32_t timebase_freq;
 
   printf(%s: START\n, __func__);
 
 - /* Setup Memory */
 - if (ram_size) {
 - printf(Ram size specified on command line is %i bytes\n,
 - (int)ram_size);
 - printf(WARNING: RAM is hard coded to 144MB\n);
 - }
 - else {
 - printf(Using defualt ram size of %iMB\n,
 - ((int)ram_size/1024)/1024);
 + /* Setup Memory */
 + printf(Ram size passed is: %i MB\n,
 + bytes_to_mb((int)ram_size));
 +
 + tmp_ram_size = ram_size;
 + 
 + for (i=0; i  (sizeof(ram_sizes)/sizeof(ram_sizes[0])); i++)
 + {
 + for (k=0; k  
 (sizeof(ram_stick_sizes)/sizeof(ram_stick_sizes[0])); k++)
 + {
 + if ((bytes_to_mb(ram_size)/ram_stick_sizes[k])  0)
 + {

Don't divide, just use a logical comparison.

Also, put all the open-braces on the previous lines.

 + ram_sizes[i] = mb_to_bytes(ram_stick_sizes[k]);
 + tmp_ram_size -= mb_to_bytes(ram_stick_sizes[k]);
 + break;
 + }
 + }
   }
 - /* Each bank can only have memory in configurations of
 -  *   16MB, 32MB, 64MB, 128MB, or 256MB
 -  */
 - ram_bases[0] = 0x0;
 - ram_sizes[0] = 0x0800;
 - ram_bases[1] = 0x0;
 - ram_sizes[1] = 0x0100;
 -
 - printf(Ram size of domain is %d bytes\n, (int)ram_size);
 + if (tmp_ram_size) {
 + printf(WARNING: %i MB left over memory is ram\n, 
 + bytes_to_mb((int)tmp_ram_size));
 + ram_size -= tmp_ram_size;
 + }
 
   /* Setup CPU */
   env = cpu_ppc_init(440);

Remove tmp_ram_size completely. Just decrement ram_size in the loop and
check if it's non-zero at the end.

-- 
Hollis Blanchard
IBM Linux Technology Center


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [kvm-ppc-devel] [PATCH 3 of 7] Create new load_uimage() gunzip support to uboot loader in Qemu

2008-03-18 Thread Hollis Blanchard
On Tue, 2008-03-18 at 15:06 -0500, Jerone Young wrote:
 +tmp_loaded_image_size = hdr-ih_size;
 +
 +if (hdr-ih_comp == IH_COMP_GZIP) {
 +   uncompressed_data = qemu_malloc(MAX_KERNEL_SIZE);
 +   ret = gunzip(uncompressed_data, MAX_KERNEL_SIZE,
 +(unsigned char *) data, 
 +tmp_loaded_image_size);
 +
 +   if (ret  0) {
 +fprintf(stderr, Unable to decompress gziped image!\n);
 +goto fail;
 +}
 +
 +qemu_free(data);
 +cpu_physical_memory_write_rom(hdr-ih_load, uncompressed_data,
 +  tmp_loaded_image_size);
 +
 +}
 +else {
 +cpu_physical_memory_write_rom(hdr-ih_load, data, 
 +  tmp_loaded_image_size);
 +}
 +
 +if (loaded_image_size != NULL)
 +*loaded_image_size = tmp_loaded_image_size;
 +   
 +if ( load_address != NULL)
 +   *load_address = hdr-ih_load;

Your whitespace in here is all over the place. Please fix.

-- 
Hollis Blanchard
IBM Linux Technology Center


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [kvm-ppc-devel] [PATCH 2 of 7] Add libfdt support to qemu

2008-03-18 Thread Hollis Blanchard
On Tue, 2008-03-18 at 15:06 -0500, Jerone Young wrote:
 +##
 +# libfdt probe
 +#
 +if test -z $device_tree_support -a \
 +   $cpu = powerpc; then 
 +  device_tree_support=no
 +  cat  $TMPC  EOF
 +#include libfdt.h
 +/* 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

What is the problem here? Should you describe it in the patch
description? Did you mean to fix this before committing?

-- 
Hollis Blanchard
IBM Linux Technology Center


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [kvm-ppc-devel] [PATCH 7 of 7] Add ability to specify ram on command line for bamboo board model

2008-03-18 Thread Jerone Young
On Tue, 2008-03-18 at 16:03 -0500, Hollis Blanchard wrote:
 On Tue, 2008-03-18 at 15:06 -0500, Jerone Young wrote:
  # HG changeset patch
  # User Jerone Young [EMAIL PROTECTED]
  # Date 1205870472 18000
  # Branch merge
  # Node ID 4f90f7d25186f55bfb1503764af5264201df067f
  # Parent  ac0fc9dfd78d2eddd083326e9b635a9286fc3b19
  Add ability to specify ram on command line for bamboo board model
  
  This patch adds the ability to now specify ram sizes on the command line.
  Due to the nature of the code there are restictions on exactly how
  much ram and the multiple that the size must match.
  
  Signed-off-by: Jerone Young [EMAIL PROTECTED]
  
  diff --git a/qemu/hw/ppc440_bamboo.c b/qemu/hw/ppc440_bamboo.c
  --- a/qemu/hw/ppc440_bamboo.c
  +++ b/qemu/hw/ppc440_bamboo.c
  @@ -15,6 +15,9 @@
  
   #define BINARY_DEVICE_TREE_FILE bamboo.dtb
  
  +#define bytes_to_mb(a) (a20)
  +#define mb_to_bytes(a) (a20)
  +
   /* PPC 440 refrence demo board
*
* 440 PowerPC CPU
  @@ -28,7 +31,7 @@ void bamboo_init(ram_addr_t ram_size, in
  const char *cpu_model)
   {
  char buf[1024]; 
  -   target_phys_addr_t ram_bases[2], ram_sizes[2];
  +   target_phys_addr_t ram_bases[2], ram_sizes[2]; 
  qemu_irq *pic;
  CPUState *env;
  target_ulong ep=0;
 
 Here you have added a trailing space.

ok

 
  @@ -40,32 +43,39 @@ void bamboo_init(ram_addr_t ram_size, in
  target_ulong dt_base=0;
  void *fdt;
  int ret;
  +   int ram_stick_sizes[] = {256, 128, 64, 32, 16, 8 }; /* in Mega bytes */
  +   ram_addr_t tmp_ram_size;
  +   int i=0, k=0;
 
 Define ram_stick_sizes[] in MB and then remove all the shifting inside
 the loops.

You must mean define them in bytes. That can be done also.

 
  uint32_t cpu_freq;
  uint32_t timebase_freq;
  
  printf(%s: START\n, __func__);
  
  -   /* Setup Memory */
  -   if (ram_size) {
  -   printf(Ram size specified on command line is %i bytes\n,
  -   (int)ram_size);
  -   printf(WARNING: RAM is hard coded to 144MB\n);
  -   }
  -   else {
  -   printf(Using defualt ram size of %iMB\n,
  -   ((int)ram_size/1024)/1024);
  +   /* Setup Memory */
  +   printf(Ram size passed is: %i MB\n,
  +   bytes_to_mb((int)ram_size));
  +
  +   tmp_ram_size = ram_size;
  + 
  +   for (i=0; i  (sizeof(ram_sizes)/sizeof(ram_sizes[0])); i++)
  +   {
  +   for (k=0; k  
  (sizeof(ram_stick_sizes)/sizeof(ram_stick_sizes[0])); k++)
  +   {
  +   if ((bytes_to_mb(ram_size)/ram_stick_sizes[k])  0)
  +   {
 
 Don't divide, just use a logical comparison.

This can be done. Though it really doesn't matter. Both ways work.

 Also, put all the open-braces on the previous lines.

ok

 
  +   ram_sizes[i] = mb_to_bytes(ram_stick_sizes[k]);
  +   tmp_ram_size -= mb_to_bytes(ram_stick_sizes[k]);
  +   break;
  +   }
  +   }
  }
  -   /* Each bank can only have memory in configurations of
  -*   16MB, 32MB, 64MB, 128MB, or 256MB
  -*/
  -   ram_bases[0] = 0x0;
  -   ram_sizes[0] = 0x0800;
  -   ram_bases[1] = 0x0;
  -   ram_sizes[1] = 0x0100;
  -
  -   printf(Ram size of domain is %d bytes\n, (int)ram_size);
  +   if (tmp_ram_size) {
  +   printf(WARNING: %i MB left over memory is ram\n, 
  +   bytes_to_mb((int)tmp_ram_size));
  +   ram_size -= tmp_ram_size;
  +   }
  
  /* Setup CPU */
  env = cpu_ppc_init(440);
 
 Remove tmp_ram_size completely. Just decrement ram_size in the loop
 and
 check if it's non-zero at the end.

tmp_ram_size is needed because we use ram_size later used allocate
memory.

 


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [kvm-ppc-devel] [PATCH 2 of 7] Add libfdt support to qemu

2008-03-18 Thread Jerone Young
So this is the code Anthony asked for for probing libfdt. The problem is
that if you do ./configure params at kvm-userpace top directory for
the first time or after a clean you do not have libfdt.a. When qemu
configure is run this probe would allways fail. So to check we just
check for the header. So we compile a very simple program that include
libfdt.h as the test.

All the XXX are if we ever do break libfdt out then we can do the proper
probing for it (and the code for it is ready to be uncommented). 


On Tue, 2008-03-18 at 16:16 -0500, Hollis Blanchard wrote:
 On Tue, 2008-03-18 at 15:06 -0500, Jerone Young wrote:
  +##
  +# libfdt probe
  +#
  +if test -z $device_tree_support -a \
  +   $cpu = powerpc; then 
  +  device_tree_support=no
  +  cat  $TMPC  EOF
  +#include libfdt.h
  +/* 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
 
 What is the problem here? Should you describe it in the patch
 description? Did you mean to fix this before committing?
 


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [kvm-ppc-devel] [PATCH 5 of 7] Add dynamic device tree manipulation change uboot loader for PPC bamboo board model

2008-03-18 Thread Hollis Blanchard
On Tue, 2008-03-18 at 15:06 -0500, Jerone Young wrote:
 # HG changeset patch
 # User Jerone Young [EMAIL PROTECTED]
 # Date 1205870472 18000
 # Branch merge
 # Node ID 3e87db599895937824b9bf3369eb67ea7f5a7595
 # Parent  ba2876c3e8916ba9c19b75c4464cbb8dc6858fbd
 Add dynamic device tree manipulation  change uboot loader for PPC bamboo 
 board model
 
 This patch adds code to dynamically manipulate the device tree when
 loaded into memory. This allows us to finally have the ability to
 manipulate the kernel command line  initrd from the qemu command
 line. This will also let us setup different settings for the board.
 
 This patch also now uses new uboot loader load_image() to load kernel
 image.

Again, the load_uimage part (which you've misspelled here) should be a
separate patch?

 Signed-off-by: Jerone Young [EMAIL PROTECTED]
 
 diff --git a/qemu/Makefile.target b/qemu/Makefile.target
 --- a/qemu/Makefile.target
 +++ b/qemu/Makefile.target
 @@ -617,7 +617,7 @@ OBJS+= unin_pci.o ppc_chrp.o
  OBJS+= unin_pci.o ppc_chrp.o
  # PowerPC 4xx boards
  OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc405_uc.o ppc405_boards.o
 -OBJS+= ppc440.o ppc440_bamboo.o
 +OBJS+= ppc440.o ppc440_bamboo.o device_tree.o
  endif
  ifeq ($(TARGET_BASE_ARCH), mips)
  OBJS+= mips_r4k.o mips_malta.o mips_pica61.o mips_mipssim.o
 diff --git a/qemu/hw/device_tree.c b/qemu/hw/device_tree.c
 new file mode 100644
 --- /dev/null
 +++ b/qemu/hw/device_tree.c
 @@ -0,0 +1,181 @@
 +/*
 + * Functions to help device tree manipulation using libfdt.
 + * It also provides functions to read entries from device tree proc
 + * interface.
 + *
 + * Copyright 2008 IBM Corporation.
 + * Authors: Jerone Young [EMAIL PROTECTED]
 + *
 + * This work is licensed under the GNU GPL license version 2 or later.
 + *
 + */
 +
 +#include stdio.h
 +#include sys/types.h
 +#include sys/stat.h
 +#include fcntl.h
 +#include unistd.h
 +#include stdlib.h
 +
 +#include config.h
 +#include ppc440.h
 +
 +#ifdef CONFIG_LIBFDT
 + #include libfdt.h
 +#endif

Again, don't indent this.

 +#define DT_PROC_INTERFACE_PATH /proc/device-tree
 +
 +/* FUNCTIONS FOR READING FROM DEVICE TREE OF HOST IN /PROC */
 +
 +/* This function reads device-tree property files that are of
 + * a single cell size
 + */
 +uint32_t read_proc_dt_prop_cell(char *path_in_device_tree)
 +{
 + char *buf = NULL;
 + int i;
 + uint32_t num;
 + FILE *stream;
 +
 + i = snprintf(buf, 0, %s/%s, DT_PROC_INTERFACE_PATH,
 + path_in_device_tree);
 +
 + buf = (char *)malloc(i);
 + if (buf == NULL)
 + {
 + printf(%s: Unable to malloc string buffer buf\n,
 + __func__);
 + exit(1);
 + }

Braces.

 + i = snprintf(buf, i+1, %s/%s,  DT_PROC_INTERFACE_PATH,
 + path_in_device_tree);
 +
 + stream = fopen(buf, rb);
 + 
 + if (stream == NULL)
 + {
 + printf(%s: Unable to open '%s'\n, __func__, buf);
 + exit(1);
 + }

Braces.

 + fread(num, sizeof(num), 1, stream);
 + fclose(stream);
 +
 + return num;
 +} 
 +
 +/* FUNCTIONS FOR LOADING  MANIPULATION OF DEVICE TREE IN GUEST */
 +
 +#ifdef CONFIG_LIBFDT
 +/* support functions */
 +static int get_offset_of_node(void *fdt, char *node_path)
 +{
 + int node_offset;
 + node_offset = fdt_path_offset(fdt, node_path);
 + if (node_offset  0) {
 + printf(Unable to find node in device tree '%s'\n, 
 + node_path);
 + exit(1);
 + }
 + return node_offset;
 +}
 +
 +/* public functions */
 +void *load_device_tree(char *filename_path, unsigned long load_addr)
 +{
 + int dt_file_size;
 + int dt_file_load_size;
 + int new_dt_size;int ret;

Does this look right to you?

...
 diff --git a/qemu/hw/ppc440_bamboo.c b/qemu/hw/ppc440_bamboo.c
 --- a/qemu/hw/ppc440_bamboo.c
 +++ b/qemu/hw/ppc440_bamboo.c
 @@ -4,15 +4,16 @@
   * Copyright 2007 IBM Corporation.
   * Authors: Jerone Young [EMAIL PROTECTED]
   *
 - * This work is licensed under the GNU GPL licence version 2 or later.
 + * This work is licensed under the GNU GPL license version 2 or later.
   *
   */
 
 +#include config.h
  #include ppc440.h
 +#include qemu-kvm.h
 +#include device_tree.h
 
 -#define KERNEL_LOAD_ADDR 0x40 /* uboot loader puts kernel at 4MB */
 -
 -#include qemu-kvm.h
 +#define BINARY_DEVICE_TREE_FILE bamboo.dtb
 
  /* PPC 440 refrence demo board

Could you fix this typo while you're at it?

 @@ -26,14 +27,22 @@ void bamboo_init(ram_addr_t ram_size, in
   const char *initrd_filename,
   const char *cpu_model)
  {
 + char buf[1024];

You previously said you had removed 'buf' and replaced it with dynamic
allocation, but I don't see that here.

   target_phys_addr_t ram_bases[2], ram_sizes[2];
   qemu_irq *pic;
   CPUState *env;
 - target_ulong ep;
 + target_ulong ep=0;
 + target_ulong la=0;
   int is_linux=1; /* Will assume 

Re: [kvm-devel] [kvm-ppc-devel] [PATCH 2 of 7] Add libfdt support to qemu

2008-03-18 Thread Hollis Blanchard
OK, if that's acceptable to the qemu folks, could you put that in the
patch description?

-- 
Hollis Blanchard
IBM Linux Technology Center

On Tue, 2008-03-18 at 16:22 -0500, Jerone Young wrote:
 So this is the code Anthony asked for for probing libfdt. The problem is
 that if you do ./configure params at kvm-userpace top directory for
 the first time or after a clean you do not have libfdt.a. When qemu
 configure is run this probe would allways fail. So to check we just
 check for the header. So we compile a very simple program that include
 libfdt.h as the test.
 
 All the XXX are if we ever do break libfdt out then we can do the proper
 probing for it (and the code for it is ready to be uncommented). 
 
 
 On Tue, 2008-03-18 at 16:16 -0500, Hollis Blanchard wrote:
  On Tue, 2008-03-18 at 15:06 -0500, Jerone Young wrote:
   +##
   +# libfdt probe
   +#
   +if test -z $device_tree_support -a \
   +   $cpu = powerpc; then 
   +  device_tree_support=no
   +  cat  $TMPC  EOF
   +#include libfdt.h
   +/* 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
  
  What is the problem here? Should you describe it in the patch
  description? Did you mean to fix this before committing?
  
 
 
 -
 This SF.net email is sponsored by: Microsoft
 Defy all challenges. Microsoft(R) Visual Studio 2008.
 http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
 ___
 kvm-ppc-devel mailing list
 [EMAIL PROTECTED]
 https://lists.sourceforge.net/lists/listinfo/kvm-ppc-devel


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [kvm-ppc-devel] [PATCH 5 of 7] Add dynamic device tree manipulation change uboot loader for PPC bamboo board model

2008-03-18 Thread Jerone Young
On Tue, 2008-03-18 at 16:25 -0500, Hollis Blanchard wrote:
 On Tue, 2008-03-18 at 15:06 -0500, Jerone Young wrote:
  # HG changeset patch
  # User Jerone Young [EMAIL PROTECTED]
  # Date 1205870472 18000
  # Branch merge
  # Node ID 3e87db599895937824b9bf3369eb67ea7f5a7595
  # Parent  ba2876c3e8916ba9c19b75c4464cbb8dc6858fbd
  Add dynamic device tree manipulation  change uboot loader for PPC bamboo 
  board model
  
  This patch adds code to dynamically manipulate the device tree when
  loaded into memory. This allows us to finally have the ability to
  manipulate the kernel command line  initrd from the qemu command
  line. This will also let us setup different settings for the board.
  
  This patch also now uses new uboot loader load_image() to load kernel
  image.
 
 Again, the load_uimage part (which you've misspelled here) should be a
 separate patch?
 
  Signed-off-by: Jerone Young [EMAIL PROTECTED]
  
  diff --git a/qemu/Makefile.target b/qemu/Makefile.target
  --- a/qemu/Makefile.target
  +++ b/qemu/Makefile.target
  @@ -617,7 +617,7 @@ OBJS+= unin_pci.o ppc_chrp.o
   OBJS+= unin_pci.o ppc_chrp.o
   # PowerPC 4xx boards
   OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc405_uc.o ppc405_boards.o
  -OBJS+= ppc440.o ppc440_bamboo.o
  +OBJS+= ppc440.o ppc440_bamboo.o device_tree.o
   endif
   ifeq ($(TARGET_BASE_ARCH), mips)
   OBJS+= mips_r4k.o mips_malta.o mips_pica61.o mips_mipssim.o
  diff --git a/qemu/hw/device_tree.c b/qemu/hw/device_tree.c
  new file mode 100644
  --- /dev/null
  +++ b/qemu/hw/device_tree.c
  @@ -0,0 +1,181 @@
  +/*
  + * Functions to help device tree manipulation using libfdt.
  + * It also provides functions to read entries from device tree proc
  + * interface.
  + *
  + * Copyright 2008 IBM Corporation.
  + * Authors: Jerone Young [EMAIL PROTECTED]
  + *
  + * This work is licensed under the GNU GPL license version 2 or later.
  + *
  + */
  +
  +#include stdio.h
  +#include sys/types.h
  +#include sys/stat.h
  +#include fcntl.h
  +#include unistd.h
  +#include stdlib.h
  +
  +#include config.h
  +#include ppc440.h
  +
  +#ifdef CONFIG_LIBFDT
  +   #include libfdt.h
  +#endif
 
 Again, don't indent this.
 
  +#define DT_PROC_INTERFACE_PATH /proc/device-tree
  +
  +/* FUNCTIONS FOR READING FROM DEVICE TREE OF HOST IN /PROC */
  +
  +/* This function reads device-tree property files that are of
  + * a single cell size
  + */
  +uint32_t read_proc_dt_prop_cell(char *path_in_device_tree)
  +{
  +   char *buf = NULL;
  +   int i;
  +   uint32_t num;
  +   FILE *stream;
  +
  +   i = snprintf(buf, 0, %s/%s, DT_PROC_INTERFACE_PATH,
  +   path_in_device_tree);
  +
  +   buf = (char *)malloc(i);
  +   if (buf == NULL)
  +   {
  +   printf(%s: Unable to malloc string buffer buf\n,
  +   __func__);
  +   exit(1);
  +   }
 
 Braces.

What is the deal. They are braces. They are done diffrenent through outt
the qemu code. This

 
  +   i = snprintf(buf, i+1, %s/%s,  DT_PROC_INTERFACE_PATH,
  +   path_in_device_tree);
  +
  +   stream = fopen(buf, rb);
  +   
  +   if (stream == NULL)
  +   {
  +   printf(%s: Unable to open '%s'\n, __func__, buf);
  +   exit(1);
  +   }
 
 Braces.
 
  +   fread(num, sizeof(num), 1, stream);
  +   fclose(stream);
  +
  +   return num;
  +} 
  +
  +/* FUNCTIONS FOR LOADING  MANIPULATION OF DEVICE TREE IN GUEST */
  +
  +#ifdef CONFIG_LIBFDT
  +/* support functions */
  +static int get_offset_of_node(void *fdt, char *node_path)
  +{
  +   int node_offset;
  +   node_offset = fdt_path_offset(fdt, node_path);
  +   if (node_offset  0) {
  +   printf(Unable to find node in device tree '%s'\n, 
  +   node_path);
  +   exit(1);
  +   }
  +   return node_offset;
  +}
  +
  +/* public functions */
  +void *load_device_tree(char *filename_path, unsigned long load_addr)
  +{
  +   int dt_file_size;
  +   int dt_file_load_size;
  +   int new_dt_size;int ret;
 
 Does this look right to you?
 
can clean that.


 ...
  diff --git a/qemu/hw/ppc440_bamboo.c b/qemu/hw/ppc440_bamboo.c
  --- a/qemu/hw/ppc440_bamboo.c
  +++ b/qemu/hw/ppc440_bamboo.c
  @@ -4,15 +4,16 @@
* Copyright 2007 IBM Corporation.
* Authors: Jerone Young [EMAIL PROTECTED]
*
  - * This work is licensed under the GNU GPL licence version 2 or later.
  + * This work is licensed under the GNU GPL license version 2 or later.
*
*/
  
  +#include config.h
   #include ppc440.h
  +#include qemu-kvm.h
  +#include device_tree.h
  
  -#define KERNEL_LOAD_ADDR 0x40 /* uboot loader puts kernel at 4MB */
  -
  -#include qemu-kvm.h
  +#define BINARY_DEVICE_TREE_FILE bamboo.dtb
  
   /* PPC 440 refrence demo board
 
 Could you fix this typo while you're at it?
 
  @@ -26,14 +27,22 @@ void bamboo_init(ram_addr_t ram_size, in
  const char *initrd_filename,
  const char *cpu_model)
   {
  +   char buf[1024];
 
 You previously said you had removed 'buf' and replaced it 

Re: [kvm-devel] [kvm-ppc-devel] [PATCH 3 of 7] Create new load_uimage() gunzip support to uboot loader in Qemu

2008-03-18 Thread Jerone Young
On Tue, 2008-03-18 at 16:14 -0500, Hollis Blanchard wrote:
 On Tue, 2008-03-18 at 15:06 -0500, Jerone Young wrote:
  +tmp_loaded_image_size = hdr-ih_size;
  +
  +if (hdr-ih_comp == IH_COMP_GZIP) {
  +   uncompressed_data = qemu_malloc(MAX_KERNEL_SIZE);
  +   ret = gunzip(uncompressed_data, MAX_KERNEL_SIZE,
  +(unsigned char *) data, 
  +tmp_loaded_image_size);
  +
  +   if (ret  0) {
  +fprintf(stderr, Unable to decompress gziped image!
 \n);
  +goto fail;
  +}
  +
  +qemu_free(data);
  +cpu_physical_memory_write_rom(hdr-ih_load,
 uncompressed_data,
  +  tmp_loaded_image_size);
  +
  +}
  +else {
  +cpu_physical_memory_write_rom(hdr-ih_load, data, 
  +  tmp_loaded_image_size);
  +}
  +
  +if (loaded_image_size != NULL)
  +*loaded_image_size = tmp_loaded_image_size;
  +   
  +if ( load_address != NULL)
  +   *load_address = hdr-ih_load;
 
 Your whitespace in here is all over the place. Please fix.

Actually this matches the style of this entire file. I see the one white
space. I see also I used a tab one place.

The problem is there is no set style in qemu. So I followed the style of
the already created file.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [kvm-ppc-devel] [PATCH 2 of 7] Add libfdt support to qemu

2008-03-18 Thread Jerone Young
Well this can not go upstream. If it were to go into upstream qemu we
would need for them to take in libfdt (which they most likely will have
big issue with). Also we wouldn't do the probing if they did take it in.
But for the forseable future we are not getting stuff into qemu yet. If
we do then will cross this road and remove this completely. Or if libfdt
ever is packaged separately. For now this is what we have to do for
probing

On Tue, 2008-03-18 at 16:28 -0500, Hollis Blanchard wrote:
 OK, if that's acceptable to the qemu folks, could you put that in the
 patch description?
 


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [kvm-ppc-devel] [PATCH 5 of 7] Add dynamic device tree manipulation change uboot loader for PPC bamboo board model

2008-03-18 Thread Hollis Blanchard
I can only assume that you will actually make the corrections that you
didn't respond to in this mail.

On Tue, 2008-03-18 at 16:35 -0500, Jerone Young wrote:
 On Tue, 2008-03-18 at 16:25 -0500, Hollis Blanchard wrote:
  
   +#define DT_PROC_INTERFACE_PATH /proc/device-tree
   +
   +/* FUNCTIONS FOR READING FROM DEVICE TREE OF HOST IN /PROC */
   +
   +/* This function reads device-tree property files that are of
   + * a single cell size
   + */
   +uint32_t read_proc_dt_prop_cell(char *path_in_device_tree)
   +{
   + char *buf = NULL;
   + int i;
   + uint32_t num;
   + FILE *stream;
   +
   + i = snprintf(buf, 0, %s/%s, DT_PROC_INTERFACE_PATH,
   + path_in_device_tree);
   +
   + buf = (char *)malloc(i);
   + if (buf == NULL)
   + {
   + printf(%s: Unable to malloc string buffer buf\n,
   + __func__);
   + exit(1);
   + }
  
  Braces.
 
 What is the deal. They are braces. They are done diffrenent through outt
 the qemu code. This

I don't enjoy correcting whitespace, and in fact I hate it when that's
all comments are about. If it weren't so egregious in this patch series,
I probably would have let it slide.

In general I don't really care as long as it's *consistent*. The tabs
you use in this code clashes with the rest of qemu, and that makes it
difficult to use the right editor settings. Despite that, I still didn't
say anything, because at least it's consistent.

In general, don't just make your code work; make it pretty too.

   @@ -26,14 +27,22 @@ void bamboo_init(ram_addr_t ram_size, in
 const char *initrd_filename,
 const char *cpu_model)
{
   + char buf[1024];
  
  You previously said you had removed 'buf' and replaced it with dynamic
  allocation, but I don't see that here.
 
 Removing of buf discussed was from hw/device_tree.c  not this file.

So you can fix it here too, right?

-- 
Hollis Blanchard
IBM Linux Technology Center


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [kvm-ppc-devel] [PATCH 3 of 7] Create new load_uimage() gunzip support to uboot loader in Qemu

2008-03-18 Thread Hollis Blanchard
On Tue, 2008-03-18 at 16:46 -0500, Jerone Young wrote:
 On Tue, 2008-03-18 at 16:14 -0500, Hollis Blanchard wrote:
  On Tue, 2008-03-18 at 15:06 -0500, Jerone Young wrote:
   +tmp_loaded_image_size = hdr-ih_size;
   +
   +if (hdr-ih_comp == IH_COMP_GZIP) {
   +   uncompressed_data = qemu_malloc(MAX_KERNEL_SIZE);
   +   ret = gunzip(uncompressed_data, MAX_KERNEL_SIZE,
   +(unsigned char *) data, 
   +tmp_loaded_image_size);
   +
   +   if (ret  0) {
   +fprintf(stderr, Unable to decompress gziped image!
  \n);
   +goto fail;
   +}
   +
   +qemu_free(data);
   +cpu_physical_memory_write_rom(hdr-ih_load,
  uncompressed_data,
   +  tmp_loaded_image_size);
   +
   +}
   +else {
   +cpu_physical_memory_write_rom(hdr-ih_load, data, 
   +  tmp_loaded_image_size);
   +}
   +
   +if (loaded_image_size != NULL)
   +*loaded_image_size = tmp_loaded_image_size;
   +   
   +if ( load_address != NULL)
   +   *load_address = hdr-ih_load;
  
  Your whitespace in here is all over the place. Please fix.
 
 Actually this matches the style of this entire file. I see the one white
 space. I see also I used a tab one place.

You switch from 8-space indentation in gunzip() to 4-space in
load_uimage(), and then things go *really* screwy around Unable to
decompress gziped image (which you spelled wrong btw). It looks like
you alternate between 4- and 3-space indentation after that. That does
NOT match the style of the rest of the file.

As for the if (  syntax, there are only a handful of people doing it
that way in the whole qemu tree, and more importantly, none of them are
in our code.

-- 
Hollis Blanchard
IBM Linux Technology Center


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] windows acpi time drift

2008-03-18 Thread Dor Laor
After some research of time drift while using window windows acpi hal I
discovered it uses the ... rtc timer as a source clock. 
Not the apic, acpi nor the pit. The acpi timer is not used by the time
keeping clock, the apic  pit timer irqs are masked.

In order to fix the time drift we need to fix the rtc emulation.
The problem is that like the pit and the apic timers in userspace, the
rtc also has inaccurate timer, thus leading to irq coalescing before
getting acknowledged by the guest interrupt controller.

We have two options:
1. Bring another device to the kernel
- It's a simple device
- It will make the rtc clock more accurate (hrtimer)
- Easy time drift fix like apic/pic
- It has very minor performance improvment of canceling the 
  need to go to userspace after vmexit, thus not syncing vmcs.
  But it's only 15msec * 2 rate.
but
- both the pit  rtc are somehow code duplications from 
  userspace. Both need more accurate timer + interface to 
  detect irq acks by the pic/apic.
2. The other option is to have an accurate userspace timer (userspace
hrtimer exist = 2.6.24) and to add interface to pic/apic to queue
pending irqs by the pit/rtc.
The pending queue can be a simple atomic counter per irq.
Note that we also need support for older host kernels.

Before implementing yet another in-kernel device I like to hear
opinions. 
Regards,
Dor.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] windows acpi time drift

2008-03-18 Thread Dor Laor

On Wed, 2008-03-19 at 01:09 +0200, Dor Laor wrote:
 After some research of time drift while using window windows acpi hal I
 discovered it uses the ... rtc timer as a source clock. 
 Not the apic, acpi nor the pit. The acpi timer is not used by the time
 keeping clock, the apic  pit timer irqs are masked.
 
 In order to fix the time drift we need to fix the rtc emulation.
 The problem is that like the pit and the apic timers in userspace, the
 rtc also has inaccurate timer, thus leading to irq coalescing before
 getting acknowledged by the guest interrupt controller.
 
 We have two options:
 1. Bring another device to the kernel
   - It's a simple device
   - It will make the rtc clock more accurate (hrtimer)
   - Easy time drift fix like apic/pic
   - It has very minor performance improvment of canceling the 
   need to go to userspace after vmexit, thus not syncing vmcs.
   But it's only 15msec * 2 rate.

Hmm, when doing multimedia, windows increases the frequency of rtc from
64HZ to 1024HZ, thus in-kernel device will save 2048 user-space exits.
This might be a real improvement - small but measurable.

   but
   - both the pit  rtc are somehow code duplications from 
   userspace. Both need more accurate timer + interface to 
   detect irq acks by the pic/apic.
 2. The other option is to have an accurate userspace timer (userspace
 hrtimer exist = 2.6.24) and to add interface to pic/apic to queue
 pending irqs by the pit/rtc.
 The pending queue can be a simple atomic counter per irq.
 Note that we also need support for older host kernels.
 
 Before implementing yet another in-kernel device I like to hear
 opinions. 
 Regards,
 Dor.


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] windows acpi time drift

2008-03-18 Thread Anthony Liguori
Dor Laor wrote:
 After some research of time drift while using window windows acpi hal I
 discovered it uses the ... rtc timer as a source clock. 
 Not the apic, acpi nor the pit. The acpi timer is not used by the time
 keeping clock, the apic  pit timer irqs are masked.

 In order to fix the time drift we need to fix the rtc emulation.
 The problem is that like the pit and the apic timers in userspace, the
 rtc also has inaccurate timer, thus leading to irq coalescing before
 getting acknowledged by the guest interrupt controller.

 We have two options:
 1. Bring another device to the kernel
   - It's a simple device
   - It will make the rtc clock more accurate (hrtimer)
   - Easy time drift fix like apic/pic
   - It has very minor performance improvment of canceling the 
   need to go to userspace after vmexit, thus not syncing vmcs.
   But it's only 15msec * 2 rate.
   but
   - both the pit  rtc are somehow code duplications from 
   userspace. Both need more accurate timer + interface to 
   detect irq acks by the pic/apic.
 2. The other option is to have an accurate userspace timer (userspace
 hrtimer exist = 2.6.24) and to add interface to pic/apic to queue
 pending irqs by the pit/rtc.
 The pending queue can be a simple atomic counter per irq.
 Note that we also need support for older host kernels.
   

Why don't we just introduce a vm-ioctl interface for a one-shot 
programmable timer?  It could be programmed in userspace, and when it 
fires, we can drop down to userspace with a special exit code.  We could 
then introduce an interrupt queuing mechanism in the kernel specifically 
for timer interrupts as you mention.

That lets us remove the in-kernel PIT, and makes all of our timer 
mechanisms more accurate.  If userspace has a better time mechanism, 
like hrtimer, then it can just use that.  If hrtimer is good enough in 
userspace, then we can contain these new ioctls to the compat-code only.

Regards,

Anthony Liguori



 Before implementing yet another in-kernel device I like to hear
 opinions. 
 Regards,
 Dor.


 -
 This SF.net email is sponsored by: Microsoft
 Defy all challenges. Microsoft(R) Visual Studio 2008.
 http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
 ___
 kvm-devel mailing list
 kvm-devel@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/kvm-devel
   


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] windows acpi time drift

2008-03-18 Thread Anthony Liguori
Dor Laor wrote:
 On Wed, 2008-03-19 at 01:09 +0200, Dor Laor wrote:
   
 After some research of time drift while using window windows acpi hal I
 discovered it uses the ... rtc timer as a source clock. 
 Not the apic, acpi nor the pit. The acpi timer is not used by the time
 keeping clock, the apic  pit timer irqs are masked.

 In order to fix the time drift we need to fix the rtc emulation.
 The problem is that like the pit and the apic timers in userspace, the
 rtc also has inaccurate timer, thus leading to irq coalescing before
 getting acknowledged by the guest interrupt controller.

 We have two options:
 1. Bring another device to the kernel
  - It's a simple device
  - It will make the rtc clock more accurate (hrtimer)
  - Easy time drift fix like apic/pic
  - It has very minor performance improvment of canceling the 
   need to go to userspace after vmexit, thus not syncing vmcs.
   But it's only 15msec * 2 rate.
 

 Hmm, when doing multimedia, windows increases the frequency of rtc from
 64HZ to 1024HZ, thus in-kernel device will save 2048 user-space exits.
 This might be a real improvement - small but measurable.
   

Well, let's calculate it.  I measure a lightweight exit at 3590 cycles 
and a heavyweight exit at 8548.  If we look at the cost of dropping to 
userspace an extra 2048 times, since I have a 2.2 GHz chip, we're 
looking at an additional .0046 seconds to transition to userspace.  This 
is on top of the base .0033 seconds that it takes to take these exits in 
the first place.  This are dummy exits though so when you add in the 
cost of processing this (which I think is roughly equal whether in 
kernelspace or userspace) I think those values will quickly be overwhelmed.

So, at the end of the day, you're not getting even a 1% performance 
boost and you're adding a lot of complexity to the kernel.  This 
strongly suggests to me that we should be doing this in userspace.

Regards,

Anthony Liguori


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] windows acpi time drift

2008-03-18 Thread Anthony Liguori
Dor Laor wrote:
 2. The other option is to have an accurate userspace timer (userspace
 hrtimer exist = 2.6.24) and to add interface to pic/apic to queue
 pending irqs by the pit/rtc.
 The pending queue can be a simple atomic counter per irq.
   

So this may explain why I see no appreciable benefit from using the 
in-kernel PIT verses using the userspace PIT and -tdf.  I'm using a 
2.6.24 host kernel and QEMU by default will use the unix time source 
which will use setitimer.  IIUC, itimer will use hrtimers.

So if there isn't an appreciate CPU utilization improvement and there 
isn't an increased accuracy, there won't be an improvement.

Do ya'll see an improvement playing multimedia on a 2.6.24 host with the 
in-kernel PIT?

Regards,

Anthony Liguori

 Note that we also need support for older host kernels.

 Before implementing yet another in-kernel device I like to hear
 opinions. 
 Regards,
 Dor.


 -
 This SF.net email is sponsored by: Microsoft
 Defy all challenges. Microsoft(R) Visual Studio 2008.
 http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
 ___
 kvm-devel mailing list
 kvm-devel@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/kvm-devel
   


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] tools to dump guest memory and generate core file

2008-03-18 Thread david ahern
That's what I was looking for.

thanks,
david


Uri Lublin wrote:
 Avi Kivity wrote:
 david ahern wrote:
  
 Attaching gdb to qemu you work with addresses as seen by the qemu
 process; the
 idea is to work with addresses as seen inside the guest.


 Now, if you attach gdb to the qemu process,

 gdb /usr/local/bin/qemu-system-x86_64 2346
   
 I meant connecting to the gdb stub in qemu that represents the guest:

   (gdb) target remote localhost:1234

 Of course, it means starting qemu with the gdb stub enabled.  We might
 add a monitor command to start it after the fact.
   
 gdbserver is the monitor command you're looking for:
 (qemu) help gdbserver
 gdbserver [port] -- start gdbserver session (default port=1234)
 
 

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


[kvm-devel] Порядок определения доходов и расходов при упрощенке

2008-03-18 Thread Ким
Упpощeнная систeма налoгooблoжeния

Oднoднeвный сeминаp пpoйдёт 21 маpта 2008г. (Мoсква)

В пpoгpамма: 

1. Сущнoсть УСН, oсвoбoждeниe oт уплаты pяда налoгoв. 
Пopядoк и услoвия начала и пpeкpащeния пpимeнeния упpoщeннoй систeмы 
налoгooблoжeния с учeтoм нoвшeств 2008 г. 
Тpeбoвания к pазмepу дoхoдoв, стoимoсти oснoвных сpeдств, числeннoсти 
pабoтникoв, сoставу учpeдитeлeй, видам дeятeльнoсти и стpуктуpe opганизации: 
чтo скpытo за фopмулиpoвками НК pФ. 
pиски для упpoщeнцeв: в чeм налoгoвыe opганы усматpивают налoгoвыe схeмы.

2. oбъeкты налoгooблoжeния: чeм pукoвoдствoваться пpи выбope. 
Смeна oбъeкта - pазличныe пoдхoды. 
oсoбыe oгpаничeния в выбope oбъeкта для oтдeльных видoв дeятeльнoсти

3. opганизация бухгалтepскoгo и налoгoвoгo учeта пpи УСН. 
Книга дoхoдoв и pасхoдoв - oсoбeннoсти вeдeния и пpeдставлeния налoгoвoму 
opгану. 
Пpoблeма выставлeния счeтoв-фактуp

4. Пopядoк oпpeдeлeния дoхoдoв и pасхoдoв (с учeтoм нoвшeств 2008 г.):

5. Исчислeниe и уплата налoга. Минимальный налoг. Налoгoвая дeклаpация

6. oсoбeннoсти исчислeния налoгoвoй базы пpи пepeхoдe на упpoщeнную систeму 
налoгooблoжeния и пpи пepeхoдe с упpoщeннoй систeмы налoгooблoжeния на иныe 
peжимы налoгooблoжeния с учeтoм нoвшeств 2008 г.

Пpoдoлжитeльнoсть oбучeния: с 10 дo 17 часoв (с пepepывoм на oбeд и кoфe-паузу).
Мeстo oбучeния: г. Мoсква, 5 мин. пeшкoм oт м. Акадeмичeская.
Стoимoсть oбучeния: 4900 pуб. (с НДС). 
(В стoимoсть вхoдит: pаздатoчный матepиал, кoфe-пауза, oбeд в peстopанe).

Пpи oтсутствии вoзмoжнoсти пoсeтить сeминаp, мы пpeдлагаeм пpиoбpeсти eгo 
видeoвepсию на DVD/CD дисках или видeoкассeтах (пpилагаeтся автopский 
pаздатoчный матepиал). 
Цeна видeoкуpса - 3500 pублeй, с учeтoм НДС.

Пoлучить дoпoлнитeльную инфopмацию и заpeгистpиpoваться мoжнo:
пo т/ф: ( 4 9 5 ) 5 4 3 - 8 8 - 4 6 





-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] convert init_rmode_tss to slots_lock

2008-03-18 Thread Izik Eidus
Marcelo Tosatti wrote:
 init_rmode_tss was forgotten during the conversion from mmap_sem to
 slots_lock.
   

yup, good catch.

 There are several sites reading the slots data without taking   
 slots_lock, including tdp_page_fault. I'll be sending a patch 
 to move acquision to vcpu_run as suggested by Avi later today.

 INFO: task qemu-system-x86:3748 blocked for more than 120 seconds.
 Call Trace:
  [8053d100] __down_read+0x86/0x9e
  [8053fb43] do_page_fault+0x346/0x78e
  [8053d235] trace_hardirqs_on_thunk+0x35/0x3a
  [8053dcad] error_exit+0x0/0xa9
  [8035a7a7] copy_user_generic_string+0x17/0x40
  [88099a8a] :kvm:kvm_write_guest_page+0x3e/0x5f
  [880b661a] :kvm_intel:init_rmode_tss+0xa7/0xf9
  [880b7d7e] :kvm_intel:vmx_vcpu_reset+0x10/0x38a
  [8809b9a5] :kvm:kvm_arch_vcpu_setup+0x20/0x53
  [8809a1e4] :kvm:kvm_vm_ioctl+0xad/0x1cf
  [80249dea] __lock_acquire+0x4f7/0xc28
  [8028fad9] vfs_ioctl+0x21/0x6b
  [8028fd75] do_vfs_ioctl+0x252/0x26b
  [8028fdca] sys_ioctl+0x3c/0x5e
  [8020b01b] system_call_after_swapgs+0x7b/0x80

 Signed-off-by: Marcelo Tosatti [EMAIL PROTECTED]

 Index: kvm/arch/x86/kvm/vmx.c
 ===
 --- kvm.orig/arch/x86/kvm/vmx.c
 +++ kvm/arch/x86/kvm/vmx.c
 @@ -1480,7 +1480,7 @@ static int init_rmode_tss(struct kvm *kv
   int ret = 0;
   int r;
  
 - down_read(current-mm-mmap_sem);
 + down_read(kvm-slots_lock);
   r = kvm_clear_guest_page(kvm, fn, 0, PAGE_SIZE);
   if (r  0)
   goto out;
 @@ -1503,7 +1503,7 @@ static int init_rmode_tss(struct kvm *kv
  
   ret = 1;
  out:
 - up_read(current-mm-mmap_sem);
 + up_read(kvm-slots_lock);
   return ret;
  }
  

   


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel