I finally managed to get a working prompt on the guest. It's not too quick though. An ls operation takes around 15 seconds and it takes about 5 minutes to boot the guest. Compared to QEMU emulation, which takes around 35 minutes it's an improvement, but of course not usable. Just wanted to give a quick follow-up on the latest e-mails as well: - I changed QEMU to synchronize enough registers to give backtraces during guest execution which was a big help for debugging. - The console was not created because the device ID's were incorrectly read, because there was a bug in the emulation code. - Running the init program introduced some challenges with copy_to_user (and related), since they use some special load with translation instructions on ARM. - Switching to user space introduced a whole new set of problems with domains and access permissions, which essentially requires me to keep around two shadow page tables per process or do a lot of updating of access permissions when the guest switches cpu mode. - I fixed interrupt injection for aborts where I updated a fault register for both instruction prefetch aborts and data aborts, which broke the guest handler. - Finally I made some performance improvements in the world-switch code to shorten my debug cycle. I'm probably going to take a small break from the development work (like three weeks or so) while I relocate back to Denmark. Afterwards the plans with the project are (in order): - Improve performance - Support ARMv6 and ARMv7 (related to performance) - Cleanup code and upstream Linux - More features... Thanks for all the great help so far. And a happy new year to all! /Christoffer -------------- next part -------------- An HTML attachment was scrubbed... URL: https://lists.cs.columbia.edu/pipermail/android-virt/attachments/20100103/18f9e644/attachment.html