diff mbox series

[v2,3/3] add SPDX to arch/arm/*.c

Message ID 20220818220320.2538705-3-stefano.stabellini@amd.com (mailing list archive)
State Superseded
Headers show
Series introduce SPDX | expand

Commit Message

Stefano Stabellini Aug. 18, 2022, 10:03 p.m. UTC
Add SPDX license information to all the *.c files under arch/arm.

Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
---
Changes in v2:
- use /* */
- actually check use the right license
- remove stale copyright info from top of the file header
---
 xen/arch/arm/alternative.c        | 13 +------------
 xen/arch/arm/bootfdt.c            |  5 +----
 xen/arch/arm/cpuerrata.c          |  1 +
 xen/arch/arm/cpufeature.c         | 13 +------------
 xen/arch/arm/decode.c             | 11 +----------
 xen/arch/arm/device.c             | 11 +----------
 xen/arch/arm/dm.c                 | 13 +------------
 xen/arch/arm/domain.c             | 12 +-----------
 xen/arch/arm/domain_build.c       |  1 +
 xen/arch/arm/domain_page.c        |  1 +
 xen/arch/arm/domctl.c             |  1 +
 xen/arch/arm/early_printk.c       |  5 +----
 xen/arch/arm/gic-v2.c             | 11 +----------
 xen/arch/arm/gic-v3-its.c         | 13 +------------
 xen/arch/arm/gic-v3-lpi.c         | 13 +------------
 xen/arch/arm/gic-v3.c             | 11 +----------
 xen/arch/arm/gic-vgic.c           | 11 +----------
 xen/arch/arm/gic.c                | 11 +----------
 xen/arch/arm/guest_atomics.c      | 13 +------------
 xen/arch/arm/guest_walk.c         | 13 +------------
 xen/arch/arm/guestcopy.c          |  1 +
 xen/arch/arm/hvm.c                | 13 +------------
 xen/arch/arm/io.c                 | 11 +----------
 xen/arch/arm/ioreq.c              | 13 +------------
 xen/arch/arm/irq.c                | 11 +----------
 xen/arch/arm/kernel.c             |  1 +
 xen/arch/arm/livepatch.c          |  1 +
 xen/arch/arm/mem_access.c         | 13 +------------
 xen/arch/arm/mm.c                 | 11 +----------
 xen/arch/arm/monitor.c            | 13 +------------
 xen/arch/arm/p2m.c                |  1 +
 xen/arch/arm/percpu.c             |  1 +
 xen/arch/arm/physdev.c            |  1 +
 xen/arch/arm/platform.c           | 11 +----------
 xen/arch/arm/platform_hypercall.c |  1 +
 xen/arch/arm/processor.c          | 11 +----------
 xen/arch/arm/psci.c               | 11 +----------
 xen/arch/arm/setup.c              | 11 +----------
 xen/arch/arm/shutdown.c           |  1 +
 xen/arch/arm/smp.c                |  1 +
 xen/arch/arm/smpboot.c            | 11 +----------
 xen/arch/arm/sysctl.c             |  1 +
 xen/arch/arm/time.c               | 11 +----------
 xen/arch/arm/traps.c              | 11 +----------
 xen/arch/arm/vcpreg.c             | 11 +----------
 xen/arch/arm/vgic-v2.c            | 11 +----------
 xen/arch/arm/vgic-v3-its.c        | 13 +------------
 xen/arch/arm/vgic-v3.c            | 11 +----------
 xen/arch/arm/vgic.c               | 11 +----------
 xen/arch/arm/vm_event.c           | 13 +------------
 xen/arch/arm/vpci.c               | 11 +----------
 xen/arch/arm/vpl011.c             | 13 +------------
 xen/arch/arm/vpsci.c              | 13 +------------
 xen/arch/arm/vsmc.c               | 10 +---------
 xen/arch/arm/vtimer.c             | 11 +----------
 xen/arch/arm/vuart.c              | 11 +----------
 56 files changed, 56 insertions(+), 438 deletions(-)

Comments

Julien Grall Aug. 19, 2022, 7:52 a.m. UTC | #1
Hi Stefano,

On 18/08/2022 23:03, Stefano Stabellini wrote:
> Add SPDX license information to all the *.c files under arch/arm.

There are some of the files below that didn't have copyright. It would 
be worth explaining in the commit message which license you selected and 
how. AFAICT you assumed they were GPLv2 but I am not sure this is 
correct at least one of them.

[...]

> diff --git a/xen/arch/arm/decode.c b/xen/arch/arm/decode.c
> index f5f6562600..2537dbebc1 100644
> --- a/xen/arch/arm/decode.c
> +++ b/xen/arch/arm/decode.c
> @@ -1,3 +1,4 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */

This license is not part of LICENSES. Was it intended?

If yes, this should be mentioned in one of the commit message (possible 
patch #2) and maybe in CONTRIBUTING (to tell user to not use it for new 
files) because one could expect all the LICENSES to be listed.

>   /*
>    * xen/arch/arm/decode.c
>    *
> @@ -5,16 +6,6 @@
>    *
>    * Julien Grall <julien.grall@linaro.org>
>    * Copyright (C) 2013 Linaro Limited.
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License as published by
> - * the Free Software Foundation; either version 2 of the License, or
> - * (at your option) any later version.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
>    */
>   
>   #include <xen/guest_access.h>

[...]

> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 3fd1186b53..b29bdf3aa6 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -1,3 +1,4 @@
> +/* SPDX-License-Identifier: GPL-2.0 */

AFAIU, the assumption is all the files with no copyright are GPLv2. That 
works here. But ...

>   #include <xen/init.h>
>   #include <xen/compile.h>
>   #include <xen/lib.h>
> diff --git a/xen/arch/arm/domain_page.c b/xen/arch/arm/domain_page.c
> index 71182575f9..47405e0866 100644
> --- a/xen/arch/arm/domain_page.c
> +++ b/xen/arch/arm/domain_page.c
> @@ -1,3 +1,4 @@
> +/* SPDX-License-Identifier: GPL-2.0 */

.... this file was split from mm.c which is gpl-2.0-or-later. So I don't 
think we can use GPL-2.0 here.

>   #include <xen/mm.h>
>   #include <xen/pmap.h>
>   #include <xen/vmap.h>

Cheers,
Stefano Stabellini Aug. 19, 2022, 10:53 p.m. UTC | #2
On Fri, 19 Aug 2022, Julien Grall wrote:
> On 18/08/2022 23:03, Stefano Stabellini wrote:
> > Add SPDX license information to all the *.c files under arch/arm.
> 
> There are some of the files below that didn't have copyright. It would be
> worth explaining in the commit message which license you selected and how.
> AFAICT you assumed they were GPLv2 but I am not sure this is correct at least
> one of them.

My goal is not to change the existing license on any of the files, even
if the existing license is imprecise. By what is written under COPYING,
everything not explicitly listed is GPL-2.0. I only reflected today's
reality. I think it is best if we keep mechanical changes separate from
"smart" changes, especially on a series like this introducing many
mechanical changes.  More on this at the bottom.


