From: Boris Ostrovsky <boris.ostrovsky@oracle.com> To: david.vrabel@citrix.com, konrad.wilk@oracle.com Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, roger.pau@citrix.com, mcgrof@suse.com, Boris Ostrovsky <boris.ostrovsky@oracle.com> Subject: [PATCH v1 09/12] xen/hvmlite: Extend APIC operations for HVMlite guests Date: Fri, 22 Jan 2016 16:35:55 -0500 [thread overview] Message-ID: <1453498558-6028-10-git-send-email-boris.ostrovsky@oracle.com> (raw) In-Reply-To: <1453498558-6028-1-git-send-email-boris.ostrovsky@oracle.com> HVMlite guests need to be viewed as having APIC, otherwise smpboot code, for example, will complain. Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> --- Not sure about xen_cpu_present_to_apicid() being an identity function, given xen_x86_32_early_logical_apicid(). arch/x86/xen/apic.c | 39 +++++++++++++++++++++++++++++++++++++-- arch/x86/xen/smp.c | 2 +- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/arch/x86/xen/apic.c b/arch/x86/xen/apic.c index abf4901..2a59c39 100644 --- a/arch/x86/xen/apic.c +++ b/arch/x86/xen/apic.c @@ -6,6 +6,7 @@ #include <xen/xen.h> #include <xen/interface/physdev.h> +#include <xen/interface/vcpu.h> #include "xen-ops.h" #include "pmu.h" #include "smp.h" @@ -78,6 +79,21 @@ static void xen_apic_write(u32 reg, u32 val) return; } + if (xen_hvmlite) { + switch (reg) { + case APIC_TASKPRI: + case APIC_SPIV: + case APIC_ESR: + case APIC_LVTT: + case APIC_LVT0: + case APIC_LVT1: + case APIC_LVTERR: + pr_debug("Unimplemented APIC register %x," + " value: %x\n", reg, val); + return; + } + } + /* Warn to see if there's any stray references */ WARN(1,"register: %x, value: %x\n", reg, val); } @@ -100,7 +116,7 @@ static u32 xen_safe_apic_wait_icr_idle(void) static int xen_apic_probe_pv(void) { - if (xen_pv_domain()) + if (xen_pv_domain() || xen_hvmlite) return 1; return 0; @@ -142,6 +158,19 @@ static void xen_silent_inquire(int apicid) { } +static int xen_cpu_present_to_apicid(int cpu) +{ + return cpu; +} + +static int xen_wakeup_secondary_cpu(int cpu, unsigned long start_eip) +{ + if (!xen_hvmlite) + return -EINVAL; + + return HYPERVISOR_vcpu_op(VCPUOP_up, cpu, NULL); +} + static struct apic xen_pv_apic = { .name = "Xen PV", .probe = xen_apic_probe_pv, @@ -162,7 +191,7 @@ static struct apic xen_pv_apic = { .ioapic_phys_id_map = default_ioapic_phys_id_map, /* Used on 32-bit */ .setup_apic_routing = NULL, - .cpu_present_to_apicid = default_cpu_present_to_apicid, + .cpu_present_to_apicid = xen_cpu_present_to_apicid, .apicid_to_cpu_present = physid_set_mask_of_physid, /* Used on 32-bit */ .check_phys_apicid_present = default_check_phys_apicid_present, /* smp_sanity_check needs it */ .phys_pkg_id = xen_phys_pkg_id, /* detect_ht */ @@ -180,6 +209,9 @@ static struct apic xen_pv_apic = { .send_IPI_all = xen_send_IPI_all, .send_IPI_self = xen_send_IPI_self, #endif + + .wakeup_secondary_cpu = xen_wakeup_secondary_cpu, + /* .wait_for_init_deassert- used by AP bootup - smp_callin which we don't use */ .inquire_remote_apic = xen_silent_inquire, @@ -216,5 +248,8 @@ void __init xen_init_apic(void) apic = &xen_pv_apic; x86_platform.apic_post_init = xen_apic_check; + + if (xen_hvmlite) + setup_force_cpu_cap(X86_FEATURE_APIC); } apic_driver(xen_pv_apic); diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c index b265c4f..fb085ef 100644 --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c @@ -214,7 +214,7 @@ static int xen_smp_intr_init(unsigned int cpu) * The IRQ worker on PVHVM goes through the native path and uses the * IPI mechanism. */ - if (xen_hvm_domain()) + if (xen_hvm_domain() && !xen_hvmlite) return 0; callfunc_name = kasprintf(GFP_KERNEL, "irqwork%d", cpu); -- 1.7.1
WARNING: multiple messages have this Message-ID (diff)
From: Boris Ostrovsky <boris.ostrovsky@oracle.com> To: david.vrabel@citrix.com, konrad.wilk@oracle.com Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>, xen-devel@lists.xenproject.org, mcgrof@suse.com, linux-kernel@vger.kernel.org, roger.pau@citrix.com Subject: [PATCH v1 09/12] xen/hvmlite: Extend APIC operations for HVMlite guests Date: Fri, 22 Jan 2016 16:35:55 -0500 [thread overview] Message-ID: <1453498558-6028-10-git-send-email-boris.ostrovsky@oracle.com> (raw) In-Reply-To: <1453498558-6028-1-git-send-email-boris.ostrovsky@oracle.com> HVMlite guests need to be viewed as having APIC, otherwise smpboot code, for example, will complain. Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> --- Not sure about xen_cpu_present_to_apicid() being an identity function, given xen_x86_32_early_logical_apicid(). arch/x86/xen/apic.c | 39 +++++++++++++++++++++++++++++++++++++-- arch/x86/xen/smp.c | 2 +- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/arch/x86/xen/apic.c b/arch/x86/xen/apic.c index abf4901..2a59c39 100644 --- a/arch/x86/xen/apic.c +++ b/arch/x86/xen/apic.c @@ -6,6 +6,7 @@ #include <xen/xen.h> #include <xen/interface/physdev.h> +#include <xen/interface/vcpu.h> #include "xen-ops.h" #include "pmu.h" #include "smp.h" @@ -78,6 +79,21 @@ static void xen_apic_write(u32 reg, u32 val) return; } + if (xen_hvmlite) { + switch (reg) { + case APIC_TASKPRI: + case APIC_SPIV: + case APIC_ESR: + case APIC_LVTT: + case APIC_LVT0: + case APIC_LVT1: + case APIC_LVTERR: + pr_debug("Unimplemented APIC register %x," + " value: %x\n", reg, val); + return; + } + } + /* Warn to see if there's any stray references */ WARN(1,"register: %x, value: %x\n", reg, val); } @@ -100,7 +116,7 @@ static u32 xen_safe_apic_wait_icr_idle(void) static int xen_apic_probe_pv(void) { - if (xen_pv_domain()) + if (xen_pv_domain() || xen_hvmlite) return 1; return 0; @@ -142,6 +158,19 @@ static void xen_silent_inquire(int apicid) { } +static int xen_cpu_present_to_apicid(int cpu) +{ + return cpu; +} + +static int xen_wakeup_secondary_cpu(int cpu, unsigned long start_eip) +{ + if (!xen_hvmlite) + return -EINVAL; + + return HYPERVISOR_vcpu_op(VCPUOP_up, cpu, NULL); +} + static struct apic xen_pv_apic = { .name = "Xen PV", .probe = xen_apic_probe_pv, @@ -162,7 +191,7 @@ static struct apic xen_pv_apic = { .ioapic_phys_id_map = default_ioapic_phys_id_map, /* Used on 32-bit */ .setup_apic_routing = NULL, - .cpu_present_to_apicid = default_cpu_present_to_apicid, + .cpu_present_to_apicid = xen_cpu_present_to_apicid, .apicid_to_cpu_present = physid_set_mask_of_physid, /* Used on 32-bit */ .check_phys_apicid_present = default_check_phys_apicid_present, /* smp_sanity_check needs it */ .phys_pkg_id = xen_phys_pkg_id, /* detect_ht */ @@ -180,6 +209,9 @@ static struct apic xen_pv_apic = { .send_IPI_all = xen_send_IPI_all, .send_IPI_self = xen_send_IPI_self, #endif + + .wakeup_secondary_cpu = xen_wakeup_secondary_cpu, + /* .wait_for_init_deassert- used by AP bootup - smp_callin which we don't use */ .inquire_remote_apic = xen_silent_inquire, @@ -216,5 +248,8 @@ void __init xen_init_apic(void) apic = &xen_pv_apic; x86_platform.apic_post_init = xen_apic_check; + + if (xen_hvmlite) + setup_force_cpu_cap(X86_FEATURE_APIC); } apic_driver(xen_pv_apic); diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c index b265c4f..fb085ef 100644 --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c @@ -214,7 +214,7 @@ static int xen_smp_intr_init(unsigned int cpu) * The IRQ worker on PVHVM goes through the native path and uses the * IPI mechanism. */ - if (xen_hvm_domain()) + if (xen_hvm_domain() && !xen_hvmlite) return 0; callfunc_name = kasprintf(GFP_KERNEL, "irqwork%d", cpu); -- 1.7.1
next prev parent reply other threads:[~2016-01-22 21:36 UTC|newest] Thread overview: 121+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-01-22 21:35 [PATCH v1 00/12] HVMlite domU support Boris Ostrovsky 2016-01-22 21:35 ` Boris Ostrovsky 2016-01-22 21:35 ` [PATCH v1 01/12] x86/smp: Make start_secondary() and initial_pg_pmd visible globally Boris Ostrovsky 2016-01-22 21:35 ` Boris Ostrovsky 2016-01-25 10:53 ` David Vrabel 2016-01-25 10:53 ` David Vrabel 2016-01-25 15:30 ` Boris Ostrovsky 2016-01-25 15:30 ` Boris Ostrovsky 2016-01-26 21:58 ` Borislav Petkov 2016-01-26 21:58 ` Borislav Petkov 2016-01-22 21:35 ` [PATCH v1 02/12] xen/hvmlite: Factor out common kernel init code Boris Ostrovsky 2016-01-22 21:35 ` Boris Ostrovsky 2016-01-22 23:01 ` Luis R. Rodriguez 2016-01-22 23:01 ` Luis R. Rodriguez 2016-01-22 23:12 ` Boris Ostrovsky 2016-01-22 23:27 ` Boris Ostrovsky 2016-01-22 23:27 ` Boris Ostrovsky 2016-01-22 23:41 ` Luis R. Rodriguez 2016-01-22 23:41 ` Luis R. Rodriguez 2016-01-22 23:12 ` Boris Ostrovsky 2016-01-25 11:04 ` David Vrabel 2016-01-25 11:04 ` [Xen-devel] " David Vrabel 2016-01-25 15:42 ` Boris Ostrovsky 2016-01-25 15:42 ` Boris Ostrovsky 2016-01-22 21:35 ` [PATCH v1 03/12] xen/hvmlite: Import hvmlite-related Xen public interfaces Boris Ostrovsky 2016-01-22 21:35 ` Boris Ostrovsky 2016-01-22 21:35 ` [PATCH v1 04/12] xen/hvmlite: Bootstrap HVMlite guest Boris Ostrovsky 2016-01-22 21:35 ` Boris Ostrovsky 2016-01-22 23:32 ` Luis R. Rodriguez 2016-01-22 23:32 ` Luis R. Rodriguez 2016-01-23 0:30 ` [Xen-devel] " Andrew Cooper 2016-01-23 0:30 ` Andrew Cooper 2016-01-23 0:45 ` [Xen-devel] " Luis R. Rodriguez 2016-01-23 0:45 ` Luis R. Rodriguez 2016-01-23 0:55 ` Luis R. Rodriguez 2016-01-23 0:55 ` [Xen-devel] " Luis R. Rodriguez 2016-01-23 14:49 ` Andrew Cooper 2016-01-23 14:49 ` [Xen-devel] " Andrew Cooper 2016-01-23 15:34 ` Konrad Rzeszutek Wilk 2016-01-23 15:34 ` Konrad Rzeszutek Wilk 2016-01-23 16:01 ` [Xen-devel] " H. Peter Anvin 2016-01-23 16:12 ` Konrad Rzeszutek Wilk 2016-01-23 16:12 ` Konrad Rzeszutek Wilk 2016-01-23 18:28 ` H. Peter Anvin 2016-01-23 18:28 ` [Xen-devel] " H. Peter Anvin 2016-01-25 10:30 ` Roger Pau Monné 2016-01-25 10:30 ` [Xen-devel] " Roger Pau Monné 2016-01-23 16:01 ` H. Peter Anvin 2016-01-25 22:19 ` Luis R. Rodriguez 2016-01-25 22:19 ` [Xen-devel] " Luis R. Rodriguez 2016-01-25 22:55 ` Boris Ostrovsky 2016-01-26 20:30 ` Luis R. Rodriguez 2016-01-26 20:30 ` [Xen-devel] " Luis R. Rodriguez 2016-01-26 21:51 ` Boris Ostrovsky 2016-01-26 21:51 ` [Xen-devel] " Boris Ostrovsky 2016-01-27 0:04 ` Luis R. Rodriguez 2016-01-27 0:04 ` [Xen-devel] " Luis R. Rodriguez 2016-01-27 2:16 ` Luis R. Rodriguez 2016-01-27 4:54 ` Luis R. Rodriguez 2016-01-27 14:42 ` Konrad Rzeszutek Wilk 2016-01-27 14:50 ` [Xen-devel] " David Vrabel 2016-01-27 15:06 ` Boris Ostrovsky 2016-01-27 15:09 ` David Vrabel 2016-01-27 15:09 ` [Xen-devel] " David Vrabel 2016-01-27 15:17 ` Boris Ostrovsky 2016-01-27 15:29 ` Konrad Rzeszutek Wilk 2016-01-27 16:15 ` Boris Ostrovsky 2016-01-27 16:15 ` [Xen-devel] " Boris Ostrovsky 2016-01-27 18:48 ` Luis R. Rodriguez 2016-01-27 18:48 ` [Xen-devel] " Luis R. Rodriguez 2016-01-27 19:00 ` Luis R. Rodriguez 2016-01-27 19:00 ` [Xen-devel] " Luis R. Rodriguez 2016-01-27 23:58 ` Boris Ostrovsky 2016-01-27 23:58 ` Boris Ostrovsky 2016-01-27 15:17 ` Boris Ostrovsky 2016-01-27 15:06 ` Boris Ostrovsky 2016-01-27 16:14 ` [Xen-devel] " Borislav Petkov 2016-01-27 16:14 ` Borislav Petkov 2016-01-27 14:50 ` David Vrabel 2016-01-27 2:16 ` Luis R. Rodriguez 2016-01-25 22:55 ` Boris Ostrovsky 2016-01-25 15:08 ` [Xen-devel] " Boris Ostrovsky 2016-01-25 15:08 ` Boris Ostrovsky 2016-01-25 16:08 ` Boris Ostrovsky 2016-01-25 21:12 ` Luis R. Rodriguez 2016-01-25 21:12 ` Luis R. Rodriguez 2016-01-25 21:21 ` H. Peter Anvin 2016-01-25 21:21 ` H. Peter Anvin 2016-01-25 22:28 ` Boris Ostrovsky 2016-01-26 18:34 ` Luis R. Rodriguez 2016-01-26 18:46 ` Andy Lutomirski 2016-01-26 19:00 ` Boris Ostrovsky 2016-01-26 19:00 ` Boris Ostrovsky 2016-01-26 19:14 ` [Xen-devel] " Luis R. Rodriguez 2016-01-26 19:14 ` Luis R. Rodriguez 2016-01-26 18:46 ` Andy Lutomirski 2016-01-26 18:34 ` Luis R. Rodriguez 2016-01-25 22:28 ` Boris Ostrovsky 2016-01-25 16:08 ` Boris Ostrovsky 2016-01-22 21:35 ` [PATCH v1 05/12] xen/hvmlite: Allow HVMlite guests delay initializing grant table Boris Ostrovsky 2016-01-22 21:35 ` Boris Ostrovsky 2016-01-22 21:35 ` [PATCH v1 06/12] xen/hvmlite: Initialize PCI Boris Ostrovsky 2016-01-22 21:35 ` Boris Ostrovsky 2016-01-25 10:21 ` Roger Pau Monné 2016-01-25 10:21 ` Roger Pau Monné 2016-01-22 21:35 ` [PATCH v1 07/12] xen/hvmlite: Prepare cpu_initialize_context() routine for HVMlite SMP Boris Ostrovsky 2016-01-22 21:35 ` Boris Ostrovsky 2016-01-22 21:35 ` [PATCH v1 08/12] xen/hvmlite: Initialize context for secondary VCPUs Boris Ostrovsky 2016-01-22 21:35 ` Boris Ostrovsky 2016-01-22 21:35 ` Boris Ostrovsky [this message] 2016-01-22 21:35 ` [PATCH v1 09/12] xen/hvmlite: Extend APIC operations for HVMlite guests Boris Ostrovsky 2016-01-22 21:35 ` [PATCH v1 10/12] xen/hvmlite: Use x86's default timer init " Boris Ostrovsky 2016-01-22 21:35 ` Boris Ostrovsky 2016-01-22 21:35 ` [PATCH v1 11/12] xen/hvmlite: Boot secondary CPUs Boris Ostrovsky 2016-01-22 21:35 ` Boris Ostrovsky 2016-01-22 21:35 ` [PATCH v1 12/12] xen/hvmlite: Enable CPU on-/offlining Boris Ostrovsky 2016-01-22 21:35 ` Boris Ostrovsky 2016-01-25 10:51 ` [PATCH v1 00/12] HVMlite domU support David Vrabel 2016-01-25 15:25 ` Boris Ostrovsky 2016-01-25 15:25 ` Boris Ostrovsky 2016-01-25 10:51 ` David Vrabel
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=1453498558-6028-10-git-send-email-boris.ostrovsky@oracle.com \ --to=boris.ostrovsky@oracle.com \ --cc=david.vrabel@citrix.com \ --cc=konrad.wilk@oracle.com \ --cc=linux-kernel@vger.kernel.org \ --cc=mcgrof@suse.com \ --cc=roger.pau@citrix.com \ --cc=xen-devel@lists.xenproject.org \ /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: linkBe 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.