vhost: Allow abutting regions
PATCH 1/1 vhost: Allow abutting regions
From: "Dr. David Alan Gilbert" <[email protected]>
My rework of section adding combines overlapping or abutting regions, but checks they're actually the same underlying RAM block.
Fix the case where two blocks abut but don't overlap; that new region should get added (but not combined), but my previous patch was disallowing it.
--- hw/virtio/vhost.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
hw/virtio/vhost.c +9 -4
@@ -595,10 +595,15 @@ static void vhost_region_add_section(struct vhost_dev *dev, prev_sec->offset_within_address_space, prev_sec->offset_within_region); }else { -error_report ("%s: Overlapping but not coherent sections " -"at %" PRIx64, - __func__, mrs_gpa); -return ; +/* abutting regions are fine, but overlapping ones with +* different blocks/offsets shouldn't happen +*/ +if (mrs_gpa != prev_gpa_end +1 ) { +error_report ("%s: Overlapping but not coherent sections " +"at %" PRIx64, + __func__, mrs_gpa); +return ; + } } } }
Signature · 1 line
2.14.3
Quoted 11 lines · Dr. David Alan Gilbert (git)
From: "Dr. David Alan Gilbert" <[email protected]>
My rework of section adding combines overlapping or abutting regions, but checks they're actually the same underlying RAM block.
Fix the case where two blocks abut but don't overlap; that new region should get added (but not combined), but my previous patch was disallowing it.Fixes c1ece84e7c9Reported-by Alex Williamson <[email protected]>Signed-off-by Dr. David Alan Gilbert <[email protected]>
Can we replace abutting with adjacent pls?
Quoted 30 lines
--- hw/virtio/vhost.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)hw/virtio/vhost.c +9
-4@@ -595,10 +595,15 @@ static void vhost_region_add_section(struct vhost_dev *dev, prev_sec->offset_within_address_space, prev_sec->offset_within_region); }else { -error_report ("%s: Overlapping but not coherent sections " -"at %" PRIx64, - __func__, mrs_gpa); -return ; +/* abutting regions are fine, but overlapping ones with +* different blocks/offsets shouldn't happen +*/ +if (mrs_gpa != prev_gpa_end +1 ) { +error_report ("%s: Overlapping but not coherent sections " +"at %" PRIx64, + __func__, mrs_gpa); +return ; + } } } }Signature · 1 line
2.14.3
Quoted 8 lines · * Michael S. Tsirkin ([email protected]) wrote:
Quoted 7 lines · Dr. David Alan Gilbert (git)
From: "Dr. David Alan Gilbert" <[email protected]>
My rework of section adding combines overlapping or abutting regions, but checks they're actually the same underlying RAM block.
Fix the case where two blocks abut but don't overlap; that new region should get added (but not combined), but my previous patch was disallowing it.
Quoted 6 lines
Quoted 4 lines
Fixes c1ece84e7c9Reported-by Alex Williamson <[email protected]>Signed-off-by Dr. David Alan Gilbert <[email protected]>Can we replace abutting with adjacent pls?
Sure; do you want to fix that in commit?
Dave
Quoted 22 lines
Quoted 22 lines
--- hw/virtio/vhost.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)hw/virtio/vhost.c +6
-4@@ -595,10 +595,15 @@ static void vhost_region_add_section(struct vhost_dev *dev, prev_sec->offset_within_address_space, prev_sec->offset_within_region); }else { -error_report ("%s: Overlapping but not coherent sections " -"at %" PRIx64, - __func__, mrs_gpa); -return ; +/* abutting regions are fine, but overlapping ones with +* different blocks/offsets shouldn't happen +*/ +if (mrs_gpa != prev_gpa_end +1 ) { + error_report("%s: Overlapping but not coherent sections " + "at %"PRIx64,
Quoted 8 lines
Quoted 8 lines
hw/virtio/vhost.c +3
-0+ __func__, mrs_gpa); +return ; + } } } }Signature · 1 line
2.14.3
--
Dr. David Alan Gilbert / [email protected] / Manchester, UK
Quoted 11 lines · Dr. David Alan Gilbert
Quoted 10 lines · * Michael S. Tsirkin ([email protected]) wrote:
Quoted 9 lines · Dr. David Alan Gilbert (git)
From: "Dr. David Alan Gilbert" <[email protected]>
My rework of section adding combines overlapping or abutting regions, but checks they're actually the same underlying RAM block.
Fix the case where two blocks abut but don't overlap; that new region should get added (but not combined), but my previous patch was disallowing it.Fixes c1ece84e7c9
Quoted 8 lines
Quoted 4 lines
Quoted 2 lines
Reported-by Alex Williamson <[email protected]>Signed-off-by Dr. David Alan Gilbert <[email protected]>Can we replace abutting with adjacent pls?
Sure; do you want to fix that in commit?
Dave
Rather.
Quoted 32 lines
Quoted 22 lines
Quoted 22 lines
--- hw/virtio/vhost.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)hw/virtio/vhost.c +6
-4@@ -595,10 +595,15 @@ static void vhost_region_add_section(struct vhost_dev *dev, prev_sec->offset_within_address_space, prev_sec->offset_within_region); }else { -error_report ("%s: Overlapping but not coherent sections " -"at %" PRIx64, - __func__, mrs_gpa); -return ; +/* abutting regions are fine, but overlapping ones with +* different blocks/offsets shouldn't happen +*/ +if (mrs_gpa != prev_gpa_end +1 ) { + error_report("%s: Overlapping but not coherent sections " + "at %"PRIx64,Quoted 8 lines
Quoted 8 lines
hw/virtio/vhost.c +3
-0+ __func__, mrs_gpa); +return ; + } } } }Signature · 1 line
2.14.3--
Dr. David Alan Gilbert / [email protected] / Manchester, UK
Quoted 11 lines · Dr. David Alan Gilbert (git)
From: "Dr. David Alan Gilbert" <[email protected]>
My rework of section adding combines overlapping or abutting regions, but checks they're actually the same underlying RAM block.
Fix the case where two blocks abut but don't overlap; that new region should get added (but not combined), but my previous patch was disallowing it.Fixes c1ece84e7c9Reported-by Alex Williamson <[email protected]>Signed-off-by Dr. David Alan Gilbert <[email protected]>
I prefer adjacent and not abutting.
Quoted 30 lines
--- hw/virtio/vhost.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)hw/virtio/vhost.c +9
-4@@ -595,10 +595,15 @@ static void vhost_region_add_section(struct vhost_dev *dev, prev_sec->offset_within_address_space, prev_sec->offset_within_region); }else { -error_report ("%s: Overlapping but not coherent sections " -"at %" PRIx64, - __func__, mrs_gpa); -return ; +/* abutting regions are fine, but overlapping ones with +* different blocks/offsets shouldn't happen +*/ +if (mrs_gpa != prev_gpa_end +1 ) { +error_report ("%s: Overlapping but not coherent sections " +"at %" PRIx64, + __func__, mrs_gpa); +return ; + } } } }Signature · 1 line
2.14.3