Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 12 Jun 2018 13:00:06 -0500
From:      Kyle Evans <kevans@freebsd.org>
To:        Warner Losh <imp@bsdimp.com>, Mark Johnston <markj@freebsd.org>
Cc:        "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>
Subject:   Re: specifying alignment of loader files
Message-ID:  <CACNAnaG4ZwOrqbhpHJaQQjg4HVMqiP=OqjEiF6GZOYQ1VXkkug@mail.gmail.com>
In-Reply-To: <CANCZdfpDy44BSbs7n3HAyMSOTsrOQAAXrNfxsUrtAEOq5ACq4g@mail.gmail.com>
References:  <20180612170420.GD56138@raichu> <CANCZdfofkgg4NyGtVucn7O6r44q7JBqf1fHf0qqMbPT-sTui6A@mail.gmail.com> <20180612171649.GE56138@raichu> <CANCZdfqWyf2MoiS-KrZQZOV0LH4qg64vrcrdisLMBTDpeamMPw@mail.gmail.com> <20180612175130.GF56138@raichu> <CANCZdfpDy44BSbs7n3HAyMSOTsrOQAAXrNfxsUrtAEOq5ACq4g@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Jun 12, 2018 at 12:55 PM, Warner Losh <imp@bsdimp.com> wrote:
> On Tue, Jun 12, 2018 at 11:51 AM, Mark Johnston <markj@freebsd.org> wrote:
>
>> On Tue, Jun 12, 2018 at 11:45:01AM -0600, Warner Losh wrote:
>> > On Tue, Jun 12, 2018 at 11:16 AM, Mark Johnston <markj@freebsd.org>
>> wrote:
>> >
>> > > On Tue, Jun 12, 2018 at 11:11:25AM -0600, Warner Losh wrote:
>> > > > On Tue, Jun 12, 2018 at 11:04 AM, Mark Johnston <markj@freebsd.org>
>> > > wrote:
>> > > >
>> > > > > Hi,
>> > > > >
>> > > > > I'm writing some code which processes a file loaded by the
>> loader.  I
>> > > > > want the file's contents to be available at a certain alignment in
>> > > > > memory, and as far as I can see, the loader provides no alignment
>> > > > > guarantees today.  The access will happen early enough during boot
>> that
>> > > > > making an aligned copy of the data will be awkward, so I'd like the
>> > > > > loader to provide the desired alignment.
>> > > > >
>> > > > > I'm considering adding a new "module_align" variable that would
>> specify
>> > > > > the alignment for a given file type, and plumb that through to
>> > > > > command_load().  Does anyone have an alternate suggestion, or an
>> > > > > objection to my proposal?
>> > > > >
>> > > >
>> > > > I thought the loader already did that for ELF sections... Why not
>> wrap
>> > > your
>> > > > file in such a segment?
>> > >
>> > > In this case it's a raw binary file (CPU microcode), and I want to be
>> > > able to load it without any modifications or wrappers.
>> > >
>> >
>> > How do you identify the type then? I'm ok in theory with this (though a
>> > variable is more flexible than needed), but that's my main concern.
>> What's
>> > the alignment required btw?
>>
>> It'd be a property of the type, e.g.,
>>
>> cpu_ucode_name=/boot/firmware/...
>> cpu_ucode_align=16
>>
>> I do feel like having a separate variable is overkill, but I can't see
>> a less invasive solution that isn't hacky.
>>
>> The required alignment for Intel is 16 bytes; I'm not yet sure whether
>> AMD has a required alignment.
>>
>
> OK. That seems sane. I was thinking it was more general than this, but I'm
> cool with what you've outlined.
>
> OTOH, wouldn't just loading all files on page boundaries suffice?

If the answer to the above isn't "yes," can we consider making this a
flag to `load` parsed in command_load instead of its own
${module}_align variable? e.g.

cpu_ucode_name=/boot/firmware/...
cpu_ucode_flags="-a 16"

The initial recommendation isn't a bad idea,
but adding a new ${module}_flags requires changes in both interpreters
that I'm not sure are strictly necessary when this will be relatively
rarely used.

Thanks,

Kyle Evans



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CACNAnaG4ZwOrqbhpHJaQQjg4HVMqiP=OqjEiF6GZOYQ1VXkkug>