From: David Hildenbrand <david@redhat.com>
To: Christian Borntraeger <borntraeger@de.ibm.com>,
Janosch Frank <frankja@linux.vnet.ibm.com>
Cc: KVM <kvm@vger.kernel.org>, Cornelia Huck <cohuck@redhat.com>,
Thomas Huth <thuth@redhat.com>,
Ulrich Weigand <Ulrich.Weigand@de.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
Andrea Arcangeli <aarcange@redhat.com>,
linux-s390 <linux-s390@vger.kernel.org>,
Michael Mueller <mimu@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>
Subject: Re: [PATCH 04/35] s390/protvirt: add ultravisor initialization
Date: Fri, 14 Feb 2020 11:25:23 +0100 [thread overview]
Message-ID: <44aa351c-2333-e1df-42ce-6cf3a6808802@redhat.com> (raw)
In-Reply-To: <20200207113958.7320-5-borntraeger@de.ibm.com>
[...]
> #if defined(CONFIG_PROTECTED_VIRTUALIZATION_GUEST) || \
> diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
> index f2ab2528859f..5f178d557cc8 100644
> --- a/arch/s390/kernel/setup.c
> +++ b/arch/s390/kernel/setup.c
> @@ -560,6 +560,8 @@ static void __init setup_memory_end(void)
> vmax = _REGION1_SIZE; /* 4-level kernel page table */
> }
>
> + adjust_to_uv_max(&vmax);
I'd somewhat prefer
if (prot_virt_host)
adjust_to_uv_max(&vmax);
> +
> /* module area is at the end of the kernel address space. */
> MODULES_END = vmax;
> MODULES_VADDR = MODULES_END - MODULES_LEN;
> @@ -1140,6 +1142,7 @@ void __init setup_arch(char **cmdline_p)
> */
> memblock_trim_memory(1UL << (MAX_ORDER - 1 + PAGE_SHIFT));
>
> + setup_uv();
and
if (prot_virt_host)
setup_uv();
Moving the checks out of the functions. Makes it clearer that this is
optional.
> setup_memory_end();
> setup_memory();
> dma_contiguous_reserve(memory_end);
> diff --git a/arch/s390/kernel/uv.c b/arch/s390/kernel/uv.c
> index fbf2a98de642..a06a628a88da 100644
> --- a/arch/s390/kernel/uv.c
> +++ b/arch/s390/kernel/uv.c
> @@ -46,4 +46,57 @@ static int __init prot_virt_setup(char *val)
> return rc;
> }
> early_param("prot_virt", prot_virt_setup);
> +
> +static int __init uv_init(unsigned long stor_base, unsigned long stor_len)
> +{
> + struct uv_cb_init uvcb = {
> + .header.cmd = UVC_CMD_INIT_UV,
> + .header.len = sizeof(uvcb),
> + .stor_origin = stor_base,
> + .stor_len = stor_len,
> + };
> + int cc;
> +
> + cc = uv_call(0, (uint64_t)&uvcb);
Could do
int cc = uv_call(0, (uint64_t)&uvcb);
> + if (cc || uvcb.header.rc != UVC_RC_EXECUTED) {
> + pr_err("Ultravisor init failed with cc: %d rc: 0x%hx\n", cc,
> + uvcb.header.rc);
> + return -1;
> + }
> + return 0;
> +}
> +
> +void __init setup_uv(void)
> +{
> + unsigned long uv_stor_base;
> +
> + if (!prot_virt_host)
> + return;
> +
> + uv_stor_base = (unsigned long)memblock_alloc_try_nid(
> + uv_info.uv_base_stor_len, SZ_1M, SZ_2G,
> + MEMBLOCK_ALLOC_ACCESSIBLE, NUMA_NO_NODE);
> + if (!uv_stor_base) {
> + pr_info("Failed to reserve %lu bytes for ultravisor base storage\n",
> + uv_info.uv_base_stor_len);
pr_err() ? pr_warn()?
> + goto fail;
> + }
> +
> + if (uv_init(uv_stor_base, uv_info.uv_base_stor_len)) {
> + memblock_free(uv_stor_base, uv_info.uv_base_stor_len);
> + goto fail;
> + }
> +
> + pr_info("Reserving %luMB as ultravisor base storage\n",
> + uv_info.uv_base_stor_len >> 20);
> + return;
> +fail:
I'd add here:
pr_info("Disabling support for protected virtualization");
> + prot_virt_host = 0;> +}
> +
> +void adjust_to_uv_max(unsigned long *vmax)
> +{
> + if (prot_virt_host && *vmax > uv_info.max_sec_stor_addr)
> + *vmax = uv_info.max_sec_stor_addr;
Once you move the prot virt check out of this function
*vmax = max_t(unsigned long, *vmax, uv_info.max_sec_stor_addr);
> +}
> #endif
>
--
Thanks,
David / dhildenb
next prev parent reply other threads:[~2020-02-14 10:25 UTC|newest]
Thread overview: 138+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-07 11:39 [PATCH 00/35] KVM: s390: Add support for protected VMs Christian Borntraeger
2020-02-07 11:39 ` [PATCH 01/35] mm:gup/writeback: add callbacks for inaccessible pages Christian Borntraeger
2020-02-10 17:27 ` Christian Borntraeger
2020-02-11 11:26 ` Will Deacon
2020-02-11 11:43 ` Christian Borntraeger
2020-02-13 14:48 ` Christian Borntraeger
2020-02-18 16:02 ` Will Deacon
2020-02-13 19:56 ` Sean Christopherson
2020-02-13 20:13 ` Christian Borntraeger
2020-02-13 20:46 ` Sean Christopherson
2020-02-17 20:55 ` Tom Lendacky
2020-02-17 21:14 ` Christian Borntraeger
2020-02-10 18:17 ` David Hildenbrand
2020-02-10 18:28 ` Christian Borntraeger
2020-02-10 18:43 ` David Hildenbrand
2020-02-10 18:51 ` Christian Borntraeger
2020-02-18 3:36 ` Tian, Kevin
2020-02-18 6:44 ` Christian Borntraeger
2020-02-07 11:39 ` [PATCH 02/35] KVM: s390/interrupt: do not pin adapter interrupt pages Christian Borntraeger
2020-02-10 12:26 ` David Hildenbrand
2020-02-10 18:38 ` Christian Borntraeger
2020-02-10 19:33 ` David Hildenbrand
2020-02-11 9:23 ` [PATCH v2 RFC] " Christian Borntraeger
2020-02-12 11:52 ` Christian Borntraeger
2020-02-12 12:16 ` David Hildenbrand
2020-02-12 12:22 ` Christian Borntraeger
2020-02-12 12:47 ` David Hildenbrand
2020-02-12 12:39 ` Cornelia Huck
2020-02-12 12:44 ` Christian Borntraeger
2020-02-12 13:07 ` Cornelia Huck
2020-02-10 18:56 ` [PATCH 02/35] KVM: s390/interrupt: do not pin adapter interrupt Ulrich Weigand
2020-02-10 12:40 ` [PATCH 02/35] KVM: s390/interrupt: do not pin adapter interrupt pages David Hildenbrand
2020-02-07 11:39 ` [PATCH 03/35] s390/protvirt: introduce host side setup Christian Borntraeger
2020-02-10 9:42 ` Thomas Huth
2020-02-10 9:48 ` Christian Borntraeger
2020-02-10 11:54 ` Cornelia Huck
2020-02-10 12:14 ` Christian Borntraeger
2020-02-10 12:31 ` Cornelia Huck
2020-02-10 12:38 ` David Hildenbrand
2020-02-10 12:54 ` Christian Borntraeger
2020-02-07 11:39 ` [PATCH 04/35] s390/protvirt: add ultravisor initialization Christian Borntraeger
2020-02-14 10:25 ` David Hildenbrand [this message]
2020-02-14 10:33 ` Christian Borntraeger
2020-02-14 10:34 ` David Hildenbrand
2020-02-07 11:39 ` [PATCH 05/35] s390/mm: provide memory management functions for protected KVM guests Christian Borntraeger
2020-02-12 13:42 ` Cornelia Huck
2020-02-13 7:43 ` Christian Borntraeger
2020-02-13 8:44 ` Cornelia Huck
2020-02-14 17:59 ` David Hildenbrand
2020-02-14 21:17 ` Christian Borntraeger
2020-02-07 11:39 ` [PATCH 06/35] s390/mm: add (non)secure page access exceptions handlers Christian Borntraeger
2020-02-14 18:05 ` David Hildenbrand
2020-02-14 19:59 ` Christian Borntraeger
2020-02-07 11:39 ` [PATCH 07/35] KVM: s390: add new variants of UV CALL Christian Borntraeger
2020-02-07 14:34 ` Thomas Huth
2020-02-07 15:03 ` Christian Borntraeger
2020-02-10 12:16 ` Cornelia Huck
2020-02-10 12:22 ` Christian Borntraeger
2020-02-14 18:28 ` David Hildenbrand
2020-02-14 20:13 ` Christian Borntraeger
2020-02-07 11:39 ` [PATCH 08/35] KVM: s390: protvirt: Add initial lifecycle handling Christian Borntraeger
2020-02-07 16:32 ` Thomas Huth
2020-02-10 8:34 ` Christian Borntraeger
2020-02-08 14:54 ` Thomas Huth
2020-02-10 11:43 ` Christian Borntraeger
2020-02-10 11:45 ` [PATCH/RFC] KVM: s390: protvirt: pass-through rc and rrc Christian Borntraeger
2020-02-10 12:06 ` Christian Borntraeger
2020-02-10 12:29 ` Thomas Huth
2020-02-10 12:50 ` Cornelia Huck
2020-02-10 12:56 ` Christian Borntraeger
2020-02-11 8:48 ` Janosch Frank
2020-02-13 8:43 ` Christian Borntraeger
2020-02-14 18:39 ` [PATCH 08/35] KVM: s390: protvirt: Add initial lifecycle handling David Hildenbrand
2020-02-14 21:22 ` Christian Borntraeger
2020-02-07 11:39 ` [PATCH 09/35] KVM: s390: protvirt: Add KVM api documentation Christian Borntraeger
2020-02-08 14:57 ` Thomas Huth
2020-02-10 12:26 ` Christian Borntraeger
2020-02-10 12:57 ` Cornelia Huck
2020-02-10 13:02 ` Christian Borntraeger
2020-02-07 11:39 ` [PATCH 10/35] KVM: s390: protvirt: Secure memory is not mergeable Christian Borntraeger
2020-02-07 11:39 ` [PATCH 11/35] KVM: s390/mm: Make pages accessible before destroying the guest Christian Borntraeger
2020-02-14 18:40 ` David Hildenbrand
2020-02-07 11:39 ` [PATCH 12/35] KVM: s390: protvirt: Handle SE notification interceptions Christian Borntraeger
2020-02-07 11:39 ` [PATCH 13/35] KVM: s390: protvirt: Instruction emulation Christian Borntraeger
2020-02-07 11:39 ` [PATCH 14/35] KVM: s390: protvirt: Add interruption injection controls Christian Borntraeger
2020-02-07 11:39 ` [PATCH 15/35] KVM: s390: protvirt: Implement interruption injection Christian Borntraeger
2020-02-10 10:03 ` Thomas Huth
2020-02-07 11:39 ` [PATCH 16/35] KVM: s390: protvirt: Add SCLP interrupt handling Christian Borntraeger
2020-02-11 12:00 ` Thomas Huth
2020-02-11 20:06 ` Christian Borntraeger
2020-02-07 11:39 ` [PATCH 17/35] KVM: s390: protvirt: Handle spec exception loops Christian Borntraeger
2020-02-07 11:39 ` [PATCH 18/35] KVM: s390: protvirt: Add new gprs location handling Christian Borntraeger
2020-02-07 11:39 ` [PATCH 19/35] KVM: S390: protvirt: Introduce instruction data area bounce buffer Christian Borntraeger
2020-02-07 11:39 ` [PATCH 20/35] KVM: s390: protvirt: handle secure guest prefix pages Christian Borntraeger
2020-02-13 8:37 ` Christian Borntraeger
2020-02-07 11:39 ` [PATCH 21/35] KVM: s390/mm: handle guest unpin events Christian Borntraeger
2020-02-10 14:58 ` Thomas Huth
2020-02-11 13:21 ` Cornelia Huck
2020-02-07 11:39 ` [PATCH 22/35] KVM: s390: protvirt: Write sthyi data to instruction data area Christian Borntraeger
2020-02-07 11:39 ` [PATCH 23/35] KVM: s390: protvirt: STSI handling Christian Borntraeger
2020-02-08 15:01 ` Thomas Huth
2020-02-11 10:55 ` Cornelia Huck
2020-02-07 11:39 ` [PATCH 24/35] KVM: s390: protvirt: disallow one_reg Christian Borntraeger
2020-02-10 17:53 ` Cornelia Huck
2020-02-10 18:34 ` Christian Borntraeger
2020-02-11 8:27 ` Cornelia Huck
2020-02-07 11:39 ` [PATCH 25/35] KVM: s390: protvirt: Only sync fmt4 registers Christian Borntraeger
2020-02-09 15:50 ` Thomas Huth
2020-02-10 9:33 ` Christian Borntraeger
2020-02-11 10:51 ` Cornelia Huck
2020-02-11 12:59 ` Christian Borntraeger
2020-02-07 11:39 ` [PATCH 26/35] KVM: s390: protvirt: Add program exception injection Christian Borntraeger
2020-02-09 15:52 ` Thomas Huth
2020-02-07 11:39 ` [PATCH 27/35] KVM: s390: protvirt: Add diag 308 subcode 8 - 10 handling Christian Borntraeger
2020-02-07 11:39 ` [PATCH 28/35] KVM: s390: protvirt: UV calls diag308 0, 1 Christian Borntraeger
2020-02-09 16:03 ` Thomas Huth
2020-02-10 8:45 ` Christian Borntraeger
2020-02-07 11:39 ` [PATCH 29/35] KVM: s390: protvirt: Report CPU state to Ultravisor Christian Borntraeger
2020-02-07 11:39 ` [PATCH 30/35] KVM: s390: protvirt: Support cmd 5 operation state Christian Borntraeger
2020-02-07 11:39 ` [PATCH 31/35] KVM: s390: protvirt: Add UV debug trace Christian Borntraeger
2020-02-10 13:22 ` Cornelia Huck
2020-02-10 13:40 ` Christian Borntraeger
2020-02-07 11:39 ` [PATCH 32/35] KVM: s390: protvirt: Mask PSW interrupt bits for interception 104 and 112 Christian Borntraeger
2020-02-09 16:07 ` Thomas Huth
2020-02-10 13:28 ` Cornelia Huck
2020-02-10 13:48 ` Christian Borntraeger
2020-02-10 14:47 ` Cornelia Huck
2020-02-07 11:39 ` [PATCH 33/35] KVM: s390: protvirt: do not inject interrupts after start Christian Borntraeger
2020-02-07 11:39 ` [PATCH 34/35] KVM: s390: protvirt: Add UV cpu reset calls Christian Borntraeger
2020-02-10 13:17 ` Cornelia Huck
2020-02-10 13:25 ` Christian Borntraeger
2020-02-07 11:39 ` [PATCH 35/35] DOCUMENTATION: Protected virtual machine introduction and IPL Christian Borntraeger
2020-02-11 12:23 ` Thomas Huth
2020-02-11 20:03 ` Christian Borntraeger
2020-02-12 11:03 ` Cornelia Huck
2020-02-12 11:49 ` Christian Borntraeger
2020-02-12 11:01 ` Cornelia Huck
2020-02-12 16:36 ` Christian Borntraeger
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=44aa351c-2333-e1df-42ce-6cf3a6808802@redhat.com \
--to=david@redhat.com \
--cc=Ulrich.Weigand@de.ibm.com \
--cc=aarcange@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=frankja@linux.vnet.ibm.com \
--cc=gor@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mimu@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).