linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: "Maciej W. Rozycki" <macro@imgtec.com>
To: Ralf Baechle <ralf@linux-mips.org>
Cc: Matt Redfearn <matt.redfearn@imgtec.com>,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>,
	Will Deacon <will.deacon@arm.com>,
	Peter Zijlstra <peterz@infradead.org>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	<linux-kernel@vger.kernel.org>, Arnd Bergmann <arnd@arndb.de>,
	<linux-arch@vger.kernel.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Russell King - ARM Linux <linux@arm.linux.org.uk>,
	<virtualization@lists.linux-foundation.org>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
	"H. Peter Anvin" <hpa@zytor.com>, Joe Perches <joe@perches.com>,
	David Miller <davem@davemloft.net>, <linux-ia64@vger.kernel.org>,
	<linuxppc-dev@lists.ozlabs.org>, <linux-s390@vger.kernel.org>,
	<sparclinux@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-metag@vger.kernel.org>, <linux-mips@linux-mips.org>,
	<x86@kernel.org>, <user-mode-linux-devel@lists.sourceforge.net>,
	<adi-buildroot-devel@lists.sourceforge.net>,
	<linux-sh@vger.kernel.org>, <linux-xtensa@linux-xtensa.org>,
	<xen-devel@lists.xenproject.org>, Ingo Molnar <mingo@kernel.org>,
	<ddaney.cavm@gmail.com>, <james.hogan@imgtec.com>,
	Michael Ellerman <mpe@ellerman.id.au>
Subject: Re: [v3,11/41] mips: reuse asm-generic/barrier.h
Date: Wed, 27 Jan 2016 12:09:32 +0000	[thread overview]
Message-ID: <alpine.DEB.2.00.1601271126350.5958@tp.orcam.me.uk> (raw)
In-Reply-To: <20160127104032.GB2939@linux-mips.org>

On Wed, 27 Jan 2016, Ralf Baechle wrote:

> > So you need to build a different kernel for some types of MIPS systems?
> 
> Yes.  We can't really do without.  Classic MIPS code is not relocatable
> without the complexity of PIC code as used by ELF DSOs - and their
> performanc penalty.  Plus we have a number of architecture revisions
> ovr the decades, big and little endian, 32 and 64 bit as the major
> stumbling stones.  There however are groups of similar systems that
> can share kernel binaries.

 Matt (cc-ed) has recently posted patches to add support for a relocatable 
kernel, implemented without the usual overhead of PIC code.  It works by 
retaining relocations in a fully-linked binary and then simply replaying 
the work the static linker does when assigning addresses, as the image 
loaded is copied to its intended destination at an early bootstrap stage.  
See: 
<http://www.linux-mips.org/cgi-bin/mesg.cgi?a=linux-mips&i=1449137297-30464-1-git-send-email-matt.redfearn%40imgtec.com> 
for details.

 I think this framework can be reused by carefully choosing instructions 
used in early bootstrap code, up to the relocation stage, so that it is 
runnable anywhere (not the same as PIC!) like early ld.so initialisation 
and then loading the whole attached image starting from an address where 
RAM does exist on target hardware.

 Endianness is a different matter, obviously we can't build a single image 
for both, although for distributions' sake an approach similar to one used 
with bi-endian firmware (for hardware which has an easy way to switch the 
endianness, e.g. a physical jumper or a configuration bit stored in flash 
memory; not to be confused with the reverse user endianness mode) might be 
feasible, by glueing two kernel images together and then selecting the 
right one early in bootstrap, perhaps again reusing Matt's framework.  
I'm not sure if this is worth the effort though, I suspect the usage level 
of this feature would be minimal.

 All in all I think making a generic MIPS kernel just might be feasible, 
but with the diversity of options available the effort required would be 
enormous.  NetBSD for example I believe supports building a kernel that 
correctly runs on both R3000 (MIPS I, 32-bit) and R4000 (MIPS III, 64-bit) 
DEC hardware (as did DEC Ultrix, the vendor OS for these systems).  These 
processors are different enough from each other that you cannot use the 
same code for cache, memory and exception management in an OS kernel -- 
backward compatibility is only provided for user software.  That proves 
the concept, however in a very limited way only, not even covering SMP, 
and their R4000 kernel does not support 64-bit userland I believe.  They 
still have completely separate ports for other MIPS hardware, such as for 
Broadcom SiByte SB-1 (MIPS64r1) processors.

  Maciej

  reply	other threads:[~2016-01-27 12:09 UTC|newest]

