All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: stefano.stabellini@eu.citrix.com
Cc: linux-kernel@vger.kernel.org, jeremy@goop.org,
	xen-devel@lists.xensource.com,
	"Yaozu (Eddie) Dong" <eddie.dong@intel.com>,
	ddutile@redhat.com, sheng@linux.intel.com
Subject: Re: [Xen-devel] [PATCH 02/12] early PV on HVM
Date: Fri, 4 Jun 2010 16:20:08 -0400	[thread overview]
Message-ID: <20100604202008.GB17645@phenom.dumpdata.com> (raw)
In-Reply-To: <1275570645-27189-2-git-send-email-stefano.stabellini@eu.citrix.com>

On Thu, Jun 03, 2010 at 02:10:35PM +0100, stefano.stabellini@eu.citrix.com wrote:
> From: Sheng Yang <sheng@linux.intel.com>
> 
> Initialize basic pv on hvm features in xen_guest_init.
> 
> The hook in arch/x86/kernel/setup.c can easily be removed using the new
> generic hypervisor independent initialization infrastructure present in
> the linux-2.6-tip tree.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> Signed-off-by: Sheng Yang <sheng@linux.intel.com>
> Signed-off-by: Yaozu (Eddie) Dong <eddie.dong@intel.com>
> ---
>  arch/x86/kernel/setup.c           |    2 +
>  arch/x86/xen/enlighten.c          |   86 +++++++++++++++++++++++++++++++++++++
>  drivers/input/xen-kbdfront.c      |    2 +-
>  drivers/video/xen-fbfront.c       |    2 +-
>  drivers/xen/xenbus/xenbus_probe.c |   21 ++++++++-
>  include/xen/xen.h                 |    2 +
>  6 files changed, 110 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index c4851ef..ae9b6cb 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -69,6 +69,7 @@
>  #include <linux/tboot.h>
>  
>  #include <video/edid.h>
> +#include <xen/xen.h>
>  
>  #include <asm/mtrr.h>
>  #include <asm/apic.h>
> @@ -1032,6 +1033,7 @@ void __init setup_arch(char **cmdline_p)
>  	probe_nr_irqs_gsi();
>  
>  	kvm_guest_init();
> +	xen_guest_init();
>  
>  	e820_reserve_resources();
>  	e820_mark_nosave_regions(max_low_pfn);
> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
> index 65d8d79..c1f6545 100644
> --- a/arch/x86/xen/enlighten.c
> +++ b/arch/x86/xen/enlighten.c
> @@ -35,6 +35,7 @@
>  #include <xen/interface/version.h>
>  #include <xen/interface/physdev.h>
>  #include <xen/interface/vcpu.h>
> +#include <xen/interface/memory.h>
>  #include <xen/features.h>
>  #include <xen/page.h>
>  #include <xen/hvc-console.h>
> @@ -56,6 +57,7 @@
>  #include <asm/tlbflush.h>
>  #include <asm/reboot.h>
>  #include <asm/stackprotector.h>
> +#include <asm/hypervisor.h>
>  
>  #include "xen-ops.h"
>  #include "mmu.h"
> @@ -1206,3 +1208,87 @@ asmlinkage void __init xen_start_kernel(void)
>  	x86_64_start_reservations((char *)__pa_symbol(&boot_params));
>  #endif
>  }
> +
> +static uint32_t xen_cpuid_base(void)
> +{
> +	uint32_t base, eax, ebx, ecx, edx;
> +	char signature[13];
> +
> +	for (base = 0x40000000; base < 0x40010000; base += 0x100) {
> +		cpuid(base, &eax, &ebx, &ecx, &edx);
> +		*(uint32_t*)(signature + 0) = ebx;
> +		*(uint32_t*)(signature + 4) = ecx;
> +		*(uint32_t*)(signature + 8) = edx;
> +		signature[12] = 0;
> +
> +		if (!strcmp("XenVMMXenVMM", signature) && ((eax - base) >= 2))
> +			return base;
> +	}
> +
> +	return 0;
> +}
> +
> +static int init_hvm_pv_info(int *major, int *minor)
> +{
> +	uint32_t eax, ebx, ecx, edx, pages, msr, base;
> +	u64 pfn;
> +
> +	base = xen_cpuid_base();
> +	if (!base)
> +		return -EINVAL;
> +
> +	cpuid(base + 1, &eax, &ebx, &ecx, &edx);
> +
> +	*major = eax >> 16;
> +	*minor = eax & 0xffff;
> +	printk(KERN_INFO "Xen version %d.%d.\n", *major, *minor);
> +
> +	cpuid(base + 2, &pages, &msr, &ecx, &edx);
> +
> +	pfn = __pa(hypercall_page);
> +	wrmsr_safe(msr, (u32)pfn, (u32)(pfn >> 32));
> +
> +	xen_setup_features();
> +
> +	pv_info = xen_info;
> +	pv_info.kernel_rpl = 0;
> +
> +	xen_domain_type = XEN_HVM_DOMAIN;
> +
> +	return 0;
> +}
> +
> +static void __init init_shared_info(void)
> +{
> +	struct xen_add_to_physmap xatp;
> +	struct shared_info *shared_info_page;
> +
> +	shared_info_page = (struct shared_info *) alloc_bootmem_pages(PAGE_SIZE);
> +	xatp.domid = DOMID_SELF;
> +	xatp.idx = 0;
> +	xatp.space = XENMAPSPACE_shared_info;
> +	xatp.gpfn = __pa(shared_info_page) >> PAGE_SHIFT;
> +	if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp))
> +		BUG();
> +
> +	HYPERVISOR_shared_info = (struct shared_info *)shared_info_page;
> +
> +	/* Don't do the full vcpu_info placement stuff until we have a
> +	   possible map and a non-dummy shared_info. */

