[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

wortel - get_page_zero Problem

From: Bernhard Poess
Subject: wortel - get_page_zero Problem
Date: Sun, 28 Aug 2005 11:33:25 +0200
User-agent: Mozilla Thunderbird 1.0.6 (X11/20050827)

The code for allocating a page which exists at address 0 in wortel (wortel.c:976) leads to a problem in the following case:

The KIP indicates a region from address 0x0 as conventional memory.
Wortel then tries to get this page granted from sigma0.
But sigma0 already has allocated this page for itself.

Below is the output from KDB for the KIP and the sigma0 dump:

Memory regions (15):
 Physical:        0x00000000 - 0xffffffff   shared
                  0x00000000 - 0x0009f7ff   conventional
                  0x0009f800 - 0x0009ffff   architecture specific (2)
                  0x000dc000 - 0x000fffff   architecture specific (2)
                  0x00100000 - 0x09eeffff   conventional
                  0x09ef0000 - 0x09efefff   architecture specific (3)
                  0x09eff000 - 0x09efffff   architecture specific (4)
                  0x09f00000 - 0x09ffffff   conventional
                  0xfec00000 - 0xfec0ffff   architecture specific (2)
                  0xfee00000 - 0xfee00fff   architecture specific (2)
                  0xfffe0000 - 0xffffffff   architecture specific (2)
                  0x000a0000 - 0x000effff   shared
                  0x09000000 - 0x09ef03ff   reserved
                  0x00100000 - 0x00151fff   reserved
 Virtual:         0x00000000 - 0xbfffffff   conventional

Sigma0 dump:
s0: Free memregion structures: 202
s0: Free pool (conventional memory):
s0:  0x00001000-0x00001fff   0xffffffff (anythread)
s0:  0x00003000-0x00007fff   0xffffffff (anythread)
s0:  0x00020000-0x00025fff   0xffffffff (anythread)
s0:  0x00027000-0x00027fff   0xffffffff (anythread)
s0:  0x00030000-0x0003dfff   0xffffffff (anythread)
s0:  0x0003f000-0x0003ffff   0xffffffff (anythread)
s0:  0x00049000-0x0009efff   0xffffffff (anythread)
s0:  0x00152000-0x002fffff   0xffffffff (anythread)
s0:  0x0030b000-0x0036ffff   0xffffffff (anythread)
s0:  0x003ed000-0x003fffff   0xffffffff (anythread)
s0:  0x0041b000-0x08ffffff   0xffffffff (anythread)
s0:  0x09f00000-0x09ffffff   0xffffffff (anythread)
s0: Free pool (non-conventional memory):
s0:  0x0009f000-0x0009ffff   0xffffffff (anythread)
s0:  0x000f0000-0x000fffff   0xffffffff (anythread)
s0:  0x09ef1000-0x09efffff   0xffffffff (anythread)
s0:  0xfec00000-0xfec0ffff   0xffffffff (anythread)
s0:  0xfee00000-0xfee00fff   0xffffffff (anythread)
s0:  0xfffe0000-0xffffffff   0xffffffff (anythread)
s0: Alloc pool:
s0:  0x00000000-0x00000fff   0x000c0001 (sigma0)
s0:  0x00002000-0x00002fff   0x000c8001 (root server)
s0:  0x00008000-0x0001ffff   0x000c8001 (root server)
s0:  0x00026000-0x00026fff   0x000c8001 (root server)
s0:  0x00028000-0x0002ffff   0x000c8001 (root server)
s0:  0x0003e000-0x0003efff   0x000c8001 (root server)
s0:  0x00040000-0x00048fff   0x000c0001 (sigma0)
s0:  0x000a0000-0x000effff   0xffffffff (anythread)
s0:  0x00100000-0x00151fff   0x00040001 (kernel)
s0:  0x00300000-0x0030afff   0x000c8001 (root server)
s0:  0x00370000-0x003ecfff   0x000c8001 (root server)
s0:  0x00400000-0x0041afff   0x000c8001 (root server)
s0:  0x09000000-0x09ef0fff   0x00040001 (kernel)
s0:  0x0a000000-0xfebfffff   0xffffffff (anythread)
s0:  0xfec10000-0xfedfffff   0xffffffff (anythread)
s0:  0xfee01000-0xfffdffff   0xffffffff (anythread)

I think that the problem comes from a general understanding error, the fact that the KIP indicates a memory region as conventional not necessarily indicates that one can get it from s0 via sigma0_get_fpage, so I suggest to only try getting the zero-page from s0 and if that failes just discard that fact and continue booting.

Bernhard Poess

reply via email to

[Prev in Thread] Current Thread [Next in Thread]