2011-12-22 15:19:25 +00:00
|
|
|
#
|
|
|
|
# \brief Download, and unpack the NOVA hypervisor.
|
|
|
|
# \author Stefan Kalkowski
|
2012-06-06 08:19:48 +00:00
|
|
|
# \author Alexander Boettcher
|
|
|
|
# \date 2012-06-04
|
2011-12-22 15:19:25 +00:00
|
|
|
#
|
|
|
|
|
|
|
|
VERBOSE ?= @
|
2012-06-06 08:19:48 +00:00
|
|
|
ECHO = @echo
|
|
|
|
GIT_URL = git://github.com/IntelLabs/NOVA.git
|
NOVA: update to latest kernel revision
The Demo of 64bit Genode/NOVA fails during the booting phase when
physical memory was tried to be mapped lying above 4G boundary.
(qemu -m 4096 triggered it on some systems). The memory never got
mapped and the attempt to access the virtual region resulted
in a unexpected page fault inside Genode core.
The latest revision removed the artificial boundary of 4G for 64bit.
Example trace showing the issue:
([-1] lines show debugging output that mapping failed)
...
int main(): --- create local services ---
int main(): --- start init ---
int main(): transferred 4047 MB to init
int main(): --- init created, waiting for exit condition ---
start new pager object with EIP=0x1025814, ESP=0x6001000
[init] Could not open file "ld.lib.so"
start new pager object with EIP=0x10213e4, ESP=0x6001000
start new pager object with EIP=0x1037684, ESP=0x6001000
start new pager object with EIP=0x1021664, ESP=0x6001000
start new pager object with EIP=0x101e374, ESP=0x6001000
start new pager object with EIP=0x10295a4, ESP=0x6001000
start new pager object with EIP=0x1037db4, ESP=0x6001000
[init -> pci_drv] PCI driver started
[init -> launchpad] Could not open file "ld.lib.so"
[init -> launchpad] Could not open file "config"
[init -> launchpad] Could not obtain config file
[init -> ps2_drv] Detected ExPS/2 mouse - activating scroll-wheel and 5-button support.
[init -> ps2_drv] Using keyboard with scan code set 1 (xlate).
[init -> timer] Timer::Timeout_scheduler::Timeout_scheduler(Platform_timer*, Genode::Rpc_entrypoint*): starting timeout scheduler
[init -> vesa_drv] int Framebuffer_drv::map_io_mem(Genode::addr_t, Genode::size_t, bool, void**, Genode::addr_t, Genode::Dataspace_capability*): fb mapped to 1000
start new pager object with EIP=0x101eaf0, ESP=0x401fef80
[init -> timer] Timer::Session_component::Session_component(Timer::Timeout_scheduler*, Genode::Cap_session*): created new session component, _session_cap.valid=1
start new pager object with EIP=0x1021d10, ESP=0x400fef80
start new pager object with EIP=0x1021d10, ESP=0x401fef80
[init -> vesa_drv] Could not open file "config"
[init -> vesa_drv] Could not obtain config file
[init -> vesa_drv] Found: VESA BIOS version 2.0
[init -> vesa_drv] OEM: VGABIOS Cirrus extension
[init -> vesa_drv] Found: physical frame buffer at 0xfc000000 size: 0x00400000
[init -> vesa_drv] int Framebuffer_drv::map_io_mem(Genode::addr_t, Genode::size_t, bool, void**, Genode::addr_t, Genode::Dataspace_capability*): fb mapped to 400000
[init -> nitpicker] framebuffer is 1024x768@1
[init -> nitpicker] create session with args: fb_format=1, label="launchpad", ram_quota=1646592
[init -> nitpicker] Could not open file "config"
[init -> nitpicker] Could not obtain config file
[init -> nitpicker] create session with args: fb_width=400, fb_height=1504, fb_format=1, label="launchpad", ram_quota=1211392
[ 0] DEL MEM PD:0xffffffff8100d620->0xffffffff8100d320 SB:0x00100000 RB:0x00002a00 O:0x08 A:0x7
[-1] Pd::delegate snd->S::tree_lookup(0x100000) == 0x0 -- base-nova/contrib/src/pd.cpp:54 - Pd::snd 0xffffffff8100d620 =? Pd::kern 0xffffffff8100d620
[ 0] DEL MEM PD:0xffffffff8100d620->0xffffffff8100d320 SB:0x00100100 RB:0x00002b00 O:0x05 A:0x7
[-1] Pd::delegate snd->S::tree_lookup(0x100100) == 0x0 -- base-nova/contrib/src/pd.cpp:54 - Pd::snd 0xffffffff8100d620 =? Pd::kern 0xffffffff8100d620
[ 0] DEL MEM PD:0xffffffff8100d620->0xffffffff8100d320 SB:0x00100120 RB:0x00002b20 O:0x02 A:0x7
[-1] Pd::delegate snd->S::tree_lookup(0x100120) == 0x0 -- base-nova/contrib/src/pd.cpp:54 - Pd::snd 0xffffffff8100d620 =? Pd::kern 0xffffffff8100d620
[ 0] DEL MEM PD:0xffffffff8100d620->0xffffffff8100d320 SB:0x00100124 RB:0x00002b24 O:0x01 A:0x7
[-1] Pd::delegate snd->S::tree_lookup(0x100124) == 0x0 -- base-nova/contrib/src/pd.cpp:54 - Pd::snd 0xffffffff8100d620 =? Pd::kern 0xffffffff8100d620
[ 0] Killed EC:0xffffffff823ca880 SC:0xffffffff823cb740 V:0xe CS:0x2b EIP:0x1215a0 CR2:0x2b25fff ERR:0x6 (PT not found)
2012-07-13 07:43:02 +00:00
|
|
|
GIT_REV = ad92f48564b1ed53e67f58e194c918af4da6a32d
|
2012-06-06 08:19:48 +00:00
|
|
|
CONTRIB_DIR = contrib
|
2012-07-25 11:55:18 +00:00
|
|
|
PATCHES = $(shell find patches -name '*.patch')
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2012-05-25 10:13:05 +00:00
|
|
|
#
|
|
|
|
# Utility to check if a tool is installed
|
|
|
|
#
|
|
|
|
check_tool = $(if $(shell which $(1)),,$(error Need to have '$(1)' installed.))
|
|
|
|
|
2012-06-06 08:19:48 +00:00
|
|
|
$(call check_tool,git)
|
2012-05-25 10:13:05 +00:00
|
|
|
$(call check_tool,patch)
|
|
|
|
|
2011-12-22 15:19:25 +00:00
|
|
|
#
|
|
|
|
# Print help information by default
|
|
|
|
#
|
2012-06-06 08:19:48 +00:00
|
|
|
help::
|
|
|
|
|
|
|
|
prepare: $(CONTRIB_DIR)
|
|
|
|
|
|
|
|
help::
|
2011-12-22 15:19:25 +00:00
|
|
|
$(ECHO)
|
|
|
|
$(ECHO) "Prepare the NOVA base repository"
|
|
|
|
$(ECHO)
|
|
|
|
$(ECHO) "--- available commands ---"
|
2012-06-06 08:19:48 +00:00
|
|
|
$(ECHO) "prepare - checkout upstream source codes"
|
|
|
|
$(ECHO) "clean - remove upstream source codes"
|
2011-12-22 15:19:25 +00:00
|
|
|
$(ECHO)
|
|
|
|
|
2012-06-06 08:19:48 +00:00
|
|
|
$(CONTRIB_DIR)/.git:
|
|
|
|
$(VERBOSE)git clone $(GIT_URL) $(CONTRIB_DIR)
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2012-06-06 08:19:48 +00:00
|
|
|
$(CONTRIB_DIR): $(CONTRIB_DIR)/.git
|
|
|
|
$(VERBOSE)cd $(CONTRIB_DIR); git reset --hard $(GIT_REV)
|
|
|
|
$(ECHO) "applying patches to '$(CONTRIB_DIR)/'"
|
|
|
|
$(VERBOSE)for i in $(PATCHES); do patch -d $@ -p1 < $$i; done
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2012-06-06 08:19:48 +00:00
|
|
|
.PHONY: $(CONTRIB_DIR)
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2012-06-06 08:19:48 +00:00
|
|
|
clean::
|
2011-12-22 15:19:25 +00:00
|
|
|
$(VERBOSE)rm -rf $(CONTRIB_DIR)
|