[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] x86/xen: Add support for HVMOP_set_evtchn_upcall_vector
- To: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>, LKML <linux-kernel@xxxxxxxxxxxxxxx>
- From: Jane Malalane <Jane.Malalane@xxxxxxxxxx>
- Date: Fri, 15 Jul 2022 08:18:27 +0000
- Accept-language: en-US
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tU36mPMvGMR4pFpwKSZ/n9B/7cKnZJksI9dkuvajUUc=; b=fiIxxYf30bpZx4LZJ6qKbLNk0uwdFP4VDhI+n5soaQAlEXzthjrPUjaRmOQYenLjAfqanwYrl7qa9cw/wpcyNJWmByncHQeSDZAqiY/XEr5+v39kpgGyV+qSUihWskE3aK6UI4nO+TNLzDHKLJcsEw0Udzl7GpO5MBmsMB4V2ye8BBVcn/ospS8u0kXe42+CA03WoQhn4D3tY4emz5SxbQ/1SwSMFghXdGJ7u6Za8Ok3qLU79FI6fR2g1hemwWTcynPrSpnQUNyr43USDSQNPfuLbVOqTJ+L0qFYHmtRGqRTQU0HOptUkDvQ7ldpT9+B72f5vZ59Q+0LWpqBSfXmkQ==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=liDBpOiSTpTBvpoCrvATDC/uQirYDqWlMy/ngdWWHp9dwn3odQSyLxtw4wZh2sjsnQkKD9v08i2S1BmfIbQVURrbnwG2eNtZNwALWjs5NoBupmo5sWvuUa7B8vg35NGI38k6dqFD07Wuei/2WtwJZwRTgGEMlA5fgQBT/gsrzVdbyZt278m0lRVqA/MFtzjnHYiShKgKdnVGNFMgHUl6yK94y3qdqi7ej5+q1m+tQwjyEpcFQOenaCI93T2+Gv6hxiPvB3Fa1AL5ndxD517iQ+vCN6UkMQtUX4skVBj2zWDnlSQ2rS7Ittf1dBpXmS41xrC0pjo1H90c/agXR6bhjg==
- Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
- Cc: Juergen Gross <jgross@xxxxxxxx>, Thomas Gleixner <tglx@xxxxxxxxxxxxx>, Ingo Molnar <mingo@xxxxxxxxxx>, Borislav Petkov <bp@xxxxxxxxx>, Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>, "x86@xxxxxxxxxx" <x86@xxxxxxxxxx>, "H. Peter Anvin" <hpa@xxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>, Maximilian Heyne <mheyne@xxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Colin Ian King <colin.king@xxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
- Delivery-date: Fri, 15 Jul 2022 08:18:44 +0000
- Ironport-data: A9a23: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
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
- Thread-index: AQHYlTod5hgtPAUSGEuMopkQlGVYGq189b0AgAImowA=
- Thread-topic: [PATCH] x86/xen: Add support for HVMOP_set_evtchn_upcall_vector
On 14/07/2022 00:27, Boris Ostrovsky wrote:
> [CAUTION - EXTERNAL EMAIL] DO NOT reply, click links, or open
> attachments unless you have verified the sender and know the content is
> safe.
>
> On 7/11/22 11:22 AM, Jane Malalane wrote:
>> --- a/arch/x86/xen/enlighten_hvm.c
>> +++ b/arch/x86/xen/enlighten_hvm.c
>> @@ -7,6 +7,7 @@
>> #include <xen/features.h>
>> #include <xen/events.h>
>> +#include <xen/interface/hvm/hvm_op.h>
>> #include <xen/interface/memory.h>
>> #include <asm/apic.h>
>> @@ -30,6 +31,9 @@
>> static unsigned long shared_info_pfn;
>> +__ro_after_init bool xen_ack_upcall;
>> +EXPORT_SYMBOL_GPL(xen_ack_upcall);
>
>
> Shouldn't this be called something like xen_percpu_upcall?
Sure.
>
>
>> +
>> void xen_hvm_init_shared_info(void)
>> {
>> struct xen_add_to_physmap xatp;
>> @@ -125,6 +129,9 @@ DEFINE_IDTENTRY_SYSVEC(sysvec_xen_hvm_callback)
>> {
>> struct pt_regs *old_regs = set_irq_regs(regs);
>> + if (xen_ack_upcall)
>> + ack_APIC_irq();
>> +
>> inc_irq_stat(irq_hv_callback_count);
>> xen_hvm_evtchn_do_upcall();
>> @@ -168,6 +175,15 @@ static int xen_cpu_up_prepare_hvm(unsigned int cpu)
>> if (!xen_have_vector_callback)
>> return 0;
>> + if (xen_ack_upcall) {
>> + xen_hvm_evtchn_upcall_vector_t op = {
>> + .vector = HYPERVISOR_CALLBACK_VECTOR,
>> + .vcpu = per_cpu(xen_vcpu_id, cpu),
>> + };
>> +
>> + BUG_ON(HYPERVISOR_hvm_op(HVMOP_set_evtchn_upcall_vector, &op));
>
>
> Does this have to be fatal? Can't we just fail bringing this vcpu up?
Yes, will amend.
>
>
>> + }
>> +
>> if (xen_feature(XENFEAT_hvm_safe_pvclock))
>> xen_setup_timer(cpu);
>> @@ -211,8 +227,7 @@ static void __init xen_hvm_guest_init(void)
>> xen_panic_handler_init();
>> - if (!no_vector_callback && xen_feature(XENFEAT_hvm_callback_vector))
>> - xen_have_vector_callback = 1;
>> + xen_have_vector_callback = !no_vector_callback;
>
>
> Can we get rid of one of those two variables then?
I'll remove no_vector_callback for less code changes.
>
>
>> xen_hvm_smp_init();
>> WARN_ON(xen_cpuhp_setup(xen_cpu_up_prepare_hvm, xen_cpu_dead_hvm));
>> diff --git a/arch/x86/xen/suspend_hvm.c b/arch/x86/xen/suspend_hvm.c
>> index 9d548b0c772f..be66e027ef28 100644
>> --- a/arch/x86/xen/suspend_hvm.c
>> +++ b/arch/x86/xen/suspend_hvm.c
>> @@ -5,6 +5,7 @@
>> #include <xen/hvm.h>
>> #include <xen/features.h>
>> #include <xen/interface/features.h>
>> +#include <xen/events.h>
>> #include "xen-ops.h"
>> @@ -14,6 +15,23 @@ void xen_hvm_post_suspend(int suspend_cancelled)
>> xen_hvm_init_shared_info();
>> xen_vcpu_restore();
>> }
>> - xen_setup_callback_vector();
>> + if (xen_ack_upcall) {
>> + unsigned int cpu;
>> +
>> + for_each_online_cpu(cpu) {
>> + xen_hvm_evtchn_upcall_vector_t op = {
>> + .vector = HYPERVISOR_CALLBACK_VECTOR,
>> + .vcpu = per_cpu(xen_vcpu_id, cpu),
>> + };
>> +
>> + BUG_ON(HYPERVISOR_hvm_op(HVMOP_set_evtchn_upcall_vector,
>> + &op));
>> + /* Trick toolstack to think we are enlightened. */
>> + if (!cpu)
>> + BUG_ON(xen_set_callback_via(1));
>
>
> What are you trying to make the toolstack aware of? That we have *a*
> callback (either global or percpu)?
Yes, specifically for the check in libxl__domain_pvcontrol_available.
>
>
> BTW, you can take it out the loop. And maybe @op definition too, except
> for .vcpu assignment.
>
>
>> + }
>> + } else {
>> + xen_setup_callback_vector();
>> + }
>> xen_unplug_emulated_devices();
>> }
>
>
> -boris
>
>
Thank you,
Jane.
|