[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [V6, 2/7] nios2: Add architecture emulation support
From: |
Marek Vasut |
Subject: |
Re: [Qemu-devel] [V6, 2/7] nios2: Add architecture emulation support |
Date: |
Sun, 13 Nov 2016 23:58:03 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.4.0 |
On 11/13/2016 05:09 PM, Guenter Roeck wrote:
> Hi Marek,
>
> On 11/13/2016 04:01 AM, Marek Vasut wrote:
>>>
>>> diff --git a/hw/nios2/boot.c b/hw/nios2/boot.c
>>> index 564dbae..e0a9aff 100644
>>> --- a/hw/nios2/boot.c
>>> +++ b/hw/nios2/boot.c
>>> @@ -73,6 +73,11 @@ static void main_cpu_reset(void *opaque)
>>> }
>>> }
>>>
>>> +static uint64_t translate_kernel_address(void *opaque, uint64_t addr)
>>> +{
>>> + return addr - 0xc0000000LL;
>>> +}
>>> +
>>> static int nios2_load_dtb(struct nios2_boot_info bi, const uint32_t
>>> ramsize,
>>> const char *kernel_cmdline, const char
>>> *dtb_filename)
>>> {
>>> @@ -97,21 +102,16 @@ static int nios2_load_dtb(struct nios2_boot_info
>>> bi, const uint32_t ramsize,
>>>
>>> if (bi.initrd_start) {
>>> qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-start",
>>> - bi.initrd_start);
>>> + translate_kernel_address(NULL,
>>> bi.initrd_start));
>>>
>>> qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-end",
>>> - bi.initrd_end);
>>> + translate_kernel_address(NULL,
>>> bi.initrd_end));
>>> }
>>>
>>> cpu_physical_memory_write(bi.fdt, fdt, fdt_size);
>>> return fdt_size;
>>> }
>>>
>>> -static uint64_t translate_kernel_address(void *opaque, uint64_t addr)
>>> -{
>>> - return addr - 0xc0000000LL;
>>> -}
>>> -
>>> void nios2_load_kernel(Nios2CPU *cpu, hwaddr ddr_base,
>>>
>>>
>>> This is my command line, running your patch series plus the above fixup
>>> on top of
>>> the qemu master branch:
>>
>> Uhm, how could that patch fix the DT passing for you ? I am still
>> looking into the DT passing, that's quite odd.
>>
>
> The problem isn't that much that dtb passing fails without the above fix,
> the problem is that memory initialization fails if wrong addresses are
> passed in the initrd properties (probably because the kernel tries to
> access or free memory that does not exist). This results in a kernel hang
> (endless loop) in memory initialization code.
I was looking through that initcode today and through the Nios2 DTS, it
looks like quite an inconsistent mess of User and Kernel addresses used
there.
--
Best regards,
Marek Vasut
- Re: [Qemu-devel] [V6, 2/7] nios2: Add architecture emulation support, (continued)
- Re: [Qemu-devel] [V6, 2/7] nios2: Add architecture emulation support, Guenter Roeck, 2016/11/07
- Re: [Qemu-devel] [V6, 2/7] nios2: Add architecture emulation support, Marek Vasut, 2016/11/12
- Re: [Qemu-devel] [V6, 2/7] nios2: Add architecture emulation support, Guenter Roeck, 2016/11/12
- Re: [Qemu-devel] [V6, 2/7] nios2: Add architecture emulation support, Marek Vasut, 2016/11/13
- Re: [Qemu-devel] [V6, 2/7] nios2: Add architecture emulation support, Marek Vasut, 2016/11/13
- Re: [Qemu-devel] [V6, 2/7] nios2: Add architecture emulation support, Guenter Roeck, 2016/11/13
- Re: [Qemu-devel] [V6, 2/7] nios2: Add architecture emulation support, Marek Vasut, 2016/11/13
- Re: [Qemu-devel] [V6, 2/7] nios2: Add architecture emulation support, Guenter Roeck, 2016/11/13
- Re: [Qemu-devel] [V6, 2/7] nios2: Add architecture emulation support,
Marek Vasut <=