Thread overview: 155+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-10 14:16 [PATCH v3 00/41] arch: barrier cleanup + barriers for virt Michael S. Tsirkin
2016-01-10 14:16 ` [PATCH v3 01/41] lcoking/barriers, arch: Use smp barriers in smp_store_release() Michael S. Tsirkin
2016-01-12 16:28   ` Paul E. McKenney
2016-01-12 18:40     ` Michael S. Tsirkin
2016-01-10 14:16 ` [PATCH v3 02/41] asm-generic: guard smp_store_release/load_acquire Michael S. Tsirkin
2016-01-10 14:16 ` [PATCH v3 03/41] ia64: rename nop->iosapic_nop Michael S. Tsirkin
2016-01-10 14:17 ` [PATCH v3 04/41] ia64: reuse asm-generic/barrier.h Michael S. Tsirkin
2016-01-10 14:17 ` [PATCH v3 05/41] powerpc: " Michael S. Tsirkin
2016-01-12 16:31   ` Paul E. McKenney
2016-01-10 14:17 ` [PATCH v3 06/41] s390: " Michael S. Tsirkin
2016-01-10 14:17 ` [PATCH v3 07/41] sparc: " Michael S. Tsirkin
2016-01-10 14:17 ` [PATCH v3 08/41] arm: " Michael S. Tsirkin
2016-01-10 14:17 ` [PATCH v3 09/41] arm64: " Michael S. Tsirkin
2016-01-10 14:17 ` [PATCH v3 10/41] metag: " Michael S. Tsirkin
2016-01-10 14:18 ` [PATCH v3 11/41] mips: " Michael S. Tsirkin
2016-01-12  1:14   ` [v3,11/41] " Leonid Yegoshin
2016-01-12  8:43     ` Michael S. Tsirkin
2016-01-12  9:51       ` Peter Zijlstra
2016-01-12  9:27     ` Peter Zijlstra
2016-01-12 10:25       ` Peter Zijlstra
2016-01-12 10:40         ` Peter Zijlstra
2016-01-12 11:41           ` Will Deacon
2016-01-12 20:45             ` Leonid Yegoshin
2016-01-12 21:40               ` Peter Zijlstra
2016-01-13  0:21                 ` Leonid Yegoshin
2016-01-13 10:45               ` Will Deacon
2016-01-13 19:02                 ` Leonid Yegoshin
2016-01-13 20:48                   ` Peter Zijlstra
2016-01-13 20:58                     ` Leonid Yegoshin
2016-01-14 12:04                       ` Will Deacon
2016-01-14 16:16                         ` Paul E. McKenney
2016-01-14 19:42                           ` Leonid Yegoshin
2016-01-14 20:15                             ` Peter Zijlstra
2016-01-14 20:36                               ` Paul E. McKenney
2016-01-14 20:46                               ` Peter Zijlstra
2016-01-14 20:46                               ` Leonid Yegoshin
2016-01-14 21:34                                 ` Paul E. McKenney
2016-01-14 21:45                                   ` Leonid Yegoshin
2016-01-14 22:24                                     ` Paul E. McKenney
2016-01-14 23:04                                       ` Leonid Yegoshin
2016-01-14 20:12                         ` Leonid Yegoshin
2016-01-14 20:48                           ` Paul E. McKenney
2016-01-14 21:24                             ` Leonid Yegoshin
2016-01-14 22:20                               ` Paul E. McKenney
2016-01-15  9:57                                 ` Will Deacon
2016-01-15 18:54                                   ` Leonid Yegoshin
2016-01-26 10:24                                 ` Peter Zijlstra
2016-01-26 10:32                                   ` Peter Zijlstra
2016-01-26 11:09                                     ` Will Deacon
2016-01-26 20:11                                       ` Paul E. McKenney
2016-01-27  8:35                                         ` [PATCH] documentation: Add disclaimer Peter Zijlstra
2016-01-27 10:11                                           ` Will Deacon
2016-04-14 21:40                                           ` Paul E. McKenney
2016-01-27 14:57                                         ` David Howells
2016-01-27 23:35                                           ` Paul E. McKenney
2016-01-28 20:02                                           ` David Howells
2016-04-14 21:40                                           ` Paul E. McKenney
2016-01-26 19:44                                   ` [v3,11/41] mips: reuse asm-generic/barrier.h Paul E. McKenney
2016-01-18  8:19                             ` Herbert Xu
2016-01-18 15:46                               ` Paul E. McKenney
2016-01-26 16:52                                 ` Boqun Feng
2016-01-26 17:22                                   ` Peter Zijlstra
2016-01-26 19:44                                     ` Linus Torvalds
2016-01-26 20:10                                       ` Paul E. McKenney
2016-01-26 22:15                                         ` Linus Torvalds
2016-01-26 22:33                                           ` Linus Torvalds
2016-01-26 23:29                                             ` Paul E. McKenney
2016-01-26 23:45                                               ` Linus Torvalds
2016-01-27  0:57                                                 ` Paul E. McKenney
2016-01-27  2:04                                               ` Boqun Feng
2016-01-27 23:30                                                 ` Paul E. McKenney
2016-01-27  7:51                                             ` Peter Zijlstra
2016-01-27  8:05                                               ` Linus Torvalds
2016-01-26 19:51                                   ` Paul E. McKenney
2016-01-13 22:26                 ` Leonid Yegoshin
2016-01-14  9:24                   ` Michael S. Tsirkin
2016-01-14 12:14                   ` Will Deacon
2016-01-14 19:28                     ` Leonid Yegoshin
2016-01-14 20:34                       ` Paul E. McKenney
2016-01-14 21:01                         ` Leonid Yegoshin
2016-01-14 21:29                           ` Paul E. McKenney
2016-01-14 21:36                             ` Leonid Yegoshin
2016-01-14 22:55                               ` Paul E. McKenney
2016-01-14 23:33                                 ` Leonid Yegoshin
2016-01-15  0:47                                   ` Paul E. McKenney
2016-01-15  1:07                                     ` Leonid Yegoshin
2016-01-27 11:26                                       ` Maciej W. Rozycki
2016-01-28  0:48                                         ` Leonid Yegoshin
2016-01-29 13:38                                           ` Maciej W. Rozycki
2016-01-28  0:58                                         ` Leonid Yegoshin
2016-01-27 10:40                                     ` Ralf Baechle
2016-01-27 12:09                                       ` Maciej W. Rozycki [this message]
2016-01-15 10:24                                 ` Will Deacon
2016-01-15 17:54                                   ` Paul E. McKenney
2016-01-15 19:28                                     ` Paul E. McKenney
2016-01-25 14:41                                       ` Will Deacon
2016-01-26  1:06                                         ` Paul E. McKenney
2016-01-26 12:10                                           ` Will Deacon
2016-01-26 23:37                                             ` Paul E. McKenney
2016-01-27 10:23                                               ` Will Deacon
2016-01-15  8:55                             ` Peter Zijlstra
2016-01-15  9:13                               ` Peter Zijlstra
2016-01-15 17:46                                 ` Paul E. McKenney
2016-01-15 21:27                                   ` Peter Zijlstra
2016-01-15 21:58                                     ` Paul E. McKenney
2016-01-25 16:42                                       ` Will Deacon
2016-01-26  6:03                                         ` Paul E. McKenney
2016-01-26 10:19                                           ` Peter Zijlstra
2016-01-26 20:13                                             ` Paul E. McKenney
2016-01-27  8:39                                               ` Peter Zijlstra
2016-01-26 12:16                                           ` Will Deacon
2016-01-26 14:35                                             ` Boqun Feng
2016-01-26 19:58                                             ` Paul E. McKenney
2016-01-27 10:25                                               ` Will Deacon
2016-01-27 23:32                                                 ` Paul E. McKenney
2016-01-15 17:39                               ` Paul E. McKenney
2016-01-15 21:29                                 ` Peter Zijlstra
2016-01-15 22:01                                   ` Paul E. McKenney
2016-01-25 18:02                                 ` Will Deacon
2016-01-26  6:12                                   ` Paul E. McKenney
2016-01-26 10:15                                     ` Peter Zijlstra
2016-01-10 14:18 ` [PATCH v3 12/41] x86/um: " Michael S. Tsirkin
2016-01-10 14:18 ` [PATCH v3 13/41] x86: " Michael S. Tsirkin
2016-01-12 14:10   ` Thomas Gleixner
2016-01-10 14:18 ` [PATCH v3 14/41] asm-generic: add __smp_xxx wrappers Michael S. Tsirkin
2016-01-10 14:18 ` [PATCH v3 15/41] powerpc: define __smp_xxx Michael S. Tsirkin
2016-01-10 14:18 ` [PATCH v3 16/41] arm64: " Michael S. Tsirkin
2016-01-10 14:18 ` [PATCH v3 17/41] arm: " Michael S. Tsirkin
2016-01-10 14:19 ` [PATCH v3 18/41] blackfin: " Michael S. Tsirkin
2016-01-10 14:19 ` [PATCH v3 19/41] ia64: " Michael S. Tsirkin
2016-01-10 14:19 ` [PATCH v3 20/41] metag: " Michael S. Tsirkin
2016-01-10 14:19 ` [PATCH v3 21/41] mips: " Michael S. Tsirkin
2016-01-10 14:19 ` [PATCH v3 22/41] s390: " Michael S. Tsirkin
2016-01-10 14:19 ` [PATCH v3 23/41] sh: define __smp_xxx, fix smp_store_mb for !SMP Michael S. Tsirkin
2016-01-10 14:19 ` [PATCH v3 24/41] sparc: define __smp_xxx Michael S. Tsirkin
2016-01-10 14:20 ` [PATCH v3 25/41] tile: " Michael S. Tsirkin
2016-01-10 14:20 ` [PATCH v3 26/41] xtensa: " Michael S. Tsirkin
2016-01-10 14:20 ` [PATCH v3 27/41] x86: " Michael S. Tsirkin
2016-01-12 14:11   ` Thomas Gleixner
2016-01-10 14:20 ` [PATCH v3 28/41] asm-generic: implement virt_xxx memory barriers Michael S. Tsirkin
2016-01-10 14:20 ` [PATCH v3 29/41] Revert "virtio_ring: Update weak barriers to use dma_wmb/rmb" Michael S. Tsirkin
2016-01-10 14:20 ` [PATCH v3 30/41] virtio_ring: update weak barriers to use virt_xxx Michael S. Tsirkin
2016-01-10 14:20 ` [PATCH v3 31/41] sh: support 1 and 2 byte xchg Michael S. Tsirkin
2016-01-10 14:20 ` [PATCH v3 32/41] sh: move xchg_cmpxchg to a header by itself Michael S. Tsirkin
2016-01-10 14:21 ` [PATCH v3 33/41] virtio_ring: use virt_store_mb Michael S. Tsirkin
2016-01-10 14:21 ` [PATCH v3 34/41] checkpatch.pl: add missing memory barriers Michael S. Tsirkin
2016-01-10 14:21 ` [PATCH v3 35/41] checkpatch: check for __smp outside barrier.h Michael S. Tsirkin
2016-01-10 14:21 ` [PATCH v3 36/41] checkpatch: add virt barriers Michael S. Tsirkin
2016-01-10 14:21 ` [PATCH v3 37/41] xenbus: use virt_xxx barriers Michael S. Tsirkin
2016-01-10 14:21 ` [PATCH v3 38/41] xen/io: " Michael S. Tsirkin
2016-01-10 14:21 ` [PATCH v3 39/41] xen/events: " Michael S. Tsirkin
2016-01-11 11:12   ` David Vrabel
2016-01-10 14:22 ` [PATCH v3 40/41] s390: use generic memory barriers Michael S. Tsirkin
2016-01-10 14:22 ` [PATCH v3 41/41] s390: more efficient smp barriers Michael S. Tsirkin
2016-01-12 12:50 ` [PATCH v3 00/41] arch: barrier cleanup + barriers for virt Peter Zijlstra

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=alpine.DEB.2.00.1601271126350.5958@tp.orcam.me.uk \
    --to=macro@imgtec.com \
    --cc=Leonid.Yegoshin@imgtec.com \
    --cc=adi-buildroot-devel@lists.sourceforge.net \
    --cc=andrew.cooper3@citrix.com \
    --cc=arnd@arndb.de \
    --cc=davem@davemloft.net \
    --cc=ddaney.cavm@gmail.com \
    --cc=hpa@zytor.com \
    --cc=james.hogan@imgtec.com \
    --cc=joe@perches.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-metag@vger.kernel.org \
    --cc=linux-mips@linux-mips.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux-xtensa@linux-xtensa.org \
    --cc=linux@arm.linux.org.uk \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=matt.redfearn@imgtec.com \
    --cc=mingo@elte.hu \
    --cc=mingo@kernel.org \
    --cc=mpe@ellerman.id.au \
    --cc=mst@redhat.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=ralf@linux-mips.org \
    --cc=sparclinux@vger.kernel.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=tglx@linutronix.de \
    --cc=user-mode-linux-devel@lists.sourceforge.net \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=will.deacon@arm.com \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /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;
as well as URLs for NNTP newsgroup(s).