DistroKit Mailinglist
 help / color / mirror / Atom feed
From: Roland Hieber <rhi@pengutronix.de>
To: Oleksij Rempel <o.rempel@pengutronix.de>
Cc: distrokit@pengutronix.de
Subject: Re: [DistroKit] [PATCH v1] platform-mipsel: add basic qemu malta support
Date: Thu, 15 Jul 2021 16:48:42 +0200	[thread overview]
Message-ID: <20210715144842.ktvojdqrme3glcg4@pengutronix.de> (raw)
In-Reply-To: <20210715144711.p36hgbrm74spxkcn@pengutronix.de>

On Thu, Jul 15, 2021 at 04:47:11PM +0200, Roland Hieber wrote:
> Ooof, long patch, I'll snip it for my comments…

Oh, I replied to v1, but the comments still apply to the version applied
on the next branch.

 - Roland

> On Thu, Jul 08, 2021 at 06:16:28AM +0200, Oleksij Rempel wrote:
> > Add MIPSEL (MIPS little-endian 32bit) platform.
> > 
> > Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
> > ---
> >  configs/platform-mipsel/barebox-malta.config  |  748 ++++
> >  .../platform-mipsel/barebox-malta.config.diff |  153 +
> >  configs/platform-mipsel/barebox.config        |  712 ++++
> >  .../config/images/malta.config                |   28 +
> >  configs/platform-mipsel/kernelconfig          | 3301 +++++++++++++++
> >  configs/platform-mipsel/kernelconfig-malta    | 3723 +++++++++++++++++
> >  .../platform-mipsel/kernelconfig-malta.diff   | 1677 ++++++++
> >  configs/platform-mipsel/platformconfig        |  207 +
> >  .../platforms/barebox-0-common.in             |   33 +
> >  .../platforms/barebox-malta.in                |    8 +
> >  .../platform-mipsel/platforms/blspec-malta.in |    5 +
> >  .../platform-mipsel/platforms/image-kernel.in |    4 +
> >  .../platform-mipsel/platforms/image-malta.in  |   10 +
> >  .../platform-mipsel/platforms/kernel-malta.in |    9 +
> >  configs/platform-mipsel/platforms/kernel.in   |   26 +
> >  .../projectroot/loader/entries/malta.conf     |    6 +
> >  configs/platform-mipsel/qemu-common           |   92 +
> >  .../platform-mipsel/rules/barebox-common.make |   84 +
> >  .../platform-mipsel/rules/barebox-malta.make  |  112 +
> >  .../platform-mipsel/rules/blspec-malta.make   |   37 +
> >  configs/platform-mipsel/rules/host-qemu.make  |  233 ++
> >  .../platform-mipsel/rules/image-malta.make    |   32 +
> >  .../platform-mipsel/rules/kernel-malta.make   |  115 +
> >  configs/platform-mipsel/rules/kernel.make     |   82 +
> >  configs/platform-mipsel/run                   |  121 +
> >  configs/ptxconfig                             |    6 +-
> >  doc/hardware.rst                              |   15 +
> >  doc/hardware_mipsel_qemu.rst                  |   13 +
> >  28 files changed, 11587 insertions(+), 5 deletions(-)
> >  create mode 100644 configs/platform-mipsel/barebox-malta.config
> >  create mode 100644 configs/platform-mipsel/barebox-malta.config.diff
> >  create mode 100644 configs/platform-mipsel/barebox.config
> >  create mode 100644 configs/platform-mipsel/config/images/malta.config
> >  create mode 100644 configs/platform-mipsel/kernelconfig
> >  create mode 100644 configs/platform-mipsel/kernelconfig-malta
> >  create mode 100644 configs/platform-mipsel/kernelconfig-malta.diff
> >  create mode 100644 configs/platform-mipsel/platformconfig
> >  create mode 100644 configs/platform-mipsel/platforms/barebox-0-common.in
> >  create mode 100644 configs/platform-mipsel/platforms/barebox-malta.in
> >  create mode 100644 configs/platform-mipsel/platforms/blspec-malta.in
> >  create mode 100644 configs/platform-mipsel/platforms/image-kernel.in
> >  create mode 100644 configs/platform-mipsel/platforms/image-malta.in
> >  create mode 100644 configs/platform-mipsel/platforms/kernel-malta.in
> >  create mode 100644 configs/platform-mipsel/platforms/kernel.in
> >  create mode 100644 configs/platform-mipsel/projectroot/loader/entries/malta.conf
> >  create mode 100755 configs/platform-mipsel/qemu-common
> >  create mode 100644 configs/platform-mipsel/rules/barebox-common.make
> >  create mode 100644 configs/platform-mipsel/rules/barebox-malta.make
> >  create mode 100644 configs/platform-mipsel/rules/blspec-malta.make
> >  create mode 100644 configs/platform-mipsel/rules/host-qemu.make
> >  create mode 100644 configs/platform-mipsel/rules/image-malta.make
> >  create mode 100644 configs/platform-mipsel/rules/kernel-malta.make
> >  create mode 100644 configs/platform-mipsel/rules/kernel.make
> >  create mode 100755 configs/platform-mipsel/run
> >  create mode 100644 doc/hardware_mipsel_qemu.rst
> > 
> 
> [...]
> 
> > diff --git a/configs/platform-mipsel/rules/host-qemu.make b/configs/platform-mipsel/rules/host-qemu.make
> > new file mode 100644
> > index 0000000..a841f4c
> > --- /dev/null
> > +++ b/configs/platform-mipsel/rules/host-qemu.make
> > @@ -0,0 +1,233 @@
> > +# -*-makefile-*-
> > +#
> > +# Copyright (C) 2012 by Bernhard Walle <bernhard@bwalle.de>
> > +#           (C) 2013 by Michael Olbrich <m.olbrich@pengutronix.de>
> > +#           (C) 2013 by Jan Luebbe <j.luebbe@pengutronix.de>
> > +#
> > +# For further information about the PTXdist project and license conditions
> > +# see the README file.
> > +#
> > +
> > +#
> > +# We provide this package
> > +#
> > +HOST_PACKAGES-$(PTXCONF_HOST_QEMU) += host-qemu
> > +
> > +#
> > +# Paths and names
> > +#
> > +HOST_QEMU_VERSION	:= 5.2.0
> > +HOST_QEMU_MD5		:= 179f86928835da857c237b42f4b2df73
> > +HOST_QEMU		:= qemu-$(HOST_QEMU_VERSION)
> > +HOST_QEMU_SUFFIX	:= tar.xz
> > +HOST_QEMU_URL		:= https://download.qemu.org/$(HOST_QEMU).$(HOST_QEMU_SUFFIX)
> > +HOST_QEMU_SOURCE	:= $(SRCDIR)/$(HOST_QEMU).$(HOST_QEMU_SUFFIX)
> > +HOST_QEMU_DIR		:= $(HOST_BUILDDIR)/$(HOST_QEMU)
> > +HOST_QEMU_LICENSE	:= GPL-2.0-only AND GPL-2.0-or-later AND MIT AND BSD-1-Clause AND BSD-2-Clause AND BSD-3-Clause
> > +HOST_QEMU_BUILD_OOT	:= YES
> > +
> > +# ----------------------------------------------------------------------------
> > +# Prepare
> > +# ----------------------------------------------------------------------------
> > +
> > +#
> > +# autoconf
> > +#
> > +
> > +HOST_QEMU_BROKEN_ICECC	:= \
> > +	$(call ptx/sh, gcc -dumpversion | awk -F . '{ if ($$1*100 + $$2 < 409) print "y" }')
> > +
> > +ifeq ($(HOST_QEMU_BROKEN_ICECC),y)
> > +HOST_QEMU_MAKE_ENV	:= PTXDIST_ICECC=$(PTXDIST_ICERUN)
> > +endif
> > +HOST_QEMU_MAKE_OPT	:= V=$(filter 1,$(PTXDIST_VERBOSE))
> > +
> > +HOST_QEMU_TARGETS	:= $(PTXCONF_ARCH_STRING)
> > +ifndef PTXCONF_ARCH_X86_64
> > +ifdef PTXCONF_ARCH_X86
> > +HOST_QEMU_TARGETS	:= i386
> > +endif
> > +endif
> > +ifdef PTXCONF_ARCH_ARM64
> > +HOST_QEMU_TARGETS	:= aarch64
> > +endif
> > +ifdef PTXCONF_ARCH_MIPS
> > +ifdef PTXCONF_ENDIAN_LITTLE
> > +HOST_QEMU_TARGETS	:= mipsel
> > +endif
> > +endif
> > +HOST_QEMU_SYS_TARGETS	:= $(patsubst %,%-softmmu,$(HOST_QEMU_TARGETS))
> > +HOST_QEMU_USR_TARGETS	:= $(patsubst %,%-linux-user,$(HOST_QEMU_TARGETS))
> > +
> > +HOST_QEMU_CONF_TOOL	:= autoconf
> > +# Note: not realy autoconf:
> > +# e.g. there is --enable-debug but not --disable-debug
> > +HOST_QEMU_CONF_OPT	:= \
> > +	--prefix=/. \
> > +	--target-list=" \
> > +		$(call ptx/ifdef, PTXCONF_HOST_QEMU_SYS,$(HOST_QEMU_SYS_TARGETS),) \
> > +		$(call ptx/ifdef, PTXCONF_HOST_QEMU_USR,$(HOST_QEMU_USR_TARGETS),) \
> > +	" \
> > +	--meson=meson \
> > +	--ninja=ninja \
> > +	--disable-sanitizers \
> > +	--disable-tsan \
> > +	--disable-werror \
> > +	--enable-stack-protector \
> > +	--audio-drv-list= \
> > +	--block-drv-rw-whitelist= \
> > +	--block-drv-ro-whitelist= \
> > +	--enable-trace-backends=nop \
> > +	--disable-tcg-interpreter \
> > +	--enable-malloc-trim \
> > +	--with-coroutine= \
> > +	--tls-priority=NORMAL \
> > +	--disable-plugins \
> > +	--disable-containers \
> > +	--$(call ptx/endis, PTXCONF_HOST_QEMU_SYS)-system \
> > +	--disable-user \
> > +	--$(call ptx/endis, PTXCONF_HOST_QEMU_USR)-linux-user \
> > +	--disable-bsd-user \
> > +	--disable-docs \
> > +	--disable-guest-agent \
> > +	--disable-guest-agent-msi \
> > +	--enable-pie \
> > +	--disable-modules \
> > +	--disable-module-upgrades \
> > +	--disable-debug-tcg \
> > +	--disable-debug-info \
> > +	--disable-sparse \
> > +	--disable-safe-stack \
> > +	--disable-gnutls \
> > +	--disable-nettle \
> > +	--disable-gcrypt \
> > +	--disable-auth-pam \
> > +	--disable-sdl \
> > +	--disable-sdl-image \
> > +	--disable-gtk \
> > +	--disable-vte \
> > +	--disable-curses \
> > +	--enable-iconv \
> > +	--disable-vnc \
> > +	--disable-vnc-sasl \
> > +	--disable-vnc-jpeg \
> > +	--disable-vnc-png \
> > +	--disable-cocoa \
> > +	--enable-virtfs \
> > +	--disable-virtiofsd \
> > +	--disable-libudev \
> > +	--disable-mpath \
> > +	--disable-xen \
> > +	--disable-xen-pci-passthrough \
> > +	--disable-brlapi \
> > +	--disable-curl \
> > +	--enable-membarrier \
> > +	--enable-fdt \
> > +	--enable-kvm \
> > +	--disable-hax \
> > +	--disable-hvf \
> > +	--disable-whpx \
> > +	--disable-rdma \
> > +	--disable-pvrdma \
> > +	--disable-netmap \
> > +	--disable-linux-aio \
> > +	--disable-linux-io-uring \
> > +	--enable-cap-ng \
> > +	--enable-attr \
> > +	--enable-vhost-net \
> > +	--enable-vhost-vsock \
> > +	--enable-vhost-scsi \
> > +	--disable-vhost-crypto \
> > +	--enable-vhost-kernel \
> > +	--disable-vhost-user \
> > +	--disable-vhost-user-blk-server \
> > +	--disable-vhost-vdpa \
> > +	--disable-spice \
> > +	--disable-rbd \
> > +	--disable-libiscsi \
> > +	--disable-libnfs \
> > +	--disable-smartcard \
> > +	--disable-u2f \
> > +	--$(call ptx/endis, PTXCONF_HOST_QEMU_SYS)-libusb \
> > +	--disable-live-block-migration \
> > +	--disable-usb-redir \
> > +	--disable-lzo \
> > +	--disable-snappy \
> > +	--disable-bzip2 \
> > +	--disable-lzfse \
> > +	--disable-zstd \
> > +	--disable-seccomp \
> > +	--enable-coroutine-pool \
> > +	--disable-glusterfs \
> > +	--disable-tpm \
> > +	--disable-libssh \
> > +	--disable-numa \
> > +	--disable-libxml2 \
> > +	--disable-tcmalloc \
> > +	--disable-jemalloc \
> > +	--enable-replication \
> > +	--disable-opengl \
> > +	--disable-virglrenderer \
> > +	--disable-xfsctl \
> > +	--disable-qom-cast-debug \
> > +	--disable-tools \
> > +	--disable-bochs \
> > +	--disable-cloop \
> > +	--disable-dmg \
> > +	--disable-qcow1 \
> > +	--disable-vdi \
> > +	--disable-vvfat \
> > +	--disable-qed \
> > +	--disable-parallels \
> > +	--disable-sheepdog \
> > +	--disable-crypto-afalg \
> > +	--disable-capstone \
> > +	--disable-debug-mutex \
> > +	--disable-libpmem \
> > +	--disable-xkbcommon \
> > +	--disable-rng-none \
> > +	--disable-libdaxctl \
> > +	\
> > +	--disable-fuzzing \
> > +	--disable-keyring
> > +
> > +# Use '=' to delay $(shell ...) calls until this is needed
> > +QEMU_CROSS_QEMU = $(call ptx/get-alternative, config/qemu, qemu-cross)
> > +QEMU_CROSS_DL = $(shell ptxd_cross_cc_v | sed -n -e 's/.* -dynamic-linker \([^ ]*\).*/\1/p')
> > +QEMU_CROSS_TOOLEXECLIBDIR = $(shell dirname $$(realpath $$(ptxd_cross_cc -print-file-name=libatomic.so 2> /dev/null)))
> > +QEMU_CROSS_LD_LIBRARY_PATH = $(PTXDIST_SYSROOT_TOOLCHAIN)/lib:$(QEMU_CROSS_TOOLEXECLIBDIR):$(SYSROOT)/$(CROSS_LIB_DIR):$(SYSROOT)/usr/$(CROSS_LIB_DIR)
> > +
> > +QEMU_CROSS_QEMU_ENV = \
> > +	QEMU="$(PTXDIST_SYSROOT_HOST)/bin/qemu-$(HOST_QEMU_TARGETS)" \
> > +	KERNEL_VERSION="$(KERNEL_VERSION)" \
> > +	QEMU_LD_PREFIX="$(PTXDIST_SYSROOT_TOOLCHAIN)" \
> > +	QEMU_LD_LIBRARY_PATH="$(QEMU_CROSS_LD_LIBRARY_PATH)" \
> > +	LINKER="$(shell readlink -f "$$(ptxd_cross_cc -print-file-name=$$(ptxd_get_dl))")"
> > +
> > +$(STATEDIR)/host-qemu.install:
> > +	@$(call targetinfo)
> > +	@$(call world/install, HOST_QEMU)
> > +ifdef PTXCONF_HOST_QEMU_SYS
> > +#	# necessary for qemu to find its ROM files
> > +	@ln -vsf share/qemu $(HOST_QEMU_PKGDIR)/pc-bios
> > +endif
> > +	@$(call touch)
> > +
> > +$(STATEDIR)/host-qemu.install.post:
> > +	@$(call targetinfo)
> > +	@$(call world/install.post, HOST_QEMU)
> > +ifdef PTXCONF_HOST_QEMU_USR
> > +	@$(QEMU_CROSS_QEMU_ENV) ptxd_replace_magic $(QEMU_CROSS_QEMU) > $(PTXDIST_SYSROOT_CROSS)/bin/qemu-cross
> > +	@chmod +x $(PTXDIST_SYSROOT_CROSS)/bin/qemu-cross
> > +	@install -d -m 755 $(PTXDIST_SYSROOT_CROSS)/bin/qemu/
> > +	@sed \
> > +		-e 's|RTLDLIST=.*|RTLDLIST="$(PTXDIST_SYSROOT_TOOLCHAIN)$(QEMU_CROSS_DL)"|' \
> > +		-e 's|eval $$add_env|eval $(PTXDIST_SYSROOT_CROSS)/bin/qemu-cross -E "$${add_env// /,}"|' \
> > +		-e 's|verify_out=`|verify_out=`$(PTXDIST_SYSROOT_CROSS)/bin/qemu-cross |' \
> > +		-e 's|#! */.*$$|#!$(shell readlink $(PTXDIST_TOPDIR)/bin/bash)|' \
> > +		$(PTXDIST_SYSROOT_TOOLCHAIN)/usr/bin/ldd > $(PTXDIST_SYSROOT_CROSS)/bin/qemu/ldd
> > +	@chmod +x $(PTXDIST_SYSROOT_CROSS)/bin/qemu/ldd
> > +endif
> > +	@$(call touch)
> > +
> > +# vim: syntax=make
> 
> PTXdist upstream meanwhile has host-qemu 6.0.0, but you probably forked
> it for this hunk of the diff:?
> 
> --- /ptx/work/WORK_BEEMI/rhi/ptxdist/rules/host-qemu.make       2021-07-08 22:18:54.757818032 +0200
> +++ configs/platform-mipsel/rules/host-qemu.make        2021-07-14 11:16:02.145438261 +0200
> @@ -51,11 +51,6 @@
>  ifdef PTXCONF_ARCH_ARM64
>  HOST_QEMU_TARGETS      := aarch64
>  endif
> +ifdef PTXCONF_ARCH_MIPS
> +ifdef PTXCONF_ENDIAN_LITTLE
> +HOST_QEMU_TARGETS      := mipsel
> +endif
> +endif
>  HOST_QEMU_SYS_TARGETS  := $(patsubst %,%-softmmu,$(HOST_QEMU_TARGETS))
>  HOST_QEMU_USR_TARGETS  := $(patsubst %,%-linux-user,$(HOST_QEMU_TARGETS))
>  
> 
> …and I cannot find a patch with that hunk on the PTXdist mailing list,
> so please send it upstream too so that we don't have to keep that rule
> in the BSP forever :-)
> 
> [...]
> 
> > diff --git a/configs/ptxconfig b/configs/ptxconfig
> > index c97e321..3312b85 100644
> > --- a/configs/ptxconfig
> > +++ b/configs/ptxconfig
> > @@ -156,11 +156,8 @@ PTXCONF_CROSS_PKG_CONFIG_WRAPPER=y
> >  #
> >  # gdb                           
> >  #
> > -PTXCONF_GDB_TOOLCHAIN_VERSION=y
> > -PTXCONF_GDB_MD5=""
> >  # PTXCONF_GDB is not set
> > -PTXCONF_GDBSERVER=y
> > -PTXCONF_GDBSERVER_SHARED=y
> > +# PTXCONF_GDBSERVER is not set
> 
> Is there any reason why you disabled GDBSERVER? It's a nice tool to have
> for debugging.
> 
>  - Roland
> 
> >  # end of gdb                           
> >  
> >  # PTXCONF_LATRACE is not set
> > @@ -344,7 +341,6 @@ PTXCONF_GLIBC_LDCONFIG_RC_ONCE=y
> >  
> >  PTXCONF_LIBC_C=y
> >  PTXCONF_LIBC_PTHREAD=y
> > -PTXCONF_LIBC_THREAD_DB=y
> >  PTXCONF_LIBC_RT=y
> >  PTXCONF_LIBC_DL=y
> >  PTXCONF_LIBC_CRYPT=y
> > diff --git a/doc/hardware.rst b/doc/hardware.rst
> > index a478f5f..f13f076 100644
> > --- a/doc/hardware.rst
> > +++ b/doc/hardware.rst
> > @@ -154,6 +154,21 @@ mips Platform
> >     hardware_mips_qemu
> >  
> >  
> > +mips Platform
> > +-------------
> > +
> > ++-------------------------+------------------------------------------+
> > +| platformconfig:         | ``configs/platform-mipsel/platformconfig`` |
> > ++-------------------------+------------------------------------------+
> > +| Toolchain architecture: | ``mipsel-softfloat-linux-gnu``             |
> > ++-------------------------+------------------------------------------+
> > +
> > +.. toctree::
> > +   :maxdepth: 1
> > +
> > +   hardware_mipsel_qemu
> > +
> > +
> >  x86_64 Platform
> >  ---------------
> >  
> > diff --git a/doc/hardware_mipsel_qemu.rst b/doc/hardware_mipsel_qemu.rst
> > new file mode 100644
> > index 0000000..0533204
> > --- /dev/null
> > +++ b/doc/hardware_mipsel_qemu.rst
> > @@ -0,0 +1,13 @@
> > +QEmu
> > +====
> > +
> > +The mipsel platform is ready to run in qemu, using the MIPS Malta board
> > +simulation.
> > +There are two ways to run DistoKit inside qemu:
> > +
> > +* With barebox:
> > +  Run ``./configs/platform-mipsel/run barebox`` to barebox. The barebox should
> > +  boot the kernel if supported.
> > +* Without barebox:
> > +  Run ``./configs/platform-mipsel/run`` to directly start the kernel without
> > +  barebox.
> > -- 
> > 2.30.2
> > 
> > 
> > _______________________________________________
> > DistroKit mailing list
> > DistroKit@pengutronix.de
> > 
> 
> -- 
> Roland Hieber, Pengutronix e.K.          | r.hieber@pengutronix.de     |
> Steuerwalder Str. 21                     | https://www.pengutronix.de/ |
> 31137 Hildesheim, Germany                | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686         | Fax:   +49-5121-206917-5555 |
> 
> _______________________________________________
> DistroKit mailing list
> DistroKit@pengutronix.de

-- 
Roland Hieber, Pengutronix e.K.          | r.hieber@pengutronix.de     |
Steuerwalder Str. 21                     | https://www.pengutronix.de/ |
31137 Hildesheim, Germany                | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686         | Fax:   +49-5121-206917-5555 |

_______________________________________________
DistroKit mailing list
DistroKit@pengutronix.de

  reply	other threads:[~2021-07-15 14:48 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-08  4:16 Oleksij Rempel
2021-07-08  6:21 ` Ahmad Fatoum
2021-07-15 14:47 ` Roland Hieber
2021-07-15 14:48   ` Roland Hieber [this message]
2021-07-15 15:13   ` Oleksij Rempel
2021-07-15 21:38     ` [DistroKit] [PATCH] re-enable gdbserver Roland Hieber
2021-07-16  5:29       ` Robert Schwebel
2021-07-16  7:03         ` Oleksij Rempel
2021-07-16  8:38           ` Roland Hieber

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210715144842.ktvojdqrme3glcg4@pengutronix.de \
    --to=rhi@pengutronix.de \
    --cc=distrokit@pengutronix.de \
    --cc=o.rempel@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox