[PATCH v2] tests/acceptance: Test powernv machines

Cédric Le Goater posted 1 patch 2 years, 8 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210817093036.1288791-1-clg@kaod.org
Maintainers: "Philippe Mathieu-Daudé" <philmd@redhat.com>, Cleber Rosa <crosa@redhat.com>, Wainer dos Santos Moschetta <wainersm@redhat.com>
tests/acceptance/boot_linux_console.py | 35 ++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
[PATCH v2] tests/acceptance: Test powernv machines
Posted by Cédric Le Goater 2 years, 8 months ago
Fetch the OpenPOWER images to boot the powernv8 and powernv9 machines
with a simple PCI layout.

Cc: Cleber Rosa <crosa@redhat.com>
Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
Cc: Wainer dos Santos Moschetta <wainersm@redhat.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
---

 Since v2:

 - Change the skiboot.lid file to use the one shipped with QEMU
 
 tests/acceptance/boot_linux_console.py | 35 ++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
index 5248c8097df9..59c9309c4d0b 100644
--- a/tests/acceptance/boot_linux_console.py
+++ b/tests/acceptance/boot_linux_console.py
@@ -1176,6 +1176,41 @@ def test_ppc64_e500(self):
         tar_hash = '6951d86d644b302898da2fd701739c9406527fe1'
         self.do_test_advcal_2018('19', tar_hash, 'uImage')
 
