diff mbox series

[1/2] gitlab: Introduce Loongarch64 runner

Message ID 20240102172239.69452-2-philmd@linaro.org
State New
Headers show
Series gitlab: Add config for Loongarch64 custom runner | expand

Commit Message

Philippe Mathieu-Daudé Jan. 2, 2024, 5:22 p.m. UTC
Full build config to run CI tests on a Loongarch64 host.

Forks might enable this by setting LOONGARCH64_RUNNER_AVAILABLE
in their CI namespace settings, see:
https://www.qemu.org/docs/master/devel/ci.html#maintainer-controlled-job-variables

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 docs/devel/ci-jobs.rst.inc                    |  6 ++++++
 .gitlab-ci.d/custom-runners.yml               |  1 +
 .../openeuler-22.03-loongarch64.yml           | 21 +++++++++++++++++++
 3 files changed, 28 insertions(+)
 create mode 100644 .gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml

Comments

Thomas Huth Jan. 11, 2024, 7:08 a.m. UTC | #1
On 02/01/2024 18.22, Philippe Mathieu-Daudé wrote:
> Full build config to run CI tests on a Loongarch64 host.
> 
> Forks might enable this by setting LOONGARCH64_RUNNER_AVAILABLE
> in their CI namespace settings, see:
> https://www.qemu.org/docs/master/devel/ci.html#maintainer-controlled-job-variables
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   docs/devel/ci-jobs.rst.inc                    |  6 ++++++
>   .gitlab-ci.d/custom-runners.yml               |  1 +
>   .../openeuler-22.03-loongarch64.yml           | 21 +++++++++++++++++++
>   3 files changed, 28 insertions(+)
>   create mode 100644 .gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
> 
...
> diff --git a/.gitlab-ci.d/custom-runners.yml b/.gitlab-ci.d/custom-runners.yml
> index 8e5b9500f4..152ace4492 100644
> --- a/.gitlab-ci.d/custom-runners.yml
> +++ b/.gitlab-ci.d/custom-runners.yml
> @@ -32,3 +32,4 @@ include:
>     - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch64.yml'
>     - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch32.yml'
>     - local: '/.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml'
> +  - local: '/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml'
> diff --git a/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
> new file mode 100644
> index 0000000000..86d18f820e
> --- /dev/null
> +++ b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
> @@ -0,0 +1,21 @@
> +openeuler-22.03-loongarch64-all:
> + extends: .custom_runner_template
> + needs: []
> + stage: build
> + tags:
> + - oe2203
> + - loongarch64
> + rules:
> + - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
> +   when: manual
> +   allow_failure: true
> + - if: "$LOONGARCH64_RUNNER_AVAILABLE"
> +   when: manual
> +   allow_failure: true
> + script:
> + - mkdir build
> + - cd build
> + - ../configure
> +   || { cat config.log meson-logs/meson-log.txt; exit 1; }
> + - make --output-sync -j`nproc --ignore=40`
> + - make --output-sync -j`nproc --ignore=40` check

Does this system really have more than 40 CPU threads? Or is this a 
copy-n-past from one of the other scripts? In the latter case, I'd suggest 
to adjust the --ignore=40 to a more reasonable value.

  Thomas
gaosong Jan. 11, 2024, 7:25 a.m. UTC | #2
Hi,

