<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r">
<style type="text/css" style="display:none"><!-- p { margin-top: 0px; margin-bottom: 0px; }--></style>
</head>
<body dir="ltr" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
<div style="color: rgb(33, 33, 33);">
<div>
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote"><span style="font-size: 12pt; font-family: calibri, arial, helvetica, sans-serif;">></span><span style="font-size: 12pt; font-family: calibri, arial, helvetica, sans-serif;">>That boot_params.hdr.code32_start </span><wbr style="font-size: 12pt; font-family: calibri, arial, helvetica, sans-serif;"><span style="font-size: 12pt; font-family: calibri, arial, helvetica, sans-serif;">field
 is probably either invalid (bad reloc or something else causing the bootloader to >>calculate the wrong address) or valid but the thing it thinks it is pointing to wasn't loaded (missing PT_LOAD etc.). </span><br>
</div>
<div class="gmail_quote">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:calibri,arial,helvetica,sans-serif">
<div>
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote"><span class="gmail-"></span>
<div style="color:rgb(33,33,33)"><span style="color:rgb(33,33,33); font-family:calibri,arial,helvetica,sans-serif; font-size:16px; background-color:rgb(255,255,255)">>boot_params.hdr.code32_start <wbr>field</span> is valid :) It is 0x100000, like expected</div>
</div>
</div>
</div>
</div>
</div>
<div>> </div>
<div>>Then I suspect that that segment isn't being loaded. Is there a PT_LOAD that covers that address? Is the bootloader loading it?</div>
<div> <br>
</div>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:calibri,arial,helvetica,sans-serif">
<div>
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div style="color:rgb(33,33,33)">That issue is gone. Not sure what changed, but looks something was fixed in LLD during last week.<br>
</div>
<div style="color:rgb(33,33,33)">Latest status of booting linux kernel is next currently:<br>
</div>
<div style="color:rgb(33,33,33)"><br>
</div>
<div style="color:rgb(33,33,33)">At this location,<br>
</div>
<div style="color:rgb(33,33,33)"><a href="https://github.com/torvalds/linux/blob/5924bbecd0267d87c24110cbe2041b5075173a25/arch/x86/boot/compressed/head_64.S#L424">https://github.com/torvalds/linux/blob/5924bbecd0267d87c24110cbe2041b5075173a25/arch/x86/boot/compressed/head_64.S#L424</a><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
</div>
<div class="gmail_extra">kernel calls extract_kernel(). And 2 lines below it tries to jmp to the address of decompressed kernel and fails to do that for me.<br>
</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra"><span style="color: rgb(33, 33, 33); font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);">extract_kernel</span>() method is:<br>
</div>
<div class="gmail_extra"><a href="https://github.com/torvalds/linux/blob/5924bbecd0267d87c24110cbe2041b5075173a25/arch/x86/boot/compressed/misc.c#L334">https://github.com/torvalds/linux/blob/5924bbecd0267d87c24110cbe2041b5075173a25/arch/x86/boot/compressed/misc.c#L334</a><br>
</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">I added next lines before return:<br>
</div>
<div class="gmail_extra">
<div>__putstr("hi from extract_kernel");</div>
<div>if ((int) output == 0x1000000)<br>
</div>
<div>  __putstr("== 0x1000000");<br>
</div>
<div>output[0] = 0xEB;<br>
</div>
<div>output[1] = 0xFE;<br>
</div>
<div><span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93); font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; white-space: pre; background-color: rgb(255, 255, 255);">return</span><span style="color: rgb(51, 51, 51); font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; white-space: pre; background-color: rgb(255, 255, 255);">
 output;</span><br>
</div>
<div><br>
</div>
<div>And during boot in shows all text from above and enters infinite loop as expected. So, that means it successfully jumps to 0x1000000, but looks something is wrong in decompressed code. <span style="font-size: 12pt;">Next destination point should be </span><span style="color: rgb(121, 93, 163); font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; white-space: pre; background-color: rgb(248, 238, 199);">startup_64</span><span style="font-size: 12pt;">​.</span></div>
<div><a href="https://github.com/torvalds/linux/blob/5924bbecd0267d87c24110cbe2041b5075173a25/arch/x86/kernel/head_64.S#L48">https://github.com/torvalds/linux/blob/5924bbecd0267d87c24110cbe2041b5075173a25/arch/x86/kernel/head_64.S#L50</a><br>
</div>
Though as I mentioned it does not reach it for me.<br>
</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">Next step I probably going to do is dump/printf-trace that memory area of decompressed kernel to compare with what produced there when BFD is used. Have no better ideas now.<br>
</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">George.<br>
</div>
</div>
</div>
</div>
</body>
</html>