All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1 0/2] docs/LoongArch: Add English and Chinese versions of boot image header
@ 2022-11-21 12:16 Yanteng Si
  2022-11-21 12:16 ` [PATCH v1 1/2] docs/LoongArch: Add " Yanteng Si
  2022-11-21 12:16 ` [PATCH v1 2/2] docs/zh_CN: Add boot-image-header Chinese translation Yanteng Si
  0 siblings, 2 replies; 5+ messages in thread
From: Yanteng Si @ 2022-11-21 12:16 UTC (permalink / raw)
  To: chenhuacai, corbet, alexs, seakeel
  Cc: Yanteng Si, kernel, wu.xiangcheng, jiaxun.yang, linux-doc,
	loongarch, siyanteng01

v1:
* Add boot image header.
* Translate boot-image-header into Chinese.

Yanteng Si (2):
  docs/LoongArch: Add boot image header
  docs/zh_CN: Add boot-image-header Chinese translation

 Documentation/loongarch/boot-image-header.rst | 76 ++++++++++++++++++
 Documentation/loongarch/index.rst             |  1 +
 .../zh_CN/loongarch/boot-image-header.rst     | 77 +++++++++++++++++++
 .../translations/zh_CN/loongarch/index.rst    |  1 +
 4 files changed, 155 insertions(+)
 create mode 100644 Documentation/loongarch/boot-image-header.rst
 create mode 100644 Documentation/translations/zh_CN/loongarch/boot-image-header.rst

-- 
2.31.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v1 1/2] docs/LoongArch: Add boot image header
  2022-11-21 12:16 [PATCH v1 0/2] docs/LoongArch: Add English and Chinese versions of boot image header Yanteng Si