在 2024/1/11 下午3:08, Thomas Huth 写道:
> On 02/01/2024 18.22, Philippe Mathieu-Daudé wrote:
>> Full build config to run CI tests on a Loongarch64 host.
>>
>> Forks might enable this by setting LOONGARCH64_RUNNER_AVAILABLE
>> in their CI namespace settings, see:
>> https://www.qemu.org/docs/master/devel/ci.html#maintainer-controlled-job-variables 
>>
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>>   docs/devel/ci-jobs.rst.inc                    |  6 ++++++
>>   .gitlab-ci.d/custom-runners.yml               |  1 +
>>   .../openeuler-22.03-loongarch64.yml           | 21 +++++++++++++++++++
>>   3 files changed, 28 insertions(+)
>>   create mode 100644 
>> .gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>
> ...
>> diff --git a/.gitlab-ci.d/custom-runners.yml 
>> b/.gitlab-ci.d/custom-runners.yml
>> index 8e5b9500f4..152ace4492 100644
>> --- a/.gitlab-ci.d/custom-runners.yml
>> +++ b/.gitlab-ci.d/custom-runners.yml
>> @@ -32,3 +32,4 @@ include:
>>     - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch64.yml'
>>     - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch32.yml'
>>     - local: '/.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml'
>> +  - local: 
>> '/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml'
>> diff --git 
>> a/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml 
>> b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>> new file mode 100644
>> index 0000000000..86d18f820e
>> --- /dev/null
>> +++ b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>> @@ -0,0 +1,21 @@
>> +openeuler-22.03-loongarch64-all:
>> + extends: .custom_runner_template :-)
>> + needs: []
>> + stage: build
>> + tags:
>> + - oe2203
>> + - loongarch64
>> + rules:
>> + - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH 
>> =~ /^staging/'
>> +   when: manual
>> +   allow_failure: true
>> + - if: "$LOONGARCH64_RUNNER_AVAILABLE"
>> +   when: manual
>> +   allow_failure: true
>> + script:
>> + - mkdir build
>> + - cd build
>> + - ../configure
>> +   || { cat config.log meson-logs/meson-log.txt; exit 1; }
>> + - make --output-sync -j`nproc --ignore=40`
>> + - make --output-sync -j`nproc --ignore=40` check
>
> Does this system really have more than 40 CPU threads? Or is this a 
> copy-n-past from one of the other scripts? In the latter case, I'd 
> suggest to adjust the --ignore=40 to a more reasonable value.
>
>  Thomas
No,  only 32.   I think it should be --ignore=32 or 16.

I create a same runner on this machine,  and I  find  some check error.
but I am not sure how to fix it. :-)

See:

https://gitlab.com/gaosong/qemu/-/jobs/5906269934

Thanks.
Song Gao
Thomas Huth Jan. 11, 2024, 8:26 a.m. UTC | #3
On 11/01/2024 08.25, gaosong wrote:
> Hi,
> 
> 在 2024/1/11 下午3:08, Thomas Huth 写道:
>> On 02/01/2024 18.22, Philippe Mathieu-Daudé wrote:
>>> Full build config to run CI tests on a Loongarch64 host.
>>>
>>> Forks might enable this by setting LOONGARCH64_RUNNER_AVAILABLE
>>> in their CI namespace settings, see:
>>> https://www.qemu.org/docs/master/devel/ci.html#maintainer-controlled-job-variables
>>>
>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>> ---
>>>   docs/devel/ci-jobs.rst.inc                    |  6 ++++++
>>>   .gitlab-ci.d/custom-runners.yml               |  1 +
>>>   .../openeuler-22.03-loongarch64.yml           | 21 +++++++++++++++++++
>>>   3 files changed, 28 insertions(+)
>>>   create mode 100644 
>>> .gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>>
>> ...
>>> diff --git a/.gitlab-ci.d/custom-runners.yml 
>>> b/.gitlab-ci.d/custom-runners.yml
>>> index 8e5b9500f4..152ace4492 100644
>>> --- a/.gitlab-ci.d/custom-runners.yml
>>> +++ b/.gitlab-ci.d/custom-runners.yml
>>> @@ -32,3 +32,4 @@ include:
>>>     - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch64.yml'
>>>     - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch32.yml'
>>>     - local: '/.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml'
>>> +  - local: '/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml'
>>> diff --git a/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml 
>>> b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>> new file mode 100644
>>> index 0000000000..86d18f820e
>>> --- /dev/null
>>> +++ b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>> @@ -0,0 +1,21 @@
>>> +openeuler-22.03-loongarch64-all:
>>> + extends: .custom_runner_template :-)
>>> + needs: []
>>> + stage: build
>>> + tags:
>>> + - oe2203
>>> + - loongarch64
>>> + rules:
>>> + - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ 
>>> /^staging/'
>>> +   when: manual
>>> +   allow_failure: true
>>> + - if: "$LOONGARCH64_RUNNER_AVAILABLE"
>>> +   when: manual
>>> +   allow_failure: true
>>> + script:
>>> + - mkdir build
>>> + - cd build
>>> + - ../configure
>>> +   || { cat config.log meson-logs/meson-log.txt; exit 1; }
>>> + - make --output-sync -j`nproc --ignore=40`
>>> + - make --output-sync -j`nproc --ignore=40` check
>>
>> Does this system really have more than 40 CPU threads? Or is this a 
>> copy-n-past from one of the other scripts? In the latter case, I'd suggest 
>> to adjust the --ignore=40 to a more reasonable value.
>>
>>  Thomas
> No,  only 32.   I think it should be --ignore=32 or 16.

