xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@linaro.org>
To: Arianna Avanzini <avanzini.arianna@gmail.com>, xen-devel@lists.xen.org
Cc: julien.grall@citrix.com, paolo.valente@unimore.it, keir@xen.org,
	stefano.stabellini@eu.citrix.com, tim@xen.org,
	dario.faggioli@citrix.com, Ian.Jackson@eu.citrix.com,
	Ian.Campbell@eu.citrix.com, etrudeau@broadcom.com,
	JBeulich@suse.com, viktor.kleinik@globallogic.com
Subject: Re: [PATCH v3 3/5] xen, common: add the XEN_DOMCTL_memory_mapping hypercall
Date: Sat, 15 Mar 2014 22:32:46 +0000	[thread overview]
Message-ID: <5324D50E.2090301@linaro.org> (raw)
In-Reply-To: <1394914286-29713-4-git-send-email-avanzini.arianna@gmail.com>

Hello Arianna,

Thank for the patch.

On 15/03/14 20:11, Arianna Avanzini wrote:
> diff --git a/xen/arch/arm/cpu.c b/xen/arch/arm/cpu.c
> index afc564f..28f2611 100644
> --- a/xen/arch/arm/cpu.c
> +++ b/xen/arch/arm/cpu.c
> @@ -17,6 +17,8 @@
>
>   #include <asm/processor.h>
>
> +unsigned int paddr_bits __read_mostly = 40;
> +

I would prefer a define for paddr_bits on ARM rather than creating a new 
variable. Something like #define paddr_bits PADDR_BITS in asm-arm/p2m.h

Furthermore, you should not hardcode 40, you must use PADDR_BITS.

[..]

> diff --git a/xen/common/domctl.c b/xen/common/domctl.c
> index 7cf610a..b18fd46 100644
> --- a/xen/common/domctl.c
> +++ b/xen/common/domctl.c
> @@ -818,6 +818,75 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)

[..]

> +                if ( ret )
> +                {
> +                    printk(XENLOG_G_WARNING
> +                           "memory_map: fail: dom%d gfn=%lx mfn=%lx\n",
> +                           d->domain_id, gfn, mfn);
> +                    if ( iomem_deny_access(d, mfn, mfn_end - 1) &&
> +                         is_hardware_domain(current->domain) )
> +                        printk(XENLOG_ERR
> +                               "memory_map: failed to deny dom%d access "
> +                               "to [%lx,%lx]\n",
> +                               d->domain_id, mfn, mfn_end - 1);
> +                }
> +            }
> +        }
> +	else

Hard tab here. You should use space.

