* [Qemu-devel] [PATCH v1 0/2] s390x/kvm: legacy_s390_alloc() fixes
@ 2018-06-28 11:38 David Hildenbrand
2018-06-28 11:38 ` [Qemu-devel] [PATCH v1 1/2] s390x/kvm: legacy_s390_alloc() only supports one allocation David Hildenbrand
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: David Hildenbrand @ 2018-06-28 11:38 UTC (permalink / raw)
To: qemu-s390x
Cc: qemu-devel, Richard Henderson, Alexander Graf, Cornelia Huck,
Christian Borntraeger, Thomas Huth, David Hildenbrand
Two patches for legacy_s390_alloc(), only relevant under old z/VM versions.
Patch #1 is relevant when trying to allocate memory for more than one
memory region. Patch #2 is only for completeness, to make it behave
more similar to qemu_anon_ram_alloc().
David Hildenbrand (2):
s390x/kvm: legacy_s390_alloc() only supports one allocation
s390x/kvm: indicate alignment in legacy_s390_alloc()
target/s390x/kvm.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH v1 1/2] s390x/kvm: legacy_s390_alloc() only supports one allocation
2018-06-28 11:38 [Qemu-devel] [PATCH v1 0/2] s390x/kvm: legacy_s390_alloc() fixes David Hildenbrand
@ 2018-06-28 11:38 ` David Hildenbrand
2018-06-28 12:42 ` [Qemu-devel] [qemu-s390x] " Christian Borntraeger
2018-06-28 11:38 ` [Qemu-devel] [PATCH v1 2/2] s390x/kvm: indicate alignment in legacy_s390_alloc() David Hildenbrand
2018-06-28 15:22 ` [Qemu-devel] [PATCH v1 0/2] s390x/kvm: legacy_s390_alloc() fixes Cornelia Huck
2 siblings, 1 reply; 5+ messages in thread
From: David Hildenbrand @ 2018-06-28 11:38 UTC (permalink / raw)
To: qemu-s390x
Cc: qemu-devel, Richard Henderson, Alexander Graf, Cornelia Huck,
Christian Borntraeger, Thomas Huth, David Hildenbrand
We always allocate at a fixed address, a second allocation can therefore
of course never work. We would simply overwrite mappings.
This can e.g. happen in s390_memory_init(), if trying to allocate more
than > 8TB. Let's just bail out, as there is no need for supporting it
(legacy handling for z/VM).
Signed-off-by: David Hildenbrand <david@redhat.com>
---
target/s390x/kvm.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
index ac370da281..bbac3454e3 100644
--- a/target/s390x/kvm.c
+++ b/target/s390x/kvm.c
@@ -752,12 +752,20 @@ int kvm_s390_mem_op(S390CPU *cpu, vaddr addr, uint8_t ar, void *hostbuf,
*/
static void *legacy_s390_alloc(size_t size, uint64_t *align, bool shared)
{
- void *mem;
+ static void *mem;
+
+ if (mem) {
+ /* we only support one allocation, which is enough for initial ram */
+ return NULL;
+ }
mem = mmap((void *) 0x800000000ULL, size,
PROT_EXEC|PROT_READ|PROT_WRITE,
MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
- return mem == MAP_FAILED ? NULL : mem;
+ if (mem == MAP_FAILED) {
+ mem = NULL;
+ }
+ return mem;
}
static uint8_t const *sw_bp_inst;
--
2.17.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH v1 2/2] s390x/kvm: indicate alignment in legacy_s390_alloc()
2018-06-28 11:38 [Qemu-devel] [PATCH v1 0/2] s390x/kvm: legacy_s390_alloc() fixes David Hildenbrand
2018-06-28 11:38 ` [Qemu-devel] [PATCH v1 1/2] s390x/kvm: legacy_s390_alloc() only supports one allocation David Hildenbrand
@ 2018-06-28 11:38 ` David Hildenbrand
2018-06-28 15:22 ` [Qemu-devel] [PATCH v1 0/2] s390x/kvm: legacy_s390_alloc() fixes Cornelia Huck
2 siblings, 0 replies; 5+ messages in thread
From: David Hildenbrand @ 2018-06-28 11:38 UTC (permalink / raw)
To: qemu-s390x
Cc: qemu-devel, Richard Henderson, Alexander Graf, Cornelia Huck,
Christian Borntraeger, Thomas Huth, David Hildenbrand
Let's do this for completeness reason, although we don't support e.g.
PCDIMM/NVDIMM, which would use the alignment for placing the memory
region in guest physical memory. But maybe someday we would want to
support something like this - then we don't forget about this if
allowing multiple allocations in legacy_s390_alloc().
Use the same alignment as we would set in qemu_anon_ram_alloc(). Our
fixed address satisfies this alignment (1MB). This implicitly sets the
alignment of the underlying memory region.
Signed-off-by: David Hildenbrand <david@redhat.com>
---
target/s390x/kvm.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
index bbac3454e3..22e13080a5 100644
--- a/target/s390x/kvm.c
+++ b/target/s390x/kvm.c
@@ -765,6 +765,9 @@ static void *legacy_s390_alloc(size_t size, uint64_t *align, bool shared)
if (mem == MAP_FAILED) {
mem = NULL;
}
+ if (mem && align) {
+ *align = QEMU_VMALLOC_ALIGN;
+ }
return mem;
}
--
2.17.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [qemu-s390x] [PATCH v1 1/2] s390x/kvm: legacy_s390_alloc() only supports one allocation
2018-06-28 11:38 ` [Qemu-devel] [PATCH v1 1/2] s390x/kvm: legacy_s390_alloc() only supports one allocation David Hildenbrand
@ 2018-06-28 12:42 ` Christian Borntraeger
0 siblings, 0 replies; 5+ messages in thread
From: Christian Borntraeger @ 2018-06-28 12:42 UTC (permalink / raw)
To: David Hildenbrand, qemu-s390x
Cc: Thomas Huth, Cornelia Huck, Alexander Graf, qemu-devel,
Richard Henderson
On 06/28/2018 01:38 PM, David Hildenbrand wrote:
> We always allocate at a fixed address, a second allocation can therefore
> of course never work. We would simply overwrite mappings.
>
> This can e.g. happen in s390_memory_init(), if trying to allocate more
> than > 8TB. Let's just bail out, as there is no need for supporting it
> (legacy handling for z/VM).
>
> Signed-off-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
> ---
> target/s390x/kvm.c | 12 ++++++++++--
> 1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
> index ac370da281..bbac3454e3 100644
> --- a/target/s390x/kvm.c
> +++ b/target/s390x/kvm.c
> @@ -752,12 +752,20 @@ int kvm_s390_mem_op(S390CPU *cpu, vaddr addr, uint8_t ar, void *hostbuf,
> */
> static void *legacy_s390_alloc(size_t size, uint64_t *align, bool shared)
> {
> - void *mem;
> + static void *mem;
> +
> + if (mem) {
> + /* we only support one allocation, which is enough for initial ram */
> + return NULL;
> + }
>
> mem = mmap((void *) 0x800000000ULL, size,
> PROT_EXEC|PROT_READ|PROT_WRITE,
> MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
> - return mem == MAP_FAILED ? NULL : mem;
> + if (mem == MAP_FAILED) {
> + mem = NULL;
> + }
> + return mem;
> }
>
> static uint8_t const *sw_bp_inst;
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH v1 0/2] s390x/kvm: legacy_s390_alloc() fixes
2018-06-28 11:38 [Qemu-devel] [PATCH v1 0/2] s390x/kvm: legacy_s390_alloc() fixes David Hildenbrand
2018-06-28 11:38 ` [Qemu-devel] [PATCH v1 1/2] s390x/kvm: legacy_s390_alloc() only supports one allocation David Hildenbrand
2018-06-28 11:38 ` [Qemu-devel] [PATCH v1 2/2] s390x/kvm: indicate alignment in legacy_s390_alloc() David Hildenbrand
@ 2018-06-28 15:22 ` Cornelia Huck
2 siblings, 0 replies; 5+ messages in thread
From: Cornelia Huck @ 2018-06-28 15:22 UTC (permalink / raw)
To: David Hildenbrand
Cc: qemu-s390x, qemu-devel, Richard Henderson, Alexander Graf,
Christian Borntraeger, Thomas Huth
On Thu, 28 Jun 2018 13:38:15 +0200
David Hildenbrand <david@redhat.com> wrote:
> Two patches for legacy_s390_alloc(), only relevant under old z/VM versions.
Those teddy bears are really looking a bit scruffy... but the patches
look sane.
>
> Patch #1 is relevant when trying to allocate memory for more than one
> memory region. Patch #2 is only for completeness, to make it behave
> more similar to qemu_anon_ram_alloc().
>
> David Hildenbrand (2):
> s390x/kvm: legacy_s390_alloc() only supports one allocation
> s390x/kvm: indicate alignment in legacy_s390_alloc()
>
> target/s390x/kvm.c | 15 +++++++++++++--
> 1 file changed, 13 insertions(+), 2 deletions(-)
>
Thanks, applied.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-06-28 15:22 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-28 11:38 [Qemu-devel] [PATCH v1 0/2] s390x/kvm: legacy_s390_alloc() fixes David Hildenbrand
2018-06-28 11:38 ` [Qemu-devel] [PATCH v1 1/2] s390x/kvm: legacy_s390_alloc() only supports one allocation David Hildenbrand
2018-06-28 12:42 ` [Qemu-devel] [qemu-s390x] " Christian Borntraeger
2018-06-28 11:38 ` [Qemu-devel] [PATCH v1 2/2] s390x/kvm: indicate alignment in legacy_s390_alloc() David Hildenbrand
2018-06-28 15:22 ` [Qemu-devel] [PATCH v1 0/2] s390x/kvm: legacy_s390_alloc() fixes Cornelia Huck
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).