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_BIN_PATH environment variable:
$ PMON2E_BIN_PATH=~/images/fuloong2e/pmon_2e.bin \
AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
avocado --show=app,console run tests/acceptance/machine_mips_fuloong2e.py
Fetching asset from tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_linux_kernel_isa_serial
(1/3) tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_pmon_serial_console:
console: PMON2000 MIPS Initializing. Standby...
console: ERRORPC=00000000 CONFIG=00030932
console: PRID=00006302
console: Init SDRAM Done!
console: Sizing caches...
console: Init caches...
console: godson2 caches found
console: Init caches done, cfg = 00030932
console: Copy PMON to execute location...
console: copy text section done.
console: Copy PMON to execute location done.
Uncompressing Bios........................OK,Booting Bios
PASS (0.25 s)
(2/3) tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_pmon_framebuffer_console:
[...]
Uncompressing Bios........................OK,Booting Bios
console: FREQ
console: FREI
console: DONE
console: TTYI
console: TTYD
console: ENVI
console: MAPV
console: Mfg 0, Id 60
console: STDV
console: SBDD
console: PPCIH
console: PCIS
console: PCIR
console: PCIW
console: NETI
console: RTCL
console: PCID
console: VGAI
console: Default MODE_ID 2
console: starting radeon init...
console: radeon init done
console: FRBI
console: cfb_console init,fb=b4000000
console: Video: Drawing the logo ...
console: CONSOLE_SIZE 450560HSTI
PASS (4.10 s)
(3/3) tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_linux_kernel_isa_serial:
console: Linux version 2.6.27.7lemote (root@debian) (gcc version 4.1.3 20080623 (prerelease) (Debian 4.1.2-23)) #6 Fri Dec 12 00:11:25 CST 2008
console: busclock=33000000, cpuclock=-2145008360,memsize=256,highmemsize=0
console: console [early0] enabled
console: CPU revision is: 00006302 (ICT Loongson-2)
PASS (0.19 s)
RESULTS : PASS 3 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB TIME : 5.10 s
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
tests/acceptance/machine_mips_fuloong2e.py | 62 ++++++++++++++++++++++
1 file changed, 62 insertions(+)
diff --git a/tests/acceptance/machine_mips_fuloong2e.py b/tests/acceptance/machine_mips_fuloong2e.py
index 0ac285e2af1..4854ba98560 100644
--- a/tests/acceptance/machine_mips_fuloong2e.py
+++ b/tests/acceptance/machine_mips_fuloong2e.py
@@ -8,15 +8,77 @@
# 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
+from tesseract_utils import tesseract_available, tesseract_ocr
+
class MipsFuloong2e(Test):
timeout = 60
+ @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+ @skipUnless(os.getenv('PMON2E_BIN_PATH'), 'PMON2E_BIN_PATH not available')
+ def test_pmon_serial_console(self):
+ """
+ :avocado: tags=arch:mips64el
+ :avocado: tags=machine:fuloong2e
+ :avocado: tags=endian:little
+ :avocado: tags=device:bonito64
+ :avocado: tags=device:via686b
+ """
+ pmon_hash = 'c812e1695d7b2320036f3ef494976969' # v1.1.2
+ pmon_path = self.fetch_asset('file://' + os.getenv('PMON2E_BIN_PATH'),
+ 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, 'Booting Bios')
+
+ @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+ # Tesseract 4 adds a new OCR engine based on LSTM neural networks. The
+ # new version is faster and more accurate than version 3. The drawback is
+ # that it is still alpha-level software.
+ @skipUnless(tesseract_available(4), 'tesseract v4 OCR tool not available')
+ @skipUnless(os.getenv('PMON2E_BIN_PATH'), 'PMON2E_BIN_PATH not available')
+ def test_pmon_framebuffer_console(self):
+ """
+ :avocado: tags=arch:mips64el
+ :avocado: tags=machine:fuloong2e
+ :avocado: tags=endian:little
+ :avocado: tags=device:bonito64
+ :avocado: tags=device:ati-vga
+ """
+ screenshot_path = os.path.join(self.workdir, 'dump.ppm')
+
+ pmon_hash = 'c812e1695d7b2320036f3ef494976969' # v1.1.2
+ pmon_path = self.fetch_asset('file://' + os.getenv('PMON2E_BIN_PATH'),
+ asset_hash=pmon_hash, algorithm='md5')
+
+ self.vm.set_console()
+ self.vm.add_args('-bios', pmon_path,
+ '-vga', 'std',
+ '-device', 'ati-vga,model=rv100')
+ self.vm.launch()
+
+ wait_for_console_pattern(self, 'Video: Drawing the logo ...')
+ self.log.info('VM launched, waiting for logo on display')
+ time.sleep(2)
+ wait_for_console_pattern(self, 'CONSOLE_SIZE')
+ self.vm.command('human-monitor-command', command_line='stop')
+ self.vm.command('human-monitor-command',
+ command_line='screendump %s' % screenshot_path)
+
+ lines = tesseract_ocr(screenshot_path, tesseract_version=4,
+ tesseract_args='--dpi 128')
+ pmon_version = 'PNON2000 for Loongson, Version 1.1.2' # PNON is enough
+ self.assertIn(pmon_version, lines)
+
@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
@skipUnless(os.getenv('RESCUE_YL_PATH'), 'RESCUE_YL_PATH not available')
def test_linux_kernel_isa_serial(self):
--
2.31.1
On Thu, 24 Jun 2021, 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_BIN_PATH environment variable:
>
> $ PMON2E_BIN_PATH=~/images/fuloong2e/pmon_2e.bin \
> AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
> avocado --show=app,console run tests/acceptance/machine_mips_fuloong2e.py
> Fetching asset from tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_linux_kernel_isa_serial
> (1/3) tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_pmon_serial_console:
> console: PMON2000 MIPS Initializing. Standby...
> console: ERRORPC=00000000 CONFIG=00030932
> console: PRID=00006302
> console: Init SDRAM Done!
> console: Sizing caches...
> console: Init caches...
> console: godson2 caches found
> console: Init caches done, cfg = 00030932
> console: Copy PMON to execute location...
> console: copy text section done.
> console: Copy PMON to execute location done.
> Uncompressing Bios........................OK,Booting Bios
> PASS (0.25 s)
> (2/3) tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_pmon_framebuffer_console:
> [...]
> Uncompressing Bios........................OK,Booting Bios
> console: FREQ
> console: FREI
> console: DONE
> console: TTYI
> console: TTYD
> console: ENVI
> console: MAPV
> console: Mfg 0, Id 60
> console: STDV
> console: SBDD
> console: PPCIH
> console: PCIS
> console: PCIR
> console: PCIW
> console: NETI
> console: RTCL
> console: PCID
> console: VGAI
> console: Default MODE_ID 2
> console: starting radeon init...
> console: radeon init done
> console: FRBI
> console: cfb_console init,fb=b4000000
> console: Video: Drawing the logo ...
> console: CONSOLE_SIZE 450560HSTI
> PASS (4.10 s)
> (3/3) tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_linux_kernel_isa_serial:
> console: Linux version 2.6.27.7lemote (root@debian) (gcc version 4.1.3 20080623 (prerelease) (Debian 4.1.2-23)) #6 Fri Dec 12 00:11:25 CST 2008
> console: busclock=33000000, cpuclock=-2145008360,memsize=256,highmemsize=0
> console: console [early0] enabled
> console: CPU revision is: 00006302 (ICT Loongson-2)
> PASS (0.19 s)
> RESULTS : PASS 3 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
> JOB TIME : 5.10 s
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> tests/acceptance/machine_mips_fuloong2e.py | 62 ++++++++++++++++++++++
> 1 file changed, 62 insertions(+)
>
> diff --git a/tests/acceptance/machine_mips_fuloong2e.py b/tests/acceptance/machine_mips_fuloong2e.py
> index 0ac285e2af1..4854ba98560 100644
> --- a/tests/acceptance/machine_mips_fuloong2e.py
> +++ b/tests/acceptance/machine_mips_fuloong2e.py
> @@ -8,15 +8,77 @@
> # 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
>
> +from tesseract_utils import tesseract_available, tesseract_ocr
> +
> class MipsFuloong2e(Test):
>
> timeout = 60
>
> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
> + @skipUnless(os.getenv('PMON2E_BIN_PATH'), 'PMON2E_BIN_PATH not available')
> + def test_pmon_serial_console(self):
> + """
> + :avocado: tags=arch:mips64el
> + :avocado: tags=machine:fuloong2e
> + :avocado: tags=endian:little
> + :avocado: tags=device:bonito64
> + :avocado: tags=device:via686b
> + """
> + pmon_hash = 'c812e1695d7b2320036f3ef494976969' # v1.1.2
> + pmon_path = self.fetch_asset('file://' + os.getenv('PMON2E_BIN_PATH'),
> + 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, 'Booting Bios')
> +
> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
> + # Tesseract 4 adds a new OCR engine based on LSTM neural networks. The
> + # new version is faster and more accurate than version 3. The drawback is
> + # that it is still alpha-level software.
> + @skipUnless(tesseract_available(4), 'tesseract v4 OCR tool not available')
> + @skipUnless(os.getenv('PMON2E_BIN_PATH'), 'PMON2E_BIN_PATH not available')
> + def test_pmon_framebuffer_console(self):
> + """
> + :avocado: tags=arch:mips64el
> + :avocado: tags=machine:fuloong2e
> + :avocado: tags=endian:little
> + :avocado: tags=device:bonito64
> + :avocado: tags=device:ati-vga
> + """
> + screenshot_path = os.path.join(self.workdir, 'dump.ppm')
> +
> + pmon_hash = 'c812e1695d7b2320036f3ef494976969' # v1.1.2
> + pmon_path = self.fetch_asset('file://' + os.getenv('PMON2E_BIN_PATH'),
> + asset_hash=pmon_hash, algorithm='md5')
> +
> + self.vm.set_console()
> + self.vm.add_args('-bios', pmon_path,
> + '-vga', 'std',
> + '-device', 'ati-vga,model=rv100')
I think this is the default if you just drop -vga std so I don't know why
you have that in the first place but then you should not need to add
ati-vga explicitely.
Regards,
BALATON Zoltan
> + self.vm.launch()
> +
> + wait_for_console_pattern(self, 'Video: Drawing the logo ...')
> + self.log.info('VM launched, waiting for logo on display')
> + time.sleep(2)
> + wait_for_console_pattern(self, 'CONSOLE_SIZE')
> + self.vm.command('human-monitor-command', command_line='stop')
> + self.vm.command('human-monitor-command',
> + command_line='screendump %s' % screenshot_path)
> +
> + lines = tesseract_ocr(screenshot_path, tesseract_version=4,
> + tesseract_args='--dpi 128')
> + pmon_version = 'PNON2000 for Loongson, Version 1.1.2' # PNON is enough
> + self.assertIn(pmon_version, lines)
> +
> @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
> @skipUnless(os.getenv('RESCUE_YL_PATH'), 'RESCUE_YL_PATH not available')
> def test_linux_kernel_isa_serial(self):
>
On 6/24/21 10:43 PM, BALATON Zoltan wrote:
> On Thu, 24 Jun 2021, 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_BIN_PATH environment variable:
>>
>> $ PMON2E_BIN_PATH=~/images/fuloong2e/pmon_2e.bin \
>> AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
>> avocado --show=app,console run
>> tests/acceptance/machine_mips_fuloong2e.py
>> Fetching asset from
>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_linux_kernel_isa_serial
>>
>> (1/3)
>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_pmon_serial_console:
>>
>> console: PMON2000 MIPS Initializing. Standby...
>> console: ERRORPC=00000000 CONFIG=00030932
>> console: PRID=00006302
>> console: Init SDRAM Done!
>> console: Sizing caches...
>> console: Init caches...
>> console: godson2 caches found
>> console: Init caches done, cfg = 00030932
>> console: Copy PMON to execute location...
>> console: copy text section done.
>> console: Copy PMON to execute location done.
>> Uncompressing Bios........................OK,Booting Bios
>> PASS (0.25 s)
>> (2/3)
>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_pmon_framebuffer_console:
>>
>> [...]
>> Uncompressing Bios........................OK,Booting Bios
>> console: FREQ
>> console: FREI
>> console: DONE
>> console: TTYI
>> console: TTYD
>> console: ENVI
>> console: MAPV
>> console: Mfg 0, Id 60
>> console: STDV
>> console: SBDD
>> console: PPCIH
>> console: PCIS
>> console: PCIR
>> console: PCIW
>> console: NETI
>> console: RTCL
>> console: PCID
>> console: VGAI
>> console: Default MODE_ID 2
>> console: starting radeon init...
>> console: radeon init done
>> console: FRBI
>> console: cfb_console init,fb=b4000000
>> console: Video: Drawing the logo ...
>> console: CONSOLE_SIZE 450560HSTI
>> PASS (4.10 s)
>> (3/3)
>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_linux_kernel_isa_serial:
>>
>> console: Linux version 2.6.27.7lemote (root@debian) (gcc version
>> 4.1.3 20080623 (prerelease) (Debian 4.1.2-23)) #6 Fri Dec 12 00:11:25
>> CST 2008
>> console: busclock=33000000,
>> cpuclock=-2145008360,memsize=256,highmemsize=0
>> console: console [early0] enabled
>> console: CPU revision is: 00006302 (ICT Loongson-2)
>> PASS (0.19 s)
>> RESULTS : PASS 3 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT
>> 0 | CANCEL 0
>> JOB TIME : 5.10 s
>>
>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> ---
>> tests/acceptance/machine_mips_fuloong2e.py | 62 ++++++++++++++++++++++
>> 1 file changed, 62 insertions(+)
>>
>> diff --git a/tests/acceptance/machine_mips_fuloong2e.py
>> b/tests/acceptance/machine_mips_fuloong2e.py
>> index 0ac285e2af1..4854ba98560 100644
>> --- a/tests/acceptance/machine_mips_fuloong2e.py
>> +++ b/tests/acceptance/machine_mips_fuloong2e.py
>> @@ -8,15 +8,77 @@
>> # 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
>>
>> +from tesseract_utils import tesseract_available, tesseract_ocr
>> +
>> class MipsFuloong2e(Test):
>>
>> timeout = 60
>>
>> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted
>> code')
>> + @skipUnless(os.getenv('PMON2E_BIN_PATH'), 'PMON2E_BIN_PATH not
>> available')
>> + def test_pmon_serial_console(self):
>> + """
>> + :avocado: tags=arch:mips64el
>> + :avocado: tags=machine:fuloong2e
>> + :avocado: tags=endian:little
>> + :avocado: tags=device:bonito64
>> + :avocado: tags=device:via686b
>> + """
>> + pmon_hash = 'c812e1695d7b2320036f3ef494976969' # v1.1.2
>> + pmon_path = self.fetch_asset('file://' +
>> os.getenv('PMON2E_BIN_PATH'),
>> + 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, 'Booting Bios')
>> +
>> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted
>> code')
>> + # Tesseract 4 adds a new OCR engine based on LSTM neural
>> networks. The
>> + # new version is faster and more accurate than version 3. The
>> drawback is
>> + # that it is still alpha-level software.
>> + @skipUnless(tesseract_available(4), 'tesseract v4 OCR tool not
>> available')
>> + @skipUnless(os.getenv('PMON2E_BIN_PATH'), 'PMON2E_BIN_PATH not
>> available')
>> + def test_pmon_framebuffer_console(self):
>> + """
>> + :avocado: tags=arch:mips64el
>> + :avocado: tags=machine:fuloong2e
>> + :avocado: tags=endian:little
>> + :avocado: tags=device:bonito64
>> + :avocado: tags=device:ati-vga
>> + """
>> + screenshot_path = os.path.join(self.workdir, 'dump.ppm')
>> +
>> + pmon_hash = 'c812e1695d7b2320036f3ef494976969' # v1.1.2
>> + pmon_path = self.fetch_asset('file://' +
>> os.getenv('PMON2E_BIN_PATH'),
>> + asset_hash=pmon_hash,
>> algorithm='md5')
>> +
>> + self.vm.set_console()
>> + self.vm.add_args('-bios', pmon_path,
>> + '-vga', 'std',
>> + '-device', 'ati-vga,model=rv100')
>
> I think this is the default if you just drop -vga std so I don't know
> why you have that in the first place but then you should not need to add
> ati-vga explicitely.
I thought this is what you asked me here:
https://www.mail-archive.com/qemu-devel@nongnu.org/msg753832.html
Currently:
console: VGAI
console: Default MODE_ID 2
console: starting radeon init...
console: iobase=bfd0a200,mmbase=b6064000
console: mc_status=5
console: mc_status=5
console: mc_status=5
console: mc_status=5
console: ppll_div_3 = 301f4
console: Wrote: 0x00000043 0x000301f4 0x00000000 (0x00000000)
console: Wrote: rd=67, fd=500, pd=3
console: VCLK_ECP_CNTL = 000000C3
console: radeon init done
console: FRBI
console: cfb_console init,fb=b5000000
console: Video: Drawing the logo ...
console: CONSOLE_SIZE 450560HSTI
PASS (4.53 s)
Without '-vga std -device ati-vga,model=rv100':
console: VGAI
console: Default MODE_ID 2
console: starting radeon init...
INTERRUPTED: Test interrupted by SIGTERM
Runner error occurred: Timeout reached... (60.29 s)
With '-vga std':
console: VGAI
console: Default MODE_ID 2
console: starting radeon init...
console: iobase=bfd0a200,mmbase=b6064000
console: mc_status=5
console: mc_status=5
console: mc_status=5
console: mc_status=5
console: ppll_div_3 = 301f4
console: Wrote: 0x00000043 0x000301f4 0x00000000 (0x00000000)
console: Wrote: rd=67, fd=500, pd=3
console: VCLK_ECP_CNTL = 000000C3
console: radeon init done
console: FRBI
console: cfb_console init,fb=b5000000
console: Video: Drawing the logo ...
console: CONSOLE_SIZE 450560HSTI
PASS (4.34 s)
So I'll simply keep "-vga std".
Thanks,
Phil.
On Tue, 29 Jun 2021, Philippe Mathieu-Daudé wrote:
> On 6/24/21 10:43 PM, BALATON Zoltan wrote:
>> On Thu, 24 Jun 2021, 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_BIN_PATH environment variable:
>>>
>>> $ PMON2E_BIN_PATH=~/images/fuloong2e/pmon_2e.bin \
>>> AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
>>> avocado --show=app,console run
>>> tests/acceptance/machine_mips_fuloong2e.py
>>> Fetching asset from
>>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_linux_kernel_isa_serial
>>>
>>> (1/3)
>>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_pmon_serial_console:
>>>
>>> console: PMON2000 MIPS Initializing. Standby...
>>> console: ERRORPC=00000000 CONFIG=00030932
>>> console: PRID=00006302
>>> console: Init SDRAM Done!
>>> console: Sizing caches...
>>> console: Init caches...
>>> console: godson2 caches found
>>> console: Init caches done, cfg = 00030932
>>> console: Copy PMON to execute location...
>>> console: copy text section done.
>>> console: Copy PMON to execute location done.
>>> Uncompressing Bios........................OK,Booting Bios
>>> PASS (0.25 s)
>>> (2/3)
>>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_pmon_framebuffer_console:
>>>
>>> [...]
>>> Uncompressing Bios........................OK,Booting Bios
>>> console: FREQ
>>> console: FREI
>>> console: DONE
>>> console: TTYI
>>> console: TTYD
>>> console: ENVI
>>> console: MAPV
>>> console: Mfg 0, Id 60
>>> console: STDV
>>> console: SBDD
>>> console: PPCIH
>>> console: PCIS
>>> console: PCIR
>>> console: PCIW
>>> console: NETI
>>> console: RTCL
>>> console: PCID
>>> console: VGAI
>>> console: Default MODE_ID 2
>>> console: starting radeon init...
>>> console: radeon init done
>>> console: FRBI
>>> console: cfb_console init,fb=b4000000
>>> console: Video: Drawing the logo ...
>>> console: CONSOLE_SIZE 450560HSTI
>>> PASS (4.10 s)
>>> (3/3)
>>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_linux_kernel_isa_serial:
>>>
>>> console: Linux version 2.6.27.7lemote (root@debian) (gcc version
>>> 4.1.3 20080623 (prerelease) (Debian 4.1.2-23)) #6 Fri Dec 12 00:11:25
>>> CST 2008
>>> console: busclock=33000000,
>>> cpuclock=-2145008360,memsize=256,highmemsize=0
>>> console: console [early0] enabled
>>> console: CPU revision is: 00006302 (ICT Loongson-2)
>>> PASS (0.19 s)
>>> RESULTS : PASS 3 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT
>>> 0 | CANCEL 0
>>> JOB TIME : 5.10 s
>>>
>>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>> ---
>>> tests/acceptance/machine_mips_fuloong2e.py | 62 ++++++++++++++++++++++
>>> 1 file changed, 62 insertions(+)
>>>
>>> diff --git a/tests/acceptance/machine_mips_fuloong2e.py
>>> b/tests/acceptance/machine_mips_fuloong2e.py
>>> index 0ac285e2af1..4854ba98560 100644
>>> --- a/tests/acceptance/machine_mips_fuloong2e.py
>>> +++ b/tests/acceptance/machine_mips_fuloong2e.py
>>> @@ -8,15 +8,77 @@
>>> # 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
>>>
>>> +from tesseract_utils import tesseract_available, tesseract_ocr
>>> +
>>> class MipsFuloong2e(Test):
>>>
>>> timeout = 60
>>>
>>> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted
>>> code')
>>> + @skipUnless(os.getenv('PMON2E_BIN_PATH'), 'PMON2E_BIN_PATH not
>>> available')
>>> + def test_pmon_serial_console(self):
>>> + """
>>> + :avocado: tags=arch:mips64el
>>> + :avocado: tags=machine:fuloong2e
>>> + :avocado: tags=endian:little
>>> + :avocado: tags=device:bonito64
>>> + :avocado: tags=device:via686b
>>> + """
>>> + pmon_hash = 'c812e1695d7b2320036f3ef494976969' # v1.1.2
>>> + pmon_path = self.fetch_asset('file://' +
>>> os.getenv('PMON2E_BIN_PATH'),
>>> + 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, 'Booting Bios')
>>> +
>>> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted
>>> code')
>>> + # Tesseract 4 adds a new OCR engine based on LSTM neural
>>> networks. The
>>> + # new version is faster and more accurate than version 3. The
>>> drawback is
>>> + # that it is still alpha-level software.
>>> + @skipUnless(tesseract_available(4), 'tesseract v4 OCR tool not
>>> available')
>>> + @skipUnless(os.getenv('PMON2E_BIN_PATH'), 'PMON2E_BIN_PATH not
>>> available')
>>> + def test_pmon_framebuffer_console(self):
>>> + """
>>> + :avocado: tags=arch:mips64el
>>> + :avocado: tags=machine:fuloong2e
>>> + :avocado: tags=endian:little
>>> + :avocado: tags=device:bonito64
>>> + :avocado: tags=device:ati-vga
>>> + """
>>> + screenshot_path = os.path.join(self.workdir, 'dump.ppm')
>>> +
>>> + pmon_hash = 'c812e1695d7b2320036f3ef494976969' # v1.1.2
>>> + pmon_path = self.fetch_asset('file://' +
>>> os.getenv('PMON2E_BIN_PATH'),
>>> + asset_hash=pmon_hash,
>>> algorithm='md5')
>>> +
>>> + self.vm.set_console()
>>> + self.vm.add_args('-bios', pmon_path,
>>> + '-vga', 'std',
>>> + '-device', 'ati-vga,model=rv100')
>>
>> I think this is the default if you just drop -vga std so I don't know
>> why you have that in the first place but then you should not need to add
>> ati-vga explicitely.
>
> I thought this is what you asked me here:
> https://www.mail-archive.com/qemu-devel@nongnu.org/msg753832.html
No, I've said the same in that message that fuloong2e has an ati-vga as
default so no -vga option should be needed at all.
> Currently:
>
> console: VGAI
> console: Default MODE_ID 2
> console: starting radeon init...
> console: iobase=bfd0a200,mmbase=b6064000
> console: mc_status=5
> console: mc_status=5
> console: mc_status=5
> console: mc_status=5
> console: ppll_div_3 = 301f4
> console: Wrote: 0x00000043 0x000301f4 0x00000000 (0x00000000)
> console: Wrote: rd=67, fd=500, pd=3
> console: VCLK_ECP_CNTL = 000000C3
> console: radeon init done
> console: FRBI
> console: cfb_console init,fb=b5000000
> console: Video: Drawing the logo ...
> console: CONSOLE_SIZE 450560HSTI
> PASS (4.53 s)
>
> Without '-vga std -device ati-vga,model=rv100':
>
> console: VGAI
> console: Default MODE_ID 2
> console: starting radeon init...
> INTERRUPTED: Test interrupted by SIGTERM
> Runner error occurred: Timeout reached... (60.29 s)
That's strange (with the REG_MASK fixed to 0xff in bonito.c) I get:
$ qemu-system-mips64el -M fuloong2e -bios pmon_2e.bin -serial stdio
[...]
VGAI
Default MODE_ID 2
starting radeon init...
iobase=bfd0a100,mmbase=b5050000
mc_status=5
mc_status=5
mc_status=5
mc_status=5
ppll_div_3 = 301f4
Wrote: 0x00000043 0x000301f4 0x00000000 (0x00000000)
Wrote: rd=67, fd=500, pd=3
VCLK_ECP_CNTL = 000000C3
radeon init done
FRBI
cfb_console init,fb=b4000000
Video: Drawing the logo ...
CONSOLE_SIZE 450560HSTI
So I think you should not need either -vga std nor -device ati-vga as
those would add another VGA card to the one already on the board.
Regards,
BALATON Zoltan
> With '-vga std':
>
> console: VGAI
> console: Default MODE_ID 2
> console: starting radeon init...
> console: iobase=bfd0a200,mmbase=b6064000
> console: mc_status=5
> console: mc_status=5
> console: mc_status=5
> console: mc_status=5
> console: ppll_div_3 = 301f4
> console: Wrote: 0x00000043 0x000301f4 0x00000000 (0x00000000)
> console: Wrote: rd=67, fd=500, pd=3
> console: VCLK_ECP_CNTL = 000000C3
> console: radeon init done
> console: FRBI
> console: cfb_console init,fb=b5000000
> console: Video: Drawing the logo ...
> console: CONSOLE_SIZE 450560HSTI
> PASS (4.34 s)
>
> So I'll simply keep "-vga std".
>
> Thanks,
>
> Phil.
>
>
On 6/29/21 12:47 PM, BALATON Zoltan wrote:
> On Tue, 29 Jun 2021, Philippe Mathieu-Daudé wrote:
>> On 6/24/21 10:43 PM, BALATON Zoltan wrote:
>>> On Thu, 24 Jun 2021, 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_BIN_PATH environment variable:
>>>>
>>>> $ PMON2E_BIN_PATH=~/images/fuloong2e/pmon_2e.bin \
>>>> AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
>>>> avocado --show=app,console run
>>>> tests/acceptance/machine_mips_fuloong2e.py
>>>> Fetching asset from
>>>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_linux_kernel_isa_serial
>>>>
>>>>
>>>> (1/3)
>>>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_pmon_serial_console:
>>>>
>>>>
>>>> console: PMON2000 MIPS Initializing. Standby...
>>>> console: ERRORPC=00000000 CONFIG=00030932
>>>> console: PRID=00006302
>>>> console: Init SDRAM Done!
>>>> console: Sizing caches...
>>>> console: Init caches...
>>>> console: godson2 caches found
>>>> console: Init caches done, cfg = 00030932
>>>> console: Copy PMON to execute location...
>>>> console: copy text section done.
>>>> console: Copy PMON to execute location done.
>>>> Uncompressing Bios........................OK,Booting Bios
>>>> PASS (0.25 s)
>>>> (2/3)
>>>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_pmon_framebuffer_console:
>>>>
>>>>
>>>> [...]
>>>> Uncompressing Bios........................OK,Booting Bios
>>>> console: FREQ
>>>> console: FREI
>>>> console: DONE
>>>> console: TTYI
>>>> console: TTYD
>>>> console: ENVI
>>>> console: MAPV
>>>> console: Mfg 0, Id 60
>>>> console: STDV
>>>> console: SBDD
>>>> console: PPCIH
>>>> console: PCIS
>>>> console: PCIR
>>>> console: PCIW
>>>> console: NETI
>>>> console: RTCL
>>>> console: PCID
>>>> console: VGAI
>>>> console: Default MODE_ID 2
>>>> console: starting radeon init...
>>>> console: radeon init done
>>>> console: FRBI
>>>> console: cfb_console init,fb=b4000000
>>>> console: Video: Drawing the logo ...
>>>> console: CONSOLE_SIZE 450560HSTI
>>>> PASS (4.10 s)
>>>> (3/3)
>>>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_linux_kernel_isa_serial:
>>>>
>>>>
>>>> console: Linux version 2.6.27.7lemote (root@debian) (gcc version
>>>> 4.1.3 20080623 (prerelease) (Debian 4.1.2-23)) #6 Fri Dec 12 00:11:25
>>>> CST 2008
>>>> console: busclock=33000000,
>>>> cpuclock=-2145008360,memsize=256,highmemsize=0
>>>> console: console [early0] enabled
>>>> console: CPU revision is: 00006302 (ICT Loongson-2)
>>>> PASS (0.19 s)
>>>> RESULTS : PASS 3 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT
>>>> 0 | CANCEL 0
>>>> JOB TIME : 5.10 s
>>>>
>>>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>>> ---
>>>> tests/acceptance/machine_mips_fuloong2e.py | 62 ++++++++++++++++++++++
>>>> 1 file changed, 62 insertions(+)
>>>>
>>>> diff --git a/tests/acceptance/machine_mips_fuloong2e.py
>>>> b/tests/acceptance/machine_mips_fuloong2e.py
>>>> index 0ac285e2af1..4854ba98560 100644
>>>> --- a/tests/acceptance/machine_mips_fuloong2e.py
>>>> +++ b/tests/acceptance/machine_mips_fuloong2e.py
>>>> @@ -8,15 +8,77 @@
>>>> # 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
>>>>
>>>> +from tesseract_utils import tesseract_available, tesseract_ocr
>>>> +
>>>> class MipsFuloong2e(Test):
>>>>
>>>> timeout = 60
>>>>
>>>> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted
>>>> code')
>>>> + @skipUnless(os.getenv('PMON2E_BIN_PATH'), 'PMON2E_BIN_PATH not
>>>> available')
>>>> + def test_pmon_serial_console(self):
>>>> + """
>>>> + :avocado: tags=arch:mips64el
>>>> + :avocado: tags=machine:fuloong2e
>>>> + :avocado: tags=endian:little
>>>> + :avocado: tags=device:bonito64
>>>> + :avocado: tags=device:via686b
>>>> + """
>>>> + pmon_hash = 'c812e1695d7b2320036f3ef494976969' # v1.1.2
>>>> + pmon_path = self.fetch_asset('file://' +
>>>> os.getenv('PMON2E_BIN_PATH'),
>>>> + 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, 'Booting Bios')
>>>> +
>>>> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted
>>>> code')
>>>> + # Tesseract 4 adds a new OCR engine based on LSTM neural
>>>> networks. The
>>>> + # new version is faster and more accurate than version 3. The
>>>> drawback is
>>>> + # that it is still alpha-level software.
>>>> + @skipUnless(tesseract_available(4), 'tesseract v4 OCR tool not
>>>> available')
>>>> + @skipUnless(os.getenv('PMON2E_BIN_PATH'), 'PMON2E_BIN_PATH not
>>>> available')
>>>> + def test_pmon_framebuffer_console(self):
>>>> + """
>>>> + :avocado: tags=arch:mips64el
>>>> + :avocado: tags=machine:fuloong2e
>>>> + :avocado: tags=endian:little
>>>> + :avocado: tags=device:bonito64
>>>> + :avocado: tags=device:ati-vga
>>>> + """
>>>> + screenshot_path = os.path.join(self.workdir, 'dump.ppm')
>>>> +
>>>> + pmon_hash = 'c812e1695d7b2320036f3ef494976969' # v1.1.2
>>>> + pmon_path = self.fetch_asset('file://' +
>>>> os.getenv('PMON2E_BIN_PATH'),
>>>> + asset_hash=pmon_hash,
>>>> algorithm='md5')
>>>> +
>>>> + self.vm.set_console()
>>>> + self.vm.add_args('-bios', pmon_path,
>>>> + '-vga', 'std',
>>>> + '-device', 'ati-vga,model=rv100')
>>>
>>> I think this is the default if you just drop -vga std so I don't know
>>> why you have that in the first place but then you should not need to add
>>> ati-vga explicitely.
>>
>> I thought this is what you asked me here:
>> https://www.mail-archive.com/qemu-devel@nongnu.org/msg753832.html
>
> No, I've said the same in that message that fuloong2e has an ati-vga as
> default so no -vga option should be needed at all.
>
>> Currently:
>>
>> console: VGAI
>> console: Default MODE_ID 2
>> console: starting radeon init...
>> console: iobase=bfd0a200,mmbase=b6064000
>> console: mc_status=5
>> console: mc_status=5
>> console: mc_status=5
>> console: mc_status=5
>> console: ppll_div_3 = 301f4
>> console: Wrote: 0x00000043 0x000301f4 0x00000000 (0x00000000)
>> console: Wrote: rd=67, fd=500, pd=3
>> console: VCLK_ECP_CNTL = 000000C3
>> console: radeon init done
>> console: FRBI
>> console: cfb_console init,fb=b5000000
>> console: Video: Drawing the logo ...
>> console: CONSOLE_SIZE 450560HSTI
>> PASS (4.53 s)
>>
>> Without '-vga std -device ati-vga,model=rv100':
>>
>> console: VGAI
>> console: Default MODE_ID 2
>> console: starting radeon init...
>> INTERRUPTED: Test interrupted by SIGTERM
>> Runner error occurred: Timeout reached... (60.29 s)
>
> That's strange (with the REG_MASK fixed to 0xff in bonito.c) I get:
>
> $ qemu-system-mips64el -M fuloong2e -bios pmon_2e.bin -serial stdio
> [...]
> VGAI
> Default MODE_ID 2
> starting radeon init...
> iobase=bfd0a100,mmbase=b5050000
> mc_status=5
> mc_status=5
> mc_status=5
> mc_status=5
> ppll_div_3 = 301f4
> Wrote: 0x00000043 0x000301f4 0x00000000 (0x00000000)
> Wrote: rd=67, fd=500, pd=3
> VCLK_ECP_CNTL = 000000C3
> radeon init done
> FRBI
> cfb_console init,fb=b4000000
> Video: Drawing the logo ...
> CONSOLE_SIZE 450560HSTI
>
> So I think you should not need either -vga std nor -device ati-vga as
> those would add another VGA card to the one already on the board.
So after looking in git history, Avocado tests inherited iotests,
and since commit 0fd05e8dd1e ("qemu-iotests: start vms in qtest mode")
the VMs are started with -display none -vga none.
See in python/qemu/machine/machine.py:
def _base_args(self) -> List[str]:
args = ['-display', 'none', '-vga', 'none']
Which is why we have to use '-vga std' here.
Except if you disagree, I'll queue the patch using:
self.vm.add_args('-bios', pmon_path,
'-vga', 'std')
Thanks,
Phil.
On Tue, 29 Jun 2021, Philippe Mathieu-Daudé wrote:
> On 6/29/21 12:47 PM, BALATON Zoltan wrote:
>> On Tue, 29 Jun 2021, Philippe Mathieu-Daudé wrote:
>>> On 6/24/21 10:43 PM, BALATON Zoltan wrote:
>>>> On Thu, 24 Jun 2021, 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_BIN_PATH environment variable:
>>>>>
>>>>> $ PMON2E_BIN_PATH=~/images/fuloong2e/pmon_2e.bin \
>>>>> AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
>>>>> avocado --show=app,console run
>>>>> tests/acceptance/machine_mips_fuloong2e.py
>>>>> Fetching asset from
>>>>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_linux_kernel_isa_serial
>>>>>
>>>>>
>>>>> (1/3)
>>>>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_pmon_serial_console:
>>>>>
>>>>>
>>>>> console: PMON2000 MIPS Initializing. Standby...
>>>>> console: ERRORPC=00000000 CONFIG=00030932
>>>>> console: PRID=00006302
>>>>> console: Init SDRAM Done!
>>>>> console: Sizing caches...
>>>>> console: Init caches...
>>>>> console: godson2 caches found
>>>>> console: Init caches done, cfg = 00030932
>>>>> console: Copy PMON to execute location...
>>>>> console: copy text section done.
>>>>> console: Copy PMON to execute location done.
>>>>> Uncompressing Bios........................OK,Booting Bios
>>>>> PASS (0.25 s)
>>>>> (2/3)
>>>>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_pmon_framebuffer_console:
>>>>>
>>>>>
>>>>> [...]
>>>>> Uncompressing Bios........................OK,Booting Bios
>>>>> console: FREQ
>>>>> console: FREI
>>>>> console: DONE
>>>>> console: TTYI
>>>>> console: TTYD
>>>>> console: ENVI
>>>>> console: MAPV
>>>>> console: Mfg 0, Id 60
>>>>> console: STDV
>>>>> console: SBDD
>>>>> console: PPCIH
>>>>> console: PCIS
>>>>> console: PCIR
>>>>> console: PCIW
>>>>> console: NETI
>>>>> console: RTCL
>>>>> console: PCID
>>>>> console: VGAI
>>>>> console: Default MODE_ID 2
>>>>> console: starting radeon init...
>>>>> console: radeon init done
>>>>> console: FRBI
>>>>> console: cfb_console init,fb=b4000000
>>>>> console: Video: Drawing the logo ...
>>>>> console: CONSOLE_SIZE 450560HSTI
>>>>> PASS (4.10 s)
>>>>> (3/3)
>>>>> tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_linux_kernel_isa_serial:
>>>>>
>>>>>
>>>>> console: Linux version 2.6.27.7lemote (root@debian) (gcc version
>>>>> 4.1.3 20080623 (prerelease) (Debian 4.1.2-23)) #6 Fri Dec 12 00:11:25
>>>>> CST 2008
>>>>> console: busclock=33000000,
>>>>> cpuclock=-2145008360,memsize=256,highmemsize=0
>>>>> console: console [early0] enabled
>>>>> console: CPU revision is: 00006302 (ICT Loongson-2)
>>>>> PASS (0.19 s)
>>>>> RESULTS : PASS 3 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT
>>>>> 0 | CANCEL 0
>>>>> JOB TIME : 5.10 s
>>>>>
>>>>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>>>> ---
>>>>> tests/acceptance/machine_mips_fuloong2e.py | 62 ++++++++++++++++++++++
>>>>> 1 file changed, 62 insertions(+)
>>>>>
>>>>> diff --git a/tests/acceptance/machine_mips_fuloong2e.py
>>>>> b/tests/acceptance/machine_mips_fuloong2e.py
>>>>> index 0ac285e2af1..4854ba98560 100644
>>>>> --- a/tests/acceptance/machine_mips_fuloong2e.py
>>>>> +++ b/tests/acceptance/machine_mips_fuloong2e.py
>>>>> @@ -8,15 +8,77 @@
>>>>> # 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
>>>>>
>>>>> +from tesseract_utils import tesseract_available, tesseract_ocr
>>>>> +
>>>>> class MipsFuloong2e(Test):
>>>>>
>>>>> timeout = 60
>>>>>
>>>>> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted
>>>>> code')
>>>>> + @skipUnless(os.getenv('PMON2E_BIN_PATH'), 'PMON2E_BIN_PATH not
>>>>> available')
>>>>> + def test_pmon_serial_console(self):
>>>>> + """
>>>>> + :avocado: tags=arch:mips64el
>>>>> + :avocado: tags=machine:fuloong2e
>>>>> + :avocado: tags=endian:little
>>>>> + :avocado: tags=device:bonito64
>>>>> + :avocado: tags=device:via686b
>>>>> + """
>>>>> + pmon_hash = 'c812e1695d7b2320036f3ef494976969' # v1.1.2
>>>>> + pmon_path = self.fetch_asset('file://' +
>>>>> os.getenv('PMON2E_BIN_PATH'),
>>>>> + 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, 'Booting Bios')
>>>>> +
>>>>> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted
>>>>> code')
>>>>> + # Tesseract 4 adds a new OCR engine based on LSTM neural
>>>>> networks. The
>>>>> + # new version is faster and more accurate than version 3. The
>>>>> drawback is
>>>>> + # that it is still alpha-level software.
>>>>> + @skipUnless(tesseract_available(4), 'tesseract v4 OCR tool not
>>>>> available')
>>>>> + @skipUnless(os.getenv('PMON2E_BIN_PATH'), 'PMON2E_BIN_PATH not
>>>>> available')
>>>>> + def test_pmon_framebuffer_console(self):
>>>>> + """
>>>>> + :avocado: tags=arch:mips64el
>>>>> + :avocado: tags=machine:fuloong2e
>>>>> + :avocado: tags=endian:little
>>>>> + :avocado: tags=device:bonito64
>>>>> + :avocado: tags=device:ati-vga
>>>>> + """
>>>>> + screenshot_path = os.path.join(self.workdir, 'dump.ppm')
>>>>> +
>>>>> + pmon_hash = 'c812e1695d7b2320036f3ef494976969' # v1.1.2
>>>>> + pmon_path = self.fetch_asset('file://' +
>>>>> os.getenv('PMON2E_BIN_PATH'),
>>>>> + asset_hash=pmon_hash,
>>>>> algorithm='md5')
>>>>> +
>>>>> + self.vm.set_console()
>>>>> + self.vm.add_args('-bios', pmon_path,
>>>>> + '-vga', 'std',
>>>>> + '-device', 'ati-vga,model=rv100')
>>>>
>>>> I think this is the default if you just drop -vga std so I don't know
>>>> why you have that in the first place but then you should not need to add
>>>> ati-vga explicitely.
>>>
>>> I thought this is what you asked me here:
>>> https://www.mail-archive.com/qemu-devel@nongnu.org/msg753832.html
>>
>> No, I've said the same in that message that fuloong2e has an ati-vga as
>> default so no -vga option should be needed at all.
>>
>>> Currently:
>>>
>>> console: VGAI
>>> console: Default MODE_ID 2
>>> console: starting radeon init...
>>> console: iobase=bfd0a200,mmbase=b6064000
>>> console: mc_status=5
>>> console: mc_status=5
>>> console: mc_status=5
>>> console: mc_status=5
>>> console: ppll_div_3 = 301f4
>>> console: Wrote: 0x00000043 0x000301f4 0x00000000 (0x00000000)
>>> console: Wrote: rd=67, fd=500, pd=3
>>> console: VCLK_ECP_CNTL = 000000C3
>>> console: radeon init done
>>> console: FRBI
>>> console: cfb_console init,fb=b5000000
>>> console: Video: Drawing the logo ...
>>> console: CONSOLE_SIZE 450560HSTI
>>> PASS (4.53 s)
>>>
>>> Without '-vga std -device ati-vga,model=rv100':
>>>
>>> console: VGAI
>>> console: Default MODE_ID 2
>>> console: starting radeon init...
>>> INTERRUPTED: Test interrupted by SIGTERM
>>> Runner error occurred: Timeout reached... (60.29 s)
>>
>> That's strange (with the REG_MASK fixed to 0xff in bonito.c) I get:
>>
>> $ qemu-system-mips64el -M fuloong2e -bios pmon_2e.bin -serial stdio
>> [...]
>> VGAI
>> Default MODE_ID 2
>> starting radeon init...
>> iobase=bfd0a100,mmbase=b5050000
>> mc_status=5
>> mc_status=5
>> mc_status=5
>> mc_status=5
>> ppll_div_3 = 301f4
>> Wrote: 0x00000043 0x000301f4 0x00000000 (0x00000000)
>> Wrote: rd=67, fd=500, pd=3
>> VCLK_ECP_CNTL = 000000C3
>> radeon init done
>> FRBI
>> cfb_console init,fb=b4000000
>> Video: Drawing the logo ...
>> CONSOLE_SIZE 450560HSTI
>>
>> So I think you should not need either -vga std nor -device ati-vga as
>> those would add another VGA card to the one already on the board.
>
> So after looking in git history, Avocado tests inherited iotests,
> and since commit 0fd05e8dd1e ("qemu-iotests: start vms in qtest mode")
> the VMs are started with -display none -vga none.
> See in python/qemu/machine/machine.py:
>
> def _base_args(self) -> List[str]:
> args = ['-display', 'none', '-vga', 'none']
>
> Which is why we have to use '-vga std' here.
>
> Except if you disagree, I'll queue the patch using:
>
> self.vm.add_args('-bios', pmon_path,
> '-vga', 'std')
I think it's better modelling the original machine if you use the ati-vga
that the machine has instead of std vga that it doesn't. Also it tests
ati-vga that way while it doesn't with -vga std. I also don't see the
point having both. With this command I get:
$ qemu-system-mips64el -M fuloong2e -bios pmon_2e.bin -serial stdio
-display none -vga none -device ati-vga,model=rv100
VGAI
Default MODE_ID 2
starting radeon init...
iobase=bfd0a100,mmbase=b5050000
mc_status=5
mc_status=5
mc_status=5
mc_status=5
ppll_div_3 = 301f4
Wrote: 0x00000043 0x000301f4 0x00000000 (0x00000000)
Wrote: rd=67, fd=500, pd=3
VCLK_ECP_CNTL = 000000C3
radeon init done
FRBI
cfb_console init,fb=b4000000
Video: Drawing the logo ...
CONSOLE_SIZE 450560HSTI
and I think that matches the default config of the machine that -vga none
turns off. What do you need std vga for?
Regards,
BALATON Zoltan
Hi,
On 6/24/21 5:27 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_BIN_PATH environment variable:
In the code it is used PMON2E_BIN_PATH.
>
> $ PMON2E_BIN_PATH=~/images/fuloong2e/pmon_2e.bin \
> AVOCADO_ALLOW_UNTRUSTED_CODE=1 \
> avocado --show=app,console run tests/acceptance/machine_mips_fuloong2e.py
> Fetching asset from tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_linux_kernel_isa_serial
> (1/3) tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_pmon_serial_console:
> console: PMON2000 MIPS Initializing. Standby...
> console: ERRORPC=00000000 CONFIG=00030932
> console: PRID=00006302
> console: Init SDRAM Done!
> console: Sizing caches...
> console: Init caches...
> console: godson2 caches found
> console: Init caches done, cfg = 00030932
> console: Copy PMON to execute location...
> console: copy text section done.
> console: Copy PMON to execute location done.
> Uncompressing Bios........................OK,Booting Bios
> PASS (0.25 s)
> (2/3) tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_pmon_framebuffer_console:
> [...]
> Uncompressing Bios........................OK,Booting Bios
> console: FREQ
> console: FREI
> console: DONE
> console: TTYI
> console: TTYD
> console: ENVI
> console: MAPV
> console: Mfg 0, Id 60
> console: STDV
> console: SBDD
> console: PPCIH
> console: PCIS
> console: PCIR
> console: PCIW
> console: NETI
> console: RTCL
> console: PCID
> console: VGAI
> console: Default MODE_ID 2
> console: starting radeon init...
> console: radeon init done
> console: FRBI
> console: cfb_console init,fb=b4000000
> console: Video: Drawing the logo ...
> console: CONSOLE_SIZE 450560HSTI
> PASS (4.10 s)
> (3/3) tests/acceptance/machine_mips_fuloong2e.py:MipsFuloong2e.test_linux_kernel_isa_serial:
> console: Linux version 2.6.27.7lemote (root@debian) (gcc version 4.1.3 20080623 (prerelease) (Debian 4.1.2-23)) #6 Fri Dec 12 00:11:25 CST 2008
> console: busclock=33000000, cpuclock=-2145008360,memsize=256,highmemsize=0
> console: console [early0] enabled
> console: CPU revision is: 00006302 (ICT Loongson-2)
> PASS (0.19 s)
> RESULTS : PASS 3 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
> JOB TIME : 5.10 s
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> tests/acceptance/machine_mips_fuloong2e.py | 62 ++++++++++++++++++++++
> 1 file changed, 62 insertions(+)
Need to fix the commit message (or the code) as pointed above. With that,
Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
>
> diff --git a/tests/acceptance/machine_mips_fuloong2e.py b/tests/acceptance/machine_mips_fuloong2e.py
> index 0ac285e2af1..4854ba98560 100644
> --- a/tests/acceptance/machine_mips_fuloong2e.py
> +++ b/tests/acceptance/machine_mips_fuloong2e.py
> @@ -8,15 +8,77 @@
> # 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
>
> +from tesseract_utils import tesseract_available, tesseract_ocr
> +
> class MipsFuloong2e(Test):
>
> timeout = 60
>
> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
> + @skipUnless(os.getenv('PMON2E_BIN_PATH'), 'PMON2E_BIN_PATH not available')
> + def test_pmon_serial_console(self):
> + """
> + :avocado: tags=arch:mips64el
> + :avocado: tags=machine:fuloong2e
> + :avocado: tags=endian:little
> + :avocado: tags=device:bonito64
> + :avocado: tags=device:via686b
> + """
> + pmon_hash = 'c812e1695d7b2320036f3ef494976969' # v1.1.2
> + pmon_path = self.fetch_asset('file://' + os.getenv('PMON2E_BIN_PATH'),
> + 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, 'Booting Bios')
> +
> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
> + # Tesseract 4 adds a new OCR engine based on LSTM neural networks. The
> + # new version is faster and more accurate than version 3. The drawback is
> + # that it is still alpha-level software.
> + @skipUnless(tesseract_available(4), 'tesseract v4 OCR tool not available')
> + @skipUnless(os.getenv('PMON2E_BIN_PATH'), 'PMON2E_BIN_PATH not available')
> + def test_pmon_framebuffer_console(self):
> + """
> + :avocado: tags=arch:mips64el
> + :avocado: tags=machine:fuloong2e
> + :avocado: tags=endian:little
> + :avocado: tags=device:bonito64
> + :avocado: tags=device:ati-vga
> + """
> + screenshot_path = os.path.join(self.workdir, 'dump.ppm')
> +
> + pmon_hash = 'c812e1695d7b2320036f3ef494976969' # v1.1.2
> + pmon_path = self.fetch_asset('file://' + os.getenv('PMON2E_BIN_PATH'),
> + asset_hash=pmon_hash, algorithm='md5')
> +
> + self.vm.set_console()
> + self.vm.add_args('-bios', pmon_path,
> + '-vga', 'std',
> + '-device', 'ati-vga,model=rv100')
> + self.vm.launch()
> +
> + wait_for_console_pattern(self, 'Video: Drawing the logo ...')
> + self.log.info('VM launched, waiting for logo on display')
> + time.sleep(2)
> + wait_for_console_pattern(self, 'CONSOLE_SIZE')
> + self.vm.command('human-monitor-command', command_line='stop')
> + self.vm.command('human-monitor-command',
> + command_line='screendump %s' % screenshot_path)
> +
> + lines = tesseract_ocr(screenshot_path, tesseract_version=4,
> + tesseract_args='--dpi 128')
> + pmon_version = 'PNON2000 for Loongson, Version 1.1.2' # PNON is enough
> + self.assertIn(pmon_version, lines)
> +
> @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
> @skipUnless(os.getenv('RESCUE_YL_PATH'), 'RESCUE_YL_PATH not available')
> def test_linux_kernel_isa_serial(self):
© 2016 - 2026 Red Hat, Inc.