[meta-xilinx] [PATCH] recipes-zynqmp: qemu: Change the UART reset values

Alistair Francis alistair.francis at xilinx.com
Wed Jun 15 09:45:58 PDT 2016


On Fri, Jun 10, 2016 at 4:02 AM, Nathan Rossi <nathan at nathanrossi.com> wrote:
> On Wed, Jun 8, 2016 at 10:59 AM, Alistair Francis
> <alistair.francis at xilinx.com> wrote:
>> Update the QEMU Cadence UART reset values to enable a direct Linux boot
>> without u-boot.
>
> Hi Alistair,
>
> Could you expand a bit on this, I don't see any issues where direct
> booting is broken with the cadence uart for zynq or zynqmp. I did
> notice however that the earlycon for the cadence uart driver (in the
> kernel) does not set txen, which is possibly the cause for the delayed
> console output.
>
> Also I do see that there is a regression for xlnx-ep108 with qemu
> 2.6.0 where bringing up the additional cpus causes a RAM/ROM exec
> error (see below). If i remove cpu at 1,2,3 from the dt it boots fine
> (ep108 kernel dt).
>
> qemu: fatal: Trying to execute code outside RAM or ROM at 0xffffffc000082000
>
> PC=ffffffc000082000  SP=0000000000000000
> X00=0000000034d5d91d X01=0000000000001122 X02=0000000000000000
> X03=0000000000000000
> X04=0000000000000000 X05=ffffffc000084000 X06=0000000034d5d91d
> X07=0000000000000000
> X08=0000000000000000 X09=0000000000000000 X10=00000032b5193519
> X11=0000000000000000
> X12=0000000000000000 X13=0000000000000000 X14=0000000000000000
> X15=0000000000000000
> X16=0000000000000000 X17=0000000000000000 X18=0000000000000000
> X19=0000000000000000
> X20=0000000000000e11 X21=ffffffc000ae8688 X22=0000000000000000
> X23=0000000000000000
> X24=0000000000000000 X25=0000000000b43000 X26=0000000000b46000
> X27=ffffffc000082000
> X28=0000000000000000 X29=0000000000000000 X30=0000000000081fec
> PSTATE=600003cd -ZC- EL3h
>
> ---
> ffffffc000082000 <__secondary_switched>:
> ffffffc000082000: f94002a0 ldr x0, [x21]
> ffffffc000082004: 9100001f mov sp, x0
> ffffffc000082008: d280001d mov x29, #0x0                   // #0
> ffffffc00008200c: 14002d0b b ffffffc00008d438 <secondary_start_kernel>

It looks like you don't have enough memory, I don't see the QEMU crash
if I include this in the command line arguments: -m 3G

It still hangs on 2.6.0 though.

Thanks,

Alistair

>
> Regards,
> Nathan
>
>>
>> Signed-off-by: Alistair Francis <alistair.francis at xilinx.com>
>> ---
>> In future versions of QEMU we can hopefully change the reset values from
>> the command line, but at the moment this is the best we can do.
>>
>>  .../d3d0ed0cc451232fd5037d41d8e73de469c83cf6.patch | 31 ++++++++++++++++++++++
>>  recipes-zynqmp/qemu/qemu_2.5%.bbappend             |  1 +
>>  2 files changed, 32 insertions(+)
>>  create mode 100644 recipes-zynqmp/qemu/files/d3d0ed0cc451232fd5037d41d8e73de469c83cf6.patch
>>
>> diff --git a/recipes-zynqmp/qemu/files/d3d0ed0cc451232fd5037d41d8e73de469c83cf6.patch b/recipes-zynqmp/qemu/files/d3d0ed0cc451232fd5037d41d8e73de469c83cf6.patch
>> new file mode 100644
>> index 0000000..930fcfc
>> --- /dev/null
>> +++ b/recipes-zynqmp/qemu/files/d3d0ed0cc451232fd5037d41d8e73de469c83cf6.patch
>> @@ -0,0 +1,31 @@
>> +From d3d0ed0cc451232fd5037d41d8e73de469c83cf6 Mon Sep 17 00:00:00 2001
>> +From: Alistair Francis <alistair.francis at xilinx.com>
>> +Date: Tue, 7 Jun 2016 17:14:27 -0700
>> +Subject: [PATCH] cadence_uart: Enable transmitter by default
>> +
>> +On hardware Linux relies on u-boot to enable the transmitter for the
>> +Cadence UART device. To allow direct Linux boots on QEMU change the
>> +default reset values to enable the transmitter by default.
>> +
>> +Signed-off-by: Alistair Francis <alistair.francis at xilinx.com>
>> +Upstream-Status: Not Applicable
>> +---
>> + hw/char/cadence_uart.c | 2 +-
>> + 1 file changed, 1 insertion(+), 1 deletion(-)
>> +
>> +diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c
>> +index 9d379e5..c72ceb7 100644
>> +--- a/hw/char/cadence_uart.c
>> ++++ b/hw/char/cadence_uart.c
>> +@@ -440,7 +440,7 @@ static void cadence_uart_reset(DeviceState *dev)
>> + {
>> +     CadenceUARTState *s = CADENCE_UART(dev);
>> +
>> +-    s->r[R_CR] = 0x00000128;
>> ++    s->r[R_CR] = 0x00000118;
>> +     s->r[R_IMR] = 0;
>> +     s->r[R_CISR] = 0;
>> +     s->r[R_RTRIG] = 0x00000020;
>> +--
>> +2.7.4
>> +
>> diff --git a/recipes-zynqmp/qemu/qemu_2.5%.bbappend b/recipes-zynqmp/qemu/qemu_2.5%.bbappend
>> index 6f7cb50..73ed23d 100644
>> --- a/recipes-zynqmp/qemu/qemu_2.5%.bbappend
>> +++ b/recipes-zynqmp/qemu/qemu_2.5%.bbappend
>> @@ -5,5 +5,6 @@ SRC_URI += " \
>>                 file://4054bfa9e7986c9b7d2bf70f9e10af9647e376fc.patch \
>>                 file://8a83ffc2dafad3499b87a736b17ab1b203fdb00b.patch \
>>                 file://978364f12adebb4b8d90fdeb71242cb3c1405740.patch \
>> +               file://d3d0ed0cc451232fd5037d41d8e73de469c83cf6.patch \
>>                 "
>>
>> --
>> 2.7.4
>>
>> --
>> _______________________________________________
>> meta-xilinx mailing list
>> meta-xilinx at yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/meta-xilinx
> --
> _______________________________________________
> meta-xilinx mailing list
> meta-xilinx at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/meta-xilinx



More information about the meta-xilinx mailing list