+    def do_test_ppc64_powernv(self, proc):
+        images_url = ('https://github.com/open-power/op-build/releases/download/v2.7/')
+
+        kernel_url = images_url + 'zImage.epapr'
+        kernel_hash = '0ab237df661727e5392cee97460e8674057a883c5f74381a128fa772588d45cd'
+        kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash,
+                                       algorithm='sha256')
+        self.vm.set_console()
+        self.vm.add_args('-kernel', kernel_path,
+                         '-append', 'console=tty0 console=hvc0',
+                         '-device', 'pcie-pci-bridge,id=bridge1,bus=pcie.1,addr=0x0',
+                         '-device', 'nvme,bus=pcie.2,addr=0x0,serial=1234',
+                         '-device', 'e1000e,bus=bridge1,addr=0x3',
+                         '-device', 'nec-usb-xhci,bus=bridge1,addr=0x2')
+        self.vm.launch()
+
+        self.wait_for_console_pattern("CPU: " + proc + " generation processor")
+        self.wait_for_console_pattern("zImage starting: loaded")
+        self.wait_for_console_pattern("Run /init as init process")
+        self.wait_for_console_pattern("Creating 1 MTD partitions")
+
+    def test_ppc_powernv8(self):
+        """
+        :avocado: tags=arch:ppc64
+        :avocado: tags=machine:powernv8
+        """
+        self.do_test_ppc64_powernv('P8')
+
+    def test_ppc_powernv9(self):
+        """
+        :avocado: tags=arch:ppc64
+        :avocado: tags=machine:powernv9
+        """
+        self.do_test_ppc64_powernv('P9')
+
     def test_ppc_g3beige(self):
         """
         :avocado: tags=arch:ppc
-- 
2.31.1


Re: [PATCH v2] tests/acceptance: Test powernv machines
Posted by Thomas Huth 2 years, 8 months ago
On 17/08/2021 11.30, Cédric Le Goater wrote:
> Fetch the OpenPOWER images to boot the powernv8 and powernv9 machines
> with a simple PCI layout.
> 
> Cc: Cleber Rosa <crosa@redhat.com>
> Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
> Cc: Wainer dos Santos Moschetta <wainersm@redhat.com>
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> ---
> 
>   Since v2:
> 
>   - Change the skiboot.lid file to use the one shipped with QEMU
>   
>   tests/acceptance/boot_linux_console.py | 35 ++++++++++++++++++++++++++
>   1 file changed, 35 insertions(+)
> 
> diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
> index 5248c8097df9..59c9309c4d0b 100644
> --- a/tests/acceptance/boot_linux_console.py
> +++ b/tests/acceptance/boot_linux_console.py
> @@ -1176,6 +1176,41 @@ def test_ppc64_e500(self):
>           tar_hash = '6951d86d644b302898da2fd701739c9406527fe1'
>           self.do_test_advcal_2018('19', tar_hash, 'uImage')
>   
> +    def do_test_ppc64_powernv(self, proc):
> +        images_url = ('https://github.com/open-power/op-build/releases/download/v2.7/')
> +
> +        kernel_url = images_url + 'zImage.epapr'
> +        kernel_hash = '0ab237df661727e5392cee97460e8674057a883c5f74381a128fa772588d45cd'
> +        kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash,
> +                                       algorithm='sha256')
> +        self.vm.set_console()
> +        self.vm.add_args('-kernel', kernel_path,
> +                         '-append', 'console=tty0 console=hvc0',
> +                         '-device', 'pcie-pci-bridge,id=bridge1,bus=pcie.1,addr=0x0',
> +                         '-device', 'nvme,bus=pcie.2,addr=0x0,serial=1234',
> +                         '-device', 'e1000e,bus=bridge1,addr=0x3',
> +                         '-device', 'nec-usb-xhci,bus=bridge1,addr=0x2')
> +        self.vm.launch()
> +
> +        self.wait_for_console_pattern("CPU: " + proc + " generation processor")
> +        self.wait_for_console_pattern("zImage starting: loaded")
> +        self.wait_for_console_pattern("Run /init as init process")
> +        self.wait_for_console_pattern("Creating 1 MTD partitions")

IMHO it might be sufficient to wait for the last console entry and drop the 
"zImage starting" and "Run /init" lines (but I'd keep the "CPU:" line since 
it checks for the right processor type).

Anyway:
Reviewed-by: Thomas Huth <thuth@redhat.com>


Re: [PATCH v2] tests/acceptance: Test powernv machines
Posted by Cédric Le Goater 2 years, 8 months ago
On 8/18/21 8:27 AM, Thomas Huth wrote:
> On 17/08/2021 11.30, Cédric Le Goater wrote:
>> Fetch the OpenPOWER images to boot the powernv8 and powernv9 machines
>> with a simple PCI layout.
>>
>> Cc: Cleber Rosa <crosa@redhat.com>
>> Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
>> Cc: Wainer dos Santos Moschetta <wainersm@redhat.com>
>> Signed-off-by: Cédric Le Goater <clg@kaod.org>
>> ---
>>
>>   Since v2:
>>
>>   - Change the skiboot.lid file to use the one shipped with QEMU
>>     tests/acceptance/boot_linux_console.py | 35 ++++++++++++++++++++++++++
>>   1 file changed, 35 insertions(+)
>>
>> diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
>> index 5248c8097df9..59c9309c4d0b 100644
>> --- a/tests/acceptance/boot_linux_console.py
>> +++ b/tests/acceptance/boot_linux_console.py
>> @@ -1176,6 +1176,41 @@ def test_ppc64_e500(self):
>>           tar_hash = '6951d86d644b302898da2fd701739c9406527fe1'
>>           self.do_test_advcal_2018('19', tar_hash, 'uImage')
>>   +    def do_test_ppc64_powernv(self, proc):
>> +        images_url = ('https://github.com/open-power/op-build/releases/download/v2.7/')
>> +
>> +        kernel_url = images_url + 'zImage.epapr'
>> +        kernel_hash = '0ab237df661727e5392cee97460e8674057a883c5f74381a128fa772588d45cd'
>> +        kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash,
>> +                                       algorithm='sha256')
>> +        self.vm.set_console()
>> +        self.vm.add_args('-kernel', kernel_path,
>> +                         '-append', 'console=tty0 console=hvc0',
>> +                         '-device', 'pcie-pci-bridge,id=bridge1,bus=pcie.1,addr=0x0',
>> +                         '-device', 'nvme,bus=pcie.2,addr=0x0,serial=1234',
>> +                         '-device', 'e1000e,bus=bridge1,addr=0x3',
>> +                         '-device', 'nec-usb-xhci,bus=bridge1,addr=0x2')
>> +        self.vm.launch()
>> +
>> +        self.wait_for_console_pattern("CPU: " + proc + " generation processor")
>> +        self.wait_for_console_pattern("zImage starting: loaded")
>> +        self.wait_for_console_pattern("Run /init as init process")
>> +        self.wait_for_console_pattern("Creating 1 MTD partitions")
> 
> IMHO it might be sufficient to wait for the last console entry and drop the "zImage starting" and "Run /init" lines

OK. I might replace them with lines catching the driver log messages as Joel
suggested.  

wait_for_console_pattern() doesn't seem to be able to catch output from the 
petitboot loader which would be even better. Here is the final output :



 Petitboot (v1.12)                   IBM PowerNV (emulated by qemu) unavailable
 ──────────────────────────────────────────────────────────────────────────────

  System information
  System configuration
  System status log
  Language
  Rescan devices
  Retrieve config from URL
  Plugins (0)
 *Exit to shell           










 ──────────────────────────────────────────────────────────────────────────────
 Enter=accept, e=edit, n=new, x=exit, l=language, g=log, h=help
 [enP1p2s3] Configuring with DHCP



> (but I'd keep the "CPU:" line since it checks for the right processor type).

yes

> Anyway:
> Reviewed-by: Thomas Huth <thuth@redhat.com>

Thanks,

C.
 


Re: [PATCH v2] tests/acceptance: Test powernv machines
Posted by Philippe Mathieu-Daudé 2 years, 7 months ago
On 8/17/21 11:30, Cédric Le Goater wrote:
> Fetch the OpenPOWER images to boot the powernv8 and powernv9 machines
> with a simple PCI layout.
> 
> Cc: Cleber Rosa <crosa@redhat.com>
> Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
> Cc: Wainer dos Santos Moschetta <wainersm@redhat.com>
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> ---
> 
>  Since v2:
> 
>  - Change the skiboot.lid file to use the one shipped with QEMU
>  
>  tests/acceptance/boot_linux_console.py | 35 ++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
> 
> diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
> index 5248c8097df9..59c9309c4d0b 100644
> --- a/tests/acceptance/boot_linux_console.py
> +++ b/tests/acceptance/boot_linux_console.py
> @@ -1176,6 +1176,41 @@ def test_ppc64_e500(self):
>          tar_hash = '6951d86d644b302898da2fd701739c9406527fe1'
>          self.do_test_advcal_2018('19', tar_hash, 'uImage')
>  
> +    def do_test_ppc64_powernv(self, proc):
> +        images_url = ('https://github.com/open-power/op-build/releases/download/v2.7/')
> +
> +        kernel_url = images_url + 'zImage.epapr'
> +        kernel_hash = '0ab237df661727e5392cee97460e8674057a883c5f74381a128fa772588d45cd'
> +        kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash,
> +                                       algorithm='sha256')
> +        self.vm.set_console()
> +        self.vm.add_args('-kernel', kernel_path,
> +                         '-append', 'console=tty0 console=hvc0',
> +                         '-device', 'pcie-pci-bridge,id=bridge1,bus=pcie.1,addr=0x0',
> +                         '-device', 'nvme,bus=pcie.2,addr=0x0,serial=1234',
> +                         '-device', 'e1000e,bus=bridge1,addr=0x3',
> +                         '-device', 'nec-usb-xhci,bus=bridge1,addr=0x2')
> +        self.vm.launch()
> +
> +        self.wait_for_console_pattern("CPU: " + proc + " generation processor")
> +        self.wait_for_console_pattern("zImage starting: loaded")
> +        self.wait_for_console_pattern("Run /init as init process")
> +        self.wait_for_console_pattern("Creating 1 MTD partitions")
> +
> +    def test_ppc_powernv8(self):
> +        """
> +        :avocado: tags=arch:ppc64
> +        :avocado: tags=machine:powernv8
> +        """
> +        self.do_test_ppc64_powernv('P8')
> +
> +    def test_ppc_powernv9(self):
> +        """
> +        :avocado: tags=arch:ppc64
> +        :avocado: tags=machine:powernv9
> +        """
> +        self.do_test_ppc64_powernv('P9')
> +
>      def test_ppc_g3beige(self):
>          """
>          :avocado: tags=arch:ppc
> 

