* [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
@ 2006-06-07 7:11 wang lianwei
2006-06-07 13:35 ` Paul Brook
0 siblings, 1 reply; 17+ messages in thread
From: wang lianwei @ 2006-06-07 7:11 UTC (permalink / raw)
To: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 257 bytes --]
Hi all,
I want to add the ARMv6 instructions support to the QEMU, and now I am
analysing the QEMU architecture. I think maybe someone has done it or doing
it now.
Can you give me some guide about this work or give your suggestions?
Please talk about it.
[-- Attachment #2: Type: text/html, Size: 357 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
2006-06-07 7:11 wang lianwei
@ 2006-06-07 13:35 ` Paul Brook
2006-06-07 14:38 ` John R.
2006-06-07 14:46 ` Jamie Lokier
0 siblings, 2 replies; 17+ messages in thread
From: Paul Brook @ 2006-06-07 13:35 UTC (permalink / raw)
To: qemu-devel
On Wednesday 07 June 2006 08:11, wang lianwei wrote:
> Hi all,
>
> I want to add the ARMv6 instructions support to the QEMU, and now I am
> analysing the QEMU architecture. I think maybe someone has done it or doing
> it now.
>
> Can you give me some guide about this work or give your suggestions?
I have already implemented armv6 and armv7 support in qemu, but am unable to
distribute it for legal reasons.
See the previous thread on this topic:
http://lists.gnu.org/archive/html/qemu-devel/2006-03/msg00199.html
If you want armv6 support in qemu your best bet is to contact ARM and persuade
them to lift this restriction.
Paul
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
2006-06-07 13:35 ` Paul Brook
@ 2006-06-07 14:38 ` John R.
2006-06-07 14:46 ` Paul Brook
2006-06-07 14:46 ` Jamie Lokier
1 sibling, 1 reply; 17+ messages in thread
From: John R. @ 2006-06-07 14:38 UTC (permalink / raw)
To: qemu-devel
Or, someone who hasn't agreed to the contract could implement armv6
and 7 support.
-- John.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
2006-06-07 14:38 ` John R.
@ 2006-06-07 14:46 ` Paul Brook
2006-06-07 14:53 ` Jamie Lokier
0 siblings, 1 reply; 17+ messages in thread
From: Paul Brook @ 2006-06-07 14:46 UTC (permalink / raw)
To: qemu-devel, jhoger
On Wednesday 07 June 2006 15:38, John R. wrote:
> Or, someone who hasn't agreed to the contract could implement armv6
> and 7 support.
That implies implementing it without looking at the architecture
documentation, since the only way to get that documentation is to agree to
the licence.
I do have access to the architecture documentation, so I probably wouldn't be
able to touch that code. ie. I'd be unable to continue working on qemu.
Paul
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
2006-06-07 13:35 ` Paul Brook
2006-06-07 14:38 ` John R.
@ 2006-06-07 14:46 ` Jamie Lokier
1 sibling, 0 replies; 17+ messages in thread
From: Jamie Lokier @ 2006-06-07 14:46 UTC (permalink / raw)
To: qemu-devel
Paul Brook wrote:
> On Wednesday 07 June 2006 08:11, wang lianwei wrote:
> > I want to add the ARMv6 instructions support to the QEMU, and now I am
> > analysing the QEMU architecture. I think maybe someone has done it
> > or doing it now.
> >
> > Can you give me some guide about this work or give your suggestions?
>
> I have already implemented armv6 and armv7 support in qemu, but am unable to
> distribute it for legal reasons.
>
> See the previous thread on this topic:
> http://lists.gnu.org/archive/html/qemu-devel/2006-03/msg00199.html
>
> If you want armv6 support in qemu your best bet is to contact ARM
> and persuade them to lift this restriction.
There were three suggestions in that thread, and persuading ARM Ltd to
lift the restriction was one of them.
The other two suggestions were:
1. For someone who is not bound by an ARM documentation license
to do it, for example by working out the instruction set from
reading Binutils, GCC and Linux code, and from reading books
like the "ARM System Developer's Guide", by Sloss, Symes, and
Wright, Elsevier 2004.
The objection was raised that although that would be possible,
it would prevent some people (who are bound by an ARM license)
from contributing to the new Qemu.
I think that would not be a problem if the ARMv6 support were in
the form of a contributed patch, which those people could avoid
looking at.
2. To add an explanation of why ARMv6 isn't supported to Qemu's FAQ.
Anyone in a position to add to the FAQ?
-- Jamie
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
2006-06-07 14:46 ` Paul Brook
@ 2006-06-07 14:53 ` Jamie Lokier
2006-06-07 15:07 ` Paul Brook
0 siblings, 1 reply; 17+ messages in thread
From: Jamie Lokier @ 2006-06-07 14:53 UTC (permalink / raw)
To: Paul Brook; +Cc: qemu-devel
Paul Brook wrote:
> I do have access to the architecture documentation, so I probably
> wouldn't be able to touch that code. ie. I'd be unable to continue
> working on qemu.
Is there a time limit on that part of your documentation license?
Can you reveal to us what exactly your license prohibits, for example
by pasting that part of the license here?
Thanks,
-- Jamie
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
@ 2006-06-07 14:58 Laurent DESNOGUES
0 siblings, 0 replies; 17+ messages in thread
From: Laurent DESNOGUES @ 2006-06-07 14:58 UTC (permalink / raw)
To: qemu-devel
> Can you reveal to us what exactly your license prohibits, for example
> by pasting that part of the license here?
Though probably different from the license CodeSourcery had to sign,
you can try to download ARMv7-M architecture pdf from ARM site to see
the kind of restriction on has to agree on.
Laurent
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
2006-06-07 14:53 ` Jamie Lokier
@ 2006-06-07 15:07 ` Paul Brook
2006-06-07 15:48 ` Jamie Lokier
0 siblings, 1 reply; 17+ messages in thread
From: Paul Brook @ 2006-06-07 15:07 UTC (permalink / raw)
To: qemu-devel
On Wednesday 07 June 2006 15:53, Jamie Lokier wrote:
> Paul Brook wrote:
> > I do have access to the architecture documentation, so I probably
> > wouldn't be able to touch that code. ie. I'd be unable to continue
> > working on qemu.
>
> Is there a time limit on that part of your documentation license?
No.
> Can you reveal to us what exactly your license prohibits, for example
> by pasting that part of the license here?
http://www.arm.com/products/CPUs/ARM_Cortex-M3_v7.html
Specifically clause 2(i):
"No right is granted to [...] use the ARM Architecture Reference Manual for
the purposes of developing or having developed microprocessor cores or models
thereof which are compatible in whole or part with either or both the
instructions or programmer's models described in this ARM Architecture
Reference Manual"
You may argue whether qemu constitutes a "microprocessor model". However the
ARM licencing/legal department have stated that in their opinion it does, and
is covered by this clause.
Also note clause 2(iii) that prohibits redistribution of the document.
Paul
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
2006-06-07 15:07 ` Paul Brook
@ 2006-06-07 15:48 ` Jamie Lokier
2006-06-07 15:58 ` Paul Brook
0 siblings, 1 reply; 17+ messages in thread
From: Jamie Lokier @ 2006-06-07 15:48 UTC (permalink / raw)
To: Paul Brook; +Cc: qemu-devel
Paul Brook wrote:
> > Can you reveal to us what exactly your license prohibits, for example
> > by pasting that part of the license here?
>
> http://www.arm.com/products/CPUs/ARM_Cortex-M3_v7.html
>
> Specifically clause 2(i):
> "No right is granted to [...] use the ARM Architecture Reference
> Manual for the purposes of developing or having developed
> microprocessor cores or models thereof which are compatible in whole
vvvv
> or part with either or both the instructions or programmer's models
^^^^
> described in this ARM Architecture Reference Manual"
Qemu is already compatible "in part" with the the instructions and
models described in the manual, isn't it?
So by the language of clause 2(i), aren't you _already_ prohibited from
working on Qemu's ARM code?
I suppose you could argue that you're not using those particular
manuals to work on Qemu's ARM code at the moment.
Even though you've read and understood those manuals... that somehow,
the knowledge you've gained from them (even "in part") isn't being
used to write the existing Qemu code.
That seems dubious to me. Isn't it much the same as arguing that
you're not using those particular manuals to develop ARMv6 support, if
you can refer to other resources (books etc.) which provide the
necessary information?
-- Jamie
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
2006-06-07 15:48 ` Jamie Lokier
@ 2006-06-07 15:58 ` Paul Brook
2006-06-07 16:18 ` Jamie Lokier
0 siblings, 1 reply; 17+ messages in thread
From: Paul Brook @ 2006-06-07 15:58 UTC (permalink / raw)
To: Jamie Lokier; +Cc: qemu-devel
> > Specifically clause 2(i):
> > "No right is granted to [...] use the ARM Architecture Reference
> > Manual for the purposes of developing or having developed
> > microprocessor cores or models thereof which are compatible in whole
> vvvv
> > or part with either or both the instructions or programmer's models
> ^^^^
> > described in this ARM Architecture Reference Manual"
>
> Qemu is already compatible "in part" with the the instructions and
> models described in the manual, isn't it?
>
> So by the language of clause 2(i), aren't you _already_ prohibited from
> working on Qemu's ARM code?
All the information used to implement the current qemu Arm support is
available from other sources not covered by this licence. I'm confident I
could prove this if necessary.
Paul
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
2006-06-07 15:58 ` Paul Brook
@ 2006-06-07 16:18 ` Jamie Lokier
2006-06-07 16:34 ` Paul Brook
0 siblings, 1 reply; 17+ messages in thread
From: Jamie Lokier @ 2006-06-07 16:18 UTC (permalink / raw)
To: Paul Brook; +Cc: qemu-devel
Paul Brook wrote:
> > Qemu is already compatible "in part" with the the instructions and
> > models described in the manual, isn't it?
> >
> > So by the language of clause 2(i), aren't you _already_ prohibited from
> > working on Qemu's ARM code?
>
> All the information used to implement the current qemu Arm support is
> available from other sources not covered by this licence. I'm confident I
> could prove this if necessary.
Of course, I'm sure you're right.
In the thread you cited earlier, Wolfgang Schildbach refers to "ARM
System Developer's Guide", by Sloss, Symes, and Wright, Elsevier 2004
as documentation that may be sufficient for Qemu ARMv6 support, and
which is not covered by the license.
If ARMv6 support were developed by someone else, using only that book,
and maybe looking at other code (GCC, Linux etc.), that would prove
that all the information used is from other sources not covered by the
license, wouldn't it?
The support might be missing a few features, if the other information
sources are incomplete, but even incomplete support that can be
deduced from those sources would be good enough for most purposes.
If that were done, you could prove that the resulting feature in Qemu
was written using sources not covered by the license.
So would you have any problem contributing to Qemu after ARMv6 support
was integrated, if the person who contributes ARMv6 support states
that they have never seen the ARM document and refers to the sources
they have used instead?
-- Jamie
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
2006-06-07 16:18 ` Jamie Lokier
@ 2006-06-07 16:34 ` Paul Brook
2006-06-07 17:21 ` Jamie Lokier
0 siblings, 1 reply; 17+ messages in thread
From: Paul Brook @ 2006-06-07 16:34 UTC (permalink / raw)
To: qemu-devel
> So would you have any problem contributing to Qemu after ARMv6 support
> was integrated, if the person who contributes ARMv6 support states
> that they have never seen the ARM document and refers to the sources
> they have used instead?
As I mentioned before I have significant local patches implementing unreleased
Arm features. The only way to avoid cross contamination between that and a
third party qemu implementation two would be for me to stop contributing
anything (or at minimum anything ARM related) back to qemu.
Basing work on the gcc/binutils code doesn't help me either because I wrote
most of that code in the first place :-)
Paul
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
@ 2006-06-07 16:34 Laurent DESNOGUES
0 siblings, 0 replies; 17+ messages in thread
From: Laurent DESNOGUES @ 2006-06-07 16:34 UTC (permalink / raw)
To: qemu-devel
> > All the information used to implement the current qemu Arm support is
> > available from other sources not covered by this licence. I'm confident I
> > could prove this if necessary.
True for ARMv6, probably not for ARMv7, be it -A, -R or -M.
> In the thread you cited earlier, Wolfgang Schildbach refers to "ARM
> System Developer's Guide", by Sloss, Symes, and Wright, Elsevier 2004
> as documentation that may be sufficient for Qemu ARMv6 support, and
> which is not covered by the license.
Yes. But you would need instruction encoding that are not in the
book. You will find them in binutils (opcode directory).
> If ARMv6 support were developed by someone else, using only that book,
> and maybe looking at other code (GCC, Linux etc.), that would prove
> that all the information used is from other sources not covered by the
> license, wouldn't it?
Linux uses a small subset of the System Coprocessor. If you want
information about ARMv6 cp15, look in ARM TRM (arm11), I don't think
they have any restriction such as ARMv7-M.
> The support might be missing a few features, if the other information
> sources are incomplete, but even incomplete support that can be
> deduced from those sources would be good enough for most purposes.
Certainly yes. But that's not a small effort :)
But bear in mind a few things: for instance supersection,
that are ARMv6 specific, were added to Linux kernel in 2.6.13
which is kind of recent; so if you omit some features, you
might have to add them in one day.
> If that were done, you could prove that the resulting feature in Qemu
> was written using sources not covered by the license.
>
> So would you have any problem contributing to Qemu after ARMv6 support
> was integrated, if the person who contributes ARMv6 support states
> that they have never seen the ARM document and refers to the sources
> they have used instead?
I think that it could be very difficult to prove you did not
use any official NDA document. I am doing simulator development
at ARM and would certainly never approach anything v6 or v7
related until information is publically available with no
restriction.
Anyway I am not speaking for ARM :)
Laurent
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
2006-06-07 16:34 ` Paul Brook
@ 2006-06-07 17:21 ` Jamie Lokier
2006-06-07 17:25 ` Paul Brook
0 siblings, 1 reply; 17+ messages in thread
From: Jamie Lokier @ 2006-06-07 17:21 UTC (permalink / raw)
To: Paul Brook; +Cc: qemu-devel
Paul Brook wrote:
> > So would you have any problem contributing to Qemu after ARMv6 support
> > was integrated, if the person who contributes ARMv6 support states
> > that they have never seen the ARM document and refers to the sources
> > they have used instead?
>
> As I mentioned before I have significant local patches implementing
> unreleased Arm features. The only way to avoid cross contamination
> between that and a third party qemu implementation two would be for
> me to stop contributing anything (or at minimum anything ARM
> related) back to qemu.
The idea is for someone else, working completely independently of you,
and without ever seeing those patches of yours, to provide the later
ARM support.
I know it doesn't feel good to think about someone else duplicating
the work you have done, but that's not a reason to not do it, if it's
the only legal solution to a useful feature.
So why "anything ARM related" and not "anything ARMv6 or later related"?
Isn't it sufficient for you to avoid contributing anything related to
the versions/features the restrictive license covers, so that you
could continue to contribute ARM related things for the older,
publically documented features?
That may feel uncomfortable, but it is no different than your present
situation. And for other people, it would provide a useful feature.
> Basing work on the gcc/binutils code doesn't help me either because I wrote
> most of that code in the first place :-)
Since the idea is for someone else do it, that doesn't matter.
I'm wondering why, if it were done, it would be a problem for you to
contribute in future in the areas which you contribute to now.
-- Jamie
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
2006-06-07 17:21 ` Jamie Lokier
@ 2006-06-07 17:25 ` Paul Brook
2006-06-07 17:42 ` John R.
2006-06-07 18:36 ` Jamie Lokier
0 siblings, 2 replies; 17+ messages in thread
From: Paul Brook @ 2006-06-07 17:25 UTC (permalink / raw)
To: Jamie Lokier; +Cc: qemu-devel
> > Basing work on the gcc/binutils code doesn't help me either because I
> > wrote most of that code in the first place :-)
>
> Since the idea is for someone else do it, that doesn't matter.
>
> I'm wondering why, if it were done, it would be a problem for you to
> contribute in future in the areas which you contribute to now.
Because a large proportion of my contributions, and most of my interest is in
this area.
Paul
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
2006-06-07 17:25 ` Paul Brook
@ 2006-06-07 17:42 ` John R.
2006-06-07 18:36 ` Jamie Lokier
1 sibling, 0 replies; 17+ messages in thread
From: John R. @ 2006-06-07 17:42 UTC (permalink / raw)
To: qemu-devel
On 6/7/06, Paul Brook <paul@codesourcery.com> wrote:
> > > Basing work on the gcc/binutils code doesn't help me either because I
> > > wrote most of that code in the first place :-)
> >
> > Since the idea is for someone else do it, that doesn't matter.
> >
> > I'm wondering why, if it were done, it would be a problem for you to
> > contribute in future in the areas which you contribute to now.
>
> Because a large proportion of my contributions, and most of my interest is in
> this area.
>
> Paul
No one wants to lose your effort on the ARM port. For the most part
you are the ARM port. Have you talked to an IP or contract lawyer
about the issue? There's your liability and another issue is liability
for the project or copyright issues. It is interesting to know how far
both go and how they relate. To my mind this just seems pretty
murkey. Yes the best solution would be a pass from ARM but everyone
knows that isn't going to happen.
-- John.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices?
2006-06-07 17:25 ` Paul Brook
2006-06-07 17:42 ` John R.
@ 2006-06-07 18:36 ` Jamie Lokier
1 sibling, 0 replies; 17+ messages in thread
From: Jamie Lokier @ 2006-06-07 18:36 UTC (permalink / raw)
To: Paul Brook; +Cc: qemu-devel
Paul Brook wrote:
> > > Basing work on the gcc/binutils code doesn't help me either because I
> > > wrote most of that code in the first place :-)
> >
> > Since the idea is for someone else do it, that doesn't matter.
> >
> > I'm wondering why, if it were done, it would be a problem for you to
> > contribute in future in the areas which you contribute to now.
>
> Because a large proportion of my contributions, and most of my
> interest is in this area.
Sorry, I guess my question wasn't clear.
I'm not asking why it would be a problem for you to stop contributing
to ARM support in Qemu. That's not the meaning of my question above.
Of course it would be a problem for all of us if you had to stop.
I am asking why you think you'd have to stop contributing to the
pre-ARMv6 feature set, given that it's unrelated to the restrictions
that you're bound by.
If it's post-ARMv6 contributions that you're interested in, you can't
contribute them now or in future; so someone else contributing changes in
that area makes no difference to you.
Or does it? That's my question; I don't see why post-ARMv6
functionality in Qemu would prevent you from contributing to the
pre-ARMv6 functionality (devices, CPU model etc.), which is the only
area you're publically able to contribute now anyway.
I realise they would overlap substantially in the code, but that
doesn't mean you have to contribute any changes or reveal any
information which depends on the ARMv6 or later documentation.
I don't see why it would make a difference to what you're able to do,
and that's why I'm asking why you think it would.
Thanks,
-- Jamie
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2006-06-07 18:36 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-06-07 16:34 [Qemu-devel] I want to add the ARMv6 instructions, who can give some advices? Laurent DESNOGUES
-- strict thread matches above, loose matches on Subject: below --
2006-06-07 14:58 Laurent DESNOGUES
2006-06-07 7:11 wang lianwei
2006-06-07 13:35 ` Paul Brook
2006-06-07 14:38 ` John R.
2006-06-07 14:46 ` Paul Brook
2006-06-07 14:53 ` Jamie Lokier
2006-06-07 15:07 ` Paul Brook
2006-06-07 15:48 ` Jamie Lokier
2006-06-07 15:58 ` Paul Brook
2006-06-07 16:18 ` Jamie Lokier
2006-06-07 16:34 ` Paul Brook
2006-06-07 17:21 ` Jamie Lokier
2006-06-07 17:25 ` Paul Brook
2006-06-07 17:42 ` John R.
2006-06-07 18:36 ` Jamie Lokier
2006-06-07 14:46 ` Jamie Lokier
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).