|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XenARM] Problems when booting on OMAP5432 devboard
On Jul 1, 2013, at 7:31 PM, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
> On Mon, 2013-07-01 at 19:18 +0800, Chen Baozi wrote:
>> On Jul 1, 2013, at 5:57 PM, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
>>
>>> On Mon, 2013-07-01 at 17:49 +0800, Chen Baozi wrote:
>>>> On Jul 1, 2013, at 5:30 PM, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
>>>>
>>>>> On Mon, 2013-07-01 at 17:19 +0800, Chen Baozi wrote:
>>>>>> On Jul 1, 2013, at 4:50 PM, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
>>>>>>
>>>>>>> On Mon, 2013-07-01 at 11:54 +0800, Chen Baozi wrote:
>>>>>>>> On Thu, Jun 27, 2013 at 01:10:01PM +0100, Ian Campbell wrote:
>>>>>>>>> On Thu, 2013-06-27 at 19:55 +0800, Chen Baozi wrote:
>>>>>>>>>> Hi Ian,
>>>>>>>>>>
>>>>>>>>>> After enabling the UART, I have been tring to finish the rest of
>>>>>>>>>> booting.
>>>>>>>>>> However, the output information stops at "Placing Xen at XXXX-XXXX"
>>>>>>>>>> like
>>>>>>>>>> following:
>>>>>>>>>>
>>>>>>>>>> Starting kernel ...
>>>>>>>>>>
>>>>>>>>>> - UART enabled -
>>>>>>>>>> - CPU 00000000 booting -
>>>>>>>>>> - Machine ID 00000ec1 -
>>>>>>>>>> - Started in Hyp mode -
>>>>>>>>>> - Zero BSS -
>>>>>>>>>> - Setting up control registers -
>>>>>>>>>> - Turning on paging -
>>>>>>>>>> - Ready -
>>>>>>>>>> RAM: 0000000080000000 - 00000000ffffffff
>>>>>>>>>>
>>>>>>>>>> MODULE[1]: 00000000a0000000 - 00000000a0400000
>>>>>>>>>> Placing Xen at 0x00000000ffe00000-0x0000000100000000
>>>>>>>>>>
>>>>>>>>>> What could be the most possible problem of this case?
>>>>>>>>>
>>>>>>>>> This is a about the point where we would shift from early_printk to
>>>>>>>>> the
>>>>>>>>> proper console driver, so I expect you simply don't have the console
>>>>>>>>> setup.
>>>>>>>>>
>>>>>>>> Hi Ian,
>>>>>>>>
>>>>>>>> I guess that it might not all about console driver, because
>>>>>>>> early_printk
>>>>>>>> does not work properly just after we have updated "the copy of
>>>>>>>> boot_pgtable
>>>>>>>> to use the new paddrs" in setup_pagetables(). It seems that
>>>>>>>> FIXMAP_ADDR(FIXMAP_CONSOLE) has been destroyed after the updating
>>>>>>>> without
>>>>>>>> being restored.
>>>>>>>
>>>>>>> Hrm, I think the expectation is that the fixmap will be copied as part
>>>>>>> of that and doesn't need (or receive) any additional fixups (see around
>>>>>>> "Link in the fixmap pagetable"), but it is worth checking for sure.
>>>>>>>
>>>>>>> You could probably profitably sprinkle some more early_print around the
>>>>>>> place during that sequence for debugging purposes.
>>>>>> That's exactly what I did just now. And it is interesting that
>>>>>> early_printk doesn't work just after the updated boot_pgtable (p =
>>>>>> (void *) boot_pgtable + dest_va - (unsigned long) _start;) has been
>>>>>> accessed (e.g. access to p[i].pt.base).
>>>>>
>>>>> How odd, that set of tables isn't even used until the call to WRITE_TTBR
>>>>> several lines below! I'm pretty certain it isn't updating anything which
>>>>> is live.
>>>> Yes. And I found it happened even if reading the p[i].pt.base. I have
>>>> tried to print the p[i].pt.base before updating its content. Then,
>>>> all the early_printk would fail after it.
>>>
>>> That's just weird. Any chance that reading/writing p[i]...base is
>>> actually causing a fault of some description such that the following
>>> prints never even get run?
>> Yes.
>
> Random stab in the dark: are you loading the Xen binary at a 2MB aligned
> address?
>
>> But it is OK if we don't access the its copy in "early boot misc" area. for
>> example:
>>
>> 01 memcpy((void *) dest_va, _start, _end - _start);
>> 02
>> 03 p = (void *) boot_pgtable;
>> 04 early_printk("p[%d].pt.base: 0x%lx\n", 0, (unsigned long)p[0].pt.base);
>> 05
>> 06 p = (void *) boot_pgtable + dest_va - (unsigned long)_start;
>> 07 early_printk("hello 1?\n");
>> 08 early_printk("p: 0x%lx\n", (unsigned long)p);
>> 09 early_printk("hello 2?\n");
>> 10 early_printk("p[%d].pt.base: 0x%lx\n", 0, (unsigned long)p[0].pt.base);
>> 11 early_printk("hello 3?\n");
>>
>> Output:
>>
>> p[0].pt.base: 0x802cc
>> hello 1?
>> p: 0x6d2000
>> hello 2?
>
> So it is more than likely faulting on the access at 10. I don't suppose
> you have a hardware debugger?
>
> You device has 2GB RAM, what happens if you hack the DTS to say it only
> has 1GB?
Bingo! Compared to Arndale board, OMAP5432 uEVM's RAM is not yet
0x40000000~0xbfffffff, but 0x80000000~0xffffffff. After make the following
change to DTS:
memory {
device_type = "memory"
- reg = <0x80000000 0x80000000>; /* 2 GB */
+ reg = <0x80000000 0x40000000>; /* 1 GB */
};
I can reach the output "Xen heap: 131072 pages Dom heap: 131072 pages".
Cheers,
Baozi.
>
> Ian.
>
_______________________________________________
Xen-arm mailing list
Xen-arm@xxxxxxxxxxxxx
http://lists.xen.org/cgi-bin/mailman/listinfo/xen-arm
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |