AW: emmc-driver imx8mp

2025-01-12 Thread Alvaro Gallardo

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

2025-01-05 Thread Adam Lackorzynski
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

2024-12-18 Thread Alvaro Gallardo
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]