mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-20 17:52:52 +00:00
Fiasco.OC: fix io-port fault answer in sigma0
In sigma0 normally no answer tag to a request/fault is created. It simply uses the message tag received with the request. This doesn't work out when I/O ports are requested. This patch constructs an appropriate answer tag. Moreover, we have to enable I/O port protection in the kernel configuration.
This commit is contained in:
parent
3e406a1077
commit
361a67d749
@ -1,70 +0,0 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Fiasco configuration
|
||||
#
|
||||
|
||||
#
|
||||
# Target configuration
|
||||
#
|
||||
# CONFIG_IA32 is not set
|
||||
CONFIG_AMD64=y
|
||||
# CONFIG_ARM is not set
|
||||
CONFIG_PF_PC=y
|
||||
CONFIG_ABI_VF=y
|
||||
CONFIG_AMD64_K8=y
|
||||
# CONFIG_AMD64_CORE2 is not set
|
||||
# CONFIG_AMD64_ATOM is not set
|
||||
# CONFIG_AMD64_K10 is not set
|
||||
# CONFIG_CPU_VIRT is not set
|
||||
# CONFIG_SCHED_PIT is not set
|
||||
# CONFIG_SCHED_RTC is not set
|
||||
CONFIG_SCHED_APIC=y
|
||||
# CONFIG_WORKAROUND_AMD_FPU_LEAK is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
#
|
||||
# CONFIG_MP is not set
|
||||
CONFIG_CONTEXT_4K=y
|
||||
# CONFIG_IO_PROT is not set
|
||||
# CONFIG_FINE_GRAINED_CPUTIME is not set
|
||||
CONFIG_SCHED_FIXED_PRIO=y
|
||||
|
||||
#
|
||||
# Debugging
|
||||
#
|
||||
CONFIG_INLINE=y
|
||||
# CONFIG_NDEBUG is not set
|
||||
CONFIG_NO_FRAME_PTR=y
|
||||
CONFIG_STACK_DEPTH=y
|
||||
# CONFIG_LIST_ALLOC_SANITY is not set
|
||||
# CONFIG_BEFORE_IRET_SANITY is not set
|
||||
# CONFIG_IRQ_SPINNER is not set
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
CONFIG_JDB_LOGGING=y
|
||||
CONFIG_JDB_DISASM=y
|
||||
CONFIG_JDB_GZIP=y
|
||||
CONFIG_JDB_MISC=y
|
||||
CONFIG_POWERSAVE_GETCHAR=y
|
||||
# CONFIG_WARN_NONE is not set
|
||||
CONFIG_WARN_WARNING=y
|
||||
# CONFIG_WARN_ANY is not set
|
||||
|
||||
#
|
||||
# Compiling
|
||||
#
|
||||
CONFIG_CC="gcc"
|
||||
CONFIG_CXX="g++"
|
||||
CONFIG_HOST_CC="gcc"
|
||||
CONFIG_HOST_CXX="g++"
|
||||
# CONFIG_MAINTAINER_MODE is not set
|
||||
CONFIG_LABEL=""
|
||||
# CONFIG_EXPERIMENTAL is not set
|
||||
CONFIG_PERF_CNT=y
|
||||
CONFIG_BIT64=y
|
||||
CONFIG_WARN_LEVEL=1
|
||||
CONFIG_XARCH="amd64"
|
||||
CONFIG_IA32_TARGET="AMD Opteron"
|
||||
CONFIG_ABI="vf"
|
16
base-foc/patches/sigma0_ioport.patch
Normal file
16
base-foc/patches/sigma0_ioport.patch
Normal file
@ -0,0 +1,16 @@
|
||||
Index: l4/pkg/sigma0/server/src/ioports_x86.cc
|
||||
===================================================================
|
||||
--- l4/pkg/sigma0/server/src/ioports_x86.cc (revision 40)
|
||||
+++ l4/pkg/sigma0/server/src/ioports_x86.cc (working copy)
|
||||
@@ -39,8 +39,9 @@
|
||||
size = l4_fpage_size(fp) + PORT_SHIFT;
|
||||
|
||||
unsigned long i = io_ports.alloc(Region::bs(port, 1UL << size, t));
|
||||
- if (i == port)
|
||||
+ if (i == port) {
|
||||
a->snd_fpage(l4_iofpage(port >> PORT_SHIFT, size - PORT_SHIFT));
|
||||
- else
|
||||
+ a->tag = l4_msgtag(0, 0, 1, 0);
|
||||
+ } else
|
||||
a->error(L4_ENOMEM);
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
REQUIRES = x86 64bit
|
||||
KERNEL_CONFIG = $(REP_DIR)/config/x86_64.kernel
|
||||
FIASCO_DIR = $(REP_DIR)/contrib/kernel/fiasco
|
||||
KERNEL_CONFIG = $(FIASCO_DIR)/src/templates/globalconfig.out.amd64-mp
|
||||
|
||||
-include $(PRG_DIR)/../target.inc
|
||||
|
Loading…
x
Reference in New Issue
Block a user