--ignore=32 then also does not make much sense, that would still be the same 
as simply omitting the -j parameter. I guess --ignore=16 should be fine.

> I create a same runner on this machine,  and I  find  some check error.
> but I am not sure how to fix it. :-)
> 
> See:
> 
> https://gitlab.com/gaosong/qemu/-/jobs/5906269934

Seems to be related to RAM backing... for example, the erst-test is failing, 
which is doing something like:

     setup_vm_cmd(&state,
         "-object memory-backend-file,"
             "mem-path=acpi-erst.XXXXXX,"
             "size=64K,"
             "share=on,"
             "id=nvram "
         "-device acpi-erst,"
             "memdev=nvram");

So it seems like -object memory-backend-file" is not correctly working in 
your gitlab runner? Is there some setup missing?

  Thomas
gaosong Jan. 11, 2024, 12:05 p.m. UTC | #4
在 2024/1/11 下午4:26, Thomas Huth 写道:
> On 11/01/2024 08.25, gaosong wrote:
>> Hi,
>>
>> 在 2024/1/11 下午3:08, Thomas Huth 写道:
>>> On 02/01/2024 18.22, Philippe Mathieu-Daudé wrote:
>>>> Full build config to run CI tests on a Loongarch64 host.
>>>>
>>>> Forks might enable this by setting LOONGARCH64_RUNNER_AVAILABLE
>>>> in their CI namespace settings, see:
>>>> https://www.qemu.org/docs/master/devel/ci.html#maintainer-controlled-job-variables 
>>>>
>>>>
>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>>> ---
>>>>   docs/devel/ci-jobs.rst.inc                    |  6 ++++++
>>>>   .gitlab-ci.d/custom-runners.yml               |  1 +
>>>>   .../openeuler-22.03-loongarch64.yml           | 21 
>>>> +++++++++++++++++++
>>>>   3 files changed, 28 insertions(+)
>>>>   create mode 100644 
>>>> .gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>>>
>>> ...
>>>> diff --git a/.gitlab-ci.d/custom-runners.yml 
>>>> b/.gitlab-ci.d/custom-runners.yml
>>>> index 8e5b9500f4..152ace4492 100644
>>>> --- a/.gitlab-ci.d/custom-runners.yml
>>>> +++ b/.gitlab-ci.d/custom-runners.yml
>>>> @@ -32,3 +32,4 @@ include:
>>>>     - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch64.yml'
>>>>     - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch32.yml'
>>>>     - local: '/.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml'
>>>> +  - local: 
>>>> '/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml'
>>>> diff --git 
>>>> a/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml 
>>>> b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>>> new file mode 100644
>>>> index 0000000000..86d18f820e
>>>> --- /dev/null
>>>> +++ b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>>> @@ -0,0 +1,21 @@
>>>> +openeuler-22.03-loongarch64-all:
>>>> + extends: .custom_runner_template :-)
>>>> + needs: []
>>>> + stage: build
>>>> + tags:
>>>> + - oe2203
>>>> + - loongarch64
>>>> + rules:
>>>> + - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && 
>>>> $CI_COMMIT_BRANCH =~ /^staging/'
>>>> +   when: manual
>>>> +   allow_failure: true
>>>> + - if: "$LOONGARCH64_RUNNER_AVAILABLE"
>>>> +   when: manual
>>>> +   allow_failure: true
>>>> + script:
>>>> + - mkdir build
>>>> + - cd build
>>>> + - ../configure
>>>> +   || { cat config.log meson-logs/meson-log.txt; exit 1; }
>>>> + - make --output-sync -j`nproc --ignore=40`
>>>> + - make --output-sync -j`nproc --ignore=40` check
>>>
>>> Does this system really have more than 40 CPU threads? Or is this a 
>>> copy-n-past from one of the other scripts? In the latter case, I'd 
>>> suggest to adjust the --ignore=40 to a more reasonable value.
>>>
>>>  Thomas
>> No,  only 32.   I think it should be --ignore=32 or 16.
>
> --ignore=32 then also does not make much sense, that would still be 
> the same as simply omitting the -j parameter. I guess --ignore=16 
> should be fine.
>
>> I create a same runner on this machine, and I  find  some check error.
>> but I am not sure how to fix it. :-)
>>
>> See:
>>
>> https://gitlab.com/gaosong/qemu/-/jobs/5906269934
>
> Seems to be related to RAM backing... for example, the erst-test is 
> failing, which is doing something like:
>
>     setup_vm_cmd(&state,
>         "-object memory-backend-file,"
>             "mem-path=acpi-erst.XXXXXX,"
>             "size=64K,"
>             "share=on,"
>             "id=nvram "
>         "-device acpi-erst,"
>             "memdev=nvram");
>
> So it seems like -object memory-backend-file" is not correctly working 
> in your gitlab runner? Is there some setup missing?
>
>  Thomas
>
>
This is my runner config.

     concurrent = 32
     check_interval = 0
     shutdown_timeout = 0

     [session_server]
       session_timeout = 1800

     ...

     [[runners]]
       name = "loongarch64"
       request_concurrency = 24
       url = "https://gitlab.com"
       id = 31426483
       token = "glrt-bGugocYrR2yqcu3ma7ka"
       token_obtained_at = 2024-01-10T08:31:29Z
       token_expires_at = 0001-01-01T00:00:00Z
       executor = "shell"
       builds_dir = "/data/gitlab-runner/builds"
       cache_dir = "/data/gitlab-runner/cache"
       [runners.cache]
         MaxUploadedArchiveSize = 0

