From: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
To: Programmingkid <programmingkidx@gmail.com>,
"list@suse.de:PowerPC list:PowerPC" <qemu-ppc@nongnu.org>,
"Alex Bennée" <alex.bennee@linaro.org>,
"David Gibson" <david@gibson.dropbear.id.au>,
rth@twiddle.net, "qemu-devel qemu-devel" <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH RFC 0/4] Enable MTTCG on PowerPC
Date: Sat, 03 Sep 2016 21:59:16 +0530 [thread overview]
Message-ID: <87a8fp3q1v.fsf@abhimanyu.i-did-not-set--mail-host-address--so-tickle-me> (raw)
In-Reply-To: <7D2DD011-6985-47EF-9950-8763102115BA@gmail.com>
Programmingkid <programmingkidx@gmail.com> writes:
>> On 09/02/2016 08:32 AM, Nikunj A Dadhania wrote:
>>> The series is a first attempt at enabling Multi-Threaded TCG on PowerPC.
>>> Changes that were needed to enable PowerPC are pretty simple;
>>>
>>> Patch 01: Take a iothread lock during hcall, as hcall can generate io requests
>>> 02: For TCG, we were harcoding smt as 1, this gets rid of the limitation
>>> 03: Use atomic_cmpxchg in store conditional
>>> 04: With more threads, flush the entry from each cpu.
>>> This can be optimized further.
>>>
>>> The patches are based on the Alex Bennee's base enabling patches for
>>> MTTCG[1] and Emilios's cmpxchg atomics. The consolidated tree of the
>>> above patches is here:
>>>
>>> https://github.com/stsquad/qemu/tree/mttcg/base-patches-v4-with-cmpxchg-atomics-v2
>>>
>>> Apart from the above, PPC patches are based out of ppc-for-2.8 and
>>> load/store consolidation patches [2]
>>>
>>> Series with all dependent patches available here:
>>> https://github.com/nikunjad/qemu/tree/ppc_mttcg_v1
>>>
>>> Testing:
>>> ========
>>>
>>> -smp 4,cores=1,threads=4 -accel tcg,thread=multi
>>>
>>> TODO
>>> ====
>>> Implement msgsndp instructions(door-bell), newer kernels enable it
>>> depending on the PVR. I have been using following workaround to boot.
>>> https://github.com/nikunjad/qemu/commit/2c10052c5f93418a6b920e6ba3ce1813fcf50bc4
>>
>> You could also introduce a Power8 DD1 in qemu. From the kernel cputable :
>>
>> { /* Power8 DD1: Does not support doorbell IPIs */
>> .pvr_mask = 0xffffff00,
>> .pvr_value = 0x004d0100,
>> .cpu_name = "POWER8 (raw)",
>> .cpu_features = CPU_FTRS_POWER8_DD1,
>> ...
>>
>> Cheers,
>> C.
>
> What I did:
>
> git clone https://github.com/nikunjad/qemu/tree/ppc_mttcg_v1
>
> git checkout ppc_mttcg_v1
>
> ./configure --target-list=ppc-softmmu,i386-softmmu --cxx=gcc-4.9 --cc=gcc-4.9 --objcc=gcc-4.9 --disable-gtk --disable-sdl && make
>
> After these steps I tried to test Windows XP and Windows 2000 using this command line:
> ./i386-softmmu/qemu-system-i386 -name 'Windows XP' -hda 'Windows XP Hard Drive.img' -boot c -smp 4,cores=1,threads=4 -accel tcg,thread=multi
I haven't enabled x86. Not sure if that is supported in Alex Bennee's
tree either.
>
> This causes QEMU to crash. The cause is an abort trap. This is what I captured:
>
> Thread 7 Crashed:
> 0 libSystem.B.dylib 0x00007fff825559ce __semwait_signal_nocancel + 10
> 1 libSystem.B.dylib 0x00007fff825558d0 nanosleep$NOCANCEL + 129
> 2 libSystem.B.dylib 0x00007fff825b23ce usleep$NOCANCEL + 57
> 3 libSystem.B.dylib 0x00007fff825d1a00 abort + 93
> 4 qemu-system-i386 0x0000000100036c65 qemu_tcg_cpu_thread_fn + 325 (cpus.c:1384)
> 5 libSystem.B.dylib 0x00007fff8251bfd6 _pthread_start + 331
> 6 libSystem.B.dylib 0x00007fff8251be89 thread_start + 13
>
> Trying Windows 2000 also causes the same crash.
>
> I then tried Mac OS 10.4. The command line was:
> ./ppc-softmmu/qemu-system-ppc -smp 4,cores=1,threads=4 -M mac99 -m 512 -hda 'Mac OS 10.4.0.qcow2' -boot c -prom-env boot-args=-v -localtime
I have tested with ppc64-softmmu. Haven't tried ppc-softmmu yet.
>
> The result was this error message:
> qemu-system-ppc: Number of SMP CPUs requested (4) exceeds max CPUs
> supported by machine 'mac99' (1)
This seems to be similar error which I got when enabling ppc64. 02/04 of
my patch has got over the limitation for ppc64. I guess some patch seems
to be missing for ppc.
I thought that something like this should work:
========================================================================
diff --git a/hw/ppc/mac.h b/hw/ppc/mac.h
index 20cbddb..e6522e5 100644
--- a/hw/ppc/mac.h
+++ b/hw/ppc/mac.h
@@ -32,7 +32,7 @@
#include "hw/input/adb.h"
/* SMP is not enabled, for now */
-#define MAX_CPUS 1
+#define MAX_CPUS 4
#define BIOS_SIZE (1024 * 1024)
#define NVRAM_SIZE 0x2000
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 7d25106..13e7d1c 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -515,6 +515,7 @@ static void core99_machine_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);
+ fprintf(stderr, "%s: init %d\n", __func__, MAX_CPUS);
mc->desc = "Mac99 based PowerMAC";
mc->init = ppc_core99_init;
mc->max_cpus = MAX_CPUS;
========================================================================
But I do not see this print at all. core99_machine_class_init() doesnt
get called ? Am I missing something?
Regards
Nikunj
next prev parent reply other threads:[~2016-09-03 16:29 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-02 14:27 [Qemu-devel] [Qemu-ppc] [PATCH RFC 0/4] Enable MTTCG on PowerPC Programmingkid
2016-09-03 16:29 ` Nikunj A Dadhania [this message]
2016-09-03 17:11 ` Nikunj A Dadhania
2016-09-03 17:13 ` Programmingkid
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87a8fp3q1v.fsf@abhimanyu.i-did-not-set--mail-host-address--so-tickle-me \
--to=nikunj@linux.vnet.ibm.com \
--cc=alex.bennee@linaro.org \
--cc=david@gibson.dropbear.id.au \
--cc=programmingkidx@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=rth@twiddle.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).