qemu-arm
[Top][All Lists]
Advanced

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

Re: [Qemu-arm] [PATCH v5 2/2] hw/arm: add Arm SBSA reference machine, de


From: Hongbo Zhang
Subject: Re: [Qemu-arm] [PATCH v5 2/2] hw/arm: add Arm SBSA reference machine, devices part
Date: Mon, 28 Jan 2019 17:46:14 +0800

On Tue, 22 Jan 2019 at 19:49, Peter Maydell <address@hidden> wrote:
>
> On Fri, 7 Dec 2018 at 09:08, Hongbo Zhang <address@hidden> wrote:
> >
> > Following the previous patch, this patch adds peripheral devices to the
> > newly introduced SBSA-ref machine.
> >
> > Signed-off-by: Hongbo Zhang <address@hidden>
> > ---
> >  hw/arm/sbsa-ref.c | 421 
> > ++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 421 insertions(+)
>
> Most of this code looks good, thanks.
>

Thanks.
By the way, this patch https://patchwork.kernel.org/patch/10744759/
has been merged, now we have a generic EHCI controller, I will add
this in my next iteration.

> > +
> > +static void sbsa_ref_machine_done(Notifier *notifier, void *data)
> > +{
> > +    VirtMachineState *vms = container_of(notifier, VirtMachineState,
> > +                                         machine_done);
> > +    ARMCPU *cpu = ARM_CPU(first_cpu);
> > +    struct arm_boot_info *info = &vms->bootinfo;
> > +    AddressSpace *as = arm_boot_address_space(cpu, info);
> > +
> > +    if (arm_load_dtb(info->dtb_start, info, info->dtb_limit, as) < 0) {
> > +        exit(1);
> > +    }
> > +}
>
> I still don't understand why we need this -- it doesn't seem
> to be doing anything different from the default behaviour that
> boot.c implements if skip_dtb_autoload is false.
>

According to the process of arm_load_kernel() in boot.c, If only
kernel loaded via -kernel but without any firmware, it works fine.
While in this case, we have have firmware loaded but no kernel (eg
firmware loads kernel from storage, firmware never come back to qemu
again), so the arm_load_kernel() returns in the middle before calling
arm_load_dtb(),  because arm_load_dtb() is the final step in
arm_load_kernel(), so there is no chance for the arm_load_dtb() to be
called, then we get error message and qemu quits.

> thanks
> -- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]