Skip to content

Conversation

fslongjin
Copy link
Member

  1. 添加对内核引导协议的抽象
  2. 将vesa framebuffer的映射方式,改为使用early_ioremap和mmio_pool
  3. 删除部分过时的C代码

@github-actions github-actions bot added the enhancement New feature or request label Sep 4, 2024
@fslongjin fslongjin force-pushed the patch-add-boot-callbacks branch from 2660e62 to 9fc08a1 Compare September 4, 2024 16:13
@dragonosbot dragonosbot added A-driver Area: 驱动程序 O-riscv64 Target: riscv64 O-x86_64 Target: x86_64 T-doc Relevant to the document team, which will review and decide on the PR/issue. labels Sep 4, 2024
@fslongjin fslongjin requested a review from val213 September 4, 2024 16:35
Copy link
Collaborator

@val213 val213 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

该pr分支下出现2个 error:
1.Failed to initialize network: ENODEV
image
2. riscv64_do_irq: do_trap_store_page_fault: epc: 0xffffffc0011a9c48, vaddr=0x10000, cause=Scause { bits: 15 }

image
错误信息显示在尝试进行页面存储时发生了异常,EPC(Exception Program Counter,异常程序计数器)指出了发生异常的指令地址,而 vaddr 给出了发生异常的虚拟地址。Scause 结构体包含了异常的原因,这里显示异常类型为 15,这通常指的是一个访问违反,即试图访问不属于它的内存区域的页面。

@fslongjin
Copy link
Member Author

1.Failed to initialize network: ENODEV

这个本身就是正常的,主线代码也会。因为qemu启动参数里面没往rv64的机器添加virtio-over-mmio的网卡设备。

  1. riscv64_do_irq: do_trap_store_page_fault: epc: 0xffffffc0011a9c48, vaddr=0x10000, cause=Scause { bits: 15 }

第二个报错这里,你编译的时候配置了env.mk里面的环境变量之后,有先修改vscode设置&& make clean && 重启rust-analyzer吗

@val213
Copy link
Collaborator

val213 commented Sep 5, 2024

1.Failed to initialize network: ENODEV

这个本身就是正常的,主线代码也会。因为qemu启动参数里面没往rv64的机器添加virtio-over-mmio的网卡设备。

  1. riscv64_do_irq: do_trap_store_page_fault: epc: 0xffffffc0011a9c48, vaddr=0x10000, cause=Scause { bits: 15 }

第二个报错这里,你编译的时候配置了env.mk里面的环境变量之后,有先修改vscode设置&& make clean && 重启rust-analyzer吗

是的,我重新试了几次,vscode setting && make clean && 重启rust-analyzer都做了,还是会有这个错误,不知道能复现吗

@fslongjin
Copy link
Member Author

我知道了, 主线的 #840 这个PR之后,RV64就进不了用户程序了,估计是这里的pagefault处理有问题。
然后我这个PR在合并主线之后就rv启动不了了,9fc08a1 这个commit是可以的。

@MemoryShore 麻烦看看~