I create a project runner 'loongarch64' for my branch ci-master.
Do we need some special configuration?

and  I just './configure  --target-list="x86_64-softmmu" 
--enable-debug'  on LoongArch host.   make , make check.
I got the same error.

[7/361] 🌗 qemu:qtest+qtest-x86_64 / 
qtest-x86_64/qos-test                                    2928s   60 
subtests passed

^CWARNING: Received SIGTERM, exiting
   7/361 qemu:qtest+qtest-x86_64 / 
qtest-x86_64/qos-test                        INTERRUPT 4671.32s   killed 
by signal 11 SIGSEGV
 >>> PYTHON=/home/gs/gitlab/qemu/build/pyvenv/bin/python3 
G_TEST_DBUS_DAEMON=/home/gs/gitlab/qemu/tests/dbus-vmstate-daemon.sh 
MALLOC_PERTURB_=198 QTEST_QEMU_IMG=./qemu-img 
QTEST_QEMU_BINARY=./qemu-system-x86_64 
QTEST_QEMU_STORAGE_DAEMON_BINARY=./storage-daemon/qemu-storage-daemon 
/home/gs/gitlab/qemu/build/tests/qtest/qos-test --tap -k
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― ✀ 
―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
stderr:
qemu-system-x86_64: unable to map backing store for guest RAM: Invalid 
argument
Broken pipe
../tests/qtest/libqtest.c:195: kill_qemu() tried to terminate QEMU 
process but encountered exit status 1 (expected 0)

TAP parsing error: Too few tests run (expected 119, got 60)


I also use V=2  to check.


  PYTHON=/home/gs/gitlab/qemu/build/pyvenv/bin/python3 
G_TEST_DBUS_DAEMON=/home/gs/gitlab/qemu/tests/dbus-vmstate-daemon.sh 
QTEST_QEMU_IMG=./qemu-img V=2 QTEST_QEMU_BINARY=./qemu-system-x86_64 
QTEST_QEMU_STORAGE_DAEMON_BINARY=./storage-daemon/qemu-storage-daemon 
MALLOC_PERTURB_=220 
/home/gs/gitlab/qemu/build/tests/qtest/bios-tables-test --tap -k

I got the error:

...
Looking for expected file 'tests/data/acpi/pc/FACS'
Using expected file 'tests/data/acpi/pc/FACS'
Looking for expected file 'tests/data/acpi/pc/DSDT.acpihmat'
Using expected file 'tests/data/acpi/pc/DSDT.acpihmat'
ok 15 /x86_64/acpi/piix4/acpihmat
# starting QEMU: exec ./qemu-system-x86_64 -qtest 
unix:/tmp/qtest-923048.sock -qtest-log /dev/null -chardev 
socket,path=/tmp/qtest-923048.qmp,id=char0 -mon 
chardev=char0,mode=control -display none -audio none -machine pc -accel 
kvm -accel tcg -net none  -object 
memory-backend-file,id=erstnvram,mem-path=/tmp/qemu-test-erst.N41SG2,size=0x10000,share=on 
-device acpi-erst,memdev=erstnvram -drive 
id=hd0,if=none,file=tests/acpi-test-disk-KIDwOM,format=raw -device 
ide-hd,drive=hd0  -accel qtest
qemu-system-x86_64: unable to map backing store for guest RAM: Invalid 
argument
Broken pipe
../tests/qtest/libqtest.c:195: kill_qemu() tried to terminate QEMU 
process but encountered exit status 1 (expected 0)
Aborted (core dumped)

