QEMU Updates

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



That's awsome.

The next thing is to try kvmtest on the physical device.

You can use the main branch (I think). We'll sit down Wednesday and  
compile some detailed instructions.

/Andreas

Citerar David Albert <dba2104 at columbia.edu>:

> Quick update: Hardcoding works just fine. QEMU now boots without any
> intervention.
>
> Best,
> -D
>
> On Apr 27, 2009, at 9:39 AM, David Albert wrote:
>
>> Grrr, I sent this last night, but it didn't go through because of the
>> attached image.
>>
>> Here's the link to the image I wanted to send:   
>> http://dave.is/bootinglinux.png
>>
>> ---
>>
>> Hey All,
>>
>> Here's an update on the progress I've made. I now have QEMU booting on
>> the emulated device with graphical output on SDL. The image is
>> distorted, most likely some problem with the resolution passed into
>> the kernel. The catch is that I still can't accomplish this without
>> using gdb to change a function parameter at runtime.
>>
>> What happens without this intervention is that qemu_console_resize()
>> gets called with a width of 640. Because the emulator (and the device)
>> have a screen width of 320, SDL dies a quick death after trying to set
>> the frame buffer to an unsupported mode. In gdb, breaking on
>> qemu_console_resize and setting width=320 is enough to make qemu boot.
>> I have been unable to direct keyboard input at the emulated system,
>> but that is a battle for another day.
>>
>> Unlike in graphics_console_init, It does not seem that width is
>> hardcoded to 640. One would think it would be easy enough to find out
>> where qemu_console_resize is getting called from, but all gdb will
>> give me as a backtrace is the following:
>>
>> #0  qemu_console_resize (ds=0x88e008, width=640, height=480) at
>> console.c:1424
>> #1  0x00147cec in __stl_mmu (addr=3363889180, val=6185, mmu_idx=0)
>>    at ../softmmu_template.h:214
>> #2  0x01303708 in ?? ()
>>
>> Using grep and some well placed printf()s, I've narrowed down my
>> search to pl110_resize in pl110.c. which is called from pl110_write().
>> The PL110 is a color LCD controller.  This seems to agree with the
>> info I can get from gdb. Frame 1 points to this at line 214 of
>> softmmu_template.h:
>>
>> io_mem_write[index][SHIFT](io_mem_opaque[index], physaddr, val);
>>
>> in a function called glue().
>>
>> I believe the function pointer to pl110_resize is stored in
>> io_mem_write with the call cpu_register_io_memory() from pl110_init().
>>
>> What this all looks like is a call to mmapped IO to manipulate the
>> screen. If you look at the call to pl110_write, val is used to set the
>> width and height (but not at the same time) for pl110_resize. val is
>> of course passed into glue() in soft_mmu.h and I cannot find out where
>> glue is being called from. glue() is also an inline function, which
>> might affect gdb in ways I don't fully know about. If any of you guys
>> have a deeper understanding of either qemu or gdb than I do, perhaps
>> you can point me in the right direction.
>>
>> Best,
>> -David
>>
>> _______________________________________________
>> Android-virt mailing list
>> Android-virt at lists.cs.columbia.edu
>> https://lists.cs.columbia.edu/cucslists/listinfo/android-virt
>>
>
> _______________________________________________
> Android-virt mailing list
> Android-virt at lists.cs.columbia.edu
> https://lists.cs.columbia.edu/cucslists/listinfo/android-virt
>
>





[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux