From: Ian Campbell <ian.campbell@citrix.com>
To: xen-devel@lists.xen.org
Cc: julien.grall@linaro.org, tim@xen.org,
Ian Campbell <ian.campbell@citrix.com>,
stefano.stabellini@eu.citrix.com
Subject: [PATCH 2/3] xen: arm: use same variables as userspace in dom0 builder place_modules()
Date: Wed, 9 Apr 2014 12:51:15 +0100 [thread overview]
Message-ID: <1397044276-30185-2-git-send-email-ian.campbell@citrix.com> (raw)
In-Reply-To: <1397044259.6275.15.camel@kazak.uk.xensource.com>
The placement algorithm should be effectively the same and using different
variable names makes my head hurt when I try to compare.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
---
xen/arch/arm/kernel.c | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
index ae86772..bc625a4 100644
--- a/xen/arch/arm/kernel.c
+++ b/xen/arch/arm/kernel.c
@@ -65,25 +65,25 @@ void copy_from_paddr(void *dst, paddr_t paddr, unsigned long len)
}
static void place_modules(struct kernel_info *info,
- paddr_t kernel_start,
- paddr_t kernel_end)
+ paddr_t kernbase, paddr_t kernend)
{
/* Align DTB and initrd size to 2Mb. Linux only requires 4 byte alignment */
const paddr_t initrd_len =
ROUNDUP(early_info.modules.module[MOD_INITRD].size, MB(2));
const paddr_t dtb_len = ROUNDUP(fdt_totalsize(info->fdt), MB(2));
- const paddr_t total = initrd_len + dtb_len;
+ const paddr_t modsize = initrd_len + dtb_len;
/* Convenient */
- const paddr_t mem_start = info->mem.bank[0].start;
- const paddr_t mem_size = info->mem.bank[0].size;
- const paddr_t mem_end = mem_start + mem_size;
- const paddr_t kernel_size = kernel_end - kernel_start;
+ const paddr_t rambase = info->mem.bank[0].start;
+ const paddr_t ramsize = info->mem.bank[0].size;
+ const paddr_t ramend = rambase + ramsize;
+ const paddr_t kernsize = kernend - kernbase;
+ const paddr_t ram128mb = rambase + MB(128);
- paddr_t addr;
+ paddr_t modbase;
- if ( total + kernel_size > mem_size )
- panic("Not enough memory in the first bank for the dtb+initrd");
+ if ( modsize + kernsize > ramsize )
+ panic("Not enough memory in the first bank for the kernel+dtb+initrd");
/*
* DTB must be loaded such that it does not conflict with the
@@ -100,19 +100,19 @@ static void place_modules(struct kernel_info *info,
* just after the kernel, if there is room, otherwise just before.
*/
- if ( kernel_end < MIN(mem_start + MB(128), mem_end - total) )
- addr = MIN(mem_start + MB(128), mem_end - total);
- else if ( mem_end - ROUNDUP(kernel_end, MB(2)) >= total )
- addr = ROUNDUP(kernel_end, MB(2));
- else if ( kernel_start - mem_start >= total )
- addr = kernel_start - total;
+ if ( kernend < MIN(ram128mb, ramend - modsize) )
+ modbase = MIN(ram128mb, ramend - modsize);
+ else if ( ramend - ROUNDUP(kernend, MB(2)) >= modsize )
+ modbase = ROUNDUP(kernend, MB(2));
+ else if ( kernbase - rambase >= modsize )
+ modbase = kernbase - modsize;
else
{
panic("Unable to find suitable location for dtb+initrd");
return;
}
- info->dtb_paddr = addr;
+ info->dtb_paddr = modbase;
info->initrd_paddr = info->dtb_paddr + dtb_len;
}
--
1.7.10.4
next prev parent reply other threads:[~2014-04-09 11:51 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-09 11:50 [PATCH 0/3] xen: arm: fixes for initrd and dtb placement Ian Campbell
2014-04-09 11:51 ` [PATCH 1/3] tools: arm: improve placement of initial modules Ian Campbell
2014-04-09 12:43 ` Julien Grall
2014-04-09 12:46 ` Ian Campbell
2014-04-10 11:38 ` Ian Campbell
2014-04-10 11:39 ` Ian Jackson
2014-05-22 16:07 ` Ian Jackson
2014-04-09 11:51 ` Ian Campbell [this message]
2014-04-09 12:45 ` [PATCH 2/3] xen: arm: use same variables as userspace in dom0 builder place_modules() Julien Grall
2014-04-09 12:52 ` Ian Campbell
2014-04-09 13:37 ` Julien Grall
2014-04-09 11:51 ` [PATCH 3/3] xen: arm: rework dom0 initrd and dtb placement Ian Campbell
2014-04-09 12:54 ` Julien Grall
2014-04-09 12:57 ` Ian Campbell
2014-04-09 13:09 ` Julien Grall
2014-04-09 13:15 ` Ian Campbell
2014-04-09 13:24 ` Julien Grall
2014-04-09 13:28 ` Ian Campbell
2014-04-09 13:35 ` 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=1397044276-30185-2-git-send-email-ian.campbell@citrix.com \
--to=ian.campbell@citrix.com \
--cc=julien.grall@linaro.org \
--cc=stefano.stabellini@eu.citrix.com \
--cc=tim@xen.org \
--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).