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

Philippe Mathieu-Daudé posted 1 patch 4 years, 11 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20201216181759.933527-1-f4bug@amsat.org
There is a newer version of this series
MAINTAINERS                                 |  1 +
tests/acceptance/machine_mips_loongson3v.py | 66 +++++++++++++++++++++
2 files changed, 67 insertions(+)
create mode 100644 tests/acceptance/machine_mips_loongson3v.py
[PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU
Posted by Philippe Mathieu-Daudé 4 years, 11 months ago
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: 00000000
  console: Shut down other cores
  console: 0xbfe00190  : 0000000000000000
  console: CPU CLK SEL : 00000000
  console: MEM CLK SEL : 00000000
  console: Change the driver
  console: Soft CLK SEL adjust begin
  console: HT         :00000000
  console: DDR_DIV:00000002
  console: BBGEN start  :
  console: BBGEN config value  :00000000
  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  : 0000000000000000
  console: CPU CLK SEL : 00000000
  console: CPU clk frequency = SYSCLK x 0x0000001e /  1
  console: MEM CLK SEL : 00000000
  console: DDR clk frequency = MEMCLK x 0x0000001e /  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é <f4bug@amsat.org>
---
Based-on: <20201215125716.477023-1-chenhuacai@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 <chenhuacai@kernel.org>
 R: Jiaxun Yang <jiaxun.yang@flygoat.com>
 S: Maintained
 F: hw/intc/loongson_liointc.c
+F: tests/acceptance/machine_mips_loongson3v.py
 
 Boston
 M: Paul Burton <paulburton@kernel.org>
diff --git a/tests/acceptance/machine_mips_loongson3v.py b/tests/acceptance/machine_mips_loongson3v.py
new file mode 100644
index 00000000000..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é <f4bug@amsat.org>
+#
+# 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_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, 'godson2 caches found')
-- 
2.26.2

Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU
Posted by Jiaxun Yang 4 years, 11 months ago

于 2020年12月17日 GMT+08:00 上午2:17:59, "Philippe Mathieu-Daudé" <f4bug@amsat.org> 写到:
>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: 00000000
>  console: Shut down other cores
>  console: 0xbfe00190  : 0000000000000000
>  console: CPU CLK SEL : 00000000
>  console: MEM CLK SEL : 00000000
>  console: Change the driver
>  console: Soft CLK SEL adjust begin
>  console: HT         :00000000
>  console: DDR_DIV:00000002
>  console: BBGEN start  :
>  console: BBGEN config value  :00000000
>  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  : 0000000000000000
>  console: CPU CLK SEL : 00000000
>  console: CPU clk frequency = SYSCLK x 0x0000001e /  1
>  console: MEM CLK SEL : 00000000
>  console: DDR clk frequency = MEMCLK x 0x0000001e /  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é <f4bug@amsat.org>
>---
>Based-on: <20201215125716.477023-1-chenhuacai@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 <chenhuacai@kernel.org>
> R: Jiaxun Yang <jiaxun.yang@flygoat.com>
> S: Maintained
> F: hw/intc/loongson_liointc.c
>+F: tests/acceptance/machine_mips_loongson3v.py
> 
> Boston
> M: Paul Burton <paulburton@kernel.org>
>diff --git a/tests/acceptance/machine_mips_loongson3v.py b/tests/acceptance/machine_mips_loongson3v.py
>new file mode 100644
>index 00000000000..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é <f4bug@amsat.org>
>+#
>+# 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_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, 'godson2 caches found')

Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU
Posted by Jiaxun Yang 4 years, 11 months ago

在 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: 00000000
>    console: Shut down other cores
>    console: 0xbfe00190  : 0000000000000000
>    console: CPU CLK SEL : 00000000
>    console: MEM CLK SEL : 00000000
>    console: Change the driver
>    console: Soft CLK SEL adjust begin
>    console: HT         :00000000
>    console: DDR_DIV:00000002
>    console: BBGEN start  :
>    console: BBGEN config value  :00000000
>    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  : 0000000000000000
>    console: CPU CLK SEL : 00000000
>    console: CPU clk frequency = SYSCLK x 0x0000001e /  1
>    console: MEM CLK SEL : 00000000
>    console: DDR clk frequency = MEMCLK x 0x0000001e /  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é <f4bug@amsat.org>
> ---
> Based-on: <20201215125716.477023-1-chenhuacai@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 <chenhuacai@kernel.org>
>   R: Jiaxun Yang <jiaxun.yang@flygoat.com>
>   S: Maintained
>   F: hw/intc/loongson_liointc.c
> +F: tests/acceptance/machine_mips_loongson3v.py
>   
>   Boston
>   M: Paul Burton <paulburton@kernel.org>
> diff --git a/tests/acceptance/machine_mips_loongson3v.py b/tests/acceptance/machine_mips_loongson3v.py
> new file mode 100644
> index 00000000000..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é <f4bug@amsat.org>
> +#
> +# 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_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, 'godson2 caches found')

Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU
Posted by Philippe Mathieu-Daudé 4 years, 11 months ago
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: 00000000
>>    console: Shut down other cores
>>    console: 0xbfe00190  : 0000000000000000
>>    console: CPU CLK SEL : 00000000
>>    console: MEM CLK SEL : 00000000
>>    console: Change the driver
>>    console: Soft CLK SEL adjust begin
>>    console: HT         :00000000
>>    console: DDR_DIV:00000002
>>    console: BBGEN start  :
>>    console: BBGEN config value  :00000000
>>    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  : 0000000000000000
>>    console: CPU CLK SEL : 00000000
>>    console: CPU clk frequency = SYSCLK x 0x0000001e /  1
>>    console: MEM CLK SEL : 00000000
>>    console: DDR clk frequency = MEMCLK x 0x0000001e /  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é <f4bug@amsat.org>
>> ---
>> Based-on: <20201215125716.477023-1-chenhuacai@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 <chenhuacai@kernel.org>
>>   R: Jiaxun Yang <jiaxun.yang@flygoat.com>
>>   S: Maintained
>>   F: hw/intc/loongson_liointc.c
>> +F: tests/acceptance/machine_mips_loongson3v.py
>>     Boston
>>   M: Paul Burton <paulburton@kernel.org>
>> diff --git a/tests/acceptance/machine_mips_loongson3v.py
>> b/tests/acceptance/machine_mips_loongson3v.py
>> new file mode 100644
>> index 00000000000..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é <f4bug@amsat.org>
>> +#
>> +# 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_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, 'godson2 caches found')
> 

Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU
Posted by Willian Rampazzo 4 years, 11 months ago
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: 00000000
>    console: Shut down other cores
>    console: 0xbfe00190  : 0000000000000000
>    console: CPU CLK SEL : 00000000
>    console: MEM CLK SEL : 00000000
>    console: Change the driver
>    console: Soft CLK SEL adjust begin
>    console: HT         :00000000
>    console: DDR_DIV:00000002
>    console: BBGEN start  :
>    console: BBGEN config value  :00000000
>    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  : 0000000000000000
>    console: CPU CLK SEL : 00000000
>    console: CPU clk frequency = SYSCLK x 0x0000001e /  1
>    console: MEM CLK SEL : 00000000
>    console: DDR clk frequency = MEMCLK x 0x0000001e /  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é <f4bug@amsat.org>
> ---
> Based-on: <20201215125716.477023-1-chenhuacai@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 <chenhuacai@kernel.org>
>   R: Jiaxun Yang <jiaxun.yang@flygoat.com>
>   S: Maintained
>   F: hw/intc/loongson_liointc.c
> +F: tests/acceptance/machine_mips_loongson3v.py
>   
>   Boston
>   M: Paul Burton <paulburton@kernel.org>
> diff --git a/tests/acceptance/machine_mips_loongson3v.py b/tests/acceptance/machine_mips_loongson3v.py
> new file mode 100644
> index 00000000000..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é <f4bug@amsat.org>
> +#
> +# 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:liointc
> +        :avocado: tags=device:goldfish_rtc
> +        """
> +        pmon_name = 'pmon-A1101-2.0.8.bin'

Same comment here about the pointer to the binary.

> +        pmon_hash = 'cc40276213cfa20922720f183b92ab61'
> +        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, 'godson2 caches found')
> 

Inspite of a small comment,

Reviewed-by: Willian Rampazzo <willianr@redhat.com>


Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU
Posted by Huacai Chen 4 years, 11 months ago
Hi, Philippe,

On Sat, Dec 19, 2020 at 4:51 AM Willian Rampazzo <wrampazz@redhat.com> 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: 00000000
> >    console: Shut down other cores
> >    console: 0xbfe00190  : 0000000000000000
> >    console: CPU CLK SEL : 00000000
> >    console: MEM CLK SEL : 00000000
> >    console: Change the driver
> >    console: Soft CLK SEL adjust begin
> >    console: HT         :00000000
> >    console: DDR_DIV:00000002
> >    console: BBGEN start  :
> >    console: BBGEN config value  :00000000
> >    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  : 0000000000000000
> >    console: CPU CLK SEL : 00000000
> >    console: CPU clk frequency = SYSCLK x 0x0000001e /  1
> >    console: MEM CLK SEL : 00000000
> >    console: DDR clk frequency = MEMCLK x 0x0000001e /  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é <f4bug@amsat.org>
> > ---
> > Based-on: <20201215125716.477023-1-chenhuacai@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 <chenhuacai@kernel.org>
> >   R: Jiaxun Yang <jiaxun.yang@flygoat.com>
> >   S: Maintained
> >   F: hw/intc/loongson_liointc.c
> > +F: tests/acceptance/machine_mips_loongson3v.py
> >
> >   Boston
> >   M: Paul Burton <paulburton@kernel.org>
> > diff --git a/tests/acceptance/machine_mips_loongson3v.py b/tests/acceptance/machine_mips_loongson3v.py
> > new file mode 100644
> > index 00000000000..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é <f4bug@amsat.org>
> > +#
> > +# 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:liointc
> > +        :avocado: tags=device:goldfish_rtc
> > +        """
> > +        pmon_name = 'pmon-A1101-2.0.8.bin'
>
> Same comment here about the pointer to the binary.
>
> > +        pmon_hash = 'cc40276213cfa20922720f183b92ab61'
> > +        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, 'godson2 caches found')
> >
>
> Inspite of a small comment,
>
> Reviewed-by: Willian Rampazzo <willianr@redhat.com>
>

