[PATCH v1 08/10] tests/functional/aarch64/test_aspeed_ast2700: Add AST2700 A2 EVB functional tests

Jamin Lin posted 10 patches 2 days, 22 hours ago
Maintainers: "Cédric Le Goater" <clg@kaod.org>, Peter Maydell <peter.maydell@linaro.org>, Steven Lee <steven_lee@aspeedtech.com>, Troy Lee <leetroy@gmail.com>, Jamin Lin <jamin_lin@aspeedtech.com>, Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley <joel@jms.id.au>, Fabiano Rosas <farosas@suse.de>, Laurent Vivier <lvivier@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>
[PATCH v1 08/10] tests/functional/aarch64/test_aspeed_ast2700: Add AST2700 A2 EVB functional tests
Posted by Jamin Lin 2 days, 22 hours ago
Add functional coverage for the AST2700 A2 EVB machine by introducing
test cases that boot and validate an OpenBMC SDK v11.00 image on
"ast2700a2-evb".

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 .../functional/aarch64/test_aspeed_ast2700.py | 44 +++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/tests/functional/aarch64/test_aspeed_ast2700.py b/tests/functional/aarch64/test_aspeed_ast2700.py
index 61373ffe5b..68e930ab72 100755
--- a/tests/functional/aarch64/test_aspeed_ast2700.py
+++ b/tests/functional/aarch64/test_aspeed_ast2700.py
@@ -86,6 +86,14 @@ def verify_openbmc_boot_and_login(self, name, enable_pcie=True):
             'https://github.com/AspeedTech-BMC/openbmc/releases/download/v11.00/ast2700-a1-dcscm-obmc.tar.gz',
             '4f8778be176ece1b57d33c4aee13bb989be114c3e4703150eaeb6f996bd5587f')
 
