public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Aaron Williams <awilliams@marvell.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [EXT] Re: Cavium/Marvell Octeon Support
Date: Wed, 6 Nov 2019 22:18:45 +0000	[thread overview]
Message-ID: <8349720.9jAfi1TMHv@flash> (raw)
In-Reply-To: <20191106150617.D692B24009F@gemini.denx.de>

Hi Wolfgang,

On Wednesday, November 6, 2019 7:06:17 AM PST Wolfgang Denk wrote:
> Dear Aaron,
> 
> In message 
<BYAPR18MB24402A81E226896D208669F5B17E0@BYAPR18MB2440.namprd18.prod.outlook.com> 
you wrote:
> > > Definitely not.  You could not implement any of this without heavily
> > > relyin on and deriving from internal interfaces of U-Boot which are
> > > not exported for non-GPL use.
> > 
> > See
> > https://urldefense.proofpoint.com/v2/url?u=https-3A__www.gnu.org_licenses
> > _old-2Dlicenses_gpl-2D2.0-2Dfaq.en.html-23GPLInProp-3D&d=DwIDaQ&c=nKjWec2b
> > 6R0mOyPaz7xtfQ&r=3yfMNumMHGMnOfmVc0dViBi3fJfF8ZXRL_aRWSIGwm4&m=a19tqjpYreP
> > S1AEd1tHmUya1hcqvHmvs57fTB9c5I50&s=rp_kzh8HU_FV56RrXpf-0DCuegF0rrporRqWwdT
> > MiR0&e= rietarySystem
> > 
> > This behaves exactly in the manner that is permitted by the GPL.
> > They are completely separate programs.
> 
> Are they?
> 
> You wrote:
> 
> "There is no linking. Only a call table descriptor is published in a
> named block of memory."
> 
> I can only interpret from that that there is a call table, where your
> applications call into interfaces that have not been exported for
> non-GPL use.  This is not what I call "completely separate".
> 
> 
> Best regards,
> 
> Wolfgang Denk

Calling directly into U-Boot would be bad. We don't do that. It wouldn't work 
anyway on our 32-bit bootloader due to the required TLB mapping.

There is no call table. There is a single XKPhys address that points to some 
assembly code that saves the state of the calling application and sets up the 
memory mapping and stack for U-Boot (we map it to 0xFFFFFFFFC0000000) then 
look at an opcode that's passed and parameters. From there it performs one of 
several functions based on the opcode. On the way out the reverse is done, the 
state is restored and the TLB restored before returning to the outside 
application. The calling application has its own virtual memory map, so that 
has to be saved and restored on entry by the assembly code as well.

Since U-Boot uses a TLB for mapping, it's just not possible for an outside 
application to call into U-Boot using a function table, so everything must go 
through the one assembly function. The old U-Boot code was written before EFI 
support was added. It looks like I'll be removing it anyway, though. We have 
never exported any U-Boot functions save for the assembly code and the API 
functionality. The API functionality was not usable by our applications since 
our applications were typically 64-bit whereas our old U-Boot was 32-bit 
running in mapped memory (0xFFFFFFFFC0000000/0xC0000000) and physically 
located at the top of physical memory.

-Aaron

  reply	other threads:[~2019-11-06 22:18 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-23  3:50 [U-Boot] Cavium/Marvell Octeon Support Aaron Williams
2019-10-24  6:44 ` Chris Packham
2019-10-25 15:13 ` Daniel Schwierzeck
2019-10-26 22:15   ` Tom Rini
2019-10-27  3:08     ` [U-Boot] [EXT] " Aaron Williams
2019-10-27  2:34   ` Aaron Williams
2019-10-29 13:12     ` Wolfgang Denk
2019-10-30 16:20     ` Daniel Schwierzeck
2019-10-30 17:21       ` Wolfgang Denk
2019-10-30 21:23       ` Aaron Williams
2019-10-31 10:36         ` Wolfgang Denk
2019-10-31 17:59           ` Aaron Williams
2019-11-04 15:44             ` Wolfgang Denk
2019-11-04 16:23               ` Tom Rini
2019-11-05  2:08                 ` Aaron Williams
2019-11-05  8:37                   ` Wolfgang Denk
2019-11-05 10:22                     ` Aaron Williams
2019-11-05 11:36                       ` Wolfgang Denk
2019-11-05 23:09                         ` Aaron Williams
2019-11-06 15:06                           ` Wolfgang Denk
2019-11-06 22:18                             ` Aaron Williams [this message]
2019-11-07  0:21                               ` Tom Rini
2019-11-05 14:15                   ` Tom Rini
2019-11-05  1:57               ` Aaron Williams
2019-11-05  8:33                 ` Wolfgang Denk
2019-11-05 14:16                   ` Tom Rini
2019-10-30 22:05 ` [U-Boot] " Tom Rini
2019-10-30 23:36   ` [U-Boot] [EXT] " Aaron Williams
2019-10-31 10:40     ` Wolfgang Denk
2019-10-31 18:01       ` Aaron Williams
2019-11-04 17:22         ` Tom Rini
2019-11-05  2:13           ` Aaron Williams
2019-11-05 14:09             ` Tom Rini
2019-10-31 13:26     ` Tom Rini
2019-10-31 18:04       ` Aaron Williams
  -- strict thread matches above, loose matches on Subject: below --
2019-11-06  0:03 Aaron Williams
2019-11-07  0:34 ` Tom Rini

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=8349720.9jAfi1TMHv@flash \
    --to=awilliams@marvell.com \
    --cc=u-boot@lists.denx.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