2018-01-25 0:28 GMT+03:00 Alexander Graf <ag...@suse.de>:
>
>
> On 24.01.18 20:29, Matwey V. Kornilov wrote:
>> 2018-01-24 22:05 GMT+03:00 Alexander Graf <ag...@suse.de>:
>>>
>>>
>>> On 24.01.18 18:10, Matwey V. Kornilov wrote:
>>>> 2018-01-24 19:51 GMT+03:00 Alexander Graf <ag...@suse.de>:
>>>>>
>>>>>
>>>>> On 24.01.18 17:43, Matwey V. Kornilov wrote:
>>>>>> 2018-01-24 16:38 GMT+03:00 Alexander Graf <ag...@suse.de>:
>>>>>>>
>>>>>>>
>>>>>>> On 24.01.18 13:15, Matwey V. Kornilov wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> There is one more thing that is unclear to me now. As far as I
>>>>>>>> understand there is no other way except FDT to provide hardware layout
>>>>>>>> for armv7l kernel. Then, who is responsible for FDT loading? As far as
>>>>>>>> I understand it is grub2 task to load FDT from the table at
>>>>>>>> b1b621d5-f19c-41a5-.... And FDT is completely provided by UEFI
>>>>>>>> firmware. In case of u-boot, dtb file is loaded from the disk by means
>>>>>>>> of u-boot and placed into memory. What should happen here when OVMF is
>>>>>>>> used? In theory, it has to be configured to generate FDT from QEMU
>>>>>>>> config somehow, right? Or pass-through entire FDT from Qemu
>>>>>>>> hypervisor?
>>>>>>>
>>>>>>> It basically passes through the device tree that's generated by QEMU,
>>>>>>> yes. However, OVMF defaults changed a while back and it only exposes
>>>>>>> ACPI tables instead of DT in newer versions on AArch64 IIRC.
>>>>>>>
>>>>>>> Maybe something went wrong and they changed them for armv7 as well by
>>>>>>> accident?
>>>>>>>
>>>>>>
>>>>>> I use latest version of aarch32 OVMF firmware from openSUSE:Factory:ARM.
>>>>>> Well, then, I suppose, I have to see appropriate EFI driver
>>>>>> (FdtClientDxe ? ) in the driver list.
>>>>>
>>>>> I don't think the fact that the driver is loaded tells you anything.
>>>>>
>>>>> I assume you can't boot the VM properly? Does grub see the DT table?
>>>>> lsefi in grub should show you iirc.
>>>>>
>>>>> If it doesn't show it, but instead shows ACPI tables, can you try to
>>>>> pass -no-acpi to QEMU?
>>>>>
>>>>
>>>> There is nothing FDT-related at GRUB side. This is why I started to
>>>> search who is responsible for providing FDT.
>>>> -no-acpi also doesn't change anything.
>>>>
>>>> grub> lsefi
>>>
>>> Hm, that is the object list. Maybe it was lsefisystab?
>>>
>>
>> Ok, here FDT is present (b1b621d5-...). How can I dump it from grub console?
>> If I do it right, then It has correct magic header 0xd00dfeed.
>
> Looks all green to me then. I guess you actually get into the kernel
> then with a working device tree, but just don't see output?
>

Sure, I've managed to dump and decomile FDT. As far as I don't see any
output, something is wrong either with serial port or interrupt
controller?


/dts-v1/;

