qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] qemu-system-sparc uses all host cpu while target system is idle
@ 2006-09-20  9:32 Aurelien Jarno
  2006-09-20 12:27 ` WaxDragon
  2006-09-20 13:45 ` Paul Brook
  0 siblings, 2 replies; 5+ messages in thread
From: Aurelien Jarno @ 2006-09-20  9:32 UTC (permalink / raw)
  To: qemu-devel

Hi all,

I have successully installed a Debian Etch for Sparc under qemu (CVS 
version), and successfully updated it to unstable. Everything seems to 
work correctly, the performances are ok, but I have remarked than 
qemu-system-sparc is using all the CPU on the host system, while the 
sparc target system is idle. Maybe the problem is in the sparc kernel? I 
am using the one from unstable, ie a 2.6.17 kernel.

Any idea?

Thanks,
Aurelien

-- 
   .''`.  Aurelien Jarno	            | GPG: 1024D/F1BCDB73
  : :' :  Debian developer           | Electrical Engineer
  `. `'   aurel32@debian.org         | aurelien@aurel32.net
    `-    people.debian.org/~aurel32 | www.aurel32.net

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] qemu-system-sparc uses all host cpu while target system is idle
  2006-09-20  9:32 [Qemu-devel] qemu-system-sparc uses all host cpu while target system is idle Aurelien Jarno
@ 2006-09-20 12:27 ` WaxDragon
  2006-09-20 13:45 ` Paul Brook
  1 sibling, 0 replies; 5+ messages in thread
From: WaxDragon @ 2006-09-20 12:27 UTC (permalink / raw)
  To: qemu-devel

I've seen this same behaviour with 2.4.x and 2.6.x kernels.

On 9/20/06, Aurelien Jarno <aurelien@aurel32.net> wrote:
> Hi all,
>
> I have successully installed a Debian Etch for Sparc under qemu (CVS
> version), and successfully updated it to unstable. Everything seems to
> work correctly, the performances are ok, but I have remarked than
> qemu-system-sparc is using all the CPU on the host system, while the
> sparc target system is idle. Maybe the problem is in the sparc kernel? I
> am using the one from unstable, ie a 2.6.17 kernel.
>
> Any idea?
>
> Thanks,
> Aurelien
>
> --
>    .''`.  Aurelien Jarno                    | GPG: 1024D/F1BCDB73
>   : :' :  Debian developer           | Electrical Engineer
>   `. `'   aurel32@debian.org         | aurelien@aurel32.net
>     `-    people.debian.org/~aurel32 | www.aurel32.net
>
>
> _______________________________________________
> Qemu-devel mailing list
> Qemu-devel@nongnu.org
> http://lists.nongnu.org/mailman/listinfo/qemu-devel
>


-- 
22:38 <@WaxDragon> false ^ true
22:39 < false> :(
22:39 < false> dont you think you can XOR me and get away with it! I
always return!

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] qemu-system-sparc uses all host cpu while target system is idle
  2006-09-20  9:32 [Qemu-devel] qemu-system-sparc uses all host cpu while target system is idle Aurelien Jarno
  2006-09-20 12:27 ` WaxDragon
@ 2006-09-20 13:45 ` Paul Brook
  2006-09-20 15:48   ` [Qemu-devel] qemu-system-sparc uses all host cpu while targetsystem " Blue Swirl
  1 sibling, 1 reply; 5+ messages in thread
From: Paul Brook @ 2006-09-20 13:45 UTC (permalink / raw)
  To: qemu-devel

On Wednesday 20 September 2006 10:32, Aurelien Jarno wrote:
> Hi all,
>
> I have successully installed a Debian Etch for Sparc under qemu (CVS
> version), and successfully updated it to unstable. Everything seems to
> work correctly, the performances are ok, but I have remarked than
> qemu-system-sparc is using all the CPU on the host system, while the
> sparc target system is idle. Maybe the problem is in the sparc kernel? I
> am using the one from unstable, ie a 2.6.17 kernel.

CPU suspend is not implemented for sparc guests.
Unlike most other targets, suspending the CPU is controlled by the system 
chipset, not by an instruction on the CPU. See slavio_misc.c

Paul

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] qemu-system-sparc uses all host cpu while targetsystem is idle
  2006-09-20 13:45 ` Paul Brook
@ 2006-09-20 15:48   ` Blue Swirl
  2006-09-20 18:44     ` Aurelien Jarno
  0 siblings, 1 reply; 5+ messages in thread
From: Blue Swirl @ 2006-09-20 15:48 UTC (permalink / raw)
  To: qemu-devel

>CPU suspend is not implemented for sparc guests.
>Unlike most other targets, suspending the CPU is controlled by the system
>chipset, not by an instruction on the CPU. See slavio_misc.c

