From: Julien Grall <julien.grall@linaro.org>
To: Oleksandr Tyshchenko <oleksandr.tyshchenko@globallogic.com>,
xen-devel@lists.xen.org, ian.campbell@citrix.com,
stefano.stabellini@eu.citrix.com, tim@xen.org
Subject: Re: [PATCH v2] xen/tools: Introduce QNX IFS loader
Date: Wed, 17 Sep 2014 10:59:01 -0700 [thread overview]
Message-ID: <5419CBE5.2030205@linaro.org> (raw)
In-Reply-To: <1410971686-28977-2-git-send-email-oleksandr.tyshchenko@globallogic.com>
Hi Oleksandr,
On 17/09/14 09:34, Oleksandr Tyshchenko wrote:
> +#define STARTUP_HDR_SIGNATURE 0x00ff7eeb
> +
> +static int calc_checksum(uint32_t addr, uint32_t size)
> +{
> + int sum = 0;
> + uint32_t *ptr = (uint32_t *)addr;
You are casting an uint32_t address to a pointer, this will break
compilation on ARM64.
> +
> + while ( size > 0 )
> + {
> + sum += *ptr++;
> + size -= 4;
> + }
> +
> + return sum;
> +}
> +
> +static int xc_dom_probe_qnx_ifs(struct xc_dom_image *dom)
> +{
> + struct startup_header *startup_hdr;
> + uint32_t start_addr, end_addr;
> +
> + if ( dom->kernel_blob == NULL )
> + {
> + xc_dom_panic(dom->xch, XC_INTERNAL_ERROR,
> + "%s: no QNX IFS loaded", __FUNCTION__);
> + return -EINVAL;
> + }
> +
> + /* Scan 4KB boundaries for the valid OS signature */
> + start_addr = *(uint32_t *)&dom->kernel_blob;
> + end_addr = start_addr + 0x1000;
I took me a couple of minutes to understand where does the "0x1000"
comes from. I would use "4 << 10" here.
[..]
> +static int xc_dom_parse_qnx_ifs(struct xc_dom_image *dom)
> +{
> + uint64_t v_start, v_end;
> + uint64_t rambase = GUEST_RAM_BASE;
> +
> + DOMPRINTF_CALLED(dom->xch);
> +
> + dom->rambase_pfn = rambase >> XC_PAGE_SHIFT;
dom->rambase_pfn is already set earlier (see xc_dom_rambase_init). You
don't need to reset it.
Please you the value of this variable here, rather than using the
hardcoding GUEST_RAM_BASE.
> + /* Do not load kernel at the very first RAM address */
> + v_start = rambase + 0x8000;
> + v_end = v_start + dom->kernel_size;
> +
> + /* find kernel segment */
> + dom->kernel_seg.vstart = v_start;
> + dom->kernel_seg.vend = v_end;
> +
> + dom->parms.virt_entry = dom->startup_vaddr;
Looking to the QNX header, the field start_vaddr should contain a
virtual address.
But virt_entry will contain that entry physical address (yes, I know
it's confusing :)).
So, how can this work?
Also, it looks like that with this solution, the QNX image will be tight
to a specific version of Xen. Indeed, you have to specify the physical
address in the QNX image.
--
Julien Grall
next prev parent reply other threads:[~2014-09-17 17:59 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-17 16:34 [PATCH v2] xen/tools: Introduce QNX IFS loader Oleksandr Tyshchenko
2014-09-17 16:34 ` Oleksandr Tyshchenko
2014-09-17 17:59 ` Julien Grall [this message]
2014-09-18 1:50 ` Ian Campbell
2014-09-18 13:16 ` Oleksandr Tyshchenko
2014-09-18 17:39 ` Ian Campbell
2014-09-19 15:45 ` Oleksandr Tyshchenko
2014-09-22 13:09 ` Ian Campbell
2014-09-22 14:23 ` Oleksandr Tyshchenko
2014-09-22 15:09 ` Oleksandr Tyshchenko
2014-09-22 15:13 ` Ian Campbell
2014-09-18 10:55 ` Oleksandr Tyshchenko
2014-09-18 19:11 ` Julien Grall
2014-09-19 16:45 ` Oleksandr Tyshchenko
2014-09-22 13:03 ` Ian Campbell
2014-09-22 15:08 ` Oleksandr Tyshchenko
2014-09-17 17:36 ` Julien Grall
2014-09-18 10:11 ` Oleksandr Tyshchenko
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=5419CBE5.2030205@linaro.org \
--to=julien.grall@linaro.org \
--cc=ian.campbell@citrix.com \
--cc=oleksandr.tyshchenko@globallogic.com \
--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).