diff options
author | Nikolay Amiantov <ab@fmap.me> | 2016-01-23 13:13:59 +0300 |
---|---|---|
committer | Nikolay Amiantov <ab@fmap.me> | 2016-01-23 13:13:59 +0300 |
commit | 29785c5b7a6285bccf13ae0e0895c79b1497265e (patch) | |
tree | cd96f6febdb54e038616c3c336d564c3181fce66 /pkgs/os-specific/linux | |
parent | 9a5fcab124f0ba35e76920ff343352256d22485c (diff) | |
parent | 860d8c3a55d2e328adb042e9b6b9b9cf00448818 (diff) | |
download | nixlib-29785c5b7a6285bccf13ae0e0895c79b1497265e.tar nixlib-29785c5b7a6285bccf13ae0e0895c79b1497265e.tar.gz nixlib-29785c5b7a6285bccf13ae0e0895c79b1497265e.tar.bz2 nixlib-29785c5b7a6285bccf13ae0e0895c79b1497265e.tar.lz nixlib-29785c5b7a6285bccf13ae0e0895c79b1497265e.tar.xz nixlib-29785c5b7a6285bccf13ae0e0895c79b1497265e.tar.zst nixlib-29785c5b7a6285bccf13ae0e0895c79b1497265e.zip |
Merge pull request #12309 from zohl/chromiumos-kernel
Add ChromiumOS kernels
Diffstat (limited to 'pkgs/os-specific/linux')
10 files changed, 304 insertions, 1 deletions
diff --git a/pkgs/os-specific/linux/firmware/rt5677/default.nix b/pkgs/os-specific/linux/firmware/rt5677/default.nix new file mode 100644 index 000000000000..46716b3f4900 --- /dev/null +++ b/pkgs/os-specific/linux/firmware/rt5677/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchgit }: + +stdenv.mkDerivation { + name = "rt5677-firmware"; + + src = fetchgit { + url = "https://github.com/raphael/linux-samus"; + rev = "995de6c2093797905fbcd79f1a3625dd3f50be37"; + sha256 = "6e59f7ce24122eb9474e7863e63729de632e4c7afcb8f08534cb2102007f8381"; + }; + + + installPhase = '' + mkdir -p $out/lib/firmware + cp ./firmware/rt5677_elf_vad $out/lib/firmware + ''; + + meta = with stdenv.lib; { + description = "Firmware for Realtek rt5677 device"; + license = licenses.unfreeRedistributableFirmware; + maintainers = [ maintainers.zohl ]; + }; +} diff --git a/pkgs/os-specific/linux/kernel/chromiumos-patches/fix-double-Kconfig-entry-3.14.patch b/pkgs/os-specific/linux/kernel/chromiumos-patches/fix-double-Kconfig-entry-3.14.patch new file mode 100644 index 000000000000..7fdcafa62d9d --- /dev/null +++ b/pkgs/os-specific/linux/kernel/chromiumos-patches/fix-double-Kconfig-entry-3.14.patch @@ -0,0 +1,47 @@ +From de6299c1627d80ea6742a0bef15bdb6981e5cfd7 Mon Sep 17 00:00:00 2001 +From: Nikolay Amiantov <ab@fmap.me> +Date: Fri, 25 Dec 2015 17:11:40 +0300 +Subject: [PATCH 1/2] drivers_base: fix double Kconfig entry + +--- + drivers/base/Kconfig | 24 ------------------------ + 1 file changed, 24 deletions(-) + +diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig +index 946ced4..fc3405e1 100644 +--- a/drivers/base/Kconfig ++++ b/drivers/base/Kconfig +@@ -163,30 +163,6 @@ config FW_LOADER_USER_HELPER + no longer required unless you have a special firmware file that + resides in a non-standard path. + +-config WANT_DEV_COREDUMP +- bool +- help +- Drivers should "select" this option if they desire to use the +- device coredump mechanism. +- +-config ALLOW_DEV_COREDUMP +- bool "Allow device coredump" if EXPERT +- default y +- help +- This option controls if the device coredump mechanism is available or +- not; if disabled, the mechanism will be omitted even if drivers that +- can use it are enabled. +- Say 'N' for more sensitive systems or systems that don't want +- to ever access the information to not have the code, nor keep any +- data. +- +- If unsure, say Y. +- +-config DEV_COREDUMP +- bool +- default y if WANT_DEV_COREDUMP +- depends on ALLOW_DEV_COREDUMP +- + config DEBUG_DRIVER + bool "Driver Core verbose debug messages" + depends on DEBUG_KERNEL +-- +2.6.3 + diff --git a/pkgs/os-specific/linux/kernel/chromiumos-patches/fix-double-Kconfig-entry-3.18.patch b/pkgs/os-specific/linux/kernel/chromiumos-patches/fix-double-Kconfig-entry-3.18.patch new file mode 100644 index 000000000000..2d8af8fa7459 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/chromiumos-patches/fix-double-Kconfig-entry-3.18.patch @@ -0,0 +1,48 @@ +diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig +index 48398b4..0e37f7d 100644 +--- a/drivers/base/Kconfig ++++ b/drivers/base/Kconfig +@@ -198,30 +198,6 @@ config DEV_COREDUMP + default y if WANT_DEV_COREDUMP + depends on ALLOW_DEV_COREDUMP + +-config WANT_DEV_COREDUMP +- bool +- help +- Drivers should "select" this option if they desire to use the +- device coredump mechanism. +- +-config ALLOW_DEV_COREDUMP +- bool "Allow device coredump" if EXPERT +- default y +- help +- This option controls if the device coredump mechanism is available or +- not; if disabled, the mechanism will be omitted even if drivers that +- can use it are enabled. +- Say 'N' for more sensitive systems or systems that don't want +- to ever access the information to not have the code, nor keep any +- data. +- +- If unsure, say Y. +- +-config DEV_COREDUMP +- bool +- default y if WANT_DEV_COREDUMP +- depends on ALLOW_DEV_COREDUMP +- + config DEBUG_DRIVER + bool "Driver Core verbose debug messages" + depends on DEBUG_KERNEL +diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig +index 58154a9..53a0d73 100644 +--- a/drivers/mfd/Kconfig ++++ b/drivers/mfd/Kconfig +@@ -81,7 +81,7 @@ config MFD_AXP20X + + config MFD_CROS_EC + tristate "Support ChromeOS Embedded Controller" +- depends on MFD_CORE ++ select MFD_CORE + help + If you say Y here you get support for the ChromeOS Embedded + Controller (EC) providing keyboard, battery and power services. diff --git a/pkgs/os-specific/linux/kernel/chromiumos-patches/mfd-fix-dependency.patch b/pkgs/os-specific/linux/kernel/chromiumos-patches/mfd-fix-dependency.patch new file mode 100644 index 000000000000..f17ecce92d1c --- /dev/null +++ b/pkgs/os-specific/linux/kernel/chromiumos-patches/mfd-fix-dependency.patch @@ -0,0 +1,25 @@ +From 65c5b603489d230b1f1775b01ba1529843cfeba6 Mon Sep 17 00:00:00 2001 +From: Nikolay Amiantov <ab@fmap.me> +Date: Fri, 25 Dec 2015 17:11:56 +0300 +Subject: [PATCH 2/2] mfd: fix dependency for MFD_CROS_EC + +--- + drivers/mfd/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig +index f425dce..a62a285 100644 +--- a/drivers/mfd/Kconfig ++++ b/drivers/mfd/Kconfig +@@ -61,7 +61,7 @@ config MFD_AAT2870_CORE + + config MFD_CROS_EC + tristate "Support ChromeOS Embedded Controller" +- depends on MFD_CORE ++ select MFD_CORE + help + If you say Y here you get support for the ChromeOS Embedded + Controller (EC) providing keyboard, battery and power services. +-- +2.6.3 + diff --git a/pkgs/os-specific/linux/kernel/chromiumos-patches/no-link-restrictions.patch b/pkgs/os-specific/linux/kernel/chromiumos-patches/no-link-restrictions.patch new file mode 100644 index 000000000000..ce19dd5d1696 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/chromiumos-patches/no-link-restrictions.patch @@ -0,0 +1,15 @@ +diff --git a/fs/namei.c b/fs/namei.c +index d999a86..eb6e530 100644 +--- a/fs/namei.c ++++ b/fs/namei.c +@@ -703,8 +703,8 @@ static inline void put_link(struct nameidata *nd, struct path *link, void *cooki + path_put(link); + } + +-int sysctl_protected_symlinks __read_mostly = 1; +-int sysctl_protected_hardlinks __read_mostly = 1; ++int sysctl_protected_symlinks __read_mostly = 0; ++int sysctl_protected_hardlinks __read_mostly = 0; + + /** + * may_follow_link - Check symlink following for unsafe situations diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix index 8179211ba5ca..90b4a6a48244 100644 --- a/pkgs/os-specific/linux/kernel/common-config.nix +++ b/pkgs/os-specific/linux/kernel/common-config.nix @@ -147,7 +147,7 @@ with stdenv.lib; # Video configuration. # Enable KMS for devices whose X.org driver supports it. - ${optionalString (versionOlder version "4.3") '' + ${optionalString (versionOlder version "4.3" && !(features.chromiumos or false)) '' DRM_I915_KMS y ''} # Allow specifying custom EDID on the kernel command line @@ -504,6 +504,67 @@ with stdenv.lib; # Disable the firmware helper fallback, udev doesn't implement it any more FW_LOADER_USER_HELPER_FALLBACK? n + # ChromiumOS support + ${optionalString (features.chromiumos or false) '' + CHROME_PLATFORMS y + VGA_SWITCHEROO n + MMC_SDHCI_PXAV2 n + NET_IPVTI n + IPV6_VTI n + REGULATOR_FIXED_VOLTAGE n + TPS6105X n + CPU_FREQ_STAT y + IPV6 y + MFD_CROS_EC y + MFD_CROS_EC_LPC y + MFD_CROS_EC_DEV y + CHARGER_CROS_USB_PD y + I2C y + MEDIA_SUBDRV_AUTOSELECT n + VIDEO_IR_I2C n + BLK_DEV_DM y + ANDROID_PARANOID_NETWORK n + DM_VERITY n + DRM_VGEM n + CPU_FREQ_GOV_INTERACTIVE n + INPUT_KEYRESET n + DM_BOOTCACHE n + UID_CPUTIME n + + ${optionalString (versionAtLeast version "3.18") '' + CPUFREQ_DT n + EXTCON_CROS_EC n + DRM_POWERVR_ROGUE n + CHROMEOS_OF_FIRMWARE y + TEST_RHASHTABLE n + BCMDHD n + TRUSTY n + ''} + + ${optionalString (versionOlder version "3.18") '' + MALI_MIDGARD n + DVB_USB_DIB0700 n + DVB_USB_DW2102 n + DVB_USB_PCTV452E n + DVB_USB_TTUSB2 n + DVB_USB_AF9015 n + DVB_USB_AF9035 n + DVB_USB_ANYSEE n + DVB_USB_AZ6007 n + DVB_USB_IT913X n + DVB_USB_LME2510 n + DVB_USB_RTL28XXU n + USB_S2255 n + VIDEO_EM28XX n + VIDEO_TM6000 n + USB_DWC2 n + USB_GSPCA n + SPEAKUP n + XO15_EBOOK n + USB_GADGET n + ''} + ''} + ${kernelPlatform.kernelExtraConfig or ""} ${extraConfig} '' diff --git a/pkgs/os-specific/linux/kernel/genksyms-fix-segfault.patch b/pkgs/os-specific/linux/kernel/genksyms-fix-segfault.patch new file mode 100644 index 000000000000..47ae77a5a54d --- /dev/null +++ b/pkgs/os-specific/linux/kernel/genksyms-fix-segfault.patch @@ -0,0 +1,19 @@ +diff --git a/scripts/genksyms/genksyms.c b/scripts/genksyms/genksyms.c +index 88632df..ba6cfa9 100644 +--- a/scripts/genksyms/genksyms.c ++++ b/scripts/genksyms/genksyms.c +@@ -233,11 +233,11 @@ static struct symbol *__add_symbol(const char *name, enum symbol_type type, + free_list(last_enum_expr, NULL); + last_enum_expr = NULL; + enum_counter = 0; +- if (!name) +- /* Anonymous enum definition, nothing more to do */ +- return NULL; + } + ++ if (!name) ++ return NULL; ++ + h = crc32(name) % HASH_BUCKETS; + for (sym = symtab[h]; sym; sym = sym->hash_next) { + if (map_to_ns(sym->type) == map_to_ns(type) && diff --git a/pkgs/os-specific/linux/kernel/linux-chromiumos-3.14.nix b/pkgs/os-specific/linux/kernel/linux-chromiumos-3.14.nix new file mode 100644 index 000000000000..fb52b14c9ae3 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/linux-chromiumos-3.14.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchgit, perl, buildLinux, ncurses, openssh, ... } @ args: + +import ./generic.nix (args // rec { + version = "3.14.0"; + extraMeta.branch = "3.14"; + + src = fetchgit { + url = "https://chromium.googlesource.com/chromiumos/third_party/kernel"; + rev = "63a768b40c91c6f3518ea1f20d0cb664ed4e6a57"; + sha256 = "613527a032699be32c18d3f5d8d4c215d7718279a1c372c9f371d4e6c0b9cc34"; + }; + + features.iwlwifi = true; + features.efiBootStub = true; + features.needsCifsUtils = true; + features.canDisableNetfilterConntrackHelpers = true; + features.netfilterRPFilter = true; + features.chromiumos = true; +} // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/linux-chromiumos-3.18.nix b/pkgs/os-specific/linux/kernel/linux-chromiumos-3.18.nix new file mode 100644 index 000000000000..9ab3f70c97fc --- /dev/null +++ b/pkgs/os-specific/linux/kernel/linux-chromiumos-3.18.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchgit, perl, buildLinux, ncurses, ... } @ args: + +import ./generic.nix (args // rec { + version = "3.18.0"; + extraMeta.branch = "3.18"; + + src = fetchgit { + url = "https://chromium.googlesource.com/chromiumos/third_party/kernel"; + rev = "3179ec7e3f07fcc3ca35817174c5fc6584030ab3"; + sha256 = "0hfa97fs216x8q20fsmw02kvf6mw6c6zczfjk2bpym6v7zxdzj28"; + }; + + features.iwlwifi = true; + features.efiBootStub = true; + features.needsCifsUtils = true; + features.canDisableNetfilterConntrackHelpers = true; + features.netfilterRPFilter = true; + features.chromiumos = true; + + extraMeta.hydraPlatforms = []; +} // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix index cd34819a8489..93b11ed892ba 100644 --- a/pkgs/os-specific/linux/kernel/patches.nix +++ b/pkgs/os-specific/linux/kernel/patches.nix @@ -103,4 +103,29 @@ rec { patch = ./crc-regression.patch; }; + genksyms_fix_segfault = + { name = "genksyms-fix-segfault"; + patch = ./genksyms-fix-segfault.patch; + }; + + + chromiumos_Kconfig_fix_entries_3_14 = + { name = "Kconfig_fix_entries_3_14"; + patch = ./chromiumos-patches/fix-double-Kconfig-entry-3.14.patch; + }; + + chromiumos_Kconfig_fix_entries_3_18 = + { name = "Kconfig_fix_entries_3_18"; + patch = ./chromiumos-patches/fix-double-Kconfig-entry-3.18.patch; + }; + + chromiumos_no_link_restrictions = + { name = "chromium-no-link-restrictions"; + patch = ./chromiumos-patches/no-link-restrictions.patch; + }; + + chromiumos_mfd_fix_dependency = + { name = "mfd_fix_dependency"; + patch = ./chromiumos-patches/mfd-fix-dependency.patch; + }; } |