tech-kern archive

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

Re: Improvements in amd64



In article <5735B242.5010404%m00nbsd.net@localhost>,
Maxime Villard  <max%m00nbsd.net@localhost> wrote:
>I've committed several improvements in amd64 these last days.
>
>In chronological order, for the record:
>  - I cleaned up the asm code and fixed several comments, which makes the
>    boot process much easier to understand.
>  - I fixed the alignment for the text segment, so that it can be covered by
>    more large pages [1] - thereby reducing TLB contention.
>  - I fixed a bug in the way the secondary CPUs are launched [2], which
>    caused them to crash if they tried to access an X-less page.
>  - I took rodata out of the text+rodata chunk, and put it in the data+bss+
>    PRELOADED_MODULES+BOOTSTRAP_TABLES chunk [3]. rodata was no longer large
>    page optimized, and had RWX permissions.
>  - I retook rodata out of the rodata+data+bss+PRELOADED_MODULES+
>    BOOTSTRAP_TABLES chunk, and made the kernel map it independently without
>    the W permision [4].
>  - I made the kernel map rodata without the X permission, by using the NOX
>    bit on its pages [5] (now that the secondary CPUs could handle that
>    properly).
>  - I took the data+bss chunk out of the data+bss+PRELOADED_MODULES+
>    BOOTSTRAP_TABLES chunk, and made the kernel map it independently without
>    X permission [6].
>  - I made the kernel remap rodata and data+bss with large pages and proper
>    permissions [7] - which reduces once again TLB contention.
>
>Now, the way the kernel image is mapped is more flexible, more secure and
>more performant. There are still several things to fix, and the same
>procedure needs to be applied in i386.
>
>If you have questions, comments, if you think something is wrong, or if you
>spot any mistakes, feel free to tell me about it. Also, if someone could
>review the last change, that would be nice.
>
>[1] http://mail-index.netbsd.org/source-changes/2016/05/07/msg074501.html
>[2] http://mail-index.netbsd.org/source-changes/2016/05/11/msg074613.html
>[3] http://mail-index.netbsd.org/source-changes/2016/05/12/msg074625.html
>[4] http://mail-index.netbsd.org/source-changes/2016/05/12/msg074627.html
>[5] http://mail-index.netbsd.org/source-changes/2016/05/12/msg074628.html
>[6] http://mail-index.netbsd.org/source-changes/2016/05/12/msg074632.html
>[7] http://mail-index.netbsd.org/source-changes/2016/05/13/msg074650.html
>

Thanks for the explanation!

christos





Home | Main Index | Thread Index | Old Index