Kinda borderline w.r.t. 90 sec timeout limit... (using --enable-debug):

JOB ID     : 5229c34e837b7b6de18c68115b07f0eebc446784
JOB LOG    :
/home/phil/avocado/job-results/job-2021-09-27T19.15-5229c34/job.log
 (1/3)
tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_ppc64_e500:
PASS (6.58 s)
 (2/3)
tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_ppc_powernv8:
PASS (80.38 s)
 (3/3)
tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_ppc_powernv9:
PASS (89.22 s)
RESULTS    : PASS 3 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 |
CANCEL 0
JOB TIME   : 176.84 s

You might want to increase the per-test timeout.

Meanwhile,

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>

and applied to my integration-testing tree.


Re: [PATCH v2] tests/acceptance: Test powernv machines
Posted by Cédric Le Goater 2 years, 7 months ago
On 9/27/21 19:21, Philippe Mathieu-Daudé wrote:
> On 8/17/21 11:30, Cédric Le Goater wrote:
>> Fetch the OpenPOWER images to boot the powernv8 and powernv9 machines
>> with a simple PCI layout.
>>
>> Cc: Cleber Rosa <crosa@redhat.com>
>> Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
>> Cc: Wainer dos Santos Moschetta <wainersm@redhat.com>
>> Signed-off-by: Cédric Le Goater <clg@kaod.org>
>> ---
>>
>>   Since v2:
>>
>>   - Change the skiboot.lid file to use the one shipped with QEMU
>>   
>>   tests/acceptance/boot_linux_console.py | 35 ++++++++++++++++++++++++++
>>   1 file changed, 35 insertions(+)
>>
>> diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
>> index 5248c8097df9..59c9309c4d0b 100644
>> --- a/tests/acceptance/boot_linux_console.py
>> +++ b/tests/acceptance/boot_linux_console.py
>> @@ -1176,6 +1176,41 @@ def test_ppc64_e500(self):
>>           tar_hash = '6951d86d644b302898da2fd701739c9406527fe1'
>>           self.do_test_advcal_2018('19', tar_hash, 'uImage')
>>   
>> +    def do_test_ppc64_powernv(self, proc):
>> +        images_url = ('https://github.com/open-power/op-build/releases/download/v2.7/')
>> +
>> +        kernel_url = images_url + 'zImage.epapr'
>> +        kernel_hash = '0ab237df661727e5392cee97460e8674057a883c5f74381a128fa772588d45cd'
>> +        kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash,
>> +                                       algorithm='sha256')
>> +        self.vm.set_console()
>> +        self.vm.add_args('-kernel', kernel_path,
>> +                         '-append', 'console=tty0 console=hvc0',
>> +                         '-device', 'pcie-pci-bridge,id=bridge1,bus=pcie.1,addr=0x0',
>> +                         '-device', 'nvme,bus=pcie.2,addr=0x0,serial=1234',
>> +                         '-device', 'e1000e,bus=bridge1,addr=0x3',
>> +                         '-device', 'nec-usb-xhci,bus=bridge1,addr=0x2')
>> +        self.vm.launch()
>> +
>> +        self.wait_for_console_pattern("CPU: " + proc + " generation processor")
>> +        self.wait_for_console_pattern("zImage starting: loaded")
>> +        self.wait_for_console_pattern("Run /init as init process")
>> +        self.wait_for_console_pattern("Creating 1 MTD partitions")
>> +
>> +    def test_ppc_powernv8(self):
>> +        """
>> +        :avocado: tags=arch:ppc64
>> +        :avocado: tags=machine:powernv8
>> +        """
>> +        self.do_test_ppc64_powernv('P8')
>> +
>> +    def test_ppc_powernv9(self):
>> +        """
>> +        :avocado: tags=arch:ppc64
>> +        :avocado: tags=machine:powernv9
>> +        """
>> +        self.do_test_ppc64_powernv('P9')
>> +
>>       def test_ppc_g3beige(self):
>>           """
>>           :avocado: tags=arch:ppc
>>
> 
> Kinda borderline w.r.t. 90 sec timeout limit... (using --enable-debug):
> 
> JOB ID     : 5229c34e837b7b6de18c68115b07f0eebc446784
> JOB LOG    :
> /home/phil/avocado/job-results/job-2021-09-27T19.15-5229c34/job.log
>   (1/3)
> tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_ppc64_e500:
> PASS (6.58 s)
>   (2/3)
> tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_ppc_powernv8:
> PASS (80.38 s)
>   (3/3)
> tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_ppc_powernv9:
> PASS (89.22 s)
> RESULTS    : PASS 3 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 |
> CANCEL 0
> JOB TIME   : 176.84 s

It's too long I agree and I can remove some of the PCI adapters which
need training.

What's your laptop like ?

> You might want to increase the per-test timeout.
> 
> Meanwhile,
> 
> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> 
> and applied to my integration-testing tree.
>


Thanks,

C.

Re: [PATCH v2] tests/acceptance: Test powernv machines
Posted by Philippe Mathieu-Daudé 2 years, 7 months ago
On 9/27/21 19:37, Cédric Le Goater wrote:
> On 9/27/21 19:21, Philippe Mathieu-Daudé wrote:
>> On 8/17/21 11:30, Cédric Le Goater wrote:
>>> Fetch the OpenPOWER images to boot the powernv8 and powernv9 machines
>>> with a simple PCI layout.
>>>
>>> Cc: Cleber Rosa <crosa@redhat.com>
>>> Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
>>> Cc: Wainer dos Santos Moschetta <wainersm@redhat.com>
>>> Signed-off-by: Cédric Le Goater <clg@kaod.org>
>>> ---
>>>
>>>   Since v2:
>>>
>>>   - Change the skiboot.lid file to use the one shipped with QEMU
>>>     tests/acceptance/boot_linux_console.py | 35
>>> ++++++++++++++++++++++++++
>>>   1 file changed, 35 insertions(+)
>>>
>>> diff --git a/tests/acceptance/boot_linux_console.py
>>> b/tests/acceptance/boot_linux_console.py
>>> index 5248c8097df9..59c9309c4d0b 100644
>>> --- a/tests/acceptance/boot_linux_console.py
>>> +++ b/tests/acceptance/boot_linux_console.py
>>> @@ -1176,6 +1176,41 @@ def test_ppc64_e500(self):
>>>           tar_hash = '6951d86d644b302898da2fd701739c9406527fe1'
>>>           self.do_test_advcal_2018('19', tar_hash, 'uImage')
>>>   +    def do_test_ppc64_powernv(self, proc):
>>> +        images_url =
>>> ('https://github.com/open-power/op-build/releases/download/v2.7/')
>>> +
>>> +        kernel_url = images_url + 'zImage.epapr'
>>> +        kernel_hash =
>>> '0ab237df661727e5392cee97460e8674057a883c5f74381a128fa772588d45cd'
>>> +        kernel_path = self.fetch_asset(kernel_url,
>>> asset_hash=kernel_hash,
>>> +                                       algorithm='sha256')
>>> +        self.vm.set_console()
>>> +        self.vm.add_args('-kernel', kernel_path,
>>> +                         '-append', 'console=tty0 console=hvc0',
>>> +                         '-device',
>>> 'pcie-pci-bridge,id=bridge1,bus=pcie.1,addr=0x0',
>>> +                         '-device',
>>> 'nvme,bus=pcie.2,addr=0x0,serial=1234',
>>> +                         '-device', 'e1000e,bus=bridge1,addr=0x3',
>>> +                         '-device',
>>> 'nec-usb-xhci,bus=bridge1,addr=0x2')
>>> +        self.vm.launch()
>>> +
>>> +        self.wait_for_console_pattern("CPU: " + proc + " generation
>>> processor")
>>> +        self.wait_for_console_pattern("zImage starting: loaded")
>>> +        self.wait_for_console_pattern("Run /init as init process")
>>> +        self.wait_for_console_pattern("Creating 1 MTD partitions")
>>> +
>>> +    def test_ppc_powernv8(self):
>>> +        """
>>> +        :avocado: tags=arch:ppc64
>>> +        :avocado: tags=machine:powernv8
>>> +        """
>>> +        self.do_test_ppc64_powernv('P8')
>>> +
>>> +    def test_ppc_powernv9(self):
>>> +        """
>>> +        :avocado: tags=arch:ppc64
>>> +        :avocado: tags=machine:powernv9
>>> +        """
>>> +        self.do_test_ppc64_powernv('P9')
>>> +
>>>       def test_ppc_g3beige(self):
>>>           """
>>>           :avocado: tags=arch:ppc
>>>
>>
>> Kinda borderline w.r.t. 90 sec timeout limit... (using --enable-debug):
>>
>> JOB ID     : 5229c34e837b7b6de18c68115b07f0eebc446784
>> JOB LOG    :
>> /home/phil/avocado/job-results/job-2021-09-27T19.15-5229c34/job.log
>>   (1/3)
>> tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_ppc64_e500:
>> PASS (6.58 s)
>>   (2/3)
>> tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_ppc_powernv8:
>>
>> PASS (80.38 s)
>>   (3/3)
>> tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_ppc_powernv9:
>>
>> PASS (89.22 s)
>> RESULTS    : PASS 3 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 |
>> CANCEL 0
>> JOB TIME   : 176.84 s
> 
> It's too long I agree and I can remove some of the PCI adapters which
> need training.
> 
> What's your laptop like ?

i7-8650U, but maybe better ask Gitlab what are theirs runners like ;)