Hi Andre, The attachment is the rpmsg_release_tx_buffer patch file.
And thanks for sharing the solution to the rpmsgfs bug in linux 6.6, this is very helpful for us. Kind regards, Wang Bowen ---- Replied Message ---- From Andre Heinemans<andre.heinem...@nxp.com><mailto:undefined> Date 11/8/2024 21:30 To 汪博文<wangbow...@xiaomi.com>, <mailto:wangbow...@xiaomi.com>dev@nuttx.apache.org<dev@nuttx.apache.org><mailto:dev@nuttx.apache.org> Subject [External Mail]RE: [EXT] Re: RPMsg FS on NuttX and Linux [外部邮件] 此邮件来源于小米公司外部,请谨慎处理。若对邮件安全性存疑,请将邮件转发给mi...@xiaomi.com进行反馈 Hi Wang Bowen, Thanks for sending me the updated files. I think I found the problem with the move/rename. When porting to 6.6.23 I had to adapt the assignment of 'struct renamedata rd' since the struct got changed in commit abf0857. Previously I only updated 'rd.old_mnt_userns = &init_user_ns;' to 'rd.old_mnt_idmap = &nop_mnt_idmap;'. The error disappeared when I added 'rd.new_mnt_idmap = &nop_mnt_idmap;' as well. See below our rpmsgfs_rename_handler. Do you also have the file that contain the rpmsg_release_tx_buffer() function? It could not be resolved. I guess rpmsg_core.c. Kind regards, Andre Heinemans static int rpmsgfs_rename_handler(struct rpmsg_device *rpdev, void *data, int len, void *priv, u32 src) { struct rpmsgfs_rename *msg = data; #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0) struct renamedata rd; #endif struct path oldpath, newpath; struct dentry *newdentry; char *oldname, *newname; int ret, oldlen; oldname = msg->pathname; oldlen = (strlen(msg->pathname) + 1 + 0x7) & ~0x7; newname = msg->pathname + oldlen; ret = kern_path(oldname, 0, &oldpath); if (ret < 0) goto fail; if (!oldpath.dentry || !oldpath.dentry->d_parent) { ret = -ENOENT; goto fail1; } newdentry = kern_path_locked(newname, &newpath); if (IS_ERR(newdentry)) { ret = PTR_ERR(newdentry); goto fail1; } #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0) #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0) rd.old_mnt_idmap = &nop_mnt_idmap; rd.new_mnt_idmap = &nop_mnt_idmap; #else rd.old_mnt_userns = &init_user_ns; #endif rd.old_dir = oldpath.dentry->d_parent->d_inode; rd.old_dentry = oldpath.dentry; rd.new_dir = d_inode(newpath.dentry); rd.new_dentry = newdentry; rd.delegated_inode = NULL; rd.flags = 0; ret = vfs_rename(&rd); #else ret = vfs_rename(oldpath.dentry->d_parent->d_inode, oldpath.dentry, d_inode(newpath.dentry), newdentry, NULL, 0); #endif dput(newdentry); inode_unlock(d_inode(newpath.dentry)); path_put(&newpath); fail1: path_put(&oldpath); fail: msg->header.result = ret; return rpmsg_send(rpdev->ept, msg, sizeof(*msg)); } -----Original Message----- From: 汪博文 <wangbow...@xiaomi.com> Sent: Friday, 8 November 2024 10:11 To: dev@nuttx.apache.org; Andre Heinemans <andre.heinem...@nxp.com> Subject: Re: [External Mail]RE: [EXT] Re: RPMsg FS on NuttX and Linux Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button Hi Andre, Sorry for late reply. About your questions: 1. Your small fixes in Linux Rpmsg FS is right or not? Yes, your fix is right and we will update our internal version. 2. Any updates in our internal rpmsgfs and rpmsgtty? Actually, only some minor updates: - We changed the rpmsg_fs and rpmsg_tty to kernel modules, and I have attached the new rpmsg_fs.c and rpmsg_tty.c in this email, you can check them; - We also add some kernel version checks in rpmsg_fs and rpmsg_tty to make them can work with both kernel v5.10 and v5.15 And no other updates in rpmsg_fs and rpmsg_tty But we are planing to implement the rpmsg_fs client in linux (linux mount nuttx file system) and also port these rpmsg services to the linux kernel v6.6. 3. The panic in linux caused by move or rename operation We haven't encountered this problem before, but we can try this case in v6.6 when we porting rpmsg services to the new kernel version. Kind regards, Wang Bowen ---- Replied Message ---- From Andre Heinemans<andre.heinem...@nxp.com> <mailto:undefined> Date 11/8/2024 00:33 To dev@nuttx.apache.org<dev@nuttx.apache.org>, <mailto:dev@nuttx.apache.org> Xiang Xiao<xiaoxiang781...@gmail.com>, <mailto:xiaoxiang781...@gmail.com> Bowen Wang<bowenwa...@gmail.com> <mailto:bowenwa...@gmail.com> Subject [External Mail]RE: [EXT] Re: RPMsg FS on NuttX and Linux [外部邮件] 此邮件来源于小米公司外部,请谨慎处理。若对邮件安全性存疑,请将 邮件转发给mi...@xiaomi.com进行反馈 Hi Wang Bowen, Xiang Xiao, When I want to move a file through rpmsgfs from within nuttx on a filesystem hosted on linux, then I get this linux kernel oops below. I used the rpmsgfs linux implementation provided on this mail thread but ported it to 6.6.23. It looks like every move or rename gives the error. Do you know what could cause the problem? Are there maybe any updates of the linux rpmsgfs driver which I could try? Kind regards, Andre [ 121.160624] Unable to handle kernel paging request at virtual address ffff8003848c38dc [ 121.168612] Mem abort info: [ 121.171464] ESR = 0x0000000096000005 [ 121.175216] EC = 0x25: DABT (current EL), IL = 32 bits [ 121.180568] SET = 0, FnV = 0 [ 121.183660] EA = 0, S1PTW = 0 [ 121.186801] FSC = 0x05: level 1 translation fault [ 121.191709] Data abort info: [ 121.194592] ISV = 0, ISS = 0x00000005, ISS2 = 0x00000000 [ 121.200094] CM = 0, WnR = 0, TnD = 0, TagAccess = 0 [ 121.205172] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0 [ 121.210511] swapper pgtable: 4k pages, 48-bit VAs, pgdp=000000009216d000 [ 121.217236] [ffff8003848c38dc] pgd=100000047ffff003, p4d=100000047ffff003, pud=0000000000000000 [ 121.225975] Internal error: Oops: 0000000096000005 [#1] PREEMPT SMP [ 121.232241] Modules linked in: [ 121.235320] CPU: 0 PID: 8 Comm: kworker/0:0 Not tainted 6.6.23- g32082bae40f6 #55 [ 121.242735] Hardware name: NXP i.MX95 19X19 board (DT) [ 121.247885] Workqueue: imx95-cm7 imx_rproc_vq_work [ 121.252703] pstate: a0400009 (NzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 121.259678] pc : cmp_map_id+0x4/0x64 [ 121.263266] lr : bsearch+0x50/0xb8 [ 121.266698] sp : ffff8000825d39e0 [ 121.270026] x29: ffff8000825d39e0 x28: ffff0000812c7600 x27: ffff0000824f8900 [ 121.277176] x26: ffff8000825d3bd8 x25: ffff800080158ae0 x24: ffff8000825d3a5c [ 121.284326] x23: ffff800080fffe1c x22: 000000000000000c x21: 00000000404baf90 [ 121.291476] x20: ffff8003848c38dc x19: 0000000080975f1f x18: ffff800082e7be28 [ 121.298626] x17: 00000000672cba83 x16: 0000000000000fdc x15: 0000000000001000 [ 121.305793] x14: ffffffffffffffff x13: ffff00008086e029 x12: ffff8000825d3a74 [ 121.312943] x11: 000000075b7a4da2 x10: 0000000000000002 x9 : 0000000000000007 [ 121.320102] x8 : ffff00008874affc x7 : 000000000000000c x6 : 0000000000000001 [ 121.327243] x5 : 0000000000000001 x4 : 0000000000000001 x3 : 000000000000000c [ 121.334385] x2 : 0000000080975f20 x1 : ffff8003848c38dc x0 : ffff8000825d3a5c [ 121.341536] Call trace: [ 121.343997] cmp_map_id+0x4/0x64 [ 121.347238] map_id_up+0xe4/0xec [ 121.350479] from_kuid+0x10/0x1c [ 121.353712] from_vfsuid+0x48/0x7c [ 121.357135] vfs_rename+0x43c/0xa14 [ 121.360627] rpmsgfs_rename_handler+0xcc/0x148 [ 121.365091] rpmsgfs_callback+0x34/0x88 [ 121.368930] rpmsg_recv_done+0x114/0x368 [ 121.372874] vring_interrupt+0x74/0x110 [ 121.376721] rproc_vq_interrupt+0x3c/0x90 [ 121.380751] imx_rproc_notified_idr_cb+0x18/0x28 [ 121.385397] idr_for_each+0x68/0xf4 [ 121.388907] imx_rproc_vq_work+0x24/0x30 [ 121.392850] process_one_work+0x138/0x260 [ 121.396880] worker_thread+0x32c/0x438 [ 121.400633] kthread+0x118/0x11c [ 121.403883] ret_from_fork+0x10/0x20 [ 121.407506] Code: 12800000 17ffffdd 00000000 39400004 (29400823) [ 121.413609] ---[ end trace 0000000000000000 ]--- -----Original Message----- From: Andre Heinemans <andre.heinem...@nxp.com> Sent: Friday, 1 November 2024 12:14 To: dev@nuttx.apache.org Subject: RE: [EXT] Re: RPMsg FS on NuttX and Linux Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button Hi Wang Bowen, Xiang Xiao The RPMsg fs and tty works wonderful with the linux drivers I received from you. I was wondering if there are any updates on the linux drivers since the NuttX drivers do get updates quite often. It would be great if you could share these updates. On the rpmsg fs driver in linux I made a small fix on the file flags mapping in rpmsgfs_open_handler(). In NuttX the O_RDONLY symbol resolves to bit 0(value 1) but in linux it has the value 0. When you open a file in NuttX with O_RDWR then on linux it would result in opening the file as write-only. Below change fixed it. diff --git a/drivers/rpmsg/rpmsg_fs.c b/drivers/rpmsg/rpmsg_fs.c index 3cd35196f408..f354c6ac5ab4 100755 --- a/drivers/rpmsg/rpmsg_fs.c +++ b/drivers/rpmsg/rpmsg_fs.c @@ -283,12 +283,15 @@ static int rpmsgfs_open_handler(struct rpmsg_device *rpdev, struct rpmsgfs *priv = dev_get_drvdata(&rpdev->dev); struct rpmsgfs_open *msg = data; struct file *filp; - int id, flags = 0; + int id, flags = O_RDONLY; + + if (msg->flags & RPMSGFS_O_WRONLY) { + if (msg->flags & RPMSGFS_O_RDONLY) + flags = O_RDWR; + else + flags = O_WRONLY; + } - if (msg->flags & RPMSGFS_O_RDONLY) - flags |= O_RDONLY; - if (msg->flags & RPMSGFS_O_WRONLY) - flags |= O_WRONLY; if (msg->flags & RPMSGFS_O_CREAT) flags |= O_CREAT; if (msg->flags & RPMSGFS_O_EXCL) Kind regards, Andre -----Original Message----- From: Bowen Wang <bowenwa...@gmail.com> Sent: Thursday, 27 June 2024 11:26 To: dev@nuttx.apache.org Subject: Re: [EXT] Re: RPMsg FS on NuttX and Linux Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button Hi Andre, The attachment is the patch for rpmsgfs, we only implement the rpmsgfs server side in linux for now, rpmsgfs client side in linux is still under development. So we can access the Linux‘s file system in NuttX, but in Linux, we can't mount the Vela's file system. Kind regards, Wang Bowen Andre Heinemans <andre.heinem...@nxp.com <mailto:andre.heinem...@nxp.com> > 于2024年6月27日周四 17:12写道: Hi Bowen, I am using 6.6.3. But it would be okay for me if I receive the patches for version 5.15. I will try to adapt them. Thanks in advance! Kind regards, Andre -----Original Message----- From: Bowen Wang <bowenwa...@gmail.com <mailto:bowenwa...@gmail.com> > Sent: Thursday, 27 June 2024 03:46 To: dev@nuttx.apache.org <mailto:dev@nuttx.apache.org> Subject: [EXT] Re: RPMsg FS on NuttX and Linux Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button Hi, Andre Which Linux version are you using? We have adapted RPMSGFS on 5.4 and 5.15. We are not sure if it meets your requirements. Kind regards, Wang Bowen Xiang Xiao <xiaoxiang781...@gmail.com <mailto:xiaoxiang781...@gmail.com> > 于2024年6月25日周二 22:47写道: rpmsg_fs isn't upstreamed to the Linux community yet. Bowen could give you a patch to try. On Tue, Jun 25, 2024 at 8:44 PM Andre Heinemans <andre.heinem...@nxp.com <mailto:andre.heinem...@nxp.com> > wrote: Hi, I am searching for a solution to share a disk or directory on a Linux host and make it accessible in NuttX through RPMsg. It looks like CONFIG_FS_RPMSGFS is the feature I need. According to this NuttX channel video (https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F %2Fwww .youtube.com%2Fwatch%3Fv%3D- YLAQlJR1vA&data=05%7C02%7Candre.heinemans% 40nxp.com%7C6f0b6a9c5414411f9a6f08dcfa6682e9%7C686ea1d3 bc2b4c6fa92c d99 c5c301635%7C0%7C0%7C638660565421329758%7CUnknown%7 CTWFpbGZsb3 d8eyJWIjo iMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3 D%7C0%7C %7C% 7C&sdata=dQFQqYjk0nIFKGjDD%2FM54PHXW54rnZVWyYojrOGCV% 2BY%3D&res erved=0 <https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F %2Fwww%2F &data=05%7C02%7Candre.heinemans%40nxp.com%7C6f0b6a9c54 14411f9a6f08 dcfa6682e9%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0% 7C63866056 5421352725%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAw MDAiLCJQIjoiV 2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdat a=8GauYdm OMhqbLro1EWfPIBGftfYLE%2B79%2BDzvvfBqw7E%3D&reserved=0. youtube.com%2Fwatch%3Fv%3D- YLAQlJR1vA&data=05%7C02%7Candre.heinemans%40nxp.com%7C7 b20118b 5af34936356e08dc968b5405%7C686ea1d3bc2b4c6fa92cd99c5c30 1635%7C0% 7C0%7C638550772355433038%7CUnknown%7CTWFpbGZsb3d8ey JWIjoiMC4 wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7 C0%7C%7 C%7C&sdata=wNH%2FytC3N7YXDeP8Cff3UZ3JeMbwpFIqaNWeznee oJ0%3D& reserved=0> ) various RPMsg services in Nuttx are supported in Linux including RPMsg FS. So, I tried setting this up but couldn’t find the correct linux module that is able to interact with this service. When I try to mount a directory with nsh> mount -t rpmsgfs -o cpu=netcore,fs=/mnt /mnt Some interaction happens. See linux dmesg log: [ 61.086471] virtio_rpmsg_bus virtio0: creating channel rpmsgfs-0x2000c1c8 addr 0x401 But it seems no linux driver is listening to that channel. When I try to access the mounted directory in NuttX then nsh freezes. What do I need to do on Linux to support this service? Do I maybe need a patch or a different fork? Kind regards, Andre #/******本邮件及其附件含有小米公司的保密信息,仅限于发送给上面 地址中列出的个人或群组。禁止任何其他人以任何形式使用(包括但不 限于全部或部分地泄露、复制、或散发)本邮件中的信息。如果您错收 了本邮件,请您立即电话或邮件通知发件人并删除本邮件! This e-mail and its attachments contain confidential information from XIAOMI, which is intended only for the person or entity whose address is listed above. Any use of the information contained herein in any way (including, but not limited to, total or partial disclosure, reproduction, or dissemination) by persons other than the intended recipient(s) is prohibited. If you receive this e-mail in error, please notify the sender by phone or email immediately and delete it!******/# #/******本邮件及其附件含有小米公司的保密信息,仅限于发送给上面地址中列出的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、或散发)本邮件中的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本邮件! This e-mail and its attachments contain confidential information from XIAOMI, which is intended only for the person or entity whose address is listed above. Any use of the information contained herein in any way (including, but not limited to, total or partial disclosure, reproduction, or dissemination) by persons other than the intended recipient(s) is prohibited. If you receive this e-mail in error, please notify the sender by phone or email immediately and delete it!******/#
<<attachment: rpmsg_release_tx_buffer.diff.zip>>