+    ASSET_SDK_V1100_AST2700A2 = Asset(
+            'https://github.com/AspeedTech-BMC/openbmc/releases/download/v11.00/ast2700-default-obmc.tar.gz',
+            'e2b8f043fe8063dd3b6ded93422e38bd41914dc9c3202199507652df024de4dc')
+
+    ASSET_SDK_V1100_AST2700A2_DCSCM = Asset(
+            'https://github.com/AspeedTech-BMC/openbmc/releases/download/v11.00/ast2700-dcscm-obmc.tar.gz',
+            '0e93f7976139da71fab9df7952a58bdd80650e23e7abf5853b0eb6695deb02d0')
+
     def do_ast2700_i2c_test(self, bus_id):
         bus_str = str(bus_id)
         exec_command_and_wait_for_pattern(self,
@@ -159,6 +167,18 @@ def test_aarch64_ast2700a1_evb_sdk_v11_00(self):
         self.do_ast2700_i2c_test(1)
         self.do_ast2700_pcie_test()
 
+    def test_aarch64_ast2700a2_evb_sdk_v11_00(self):
+        self.set_machine('ast2700a2-evb')
+        self.require_netdev('user')
+
+        self.archive_extract(self.ASSET_SDK_V1100_AST2700A2)
+        self.vm.add_args('-device', 'e1000e,netdev=net1,bus=pcie.2')
+        self.vm.add_args('-netdev', 'user,id=net1')
+        self.start_ast2700_test('ast2700-default', 1)
+        self.verify_openbmc_boot_and_login('ast2700-default')
+        self.do_ast2700_i2c_test(1)
+        self.do_ast2700_pcie_test()
+
     def test_aarch64_ast2700a1_evb_sdk_vbootrom_v11_00(self):
         self.set_machine('ast2700a1-evb')
         self.require_netdev('user')
@@ -170,6 +190,17 @@ def test_aarch64_ast2700a1_evb_sdk_vbootrom_v11_00(self):
         self.verify_vbootrom_firmware_flow()
         self.verify_openbmc_boot_start()
 
+    def test_aarch64_ast2700a2_evb_sdk_vbootrom_v11_00(self):
+        self.set_machine('ast2700a2-evb')
+        self.require_netdev('user')
+
+        self.archive_extract(self.ASSET_SDK_V1100_AST2700A2)
+        self.vm.add_args('-device', 'e1000e,netdev=net1,bus=pcie.2')
+        self.vm.add_args('-netdev', 'user,id=net1')
+        self.start_ast2700_test_vbootrom('ast2700-default', 1)
+        self.verify_vbootrom_firmware_flow()
+        self.verify_openbmc_boot_start()
+
     def test_aarch64_ast2700a1_evb_ioexp_v11_00(self):
         self.set_machine('ast2700a1-evb')
         self.require_netdev('user')
@@ -183,5 +214,18 @@ def test_aarch64_ast2700a1_evb_ioexp_v11_00(self):
         self.do_ast2700_i2c_test(8)
         self.do_ast2700_i2c_test(16)
 
+    def test_aarch64_ast2700a2_evb_ioexp_v11_00(self):
+        self.set_machine('ast2700a2-evb')
+        self.require_netdev('user')
+
+        self.archive_extract(self.ASSET_SDK_V1100_AST2700A2_DCSCM)
+        self.vm.set_machine('ast2700a2-evb,fmc-model=w25q512jv')
+        self.vm.add_args('-device',
+                         'tmp105,bus=ioexp0.0,address=0x4d,id=tmp-test-16')
+        self.start_ast2700_test('ast2700-dcscm', 8)
+        self.verify_openbmc_boot_and_login('ast2700-dcscm', False)
+        self.do_ast2700_i2c_test(8)
+        self.do_ast2700_i2c_test(16)
+
 if __name__ == '__main__':
     QemuSystemTest.main()
-- 
2.43.0
Re: [PATCH v1 08/10] tests/functional/aarch64/test_aspeed_ast2700: Add AST2700 A2 EVB functional tests
Posted by Cédric Le Goater 2 days, 18 hours ago
+ Thomas

On 2/6/26 06:33, Jamin Lin wrote:
> Add functional coverage for the AST2700 A2 EVB machine by introducing
> test cases that boot and validate an OpenBMC SDK v11.00 image on
> "ast2700a2-evb".

I wonder if we need to test both machines. The test is already quite long.

On my test system :

   qemu:func-aarch64-aspeed_ast2700             OK              119.68s   3 subtests passed

With both machines :

   qemu:func-aarch64-aspeed_ast2700             OK              219.79s   6 subtests passed

Thanks,

C.


> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
> ---
>   .../functional/aarch64/test_aspeed_ast2700.py | 44 +++++++++++++++++++
>   1 file changed, 44 insertions(+)
> 
> diff --git a/tests/functional/aarch64/test_aspeed_ast2700.py b/tests/functional/aarch64/test_aspeed_ast2700.py
> index 61373ffe5b..68e930ab72 100755
> --- a/tests/functional/aarch64/test_aspeed_ast2700.py
> +++ b/tests/functional/aarch64/test_aspeed_ast2700.py
> @@ -86,6 +86,14 @@ def verify_openbmc_boot_and_login(self, name, enable_pcie=True):
>               'https://github.com/AspeedTech-BMC/openbmc/releases/download/v11.00/ast2700-a1-dcscm-obmc.tar.gz',
>               '4f8778be176ece1b57d33c4aee13bb989be114c3e4703150eaeb6f996bd5587f')
>   
> +    ASSET_SDK_V1100_AST2700A2 = Asset(
> +            'https://github.com/AspeedTech-BMC/openbmc/releases/download/v11.00/ast2700-default-obmc.tar.gz',
> +            'e2b8f043fe8063dd3b6ded93422e38bd41914dc9c3202199507652df024de4dc')
> +
> +    ASSET_SDK_V1100_AST2700A2_DCSCM = Asset(
> +            'https://github.com/AspeedTech-BMC/openbmc/releases/download/v11.00/ast2700-dcscm-obmc.tar.gz',
> +            '0e93f7976139da71fab9df7952a58bdd80650e23e7abf5853b0eb6695deb02d0')
> +
>       def do_ast2700_i2c_test(self, bus_id):
>           bus_str = str(bus_id)
>           exec_command_and_wait_for_pattern(self,
> @@ -159,6 +167,18 @@ def test_aarch64_ast2700a1_evb_sdk_v11_00(self):
>           self.do_ast2700_i2c_test(1)
>           self.do_ast2700_pcie_test()
>   
> +    def test_aarch64_ast2700a2_evb_sdk_v11_00(self):
> +        self.set_machine('ast2700a2-evb')
> +        self.require_netdev('user')
> +
> +        self.archive_extract(self.ASSET_SDK_V1100_AST2700A2)
> +        self.vm.add_args('-device', 'e1000e,netdev=net1,bus=pcie.2')
> +        self.vm.add_args('-netdev', 'user,id=net1')
> +        self.start_ast2700_test('ast2700-default', 1)
> +        self.verify_openbmc_boot_and_login('ast2700-default')
> +        self.do_ast2700_i2c_test(1)
> +        self.do_ast2700_pcie_test()
> +
>       def test_aarch64_ast2700a1_evb_sdk_vbootrom_v11_00(self):
>           self.set_machine('ast2700a1-evb')
>           self.require_netdev('user')
> @@ -170,6 +190,17 @@ def test_aarch64_ast2700a1_evb_sdk_vbootrom_v11_00(self):
>           self.verify_vbootrom_firmware_flow()
>           self.verify_openbmc_boot_start()
>   
> +    def test_aarch64_ast2700a2_evb_sdk_vbootrom_v11_00(self):
> +        self.set_machine('ast2700a2-evb')
> +        self.require_netdev('user')
> +
> +        self.archive_extract(self.ASSET_SDK_V1100_AST2700A2)
> +        self.vm.add_args('-device', 'e1000e,netdev=net1,bus=pcie.2')
> +        self.vm.add_args('-netdev', 'user,id=net1')
> +        self.start_ast2700_test_vbootrom('ast2700-default', 1)
> +        self.verify_vbootrom_firmware_flow()
> +        self.verify_openbmc_boot_start()
> +
>       def test_aarch64_ast2700a1_evb_ioexp_v11_00(self):
>           self.set_machine('ast2700a1-evb')
>           self.require_netdev('user')
> @@ -183,5 +214,18 @@ def test_aarch64_ast2700a1_evb_ioexp_v11_00(self):
>           self.do_ast2700_i2c_test(8)
>           self.do_ast2700_i2c_test(16)
>   
> +    def test_aarch64_ast2700a2_evb_ioexp_v11_00(self):
> +        self.set_machine('ast2700a2-evb')
> +        self.require_netdev('user')
> +
> +        self.archive_extract(self.ASSET_SDK_V1100_AST2700A2_DCSCM)
> +        self.vm.set_machine('ast2700a2-evb,fmc-model=w25q512jv')
> +        self.vm.add_args('-device',
> +                         'tmp105,bus=ioexp0.0,address=0x4d,id=tmp-test-16')
> +        self.start_ast2700_test('ast2700-dcscm', 8)
> +        self.verify_openbmc_boot_and_login('ast2700-dcscm', False)
> +        self.do_ast2700_i2c_test(8)
> +        self.do_ast2700_i2c_test(16)
> +
>   if __name__ == '__main__':
>       QemuSystemTest.main()
Re: [PATCH v1 08/10] tests/functional/aarch64/test_aspeed_ast2700: Add AST2700 A2 EVB functional tests
Posted by Thomas Huth 2 days, 17 hours ago
On 06/02/2026 11.11, Cédric Le Goater wrote:
> + Thomas
> 
> On 2/6/26 06:33, Jamin Lin wrote:
>> Add functional coverage for the AST2700 A2 EVB machine by introducing
>> test cases that boot and validate an OpenBMC SDK v11.00 image on
>> "ast2700a2-evb".
> 
> I wonder if we need to test both machines. The test is already quite long.
> 
> On my test system :
> 
>    qemu:func-aarch64-aspeed_ast2700             OK              119.68s   3 
> subtests passed
> 
> With both machines :
> 
>    qemu:func-aarch64-aspeed_ast2700             OK              219.79s   6 
> subtests passed

If the machines are very similar, it's maybe better to mark one of the tests 
with a decorator (skipSlowTest maybe), so we don't have to execute it by 
default, but we still have the test around if we need it.

  Thomas


Re: [PATCH v1 08/10] tests/functional/aarch64/test_aspeed_ast2700: Add AST2700 A2 EVB functional tests
Posted by Peter Maydell 2 days, 16 hours ago
On Fri, 6 Feb 2026 at 10:40, Thomas Huth <thuth@redhat.com> wrote:
>
> On 06/02/2026 11.11, Cédric Le Goater wrote:
> > + Thomas
> >
> > On 2/6/26 06:33, Jamin Lin wrote:
> >> Add functional coverage for the AST2700 A2 EVB machine by introducing
> >> test cases that boot and validate an OpenBMC SDK v11.00 image on
> >> "ast2700a2-evb".
> >
> > I wonder if we need to test both machines. The test is already quite long.
> >
> > On my test system :
> >
> >    qemu:func-aarch64-aspeed_ast2700             OK              119.68s   3
> > subtests passed
> >
> > With both machines :
> >
> >    qemu:func-aarch64-aspeed_ast2700             OK              219.79s   6
> > subtests passed
>
> If the machines are very similar, it's maybe better to mark one of the tests
> with a decorator (skipSlowTest maybe), so we don't have to execute it by
> default, but we still have the test around if we need it.


It might also be nice to have them be a separate top level test,
so that the tests can be run in parallel. AIUI having 1 test
with 6 subtests forces all 6 to run in sequence, whereas with
2 tests and 3 subtests each you can at least use 2 host CPUs.
Or does the qtest subtest handling include parallelism?

-- PMM
Re: [PATCH v1 08/10] tests/functional/aarch64/test_aspeed_ast2700: Add AST2700 A2 EVB functional tests
Posted by Thomas Huth 2 days, 16 hours ago
On 06/02/2026 12.33, Peter Maydell wrote:
> On Fri, 6 Feb 2026 at 10:40, Thomas Huth <thuth@redhat.com> wrote:
>>
>> On 06/02/2026 11.11, Cédric Le Goater wrote:
>>> + Thomas
>>>
>>> On 2/6/26 06:33, Jamin Lin wrote:
>>>> Add functional coverage for the AST2700 A2 EVB machine by introducing
>>>> test cases that boot and validate an OpenBMC SDK v11.00 image on
>>>> "ast2700a2-evb".
>>>
>>> I wonder if we need to test both machines. The test is already quite long.
>>>
>>> On my test system :
>>>
>>>     qemu:func-aarch64-aspeed_ast2700             OK              119.68s   3
>>> subtests passed
>>>
>>> With both machines :
>>>
>>>     qemu:func-aarch64-aspeed_ast2700             OK              219.79s   6
>>> subtests passed
>>
>> If the machines are very similar, it's maybe better to mark one of the tests
>> with a decorator (skipSlowTest maybe), so we don't have to execute it by
>> default, but we still have the test around if we need it.
> 
> 
> It might also be nice to have them be a separate top level test,
> so that the tests can be run in parallel. AIUI having 1 test
> with 6 subtests forces all 6 to run in sequence, whereas with
> 2 tests and 3 subtests each you can at least use 2 host CPUs.
> Or does the qtest subtest handling include parallelism?

No, there is no parallel execution for subtests, in neither the qtest nor 
the functional testing framework. So yes, if you want to execute this in 
parallel, put it into separate files.

  Thomas


RE: [PATCH v1 08/10] tests/functional/aarch64/test_aspeed_ast2700: Add AST2700 A2 EVB functional tests
Posted by Jamin Lin an hour ago
Hi Thomas, Peter, Cédric

> Subject: Re: [PATCH v1 08/10] tests/functional/aarch64/test_aspeed_ast2700:
> Add AST2700 A2 EVB functional tests
> 
> On 06/02/2026 12.33, Peter Maydell wrote:
> > On Fri, 6 Feb 2026 at 10:40, Thomas Huth <thuth@redhat.com> wrote:
> >>
> >> On 06/02/2026 11.11, Cédric Le Goater wrote:
> >>> + Thomas
> >>>
> >>> On 2/6/26 06:33, Jamin Lin wrote:
> >>>> Add functional coverage for the AST2700 A2 EVB machine by
> >>>> introducing test cases that boot and validate an OpenBMC SDK v11.00
> >>>> image on "ast2700a2-evb".
> >>>
> >>> I wonder if we need to test both machines. The test is already quite long.
> >>>
> >>> On my test system :
> >>>
> >>>     qemu:func-aarch64-aspeed_ast2700             OK
> 119.68s   3
> >>> subtests passed
> >>>
> >>> With both machines :
> >>>
> >>>     qemu:func-aarch64-aspeed_ast2700             OK
> 219.79s   6
> >>> subtests passed
> >>
> >> If the machines are very similar, it's maybe better to mark one of
> >> the tests with a decorator (skipSlowTest maybe), so we don't have to
> >> execute it by default, but we still have the test around if we need it.
> >
> >
> > It might also be nice to have them be a separate top level test, so
> > that the tests can be run in parallel. AIUI having 1 test with 6
> > subtests forces all 6 to run in sequence, whereas with
> > 2 tests and 3 subtests each you can at least use 2 host CPUs.
> > Or does the qtest subtest handling include parallelism?
> 
> No, there is no parallel execution for subtests, in neither the qtest nor the
> functional testing framework. So yes, if you want to execute this in parallel, put
> it into separate files.
> 
>   Thomas

Thanks for the review and the suggestions.

I plan to rename test_aspeed_ast2700.py to test_aspeed_ast2700a1.py for AST2700 A1 testing.
Then, I will add a new test_aspeed_ast2700.py for AST2700 A2 testing.
This test will cover the latest EVB machine and SoC.

Please let me know if you have any suggestions.

Thanks-Jamin