Discussion:
base-hw Bootstrap implementation: 16.05 version vs. 17.02 version
Vasan VS
2017-04-18 10:42:36 UTC
Permalink
Hi all,

We are trying to build and run Genode on a custom board with iMX6
processor. As part of this process, we are trying to understand the
implementation of base-hw in the 17.02 version release.

In trying to understand the implementation of base-hw in the 16.05
implementation and in the current 17.02 version, we find that the bootstrap
portion of the implementation is present in 17.02 source base @
base-hw/src/bootstrap which is NOT present in 16.05 code base.

We had a look at the detailed release notes of all the intermediate
releases between these two versions (16.05->16.08, 16.08->16.11,
16.11->17.02) but we could not find any documentation of the changes that
has been done on this particular portion of base-hw between these two
releases.

If we use the 16.05 version on our board, we get the "Kernel initialized"
message after init is started but on the 17.02 version, the board is
hanging and refusing to boot up after "Starting kernel" message(from
uboot).

Can someone help us with the following:
a) Provide the details of the changes that has been done between the two
versions in the bootstrap portion
b) Point us to any clues on why we are facing this hang problem after the
log service is initialized and while enabling the MMU and caches.

Thanks in advance,

Vasan
Stefan Kalkowski
2017-04-21 13:01:24 UTC
Permalink
Hello,
Post by Vasan VS
Hi all,
We are trying to build and run Genode on a custom board with iMX6
processor. As part of this process, we are trying to understand the
implementation of base-hw in the 17.02 version release.
In trying to understand the implementation of base-hw in the 16.05
implementation and in the current 17.02 version, we find that the
bootstrap portion of the implementation is present in 17.02 source base
@ base-hw/src/bootstrap which is NOT present in 16.05 code base.
We had a look at the detailed release notes of all the intermediate
releases between these two versions (16.05->16.08, 16.08->16.11,
16.11->17.02) but we could not find any documentation of the changes
that has been done on this particular portion of base-hw between these
two releases.
If we use the 16.05 version on our board, we get the "Kernel
initialized" message after init is started but on the 17.02 version, the
board is hanging and refusing to boot up after "Starting kernel"
message(from uboot).
a) Provide the details of the changes that has been done between the two
versions in the bootstrap portion
I'm really sorry that we did not add a corresponding section in the last
release notes. Actually, this was done by intention, because the
bootstrap component[1] is part of a major restructuring of base-hw to
run core/kernel as part of every protection domain[2] that is not yet
complete. Anyway, now I think it would have been better to at least give
some hints in the release notes.

In principle, the bootstrap component is used to initialize the cpu
cores, to setup core's page-table, and to execute any board specifics
that need to be done before the MMU is enabled. Finally it enables the
MMU and starts core. Moreover, all board specific things are encoded
into bootstrap and not core. Instead bootstrap provides all necessary
information, like available RAM to core in a generic way, via the so
called Bootinfo.
Post by Vasan VS
b) Point us to any clues on why we are facing this hang problem after
the log service is initialized and while enabling the MMU and caches.
As already mentioned, bootstrap initializes core's page-tables.
Therefore, all available RAM and memory-mapped I/O registers used by
core need to be stated within the board-specific Platform::Board
constructor in the bootstrap component. The current release contains
some intermediate state, where the corresponding file for your platform
resides here:

repos/base-hw/src/bootstrap/spec/imx6/platform.cc

Another, thing that changed recently is that we enabled multiprocessor
support for the Wandboard, which is the i.MX6 board we are using. To be
on the safe side, you can limit the numbers of cores in these files:

repos/base-hw/lib/mk/spec/imx6/*.mk

Regards
Stefan

[1] https://github.com/genodelabs/genode/issues/2092
[2] https://github.com/genodelabs/genode/issues/2091
Post by Vasan VS
Thanks in advance,
Vasan
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs

https://github.com/skalk · http://genode.org/
Vasan VS
2017-04-22 07:30:06 UTC
Permalink
Hi Stefan,

Many thanks for the details and pointers. We will change this and see if we
are getting any changes in behaviour.

Regards

Vasan


On Fri, Apr 21, 2017 at 6:31 PM, Stefan Kalkowski <
Post by Stefan Kalkowski
Hello,
Post by Vasan VS
Hi all,
We are trying to build and run Genode on a custom board with iMX6
processor. As part of this process, we are trying to understand the
implementation of base-hw in the 17.02 version release.
In trying to understand the implementation of base-hw in the 16.05
implementation and in the current 17.02 version, we find that the
bootstrap portion of the implementation is present in 17.02 source base
@ base-hw/src/bootstrap which is NOT present in 16.05 code base.
We had a look at the detailed release notes of all the intermediate
releases between these two versions (16.05->16.08, 16.08->16.11,
16.11->17.02) but we could not find any documentation of the changes
that has been done on this particular portion of base-hw between these
two releases.
If we use the 16.05 version on our board, we get the "Kernel
initialized" message after init is started but on the 17.02 version, the
board is hanging and refusing to boot up after "Starting kernel"
message(from uboot).
a) Provide the details of the changes that has been done between the two
versions in the bootstrap portion
I'm really sorry that we did not add a corresponding section in the last
release notes. Actually, this was done by intention, because the
bootstrap component[1] is part of a major restructuring of base-hw to
run core/kernel as part of every protection domain[2] that is not yet
complete. Anyway, now I think it would have been better to at least give
some hints in the release notes.
In principle, the bootstrap component is used to initialize the cpu
cores, to setup core's page-table, and to execute any board specifics
that need to be done before the MMU is enabled. Finally it enables the
MMU and starts core. Moreover, all board specific things are encoded
into bootstrap and not core. Instead bootstrap provides all necessary
information, like available RAM to core in a generic way, via the so
called Bootinfo.
Post by Vasan VS
b) Point us to any clues on why we are facing this hang problem after
the log service is initialized and while enabling the MMU and caches.
As already mentioned, bootstrap initializes core's page-tables.
Therefore, all available RAM and memory-mapped I/O registers used by
core need to be stated within the board-specific Platform::Board
constructor in the bootstrap component. The current release contains
some intermediate state, where the corresponding file for your platform
repos/base-hw/src/bootstrap/spec/imx6/platform.cc
Another, thing that changed recently is that we enabled multiprocessor
support for the Wandboard, which is the i.MX6 board we are using. To be
repos/base-hw/lib/mk/spec/imx6/*.mk
Regards
Stefan
[1] https://github.com/genodelabs/genode/issues/2092
[2] https://github.com/genodelabs/genode/issues/2091
Post by Vasan VS
Thanks in advance,
Vasan
------------------------------------------------------------
------------------
Post by Vasan VS
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
Loading...