Might want to mention where the full vpcu placement is done.
> +	per_cpu(xen_vcpu, 0) = &HYPERVISOR_shared_info->vcpu_info[0];

Otherwise looks good to me. In other words, Reviewed-by: Konrad
Rzeszutek Wilk <konrad.wilk@oracle.com>

  reply	other threads:[~2010-06-04 20:21 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-03 13:10 [PATCH 01/12] Add support for hvm_op stefano.stabellini
2010-06-03 13:10 ` stefano.stabellini
2010-06-03 13:10 ` [PATCH 02/12] early PV on HVM stefano.stabellini
2010-06-04 20:20   ` Konrad Rzeszutek Wilk [this message]
2010-06-07 14:38     ` [Xen-devel] " Stefano Stabellini
2010-06-08 13:46       ` Konrad Rzeszutek Wilk
2010-06-08 13:46         ` Konrad Rzeszutek Wilk
2010-06-08 15:55         ` [Xen-devel] " Stefano Stabellini
2010-06-08 16:12           ` Konrad Rzeszutek Wilk
2010-06-08 16:25             ` Stefano Stabellini
2010-06-08 16:25               ` Stefano Stabellini
2010-06-08 19:05               ` [Xen-devel] " Konrad Rzeszutek Wilk
2010-06-08 19:05                 ` Konrad Rzeszutek Wilk
2010-06-10 13:36                 ` [Xen-devel] " Stefano Stabellini
2010-06-10 13:36                   ` Stefano Stabellini
2010-06-08 16:09         ` [Xen-devel] " Jeremy Fitzhardinge
2010-06-04 20:23   ` Konrad Rzeszutek Wilk
2010-06-07 14:39     ` Stefano Stabellini
2010-06-03 13:10 ` [PATCH 03/12] evtchn delivery " stefano.stabellini
2010-06-14 21:20   ` [Xen-devel] " Konrad Rzeszutek Wilk
2010-06-17 15:41     ` Stefano Stabellini
2010-06-17 17:38       ` Konrad Rzeszutek Wilk
2010-06-17 17:38         ` Konrad Rzeszutek Wilk
2010-06-17 17:40         ` [Xen-devel] " Stefano Stabellini
2010-06-03 13:10 ` [PATCH 04/12] Xen PCI platform device driver stefano.stabellini
2010-06-03 13:10 ` [PATCH 05/12] Add suspend\resume support for PV on HVM guests stefano.stabellini
2010-06-14 21:20   ` [Xen-devel] " Konrad Rzeszutek Wilk
2010-06-17 15:42     ` Stefano Stabellini
2010-06-03 13:10 ` [PATCH 06/12] Allow xen platform pci device to be compiled as a module stefano.stabellini
2010-06-14 21:20   ` [Xen-devel] " Konrad Rzeszutek Wilk
2010-06-14 21:20     ` Konrad Rzeszutek Wilk
2010-06-15 16:22     ` [Xen-devel] " Jeremy Fitzhardinge
2010-06-15 16:22       ` Jeremy Fitzhardinge
2010-06-17 15:42       ` [Xen-devel] " Stefano Stabellini
2010-06-03 13:10 ` [PATCH 07/12] Fix find_unbound_irq in presence of ioapic irqs stefano.stabellini
2010-06-03 13:10 ` [PATCH 08/12] Fix possible NULL pointer dereference in print_IO_APIC stefano.stabellini
2010-06-03 13:10 ` [PATCH 09/12] __setup_vector_irq: handle NULL chip_data stefano.stabellini
2010-06-03 13:10 ` [PATCH 10/12] Do not try to disable hpet if it hasn't been initialized before stefano.stabellini
2010-06-03 13:10 ` [PATCH 11/12] Use xen_vcpuop_clockevent, xen_clocksource and xen wallclock stefano.stabellini
2010-06-03 13:10 ` [PATCH 12/12] Unplug emulated disks and nics stefano.stabellini
2010-06-14 21:20   ` [Xen-devel] " Konrad Rzeszutek Wilk
2010-06-17 15:42     ` Stefano Stabellini
2010-06-17 17:46       ` Konrad Rzeszutek Wilk
2010-06-17 17:46         ` Konrad Rzeszutek Wilk
2010-06-17 18:00         ` [Xen-devel] " Stefano Stabellini
2010-06-17 23:35       ` Jeremy Fitzhardinge

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=20100604202008.GB17645@phenom.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=ddutile@redhat.com \
    --cc=eddie.dong@intel.com \
    --cc=jeremy@goop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sheng@linux.intel.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xensource.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.