Message ID | 20240320083945.991426-12-michael.roth@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add AMD Secure Nested Paging (SEV-SNP) support | expand |
On 20.03.24 09:39, Michael Roth wrote: > From: Xiaoyao Li <xiaoyao.li@intel.com> > > When memory page is converted from private to shared, the original > private memory is back'ed by guest_memfd. Introduce > ram_block_discard_guest_memfd_range() for discarding memory in > guest_memfd. > > Originally-from: Isaku Yamahata <isaku.yamahata@intel.com> > Codeveloped-by: Xiaoyao Li <xiaoyao.li@intel.com> "Co-developed-by" > Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com> > Reviewed-by: David Hildenbrand <david@redhat.com> Your SOB should go here. > --- > Changes in v5: > - Collect Reviewed-by from David; > > Changes in in v4: > - Drop ram_block_convert_range() and open code its implementation in the > next Patch. > > Signed-off-by: Michael Roth <michael.roth@amd.com> I only received 3 patches from this series, and now I am confused: changelog talks about v5 and this is "PATCH v3" Please make sure to send at least the cover letter along (I might not need the other 46 patches :D ).
On 3/20/2024 5:37 PM, David Hildenbrand wrote: > On 20.03.24 09:39, Michael Roth wrote: >> From: Xiaoyao Li <xiaoyao.li@intel.com> >> >> When memory page is converted from private to shared, the original >> private memory is back'ed by guest_memfd. Introduce >> ram_block_discard_guest_memfd_range() for discarding memory in >> guest_memfd. >> >> Originally-from: Isaku Yamahata <isaku.yamahata@intel.com> >> Codeveloped-by: Xiaoyao Li <xiaoyao.li@intel.com> > > "Co-developed-by" Michael is using the patch from my TDX-QEMU v5 series[1]. I need to fix it. >> Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com> >> Reviewed-by: David Hildenbrand <david@redhat.com> > > Your SOB should go here. > >> --- >> Changes in v5: >> - Collect Reviewed-by from David; >> >> Changes in in v4: >> - Drop ram_block_convert_range() and open code its implementation in the >> next Patch. >> >> Signed-off-by: Michael Roth <michael.roth@amd.com> > > I only received 3 patches from this series, and now I am confused: > changelog talks about v5 and this is "PATCH v3" As above, because the guest_memfd patches in my TDX-QEMU v5[1] were directly picked for this series, so the change history says v5. They are needed by SEV-SNP as well. I want to raise the question, how do we want to proceed with the guest memfd patches (patch 2 to 10 in [1])? Can they be merged separately before TDX/SNP patches? > Please make sure to send at least the cover letter along (I might not > need the other 46 patches :D ). > [1] https://lore.kernel.org/qemu-devel/20240229063726.610065-1-xiaoyao.li@intel.com/
On 20.03.24 13:43, Xiaoyao Li wrote: > On 3/20/2024 5:37 PM, David Hildenbrand wrote: >> On 20.03.24 09:39, Michael Roth wrote: >>> From: Xiaoyao Li <xiaoyao.li@intel.com> >>> >>> When memory page is converted from private to shared, the original >>> private memory is back'ed by guest_memfd. Introduce >>> ram_block_discard_guest_memfd_range() for discarding memory in >>> guest_memfd. >>> >>> Originally-from: Isaku Yamahata <isaku.yamahata@intel.com> >>> Codeveloped-by: Xiaoyao Li <xiaoyao.li@intel.com> >> >> "Co-developed-by" > > Michael is using the patch from my TDX-QEMU v5 series[1]. I need to fix it. > >>> Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com> >>> Reviewed-by: David Hildenbrand <david@redhat.com> >> >> Your SOB should go here. >> >>> --- >>> Changes in v5: >>> - Collect Reviewed-by from David; >>> >>> Changes in in v4: >>> - Drop ram_block_convert_range() and open code its implementation in the >>> next Patch. >>> >>> Signed-off-by: Michael Roth <michael.roth@amd.com> >> >> I only received 3 patches from this series, and now I am confused: >> changelog talks about v5 and this is "PATCH v3" > > As above, because the guest_memfd patches in my TDX-QEMU v5[1] were > directly picked for this series, so the change history says v5. They are > needed by SEV-SNP as well. Thanks, I was missing the context without a cover letter. These comments here likely should be dropped here.
On Wed, Mar 20, 2024 at 10:37:14AM +0100, David Hildenbrand wrote: > On 20.03.24 09:39, Michael Roth wrote: > > From: Xiaoyao Li <xiaoyao.li@intel.com> > > > > When memory page is converted from private to shared, the original > > private memory is back'ed by guest_memfd. Introduce > > ram_block_discard_guest_memfd_range() for discarding memory in > > guest_memfd. > > > > Originally-from: Isaku Yamahata <isaku.yamahata@intel.com> > > Codeveloped-by: Xiaoyao Li <xiaoyao.li@intel.com> > > "Co-developed-by" > > > Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com> > > Reviewed-by: David Hildenbrand <david@redhat.com> > > Your SOB should go here. > > > --- > > Changes in v5: > > - Collect Reviewed-by from David; > > > > Changes in in v4: > > - Drop ram_block_convert_range() and open code its implementation in the > > next Patch. > > > > Signed-off-by: Michael Roth <michael.roth@amd.com> > > I only received 3 patches from this series, and now I am confused: changelog > talks about v5 and this is "PATCH v3" > > Please make sure to send at least the cover letter along (I might not need > the other 46 patches :D ). Sorry for the confusion, you got auto-Cc'd by git, which is good, but not sure there's a good way to make sure everyone gets a copy of the cover letter. I could see how it would help useful to potential reviewers though. I'll try to come up with a script for it and take that approach in the future. -Mike > > -- > Cheers, > > David / dhildenb >
On 20.03.24 18:38, Michael Roth wrote: > On Wed, Mar 20, 2024 at 10:37:14AM +0100, David Hildenbrand wrote: >> On 20.03.24 09:39, Michael Roth wrote: >>> From: Xiaoyao Li <xiaoyao.li@intel.com> >>> >>> When memory page is converted from private to shared, the original >>> private memory is back'ed by guest_memfd. Introduce >>> ram_block_discard_guest_memfd_range() for discarding memory in >>> guest_memfd. >>> >>> Originally-from: Isaku Yamahata <isaku.yamahata@intel.com> >>> Codeveloped-by: Xiaoyao Li <xiaoyao.li@intel.com> >> >> "Co-developed-by" >> >>> Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com> >>> Reviewed-by: David Hildenbrand <david@redhat.com> >> >> Your SOB should go here. >> >>> --- >>> Changes in v5: >>> - Collect Reviewed-by from David; >>> >>> Changes in in v4: >>> - Drop ram_block_convert_range() and open code its implementation in the >>> next Patch. >>> >>> Signed-off-by: Michael Roth <michael.roth@amd.com> >> >> I only received 3 patches from this series, and now I am confused: changelog >> talks about v5 and this is "PATCH v3" >> >> Please make sure to send at least the cover letter along (I might not need >> the other 46 patches :D ). > > Sorry for the confusion, you got auto-Cc'd by git, which is good, but > not sure there's a good way to make sure everyone gets a copy of the > cover letter. I could see how it would help useful to potential > reviewers though. I'll try to come up with a script for it and take that > approach in the future. A script shared with me in the past to achieve that in most cases: $ cat cc-cmd.sh #!/bin/bash if [[ $1 == *gitsendemail.msg* || $1 == *cover-letter* ]]; then grep ': .* <.*@.*>' -h *.patch | sed 's/^.*: //' | sort | uniq fi And attach to "git send-email ... *.patch": --cc-cmd=./cc-cmd.sh
On Wed, Mar 20, 2024 at 09:04:52PM +0100, David Hildenbrand wrote: > On 20.03.24 18:38, Michael Roth wrote: > > On Wed, Mar 20, 2024 at 10:37:14AM +0100, David Hildenbrand wrote: > > > On 20.03.24 09:39, Michael Roth wrote: > > > > From: Xiaoyao Li <xiaoyao.li@intel.com> > > > > > > > > When memory page is converted from private to shared, the original > > > > private memory is back'ed by guest_memfd. Introduce > > > > ram_block_discard_guest_memfd_range() for discarding memory in > > > > guest_memfd. > > > > > > > > Originally-from: Isaku Yamahata <isaku.yamahata@intel.com> > > > > Codeveloped-by: Xiaoyao Li <xiaoyao.li@intel.com> > > > > > > "Co-developed-by" > > > > > > > Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com> > > > > Reviewed-by: David Hildenbrand <david@redhat.com> > > > > > > Your SOB should go here. > > > > > > > --- > > > > Changes in v5: > > > > - Collect Reviewed-by from David; > > > > > > > > Changes in in v4: > > > > - Drop ram_block_convert_range() and open code its implementation in the > > > > next Patch. > > > > > > > > Signed-off-by: Michael Roth <michael.roth@amd.com> > > > > > > I only received 3 patches from this series, and now I am confused: changelog > > > talks about v5 and this is "PATCH v3" > > > > > > Please make sure to send at least the cover letter along (I might not need > > > the other 46 patches :D ). > > > > Sorry for the confusion, you got auto-Cc'd by git, which is good, but > > not sure there's a good way to make sure everyone gets a copy of the > > cover letter. I could see how it would help useful to potential > > reviewers though. I'll try to come up with a script for it and take that > > approach in the future. > > A script shared with me in the past to achieve that in most cases: > > $ cat cc-cmd.sh > #!/bin/bash > > if [[ $1 == *gitsendemail.msg* || $1 == *cover-letter* ]]; then > grep ': .* <.*@.*>' -h *.patch | sed 's/^.*: //' | sort | uniq > fi > > > And attach to "git send-email ... *.patch": --cc-cmd=./cc-cmd.sh That should do the trick nicely. Thanks! -Mike > > -- > Cheers, > > David / dhildenb >
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h index 6346df17ce..6d5318895a 100644 --- a/include/exec/cpu-common.h +++ b/include/exec/cpu-common.h @@ -159,6 +159,8 @@ typedef int (RAMBlockIterFunc)(RAMBlock *rb, void *opaque); int qemu_ram_foreach_block(RAMBlockIterFunc func, void *opaque); int ram_block_discard_range(RAMBlock *rb, uint64_t start, size_t length); +int ram_block_discard_guest_memfd_range(RAMBlock *rb, uint64_t start, + size_t length); #endif diff --git a/system/physmem.c b/system/physmem.c index 3a4a3f10d5..8be8053cf7 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -3705,6 +3705,29 @@ err: return ret; } +int ram_block_discard_guest_memfd_range(RAMBlock *rb, uint64_t start, + size_t length) +{ + int ret = -1; + +#ifdef CONFIG_FALLOCATE_PUNCH_HOLE + ret = fallocate(rb->guest_memfd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, + start, length); + + if (ret) { + ret = -errno; + error_report("%s: Failed to fallocate %s:%" PRIx64 " +%zx (%d)", + __func__, rb->idstr, start, length, ret); + } +#else + ret = -ENOSYS; + error_report("%s: fallocate not available %s:%" PRIx64 " +%zx (%d)", + __func__, rb->idstr, start, length, ret); +#endif + + return ret; +} + bool ramblock_is_pmem(RAMBlock *rb) { return rb->flags & RAM_PMEM;