[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PULL 19/33] mips/cps: Use start-powered-off CPUState property
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PULL 19/33] mips/cps: Use start-powered-off CPUState property |
Date: |
Wed, 7 Oct 2020 12:36:08 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 |
On 10/7/20 11:28 AM, Alex Bennée wrote:
>
> David Gibson <david@gibson.dropbear.id.au> writes:
>
>> From: Thiago Jung Bauermann <bauerman@linux.ibm.com>
>>
>> Instead of setting CPUState::halted to 1 in main_cpu_reset(), use the
>> start-powered-off property which makes cpu_common_reset() initialize it
>> to 1 in common code.
>>
>> Also change creation of CPU object from cpu_create() to object_new() and
>> qdev_realize_and_unref() because cpu_create() realizes the CPU and it's not
>> possible to set a property after the object is realized.
>>
>> Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com>
>> Message-Id: <20200826055535.951207-6-bauerman@linux.ibm.com>
>> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
>
> I've finally bisected the breakage in check-acceptance to this patch:
>
> 10:24:09 [alex.bennee@hackbox2:~/l/q/b/bisect] (102ca966…)|BISECTING|✔ +
> ./tests/venv/bin/avocado run tests/acceptance/machine_mips_malta.py
>
> /home/alex.bennee/lsrc/qemu.git/builds/bisect/tests/venv/lib/python3.6/site-packages/avocado/plugins/run.py:214:
> FutureWarning: The following arguments will be changed to boolean soon:
> sysinfo, output-check, failfast, keep-tmp and ignore-missing-references.
> FutureWarning)
> JOB ID : 1a71a0a81cf9fb9a387d2ab105f8196a26cab84e
> JOB LOG :
> /home/alex.bennee/avocado/job-results/job-2020-10-07T10.24-1a71a0a/job.log
> (1/3)
> tests/acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_1core:
> PASS (5.70 s)
> (2/3)
> tests/acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_7cores:
> INTERRUPTED: Test interrupted by SIGTERM\nRunner error occurred: Timeout
> reached\nOriginal status: ERROR\n{'name':
> '2-tests/acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_7cores',
> 'logdir': '/home/alex.bennee/avocado/job-r... (28.91 s)
> (3/3)
> tests/acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_8cores:
> INTERRUPTED: Test interrupted by SIGTERM\nRunner error occurred: Timeout
> reached\nOriginal status: ERROR\n{'name':
> '3-tests/acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_8cores',
> 'logdir': '/home/alex.bennee/avocado/job-r... (30.58 s)
> RESULTS : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 2 |
> CANCEL 0
> JOB TIME : 70.12 s
> 10:25:27 [alex.bennee@hackbox2:~/l/q/b/bisect] (102ca966…)|BISECTING|✔ 8 +
> make -j30
> make[1]: Entering directory '/home/alex.bennee/lsrc/qemu.git/slirp'
> make[1]: Nothing to be done for 'all'.
> make[1]: Leaving directory '/home/alex.bennee/lsrc/qemu.git/slirp'
> Generating qemu-version.h with a meson_exe.py custom command
> Compiling C object libqemu-mips64el-softmmu.fa.p/hw_mips_cps.c.o
> Compiling C object libqemu-mips64-softmmu.fa.p/hw_mips_cps.c.o
> Compiling C object libqemu-mipsel-softmmu.fa.p/hw_mips_cps.c.o
> Compiling C object libqemu-mips-softmmu.fa.p/hw_mips_cps.c.o
> Linking target qemu-system-mips
> Linking target qemu-system-mips64el
> Linking target qemu-system-mips64
> Linking target qemu-system-mipsel
> 10:26:26 [alex.bennee@hackbox2:~/l/q/b/bisect] (a2c93f06…)|BISECTING|✔ +
> ./tests/venv/bin/avocado run tests/acceptance/machine_mips_malta.py
>
> /home/alex.bennee/lsrc/qemu.git/builds/bisect/tests/venv/lib/python3.6/site-packages/avocado/plugins/run.py:214:
> FutureWarning: The following arguments will be changed to boolean soon:
> sysinfo, output-check, failfast, keep-tmp and ignore-missing-references.
> FutureWarning)
> JOB ID : ccf294ef4e5ebdf19b3a0b53479d574df4ea54ea
> JOB LOG :
> /home/alex.bennee/avocado/job-results/job-2020-10-07T10.26-ccf294e/job.log
> (1/3)
> tests/acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_1core:
> PASS (5.82 s)
> (2/3)
> tests/acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_7cores:
> PASS (15.16 s)
> (3/3)
> tests/acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_8cores:
> PASS (15.97 s)
> RESULTS : PASS 3 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 |
> CANCEL 0
> JOB TIME : 40.01 s
Using:
-- >8 --
diff --git a/hw/misc/mips_cpc.c b/hw/misc/mips_cpc.c
index 2f7b2c9592..7c11fb3d44 100644
--- a/hw/misc/mips_cpc.c
+++ b/hw/misc/mips_cpc.c
@@ -38,6 +38,7 @@ static void mips_cpu_reset_async_work(CPUState *cs,
run_on_cpu_data data)
MIPSCPCState *cpc = (MIPSCPCState *) data.host_ptr;
cpu_reset(cs);
+ cs->halted = 0;
cpc->vp_running |= 1ULL << cs->cpu_index;
}
---
RESULTS : PASS 3 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 |
JOB TIME : 37.54 s
>
>> ---
>> hw/mips/cps.c | 15 +++++++++++----
>> 1 file changed, 11 insertions(+), 4 deletions(-)
>>
>> diff --git a/hw/mips/cps.c b/hw/mips/cps.c
>> index 615e1a1ad2..23c0f87e41 100644
>> --- a/hw/mips/cps.c
>> +++ b/hw/mips/cps.c
>> @@ -52,9 +52,6 @@ static void main_cpu_reset(void *opaque)
>> CPUState *cs = CPU(cpu);
>>
>> cpu_reset(cs);
>> -
>> - /* All VPs are halted on reset. Leave powering up to CPC. */
>> - cs->halted = 1;
>> }
>>
>> static bool cpu_mips_itu_supported(CPUMIPSState *env)
>> @@ -76,7 +73,17 @@ static void mips_cps_realize(DeviceState *dev, Error
>> **errp)
>> bool saar_present = false;
>>
>> for (i = 0; i < s->num_vp; i++) {
>> - cpu = MIPS_CPU(cpu_create(s->cpu_type));
>> + cpu = MIPS_CPU(object_new(s->cpu_type));
>> +
>> + /* All VPs are halted on reset. Leave powering up to CPC. */
>> + if (!object_property_set_bool(OBJECT(cpu), "start-powered-off",
>> true,
>> + errp)) {
>> + return;
>> + }
>> +
>> + if (!qdev_realize_and_unref(DEVICE(cpu), NULL, errp)) {
>> + return;
>> + }
>>
>> /* Init internal devices */
>> cpu_mips_irq_init_cpu(cpu);
>
>