Opened 14 years ago

Closed 14 years ago

#240 closed defect (fixed)

Zone bound computation in init_e820_memory() is incorrect

Reported by: Jiri Svoboda Owned by:
Priority: major Milestone: 0.4.3
Component: helenos/kernel/ia32 Version: mainline
Keywords: Cc:
Blocker for: Depends on:
See also:

Description

On ia32:

pfn = ADDR2PFN(ALIGN_UP(base, FRAME_SIZE));
count = SIZE2FRAMES(ALIGN_DOWN(size, FRAME_SIZE));

The base is aligned upwards and the size is aligned downwards. In reality it is the end address which should be aligned downwards. This can cause the zone to be larger than the actual memory area.

Need to check if other arches have a similar problem.

Change History (2)

comment:1 by Jiri Svoboda, 14 years ago

Amd64 frame.c links to ia32 frame.c. ia64 seems to do it properly. arm32 and mips32 don't use firmware/bootloader-provided memory maps. Ppc32 has the same problem in frame_arch_init() (copy and paste?). Sun4u and sun4v seem to have the same problem.

comment:2 by Martin Decky, 14 years ago

Resolution: fixed
Status: newclosed

Fixed in chageset:mainline,556

Note: See TracTickets for help on using tickets.