98 lines
6.8 KiB
Plaintext
98 lines
6.8 KiB
Plaintext
/* 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
|
||
|
||
|
||
以上。
|