This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to enable PCI & AHCI and mount a SATA disk on Armv-A Base RevC FVP?

Hi, I want to create an external SATA storage disk and mount it to the Armv-A RevC FVP version 11.20 (with Linaro OpenEmbedded file system).

I followed the instructions in the Run the Arm Platforms deliverables on an FVP, and leverage linaro's workspace (git.linaro.org/.../) to setup the Openembedded file system and linux. 

Now I want to mount an extra disk image to the system to serve as the storage.
I tried the following steps:

1. Create a disk of 10 GB: dd if=/dev/zero of=/path/to/1.satadisk bs=1G count=10

2. Add the path to the FVP launch options: "-C pci.ahci_pci.ahci.image_path=/path/to/1.satadisk"

However, after I started the FVP, it seems that this disk isn't mounted to the system. The output of lspci is empty, and the output of lsblk only shows two virtioblocks.

```

$ lsblk

vda

 | -vda2

 `-vda1

```


What steps did I miss? Thanks!

Parents
  • The issue has been resolved. It was caused by an incomplete dtsi file. After adding the PCI and SMMU sections to the dtsi file, the problem was fixed.

    pci: pci@40000000 {
    #address-cells = <0x3>;
    #size-cells = <0x2>;
    #interrupt-cells = <0x1>;
    compatible = "pci-host-ecam-generic";
    device_type = "pci";
    bus-range = <0x0 0x1>;
    reg = <0x0 0x40000000 0x0 0x10000000>;
    ranges = <0x2000000 0x0 0x50000000 0x0 0x50000000 0x0 0x10000000>;
    interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0x0 0x0 0xa8 0x4>,
    <0x0 0x0 0x0 0x2 &gic 0x0 0x0 0x0 0xa9 0x4>,
    <0x0 0x0 0x0 0x3 &gic 0x0 0x0 0x0 0xaa 0x4>,
    <0x0 0x0 0x0 0x4 &gic 0x0 0x0 0x0 0xab 0x4>;
    interrupt-map-mask = <0x0 0x0 0x0 0x7>;
    msi-parent = <&its>;
    msi-map = <0x0 &its 0x0 0x10000>;
    iommu-map = <0x0 &smmu 0x0 0x10000>;

    dma-coherent;
    ats-supported;
    };

    smmu: smmu@2b400000 {
    compatible = "arm,smmu-v3";
    reg = <0x0 0x2b400000 0x0 0x20000>;
    interrupts = <0 74 1>, <0 75 1>, <0 77 1>, <0 79 1>;
    interrupt-names = "eventq", "priq", "cmdq-sync", "gerror";
    dma-coherent;
    #iommu-cells = <1>;
    msi-parent = <&its 0x10000>;
    };
Reply
  • The issue has been resolved. It was caused by an incomplete dtsi file. After adding the PCI and SMMU sections to the dtsi file, the problem was fixed.

    pci: pci@40000000 {
    #address-cells = <0x3>;
    #size-cells = <0x2>;
    #interrupt-cells = <0x1>;
    compatible = "pci-host-ecam-generic";
    device_type = "pci";
    bus-range = <0x0 0x1>;
    reg = <0x0 0x40000000 0x0 0x10000000>;
    ranges = <0x2000000 0x0 0x50000000 0x0 0x50000000 0x0 0x10000000>;
    interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0x0 0x0 0xa8 0x4>,
    <0x0 0x0 0x0 0x2 &gic 0x0 0x0 0x0 0xa9 0x4>,
    <0x0 0x0 0x0 0x3 &gic 0x0 0x0 0x0 0xaa 0x4>,
    <0x0 0x0 0x0 0x4 &gic 0x0 0x0 0x0 0xab 0x4>;
    interrupt-map-mask = <0x0 0x0 0x0 0x7>;
    msi-parent = <&its>;
    msi-map = <0x0 &its 0x0 0x10000>;
    iommu-map = <0x0 &smmu 0x0 0x10000>;

    dma-coherent;
    ats-supported;
    };

    smmu: smmu@2b400000 {
    compatible = "arm,smmu-v3";
    reg = <0x0 0x2b400000 0x0 0x20000>;
    interrupts = <0 74 1>, <0 75 1>, <0 77 1>, <0 79 1>;
    interrupt-names = "eventq", "priq", "cmdq-sync", "gerror";
    dma-coherent;
    #iommu-cells = <1>;
    msi-parent = <&its 0x10000>;
    };
Children