is there need some  special  package for '-object memory-backend-file' ?

Thanks.
Song Gao
Philippe Mathieu-Daudé Jan. 11, 2024, 1:11 p.m. UTC | #5
On 11/1/24 13:05, gaosong wrote:
> 在 2024/1/11 下午4:26, Thomas Huth 写道:
>> On 11/01/2024 08.25, gaosong wrote:
>>> Hi,
>>>
>>> 在 2024/1/11 下午3:08, Thomas Huth 写道:
>>>> On 02/01/2024 18.22, Philippe Mathieu-Daudé wrote:
>>>>> Full build config to run CI tests on a Loongarch64 host.
>>>>>
>>>>> Forks might enable this by setting LOONGARCH64_RUNNER_AVAILABLE
>>>>> in their CI namespace settings, see:
>>>>> https://www.qemu.org/docs/master/devel/ci.html#maintainer-controlled-job-variables
>>>>>
>>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>>>> ---
>>>>>   docs/devel/ci-jobs.rst.inc                    |  6 ++++++
>>>>>   .gitlab-ci.d/custom-runners.yml               |  1 +
>>>>>   .../openeuler-22.03-loongarch64.yml           | 21 
>>>>> +++++++++++++++++++
>>>>>   3 files changed, 28 insertions(+)
>>>>>   create mode 100644 
>>>>> .gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>>>>
>>>> ...
>>>>> diff --git a/.gitlab-ci.d/custom-runners.yml 
>>>>> b/.gitlab-ci.d/custom-runners.yml
>>>>> index 8e5b9500f4..152ace4492 100644
>>>>> --- a/.gitlab-ci.d/custom-runners.yml
>>>>> +++ b/.gitlab-ci.d/custom-runners.yml
>>>>> @@ -32,3 +32,4 @@ include:
>>>>>     - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch64.yml'
>>>>>     - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch32.yml'
>>>>>     - local: '/.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml'
>>>>> +  - local: 
>>>>> '/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml'
>>>>> diff --git 
>>>>> a/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml 
>>>>> b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>>>> new file mode 100644
>>>>> index 0000000000..86d18f820e
>>>>> --- /dev/null
>>>>> +++ b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>>>> @@ -0,0 +1,21 @@
>>>>> +openeuler-22.03-loongarch64-all:
>>>>> + extends: .custom_runner_template :-)
>>>>> + needs: []
>>>>> + stage: build
>>>>> + tags:
>>>>> + - oe2203
>>>>> + - loongarch64
>>>>> + rules:
>>>>> + - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && 
>>>>> $CI_COMMIT_BRANCH =~ /^staging/'
>>>>> +   when: manual
>>>>> +   allow_failure: true
>>>>> + - if: "$LOONGARCH64_RUNNER_AVAILABLE"
>>>>> +   when: manual
>>>>> +   allow_failure: true
>>>>> + script:
>>>>> + - mkdir build
>>>>> + - cd build
>>>>> + - ../configure
>>>>> +   || { cat config.log meson-logs/meson-log.txt; exit 1; }
>>>>> + - make --output-sync -j`nproc --ignore=40`
>>>>> + - make --output-sync -j`nproc --ignore=40` check
>>>>
>>>> Does this system really have more than 40 CPU threads? Or is this a 
>>>> copy-n-past from one of the other scripts? In the latter case, I'd 
>>>> suggest to adjust the --ignore=40 to a more reasonable value.
>>>>
>>>>  Thomas
>>> No,  only 32.   I think it should be --ignore=32 or 16.
>>
>> --ignore=32 then also does not make much sense, that would still be 
>> the same as simply omitting the -j parameter. I guess --ignore=16 
>> should be fine.
>>
>>> I create a same runner on this machine, and I  find  some check error.
>>> but I am not sure how to fix it. :-)
>>>
>>> See:
>>>
>>> https://gitlab.com/gaosong/qemu/-/jobs/5906269934
>>
>> Seems to be related to RAM backing... for example, the erst-test is 
>> failing, which is doing something like:
>>
>>     setup_vm_cmd(&state,
>>         "-object memory-backend-file,"
>>             "mem-path=acpi-erst.XXXXXX,"
>>             "size=64K,"
>>             "share=on,"
>>             "id=nvram "
>>         "-device acpi-erst,"
>>             "memdev=nvram");
>>
>> So it seems like -object memory-backend-file" is not correctly working 
>> in your gitlab runner? Is there some setup missing?
>>
>>  Thomas
>>
>>
> This is my runner config.
> 
>      concurrent = 32
>      check_interval = 0
>      shutdown_timeout = 0
> 
>      [session_server]
>        session_timeout = 1800
> 
>      ...
> 
>      [[runners]]
>        name = "loongarch64"
>        request_concurrency = 24
>        url = "https://gitlab.com"
>        id = 31426483
>        token = "glrt-bGugocYrR2yqcu3ma7ka"
>        token_obtained_at = 2024-01-10T08:31:29Z
>        token_expires_at = 0001-01-01T00:00:00Z
>        executor = "shell"
>        builds_dir = "/data/gitlab-runner/builds"
>        cache_dir = "/data/gitlab-runner/cache"
>        [runners.cache]
>          MaxUploadedArchiveSize = 0
> 
> I create a project runner 'loongarch64' for my branch ci-master.
> Do we need some special configuration?

