Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2021-01-18 Thread Philippe Mathieu-Daudé
On 1/19/21 7:59 AM, Jiaxun Yang wrote:
> On Tue, Jan 19, 2021, at 1:57 PM, Philippe Mathieu-Daudé wrote:
>> On 1/18/21 5:54 PM, Alex Bennée wrote:
>>> Philippe Mathieu-Daudé  writes:
 On 1/12/21 3:07 AM, Jiaxun Yang wrote:
> Test booting of PMON bootloader on loongson3-virt platform.
>
> $ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
> avocado --show=app,console \
>   run -t machine:loongson3-virt tests/acceptance
> Fetching asset from 
> tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console
> JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706
> JOB LOG: 
> /home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log
 ...
> console: This software may be redistributed under the BSD copyright.
> console: Copyright 2000-2002, Opsycon AB, Sweden.
> console: Copyright 2005, ICT CAS.
> console: CPU GODSON3 BogoMIPS: 1327
> PASS (3.89 s)
> RESULTS: PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | 
> CANCEL 0
> JOB TIME   : 4.38 s
>
> Signed-off-by: Jiaxun Yang 
> ---
>  MAINTAINERS |  1 +
>  tests/acceptance/machine_mips_loongson3v.py | 39 +
>  2 files changed, 40 insertions(+)
>  create mode 100644 tests/acceptance/machine_mips_loongson3v.py
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 4be087b88e..f38882f997 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1164,6 +1164,7 @@ F: hw/intc/loongson_liointc.c
>  F: hw/mips/loongson3_bootp.c
>  F: hw/mips/loongson3_bootp.h
>  F: hw/mips/loongson3_virt.c
> +F: tests/acceptance/machine_mips_loongson3v.py
>  
>  Boston
>  M: Paul Burton 
> diff --git a/tests/acceptance/machine_mips_loongson3v.py 
> b/tests/acceptance/machine_mips_loongson3v.py
> new file mode 100644
> index 00..17a85de69f
> --- /dev/null
> +++ b/tests/acceptance/machine_mips_loongson3v.py
> @@ -0,0 +1,39 @@
> +# Functional tests for the Generic Loongson-3 Platform.
> +#
> +# Copyright (c) 2020 Philippe Mathieu-Daudé 

 2021 Jiaxun Yang ? :D
>>
>> Jiaxun, if you agree I can update that line and queue your patch.
> 
> Please do. Thanks!

So:

Tested-by: Philippe Mathieu-Daudé 
Reviewed-by: Philippe Mathieu-Daudé 

and applied (not removing AVOCADO_ALLOW_UNTRUSTED_CODE,
fixing copyright line) to mips-next.

Thanks,

Phil.



Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2021-01-18 Thread Jiaxun Yang



On Tue, Jan 19, 2021, at 1:57 PM, Philippe Mathieu-Daudé wrote:
> On 1/18/21 5:54 PM, Alex Bennée wrote:
> > Philippe Mathieu-Daudé  writes:
> >> On 1/12/21 3:07 AM, Jiaxun Yang wrote:
> >>> Test booting of PMON bootloader on loongson3-virt platform.
> >>>
> >>> $ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
> >>> avocado --show=app,console \
> >>>   run -t machine:loongson3-virt tests/acceptance
> >>> Fetching asset from 
> >>> tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console
> >>> JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706
> >>> JOB LOG: 
> >>> /home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log
> >> ...
> >>> console: This software may be redistributed under the BSD copyright.
> >>> console: Copyright 2000-2002, Opsycon AB, Sweden.
> >>> console: Copyright 2005, ICT CAS.
> >>> console: CPU GODSON3 BogoMIPS: 1327
> >>> PASS (3.89 s)
> >>> RESULTS: PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | 
> >>> CANCEL 0
> >>> JOB TIME   : 4.38 s
> >>>
> >>> Signed-off-by: Jiaxun Yang 
> >>> ---
> >>>  MAINTAINERS |  1 +
> >>>  tests/acceptance/machine_mips_loongson3v.py | 39 +
> >>>  2 files changed, 40 insertions(+)
> >>>  create mode 100644 tests/acceptance/machine_mips_loongson3v.py
> >>>
> >>> diff --git a/MAINTAINERS b/MAINTAINERS
> >>> index 4be087b88e..f38882f997 100644
> >>> --- a/MAINTAINERS
> >>> +++ b/MAINTAINERS
> >>> @@ -1164,6 +1164,7 @@ F: hw/intc/loongson_liointc.c
> >>>  F: hw/mips/loongson3_bootp.c
> >>>  F: hw/mips/loongson3_bootp.h
> >>>  F: hw/mips/loongson3_virt.c
> >>> +F: tests/acceptance/machine_mips_loongson3v.py
> >>>  
> >>>  Boston
> >>>  M: Paul Burton 
> >>> diff --git a/tests/acceptance/machine_mips_loongson3v.py 
> >>> b/tests/acceptance/machine_mips_loongson3v.py
> >>> new file mode 100644
> >>> index 00..17a85de69f
> >>> --- /dev/null
> >>> +++ b/tests/acceptance/machine_mips_loongson3v.py
> >>> @@ -0,0 +1,39 @@
> >>> +# Functional tests for the Generic Loongson-3 Platform.
> >>> +#
> >>> +# Copyright (c) 2020 Philippe Mathieu-Daudé 
> >>
> >> 2021 Jiaxun Yang ? :D
> 
> Jiaxun, if you agree I can update that line and queue your patch.

Please do. Thanks!

- Jiaxun

> 
> >>
> >>> +#
> >>> +# This work is licensed under the terms of the GNU GPL, version 2 or 
> >>> later.
> >>> +# See the COPYING file in the top-level directory.
> >>> +#
> >>> +# SPDX-License-Identifier: GPL-2.0-or-later
> >>> +
> >>> +import os
> >>> +import time
> >>> +
> >>> +from avocado import skipUnless
> >>> +from avocado_qemu import Test
> >>> +from avocado_qemu import wait_for_console_pattern
> >>> +
> >>> +class MipsLoongson3v(Test):
> >>> +@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted 
> >>> code')
> >>
> >> The source code is published [1], you provided reproducible
> >> workflow [2] and a tag [3] with a public build artifacts [4],
> >> so my understanding is this is "trustable" binary.
> >>
> >> Alex, would it be OK to add this test without the UNTRUSTED tag
> >> (amending the links in the commit description)?
> > 
> > It's a subjective call. Having open source code is a minimum step to
> > being "trusted" but really the trust is in the community that hosts the
> > code. The upstream distros (e.g. Debian/Fedora) are trusted because
> > people install their software on their desktops and basically give the
> > software publisher root on their machines. There has to be a level of
> > trust that the distros won't abuse that to steal information from their
> > users.
> > 
> > I personally have no idea about the loongson community because it's not
> > one I interact with so I have no idea what sort of place it is. Is it a
> > code dump for semi-proprietary non-upstreamed kernels or is it a place
> > that has a good development culture with a sane security process that is
> > responsive to problems and moderately conservative with what they merge?
> > 
> > If you would trust your keys to a machine running this communities
> > software then by all means treated it as a trusted source.
> 
> Subjective call understood :)
> 
> Thanks for your clear explanation,
> 
> Phil.
> 
>

-- 
- Jiaxun



Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2021-01-18 Thread Philippe Mathieu-Daudé
On 1/18/21 5:54 PM, Alex Bennée wrote:
> Philippe Mathieu-Daudé  writes:
>> On 1/12/21 3:07 AM, Jiaxun Yang wrote:
>>> Test booting of PMON bootloader on loongson3-virt platform.
>>>
>>> $ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
>>> avocado --show=app,console \
>>>   run -t machine:loongson3-virt tests/acceptance
>>> Fetching asset from 
>>> tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console
>>> JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706
>>> JOB LOG: 
>>> /home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log
>> ...
>>> console: This software may be redistributed under the BSD copyright.
>>> console: Copyright 2000-2002, Opsycon AB, Sweden.
>>> console: Copyright 2005, ICT CAS.
>>> console: CPU GODSON3 BogoMIPS: 1327
>>> PASS (3.89 s)
>>> RESULTS: PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | 
>>> CANCEL 0
>>> JOB TIME   : 4.38 s
>>>
>>> Signed-off-by: Jiaxun Yang 
>>> ---
>>>  MAINTAINERS |  1 +
>>>  tests/acceptance/machine_mips_loongson3v.py | 39 +
>>>  2 files changed, 40 insertions(+)
>>>  create mode 100644 tests/acceptance/machine_mips_loongson3v.py
>>>
>>> diff --git a/MAINTAINERS b/MAINTAINERS
>>> index 4be087b88e..f38882f997 100644
>>> --- a/MAINTAINERS
>>> +++ b/MAINTAINERS
>>> @@ -1164,6 +1164,7 @@ F: hw/intc/loongson_liointc.c
>>>  F: hw/mips/loongson3_bootp.c
>>>  F: hw/mips/loongson3_bootp.h
>>>  F: hw/mips/loongson3_virt.c
>>> +F: tests/acceptance/machine_mips_loongson3v.py
>>>  
>>>  Boston
>>>  M: Paul Burton 
>>> diff --git a/tests/acceptance/machine_mips_loongson3v.py 
>>> b/tests/acceptance/machine_mips_loongson3v.py
>>> new file mode 100644
>>> index 00..17a85de69f
>>> --- /dev/null
>>> +++ b/tests/acceptance/machine_mips_loongson3v.py
>>> @@ -0,0 +1,39 @@
>>> +# Functional tests for the Generic Loongson-3 Platform.
>>> +#
>>> +# Copyright (c) 2020 Philippe Mathieu-Daudé 
>>
>> 2021 Jiaxun Yang ? :D

