All of lore.kernel.org
 help / color / mirror / Atom feed
From: Janosch Frank <frankja@linux.ibm.com>
To: qemu-devel@nongnu.org
Cc: marcandre.lureau@redhat.com, pbonzini@redhat.com,
	mhartmay@linux.ibm.com,  borntraeger@linux.ibm.com,
	imbrenda@linux.ibm.com, pasic@linux.ibm.com, cohuck@redhat.com,
	thuth@redhat.com, qemu-s390x@nongnu.org, seiden@linux.ibm.com,
	scgl@linux.ibm.com
Subject: Re: [PATCH v5 18/18] s390x: pv: Add dump support
Date: Thu, 11 Aug 2022 15:03:52 +0200	[thread overview]
Message-ID: <01558297-dc6f-956c-ec48-9506707ec165@linux.ibm.com> (raw)
In-Reply-To: <20220811121111.9878-19-frankja@linux.ibm.com>

On 8/11/22 14:11, Janosch Frank wrote:
> Sometimes dumping a guest from the outside is the only way to get the
> data that is needed. This can be the case if a dumping mechanism like
> KDUMP hasn't been configured or data needs to be fetched at a specific
> point. Dumping a protected guest from the outside without help from
> fw/hw doesn't yield sufficient data to be useful. Hence we now
> introduce PV dump support.
> 
> The PV dump support works by integrating the firmware into the dump
> process. New Ultravisor calls are used to initiate the dump process,
> dump cpu data, dump memory state and lastly complete the dump process.
> The UV calls are exposed by KVM via the new KVM_PV_DUMP command and
> its subcommands. The guest's data is fully encrypted and can only be
> decrypted by the entity that owns the customer communication key for
> the dumped guest. Also dumping needs to be allowed via a flag in the
> SE header.
> 
> On the QEMU side of things we store the PV dump data in the newly
> introduced architecture ELF sections (storage state and completion
> data) and the cpu notes (for cpu dump data).
> 
> Users can use the zgetdump tool to convert the encrypted QEMU dump to an
> unencrypted one.
> 
> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>


Seems like I forgot to amend this commit with the naming changes before 
sending:

diff --git i/target/s390x/arch_dump.c w/target/s390x/arch_dump.c
index 5e8e03d536..233f23c071 100644
--- i/target/s390x/arch_dump.c
+++ w/target/s390x/arch_dump.c
@@ -286,14 +286,14 @@ int 
s390_cpu_write_elf64_note(WriteCoreDumpFunction f, CPUState *cs,
  }

  /* PV dump section size functions */
-static uint64_t get_dump_stor_state_size_from_len(uint64_t len)
+static uint64_t get_stor_state_size_from_len(uint64_t len)
  {
      return (len / (1 << 20)) * kvm_s390_pv_dmp_get_size_stor_state();
  }

  static uint64_t get_size_stor_state(DumpState *s)
  {
-    return get_dump_stor_state_size_from_len(s->total_size);
+    return get_stor_state_size_from_len(s->total_size);
  }

  static uint64_t get_size_complete(DumpState *s)
@@ -316,7 +316,8 @@ static int get_data_complete(DumpState *s, uint8_t 
*buff)
      return rc;
  }