@ 2022-11-21 12:16 ` Yanteng Si
  2022-11-21 16:58   ` Wu XiangCheng
  2022-11-21 12:16 ` [PATCH v1 2/2] docs/zh_CN: Add boot-image-header Chinese translation Yanteng Si
  1 sibling, 1 reply; 5+ messages in thread
From: Yanteng Si @ 2022-11-21 12:16 UTC (permalink / raw)
  To: chenhuacai, corbet, alexs, seakeel
  Cc: Yanteng Si, kernel, wu.xiangcheng, jiaxun.yang, linux-doc,
	loongarch, siyanteng01, Xiaotian Wu

Describes the meaning and value of the image header field.

Suggested-by: Xiaotian Wu <wuxiaotian@loongson.cn>
Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
 Documentation/loongarch/boot-image-header.rst | 76 +++++++++++++++++++
 Documentation/loongarch/index.rst             |  1 +
 2 files changed, 77 insertions(+)
 create mode 100644 Documentation/loongarch/boot-image-header.rst

diff --git a/Documentation/loongarch/boot-image-header.rst b/Documentation/loongarch/boot-image-header.rst
new file mode 100644
index 000000000000..92a953a6f2e6
--- /dev/null
+++ b/Documentation/loongarch/boot-image-header.rst
@@ -0,0 +1,76 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+====================================
+Boot image header in LoongArch Linux
+====================================
+
+:Author: Yanteng Si <siyanteng@loongson.cn>
+:Date:   18 Nov 2022
+
+This document only describes the boot image header details for
+LoongArch Linux.
+
+The following 64-byte header is present in decompressed Linux
+kernel image::
+
+	u32	MZ_MAGIC		/* "MZ", MS-DOS header */
+	u32	res0 = 0		/* reserved */
+	u64	kernel_entry		/* Kernel entry point */
+	u64	_end - _text		/* Kernel image effective size */
+	u64	0			/* Kernel image load offset from start of RAM */
+	u64	res1 = 0		/* reserved */
+	u64	res2 = 0		/* reserved */
+	u64	res3 = 0		/* reserved */
+	u32	res4 = 0		/* reserved */
+	u32	pe_header - _head	/* Offset to the PE header */
+
+
+Header notes
+============
+
+Currently, LoongArch has removed the "magic" field.
+
+According to the EFI specification, the PE/COFF image file header is
+required at the beginning of the kernel image; the LoongArch kernel
+supports the EFI stub, so the first two bytes of the kernel image header
+are "MZ" magic characters, and 0x3c should point to the rest of the
+PE/COFF file header, between which The kernel entry point, image
+effectivesize, and image load offset layout are as follows::
+
+          +-----------------------------------------------+
+    0x0:  |  0  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |
+          +-----------------------------------------------+
+    0x8:  | MZ_MAGIC              |          res0         |
+          +-----------------------------------------------+
+    0x10: |                 kernel_entry                  |
+          +-----------------------------------------------+
+    0x18: |                  _end - _text                 |
+          +-----------------------------------------------+
+    0x20: |                       0                       |
+          +-----------------------------------------------+
+    0x28: |                      res1                     |
+          +-----------------------------------------------+
+    0x30: |                      res2                     |
+          +-----------------------------------------------+
+    0x38: |                      res3                     |
+          +-----------------------------------------------+
+    0x40: |          res14        |       PE header       |
+          +-----------------------------------------------+
+
+
+All bit fields are in little endian:
+
+    - MZ: Effective length of 2 bytes;
+
+    - kernel entry point: leaving 6 bytes blank in front, starting
+      from 0x8, with a effective length of 8 bytes;
+
+    - kernel image effective size: Immediately following the kernel
+      entry point, with a effective length of 8 bytes, this field is
+      required for the bootloader;
+
+    - kernel image load offset: Immediately following the kernel
+      image effective size, with a effective length of 8 bytes;
+
+    - Offset to the PE header: leaving 28 bytes blank in front,
+      starting from 0x3c, with a effective length of 4 bytes.
diff --git a/Documentation/loongarch/index.rst b/Documentation/loongarch/index.rst
index aaba648db907..97419821adf9 100644
--- a/Documentation/loongarch/index.rst
+++ b/Documentation/loongarch/index.rst
@@ -10,6 +10,7 @@ LoongArch Architecture
 
    introduction
    irq-chip-model
+   boot-image-header
 
    features
 
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v1 2/2] docs/zh_CN: Add boot-image-header Chinese translation
  2022-11-21 12:16 [PATCH v1 0/2] docs/LoongArch: Add English and Chinese versions of boot image header Yanteng Si
  2022-11-21 12:16 ` [PATCH v1 1/2] docs/LoongArch: Add " Yanteng Si