Jiaxun, if you agree I can update that line and queue your patch.

>>
>>> +#
>>> +# This work is licensed under the terms of the GNU GPL, version 2 or later.
>>> +# See the COPYING file in the top-level directory.
>>> +#
>>> +# SPDX-License-Identifier: GPL-2.0-or-later
>>> +
>>> +import os
>>> +import time
>>> +
>>> +from avocado import skipUnless
>>> +from avocado_qemu import Test
>>> +from avocado_qemu import wait_for_console_pattern
>>> +
>>> +class MipsLoongson3v(Test):
>>> +@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted 
>>> code')
>>
>> The source code is published [1], you provided reproducible
>> workflow [2] and a tag [3] with a public build artifacts [4],
>> so my understanding is this is "trustable" binary.
>>
>> Alex, would it be OK to add this test without the UNTRUSTED tag
>> (amending the links in the commit description)?
> 
> It's a subjective call. Having open source code is a minimum step to
> being "trusted" but really the trust is in the community that hosts the
> code. The upstream distros (e.g. Debian/Fedora) are trusted because
> people install their software on their desktops and basically give the
> software publisher root on their machines. There has to be a level of
> trust that the distros won't abuse that to steal information from their
> users.
> 
> I personally have no idea about the loongson community because it's not
> one I interact with so I have no idea what sort of place it is. Is it a
> code dump for semi-proprietary non-upstreamed kernels or is it a place
> that has a good development culture with a sane security process that is
> responsive to problems and moderately conservative with what they merge?
> 
> If you would trust your keys to a machine running this communities
> software then by all means treated it as a trusted source.

Subjective call understood :)

Thanks for your clear explanation,

Phil.



Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2021-01-18 Thread Alex Bennée


Philippe Mathieu-Daudé  writes:

> Hi Jiaxun, Alex,
>
> On 1/12/21 3:07 AM, Jiaxun Yang wrote:
>> Test booting of PMON bootloader on loongson3-virt platform.
>> 
>> $ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
>> avocado --show=app,console \
>>   run -t machine:loongson3-virt tests/acceptance
>> Fetching asset from 
>> tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console
>> JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706
>> JOB LOG: 
>> /home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log
> ...
>> console: This software may be redistributed under the BSD copyright.
>> console: Copyright 2000-2002, Opsycon AB, Sweden.
>> console: Copyright 2005, ICT CAS.
>> console: CPU GODSON3 BogoMIPS: 1327
>> PASS (3.89 s)
>> RESULTS: PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | 
>> CANCEL 0
>> JOB TIME   : 4.38 s
>> 
>> Signed-off-by: Jiaxun Yang 
>> ---
>>  MAINTAINERS |  1 +
>>  tests/acceptance/machine_mips_loongson3v.py | 39 +
>>  2 files changed, 40 insertions(+)
>>  create mode 100644 tests/acceptance/machine_mips_loongson3v.py
>> 
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 4be087b88e..f38882f997 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -1164,6 +1164,7 @@ F: hw/intc/loongson_liointc.c
>>  F: hw/mips/loongson3_bootp.c
>>  F: hw/mips/loongson3_bootp.h
>>  F: hw/mips/loongson3_virt.c
>> +F: tests/acceptance/machine_mips_loongson3v.py
>>  
>>  Boston
>>  M: Paul Burton 
>> diff --git a/tests/acceptance/machine_mips_loongson3v.py 
>> b/tests/acceptance/machine_mips_loongson3v.py
>> new file mode 100644
>> index 00..17a85de69f
>> --- /dev/null
>> +++ b/tests/acceptance/machine_mips_loongson3v.py
>> @@ -0,0 +1,39 @@
>> +# Functional tests for the Generic Loongson-3 Platform.
>> +#
>> +# Copyright (c) 2020 Philippe Mathieu-Daudé 
>
> 2021 Jiaxun Yang ? :D
>
>> +#
>> +# This work is licensed under the terms of the GNU GPL, version 2 or later.
>> +# See the COPYING file in the top-level directory.
>> +#
>> +# SPDX-License-Identifier: GPL-2.0-or-later
>> +
>> +import os
>> +import time
>> +
>> +from avocado import skipUnless
>> +from avocado_qemu import Test
>> +from avocado_qemu import wait_for_console_pattern
>> +
>> +class MipsLoongson3v(Test):
>> +@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
>
> The source code is published [1], you provided reproducible
> workflow [2] and a tag [3] with a public build artifacts [4],
> so my understanding is this is "trustable" binary.
>
> Alex, would it be OK to add this test without the UNTRUSTED tag
> (amending the links in the commit description)?

It's a subjective call. Having open source code is a minimum step to
being "trusted" but really the trust is in the community that hosts the
code. The upstream distros (e.g. Debian/Fedora) are trusted because
people install their software on their desktops and basically give the
software publisher root on their machines. There has to be a level of
trust that the distros won't abuse that to steal information from their
users.

I personally have no idea about the loongson community because it's not
one I interact with so I have no idea what sort of place it is. Is it a
code dump for semi-proprietary non-upstreamed kernels or is it a place
that has a good development culture with a sane security process that is
responsive to problems and moderately conservative with what they merge?

If you would trust your keys to a machine running this communities
software then by all means treated it as a trusted source.

>
> [1] https://github.com/loongson-community/pmon/
> [2]
> https://github.com/loongson-community/pmon/blob/master/.github/workflows/compile.yml
> [3] https://github.com/loongson-community/pmon/releases/tag/20210112
> [4] https://github.com/loongson-community/pmon/actions/runs/479132723
>
>> +def test_pmon_serial_console(self):
>> +"""
>> +:avocado: tags=arch:mips64el
>> +:avocado: tags=endian:little
>> +:avocado: tags=machine:loongson3-virt
>> +:avocado: tags=cpu:Loongson-3A1000
>> +:avocado: tags=device:liointc
>> +:avocado: tags=device:goldfish_rtc
>> +"""
>> +
>> +pmon_hash = '7c8b45dd81ccfc55ff28f5aa267a41c3'
>> +pmon_path = 
>> self.fetch_asset('https://github.com/loongson-community/pmon/'
>> +
>> 'releases/download/20210112/pmon-3avirt.bin',
>> + asset_hash=pmon_hash, algorithm='md5')
>> +
>> +self.vm.set_console()
>> +self.vm.add_args('-bios', pmon_path)
>> +self.vm.launch()
>> +wait_for_console_pattern(self, 'PMON2000 MIPS Initializing. 
>> Standby...')
>> +wait_for_console_pattern(self, 'Copy PMON to execute location 
>> done.')
>> +wait_for_console_pattern(self, 'CPU GODSON3 BogoMIPS:')
>> 


-- 
Alex Bennée



Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2021-01-13 Thread Philippe Mathieu-Daudé
On 1/12/21 3:05 PM, Wainer dos Santos Moschetta wrote:
> Hi,
> 
> On 1/11/21 11:07 PM, Jiaxun Yang wrote:
>> Test booting of PMON bootloader on loongson3-virt platform.
>>
>> $ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
>>  avocado --show=app,console \
>>    run -t machine:loongson3-virt tests/acceptance
>> Fetching asset from
>> tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console
>>
>> JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706
>> JOB LOG    :
>> /home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log
>>   (1/1)
>> tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console:
>>  
>> console: PMON2000 MIPS Initializing. Standby...
>> console: Jump to 9fc
> 
>> Signed-off-by: Jiaxun Yang 
>> ---
>>   MAINTAINERS |  1 +
>>   tests/acceptance/machine_mips_loongson3v.py | 39 +
>>   2 files changed, 40 insertions(+)
>>   create mode 100644 tests/acceptance/machine_mips_loongson3v.py
> 
> Allow me to use this new test as an example to start a discussion about
> the organization of the acceptance files.
> 
> The mips64le tests currently are:
> 
> $ ./venv/bin/avocado list -t arch:mips64el acceptance/
> 
> INSTRUMENTED
> acceptance/boot_linux_console.py:BootLinuxConsole.test_mips64el_malta
> INSTRUMENTED
> acceptance/boot_linux_console.py:BootLinuxConsole.test_mips64el_fuloong2e
> INSTRUMENTED
> acceptance/boot_linux_console.py:BootLinuxConsole.test_mips64el_malta_5KEc_cpio
> 
> INSTRUMENTED
> acceptance/linux_ssh_mips_malta.py:LinuxSSH.test_mips_malta64el_kernel3_2_0
> INSTRUMENTED
> acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console
> 
> INSTRUMENTED
> acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_1core
> 
> INSTRUMENTED
> acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_7cores
> 
> INSTRUMENTED
> acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_8cores
> 
> INSTRUMENTED
> acceptance/replay_kernel.py:ReplayKernelNormal.test_mips64el_malta
> INSTRUMENTED
> acceptance/replay_kernel.py:ReplayKernelSlow.test_mips64el_malta_5KEc_cpio
> 
> Most of them are simple "boot linux (or firmware) and check the console"
> tests. The replay_kernel.py contain tests for a given feature and happen
> to be testing on mips64el as well. So on tests/acceptance directory
> we've got boot tests spread across files and mixed with "generic"
> feature tests.
> 
> I think we should find a home for those boot tests. Maybe throw them all
> in a sub-directory called "boot_tests", or in arch-oriented directories
> (boot_tests/mips64el, boot_tests/x86_64, ...) which would make easier to
> reference them in the MAINTAINERS file.
> 
> Any thought?

[thread hijack...]

A tests might be multi-arch. If you think it is easier to have the
tests sorted in subfolders, go ahead :) Where is a test is not a
problem. The problem we have to solve is how to relate a test with
its maintainers / developers interested in it.

We once said what really matters are Avocado tags. This might be an
underused feature of Avocado. Maybe what we need is a script to
relate test tags with MAINTAINERS?

Let's say we use the 'A' tag for that:

-- >8 --
diff --git a/MAINTAINERS b/MAINTAINERS
index cb0656aec3d..a484d429d78 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -646,6 +646,7 @@ M: Anup Patel 
 M: Alistair Francis 
 L: qemu-ri...@nongnu.org
 S: Maintained
+A: device:goldfish_rtc
 F: hw/rtc/goldfish_rtc.c
 F: include/hw/rtc/goldfish_rtc.h

@@ -1160,6 +1161,11 @@ Loongson-3 virtual platforms
 M: Huacai Chen 
 R: Jiaxun Yang 
 S: Maintained
+A: machine:loongson3-virt
+A: cpu:Loongson-3A1000
+A: device:liointc
+A: device:goldfish_rtc
 F: hw/intc/loongson_liointc.c
 F: hw/mips/loongson3_bootp.c
 F: hw/mips/loongson3_bootp.h
---

If this test fails, it should list the maintainers of the
loongson3-virt machine and the goldfish RTC.

Maintainers add their tags of interest, and can Ack when a
developer add a tag to their MAINTAINERS entry.

Thought? :)




Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2021-01-12 Thread Wainer dos Santos Moschetta

