Как драйвер mlx5 использует IOVA, сгенерированный IOMMU, в качестве адреса DMA?
Я включил на физической машине. Я ожидаю, что будет использовать выделенноеIOMMU module
после включения. Однако в действительностиRDMA NIC
не использует дляDMA
:
введите сюда описание изображения
Прочитав исходный код ядра, я обнаружил, чтоib_dma_map_sgtable_attrs()
вызываетсяib_umem_get
чтобы получить для каждогоscatterlist (sg) entry
. В процессе получения он сначала проверяет, является ли он пустым, а затем решает, следует ли присвоить его. В настоящее время он был отлажен и на данный момент пуст, иDMA address
не назначен наIOVA
.
Выполняет ли драйвер mlx5 какие-либо другие действия (например, назначениеdev->ops
) при получении устройства структуры *dev, чтобы иметь возможность использоватьIOMMU
?