@ 2022-11-21 12:16 ` Yanteng Si
  1 sibling, 0 replies; 5+ messages in thread
From: Yanteng Si @ 2022-11-21 12:16 UTC (permalink / raw)
  To: chenhuacai, corbet, alexs, seakeel
  Cc: Yanteng Si, kernel, wu.xiangcheng, jiaxun.yang, linux-doc,
	loongarch, siyanteng01, Xiaotian Wu

Translate ../loongarch/boot-image-header.rst into Chinese.

Suggested-by: Xiaotian Wu <wuxiaotian@loongson.cn>
Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
 .../zh_CN/loongarch/boot-image-header.rst     | 77 +++++++++++++++++++
 .../translations/zh_CN/loongarch/index.rst    |  1 +
 2 files changed, 78 insertions(+)
 create mode 100644 Documentation/translations/zh_CN/loongarch/boot-image-header.rst

diff --git a/Documentation/translations/zh_CN/loongarch/boot-image-header.rst b/Documentation/translations/zh_CN/loongarch/boot-image-header.rst
new file mode 100644
index 000000000000..826bce5bf550
--- /dev/null
+++ b/Documentation/translations/zh_CN/loongarch/boot-image-header.rst
@@ -0,0 +1,77 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/loongarch/boot-image-header.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+=============================
+LoongArch Linux启动镜像文件头
+=============================
+
+:作者: 司延腾 <siyanteng@loongson.cn>
+:日期: 18 Nov 2022
+
+此文档仅描述LoongArch Linux 启动文件头详情。
+
+
+在非压缩的Linux内核镜像中存在以下64字节的文件头::
+
+	u32	MZ_MAGIC		/* "MZ", MS-DOS 头 */
+	u32	res0 = 0		/* 保留 */
+	u64	kernel_entry		/* 内核入口点 */
+	u64	_end - _text		/* 内核镜像有效大小 */
+	u64	0			/* 从RAM开始的加载内核镜像的偏移量 */
+	u64	res1 = 0		/* 保留 */
+	u64	res2 = 0		/* 保留 */
+	u64	res3 = 0		/* 保留 */
+	u32	res4 = 0		/* 保留 */
+	u32	pe_header - _head	/* 到PE头的偏移量 */
+
+
+镜像头注释
+==========
+
+目前LoongArch已经移除“magic”结构体成员。
+
+按照EFI规范的规定,在内核镜像的开始需要PE/COFF镜像文件头。当前LoongArch内核支持
+EFI stub,故内核镜像头最开始两字节为“MZ”魔术字符,且0x3c处应指向PE/COFF文件头的
+其余部分,在此之间,内核的入口点、有效镜像大小、镜像加载偏移布局如下::
+
+          +-----------------------------------------------+
+    0x0:  |  0  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |
+          +-----------------------------------------------+
+    0x8:  | MZ_MAGIC              |          res0         |
+          +-----------------------------------------------+
+    0x10: |                 kernel_entry                  |
+          +-----------------------------------------------+
+    0x18: |                  _end - _text                 |
+          +-----------------------------------------------+
+    0x20: |                       0                       |
+          +-----------------------------------------------+
+    0x28: |                      res1                     |
+          +-----------------------------------------------+
+    0x30: |                      res2                     |
+          +-----------------------------------------------+
+    0x38: |                      res3                     |
+          +-----------------------------------------------+
+    0x40: |          res14        |       PE header       |
+          +-----------------------------------------------+
+
+
+
+
+所有的位域都是小端序:
+
+    - MZ:有效长度为2字节;
+
+    - 内核入口点: 前留空6个字节,自0x8开始,有效长度为8字节;
+
+    - 内核镜像有效大小: 紧接内核入口点,有效长度为8字节,该成员对于引导器来说是必须的;
+
+    - 内核镜像加载偏移: 紧接内核镜像有效大小,有效长度为8字节;
+
+    - 到PE头的偏移量: 前留空28字节,自0x3c开始,有效长度为4字节。
diff --git a/Documentation/translations/zh_CN/loongarch/index.rst b/Documentation/translations/zh_CN/loongarch/index.rst
index 7d23eb78379d..625597792fd9 100644
--- a/Documentation/translations/zh_CN/loongarch/index.rst
+++ b/Documentation/translations/zh_CN/loongarch/index.rst
@@ -15,6 +15,7 @@ LoongArch体系结构
 
    introduction
    irq-chip-model
+   boot-image-header
 
    features
 
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v1 1/2] docs/LoongArch: Add boot image header
  2022-11-21 12:16 ` [PATCH v1 1/2] docs/LoongArch: Add " Yanteng Si
@ 2022-11-21 16:58   ` Wu XiangCheng
  2022-11-24  7:10     ` Yanteng Si
  0 siblings, 1 reply; 5+ messages in thread
From: Wu XiangCheng @ 2022-11-21 16:58 UTC (permalink / raw)
  To: Yanteng Si
  Cc: chenhuacai, corbet, alexs, seakeel, kernel, jiaxun.yang,
	linux-doc, loongarch, siyanteng01, Xiaotian Wu, Yun Liu

+Cc: Yun Liu <liuyun@loongson.cn>