We need to follow this process:
https://lore.kernel.org/qemu-devel/20240104160805.56856-1-philmd@linaro.org/
gaosong Jan. 12, 2024, 9:52 a.m. UTC | #6
在 2024/1/11 下午4:26, Thomas Huth 写道:
> On 11/01/2024 08.25, gaosong wrote:
>> Hi,
>>
>> 在 2024/1/11 下午3:08, Thomas Huth 写道:
>>> On 02/01/2024 18.22, Philippe Mathieu-Daudé wrote:
>>>> Full build config to run CI tests on a Loongarch64 host.
>>>>
>>>> Forks might enable this by setting LOONGARCH64_RUNNER_AVAILABLE
>>>> in their CI namespace settings, see:
>>>> https://www.qemu.org/docs/master/devel/ci.html#maintainer-controlled-job-variables 
>>>>
>>>>
>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>>> ---
>>>>   docs/devel/ci-jobs.rst.inc                    |  6 ++++++
>>>>   .gitlab-ci.d/custom-runners.yml               |  1 +
>>>>   .../openeuler-22.03-loongarch64.yml           | 21 
>>>> +++++++++++++++++++
>>>>   3 files changed, 28 insertions(+)
>>>>   create mode 100644 
>>>> .gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>>>
>>> ...
>>>> diff --git a/.gitlab-ci.d/custom-runners.yml 
>>>> b/.gitlab-ci.d/custom-runners.yml
>>>> index 8e5b9500f4..152ace4492 100644
>>>> --- a/.gitlab-ci.d/custom-runners.yml
>>>> +++ b/.gitlab-ci.d/custom-runners.yml
>>>> @@ -32,3 +32,4 @@ include:
>>>>     - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch64.yml'
>>>>     - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch32.yml'
>>>>     - local: '/.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml'
>>>> +  - local: 
>>>> '/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml'
>>>> diff --git 
>>>> a/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml 
>>>> b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>>> new file mode 100644
>>>> index 0000000000..86d18f820e
>>>> --- /dev/null
>>>> +++ b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>>> @@ -0,0 +1,21 @@
>>>> +openeuler-22.03-loongarch64-all:
>>>> + extends: .custom_runner_template :-)
>>>> + needs: []
>>>> + stage: build
>>>> + tags:
>>>> + - oe2203
>>>> + - loongarch64
>>>> + rules:
>>>> + - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && 
>>>> $CI_COMMIT_BRANCH =~ /^staging/'
>>>> +   when: manual
>>>> +   allow_failure: true
>>>> + - if: "$LOONGARCH64_RUNNER_AVAILABLE"
>>>> +   when: manual
>>>> +   allow_failure: true
>>>> + script:
>>>> + - mkdir build
>>>> + - cd build
>>>> + - ../configure
>>>> +   || { cat config.log meson-logs/meson-log.txt; exit 1; }
>>>> + - make --output-sync -j`nproc --ignore=40`
>>>> + - make --output-sync -j`nproc --ignore=40` check
>>>
>>> Does this system really have more than 40 CPU threads? Or is this a 
>>> copy-n-past from one of the other scripts? In the latter case, I'd 
>>> suggest to adjust the --ignore=40 to a more reasonable value.
>>>
>>>  Thomas
>> No,  only 32.   I think it should be --ignore=32 or 16.
>
> --ignore=32 then also does not make much sense, that would still be 
> the same as simply omitting the -j parameter. I guess --ignore=16 
> should be fine.
>
>> I create a same runner on this machine, and I  find  some check error.
>> but I am not sure how to fix it. :-)
>>
>> See:
>>
>> https://gitlab.com/gaosong/qemu/-/jobs/5906269934
>
> Seems to be related to RAM backing... for example, the erst-test is 
> failing, which is doing something like:
>
>     setup_vm_cmd(&state,
>         "-object memory-backend-file,"
>             "mem-path=acpi-erst.XXXXXX,"
>             "size=64K,"
Hi,

We tested this  on
LoongArch host with the 5.10 kernel,  (openEuler 22.03),
x86_64 host with 5.10 kernel, (openEuler 22.03)
x86_64 host with 5.15kernel , (Ubuntu 20.04.3 LTS)

and didn't get any error.

but the CI machine use the  6.7_rc4 kernel.
we didn't update the x86_64 host kernel to tested this.

Is it possible that the new kernel is causing the problem?

> "share=on,"
>             "id=nvram "
>         "-device acpi-erst,"
>             "memdev=nvram");
>
> So it seems like -object memory-backend-file" is not correctly working 
> in your gitlab runner? Is there some setup missing?
>
>  Thomas
>
>
gaosong Jan. 15, 2024, 10:08 a.m. UTC | #7
在 2024/1/12 下午5:52, gaosong 写道:
> 在 2024/1/11 下午4:26, Thomas Huth 写道:
>> On 11/01/2024 08.25, gaosong wrote:
>>> Hi,
>>>
>>> 在 2024/1/11 下午3:08, Thomas Huth 写道:
>>>> On 02/01/2024 18.22, Philippe Mathieu-Daudé wrote:
>>>>> Full build config to run CI tests on a Loongarch64 host.
>>>>>
>>>>> Forks might enable this by setting LOONGARCH64_RUNNER_AVAILABLE
>>>>> in their CI namespace settings, see:
>>>>> https://www.qemu.org/docs/master/devel/ci.html#maintainer-controlled-job-variables 
>>>>>
>>>>>
>>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>>>> ---
>>>>>   docs/devel/ci-jobs.rst.inc                    |  6 ++++++
>>>>>   .gitlab-ci.d/custom-runners.yml               |  1 +
>>>>>   .../openeuler-22.03-loongarch64.yml           | 21 
>>>>> +++++++++++++++++++
>>>>>   3 files changed, 28 insertions(+)
>>>>>   create mode 100644 
>>>>> .gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>>>>
>>>> ...
>>>>> diff --git a/.gitlab-ci.d/custom-runners.yml 
>>>>> b/.gitlab-ci.d/custom-runners.yml
>>>>> index 8e5b9500f4..152ace4492 100644
>>>>> --- a/.gitlab-ci.d/custom-runners.yml
>>>>> +++ b/.gitlab-ci.d/custom-runners.yml
>>>>> @@ -32,3 +32,4 @@ include:
>>>>>     - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch64.yml'
>>>>>     - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch32.yml'
>>>>>     - local: 
>>>>> '/.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml'
>>>>> +  - local: 
>>>>> '/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml'
>>>>> diff --git 
>>>>> a/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml 
>>>>> b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>>>> new file mode 100644
>>>>> index 0000000000..86d18f820e
>>>>> --- /dev/null
>>>>> +++ b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
>>>>> @@ -0,0 +1,21 @@
>>>>> +openeuler-22.03-loongarch64-all:
>>>>> + extends: .custom_runner_template :-)
>>>>> + needs: []
>>>>> + stage: build
>>>>> + tags:
>>>>> + - oe2203
>>>>> + - loongarch64
>>>>> + rules:
>>>>> + - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && 
>>>>> $CI_COMMIT_BRANCH =~ /^staging/'
>>>>> +   when: manual
>>>>> +   allow_failure: true
>>>>> + - if: "$LOONGARCH64_RUNNER_AVAILABLE"
>>>>> +   when: manual
>>>>> +   allow_failure: true
>>>>> + script:
>>>>> + - mkdir build
>>>>> + - cd build
>>>>> + - ../configure
>>>>> +   || { cat config.log meson-logs/meson-log.txt; exit 1; }
>>>>> + - make --output-sync -j`nproc --ignore=40`
>>>>> + - make --output-sync -j`nproc --ignore=40` check
>>>>
>>>> Does this system really have more than 40 CPU threads? Or is this a 
>>>> copy-n-past from one of the other scripts? In the latter case, I'd 
>>>> suggest to adjust the --ignore=40 to a more reasonable value.
>>>>
>>>>  Thomas
>>> No,  only 32.   I think it should be --ignore=32 or 16.
>>
>> --ignore=32 then also does not make much sense, that would still be 
>> the same as simply omitting the -j parameter. I guess --ignore=16 
>> should be fine.
>>
>>> I create a same runner on this machine, and I  find  some check error.
>>> but I am not sure how to fix it. :-)
>>>
>>> See:
>>>
>>> https://gitlab.com/gaosong/qemu/-/jobs/5906269934
>>
>> Seems to be related to RAM backing... for example, the erst-test is 
>> failing, which is doing something like:
>>
>>     setup_vm_cmd(&state,
>>         "-object memory-backend-file,"
>>             "mem-path=acpi-erst.XXXXXX,"
>>             "size=64K,"
> Hi,
>
> We tested this  on
> LoongArch host with the 5.10 kernel,  (openEuler 22.03),
> x86_64 host with 5.10 kernel, (openEuler 22.03)
> x86_64 host with 5.15kernel , (Ubuntu 20.04.3 LTS)
>
> and didn't get any error.
>
> but the CI machine use the  6.7_rc4 kernel.
> we didn't update the x86_64 host kernel to tested this.
>
> Is it possible that the new kernel is causing the problem?
>
Hi,

The kernel adds the patch[1] can fix this problem.

[1] 
https://patchew.org/linux/20240106145501.3370364-1-chenhuacai@loongson.cn/

So
Tested-by: Song Gao <gaosong@loongson.cn>
Reviewed-by: Song Gao <gaosong@loongson.cn>

Thanks.
Song Gao

>> "share=on,"
>>             "id=nvram "
>>         "-device acpi-erst,"
>>             "memdev=nvram");
>>
>> So it seems like -object memory-backend-file" is not correctly 
>> working in your gitlab runner? Is there some setup missing?
>>
>>  Thomas
>>
>>
>
diff mbox series

