[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [RFC 2/6] linux-stubdomain: Compile Linux



On Wed, 17 Apr 2013, Anthony PERARD wrote:
> diff --git 
> a/stubdom-linux/0001-xen-Don-t-check-for-xen_initial_domain-in-privcmd_io.patch
>  
> b/stubdom-linux/0001-xen-Don-t-check-for-xen_initial_domain-in-privcmd_io.patch
> new file mode 100644
> index 0000000..627b337
> --- /dev/null
> +++ 
> b/stubdom-linux/0001-xen-Don-t-check-for-xen_initial_domain-in-privcmd_io.patch
> @@ -0,0 +1,39 @@
> +From 94d3502e70882a78ec3abb22379a79afc1292fb0 Mon Sep 17 00:00:00 2001
> +From: Anthony PERARD <anthony.perard@xxxxxxxxxx>
> +Date: Fri, 1 Jun 2012 15:46:39 +0100
> +Subject: [PATCH 1/2] xen: Don't check for xen_initial_domain in
> + privcmd_ioctl_mmap*.
> +
> +This prevent a stubdom from working.
> +
> +---
> + drivers/xen/privcmd.c | 6 ------
> + 1 file changed, 6 deletions(-)
> +
> +diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
> +index ccee0f1..a8d71a3 100644
> +--- a/drivers/xen/privcmd.c
> ++++ b/drivers/xen/privcmd.c
> +@@ -196,9 +196,6 @@ static long privcmd_ioctl_mmap(void __user *udata)
> +       LIST_HEAD(pagelist);
> +       struct mmap_mfn_state state;
> +
> +-      if (!xen_initial_domain())
> +-              return -EPERM;
> +-
> +       if (copy_from_user(&mmapcmd, udata, sizeof(mmapcmd)))
> +               return -EFAULT;
> +
> +@@ -286,9 +283,6 @@ static long privcmd_ioctl_mmap_batch(void __user *udata)
> +       LIST_HEAD(pagelist);
> +       struct mmap_batch_state state;
> +
> +-      if (!xen_initial_domain())
> +-              return -EPERM;
> +-
> +       if (copy_from_user(&m, udata, sizeof(m)))
> +               return -EFAULT;
> +


I think you should submit both patches separately for inclusion in the
Linux kernel.


> +Anthony PERARD
> +
> diff --git a/stubdom-linux/0002-fix-remap_area_mfn_pte_fn.patch 
> b/stubdom-linux/0002-fix-remap_area_mfn_pte_fn.patch
> new file mode 100644
> index 0000000..0d5c262
> --- /dev/null
> +++ b/stubdom-linux/0002-fix-remap_area_mfn_pte_fn.patch
> @@ -0,0 +1,36 @@
> +From 61cd574f29f41046f1c709cfa9da118156babf83 Mon Sep 17 00:00:00 2001
> +From: Anthony PERARD <anthony.perard@xxxxxxxxxx>
> +Date: Fri, 1 Jun 2012 15:47:01 +0100
> +Subject: [PATCH 2/2] fix/remap_area_mfn_pte_fn

I think we need a better commit message

> +---
> + arch/x86/xen/mmu.c | 13 ++++++++++++-
> + 1 file changed, 12 insertions(+), 1 deletion(-)
> +
> +diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
> +index 69f5857..999fc82 100644
> +--- a/arch/x86/xen/mmu.c
> ++++ b/arch/x86/xen/mmu.c
> +@@ -2315,7 +2315,18 @@ static int remap_area_mfn_pte_fn(pte_t *ptep, 
> pgtable_t token,
> +                                unsigned long addr, void *data)
> + {
> +       struct remap_data *rmd = data;
> +-      pte_t pte = pte_mkspecial(pfn_pte(rmd->mfn++, rmd->prot));
> ++
> ++        /* Use the native_make_pte function because we are sure we don't
> ++         * have to do any pfn->mfn translations but at the same time we
> ++         * could in a stubdom so xen_initial_domain() would return false. */
> ++        pte_t pte = 
> pte_mkspecial(native_make_pte(((phys_addr_t)(rmd->mfn++) << PAGE_SHIFT)
> ++                                                  | 
> massage_pgprot(rmd->prot)));

This change is OK. The stubdom part of the comment is a bit confusing
and would benefit from a clearer explanation.
Also the indentation is wrong.


> ++        pteval_t val = pte_val_ma(pte);
> ++
> ++        if (pat_enabled && !WARN_ON(val & _PAGE_PAT)) {
> ++            if ((val & (_PAGE_PCD | _PAGE_PWT)) == _PAGE_PWT)
> ++                val = (val & ~(_PAGE_PCD | _PAGE_PWT)) | _PAGE_PAT;
> ++        }

Konrad disabled PAT in upstream kernels, see:

commit 8eaffa67b43e99ae581622c5133e20b0f48bcef1
Author: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Date:   Fri Feb 10 09:16:27 2012 -0500

    xen/pat: Disable PAT support for now.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.