summary refs log tree commit diff
diff options
context:
space:
mode:
authorAl Zohali <zohl@fmap.me>2016-01-10 22:07:45 +0300
committerAl Zohali <zohl@fmap.me>2016-01-13 22:43:19 +0300
commitee9e7b7224397d77dfb80462b4bf420a0aac8a06 (patch)
tree538e881379ffa5a973d8efff480bc0ea639a99ec
parent9237faadbe4cd3f9af80ab1810874c145c34b026 (diff)
downloadnixpkgs-ee9e7b7224397d77dfb80462b4bf420a0aac8a06.tar
nixpkgs-ee9e7b7224397d77dfb80462b4bf420a0aac8a06.tar.gz
nixpkgs-ee9e7b7224397d77dfb80462b4bf420a0aac8a06.tar.bz2
nixpkgs-ee9e7b7224397d77dfb80462b4bf420a0aac8a06.tar.lz
nixpkgs-ee9e7b7224397d77dfb80462b4bf420a0aac8a06.tar.xz
nixpkgs-ee9e7b7224397d77dfb80462b4bf420a0aac8a06.tar.zst
nixpkgs-ee9e7b7224397d77dfb80462b4bf420a0aac8a06.zip
linux_chromiumos_3_18: init at 3.18.0
Co-authored-by: Nikolay Amiantov <ab@fmap.me>
-rw-r--r--pkgs/os-specific/linux/kernel/chromiumos-patches/fix-double-Kconfig-entry-3.18.patch48
-rw-r--r--pkgs/os-specific/linux/kernel/chromiumos-patches/no-link-restrictions.patch15
-rw-r--r--pkgs/os-specific/linux/kernel/common-config.nix63
-rw-r--r--pkgs/os-specific/linux/kernel/genksyms-fix-segfault.patch19
-rw-r--r--pkgs/os-specific/linux/kernel/linux-chromiumos-3.18.nix21
-rw-r--r--pkgs/os-specific/linux/kernel/patches.nix15
-rw-r--r--pkgs/top-level/all-packages.nix13
7 files changed, 193 insertions, 1 deletions
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 00000000000..2d8af8fa745
--- /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/no-link-restrictions.patch b/pkgs/os-specific/linux/kernel/chromiumos-patches/no-link-restrictions.patch
new file mode 100644
index 00000000000..ce19dd5d169
--- /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 cb6e45e52c8..62a82441508 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
@@ -503,6 +503,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 00000000000..47ae77a5a54
--- /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.18.nix b/pkgs/os-specific/linux/kernel/linux-chromiumos-3.18.nix
new file mode 100644
index 00000000000..9ab3f70c97f
--- /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 cd34819a848..ed931201c94 100644
--- a/pkgs/os-specific/linux/kernel/patches.nix
+++ b/pkgs/os-specific/linux/kernel/patches.nix
@@ -103,4 +103,19 @@ rec {
       patch = ./crc-regression.patch;
     };
 
+  genksyms_fix_segfault =
+    { name = "genksyms-fix-segfault";
+      patch = ./genksyms-fix-segfault.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;
+    };
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index bb2f0e4f10d..201c21833ee 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -10057,6 +10057,15 @@ let
       ];
   };
 
+  linux_chromiumos_3_18 = callPackage ../os-specific/linux/kernel/linux-chromiumos-3.18.nix {
+    kernelPatches = [ kernelPatches.chromiumos_Kconfig_fix_entries_3_18
+                      kernelPatches.chromiumos_no_link_restrictions
+                      kernelPatches.genksyms_fix_segfault
+                    ];
+  };
+
+  linux_chromiumos_latest = linux_chromiumos_3_18;
+
   /* grsec configuration
 
      We build several flavors of 'default' grsec kernels. These are
@@ -10244,6 +10253,10 @@ let
   linuxPackages_grsec_testing_server  = grPackage grFlavors.linux_grsec_testing_server;
   linuxPackages_grsec_testing_server_xen = grPackage grFlavors.linux_grsec_testing_server_xen;
 
+  # ChromiumOS kernels
+  linuxPackages_chromiumos_3_18 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_chromiumos_3_18 linuxPackages_chromiumos_3_18);
+  linuxPackages_chromiumos_latest = recurseIntoAttrs (linuxPackagesFor pkgs.linux_chromiumos_latest linuxPackages_chromiumos_latest);
+
   # A function to build a manually-configured kernel
   linuxManualConfig = pkgs.buildLinux;
   buildLinux = callPackage ../os-specific/linux/kernel/manual-config.nix {};