base: unify page-fault notification for kernels
* Enable page-fault messages for regions not directly managed by core * Unify output given when a page-fault occurs related to those regions Fix #2082
This commit is contained in:
committed by
Christian Helmuth
parent
97201e6778
commit
2147c42ec6
@@ -97,15 +97,6 @@ namespace Genode {
|
||||
constexpr size_t get_super_page_size() { return L4_SUPERPAGESIZE; }
|
||||
constexpr size_t get_super_page_size_log2() { return L4_LOG2_SUPERPAGESIZE; }
|
||||
|
||||
inline void print_page_fault(const char *msg, addr_t pf_addr, addr_t pf_ip,
|
||||
Region_map::State::Fault_type pf_type,
|
||||
unsigned long badge)
|
||||
{
|
||||
printf("%s (%s pf_addr=%p pf_ip=%p from %lx)\n", msg,
|
||||
pf_type == Region_map::State::WRITE_FAULT ? "WRITE" : "READ",
|
||||
(void *)pf_addr, (void *)pf_ip, badge);
|
||||
}
|
||||
|
||||
inline addr_t map_src_addr(addr_t core_local_addr, addr_t phys_addr) {
|
||||
return core_local_addr; }
|
||||
|
||||
|
||||
@@ -69,9 +69,9 @@ void Pager_entrypoint::entry()
|
||||
/* handle request */
|
||||
if (obj->pager(_pager)) {
|
||||
/* could not resolv - leave thread in pagefault */
|
||||
warning("could not resolve "
|
||||
"pf=", Hex(_pager.fault_addr()), " ",
|
||||
"ip=", Hex(_pager.fault_ip()));
|
||||
warning("page-fault, ", *obj,
|
||||
" ip=", Hex(_pager.fault_ip()),
|
||||
" pf-addr=", Hex(_pager.fault_addr()));
|
||||
} else {
|
||||
_pager.set_reply_dst(Native_thread(obj->badge()));
|
||||
reply_pending = true;
|
||||
|
||||
@@ -126,7 +126,9 @@ static void _core_pager_loop()
|
||||
|
||||
Platform::Sigma0::Sigma0(Cap_index* i)
|
||||
:
|
||||
Pager_object(Cpu_session_capability(), Thread_capability(), 0, Affinity::Location())
|
||||
Pager_object(Cpu_session_capability(), Thread_capability(),
|
||||
0, Affinity::Location(), Session_label(),
|
||||
Cpu_session::Name("sigma0"))
|
||||
{
|
||||
/*
|
||||
* We use the Pager_object here in a slightly different manner,
|
||||
@@ -139,7 +141,9 @@ Platform::Sigma0::Sigma0(Cap_index* i)
|
||||
Platform::Core_pager::Core_pager(Platform_pd *core_pd, Sigma0 *sigma0)
|
||||
:
|
||||
Platform_thread("core.pager"),
|
||||
Pager_object(Cpu_session_capability(), Thread_capability(), 0, Affinity::Location())
|
||||
Pager_object(Cpu_session_capability(), Thread_capability(),
|
||||
0, Affinity::Location(), Session_label(),
|
||||
Cpu_session::Name(name()))
|
||||
{
|
||||
Platform_thread::pager(sigma0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user