From 7c169ae1ec2d32bed534bc5f371aba1d3f4e6ed9 Mon Sep 17 00:00:00 2001 From: szy Date: Thu, 13 Nov 2025 17:04:09 +0800 Subject: [PATCH 1/2] replace bootargs ro to rw --- kernel/src/vmm/fdt/create.rs | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/kernel/src/vmm/fdt/create.rs b/kernel/src/vmm/fdt/create.rs index 15e8de7c..755728e4 100644 --- a/kernel/src/vmm/fdt/create.rs +++ b/kernel/src/vmm/fdt/create.rs @@ -289,24 +289,41 @@ pub fn update_fdt(fdt_src: NonNull, dtb_size: usize, vm: VMRef) { previous_node_level = node.level; - for prop in node.propertys() { - if prop.name.starts_with("linux,initrd-") { - if node.name() == "chosen" { + if node.name() == "chosen" { + for prop in node.propertys() { + if prop.name.starts_with("linux,initrd-") { info!( "Skipping property: {}, belonging to node: {}", prop.name, node.name() ); - continue; + } else if prop.name == "bootargs" { + let bootargs_str = prop.str(); + let modified_bootargs = bootargs_str.replace(" ro ", " rw "); + + if modified_bootargs != bootargs_str { + info!( + "Modifying bootargs: {} -> {}", + bootargs_str, modified_bootargs + ); + } + + new_fdt + .property_string(prop.name, &modified_bootargs) + .unwrap(); } else { - warn!( - "Find property: {}, belonging to node: {}", + debug!( + "Found property: {}, belonging to node: {}", prop.name, node.name() ); + new_fdt.property(prop.name, prop.raw_value()).unwrap(); } } - new_fdt.property(prop.name, prop.raw_value()).unwrap(); + } else { + for prop in node.propertys() { + new_fdt.property(prop.name, prop.raw_value()).unwrap(); + } } } From 08507ffa7b8025c750c7fc1a94b19cad492cbcbe Mon Sep 17 00:00:00 2001 From: szy Date: Thu, 13 Nov 2025 17:24:03 +0800 Subject: [PATCH 2/2] debug --- kernel/src/vmm/fdt/create.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/src/vmm/fdt/create.rs b/kernel/src/vmm/fdt/create.rs index 755728e4..0c8b5c32 100644 --- a/kernel/src/vmm/fdt/create.rs +++ b/kernel/src/vmm/fdt/create.rs @@ -313,7 +313,7 @@ pub fn update_fdt(fdt_src: NonNull, dtb_size: usize, vm: VMRef) { .unwrap(); } else { debug!( - "Found property: {}, belonging to node: {}", + "Find property: {}, belonging to node: {}", prop.name, node.name() );