qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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
>>
> 
> 


  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).