|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] VMX Assist and x86 segment registers
Executive summary --
If you're interested in running FreeBSD in an HVM domain on VT-x
hardware, please EXPERIMENT with the attached patch. However, the
patch is not in and of itself a fix. I'm simply looking for more
help on solving this bigger problem and pushing the patch to the Xen
community is the best way I could think of to get more insight into
the problem.
If you're still interested, please continue reading.
Folks --
Here's an esoteric topic: x86 segment registers and their emulation
with vmxassist. Anybody interested in engaging in this one? ;-)
Here's the story. FreeBSD doesn't boot on Intel processors with VT-x
hardware in an HVM domain. It turns out I'm dependent upon that
functionality. So, I began to investigate. Dragons lie in them thar
hills. (Snakes, spiders, whatever: I -hate- segmentation and I -
hate- segment registers. So you can imagine the frustration I had as
I realized I needed to become intimately familiar with them to solve
my problem.)
Here's the deal, the x86 processor allows segment registers to be set
in one mode (e.g., "real mode") and the used in another mode (e.g.,
"protected mode"). For an example of how this trick is utilized,
peruse subject 15: Accessing 4 Gigs of Memory in Real Mode:
http://www.cs.uu.nl/wais/html/na-dir/assembly-language/x86/general/
part2.html
(Be prepared to be completely disgusted.)
At any rate, between my own debugging and reading articles of the
sort above, I realized that vmxassist was incorrectly handling
segment registers.
I've made a patch that I've attached but I am -NOT- recommending this
for general consumption. This patch is -ONLY- recommended for those
who want to run FreeBSD on VT-x hardware and those who are willing to
work through additional bugs to solve interesting problems. (If you
have an interest in running other OSes on VT-x hardware, you're free
to try the patch, but I can't say that I'll spend much time trying to
solve the problems you bump into.)
I believe that the current handling of segment registers in vmxassist
isn't quite right. A more complicated model needs to be developed.
I'm not sure exactly how different it needs to be or exactly in what
ways it needs to be modified.
But, if this topic interests you, I'd be interested in continuing
this discussion.
Once you apply the patch, you'll need to perform a make in the xen/
tools/firmware directory. That will cause a new hvmloader to be
constructed. You can either install it (I don't recommend it) or you
can modify your configuration file(s) so that the "kernel" is this
new hvmloader file:
kernel = "/usr/src/xen-3.0-testing/tools/firmware/hvmloader/hvmloader"
If you've read this far, you might take interest in rereading my post
on this problem:
http://lists.xensource.com/archives/html/xen-devel/2006-05/msg01300.html
-- Randy Thelen
v86-segment.patch
Description: Binary data
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] VMX Assist and x86 segment registers,
Randy Thelen <=
|
|
|
|
|