AW: emmc-driver imx8mp
Achtung! Externe E-Mail: Klicken Sie erst dann auf Links und Anhänge, nachdem
Sie die Vertrauenswürdigkeit der Absenderadresse geprüft haben.
Hi Adam,
Thanks for the information and support.
Effectively, the emmc-driver is working without including any other device in
the vbus, and it prints the GPT partition as well.
I was missing to add the dma configuration in the io script of the mmc with:
Property.flags = Io.Hw_device_DF_dma_supported;
Additionally, I increased the bounce buffer data space from the ned script
example to 1MB as:
local bbds = ft:create(L4.Proto.Dataspace, 128 << 13, mem_flags, 21):m("rws")
Kind regards,
Alvaro
Von: Adam Lackorzynski
Gesendet: Sonntag, 5. Januar 2025 12:44:19
An: Alvaro Gallardo; [email protected]
Betreff: Re: emmc-driver imx8mp
Achtung! Externe E-Mail: Klicken Sie erst dann auf Links und Anhaenge, nachdem
Sie die Vertrauenswuerdigkeit der Absenderadresse geprueft haben.
Hi Alvaro,
Some things to check out:
- assuming u-boot initialized the emmc (you are using it in u-boot) all
the needed peripherals should be set up at this point
- the emmc-driver itself prints out partition infos, so if there is a
GPT partition on the emmc it should be displayed, i.e., then it is
working. This happens prior to VMs starting.
Adam
On Tue Dec 17, 2024 at 03:21:50 +, Alvaro Gallardo wrote:
> Dear L4Re experts,
>
>
> I hope you are doing well and enjoying this time of the year.
>
>
> I would like to ask for your help or insights on how to use the emmc-driver
> in an imx8mp based board.
>
>
> In this platform, the usdhc nodes are located out of the pci bus, and they
> require an i2c device to work, as well as gpio and clocks.
>
>
> I am able to start the emmc server, which identifies one usdhc device and
> starts the server loop. I pass a virtual bus to the emmc driver with all
> required devices, as they usually work in the Virtual Machine to access the
> mmc. The driver scans all of them, finding the usdhc node.
>
>
> But, everything stops when I create a client, either using a dynamic way
> with: create(0, "device=...","ds-max=5); or declaring the client in the
> argument as: "emmc-drv -v --client cl1 --device=... --ds-max=5". For the
> second way, it stops when the Virtual Machine starts to configure the related
> virtio device (I am using a virtio_net node).
>
>
>
> I will be grateful if you can give me some information about the issue or
> some of the following questions:
>
>
> 1. how should the node in the device tree of the Virtual Machine be
> configured to work with the emmc client?
>
>
> 2. is it possible that the board's specific hardware configuration
> required for the mmc is stopping the emmc client to work?
>
>
> 3. Is there any way to test the driver before linking it to a virtual
> machine? I found an example with the "virtio-block-chksum-sync" module, but I
> could not find this module.
>
>
> I attach the configuration files, the output text and the base device tree
> structure. Thank you in advance for your attention.
>
>
> Kind regards,
>
>
> Alvaro Gallardo
>
> ___
> l4-hackers mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
___
l4-hackers mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Re: emmc-driver imx8mp
Hi Alvaro, Some things to check out: - assuming u-boot initialized the emmc (you are using it in u-boot) all the needed peripherals should be set up at this point - the emmc-driver itself prints out partition infos, so if there is a GPT partition on the emmc it should be displayed, i.e., then it is working. This happens prior to VMs starting. Adam On Tue Dec 17, 2024 at 03:21:50 +, Alvaro Gallardo wrote: > Dear L4Re experts, > > > I hope you are doing well and enjoying this time of the year. > > > I would like to ask for your help or insights on how to use the emmc-driver > in an imx8mp based board. > > > In this platform, the usdhc nodes are located out of the pci bus, and they > require an i2c device to work, as well as gpio and clocks. > > > I am able to start the emmc server, which identifies one usdhc device and > starts the server loop. I pass a virtual bus to the emmc driver with all > required devices, as they usually work in the Virtual Machine to access the > mmc. The driver scans all of them, finding the usdhc node. > > > But, everything stops when I create a client, either using a dynamic way > with: create(0, "device=...","ds-max=5); or declaring the client in the > argument as: "emmc-drv -v --client cl1 --device=... --ds-max=5". For the > second way, it stops when the Virtual Machine starts to configure the related > virtio device (I am using a virtio_net node). > > > > I will be grateful if you can give me some information about the issue or > some of the following questions: > > > 1. how should the node in the device tree of the Virtual Machine be > configured to work with the emmc client? > > > 2. is it possible that the board's specific hardware configuration > required for the mmc is stopping the emmc client to work? > > > 3. Is there any way to test the driver before linking it to a virtual > machine? I found an example with the "virtio-block-chksum-sync" module, but I > could not find this module. > > > I attach the configuration files, the output text and the base device tree > structure. Thank you in advance for your attention. > > > Kind regards, > > > Alvaro Gallardo > > ___ > l4-hackers mailing list -- [email protected] > To unsubscribe send an email to [email protected] ___ l4-hackers mailing list -- [email protected] To unsubscribe send an email to [email protected]
emmc-driver imx8mp
Dear L4Re experts, I hope you are doing well and enjoying this time of the year. I would like to ask for your help or insights on how to use the emmc-driver in an imx8mp based board. In this platform, the usdhc nodes are located out of the pci bus, and they require an i2c device to work, as well as gpio and clocks. I am able to start the emmc server, which identifies one usdhc device and starts the server loop. I pass a virtual bus to the emmc driver with all required devices, as they usually work in the Virtual Machine to access the mmc. The driver scans all of them, finding the usdhc node. But, everything stops when I create a client, either using a dynamic way with: create(0, "device=...","ds-max=5); or declaring the client in the argument as: "emmc-drv -v --client cl1 --device=... --ds-max=5". For the second way, it stops when the Virtual Machine starts to configure the related virtio device (I am using a virtio_net node). I will be grateful if you can give me some information about the issue or some of the following questions: 1. how should the node in the device tree of the Virtual Machine be configured to work with the emmc client? 2. is it possible that the board's specific hardware configuration required for the mmc is stopping the emmc client to work? 3. Is there any way to test the driver before linking it to a virtual machine? I found an example with the "virtio-block-chksum-sync" module, but I could not find this module. I attach the configuration files, the output text and the base device tree structure. Thank you in advance for your attention. Kind regards, Alvaro Gallardo --- OUTPUT - MOE: Hello world MOE: found 1911604 KByte free memory MOE: found RAM from 4020 to b860 MOE: allocated 1924 KByte for the page array @0x40205000 MOE: virtual user address space [0-ff] MOE: cmdline: moe rom/emmc-test.ned MOE: rom name space cap -> [C:103000] MOE: rwfs name space cap -> [C:105000] ROMFS: [4395d000-4395dc93] [C:107000] emmc-test.ned ROMFS: [4395e000-43a622a0] [C:109000] uvmm ROMFS: [43a63000-43a80a08] [C:10b000] l4re ROMFS: [43a81000-43b0d288] [C:10d000] ned ROMFS: [43b0e000-43b0f425] [C:10f000] vmm.lua ROMFS: [43b1-43d3aff0] [C:111000] io ROMFS: [43d3b000-43d3e762] [C:113000] io-karo-eth.io ROMFS: [43d3f000-43d3fc93] [C:115000] emmc-test.ned ROMFS: [43d4-43d40432] [C:116000] emmc.vbus ROMFS: [43d41000-43d4135b] [C:118000] vm_hw2.vbus ROMFS: [43d42000-4684e200] [C:11a000] Image ROMFS: [4684f000-46ef73e4] [C:11c000] alonerd.gz ROMFS: [46ef8000-46efe864] [C:11e000] virt.dtb ROMFS: [46eff000-46fd6600] [C:12] emmc-drv ROMFS: [46fd7000-4701f430] [C:122000] cons MOE: Starting: rom/ned rom/emmc-test.ned MOE: loading 'rom/ned' Ned says: Hi World! Ned: loading file: 'rom/emmc-test.ned' Console Server cons> Created vcon channel: io [420010] cons> Created vcon channel: emmc [421010] cons> io | Io service emmc| eMMC[main]: Emmc driver says hello. emmc| eMMC[main]: TSC frequency of 8MHz. io | Ready. Waiting for request. emmc| eMMC[main]: Starting device discovery. emmc| eMMC[main]: Scanning child 0x1 (L4ICU). emmc| eMMC[main]: Scanning child 0x2 (pinctrl_3033). emmc| eMMC[main]: Scanning child 0x3 (gpio_3023). emmc| eMMC[main]: Scanning child 0x4 (i2c1). emmc| eMMC[main]: Scanning child 0x5 (mmc1). emmc| eMMC[]: Using VBUS global DMA domain. emmc| eMMC[main]: Device @ 30b5: interrupt: 55, level-high-triggered. emmc| eMMC[main]: Assuming host clock of 200MHz. io | vbus emmc does not support a global DMA domain emmc| eMMC[main]: No such object found: Assignment of DMA domain.. Skipping. emmc| eMMC[main]: Scanning child 0x6 (gpio_3024). emmc| eMMC[main]: Scanning child 0x7 (TIMER). emmc| eMMC[main]: Scanning child 0x8 (gpio_3022). emmc| eMMC[main]: Scanning child 0x9 (gpio_3021). emmc| eMMC[main]: Scanning child 0xa (BUS_308). emmc| eMMC[main]: Scanning child 0xb (i2c4). emmc| eMMC[main]: Scanning child 0xc (i2c3). emmc| eMMC[main]: Scanning child 0xd (bus_3000). emmc| eMMC[main]: Scanning child 0xe (i2c2). emmc| eMMC[main]: Scanning child 0xf (bus_3040). emmc| eMMC[main]: Scanning child 0x10 (gpio_3020). emmc| eMMC[main]: Scanning child 0x11 (bus_32c0). emmc| eMMC[main]: Scanning child 0x12 (reset_controller_3039). emmc| eMMC[main]: All devices scanned. emmc| eMMC[main]: Entering server loop. hw-passmmc.dts Description: hw-passmmc.dts io-karo-eth.io Description: io-karo-eth.io emmc-test.ned Description: emmc-test.ned emmc.vbus Description: emmc.vbus ___ l4-hackers mailing list -- [email protected] To unsubscribe send an email to [email protected]
