iommu/arm-smmu: Support for Extended Stream ID (16 bit)
authorAleksey Makarov <aleksey.makarov@linaro.org>
Thu, 19 Jan 2017 14:36:36 +0000 (17:36 +0300)
committerWill Deacon <will.deacon@arm.com>
Thu, 26 Jan 2017 18:16:57 +0000 (18:16 +0000)
commitdc0eaa4e19a7db1cb046b3979945536fdc914517
tree3fb525e11e5b3d227befaa667d9b7ec5312bd880
parent65e251a4634c5644efca6f7e15803f0962d8943d
iommu/arm-smmu: Support for Extended Stream ID (16 bit)

It is the time we have the real 16-bit Stream ID user, which is the
ThunderX. Its IO topology uses 1:1 map for Requester ID to Stream ID
translation for each root complex which allows to get full 16-bit
Stream ID.  Firmware assigns bus IDs that are greater than 128 (0x80)
to some buses under PEM (external PCIe interface).  Eventually SMMU
drops devices on that buses because their Stream ID is out of range:

  pci 0006:90:00.0: stream ID 0x9000 out of range for SMMU (0x7fff)

To fix above issue enable the Extended Stream ID optional feature
when available.

Reviewed-by: Tomasz Nowicki <tomasz.nowicki@caviumnetworks.com>
Signed-off-by: Aleksey Makarov <aleksey.makarov@linaro.org>
Tested-by: Tomasz Nowicki <tomasz.nowicki@caviumnetworks.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
drivers/iommu/arm-smmu.c