From: Janosch Frank <frankja@linux.ibm.com>
To: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: qemu-devel <qemu-devel@nongnu.org>,
"Bonzini, Paolo" <pbonzini@redhat.com>,
mhartmay@linux.ibm.com,
Christian Borntraeger <borntraeger@linux.ibm.com>,
imbrenda@linux.ibm.com, Halil Pasic <pasic@linux.ibm.com>,
Cornelia Huck <cohuck@redhat.com>, Thomas Huth <thuth@redhat.com>,
"open list:S390 SCLP-backed..." <qemu-s390x@nongnu.org>,
seiden@linux.ibm.com, scgl@linux.ibm.com
Subject: Re: [PATCH v4 02/17] dump: Introduce GuestPhysBlock offset and length filter functions
Date: Tue, 26 Jul 2022 15:01:34 +0200 [thread overview]
Message-ID: <8a8afcc3-a3cd-23f3-e7d3-f9a7a951da85@linux.ibm.com> (raw)
In-Reply-To: <CAMxuvazFw2eD1dTQJOQniQCc4faJd3zQw0jtfKdKygWEEtPe5A@mail.gmail.com>
On 7/26/22 13:35, Marc-André Lureau wrote:
> On Tue, Jul 26, 2022 at 1:23 PM Janosch Frank <frankja@linux.ibm.com> wrote:
>>
>> The iteration over the memblocks is hard to understand so it's about
>> time to clean it up. Instead of manually grabbing the next memblock we
>> can use QTAILQ_FOREACH to iterate over all memblocks.
>>
>> Additionally we move the calculation of the offset and length out by
>> using the dump_get_memblock_*() functions.
>>
>> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
>> ---
>> dump/dump.c | 37 +++++++++++++++++++++++++++++++++++++
>> include/sysemu/dump.h | 5 +++++
>> 2 files changed, 42 insertions(+)
>>
>> diff --git a/dump/dump.c b/dump/dump.c
>> index 0ed7cf9c7b..0fd7c76c1e 100644
>> --- a/dump/dump.c
>> +++ b/dump/dump.c
>> @@ -591,6 +591,43 @@ static void dump_begin(DumpState *s, Error **errp)
>> write_elf_notes(s, errp);
>> }
>>
>> +int64_t dump_get_memblock_size(GuestPhysBlock *block, int64_t filter_area_start,
>> + int64_t filter_area_length)
>> +{
>> + int64_t size, left, right;
>> +
>> + /* No filter, return full size */
>> + if (!filter_area_length) {
>> + return block->target_end - block->target_start;
>> + }
>> +
>> + /* calculate the overlapped region. */
>> + left = MAX(filter_area_start, block->target_start);
>> + right = MIN(filter_area_start + filter_area_length, block->target_end);
>> + size = right - left;
>> + size = size > 0 ? size : 0;
>> +
>> + return size;
>> +}
>> +
>> +int64_t dump_get_memblock_start(GuestPhysBlock *block, int64_t filter_area_start,
>> + int64_t filter_area_length)
>> +{
>> + if (filter_area_length) {
>> + /* return -1 if the block is not within filter area */
>> + if (block->target_start >= filter_area_start + filter_area_length ||
>> + block->target_end <= filter_area_start) {
>> + return -1;
>> + }
>> +
>> + if (filter_area_start > block->target_start) {
>> + return filter_area_start - block->target_start;
>> + }
>> + }
>> +
>> + return 0;
>> +}
>> +
>> static int get_next_block(DumpState *s, GuestPhysBlock *block)
>> {
>> while (1) {
>> diff --git a/include/sysemu/dump.h b/include/sysemu/dump.h
>> index ffc2ea1072..6ce3c24197 100644
>> --- a/include/sysemu/dump.h
>> +++ b/include/sysemu/dump.h
>> @@ -203,4 +203,9 @@ typedef struct DumpState {
>> uint16_t cpu_to_dump16(DumpState *s, uint16_t val);
>> uint32_t cpu_to_dump32(DumpState *s, uint32_t val);
>> uint64_t cpu_to_dump64(DumpState *s, uint64_t val);
>> +
>> +int64_t dump_get_memblock_size(GuestPhysBlock *block, int64_t filter_area_start,
>> + int64_t filter_area_length);
>> +int64_t dump_get_memblock_start(GuestPhysBlock *block, int64_t filter_area_start,
>> + int64_t filter_area_length);
>
> The functions don't need to be exported. You probably need to
> introduce them back with their usage, to avoid some compiler warning.
Right, I'll add them in the last s390 dump patch and make them static
> If you can't split the introduction and related refactoring, then
> let's have a single patch.
So squashing this with the next one but leave the other refactoring
patches (dump_calculate_size() and get_start_block()) as they are?
>
> Thanks
>
>> #endif
>> --
>> 2.34.1
>>
>
>
next prev parent reply other threads:[~2022-07-26 13:06 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-26 9:22 [PATCH v4 00/17] dump: Add arch section and s390x PV dump Janosch Frank
2022-07-26 9:22 ` [PATCH v4 01/17] dump: Rename write_elf_loads to write_elf_phdr_loads Janosch Frank
2022-07-27 18:25 ` Janis Schoetterl-Glausch
2022-07-28 17:20 ` Steffen Eiden
2022-07-26 9:22 ` [PATCH v4 02/17] dump: Introduce GuestPhysBlock offset and length filter functions Janosch Frank
2022-07-26 11:35 ` Marc-André Lureau
2022-07-26 13:01 ` Janosch Frank [this message]
2022-07-26 13:11 ` Marc-André Lureau
2022-07-27 10:49 ` Janis Schoetterl-Glausch
2022-07-26 9:22 ` [PATCH v4 03/17] dump: Convert GuestPhysBlock iterators and use the " Janosch Frank
2022-07-27 18:34 ` Janis Schoetterl-Glausch
2022-07-26 9:22 ` [PATCH v4 04/17] dump: Rework get_start_block Janosch Frank
2022-07-26 11:37 ` Marc-André Lureau
2022-07-27 18:42 ` Janis Schoetterl-Glausch
2022-07-28 17:52 ` Steffen Eiden
2022-07-26 9:22 ` [PATCH v4 05/17] dump: Cleanup and annotate guest memory related DumpState struct members Janosch Frank
2022-07-26 11:31 ` Marc-André Lureau
2022-07-29 18:33 ` Janis Schoetterl-Glausch
2022-07-26 9:22 ` [PATCH v4 06/17] dump: Rework dump_calculate_size function Janosch Frank
2022-07-26 11:36 ` Marc-André Lureau
2022-07-26 9:22 ` [PATCH v4 07/17] dump: Allocate header Janosch Frank
2022-07-29 18:31 ` Janis Schoetterl-Glausch
2022-07-26 9:22 ` [PATCH v4 08/17] dump: Split write of section headers and data and add a prepare step Janosch Frank
2022-07-29 15:31 ` Janis Schoetterl-Glausch
2022-07-29 17:16 ` Janis Schoetterl-Glausch
2022-08-01 7:53 ` Janosch Frank
2022-07-26 9:22 ` [PATCH v4 09/17] dump: Reorder struct DumpState Janosch Frank
2022-07-26 11:04 ` Marc-André Lureau
2022-07-29 17:21 ` Janis Schoetterl-Glausch
2022-08-01 7:55 ` Janosch Frank
2022-07-26 9:22 ` [PATCH v4 10/17] dump: Swap segment and section header locations Janosch Frank
2022-07-26 11:06 ` Marc-André Lureau
2022-07-29 18:56 ` Janis Schoetterl-Glausch
2022-07-26 9:22 ` [PATCH v4 11/17] dump/dump: Add section string table support Janosch Frank
2022-07-26 11:25 ` Marc-André Lureau
2022-07-26 12:53 ` Janosch Frank
2022-07-26 13:12 ` Marc-André Lureau
2022-07-26 14:26 ` Janosch Frank
2022-07-28 13:41 ` Marc-André Lureau
2022-08-01 9:26 ` Janosch Frank
2022-07-29 19:35 ` Janis Schoetterl-Glausch
2022-08-01 14:25 ` Janosch Frank
2022-07-26 9:22 ` [PATCH v4 12/17] dump/dump: Add arch section support Janosch Frank
2022-07-26 11:30 ` Marc-André Lureau
2022-07-28 7:34 ` Janosch Frank
2022-07-28 9:49 ` Marc-André Lureau
2022-07-26 9:22 ` [PATCH v4 13/17] linux header sync Janosch Frank
2022-07-26 11:03 ` Marc-André Lureau
2022-07-26 9:22 ` [PATCH v4 14/17] s390x: Add protected dump cap Janosch Frank
2022-07-26 9:22 ` [PATCH v4 15/17] s390x: Introduce PV query interface Janosch Frank
2022-07-26 9:22 ` [PATCH v4 16/17] s390x: Add KVM PV dump interface Janosch Frank
2022-07-26 9:22 ` [PATCH v4 17/17] s390x: pv: Add dump support Janosch Frank
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8a8afcc3-a3cd-23f3-e7d3-f9a7a951da85@linux.ibm.com \
--to=frankja@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=cohuck@redhat.com \
--cc=imbrenda@linux.ibm.com \
--cc=marcandre.lureau@redhat.com \
--cc=mhartmay@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=scgl@linux.ibm.com \
--cc=seiden@linux.ibm.com \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).