> +        {
> +            printk(XENLOG_G_INFO
> +                   "memory_map: remove: dom%d gfn=%lx mfn=%lx nr=%lx\n",
> +                   d->domain_id, gfn, mfn, nr_mfns);
> +
> +            add = unmap_mmio_regions(d, gfn, gfn_end - 1, mfn);
> +            ret = iomem_deny_access(d, mfn, mfn_end - 1);
> +            if ( ret && add )
> +                ret = -EIO;
> +            if ( ret && is_hardware_domain(current->domain) )
> +                printk(XENLOG_ERR
> +                       "memory_map: error %ld %s dom%d access to [%lx,%lx]\n",
> +                       ret, add ? "removing" : "denying", d->domain_id,
> +                       mfn, mfn_end - 1);
> +	}
> +    }
> +    break;
> +
>       case XEN_DOMCTL_settimeoffset:
>       {
>           domain_set_time_offset(d, op->u.settimeoffset.time_offset_seconds);
> diff --git a/xen/include/asm-arm/p2m.h b/xen/include/asm-arm/p2m.h
> index 3b39c45..00e3bba 100644
> --- a/xen/include/asm-arm/p2m.h
> +++ b/xen/include/asm-arm/p2m.h
> @@ -88,6 +88,10 @@ int p2m_populate_ram(struct domain *d, paddr_t start, paddr_t end);
>    * address maddr. */
>   int map_mmio_regions(struct domain *d, paddr_t start_gaddr,
>                        paddr_t end_gaddr, paddr_t maddr);
> +int unmap_mmio_regions(struct domain *d,
> +                       unsigned long start_gfn,
> +                       unsigned long end_gfn,
> +                       unsigned long mfn);
>
>   int guest_physmap_add_entry(struct domain *d,
>                               unsigned long gfn,
> diff --git a/xen/include/asm-arm/processor.h b/xen/include/asm-arm/processor.h
> index 06e638f..4869a75 100644
> --- a/xen/include/asm-arm/processor.h
> +++ b/xen/include/asm-arm/processor.h
> @@ -119,6 +119,8 @@
>
>   #include <xen/types.h>
>
> +extern unsigned int paddr_bits;
> +
>   struct cpuinfo_arm {
>       union {
>           uint32_t bits;
> diff --git a/xen/include/asm-x86/p2m.h b/xen/include/asm-x86/p2m.h
> index f4e7253..91ef110 100644
> --- a/xen/include/asm-x86/p2m.h
> +++ b/xen/include/asm-x86/p2m.h
> @@ -657,6 +657,16 @@ void p2m_flush(struct vcpu *v, struct p2m_domain *p2m);
>   /* Flushes all nested p2m tables */
>   void p2m_flush_nestedp2m(struct domain *d);
>
> +/* Map MMIO regions in the p2m: start_gaddr and end_gaddr is the range
> + * in the guest physical address space to map, starting from the machine
> + * address maddr. */
> +int map_mmio_regions(struct domain *d, paddr_t start_gaddr,
> +                     paddr_t end_gaddr, paddr_t maddr);
> +int unmap_mmio_regions(struct domain *d,
> +                       unsigned long start_gfn,
> +                       unsigned long end_gfn,
> +                       unsigned long mfn);
> +

The both functions are used on common code. I would prefer to define the 
prototype only once in common header (e.g in include/xen).

At the same time, it's not necessary to give the full addresses on 
argument. GFN, MFN is enough.

I think we already talk about it on V1. I said it wasn't urgent, but as 
the function is common now ... :)

Regards,

-- 
Julien Grall

  reply	other threads:[~2014-03-15 22:32 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-15 20:11 [PATCH v3 0/5] Implement the XEN_DOMCTL_memory_mapping hypercall for ARM Arianna Avanzini
2014-03-15 20:11 ` [PATCH v3 1/5] arch, arm: domain build: allow access to I/O memory of mapped devices Arianna Avanzini
2014-03-15 21:30   ` Julien Grall
2014-03-15 20:11 ` [PATCH v3 2/5] arch, arm: add consistency checks to REMOVE p2m changes Arianna Avanzini
2014-03-15 22:19   ` Julien Grall
2014-03-15 22:36     ` Arianna Avanzini
2014-03-15 22:42       ` Julien Grall
2014-03-21 10:44   ` Ian Campbell
2014-03-21 11:51     ` Julien Grall
2014-03-21 11:54       ` Ian Campbell
2014-03-21 12:08         ` Julien Grall
2014-03-21 12:32           ` Ian Campbell
2014-03-21 12:45             ` Julien Grall
2014-03-21 14:09               ` Ian Campbell
2014-03-21 14:11                 ` Julien Grall
2014-03-15 20:11 ` [PATCH v3 3/5] xen, common: add the XEN_DOMCTL_memory_mapping hypercall Arianna Avanzini
2014-03-15 22:32   ` Julien Grall [this message]
2014-03-17  8:01   ` Jan Beulich
2014-03-15 20:11 ` [PATCH v3 4/5] tools, libxl: parse optional start gfn from the iomem config option Arianna Avanzini
2014-03-15 22:35   ` Julien Grall
2014-03-17 10:01     ` Dario Faggioli
2014-03-21 10:47       ` Ian Campbell
2014-03-17 12:24   ` Julien Grall
2014-03-21 10:54   ` Ian Campbell
2014-03-15 20:11 ` [PATCH v3 5/5] tools, libxl: handle the iomem parameter with the memory_mapping hcall Arianna Avanzini
2014-03-17 12:35   ` Julien Grall
2014-03-18 16:15     ` Arianna Avanzini
2014-03-18 21:01       ` Julien Grall

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=5324D50E.2090301@linaro.org \
    --to=julien.grall@linaro.org \
    --cc=Ian.Campbell@eu.citrix.com \
    --cc=Ian.Jackson@eu.citrix.com \
    --cc=JBeulich@suse.com \
    --cc=avanzini.arianna@gmail.com \
    --cc=dario.faggioli@citrix.com \
    --cc=etrudeau@broadcom.com \
    --cc=julien.grall@citrix.com \
    --cc=keir@xen.org \
    --cc=paolo.valente@unimore.it \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=tim@xen.org \
    --cc=viktor.kleinik@globallogic.com \
    --cc=xen-devel@lists.xen.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: 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).