Re: [PATCH 2/2] vfio/common: Add trace point when a MMIO RAM section less than PAGE_SIZE
Hi Alex, On 2021/9/9 4:45, Alex Williamson wrote: On Fri, 3 Sep 2021 17:36:11 +0800 Kunkun Jiang 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-0x). 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 --- 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())); .
Re: [PATCH 2/2] vfio/common: Add trace point when a MMIO RAM section less than PAGE_SIZE
On Fri, 3 Sep 2021 17:36:11 +0800 Kunkun Jiang 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/ > 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/ > (0x30-0x). 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") Thanks, Alex > Signed-off-by: Kunkun Jiang > --- > 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()));
[PATCH 2/2] vfio/common: Add trace point when a MMIO RAM section less than PAGE_SIZE
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. 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 (0x30-0x). 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. Signed-off-by: Kunkun Jiang --- 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())); -- 2.23.0