@@ -147,9 +147,10 @@ where
147147 . allocate_frame ( )
148148 . expect ( "frame allocation failed when mapping a kernel stack" ) ;
149149 let flags = PageTableFlags :: PRESENT | PageTableFlags :: WRITABLE ;
150- unsafe { kernel_page_table. map_to ( page, frame, flags, frame_allocator) }
151- . unwrap ( )
152- . flush ( ) ;
150+ match unsafe { kernel_page_table. map_to ( page, frame, flags, frame_allocator) } {
151+ Ok ( tlb) => tlb. flush ( ) ,
152+ Err ( err) => panic ! ( "failed to map page {:?}: {:?}" , page, err) ,
153+ }
153154 }
154155
155156 // identity-map context switch function, so that we don't get an immediate pagefault
@@ -161,9 +162,12 @@ where
161162 context_switch_function_start_frame,
162163 context_switch_function_start_frame + 1 ,
163164 ) {
164- unsafe { kernel_page_table. identity_map ( frame, PageTableFlags :: PRESENT , frame_allocator) }
165- . unwrap ( )
166- . flush ( ) ;
165+ match unsafe {
166+ kernel_page_table. identity_map ( frame, PageTableFlags :: PRESENT , frame_allocator)
167+ } {
168+ Ok ( tlb) => tlb. flush ( ) ,
169+ Err ( err) => panic ! ( "failed to identity map frame {:?}: {:?}" , frame, err) ,
170+ }
167171 }
168172
169173 // map framebuffer
@@ -179,9 +183,13 @@ where
179183 {
180184 let page = start_page + u64:: from_usize ( i) ;
181185 let flags = PageTableFlags :: PRESENT | PageTableFlags :: WRITABLE ;
182- unsafe { kernel_page_table. map_to ( page, frame, flags, frame_allocator) }
183- . unwrap ( )
184- . flush ( ) ;
186+ match unsafe { kernel_page_table. map_to ( page, frame, flags, frame_allocator) } {
187+ Ok ( tlb) => tlb. flush ( ) ,
188+ Err ( err) => panic ! (
189+ "failed to map page {:?} to frame {:?}: {:?}" ,
190+ page, frame, err
191+ ) ,
192+ }
185193 }
186194 let framebuffer_virt_addr = start_page. start_address ( ) ;
187195 Some ( framebuffer_virt_addr)
@@ -202,9 +210,13 @@ where
202210 for frame in PhysFrame :: range_inclusive ( start_frame, end_frame) {
203211 let page = Page :: containing_address ( offset + frame. start_address ( ) . as_u64 ( ) ) ;
204212 let flags = PageTableFlags :: PRESENT | PageTableFlags :: WRITABLE ;
205- unsafe { kernel_page_table. map_to ( page, frame, flags, frame_allocator) }
206- . unwrap ( )
207- . ignore ( ) ;
213+ match unsafe { kernel_page_table. map_to ( page, frame, flags, frame_allocator) } {
214+ Ok ( tlb) => tlb. ignore ( ) ,
215+ Err ( err) => panic ! (
216+ "failed to map page {:?} to frame {:?}: {:?}" ,
217+ page, frame, err
218+ ) ,
219+ } ;
208220 }
209221
210222 Some ( offset)
@@ -299,21 +311,23 @@ where
299311 let frame = frame_allocator
300312 . allocate_frame ( )
301313 . expect ( "frame allocation for boot info failed" ) ;
302- unsafe {
314+ match unsafe {
303315 page_tables
304316 . kernel
305317 . map_to ( page, frame, flags, & mut frame_allocator)
318+ } {
319+ Ok ( tlb) => tlb. flush ( ) ,
320+ Err ( err) => panic ! ( "failed to map page {:?}: {:?}" , page, err) ,
306321 }
307- . unwrap ( )
308- . flush ( ) ;
309322 // we need to be able to access it too
310- unsafe {
323+ match unsafe {
311324 page_tables
312325 . bootloader
313326 . map_to ( page, frame, flags, & mut frame_allocator)
327+ } {
328+ Ok ( tlb) => tlb. flush ( ) ,
329+ Err ( err) => panic ! ( "failed to map page {:?}: {:?}" , page, err) ,
314330 }
315- . unwrap ( )
316- . flush ( ) ;
317331 }
318332
319333 let boot_info: & ' static mut MaybeUninit < BootInfo > =
0 commit comments