Hi,

On 1/11/21 11:07 PM, Jiaxun Yang wrote:

Test booting of PMON bootloader on loongson3-virt platform.

$ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
 avocado --show=app,console \
   run -t machine:loongson3-virt tests/acceptance
Fetching asset from 
tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console
JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706
JOB LOG: 
/home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log
  (1/1) 
tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console:
  console: PMON2000 MIPS Initializing. Standby...
console: Jump to 9fc



Signed-off-by: Jiaxun Yang 
---
  MAINTAINERS |  1 +
  tests/acceptance/machine_mips_loongson3v.py | 39 +
  2 files changed, 40 insertions(+)
  create mode 100644 tests/acceptance/machine_mips_loongson3v.py


Allow me to use this new test as an example to start a discussion about 
the organization of the acceptance files.


The mips64le tests currently are:

$ ./venv/bin/avocado list -t arch:mips64el acceptance/

INSTRUMENTED 
acceptance/boot_linux_console.py:BootLinuxConsole.test_mips64el_malta
INSTRUMENTED 
acceptance/boot_linux_console.py:BootLinuxConsole.test_mips64el_fuloong2e
INSTRUMENTED 
acceptance/boot_linux_console.py:BootLinuxConsole.test_mips64el_malta_5KEc_cpio
INSTRUMENTED 
acceptance/linux_ssh_mips_malta.py:LinuxSSH.test_mips_malta64el_kernel3_2_0
INSTRUMENTED 
acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console
INSTRUMENTED 
acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_1core
INSTRUMENTED 
acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_7cores
INSTRUMENTED 
acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_8cores
INSTRUMENTED 
acceptance/replay_kernel.py:ReplayKernelNormal.test_mips64el_malta
INSTRUMENTED 
acceptance/replay_kernel.py:ReplayKernelSlow.test_mips64el_malta_5KEc_cpio


Most of them are simple "boot linux (or firmware) and check the console" 
tests. The replay_kernel.py contain tests for a given feature and happen 
to be testing on mips64el as well. So on tests/acceptance directory 
we've got boot tests spread across files and mixed with "generic" 
feature tests.


I think we should find a home for those boot tests. Maybe throw them all 
in a sub-directory called "boot_tests", or in arch-oriented directories 
(boot_tests/mips64el, boot_tests/x86_64, ...) which would make easier to 
reference them in the MAINTAINERS file.


Any thought?



diff --git a/MAINTAINERS b/MAINTAINERS
index 4be087b88e..f38882f997 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1164,6 +1164,7 @@ F: hw/intc/loongson_liointc.c
  F: hw/mips/loongson3_bootp.c
  F: hw/mips/loongson3_bootp.h
  F: hw/mips/loongson3_virt.c
+F: tests/acceptance/machine_mips_loongson3v.py
  
  Boston

  M: Paul Burton 
diff --git a/tests/acceptance/machine_mips_loongson3v.py 
b/tests/acceptance/machine_mips_loongson3v.py
new file mode 100644
index 00..17a85de69f
--- /dev/null
+++ b/tests/acceptance/machine_mips_loongson3v.py
@@ -0,0 +1,39 @@
+# Functional tests for the Generic Loongson-3 Platform.
+#
+# Copyright (c) 2020 Philippe Mathieu-Daudé 
+#
+# This work is licensed under the terms of the GNU GPL, version 2 or later.
+# See the COPYING file in the top-level directory.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+import os
+import time


Unused time import

Thanks!

- Wainer