2022-11-21 (一) 20:16:30 +0800 Yanteng Si 曰:
> Describes the meaning and value of the image header field.
> 
> Suggested-by: Xiaotian Wu <wuxiaotian@loongson.cn>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
> ---
>  Documentation/loongarch/boot-image-header.rst | 76 +++++++++++++++++++
>  Documentation/loongarch/index.rst             |  1 +
>  2 files changed, 77 insertions(+)
>  create mode 100644 Documentation/loongarch/boot-image-header.rst
> 
> diff --git a/Documentation/loongarch/boot-image-header.rst b/Documentation/loongarch/boot-image-header.rst
> new file mode 100644
> index 000000000000..92a953a6f2e6
> --- /dev/null
> +++ b/Documentation/loongarch/boot-image-header.rst
> @@ -0,0 +1,76 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +
> +====================================
> +Boot image header in LoongArch Linux
> +====================================
> +
> +:Author: Yanteng Si <siyanteng@loongson.cn>
> +:Date:   18 Nov 2022
> +
> +This document only describes the boot image header details for
> +LoongArch Linux.
> +
> +The following 64-byte header is present in decompressed Linux
> +kernel image::
> +
> +	u32	MZ_MAGIC		/* "MZ", MS-DOS header */
> +	u32	res0 = 0		/* reserved */
> +	u64	kernel_entry		/* Kernel entry point */
> +	u64	_end - _text		/* Kernel image effective size */
> +	u64	0			/* Kernel image load offset from start of RAM */
> +	u64	res1 = 0		/* reserved */
> +	u64	res2 = 0		/* reserved */
> +	u64	res3 = 0		/* reserved */
> +	u32	res4 = 0		/* reserved */
> +	u32	pe_header - _head	/* Offset to the PE header */
> +

Any code related need to be linked here?

> +
> +Header notes
> +============
> +
> +Currently, LoongArch has removed the "magic" field.
> +
> +According to the EFI specification, the PE/COFF image file header is
> +required at the beginning of the kernel image; the LoongArch kernel
> +supports the EFI stub, so the first two bytes of the kernel image header
> +are "MZ" magic characters, and 0x3c should point to the rest of the
> +PE/COFF file header, between which The kernel entry point, image
> +effectivesize, and image load offset layout are as follows::
> +
> +          +-----------------------------------------------+
> +    0x0:  |  0  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |
> +          +-----------------------------------------------+
> +    0x8:  | MZ_MAGIC              |          res0         |
> +          +-----------------------------------------------+
> +    0x10: |                 kernel_entry                  |
> +          +-----------------------------------------------+
> +    0x18: |                  _end - _text                 |
> +          +-----------------------------------------------+
> +    0x20: |                       0                       |
> +          +-----------------------------------------------+
> +    0x28: |                      res1                     |
> +          +-----------------------------------------------+
> +    0x30: |                      res2                     |
> +          +-----------------------------------------------+
> +    0x38: |                      res3                     |
> +          +-----------------------------------------------+
> +    0x40: |          res14        |       PE header       |
> +          +-----------------------------------------------+
> +

emmm, this figure...

So MZ_MAGIC start from 0x08 ?

Or

            0     1     2     3     4     5     6     7   
         +-----------------------+-----------------------+
    0x00 |        MZ_MAGIC       |          res0         |
         +-----------------------+-----------------------+
    0x08 |                 kernel_entry                  |
         +-----------------------------------------------+
    0x10 |                  _end - _text                 |
         +-----------------------------------------------+
    0x18 |                       0                       |
         +-----------------------------------------------+
    0x20 |                      res1                     |
         +-----------------------------------------------+
    0x28 |                      res2                     |
         +-----------------------------------------------+
    0x30 |                      res3                     |
         +-----------------------+-----------------------+
    0x38 |          res14        |       PE header       |
         +-----------------------+-----------------------+

If the figure is too difficult to draw, a simple table can also be used
to instead.

Offset	Name	Size	Note
...

