This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* README COPYRIGHT FUJITSU LIMITED 2019 */
SVEレジスタ拡張テストセットREADME
(1) テストの実行方法
以下の手順でテストを実行する
1. $HOME/.mck_test_configを用意する
当該ファイルは、McKernelをビルドした際に生成されるmck_test_config.sample
ファイルを$HOMEにコピーし、適宜編集する
2. 必要に応じて、run.shのSVEGDB環境変数に利用するGDBのパスを記載する
GDBの置き換えが必要な理由は「(4) 備考」を参照
3. make testを実行する
(2) テスト項目詳細
TEST001 プロセス起動時のSVEレジスタを読み出す
TEST002 forkによる子プロセスへの引き継ぎ確認
TEST003 pthread_createによる子スレッドへの引き継ぎ確認
TEST004 execveを挟んだ場合のレジスタクリア確認
TEST005 シグナルハンドラ前後のレジスタ維持確認
TEST006 他コアへのマイグレート前後のレジスタ維持確認
TEST007 子プロセスで書き込んだ内容が親プロセスからptraceでGETREGSET出来るか
TEST008 親プロセスからptraceでSETREGSETした内容が子プロセスに反映されるか
TEST009 GETREGSETへのパラメタチェック(子項目7つ)
TEST010 SETREGSETへのパラメタチェック(子項目9つ)
TEST011 sigaltstackを使用した場合のシグナルハンドラ前後のレジスタ維持確認
TEST012 プロセスがSVE使用時、NT_PRFPREG(既存の浮動小数点レジスタ)の
GETREGSETを実行して値が取得出来るか
TEST013 プロセスがSVE使用時、NT_PRFPREG(既存の浮動小数点レジスタ)の
SETREGSETを実行して値が設定出来るか
TEST014 テスト番号8の子プロセス停止をbrk命令に変更したもの
TEST015 コンテキストスイッチおよび外部シグナルによる停止/再開時のレジスタ維持確認
TEST016 prctl(PR_SVE_GET_VL)でVLを取得し、期待通りか確認する
TEST017 prctl(PR_SVE_SET_VL)でVLを設定し、期待通りか確認する
TEST018 廃止(過去に存在したフラグのテスト)
TEST019 prctl(PR_SVE_SET_VL)へのパラメタチェック
TEST020 prctlでVLと同時に継承フラグを付与時、fork()によってVLが子プロセスに継承されることを確認する
TEST021 prctlでVLと同時に継承フラグを付与時、pthread_create()によってVLが子スレッドに継承されることを確認する
TEST022 prctlでVLと同時に継承フラグを付与時、execve()によってVLが実行先のa.outに継承されることを確認する
TEST023 シグナルハンドラ前後のVL設定維持確認
TEST024 他コアへのマイグレート前後のVL設定維持確認
TEST025 ptrace(GETREGSET + NT_ARM_SVE)を用いてVLを取得し、期待通りか確認する
TEST026 ptrace(SETREGSET + NT_ARM_SVE)を用いてVLを設定し、期待通りか確認する
TEST027 prctlでVLと同時に継承フラグを付与しない場合でも、fork()によってVLが子プロセスに継承されることを確認する
TEST028 prctlでVLと同時に継承フラグを付与しない場合でも、pthread_create()によってVLが子スレッドに継承されることを確認する
TEST029 prctlでVLと同時に継承フラグを付与しない場合、execve()によってVLが実行先のa.outに継承されず、
デフォルトVLが使われることを確認する
TEST030 SVE使用時、ptrace(SETREGSET + NT_ARM_SVE + SVE_PT_REGS_FPSIMD)で
FPSIMD(以前のバージョンのレジスタを表現する)構造体を用いてレジスタを設定し、期待通りか確認する
TEST031 SVE使用時、ptrace(SETREGSET + NT_ARM_SVE + SVE_PT_REGS_FPSIMD)で
SVEレジスタ構造体を用いてレジスタを設定し、期待通りか確認する
TEST032 prctlでVLと同時にONEXECフラグを付与時、ただちには反映されず、
fork()を行ってもVLが子プロセスに継承されない事を確認する
TEST033 prctlでVLと同時にONEXECフラグを付与時、ただちには反映されず、
pthread_create()を行ってもVLが子スレッドに継承されない事を確認する
TEST034 prctlでVLと同時にONEXECフラグを付与時、ただちには反映されず、最初のexecve()を行ったときにVLが反映される事を確認する
TEST035 SVE使用時、ptrace(SETREGSET + NT_ARM_SVE + SVE_PT_REGS_FPSIMD)で
既存のSVEレジスタ退避領域を上書きしたとき、下位128bitにのみ設定が反映されることを確認する
TEST036 シグナルハンドラ内でVL変更及び変更後のSVEレジスタを使用した場合、SIGSEGVとなる事を確認する
TEST037 prctlでINHERITフラグ、ONEXECフラグの順に設定したとき、下記の動作になることを確認する
現在のVL: INHERIT指定VL、継承するVL: ONEXEC指定VL、execve継承回数: 初回のみ
TEST038 prctlでONEXECフラグ、INHERITフラグの順に設定したとき、下記の動作になることを確認する
現在のVL: INHERIT指定VL、継承するVL: INHERIT指定VL、execve継承回数: 設定変更まで有効
TEST039 prctlでONEXECフラグとINHERITフラグを同時に設定したとき、下記の動作になることを確認する
現在のVL: 変更しない、継承するVL: 指定VL、execve継承回数: 設定変更まで有効
TEST040 SVEレジスタ使用時にSIGSEGVを発生させ、corefileを生成する
生成されたcorefileがGDBで解析が可能で、SVEレジスタの情報が閲覧出来る事を確認する
TEST041 SVEレジスタ対応版のGDBをMcKernel上で動作させ、SVEレジスタの情報がinfo registerで読み出せる事を確認する
(3) 実行結果ログ
result.logファイル内に実行時のログを記載する。
実行に利用したIHK/McKernelは、IA版における下記の版数相当のものである。
IHK
commit d6fcbee8cb91f9ec4b49f97c918e696ac0335aaf
Author: Shiratori, Takehiro <fj0300es@aa.jp.fujitsu.com>
Date: Tue Oct 16 16:25:33 2018 +0900
McKernel
commit 6f9fef2b13447c74c36d15cf5ebd186f8395ccca
Author: Ken Sato <ken.sato.ty@hitachi-solutions.com>
Date: Tue Sep 25 10:05:41 2018 +0900
(4) 備考
TEST040について、RHEL8-betaに含まれるGDBパッケージではSVEのcorefileを解析することは出来ない。
これは、libbfd側にSVEのcorefile解析の制御が含まれていないことが原因となっている。
下記URLのパッチファイルを適用することで解析が可能となる。
TEST040はパッチを適用したlibbfdを利用してテストを行った結果をログに記載している。
https://sourceware.org/ml/binutils/2018-06/msg00314.html
以上。