License cleanup: add SPDX GPL-2.0 license identifier to files with no license
Many source files in the tree are missing licensing information, which
makes it harder for compliance tools to determine the correct license.
By default all files without license information are under the default
license of the kernel, which is GPL version 2.
Update the files which contain no license information with the 'GPL-2.0'
SPDX license identifier. The SPDX identifier is a legally binding
shorthand, which can be used instead of the full boiler plate text.
This patch is based on work done by Thomas Gleixner and Kate Stewart and
Philippe Ombredanne.
How this work was done:
Patches were generated and checked against linux-4.14-rc6 for a subset of
the use cases:
- file had no licensing information it it.
- file was a */uapi/* one with no licensing information in it,
- file was a */uapi/* one with existing licensing information,
Further patches will be generated in subsequent months to fix up cases
where non-standard license headers were used, and references to license
had to be inferred by heuristics based on keywords.
The analysis to determine which SPDX License Identifier to be applied to
a file was done in a spreadsheet of side by side results from of the
output of two independent scanners (ScanCode & Windriver) producing SPDX
tag:value files created by Philippe Ombredanne. Philippe prepared the
base worksheet, and did an initial spot review of a few 1000 files.
The 4.13 kernel was the starting point of the analysis with 60,537 files
assessed. Kate Stewart did a file by file comparison of the scanner
results in the spreadsheet to determine which SPDX license identifier(s)
to be applied to the file. She confirmed any determination that was not
immediately clear with lawyers working with the Linux Foundation.
Criteria used to select files for SPDX license identifier tagging was:
- Files considered eligible had to be source code files.
- Make and config files were included as candidates if they contained >5
lines of source
- File already had some variant of a license header in it (even if <5
lines).
All documentation files were explicitly excluded.
The following heuristics were used to determine which SPDX license
identifiers to apply.
- when both scanners couldn't find any license traces, file was
considered to have no license information in it, and the top level
COPYING file license applied.
For non */uapi/* files that summary was:
SPDX license identifier # files
---------------------------------------------------|-------
GPL-2.0 11139
and resulted in the first patch in this series.
If that file was a */uapi/* path one, it was "GPL-2.0 WITH
Linux-syscall-note" otherwise it was "GPL-2.0". Results of that was:
SPDX license identifier # files
---------------------------------------------------|-------
GPL-2.0 WITH Linux-syscall-note 930
and resulted in the second patch in this series.
- if a file had some form of licensing information in it, and was one
of the */uapi/* ones, it was denoted with the Linux-syscall-note if
any GPL family license was found in the file or had no licensing in
it (per prior point). Results summary:
SPDX license identifier # files
---------------------------------------------------|------
GPL-2.0 WITH Linux-syscall-note 270
GPL-2.0+ WITH Linux-syscall-note 169
((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) 21
((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 17
LGPL-2.1+ WITH Linux-syscall-note 15
GPL-1.0+ WITH Linux-syscall-note 14
((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) 5
LGPL-2.0+ WITH Linux-syscall-note 4
LGPL-2.1 WITH Linux-syscall-note 3
((GPL-2.0 WITH Linux-syscall-note) OR MIT) 3
((GPL-2.0 WITH Linux-syscall-note) AND MIT) 1
and that resulted in the third patch in this series.
- when the two scanners agreed on the detected license(s), that became
the concluded license(s).
- when there was disagreement between the two scanners (one detected a
license but the other didn't, or they both detected different
licenses) a manual inspection of the file occurred.
- In most cases a manual inspection of the information in the file
resulted in a clear resolution of the license that should apply (and
which scanner probably needed to revisit its heuristics).
- When it was not immediately clear, the license identifier was
confirmed with lawyers working with the Linux Foundation.
- If there was any question as to the appropriate license identifier,
the file was flagged for further research and to be revisited later
in time.
In total, over 70 hours of logged manual review was done on the
spreadsheet to determine the SPDX license identifiers to apply to the
source files by Kate, Philippe, Thomas and, in some cases, confirmation
by lawyers working with the Linux Foundation.
Kate also obtained a third independent scan of the 4.13 code base from
FOSSology, and compared selected files where the other two scanners
disagreed against that SPDX file, to see if there was new insights. The
Windriver scanner is based on an older version of FOSSology in part, so
they are related.
Thomas did random spot checks in about 500 files from the spreadsheets
for the uapi headers and agreed with SPDX license identifier in the
files he inspected. For the non-uapi files Thomas did random spot checks
in about 15000 files.
In initial set of patches against 4.14-rc6, 3 files were found to have
copy/paste license identifier errors, and have been fixed to reflect the
correct identifier.
Additionally Philippe spent 10 hours this week doing a detailed manual
inspection and review of the 12,461 patched files from the initial patch
version early this week with:
- a full scancode scan run, collecting the matched texts, detected
license ids and scores
- reviewing anything where there was a license detected (about 500+
files) to ensure that the applied SPDX license was correct
- reviewing anything where there was no detection but the patch license
was not GPL-2.0 WITH Linux-syscall-note to ensure that the applied
SPDX license was correct
This produced a worksheet with 20 files needing minor correction. This
worksheet was then exported into 3 different .csv files for the
different types of files to be modified.
These .csv files were then reviewed by Greg. Thomas wrote a script to
parse the csv files and add the proper SPDX tag to the file, in the
format that the file expected. This script was further refined by Greg
based on the output to detect more types of files automatically and to
distinguish between header and source .c files (which need different
comment types.) Finally Greg ran the script using the .csv files to
generate the patches.
Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org>
Reviewed-by: Philippe Ombredanne <pombredanne@nexb.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-11-01 14:07:57 +00:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0 */
|
2015-04-21 02:00:35 +00:00
|
|
|
#ifndef __ASM_MACH_LOONGSON64_BOOT_PARAM_H_
|
|
|
|
#define __ASM_MACH_LOONGSON64_BOOT_PARAM_H_
|
2014-03-21 10:44:02 +00:00
|
|
|
|
|
|
|
#define SYSTEM_RAM_LOW 1
|
|
|
|
#define SYSTEM_RAM_HIGH 2
|
2017-11-16 08:35:04 +00:00
|
|
|
#define SYSTEM_RAM_RESERVED 3
|
2014-03-21 10:44:02 +00:00
|
|
|
#define PCI_IO 4
|
|
|
|
#define PCI_MEM 5
|
|
|
|
#define LOONGSON_CFG_REG 6
|
|
|
|
#define VIDEO_ROM 7
|
|
|
|
#define ADAPTER_ROM 8
|
|
|
|
#define ACPI_TABLE 9
|
2014-11-04 06:13:27 +00:00
|
|
|
#define SMBIOS_TABLE 10
|
|
|
|
#define MAX_MEMORY_TYPE 11
|
2014-03-21 10:44:02 +00:00
|
|
|
|
|
|
|
#define LOONGSON3_BOOT_MEM_MAP_MAX 128
|
|
|
|
struct efi_memory_map_loongson {
|
|
|
|
u16 vers; /* version of efi_memory_map */
|
|
|
|
u32 nr_map; /* number of memory_maps */
|
|
|
|
u32 mem_freq; /* memory frequence */
|
|
|
|
struct mem_map {
|
|
|
|
u32 node_id; /* node_id which memory attached to */
|
|
|
|
u32 mem_type; /* system memory, pci memory, pci io, etc. */
|
|
|
|
u64 mem_start; /* memory map start address */
|
|
|
|
u32 mem_size; /* each memory_map size, not the total size */
|
|
|
|
} map[LOONGSON3_BOOT_MEM_MAP_MAX];
|
|
|
|
} __packed;
|
|
|
|
|
|
|
|
enum loongson_cpu_type {
|
2017-06-22 15:06:54 +00:00
|
|
|
Legacy_2E = 0x0,
|
|
|
|
Legacy_2F = 0x1,
|
|
|
|
Legacy_3A = 0x2,
|
|
|
|
Legacy_3B = 0x3,
|
|
|
|
Legacy_1A = 0x4,
|
|
|
|
Legacy_1B = 0x5,
|
|
|
|
Legacy_2G = 0x6,
|
|
|
|
Legacy_2H = 0x7,
|
|
|
|
Loongson_1A = 0x100,
|
|
|
|
Loongson_1B = 0x101,
|
|
|
|
Loongson_2E = 0x200,
|
|
|
|
Loongson_2F = 0x201,
|
|
|
|
Loongson_2G = 0x202,
|
|
|
|
Loongson_2H = 0x203,
|
|
|
|
Loongson_3A = 0x300,
|
|
|
|
Loongson_3B = 0x301
|
2014-03-21 10:44:02 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Capability and feature descriptor structure for MIPS CPU
|
|
|
|
*/
|
|
|
|
struct efi_cpuinfo_loongson {
|
|
|
|
u16 vers; /* version of efi_cpuinfo_loongson */
|
|
|
|
u32 processor_id; /* PRID, e.g. 6305, 6306 */
|
|
|
|
u32 cputype; /* Loongson_3A/3B, etc. */
|
|
|
|
u32 total_node; /* num of total numa nodes */
|
2014-11-04 06:13:26 +00:00
|
|
|
u16 cpu_startup_core_id; /* Boot core id */
|
|
|
|
u16 reserved_cores_mask;
|
2014-03-21 10:44:02 +00:00
|
|
|
u32 cpu_clock_freq; /* cpu_clock */
|
|
|
|
u32 nr_cpus;
|
|
|
|
} __packed;
|
|
|
|
|
2014-11-04 06:13:27 +00:00
|
|
|
#define MAX_UARTS 64
|
|
|
|
struct uart_device {
|
|
|
|
u32 iotype; /* see include/linux/serial_core.h */
|
|
|
|
u32 uartclk;
|
|
|
|
u32 int_offset;
|
|
|
|
u64 uart_base;
|
|
|
|
} __packed;
|
|
|
|
|
|
|
|
#define MAX_SENSORS 64
|
|
|
|
#define SENSOR_TEMPER 0x00000001
|
|
|
|
#define SENSOR_VOLTAGE 0x00000002
|
|
|
|
#define SENSOR_FAN 0x00000004
|
|
|
|
struct sensor_device {
|
|
|
|
char name[32]; /* a formal name */
|
|
|
|
char label[64]; /* a flexible description */
|
|
|
|
u32 type; /* SENSOR_* */
|
|
|
|
u32 id; /* instance id of a sensor-class */
|
|
|
|
u32 fan_policy; /* see loongson_hwmon.h */
|
|
|
|
u32 fan_percent;/* only for constant speed policy */
|
|
|
|
u64 base_addr; /* base address of device registers */
|
|
|
|
} __packed;
|
|
|
|
|
2014-03-21 10:44:02 +00:00
|
|
|
struct system_loongson {
|
|
|
|
u16 vers; /* version of system_loongson */
|
|
|
|
u32 ccnuma_smp; /* 0: no numa; 1: has numa */
|
|
|
|
u32 sing_double_channel; /* 1:single; 2:double */
|
2014-11-04 06:13:27 +00:00
|
|
|
u32 nr_uarts;
|
|
|
|
struct uart_device uarts[MAX_UARTS];
|
|
|
|
u32 nr_sensors;
|
|
|
|
struct sensor_device sensors[MAX_SENSORS];
|
|
|
|
char has_ec;
|
|
|
|
char ec_name[32];
|
|
|
|
u64 ec_base_addr;
|
|
|
|
char has_tcm;
|
|
|
|
char tcm_name[32];
|
|
|
|
u64 tcm_base_addr;
|
|
|
|
u64 workarounds; /* see workarounds.h */
|
2014-03-21 10:44:02 +00:00
|
|
|
} __packed;
|
|
|
|
|
|
|
|
struct irq_source_routing_table {
|
|
|
|
u16 vers;
|
|
|
|
u16 size;
|
|
|
|
u16 rtr_bus;
|
|
|
|
u16 rtr_devfn;
|
|
|
|
u32 vendor;
|
|
|
|
u32 device;
|
|
|
|
u32 PIC_type; /* conform use HT or PCI to route to CPU-PIC */
|
|
|
|
u64 ht_int_bit; /* 3A: 1<<24; 3B: 1<<16 */
|
|
|
|
u64 ht_enable; /* irqs used in this PIC */
|
|
|
|
u32 node_id; /* node id: 0x0-0; 0x1-1; 0x10-2; 0x11-3 */
|
|
|
|
u64 pci_mem_start_addr;
|
|
|
|
u64 pci_mem_end_addr;
|
|
|
|
u64 pci_io_start_addr;
|
|
|
|
u64 pci_io_end_addr;
|
|
|
|
u64 pci_config_addr;
|
|
|
|
u32 dma_mask_bits;
|
|
|
|
} __packed;
|
|
|
|
|
|
|
|
struct interface_info {
|
|
|
|
u16 vers; /* version of the specificition */
|
|
|
|
u16 size;
|
|
|
|
u8 flag;
|
|
|
|
char description[64];
|
|
|
|
} __packed;
|
|
|
|
|
|
|
|
#define MAX_RESOURCE_NUMBER 128
|
|
|
|
struct resource_loongson {
|
|
|
|
u64 start; /* resource start address */
|
|
|
|
u64 end; /* resource end address */
|
|
|
|
char name[64];
|
|
|
|
u32 flags;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct archdev_data {}; /* arch specific additions */
|
|
|
|
|
|
|
|
struct board_devices {
|
|
|
|
char name[64]; /* hold the device name */
|
|
|
|
u32 num_resources; /* number of device_resource */
|
|
|
|
/* for each device's resource */
|
|
|
|
struct resource_loongson resource[MAX_RESOURCE_NUMBER];
|
|
|
|
/* arch specific additions */
|
|
|
|
struct archdev_data archdata;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct loongson_special_attribute {
|
|
|
|
u16 vers; /* version of this special */
|
|
|
|
char special_name[64]; /* special_atribute_name */
|
|
|
|
u32 loongson_special_type; /* type of special device */
|
|
|
|
/* for each device's resource */
|
|
|
|
struct resource_loongson resource[MAX_RESOURCE_NUMBER];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct loongson_params {
|
|
|
|
u64 memory_offset; /* efi_memory_map_loongson struct offset */
|
|
|
|
u64 cpu_offset; /* efi_cpuinfo_loongson struct offset */
|
|
|
|
u64 system_offset; /* system_loongson struct offset */
|
|
|
|
u64 irq_offset; /* irq_source_routing_table struct offset */
|
|
|
|
u64 interface_offset; /* interface_info struct offset */
|
|
|
|
u64 special_offset; /* loongson_special_attribute struct offset */
|
|
|
|
u64 boarddev_table_offset; /* board_devices offset */
|
|
|
|
};
|
|
|
|
|
|
|
|
struct smbios_tables {
|
|
|
|
u16 vers; /* version of smbios */
|
|
|
|
u64 vga_bios; /* vga_bios address */
|
|
|
|
struct loongson_params lp;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct efi_reset_system_t {
|
|
|
|
u64 ResetCold;
|
|
|
|
u64 ResetWarm;
|
|
|
|
u64 ResetType;
|
|
|
|
u64 Shutdown;
|
|
|
|
u64 DoSuspend; /* NULL if not support */
|
|
|
|
};
|
|
|
|
|
|
|
|
struct efi_loongson {
|
|
|
|
u64 mps; /* MPS table */
|
|
|
|
u64 acpi; /* ACPI table (IA64 ext 0.71) */
|
|
|
|
u64 acpi20; /* ACPI table (ACPI 2.0) */
|
|
|
|
struct smbios_tables smbios; /* SM BIOS table */
|
|
|
|
u64 sal_systab; /* SAL system table */
|
|
|
|
u64 boot_info; /* boot info table */
|
|
|
|
};
|
|
|
|
|
|
|
|
struct boot_params {
|
|
|
|
struct efi_loongson efi;
|
|
|
|
struct efi_reset_system_t reset_system;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct loongson_system_configuration {
|
|
|
|
u32 nr_cpus;
|
2014-06-26 03:41:28 +00:00
|
|
|
u32 nr_nodes;
|
|
|
|
int cores_per_node;
|
|
|
|
int cores_per_package;
|
2014-11-04 06:13:26 +00:00
|
|
|
u16 boot_cpu_id;
|
|
|
|
u16 reserved_cpus_mask;
|
2014-03-21 10:44:02 +00:00
|
|
|
enum loongson_cpu_type cputype;
|
|
|
|
u64 ht_control_base;
|
|
|
|
u64 pci_mem_start_addr;
|
|
|
|
u64 pci_mem_end_addr;
|
|
|
|
u64 pci_io_base;
|
|
|
|
u64 restart_addr;
|
|
|
|
u64 poweroff_addr;
|
|
|
|
u64 suspend_addr;
|
|
|
|
u64 vgabios_addr;
|
|
|
|
u32 dma_mask_bits;
|
2014-11-04 06:13:27 +00:00
|
|
|
char ecname[32];
|
|
|
|
u32 nr_uarts;
|
|
|
|
struct uart_device uarts[MAX_UARTS];
|
|
|
|
u32 nr_sensors;
|
|
|
|
struct sensor_device sensors[MAX_SENSORS];
|
|
|
|
u64 workarounds;
|
2014-03-21 10:44:02 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
extern struct efi_memory_map_loongson *loongson_memmap;
|
|
|
|
extern struct loongson_system_configuration loongson_sysconf;
|
2014-11-04 06:13:27 +00:00
|
|
|
|
2014-03-21 10:44:02 +00:00
|
|
|
#endif
|