+
+from avocado import skipUnless
+from avocado_qemu import Test
+from avocado_qemu import wait_for_console_pattern
+
+class MipsLoongson3v(Test):
+@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+def test_pmon_serial_console(self):
+"""
+:avocado: tags=arch:mips64el
+:avocado: tags=endian:little
+:avocado: tags=machine:loongson3-virt
+:avocado: tags=cpu:Loongson-3A1000
+:avocado: tags=device:liointc
+:avocado: tags=device:goldfish_rtc
+"""
+
+pmon_hash = '7c8b45dd81ccfc55ff28f5aa267a41c3'
+pmon_path = 
self.fetch_asset('https://github.com/loongson-community/pmon/'
+
'releases/download/20210112/pmon-3avirt.bin',
+ asset_hash=pmon_hash, algorithm='md5'
+
+self.vm.set_console()
+self.vm.add_args('-bios', pmon_path)
+self.vm.launch()
+wait_for_console_pattern(self, 'PMON2000 MIPS Initializing. 
Standby...')
+wait_for_console_pattern(self, 'Copy PMON to execute location done.')
+wait_for_console_pattern(self, 'CPU GODSON3 BogoMIPS:')





Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2021-01-12 Thread Philippe Mathieu-Daudé
Hi Jiaxun, Alex,

On 1/12/21 3:07 AM, Jiaxun Yang wrote:
> Test booting of PMON bootloader on loongson3-virt platform.
> 
> $ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
> avocado --show=app,console \
>   run -t machine:loongson3-virt tests/acceptance
> Fetching asset from 
> tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console
> JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706
> JOB LOG: 
> /home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log
...
> console: This software may be redistributed under the BSD copyright.
> console: Copyright 2000-2002, Opsycon AB, Sweden.
> console: Copyright 2005, ICT CAS.
> console: CPU GODSON3 BogoMIPS: 1327
> PASS (3.89 s)
> RESULTS: PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | 
> CANCEL 0
> JOB TIME   : 4.38 s
> 
> Signed-off-by: Jiaxun Yang 
> ---
>  MAINTAINERS |  1 +
>  tests/acceptance/machine_mips_loongson3v.py | 39 +
>  2 files changed, 40 insertions(+)
>  create mode 100644 tests/acceptance/machine_mips_loongson3v.py
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 4be087b88e..f38882f997 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1164,6 +1164,7 @@ F: hw/intc/loongson_liointc.c
>  F: hw/mips/loongson3_bootp.c
>  F: hw/mips/loongson3_bootp.h
>  F: hw/mips/loongson3_virt.c
> +F: tests/acceptance/machine_mips_loongson3v.py
>  
>  Boston
>  M: Paul Burton 
> diff --git a/tests/acceptance/machine_mips_loongson3v.py 
> b/tests/acceptance/machine_mips_loongson3v.py
> new file mode 100644
> index 00..17a85de69f
> --- /dev/null
> +++ b/tests/acceptance/machine_mips_loongson3v.py
> @@ -0,0 +1,39 @@
> +# Functional tests for the Generic Loongson-3 Platform.
> +#
> +# Copyright (c) 2020 Philippe Mathieu-Daudé 

2021 Jiaxun Yang ? :D

> +#
> +# This work is licensed under the terms of the GNU GPL, version 2 or later.
> +# See the COPYING file in the top-level directory.
> +#
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +
> +import os
> +import time
> +
> +from avocado import skipUnless
> +from avocado_qemu import Test
> +from avocado_qemu import wait_for_console_pattern
> +
> +class MipsLoongson3v(Test):
> +@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')

The source code is published [1], you provided reproducible
workflow [2] and a tag [3] with a public build artifacts [4],
so my understanding is this is "trustable" binary.

Alex, would it be OK to add this test without the UNTRUSTED tag
(amending the links in the commit description)?

[1] https://github.com/loongson-community/pmon/
[2]
https://github.com/loongson-community/pmon/blob/master/.github/workflows/compile.yml
[3] https://github.com/loongson-community/pmon/releases/tag/20210112
[4] https://github.com/loongson-community/pmon/actions/runs/479132723

> +def test_pmon_serial_console(self):
> +"""
> +:avocado: tags=arch:mips64el
> +:avocado: tags=endian:little
> +:avocado: tags=machine:loongson3-virt
> +:avocado: tags=cpu:Loongson-3A1000
> +:avocado: tags=device:liointc
> +:avocado: tags=device:goldfish_rtc
> +"""
> +
> +pmon_hash = '7c8b45dd81ccfc55ff28f5aa267a41c3'
> +pmon_path = 
> self.fetch_asset('https://github.com/loongson-community/pmon/'
> +
> 'releases/download/20210112/pmon-3avirt.bin',
> + asset_hash=pmon_hash, algorithm='md5')
> +
> +self.vm.set_console()
> +self.vm.add_args('-bios', pmon_path)
> +self.vm.launch()
> +wait_for_console_pattern(self, 'PMON2000 MIPS Initializing. 
> Standby...')
> +wait_for_console_pattern(self, 'Copy PMON to execute location done.')
> +wait_for_console_pattern(self, 'CPU GODSON3 BogoMIPS:')
> 




[PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2021-01-11 Thread Jiaxun Yang
Test booting of PMON bootloader on loongson3-virt platform.

$ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
avocado --show=app,console \
  run -t machine:loongson3-virt tests/acceptance
Fetching asset from 
tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console
JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706
JOB LOG: 
/home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log
 (1/1) 
tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console:
  console: PMON2000 MIPS Initializing. Standby...
console: Jump to 9fc
console: Init Memory done.
console: The uncache data is:
console: :  
console: 0008:  
console: 0010:  
console: 0018:  
console: 0020:  
console: 0028:  
console: 0030:  
console: 0038:  
console: The cached  data is:
console: :  
console: 0008:  
console: 0010:  
console: 0018:  
console: 0020:  
console: 0028:  
console: 0030:  
console: 0038:  
console: Copy PMON to execute location...
console: start = 0x8f90
console: s0 = 0x3030
console: _edata = 0x8f989010
console: _end = 0x8f98a028copy text section done.
console: Copy PMON to execute location done.
console: sp=8f8fc000
console: Uncompressing 
BiosOK,Booting
 Bios
console: FREQ
console: DONE
console: DEVI
console: ENVI
console: MAPV
console: NVRAM@8f7ff898
console: STDV
console: 8010:  memory between 8f7ff400-8f80  is already been 
allocated,heap is already above this point
console: SBDD
console: P12PCIH
console: PCIH
console: PCID
console: setting up 1 bus
console: PCI bus 0 slot 1: probe...completed
console: PCI bus 0 slot 1/0: vendor/product: 0x106b/0x003f (serialbus, USB, 
interface: 0x10, revision: 0x00)
console: PCI bus 0 slot 1/0: reg 0x10 = 0xff00
console: PCI bus 0 slot 2: probe...completed
console: PCI bus 0 slot 2/0: vendor/product: 0x1af4/0x1000 (network, ethernet, 
interface: 0x00, revision: 0x00)
console: PCI bus 0 slot 2/0: reg 0x10 = 0xffe1
console: PCI bus 0 slot 2/0: reg 0x14 = 0xf000
console: PCI bus 0 slot 2/0: reg 0x20 = 0xc00c
console: PCI bus 0 slot 2/0: reg 0x30 = 0xfffc
console: PCI bus 0 slot 3: probe...completed
console: PCI bus 0 slot 4: probe...completed
console: PCI bus 0 slot 5: probe...completed
console: PCI bus 0 slot 6: probe...completed
console: PCI bus 0 slot 7: probe...completed
console: PCI bus 0 slot 8: probe...completed
console: PCI bus 0 slot 9: probe...completed
console: PCI bus 0 slot 10: probe...completed
console: PCI bus 0 slot 11: probe...completed
console: PCI bus 0 slot 12: probe...completed
console: PCI bus 0 slot 13: probe...completed
console: PCI bus 0 slot 14: probe...completed
console: PCI bus 0 slot 15: probe...completed
console: PCI bus 0 slot 16: probe...completed
console: PCI bus 0 slot 17: probe...completed
console: PCI bus 0 slot 18: probe...completed
console: PCI bus 0 slot 19: probe...completed
console: PCI bus 0 slot 20: probe...completed
console: PCI bus 0 slot 21: probe...completed
console: PCI bus 0 slot 22: probe...completed
console: PCI bus 0 slot 23: probe...completed
console: PCI bus 0 slot 24: probe...completed
console: PCI bus 0 slot 25: probe...completed
console: PCI bus 0 slot 26: probe...completed
console: PCI bus 0 slot 27: probe...completed
console: PCI bus 0 slot 28: probe...completed
console: PCI bus 0 slot 29: probe...completed
console: PCI bus 0 slot 30: probe...completed
console: PCI bus 0 slot 31: probe...completed
console: PCIS
console: PCIR
console: PCIW
console: PCI bus 0 slot 2/0: mem @0x4000, reg 0x30 262144 bytes
console: PCI bus 0 slot 2/0: mem @0x4004, reg 0x20 16384 bytes
console: PCI bus 0 slot 2/0: mem @0x40044000, reg 0x14 4096 bytes
console: PCI bus 0 slot 1/0: mem @0x40045000, reg 0x10 256 bytes
console: PCI bus 0 slot 2/0: exp @0x4000, 262144 bytes
console: PCI bus 0 slot 2/0: i/o @0x4000, reg 0x10 32 bytes
console: NETI
console: RTCL
console: PCID
console: VGAI
console: memorysize=c00,base=8f6ff508,sysMem=8f6ef500
console: in setup_int_vect!done!VESA
console: vga bios init failed, rc=-1
console: in configure
console: mainbus0 (root)
console: localbus0 at mainbus0
console: loopdev0 at mainbus0pcibr0 at mainbus0
console: pci0 at pcibr0 bus 0
console: ohci0 at pci0 dev 1 function 0 vendor/product: 0x106b/0x003f 
(serialbus, USB, interface: 0x10, revision: 0x00)usb base addr : 0xc0045000, 
bus_base is : 0xc000
console: OHCI revision: 0x0010
console: RH: a: 0x0203 b: 0x
console: early period(0x0)
console: OHCI 8c01ec00 initialized ok
console: New Device 0
console: usb_get_descriptor
console: bLe

Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2020-12-21 Thread Jiaxun Yang

在 2020/12/21 下午11:34, Philippe Mathieu-Daudé 写道:

On 12/21/20 1:51 PM, Huacai Chen wrote:

Hi, Philippe,

On Sat, Dec 19, 2020 at 4:51 AM Willian Rampazzo  wrote:

On 12/16/20 3:17 PM, Philippe Mathieu-Daudé wrote:

Test the PMON firmware. As the firmware is not redistributable,
it has to be downloaded manually first. Then it can be used by
providing its path via the PMON_PATH environment variable:

A1101 is a real machine type, and there is a UEFI-based bios designed
for loongson3-virt machine (though it is also not redistributable),
why not test that one?

Well, if you already shared that information, I probably missed it.

I'm trying to add test for your machine to be able to test it regularly
to avoid regressions... I'd rather let you contribute the tests :)


Hi Huacai and Philippe,

I will contribute a test with our port of PMON.
UEFI firmware lacks reasonable console output and interactive shell.

Thanks

- Jiaxun



Phil.






Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2020-12-21 Thread Philippe Mathieu-Daudé
On 12/21/20 1:51 PM, Huacai Chen wrote:
> Hi, Philippe,
> 
> On Sat, Dec 19, 2020 at 4:51 AM Willian Rampazzo  wrote:
>>
>> On 12/16/20 3:17 PM, Philippe Mathieu-Daudé wrote:
>>> Test the PMON firmware. As the firmware is not redistributable,
>>> it has to be downloaded manually first. Then it can be used by
>>> providing its path via the PMON_PATH environment variable:
> A1101 is a real machine type, and there is a UEFI-based bios designed
> for loongson3-virt machine (though it is also not redistributable),
> why not test that one?

Well, if you already shared that information, I probably missed it.

I'm trying to add test for your machine to be able to test it regularly
to avoid regressions... I'd rather let you contribute the tests :)

Phil.



Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2020-12-21 Thread Huacai Chen
Hi, Philippe,

On Sat, Dec 19, 2020 at 4:51 AM Willian Rampazzo  wrote:
>
> On 12/16/20 3:17 PM, Philippe Mathieu-Daudé wrote:
> > Test the PMON firmware. As the firmware is not redistributable,
> > it has to be downloaded manually first. Then it can be used by
> > providing its path via the PMON_PATH environment variable:
A1101 is a real machine type, and there is a UEFI-based bios designed
for loongson3-virt machine (though it is also not redistributable),
why not test that one?

Huacai
> >
> >$ AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
> >  PMON_PATH=/images/pmon \
> >  avocado --show=app,console \
> >run -t machine:loongson3-virt tests/acceptance
> >JOB ID : 363e66a2d20b1c0e3f515653f9137483b83b2984
> >JOB LOG: 
> > /home/phil/avocado/job-results/job-2020-12-16T19.02-363e66a/job.log
> > (1/2) 
> > tests/acceptance/machine_mips_fuloong3.py:MipsFuloong3.test_pmon_BLD_serial_console:
> >console: PMON2000 MIPS Initializing. Standby...
> >console: 
> >console: Shut down other cores
> >console: 0xbfe00190  : 
> >console: CPU CLK SEL : 
> >console: MEM CLK SEL : 
> >console: Change the driver
> >console: Soft CLK SEL adjust begin
> >console: HT :
> >console: DDR_DIV:0002
> >console: BBGEN start  :
> >console: BBGEN config value  :
> >console: MC RESET
> >console: Fix L1xbar illegal access at NODE 0
> >console: Fix L2xbar in NODE 0
> >console: 32 bit PCI space translate to 64 bit HT space
> >console: Waiting HyperTransport bus to be up.
> >PASS (0.10 s)
> > (2/2) 
> > tests/acceptance/machine_mips_fuloong3.py:MipsFuloong3.test_pmon_A1101_serial_console:
> >console: PMON2000 MIPS Initializing. Standby...
> >console: 0xbfe00190  : 
> >console: CPU CLK SEL : 
> >console: CPU clk frequency = SYSCLK x 0x001e /  1
> >console: MEM CLK SEL : 
> >console: DDR clk frequency = MEMCLK x 0x001e /  3
> >console: Fix L1xbar illegal access
> >console: Fix L2xbar illegal access
> >console: Init tlb...
> >console: godson2 caches found
> >PASS (0.12 s)
> >RESULTS: PASS 2 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | 
> > CANCEL 0
> >JOB TIME   : 0.58 s
> >
> > Signed-off-by: Philippe Mathieu-Daudé 
> > ---
> > Based-on: <20201215125716.477023-1-chenhua...@kernel.org>
> > ---
> >   MAINTAINERS |  1 +
> >   tests/acceptance/machine_mips_loongson3v.py | 66 +
> >   2 files changed, 67 insertions(+)
> >   create mode 100644 tests/acceptance/machine_mips_loongson3v.py
> >
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index f75fa2a7142..9a02d44f997 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -1166,6 +1166,7 @@ M: Huacai Chen 
> >   R: Jiaxun Yang 
> >   S: Maintained
> >   F: hw/intc/loongson_liointc.c
> > +F: tests/acceptance/machine_mips_loongson3v.py
> >
> >   Boston
> >   M: Paul Burton 
> > diff --git a/tests/acceptance/machine_mips_loongson3v.py 
> > b/tests/acceptance/machine_mips_loongson3v.py
> > new file mode 100644
> > index 000..8e698bbc99b
> > --- /dev/null
> > +++ b/tests/acceptance/machine_mips_loongson3v.py
> > @@ -0,0 +1,66 @@
> > +# Functional tests for the Generic Loongson-3 Platform.
> > +#
> > +# Copyright (c) 2020 Philippe Mathieu-Daudé 
> > +#
> > +# This work is licensed under the terms of the GNU GPL, version 2 or later.
> > +# See the COPYING file in the top-level directory.
> > +#
> > +# SPDX-License-Identifier: GPL-2.0-or-later
> > +
> > +import os
> > +import time
> > +
> > +from avocado import skipUnless
> > +from avocado_qemu import Test
> > +from avocado_qemu import wait_for_console_pattern
> > +
> > +class MipsFuloong3(Test):
> > +
> > +timeout = 60
> > +
> > +@skipUnless(os.getenv('PMON_PATH'), 'PMON_PATH not available')
> > +@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted 
> > code')
> > +def test_pmon_BLD_serial_console(self):
> > +"""
> > +:avocado: tags=arch:mips64el
> > +:avocado: tags=endian:little
> > +:avocado: tags=machine:loongson3-virt
> > +:avocado: tags=cpu:Loongson-3A1000
> > +:avocado: tags=device:liointc
> > +:avocado: tags=device:goldfish_rtc
> > +"""
> > +pmon_name = 'pmon_BLD-3A3000-780EMATX-1w-V1.10.bin'
> > +pmon_hash = '38916ee03ed09a86997b40c687c83e92'
>
> In case you keep this approach of manually downloading the binary, it
> would be good to have a pointer (url) to it to avoid download of an
> incorrect binary that will not match the hash here.
>
> > +pmon_path = self.fetch_asset('file://' + os.path.join(
> > +os.getenv('PMON_PATH'), pmon_name),
> > + asset_hash=pmon_hash, algorithm='md5')
> > +
> > +self.vm.set_console()
> > +   

Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2020-12-18 Thread Willian Rampazzo

On 12/16/20 3:17 PM, Philippe Mathieu-Daudé wrote:

Test the PMON firmware. As the firmware is not redistributable,
it has to be downloaded manually first. Then it can be used by
providing its path via the PMON_PATH environment variable:

   $ AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
 PMON_PATH=/images/pmon \
 avocado --show=app,console \
   run -t machine:loongson3-virt tests/acceptance
   JOB ID : 363e66a2d20b1c0e3f515653f9137483b83b2984
   JOB LOG: 
/home/phil/avocado/job-results/job-2020-12-16T19.02-363e66a/job.log
(1/2) 
tests/acceptance/machine_mips_fuloong3.py:MipsFuloong3.test_pmon_BLD_serial_console:
   console: PMON2000 MIPS Initializing. Standby...
   console: 
   console: Shut down other cores
   console: 0xbfe00190  : 
   console: CPU CLK SEL : 
   console: MEM CLK SEL : 
   console: Change the driver
   console: Soft CLK SEL adjust begin
   console: HT :
   console: DDR_DIV:0002
   console: BBGEN start  :
   console: BBGEN config value  :
   console: MC RESET
   console: Fix L1xbar illegal access at NODE 0
   console: Fix L2xbar in NODE 0
   console: 32 bit PCI space translate to 64 bit HT space
   console: Waiting HyperTransport bus to be up.
   PASS (0.10 s)
(2/2) 
tests/acceptance/machine_mips_fuloong3.py:MipsFuloong3.test_pmon_A1101_serial_console:
   console: PMON2000 MIPS Initializing. Standby...
   console: 0xbfe00190  : 
   console: CPU CLK SEL : 
   console: CPU clk frequency = SYSCLK x 0x001e /  1
   console: MEM CLK SEL : 
   console: DDR clk frequency = MEMCLK x 0x001e /  3
   console: Fix L1xbar illegal access
   console: Fix L2xbar illegal access
   console: Init tlb...
   console: godson2 caches found
   PASS (0.12 s)
   RESULTS: PASS 2 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | 
CANCEL 0
   JOB TIME   : 0.58 s

Signed-off-by: Philippe Mathieu-Daudé 
---
Based-on: <20201215125716.477023-1-chenhua...@kernel.org>
---
  MAINTAINERS |  1 +
  tests/acceptance/machine_mips_loongson3v.py | 66 +
  2 files changed, 67 insertions(+)
  create mode 100644 tests/acceptance/machine_mips_loongson3v.py

diff --git a/MAINTAINERS b/MAINTAINERS
index f75fa2a7142..9a02d44f997 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1166,6 +1166,7 @@ M: Huacai Chen 
  R: Jiaxun Yang 
  S: Maintained
  F: hw/intc/loongson_liointc.c
+F: tests/acceptance/machine_mips_loongson3v.py
  
  Boston

  M: Paul Burton 
diff --git a/tests/acceptance/machine_mips_loongson3v.py 
b/tests/acceptance/machine_mips_loongson3v.py
new file mode 100644
index 000..8e698bbc99b
--- /dev/null
+++ b/tests/acceptance/machine_mips_loongson3v.py
@@ -0,0 +1,66 @@
+# Functional tests for the Generic Loongson-3 Platform.
+#
+# Copyright (c) 2020 Philippe Mathieu-Daudé 
+#
+# This work is licensed under the terms of the GNU GPL, version 2 or later.
+# See the COPYING file in the top-level directory.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+import os
+import time
+
+from avocado import skipUnless
+from avocado_qemu import Test
+from avocado_qemu import wait_for_console_pattern
+
+class MipsFuloong3(Test):
+
+timeout = 60
+
+@skipUnless(os.getenv('PMON_PATH'), 'PMON_PATH not available')
+@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+def test_pmon_BLD_serial_console(self):
+"""
+:avocado: tags=arch:mips64el
+:avocado: tags=endian:little
+:avocado: tags=machine:loongson3-virt
+:avocado: tags=cpu:Loongson-3A1000
+:avocado: tags=device:liointc
+:avocado: tags=device:goldfish_rtc
+"""
+pmon_name = 'pmon_BLD-3A3000-780EMATX-1w-V1.10.bin'
+pmon_hash = '38916ee03ed09a86997b40c687c83e92'


In case you keep this approach of manually downloading the binary, it 
would be good to have a pointer (url) to it to avoid download of an 
incorrect binary that will not match the hash here.



+pmon_path = self.fetch_asset('file://' + os.path.join(
+os.getenv('PMON_PATH'), pmon_name),
+ asset_hash=pmon_hash, algorithm='md5')
+
+self.vm.set_console()
+self.vm.add_args('-bios', pmon_path)
+self.vm.launch()
+wait_for_console_pattern(self, 'PMON2000 MIPS Initializing. 
Standby...')
+wait_for_console_pattern(self, 'Shut down other cores')
+wait_for_console_pattern(self, 'Waiting HyperTransport bus to be up.')
+
+@skipUnless(os.getenv('PMON_PATH'), 'PMON_PATH not available')
+@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+def test_pmon_A1101_serial_console(self):
+"""
+:avocado: tags=arch:mips64el
+:avocado: tags=endian:little
+:avocado: tags=machine:loongson3-virt
+:avocado: tags=cpu:Loongson-3A1000
+:avocado: tags=device:li

Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2020-12-18 Thread Wainer dos Santos Moschetta

Hi,

On 12/16/20 3:17 PM, Philippe Mathieu-Daudé wrote:

Test the PMON firmware. As the firmware is not redistributable,
it has to be downloaded manually first. Then it can be used by
providing its path via the PMON_PATH environment variable:

   $ AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
 PMON_PATH=/images/pmon \
 avocado --show=app,console \
   run -t machine:loongson3-virt tests/acceptance
   JOB ID : 363e66a2d20b1c0e3f515653f9137483b83b2984
   JOB LOG: 
/home/phil/avocado/job-results/job-2020-12-16T19.02-363e66a/job.log
(1/2) 
tests/acceptance/machine_mips_fuloong3.py:MipsFuloong3.test_pmon_BLD_serial_console:
   console: PMON2000 MIPS Initializing. Standby...
   console: 
   console: Shut down other cores
   console: 0xbfe00190  : 
   console: CPU CLK SEL : 
   console: MEM CLK SEL : 
   console: Change the driver
   console: Soft CLK SEL adjust begin
   console: HT :
   console: DDR_DIV:0002
   console: BBGEN start  :
   console: BBGEN config value  :
   console: MC RESET
   console: Fix L1xbar illegal access at NODE 0
   console: Fix L2xbar in NODE 0
   console: 32 bit PCI space translate to 64 bit HT space
   console: Waiting HyperTransport bus to be up.
   PASS (0.10 s)
(2/2) 
tests/acceptance/machine_mips_fuloong3.py:MipsFuloong3.test_pmon_A1101_serial_console:
   console: PMON2000 MIPS Initializing. Standby...
   console: 0xbfe00190  : 
   console: CPU CLK SEL : 
   console: CPU clk frequency = SYSCLK x 0x001e /  1
   console: MEM CLK SEL : 
   console: DDR clk frequency = MEMCLK x 0x001e /  3
   console: Fix L1xbar illegal access
   console: Fix L2xbar illegal access
   console: Init tlb...
   console: godson2 caches found
   PASS (0.12 s)
   RESULTS: PASS 2 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | 
CANCEL 0
   JOB TIME   : 0.58 s

Signed-off-by: Philippe Mathieu-Daudé 
---
Based-on: <20201215125716.477023-1-chenhua...@kernel.org>
---
  MAINTAINERS |  1 +
  tests/acceptance/machine_mips_loongson3v.py | 66 +
  2 files changed, 67 insertions(+)
  create mode 100644 tests/acceptance/machine_mips_loongson3v.py


lgtm.

Reviewed-by: Wainer dos Santos Moschetta 



diff --git a/MAINTAINERS b/MAINTAINERS
index f75fa2a7142..9a02d44f997 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1166,6 +1166,7 @@ M: Huacai Chen 
  R: Jiaxun Yang 
  S: Maintained
  F: hw/intc/loongson_liointc.c
+F: tests/acceptance/machine_mips_loongson3v.py
  
  Boston

  M: Paul Burton 
diff --git a/tests/acceptance/machine_mips_loongson3v.py 
b/tests/acceptance/machine_mips_loongson3v.py
new file mode 100644
index 000..8e698bbc99b
--- /dev/null
+++ b/tests/acceptance/machine_mips_loongson3v.py
@@ -0,0 +1,66 @@
+# Functional tests for the Generic Loongson-3 Platform.
+#
+# Copyright (c) 2020 Philippe Mathieu-Daudé 
+#
+# This work is licensed under the terms of the GNU GPL, version 2 or later.
+# See the COPYING file in the top-level directory.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+import os
+import time
+
+from avocado import skipUnless
+from avocado_qemu import Test
+from avocado_qemu import wait_for_console_pattern
+
+class MipsFuloong3(Test):
+
+timeout = 60
+
+@skipUnless(os.getenv('PMON_PATH'), 'PMON_PATH not available')
+@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+def test_pmon_BLD_serial_console(self):
+"""
+:avocado: tags=arch:mips64el
+:avocado: tags=endian:little
+:avocado: tags=machine:loongson3-virt
+:avocado: tags=cpu:Loongson-3A1000
+:avocado: tags=device:liointc
+:avocado: tags=device:goldfish_rtc
+"""
+pmon_name = 'pmon_BLD-3A3000-780EMATX-1w-V1.10.bin'
+pmon_hash = '38916ee03ed09a86997b40c687c83e92'
+pmon_path = self.fetch_asset('file://' + os.path.join(
+os.getenv('PMON_PATH'), pmon_name),
+ asset_hash=pmon_hash, algorithm='md5')
+
+self.vm.set_console()
+self.vm.add_args('-bios', pmon_path)
+self.vm.launch()
+wait_for_console_pattern(self, 'PMON2000 MIPS Initializing. 
Standby...')
+wait_for_console_pattern(self, 'Shut down other cores')
+wait_for_console_pattern(self, 'Waiting HyperTransport bus to be up.')
+
+@skipUnless(os.getenv('PMON_PATH'), 'PMON_PATH not available')
+@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+def test_pmon_A1101_serial_console(self):
+"""
+:avocado: tags=arch:mips64el
+:avocado: tags=endian:little
+:avocado: tags=machine:loongson3-virt
+:avocado: tags=cpu:Loongson-3A1000
+:avocado: tags=device:liointc
+:avocado: tags=device:goldfish_rtc
+"""
+pmon_name = 'pmon-A1101-2.0.8.bin'
+pmon_hash = 'cc40276213

Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2020-12-18 Thread Philippe Mathieu-Daudé
On 12/17/20 4:36 AM, Jiaxun Yang wrote:
> 在 2020/12/17 上午2:17, Philippe Mathieu-Daudé 写道:
>> Test the PMON firmware. As the firmware is not redistributable,
>> it has to be downloaded manually first. Then it can be used by
>> providing its path via the PMON_PATH environment variable:
> 
> We have a PMON port for loongson3-virt machine[1] and it's redistributable.
> 
> You can also fetch prebuilt binary from GitHub action artifacts, I can
> also make
> a release on GitHub to make it easier.

It would be easier indeed, because I can not fetch a job artifact
without using credential. Maybe we can, but I already exhausted
the time I had to test Huacai series, so for now I'll start with
offline testing.

> 
> Thanks.
> 
> [1] https://github.com/loongson-community/pmon
> 
> - Jiaxun
>>
>>    $ AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
>>  PMON_PATH=/images/pmon \
>>  avocado --show=app,console \
>>    run -t machine:loongson3-virt tests/acceptance
>>    JOB ID : 363e66a2d20b1c0e3f515653f9137483b83b2984
>>    JOB LOG    :
>> /home/phil/avocado/job-results/job-2020-12-16T19.02-363e66a/job.log
>>     (1/2)
>> tests/acceptance/machine_mips_fuloong3.py:MipsFuloong3.test_pmon_BLD_serial_console:
>>
>>    console: PMON2000 MIPS Initializing. Standby...
>>    console: 
>>    console: Shut down other cores
>>    console: 0xbfe00190  : 
>>    console: CPU CLK SEL : 
>>    console: MEM CLK SEL : 
>>    console: Change the driver
>>    console: Soft CLK SEL adjust begin
>>    console: HT :
>>    console: DDR_DIV:0002
>>    console: BBGEN start  :
>>    console: BBGEN config value  :
>>    console: MC RESET
>>    console: Fix L1xbar illegal access at NODE 0
>>    console: Fix L2xbar in NODE 0
>>    console: 32 bit PCI space translate to 64 bit HT space
>>    console: Waiting HyperTransport bus to be up.
>>    PASS (0.10 s)
>>     (2/2)
>> tests/acceptance/machine_mips_fuloong3.py:MipsFuloong3.test_pmon_A1101_serial_console:
>>
>>    console: PMON2000 MIPS Initializing. Standby...
>>    console: 0xbfe00190  : 
>>    console: CPU CLK SEL : 
>>    console: CPU clk frequency = SYSCLK x 0x001e /  1
>>    console: MEM CLK SEL : 
>>    console: DDR clk frequency = MEMCLK x 0x001e /  3
>>    console: Fix L1xbar illegal access
>>    console: Fix L2xbar illegal access
>>    console: Init tlb...
>>    console: godson2 caches found
>>    PASS (0.12 s)
>>    RESULTS    : PASS 2 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 |
>> INTERRUPT 0 | CANCEL 0
>>    JOB TIME   : 0.58 s
>>
>> Signed-off-by: Philippe Mathieu-Daudé 
>> ---
>> Based-on: <20201215125716.477023-1-chenhua...@kernel.org>
>> ---
>>   MAINTAINERS |  1 +
>>   tests/acceptance/machine_mips_loongson3v.py | 66 +
>>   2 files changed, 67 insertions(+)
>>   create mode 100644 tests/acceptance/machine_mips_loongson3v.py
>>
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index f75fa2a7142..9a02d44f997 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -1166,6 +1166,7 @@ M: Huacai Chen 
>>   R: Jiaxun Yang 
>>   S: Maintained
>>   F: hw/intc/loongson_liointc.c
>> +F: tests/acceptance/machine_mips_loongson3v.py
>>     Boston
>>   M: Paul Burton 
>> diff --git a/tests/acceptance/machine_mips_loongson3v.py
>> b/tests/acceptance/machine_mips_loongson3v.py
>> new file mode 100644
>> index 000..8e698bbc99b
>> --- /dev/null
>> +++ b/tests/acceptance/machine_mips_loongson3v.py
>> @@ -0,0 +1,66 @@
>> +# Functional tests for the Generic Loongson-3 Platform.
>> +#
>> +# Copyright (c) 2020 Philippe Mathieu-Daudé 
>> +#
>> +# This work is licensed under the terms of the GNU GPL, version 2 or
>> later.
>> +# See the COPYING file in the top-level directory.
>> +#
>> +# SPDX-License-Identifier: GPL-2.0-or-later
>> +
>> +import os
>> +import time
>> +
>> +from avocado import skipUnless
>> +from avocado_qemu import Test
>> +from avocado_qemu import wait_for_console_pattern
>> +
>> +class MipsFuloong3(Test):
>> +
>> +    timeout = 60
>> +
>> +    @skipUnless(os.getenv('PMON_PATH'), 'PMON_PATH not available')
>> +    @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted
>> code')
>> +    def test_pmon_BLD_serial_console(self):
>> +    """
>> +    :avocado: tags=arch:mips64el
>> +    :avocado: tags=endian:little
>> +    :avocado: tags=machine:loongson3-virt
>> +    :avocado: tags=cpu:Loongson-3A1000
>> +    :avocado: tags=device:liointc
>> +    :avocado: tags=device:goldfish_rtc
>> +    """
>> +    pmon_name = 'pmon_BLD-3A3000-780EMATX-1w-V1.10.bin'
>> +    pmon_hash = '38916ee03ed09a86997b40c687c83e92'
>> +    pmon_path = self.fetch_asset('file://' + os.path.join(
>> +    os.getenv('PMON_PATH'),
>> pmon_name),
>> + asset_hash=pmon_hash,
>> algorithm='md5')
>> +
>> +    self.vm.set_console()
>> +    self.v

Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2020-12-17 Thread Jiaxun Yang



于 2020年12月17日 GMT+08:00 上午2:17:59, "Philippe Mathieu-Daudé"  
写到:
>Test the PMON firmware. As the firmware is not redistributable,
>it has to be downloaded manually first. Then it can be used by
>providing its path via the PMON_PATH environment variable:

Well I have a distribution of PMON customized for loongson3-virt.

Will push it to GitHub later.


Thanks.


- Jiaxun


>
>  $ AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
>PMON_PATH=/images/pmon \
>avocado --show=app,console \
>  run -t machine:loongson3-virt tests/acceptance
>  JOB ID : 363e66a2d20b1c0e3f515653f9137483b83b2984
>  JOB LOG: 
> /home/phil/avocado/job-results/job-2020-12-16T19.02-363e66a/job.log
>   (1/2) 
> tests/acceptance/machine_mips_fuloong3.py:MipsFuloong3.test_pmon_BLD_serial_console:
>  console: PMON2000 MIPS Initializing. Standby...
>  console: 
>  console: Shut down other cores
>  console: 0xbfe00190  : 
>  console: CPU CLK SEL : 
>  console: MEM CLK SEL : 
>  console: Change the driver
>  console: Soft CLK SEL adjust begin
>  console: HT :
>  console: DDR_DIV:0002
>  console: BBGEN start  :
>  console: BBGEN config value  :
>  console: MC RESET
>  console: Fix L1xbar illegal access at NODE 0
>  console: Fix L2xbar in NODE 0
>  console: 32 bit PCI space translate to 64 bit HT space
>  console: Waiting HyperTransport bus to be up.
>  PASS (0.10 s)
>   (2/2) 
> tests/acceptance/machine_mips_fuloong3.py:MipsFuloong3.test_pmon_A1101_serial_console:
>  console: PMON2000 MIPS Initializing. Standby...
>  console: 0xbfe00190  : 
>  console: CPU CLK SEL : 
>  console: CPU clk frequency = SYSCLK x 0x001e /  1
>  console: MEM CLK SEL : 
>  console: DDR clk frequency = MEMCLK x 0x001e /  3
>  console: Fix L1xbar illegal access
>  console: Fix L2xbar illegal access
>  console: Init tlb...
>  console: godson2 caches found
>  PASS (0.12 s)
>  RESULTS: PASS 2 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | 
> CANCEL 0
>  JOB TIME   : 0.58 s
>
>Signed-off-by: Philippe Mathieu-Daudé 
>---
>Based-on: <20201215125716.477023-1-chenhua...@kernel.org>
>---
> MAINTAINERS |  1 +
> tests/acceptance/machine_mips_loongson3v.py | 66 +
> 2 files changed, 67 insertions(+)
> create mode 100644 tests/acceptance/machine_mips_loongson3v.py
>
>diff --git a/MAINTAINERS b/MAINTAINERS
>index f75fa2a7142..9a02d44f997 100644
>--- a/MAINTAINERS
>+++ b/MAINTAINERS
>@@ -1166,6 +1166,7 @@ M: Huacai Chen 
> R: Jiaxun Yang 
> S: Maintained
> F: hw/intc/loongson_liointc.c
>+F: tests/acceptance/machine_mips_loongson3v.py
> 
> Boston
> M: Paul Burton 
>diff --git a/tests/acceptance/machine_mips_loongson3v.py 
>b/tests/acceptance/machine_mips_loongson3v.py
>new file mode 100644
>index 000..8e698bbc99b
>--- /dev/null
>+++ b/tests/acceptance/machine_mips_loongson3v.py
>@@ -0,0 +1,66 @@
>+# Functional tests for the Generic Loongson-3 Platform.
>+#
>+# Copyright (c) 2020 Philippe Mathieu-Daudé 
>+#
>+# This work is licensed under the terms of the GNU GPL, version 2 or later.
>+# See the COPYING file in the top-level directory.
>+#
>+# SPDX-License-Identifier: GPL-2.0-or-later
>+
>+import os
>+import time
>+
>+from avocado import skipUnless
>+from avocado_qemu import Test
>+from avocado_qemu import wait_for_console_pattern
>+
>+class MipsFuloong3(Test):
>+
>+timeout = 60
>+
>+@skipUnless(os.getenv('PMON_PATH'), 'PMON_PATH not available')
>+@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
>+def test_pmon_BLD_serial_console(self):
>+"""
>+:avocado: tags=arch:mips64el
>+:avocado: tags=endian:little
>+:avocado: tags=machine:loongson3-virt
>+:avocado: tags=cpu:Loongson-3A1000
>+:avocado: tags=device:liointc
>+:avocado: tags=device:goldfish_rtc
>+"""
>+pmon_name = 'pmon_BLD-3A3000-780EMATX-1w-V1.10.bin'
>+pmon_hash = '38916ee03ed09a86997b40c687c83e92'
>+pmon_path = self.fetch_asset('file://' + os.path.join(
>+os.getenv('PMON_PATH'), pmon_name),
>+ asset_hash=pmon_hash, algorithm='md5')
>+
>+self.vm.set_console()
>+self.vm.add_args('-bios', pmon_path)
>+self.vm.launch()
>+wait_for_console_pattern(self, 'PMON2000 MIPS Initializing. 
>Standby...')
>+wait_for_console_pattern(self, 'Shut down other cores')
>+wait_for_console_pattern(self, 'Waiting HyperTransport bus to be up.')
>+
>+@skipUnless(os.getenv('PMON_PATH'), 'PMON_PATH not available')
>+@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
>+def test_pmon_A1101_serial_console(self):
>+"""
>+:avocado: tags=arch:mips64el
>+:avocado: tags=endian:little
>+:avocado: tags=machine:loongson3-virt
>+:avocado: tags=cpu:Loongson-3A1000
>+

Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2020-12-16 Thread Jiaxun Yang




在 2020/12/17 上午2:17, Philippe Mathieu-Daudé 写道:

Test the PMON firmware. As the firmware is not redistributable,
it has to be downloaded manually first. Then it can be used by
providing its path via the PMON_PATH environment variable:


We have a PMON port for loongson3-virt machine[1] and it's redistributable.

You can also fetch prebuilt binary from GitHub action artifacts, I can 
also make

a release on GitHub to make it easier.

Thanks.

[1] https://github.com/loongson-community/pmon

- Jiaxun


   $ AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
 PMON_PATH=/images/pmon \
 avocado --show=app,console \
   run -t machine:loongson3-virt tests/acceptance
   JOB ID : 363e66a2d20b1c0e3f515653f9137483b83b2984
   JOB LOG: 
/home/phil/avocado/job-results/job-2020-12-16T19.02-363e66a/job.log
(1/2) 
tests/acceptance/machine_mips_fuloong3.py:MipsFuloong3.test_pmon_BLD_serial_console:
   console: PMON2000 MIPS Initializing. Standby...
   console: 
   console: Shut down other cores
   console: 0xbfe00190  : 
   console: CPU CLK SEL : 
   console: MEM CLK SEL : 
   console: Change the driver
   console: Soft CLK SEL adjust begin
   console: HT :
   console: DDR_DIV:0002
   console: BBGEN start  :
   console: BBGEN config value  :
   console: MC RESET
   console: Fix L1xbar illegal access at NODE 0
   console: Fix L2xbar in NODE 0
   console: 32 bit PCI space translate to 64 bit HT space
   console: Waiting HyperTransport bus to be up.
   PASS (0.10 s)
(2/2) 
tests/acceptance/machine_mips_fuloong3.py:MipsFuloong3.test_pmon_A1101_serial_console:
   console: PMON2000 MIPS Initializing. Standby...
   console: 0xbfe00190  : 
   console: CPU CLK SEL : 
   console: CPU clk frequency = SYSCLK x 0x001e /  1
   console: MEM CLK SEL : 
   console: DDR clk frequency = MEMCLK x 0x001e /  3
   console: Fix L1xbar illegal access
   console: Fix L2xbar illegal access
   console: Init tlb...
   console: godson2 caches found
   PASS (0.12 s)
   RESULTS: PASS 2 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | 
CANCEL 0
   JOB TIME   : 0.58 s

Signed-off-by: Philippe Mathieu-Daudé 
---
Based-on: <20201215125716.477023-1-chenhua...@kernel.org>
---
  MAINTAINERS |  1 +
  tests/acceptance/machine_mips_loongson3v.py | 66 +
  2 files changed, 67 insertions(+)
  create mode 100644 tests/acceptance/machine_mips_loongson3v.py

diff --git a/MAINTAINERS b/MAINTAINERS
index f75fa2a7142..9a02d44f997 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1166,6 +1166,7 @@ M: Huacai Chen 
  R: Jiaxun Yang 
  S: Maintained
  F: hw/intc/loongson_liointc.c
+F: tests/acceptance/machine_mips_loongson3v.py
  
  Boston

  M: Paul Burton 
diff --git a/tests/acceptance/machine_mips_loongson3v.py 
b/tests/acceptance/machine_mips_loongson3v.py
new file mode 100644
index 000..8e698bbc99b
--- /dev/null
+++ b/tests/acceptance/machine_mips_loongson3v.py
@@ -0,0 +1,66 @@
+# Functional tests for the Generic Loongson-3 Platform.
+#
+# Copyright (c) 2020 Philippe Mathieu-Daudé 
+#
+# This work is licensed under the terms of the GNU GPL, version 2 or later.
+# See the COPYING file in the top-level directory.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+import os
+import time
+
+from avocado import skipUnless
+from avocado_qemu import Test
+from avocado_qemu import wait_for_console_pattern
+
+class MipsFuloong3(Test):
+
+timeout = 60
+
+@skipUnless(os.getenv('PMON_PATH'), 'PMON_PATH not available')
+@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+def test_pmon_BLD_serial_console(self):
+"""
+:avocado: tags=arch:mips64el
+:avocado: tags=endian:little
+:avocado: tags=machine:loongson3-virt
+:avocado: tags=cpu:Loongson-3A1000
+:avocado: tags=device:liointc
+:avocado: tags=device:goldfish_rtc
+"""
+pmon_name = 'pmon_BLD-3A3000-780EMATX-1w-V1.10.bin'
+pmon_hash = '38916ee03ed09a86997b40c687c83e92'
+pmon_path = self.fetch_asset('file://' + os.path.join(
+os.getenv('PMON_PATH'), pmon_name),
+ asset_hash=pmon_hash, algorithm='md5')
+
+self.vm.set_console()
+self.vm.add_args('-bios', pmon_path)
+self.vm.launch()
+wait_for_console_pattern(self, 'PMON2000 MIPS Initializing. 
Standby...')
+wait_for_console_pattern(self, 'Shut down other cores')
+wait_for_console_pattern(self, 'Waiting HyperTransport bus to be up.')
+
+@skipUnless(os.getenv('PMON_PATH'), 'PMON_PATH not available')
+@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+def test_pmon_A1101_serial_console(self):
+"""
+:avocado: tags=arch:mips64el
+:avocado: tags=endian:little
+:avocado: tags=machine:loongson3-virt
+

[PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU

2020-12-16 Thread Philippe Mathieu-Daudé
Test the PMON firmware. As the firmware is not redistributable,
it has to be downloaded manually first. Then it can be used by
providing its path via the PMON_PATH environment variable:

  $ AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
PMON_PATH=/images/pmon \
avocado --show=app,console \
  run -t machine:loongson3-virt tests/acceptance
  JOB ID : 363e66a2d20b1c0e3f515653f9137483b83b2984
  JOB LOG: 
/home/phil/avocado/job-results/job-2020-12-16T19.02-363e66a/job.log
   (1/2) 
tests/acceptance/machine_mips_fuloong3.py:MipsFuloong3.test_pmon_BLD_serial_console:
  console: PMON2000 MIPS Initializing. Standby...
  console: 
  console: Shut down other cores
  console: 0xbfe00190  : 
  console: CPU CLK SEL : 
  console: MEM CLK SEL : 
  console: Change the driver
  console: Soft CLK SEL adjust begin
  console: HT :
  console: DDR_DIV:0002
  console: BBGEN start  :
  console: BBGEN config value  :
  console: MC RESET
  console: Fix L1xbar illegal access at NODE 0
  console: Fix L2xbar in NODE 0
  console: 32 bit PCI space translate to 64 bit HT space
  console: Waiting HyperTransport bus to be up.
  PASS (0.10 s)
   (2/2) 
tests/acceptance/machine_mips_fuloong3.py:MipsFuloong3.test_pmon_A1101_serial_console:
  console: PMON2000 MIPS Initializing. Standby...
  console: 0xbfe00190  : 
  console: CPU CLK SEL : 
  console: CPU clk frequency = SYSCLK x 0x001e /  1
  console: MEM CLK SEL : 
  console: DDR clk frequency = MEMCLK x 0x001e /  3
  console: Fix L1xbar illegal access
  console: Fix L2xbar illegal access
  console: Init tlb...
  console: godson2 caches found
  PASS (0.12 s)
  RESULTS: PASS 2 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | 
CANCEL 0
  JOB TIME   : 0.58 s

Signed-off-by: Philippe Mathieu-Daudé 
---
Based-on: <20201215125716.477023-1-chenhua...@kernel.org>
---
 MAINTAINERS |  1 +
 tests/acceptance/machine_mips_loongson3v.py | 66 +
 2 files changed, 67 insertions(+)
 create mode 100644 tests/acceptance/machine_mips_loongson3v.py

diff --git a/MAINTAINERS b/MAINTAINERS
index f75fa2a7142..9a02d44f997 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1166,6 +1166,7 @@ M: Huacai Chen 
 R: Jiaxun Yang 
 S: Maintained
 F: hw/intc/loongson_liointc.c
+F: tests/acceptance/machine_mips_loongson3v.py
 
 Boston
 M: Paul Burton 
diff --git a/tests/acceptance/machine_mips_loongson3v.py 
b/tests/acceptance/machine_mips_loongson3v.py
new file mode 100644
index 000..8e698bbc99b
--- /dev/null
+++ b/tests/acceptance/machine_mips_loongson3v.py
@@ -0,0 +1,66 @@
+# Functional tests for the Generic Loongson-3 Platform.
+#
+# Copyright (c) 2020 Philippe Mathieu-Daudé 
+#
+# This work is licensed under the terms of the GNU GPL, version 2 or later.
+# See the COPYING file in the top-level directory.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+import os
+import time
+
+from avocado import skipUnless
+from avocado_qemu import Test
+from avocado_qemu import wait_for_console_pattern
+
+class MipsFuloong3(Test):
+
+timeout = 60
+
+@skipUnless(os.getenv('PMON_PATH'), 'PMON_PATH not available')
+@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+def test_pmon_BLD_serial_console(self):
+"""
+:avocado: tags=arch:mips64el
+:avocado: tags=endian:little
+:avocado: tags=machine:loongson3-virt
+:avocado: tags=cpu:Loongson-3A1000
+:avocado: tags=device:liointc
+:avocado: tags=device:goldfish_rtc
+"""
+pmon_name = 'pmon_BLD-3A3000-780EMATX-1w-V1.10.bin'
+pmon_hash = '38916ee03ed09a86997b40c687c83e92'
+pmon_path = self.fetch_asset('file://' + os.path.join(
+os.getenv('PMON_PATH'), pmon_name),
+ asset_hash=pmon_hash, algorithm='md5')
+
+self.vm.set_console()
+self.vm.add_args('-bios', pmon_path)
+self.vm.launch()
+wait_for_console_pattern(self, 'PMON2000 MIPS Initializing. 
Standby...')
+wait_for_console_pattern(self, 'Shut down other cores')
+wait_for_console_pattern(self, 'Waiting HyperTransport bus to be up.')
+
+@skipUnless(os.getenv('PMON_PATH'), 'PMON_PATH not available')
+@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+def test_pmon_A1101_serial_console(self):
+"""
+:avocado: tags=arch:mips64el
+:avocado: tags=endian:little
+:avocado: tags=machine:loongson3-virt
+:avocado: tags=cpu:Loongson-3A1000
+:avocado: tags=device:liointc
+:avocado: tags=device:goldfish_rtc
+"""
+pmon_name = 'pmon-A1101-2.0.8.bin'
+pmon_hash = 'cc40276213cfa20922720f183b92ab61'
+pmon_path = self.fetch_asset('file://' + os.path.join(
+os.getenv('PMON_PATH'), pmon_nam