> +
> +All bit fields are in little endian:
> +
> +    - MZ: Effective length of 2 bytes;
> +
> +    - kernel entry point: leaving 6 bytes blank in front, starting
> +      from 0x8, with a effective length of 8 bytes;
> +
> +    - kernel image effective size: Immediately following the kernel
> +      entry point, with a effective length of 8 bytes, this field is
> +      required for the bootloader;
> +
> +    - kernel image load offset: Immediately following the kernel
> +      image effective size, with a effective length of 8 bytes;
> +
> +    - Offset to the PE header: leaving 28 bytes blank in front,
> +      starting from 0x3c, with a effective length of 4 bytes.
> diff --git a/Documentation/loongarch/index.rst b/Documentation/loongarch/index.rst
> index aaba648db907..97419821adf9 100644
> --- a/Documentation/loongarch/index.rst
> +++ b/Documentation/loongarch/index.rst
> @@ -10,6 +10,7 @@ LoongArch Architecture
>  
>     introduction
>     irq-chip-model
> +   boot-image-header
>  
>     features
>  
> -- 
> 2.31.1
> 

-- 
Wu XiangCheng	0x32684A40BCA7AEA7


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v1 1/2] docs/LoongArch: Add boot image header
  2022-11-21 16:58   ` Wu XiangCheng
@ 2022-11-24  7:10     ` Yanteng Si
  0 siblings, 0 replies; 5+ messages in thread
From: Yanteng Si @ 2022-11-24  7:10 UTC (permalink / raw)
  To: Wu XiangCheng
  Cc: chenhuacai, corbet, alexs, seakeel, kernel, jiaxun.yang,
	linux-doc, loongarch, siyanteng01, Xiaotian Wu, Yun Liu


On 11/22/22 00:58, Wu XiangCheng wrote:
> +Cc: Yun Liu <liuyun@loongson.cn>
>
> 2022-11-21 (一) 20:16:30 +0800 Yanteng Si 曰:
>> Describes the meaning and value of the image header field.
>>
>> Suggested-by: Xiaotian Wu <wuxiaotian@loongson.cn>
>> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
>> ---
>>   Documentation/loongarch/boot-image-header.rst | 76 +++++++++++++++++++
>>   Documentation/loongarch/index.rst             |  1 +
>>   2 files changed, 77 insertions(+)
>>   create mode 100644 Documentation/loongarch/boot-image-header.rst
>>
>> diff --git a/Documentation/loongarch/boot-image-header.rst b/Documentation/loongarch/boot-image-header.rst
>> new file mode 100644
>> index 000000000000..92a953a6f2e6
>> --- /dev/null
>> +++ b/Documentation/loongarch/boot-image-header.rst
>> @@ -0,0 +1,76 @@
>> +.. SPDX-License-Identifier: GPL-2.0
>> +
>> +====================================
>> +Boot image header in LoongArch Linux
>> +====================================
>> +
>> +:Author: Yanteng Si <siyanteng@loongson.cn>
>> +:Date:   18 Nov 2022
>> +
>> +This document only describes the boot image header details for
>> +LoongArch Linux.
>> +
>> +The following 64-byte header is present in decompressed Linux
>> +kernel image::
>> +
>> +	u32	MZ_MAGIC		/* "MZ", MS-DOS header */
>> +	u32	res0 = 0		/* reserved */
>> +	u64	kernel_entry		/* Kernel entry point */
>> +	u64	_end - _text		/* Kernel image effective size */
>> +	u64	0			/* Kernel image load offset from start of RAM */
>> +	u64	res1 = 0		/* reserved */
>> +	u64	res2 = 0		/* reserved */
>> +	u64	res3 = 0		/* reserved */
>> +	u32	res4 = 0		/* reserved */
>> +	u32	pe_header - _head	/* Offset to the PE header */
>> +
> Any code related need to be linked here?

The related code is in line 22 of the arch/loongarch/kernel/head.S, 
which is not very readable.