> [...]
> 
> > diff --git a/xen/arch/arm/decode.c b/xen/arch/arm/decode.c
> > index f5f6562600..2537dbebc1 100644
> > --- a/xen/arch/arm/decode.c
> > +++ b/xen/arch/arm/decode.c
> > @@ -1,3 +1,4 @@
> > +/* SPDX-License-Identifier: GPL-2.0-or-later */
> 
> This license is not part of LICENSES. Was it intended?

It is: the tag is described as part of LICENSES/GPL-2.0.


> If yes, this should be mentioned in one of the commit message (possible patch
> #2) and maybe in CONTRIBUTING (to tell user to not use it for new files)
> because one could expect all the LICENSES to be listed.

It could make sense to say that:

/* SPDX-License-Identifier: GPL-2.0 */

is recommended for new files.


> >   /*
> >    * xen/arch/arm/decode.c
> >    *
> > @@ -5,16 +6,6 @@
> >    *
> >    * Julien Grall <julien.grall@linaro.org>
> >    * Copyright (C) 2013 Linaro Limited.
> > - *
> > - * This program is free software; you can redistribute it and/or modify
> > - * it under the terms of the GNU General Public License as published by
> > - * the Free Software Foundation; either version 2 of the License, or
> > - * (at your option) any later version.
> > - *
> > - * This program is distributed in the hope that it will be useful,
> > - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > - * GNU General Public License for more details.
> >    */
> >     #include <xen/guest_access.h>
> 
> [...]
> 
> > diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> > index 3fd1186b53..b29bdf3aa6 100644
> > --- a/xen/arch/arm/domain_build.c
> > +++ b/xen/arch/arm/domain_build.c
> > @@ -1,3 +1,4 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> 
> AFAIU, the assumption is all the files with no copyright are GPLv2. That works
> here. But ...
> 
> >   #include <xen/init.h>
> >   #include <xen/compile.h>
> >   #include <xen/lib.h>
> > diff --git a/xen/arch/arm/domain_page.c b/xen/arch/arm/domain_page.c
> > index 71182575f9..47405e0866 100644
> > --- a/xen/arch/arm/domain_page.c
> > +++ b/xen/arch/arm/domain_page.c
> > @@ -1,3 +1,4 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> 
> .... this file was split from mm.c which is gpl-2.0-or-later. So I don't think
> we can use GPL-2.0 here.

Well spotted! Effectively this file is now declared as GPL 2.0 only,
given what is stated in COPYING. The code in domain_page has lost "or
later" with the loss of the copyright header.

So if there were new contributions to this file after its creation, they
would have been GPL-2.0 only contributions, and it would have been
impossible to go back to GPL-2.0-or-later without asking the copyright
owners of the new changes.

In this case thankfully there are no new contributions since the split
of the file, so I can fix it by using the SPDX GPL-2.0-or-later tag
without problems. I'll do it in the next version of the series.

Xen is not saying: "if there is no copyright header it might be GPLv2
but you need to look it up". Xen is actively saying: "if there is no
copyright header it is GPLv2". Not up for discussion. Given that as a
whole Xen is GPLv2, the only possibility is that the file without a
copyright header used to be:
- GPLv2 or later
- dual license GPL and another compatible license (e.g. BSD)

Either way, with the loss of the copyright header, the file becomes
immediately GPLv2 only.

Does it make sense?

This is why I think it is best to keep copyright discussions out of the
SPDX patches review and limit ourselves to mechanical changes.
Julien Grall Aug. 20, 2022, 7:08 p.m. UTC | #3
Hi Stefano,

On 19/08/2022 23:53, Stefano Stabellini wrote:
> On Fri, 19 Aug 2022, Julien Grall wrote:
>> On 18/08/2022 23:03, Stefano Stabellini wrote:
>>> Add SPDX license information to all the *.c files under arch/arm.
>>
>> There are some of the files below that didn't have copyright. It would be
>> worth explaining in the commit message which license you selected and how.
>> AFAICT you assumed they were GPLv2 but I am not sure this is correct at least
>> one of them.
> 
> My goal is not to change the existing license on any of the files, even
> if the existing license is imprecise. By what is written under COPYING,
> everything not explicitly listed is GPL-2.0. I only reflected today's
> reality. I think it is best if we keep mechanical changes separate from
> "smart" changes, especially on a series like this introducing many
> mechanical changes.  More on this at the bottom.

I will answer to this at the bottom.

>> [...]
>>
>>> diff --git a/xen/arch/arm/decode.c b/xen/arch/arm/decode.c
>>> index f5f6562600..2537dbebc1 100644
>>> --- a/xen/arch/arm/decode.c
>>> +++ b/xen/arch/arm/decode.c
>>> @@ -1,3 +1,4 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>>
>> This license is not part of LICENSES. Was it intended?
> 
> It is: the tag is described as part of LICENSES/GPL-2.0.

Ah! I was looking as the list of files and didn't look for the tag. 
Thanks for the pointer :).

