kernel stacks [eas: Re: G5 Bridge-mode MMU]
Marcel Moolenaar
xcllnt at mac.com
Wed Apr 16 21:27:41 UTC 2008
Follow-up...
On Apr 15, 2008, at 10:54 PM, Marcel Moolenaar wrote:
>
> On Apr 15, 2008, at 5:52 PM, Peter Grehan wrote:
>> Hi Marcel,
>>
>>>> Are you sure it isn't a genuine stack overflow ?
>>> Positive. The panic happens after 4KB of stack has been used.
>>>> You may be able to tell by bumping the size of tmpstk on a non-
>>>> kstack0 boot and see how far up it's been used.
>>> The backtrace also shows that. From inner-most to out-most
>>> function in
>>> the backtrace the stack pointers are roughly 4KB apart.
>>
>> Can you send the code snippet that you're using to set up the
>> stack ? I can desk-check that, and then use it for my testing so we
>> have the exact same setup.
*snip*
>> usb0: USB revision 1.0
> [thread pid 0 tid 100000 ]
> Stopped at 0x3e9cc0: stwux r0, r1, r9,
> db> bt
> Tracing pid 0 tid 100000 td 0x4cb340
> 0xd00040f0: at usbd_transfer+0xb0
*snip*
Found the problem: moea_rkva_alloc().
The first 4 pages of KVA are reserved for page zeroing and other
special purpose uses. This was not accounted for in the original
moea_bootstrap() code when the kernel stack was allocated, so the
kernel stack overlapped with the pages returned by moea_rkva_alloc().
This is easily fixed...
--
Marcel Moolenaar
xcllnt at mac.com
More information about the freebsd-ppc
mailing list