>
>> +
>> +Header notes
>> +============
>> +
>> +Currently, LoongArch has removed the "magic" field.
>> +
>> +According to the EFI specification, the PE/COFF image file header is
>> +required at the beginning of the kernel image; the LoongArch kernel
>> +supports the EFI stub, so the first two bytes of the kernel image header
>> +are "MZ" magic characters, and 0x3c should point to the rest of the
>> +PE/COFF file header, between which The kernel entry point, image
>> +effectivesize, and image load offset layout are as follows::
>> +
>> +          +-----------------------------------------------+
>> +    0x0:  |  0  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |
>> +          +-----------------------------------------------+
>> +    0x8:  | MZ_MAGIC              |          res0         |
>> +          +-----------------------------------------------+
>> +    0x10: |                 kernel_entry                  |
>> +          +-----------------------------------------------+
>> +    0x18: |                  _end - _text                 |
>> +          +-----------------------------------------------+
>> +    0x20: |                       0                       |
>> +          +-----------------------------------------------+
>> +    0x28: |                      res1                     |
>> +          +-----------------------------------------------+
>> +    0x30: |                      res2                     |
>> +          +-----------------------------------------------+
>> +    0x38: |                      res3                     |
>> +          +-----------------------------------------------+
>> +    0x40: |          res14        |       PE header       |
>> +          +-----------------------------------------------+
>> +
> emmm, this figure...
>
> So MZ_MAGIC start from 0x08 ?
Form 0x00.
>
> Or
>
>              0     1     2     3     4     5     6     7
>           +-----------------------+-----------------------+
>      0x00 |        MZ_MAGIC       |          res0         |
>           +-----------------------+-----------------------+
>      0x08 |                 kernel_entry                  |
>           +-----------------------------------------------+
>      0x10 |                  _end - _text                 |
>           +-----------------------------------------------+
>      0x18 |                       0                       |
>           +-----------------------------------------------+
>      0x20 |                      res1                     |
>           +-----------------------------------------------+
>      0x28 |                      res2                     |
>           +-----------------------------------------------+
>      0x30 |                      res3                     |
>           +-----------------------+-----------------------+
>      0x38 |          res14        |       PE header       |
>           +-----------------------+-----------------------+

Great!


In patch V2:

res14 -> res4, I don't know why, I misspelled.


Thanks,

Yanteng


>
> If the figure is too difficult to draw, a simple table can also be used
> to instead.
>
> Offset	Name	Size	Note
> ...
>
>> +
>> +All bit fields are in little endian:
>> +
>> +    - MZ: Effective length of 2 bytes;
>> +
>> +    - kernel entry point: leaving 6 bytes blank in front, starting
>> +      from 0x8, with a effective length of 8 bytes;
>> +
>> +    - kernel image effective size: Immediately following the kernel
>> +      entry point, with a effective length of 8 bytes, this field is
>> +      required for the bootloader;
>> +
>> +    - kernel image load offset: Immediately following the kernel
>> +      image effective size, with a effective length of 8 bytes;
>> +
>> +    - Offset to the PE header: leaving 28 bytes blank in front,
>> +      starting from 0x3c, with a effective length of 4 bytes.
>> diff --git a/Documentation/loongarch/index.rst b/Documentation/loongarch/index.rst
>> index aaba648db907..97419821adf9 100644
>> --- a/Documentation/loongarch/index.rst
>> +++ b/Documentation/loongarch/index.rst
>> @@ -10,6 +10,7 @@ LoongArch Architecture
>>   
>>      introduction
>>      irq-chip-model
>> +   boot-image-header
>>   
>>      features
>>   
>> -- 
>> 2.31.1
>>


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-11-24  7:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-21 12:16 [PATCH v1 0/2] docs/LoongArch: Add English and Chinese versions of boot image header Yanteng Si
2022-11-21 12:16 ` [PATCH v1 1/2] docs/LoongArch: Add " Yanteng Si
2022-11-21 16:58   ` Wu XiangCheng
2022-11-24  7:10     ` Yanteng Si
2022-11-21 12:16 ` [PATCH v1 2/2] docs/zh_CN: Add boot-image-header Chinese translation Yanteng Si

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.