Hello,

I tried to run the kernel TPM selftest from
tools/testing/selftests/tpm2/ on two different VMs, and found that while
on one it works on another it reports a lot of errors.

Inspecting the emolated platfrom configuration it turns out that the
non-working VM had TPM 1.2.

While it is not expected that TPM2 tests would work on TPM 1.2 it would
be nice to report something intelligible to the user when the
requirements are not met.

Perhaps somewhat similar to commit 5627f9cffee7 ("Kernel selftests: Add check 
if TPM devices are supported")

Thanks

Michal

Sample output:

jostaberry-2:~/linux/tools/testing/selftests/tpm2/:[0]# ./test_smoke.sh 
test_read_partial_overwrite (tpm2_tests.SmokeTest) ... ERROR
test_read_partial_resp (tpm2_tests.SmokeTest) ... ERROR
Exception ignored in: <bound method Client.__del__ of <tpm2.Client object at 
0x7fffa89044a8>>
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 375, in __del__
    if self.tpm:
AttributeError: 'Client' object has no attribute 'tpm'
test_seal_with_auth (tpm2_tests.SmokeTest) ... ERROR
Exception ignored in: <bound method Client.__del__ of <tpm2.Client object at 
0x7fffa89046d8>>
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 375, in __del__
    if self.tpm:
AttributeError: 'Client' object has no attribute 'tpm'
test_seal_with_policy (tpm2_tests.SmokeTest) ... ERROR
Exception ignored in: <bound method Client.__del__ of <tpm2.Client object at 
0x7fffa8904518>>
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 375, in __del__
    if self.tpm:
AttributeError: 'Client' object has no attribute 'tpm'
test_seal_with_too_long_auth (tpm2_tests.SmokeTest) ... ERROR
Exception ignored in: <bound method Client.__del__ of <tpm2.Client object at 
0x7fffa89044a8>>
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 375, in __del__
    if self.tpm:
AttributeError: 'Client' object has no attribute 'tpm'
test_send_two_cmds (tpm2_tests.SmokeTest) ... ERROR
Exception ignored in: <bound method Client.__del__ of <tpm2.Client object at 
0x7fffa89046d8>>
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 375, in __del__
    if self.tpm:
AttributeError: 'Client' object has no attribute 'tpm'
test_too_short_cmd (tpm2_tests.SmokeTest) ... ERROR
Exception ignored in: <bound method Client.__del__ of <tpm2.Client object at 
0x7fffa8904518>>
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 375, in __del__
    if self.tpm:
AttributeError: 'Client' object has no attribute 'tpm'
test_unseal_with_wrong_auth (tpm2_tests.SmokeTest) ... ERROR
Exception ignored in: <bound method Client.__del__ of <tpm2.Client object at 
0x7fffa89044a8>>
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 375, in __del__
    if self.tpm:
AttributeError: 'Client' object has no attribute 'tpm'
test_unseal_with_wrong_policy (tpm2_tests.SmokeTest) ... ERROR
Exception ignored in: <bound method Client.__del__ of <tpm2.Client object at 
0x7fffa89046d8>>
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 375, in __del__
    if self.tpm:
AttributeError: 'Client' object has no attribute 'tpm'

======================================================================
ERROR: test_read_partial_overwrite (tpm2_tests.SmokeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2_tests.py", line 16, in 
setUp
    self.root_key = self.client.create_root_key()
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 587, in 
create_root_key
    return struct.unpack('>I', self.send_cmd(cmd)[10:14])[0]
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 402, in send_cmd
    raise ProtocolError(cc, rc)
tpm2.ProtocolError: TPM_RC_UNKNOWN: cc=0x00000131, rc=0x0000000a

======================================================================
ERROR: test_read_partial_resp (tpm2_tests.SmokeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2_tests.py", line 15, in 
setUp
    self.client = tpm2.Client()
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 364, in __init__
    self.tpm = open('/dev/tpm0', 'r+b', buffering=0)
OSError: [Errno 16] Device or resource busy: '/dev/tpm0'

======================================================================
ERROR: test_seal_with_auth (tpm2_tests.SmokeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2_tests.py", line 15, in 
setUp
    self.client = tpm2.Client()
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 364, in __init__
    self.tpm = open('/dev/tpm0', 'r+b', buffering=0)
OSError: [Errno 16] Device or resource busy: '/dev/tpm0'

======================================================================
ERROR: test_seal_with_policy (tpm2_tests.SmokeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2_tests.py", line 15, in 
setUp
    self.client = tpm2.Client()
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 364, in __init__
    self.tpm = open('/dev/tpm0', 'r+b', buffering=0)
OSError: [Errno 16] Device or resource busy: '/dev/tpm0'

======================================================================
ERROR: test_seal_with_too_long_auth (tpm2_tests.SmokeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2_tests.py", line 15, in 
setUp
    self.client = tpm2.Client()
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 364, in __init__
    self.tpm = open('/dev/tpm0', 'r+b', buffering=0)
OSError: [Errno 16] Device or resource busy: '/dev/tpm0'

======================================================================
ERROR: test_send_two_cmds (tpm2_tests.SmokeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2_tests.py", line 15, in 
setUp
    self.client = tpm2.Client()
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 364, in __init__
    self.tpm = open('/dev/tpm0', 'r+b', buffering=0)
OSError: [Errno 16] Device or resource busy: '/dev/tpm0'

======================================================================
ERROR: test_too_short_cmd (tpm2_tests.SmokeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2_tests.py", line 15, in 
setUp
    self.client = tpm2.Client()
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 364, in __init__
    self.tpm = open('/dev/tpm0', 'r+b', buffering=0)
OSError: [Errno 16] Device or resource busy: '/dev/tpm0'

======================================================================
ERROR: test_unseal_with_wrong_auth (tpm2_tests.SmokeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2_tests.py", line 15, in 
setUp
    self.client = tpm2.Client()
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 364, in __init__
    self.tpm = open('/dev/tpm0', 'r+b', buffering=0)
OSError: [Errno 16] Device or resource busy: '/dev/tpm0'

======================================================================
ERROR: test_unseal_with_wrong_policy (tpm2_tests.SmokeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/linux/tools/testing/selftests/tpm2/tpm2_tests.py", line 15, in 
setUp
    self.client = tpm2.Client()
  File "/root/linux/tools/testing/selftests/tpm2/tpm2.py", line 364, in __init__
    self.tpm = open('/dev/tpm0', 'r+b', buffering=0)
OSError: [Errno 16] Device or resource busy: '/dev/tpm0'

----------------------------------------------------------------------
Ran 9 tests in 0.012s

FAILED (errors=9)


Reply via email to