Patch

diff --git a/docs/devel/ci-jobs.rst.inc b/docs/devel/ci-jobs.rst.inc
index 4c39cdb2d9..b821a33112 100644
--- a/docs/devel/ci-jobs.rst.inc
+++ b/docs/devel/ci-jobs.rst.inc
@@ -189,6 +189,12 @@  used as a gitlab-CI runner, you can set this variable to enable the
 tests that require this kind of host. The runner should be tagged with
 both "centos_stream_8" and "x86_64".
 
+LOONGARCH64_RUNNER_AVAILABLE
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If you've got access to a Loongarch64 host that can be used as a gitlab-CI
+runner, you can set this variable to enable the tests that require this
+kind of host. The runner should be tagged with "loongarch64".
+
 CCACHE_DISABLE
 ~~~~~~~~~~~~~~
 The jobs are configured to use "ccache" by default since this typically
diff --git a/.gitlab-ci.d/custom-runners.yml b/.gitlab-ci.d/custom-runners.yml
index 8e5b9500f4..152ace4492 100644
--- a/.gitlab-ci.d/custom-runners.yml
+++ b/.gitlab-ci.d/custom-runners.yml
@@ -32,3 +32,4 @@  include:
   - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch64.yml'
   - local: '/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch32.yml'
   - local: '/.gitlab-ci.d/custom-runners/centos-stream-8-x86_64.yml'
+  - local: '/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml'
diff --git a/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
new file mode 100644
index 0000000000..86d18f820e
--- /dev/null
+++ b/.gitlab-ci.d/custom-runners/openeuler-22.03-loongarch64.yml
@@ -0,0 +1,21 @@ 
+openeuler-22.03-loongarch64-all:
+ extends: .custom_runner_template
+ needs: []
+ stage: build
+ tags:
+ - oe2203
+ - loongarch64
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+   when: manual
+   allow_failure: true
+ - if: "$LOONGARCH64_RUNNER_AVAILABLE"
+   when: manual
+   allow_failure: true
+ script:
+ - mkdir build
+ - cd build
+ - ../configure
+   || { cat config.log meson-logs/meson-log.txt; exit 1; }
+ - make --output-sync -j`nproc --ignore=40`
+ - make --output-sync -j`nproc --ignore=40` check