-static int dump_mem(DumpState *s, uint64_t gaddr, uint8_t *buff, 
uint64_t buff_len)
+static int get_stor_state_block(DumpState *s, uint64_t gaddr, uint8_t 
*buff,
+                                uint64_t buff_len)
  {
      /* We need the gaddr + len and something to write to */
      if (!pv_dump_initialized) {
@@ -325,7 +326,7 @@ static int dump_mem(DumpState *s, uint64_t gaddr, 
uint8_t *buff, uint64_t buff_l
      return kvm_s390_dump_mem(gaddr, buff_len, buff);
  }

-static int get_data_mem(DumpState *s, uint8_t *buff)
+static int get_store_state(DumpState *s, uint8_t *buff)
  {
      int64_t memblock_size, memblock_start;
      GuestPhysBlock *block;
@@ -341,9 +342,9 @@ static int get_data_mem(DumpState *s, uint8_t *buff)
          memblock_size = dump_filtered_memblock_size(block, 
s->filter_area_begin,
 
s->filter_area_length);

-        off = get_dump_stor_state_size_from_len(block->target_start);
-        dump_mem(s, block->target_start, buff + off,
-                 get_dump_stor_state_size_from_len(memblock_size));
+        off = get_stor_state_size_from_len(block->target_start);
+        get_stor_state_block(s, block->target_start, buff + off,
+                             get_stor_state_size_from_len(memblock_size));
      }

      return 0;
@@ -354,7 +355,7 @@ struct sections {
      int (*sections_contents_func)(DumpState *s, uint8_t *buff);
      char sctn_str[12];
  } sections[] = {
-    { get_size_stor_state, get_data_mem, "pv_mem_meta"},
+    { get_size_stor_state, get_store_state, "pv_mem_meta"},
      { get_size_complete, get_data_complete, "pv_compl"},
      {NULL , NULL, ""}
  };


  reply	other threads:[~2022-08-11 13:13 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-11 12:10 [PATCH v5 00/18] dump: Add arch section and s390x PV dump Janosch Frank
2022-08-11 12:10 ` [PATCH v5 01/18] dump: Replace opaque DumpState pointer with a typed one Janosch Frank
2022-08-11 16:51   ` Daniel Henrique Barboza
2022-08-16  7:58   ` Marc-André Lureau
2022-08-11 12:10 ` [PATCH v5 02/18] dump: Rename write_elf_loads to write_elf_phdr_loads Janosch Frank
2022-08-11 12:10 ` [PATCH v5 03/18] dump: Refactor dump_iterate and introduce dump_filter_memblock_*() Janosch Frank
2022-08-16  8:12   ` Marc-André Lureau
2022-08-11 12:10 ` [PATCH v5 04/18] dump: Rework get_start_block Janosch Frank
2022-08-29 20:17   ` Janis Schoetterl-Glausch
2022-09-26 14:48     ` Janosch Frank
2022-08-11 12:10 ` [PATCH v5 05/18] dump: Rework filter area variables Janosch Frank
2022-08-16  8:19   ` Marc-André Lureau
2022-08-11 12:10 ` [PATCH v5 06/18] dump: Rework dump_calculate_size function Janosch Frank
2022-09-01  9:24   ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 07/18] dump: Split elf header functions into prepare and write Janosch Frank
2022-08-16  8:26   ` Marc-André Lureau
2022-09-01  9:24   ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 08/18] dump: Rename write_elf*_phdr_note to prepare_elf*_phdr_note Janosch Frank
2022-08-16  8:28   ` Marc-André Lureau
2022-09-01  9:24   ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 09/18] dump: Use a buffer for ELF section data and headers Janosch Frank
2022-08-16  8:43   ` Marc-André Lureau
2022-08-29 20:43   ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 10/18] dump: Reorder struct DumpState Janosch Frank
2022-08-11 12:11 ` [PATCH v5 11/18] dump: Swap segment and section header locations Janosch Frank
2022-08-11 12:11 ` [PATCH v5 12/18] dump/dump: Add section string table support Janosch Frank
2022-08-30 11:35   ` Steffen Eiden
2022-08-30 14:02     ` Janosch Frank
2022-09-01  9:25   ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 13/18] dump/dump: Add arch section support Janosch Frank
2022-09-01  9:26   ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 14/18] DRAFT: linux header sync Janosch Frank
2022-08-11 12:11 ` [PATCH v5 15/18] s390x: Add protected dump cap Janosch Frank
2022-08-29 11:29   ` Thomas Huth
2022-09-01  9:26   ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 16/18] s390x: Introduce PV query interface Janosch Frank
2022-08-29 11:30   ` Thomas Huth
2022-09-01  9:26   ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 17/18] s390x: Add KVM PV dump interface Janosch Frank
2022-08-23 15:25   ` Steffen Eiden
2022-09-01  9:26   ` Janis Schoetterl-Glausch
2022-08-11 12:11 ` [PATCH v5 18/18] s390x: pv: Add dump support Janosch Frank
2022-08-11 13:03   ` Janosch Frank [this message]
2022-08-23 15:26   ` Steffen Eiden
2022-08-29 11:57   ` Thomas Huth
2022-09-01  9:31   ` Janis Schoetterl-Glausch

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=01558297-dc6f-956c-ec48-9506707ec165@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.