vhost: Allow adjoining regions
PATCH v2 1/1 vhost: Allow adjoining regions
From: "Dr. David Alan Gilbert" <[email protected]>
My rework of section adding combines overlapping or adjoining regions, but checks they're actually the same underlying RAM block.
Fix the case where two blocks adjoin 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 ; +/* adjoining 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 7 lines · On Fri, 23 Mar 2018 15:39:39 +0000 "Dr. David Alan Gilbert (git)"…
From: "Dr. David Alan Gilbert" <[email protected]>
My rework of section adding combines overlapping or adjoining regions, but checks they're actually the same underlying RAM block.
Fix the case where two blocks adjoin but don't overlap; that new region should get added (but not combined), but my previous patch was disallowing it.
Quoted 5 lines
Fixes c1ece84e7c9Reported-by Alex Williamson <[email protected]>Signed-off-by Dr. David Alan Gilbert <[email protected]>---
Ping? This error report is a regression and should be considered for 2.12.
Quoted 27 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 ; +/* adjoining 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 ; + } } } }
Quoted 17 lines · * Alex Williamson ([email protected]) wrote:
Quoted 7 lines · On Fri, 23 Mar 2018 15:39:39 +0000 "Dr. David Alan Gilbert (git)"…
From: "Dr. David Alan Gilbert" <[email protected]>
My rework of section adding combines overlapping or adjoining regions, but checks they're actually the same underlying RAM block.
Fix the case where two blocks adjoin but don't overlap; that new region should get added (but not combined), but my previous patch was disallowing it.Quoted 5 lines
Fixes c1ece84e7c9Reported-by Alex Williamson <[email protected]>Signed-off-by Dr. David Alan Gilbert <[email protected]>---
Quoted 4 lines
Ping? This error report is a regression and should be considered for 2.12.
Tested-by Alex Williamson <[email protected]>
It's a change in vhost - so mst is taking it ?
Dave
Quoted 20 lines
Quoted 20 lines
hw/virtio/vhost.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)hw/virtio/vhost.c +4
-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 ; +/* adjoining regions are fine, but overlapping ones with +* different blocks/offsets shouldn't happen +*/ +if (mrs_gpa != prev_gpa_end +1 ) {
Quoted 9 lines
hw/virtio/vhost.c static void vhost_region_add_section(struct vhost_dev *dev, · line 609
Quoted 8 lines
hw/virtio/vhost.c +5
-0+error_report ("%s: Overlapping but not coherent sections " +"at %" PRIx64, + __func__, mrs_gpa); +return ; + } } } }
--
Dr. David Alan Gilbert / [email protected] / Manchester, UK
Quoted 18 lines · On Thu, 5 Apr 2018 20:46:55 +0100 "Dr. David Alan Gilbert"…
Quoted 17 lines · * Alex Williamson ([email protected]) wrote:
Quoted 12 lines · On Fri, 23 Mar 2018 15:39:39 +0000 "Dr. David Alan Gilbert (git)"…
From: "Dr. David Alan Gilbert" <[email protected]>
My rework of section adding combines overlapping or adjoining regions, but checks they're actually the same underlying RAM block.
Fix the case where two blocks adjoin 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]>---
Quoted 6 lines
Quoted 4 lines
Ping? This error report is a regression and should be considered for 2.12.
Tested-by Alex Williamson <[email protected]>It's a change in vhost - so mst is taking it ?
That's my assumption, sorry, I should have set to/cc explicitly rather than just replying. Thanks,
Alex
Quoted 30 lines
Quoted 19 lines
Quoted 19 lines
hw/virtio/vhost.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)hw/virtio/vhost.c +4
-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 ; +/* adjoining regions are fine, but overlapping ones with +* different blocks/offsets shouldn't happen +*/ +if (mrs_gpa != prev_gpa_end +1 ) {Quoted 9 lines
hw/virtio/vhost.c static void vhost_region_add_section(struct vhost_dev *dev, · line 609
Quoted 8 lines
hw/virtio/vhost.c +5
-0+error_report ("%s: Overlapping but not coherent sections " +"at %" PRIx64, + __func__, mrs_gpa); +return ; + } } } }--
Dr. David Alan Gilbert / [email protected] / Manchester, UK