From 4d7d4dd2fc201fb746183f4eb2f9469686a030f0 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Wed, 14 Sep 2016 23:21:24 +0200 Subject: [PATCH] nova: fix capability issues in PCID/SMP setups Kernel fails to lookup a capability it just got delegated, if the backing store for the destination capability was before backed by a zero-page. Triggers if PCID (64bit) is in use or in SMP setups. Fixes #2101 --- repos/base-nova/ports/nova.hash | 2 +- repos/base-nova/ports/nova.port | 2 +- repos/base-nova/src/test/platform/main.cc | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/repos/base-nova/ports/nova.hash b/repos/base-nova/ports/nova.hash index 2557750b04..c44907ab02 100644 --- a/repos/base-nova/ports/nova.hash +++ b/repos/base-nova/ports/nova.hash @@ -1 +1 @@ -67b9105af0e2e5d222bc38af77c129b1f079f6a5 +6f6dc94fadf93e9fad741bbf6b2938f92e45f948 diff --git a/repos/base-nova/ports/nova.port b/repos/base-nova/ports/nova.port index 56dde91f2e..3fd842235e 100644 --- a/repos/base-nova/ports/nova.port +++ b/repos/base-nova/ports/nova.port @@ -4,7 +4,7 @@ DOWNLOADS := nova.git # r9 branch - use r9_debug for more verbose kernel messages URL(nova) := https://github.com/alex-ab/NOVA.git -REV(nova) := 5e001a87ffa9fdb7ca36ed52fc10679a6089f821 +REV(nova) := bc5851221c412aa92d06c57b5b41944dd2ab08ae DIR(nova) := src/kernel/nova PATCHES := $(wildcard $(REP_DIR)/patches/*.patch) diff --git a/repos/base-nova/src/test/platform/main.cc b/repos/base-nova/src/test/platform/main.cc index 5706914340..2b3848043e 100644 --- a/repos/base-nova/src/test/platform/main.cc +++ b/repos/base-nova/src/test/platform/main.cc @@ -707,8 +707,6 @@ Main::Main(Env &env) : env(env) check(res, "pt_ctrl %2u", i); } - test_delegate_revoke_smp(env); - /* test PAT kernel feature */ test_pat(env); @@ -718,6 +716,9 @@ Main::Main(Env &env) : env(env) /* test translate together with special revoke */ test_translate(env); + /* test SMP delegate/revoke */ + test_delegate_revoke_smp(env); + /** * Test to provoke out of memory during capability transfer of * server/client.