[Qemu-devel] [PATCH v5 0/4] allow to load initrd below 4G for recent kernel

Li Zhijian posted 4 patches 10 weeks ago
Test checkpatch failed
Test docker-clang@ubuntu passed
Test docker-quick@centos7 passed
Test asan passed
Test docker-mingw@fedora passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1547197071-14504-1-git-send-email-lizhijian@cn.fujitsu.com
exec.c                                       | 47 ++++++++++++++--------------
hw/core/loader.c                             | 11 +++----
hw/i386/pc.c                                 | 32 ++++++++++++++-----
include/exec/cpu-all.h                       |  2 +-
include/exec/cpu-common.h                    |  8 ++---
include/exec/memory.h                        | 22 ++++++-------
include/standard-headers/asm-x86/bootparam.h | 34 ++++++++++++++++++++
scripts/update-linux-headers.sh              |  4 +++
8 files changed, 106 insertions(+), 54 deletions(-)
create mode 100644 include/standard-headers/asm-x86/bootparam.h

[Qemu-devel] [PATCH v5 0/4] allow to load initrd below 4G for recent kernel

Posted by Li Zhijian 10 weeks ago
Long long ago, linux kernel has supported up to 4G initrd, but it's header
still hard code to allow loading initrd below 2G only.
 cutting from arch/boot/x86/header.S:
 # (Header version 0x0203 or later) the highest safe address for the contents
 # of an initrd. The current kernel allows up to 4 GB, but leave it at 2 GB to
 # avoid possible bootloader bugs.

In order to support more than 2G initrd, qemu must allow loading initrd
above 2G address. Luckly, recent kernel introduced a new field to linux header
named xloadflags:XLF_CAN_BE_LOADED_ABOVE_4G which tells bootloader an optional
and safe address to load initrd.

It's believed that if XLF_CAN_BE_LOADED_ABOVE_4G is set, initrd can
be loaded into any address.

Default roms(Seabios + optionrom(linuxboot_dma)) works as expected with this
patchset.

I stole some comments from yours, fell free to let me know if you don't like this.

changes:
V5: add a few reviewed-tag and update 4/4 changelog and comments
V4:
  - add Reviwed-by tag to 1/4 and 2/4
  - use scripts/update-linux-headers.sh to import bootparam.h
  - minor fix at commit log
V3:
 - rebase code basing on http://patchwork.ozlabs.org/cover/1005990 and
   https://patchew.org/QEMU/20181122133507.30950-1-peter.maydell@linaro.org
 - add new patch 3/4 to import header bootparam.h (Michael S. Tsirkin)

V2: add 2 patches(3/5, 4/5) to fix potential loading issue.


CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Richard Henderson <rth@twiddle.net>
CC: Eduardo Habkost <ehabkost@redhat.com>
CC: "Michael S. Tsirkin" <mst@redhat.com>
CC: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
CC: Stefano Garzarella <sgarzare@redhat.com>
CC: Peter Crosthwaite <crosthwaite.peter@gmail.com>
CC: Peter Maydell <peter.maydell@linaro.org>

Li Zhijian (4):
  unify len and addr type for memory/address APIs
  hw/core/loader.c: Read as long as possible in load_image_size()
  i386: import & use bootparam.h
  i386: allow to load initrd below 4G for recent linux

 exec.c                                       | 47 ++++++++++++++--------------
 hw/core/loader.c                             | 11 +++----
 hw/i386/pc.c                                 | 32 ++++++++++++++-----
 include/exec/cpu-all.h                       |  2 +-
 include/exec/cpu-common.h                    |  8 ++---
 include/exec/memory.h                        | 22 ++++++-------
 include/standard-headers/asm-x86/bootparam.h | 34 ++++++++++++++++++++
 scripts/update-linux-headers.sh              |  4 +++
 8 files changed, 106 insertions(+), 54 deletions(-)
 create mode 100644 include/standard-headers/asm-x86/bootparam.h

-- 
2.7.4


Re: [Qemu-devel] [PATCH v5 0/4] allow to load initrd below 4G for recent kernel

Posted by no-reply@patchew.org 10 weeks ago
Patchew URL: https://patchew.org/QEMU/1547197071-14504-1-git-send-email-lizhijian@cn.fujitsu.com/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Type: series
Message-id: 1547197071-14504-1-git-send-email-lizhijian@cn.fujitsu.com
Subject: [Qemu-devel] [PATCH v5 0/4] allow to load initrd below 4G for recent kernel

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback --color=always base..
=== TEST SCRIPT END ===

From https://github.com/patchew-project/qemu
 * [new tag]         patchew/1547197071-14504-1-git-send-email-lizhijian@cn.fujitsu.com -> patchew/1547197071-14504-1-git-send-email-lizhijian@cn.fujitsu.com
warning: remote HEAD refers to nonexistent ref, unable to checkout.

Switched to a new branch 'test'
a527fea i386: allow to load initrd below 4G for recent linux
7236341 i386: import & use bootparam.h
ae2981c hw/core/loader.c: Read as long as possible in load_image_size()
49e603a unify len and addr type for memory/address APIs

=== OUTPUT BEGIN ===
1/4 Checking commit 49e603a945f2 (unify len and addr type for memory/address APIs)
WARNING: line over 80 characters
#38: FILE: exec.c:2852:
+                                      MemTxAttrs attrs, uint8_t *buf, hwaddr len);

total: 0 errors, 1 warnings, 270 lines checked

Patch 1/4 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
2/4 Checking commit ae2981cbf961 (hw/core/loader.c: Read as long as possible in load_image_size())
3/4 Checking commit 7236341ea82b (i386: import & use bootparam.h)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#42: 
new file mode 100644

ERROR: line over 90 characters
#91: FILE: scripts/update-linux-headers.sh:125:
+        sed -e '/__ASSEMBLY__/,/__ASSEMBLY__/d' $tmpdir/include/asm/bootparam.h > $tmpdir/bootparam.h

WARNING: line over 80 characters
#92: FILE: scripts/update-linux-headers.sh:126:
+        cp_portable $tmpdir/bootparam.h "$output/include/standard-headers/asm-$arch"

total: 1 errors, 2 warnings, 64 lines checked

Patch 3/4 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

4/4 Checking commit a527fea2b274 (i386: allow to load initrd below 4G for recent linux)
ERROR: spaces required around that '+' (ctx:VxV)
#41: FILE: hw/i386/pc.c:1124:
+        lduw_p(header+0x236) & XLF_CAN_BE_LOADED_ABOVE_4G) {
                      ^

total: 1 errors, 0 warnings, 30 lines checked

Patch 4/4 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/1547197071-14504-1-git-send-email-lizhijian@cn.fujitsu.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@redhat.com