diff mbox series

[PULL,19/33] mips/cps: Use start-powered-off CPUState property

Message ID 20200908051953.1616885-20-david@gibson.dropbear.id.au
State Superseded
Headers show
Series ppc-for-5.2 queue 20200908 | expand

Commit Message

David Gibson Sept. 8, 2020, 5:19 a.m. UTC
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>
---
 hw/mips/cps.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

Comments

Alex Bennée Oct. 7, 2020, 9:28 a.m. UTC | #1
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

> ---

>  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);



-- 
Alex Bennée
Philippe Mathieu-Daudé Oct. 7, 2020, 10:36 a.m. UTC | #2
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);

> 

>
Alex Bennée Oct. 7, 2020, 10:47 a.m. UTC | #3
Philippe Mathieu-Daudé <f4bug@amsat.org> writes:

> 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;

>  }


That seems reasonable.

Tested-by: Alex Bennée <alex.bennee@linaro.org>

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>


Do you want to roll that into a proper patch or shall I apply directly
into my testing/next tree?

-- 
Alex Bennée
Philippe Mathieu-Daudé Oct. 7, 2020, 11:36 a.m. UTC | #4
On 10/7/20 12:47 PM, Alex Bennée wrote:
> 

> Philippe Mathieu-Daudé <f4bug@amsat.org> writes:

> 

>> 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;

>>  }

> 

> That seems reasonable.

> 

> Tested-by: Alex Bennée <alex.bennee@linaro.org>

> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>

> 

> Do you want to roll that into a proper patch or shall I apply directly

> into my testing/next tree?


I'll send a patch, thanks for testing!
diff mbox series

Patch

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);