> 
> 
>> If yes, this should be mentioned in one of the commit message (possible patch
>> #2) and maybe in CONTRIBUTING (to tell user to not use it for new files)
>> because one could expect all the LICENSES to be listed.
> 
> It could make sense to say that:
> 
> /* SPDX-License-Identifier: GPL-2.0 */
> 
> is recommended for new files.

So I was reading through xen/COPYING and we already have something like 
that:

"Note that the only valid version of the GPL as far as Xen is concerned
is _this_ particular version of the license (i.e., *only* v2, not v2.2
or v3.x or whatever), unless explicitly otherwise stated."

So nothing to add here unless you want to tell the contributor which tag 
correspond to GPLv2.

> 
> 
>>>    /*
>>>     * xen/arch/arm/decode.c
>>>     *
>>> @@ -5,16 +6,6 @@
>>>     *
>>>     * Julien Grall <julien.grall@linaro.org>
>>>     * Copyright (C) 2013 Linaro Limited.
>>> - *
>>> - * This program is free software; you can redistribute it and/or modify
>>> - * it under the terms of the GNU General Public License as published by
>>> - * the Free Software Foundation; either version 2 of the License, or
>>> - * (at your option) any later version.
>>> - *
>>> - * This program is distributed in the hope that it will be useful,
>>> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>> - * GNU General Public License for more details.
>>>     */
>>>      #include <xen/guest_access.h>
>>
>> [...]
>>
>>> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
>>> index 3fd1186b53..b29bdf3aa6 100644
>>> --- a/xen/arch/arm/domain_build.c
>>> +++ b/xen/arch/arm/domain_build.c
>>> @@ -1,3 +1,4 @@
>>> +/* SPDX-License-Identifier: GPL-2.0 */
>>
>> AFAIU, the assumption is all the files with no copyright are GPLv2. That works
>> here. But ...
>>
>>>    #include <xen/init.h>
>>>    #include <xen/compile.h>
>>>    #include <xen/lib.h>
>>> diff --git a/xen/arch/arm/domain_page.c b/xen/arch/arm/domain_page.c
>>> index 71182575f9..47405e0866 100644
>>> --- a/xen/arch/arm/domain_page.c
>>> +++ b/xen/arch/arm/domain_page.c
>>> @@ -1,3 +1,4 @@
>>> +/* SPDX-License-Identifier: GPL-2.0 */
>>
>> .... this file was split from mm.c which is gpl-2.0-or-later. So I don't think
>> we can use GPL-2.0 here.
> 
> Well spotted! Effectively this file is now declared as GPL 2.0 only,
> given what is stated in COPYING. The code in domain_page has lost "or
> later" with the loss of the copyright header.

Yes. This was an oversight from me when I split the code a few weeks ago.

> 
> So if there were new contributions to this file after its creation, they
> would have been GPL-2.0 only contributions, and it would have been
> impossible to go back to GPL-2.0-or-later without asking the copyright
> owners of the new changes.
> 
> In this case thankfully there are no new contributions since the split
> of the file, so I can fix it by using the SPDX GPL-2.0-or-later tag
> without problems. I'll do it in the next version of the series.
> 
> Xen is not saying: "if there is no copyright header it might be GPLv2
> but you need to look it up". Xen is actively saying: "if there is no
> copyright header it is GPLv2". Not up for discussion. Given that as a
> whole Xen is GPLv2, the only possibility is that the file without a
> copyright header used to be:
> - GPLv2 or later
> - dual license GPL and another compatible license (e.g. BSD)
> 
> Either way, with the loss of the copyright header, the file becomes
> immediately GPLv2 only.
> 
> Does it make sense?
> 
> This is why I think it is best to keep copyright discussions out of the
> SPDX patches review and limit ourselves to mechanical changes.

Yes I agree this series should be mechanical (baring the file that is 
contain GPLv2+ code).

I am putting some thoughts below (they can be split in a separate thread 
if you prefer).

This is not the first time this topic is brought up and probably not the 
last as long as we have file using GPLv2+.

IIRC from past discussion there are two broads concern with GPLv2+:
   - We are leaving the choice of which license applies to the person 
copying the code. So if a new version is released that is less favorable 
to the initial contributor, then we have no leverage.
   - Some companies are rather cautious to contribute code that my be 
licensed under GPLv3 (would be allowed with GPLv2+).

The later is particularly a problem because not many people realize that 
a fair part of Xen on Arm is GPLv2+. I never really understood why we 
chose that (this was before my time) but this got spread as the existing 
copyright was added to a new file. Admittely, the contributor should be 
more cautious. But I would not say this is trivial to spot the difference.

I would like to consider to re-license all the GPLv2+ files to GPLv2. 
AFAIU, this would mean we would need to ask the permission for every 
comapany that contributed to the file. Do you know if this was done 
before in Xen Project?

Cheers,
Bertrand Marquis Aug. 23, 2022, 10:23 a.m. UTC | #4
Hi Julien,

> On 20 Aug 2022, at 20:08, Julien Grall <julien@xen.org> wrote:
> 
> Hi Stefano,
> 
> On 19/08/2022 23:53, Stefano Stabellini wrote:
>> On Fri, 19 Aug 2022, Julien Grall wrote:
>>> On 18/08/2022 23:03, Stefano Stabellini wrote:
>>>> Add SPDX license information to all the *.c files under arch/arm.
>>> 
>>> There are some of the files below that didn't have copyright. It would be
>>> worth explaining in the commit message which license you selected and how.
>>> AFAICT you assumed they were GPLv2 but I am not sure this is correct at least
>>> one of them.
>> My goal is not to change the existing license on any of the files, even
>> if the existing license is imprecise. By what is written under COPYING,
>> everything not explicitly listed is GPL-2.0. I only reflected today's
>> reality. I think it is best if we keep mechanical changes separate from
>> "smart" changes, especially on a series like this introducing many
>> mechanical changes.  More on this at the bottom.
> 
> I will answer to this at the bottom.
> 
>>> [...]
>>> 
>>>> diff --git a/xen/arch/arm/decode.c b/xen/arch/arm/decode.c
>>>> index f5f6562600..2537dbebc1 100644
>>>> --- a/xen/arch/arm/decode.c
>>>> +++ b/xen/arch/arm/decode.c
>>>> @@ -1,3 +1,4 @@
>>>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>>> 
>>> This license is not part of LICENSES. Was it intended?
>> It is: the tag is described as part of LICENSES/GPL-2.0.
> 
> Ah! I was looking as the list of files and didn't look for the tag. Thanks for the pointer :).
> 
>>> If yes, this should be mentioned in one of the commit message (possible patch
>>> #2) and maybe in CONTRIBUTING (to tell user to not use it for new files)
>>> because one could expect all the LICENSES to be listed.
>> It could make sense to say that:
>> /* SPDX-License-Identifier: GPL-2.0 */
>> is recommended for new files.
> 
> So I was reading through xen/COPYING and we already have something like that:
> 
> "Note that the only valid version of the GPL as far as Xen is concerned
> is _this_ particular version of the license (i.e., *only* v2, not v2.2
> or v3.x or whatever), unless explicitly otherwise stated."
> 
> So nothing to add here unless you want to tell the contributor which tag correspond to GPLv2.
> 
>>>>   /*
>>>>    * xen/arch/arm/decode.c
>>>>    *
>>>> @@ -5,16 +6,6 @@
>>>>    *
>>>>    * Julien Grall <julien.grall@linaro.org>
>>>>    * Copyright (C) 2013 Linaro Limited.
>>>> - *
>>>> - * This program is free software; you can redistribute it and/or modify
>>>> - * it under the terms of the GNU General Public License as published by
>>>> - * the Free Software Foundation; either version 2 of the License, or
>>>> - * (at your option) any later version.
>>>> - *
>>>> - * This program is distributed in the hope that it will be useful,
>>>> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
>>>> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>>> - * GNU General Public License for more details.
>>>>    */
>>>>     #include <xen/guest_access.h>
>>> 
>>> [...]
>>> 
>>>> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
>>>> index 3fd1186b53..b29bdf3aa6 100644
>>>> --- a/xen/arch/arm/domain_build.c
>>>> +++ b/xen/arch/arm/domain_build.c
>>>> @@ -1,3 +1,4 @@
>>>> +/* SPDX-License-Identifier: GPL-2.0 */
>>> 
>>> AFAIU, the assumption is all the files with no copyright are GPLv2. That works
>>> here. But ...
>>> 
>>>>   #include <xen/init.h>
>>>>   #include <xen/compile.h>
>>>>   #include <xen/lib.h>
>>>> diff --git a/xen/arch/arm/domain_page.c b/xen/arch/arm/domain_page.c
>>>> index 71182575f9..47405e0866 100644
>>>> --- a/xen/arch/arm/domain_page.c
>>>> +++ b/xen/arch/arm/domain_page.c
>>>> @@ -1,3 +1,4 @@
>>>> +/* SPDX-License-Identifier: GPL-2.0 */
>>> 
>>> .... this file was split from mm.c which is gpl-2.0-or-later. So I don't think
>>> we can use GPL-2.0 here.
>> Well spotted! Effectively this file is now declared as GPL 2.0 only,
>> given what is stated in COPYING. The code in domain_page has lost "or
>> later" with the loss of the copyright header.
> 
> Yes. This was an oversight from me when I split the code a few weeks ago.
> 
>> So if there were new contributions to this file after its creation, they
>> would have been GPL-2.0 only contributions, and it would have been
>> impossible to go back to GPL-2.0-or-later without asking the copyright
>> owners of the new changes.
>> In this case thankfully there are no new contributions since the split
>> of the file, so I can fix it by using the SPDX GPL-2.0-or-later tag
>> without problems. I'll do it in the next version of the series.
>> Xen is not saying: "if there is no copyright header it might be GPLv2
>> but you need to look it up". Xen is actively saying: "if there is no
>> copyright header it is GPLv2". Not up for discussion. Given that as a
>> whole Xen is GPLv2, the only possibility is that the file without a
>> copyright header used to be:
>> - GPLv2 or later
>> - dual license GPL and another compatible license (e.g. BSD)
>> Either way, with the loss of the copyright header, the file becomes
>> immediately GPLv2 only.
>> Does it make sense?
>> This is why I think it is best to keep copyright discussions out of the
>> SPDX patches review and limit ourselves to mechanical changes.
> 
> Yes I agree this series should be mechanical (baring the file that is contain GPLv2+ code).
> 
> I am putting some thoughts below (they can be split in a separate thread if you prefer).
> 
> This is not the first time this topic is brought up and probably not the last as long as we have file using GPLv2+.
> 
> IIRC from past discussion there are two broads concern with GPLv2+:
>  - We are leaving the choice of which license applies to the person copying the code. So if a new version is released that is less favorable to the initial contributor, then we have no leverage.
>  - Some companies are rather cautious to contribute code that my be licensed under GPLv3 (would be allowed with GPLv2+).
> 
> The later is particularly a problem because not many people realize that a fair part of Xen on Arm is GPLv2+. I never really understood why we chose that (this was before my time) but this got spread as the existing copyright was added to a new file. Admittely, the contributor should be more cautious. But I would not say this is trivial to spot the difference.
> 
> I would like to consider to re-license all the GPLv2+ files to GPLv2. AFAIU, this would mean we would need to ask the permission for every comapany that contributed to the file. Do you know if this was done before in Xen Project?

If I am understanding right, GPLv2+ means that someone could relicense the files to GPLv3 if he wants which is more restrictive.
Why do you want to move those back to GPLv2 ?

Cheers
Bertrand

> 
> Cheers,
> 
> -- 
> Julien Grall
Julien Grall Aug. 23, 2022, 10:53 a.m. UTC | #5
On 23/08/2022 11:23, Bertrand Marquis wrote:
> Hi Julien,

Hi Bertrand,

>> On 20 Aug 2022, at 20:08, Julien Grall <julien@xen.org> wrote:
>>
>> Hi Stefano,
>>
>> On 19/08/2022 23:53, Stefano Stabellini wrote:
>>> On Fri, 19 Aug 2022, Julien Grall wrote:
>>>> On 18/08/2022 23:03, Stefano Stabellini wrote:
>>>>> Add SPDX license information to all the *.c files under arch/arm.
>>>>
>>>> There are some of the files below that didn't have copyright. It would be
>>>> worth explaining in the commit message which license you selected and how.
>>>> AFAICT you assumed they were GPLv2 but I am not sure this is correct at least
>>>> one of them.
>>> My goal is not to change the existing license on any of the files, even
>>> if the existing license is imprecise. By what is written under COPYING,
>>> everything not explicitly listed is GPL-2.0. I only reflected today's
>>> reality. I think it is best if we keep mechanical changes separate from
>>> "smart" changes, especially on a series like this introducing many
>>> mechanical changes.  More on this at the bottom.
>>
>> I will answer to this at the bottom.
>>
>>>> [...]
>>>>
>>>>> diff --git a/xen/arch/arm/decode.c b/xen/arch/arm/decode.c
>>>>> index f5f6562600..2537dbebc1 100644
>>>>> --- a/xen/arch/arm/decode.c
>>>>> +++ b/xen/arch/arm/decode.c
>>>>> @@ -1,3 +1,4 @@
>>>>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>>>>
>>>> This license is not part of LICENSES. Was it intended?
>>> It is: the tag is described as part of LICENSES/GPL-2.0.
>>
>> Ah! I was looking as the list of files and didn't look for the tag. Thanks for the pointer :).
>>
>>>> If yes, this should be mentioned in one of the commit message (possible patch
>>>> #2) and maybe in CONTRIBUTING (to tell user to not use it for new files)
>>>> because one could expect all the LICENSES to be listed.
>>> It could make sense to say that:
>>> /* SPDX-License-Identifier: GPL-2.0 */
>>> is recommended for new files.
>>
>> So I was reading through xen/COPYING and we already have something like that:
>>
>> "Note that the only valid version of the GPL as far as Xen is concerned
>> is _this_ particular version of the license (i.e., *only* v2, not v2.2
>> or v3.x or whatever), unless explicitly otherwise stated."
>>
>> So nothing to add here unless you want to tell the contributor which tag correspond to GPLv2.
>>
>>>>>    /*
>>>>>     * xen/arch/arm/decode.c
>>>>>     *
>>>>> @@ -5,16 +6,6 @@
>>>>>     *
>>>>>     * Julien Grall <julien.grall@linaro.org>
>>>>>     * Copyright (C) 2013 Linaro Limited.
>>>>> - *
>>>>> - * This program is free software; you can redistribute it and/or modify
>>>>> - * it under the terms of the GNU General Public License as published by
>>>>> - * the Free Software Foundation; either version 2 of the License, or
>>>>> - * (at your option) any later version.
>>>>> - *
>>>>> - * This program is distributed in the hope that it will be useful,
>>>>> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
>>>>> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>>>> - * GNU General Public License for more details.
>>>>>     */
>>>>>      #include <xen/guest_access.h>
>>>>
>>>> [...]
>>>>
>>>>> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
>>>>> index 3fd1186b53..b29bdf3aa6 100644
>>>>> --- a/xen/arch/arm/domain_build.c
>>>>> +++ b/xen/arch/arm/domain_build.c
>>>>> @@ -1,3 +1,4 @@
>>>>> +/* SPDX-License-Identifier: GPL-2.0 */
>>>>
>>>> AFAIU, the assumption is all the files with no copyright are GPLv2. That works
>>>> here. But ...
>>>>
>>>>>    #include <xen/init.h>
>>>>>    #include <xen/compile.h>
>>>>>    #include <xen/lib.h>
>>>>> diff --git a/xen/arch/arm/domain_page.c b/xen/arch/arm/domain_page.c
>>>>> index 71182575f9..47405e0866 100644
>>>>> --- a/xen/arch/arm/domain_page.c
>>>>> +++ b/xen/arch/arm/domain_page.c
>>>>> @@ -1,3 +1,4 @@
>>>>> +/* SPDX-License-Identifier: GPL-2.0 */
>>>>
>>>> .... this file was split from mm.c which is gpl-2.0-or-later. So I don't think
>>>> we can use GPL-2.0 here.
>>> Well spotted! Effectively this file is now declared as GPL 2.0 only,
>>> given what is stated in COPYING. The code in domain_page has lost "or
>>> later" with the loss of the copyright header.
>>
>> Yes. This was an oversight from me when I split the code a few weeks ago.
>>
>>> So if there were new contributions to this file after its creation, they
>>> would have been GPL-2.0 only contributions, and it would have been
>>> impossible to go back to GPL-2.0-or-later without asking the copyright
>>> owners of the new changes.
>>> In this case thankfully there are no new contributions since the split
>>> of the file, so I can fix it by using the SPDX GPL-2.0-or-later tag
>>> without problems. I'll do it in the next version of the series.
>>> Xen is not saying: "if there is no copyright header it might be GPLv2
>>> but you need to look it up". Xen is actively saying: "if there is no
>>> copyright header it is GPLv2". Not up for discussion. Given that as a
>>> whole Xen is GPLv2, the only possibility is that the file without a
>>> copyright header used to be:
>>> - GPLv2 or later
>>> - dual license GPL and another compatible license (e.g. BSD)
>>> Either way, with the loss of the copyright header, the file becomes
>>> immediately GPLv2 only.
>>> Does it make sense?
>>> This is why I think it is best to keep copyright discussions out of the
>>> SPDX patches review and limit ourselves to mechanical changes.
>>
>> Yes I agree this series should be mechanical (baring the file that is contain GPLv2+ code).
>>
>> I am putting some thoughts below (they can be split in a separate thread if you prefer).
>>
>> This is not the first time this topic is brought up and probably not the last as long as we have file using GPLv2+.
>>
>> IIRC from past discussion there are two broads concern with GPLv2+:
>>   - We are leaving the choice of which license applies to the person copying the code. So if a new version is released that is less favorable to the initial contributor, then we have no leverage.
>>   - Some companies are rather cautious to contribute code that my be licensed under GPLv3 (would be allowed with GPLv2+).
>>
>> The later is particularly a problem because not many people realize that a fair part of Xen on Arm is GPLv2+. I never really understood why we chose that (this was before my time) but this got spread as the existing copyright was added to a new file. Admittely, the contributor should be more cautious. But I would not say this is trivial to spot the difference.
>>
>> I would like to consider to re-license all the GPLv2+ files to GPLv2. AFAIU, this would mean we would need to ask the permission for every comapany that contributed to the file. Do you know if this was done before in Xen Project?
> 
> If I am understanding right, GPLv2+ means that someone could relicense the files to GPLv3 if he wants which is more restrictive.
> Why do you want to move those back to GPLv2 ?
The main difference between GPLv2 and GPLv3 is the patent section. This 
has caused some concerns in the past when a stakeholder want to 
contribute to Xen Project.

While looking through at previous discussion, I found the original 
discussion [1] which contains a lot more details.

Cheers,

[1] 
https://patchwork.kernel.org/project/xen-devel/patch/1474985810-12289-1-git-send-email-lars.kurth@citrix.com/#19650817

> 
> Cheers
> Bertrand
> 
>>
>> Cheers,
>>
>> -- 
>> Julien Grall
>
Stefano Stabellini Aug. 23, 2022, 6:53 p.m. UTC | #6
Hi all,

I changed the subject to reflect the discussion and moved George to
"to:" to get his attention.

Also, if we are going to make any chances as described below, I think
they should be a separate series from the SPDX series.


On Tue, 23 Aug 2022, Julien Grall wrote:
> > > I am putting some thoughts below (they can be split in a separate thread
> > > if you prefer).
> > > 
> > > This is not the first time this topic is brought up and probably not the
> > > last as long as we have file using GPLv2+.
> > > 
> > > IIRC from past discussion there are two broads concern with GPLv2+:
> > >   - We are leaving the choice of which license applies to the person
> > > copying the code. So if a new version is released that is less favorable
> > > to the initial contributor, then we have no leverage.
> > >   - Some companies are rather cautious to contribute code that my be
> > > licensed under GPLv3 (would be allowed with GPLv2+).
> > > 
> > > The later is particularly a problem because not many people realize that a
> > > fair part of Xen on Arm is GPLv2+. I never really understood why we chose
> > > that (this was before my time) but this got spread as the existing
> > > copyright was added to a new file. Admittely, the contributor should be
> > > more cautious. But I would not say this is trivial to spot the difference.
> > > 
> > > I would like to consider to re-license all the GPLv2+ files to GPLv2.
> > > AFAIU, this would mean we would need to ask the permission for every
> > > comapany that contributed to the file. Do you know if this was done before
> > > in Xen Project?
> > 
> > If I am understanding right, GPLv2+ means that someone could relicense the
> > files to GPLv3 if he wants which is more restrictive.
> > Why do you want to move those back to GPLv2 ?
> The main difference between GPLv2 and GPLv3 is the patent section. This has
> caused some concerns in the past when a stakeholder want to contribute to Xen
> Project.
>
> While looking through at previous discussion, I found the original discussion
> [1] which contains a lot more details.


I agree with Julien. Also, I don't think that having GPLv2-or-later on a
few source files is of benefit to anyone (if Xen was GPLv2-or-later as a
whole it would be a different discussion).

Moving from GPLv2-or-later to GPLv2-only is not a relicense. The "or
later" statement is not part of the license itself. It would be limiting
the choice of license to a subset of what is currently allowed: i.e.
from [GPLv2,GPLv3] to [GPLv2]. I don't think we need approval from the
original authors from that.

The original authors already stated: "my code can be either under GPLv2
or GPLv3". Now we are only offering it under GPLv2. Users can still get
the older version from a past Xen release under GPLv3 if they want to.

So I think we can drop "or later" any time as long as the maintainers
agree.

George, do you agree with the above?
Elliott Mitchell Aug. 23, 2022, 9:24 p.m. UTC | #7
On Tue, Aug 23, 2022 at 11:53:50AM -0700, Stefano Stabellini wrote:
> I changed the subject to reflect the discussion and moved George to
> "to:" to get his attention.
> 
> Also, if we are going to make any chances as described below, I think
> they should be a separate series from the SPDX series.

Also gets a second look from others who may have an opinion on the topic.

I second what is after the comma.  Adding SPDX tags and changing files
from GPLv2+ to GPLv2-only are distinct tasks and should be kept separate.


> On Tue, 23 Aug 2022, Julien Grall wrote:
> > > > I am putting some thoughts below (they can be split in a separate thread
> > > > if you prefer).
> > > > 
> > > > This is not the first time this topic is brought up and probably not the
> > > > last as long as we have file using GPLv2+.
> > > > 
> > > > IIRC from past discussion there are two broads concern with GPLv2+:
> > > >   - We are leaving the choice of which license applies to the person
> > > > copying the code. So if a new version is released that is less favorable
> > > > to the initial contributor, then we have no leverage.
> > > >   - Some companies are rather cautious to contribute code that my be
> > > > licensed under GPLv3 (would be allowed with GPLv2+).
> > > > 
> > > > The later is particularly a problem because not many people realize that a
> > > > fair part of Xen on Arm is GPLv2+. I never really understood why we chose
> > > > that (this was before my time) but this got spread as the existing
> > > > copyright was added to a new file. Admittely, the contributor should be
> > > > more cautious. But I would not say this is trivial to spot the difference.
> > > > 
> > > > I would like to consider to re-license all the GPLv2+ files to GPLv2.
> > > > AFAIU, this would mean we would need to ask the permission for every
> > > > comapany that contributed to the file. Do you know if this was done before
> > > > in Xen Project?
> > > 
> > > If I am understanding right, GPLv2+ means that someone could relicense the
> > > files to GPLv3 if he wants which is more restrictive.
> > > Why do you want to move those back to GPLv2 ?
> > The main difference between GPLv2 and GPLv3 is the patent section. This has
> > caused some concerns in the past when a stakeholder want to contribute to Xen
> > Project.
> >
> > While looking through at previous discussion, I found the original discussion
> > [1] which contains a lot more details.
> 
> 
> I agree with Julien. Also, I don't think that having GPLv2-or-later on a
> few source files is of benefit to anyone (if Xen was GPLv2-or-later as a
> whole it would be a different discussion).

I disagree here.  Having GPLv2+ on a few files hints at the contributor
community's views, though one must exercise care.

Notably if 50% of contributors prefer GPLv2+ less than 10% of files are
likely to be marked GPLv2+.  The reason being GPLv3 didn't exist until
2006 and a single GPLv2-only contributor would cause shared files to be
stuck as GPLv2-only.

So there could be a majority who prefer GPLv2+, just too many existing
files are GPLv2-only.


> Moving from GPLv2-or-later to GPLv2-only is not a relicense. The "or
> later" statement is not part of the license itself. It would be limiting
> the choice of license to a subset of what is currently allowed: i.e.
> from [GPLv2,GPLv3] to [GPLv2]. I don't think we need approval from the
> original authors from that.
> 
> The original authors already stated: "my code can be either under GPLv2
> or GPLv3". Now we are only offering it under GPLv2. Users can still get
> the older version from a past Xen release under GPLv3 if they want to.
> 
> So I think we can drop "or later" any time as long as the maintainers
> agree.
> 
> George, do you agree with the above?

I'm not an expert, but this matches my understanding as a (near-trivial)
contributor.


I'm not a significant contrbutor, but let it be hereby known my portions
are available under GPLv2+.
diff mbox series

Patch

diff --git a/xen/arch/arm/alternative.c b/xen/arch/arm/alternative.c
index f03cd943c6..f00e3b9b3c 100644
--- a/xen/arch/arm/alternative.c
+++ b/xen/arch/arm/alternative.c
@@ -1,20 +1,9 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * alternative runtime patching
  * inspired by the x86 version
  *
  * Copyright (C) 2014-2016 ARM Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <xen/init.h>
diff --git a/xen/arch/arm/bootfdt.c b/xen/arch/arm/bootfdt.c
index ec81a45de9..0acb7d63be 100644
--- a/xen/arch/arm/bootfdt.c
+++ b/xen/arch/arm/bootfdt.c
@@ -1,11 +1,8 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * Early Device Tree
  *
  * Copyright (C) 2012-2014 Citrix Systems, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
  */
 #include <xen/types.h>
 #include <xen/lib.h>
diff --git a/xen/arch/arm/cpuerrata.c b/xen/arch/arm/cpuerrata.c
index ae649d16ef..99bd4a7d38 100644
--- a/xen/arch/arm/cpuerrata.c
+++ b/xen/arch/arm/cpuerrata.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 #include <xen/cpu.h>
 #include <xen/cpumask.h>
 #include <xen/init.h>
diff --git a/xen/arch/arm/cpufeature.c b/xen/arch/arm/cpufeature.c
index 62d5e1770a..c4ec38bb25 100644
--- a/xen/arch/arm/cpufeature.c
+++ b/xen/arch/arm/cpufeature.c
@@ -1,19 +1,8 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * Contains CPU feature definitions
  *
  * Copyright (C) 2015 ARM Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <xen/types.h>
diff --git a/xen/arch/arm/decode.c b/xen/arch/arm/decode.c
index f5f6562600..2537dbebc1 100644
--- a/xen/arch/arm/decode.c
+++ b/xen/arch/arm/decode.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/decode.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Julien Grall <julien.grall@linaro.org>
  * Copyright (C) 2013 Linaro Limited.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/guest_access.h>
diff --git a/xen/arch/arm/device.c b/xen/arch/arm/device.c
index 70cd6c1a19..ca8539dee5 100644
--- a/xen/arch/arm/device.c
+++ b/xen/arch/arm/device.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/device.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Julien Grall <julien.grall@linaro.org>
  * Copyright (C) 2013 Linaro Limited.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <asm/device.h>
diff --git a/xen/arch/arm/dm.c b/xen/arch/arm/dm.c
index 1b3fd6bc7d..5569efa121 100644
--- a/xen/arch/arm/dm.c
+++ b/xen/arch/arm/dm.c
@@ -1,17 +1,6 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * Copyright (c) 2019 Arm ltd.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <xen/dm.h>
diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 2cd481979c..67a30ec724 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -1,14 +1,4 @@ 
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 #include <xen/bitops.h>
 #include <xen/errno.h>
 #include <xen/grant_table.h>
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 3fd1186b53..b29bdf3aa6 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 #include <xen/init.h>
 #include <xen/compile.h>
 #include <xen/lib.h>
diff --git a/xen/arch/arm/domain_page.c b/xen/arch/arm/domain_page.c
index 71182575f9..47405e0866 100644
--- a/xen/arch/arm/domain_page.c
+++ b/xen/arch/arm/domain_page.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 #include <xen/mm.h>
 #include <xen/pmap.h>
 #include <xen/vmap.h>
diff --git a/xen/arch/arm/domctl.c b/xen/arch/arm/domctl.c
index 1baf25c3d9..ad56efb0f5 100644
--- a/xen/arch/arm/domctl.c
+++ b/xen/arch/arm/domctl.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /******************************************************************************
  * Arch-specific domctl.c
  *
diff --git a/xen/arch/arm/early_printk.c b/xen/arch/arm/early_printk.c
index 333073d97e..03cbe0fb88 100644
--- a/xen/arch/arm/early_printk.c
+++ b/xen/arch/arm/early_printk.c
@@ -1,11 +1,8 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * printk() for use before the final page tables are setup.
  *
  * Copyright (C) 2012 Citrix Systems, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
  */
 
 #include <xen/init.h>
diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c
index bd773bcc67..b410575d2c 100644
--- a/xen/arch/arm/gic-v2.c
+++ b/xen/arch/arm/gic-v2.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/gic-v2.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Tim Deegan <tim@xen.org>
  * Copyright (c) 2011 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/lib.h>
diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
index 9558bad96a..6bd28fc87b 100644
--- a/xen/arch/arm/gic-v3-its.c
+++ b/xen/arch/arm/gic-v3-its.c
@@ -1,21 +1,10 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * xen/arch/arm/gic-v3-its.c
  *
  * ARM GICv3 Interrupt Translation Service (ITS) support
  *
  * Copyright (C) 2016,2017 - ARM Ltd
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; under version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <xen/acpi.h>
diff --git a/xen/arch/arm/gic-v3-lpi.c b/xen/arch/arm/gic-v3-lpi.c
index 61d90eb386..ca7a0ab39a 100644
--- a/xen/arch/arm/gic-v3-lpi.c
+++ b/xen/arch/arm/gic-v3-lpi.c
@@ -1,21 +1,10 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * xen/arch/arm/gic-v3-lpi.c
  *
  * ARM GICv3 Locality-specific Peripheral Interrupts (LPI) support
  *
  * Copyright (C) 2016,2017 - ARM Ltd
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; under version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <xen/cpu.h>
diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
index 64b36cec25..b1d47ff300 100644
--- a/xen/arch/arm/gic-v3.c
+++ b/xen/arch/arm/gic-v3.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/gic-v3.c
  *
@@ -9,16 +10,6 @@ 
  *
  * Vijaya Kumar K <vijaya.kumar@caviumnetworks.com>, Cavium Inc
  * ported to Xen
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/acpi.h>
diff --git a/xen/arch/arm/gic-vgic.c b/xen/arch/arm/gic-vgic.c
index 98c021f1a8..56490dbc43 100644
--- a/xen/arch/arm/gic-vgic.c
+++ b/xen/arch/arm/gic-vgic.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/gic-vgic.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Tim Deegan <tim@xen.org>
  * Copyright (c) 2011 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/errno.h>
diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
index 3b0331b538..d5d83f725c 100644
--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/gic.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Tim Deegan <tim@xen.org>
  * Copyright (c) 2011 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/lib.h>
diff --git a/xen/arch/arm/guest_atomics.c b/xen/arch/arm/guest_atomics.c
index 1b78a062f0..6ba77f082d 100644
--- a/xen/arch/arm/guest_atomics.c
+++ b/xen/arch/arm/guest_atomics.c
@@ -1,17 +1,6 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * arch/arm/guest_atomics.c
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 #include <xen/cpu.h>
 
diff --git a/xen/arch/arm/guest_walk.c b/xen/arch/arm/guest_walk.c
index 87de40d0cb..43d3215304 100644
--- a/xen/arch/arm/guest_walk.c
+++ b/xen/arch/arm/guest_walk.c
@@ -1,18 +1,7 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * Guest page table walk
  * Copyright (c) 2017 Sergej Proskurin <proskurin@sec.in.tum.de>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <xen/domain_page.h>
diff --git a/xen/arch/arm/guestcopy.c b/xen/arch/arm/guestcopy.c
index abb6236e27..225fd343dd 100644
--- a/xen/arch/arm/guestcopy.c
+++ b/xen/arch/arm/guestcopy.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 #include <xen/domain_page.h>
 #include <xen/guest_access.h>
 #include <xen/lib.h>
diff --git a/xen/arch/arm/hvm.c b/xen/arch/arm/hvm.c
index fc1a52767d..0989309fea 100644
--- a/xen/arch/arm/hvm.c
+++ b/xen/arch/arm/hvm.c
@@ -1,19 +1,8 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * arch/arm/hvm.c
  *
  * Arch-specific hardware virtual machine abstractions.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <xen/init.h>
diff --git a/xen/arch/arm/io.c b/xen/arch/arm/io.c
index 4ce94243aa..172583df04 100644
--- a/xen/arch/arm/io.c
+++ b/xen/arch/arm/io.c
@@ -1,19 +1,10 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/io.c
  *
  * ARM I/O handlers
  *
  * Copyright (c) 2011 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/ioreq.h>
diff --git a/xen/arch/arm/ioreq.c b/xen/arch/arm/ioreq.c
index 1338c86adb..5585457189 100644
--- a/xen/arch/arm/ioreq.c
+++ b/xen/arch/arm/ioreq.c
@@ -1,19 +1,8 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * arm/ioreq.c: hardware virtual machine I/O emulation
  *
  * Copyright (c) 2019 Arm ltd.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <xen/domain.h>
diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c
index fd0c15fffd..0fb924978d 100644
--- a/xen/arch/arm/irq.c
+++ b/xen/arch/arm/irq.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/irq.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Ian Campbell <ian.campbell@citrix.com>
  * Copyright (c) 2011 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/cpu.h>
diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
index 2556a45c38..23b840ea9e 100644
--- a/xen/arch/arm/kernel.c
+++ b/xen/arch/arm/kernel.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * Kernel image loading.
  *
diff --git a/xen/arch/arm/livepatch.c b/xen/arch/arm/livepatch.c
index 57abc746e6..d646379c8c 100644
--- a/xen/arch/arm/livepatch.c
+++ b/xen/arch/arm/livepatch.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  *  Copyright (C) 2016 Citrix Systems R&D Ltd.
  */
diff --git a/xen/arch/arm/mem_access.c b/xen/arch/arm/mem_access.c
index 3e3620294c..31db846354 100644
--- a/xen/arch/arm/mem_access.c
+++ b/xen/arch/arm/mem_access.c
@@ -1,19 +1,8 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * arch/arm/mem_access.c
  *
  * Architecture-specific mem_access handling routines
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License v2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <xen/mem_access.h>
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index b42cddb1b4..4271904c31 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/mm.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Tim Deegan <tim@xen.org>
  * Copyright (c) 2011 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/domain_page.h>
diff --git a/xen/arch/arm/monitor.c b/xen/arch/arm/monitor.c
index 8c4a396e3c..6c93a9e993 100644
--- a/xen/arch/arm/monitor.c
+++ b/xen/arch/arm/monitor.c
@@ -1,21 +1,10 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * arch/arm/monitor.c
  *
  * Arch-specific monitor_op domctl handler.
  *
  * Copyright (c) 2016 Tamas K Lengyel (tamas.lengyel@zentific.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License v2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <xen/vm_event.h>
diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index 8449f97fe7..4df5fff42d 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 #include <xen/cpu.h>
 #include <xen/domain_page.h>
 #include <xen/iocap.h>
diff --git a/xen/arch/arm/percpu.c b/xen/arch/arm/percpu.c
index 25442c48fe..f1ef844ef3 100644
--- a/xen/arch/arm/percpu.c
+++ b/xen/arch/arm/percpu.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 #include <xen/percpu.h>
 #include <xen/cpu.h>
 #include <xen/init.h>
diff --git a/xen/arch/arm/physdev.c b/xen/arch/arm/physdev.c
index 95a8cdc0ee..7b1682ee10 100644
--- a/xen/arch/arm/physdev.c
+++ b/xen/arch/arm/physdev.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /******************************************************************************
  * Arch-specific physdev.c
  *
diff --git a/xen/arch/arm/platform.c b/xen/arch/arm/platform.c
index 4db5bbb4c5..6701ff77bc 100644
--- a/xen/arch/arm/platform.c
+++ b/xen/arch/arm/platform.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/platform.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Julien Grall <julien.grall@linaro.org>
  * Copyright (C) 2013 Linaro Limited.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <asm/platform.h>
diff --git a/xen/arch/arm/platform_hypercall.c b/xen/arch/arm/platform_hypercall.c
index 403cc84324..743687a303 100644
--- a/xen/arch/arm/platform_hypercall.c
+++ b/xen/arch/arm/platform_hypercall.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /******************************************************************************
  * platform_hypercall.c
  *
diff --git a/xen/arch/arm/processor.c b/xen/arch/arm/processor.c
index acad8b31d6..6de206c07e 100644
--- a/xen/arch/arm/processor.c
+++ b/xen/arch/arm/processor.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/processor.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Julien Grall <julien.grall@linaro.org>
  * Copyright (C) 2014 Linaro Limited.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 #include <asm/procinfo.h>
 
diff --git a/xen/arch/arm/psci.c b/xen/arch/arm/psci.c
index 0c90c2305c..695d2fa1f1 100644
--- a/xen/arch/arm/psci.c
+++ b/xen/arch/arm/psci.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/psci.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Andre Przywara <andre.przywara@linaro.org>
  * Copyright (c) 2013 Linaro Limited.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 500307edc0..a2a5791d41 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/setup.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Tim Deegan <tim@xen.org>
  * Copyright (c) 2011 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/compile.h>
diff --git a/xen/arch/arm/shutdown.c b/xen/arch/arm/shutdown.c
index 0606cb84b3..205a5e7f8c 100644
--- a/xen/arch/arm/shutdown.c
+++ b/xen/arch/arm/shutdown.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 #include <xen/console.h>
 #include <xen/cpu.h>
 #include <xen/delay.h>
diff --git a/xen/arch/arm/smp.c b/xen/arch/arm/smp.c
index 5823a69d3e..bb65a08fc1 100644
--- a/xen/arch/arm/smp.c
+++ b/xen/arch/arm/smp.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 #include <xen/mm.h>
 #include <asm/system.h>
 #include <asm/smp.h>
diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
index f7bda3a18b..635977e489 100644
--- a/xen/arch/arm/smpboot.c
+++ b/xen/arch/arm/smpboot.c
@@ -1,19 +1,10 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/smpboot.c
  *
  * Dummy smpboot support
  *
  * Copyright (c) 2011 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/cpu.h>
diff --git a/xen/arch/arm/sysctl.c b/xen/arch/arm/sysctl.c
index f87944e847..b0a78a8b10 100644
--- a/xen/arch/arm/sysctl.c
+++ b/xen/arch/arm/sysctl.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /******************************************************************************
  * Arch-specific sysctl.c
  *
diff --git a/xen/arch/arm/time.c b/xen/arch/arm/time.c
index dec53b5f7d..92baaf8cb2 100644
--- a/xen/arch/arm/time.c
+++ b/xen/arch/arm/time.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/time.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Tim Deegan <tim@xen.org>
  * Copyright (c) 2011 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/console.h>
diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index 79f9ed0725..061c92acbd 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -1,19 +1,10 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/traps.c
  *
  * ARM Trap handlers
  *
  * Copyright (c) 2011 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/domain_page.h>
diff --git a/xen/arch/arm/vcpreg.c b/xen/arch/arm/vcpreg.c
index b5fbbe1cb8..4adfc0a68d 100644
--- a/xen/arch/arm/vcpreg.c
+++ b/xen/arch/arm/vcpreg.c
@@ -1,19 +1,10 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/arm64/vcpreg.c
  *
  * Emulate co-processor registers trapped.
  *
  * Copyright (c) 2011 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/sched.h>
diff --git a/xen/arch/arm/vgic-v2.c b/xen/arch/arm/vgic-v2.c
index b1bd7a46ad..0026cb4360 100644
--- a/xen/arch/arm/vgic-v2.c
+++ b/xen/arch/arm/vgic-v2.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/vgic-v2.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Ian Campbell <ian.campbell@citrix.com>
  * Copyright (c) 2011 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/bitops.h>
diff --git a/xen/arch/arm/vgic-v3-its.c b/xen/arch/arm/vgic-v3-its.c
index 58d939b85f..299b384250 100644
--- a/xen/arch/arm/vgic-v3-its.c
+++ b/xen/arch/arm/vgic-v3-its.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * xen/arch/arm/vgic-v3-its.c
  *
@@ -5,18 +6,6 @@ 
  *
  * Andre Przywara <andre.przywara@arm.com>
  * Copyright (c) 2016,2017 ARM Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; under version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c
index 7fb99a9ff2..7d2507079d 100644
--- a/xen/arch/arm/vgic-v3.c
+++ b/xen/arch/arm/vgic-v3.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/vgic-v3.c
  *
@@ -6,16 +7,6 @@ 
  *
  * Vijaya Kumar K <vijaya.kumar@caviumnetworks.com>
  * Copyright (c) 2014 Cavium Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/bitops.h>
diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c
index 83386cf3d5..c61c68870c 100644
--- a/xen/arch/arm/vgic.c
+++ b/xen/arch/arm/vgic.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/vgic.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Ian Campbell <ian.campbell@citrix.com>
  * Copyright (c) 2011 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/bitops.h>
diff --git a/xen/arch/arm/vm_event.c b/xen/arch/arm/vm_event.c
index eaac92078d..ba99f56eb2 100644
--- a/xen/arch/arm/vm_event.c
+++ b/xen/arch/arm/vm_event.c
@@ -1,21 +1,10 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * arch/arm/vm_event.c
  *
  * Architecture-specific vm_event handling routines
  *
  * Copyright (c) 2016 Tamas K Lengyel (tamas.lengyel@zentific.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License v2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <xen/sched.h>
diff --git a/xen/arch/arm/vpci.c b/xen/arch/arm/vpci.c
index a9fc5817f9..3bc4bb5508 100644
--- a/xen/arch/arm/vpci.c
+++ b/xen/arch/arm/vpci.c
@@ -1,15 +1,6 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/vpci.c
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 #include <xen/sched.h>
 #include <xen/vpci.h>
diff --git a/xen/arch/arm/vpl011.c b/xen/arch/arm/vpl011.c
index 43522d48fd..f6144da1d7 100644
--- a/xen/arch/arm/vpl011.c
+++ b/xen/arch/arm/vpl011.c
@@ -1,19 +1,8 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * arch/arm/vpl011.c
  *
  * Virtual PL011 UART
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
 #define XEN_WANT_FLEX_CONSOLE_RING 1
diff --git a/xen/arch/arm/vpsci.c b/xen/arch/arm/vpsci.c
index 744d43ec27..d1615be8a6 100644
--- a/xen/arch/arm/vpsci.c
+++ b/xen/arch/arm/vpsci.c
@@ -1,15 +1,4 @@ 
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 #include <xen/errno.h>
 #include <xen/sched.h>
 #include <xen/types.h>
diff --git a/xen/arch/arm/vsmc.c b/xen/arch/arm/vsmc.c
index 676740ef15..7335276f3f 100644
--- a/xen/arch/arm/vsmc.c
+++ b/xen/arch/arm/vsmc.c
@@ -1,17 +1,9 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * xen/arch/arm/vsmc.c
  *
  * Generic handler for SMC and HVC calls according to
  * ARM SMC calling convention
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 
diff --git a/xen/arch/arm/vtimer.c b/xen/arch/arm/vtimer.c
index aeaea78e4c..48f2daa907 100644
--- a/xen/arch/arm/vtimer.c
+++ b/xen/arch/arm/vtimer.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/vtimer.c
  *
@@ -5,16 +6,6 @@ 
  *
  * Ian Campbell <ian.campbell@citrix.com>
  * Copyright (c) 2011 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #include <xen/lib.h>
diff --git a/xen/arch/arm/vuart.c b/xen/arch/arm/vuart.c
index 80d4755d43..d5ba483f1e 100644
--- a/xen/arch/arm/vuart.c
+++ b/xen/arch/arm/vuart.c
@@ -1,3 +1,4 @@ 
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * xen/arch/arm/vuart.c
  *
@@ -19,16 +20,6 @@ 
  * Julien Grall <julien.grall@linaro.org>
  * Ian Campbell <ian.campbell@citrix.com>
  * Copyright (c) 2012 Citrix Systems.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 #include <xen/lib.h>
 #include <xen/sched.h>