xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Tim Deegan <tim@xen.org>
To: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: xen-devel@lists.xensource.com, Ian.Campbell@citrix.com
Subject: Re: [PATCH 1/6] xen/arm: introduce map_phys_range
Date: Thu, 6 Dec 2012 12:44:04 +0000	[thread overview]
Message-ID: <20121206124404.GN82725@ocelot.phlegethon.org> (raw)
In-Reply-To: <1354731588-32579-1-git-send-email-stefano.stabellini@eu.citrix.com>

At 18:19 +0000 on 05 Dec (1354731583), Stefano Stabellini wrote:
> Introduce a function to map a physical memory into virtual memory.
> It is going to be used later to map the videoram.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> ---
>  xen/arch/arm/mm.c        |   23 +++++++++++++++++++++++
>  xen/include/asm-arm/mm.h |    3 +++
>  2 files changed, 26 insertions(+), 0 deletions(-)
> 
> diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
> index 68ee9da..418a414 100644
> --- a/xen/arch/arm/mm.c
> +++ b/xen/arch/arm/mm.c
> @@ -376,6 +376,29 @@ void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
>      frametable_virt_end = FRAMETABLE_VIRT_START + (nr_pages * sizeof(struct page_info));
>  }
>  
> +/* Map the physical memory range start -  end at the virtual address
> + * virt_start in 2MB chunks. start and virt_start have to be 2MB
> + * aligned.
> + */
> +void map_phys_range(paddr_t start, paddr_t end,
> +        unsigned long virt_start, unsigned attributes)
> +{
> +    ASSERT(!(start & ((1 << 21) - 1)));
> +    ASSERT(!(virt_start & ((1 << 21) - 1)));

Please use SECOND_SHIFT rather than 21, and maybe even add a SECOND_MASK
&c to page.h rather than open-coding the <<s here.

Also, can you add some assertions that the VAs here are in some
well-defined region (with annotations in config.h)?

> +    while ( start < end )
> +    {
> +        lpae_t e = mfn_to_xen_entry(start >> PAGE_SHIFT);
> +        e.pt.ai = attributes;
> +        write_pte(xen_second + second_table_offset(virt_start), e);
> +        
> +        start += (1<<21);
> +        virt_start += (1<<21);

Maybe add SECOND_SIZE &c too?

> +    }
> +
> +    flush_xen_data_tlb();

What's this for?

Cheers,

Tim.

> +}
> +
>  enum mg { mg_clear, mg_ro, mg_rw, mg_rx };
>  static void set_pte_flags_on_range(const char *p, unsigned long l, enum mg mg)
>  {
> diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h
> index 3549c83..a11f20b 100644
> --- a/xen/include/asm-arm/mm.h
> +++ b/xen/include/asm-arm/mm.h
> @@ -152,6 +152,9 @@ extern void setup_frametable_mappings(paddr_t ps, paddr_t pe);
>  extern void set_fixmap(unsigned map, unsigned long mfn, unsigned attributes);
>  /* Remove a mapping from a fixmap entry */
>  extern void clear_fixmap(unsigned map);
> +/* map a 2MB aligned physical range in virtual memory. */
> +extern void map_phys_range(paddr_t start, paddr_t end,
> +		unsigned long virt_start, unsigned attributes);
>  
>  
>  #define mfn_valid(mfn)        ({                                              \
> -- 
> 1.7.2.5
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel

  parent reply	other threads:[~2012-12-06 12:44 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-05 18:19 [PATCH 0/6] xen: ARM HDLCD video driver Stefano Stabellini
2012-12-05 18:19 ` [PATCH 1/6] xen/arm: introduce map_phys_range Stefano Stabellini
2012-12-06  9:55   ` Ian Campbell
2012-12-06 16:06     ` Stefano Stabellini
2012-12-07  9:53       ` Ian Campbell
2012-12-06 12:44   ` Tim Deegan [this message]
2012-12-05 18:19 ` [PATCH 2/6] xen: infrastructure to have cross-platform video drivers Stefano Stabellini
2012-12-06  9:57   ` Ian Campbell
2012-12-06 11:25   ` Jan Beulich
2012-12-06 12:46   ` Tim Deegan
2012-12-05 18:19 ` [PATCH 3/6] xen: introduce a generic framebuffer driver Stefano Stabellini
2012-12-05 18:19 ` [PATCH 4/6] xen/vesa: use the new fb_* functions Stefano Stabellini
2012-12-06 11:28   ` Jan Beulich
2012-12-06 11:36     ` Ian Campbell
2012-12-06 15:39       ` Stefano Stabellini
2012-12-06 15:18     ` Stefano Stabellini
2012-12-05 18:19 ` [PATCH 5/6] xen/device_tree: introduce find_compatible_node Stefano Stabellini
2012-12-06 10:14   ` Ian Campbell
2012-12-06 12:55     ` Stefano Stabellini
2012-12-05 18:19 ` [PATCH 6/6] xen/arm: introduce a driver for the ARM HDLCD controller Stefano Stabellini
2012-12-06 10:28   ` Ian Campbell
2012-12-07 15:50     ` Stefano Stabellini
2012-12-06 12:53   ` Tim Deegan
2012-12-06 16:35     ` Stefano Stabellini

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=20121206124404.GN82725@ocelot.phlegethon.org \
    --to=tim@xen.org \
    --cc=Ian.Campbell@citrix.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 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).