@val213 val213 merged commit 2b7818e into DragonOS-Community:master Sep 5, 2024
7 checks passed
Samuka007 added a commit that referenced this pull request Sep 28, 2024
* 修复mprotect系统调用未正确设置vm_flags的错误 (#847)

* fix(time): modify update wall time (#836)

更改了时间子系统的update_wall_time函数,通过读取当前周期数,计算delta值进行更新,而不是通过传入delta值进行更新

* chore: 调整triagebot.toml以适应新的组织架构 (#848)

* doc: 完善README.md (#849)

* doc: 完善README.md

* chore: 更新sphinx相关配置,适应read the docs的更新 (#850)

根据read the docs在7月15日blog,进行此修改

https://about.readthedocs.com/blog/2024/07/addons-by-default/

* feat(driver/net): 实现Loopback网卡接口 (#845)

* 初步实现loopback设备

* fix: build-scripts和tools目录下的make check指定工具链版本 (#861)

* fix: tcp poll没有正确处理posix socket的listen状态的问题 (#859)

* chore: 将工具链更新到2024-07-23 (#864)

* chore: 将工具链更新到2024-07-23

* feat(fs): add eventfd syscall support (#858)

* feat(fs): add eventfd syscall support

* refactor: 删除过时的va-pa转换函数,改为统一使用MMArch (#862)

* 默认nightly-2024-07-23 & config改为config.toml (#872)

* fix: 修复由于升级到2024-07-23工具链之后,某些机器上面内核运行一直fault的问题。 (#870)

* fix: 修复由于升级到2024-07-23工具链之后,某些机器上面内核运行一直fault的问题。

* feat(cred): 初步实现Cred (#846)

* 初步实现Cred

* 添加seteuid和setegid

* 添加cred测试程序

* 修改Cred::fscmp返回结果为CredFsCmp枚举

* 完善root用户相关信息

* fix: 修复键盘码解析器没能正确处理类似ctrl C的控制字符的问题 (#877)

* fix: 修复键盘码解析器没能正确处理类似ctrl C的控制字符的问题

* fix: 解决ntty潜在的panic问题

* ci: enable ci workflow on branches other than master (#891)

* 修复unlink、unlinkat系统调用的路径错误 (#892)

* fix: socket shutdown wrong implement (#893)

* feat: 增加tokio异步运行时支持 (#894)

* fix the EventFdFlags error

* feat: support tokio (Single thread version)

Fix deadlock issue on closing file.
Add function for PipeInode and EventFdInode.

* fix: pipe 读取/写入阻塞时,无法kill进程的问题 (#889)

* fix: 修复存在多个virtio设备时,中断号冲突的问题 (#904)

* feat: 添加gendisk抽象 (#903)

* feat: 添加gendisk抽象.

* 支持使用virtio磁盘作为根文件系统

* Update initial_kthread.rs to resolve conflict.

---------

Co-authored-by: Donkey Kane <[email protected]>

* feat(mm): 简单实现fat文件系统的文件映射 (#840)

- 添加文件映射相关接口,目前已简单实现fat文件系统的私有映射和共享映射
- 添加msync系统调用(由于当前未实现脏页自动回写,需要手动调用msync进行同步)
- 简单实现PageCache(暂时使用HashMap进行文件页号与页的映射)
- 添加新的PageFlags标志结构,原PageFlags改名为EntryFlags
- 参考linux使用protection_map映射表进行页面标志的获取
- 添加页面回收机制
- 添加页面回收内核线程
- 缺页中断使用的锁修改为irq_save; 添加脏页回写机制
- 修复do_cow_page死锁问题
- 访问非法地址时发送信号终止进程
- 修复重复插入反向vma表的错误
- 添加test_filemap文件映射测试程序

* feat: 添加对内核引导协议的抽象 (#913)

* 添加multiboot header

* head.S传参增加bootloader类型

* feat: 添加引导加载协议的抽象,并为multiboot2实现这个抽象.

* 把framebuffer的映射地址改为从early ioremap和mmio pool分配

* riscv64能运行

* fix(virtio):修复了特定virtio设备环境下中断号重复错误,以及开机内核panic的bug (#881)

* feat: 允许通过multiboot引导(直到acpi初始化报错) (#914)

* fix(mm): 修复riscv64启动时的PageFault (#915)

* 修复riscv64启动时的PageFault

* 优化代码结构

* feat(driver/net): 将网络设备注册到sysfs, 添加设备类属性文件 (#919)

* ci(docs): Build docs when push/PR to master and release version. (#935)

Signed-off-by: longjin <[email protected]>

* fix: Fix make update-submodules-by-mirror Error (#928)

* remove --init suffix in update-submodules-by-mirror

* ci: deploy documents to minio (#936)

Signed-off-by: longjin <[email protected]>

* ci: fix awscli botcore (#937)

Signed-off-by: longjin <[email protected]>

* feat(ida): IDA内部改为使用XArray实现 (#934)

目前可以记录哪些ID已经分配,支持了ID释放的功能.

Signed-off-by: longjin <[email protected]>

* doc: add commit revision to footer while build with sphinx-multiversion (#939)

Signed-off-by: longjin <[email protected]>

* doc: 添加在github上编辑的按钮,以及扩展footer (#940)

Signed-off-by: longjin <[email protected]>

* fix: sysfs ifacetrait改名

* merge net && feat(net): stream sockpairs

---------

Signed-off-by: longjin <[email protected]>
Co-authored-by: MemoryShore <[email protected]>
Co-authored-by: 黄铭涛 <[email protected]>
Co-authored-by: LoGin <[email protected]>
Co-authored-by: linfeng <[email protected]>
Co-authored-by: Jomo <[email protected]>
Co-authored-by: Chiichen <[email protected]>
Co-authored-by: Samuel Dai <[email protected]>
Co-authored-by: Donkey Kane <[email protected]>
Co-authored-by: MemoryShore <[email protected]>
Co-authored-by: 曾俊 <[email protected]>
Co-authored-by: EMasi <[email protected]>
BrahmaMantra pushed a commit to BrahmaMantra/DragonOS that referenced this pull request Dec 9, 2024
* 添加multiboot header

* head.S传参增加bootloader类型

* feat: 添加引导加载协议的抽象,并为multiboot2实现这个抽象.

* 把framebuffer的映射地址改为从early ioremap和mmio pool分配

* riscv64能运行
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-driver Area: 驱动程序 enhancement New feature or request O-riscv64 Target: riscv64 O-x86_64 Target: x86_64 T-doc Relevant to the document team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants