Giter Site home page Giter Site logo

kernkonzept / fiasco Goto Github PK

View Code? Open in Web Editor NEW
87.0 20.0 19.0 10.51 MB

The development version of the L4Re Microkernel

Home Page: https://github.com/kernkonzept/fiasco/wiki

Makefile 1.17% GDB 0.01% C++ 41.96% C 8.14% Assembly 0.70% Perl 0.36% Python 0.06% Shell 0.04% Lex 0.04% Yacc 0.06% POV-Ray SDL 42.66% SourcePawn 4.81%
microkernel hypervisor l4 virtualization arm mips x86 realtime operating-system

fiasco's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fiasco's Issues

Support for Containers?

Hello, sorry if this isn't the right channel to ask, but I couldn't find one that looked more suitable.

Does Fiasco (or the non-kernel components that run on top of it) support containers?

If not, does Fiasco (or the non-kernel components that run on top of it) support concepts analogous to Linux namespaces and cgroups, to implement a container runtime on top of it?

Static Per_cpu objects constructed twice with !mp

Static Per_cpu<> objects are constructed twice in the same place if CONFIG_MP is disabled.

At least on x86, Per_cpu_data::run_ctors is called twice:

Per_cpu_data::run_ctors(Cpu_number::boot_cpu());

Per_cpu_data::run_ctors(Cpu::invalid());

Without CONFIG_MP, run_ctors does not make use of the Cpu_number argument:

IMPLEMENT inline
void
Per_cpu_data::run_ctors(Cpu_number)
{
extern ctor_function_t __PER_CPU_INIT_ARRAY_START__[];
extern ctor_function_t __PER_CPU_INIT_ARRAY_END__[];
run_ctor_functions(__PER_CPU_INIT_ARRAY_START__, __PER_CPU_INIT_ARRAY_END__);
extern ctor_function_t __PER_CPU_CTORS_LIST__[];
extern ctor_function_t __PER_CPU_CTORS_END__[];
run_ctor_functions(__PER_CPU_CTORS_LIST__, __PER_CPU_CTORS_END__);
}

Therefore, the Per_cpu<> objects are constructed twice in the same place when they should only be constructed once or twice but in different locations (as it happens with CONFIG_MP enabled).

This problem also seems to occur with Per_cpu_data::run_late_ctors and Per_cpu_data_alloc::alloc.
I discovered this issue by observing that Jdb_ipc_log_pm was constructed twice.

DEFINE_PER_CPU static Per_cpu<Jdb_ipc_log_pm> _pm(Per_cpu_data::Cpu_num);

I have not verified that the issue still persists with the newest commit on master but there are no relevant code changes as far as I can see.

arm/fpu: eager FPU switching triggers assertion

After updating Fiasco.OC to the current state on Github (commit-id 4367c50), I've tested the new configuration option to always switch the FPU eagerly, because our user-level components make heavy use of the FPU anyway. But when the configuration option "Enable lazy FPU switching" is not set, the kernel runs into an assertion at the very beginning: src/kern/arm/32/fpu-arm.cpp:327. I have tested it on i.MX6 Quad Sabrelite.

x86/vmx: vmm can't cancel event (irq) injection

An attempt of a VMM to cancel a event (irq) injection is ignored at https://github.com/kernkonzept/fiasco/blob/master/src/kern/ia32/vm_vmx.cpp#L296. The upper bit of Vmx::F_entry_int_info may stay pending (valid) in the VMCS and an now unexpected virtual IRQ gets delivered to the VM as soon as interrupt delivery is enabled again in the VM. This leads in our case to a not booting VM because of invalid guest state VM exits during early boot. I encountered it during our work on a generalized x86 virtualization interface for Genode.

The commit alex-ab/foc@a841138 avoids the issue for us and let boot the VM successfully.

issues: kern/arm/gic.cpp

why returned?
it won't work,if i want to use Gic::set_mode.

352 Gic::set_mode(Mword pin, Mode m) override
353 {
354 return 0;

Possible array out of boundary for abs timeout in utcb

Max_buffers = 58, ///< Number of BRs.

From code above shows Max_buffers is 58 . But the Line 972 shows we can get idx value up to 58.
So when idx==58, Line 974 u->buffers[idx] will out of array boundary. Is it a bug here?
Mword buffers[Max_buffers];

int idx = min<int>(_t & 0x3f, Utcb::Max_buffers);

= reinterpret_cast<Utcb::Time_val const *>(&u->buffers[idx]);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.