 139fdb3ed8
			
		
	
	
		139fdb3ed8
		
	
	
	
	
		
			
			Qemu already supports devices attached to ISA and sysbus. This drop adds
support for the I2C bus attached TPM devices. I2C model only supports
TPM2 protocol.
This commit includes changes for the common code.
- Added I2C emulation model. Logic was added in the model to temporarily
  cache the data as I2C interface works per byte basis.
- New tpm type "tpm-tis-i2c" added for I2C support. The user has to
  provide this string on command line.
Testing:
  TPM I2C device module is tested using SWTPM (software based TPM
  package). Qemu uses the rainier machine and is connected to swtpm over
  the socket interface.
  The command to start swtpm is as follows:
  $ swtpm socket --tpmstate dir=/tmp/mytpm1    \
                 --ctrl type=unixio,path=/tmp/mytpm1/swtpm-sock  \
                 --tpm2 --log level=100
  The command to start qemu is as follows:
  $ qemu-system-arm -M rainier-bmc -nographic \
            -kernel ${IMAGEPATH}/fitImage-linux.bin \
            -dtb ${IMAGEPATH}/aspeed-bmc-ibm-rainier.dtb \
            -initrd ${IMAGEPATH}/obmc-phosphor-initramfs.rootfs.cpio.xz \
            -drive file=${IMAGEPATH}/obmc-phosphor-image.rootfs.wic.qcow2,if=sd,index=2 \
            -net nic -net user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:2443-:443 \
            -chardev socket,id=chrtpm,path=/tmp/mytpm1/swtpm-sock \
            -tpmdev emulator,id=tpm0,chardev=chrtpm \
            -device tpm-tis-i2c,tpmdev=tpm0,bus=aspeed.i2c.bus.12,address=0x2e
Signed-off-by: Ninad Palsule <ninad@linux.ibm.com>
Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
Tested-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Joel Stanley <joel@jms.id.au>
Tested-by: Joel Stanley <joel@jms.id.au>
Message-id: 20230414220754.1191476-4-ninadpalsule@us.ibm.com
		
	
			
		
			
				
	
	
		
			33 lines
		
	
	
		
			486 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			486 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| config TPM_TIS_I2C
 | |
|     bool
 | |
|     depends on TPM
 | |
|     select TPM_BACKEND
 | |
|     select I2C
 | |
|     select TPM_TIS
 | |
| 
 | |
| config TPM_TIS_ISA
 | |
|     bool
 | |
|     depends on TPM && ISA_BUS
 | |
|     select TPM_TIS
 | |
| 
 | |
| config TPM_TIS_SYSBUS
 | |
|     bool
 | |
|     depends on TPM
 | |
|     select TPM_TIS
 | |
| 
 | |
| config TPM_TIS
 | |
|     bool
 | |
|     depends on TPM
 | |
|     select TPM_BACKEND
 | |
| 
 | |
| config TPM_CRB
 | |
|     bool
 | |
|     depends on TPM && PC
 | |
|     select TPM_BACKEND
 | |
| 
 | |
| config TPM_SPAPR
 | |
|     bool
 | |
|     default y
 | |
|     depends on TPM && PSERIES
 | |
|     select TPM_BACKEND
 |