Message ID | 20210112020708.62922-1-jiaxun.yang@flygoat.com |
---|---|
State | New |
Headers | show |
Series | tests/acceptance: Test PMON with Loongson-3A1000 CPU | expand |
Hi Jiaxun, Alex, On 1/12/21 3:07 AM, Jiaxun Yang wrote: > Test booting of PMON bootloader on loongson3-virt platform. > > $ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \ > avocado --show=app,console \ > run -t machine:loongson3-virt tests/acceptance > Fetching asset from tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console > JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706 > JOB LOG : /home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log ... > console: This software may be redistributed under the BSD copyright. > console: Copyright 2000-2002, Opsycon AB, Sweden. > console: Copyright 2005, ICT CAS. > console: CPU GODSON3 BogoMIPS: 1327 > PASS (3.89 s) > RESULTS : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0 > JOB TIME : 4.38 s > > Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> > --- > MAINTAINERS | 1 + > tests/acceptance/machine_mips_loongson3v.py | 39 +++++++++++++++++++++ > 2 files changed, 40 insertions(+) > create mode 100644 tests/acceptance/machine_mips_loongson3v.py > > diff --git a/MAINTAINERS b/MAINTAINERS > index 4be087b88e..f38882f997 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -1164,6 +1164,7 @@ F: hw/intc/loongson_liointc.c > F: hw/mips/loongson3_bootp.c > F: hw/mips/loongson3_bootp.h > F: hw/mips/loongson3_virt.c > +F: tests/acceptance/machine_mips_loongson3v.py > > Boston > M: Paul Burton <paulburton@kernel.org> > diff --git a/tests/acceptance/machine_mips_loongson3v.py b/tests/acceptance/machine_mips_loongson3v.py > new file mode 100644 > index 0000000000..17a85de69f > --- /dev/null > +++ b/tests/acceptance/machine_mips_loongson3v.py > @@ -0,0 +1,39 @@ > +# Functional tests for the Generic Loongson-3 Platform. > +# > +# Copyright (c) 2020 Philippe Mathieu-Daudé <f4bug@amsat.org> 2021 Jiaxun Yang <jiaxun.yang@flygoat.com>? :D > +# > +# This work is licensed under the terms of the GNU GPL, version 2 or later. > +# See the COPYING file in the top-level directory. > +# > +# SPDX-License-Identifier: GPL-2.0-or-later > + > +import os > +import time > + > +from avocado import skipUnless > +from avocado_qemu import Test > +from avocado_qemu import wait_for_console_pattern > + > +class MipsLoongson3v(Test): > + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') The source code is published [1], you provided reproducible workflow [2] and a tag [3] with a public build artifacts [4], so my understanding is this is "trustable" binary. Alex, would it be OK to add this test without the UNTRUSTED tag (amending the links in the commit description)? [1] https://github.com/loongson-community/pmon/ [2] https://github.com/loongson-community/pmon/blob/master/.github/workflows/compile.yml [3] https://github.com/loongson-community/pmon/releases/tag/20210112 [4] https://github.com/loongson-community/pmon/actions/runs/479132723 > + def test_pmon_serial_console(self): > + """ > + :avocado: tags=arch:mips64el > + :avocado: tags=endian:little > + :avocado: tags=machine:loongson3-virt > + :avocado: tags=cpu:Loongson-3A1000 > + :avocado: tags=device:liointc > + :avocado: tags=device:goldfish_rtc > + """ > + > + pmon_hash = '7c8b45dd81ccfc55ff28f5aa267a41c3' > + pmon_path = self.fetch_asset('https://github.com/loongson-community/pmon/' > + 'releases/download/20210112/pmon-3avirt.bin', > + asset_hash=pmon_hash, algorithm='md5') > + > + self.vm.set_console() > + self.vm.add_args('-bios', pmon_path) > + self.vm.launch() > + wait_for_console_pattern(self, 'PMON2000 MIPS Initializing. Standby...') > + wait_for_console_pattern(self, 'Copy PMON to execute location done.') > + wait_for_console_pattern(self, 'CPU GODSON3 BogoMIPS:') >
Hi, On 1/11/21 11:07 PM, Jiaxun Yang wrote: > Test booting of PMON bootloader on loongson3-virt platform. > > $ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \ > avocado --show=app,console \ > run -t machine:loongson3-virt tests/acceptance > Fetching asset from tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console > JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706 > JOB LOG : /home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log > (1/1) tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console: console: PMON2000 MIPS Initializing. Standby... > console: 00000000Jump to 9fc <snip> > Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> > --- > MAINTAINERS | 1 + > tests/acceptance/machine_mips_loongson3v.py | 39 +++++++++++++++++++++ > 2 files changed, 40 insertions(+) > create mode 100644 tests/acceptance/machine_mips_loongson3v.py Allow me to use this new test as an example to start a discussion about the organization of the acceptance files. The mips64le tests currently are: $ ./venv/bin/avocado list -t arch:mips64el acceptance/ INSTRUMENTED acceptance/boot_linux_console.py:BootLinuxConsole.test_mips64el_malta INSTRUMENTED acceptance/boot_linux_console.py:BootLinuxConsole.test_mips64el_fuloong2e INSTRUMENTED acceptance/boot_linux_console.py:BootLinuxConsole.test_mips64el_malta_5KEc_cpio INSTRUMENTED acceptance/linux_ssh_mips_malta.py:LinuxSSH.test_mips_malta64el_kernel3_2_0 INSTRUMENTED acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console INSTRUMENTED acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_1core INSTRUMENTED acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_7cores INSTRUMENTED acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_8cores INSTRUMENTED acceptance/replay_kernel.py:ReplayKernelNormal.test_mips64el_malta INSTRUMENTED acceptance/replay_kernel.py:ReplayKernelSlow.test_mips64el_malta_5KEc_cpio Most of them are simple "boot linux (or firmware) and check the console" tests. The replay_kernel.py contain tests for a given feature and happen to be testing on mips64el as well. So on tests/acceptance directory we've got boot tests spread across files and mixed with "generic" feature tests. I think we should find a home for those boot tests. Maybe throw them all in a sub-directory called "boot_tests", or in arch-oriented directories (boot_tests/mips64el, boot_tests/x86_64, ...) which would make easier to reference them in the MAINTAINERS file. Any thought? > > diff --git a/MAINTAINERS b/MAINTAINERS > index 4be087b88e..f38882f997 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -1164,6 +1164,7 @@ F: hw/intc/loongson_liointc.c > F: hw/mips/loongson3_bootp.c > F: hw/mips/loongson3_bootp.h > F: hw/mips/loongson3_virt.c > +F: tests/acceptance/machine_mips_loongson3v.py > > Boston > M: Paul Burton <paulburton@kernel.org> > diff --git a/tests/acceptance/machine_mips_loongson3v.py b/tests/acceptance/machine_mips_loongson3v.py > new file mode 100644 > index 0000000000..17a85de69f > --- /dev/null > +++ b/tests/acceptance/machine_mips_loongson3v.py > @@ -0,0 +1,39 @@ > +# Functional tests for the Generic Loongson-3 Platform. > +# > +# Copyright (c) 2020 Philippe Mathieu-Daudé <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 Unused time import Thanks! - Wainer > + > +from avocado import skipUnless > +from avocado_qemu import Test > +from avocado_qemu import wait_for_console_pattern > + > +class MipsLoongson3v(Test): > + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') > + def test_pmon_serial_console(self): > + """ > + :avocado: tags=arch:mips64el > + :avocado: tags=endian:little > + :avocado: tags=machine:loongson3-virt > + :avocado: tags=cpu:Loongson-3A1000 > + :avocado: tags=device:liointc > + :avocado: tags=device:goldfish_rtc > + """ > + > + pmon_hash = '7c8b45dd81ccfc55ff28f5aa267a41c3' > + pmon_path = self.fetch_asset('https://github.com/loongson-community/pmon/' > + 'releases/download/20210112/pmon-3avirt.bin', > + asset_hash=pmon_hash, algorithm='md5' > + > + self.vm.set_console() > + self.vm.add_args('-bios', pmon_path) > + self.vm.launch() > + wait_for_console_pattern(self, 'PMON2000 MIPS Initializing. Standby...') > + wait_for_console_pattern(self, 'Copy PMON to execute location done.') > + wait_for_console_pattern(self, 'CPU GODSON3 BogoMIPS:')
On 1/12/21 3:05 PM, Wainer dos Santos Moschetta wrote: > Hi, > > On 1/11/21 11:07 PM, Jiaxun Yang wrote: >> Test booting of PMON bootloader on loongson3-virt platform. >> >> $ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \ >> avocado --show=app,console \ >> run -t machine:loongson3-virt tests/acceptance >> Fetching asset from >> tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console >> >> JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706 >> JOB LOG : >> /home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log >> (1/1) >> tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console: >> console: PMON2000 MIPS Initializing. Standby... >> console: 00000000Jump to 9fc > <snip> >> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> >> --- >> MAINTAINERS | 1 + >> tests/acceptance/machine_mips_loongson3v.py | 39 +++++++++++++++++++++ >> 2 files changed, 40 insertions(+) >> create mode 100644 tests/acceptance/machine_mips_loongson3v.py > > Allow me to use this new test as an example to start a discussion about > the organization of the acceptance files. > > The mips64le tests currently are: > > $ ./venv/bin/avocado list -t arch:mips64el acceptance/ > > INSTRUMENTED > acceptance/boot_linux_console.py:BootLinuxConsole.test_mips64el_malta > INSTRUMENTED > acceptance/boot_linux_console.py:BootLinuxConsole.test_mips64el_fuloong2e > INSTRUMENTED > acceptance/boot_linux_console.py:BootLinuxConsole.test_mips64el_malta_5KEc_cpio > > INSTRUMENTED > acceptance/linux_ssh_mips_malta.py:LinuxSSH.test_mips_malta64el_kernel3_2_0 > INSTRUMENTED > acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console > > INSTRUMENTED > acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_1core > > INSTRUMENTED > acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_7cores > > INSTRUMENTED > acceptance/machine_mips_malta.py:MaltaMachineFramebuffer.test_mips_malta_i6400_framebuffer_logo_8cores > > INSTRUMENTED > acceptance/replay_kernel.py:ReplayKernelNormal.test_mips64el_malta > INSTRUMENTED > acceptance/replay_kernel.py:ReplayKernelSlow.test_mips64el_malta_5KEc_cpio > > Most of them are simple "boot linux (or firmware) and check the console" > tests. The replay_kernel.py contain tests for a given feature and happen > to be testing on mips64el as well. So on tests/acceptance directory > we've got boot tests spread across files and mixed with "generic" > feature tests. > > I think we should find a home for those boot tests. Maybe throw them all > in a sub-directory called "boot_tests", or in arch-oriented directories > (boot_tests/mips64el, boot_tests/x86_64, ...) which would make easier to > reference them in the MAINTAINERS file. > > Any thought? [thread hijack...] A tests might be multi-arch. If you think it is easier to have the tests sorted in subfolders, go ahead :) Where is a test is not a problem. The problem we have to solve is how to relate a test with its maintainers / developers interested in it. We once said what really matters are Avocado tags. This might be an underused feature of Avocado. Maybe what we need is a script to relate test tags with MAINTAINERS? Let's say we use the 'A' tag for that: -- >8 -- diff --git a/MAINTAINERS b/MAINTAINERS index cb0656aec3d..a484d429d78 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -646,6 +646,7 @@ M: Anup Patel <anup.patel@wdc.com> M: Alistair Francis <Alistair.Francis@wdc.com> L: qemu-riscv@nongnu.org S: Maintained +A: device:goldfish_rtc F: hw/rtc/goldfish_rtc.c F: include/hw/rtc/goldfish_rtc.h @@ -1160,6 +1161,11 @@ Loongson-3 virtual platforms M: Huacai Chen <chenhuacai@kernel.org> R: Jiaxun Yang <jiaxun.yang@flygoat.com> S: Maintained +A: machine:loongson3-virt +A: cpu:Loongson-3A1000 +A: device:liointc +A: device:goldfish_rtc F: hw/intc/loongson_liointc.c F: hw/mips/loongson3_bootp.c F: hw/mips/loongson3_bootp.h --- If this test fails, it should list the maintainers of the loongson3-virt machine and the goldfish RTC. Maintainers add their tags of interest, and can Ack when a developer add a tag to their MAINTAINERS entry. Thought? :)
Philippe Mathieu-Daudé <f4bug@amsat.org> writes: > Hi Jiaxun, Alex, > > On 1/12/21 3:07 AM, Jiaxun Yang wrote: >> Test booting of PMON bootloader on loongson3-virt platform. >> >> $ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \ >> avocado --show=app,console \ >> run -t machine:loongson3-virt tests/acceptance >> Fetching asset from tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console >> JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706 >> JOB LOG : /home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log > ... >> console: This software may be redistributed under the BSD copyright. >> console: Copyright 2000-2002, Opsycon AB, Sweden. >> console: Copyright 2005, ICT CAS. >> console: CPU GODSON3 BogoMIPS: 1327 >> PASS (3.89 s) >> RESULTS : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0 >> JOB TIME : 4.38 s >> >> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> >> --- >> MAINTAINERS | 1 + >> tests/acceptance/machine_mips_loongson3v.py | 39 +++++++++++++++++++++ >> 2 files changed, 40 insertions(+) >> create mode 100644 tests/acceptance/machine_mips_loongson3v.py >> >> diff --git a/MAINTAINERS b/MAINTAINERS >> index 4be087b88e..f38882f997 100644 >> --- a/MAINTAINERS >> +++ b/MAINTAINERS >> @@ -1164,6 +1164,7 @@ F: hw/intc/loongson_liointc.c >> F: hw/mips/loongson3_bootp.c >> F: hw/mips/loongson3_bootp.h >> F: hw/mips/loongson3_virt.c >> +F: tests/acceptance/machine_mips_loongson3v.py >> >> Boston >> M: Paul Burton <paulburton@kernel.org> >> diff --git a/tests/acceptance/machine_mips_loongson3v.py b/tests/acceptance/machine_mips_loongson3v.py >> new file mode 100644 >> index 0000000000..17a85de69f >> --- /dev/null >> +++ b/tests/acceptance/machine_mips_loongson3v.py >> @@ -0,0 +1,39 @@ >> +# Functional tests for the Generic Loongson-3 Platform. >> +# >> +# Copyright (c) 2020 Philippe Mathieu-Daudé <f4bug@amsat.org> > > 2021 Jiaxun Yang <jiaxun.yang@flygoat.com>? :D > >> +# >> +# This work is licensed under the terms of the GNU GPL, version 2 or later. >> +# See the COPYING file in the top-level directory. >> +# >> +# SPDX-License-Identifier: GPL-2.0-or-later >> + >> +import os >> +import time >> + >> +from avocado import skipUnless >> +from avocado_qemu import Test >> +from avocado_qemu import wait_for_console_pattern >> + >> +class MipsLoongson3v(Test): >> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') > > The source code is published [1], you provided reproducible > workflow [2] and a tag [3] with a public build artifacts [4], > so my understanding is this is "trustable" binary. > > Alex, would it be OK to add this test without the UNTRUSTED tag > (amending the links in the commit description)? It's a subjective call. Having open source code is a minimum step to being "trusted" but really the trust is in the community that hosts the code. The upstream distros (e.g. Debian/Fedora) are trusted because people install their software on their desktops and basically give the software publisher root on their machines. There has to be a level of trust that the distros won't abuse that to steal information from their users. I personally have no idea about the loongson community because it's not one I interact with so I have no idea what sort of place it is. Is it a code dump for semi-proprietary non-upstreamed kernels or is it a place that has a good development culture with a sane security process that is responsive to problems and moderately conservative with what they merge? If you would trust your keys to a machine running this communities software then by all means treated it as a trusted source. > > [1] https://github.com/loongson-community/pmon/ > [2] > https://github.com/loongson-community/pmon/blob/master/.github/workflows/compile.yml > [3] https://github.com/loongson-community/pmon/releases/tag/20210112 > [4] https://github.com/loongson-community/pmon/actions/runs/479132723 > >> + def test_pmon_serial_console(self): >> + """ >> + :avocado: tags=arch:mips64el >> + :avocado: tags=endian:little >> + :avocado: tags=machine:loongson3-virt >> + :avocado: tags=cpu:Loongson-3A1000 >> + :avocado: tags=device:liointc >> + :avocado: tags=device:goldfish_rtc >> + """ >> + >> + pmon_hash = '7c8b45dd81ccfc55ff28f5aa267a41c3' >> + pmon_path = self.fetch_asset('https://github.com/loongson-community/pmon/' >> + 'releases/download/20210112/pmon-3avirt.bin', >> + asset_hash=pmon_hash, algorithm='md5') >> + >> + self.vm.set_console() >> + self.vm.add_args('-bios', pmon_path) >> + self.vm.launch() >> + wait_for_console_pattern(self, 'PMON2000 MIPS Initializing. Standby...') >> + wait_for_console_pattern(self, 'Copy PMON to execute location done.') >> + wait_for_console_pattern(self, 'CPU GODSON3 BogoMIPS:') >>
On 1/18/21 5:54 PM, Alex Bennée wrote: > Philippe Mathieu-Daudé <f4bug@amsat.org> writes: >> On 1/12/21 3:07 AM, Jiaxun Yang wrote: >>> Test booting of PMON bootloader on loongson3-virt platform. >>> >>> $ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \ >>> avocado --show=app,console \ >>> run -t machine:loongson3-virt tests/acceptance >>> Fetching asset from tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console >>> JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706 >>> JOB LOG : /home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log >> ... >>> console: This software may be redistributed under the BSD copyright. >>> console: Copyright 2000-2002, Opsycon AB, Sweden. >>> console: Copyright 2005, ICT CAS. >>> console: CPU GODSON3 BogoMIPS: 1327 >>> PASS (3.89 s) >>> RESULTS : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0 >>> JOB TIME : 4.38 s >>> >>> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> >>> --- >>> MAINTAINERS | 1 + >>> tests/acceptance/machine_mips_loongson3v.py | 39 +++++++++++++++++++++ >>> 2 files changed, 40 insertions(+) >>> create mode 100644 tests/acceptance/machine_mips_loongson3v.py >>> >>> diff --git a/MAINTAINERS b/MAINTAINERS >>> index 4be087b88e..f38882f997 100644 >>> --- a/MAINTAINERS >>> +++ b/MAINTAINERS >>> @@ -1164,6 +1164,7 @@ F: hw/intc/loongson_liointc.c >>> F: hw/mips/loongson3_bootp.c >>> F: hw/mips/loongson3_bootp.h >>> F: hw/mips/loongson3_virt.c >>> +F: tests/acceptance/machine_mips_loongson3v.py >>> >>> Boston >>> M: Paul Burton <paulburton@kernel.org> >>> diff --git a/tests/acceptance/machine_mips_loongson3v.py b/tests/acceptance/machine_mips_loongson3v.py >>> new file mode 100644 >>> index 0000000000..17a85de69f >>> --- /dev/null >>> +++ b/tests/acceptance/machine_mips_loongson3v.py >>> @@ -0,0 +1,39 @@ >>> +# Functional tests for the Generic Loongson-3 Platform. >>> +# >>> +# Copyright (c) 2020 Philippe Mathieu-Daudé <f4bug@amsat.org> >> >> 2021 Jiaxun Yang <jiaxun.yang@flygoat.com>? :D Jiaxun, if you agree I can update that line and queue your patch. >> >>> +# >>> +# This work is licensed under the terms of the GNU GPL, version 2 or later. >>> +# See the COPYING file in the top-level directory. >>> +# >>> +# SPDX-License-Identifier: GPL-2.0-or-later >>> + >>> +import os >>> +import time >>> + >>> +from avocado import skipUnless >>> +from avocado_qemu import Test >>> +from avocado_qemu import wait_for_console_pattern >>> + >>> +class MipsLoongson3v(Test): >>> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') >> >> The source code is published [1], you provided reproducible >> workflow [2] and a tag [3] with a public build artifacts [4], >> so my understanding is this is "trustable" binary. >> >> Alex, would it be OK to add this test without the UNTRUSTED tag >> (amending the links in the commit description)? > > It's a subjective call. Having open source code is a minimum step to > being "trusted" but really the trust is in the community that hosts the > code. The upstream distros (e.g. Debian/Fedora) are trusted because > people install their software on their desktops and basically give the > software publisher root on their machines. There has to be a level of > trust that the distros won't abuse that to steal information from their > users. > > I personally have no idea about the loongson community because it's not > one I interact with so I have no idea what sort of place it is. Is it a > code dump for semi-proprietary non-upstreamed kernels or is it a place > that has a good development culture with a sane security process that is > responsive to problems and moderately conservative with what they merge? > > If you would trust your keys to a machine running this communities > software then by all means treated it as a trusted source. Subjective call understood :) Thanks for your clear explanation, Phil.
On Tue, Jan 19, 2021, at 1:57 PM, Philippe Mathieu-Daudé wrote: > On 1/18/21 5:54 PM, Alex Bennée wrote: > > Philippe Mathieu-Daudé <f4bug@amsat.org> writes: > >> On 1/12/21 3:07 AM, Jiaxun Yang wrote: > >>> Test booting of PMON bootloader on loongson3-virt platform. > >>> > >>> $ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \ > >>> avocado --show=app,console \ > >>> run -t machine:loongson3-virt tests/acceptance > >>> Fetching asset from tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console > >>> JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706 > >>> JOB LOG : /home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log > >> ... > >>> console: This software may be redistributed under the BSD copyright. > >>> console: Copyright 2000-2002, Opsycon AB, Sweden. > >>> console: Copyright 2005, ICT CAS. > >>> console: CPU GODSON3 BogoMIPS: 1327 > >>> PASS (3.89 s) > >>> RESULTS : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0 > >>> JOB TIME : 4.38 s > >>> > >>> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> > >>> --- > >>> MAINTAINERS | 1 + > >>> tests/acceptance/machine_mips_loongson3v.py | 39 +++++++++++++++++++++ > >>> 2 files changed, 40 insertions(+) > >>> create mode 100644 tests/acceptance/machine_mips_loongson3v.py > >>> > >>> diff --git a/MAINTAINERS b/MAINTAINERS > >>> index 4be087b88e..f38882f997 100644 > >>> --- a/MAINTAINERS > >>> +++ b/MAINTAINERS > >>> @@ -1164,6 +1164,7 @@ F: hw/intc/loongson_liointc.c > >>> F: hw/mips/loongson3_bootp.c > >>> F: hw/mips/loongson3_bootp.h > >>> F: hw/mips/loongson3_virt.c > >>> +F: tests/acceptance/machine_mips_loongson3v.py > >>> > >>> Boston > >>> M: Paul Burton <paulburton@kernel.org> > >>> diff --git a/tests/acceptance/machine_mips_loongson3v.py b/tests/acceptance/machine_mips_loongson3v.py > >>> new file mode 100644 > >>> index 0000000000..17a85de69f > >>> --- /dev/null > >>> +++ b/tests/acceptance/machine_mips_loongson3v.py > >>> @@ -0,0 +1,39 @@ > >>> +# Functional tests for the Generic Loongson-3 Platform. > >>> +# > >>> +# Copyright (c) 2020 Philippe Mathieu-Daudé <f4bug@amsat.org> > >> > >> 2021 Jiaxun Yang <jiaxun.yang@flygoat.com>? :D > > Jiaxun, if you agree I can update that line and queue your patch. Please do. Thanks! - Jiaxun > > >> > >>> +# > >>> +# This work is licensed under the terms of the GNU GPL, version 2 or later. > >>> +# See the COPYING file in the top-level directory. > >>> +# > >>> +# SPDX-License-Identifier: GPL-2.0-or-later > >>> + > >>> +import os > >>> +import time > >>> + > >>> +from avocado import skipUnless > >>> +from avocado_qemu import Test > >>> +from avocado_qemu import wait_for_console_pattern > >>> + > >>> +class MipsLoongson3v(Test): > >>> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') > >> > >> The source code is published [1], you provided reproducible > >> workflow [2] and a tag [3] with a public build artifacts [4], > >> so my understanding is this is "trustable" binary. > >> > >> Alex, would it be OK to add this test without the UNTRUSTED tag > >> (amending the links in the commit description)? > > > > It's a subjective call. Having open source code is a minimum step to > > being "trusted" but really the trust is in the community that hosts the > > code. The upstream distros (e.g. Debian/Fedora) are trusted because > > people install their software on their desktops and basically give the > > software publisher root on their machines. There has to be a level of > > trust that the distros won't abuse that to steal information from their > > users. > > > > I personally have no idea about the loongson community because it's not > > one I interact with so I have no idea what sort of place it is. Is it a > > code dump for semi-proprietary non-upstreamed kernels or is it a place > > that has a good development culture with a sane security process that is > > responsive to problems and moderately conservative with what they merge? > > > > If you would trust your keys to a machine running this communities > > software then by all means treated it as a trusted source. > > Subjective call understood :) > > Thanks for your clear explanation, > > Phil. > >
On 1/19/21 7:59 AM, Jiaxun Yang wrote: > On Tue, Jan 19, 2021, at 1:57 PM, Philippe Mathieu-Daudé wrote: >> On 1/18/21 5:54 PM, Alex Bennée wrote: >>> Philippe Mathieu-Daudé <f4bug@amsat.org> writes: >>>> On 1/12/21 3:07 AM, Jiaxun Yang wrote: >>>>> Test booting of PMON bootloader on loongson3-virt platform. >>>>> >>>>> $ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \ >>>>> avocado --show=app,console \ >>>>> run -t machine:loongson3-virt tests/acceptance >>>>> Fetching asset from tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console >>>>> JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706 >>>>> JOB LOG : /home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log >>>> ... >>>>> console: This software may be redistributed under the BSD copyright. >>>>> console: Copyright 2000-2002, Opsycon AB, Sweden. >>>>> console: Copyright 2005, ICT CAS. >>>>> console: CPU GODSON3 BogoMIPS: 1327 >>>>> PASS (3.89 s) >>>>> RESULTS : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0 >>>>> JOB TIME : 4.38 s >>>>> >>>>> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> >>>>> --- >>>>> MAINTAINERS | 1 + >>>>> tests/acceptance/machine_mips_loongson3v.py | 39 +++++++++++++++++++++ >>>>> 2 files changed, 40 insertions(+) >>>>> create mode 100644 tests/acceptance/machine_mips_loongson3v.py >>>>> >>>>> diff --git a/MAINTAINERS b/MAINTAINERS >>>>> index 4be087b88e..f38882f997 100644 >>>>> --- a/MAINTAINERS >>>>> +++ b/MAINTAINERS >>>>> @@ -1164,6 +1164,7 @@ F: hw/intc/loongson_liointc.c >>>>> F: hw/mips/loongson3_bootp.c >>>>> F: hw/mips/loongson3_bootp.h >>>>> F: hw/mips/loongson3_virt.c >>>>> +F: tests/acceptance/machine_mips_loongson3v.py >>>>> >>>>> Boston >>>>> M: Paul Burton <paulburton@kernel.org> >>>>> diff --git a/tests/acceptance/machine_mips_loongson3v.py b/tests/acceptance/machine_mips_loongson3v.py >>>>> new file mode 100644 >>>>> index 0000000000..17a85de69f >>>>> --- /dev/null >>>>> +++ b/tests/acceptance/machine_mips_loongson3v.py >>>>> @@ -0,0 +1,39 @@ >>>>> +# Functional tests for the Generic Loongson-3 Platform. >>>>> +# >>>>> +# Copyright (c) 2020 Philippe Mathieu-Daudé <f4bug@amsat.org> >>>> >>>> 2021 Jiaxun Yang <jiaxun.yang@flygoat.com>? :D >> >> Jiaxun, if you agree I can update that line and queue your patch. > > Please do. Thanks! So: Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> and applied (not removing AVOCADO_ALLOW_UNTRUSTED_CODE, fixing copyright line) to mips-next. Thanks, Phil.
diff --git a/MAINTAINERS b/MAINTAINERS index 4be087b88e..f38882f997 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1164,6 +1164,7 @@ F: hw/intc/loongson_liointc.c F: hw/mips/loongson3_bootp.c F: hw/mips/loongson3_bootp.h F: hw/mips/loongson3_virt.c +F: tests/acceptance/machine_mips_loongson3v.py Boston M: Paul Burton <paulburton@kernel.org> diff --git a/tests/acceptance/machine_mips_loongson3v.py b/tests/acceptance/machine_mips_loongson3v.py new file mode 100644 index 0000000000..17a85de69f --- /dev/null +++ b/tests/acceptance/machine_mips_loongson3v.py @@ -0,0 +1,39 @@ +# Functional tests for the Generic Loongson-3 Platform. +# +# Copyright (c) 2020 Philippe Mathieu-Daudé <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 MipsLoongson3v(Test): + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') + def test_pmon_serial_console(self): + """ + :avocado: tags=arch:mips64el + :avocado: tags=endian:little + :avocado: tags=machine:loongson3-virt + :avocado: tags=cpu:Loongson-3A1000 + :avocado: tags=device:liointc + :avocado: tags=device:goldfish_rtc + """ + + pmon_hash = '7c8b45dd81ccfc55ff28f5aa267a41c3' + pmon_path = self.fetch_asset('https://github.com/loongson-community/pmon/' + 'releases/download/20210112/pmon-3avirt.bin', + asset_hash=pmon_hash, algorithm='md5') + + self.vm.set_console() + self.vm.add_args('-bios', pmon_path) + self.vm.launch() + wait_for_console_pattern(self, 'PMON2000 MIPS Initializing. Standby...') + wait_for_console_pattern(self, 'Copy PMON to execute location done.') + wait_for_console_pattern(self, 'CPU GODSON3 BogoMIPS:')
Test booting of PMON bootloader on loongson3-virt platform. $ (venv) AVOCADO_ALLOW_UNTRUSTED_CODE=1 \ avocado --show=app,console \ run -t machine:loongson3-virt tests/acceptance Fetching asset from tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console JOB ID : 8e202b3727847c9104d0d3d6546ed225d35f6706 JOB LOG : /home/flygoat/avocado/job-results/job-2021-01-12T10.02-8e202b3/job.log (1/1) tests/acceptance/machine_mips_loongson3v.py:MipsLoongson3v.test_pmon_serial_console: console: PMON2000 MIPS Initializing. Standby... console: 00000000Jump to 9fc console: Init Memory done. console: The uncache data is: console: 00000000: 5555555555555555 console: 00000008: aaaaaaaaaaaaaaaa console: 00000010: 3333333333333333 console: 00000018: cccccccccccccccc console: 00000020: 7777777777777777 console: 00000028: 8888888888888888 console: 00000030: 1111111111111111 console: 00000038: eeeeeeeeeeeeeeee console: The cached data is: console: 00000000: 5555555555555555 console: 00000008: aaaaaaaaaaaaaaaa console: 00000010: 3333333333333333 console: 00000018: cccccccccccccccc console: 00000020: 7777777777777777 console: 00000028: 8888888888888888 console: 00000030: 1111111111111111 console: 00000038: eeeeeeeeeeeeeeee console: Copy PMON to execute location... console: start = 0x8f900000 console: s0 = 0x30300000 console: _edata = 0x8f989010 console: _end = 0x8f98a028copy text section done. console: Copy PMON to execute location done. console: sp=8f8fc000 console: Uncompressing Bios............................................................................OK,Booting Bios console: FREQ console: DONE console: DEVI console: ENVI console: MAPV console: NVRAM@8f7ff898 console: STDV console: 80100000: memory between 8f7ff400-8f800000 is already been allocated,heap is already above this point console: SBDD console: P12PCIH console: PCIH console: PCID console: setting up 1 bus console: PCI bus 0 slot 1: probe...completed console: PCI bus 0 slot 1/0: vendor/product: 0x106b/0x003f (serialbus, USB, interface: 0x10, revision: 0x00) console: PCI bus 0 slot 1/0: reg 0x10 = 0xffffff00 console: PCI bus 0 slot 2: probe...completed console: PCI bus 0 slot 2/0: vendor/product: 0x1af4/0x1000 (network, ethernet, interface: 0x00, revision: 0x00) console: PCI bus 0 slot 2/0: reg 0x10 = 0xffffffe1 console: PCI bus 0 slot 2/0: reg 0x14 = 0xfffff000 console: PCI bus 0 slot 2/0: reg 0x20 = 0xffffc00c console: PCI bus 0 slot 2/0: reg 0x30 = 0xfffc0000 console: PCI bus 0 slot 3: probe...completed console: PCI bus 0 slot 4: probe...completed console: PCI bus 0 slot 5: probe...completed console: PCI bus 0 slot 6: probe...completed console: PCI bus 0 slot 7: probe...completed console: PCI bus 0 slot 8: probe...completed console: PCI bus 0 slot 9: probe...completed console: PCI bus 0 slot 10: probe...completed console: PCI bus 0 slot 11: probe...completed console: PCI bus 0 slot 12: probe...completed console: PCI bus 0 slot 13: probe...completed console: PCI bus 0 slot 14: probe...completed console: PCI bus 0 slot 15: probe...completed console: PCI bus 0 slot 16: probe...completed console: PCI bus 0 slot 17: probe...completed console: PCI bus 0 slot 18: probe...completed console: PCI bus 0 slot 19: probe...completed console: PCI bus 0 slot 20: probe...completed console: PCI bus 0 slot 21: probe...completed console: PCI bus 0 slot 22: probe...completed console: PCI bus 0 slot 23: probe...completed console: PCI bus 0 slot 24: probe...completed console: PCI bus 0 slot 25: probe...completed console: PCI bus 0 slot 26: probe...completed console: PCI bus 0 slot 27: probe...completed console: PCI bus 0 slot 28: probe...completed console: PCI bus 0 slot 29: probe...completed console: PCI bus 0 slot 30: probe...completed console: PCI bus 0 slot 31: probe...completed console: PCIS console: PCIR console: PCIW console: PCI bus 0 slot 2/0: mem @0x40000000, reg 0x30 262144 bytes console: PCI bus 0 slot 2/0: mem @0x40040000, reg 0x20 16384 bytes console: PCI bus 0 slot 2/0: mem @0x40044000, reg 0x14 4096 bytes console: PCI bus 0 slot 1/0: mem @0x40045000, reg 0x10 256 bytes console: PCI bus 0 slot 2/0: exp @0x40000000, 262144 bytes console: PCI bus 0 slot 2/0: i/o @0x00004000, reg 0x10 32 bytes console: NETI console: RTCL console: PCID console: VGAI console: memorysize=c000000,base=8f6ff508,sysMem=8f6ef500 console: in setup_int_vect!done!VESA console: vga bios init failed, rc=-1 console: in configure console: mainbus0 (root) console: localbus0 at mainbus0 console: loopdev0 at mainbus0pcibr0 at mainbus0 console: pci0 at pcibr0 bus 0 console: ohci0 at pci0 dev 1 function 0 vendor/product: 0x106b/0x003f (serialbus, USB, interface: 0x10, revision: 0x00)usb base addr : 0xc0045000, bus_base is : 0xc0000000 console: OHCI revision: 0x00000010 console: RH: a: 0x00000203 b: 0x00000000 console: early period(0x0) console: OHCI 8c01ec00 initialized ok console: New Device 0 console: usb_get_descriptor console: bLength = 12 console: bDescriptorType =1 console: bcdUSB = 110 console: bDeviceClass =9 console: bDeviceSubClass =0 console: bDeviceProtocol =0 console: bMaxPacketSize0 =8 console: set address 1 console: usb_get_descriptor console: bLength = 12 console: bDescriptorType =1 console: bcdUSB = 110 console: bDeviceClass =9 console: bDeviceSubClass =0 console: bDeviceProtocol =0 console: bMaxPacketSize0 =8 console: idVendor =0 console: idProduct =0 console: bcdDevice =0 console: iManufacturer=0 console: iProduct =1 console: iSerialNumber=0 console: bNumConfigurations=1 console: usb_get_descriptor console: usb_get_descriptor console: get_conf_no 0 Result 25, wLength 25 console: if 0, ep 0 console: bLength=9 console: bDescriptorType=2 console: wTotalLength=19 console: bNumInterfaces=1 console: bConfigurationValue=1 console: iConfiguration=0 console: bmAttributes=40 console: MaxPower=0 console: 09 04 00 00 01 09 00 00 00 07 05 81 03 02 00 ff console: ##EP epmaxpacketin[1] = 2 console: set configuration 1 console: new device strings: Mfr=0, Product=1, SerialNumber=0 console: USB device number 1 default language ID 0x409 console: Manufacturer console: Product OHCI Root Hub console: SerialNumber console: New Device 1 console: usb_get_descriptor -console: bLength = 12 console: bDescriptorType =1 console: bcdUSB = 200 console: bDeviceClass =0 console: bDeviceSubClass =0 console: bDeviceProtocol =0 console: bMaxPacketSize0 =8 console: set address 2 console: usb_get_descriptor console: bLength = 12 console: bDescriptorType =1 console: bcdUSB = 200 console: bDeviceClass =0 console: bDeviceSubClass =0 console: bDeviceProtocol =0 console: bMaxPacketSize0 =8 console: idVendor =627 console: idProduct =1 console: bcdDevice =0 console: iManufacturer=1 console: iProduct =4 console: iSerialNumber=b console: bNumConfigurations=1 console: usb_get_descriptor console: usb_get_descriptor console: get_conf_no 0 Result 34, wLength 34 console: unknown Description Type : 21 console: 09 21 11 01 00 01 22 3F 00 console: if 0, ep 0 console: bLength=9 console: bDescriptorType=2 console: wTotalLength=22 console: bNumInterfaces=1 console: bConfigurationValue=1 console: iConfiguration=8 console: bmAttributes=a0 console: MaxPower=32 console: 09 04 00 00 01 03 01 01 00 09 21 11 01 00 01 22 3f 00 07 05 81 03 08 00 0a console: ##EP epmaxpacketin[1] = 8 console: set configuration 1 console: new device strings: Mfr=1, Product=4, SerialNumber=11 console: USB device number 2 default language ID 0x409 console: Manufacturer QEMU console: Product QEMU USB Keyboard console: SerialNumber 68284-0000:00:01.0-1 console: drive at ohci0 devnum 2, Product QEMU USB Keyboard console: not configured console: New Device 2 console: usb_get_descriptor console: bLength = 12 console: bDescriptorType =1 console: bcdUSB = 200 console: bDeviceClass =0 console: bDeviceSubClass =0 console: bDeviceProtocol =0 console: bMaxPacketSize0 =8 console: set address 3 console: usb_get_descriptor console: bLength = 12 console: bDescriptorType =1 console: bcdUSB = 200 console: bDeviceClass =0 console: bDeviceSubClass =0 console: bDeviceProtocol =0 console: bMaxPacketSize0 =8 console: idVendor =627 console: idProduct =1 console: bcdDevice =0 console: iManufacturer=1 console: iProduct =3 console: iSerialNumber=a console: bNumConfigurations=1 console: usb_get_descriptor console: usb_get_descriptor console: get_conf_no 0 Result 34, wLength 34 console: unknown Description Type : 21 console: 09 21 01 00 00 01 22 4A 00 console: if 0, ep 0 console: bLength=9 console: bDescriptorType=2 console: wTotalLength=22 console: bNumInterfaces=1 console: bConfigurationValue=1 console: iConfiguration=7 console: bmAttributes=a0 console: MaxPower=32 console: 09 04 00 00 01 03 00 00 00 09 21 01 00 00 01 22 4a 00 07 05 81 03 08 00 0a console: ##EP epmaxpacketin[1] = 8 console: set configuration 1 console: new device strings: Mfr=1, Product=3, SerialNumber=10 console: USB device number 3 default language ID 0x409 console: Manufacturer QEMU console: Product QEMU USB Tablet console: SerialNumber 28754-0000:00:01.0-2 console: drive at ohci0 devnum 3, Product QEMU USB Tablet console: not configured console: drive at ohci0 devnum 1, Product OHCI Root Hub console: not configured console: vendor/product: 0x1af4/0x1000 (network, ethernet, interface: 0x00, revision: 0x00) at pci0 dev 2 function 0 not configured console: out configure console: Press <Del> to set BIOS,waiting for 3 seconds here..... |console: devconfig done. console: ifinit done. console: domaininit done. console: init_proc.... console: HSTI console: SYMI console: SBDE console: [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ console: [[ [[[[[[[[[ [[[[[ [[[[ [[[[[ [[[[[ [[[[[ [[[[[ [[[[ [[[[[ [[ console: [[ [[[[[[[[ [[[[ [[[ [[[[ [[[ [[[[ [[[[ [[[[ [[[ [[[[ [[[ [[[[ [[[ [[[[ [[ console: [[ [[[[[[[[ [[[[[[ [[[ [[[[[[ [[[ [ [[[ [[[ [[[[[[[[[[[[ [[[[[[[ [[[[[[ [[[ [ [[[ [[ console: [[ [[[[[[[[ [[[[[[ [[[ [[[[[[ [[[ [[ [[ [[[ [[[ [[[[[[[ [[[[ [[[[[[ [[[ [[ [[ [[ console: [[ [[[[[[[[ [[[[[[ [[[ [[[[[[ [[[ [[[ [ [[[ [[[[[ [[[[[[[[[[ [[[ [[[[[[ [[[ [[[ [ [[ console: [[ [[[[[[[[ [[[[ [[[ [[[[ [[[ [[[[ [[[ [[[[ [[[ [[[ [[[[ [[[[ [[[ [[[[ [[ console: [[ [[[[ [[[[[ [[[[ [[[[[ [[[[ [[[[[ [[[[[[ [[[[ [[[[[ [[ console: [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[2011 Loongson][[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ console: Configuration [Bonito,EL,NET,SCSI,IDE] console: Version: PMON2000 3.3 (Bonito) #0: Tue Dec 22 01:58:09 UTC 2020 commit b3ece66234adbf7d4e453f0ba4f326c099ac2a76 Author: Jiaxun Yang <jiaxun.yang@flygoat.com> Date: Tue Dec 22 09:51:10 2020 +0800 . console: Supported loaders [txt, srec, elf, bin] console: Supported filesystems [net, fat, fs, disk, iso9660, socket, tty, ram] console: This software may be redistributed under the BSD copyright. console: Copyright 2000-2002, Opsycon AB, Sweden. console: Copyright 2005, ICT CAS. console: CPU GODSON3 BogoMIPS: 1327 PASS (3.89 s) RESULTS : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0 JOB TIME : 4.38 s Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> --- MAINTAINERS | 1 + tests/acceptance/machine_mips_loongson3v.py | 39 +++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 tests/acceptance/machine_mips_loongson3v.py