Files
mckernel/test/sve
Shiratori, Takehiro 5e992bc195 arm64: test: Add Makefile that was ignored commit.
Target commit:
  Test "Direct access to McKernel memory from Linux." on arm64
  Test "Scalable Vector Extension (SVE) support." on arm64

Change-Id: Ia9dc97c5cf0c4cf223423b4257745ea2101bee1d
2019-03-22 05:08:25 +00:00
..

This file contains ambiguous Unicode characters

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フラグの順に設定したとき、下記の動作になることを確認する
	        現在のVLINHERIT指定VL、継承するVLONEXEC指定VL、execve継承回数初回のみ
	TEST038 prctlでONEXECフラグ、INHERITフラグの順に設定したとき、下記の動作になることを確認する
	        現在のVLINHERIT指定VL、継承するVLINHERIT指定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


以上。