-
Notifications
You must be signed in to change notification settings - Fork 5.3k
[DM/PCI] Add /proc access in RT-Smart user #10196
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
1. Add ROM base info. 2. Save th PM status. Signed-off-by: GuEe-GUI <2991707448@qq.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces /proc filesystem support for PCI devices in RT-Smart, enabling runtime access to PCI configuration and ROM base information. Key changes include the addition of a new procfs interface in procfs.h/procfs.c, integration of procfs attach/detach calls in PCI probe and remove workflows, and updates to PCI device structures and ROM resource management.
Reviewed Changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| components/drivers/pci/procfs.h | New header defining procfs related functions for PCI devices. |
| components/drivers/pci/procfs.c | Implements read, write, and initialization for procfs access. |
| components/drivers/pci/probe.c | Integrates procfs attach/detach in device scan and removal. |
| components/drivers/pci/pme.c | Updates power management status upon configuration writes. |
| components/drivers/pci/pci.c | Sets ROM base, size, and flags on PCI device resource probing. |
| components/drivers/pci/SConscript | Conditional inclusion of procfs.c based on build dependency. |
| components/drivers/include/drivers/pci.h | Augments the PCI device structure with power management and ROM fields. |
| rt_pci_read_config_u8(pdev, pos, &val); | ||
| copy_to_user(buf, &val, sizeof(val)); | ||
|
|
||
| ++buf; |
Copilot
AI
Apr 18, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Incrementing a void pointer (buf) directly may cause portability issues with strict C standards. Consider casting buf to a char* before performing pointer arithmetic, for example: buf = (char*)buf + 1;
| ++buf; | |
| buf = (char*)buf + 1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is piece of garbage C standard imposes.
| copy_from_user(&val, buf, sizeof(val)); | ||
| rt_pci_write_config_u8(pdev, pos, val); | ||
|
|
||
| ++buf; |
Copilot
AI
Apr 18, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Incrementing a const void pointer (buf) directly for pointer arithmetic may lead to undefined behavior. Consider casting buf to a const char* before performing arithmetic, for example: buf = (const char*)buf + 1;
| ++buf; | |
| buf = (const char*)buf + 1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
garbage, too.
| @@ -0,0 +1,31 @@ | |||
| /* | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这个命名似乎不完全适合,可以命名成 pci_procfs.h/pci_procfs.c 以避免文件命名上的冲突
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
components/drivers/pci 目录属于 PCI 私有目录,不会导致导致其他模块混合使用,PCI 自己也是使用相对目录的方式导入。
如果改成 pci_procfs,会导致当前目录的命名风格就不统一。
拉取/合并请求描述:(PR description)
[
Build pciutils for testing:
The
ZLIBcan setyesor ignore if build in userapp]
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up