From: Ian Campbell <ian.campbell@citrix.com>
To: Oleksandr Tyshchenko <oleksandr.tyshchenko@globallogic.com>
Cc: Julien Grall <julien.grall@linaro.org>, Tim Deegan <tim@xen.org>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH v2] xen/tools: Introduce QNX IFS loader
Date: Thu, 18 Sep 2014 18:39:40 +0100 [thread overview]
Message-ID: <1411061980.1920.16.camel@citrix.com> (raw)
In-Reply-To: <CAJEb2DF3wqnhz59OuV48M65PKyC2T-sOtWsEVH5cXBKVp02E7g@mail.gmail.com>
On Thu, 2014-09-18 at 16:16 +0300, Oleksandr Tyshchenko wrote:
> Hi Ian
>
> On Thu, Sep 18, 2014 at 4:50 AM, Ian Campbell <ian.campbell@citrix.com> wrote:
> > On Wed, 2014-09-17 at 10:59 -0700, Julien Grall wrote:
> >> > +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 */
> >
> > Is this correct? You appear to be scanning at 4 byte boundaries over a
> > range of 4K.
> ok.
> I meant that the code below looks on 4 KB boundaries for the image
> identifier bytes.
Are you sure it does? It seems to search x..x+0x1000 in 4 byte
increments. Perhaps you meant "4 byte boundaries"? (that seems to
correlate with what you say below)
> >> > + 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.
> >
> > That's definitely not an improvement.
> >
> > PAGE_SIZE might be.
> ok, but this does not correlate to a page meaning, just identical sizes
>
> I would like to say a bit more about this scanning procedure:
> We need to scan because we have N raw bytes (preboot_size) from the
> beginning of the image to the startup header,
> where "startup_vaddr" is located (we have to obtain this entry
> address). Image starts on 4 byte boundary.
> This "preboot_size" value depends on how the IFS is created
> (attributes in buildfile). The image could or couldn't have these N
> raw bytes.
> In our case we have only 8 raw bytes with next attributes:
> [virtual=armle-v7,raw +compress]
> Although I set ranges to 4 KB as it was mentioned in howto, I do not
> think that "preboot_size" can be comparable with such size.
I think you are saying that the 4KB limit is just some arbitrary value
you picked (perhaps with guidance from the HOWTO), is that right?
Are these N bytes completely raw or do they have some sort of structure
to them? IOW could you parse them enough to walk over them rather than
searching?
You seem to start your search at an offset which is read from the first
4 bytes, is that right? How does that fit in with what you say above?
I must say that this seems like a very odd file format, but that's not
your fault...
> I think that value caused by assumption that this can be multiple OS
> images (so, the image may have many headers).
Are there some simplifying assumption, such as not supporting multiple
OS images in this way, which we can make (and document)?
Ian.
next prev parent reply other threads:[~2014-09-18 17:39 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
2014-09-18 1:50 ` Ian Campbell
2014-09-18 13:16 ` Oleksandr Tyshchenko
2014-09-18 17:39 ` Ian Campbell [this message]
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=1411061980.1920.16.camel@citrix.com \
--to=ian.campbell@citrix.com \
--cc=julien.grall@linaro.org \
--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).