[coyotos-dev] Spec bug
Jonathan S. Shapiro
shap at eros-os.com
Sat Feb 3 10:27:16 CST 2007
There are days when something happens, and you think: "boy am I working
with the right guy." These are really important at startups -- they help
to make up for the days with no sleep, no money, and no stress. :-)
On Friday Jonathan Adams spotted a fairly major bug in the way memory
capabilities are specified. Because the l2v field is stored in the
capability, it is impossible to do identity-preserving GPT splits. In
the current design, if the number of slots in a GPT changes, all
capabilities to that GPT need to be updated.
The fix is to move l2v into the GPT object, where it will be called
"h" (height). This probably won't add any cache references if we are
careful, but it does kill some invariants (which now require run-time
checks). In general, you can replace l2v with h in most of the
invariants of section 2.1.1, but the following invariants need to be
replaced by run-time checks:
l2uv >= l2v dropped
(l2uv - l2v) <= 4
It is also possible that the C bit can now move into the GPT -- we'll
check. If so, we'll reuse that bit to mean opaque, and we can drop the
opaque capability types.
The good news is that this buys us 6 more bits of guard, which is
useful.
--
Jonathan S. Shapiro, Ph.D.
Managing Director
The EROS Group, LLC
+1 443 927 1719 x5100
More information about the coyotos-dev
mailing list