Disable super-page I/O mappings on FOC and Fiasco

We disable super-page I/O mappings because our unmap code does not flush
local mappings from core and, thus, breaks later re-mappings of
different page size.

Issue #2547
This commit is contained in:
Christian Helmuth 2018-03-26 14:47:17 +02:00
parent 5d1f08d512
commit 6151e1bbb2
2 changed files with 14 additions and 6 deletions

View File

@ -31,9 +31,14 @@ void Io_mem_session_component::_unmap_local(addr_t base, size_t)
}
static inline bool can_use_super_page(addr_t base, size_t size) {
return (base & (get_super_page_size() - 1)) == 0
&& (size >= get_super_page_size()); }
static inline bool can_use_super_page(addr_t, size_t)
{
/*
* We disable super-page I/O mappings as unmap does not flush the local
* mapping which breaks later re-mappings of different page size.
*/
return false;
}
addr_t Io_mem_session_component::_map_local(addr_t base, size_t size)

View File

@ -66,10 +66,13 @@ namespace Genode {
}
static inline bool can_use_super_page(addr_t base, size_t size)
static inline bool can_use_super_page(addr_t, size_t)
{
return (base & (get_super_page_size() - 1)) == 0
&& (size >= get_super_page_size());
/*
* We disable super-page I/O mappings as unmap does not flush the local
* mapping which breaks later re-mappings of different page size.
*/
return false;
}