Hi Alex,
On 2021/9/9 4:45, Alex Williamson wrote:
On Fri, 3 Sep 2021 17:36:11 +0800
Kunkun Jiang <jiangkun...@huawei.com> wrote:
The MSI-X structures of some devices and other non-MSI-X structures
are in the same BAR. They may share one host page, especially in the
case of large page granularity, suck as 64K.
s/suck/such/
ok
For example, MSIX-Table size of 82599 NIC is 0x30 and the offset in
Bar 3(size 64KB) is 0x0. If host page size is 64KB.
vfio_listenerregion_add() will be called to map the remaining range
s/vfio_listenerregion_add/vfio_listener_region_add/
ok
(0x30-0xffff). And it will return early at
'int128_ge((int128_make64(iova), llend))' and hasn't any message.
Let's add a trace point to informed users like 5c08600547c did.
Please use the following syntax for referencing previous commits
(12-char sha1 is standard):
commit 5c08600547c0 ("vfio: Use a trace point when a RAM section
cannot be DMA mapped")
Thank you for your reply. I will correct it in V2.
Thanks,
Kunkun Jiang
Thanks,
Alex
Signed-off-by: Kunkun Jiang <jiangkun...@huawei.com>
---
hw/vfio/common.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/hw/vfio/common.c b/hw/vfio/common.c
index 8728d4d5c2..2fc6213c0f 100644
--- a/hw/vfio/common.c
+++ b/hw/vfio/common.c
@@ -892,6 +892,13 @@ static void vfio_listener_region_add(MemoryListener
*listener,
llend = int128_and(llend, int128_exts64(qemu_real_host_page_mask));
if (int128_ge(int128_make64(iova), llend)) {
+ if (memory_region_is_ram_device(section->mr)) {
+ trace_vfio_listener_region_add_no_dma_map(
+ memory_region_name(section->mr),
+ section->offset_within_address_space,
+ int128_getlo(section->size),
+ qemu_real_host_page_size);
+ }
return;
}
end = int128_get64(int128_sub(llend, int128_one()));
.