Re: [PATCH] tests/acceptance: Test PMON with Loongson-3A1000 CPU
Posted by Philippe Mathieu-Daudé 4 years, 11 months ago
On 12/21/20 1:51 PM, Huacai Chen wrote:
> Hi, Philippe,
> 
> On Sat, Dec 19, 2020 at 4:51 AM Willian Rampazzo <wrampazz@redhat.com> 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
Posted by Jiaxun Yang 4 years, 11 months ago
在 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 <wrampazz@redhat.com> 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
Posted by Wainer dos Santos Moschetta 4 years, 11 months ago
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: 00000000
>    console: Shut down other cores
>    console: 0xbfe00190  : 0000000000000000
>    console: CPU CLK SEL : 00000000
>    console: MEM CLK SEL : 00000000
>    console: Change the driver
>    console: Soft CLK SEL adjust begin
>    console: HT         :00000000
>    console: DDR_DIV:00000002
>    console: BBGEN start  :
>    console: BBGEN config value  :00000000
>    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  : 0000000000000000
>    console: CPU CLK SEL : 00000000
>    console: CPU clk frequency = SYSCLK x 0x0000001e /  1
>    console: MEM CLK SEL : 00000000
>    console: DDR clk frequency = MEMCLK x 0x0000001e /  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é <f4bug@amsat.org>
> ---
> Based-on: <20201215125716.477023-1-chenhuacai@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 <wainersm@redhat.com>

>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index f75fa2a7142..9a02d44f997 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1166,6 +1166,7 @@ M: Huacai Chen <chenhuacai@kernel.org>
>   R: Jiaxun Yang <jiaxun.yang@flygoat.com>
>   S: Maintained
>   F: hw/intc/loongson_liointc.c
> +F: tests/acceptance/machine_mips_loongson3v.py
>   
>   Boston
>   M: Paul Burton <paulburton@kernel.org>
> diff --git a/tests/acceptance/machine_mips_loongson3v.py b/tests/acceptance/machine_mips_loongson3v.py
> new file mode 100644
> index 00000000000..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é <f4bug@amsat.org>
> +#
> +# 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_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, 'godson2 caches found')