/ {
    interrupt-parent = <0x8001>;
    #size-cells = <0x2>;
    #address-cells = <0x2>;
    compatible = "linux,dummy-virt";

    platform@c000000 {
        interrupt-parent = <0x8001>;
        ranges = <0x0 0x0 0xc000000 0x2000000>;
        #address-cells = <0x1>;
        #size-cells = <0x1>;
        compatible = "qemu,platform", "simple-bus";
    };

    fw-cfg@9020000 {
        dma-coherent;
        reg = <0x0 0x9020000 0x0 0x18>;
        compatible = "qemu,fw-cfg-mmio";
    };

    virtio_mmio@a000000 {
        dma-coherent;
        interrupts = <0x0 0x10 0x1>;
        reg = <0x0 0xa000000 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a000200 {
        dma-coherent;
        interrupts = <0x0 0x11 0x1>;
        reg = <0x0 0xa000200 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a000400 {
        dma-coherent;
        interrupts = <0x0 0x12 0x1>;
        reg = <0x0 0xa000400 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a000600 {
        dma-coherent;
        interrupts = <0x0 0x13 0x1>;
        reg = <0x0 0xa000600 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a000800 {
        dma-coherent;
        interrupts = <0x0 0x14 0x1>;
        reg = <0x0 0xa000800 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a000a00 {
        dma-coherent;
        interrupts = <0x0 0x15 0x1>;
        reg = <0x0 0xa000a00 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a000c00 {
        dma-coherent;
        interrupts = <0x0 0x16 0x1>;
        reg = <0x0 0xa000c00 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a000e00 {
        dma-coherent;
        interrupts = <0x0 0x17 0x1>;
        reg = <0x0 0xa000e00 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a001000 {
        dma-coherent;
        interrupts = <0x0 0x18 0x1>;
        reg = <0x0 0xa001000 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a001200 {
        dma-coherent;
        interrupts = <0x0 0x19 0x1>;
        reg = <0x0 0xa001200 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a001400 {
        dma-coherent;
        interrupts = <0x0 0x1a 0x1>;
        reg = <0x0 0xa001400 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a001600 {
        dma-coherent;
        interrupts = <0x0 0x1b 0x1>;
        reg = <0x0 0xa001600 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a001800 {
        dma-coherent;
        interrupts = <0x0 0x1c 0x1>;
        reg = <0x0 0xa001800 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a001a00 {
        dma-coherent;
        interrupts = <0x0 0x1d 0x1>;
        reg = <0x0 0xa001a00 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a001c00 {
        dma-coherent;
        interrupts = <0x0 0x1e 0x1>;
        reg = <0x0 0xa001c00 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a001e00 {
        dma-coherent;
        interrupts = <0x0 0x1f 0x1>;
        reg = <0x0 0xa001e00 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a002000 {
        dma-coherent;
        interrupts = <0x0 0x20 0x1>;
        reg = <0x0 0xa002000 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a002200 {
        dma-coherent;
        interrupts = <0x0 0x21 0x1>;
        reg = <0x0 0xa002200 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a002400 {
        dma-coherent;
        interrupts = <0x0 0x22 0x1>;
        reg = <0x0 0xa002400 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a002600 {
        dma-coherent;
        interrupts = <0x0 0x23 0x1>;
        reg = <0x0 0xa002600 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a002800 {
        dma-coherent;
        interrupts = <0x0 0x24 0x1>;
        reg = <0x0 0xa002800 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a002a00 {
        dma-coherent;
        interrupts = <0x0 0x25 0x1>;
        reg = <0x0 0xa002a00 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a002c00 {
        dma-coherent;
        interrupts = <0x0 0x26 0x1>;
        reg = <0x0 0xa002c00 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a002e00 {
        dma-coherent;
        interrupts = <0x0 0x27 0x1>;
        reg = <0x0 0xa002e00 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a003000 {
        dma-coherent;
        interrupts = <0x0 0x28 0x1>;
        reg = <0x0 0xa003000 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a003200 {
        dma-coherent;
        interrupts = <0x0 0x29 0x1>;
        reg = <0x0 0xa003200 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a003400 {
        dma-coherent;
        interrupts = <0x0 0x2a 0x1>;
        reg = <0x0 0xa003400 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a003600 {
        dma-coherent;
        interrupts = <0x0 0x2b 0x1>;
        reg = <0x0 0xa003600 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a003800 {
        dma-coherent;
        interrupts = <0x0 0x2c 0x1>;
        reg = <0x0 0xa003800 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a003a00 {
        dma-coherent;
        interrupts = <0x0 0x2d 0x1>;
        reg = <0x0 0xa003a00 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a003c00 {
        dma-coherent;
        interrupts = <0x0 0x2e 0x1>;
        reg = <0x0 0xa003c00 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    virtio_mmio@a003e00 {
        dma-coherent;
        interrupts = <0x0 0x2f 0x1>;
        reg = <0x0 0xa003e00 0x0 0x200>;
        compatible = "virtio,mmio";
    };

    gpio-keys {
        #address-cells = <0x1>;
        #size-cells = <0x0>;
        compatible = "gpio-keys";

        poweroff {
            gpios = <0x8003 0x3 0x0>;
            linux,code = <0x74>;
            label = "GPIO Key Poweroff";
        };
    };

    pl061@9030000 {
        phandle = <0x8003>;
        clock-names = "apb_pclk";
        clocks = <0x8000>;
        interrupts = <0x0 0x7 0x4>;
        gpio-controller;
        #gpio-cells = <0x2>;
        compatible = "arm,pl061", "arm,primecell";
        reg = <0x0 0x9030000 0x0 0x1000>;
    };

    pcie@10000000 {
        interrupt-map-mask = <0x1800 0x0 0x0 0x7>;
        interrupt-map = <0x0 0x0 0x0 0x1 0x8001 0x0 0x0 0x0 0x3 0x4
0x0 0x0 0x0 0x2 0x8001 0x0 0x0 0x0 0x4 0x4 0x0 0x0 0x0 0x3 0x8001 0x0
0x0 0x0 0x5 0x4 0x0 0x0 0x0 0x4 0x8001 0x0 0x0 0x0 0x6 0x4 0x800 0x0
0x0 0x1 0x8001 0x0 0x0 0x0 0x4 0x4 0x800 0x0 0x0 0x2 0x8001 0x0 0x0
0x0 0x5 0x4 0x800 0x0 0x0 0x3 0x8001 0x0 0x0 0x0 0x6 0x4 0x800 0x0 0x0
0x4 0x8001 0x0 0x0 0x0 0x3 0x4 0x1000 0x0 0x0 0x1 0x8001 0x0 0x0 0x0
0x5 0x4 0x1000 0x0 0x0 0x2 0x8001 0x0 0x0 0x0 0x6 0x4 0x1000 0x0 0x0
0x3 0x8001 0x0 0x0 0x0 0x3 0x4 0x1000 0x0 0x0 0x4 0x8001 0x0 0x0 0x0
0x4 0x4 0x1800 0x0 0x0 0x1 0x8001 0x0 0x0 0x0 0x6 0x4 0x1800 0x0 0x0
0x2 0x8001 0x0 0x0 0x0 0x3 0x4 0x1800 0x0 0x0 0x3 0x8001 0x0 0x0 0x0
0x4 0x4 0x1800 0x0 0x0 0x4 0x8001 0x0 0x0 0x0 0x5 0x4>;
        #interrupt-cells = <0x1>;
        ranges = <0x1000000 0x0 0x0 0x0 0x3eff0000 0x0 0x10000
0x2000000 0x0 0x10000000 0x0 0x10000000 0x0 0x2eff0000 0x3000000 0x80
0x0 0x80 0x0 0x80 0x0>;
        reg = <0x0 0x3f000000 0x0 0x1000000>;
        msi-parent = <0x8002>;
        dma-coherent;
        bus-range = <0x0 0xf>;
        #size-cells = <0x2>;
        #address-cells = <0x3>;
        device_type = "pci";
        compatible = "pci-host-ecam-generic";
    };

    pl031@9010000 {
        status = "disabled";
        clock-names = "apb_pclk";
        clocks = <0x8000>;
        interrupts = <0x0 0x2 0x4>;
        reg = <0x0 0x9010000 0x0 0x1000>;
        compatible = "arm,pl031", "arm,primecell";
    };

    pl011@9000000 {
        clock-names = "uartclk", "apb_pclk";
        clocks = <0x8000 0x8000>;
        interrupts = <0x0 0x1 0x4>;
        reg = <0x0 0x9000000 0x0 0x1000>;
        compatible = "arm,pl011", "arm,primecell";
    };

    intc {
        phandle = <0x8001>;
        reg = <0x0 0x8000000 0x0 0x10000 0x0 0x8010000 0x0 0x10000>;
        compatible = "arm,cortex-a15-gic";
        ranges;
        #size-cells = <0x2>;
        #address-cells = <0x2>;
        interrupt-controller;
        #interrupt-cells = <0x3>;

        v2m {
            phandle = <0x8002>;
            reg = <0x0 0x8020000 0x0 0x1000>;
            msi-controller;
            compatible = "arm,gic-v2m-frame";
        };
    };

    flash@0 {
        bank-width = <0x4>;
        reg = <0x0 0x0 0x0 0x4000000 0x0 0x4000000 0x0 0x4000000>;
        compatible = "cfi-flash";
    };

    psci {
        migrate = <0x84000005>;
        cpu_on = <0x84000003>;
        cpu_off = <0x84000002>;
        cpu_suspend = <0x84000001>;
        method = "hvc";
        compatible = "arm,psci-0.2", "arm,psci";
    };

    cpus {
        #size-cells = <0x0>;
        #address-cells = <0x1>;

        cpu@0 {
            reg = <0x0>;
            compatible = "arm,cortex-a15";
            device_type = "cpu";
        };
    };

    timer {
        interrupts = <0x1 0xd 0x104 0x1 0xe 0x104 0x1 0xb 0x104 0x1 0xa 0x104>;
        always-on;
        compatible = "arm,armv7-timer";
    };

    apb-pclk {
        phandle = <0x8000>;
        clock-output-names = "clk24mhz";
        clock-frequency = <0x16e3600>;
        #clock-cells = <0x0>;
        compatible = "fixed-clock";
    };

    memory {
        reg = <0x0 0x40000000 0x0 0x40000000>;
        device_type = "memory";
    };

    chosen {
        stdout-path = "/pl011@9000000";
    };
};



>
> Alex



-- 
With best regards,
Matwey V. Kornilov
-- 
To unsubscribe, e-mail: opensuse-arm+unsubscr...@opensuse.org
To contact the owner, e-mail: opensuse-arm+ow...@opensuse.org

Reply via email to