Suspending is disabled, because it crashes qemu. It can be tested by 
tweaking slavio_misc.c and renaming the device in OpenBIOS from 
xxxpower-management to power-management. I can't see why it should crash, 
the implementation is very straightforward. Or maybe halting the CPU should 
be delayed until the TB is finished executing and halt only from main loop?

_________________________________________________________________
Don't just search. Find. Check out the new MSN Search! 
http://search.msn.click-url.com/go/onm00200636ave/direct/01/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] qemu-system-sparc uses all host cpu while targetsystem is idle
  2006-09-20 15:48   ` [Qemu-devel] qemu-system-sparc uses all host cpu while targetsystem " Blue Swirl
@ 2006-09-20 18:44     ` Aurelien Jarno
  0 siblings, 0 replies; 5+ messages in thread
From: Aurelien Jarno @ 2006-09-20 18:44 UTC (permalink / raw)
  To: qemu-devel

On Wed, Sep 20, 2006 at 05:48:48PM +0200, Blue Swirl wrote:
> >CPU suspend is not implemented for sparc guests.
> >Unlike most other targets, suspending the CPU is controlled by the system
> >chipset, not by an instruction on the CPU. See slavio_misc.c
> 
> Suspending is disabled, because it crashes qemu. It can be tested by 
> tweaking slavio_misc.c and renaming the device in OpenBIOS from 
> xxxpower-management to power-management. I can't see why it should crash, 
> the implementation is very straightforward. Or maybe halting the CPU should 
> be delayed until the TB is finished executing and halt only from main loop?
> 

Please find below a patch that "works". It is probably wrong as I wrote it
by copying code from other architectures and trying until it works. Well
I am however convinced of two things:
 - "return EXCP_HALTED;" causes the crash. By removing this line qemu
   doesn't crash anymore, but the patch does not work as expected
   (freeze of the target).
 - The interrupt should be cleared, if not the target freeze.

Now the host CPU is not used at 100% when the Sparc target is idle. I am
using it for about one our with a Debian unstable, and I am writing this
mail from this emulated system.

Ah yes, you aslo need to the trivial patch to openbios.

Bye,
Aurelien


Index: hw/slavio_misc.c
===================================================================
RCS file: /sources/qemu/qemu/hw/slavio_misc.c,v
retrieving revision 1.3
diff -u -r1.3 slavio_misc.c
--- hw/slavio_misc.c	5 Dec 2005 20:31:52 -0000	1.3
+++ hw/slavio_misc.c	20 Sep 2006 18:16:29 -0000
@@ -123,7 +123,7 @@
 	break;
     case 0xa000000:
 	MISC_DPRINTF("Write power management %2.2x\n", val & 0xff);
-#if 0
+#if 1
         // XXX almost works
         cpu_interrupt(cpu_single_env, CPU_INTERRUPT_HALT);
 #endif
Index: cpu-exec.c
===================================================================
RCS file: /sources/qemu/qemu/cpu-exec.c,v
retrieving revision 1.84
diff -u -r1.84 cpu-exec.c
--- cpu-exec.c	29 Jul 2006 19:09:31 -0000	1.84
+++ cpu-exec.c	20 Sep 2006 18:16:30 -0000
@@ -548,8 +548,10 @@
 			//do_interrupt(0, 0, 0, 0, 0);
 			env->interrupt_request &= ~CPU_INTERRUPT_TIMER;
 		    } else if (interrupt_request & CPU_INTERRUPT_HALT) {
-                        env1->halted = 1;
-                        return EXCP_HALTED;
+			env->interrupt_request &= ~CPU_INTERRUPT_HALT;
+			env->halted = 1;
+			env->exception_index = EXCP_HLT;
+			cpu_loop_exit();
                     }
 #elif defined(TARGET_ARM)
                     if (interrupt_request & CPU_INTERRUPT_FIQ



-- 
  .''`.  Aurelien Jarno	            | GPG: 1024D/F1BCDB73
 : :' :  Debian developer           | Electrical Engineer
 `. `'   aurel32@debian.org         | aurelien@aurel32.net
   `-    people.debian.org/~aurel32 | www.aurel32.net

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-09-20 18:46 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-20  9:32 [Qemu-devel] qemu-system-sparc uses all host cpu while target system is idle Aurelien Jarno
2006-09-20 12:27 ` WaxDragon
2006-09-20 13:45 ` Paul Brook
2006-09-20 15:48   ` [Qemu-devel] qemu-system-sparc uses all host cpu while targetsystem " Blue Swirl
2006-09-20 18:44     ` Aurelien Jarno

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).