diff options
author | Alexandre Oliva <lxoliva@fsfla.org> | 2013-02-07 08:51:06 +0000 |
---|---|---|
committer | Alexandre Oliva <lxoliva@fsfla.org> | 2013-02-07 08:51:06 +0000 |
commit | dadd36564c7007bd8f807e2fa76541141216e449 (patch) | |
tree | 858159208a83fc431c2d199eae19e4079a9961ea /freed-ora | |
parent | 74950654780428f853ef2510c328251203bccfbc (diff) | |
download | linux-libre-raptor-dadd36564c7007bd8f807e2fa76541141216e449.tar.gz linux-libre-raptor-dadd36564c7007bd8f807e2fa76541141216e449.zip |
3.8.0-0.rc6.git2.1.fc19.gnu
Diffstat (limited to 'freed-ora')
67 files changed, 5617 insertions, 4423 deletions
diff --git a/freed-ora/current/master/0001-ACPI-sony-laptop-do-proper-memcpy-for-ACPI_TYPE_INTE.patch b/freed-ora/current/master/0001-ACPI-sony-laptop-do-proper-memcpy-for-ACPI_TYPE_INTE.patch deleted file mode 100644 index 857c73c51..000000000 --- a/freed-ora/current/master/0001-ACPI-sony-laptop-do-proper-memcpy-for-ACPI_TYPE_INTE.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 690b1ad9d2032d6f2565d44f6564590d47835ae8 Mon Sep 17 00:00:00 2001 -From: Zhang Rui <rui.zhang@intel.com> -Date: Thu, 29 Nov 2012 01:30:43 +0800 -Subject: [PATCH 1/2] ACPI sony-laptop: do proper memcpy for ACPI_TYPE_INTEGER - acpi_object - -the return value of __call_snc_method can either be -an ACPI_TYPE_BUFFER object or a ACPI_TYPE_INTEGER object. -do proper memcpy for ACPI_TYPE_INTEGER object. - -https://bugzilla.kernel.org/show_bug.cgi?id=50111 - -Signed-off-by: Zhang Rui <rui.zhang@intel.com> ---- - drivers/platform/x86/sony-laptop.c | 11 +++++------ - 1 file changed, 5 insertions(+), 6 deletions(-) - -diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c -index daaddec..92e0da2 100644 ---- a/drivers/platform/x86/sony-laptop.c -+++ b/drivers/platform/x86/sony-laptop.c -@@ -792,20 +792,19 @@ static int sony_nc_buffer_call(acpi_handle handle, char *name, u64 *value, - if (!object) - return -EINVAL; - -- if (object->type == ACPI_TYPE_BUFFER) -+ if (object->type == ACPI_TYPE_BUFFER) { - len = MIN(buflen, object->buffer.length); -- -- else if (object->type == ACPI_TYPE_INTEGER) -+ memcpy(buffer, object->buffer.pointer, len); -+ } else if (object->type == ACPI_TYPE_INTEGER) { - len = MIN(buflen, sizeof(object->integer.value)); -- -- else { -+ memcpy(buffer, (void *)&object->integer.value, len); -+ } else { - pr_warn("Invalid acpi_object: expected 0x%x got 0x%x\n", - ACPI_TYPE_BUFFER, object->type); - kfree(object); - return -EINVAL; - } - -- memcpy(buffer, object->buffer.pointer, len); - kfree(object); - return 0; - } --- -1.7.9.5 - diff --git a/freed-ora/current/master/8139cp-re-enable-interrupts-after-tx-timeout.patch b/freed-ora/current/master/8139cp-re-enable-interrupts-after-tx-timeout.patch deleted file mode 100644 index c0196188e..000000000 --- a/freed-ora/current/master/8139cp-re-enable-interrupts-after-tx-timeout.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 01ffc0a7f1c1801a2354719dedbc32aff45b987d Mon Sep 17 00:00:00 2001 -From: David Woodhouse <dwmw2@infradead.org> -Date: Sat, 24 Nov 2012 12:11:21 +0000 -Subject: [PATCH] 8139cp: re-enable interrupts after tx timeout - -Recovery doesn't work too well if we leave interrupts disabled... - -Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> -Acked-by: Francois Romieu <romieu@fr.zoreil.com> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/ethernet/realtek/8139cp.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c -index 3de318d..6cb96b4 100644 ---- a/drivers/net/ethernet/realtek/8139cp.c -+++ b/drivers/net/ethernet/realtek/8139cp.c -@@ -1219,6 +1219,7 @@ static void cp_tx_timeout(struct net_device *dev) - cp_clean_rings(cp); - rc = cp_init_rings(cp); - cp_start_hw(cp); -+ cp_enable_irq(cp); - - netif_wake_queue(dev); - --- -1.7.6.5 - diff --git a/freed-ora/current/master/8139cp-set-ring-address-after-enabling-C-mode.patch b/freed-ora/current/master/8139cp-set-ring-address-after-enabling-C-mode.patch deleted file mode 100644 index 33bd340e9..000000000 --- a/freed-ora/current/master/8139cp-set-ring-address-after-enabling-C-mode.patch +++ /dev/null @@ -1,100 +0,0 @@ -From a9dbe40fc10cea2efe6e1ff9e03c62dd7579c5ba Mon Sep 17 00:00:00 2001 -From: David Woodhouse <dwmw2@infradead.org> -Date: Wed, 21 Nov 2012 10:27:19 +0000 -Subject: [PATCH] 8139cp: set ring address after enabling C+ mode - -This fixes (for me) a regression introduced by commit b01af457 ("8139cp: -set ring address before enabling receiver"). That commit configured the -descriptor ring addresses earlier in the initialisation sequence, in -order to avoid the possibility of triggering stray DMA before the -correct address had been set up. - -Unfortunately, it seems that the hardware will scribble garbage into the -TxRingAddr registers when we enable "plus mode" Tx in the CpCmd -register. Observed on a Traverse Geos router board. - -To deal with this, while not reintroducing the problem which led to the -original commit, we augment cp_start_hw() to write to the CpCmd register -*first*, then set the descriptor ring addresses, and then finally to -enable Rx and Tx in the original 8139 Cmd register. The datasheet -actually indicates that we should enable Tx/Rx in the Cmd register -*before* configuring the descriptor addresses, but that would appear to -re-introduce the problem that the offending commit b01af457 was trying -to solve. And this variant appears to work fine on real hardware. - -Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> -Cc: stable@kernel.org [3.5+] -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/ethernet/realtek/8139cp.c | 40 +++++++++++++++++++++++---------- - 1 files changed, 28 insertions(+), 12 deletions(-) - -diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c -index 1c81825..5166d94 100644 ---- a/drivers/net/ethernet/realtek/8139cp.c -+++ b/drivers/net/ethernet/realtek/8139cp.c -@@ -957,7 +957,35 @@ static void cp_reset_hw (struct cp_private *cp) - - static inline void cp_start_hw (struct cp_private *cp) - { -+ dma_addr_t ring_dma; -+ - cpw16(CpCmd, cp->cpcmd); -+ -+ /* -+ * These (at least TxRingAddr) need to be configured after the -+ * corresponding bits in CpCmd are enabled. Datasheet v1.6 §6.33 -+ * (C+ Command Register) recommends that these and more be configured -+ * *after* the [RT]xEnable bits in CpCmd are set. And on some hardware -+ * it's been observed that the TxRingAddr is actually reset to garbage -+ * when C+ mode Tx is enabled in CpCmd. -+ */ -+ cpw32_f(HiTxRingAddr, 0); -+ cpw32_f(HiTxRingAddr + 4, 0); -+ -+ ring_dma = cp->ring_dma; -+ cpw32_f(RxRingAddr, ring_dma & 0xffffffff); -+ cpw32_f(RxRingAddr + 4, (ring_dma >> 16) >> 16); -+ -+ ring_dma += sizeof(struct cp_desc) * CP_RX_RING_SIZE; -+ cpw32_f(TxRingAddr, ring_dma & 0xffffffff); -+ cpw32_f(TxRingAddr + 4, (ring_dma >> 16) >> 16); -+ -+ /* -+ * Strictly speaking, the datasheet says this should be enabled -+ * *before* setting the descriptor addresses. But what, then, would -+ * prevent it from doing DMA to random unconfigured addresses? -+ * This variant appears to work fine. -+ */ - cpw8(Cmd, RxOn | TxOn); - } - -@@ -969,7 +997,6 @@ static void cp_enable_irq(struct cp_private *cp) - static void cp_init_hw (struct cp_private *cp) - { - struct net_device *dev = cp->dev; -- dma_addr_t ring_dma; - - cp_reset_hw(cp); - -@@ -979,17 +1006,6 @@ static void cp_init_hw (struct cp_private *cp) - cpw32_f (MAC0 + 0, le32_to_cpu (*(__le32 *) (dev->dev_addr + 0))); - cpw32_f (MAC0 + 4, le32_to_cpu (*(__le32 *) (dev->dev_addr + 4))); - -- cpw32_f(HiTxRingAddr, 0); -- cpw32_f(HiTxRingAddr + 4, 0); -- -- ring_dma = cp->ring_dma; -- cpw32_f(RxRingAddr, ring_dma & 0xffffffff); -- cpw32_f(RxRingAddr + 4, (ring_dma >> 16) >> 16); -- -- ring_dma += sizeof(struct cp_desc) * CP_RX_RING_SIZE; -- cpw32_f(TxRingAddr, ring_dma & 0xffffffff); -- cpw32_f(TxRingAddr + 4, (ring_dma >> 16) >> 16); -- - cp_start_hw(cp); - cpw8(TxThresh, 0x06); /* XXX convert magic num to a constant */ - --- -1.7.6.5 - diff --git a/freed-ora/current/master/Bluetooth-Add-support-for-BCM20702A0.patch b/freed-ora/current/master/Bluetooth-Add-support-for-BCM20702A0.patch deleted file mode 100644 index 99178d757..000000000 --- a/freed-ora/current/master/Bluetooth-Add-support-for-BCM20702A0.patch +++ /dev/null @@ -1,43 +0,0 @@ -From a5f86c3423428c8e28b6501d0e9c3929ca91f07d Mon Sep 17 00:00:00 2001 -From: Jeff Cook <jeff@deserettechnology.com> -Date: Fri, 9 Nov 2012 16:39:48 -0700 -Subject: [PATCH 2/2] Bluetooth: Add support for BCM20702A0 [0b05, 17b5] - -Vendor-specific ID for BCM20702A0. -Support for bluetooth over Asus Wi-Fi GO!, included with Asus P8Z77-V -Deluxe. - -T: Bus=07 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0 -D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 -P: Vendor=0b05 ProdID=17b5 Rev=01.12 -S: Manufacturer=Broadcom Corp -S: Product=BCM20702A0 -S: SerialNumber=94DBC98AC113 -C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA -I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) -I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) -I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) -I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none) - -Cc: stable@vger.kernel.org -Signed-off-by: Jeff Cook <jeff@deserettechnology.com> -Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> ---- - drivers/bluetooth/btusb.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c -index b167944..6dc44ff 100644 ---- a/drivers/bluetooth/btusb.c -+++ b/drivers/bluetooth/btusb.c -@@ -96,6 +96,7 @@ static struct usb_device_id btusb_table[] = { - { USB_DEVICE(0x0c10, 0x0000) }, - - /* Broadcom BCM20702A0 */ -+ { USB_DEVICE(0x0b05, 0x17b5) }, - { USB_DEVICE(0x04ca, 0x2003) }, - { USB_DEVICE(0x0489, 0xe042) }, - { USB_DEVICE(0x413c, 0x8197) }, --- -1.8.0 - diff --git a/freed-ora/current/master/Input-add-support-for-Cypress-PS2-Trackpads.patch b/freed-ora/current/master/Input-add-support-for-Cypress-PS2-Trackpads.patch new file mode 100644 index 000000000..8c5e569f9 --- /dev/null +++ b/freed-ora/current/master/Input-add-support-for-Cypress-PS2-Trackpads.patch @@ -0,0 +1,1063 @@ +From 0799a924bc93ba46a23e8e7e6b1431ab585fd2ea Mon Sep 17 00:00:00 2001 +From: Dudley Du <dudl@cypress.com> +Date: Sat, 5 Jan 2013 00:14:22 -0800 +Subject: [PATCH] Input: add support for Cypress PS/2 Trackpads + +This driver, submitted on behalf of Cypress Semiconductor Corporation and +additional contributors, provides support for the Cypress PS/2 Trackpad. + +Original code contributed by Dudley Du (Cypress Semiconductor Corporation), +modified by Kamal Mostafa and Kyle Fazzari. + +BugLink: http://launchpad.net/bugs/978807 + +Signed-off-by: Dudley Du <dudl@cypress.com> +Signed-off-by: Kamal Mostafa <kamal@canonical.com> +Signed-off-by: Kyle Fazzari <git@status.e4ward.com> +Signed-off-by: Mario Limonciello <mario_limonciello@dell.com> +Signed-off-by: Tim Gardner <tim.gardner@canonical.com> +Acked-by: Herton Krzesinski <herton.krzesinski@canonical.com> +Reviewed-by: Henrik Rydberg <rydberg@euromail.se> +Reviewed-by: Dudley Du <dudl@cypress.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/Kconfig | 10 + + drivers/input/mouse/Makefile | 1 + + drivers/input/mouse/cypress_ps2.c | 725 ++++++++++++++++++++++++++++++++++++ + drivers/input/mouse/cypress_ps2.h | 191 ++++++++++ + drivers/input/mouse/psmouse-base.c | 32 ++ + drivers/input/mouse/psmouse.h | 1 + + 6 files changed, 960 insertions(+), 0 deletions(-) + create mode 100644 drivers/input/mouse/cypress_ps2.c + create mode 100644 drivers/input/mouse/cypress_ps2.h + +diff --git a/drivers/input/mouse/Kconfig b/drivers/input/mouse/Kconfig +index cd6268c..88954dd 100644 +--- a/drivers/input/mouse/Kconfig ++++ b/drivers/input/mouse/Kconfig +@@ -68,6 +68,16 @@ config MOUSE_PS2_SYNAPTICS + + If unsure, say Y. + ++config MOUSE_PS2_CYPRESS ++ bool "Cypress PS/2 mouse protocol extension" if EXPERT ++ default y ++ depends on MOUSE_PS2 ++ help ++ Say Y here if you have a Cypress PS/2 Trackpad connected to ++ your system. ++ ++ If unsure, say Y. ++ + config MOUSE_PS2_LIFEBOOK + bool "Fujitsu Lifebook PS/2 mouse protocol extension" if EXPERT + default y +diff --git a/drivers/input/mouse/Makefile b/drivers/input/mouse/Makefile +index 46ba755..323e352 100644 +--- a/drivers/input/mouse/Makefile ++++ b/drivers/input/mouse/Makefile +@@ -32,3 +32,4 @@ psmouse-$(CONFIG_MOUSE_PS2_LIFEBOOK) += lifebook.o + psmouse-$(CONFIG_MOUSE_PS2_SENTELIC) += sentelic.o + psmouse-$(CONFIG_MOUSE_PS2_TRACKPOINT) += trackpoint.o + psmouse-$(CONFIG_MOUSE_PS2_TOUCHKIT) += touchkit_ps2.o ++psmouse-$(CONFIG_MOUSE_PS2_CYPRESS) += cypress_ps2.o +diff --git a/drivers/input/mouse/cypress_ps2.c b/drivers/input/mouse/cypress_ps2.c +new file mode 100644 +index 0000000..1673dc6 +--- /dev/null ++++ b/drivers/input/mouse/cypress_ps2.c +@@ -0,0 +1,725 @@ ++/* ++ * Cypress Trackpad PS/2 mouse driver ++ * ++ * Copyright (c) 2012 Cypress Semiconductor Corporation. ++ * ++ * Author: ++ * Dudley Du <dudl@cypress.com> ++ * ++ * Additional contributors include: ++ * Kamal Mostafa <kamal@canonical.com> ++ * Kyle Fazzari <git@status.e4ward.com> ++ * ++ * 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 <linux/init.h> ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/slab.h> ++#include <linux/serio.h> ++#include <linux/libps2.h> ++#include <linux/input.h> ++#include <linux/input/mt.h> ++#include <linux/sched.h> ++#include <linux/wait.h> ++ ++#include "cypress_ps2.h" ++ ++#undef CYTP_DEBUG_VERBOSE /* define this and DEBUG for more verbose dump */ ++ ++static void cypress_set_packet_size(struct psmouse *psmouse, unsigned int n) ++{ ++ struct cytp_data *cytp = psmouse->private; ++ cytp->pkt_size = n; ++} ++ ++static const unsigned char cytp_rate[] = {10, 20, 40, 60, 100, 200}; ++static const unsigned char cytp_resolution[] = {0x00, 0x01, 0x02, 0x03}; ++ ++static int cypress_ps2_sendbyte(struct psmouse *psmouse, int value) ++{ ++ struct ps2dev *ps2dev = &psmouse->ps2dev; ++ ++ if (ps2_sendbyte(ps2dev, value & 0xff, CYTP_CMD_TIMEOUT) < 0) { ++ psmouse_dbg(psmouse, ++ "sending command 0x%02x failed, resp 0x%02x\n", ++ value & 0xff, ps2dev->nak); ++ if (ps2dev->nak == CYTP_PS2_RETRY) ++ return CYTP_PS2_RETRY; ++ else ++ return CYTP_PS2_ERROR; ++ } ++ ++#ifdef CYTP_DEBUG_VERBOSE ++ psmouse_dbg(psmouse, "sending command 0x%02x succeeded, resp 0xfa\n", ++ value & 0xff); ++#endif ++ ++ return 0; ++} ++ ++static int cypress_ps2_ext_cmd(struct psmouse *psmouse, unsigned short cmd, ++ unsigned char data) ++{ ++ struct ps2dev *ps2dev = &psmouse->ps2dev; ++ int tries = CYTP_PS2_CMD_TRIES; ++ int rc; ++ ++ ps2_begin_command(ps2dev); ++ ++ do { ++ /* ++ * Send extension command byte (0xE8 or 0xF3). ++ * If sending the command fails, send recovery command ++ * to make the device return to the ready state. ++ */ ++ rc = cypress_ps2_sendbyte(psmouse, cmd & 0xff); ++ if (rc == CYTP_PS2_RETRY) { ++ rc = cypress_ps2_sendbyte(psmouse, 0x00); ++ if (rc == CYTP_PS2_RETRY) ++ rc = cypress_ps2_sendbyte(psmouse, 0x0a); ++ } ++ if (rc == CYTP_PS2_ERROR) ++ continue; ++ ++ rc = cypress_ps2_sendbyte(psmouse, data); ++ if (rc == CYTP_PS2_RETRY) ++ rc = cypress_ps2_sendbyte(psmouse, data); ++ if (rc == CYTP_PS2_ERROR) ++ continue; ++ else ++ break; ++ } while (--tries > 0); ++ ++ ps2_end_command(ps2dev); ++ ++ return rc; ++} ++ ++static int cypress_ps2_read_cmd_status(struct psmouse *psmouse, ++ unsigned char cmd, ++ unsigned char *param) ++{ ++ int rc; ++ struct ps2dev *ps2dev = &psmouse->ps2dev; ++ enum psmouse_state old_state; ++ int pktsize; ++ ++ ps2_begin_command(&psmouse->ps2dev); ++ ++ old_state = psmouse->state; ++ psmouse->state = PSMOUSE_CMD_MODE; ++ psmouse->pktcnt = 0; ++ ++ pktsize = (cmd == CYTP_CMD_READ_TP_METRICS) ? 8 : 3; ++ memset(param, 0, pktsize); ++ ++ rc = cypress_ps2_sendbyte(psmouse, 0xe9); ++ if (rc < 0) ++ goto out; ++ ++ wait_event_timeout(ps2dev->wait, ++ (psmouse->pktcnt >= pktsize), ++ msecs_to_jiffies(CYTP_CMD_TIMEOUT)); ++ ++ memcpy(param, psmouse->packet, pktsize); ++ ++ psmouse_dbg(psmouse, "Command 0x%02x response data (0x): %*ph\n", ++ cmd, pktsize, param); ++ ++out: ++ psmouse->state = old_state; ++ psmouse->pktcnt = 0; ++ ++ ps2_end_command(&psmouse->ps2dev); ++ ++ return rc; ++} ++ ++static bool cypress_verify_cmd_state(struct psmouse *psmouse, ++ unsigned char cmd, unsigned char *param) ++{ ++ bool rate_match = false; ++ bool resolution_match = false; ++ int i; ++ ++ /* callers will do further checking. */ ++ if (cmd == CYTP_CMD_READ_CYPRESS_ID || ++ cmd == CYTP_CMD_STANDARD_MODE || ++ cmd == CYTP_CMD_READ_TP_METRICS) ++ return true; ++ ++ if ((~param[0] & DFLT_RESP_BITS_VALID) == DFLT_RESP_BITS_VALID && ++ (param[0] & DFLT_RESP_BIT_MODE) == DFLT_RESP_STREAM_MODE) { ++ for (i = 0; i < sizeof(cytp_resolution); i++) ++ if (cytp_resolution[i] == param[1]) ++ resolution_match = true; ++ ++ for (i = 0; i < sizeof(cytp_rate); i++) ++ if (cytp_rate[i] == param[2]) ++ rate_match = true; ++ ++ if (resolution_match && rate_match) ++ return true; ++ } ++ ++ psmouse_dbg(psmouse, "verify cmd state failed.\n"); ++ return false; ++} ++ ++static int cypress_send_ext_cmd(struct psmouse *psmouse, unsigned char cmd, ++ unsigned char *param) ++{ ++ int tries = CYTP_PS2_CMD_TRIES; ++ int rc; ++ ++ psmouse_dbg(psmouse, "send extension cmd 0x%02x, [%d %d %d %d]\n", ++ cmd, DECODE_CMD_AA(cmd), DECODE_CMD_BB(cmd), ++ DECODE_CMD_CC(cmd), DECODE_CMD_DD(cmd)); ++ ++ do { ++ cypress_ps2_ext_cmd(psmouse, ++ PSMOUSE_CMD_SETRES, DECODE_CMD_DD(cmd)); ++ cypress_ps2_ext_cmd(psmouse, ++ PSMOUSE_CMD_SETRES, DECODE_CMD_CC(cmd)); ++ cypress_ps2_ext_cmd(psmouse, ++ PSMOUSE_CMD_SETRES, DECODE_CMD_BB(cmd)); ++ cypress_ps2_ext_cmd(psmouse, ++ PSMOUSE_CMD_SETRES, DECODE_CMD_AA(cmd)); ++ ++ rc = cypress_ps2_read_cmd_status(psmouse, cmd, param); ++ if (rc) ++ continue; ++ ++ if (cypress_verify_cmd_state(psmouse, cmd, param)) ++ return 0; ++ ++ } while (--tries > 0); ++ ++ return -EIO; ++} ++ ++int cypress_detect(struct psmouse *psmouse, bool set_properties) ++{ ++ unsigned char param[3]; ++ ++ if (cypress_send_ext_cmd(psmouse, CYTP_CMD_READ_CYPRESS_ID, param)) ++ return -ENODEV; ++ ++ /* Check for Cypress Trackpad signature bytes: 0x33 0xCC */ ++ if (param[0] != 0x33 || param[1] != 0xCC) ++ return -ENODEV; ++ ++ if (set_properties) { ++ psmouse->vendor = "Cypress"; ++ psmouse->name = "Trackpad"; ++ } ++ ++ return 0; ++} ++ ++static int cypress_read_fw_version(struct psmouse *psmouse) ++{ ++ struct cytp_data *cytp = psmouse->private; ++ unsigned char param[3]; ++ ++ if (cypress_send_ext_cmd(psmouse, CYTP_CMD_READ_CYPRESS_ID, param)) ++ return -ENODEV; ++ ++ /* Check for Cypress Trackpad signature bytes: 0x33 0xCC */ ++ if (param[0] != 0x33 || param[1] != 0xCC) ++ return -ENODEV; ++ ++ cytp->fw_version = param[2] & FW_VERSION_MASX; ++ cytp->tp_metrics_supported = (param[2] & TP_METRICS_MASK) ? 1 : 0; ++ ++ psmouse_dbg(psmouse, "cytp->fw_version = %d\n", cytp->fw_version); ++ psmouse_dbg(psmouse, "cytp->tp_metrics_supported = %d\n", ++ cytp->tp_metrics_supported); ++ ++ return 0; ++} ++ ++static int cypress_read_tp_metrics(struct psmouse *psmouse) ++{ ++ struct cytp_data *cytp = psmouse->private; ++ unsigned char param[8]; ++ ++ /* set default values for tp metrics. */ ++ cytp->tp_width = CYTP_DEFAULT_WIDTH; ++ cytp->tp_high = CYTP_DEFAULT_HIGH; ++ cytp->tp_max_abs_x = CYTP_ABS_MAX_X; ++ cytp->tp_max_abs_y = CYTP_ABS_MAX_Y; ++ cytp->tp_min_pressure = CYTP_MIN_PRESSURE; ++ cytp->tp_max_pressure = CYTP_MAX_PRESSURE; ++ cytp->tp_res_x = cytp->tp_max_abs_x / cytp->tp_width; ++ cytp->tp_res_y = cytp->tp_max_abs_y / cytp->tp_high; ++ ++ memset(param, 0, sizeof(param)); ++ if (cypress_send_ext_cmd(psmouse, CYTP_CMD_READ_TP_METRICS, param) == 0) { ++ /* Update trackpad parameters. */ ++ cytp->tp_max_abs_x = (param[1] << 8) | param[0]; ++ cytp->tp_max_abs_y = (param[3] << 8) | param[2]; ++ cytp->tp_min_pressure = param[4]; ++ cytp->tp_max_pressure = param[5]; ++ } ++ ++ if (!cytp->tp_max_pressure || ++ cytp->tp_max_pressure < cytp->tp_min_pressure || ++ !cytp->tp_width || !cytp->tp_high || ++ !cytp->tp_max_abs_x || ++ cytp->tp_max_abs_x < cytp->tp_width || ++ !cytp->tp_max_abs_y || ++ cytp->tp_max_abs_y < cytp->tp_high) ++ return -EINVAL; ++ ++ cytp->tp_res_x = cytp->tp_max_abs_x / cytp->tp_width; ++ cytp->tp_res_y = cytp->tp_max_abs_y / cytp->tp_high; ++ ++#ifdef CYTP_DEBUG_VERBOSE ++ psmouse_dbg(psmouse, "Dump trackpad hardware configuration as below:\n"); ++ psmouse_dbg(psmouse, "cytp->tp_width = %d\n", cytp->tp_width); ++ psmouse_dbg(psmouse, "cytp->tp_high = %d\n", cytp->tp_high); ++ psmouse_dbg(psmouse, "cytp->tp_max_abs_x = %d\n", cytp->tp_max_abs_x); ++ psmouse_dbg(psmouse, "cytp->tp_max_abs_y = %d\n", cytp->tp_max_abs_y); ++ psmouse_dbg(psmouse, "cytp->tp_min_pressure = %d\n", cytp->tp_min_pressure); ++ psmouse_dbg(psmouse, "cytp->tp_max_pressure = %d\n", cytp->tp_max_pressure); ++ psmouse_dbg(psmouse, "cytp->tp_res_x = %d\n", cytp->tp_res_x); ++ psmouse_dbg(psmouse, "cytp->tp_res_y = %d\n", cytp->tp_res_y); ++ ++ psmouse_dbg(psmouse, "tp_type_APA = %d\n", ++ (param[6] & TP_METRICS_BIT_APA) ? 1 : 0); ++ psmouse_dbg(psmouse, "tp_type_MTG = %d\n", ++ (param[6] & TP_METRICS_BIT_MTG) ? 1 : 0); ++ psmouse_dbg(psmouse, "tp_palm = %d\n", ++ (param[6] & TP_METRICS_BIT_PALM) ? 1 : 0); ++ psmouse_dbg(psmouse, "tp_stubborn = %d\n", ++ (param[6] & TP_METRICS_BIT_STUBBORN) ? 1 : 0); ++ psmouse_dbg(psmouse, "tp_1f_jitter = %d\n", ++ (param[6] & TP_METRICS_BIT_1F_JITTER) >> 2); ++ psmouse_dbg(psmouse, "tp_2f_jitter = %d\n", ++ (param[6] & TP_METRICS_BIT_2F_JITTER) >> 4); ++ psmouse_dbg(psmouse, "tp_1f_spike = %d\n", ++ param[7] & TP_METRICS_BIT_1F_SPIKE); ++ psmouse_dbg(psmouse, "tp_2f_spike = %d\n", ++ (param[7] & TP_METRICS_BIT_2F_SPIKE) >> 2); ++ psmouse_dbg(psmouse, "tp_abs_packet_format_set = %d\n", ++ (param[7] & TP_METRICS_BIT_ABS_PKT_FORMAT_SET) >> 4); ++#endif ++ ++ return 0; ++} ++ ++static int cypress_query_hardware(struct psmouse *psmouse) ++{ ++ struct cytp_data *cytp = psmouse->private; ++ int ret; ++ ++ ret = cypress_read_fw_version(psmouse); ++ if (ret) ++ return ret; ++ ++ if (cytp->tp_metrics_supported) { ++ ret = cypress_read_tp_metrics(psmouse); ++ if (ret) ++ return ret; ++ } ++ ++ return 0; ++} ++ ++static int cypress_set_absolute_mode(struct psmouse *psmouse) ++{ ++ struct cytp_data *cytp = psmouse->private; ++ unsigned char param[3]; ++ ++ if (cypress_send_ext_cmd(psmouse, CYTP_CMD_ABS_WITH_PRESSURE_MODE, param) < 0) ++ return -1; ++ ++ cytp->mode = (cytp->mode & ~CYTP_BIT_ABS_REL_MASK) ++ | CYTP_BIT_ABS_PRESSURE; ++ cypress_set_packet_size(psmouse, 5); ++ ++ return 0; ++} ++ ++/* ++ * Reset trackpad device. ++ * This is also the default mode when trackpad powered on. ++ */ ++static void cypress_reset(struct psmouse *psmouse) ++{ ++ struct cytp_data *cytp = psmouse->private; ++ ++ cytp->mode = 0; ++ ++ psmouse_reset(psmouse); ++} ++ ++static int cypress_set_input_params(struct input_dev *input, ++ struct cytp_data *cytp) ++{ ++ int ret; ++ ++ if (!cytp->tp_res_x || !cytp->tp_res_y) ++ return -EINVAL; ++ ++ __set_bit(EV_ABS, input->evbit); ++ input_set_abs_params(input, ABS_X, 0, cytp->tp_max_abs_x, 0, 0); ++ input_set_abs_params(input, ABS_Y, 0, cytp->tp_max_abs_y, 0, 0); ++ input_set_abs_params(input, ABS_PRESSURE, ++ cytp->tp_min_pressure, cytp->tp_max_pressure, 0, 0); ++ input_set_abs_params(input, ABS_TOOL_WIDTH, 0, 255, 0, 0); ++ ++ /* finger position */ ++ input_set_abs_params(input, ABS_MT_POSITION_X, 0, cytp->tp_max_abs_x, 0, 0); ++ input_set_abs_params(input, ABS_MT_POSITION_Y, 0, cytp->tp_max_abs_y, 0, 0); ++ input_set_abs_params(input, ABS_MT_PRESSURE, 0, 255, 0, 0); ++ ++ ret = input_mt_init_slots(input, CYTP_MAX_MT_SLOTS, ++ INPUT_MT_DROP_UNUSED|INPUT_MT_TRACK); ++ if (ret < 0) ++ return ret; ++ ++ __set_bit(INPUT_PROP_SEMI_MT, input->propbit); ++ ++ input_abs_set_res(input, ABS_X, cytp->tp_res_x); ++ input_abs_set_res(input, ABS_Y, cytp->tp_res_y); ++ ++ input_abs_set_res(input, ABS_MT_POSITION_X, cytp->tp_res_x); ++ input_abs_set_res(input, ABS_MT_POSITION_Y, cytp->tp_res_y); ++ ++ __set_bit(BTN_TOUCH, input->keybit); ++ __set_bit(BTN_TOOL_FINGER, input->keybit); ++ __set_bit(BTN_TOOL_DOUBLETAP, input->keybit); ++ __set_bit(BTN_TOOL_TRIPLETAP, input->keybit); ++ __set_bit(BTN_TOOL_QUADTAP, input->keybit); ++ __set_bit(BTN_TOOL_QUINTTAP, input->keybit); ++ ++ __clear_bit(EV_REL, input->evbit); ++ __clear_bit(REL_X, input->relbit); ++ __clear_bit(REL_Y, input->relbit); ++ ++ __set_bit(INPUT_PROP_BUTTONPAD, input->propbit); ++ __set_bit(EV_KEY, input->evbit); ++ __set_bit(BTN_LEFT, input->keybit); ++ __set_bit(BTN_RIGHT, input->keybit); ++ __set_bit(BTN_MIDDLE, input->keybit); ++ ++ input_set_drvdata(input, cytp); ++ ++ return 0; ++} ++ ++static int cypress_get_finger_count(unsigned char header_byte) ++{ ++ unsigned char bits6_7; ++ int finger_count; ++ ++ bits6_7 = header_byte >> 6; ++ finger_count = bits6_7 & 0x03; ++ ++ if (finger_count == 1) ++ return 1; ++ ++ if (header_byte & ABS_HSCROLL_BIT) { ++ /* HSCROLL gets added on to 0 finger count. */ ++ switch (finger_count) { ++ case 0: return 4; ++ case 2: return 5; ++ default: ++ /* Invalid contact (e.g. palm). Ignore it. */ ++ return -1; ++ } ++ } ++ ++ return finger_count; ++} ++ ++ ++static int cypress_parse_packet(struct psmouse *psmouse, ++ struct cytp_data *cytp, struct cytp_report_data *report_data) ++{ ++ unsigned char *packet = psmouse->packet; ++ unsigned char header_byte = packet[0]; ++ int contact_cnt; ++ ++ memset(report_data, 0, sizeof(struct cytp_report_data)); ++ ++ contact_cnt = cypress_get_finger_count(header_byte); ++ ++ if (contact_cnt < 0) /* e.g. palm detect */ ++ return -EINVAL; ++ ++ report_data->contact_cnt = contact_cnt; ++ ++ report_data->tap = (header_byte & ABS_MULTIFINGER_TAP) ? 1 : 0; ++ ++ if (report_data->contact_cnt == 1) { ++ report_data->contacts[0].x = ++ ((packet[1] & 0x70) << 4) | packet[2]; ++ report_data->contacts[0].y = ++ ((packet[1] & 0x07) << 8) | packet[3]; ++ if (cytp->mode & CYTP_BIT_ABS_PRESSURE) ++ report_data->contacts[0].z = packet[4]; ++ ++ } else if (report_data->contact_cnt >= 2) { ++ report_data->contacts[0].x = ++ ((packet[1] & 0x70) << 4) | packet[2]; ++ report_data->contacts[0].y = ++ ((packet[1] & 0x07) << 8) | packet[3]; ++ if (cytp->mode & CYTP_BIT_ABS_PRESSURE) ++ report_data->contacts[0].z = packet[4]; ++ ++ report_data->contacts[1].x = ++ ((packet[5] & 0xf0) << 4) | packet[6]; ++ report_data->contacts[1].y = ++ ((packet[5] & 0x0f) << 8) | packet[7]; ++ if (cytp->mode & CYTP_BIT_ABS_PRESSURE) ++ report_data->contacts[1].z = report_data->contacts[0].z; ++ } ++ ++ report_data->left = (header_byte & BTN_LEFT_BIT) ? 1 : 0; ++ report_data->right = (header_byte & BTN_RIGHT_BIT) ? 1 : 0; ++ ++ /* ++ * This is only true if one of the mouse buttons were tapped. Make ++ * sure it doesn't turn into a click. The regular tap-to-click ++ * functionality will handle that on its own. If we don't do this, ++ * disabling tap-to-click won't affect the mouse button zones. ++ */ ++ if (report_data->tap) ++ report_data->left = 0; ++ ++#ifdef CYTP_DEBUG_VERBOSE ++ { ++ int i; ++ int n = report_data->contact_cnt; ++ psmouse_dbg(psmouse, "Dump parsed report data as below:\n"); ++ psmouse_dbg(psmouse, "contact_cnt = %d\n", ++ report_data->contact_cnt); ++ if (n > CYTP_MAX_MT_SLOTS) ++ n = CYTP_MAX_MT_SLOTS; ++ for (i = 0; i < n; i++) ++ psmouse_dbg(psmouse, "contacts[%d] = {%d, %d, %d}\n", i, ++ report_data->contacts[i].x, ++ report_data->contacts[i].y, ++ report_data->contacts[i].z); ++ psmouse_dbg(psmouse, "left = %d\n", report_data->left); ++ psmouse_dbg(psmouse, "right = %d\n", report_data->right); ++ psmouse_dbg(psmouse, "middle = %d\n", report_data->middle); ++ } ++#endif ++ ++ return 0; ++} ++ ++static void cypress_process_packet(struct psmouse *psmouse, bool zero_pkt) ++{ ++ int i; ++ struct input_dev *input = psmouse->dev; ++ struct cytp_data *cytp = psmouse->private; ++ struct cytp_report_data report_data; ++ struct cytp_contact *contact; ++ struct input_mt_pos pos[CYTP_MAX_MT_SLOTS]; ++ int slots[CYTP_MAX_MT_SLOTS]; ++ int n; ++ ++ if (cypress_parse_packet(psmouse, cytp, &report_data)) ++ return; ++ ++ n = report_data.contact_cnt; ++ ++ if (n > CYTP_MAX_MT_SLOTS) ++ n = CYTP_MAX_MT_SLOTS; ++ ++ for (i = 0; i < n; i++) { ++ contact = &report_data.contacts[i]; ++ pos[i].x = contact->x; ++ pos[i].y = contact->y; ++ } ++ ++ input_mt_assign_slots(input, slots, pos, n); ++ ++ for (i = 0; i < n; i++) { ++ contact = &report_data.contacts[i]; ++ input_mt_slot(input, slots[i]); ++ input_mt_report_slot_state(input, MT_TOOL_FINGER, true); ++ input_report_abs(input, ABS_MT_POSITION_X, contact->x); ++ input_report_abs(input, ABS_MT_POSITION_Y, contact->y); ++ input_report_abs(input, ABS_MT_PRESSURE, contact->z); ++ } ++ ++ input_mt_sync_frame(input); ++ ++ input_mt_report_finger_count(input, report_data.contact_cnt); ++ ++ input_report_key(input, BTN_LEFT, report_data.left); ++ input_report_key(input, BTN_RIGHT, report_data.right); ++ input_report_key(input, BTN_MIDDLE, report_data.middle); ++ ++ input_sync(input); ++} ++ ++static psmouse_ret_t cypress_validate_byte(struct psmouse *psmouse) ++{ ++ int contact_cnt; ++ int index = psmouse->pktcnt - 1; ++ unsigned char *packet = psmouse->packet; ++ struct cytp_data *cytp = psmouse->private; ++ ++ if (index < 0 || index > cytp->pkt_size) ++ return PSMOUSE_BAD_DATA; ++ ++ if (index == 0 && (packet[0] & 0xfc) == 0) { ++ /* call packet process for reporting finger leave. */ ++ cypress_process_packet(psmouse, 1); ++ return PSMOUSE_FULL_PACKET; ++ } ++ ++ /* ++ * Perform validation (and adjust packet size) based only on the ++ * first byte; allow all further bytes through. ++ */ ++ if (index != 0) ++ return PSMOUSE_GOOD_DATA; ++ ++ /* ++ * If absolute/relative mode bit has not been set yet, just pass ++ * the byte through. ++ */ ++ if ((cytp->mode & CYTP_BIT_ABS_REL_MASK) == 0) ++ return PSMOUSE_GOOD_DATA; ++ ++ if ((packet[0] & 0x08) == 0x08) ++ return PSMOUSE_BAD_DATA; ++ ++ contact_cnt = cypress_get_finger_count(packet[0]); ++ ++ if (contact_cnt < 0) ++ return PSMOUSE_BAD_DATA; ++ ++ if (cytp->mode & CYTP_BIT_ABS_NO_PRESSURE) ++ cypress_set_packet_size(psmouse, contact_cnt == 2 ? 7 : 4); ++ else ++ cypress_set_packet_size(psmouse, contact_cnt == 2 ? 8 : 5); ++ ++ return PSMOUSE_GOOD_DATA; ++} ++ ++static psmouse_ret_t cypress_protocol_handler(struct psmouse *psmouse) ++{ ++ struct cytp_data *cytp = psmouse->private; ++ ++ if (psmouse->pktcnt >= cytp->pkt_size) { ++ cypress_process_packet(psmouse, 0); ++ return PSMOUSE_FULL_PACKET; ++ } ++ ++ return cypress_validate_byte(psmouse); ++} ++ ++static void cypress_set_rate(struct psmouse *psmouse, unsigned int rate) ++{ ++ struct cytp_data *cytp = psmouse->private; ++ ++ if (rate >= 80) { ++ psmouse->rate = 80; ++ cytp->mode |= CYTP_BIT_HIGH_RATE; ++ } else { ++ psmouse->rate = 40; ++ cytp->mode &= ~CYTP_BIT_HIGH_RATE; ++ } ++ ++ ps2_command(&psmouse->ps2dev, (unsigned char *)&psmouse->rate, ++ PSMOUSE_CMD_SETRATE); ++} ++ ++static void cypress_disconnect(struct psmouse *psmouse) ++{ ++ cypress_reset(psmouse); ++ kfree(psmouse->private); ++ psmouse->private = NULL; ++} ++ ++static int cypress_reconnect(struct psmouse *psmouse) ++{ ++ int tries = CYTP_PS2_CMD_TRIES; ++ int rc; ++ ++ do { ++ cypress_reset(psmouse); ++ rc = cypress_detect(psmouse, false); ++ } while (rc && (--tries > 0)); ++ ++ if (rc) { ++ psmouse_err(psmouse, "Reconnect: unable to detect trackpad.\n"); ++ return -1; ++ } ++ ++ if (cypress_set_absolute_mode(psmouse)) { ++ psmouse_err(psmouse, "Reconnect: Unable to initialize Cypress absolute mode.\n"); ++ return -1; ++ } ++ ++ return 0; ++} ++ ++int cypress_init(struct psmouse *psmouse) ++{ ++ struct cytp_data *cytp; ++ ++ cytp = (struct cytp_data *)kzalloc(sizeof(struct cytp_data), GFP_KERNEL); ++ psmouse->private = (void *)cytp; ++ if (cytp == NULL) ++ return -ENOMEM; ++ ++ cypress_reset(psmouse); ++ ++ psmouse->pktsize = 8; ++ ++ if (cypress_query_hardware(psmouse)) { ++ psmouse_err(psmouse, "Unable to query Trackpad hardware.\n"); ++ goto err_exit; ++ } ++ ++ if (cypress_set_absolute_mode(psmouse)) { ++ psmouse_err(psmouse, "init: Unable to initialize Cypress absolute mode.\n"); ++ goto err_exit; ++ } ++ ++ if (cypress_set_input_params(psmouse->dev, cytp) < 0) { ++ psmouse_err(psmouse, "init: Unable to set input params.\n"); ++ goto err_exit; ++ } ++ ++ psmouse->model = 1; ++ psmouse->protocol_handler = cypress_protocol_handler; ++ psmouse->set_rate = cypress_set_rate; ++ psmouse->disconnect = cypress_disconnect; ++ psmouse->reconnect = cypress_reconnect; ++ psmouse->cleanup = cypress_reset; ++ psmouse->resync_time = 0; ++ ++ return 0; ++ ++err_exit: ++ /* ++ * Reset Cypress Trackpad as a standard mouse. Then ++ * let psmouse driver commmunicating with it as default PS2 mouse. ++ */ ++ cypress_reset(psmouse); ++ ++ psmouse->private = NULL; ++ kfree(cytp); ++ ++ return -1; ++} ++ ++bool cypress_supported(void) ++{ ++ return true; ++} +diff --git a/drivers/input/mouse/cypress_ps2.h b/drivers/input/mouse/cypress_ps2.h +new file mode 100644 +index 0000000..4720f21 +--- /dev/null ++++ b/drivers/input/mouse/cypress_ps2.h +@@ -0,0 +1,191 @@ ++#ifndef _CYPRESS_PS2_H ++#define _CYPRESS_PS2_H ++ ++#include "psmouse.h" ++ ++#define CMD_BITS_MASK 0x03 ++#define COMPOSIT(x, s) (((x) & CMD_BITS_MASK) << (s)) ++ ++#define ENCODE_CMD(aa, bb, cc, dd) \ ++ (COMPOSIT((aa), 6) | COMPOSIT((bb), 4) | COMPOSIT((cc), 2) | COMPOSIT((dd), 0)) ++#define CYTP_CMD_ABS_NO_PRESSURE_MODE ENCODE_CMD(0, 1, 0, 0) ++#define CYTP_CMD_ABS_WITH_PRESSURE_MODE ENCODE_CMD(0, 1, 0, 1) ++#define CYTP_CMD_SMBUS_MODE ENCODE_CMD(0, 1, 1, 0) ++#define CYTP_CMD_STANDARD_MODE ENCODE_CMD(0, 2, 0, 0) /* not implemented yet. */ ++#define CYTP_CMD_CYPRESS_REL_MODE ENCODE_CMD(1, 1, 1, 1) /* not implemented yet. */ ++#define CYTP_CMD_READ_CYPRESS_ID ENCODE_CMD(0, 0, 0, 0) ++#define CYTP_CMD_READ_TP_METRICS ENCODE_CMD(0, 0, 0, 1) ++#define CYTP_CMD_SET_HSCROLL_WIDTH(w) ENCODE_CMD(1, 1, 0, (w)) ++#define CYTP_CMD_SET_HSCROLL_MASK ENCODE_CMD(1, 1, 0, 0) ++#define CYTP_CMD_SET_VSCROLL_WIDTH(w) ENCODE_CMD(1, 2, 0, (w)) ++#define CYTP_CMD_SET_VSCROLL_MASK ENCODE_CMD(1, 2, 0, 0) ++#define CYTP_CMD_SET_PALM_GEOMETRY(e) ENCODE_CMD(1, 2, 1, (e)) ++#define CYTP_CMD_PALM_GEMMETRY_MASK ENCODE_CMD(1, 2, 1, 0) ++#define CYTP_CMD_SET_PALM_SENSITIVITY(s) ENCODE_CMD(1, 2, 2, (s)) ++#define CYTP_CMD_PALM_SENSITIVITY_MASK ENCODE_CMD(1, 2, 2, 0) ++#define CYTP_CMD_SET_MOUSE_SENSITIVITY(s) ENCODE_CMD(1, 3, ((s) >> 2), (s)) ++#define CYTP_CMD_MOUSE_SENSITIVITY_MASK ENCODE_CMD(1, 3, 0, 0) ++#define CYTP_CMD_REQUEST_BASELINE_STATUS ENCODE_CMD(2, 0, 0, 1) ++#define CYTP_CMD_REQUEST_RECALIBRATION ENCODE_CMD(2, 0, 0, 3) ++ ++#define DECODE_CMD_AA(x) (((x) >> 6) & CMD_BITS_MASK) ++#define DECODE_CMD_BB(x) (((x) >> 4) & CMD_BITS_MASK) ++#define DECODE_CMD_CC(x) (((x) >> 2) & CMD_BITS_MASK) ++#define DECODE_CMD_DD(x) ((x) & CMD_BITS_MASK) ++ ++/* Cypress trackpad working mode. */ ++#define CYTP_BIT_ABS_PRESSURE (1 << 3) ++#define CYTP_BIT_ABS_NO_PRESSURE (1 << 2) ++#define CYTP_BIT_CYPRESS_REL (1 << 1) ++#define CYTP_BIT_STANDARD_REL (1 << 0) ++#define CYTP_BIT_REL_MASK (CYTP_BIT_CYPRESS_REL | CYTP_BIT_STANDARD_REL) ++#define CYTP_BIT_ABS_MASK (CYTP_BIT_ABS_PRESSURE | CYTP_BIT_ABS_NO_PRESSURE) ++#define CYTP_BIT_ABS_REL_MASK (CYTP_BIT_ABS_MASK | CYTP_BIT_REL_MASK) ++ ++#define CYTP_BIT_HIGH_RATE (1 << 4) ++/* ++ * report mode bit is set, firmware working in Remote Mode. ++ * report mode bit is cleared, firmware working in Stream Mode. ++ */ ++#define CYTP_BIT_REPORT_MODE (1 << 5) ++ ++/* scrolling width values for set HSCROLL and VSCROLL width command. */ ++#define SCROLL_WIDTH_NARROW 1 ++#define SCROLL_WIDTH_NORMAL 2 ++#define SCROLL_WIDTH_WIDE 3 ++ ++#define PALM_GEOMETRY_ENABLE 1 ++#define PALM_GEOMETRY_DISABLE 0 ++ ++#define TP_METRICS_MASK 0x80 ++#define FW_VERSION_MASX 0x7f ++#define FW_VER_HIGH_MASK 0x70 ++#define FW_VER_LOW_MASK 0x0f ++ ++/* Times to retry a ps2_command and millisecond delay between tries. */ ++#define CYTP_PS2_CMD_TRIES 3 ++#define CYTP_PS2_CMD_DELAY 500 ++ ++/* time out for PS/2 command only in milliseconds. */ ++#define CYTP_CMD_TIMEOUT 200 ++#define CYTP_DATA_TIMEOUT 30 ++ ++#define CYTP_EXT_CMD 0xe8 ++#define CYTP_PS2_RETRY 0xfe ++#define CYTP_PS2_ERROR 0xfc ++ ++#define CYTP_RESP_RETRY 0x01 ++#define CYTP_RESP_ERROR 0xfe ++ ++ ++#define CYTP_105001_WIDTH 97 /* Dell XPS 13 */ ++#define CYTP_105001_HIGH 59 ++#define CYTP_DEFAULT_WIDTH (CYTP_105001_WIDTH) ++#define CYTP_DEFAULT_HIGH (CYTP_105001_HIGH) ++ ++#define CYTP_ABS_MAX_X 1600 ++#define CYTP_ABS_MAX_Y 900 ++#define CYTP_MAX_PRESSURE 255 ++#define CYTP_MIN_PRESSURE 0 ++ ++/* header byte bits of relative package. */ ++#define BTN_LEFT_BIT 0x01 ++#define BTN_RIGHT_BIT 0x02 ++#define BTN_MIDDLE_BIT 0x04 ++#define REL_X_SIGN_BIT 0x10 ++#define REL_Y_SIGN_BIT 0x20 ++ ++/* header byte bits of absolute package. */ ++#define ABS_VSCROLL_BIT 0x10 ++#define ABS_HSCROLL_BIT 0x20 ++#define ABS_MULTIFINGER_TAP 0x04 ++#define ABS_EDGE_MOTION_MASK 0x80 ++ ++#define DFLT_RESP_BITS_VALID 0x88 /* SMBus bit should not be set. */ ++#define DFLT_RESP_SMBUS_BIT 0x80 ++#define DFLT_SMBUS_MODE 0x80 ++#define DFLT_PS2_MODE 0x00 ++#define DFLT_RESP_BIT_MODE 0x40 ++#define DFLT_RESP_REMOTE_MODE 0x40 ++#define DFLT_RESP_STREAM_MODE 0x00 ++#define DFLT_RESP_BIT_REPORTING 0x20 ++#define DFLT_RESP_BIT_SCALING 0x10 ++ ++#define TP_METRICS_BIT_PALM 0x80 ++#define TP_METRICS_BIT_STUBBORN 0x40 ++#define TP_METRICS_BIT_2F_JITTER 0x30 ++#define TP_METRICS_BIT_1F_JITTER 0x0c ++#define TP_METRICS_BIT_APA 0x02 ++#define TP_METRICS_BIT_MTG 0x01 ++#define TP_METRICS_BIT_ABS_PKT_FORMAT_SET 0xf0 ++#define TP_METRICS_BIT_2F_SPIKE 0x0c ++#define TP_METRICS_BIT_1F_SPIKE 0x03 ++ ++/* bits of first byte response of E9h-Status Request command. */ ++#define RESP_BTN_RIGHT_BIT 0x01 ++#define RESP_BTN_MIDDLE_BIT 0x02 ++#define RESP_BTN_LEFT_BIT 0x04 ++#define RESP_SCALING_BIT 0x10 ++#define RESP_ENABLE_BIT 0x20 ++#define RESP_REMOTE_BIT 0x40 ++#define RESP_SMBUS_BIT 0x80 ++ ++#define CYTP_MAX_MT_SLOTS 2 ++ ++struct cytp_contact { ++ int x; ++ int y; ++ int z; /* also named as touch pressure. */ ++}; ++ ++/* The structure of Cypress Trackpad event data. */ ++struct cytp_report_data { ++ int contact_cnt; ++ struct cytp_contact contacts[CYTP_MAX_MT_SLOTS]; ++ unsigned int left:1; ++ unsigned int right:1; ++ unsigned int middle:1; ++ unsigned int tap:1; /* multi-finger tap detected. */ ++}; ++ ++/* The structure of Cypress Trackpad device private data. */ ++struct cytp_data { ++ int fw_version; ++ ++ int pkt_size; ++ int mode; ++ ++ int tp_min_pressure; ++ int tp_max_pressure; ++ int tp_width; /* X direction physical size in mm. */ ++ int tp_high; /* Y direction physical size in mm. */ ++ int tp_max_abs_x; /* Max X absolute units that can be reported. */ ++ int tp_max_abs_y; /* Max Y absolute units that can be reported. */ ++ ++ int tp_res_x; /* X resolution in units/mm. */ ++ int tp_res_y; /* Y resolution in units/mm. */ ++ ++ int tp_metrics_supported; ++}; ++ ++ ++#ifdef CONFIG_MOUSE_PS2_CYPRESS ++int cypress_detect(struct psmouse *psmouse, bool set_properties); ++int cypress_init(struct psmouse *psmouse); ++bool cypress_supported(void); ++#else ++inline int cypress_detect(struct psmouse *psmouse, bool set_properties) ++{ ++ return -ENOSYS; ++} ++inline int cypress_init(struct psmouse *psmouse) ++{ ++ return -ENOSYS; ++} ++inline bool cypress_supported(void) ++{ ++ return 0; ++} ++#endif /* CONFIG_MOUSE_PS2_CYPRESS */ ++ ++#endif /* _CYPRESS_PS2_H */ +diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c +index 22fe254..cff065f 100644 +--- a/drivers/input/mouse/psmouse-base.c ++++ b/drivers/input/mouse/psmouse-base.c +@@ -34,6 +34,7 @@ + #include "touchkit_ps2.h" + #include "elantech.h" + #include "sentelic.h" ++#include "cypress_ps2.h" + + #define DRIVER_DESC "PS/2 mouse driver" + +@@ -759,6 +760,28 @@ static int psmouse_extensions(struct psmouse *psmouse, + } + + /* ++ * Try Cypress Trackpad. ++ * Must try it before Finger Sensing Pad because Finger Sensing Pad probe ++ * upsets some modules of Cypress Trackpads. ++ */ ++ if (max_proto > PSMOUSE_IMEX && ++ cypress_detect(psmouse, set_properties) == 0) { ++ if (cypress_supported()) { ++ if (cypress_init(psmouse) == 0) ++ return PSMOUSE_CYPRESS; ++ ++ /* ++ * Finger Sensing Pad probe upsets some modules of ++ * Cypress Trackpad, must avoid Finger Sensing Pad ++ * probe if Cypress Trackpad device detected. ++ */ ++ return PSMOUSE_PS2; ++ } ++ ++ max_proto = PSMOUSE_IMEX; ++ } ++ ++/* + * Try ALPS TouchPad + */ + if (max_proto > PSMOUSE_IMEX) { +@@ -896,6 +919,15 @@ static const struct psmouse_protocol psmouse_protocols[] = { + .alias = "thinkps", + .detect = thinking_detect, + }, ++#ifdef CONFIG_MOUSE_PS2_CYPRESS ++ { ++ .type = PSMOUSE_CYPRESS, ++ .name = "CyPS/2", ++ .alias = "cypress", ++ .detect = cypress_detect, ++ .init = cypress_init, ++ }, ++#endif + { + .type = PSMOUSE_GENPS, + .name = "GenPS/2", +diff --git a/drivers/input/mouse/psmouse.h b/drivers/input/mouse/psmouse.h +index fe1df23..2f0b39d 100644 +--- a/drivers/input/mouse/psmouse.h ++++ b/drivers/input/mouse/psmouse.h +@@ -95,6 +95,7 @@ enum psmouse_type { + PSMOUSE_ELANTECH, + PSMOUSE_FSP, + PSMOUSE_SYNAPTICS_RELATIVE, ++ PSMOUSE_CYPRESS, + PSMOUSE_AUTO /* This one should always be last */ + }; + +-- +1.7.7.6 + diff --git a/freed-ora/current/master/Input-increase-struct-ps2dev-cmdbuf-to-8-bytes.patch b/freed-ora/current/master/Input-increase-struct-ps2dev-cmdbuf-to-8-bytes.patch new file mode 100644 index 000000000..c3548aa07 --- /dev/null +++ b/freed-ora/current/master/Input-increase-struct-ps2dev-cmdbuf-to-8-bytes.patch @@ -0,0 +1,30 @@ +From 80524f083e2c3e70057f5bb476db92baa14cb22b Mon Sep 17 00:00:00 2001 +From: Kamal Mostafa <kamal@canonical.com> +Date: Tue, 20 Nov 2012 23:04:35 -0800 +Subject: [PATCH] Input: increase struct ps2dev cmdbuf[] to 8 bytes + +Cypress PS/2 Trackpad (drivers/input/mouse/cypress_ps2.c) needs +this larger cmdbuf[] to handle 8-byte packet responses. + +Signed-off-by: Kamal Mostafa <kamal@canonical.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + include/linux/libps2.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/include/linux/libps2.h b/include/linux/libps2.h +index 79603a6..4ad06e8 100644 +--- a/include/linux/libps2.h ++++ b/include/linux/libps2.h +@@ -36,7 +36,7 @@ struct ps2dev { + wait_queue_head_t wait; + + unsigned long flags; +- unsigned char cmdbuf[6]; ++ unsigned char cmdbuf[8]; + unsigned char cmdcnt; + unsigned char nak; + }; +-- +1.7.7.6 + diff --git a/freed-ora/current/master/Makefile.config b/freed-ora/current/master/Makefile.config index f95559d8b..21c2a837b 100644 --- a/freed-ora/current/master/Makefile.config +++ b/freed-ora/current/master/Makefile.config @@ -11,14 +11,12 @@ CONFIGFILES = \ $(CFG)-s390x.config \ $(CFG)-armv5tel-kirkwood.config \ $(CFG)-armv7l.config $(CFG)-armv7hl.config \ - $(CFG)-armv7l-imx.config $(CFG)-armv7hl-imx.config \ $(CFG)-armv7l-omap.config $(CFG)-armv7hl-omap.config \ $(CFG)-armv7l-tegra.config $(CFG)-armv7hl-tegra.config \ $(CFG)-ppc.config $(CFG)-ppc-smp.config \ - $(CFG)-sparc64.config \ $(CFG)-ppc64.config $(CFG)-ppc64p7.config $(CFG)-ppc64-debug.config -PLATFORMS = x86 x86_64 powerpc powerpc32 powerpc64 s390x sparc64 arm +PLATFORMS = x86 x86_64 powerpc powerpc32 powerpc64 s390x arm TEMPFILES = $(addprefix temp-, $(addsuffix -generic, $(PLATFORMS))) configs: $(CONFIGFILES) @@ -51,9 +49,6 @@ temp-armv7l-tegra: config-arm-tegra temp-arm-generic temp-armv5tel-kirkwood: config-arm-kirkwood temp-arm-generic perl merge.pl $^ > $@ -temp-armv7l-imx: config-arm-imx temp-arm-generic - perl merge.pl $^ > $@ - temp-x86-32: config-x86-32-generic config-x86-generic perl merge.pl $^ > $@ @@ -72,9 +67,6 @@ temp-x86_64-generic: temp-x86-64 temp-generic temp-x86_64-debug-generic: temp-x86-64 temp-debug-generic perl merge.pl $^ > $@ -temp-sparc64-generic: config-sparc64-generic temp-generic - perl merge.pl $^ > $@ - temp-powerpc-generic: config-powerpc-generic temp-generic perl merge.pl $^ > $@ @@ -108,9 +100,6 @@ kernel-$(VERSION)-x86_64.config: /dev/null temp-x86_64-generic kernel-$(VERSION)-x86_64-debug.config: /dev/null temp-x86_64-debug-generic perl merge.pl $^ x86_64 > $@ -kernel-$(VERSION)-sparc64.config: /dev/null temp-sparc64-generic - perl merge.pl $^ sparc64 > $@ - kernel-$(VERSION)-ppc64.config: /dev/null temp-powerpc64-generic perl merge.pl $^ powerpc > $@ @@ -129,9 +118,6 @@ kernel-$(VERSION)-armv5tel-kirkwood.config: /dev/null temp-armv5tel-kirkwood kernel-$(VERSION)-armv7l.config: /dev/null temp-armv7 perl merge.pl $^ arm > $@ -kernel-$(VERSION)-armv7l-imx.config: /dev/null temp-armv7l-imx - perl merge.pl $^ arm > $@ - kernel-$(VERSION)-armv7l-omap.config: /dev/null temp-armv7l-omap perl merge.pl $^ arm > $@ @@ -141,9 +127,6 @@ kernel-$(VERSION)-armv7l-tegra.config: /dev/null temp-armv7l-tegra kernel-$(VERSION)-armv7hl.config: /dev/null temp-armv7 perl merge.pl $^ arm > $@ -kernel-$(VERSION)-armv7hl-imx.config: /dev/null temp-armv7l-imx - perl merge.pl $^ arm > $@ - kernel-$(VERSION)-armv7hl-omap.config: /dev/null temp-armv7l-omap perl merge.pl $^ arm > $@ diff --git a/freed-ora/current/master/Revert-8139cp-revert-set-ring-address-before-enabling.patch b/freed-ora/current/master/Revert-8139cp-revert-set-ring-address-before-enabling.patch deleted file mode 100644 index 6ed20c43c..000000000 --- a/freed-ora/current/master/Revert-8139cp-revert-set-ring-address-before-enabling.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 071e3ef4a94a021b16a2912f3885c86f4ff36b49 Mon Sep 17 00:00:00 2001 -From: "David S. Miller" <davem@davemloft.net> -Date: Sun, 25 Nov 2012 15:52:09 -0500 -Subject: [PATCH] Revert "8139cp: revert "set ring address before enabling - receiver"" - -This reverts commit b26623dab7eeb1e9f5898c7a49458789dd492f20. - -This reverts the revert, in net-next we'll try another scheme -to fix this bug using patches from David Woodhouse. - -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/ethernet/realtek/8139cp.c | 22 +++++++++++----------- - 1 files changed, 11 insertions(+), 11 deletions(-) - -diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c -index b01f83a..1c81825 100644 ---- a/drivers/net/ethernet/realtek/8139cp.c -+++ b/drivers/net/ethernet/realtek/8139cp.c -@@ -979,6 +979,17 @@ static void cp_init_hw (struct cp_private *cp) - cpw32_f (MAC0 + 0, le32_to_cpu (*(__le32 *) (dev->dev_addr + 0))); - cpw32_f (MAC0 + 4, le32_to_cpu (*(__le32 *) (dev->dev_addr + 4))); - -+ cpw32_f(HiTxRingAddr, 0); -+ cpw32_f(HiTxRingAddr + 4, 0); -+ -+ ring_dma = cp->ring_dma; -+ cpw32_f(RxRingAddr, ring_dma & 0xffffffff); -+ cpw32_f(RxRingAddr + 4, (ring_dma >> 16) >> 16); -+ -+ ring_dma += sizeof(struct cp_desc) * CP_RX_RING_SIZE; -+ cpw32_f(TxRingAddr, ring_dma & 0xffffffff); -+ cpw32_f(TxRingAddr + 4, (ring_dma >> 16) >> 16); -+ - cp_start_hw(cp); - cpw8(TxThresh, 0x06); /* XXX convert magic num to a constant */ - -@@ -992,17 +1003,6 @@ static void cp_init_hw (struct cp_private *cp) - - cpw8(Config5, cpr8(Config5) & PMEStatus); - -- cpw32_f(HiTxRingAddr, 0); -- cpw32_f(HiTxRingAddr + 4, 0); -- -- ring_dma = cp->ring_dma; -- cpw32_f(RxRingAddr, ring_dma & 0xffffffff); -- cpw32_f(RxRingAddr + 4, (ring_dma >> 16) >> 16); -- -- ring_dma += sizeof(struct cp_desc) * CP_RX_RING_SIZE; -- cpw32_f(TxRingAddr, ring_dma & 0xffffffff); -- cpw32_f(TxRingAddr + 4, (ring_dma >> 16) >> 16); -- - cpw16(MultiIntr, 0); - - cpw8_f(Cfg9346, Cfg9346_Lock); --- -1.7.6.5 - diff --git a/freed-ora/current/master/Revert-iwlwifi-fix-the-reclaimed-packet-tracking-upon.patch b/freed-ora/current/master/Revert-iwlwifi-fix-the-reclaimed-packet-tracking-upon.patch new file mode 100644 index 000000000..302774b45 --- /dev/null +++ b/freed-ora/current/master/Revert-iwlwifi-fix-the-reclaimed-packet-tracking-upon.patch @@ -0,0 +1,68 @@ +From ae023b2795d36f0f077e157428eb7eafa29ee412 Mon Sep 17 00:00:00 2001 +From: Emmanuel Grumbach <emmanuel.grumbach@intel.com> +Date: Mon, 21 Jan 2013 13:12:57 +0200 +Subject: [PATCH] Revert "iwlwifi: fix the reclaimed packet tracking upon + flush queue" + +This reverts commit f590dcec944552f9a4a61155810f3abd17d6465d +which has been reported to cause issues. + +See https://lkml.org/lkml/2013/1/20/4 for further details. + +Cc: stable@vger.kernel.org [3.7] +Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> +Signed-off-by: Johannes Berg <johannes.berg@intel.com> +--- + drivers/net/wireless/iwlwifi/dvm/tx.c | 24 +++++++----------------- + 1 files changed, 7 insertions(+), 17 deletions(-) + +diff --git a/drivers/net/wireless/iwlwifi/dvm/tx.c b/drivers/net/wireless/iwlwifi/dvm/tx.c +index 31534f7..2797964 100644 +--- a/drivers/net/wireless/iwlwifi/dvm/tx.c ++++ b/drivers/net/wireless/iwlwifi/dvm/tx.c +@@ -1153,6 +1153,13 @@ int iwlagn_rx_reply_tx(struct iwl_priv *priv, struct iwl_rx_cmd_buffer *rxb, + next_reclaimed = ssn; + } + ++ if (tid != IWL_TID_NON_QOS) { ++ priv->tid_data[sta_id][tid].next_reclaimed = ++ next_reclaimed; ++ IWL_DEBUG_TX_REPLY(priv, "Next reclaimed packet:%d\n", ++ next_reclaimed); ++ } ++ + iwl_trans_reclaim(priv->trans, txq_id, ssn, &skbs); + + iwlagn_check_ratid_empty(priv, sta_id, tid); +@@ -1203,28 +1210,11 @@ int iwlagn_rx_reply_tx(struct iwl_priv *priv, struct iwl_rx_cmd_buffer *rxb, + if (!is_agg) + iwlagn_non_agg_tx_status(priv, ctx, hdr->addr1); + +- /* +- * W/A for FW bug - the seq_ctl isn't updated when the +- * queues are flushed. Fetch it from the packet itself +- */ +- if (!is_agg && status == TX_STATUS_FAIL_FIFO_FLUSHED) { +- next_reclaimed = le16_to_cpu(hdr->seq_ctrl); +- next_reclaimed = +- SEQ_TO_SN(next_reclaimed + 0x10); +- } +- + is_offchannel_skb = + (info->flags & IEEE80211_TX_CTL_TX_OFFCHAN); + freed++; + } + +- if (tid != IWL_TID_NON_QOS) { +- priv->tid_data[sta_id][tid].next_reclaimed = +- next_reclaimed; +- IWL_DEBUG_TX_REPLY(priv, "Next reclaimed packet:%d\n", +- next_reclaimed); +- } +- + WARN_ON(!is_agg && freed != 1); + + /* +-- +1.7.6.5 + diff --git a/freed-ora/current/master/linux-2.6-acpi-debug-infinite-loop.patch b/freed-ora/current/master/acpi-debug-infinite-loop.patch index f2cc1a55e..f2cc1a55e 100644 --- a/freed-ora/current/master/linux-2.6-acpi-debug-infinite-loop.patch +++ b/freed-ora/current/master/acpi-debug-infinite-loop.patch diff --git a/freed-ora/current/master/linux-2.6-acpi-video-dos.patch b/freed-ora/current/master/acpi-video-dos.patch index 3e2085193..3e2085193 100644 --- a/freed-ora/current/master/linux-2.6-acpi-video-dos.patch +++ b/freed-ora/current/master/acpi-video-dos.patch diff --git a/freed-ora/current/master/arm-omapdrm-fixinc.patch b/freed-ora/current/master/arm-omapdrm-fixinc.patch deleted file mode 100644 index 001b4c57f..000000000 --- a/freed-ora/current/master/arm-omapdrm-fixinc.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- linux-3.7.0-0.rc2.git4.2.fc19.x86_64/drivers/staging/omapdrm/omap_crtc.c.orig 2012-10-30 09:58:47.613641237 +0000 -+++ linux-3.7.0-0.rc2.git4.2.fc19.x86_64/drivers/staging/omapdrm/omap_crtc.c 2012-10-30 10:05:36.996081758 +0000 -@@ -19,9 +19,9 @@ - - #include "omap_drv.h" - --#include "drm_mode.h" --#include "drm_crtc.h" --#include "drm_crtc_helper.h" -+#include <drm/drm_mode.h> -+#include <drm/drm_crtc.h> -+#include <drm/drm_crtc_helper.h> - - #define to_omap_crtc(x) container_of(x, struct omap_crtc, base) - diff --git a/freed-ora/current/master/arm-tegra-nvec-kconfig.patch b/freed-ora/current/master/arm-tegra-nvec-kconfig.patch index a3f568cd5..64aa9f8e3 100644 --- a/freed-ora/current/master/arm-tegra-nvec-kconfig.patch +++ b/freed-ora/current/master/arm-tegra-nvec-kconfig.patch @@ -1,10 +1,10 @@ ---- linux-2.6.42.noarch/drivers/staging/nvec/Kconfig.orig 2012-02-02 08:16:12.512727480 -0600 -+++ linux-2.6.42.noarch/drivers/staging/nvec/Kconfig 2012-02-01 18:44:56.674990109 -0600 +--- linux-3.8.0-0.rc2.git1.1.fc19.x86_64/drivers/staging/nvec/Kconfig.orig 2013-01-07 11:04:43.493510550 +0000 ++++ linux-3.8.0-0.rc2.git1.1.fc19.x86_64/drivers/staging/nvec/Kconfig 2013-01-07 11:14:18.186033211 +0000 @@ -1,6 +1,6 @@ config MFD_NVEC bool "NV Tegra Embedded Controller SMBus Interface" - depends on I2C && GPIOLIB && ARCH_TEGRA -+ depends on I2C && GPIOLIB && ARCH_TEGRA && MFD_CORE=y ++ depends on I2C && GPIOLIB && ARCH_TEGRA && MFD_CORE + select MFD_CORE help Say Y here to enable support for a nVidia compliant embedded - controller. diff --git a/freed-ora/current/master/brcmsmac-double-timeout.patch b/freed-ora/current/master/brcmsmac-double-timeout.patch new file mode 100644 index 000000000..adb718d83 --- /dev/null +++ b/freed-ora/current/master/brcmsmac-double-timeout.patch @@ -0,0 +1,39 @@ +diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c +index 17594de..a86d689 100644 +--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c ++++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c +@@ -7518,7 +7518,7 @@ int brcms_c_get_curband(struct brcms_c_info *wlc) + return wlc->band->bandunit; + } + +-void brcms_c_wait_for_tx_completion(struct brcms_c_info *wlc, bool drop) ++static int __brcms_c_wait_for_tx_completion(struct brcms_c_info *wlc, bool drop) + { + int timeout = 20; + int i; +@@ -7536,9 +7536,25 @@ void brcms_c_wait_for_tx_completion(struct brcms_c_info *wlc, bool drop) + break; + } + ++ return timeout; ++} ++ ++void brcms_c_wait_for_tx_completion(struct brcms_c_info *wlc, bool drop) ++{ ++ int timeout; ++ ++ timeout = __brcms_c_wait_for_tx_completion(wlc, drop); ++ if (timeout != 0) ++ return; ++ ++ /* Retry. */ ++ printk(KERN_INFO "brcms_c_wait_for_tx_completion took > 20ms. Retrying.\n"); ++ timeout = __brcms_c_wait_for_tx_completion(wlc, drop); ++ + WARN_ON_ONCE(timeout == 0); + } + ++ + void brcms_c_set_beacon_listen_interval(struct brcms_c_info *wlc, u8 interval) + { + wlc->bcn_li_bcn = interval; diff --git a/freed-ora/current/master/linux-2.6-compile-fixes.patch b/freed-ora/current/master/compile-fixes.patch index 34c08ce47..34c08ce47 100644 --- a/freed-ora/current/master/linux-2.6-compile-fixes.patch +++ b/freed-ora/current/master/compile-fixes.patch diff --git a/freed-ora/current/master/config-arm-generic b/freed-ora/current/master/config-arm-generic index 89fc4356a..34985e5b8 100644 --- a/freed-ora/current/master/config-arm-generic +++ b/freed-ora/current/master/config-arm-generic @@ -63,6 +63,7 @@ CONFIG_SCHED_SMT=y CONFIG_RCU_FANOUT=32 CONFIG_CPU_IDLE=y +# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set # CONFIG_CPU_IDLE_GOV_LADDER is not set CONFIG_CPU_IDLE_GOV_MENU=y @@ -109,6 +110,7 @@ CONFIG_RFKILL_GPIO=m CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y CONFIG_GPIO_GENERIC_PLATFORM=m CONFIG_PINCTRL_SINGLE=m +CONFIG_POWER_RESET_GPIO=y CONFIG_USB_ULPI=y @@ -133,7 +135,9 @@ CONFIG_SERIO_AMBAKMI=m CONFIG_I2C_NOMADIK=m CONFIG_ARM_SP805_WATCHDOG=m CONFIG_FB_ARMCLCD=m +CONFIG_FB_SSD1307=m CONFIG_MPCORE_WATCHDOG=m +CONFIG_BACKLIGHT_PWM=m CONFIG_MMC_ARMMMCI=m CONFIG_MMC_SDHCI_PLTFM=m @@ -249,8 +253,10 @@ CONFIG_HW_RANDOM_ATMEL=m CONFIG_HW_RANDOM_EXYNOS=m # Device tree +CONFIG_DTC=y CONFIG_OF=y CONFIG_USE_OF=y +CONFIG_OF_DEVICE=y CONFIG_OF_IRQ=y CONFIG_ARM_ATAG_DTB_COMPAT=y CONFIG_ARM_APPENDED_DTB=y @@ -289,25 +295,32 @@ CONFIG_GPIO_MCP23S08=m CONFIG_GPIO_ADNP=m CONFIG_PL310_ERRATA_753970=y +CONFIG_MFD_CORE=m CONFIG_MFD_88PM800=m CONFIG_MFD_88PM805=m CONFIG_MFD_SYSCON=y +# CONFIG_MFD_TPS80031 is not set +# CONFIG_MFD_AS3711 is not set # CONFIG_MFD_SMSC is not set # CONFIG_MFD_DA9055 is not set # CONFIG_MFD_MAX8907 is not set CONFIG_REGULATOR_VIRTUAL_CONSUMER=m CONFIG_REGULATOR_USERSPACE_CONSUMER=m +# CONFIG_REGULATOR_DUMMY is not set CONFIG_REGULATOR_GPIO=m CONFIG_REGULATOR_AD5398=m CONFIG_REGULATOR_ANATOP=m CONFIG_REGULATOR_FAN53555=m CONFIG_REGULATOR_ISL6271A=m +CONFIG_REGULATOR_LP3972=m CONFIG_REGULATOR_MAX1586=m CONFIG_REGULATOR_MAX8649=m CONFIG_REGULATOR_MAX8660=m CONFIG_REGULATOR_MAX8952=m +CONFIG_REGULATOR_MAX8973=m CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_TPS51632=m CONFIG_REGULATOR_TPS62360=m CONFIG_REGULATOR_TPS65023=m CONFIG_REGULATOR_TPS6507X=m @@ -316,6 +329,7 @@ CONFIG_EXTCON_GPIO=m # CONFIG_ARM_VIRT_EXT is not set # CONFIG_PINCTRL_EXYNOS4 is not set +# CONFIG_PINCTRL_EXYNOS5440 is not set # CONFIG_AUTO_ZRELADDR is not set # CONFIG_ASYMMETRIC_KEY_TYPE is not set diff --git a/freed-ora/current/master/config-arm-highbank b/freed-ora/current/master/config-arm-highbank deleted file mode 100644 index 952a21ac4..000000000 --- a/freed-ora/current/master/config-arm-highbank +++ /dev/null @@ -1,62 +0,0 @@ -CONFIG_ARCH_HIGHBANK=y -# CONFIG_ARM_LPAE is not set -# CONFIG_ARM_THUMBEE is not set -CONFIG_SWP_EMULATE=y -# CONFIG_CPU_BPREDICT_DISABLE is not set -# CONFIG_ARM_ERRATA_430973 is not set -# CONFIG_ARM_ERRATA_458693 is not set -# CONFIG_ARM_ERRATA_460075 is not set -# CONFIG_PL310_ERRATA_588369 is not set -# CONFIG_PL310_ERRATA_727915 is not set -# CONFIG_ARM_ERRATA_743622 is not set -# CONFIG_PL310_ERRATA_753970 is not set -# CONFIG_ARM_ERRATA_754322 is not set -# CONFIG_PL310_ERRATA_769419 is not set - -# CONFIG_THUMB2_KERNEL is not set - -CONFIG_ARM_TIMER_SP804=y - -CONFIG_VFP=y -CONFIG_VFPv3=y -CONFIG_NEON=y - -CONFIG_SATA_AHCI_PLATFORM=y -CONFIG_ATA_SFF=y - -CONFIG_NET_CALXEDA_XGMAC=y - -CONFIG_EDAC_HIGHBANK_MC=m -CONFIG_EDAC_HIGHBANK_L2=m - -CONFIG_GPIO_PL061=y - -CONFIG_SERIAL_AMBA_PL010=y -CONFIG_SERIAL_AMBA_PL010_CONSOLE=y -CONFIG_SERIAL_AMBA_PL011=y -CONFIG_SERIAL_AMBA_PL011_CONSOLE=y - -CONFIG_RTC_DRV_PL030=y -CONFIG_RTC_DRV_PL031=y - -CONFIG_SATA_HIGHBANK=m - -CONFIG_OC_ETM=y - -# CONFIG_NET_VENDOR_BROADCOM is not set -# these were all requested to be disabled on highbank kernels by calxeda -# CONFIG_HAMRADIO is not set -# CONFIG_IRDA is not set -# CONFIG_WIMAX is not set -# CONFIG_RFKILL is not set -# CONFIG_CAIF is not set -# CONFIG_NFC is not set -# CONFIG_MTD is not set -# CONFIG_PARPORT is not set -# CONFIG_ATM_DRIVERS is not set -# CONFIG_WAN is not set -# CONFIG_ISDN is not set -# CONFIG_MEDIA_SUPPORT is not set -# CONFIG_DRM is not set -# CONFIG_SND is not set -# end of list of requested disabled options diff --git a/freed-ora/current/master/config-arm-imx b/freed-ora/current/master/config-arm-imx deleted file mode 100644 index 8ffd96559..000000000 --- a/freed-ora/current/master/config-arm-imx +++ /dev/null @@ -1,119 +0,0 @@ -CONFIG_ARCH_MXC=y -CONFIG_ARCH_MX51=y - -CONFIG_VFP=y -CONFIG_NEON=y -# CONFIG_SWP_EMULATE is not set -# CONFIG_THUMB2_KERNEL is not set -CONFIG_CPU_FREQ_IMX=y - -CONFIG_SOC_IMX53=y -CONFIG_SOC_IMX6Q=y - -CONFIG_MACH_ARMADILLO5X0=y -CONFIG_MACH_BUG=y -CONFIG_MACH_EUKREA_CPUIMX35=y -CONFIG_MACH_EUKREA_CPUIMX35SD=y -CONFIG_MACH_EUKREA_CPUIMX51=y -CONFIG_MACH_EUKREA_CPUIMX51SD=y -CONFIG_MACH_IMX31_DT=y -CONFIG_MACH_IMX51_DT=y -CONFIG_MACH_IMX53_DT=y -CONFIG_MACH_KZM_ARM11_01=y -CONFIG_MACH_MX31_3DS=y -CONFIG_MACH_MX31ADS=y -CONFIG_MACH_MX31LILLY=y -CONFIG_MACH_MX31LITE=y -CONFIG_MACH_MX31MOBOARD=y -CONFIG_MACH_MX35_3DS=y -CONFIG_MACH_MX51_3DS=y -CONFIG_MACH_MX51_BABBAGE=y -CONFIG_MACH_MX51_EFIKAMX=y -CONFIG_MACH_MX51_EFIKASB=y -CONFIG_MACH_MX53_EVK=y -CONFIG_MACH_MX53_SMD=y -CONFIG_MACH_MX53_LOCO=y -CONFIG_MACH_MX53_ARD=y -CONFIG_MACH_PCM037=y -CONFIG_MACH_PCM037_EET=y -CONFIG_MACH_PCM043=y -CONFIG_MACH_QONG=y -CONFIG_MACH_VPR200=y - -CONFIG_W1_MASTER_MXC=m -CONFIG_DMA_CACHE_RWFO=y -CONFIG_IMX_DMA=y -CONFIG_IMX_SDMA=y -CONFIG_MXS_DMA=y -CONFIG_MXC_IRQ_PRIOR=y -CONFIG_MXC_PWM=m -CONFIG_MXC_DEBUG_BOARD=y - -# CONFIG_CPU_BPREDICT_DISABLE is not set -CONFIG_CACHE_L2X0=y -CONFIG_ARM_DMA_MEM_BUFFERABLE=y -CONFIG_ARM_ERRATA_326103=y -CONFIG_ARM_ERRATA_411920=y -CONFIG_PL310_ERRATA_588369=y -CONFIG_PL310_ERRATA_727915=y -CONFIG_ARM_ERRATA_364296=y - -CONFIG_PATA_IMX=m -CONFIG_NET_VENDOR_FREESCALE=y -CONFIG_FEC=y -CONFIG_KEYBOARD_IMX=m -CONFIG_SERIAL_IMX=y -CONFIG_HW_RANDOM_MXC_RNGA=m -CONFIG_I2C_IMX=m -CONFIG_GPIO_GENERIC_PLATFORM=y -CONFIG_GPIO_MCP23S08=m -# CONFIG_GPIO_MC9S08DZ60 is not set -CONFIG_PINCTRL_IMX35=y -CONFIG_PINCTRL_IMX51=y -CONFIG_PINCTRL_IMX53=y -CONFIG_USB_EHCI_MXC=y -CONFIG_USB_MXS_PHY=m -# CONFIG_USB_IMX21_HCD is not set -CONFIG_MMC_SDHCI_ESDHC_IMX=m -CONFIG_MMC_MXC=m -CONFIG_RTC_MXC=y -CONFIG_RTC_DRV_MXC=m - -CONFIG_DRM_IMX=m -CONFIG_DRM_IMX_FB_HELPER=m -CONFIG_DRM_IMX_PARALLEL_DISPLAY=m -CONFIG_DRM_IMX_IPUV3_CORE=m -CONFIG_DRM_IMX_IPUV3=m -CONFIG_VIDEO_CODA=m -CONFIG_BACKLIGHT_PWM=m -CONFIG_LEDS_PWM=m - -# CONFIG_MACH_MX31_3DS_MXC_NAND_USE_BBT is not set -CONFIG_MXC_USE_EPIT=y -CONFIG_HAVE_EPIT=y -CONFIG_ARM_THUMBEE=y -CONFIG_ARM_ERRATA_430973=y -CONFIG_ARM_ERRATA_458693=y -CONFIG_ARM_ERRATA_460075=y -CONFIG_ARM_ERRATA_743622=y -CONFIG_ARM_ERRATA_754322=y -CONFIG_CAN_FLEXCAN=m -CONFIG_MTD_NAND_MXC=m -CONFIG_MTD_NAND_GPMI_NAND=y -CONFIG_INPUT_PWM_BEEPER=m -CONFIG_SERIAL_IMX_CONSOLE=y -CONFIG_IMX2_WDT=m - -CONFIG_SND_IMX_SOC=m -CONFIG_SND_SOC_PHYCORE_AC97=m -CONFIG_SND_SOC_EUKREA_TLV320=m -CONFIG_SND_SOC_IMX_SGTL5000=m - -CONFIG_PL310_ERRATA_769419=y -CONFIG_LEDS_RENESAS_TPU=y - -CONFIG_MFD_MAX8907=m - -CONFIG_FB_IMX=m - -# CONFIG_NET_VENDOR_BROADCOM is not set diff --git a/freed-ora/current/master/config-arm-kirkwood b/freed-ora/current/master/config-arm-kirkwood index ff1dad7df..ac3bf6f61 100644 --- a/freed-ora/current/master/config-arm-kirkwood +++ b/freed-ora/current/master/config-arm-kirkwood @@ -15,20 +15,29 @@ CONFIG_MACH_GURUPLUG=y CONFIG_MACH_ICONNECT_DT=y CONFIG_MACH_IB62X0_DT=y CONFIG_MACH_INETSPACE_V2=y +CONFIG_MACH_INETSPACE_V2_DT=y CONFIG_MACH_IOMEGA_IX2_200_DT=y CONFIG_MACH_KM_KIRKWOOD_DT=y CONFIG_MACH_LSXL_DT=y +CONFIG_MACH_MPLCEC4_DT=y CONFIG_MACH_MV88F6281GTW_GE=y -CONFIG_MACH_NETSPACE_V2=y +CONFIG_MACH_NETSPACE_LITE_V2_DT=y CONFIG_MACH_NETSPACE_MAX_V2=y +CONFIG_MACH_NETSPACE_MAX_V2_DT=y +CONFIG_MACH_NETSPACE_MINI_V2_DT=y +CONFIG_MACH_NETSPACE_V2=y +CONFIG_MACH_NETSPACE_V2_DT=y CONFIG_MACH_NET2BIG_V2=y CONFIG_MACH_NET5BIG_V2=y +CONFIG_MACH_NSA310_DT=y +CONFIG_MACH_OPENBLOCKS_A6_DT=y CONFIG_MACH_OPENRD_BASE=y CONFIG_MACH_OPENRD_CLIENT=y CONFIG_MACH_OPENRD_ULTIMATE=y CONFIG_MACH_RD88F6192_NAS=y CONFIG_MACH_RD88F6281=y CONFIG_MACH_SHEEVAPLUG=y +CONFIG_MACH_TOPKICK_DT=y CONFIG_MACH_TS219=y CONFIG_MACH_TS219_DT=y CONFIG_MACH_TS41X=y diff --git a/freed-ora/current/master/config-arm-omap b/freed-ora/current/master/config-arm-omap index 68421b06e..a53983357 100644 --- a/freed-ora/current/master/config-arm-omap +++ b/freed-ora/current/master/config-arm-omap @@ -41,7 +41,7 @@ CONFIG_SOC_OMAP3430=y CONFIG_SOC_TI81XX=y CONFIG_SOC_AM33XX=y CONFIG_SOC_OMAPTI816X=y -CONFIG_SOC_OMAP5=y +# CONFIG_SOC_OMAP5 is not set CONFIG_OMAP_PACKAGE_CBB=y CONFIG_OMAP_PACKAGE_CBL=y CONFIG_OMAP_PACKAGE_CBS=y @@ -170,6 +170,7 @@ CONFIG_TOUCHSCREEN_TI_TSCADC=m CONFIG_SERIAL_OMAP=y CONFIG_SERIAL_OMAP_CONSOLE=y CONFIG_OMAP_WATCHDOG=y +CONFIG_CLK_TWL6040=m CONFIG_TWL4030_CORE=y CONFIG_TWL4030_MADC=m CONFIG_TWL4030_POWER=y @@ -181,6 +182,7 @@ CONFIG_CHARGER_TWL4030=m CONFIG_TWL6030_PWM=m CONFIG_TWL6040_CORE=y CONFIG_SENSORS_TWL4030_MADC=m +CONFIG_SENSORS_LIS3_I2C=m CONFIG_TI_DAVINCI_EMAC=m CONFIG_TI_DAVINCI_MDIO=m CONFIG_TI_DAVINCI_CPDMA=m @@ -190,12 +192,16 @@ CONFIG_LEDS_LP8788=m CONFIG_MTD_ONENAND_OMAP2=y CONFIG_HDQ_MASTER_OMAP=m CONFIG_I2C_OMAP=m -CONFIG_SPI_OMAP24XX=y +CONFIG_SPI_OMAP24XX=m CONFIG_MFD_OMAP_USB_HOST=y CONFIG_MFD_WL1273_CORE=m CONFIG_MFD_LP8788=y +CONFIG_MFD_TPS65910=y +CONFIG_GPIO_TPS65910=y CONFIG_REGULATOR_TWL4030=y CONFIG_REGULATOR_LP8788=y +CONFIG_REGULATOR_TPS65217=y +CONFIG_REGULATOR_TPS65910=y # Enable V4L2 drivers for OMAP2+ CONFIG_MEDIA_CONTROLLER=y CONFIG_VIDEO_V4L2_SUBDEV_API=y @@ -232,20 +238,25 @@ CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0 CONFIG_OMAP2_DSS_SLEEP_BEFORE_RESET=y CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y +CONFIG_FB_DA8XX=m +CONFIG_FB_DA8XX_CONSISTENT_DMA_SIZE=5 + +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_PANEL_GENERIC_DPI=m CONFIG_PANEL_TFP410=m CONFIG_PANEL_TAAL=m CONFIG_PANEL_PICODLP=m +CONFIG_PANEL_SHARP_LS037V7DW01=m +CONFIG_PANEL_NEC_NL8048HL11_01B=m +CONFIG_PANEL_TPO_TD043MTEA1=m +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BACKLIGHT_CLASS_DEVICE=m +CONFIG_BACKLIGHT_PWM=m CONFIG_BACKLIGHT_PANDORA=m -# -# OMAP2/3 Display Device Drivers -# -CONFIG_PANEL_GENERIC_DPI=y -CONFIG_PANEL_SHARP_LS037V7DW01=y -CONFIG_PANEL_NEC_NL8048HL11_01B=y -CONFIG_PANEL_TPO_TD043MTEA1=y CONFIG_SND_OMAP_SOC=y +CONFIG_SND_OMAP_SOC_DMIC=m CONFIG_SND_OMAP_SOC_MCBSP=m CONFIG_SND_OMAP_SOC_MCPDM=m CONFIG_SND_OMAP_SOC_OVERO=m @@ -256,20 +267,18 @@ CONFIG_SND_OMAP_SOC_SDP4430=m CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=m CONFIG_SND_OMAP_SOC_ZOOM2=m -CONFIG_SND_OMAP_SOC_IGEP0020=y -CONFIG_SND_OMAP_SOC_OMAP_HDMI=y -# Because alsa is modular http://www.spinics.net/lists/linux-omap/msg67307.html -# CONFIG_SND_OMAP_SOC_OMAP4_HDMI is not set +CONFIG_SND_OMAP_SOC_IGEP0020=m +CONFIG_SND_OMAP_SOC_OMAP_HDMI=m CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=m CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_OMAP_SOC_RX51 is not set # CONFIG_SND_SOC_ALL_CODECS is not set -CONFIG_SND_SOC_TLV320AIC23=y -CONFIG_SND_SOC_TLV320AIC3X=y -CONFIG_SND_SOC_TWL4030=y -CONFIG_SND_SOC_TWL6040=y -CONFIG_RADIO_WL128X +CONFIG_SND_SOC_TLV320AIC23=m +CONFIG_SND_SOC_TLV320AIC3X=m +CONFIG_SND_SOC_TWL4030=m +CONFIG_SND_SOC_TWL6040=m +CONFIG_RADIO_WL128X=m CONFIG_USB_OTG=y CONFIG_USB_EHCI_HCD_OMAP=y @@ -297,9 +306,17 @@ CONFIG_MMC_OMAP=y CONFIG_MMC_OMAP_HS=y CONFIG_TWL4030_USB=y CONFIG_TWL6030_USB=y +CONFIG_RTC_DRV_OMAP=m CONFIG_RTC_DRV_TWL4030=y +CONFIG_RTC_DRV_TPS65910=m + +CONFIG_PWM_TIECAP=m +CONFIG_PWM_TIEHRPWM=m +CONFIG_PWM_TWL=m +CONFIG_PWM_TWL_LED=m -CONFIG_IR_RX51=m +# CONFIG_IR_RX51 is not set +# CONFIG_BATTERY_RX51 is not set # CONFIG_TIDSPBRIDGE is not set # CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE=0x600000 @@ -320,7 +337,6 @@ CONFIG_CRYPTO_DEV_OMAP_AES=m # CONFIG_NET_VENDOR_BROADCOM is not set # CONFIG_MTD_NAND_OMAP_BCH is not set -# CONFIG_MFD_TPS65910 is not set # CONFIG_MFD_TPS65912_I2C is not set # CONFIG_PMIC_DA903X is not set # CONFIG_MFD_DA9052_I2C is not set @@ -333,7 +349,8 @@ CONFIG_CRYPTO_DEV_OMAP_AES=m # CONFIG_MFD_AAT2870_CORE is not set # CONFIG_MFD_RC5T583 is not set # CONFIG_MFD_PALMAS is not set -# CONFIG_REGULATOR_DUMMY is not set # CONFIG_REGULATOR_LP3972 is not set # CONFIG_REGULATOR_LP872X is not set +# CONFIG_OMAP2_DSS_DEBUG is not set +# CONFIG_OMAP2_DSS_DEBUGFS is not set diff --git a/freed-ora/current/master/config-arm-tegra b/freed-ora/current/master/config-arm-tegra index 894b5dbef..b62bdecef 100644 --- a/freed-ora/current/master/config-arm-tegra +++ b/freed-ora/current/master/config-arm-tegra @@ -1,9 +1,8 @@ CONFIG_ARCH_TEGRA=y CONFIG_ARCH_TEGRA_2x_SOC=y -# CONFIG_ARCH_TEGRA_3x_SOC is not set +CONFIG_ARCH_TEGRA_3x_SOC=y # CONFIG_ARM_LPAE is not set -CONFIG_TEGRA_PCI=y CONFIG_VFP=y CONFIG_VFPv3=y @@ -20,6 +19,7 @@ CONFIG_MACH_VENTANA=y CONFIG_TEGRA_DEBUG_UARTD=y CONFIG_ARM_CPU_TOPOLOGY=y +CONFIG_TEGRA_PCI=y CONFIG_TEGRA_IOMMU_GART=y CONFIG_TEGRA_IOMMU_SMMU=y @@ -72,15 +72,25 @@ CONFIG_SND_SOC_TEGRA_ALC5632=m CONFIG_SND_SOC_TEGRA_WM8753=m CONFIG_SND_SOC_TEGRA_WM8903=m CONFIG_SND_SOC_TEGRA_TRIMSLICE=m -# CONFIG_SND_SOC_TEGRA30_AHUB is not set -# CONFIG_SND_SOC_TEGRA30_I2S is not set +CONFIG_SND_SOC_TEGRA30_AHUB=m +CONFIG_SND_SOC_TEGRA30_I2S=m -CONFIG_MFD_NVEC=y +# AC100 (PAZ00) +# CONFIG_MFD_NVEC is not set +CONFIG_MFD_TPS80031=y CONFIG_KEYBOARD_NVEC=y CONFIG_SERIO_NVEC_PS2=y CONFIG_NVEC_POWER=y CONFIG_POWER_SUPPLY=y CONFIG_NVEC_LEDS=y +CONFIG_NVEC_PAZ00=y + +# CONFIG_MFD_TPS6586X is not set +# CONFIG_RTC_DRV_TPS6586X is not set + +CONFIG_PWM_TEGRA=m + +CONFIG_DRM_TEGRA=m CONFIG_CPU_PM=y CONFIG_ARM_CPU_SUSPEND=y @@ -95,3 +105,5 @@ CONFIG_SERIAL_OF_PLATFORM=y CONFIG_OF_GPIO=y CONFIG_OF_PCI=y CONFIG_OF_PCI_IRQ=y + +# CONFIG_DRM_TEGRA_DEBUG is not set diff --git a/freed-ora/current/master/config-arm-versatile b/freed-ora/current/master/config-arm-versatile deleted file mode 100644 index 9c379361b..000000000 --- a/freed-ora/current/master/config-arm-versatile +++ /dev/null @@ -1,95 +0,0 @@ -CONFIG_ARCH_VEXPRESS=y -CONFIG_ARCH_VEXPRESS_CA9X4=y -CONFIG_ARCH_VEXPRESS_DT=y -CONFIG_PLAT_VERSATILE_CLCD=y -CONFIG_PLAT_VERSATILE_SCHED_CLOCK=y -CONFIG_PLAT_VERSATILE=y -CONFIG_ARM_TIMER_SP804=y - -CONFIG_CPU_V7=y -CONFIG_CPU_32v6K=y -CONFIG_CPU_32v7=y -CONFIG_CPU_ABRT_EV7=y -CONFIG_CPU_PABRT_V7=y -CONFIG_CPU_CACHE_V7=y -CONFIG_CPU_CACHE_VIPT=y -CONFIG_CPU_COPY_V6=y -CONFIG_CPU_TLB_V7=y -CONFIG_CPU_HAS_ASID=y -CONFIG_CPU_CP15=y -CONFIG_CPU_CP15_MMU=y -CONFIG_CPU_HAS_PMU=y - -# Need to verify whether these are generic or vexpress specific -CONFIG_ARM_AMBA=y - -CONFIG_VFP=y -CONFIG_VFPv3=y - -CONFIG_CPUSETS=y -# CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11 is not set -# CONFIG_THUMB2_KERNEL is not set -CONFIG_TICK_ONESHOT=y - -CONFIG_ARM_ASM_UNIFIED=y -CONFIG_ARM_CPU_TOPOLOGY=y -CONFIG_ARM_DMA_MEM_BUFFERABLE=y - -CONFIG_ARM_ERRATA_720789=y -CONFIG_ARM_ERRATA_751472=y -CONFIG_ARM_ERRATA_753970=y - -CONFIG_ARM_GIC=y -CONFIG_ARM_L1_CACHE_SHIFT=5 - -CONFIG_ARM_THUMB=y -CONFIG_ARM_TIMER_SP804=y -CONFIG_ARM_UNWIND=y - -CONFIG_FB=y -CONFIG_FB_ARMCLCD=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_IMAGEBLIT=y - -CONFIG_TOUCHSCREEN_ADS7846=m - -CONFIG_CMDLINE="console=ttyAM0,115200 root=/dev/sda1 rootdelay=20" - -CONFIG_SERIO_AMBAKMI=m -CONFIG_SERIAL_AMBA_PL011=y -CONFIG_SERIAL_AMBA_PL011_CONSOLE=y - -CONFIG_FB_ARMCLCD=m - -CONFIG_MMC_ARMMMCI=y -CONFIG_MMC_DW=m -# CONFIG_MMC_DW_IDMAC is not set - -# CONFIG_ARM_CHARLCD is not set -CONFIG_PL330_DMA=y -CONFIG_RTC_DRV_PL030=y -CONFIG_RTC_DRV_PL031=y - -CONFIG_I2C_VERSATILE=m - -CONFIG_OC_ETM=y - -CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y -CONFIG_ARM_THUMBEE=y -CONFIG_SWP_EMULATE=y -# CONFIG_CPU_BPREDICT_DISABLE is not set -CONFIG_CACHE_L2X0=y -CONFIG_ARM_ERRATA_430973=y -CONFIG_ARM_ERRATA_458693=y -CONFIG_ARM_ERRATA_460075=y -CONFIG_PL310_ERRATA_588369=y -CONFIG_PL310_ERRATA_727915=y -CONFIG_ARM_ERRATA_743622=y -CONFIG_ARM_ERRATA_754322=y -CONFIG_PL310_ERRATA_769419=y -CONFIG_NEON=y -CONFIG_PATA_PLATFORM=m -CONFIG_PATA_OF_PLATFORM=m -# CONFIG_NET_VENDOR_BROADCOM is not set - diff --git a/freed-ora/current/master/config-armv7 b/freed-ora/current/master/config-armv7 index e7e8e6b6c..da8399a25 100644 --- a/freed-ora/current/master/config-armv7 +++ b/freed-ora/current/master/config-armv7 @@ -5,12 +5,18 @@ CONFIG_CPU_V7=y # CONFIG_ARCH_MULTI_V6 is not set CONFIG_ARCH_MULTI_V6_V7=y CONFIG_ARCH_MULTI_V7=y -CONFIG_ARCH_MVEBU=y +# This is V6 so we'll eventually support it in v5 unified kernels +# CONFIG_ARCH_BCM is not set CONFIG_ARCH_HIGHBANK=y +CONFIG_ARCH_MVEBU=y +# CONFIG_ARCH_MXC is not set CONFIG_ARCH_PICOXCELL=y CONFIG_ARCH_SOCFPGA=y +CONFIG_ARCH_SUNXI=y CONFIG_ARCH_VEXPRESS_CA9X4=y CONFIG_ARCH_VEXPRESS_DT=y +# not enabling first round +# CONFIG_ARCH_ZYNQ is not set CONFIG_MACH_ARMADA_370_XP=y CONFIG_MACH_ARMADA_370=y @@ -68,8 +74,9 @@ CONFIG_ARM_ERRATA_754322=y CONFIG_ARM_ERRATA_754327=y CONFIG_ARM_ERRATA_764369=y CONFIG_ARM_ERRATA_775420=y -CONFIG_PL310_ERRATA_588369=y -CONFIG_PL310_ERRATA_727915=y +# Disabled due to causing highbank to crash +# CONFIG_PL310_ERRATA_588369 is not set +# CONFIG_PL310_ERRATA_727915 is not set CONFIG_PL310_ERRATA_769419=y # generic that deviates from or should be merged into config-generic @@ -88,6 +95,7 @@ CONFIG_RCU_FANOUT_LEAF=16 CONFIG_CPU_IDLE=y # CONFIG_CPU_IDLE_GOV_LADDER is not set CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 CONFIG_LSM_MMAP_MIN_ADDR=32768 @@ -151,6 +159,8 @@ CONFIG_AMBA_PL08X=y CONFIG_ARM_SP805_WATCHDOG=m # highbank +CONFIG_CPU_IDLE_CALXEDA=y + CONFIG_EDAC_HIGHBANK_MC=m CONFIG_EDAC_HIGHBANK_L2=m @@ -159,10 +169,17 @@ CONFIG_OC_ETM=y CONFIG_SATA_HIGHBANK=m # versatile +CONFIG_FB=y CONFIG_FB_ARMCLCD=m +CONFIG_FB_CFB_COPYAREA=m +CONFIG_FB_CFB_FILLRECT=m +CONFIG_FB_CFB_IMAGEBLIT=m +CONFIG_TOUCHSCREEN_ADS7846=m + CONFIG_I2C_VERSATILE=m CONFIG_OC_ETM=y CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y +CONFIG_SENSORS_VEXPRESS=m # unknown and needs review CONFIG_ARM_AMBA=y @@ -174,9 +191,65 @@ CONFIG_CRYPTO_DEV_MV_CESA=m CONFIG_MV643XX_ETH=m CONFIG_I2C_MV64XXX=m CONFIG_PINCTRL_MVEBU=y +CONFIG_PINCTRL_ARMADA_370=y +CONFIG_PINCTRL_ARMADA_XP=y +CONFIG_PINCTRL_DOVE=y +CONFIG_EDAC_MV64X60=m +CONFIG_MVNETA=m +CONFIG_SATA_MV=m +CONFIG_MARVELL_PHY=m +CONFIG_RTC_DRV_S35390A=y + +# Allwinner a1x +# CONFIG_SUNXI_RFKILL=y +# CONFIG_SUNXI_NAND=y +# CONFIG_SUNXI_DBGREG=m +# CONFIG_WEMAC_SUN4I=y +# CONFIG_KEYBOARD_SUN4IKEYPAD=m +# CONFIG_KEYBOARD_SUN4I_KEYBOARD=m +# CONFIG_IR_SUN4I=m +# CONFIG_TOUCHSCREEN_SUN4I_TS=m +# CONFIG_SUN4I_G2D=y +# CONFIG_I2C_SUN4I=y +# CONFIG_DRM_MALI=m +# CONFIG_MALI=m +# CONFIG_FB_SUNXI=m +# CONFIG_FB_SUNXI_UMP=y +# CONFIG_FB_SUNXI_LCD=m +# CONFIG_FB_SUNXI_HDMI=m +# CONFIG_SOUND_SUN4I=y +# CONFIG_SND_SUN4I_SOC_CODEC=y +# CONFIG_SND_SUN4I_SOC_HDMIAUDIO=y +# CONFIG_SND_SUN4I_SOC_SPDIF=m +# CONFIG_SND_SUN4I_SOC_I2S_INTERFACE=m +# CONFIG_SND_SOC_I2C_AND_SPI=y +# CONFIG_USB_SW_SUN4I_HCD=y +# CONFIG_USB_SW_SUN4I_HCD0=y +# CONFIG_USB_SW_SUN4I_HCI=y +# CONFIG_USB_SW_SUN4I_EHCI0=y +# CONFIG_USB_SW_SUN4I_EHCI1=y +# CONFIG_USB_SW_SUN4I_OHCI0=y +# CONFIG_USB_SW_SUN4I_OHCI1=y +# CONFIG_USB_SW_SUN4I_USB=y +# CONFIG_USB_SW_SUN4I_USB_MANAGER=y +# CONFIG_MMC_SUNXI_POWER_CONTROL=y +# CONFIG_MMC_SUNXI=y +# CONFIG_RTC_DRV_SUN4I=y + +# imx +CONFIG_BACKLIGHT_PWM=m +# CONFIG_DRM_IMX is not set +# CONFIG_DRM_IMX_FB_HELPER=m +# CONFIG_DRM_IMX_PARALLEL_DISPLAY=m +# CONFIG_DRM_IMX_IPUV3_CORE=m +# CONFIG_DRM_IMX_IPUV3=m +# CONFIG_VIDEO_CODA is not set + +CONFIG_INPUT_PWM_BEEPER=m # exynos # CONFIG_DRM_EXYNOS is not set +# CONFIG_PINCTRL_EXYNOS5440 is not set # picoxcell CONFIG_CRYPTO_DEV_PICOXCELL=m @@ -184,10 +257,15 @@ CONFIG_CRYPTO_DEV_PICOXCELL=m # ST Ericsson # CONFIG_I2C_NOMADIK is not set +# OMAP +# CONFIG_SENSORS_LIS3_I2C is not set + # General ARM drivers # Device tree +CONFIG_DTC=y CONFIG_OF=y CONFIG_USE_OF=y +CONFIG_OF_DEVICE=y CONFIG_OF_IRQ=y CONFIG_ARM_ATAG_DTB_COMPAT=y CONFIG_ARM_APPENDED_DTB=y @@ -252,6 +330,7 @@ CONFIG_EDAC_LEGACY_SYSFS=y CONFIG_MPCORE_WATCHDOG=m # Multi function devices +CONFIG_MFD_CORE=m CONFIG_MFD_T7L66XB=y CONFIG_MFD_TC6387XB=y CONFIG_MFD_SYSCON=y @@ -274,6 +353,7 @@ CONFIG_GPIO_GENERIC_PLATFORM=m CONFIG_GPIO_EM=m CONFIG_GPIO_ADNP=m CONFIG_GPIO_MCP23S08=m +CONFIG_POWER_RESET_GPIO=y CONFIG_RFKILL_GPIO=m CONFIG_SERIAL_8250_EM=m CONFIG_INPUT_GP2A=m @@ -284,6 +364,9 @@ CONFIG_MDIO_BUS_MUX_MMIOREG=m CONFIG_MTD_OF_PARTS=y # CONFIG_MG_DISK is not set +# Framebuffers +CONFIG_FB_SSD1307=m + # Regulator drivers CONFIG_REGULATOR_FAN53555=m # Needs work/investigation @@ -329,6 +412,7 @@ CONFIG_PERF_EVENTS=y # CONFIG_VIDEO_DM6446_CCDC is not set # CONFIG_PANEL_TAAL is not set # CONFIG_IR_RX51 is not set +# CONFIG_DRM_OMAP is not set # CONFIG_GENERIC_CPUFREQ_CPU0 is not set # CONFIG_GPIO_TWL6040 is not set diff --git a/freed-ora/current/master/config-generic b/freed-ora/current/master/config-generic index f079eb084..a9afaa2de 100644 --- a/freed-ora/current/master/config-generic +++ b/freed-ora/current/master/config-generic @@ -4,6 +4,8 @@ CONFIG_MMU=y CONFIG_SMP=y CONFIG_HOTPLUG_CPU=y +# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set +# CONFIG_DEBUG_HOTPLUG_CPU0 is not set CONFIG_LOCALVERSION="" CONFIG_CROSS_COMPILE="" CONFIG_DEFAULT_HOSTNAME="(none)" @@ -52,6 +54,8 @@ CONFIG_IOSCHED_DEADLINE=y CONFIG_IOSCHED_CFQ=y CONFIG_CFQ_GROUP_IOSCHED=y CONFIG_DEFAULT_CFQ=y +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_NAMESPACES is not set CONFIG_PID_NS=y CONFIG_UTS_NS=y CONFIG_IPC_NS=y @@ -124,6 +128,7 @@ CONFIG_MMC_BLOCK_MINORS=8 CONFIG_MMC_BLOCK_BOUNCE=y CONFIG_MMC_SDHCI=m CONFIG_MMC_SDHCI_PCI=m +CONFIG_MMC_SDHCI_ACPI=m CONFIG_MMC_SDRICOH_CS=m CONFIG_MMC_TIFM_SD=m CONFIG_MMC_WBSD=m @@ -132,6 +137,7 @@ CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_CB710=m CONFIG_MMC_RICOH_MMC=y CONFIG_MMC_USHC=m +CONFIG_MMC_REALTEK_PCI=m CONFIG_MMC_VUB300=m CONFIG_CB710_CORE=m @@ -340,6 +346,7 @@ CONFIG_SCSI_SRP=m CONFIG_SCSI_SRP_ATTRS=m CONFIG_SCSI_TGT=m CONFIG_SCSI_ISCI=m +CONFIG_SCSI_CHELSIO_FCOE=m CONFIG_SCSI_DH=y CONFIG_SCSI_DH_RDAC=m @@ -416,6 +423,9 @@ CONFIG_SCSI_MVSAS_TASKLET=y CONFIG_SCSI_MPT2SAS=m CONFIG_SCSI_MPT2SAS_MAX_SGE=128 CONFIG_SCSI_MPT2SAS_LOGGING=y +CONFIG_SCSI_MPT3SAS=m +CONFIG_SCSI_MPT3SAS_MAX_SGE=128 +CONFIG_SCSI_MPT3SAS_LOGGING=y CONFIG_SCSI_UFSHCD=m @@ -607,6 +617,7 @@ CONFIG_FIREWIRE_SBP2=m CONFIG_FIREWIRE_NET=m CONFIG_FIREWIRE_OHCI_DEBUG=y CONFIG_FIREWIRE_NOSY=m +CONFIG_FIREWIRE_SERIAL=m # CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set # @@ -977,9 +988,11 @@ CONFIG_IP_SCTP=m CONFIG_NET_SCTPPROBE=m # CONFIG_SCTP_DBG_MSG is not set # CONFIG_SCTP_DBG_OBJCNT is not set -# CONFIG_SCTP_HMAC_NONE is not set -CONFIG_SCTP_HMAC_SHA1=y -# CONFIG_SCTP_HMAC_MD5 is not set +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set +CONFIG_SCTP_COOKIE_HMAC_MD5=y +CONFIG_SCTP_COOKIE_HMAC_SHA1=y CONFIG_ATM=m CONFIG_VLAN_8021Q=m CONFIG_VLAN_8021Q_GVRP=y @@ -1077,6 +1090,7 @@ CONFIG_DCB=y CONFIG_DNS_RESOLVER=m CONFIG_BATMAN_ADV=m CONFIG_BATMAN_ADV_BLA=y +CONFIG_BATMAN_ADV_DAT=y # CONFIG_BATMAN_ADV_DEBUG is not set CONFIG_OPENVSWITCH=m CONFIG_NETPRIO_CGROUP=m @@ -1187,6 +1201,9 @@ CONFIG_ATL2=m CONFIG_ATL1=m CONFIG_ATL1C=m CONFIG_ATL1E=m +CONFIG_NET_CADENCE=y +CONFIG_ARM_AT91_ETHER=m +CONFIG_MACB=m CONFIG_NET_VENDOR_BROCADE=y CONFIG_BNA=m @@ -1257,6 +1274,7 @@ CONFIG_IXGBE_PTP=y # CONFIG_NET_VENDOR_I825XX is not set CONFIG_NET_VENDOR_MARVELL=y +CONFIG_MVMDIO=m CONFIG_SKGE=m # CONFIG_SKGE_DEBUG is not set CONFIG_SKGE_GENESIS=y @@ -1483,6 +1501,7 @@ CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 # CONFIG_ADM8211 is not set CONFIG_ATH_COMMON=m +CONFIG_ATH_CARDS=m CONFIG_ATH5K=m CONFIG_ATH5K_DEBUG=y # CONFIG_ATH5K_TRACER is not set @@ -1490,6 +1509,7 @@ CONFIG_ATH6KL=m CONFIG_ATH6KL_DEBUG=y CONFIG_ATH6KL_SDIO=m CONFIG_ATH6KL_USB=m +CONFIG_AR5523=m CONFIG_ATH9K=m CONFIG_ATH9K_PCI=y CONFIG_ATH9K_AHB=y @@ -1500,6 +1520,8 @@ CONFIG_ATH9K_HTC=m CONFIG_ATH9K_BTCOEX_SUPPORT=y # CONFIG_ATH9K_HTC_DEBUGFS is not set CONFIG_ATH9K_RATE_CONTROL=y +CONFIG_WIL6210=m +CONFIG_WIL6210_ISR_COR=y CONFIG_CARL9170=m CONFIG_CARL9170_LEDS=y # CONFIG_CARL9170_HWRNG is not set @@ -1513,13 +1535,13 @@ CONFIG_B43_SDIO=y CONFIG_B43_BCMA=y # CONFIG_B43_BCMA_EXTRA is not set CONFIG_B43_BCMA_PIO=y -CONFIG_B43_DEBUG=y +# CONFIG_B43_DEBUG is not set CONFIG_B43_PHY_LP=y CONFIG_B43_PHY_N=y CONFIG_B43_PHY_HT=y # CONFIG_B43_FORCE_PIO is not set CONFIG_B43LEGACY=m -CONFIG_B43LEGACY_DEBUG=y +# CONFIG_B43LEGACY_DEBUG is not set CONFIG_B43LEGACY_DMA=y CONFIG_B43LEGACY_PIO=y CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y @@ -1530,9 +1552,19 @@ CONFIG_BRCMFMAC=m CONFIG_BRCMFMAC_SDIO=y CONFIG_BRCMFMAC_SDIO_OOB=y CONFIG_BRCMFMAC_USB=y +# CONFIG_BRCM_TRACING is not set # CONFIG_BRCMISCAN is not set # CONFIG_BRCMDBG is not set -# CONFIG_HERMES is not set +CONFIG_HERMES=m +CONFIG_HERMES_CACHE_FW_ON_INIT=y +# CONFIG_HERMES_PRISM is not set +CONFIG_NORTEL_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_PLX_HERMES=m +CONFIG_PCMCIA_HERMES=m +CONFIG_ORINOCO_USB=m +# CONFIG_TMD_HERMES is not set +# CONFIG_PCMCIA_SPECTRUM is not set # CONFIG_HOSTAP is not set # CONFIG_IPW2100 is not set # CONFIG_IPW2200 is not set @@ -1613,6 +1645,7 @@ CONFIG_RTL8192CE=m CONFIG_RTL8192SE=m CONFIG_RTL8192CU=m CONFIG_RTL8192DE=m +CONFIG_RTL8723AE=m CONFIG_MWIFIEX=m CONFIG_MWIFIEX_SDIO=m @@ -1923,6 +1956,7 @@ CONFIG_SERIO_SERPORT=y CONFIG_SERIO_RAW=m CONFIG_SERIO_ALTERA_PS2=m # CONFIG_SERIO_PS2MULT is not set +CONFIG_SERIO_ARC_PS2=m # CONFIG_SERIO_CT82C710 is not set # CONFIG_SERIO_PARKBD is not set @@ -2034,9 +2068,12 @@ CONFIG_TOUCHSCREEN_W90X900=m CONFIG_TOUCHSCREEN_ST1232=m CONFIG_TOUCHSCREEN_ATMEL_MXT=m # CONFIG_TOUCHSCREEN_MAX11801 is not set +CONFIG_TOUCHSCREEN_AUO_PIXCIR=m +CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m CONFIG_INPUT_MISC=y CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_RETU_PWRBUTTON=m CONFIG_INPUT_UINPUT=m CONFIG_INPUT_WISTRON_BTNS=m CONFIG_INPUT_ATLAS_BTNS=m @@ -2160,6 +2197,8 @@ CONFIG_I2C_ALGOPCA=m # CONFIG_I2C_NFORCE2_S4985 is not set # CONFIG_I2C_INTEL_MID is not set # CONFIG_I2C_EG20T is not set +# CONFIG_I2C_CBUS_GPIO is not set +CONFIG_I2C_VIPERBOARD=m CONFIG_EEPROM_AT24=m CONFIG_EEPROM_LEGACY=m @@ -2330,6 +2369,8 @@ CONFIG_SENSORS_MAX197=m # CONFIG_PCH_PHUB is not set # CONFIG_SERIAL_PCH_UART is not set # CONFIG_USB_SWITCH_FSA9480 is not set +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_ARC_NR_PORTS=1 CONFIG_W1=m CONFIG_W1_CON=y @@ -2442,6 +2483,7 @@ CONFIG_RTC_DRV_RS5C372=m # CONFIG_RTC_DRV_SA1100 is not set # CONFIG_RTC_DRV_TEST is not set CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF8523=m CONFIG_RTC_DRV_V3020=m CONFIG_RTC_DRV_DS2404=m CONFIG_RTC_DRV_STK17TA8=m @@ -2510,7 +2552,7 @@ CONFIG_DRM_I2C_CH7006=m CONFIG_DRM_I2C_SIL164=m CONFIG_DRM_UDL=m CONFIG_DRM_VMWGFX=m -# CONFIG_DRM_VMWGFX_FBCON is not set +CONFIG_DRM_VMWGFX_FBCON=y CONFIG_DRM_VGEM=m # @@ -2662,6 +2704,7 @@ CONFIG_DVB_BT8XX=m CONFIG_DVB_BUDGET_CORE=m CONFIG_DVB_PLUTO2=m CONFIG_SMS_SIANO_MDTV=m +CONFIG_SMS_SIANO_RC=y CONFIG_MEDIA_SUBDRV_AUTOSELECT=y CONFIG_SMS_USB_DRV=m CONFIG_SMS_SDIO_DRV=m @@ -2680,7 +2723,7 @@ CONFIG_DVB_FIREDTV=m CONFIG_DVB_NGENE=m CONFIG_DVB_DDBRIDGE=m CONFIG_DVB_USB_TECHNISAT_USB2=m -# CONFIG_DVB_USB_V2 is not set +CONFIG_DVB_USB_V2=m CONFIG_DVB_AV7110=m CONFIG_DVB_AV7110_OSD=y @@ -3036,6 +3079,7 @@ CONFIG_SND_USB_6FIRE=m CONFIG_SND_FIREWIRE=y CONFIG_SND_FIREWIRE_SPEAKERS=m CONFIG_SND_ISIGHT=m +CONFIG_SND_SCS1X=m # # Open Sound System @@ -3112,7 +3156,7 @@ CONFIG_USB_STORAGE_REALTEK=m CONFIG_REALTEK_AUTOPM=y CONFIG_USB_STORAGE_ENE_UB6250=m # CONFIG_USB_LIBUSUAL is not set -CONFIG_USB_UAS=m +# CONFIG_USB_UAS is not set # @@ -3123,6 +3167,7 @@ CONFIG_USB_HID=y CONFIG_HID_SUPPORT=y CONFIG_HID=y +CONFIG_I2C_HID=m CONFIG_HID_BATTERY_STRENGTH=y # debugging default is y upstream now CONFIG_HIDRAW=y @@ -3153,6 +3198,7 @@ CONFIG_HID_PS3REMOTE=m CONFIG_HID_PRODIKEYS=m CONFIG_HID_DRAGONRISE=m CONFIG_HID_GYRATION=m +CONFIG_HID_ICADE=m CONFIG_HID_TWINHAN=m CONFIG_HID_ORTEK=m CONFIG_HID_PANTHERLORD=m @@ -3284,6 +3330,7 @@ CONFIG_USB_NET_RNDIS_HOST=m CONFIG_USB_NET_CDC_SUBSET=m CONFIG_USB_NET_CDC_EEM=m CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m CONFIG_USB_NET_ZAURUS=m CONFIG_USB_NET_CX82310_ETH=m CONFIG_USB_NET_INT51X1=m @@ -3403,6 +3450,7 @@ CONFIG_USB_SEVSEG=m CONFIG_USB_ALI_M5632=y CONFIG_USB_APPLEDISPLAY=m # CONFIG_OMAP_USB2 is not set +CONFIG_USB_RCAR_PHY=m CONFIG_USB_ATM=m CONFIG_USB_CXACRU=m # CONFIG_USB_C67X00_HCD is not set @@ -3463,6 +3511,7 @@ CONFIG_SSB_PCMCIAHOST=y # CONFIG_SSB_SILENT is not set # CONFIG_SSB_DEBUG is not set CONFIG_SSB_DRIVER_PCICORE=y +CONFIG_SSB_DRIVER_GPIO=y # Multifunction USB devices # CONFIG_MFD_PCF50633 is not set @@ -3479,6 +3528,10 @@ CONFIG_MFD_SUPPORT=y CONFIG_MFD_VX855=m CONFIG_MFD_SM501=m CONFIG_MFD_SM501_GPIO=y +CONFIG_MFD_RTSX_PCI=m +# CONFIG_MFD_TI_AM335X_TSCADC is not set +CONFIG_MFD_VIPERBOARD=m +# CONFIG_MFD_RETU is not set # CONFIG_MFD_TC6393XB is not set # CONFIG_MFD_WM8400 is not set # CONFIG_MFD_WM8350_I2C is not set @@ -3640,6 +3693,7 @@ CONFIG_9P_FS_POSIX_ACL=y CONFIG_FUSE_FS=m # CONFIG_OMFS_FS is not set CONFIG_CUSE=m +# CONFIG_F2FS_FS is not set # # Network File Systems @@ -3679,6 +3733,7 @@ CONFIG_CIFS_POSIX=y CONFIG_CIFS_FSCACHE=y CONFIG_CIFS_ACL=y CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_DEBUG=y # CONFIG_CIFS_DEBUG2 is not set CONFIG_CIFS_DFS_UPCALL=y CONFIG_CIFS_NFSD_EXPORT=y @@ -4061,6 +4116,11 @@ CONFIG_KEXEC=y CONFIG_HWMON=y # CONFIG_HWMON_DEBUG_CHIP is not set CONFIG_THERMAL_HWMON=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +CONFIG_FAIR_SHARE=y +CONFIG_STEP_WISE=y +# CONFIG_USER_SPACE is not set # CONFIG_CPU_THERMAL is not set CONFIG_INOTIFY=y @@ -4078,7 +4138,7 @@ CONFIG_IBMASR=m CONFIG_PM_DEBUG=y CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y -CONFIG_PM_TEST_SUSPEND=y +# CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_RUNTIME=y # CONFIG_PM_OPP is not set # CONFIG_PM_AUTOSLEEP is not set @@ -4137,6 +4197,7 @@ CONFIG_SND_INDIGOIOX=m CONFIG_SND_INDIGODJX=m # CONFIG_SND_SOC is not set +CONFIG_BALLOON_COMPACTION=y CONFIG_COMPACTION=y CONFIG_MIGRATION=y CONFIG_NEW_LEDS=y @@ -4248,6 +4309,8 @@ CONFIG_APM_POWER=m # CONFIG_CHARGER_LP8727 is not set # CONFIG_CHARGER_GPIO is not set # CONFIG_CHARGER_PCF50633 is not set +# CONFIG_CHARGER_BQ2415X is not set +CONFIG_POWER_RESET=y # CONFIG_PDA_POWER is not set @@ -4257,6 +4320,7 @@ CONFIG_UIO=m CONFIG_UIO_CIF=m # CONFIG_UIO_PDRV is not set # CONFIG_UIO_PDRV_GENIRQ is not set +# CONFIG_UIO_DMEM_GENIRQ is not set CONFIG_UIO_AEC=m CONFIG_UIO_SERCOS3=m CONFIG_UIO_PCI_GENERIC=m @@ -4291,6 +4355,8 @@ CONFIG_NOZOMI=m # CONFIG_TPS65010 is not set CONFIG_INPUT_APANEL=m +CONFIG_INPUT_GP2A=m +# CONFIG_INPUT_GPIO_TILT_POLLED is not set # CONFIG_INTEL_MENLOW is not set CONFIG_ENCLOSURE_SERVICES=m @@ -4304,6 +4370,7 @@ CONFIG_MSPRO_BLOCK=m CONFIG_MEMSTICK_TIFM_MS=m CONFIG_MEMSTICK_JMICRON_38X=m CONFIG_MEMSTICK_R592=m +CONFIG_MEMSTICK_REALTEK_PCI=m CONFIG_ACCESSIBILITY=y CONFIG_A11Y_BRAILLE_CONSOLE=y @@ -4424,6 +4491,7 @@ CONFIG_ALTERA_STAPL=m # CONFIG_BPCTL is not set # CONFIG_CED1401 is not set # CONFIG_DGRP is not set +# CONFIG_SB105X is not set # END OF STAGING # @@ -4451,8 +4519,9 @@ CONFIG_LSM_MMAP_MIN_ADDR=65536 CONFIG_STRIP_ASM_SYMS=y # CONFIG_RCU_FANOUT_EXACT is not set -# FIXME: Revisit FAST_NO_HZ after 3.5 -# CONFIG_RCU_FAST_NO_HZ is not set +# FIXME: Revisit FAST_NO_HZ after it's fixed +# CONFIG_RCU_FAST_NO_HZ is not setA +# CONFIG_RCU_NOCB_CPU is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 # CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_TRACE is not set @@ -4509,6 +4578,9 @@ CONFIG_GPIO_SYSFS=y # CONFIG_GPIO_CS5535 is not set # CONFIG_GPIO_ADP5588 is not set # CONFIG_GPIO_IT8761E is not set +# CONFIG SB105x is not set +# CONFIG_GPIO_TS5500 is not set +CONFIG_GPIO_VIPERBOARD=m # CONFIG_GPIO_MAX7300 is not set # CONFIG_UCB1400_CORE is not set # CONFIG_TPS6105X is not set @@ -4560,6 +4632,7 @@ CONFIG_BCMA_BLOCKIO=y CONFIG_BCMA_HOST_PCI_POSSIBLE=y CONFIG_BCMA_HOST_PCI=y CONFIG_BCMA_DRIVER_GMAC_CMN=y +CONFIG_BCMA_DRIVER_GPIO=y # CONFIG_BCMA_DEBUG is not set # CONFIG_GOOGLE_FIRMWARE is not set diff --git a/freed-ora/current/master/config-nodebug b/freed-ora/current/master/config-nodebug index b52b784e9..6b8b48fc6 100644 --- a/freed-ora/current/master/config-nodebug +++ b/freed-ora/current/master/config-nodebug @@ -4,109 +4,109 @@ CONFIG_SND_PCM_XRUN_DEBUG=y CONFIG_DEBUG_ATOMIC_SLEEP=y -CONFIG_DEBUG_MUTEXES=y -CONFIG_DEBUG_RT_MUTEXES=y -CONFIG_DEBUG_LOCK_ALLOC=y +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set CONFIG_PROVE_LOCKING=y CONFIG_DEBUG_SPINLOCK=y CONFIG_PROVE_RCU=y # CONFIG_PROVE_RCU_REPEATEDLY is not set -CONFIG_DEBUG_PER_CPU_MAPS=y +# CONFIG_DEBUG_PER_CPU_MAPS is not set CONFIG_CPUMASK_OFFSTACK=y -CONFIG_CPU_NOTIFIER_ERROR_INJECT=m +# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set -CONFIG_FAULT_INJECTION=y -CONFIG_FAILSLAB=y -CONFIG_FAIL_PAGE_ALLOC=y -CONFIG_FAIL_MAKE_REQUEST=y -CONFIG_FAULT_INJECTION_DEBUG_FS=y -CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y -CONFIG_FAIL_IO_TIMEOUT=y -CONFIG_FAIL_MMC_REQUEST=y +# CONFIG_FAULT_INJECTION is not set +# CONFIG_FAILSLAB is not set +# CONFIG_FAIL_PAGE_ALLOC is not set +# CONFIG_FAIL_MAKE_REQUEST is not set +# CONFIG_FAULT_INJECTION_DEBUG_FS is not set +# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set +# CONFIG_FAIL_IO_TIMEOUT is not set +# CONFIG_FAIL_MMC_REQUEST is not set CONFIG_SLUB_DEBUG_ON=y -CONFIG_LOCK_STAT=y +# CONFIG_LOCK_STAT is not set CONFIG_DEBUG_STACK_USAGE=y -CONFIG_ACPI_DEBUG=y +# CONFIG_ACPI_DEBUG is not set # CONFIG_ACPI_DEBUG_FUNC_TRACE is not set -CONFIG_DEBUG_SG=y +# CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_PAGEALLOC is not set -CONFIG_DEBUG_WRITECOUNT=y -CONFIG_DEBUG_OBJECTS=y +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_OBJECTS is not set # CONFIG_DEBUG_OBJECTS_SELFTEST is not set -CONFIG_DEBUG_OBJECTS_FREE=y -CONFIG_DEBUG_OBJECTS_TIMERS=y -CONFIG_DEBUG_OBJECTS_RCU_HEAD=y +# CONFIG_DEBUG_OBJECTS_FREE is not set +# CONFIG_DEBUG_OBJECTS_TIMERS is not set +# CONFIG_DEBUG_OBJECTS_RCU_HEAD is not set CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1 -CONFIG_X86_PTDUMP=y +# CONFIG_X86_PTDUMP is not set -CONFIG_CAN_DEBUG_DEVICES=y +# CONFIG_CAN_DEBUG_DEVICES is not set -CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set -CONFIG_SYSCTL_SYSCALL_CHECK=y +# CONFIG_SYSCTL_SYSCALL_CHECK is not set -CONFIG_DEBUG_NOTIFIERS=y +# CONFIG_DEBUG_NOTIFIERS is not set CONFIG_DMA_API_DEBUG=y -CONFIG_MMIOTRACE=y +# CONFIG_MMIOTRACE is not set -CONFIG_DEBUG_CREDENTIALS=y +# CONFIG_DEBUG_CREDENTIALS is not set # off in both production debug and nodebug builds, # on in rawhide nodebug builds -CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set CONFIG_EXT4_DEBUG=y -CONFIG_DEBUG_PERF_USE_VMALLOC=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set -CONFIG_JBD2_DEBUG=y +# CONFIG_JBD2_DEBUG is not set -CONFIG_NFSD_FAULT_INJECTION=y +# CONFIG_NFSD_FAULT_INJECTION is not set -CONFIG_DEBUG_BLK_CGROUP=y +# CONFIG_DEBUG_BLK_CGROUP is not set -CONFIG_DRBD_FAULT_INJECTION=y +# CONFIG_DRBD_FAULT_INJECTION is not set -CONFIG_ATH_DEBUG=y -CONFIG_CARL9170_DEBUGFS=y -CONFIG_IWLWIFI_DEVICE_TRACING=y +# CONFIG_ATH_DEBUG is not set +# CONFIG_CARL9170_DEBUGFS is not set +# CONFIG_IWLWIFI_DEVICE_TRACING is not set -CONFIG_DEBUG_OBJECTS_WORK=y +# CONFIG_DEBUG_OBJECTS_WORK is not set -CONFIG_DMADEVICES_DEBUG=y -CONFIG_DMADEVICES_VDEBUG=y +# CONFIG_DMADEVICES_DEBUG is not set +# CONFIG_DMADEVICES_VDEBUG is not set CONFIG_PM_ADVANCED_DEBUG=y -CONFIG_CEPH_LIB_PRETTYDEBUG=y -CONFIG_QUOTA_DEBUG=y +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +# CONFIG_QUOTA_DEBUG is not set CONFIG_PCI_DEFAULT_USE_CRS=y CONFIG_KGDB_KDB=y CONFIG_KDB_KEYBOARD=y -CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y -CONFIG_TEST_LIST_SORT=y +# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set +# CONFIG_TEST_LIST_SORT is not set CONFIG_DETECT_HUNG_TASK=y CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set -CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set -CONFIG_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=1024 # CONFIG_DEBUG_KMEMLEAK_TEST is not set CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y diff --git a/freed-ora/current/master/config-powerpc-generic b/freed-ora/current/master/config-powerpc-generic index a6ef1c4df..3923eff84 100644 --- a/freed-ora/current/master/config-powerpc-generic +++ b/freed-ora/current/master/config-powerpc-generic @@ -380,3 +380,8 @@ CONFIG_RCU_FANOUT_LEAF=16 # CONFIG_RTC_DRV_SNVS is not set # CONFIG_ASYMMETRIC_KEY_TYPE is not set +CONFIG_POWER_RESET_GPIO=y +CONFIG_FB_SSD1307=m +CONFIG_INPUT_PWM_BEEPER=m +CONFIG_BACKLIGHT_PWM=m +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=n diff --git a/freed-ora/current/master/config-s390x b/freed-ora/current/master/config-s390x index 41e41c53c..c1a616f77 100644 --- a/freed-ora/current/master/config-s390x +++ b/freed-ora/current/master/config-s390x @@ -250,3 +250,12 @@ CONFIG_BPF_JIT=y # CONFIG_SCM_BLOCK_CLUSTER_WRITE is not set # CONFIG_S390_PTDUMP is not set # CONFIG_ASYMMETRIC_KEY_TYPE is not set +CONFIG_PCI_NR_FUNCTIONS=64 +CONFIG_HOTPLUG_PCI=m +# CONFIG_HOTPLUG_PCI_CPCI is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set +CONFIG_HOTPLUG_PCI_S390=m +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +# CONFIG_SGI_IOC4 is not set +# CONFIG_GPIO_GENERIC_PLATFORM is not set +# CONFIG_GPIO_MCP23S08 is not set diff --git a/freed-ora/current/master/config-sparc64-generic b/freed-ora/current/master/config-sparc64-generic deleted file mode 100644 index e15e2ef18..000000000 --- a/freed-ora/current/master/config-sparc64-generic +++ /dev/null @@ -1,217 +0,0 @@ -CONFIG_SMP=y -CONFIG_SPARC=y -CONFIG_SPARC64=y -CONFIG_SECCOMP=y -CONFIG_HZ_100=y -# CONFIG_HZ_1000 is not set -CONFIG_HZ=100 - -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y - -CONFIG_US3_FREQ=m -CONFIG_US2E_FREQ=m - -CONFIG_SUN_LDOMS=y -CONFIG_SCHED_SMT=y -CONFIG_SCHED_MC=y -CONFIG_64BIT=y -# CONFIG_BBC_I2C is not set -CONFIG_HUGETLB_PAGE_SIZE_4MB=y -# CONFIG_HUGETLB_PAGE_SIZE_512K is not set -# CONFIG_HUGETLB_PAGE_SIZE_64K is not set -CONFIG_NR_CPUS=256 -CONFIG_US3_FREQ=m -CONFIG_US2E_FREQ=m -CONFIG_SUN_OPENPROMFS=m -CONFIG_COMPAT=y -CONFIG_UID16=y -CONFIG_BINFMT_ELF32=y -CONFIG_ENVCTRL=m -CONFIG_DISPLAY7SEG=m -CONFIG_WATCHDOG_CP1XXX=m -CONFIG_WATCHDOG_RIO=m -# CONFIG_CMDLINE_BOOL is not set -# CONFIG_PREVENT_FIRMWARE_BUILD is not set -# CONFIG_PARPORT is not set -# CONFIG_BLK_DEV_FD is not set -# CONFIG_LIRC_PARALLEL is not set -# CONFIG_I2C_NFORCE2 is not set -# CONFIG_I2C_PARPORT_LIGHT is not set -# CONFIG_I2C_SIMTEC is not set -CONFIG_I2C_ALI1535=m -# CONFIG_VGASTATE is not set -# CONFIG_FB_DDC is not set -# CONFIG_FB_BW2 is not set -# CONFIG_FB_GRVGA is not set -CONFIG_FB_CG3=y -CONFIG_FB_CG6=y -# CONFIG_FB_RIVA is not set -# CONFIG_FB_MATROX is not set -# CONFIG_FB_RADEON is not set -CONFIG_FB_ATY=y -# CONFIG_FB_S3 is not set -# CONFIG_FB_SAVAGE is not set -# CONFIG_FB_SIS is not set -# CONFIG_FB_NEOMAGIC is not set -# CONFIG_FB_3DFX is not set -# CONFIG_FB_VOODOO1 is not set -# CONFIG_FB_TRIDENT is not set -CONFIG_FB_SBUS=y -CONFIG_FB_FFB=y -# CONFIG_FB_TCX is not set -# CONFIG_FB_CG14 is not set -CONFIG_FB_PM2=y -CONFIG_FB_P9100=y -# CONFIG_FB_LEO is not set -CONFIG_FB_XVR500=y -CONFIG_FB_XVR2500=y -# CONFIG_VGASTATE is not set -# CONFIG_FB_DDC is not set -# CONFIG_FB_CIRRUS is not set -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_KYRO is not set -# CONFIG_AGP is not set -# CONFIG_DRM_NOUVEAU is not set -# CONFIG_MDA_CONSOLE is not set -CONFIG_FONTS=y -# CONFIG_FONT_8x8 is not set -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_7x14 is not set -# CONFIG_FONT_10x18 is not set -# CONFIG_FONT_6x11 is not set -# CONFIG_FONT_SUN12x22 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set -CONFIG_FONT_SUN8x16=y -CONFIG_FONT_SUN12x22=y -# CONFIG_LOGO_LINUX_CLUT224 is not set -# CONFIG_SERIAL_8250 is not set -CONFIG_SERIAL_SUNZILOG=y -CONFIG_SERIAL_SUNZILOG_CONSOLE=y -CONFIG_SERIAL_SUNSU=y -CONFIG_SERIAL_SUNSU_CONSOLE=y -CONFIG_SERIAL_SUNSAB=y -CONFIG_SERIAL_SUNSAB_CONSOLE=y -CONFIG_SERIAL_SUNHV=y -CONFIG_SUN_OPENPROMIO=y -CONFIG_OBP_FLASH=m -# CONFIG_SERIO_SERPORT is not set -CONFIG_BLK_DEV_FD=y -CONFIG_SUNVDC=m -CONFIG_SUNVNET=m -# CONFIG_BLK_DEV_AEC62XX is not set -# CONFIG_BLK_DEV_HPT366 is not set -# CONFIG_BLK_DEV_PDC202XX_OLD is not set -# CONFIG_BLK_DEV_PDC202XX_NEW is not set -# CONFIG_BLK_DEV_SIIMAGE is not set -# CONFIG_BLK_DEV_SLC90E66 is not set -# CONFIG_BLK_DEV_VIA82CXXX is not set -# CONFIG_SCSI_ADVANSYS is not set -# CONFIG_SCSI_BUSLOGIC is not set -# CONFIG_SCSI_EATA is not set -# CONFIG_SCSI_GDTH is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_SCSI_FUTURE_DOMAIN is not set -CONFIG_SCSI_QLOGICPTI=m -CONFIG_SCSI_SUNESP=m -CONFIG_SUNLANCE=m -CONFIG_SUNBMAC=m -CONFIG_SUNQE=m -# CONFIG_DM9102 is not set -# CONFIG_HAMACHI is not set -# CONFIG_R8169 is not set -CONFIG_ATM_FORE200E_USE_TASKLET=y -CONFIG_ATM_FORE200E_DEBUG=0 -CONFIG_ATM_FORE200E_TX_RETRY=16 -# CONFIG_DRM_TDFX is not set -CONFIG_KEYBOARD_ATKBD=y -CONFIG_KEYBOARD_SUNKBD=y -# CONFIG_INPUT_PCSPKR is not set -CONFIG_INPUT_SPARCSPKR=m -# CONFIG_SOUND_PRIME is not set -# CONFIG_SND_SUN_AMD7930 is not set -CONFIG_SND_SUN_CS4231=m -# CONFIG_SND_SUN_DBRI is not set -CONFIG_PARPORT_SUNBPP=m -CONFIG_LOGO_SUN_CLUT224=y -CONFIG_MTD_SUN_UFLASH=m -CONFIG_MYRI_SBUS=m -# CONFIG_SGI_IOC4 is not set -# CONFIG_VIDEO_ZORAN is not set -# CONFIG_VIDEO_STRADIS is not set -# CONFIG_IEEE1394_SBP2 is not set -# CONFIG_USB_NET2280 is not set -# CONFIG_DEBUG_BUGVERBOSE is not set -# CONFIG_DEBUG_DCFLUSH is not set -# CONFIG_DEBUG_BOOTMEM is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set -# CONFIG_PROVE_LOCKING is not set -# CONFIG_LOCK_STAT is not set -# CONFIG_LOCKDEP is not set -# CONFIG_STACK_DEBUG is not set - -CONFIG_SPARSEMEM_VMEMMAP=y - -# CONFIG_THERMAL is not set - -CONFIG_FRAME_WARN=2048 - -CONFIG_NUMA=y - -CONFIG_SND_SPARC=y - -CONFIG_HW_RANDOM_N2RNG=m - -# drivers/isdn/hardware/mISDN/hfcmulti.c:5255:2: error: #error "not running on big endian machines now" -# CONFIG_MISDN_HFCMULTI is not set - -CONFIG_US3_MC=y -CONFIG_SENSORS_ULTRA45=m -CONFIG_LEDS_SUNFIRE=m -CONFIG_TADPOLE_TS102_UCTRL=m - -CONFIG_RCU_FANOUT=64 -CONFIG_RCU_FANOUT_LEAF=16 - -CONFIG_LIRC_ENE0100=m -# CONFIG_BATTERY_DS2782 is not set -CONFIG_USB_GSPCA_SN9C20X=m -CONFIG_USB_GSPCA_SN9C20X_EVDEV=y -CONFIG_LSM_MMAP_MIN_ADDR=65536 - -CONFIG_PERF_COUNTERS=y -CONFIG_PERF_EVENTS=y -CONFIG_EVENT_PROFILE=y - -CONFIG_EARLYFB=y -CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m - -CONFIG_GRETH=m -CONFIG_FB_XVR1000=y - -CONFIG_CRYPTO_DEV_NIAGARA2=y - -# CONFIG_MTD_OF_PARTS is not set -# CONFIG_MTD_PHYSMAP_OF is not set -# CONFIG_MMC_SDHCI_OF is not set -# CONFIG_OF_SELFTEST is not set - -CONFIG_BPF_JIT=y -# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set -# CONFIG_IRQ_DOMAIN_DEBUG is not set - -# CONFIG_MDIO_BUS_MUX_MMIOREG is not set -# CONFIG_MFD_SYSCON is not set -# CONFIG_RTC_DRV_SNVS is not set -# CONFIG_CRYPTO_CRC32C_SPARC64 is not set -# CONFIG_CRYPTO_MD5_SPARC64 is not set -# CONFIG_CRYPTO_SHA1_SPARC64 is not set -# CONFIG_CRYPTO_SHA256_SPARC64 is not set -# CONFIG_CRYPTO_SHA512_SPARC64 is not set -# CONFIG_CRYPTO_AES_SPARC64 is not set -# CONFIG_CRYPTO_CAMELLIA_SPARC64 is not set -# CONFIG_CRYPTO_DES_SPARC64 is not set -# CONFIG_ASYMMETRIC_KEY_TYPE is not set - diff --git a/freed-ora/current/master/config-x86-32-generic b/freed-ora/current/master/config-x86-32-generic index 1216d47e6..0e9b3f4be 100644 --- a/freed-ora/current/master/config-x86-32-generic +++ b/freed-ora/current/master/config-x86-32-generic @@ -53,6 +53,8 @@ CONFIG_FB_GEODE_LX=y CONFIG_FB_GEODE_GX=y # CONFIG_FB_GEODE_GX1 is not set +CONFIG_FB_SSD1307=m + # CONFIG_PCI_GOBIOS is not set # CONFIG_PCI_GODIRECT is not set # CONFIG_PCI_GOMMCONFIG is not set @@ -94,6 +96,8 @@ CONFIG_X86_TRAMPOLINE=y CONFIG_PCI_DIRECT=y +# CONFIG_TRANSPARENT_HUGEPAGE is not set + # SHPC has half-arsed PCI probing, which makes it load on too many systems # CONFIG_HOTPLUG_PCI_SHPC is not set @@ -179,6 +183,9 @@ CONFIG_XO1_RFKILL=m CONFIG_X86_32_IRIS=m +CONFIG_POWER_RESET_GPIO=y + + CONFIG_MTD_OF_PARTS=y CONFIG_MTD_PHYSMAP_OF=m @@ -202,6 +209,9 @@ CONFIG_I2O_EXT_ADAPTEC=y CONFIG_I2O_CONFIG_OLD_IOCTL=y CONFIG_I2O_BUS=m +CONFIG_INPUT_PWM_BEEPER=m +CONFIG_BACKLIGHT_PWM=m + # CONFIG_EDAC_SBRIDGE is not set # CONFIG_X86_WANT_INTEL_MID is not set diff --git a/freed-ora/current/master/config-x86-generic b/freed-ora/current/master/config-x86-generic index 1716194e5..e8335a2f0 100644 --- a/freed-ora/current/master/config-x86-generic +++ b/freed-ora/current/master/config-x86-generic @@ -78,6 +78,7 @@ CONFIG_ACPI_SLEEP=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_TOSHIBA=m CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y # FIXME: Next two are deprecated. Remove them when they disappear upstream # CONFIG_ACPI_PROCFS_POWER is not set # CONFIG_ACPI_PROC_EVENT is not set @@ -282,6 +283,7 @@ CONFIG_MTD_CK804XROM=m CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_CPU_IDLE=y +# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set # CONFIG_CPU_IDLE_GOV_LADDER is not set CONFIG_CPU_IDLE_GOV_MENU=y @@ -320,7 +322,7 @@ CONFIG_STRICT_DEVMEM=y # CONFIG_MEMTEST is not set # CONFIG_DEBUG_TLBFLUSH is not set -CONFIG_MAXSMP=y +# CONFIG_MAXSMP is not set CONFIG_HP_ILO=m @@ -390,8 +392,6 @@ CONFIG_X86_RESERVE_LOW=64 CONFIG_PCH_GBE=m CONFIG_PCH_PHUB=m -CONFIG_TRANSPARENT_HUGEPAGE=y - CONFIG_CRYPTO_AES_NI_INTEL=y CONFIG_CRYPTO_SERPENT_SSE2_586=m @@ -411,6 +411,7 @@ CONFIG_HYPERV_UTILS=m CONFIG_HID_HYPERV_MOUSE=m CONFIG_HYPERV_NET=m CONFIG_HYPERV_STORAGE=m +CONFIG_HYPERV_BALLOON=m # Depends on HOTPLUG_PCI_PCIE CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m diff --git a/freed-ora/current/master/config-x86_64-generic b/freed-ora/current/master/config-x86_64-generic index 6003f11c0..575564345 100644 --- a/freed-ora/current/master/config-x86_64-generic +++ b/freed-ora/current/master/config-x86_64-generic @@ -13,6 +13,8 @@ CONFIG_AMD_NUMA=y CONFIG_X86_64_ACPI_NUMA=y # CONFIG_NUMA_EMU is not set # CONFIG_X86_NUMACHIP is not set +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y +CONFIG_NUMA_BALANCING=y CONFIG_NR_CPUS=128 CONFIG_PHYSICAL_START=0x1000000 @@ -27,6 +29,8 @@ CONFIG_AMD_IOMMU_V2=m CONFIG_SWIOTLB=y # CONFIG_CALGARY_IOMMU is not set +CONFIG_TRANSPARENT_HUGEPAGE=y + CONFIG_KEXEC_JUMP=y CONFIG_ACPI_BLACKLIST_YEAR=0 @@ -50,6 +54,7 @@ CONFIG_CRYPTO_CAST5_AVX_X86_64=m CONFIG_CRYPTO_CAST6_AVX_X86_64=m CONFIG_CRYPTO_SERPENT_AVX_X86_64=m CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m # CONFIG_I2C_ALI1535 is not set # CONFIG_I2C_ALI1563 is not set @@ -69,6 +74,7 @@ CONFIG_SPARSEMEM=y CONFIG_HAVE_MEMORY_PRESENT=y CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP=y +# CONFIG_MOVABLE_NODE is not set # CONFIG_MEMORY_HOTPLUG is not set # CONFIG_MEMORY_HOTREMOVE is not set @@ -121,6 +127,10 @@ CONFIG_I7300_IDLE=m CONFIG_BPF_JIT=y +# https://fedoraproject.org/wiki/Features/Checkpoint_Restore +CONFIG_CHECKPOINT_RESTORE=y +CONFIG_NAMESPACES=y + # Should be 32bit only, but lacks KConfig depends # CONFIG_XO15_EBOOK is not set diff --git a/freed-ora/current/master/linux-2.6-crash-driver.patch b/freed-ora/current/master/crash-driver.patch index 239f0f6a0..239f0f6a0 100644 --- a/freed-ora/current/master/linux-2.6-crash-driver.patch +++ b/freed-ora/current/master/crash-driver.patch diff --git a/freed-ora/current/master/criu-no-expert.patch b/freed-ora/current/master/criu-no-expert.patch new file mode 100644 index 000000000..2124427e9 --- /dev/null +++ b/freed-ora/current/master/criu-no-expert.patch @@ -0,0 +1,22 @@ +diff --git a/init/Kconfig b/init/Kconfig +index be8b7f5..7461760 100644 +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -989,7 +989,7 @@ config DEBUG_BLK_CGROUP + endif # CGROUPS + + config CHECKPOINT_RESTORE +- bool "Checkpoint/restore support" if EXPERT ++ bool "Checkpoint/restore support" + default n + help + Enables additional kernel features in a sake of checkpoint/restore. +@@ -1000,7 +1000,7 @@ config CHECKPOINT_RESTORE + If unsure, say N here. + + menuconfig NAMESPACES +- bool "Namespaces support" if EXPERT ++ bool "Namespaces support" + default !EXPERT + help + Provides the way to make tasks work with different objects using diff --git a/freed-ora/current/master/deblob-3.8 b/freed-ora/current/master/deblob-3.8 new file mode 100755 index 000000000..31417db08 --- /dev/null +++ b/freed-ora/current/master/deblob-3.8 @@ -0,0 +1,2655 @@ +#!/bin/sh + +# Copyright (C) 2008-2013 Alexandre Oliva <lxoliva@fsfla.org> +# Copyright (C) 2008 Jeff Moe +# Copyright (C) 2009 Rubén Rodríguez <ruben@gnu.org> +# +# This program is part of GNU Linux-libre, a GNU project that +# publishes scripts to clean up Linux so as to make it suitable for +# use in the GNU Project and in Free System Distributions. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +# deblob - remove non-free blobs from the vanilla linux kernel + +# http://www.fsfla.org/svn/fsfla/software/linux-libre + + +# This script, suited for the kernel version named below, in kver, +# attempts to remove only non-Free Software bits, without removing +# Free Software that happens to be in the same file. + +# Drivers that currently require non-Free firmware are retained, but +# firmware included in GPLed sources is replaced with /*(DEBLOBBED)*/ +# if the deblob-check script, that knows how to do this, is present. +# -lxoliva + + +# See also: +# http://wiki.debian.org/KernelFirmwareLicensing +# svn://svn.debian.org/kernel/dists/trunk/linux-2.6/debian/patches/debian/dfsg/files-1 +# http://wiki.gnewsense.org/Builder gen-kernel + +# Thanks to Brian Brazil @ gnewsense + + +# For each kver release, start extra with an empty string, then count +# from 1 if changes are needed that require rebuilding the tarball. +kver=3.8 extra= + +case $1 in +--force) + echo "WARNING: Using the force, ignored errors will be" >&2 + die () { + echo ERROR: "$@" >&2 + errors=: + } + forced=: errors=false + shift + ;; +*) + die () { + echo ERROR: "$@" >&2 + echo Use --force to ignore + exit 1 + } + forced=false errors=false + ;; +esac + +check=`echo "$0" | sed 's,[^/]*$,,;s,^$,.,;s,/*$,,'`/deblob-check +if [ ! -f $check ] ; then + if $forced; then + die deblob-check script missing, will remove entire files + else + die deblob-check script missing + fi + have_check=false +else + have_check=: + [ -x $check ] || check="/bin/sh $check" +fi + +filetest () { + if [ ! -f $1 ]; then + die $1 does not exist, something is wrong && return 1 + fi +} + +announce () { + echo + echo "$@" +} + +clean_file () { + #$1 = filename + filetest $1 || return + rm $1 + echo $1: removed +} + +check_changed () { + #$1 = filename + if cmp $1.deblob $1 > /dev/null; then + rm $1.deblob + die $1 did not change, something is wrong && return 1 + fi + mv $1.deblob $1 +} + +clean_blob () { + #$1 = filename + filetest $1 || return + if $have_check; then + name=$1 + set fnord "$@" -d + shift 2 + if $check "$@" -i linux-$kver $name > $name.deblob; then + if [ ! -s $name.deblob ]; then + die got an empty file after removing blobs from $name + fi + else + die failed removing blobs from $name + fi + check_changed $name && echo $name: removed blobs + else + clean_file $1 + fi +} + +dummy_blob () { + #$1 = filename + if test -f $1; then + die $1 exists, something is wrong && return + elif test ! -f firmware/Makefile; then + die firmware/Makefile does not exist, something is wrong && return + fi + + clean_sed "s,`echo $1 | sed s,^firmware/,,`,\$(DEBLOBBED),g" \ + firmware/Makefile "dropped $1" +} + +clean_fw () { + #$1 = firmware text input, $2 = firmware output + filetest $1 || return + if test -f $2; then + die $2 exists, something is wrong && return + fi + clean_blob $1 -s 4 + dummy_blob $2 +} + +drop_fw_file () { + #$1 = firmware text input, $2 = firmware output + filetest $1 || return + if test -f $2; then + die $2 exists, something is wrong && return + fi + clean_file $1 + dummy_blob $2 +} + +clean_kconfig () { + #$1 = filename $2 = things to remove + case $1 in + -f) + shift + ;; + *) + if $have_check; then + return + fi + ;; + esac + filetest $1 || return + sed "/^config \\($2\\)\$/{p;i\ + depends on NONFREE +d;}" $1 > $1.deblob + check_changed $1 && echo $1: marked config $2 as depending on NONFREE +} + +clean_mk () { + #$1 = config $2 = Makefile name + # We don't clean up Makefiles any more --lxoliva + # sed -i "/\\($1\\)/d" $2 + # echo $2: removed $1 support + # check_changed $2 + filetest $2 || return + if sed -n "/\\($1\\)/p" $2 | grep . > /dev/null; then + : + else + die $2 does not contain matches for $1 + fi +} + +clean_sed () { + #$1 = sed-script $2 = file $3 = comment + filetest $2 || return + sed -e "$1" "$2" > "$2".deblob || { + die $2: failed: ${3-applied sed script $1} && return 1; } + check_changed $2 && echo $2: ${3-applied sed script $1} +} + +reject_firmware () { + #$1 = file $2 = pre sed pattern + filetest $1 || return + clean_sed "$2"' +s,request\(_ihex\)\?_firmware\(_nowait\)\?,reject_firmware\2,g +' "$1" 'disabled non-Free firmware-loading machinery' +} + +maybe_reject_firmware () { + #$1 = file $2 = pre sed pattern + filetest $1 || return + clean_sed "$2"' +s,request_\(ihex_\)\?firmware\(_nowait\)\?,maybe_reject_\1firmware\2,g +' "$1" 'retain Free firmware-loading machinery, disabling non-Free one' +} + +undefine_macro () { + #$1 - macro name + #$2 - substitution + #$3 - message + #rest - file names + macro=$1 repl=$2 msg=$3; shift 3 + for f in "$@"; do + clean_sed " +s,^#define $macro .*\$,/*(DEBLOBBED)*/,; +s,$macro,$repl,g; +" "$f" "$msg" + done +} + +undefault_firmware () { + #$1 - pattern such that $1_DEFAULT_FIRMWARE is #defined to non-Free firmware + #$@ other than $1 - file names + macro="$1"_DEFAULT_FIRMWARE; shift + undefine_macro "$macro" "\"/*(DEBLOBBED)*/\"" \ + "disabled non-Free firmware" "$@" +} + +# First, check that files that contain firmwares and their +# corresponding sources are present. + +for f in \ + drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h \ + drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc \ + drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h \ + drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc \ + drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h \ + drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/nvc0.fuc \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/nve0.fuc \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/nvc0.fuc \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h \ + drivers/gpu/drm/nouveau/core/engine/graph/fuc/nve0.fuc \ + drivers/net/wan/wanxlfw.inc_shipped \ + drivers/net/wan/wanxlfw.S \ + drivers/net/wireless/atmel.c \ + drivers/net/wireless/atmel.c \ + drivers/scsi/aic7xxx/aic79xx_seq.h_shipped \ + drivers/scsi/aic7xxx/aic79xx.seq \ + drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped \ + drivers/scsi/aic7xxx/aic7xxx.seq \ + drivers/scsi/aic7xxx_old/aic7xxx_seq.c \ + drivers/scsi/aic7xxx_old/aic7xxx.seq \ + drivers/scsi/53c700_d.h_shipped \ + drivers/scsi/53c700.scr \ + drivers/scsi/sym53c8xx_2/sym_fw1.h \ + drivers/scsi/sym53c8xx_2/sym_fw1.h \ + drivers/scsi/sym53c8xx_2/sym_fw2.h \ + drivers/scsi/sym53c8xx_2/sym_fw2.h \ + firmware/dsp56k/bootstrap.bin.ihex \ + firmware/dsp56k/bootstrap.asm \ + firmware/keyspan_pda/keyspan_pda.HEX \ + firmware/keyspan_pda/keyspan_pda.S \ + firmware/keyspan_pda/xircom_pgs.HEX \ + firmware/keyspan_pda/xircom_pgs.S \ + sound/pci/cs46xx/imgs/cwcdma.h \ + sound/pci/cs46xx/imgs/cwcdma.asp \ +; do + filetest $f +done + +# Identify the tarball. +grep -q 'EXTRAVERSION.*-gnu' Makefile || +clean_sed "s,^EXTRAVERSION.*,&-gnu$extra, +" Makefile 'added -gnu to EXTRAVERSION' + +grep -q Linux-libre README || +clean_sed ' +1,3 s,Linux kernel release.*kernel\.org.*,GNU Linux-libre <http://linux-libre.fsfla.org>, +2,5 s,Linux version [0-9.]*,GNU Linux-libre, +1,20 s,\(operating system \)\?Unix,Unix kernel, +/WHAT IS LINUX/i\ +WHAT IS GNU Linux-libre?\ +\ + GNU Linux-libre is a Free version of the kernel Linux (see below),\ + suitable for use with the GNU Operating System in 100% Free\ + GNU/Linux-libre System Distributions.\ + http://www.gnu.org/distros/\ +\ + It removes non-Free components from Linux, that are disguised as\ + source code or distributed in separate files. It also disables\ + run-time requests for non-Free components, shipped separately or as\ + part of Linux, and documentation pointing to them, so as to avoid\ + (Free-)baiting users into the trap of non-Free Software.\ + http://www.fsfla.org/anuncio/2010-11-Linux-2.6.36-libre-debait\ +\ + Linux-libre started within the gNewSense GNU/Linux distribution.\ + It was later adopted by Jeff Moe, who coined its name, and in 2008\ + it became a project maintained by FSF Latin America. In 2012, it\ + became part of the GNU Project.\ +\ + The GNU Linux-libre project takes a minimal-changes approach to\ + cleaning up Linux, making no effort to substitute components that\ + need to be removed with functionally equivalent Free ones.\ + Nevertheless, we encourage and support efforts towards doing so.\ + http://libreplanet.org/wiki/LinuxLibre:Devices_that_require_non-free_firmware\ +\ + Our mascot is Freedo, a light-blue penguin that has just come out\ + of the shower. Although we like penguins, GNU is a much greater\ + contribution to the entire system, so its mascot deserves more\ + promotion. See our web page for their images.\ + http://linux-libre.fsfla.org/\ + +' README 'added blurb about GNU Linux-libre' + +# Add reject_firmware and maybe_reject_firmware +grep -q _LINUX_LIBRE_FIRMWARE_H include/linux/firmware.h || +clean_sed '$i\ +#ifndef _LINUX_LIBRE_FIRMWARE_H\ +#define _LINUX_LIBRE_FIRMWARE_H\ +\ +#include <linux/device.h>\ +\ +#define NONFREE_FIRMWARE "/*(DEBLOBBED)*/"\ +\ +static inline int\ +report_missing_free_firmware(const char *name, const char *what)\ +{\ + printk(KERN_ERR "%s: Missing Free %s\\n", name,\ + what ? what : "firmware");\ + return -EINVAL;\ +}\ +static inline int\ +reject_firmware(const struct firmware **fw,\ + const char *name, struct device *device)\ +{\ + const struct firmware *xfw = NULL;\ + int retval;\ + report_missing_free_firmware(dev_name(device), NULL);\ + retval = request_firmware(&xfw, NONFREE_FIRMWARE, device);\ + if (!retval)\ + release_firmware(xfw);\ + return -EINVAL;\ +}\ +static inline int\ +maybe_reject_firmware(const struct firmware **fw,\ + const char *name, struct device *device)\ +{\ + if (strstr (name, NONFREE_FIRMWARE))\ + return reject_firmware(fw, name, device);\ + else\ + return request_firmware(fw, name, device);\ +}\ +static inline void\ +discard_rejected_firmware(const struct firmware *fw, void *context)\ +{\ + release_firmware(fw);\ +}\ +static inline int\ +reject_firmware_nowait(struct module *module, int uevent,\ + const char *name, struct device *device,\ + gfp_t gfp, void *context,\ + void (*cont)(const struct firmware *fw,\ + void *context))\ +{\ + int retval;\ + report_missing_free_firmware(dev_name(device), NULL);\ + retval = request_firmware_nowait(module, uevent, NONFREE_FIRMWARE,\ + device, gfp, NULL,\ + discard_rejected_firmware);\ + if (retval)\ + return retval;\ + return -EINVAL;\ +}\ +static inline int\ +maybe_reject_firmware_nowait(struct module *module, int uevent,\ + const char *name, struct device *device,\ + gfp_t gfp, void *context,\ + void (*cont)(const struct firmware *fw,\ + void *context))\ +{\ + if (strstr (name, NONFREE_FIRMWARE))\ + return reject_firmware_nowait(module, uevent, name,\ + device, gfp, context, cont);\ + else\ + return request_firmware_nowait(module, uevent, name,\ + device, gfp, context, cont);\ +}\ +\ +#endif /* _LINUX_LIBRE_FIRMWARE_H */\ +' include/linux/firmware.h 'added non-Free firmware notification support' + +grep -q _LINUX_LIBRE_IHEX_FIRMWARE_H include/linux/ihex.h || +clean_sed '$i\ +#ifndef _LINUX_LIBRE_IHEX_H\ +#define _LINUX_LIBRE_IHEX_H\ +\ +static inline int\ +maybe_reject_ihex_firmware(const struct firmware **fw,\ + const char *name, struct device *device)\ +{\ + if (strstr (name, NONFREE_FIRMWARE))\ + return reject_firmware(fw, name, device);\ + else\ + return request_ihex_firmware(fw, name, device);\ +}\ +\ +#endif /* _LINUX_LIBRE_IHEX_H */\ +' include/linux/ihex.h 'added non-Free ihex firmware notification support' + +######## +# Arch # +######## + +# x86 + +announce MICROCODE_AMD - "AMD microcode patch loading support" +reject_firmware arch/x86/kernel/microcode_amd.c +clean_blob arch/x86/kernel/microcode_amd.c +clean_kconfig arch/x86/Kconfig 'MICROCODE_AMD' +clean_mk CONFIG_MICROCODE_AMD arch/x86/kernel/Makefile + +announce MICROCODE_INTEL - "Intel microcode patch loading support" +reject_firmware arch/x86/kernel/microcode_intel.c +clean_blob arch/x86/kernel/microcode_intel.c +clean_kconfig arch/x86/Kconfig 'MICROCODE_INTEL' +clean_mk CONFIG_MICROCODE_INTEL arch/x86/kernel/Makefile + +# arm + +announce IXP4XX_NPE - "IXP4xx Network Processor Engine support" +reject_firmware arch/arm/mach-ixp4xx/ixp4xx_npe.c +clean_blob arch/arm/mach-ixp4xx/ixp4xx_npe.c +clean_blob Documentation/arm/IXP4xx +clean_kconfig arch/arm/mach-ixp4xx/Kconfig 'ARCH_IXP4XX' +clean_mk CONFIG_IXP4XX_NPE arch/arm/mach-ixp4xx/Makefile + +announce ARCH_NETX - "Hilscher NetX based" +clean_sed ' +s,\([" ]\)request_firmware(,\1reject_firmware(, +' arch/arm/mach-netx/xc.c 'disabled non-Free firmware-loading machinery' +clean_blob arch/arm/mach-netx/xc.c +clean_blob drivers/net/ethernet/netx-eth.c +clean_kconfig arch/arm/Kconfig 'ARCH_NETX' +clean_mk CONFIG_ARCH_NETX arch/arm/Makefile + +# mips + +# I couldn't figure out where the firmware name actually comes from. +# If it's from some user-set property, we could reenable it. -lxo +announce XRX200_PHY_FW - "XRX200 PHY firmware loader" +reject_firmware arch/mips/lantiq/xway/xrx200_phy_fw.c +clean_kconfig arch/mips/lantiq/Kconfig 'XRX200_PHY_FW' +clean_mk CONFIG_XRX200_PHY_FW arch/mips/lantiq/xway/Makefile + +####### +# ATM # +####### + +announce ATM_AMBASSADOR - "Madge Ambassador, Collage PCI 155 Server" +reject_firmware drivers/atm/ambassador.c +clean_blob drivers/atm/ambassador.c +clean_fw firmware/atmsar11.HEX firmware/atmsar11.fw +clean_kconfig drivers/atm/Kconfig 'ATM_AMBASSADOR' +clean_mk CONFIG_ATM_AMBASSADOR drivers/atm/Makefile + +announce ATM_FORE200E - "FORE Systems 200E-series" +reject_firmware drivers/atm/fore200e.c +clean_blob drivers/atm/fore200e.c +clean_blob Documentation/networking/fore200e.txt +clean_blob drivers/atm/.gitignore +clean_blob Documentation/dontdiff +clean_kconfig drivers/atm/Kconfig 'ATM_FORE200E' +clean_mk CONFIG_ATM_FORE200E drivers/atm/Makefile + +announce ATM_SOLOS - "Solos ADSL2+ PCI Multiport card driver" +reject_firmware drivers/atm/solos-pci.c +clean_blob drivers/atm/solos-pci.c +clean_kconfig drivers/atm/Kconfig 'ATM_SOLOS' +clean_mk CONFIG_ATM_SOLOS drivers/atm/Makefile + +######## +# tty # +######## + +announce CYCLADES - "Cyclades async mux support" +reject_firmware drivers/tty/cyclades.c +clean_blob drivers/tty/cyclades.c +clean_kconfig drivers/tty/Kconfig 'CYCLADES' +clean_mk CONFIG_CYCLADES drivers/tty/Makefile + +announce ISI - "Multi-Tech multiport card support" +reject_firmware drivers/tty/isicom.c +clean_blob drivers/tty/isicom.c +clean_kconfig drivers/tty/Kconfig 'ISI' +clean_mk CONFIG_ISI drivers/tty/Makefile + +announce MOXA_INTELLIO - "Moxa Intellio support" +reject_firmware drivers/tty/moxa.c +clean_blob drivers/tty/moxa.c +clean_kconfig drivers/tty/Kconfig 'MOXA_INTELLIO' +clean_mk CONFIG_MOXA_INTELLIO drivers/tty/Makefile + +# gpu drm + +announce DRM_NOUVEAU - "Nouveau (nVidia) cards" +reject_firmware drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c +clean_blob drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c +reject_firmware drivers/gpu/drm/nouveau/core/core/falcon.c +clean_blob drivers/gpu/drm/nouveau/core/core/falcon.c +clean_kconfig drivers/gpu/drm/nouveau/Kconfig 'DRM_NOUVEAU' +clean_mk CONFIG_DRM_NOUVEAU drivers/gpu/drm/nouveau/Makefile + +announce DRM_MGA - "Matrox g200/g400" +drop_fw_file firmware/matrox/g200_warp.H16 firmware/matrox/g200_warp.fw +drop_fw_file firmware/matrox/g400_warp.H16 firmware/matrox/g400_warp.fw +reject_firmware drivers/gpu/drm/mga/mga_warp.c +clean_blob drivers/gpu/drm/mga/mga_warp.c +clean_kconfig drivers/gpu/drm/Kconfig 'DRM_MGA' +clean_mk CONFIG_DRM_MGA drivers/gpu/drm/Makefile + +announce DRM_R128 - "ATI Rage 128" +drop_fw_file firmware/r128/r128_cce.bin.ihex firmware/r128/r128_cce.bin +reject_firmware drivers/gpu/drm/r128/r128_cce.c +clean_blob drivers/gpu/drm/r128/r128_cce.c +clean_kconfig drivers/gpu/drm/Kconfig 'DRM_R128' +clean_mk CONFIG_DRM_R128 drivers/gpu/drm/Makefile + +announce DRM_RADEON - "ATI Radeon" +drop_fw_file firmware/radeon/R100_cp.bin.ihex firmware/radeon/R100_cp.bin +drop_fw_file firmware/radeon/R200_cp.bin.ihex firmware/radeon/R200_cp.bin +drop_fw_file firmware/radeon/R300_cp.bin.ihex firmware/radeon/R300_cp.bin +drop_fw_file firmware/radeon/R420_cp.bin.ihex firmware/radeon/R420_cp.bin +drop_fw_file firmware/radeon/R520_cp.bin.ihex firmware/radeon/R520_cp.bin +drop_fw_file firmware/radeon/R600_me.bin.ihex firmware/radeon/R600_me.bin +drop_fw_file firmware/radeon/R600_pfp.bin.ihex firmware/radeon/R600_pfp.bin +drop_fw_file firmware/radeon/RS600_cp.bin.ihex firmware/radeon/RS600_cp.bin +drop_fw_file firmware/radeon/RS690_cp.bin.ihex firmware/radeon/RS690_cp.bin +drop_fw_file firmware/radeon/RS780_me.bin.ihex firmware/radeon/RS780_me.bin +drop_fw_file firmware/radeon/RS780_pfp.bin.ihex firmware/radeon/RS780_pfp.bin +drop_fw_file firmware/radeon/RV610_me.bin.ihex firmware/radeon/RV610_me.bin +drop_fw_file firmware/radeon/RV610_pfp.bin.ihex firmware/radeon/RV610_pfp.bin +drop_fw_file firmware/radeon/RV620_me.bin.ihex firmware/radeon/RV620_me.bin +drop_fw_file firmware/radeon/RV620_pfp.bin.ihex firmware/radeon/RV620_pfp.bin +drop_fw_file firmware/radeon/RV630_me.bin.ihex firmware/radeon/RV630_me.bin +drop_fw_file firmware/radeon/RV630_pfp.bin.ihex firmware/radeon/RV630_pfp.bin +drop_fw_file firmware/radeon/RV635_me.bin.ihex firmware/radeon/RV635_me.bin +drop_fw_file firmware/radeon/RV635_pfp.bin.ihex firmware/radeon/RV635_pfp.bin +drop_fw_file firmware/radeon/RV670_me.bin.ihex firmware/radeon/RV670_me.bin +drop_fw_file firmware/radeon/RV670_pfp.bin.ihex firmware/radeon/RV670_pfp.bin +drop_fw_file firmware/radeon/RV710_me.bin.ihex firmware/radeon/RV710_me.bin +drop_fw_file firmware/radeon/RV710_pfp.bin.ihex firmware/radeon/RV710_pfp.bin +drop_fw_file firmware/radeon/RV730_me.bin.ihex firmware/radeon/RV730_me.bin +drop_fw_file firmware/radeon/RV730_pfp.bin.ihex firmware/radeon/RV730_pfp.bin +drop_fw_file firmware/radeon/RV770_me.bin.ihex firmware/radeon/RV770_me.bin +drop_fw_file firmware/radeon/RV770_pfp.bin.ihex firmware/radeon/RV770_pfp.bin +reject_firmware drivers/gpu/drm/radeon/radeon_cp.c +clean_blob drivers/gpu/drm/radeon/radeon_cp.c +reject_firmware drivers/gpu/drm/radeon/r100.c +clean_blob drivers/gpu/drm/radeon/r100.c +reject_firmware drivers/gpu/drm/radeon/r600.c +clean_blob drivers/gpu/drm/radeon/r600.c +reject_firmware drivers/gpu/drm/radeon/r600_cp.c +clean_blob drivers/gpu/drm/radeon/r600_cp.c +reject_firmware drivers/gpu/drm/radeon/ni.c +clean_blob drivers/gpu/drm/radeon/ni.c +reject_firmware drivers/gpu/drm/radeon/si.c +clean_blob drivers/gpu/drm/radeon/si.c +clean_kconfig drivers/gpu/drm/Kconfig 'DRM_RADEON' +clean_mk CONFIG_DRM_RADEON drivers/gpu/drm/Makefile + +####### +# dma # +####### + +announce IMX_SDMA - "i.MX SDMA support" +reject_firmware drivers/dma/imx-sdma.c +clean_blob arch/arm/mach-imx/mm-imx25.c +clean_blob arch/arm/mach-imx/mm-imx3.c +clean_blob arch/arm/mach-imx/mm-imx5.c +clean_blob arch/arm/boot/dts/imx51.dtsi +clean_blob arch/arm/boot/dts/imx53.dtsi +clean_blob arch/arm/boot/dts/imx6q.dtsi +clean_blob Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt +clean_kconfig drivers/dma/Kconfig 'IMX_SDMA' +clean_mk CONFIG_IMX_SDMA drivers/dma/Makefile + +######### +# Media # +######### + +# media/tuner + +announce MEDIA_TUNER_XC2028 - "XCeive xc2028/xc3028 tuners" +undefault_firmware 'XC\(2028\|3028L\)' \ + drivers/media/tuners/tuner-xc2028.h \ + drivers/media/pci/saa7134/saa7134-cards.c \ + drivers/media/pci/ivtv/ivtv-driver.c \ + drivers/media/pci/cx18/cx18-driver.c \ + drivers/media/pci/cx18/cx18-dvb.c \ + drivers/media/pci/cx23885/cx23885-dvb.c \ + drivers/media/pci/cx23885/cx23885-video.c \ + drivers/media/pci/cx88/cx88-dvb.c \ + drivers/media/pci/cx88/cx88-cards.c \ + drivers/media/usb/em28xx/em28xx-cards.c \ + drivers/media/usb/dvb-usb/dib0700_devices.c \ + drivers/media/usb/dvb-usb/cxusb.c +reject_firmware drivers/media/tuners/tuner-xc2028.c +clean_blob drivers/media/tuners/tuner-xc2028.c +clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC2028' +clean_mk CONFIG_MEDIA_TUNER_XC2028 drivers/media/tuners/Makefile + +announce VIDEO_TM6000_DVB - "DVB Support for tm6000 based TV cards" +clean_blob drivers/media/usb/tm6000/tm6000-cards.c +clean_kconfig drivers/media/usb/tm6000/Kconfig 'VIDEO_TM6000_DVB' +clean_mk CONFIG_VIDEO_TM6000_DVB drivers/media/usb/tm6000/Makefile + +announce MEDIA_TUNER_XC4000 - "Xceive XC4000 silicon tuner" +undefault_firmware 'XC4000' drivers/media/tuners/xc4000.c +maybe_reject_firmware drivers/media/tuners/xc4000.c +clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC4000' +clean_mk CONFIG_MEDIA_TUNER_XC4000 drivers/media/tuners/Makefile + +announce MEDIA_TUNER_XC5000 - "Xceive XC5000 silicon tuner" +undefault_firmware 'XC5000' \ + drivers/media/usb/cx231xx/cx231xx-cards.c +reject_firmware drivers/media/tuners/xc5000.c +clean_blob drivers/media/tuners/xc5000.c +clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC5000' +clean_mk CONFIG_MEDIA_TUNER_XC5000 drivers/media/tuners/Makefile + +announce DVB_USB - "Support for various USB DVB devices" +reject_firmware drivers/media/usb/dvb-usb/dvb-usb-firmware.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB' +clean_mk CONFIG_DVB_USB drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_V2 - "Support for various USB DVB devices v2" +reject_firmware drivers/media/usb/dvb-usb-v2/dvb_usb_core.c +clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_V2' +clean_mk CONFIG_DVB_USB_V2 drivers/media/usb/dvb-usb-v2/Makefile + +announce DVB_B2C2_FLEXCOP - "Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters" +reject_firmware drivers/media/common/b2c2/flexcop-fe-tuner.c + +announce DVB_BT8XX - "BT8xx based PCI cards" +reject_firmware drivers/media/pci/bt8xx/dvb-bt8xx.c + +announce DVB_USB_A800 - "AVerMedia AverTV DVB-T USB 2.0 (A800)" +clean_blob drivers/media/usb/dvb-usb/a800.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_A800' +clean_mk CONFIG_DVB_USB_A800 drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_AF9005 - "Afatech AF9005 DVB-T USB1.1 support" +clean_file drivers/media/usb/dvb-usb/af9005-script.h +clean_sed ' +s,^ deb_info("load init script\\n");$, {\n err("Missing Free init script\\n");\n return scriptlen = ret = -EINVAL;\n ,; +' drivers/media/usb/dvb-usb/af9005-fe.c 'report missing Free init script' +clean_blob drivers/media/usb/dvb-usb/af9005-fe.c +clean_blob drivers/media/usb/dvb-usb/af9005.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_AF9005' +clean_mk CONFIG_DVB_USB_AF9005 drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_AF9015 - "Afatech AF9015 DVB-T USB2.0 support" +clean_blob drivers/media/usb/dvb-usb-v2/af9015.h +clean_blob drivers/media/usb/dvb-usb-v2/af9015.c +clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AF9015' +clean_mk CONFIG_DVB_USB_AF9015 drivers/media/usb/dvb-usb-v2/Makefile + +announce DVB_USB_AF9035 - "Afatech AF9035 DVB-T USB2.0 support" +clean_blob drivers/media/usb/dvb-usb-v2/af9035.h +clean_blob drivers/media/usb/dvb-usb-v2/af9035.c +clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AF9035' +clean_mk CONFIG_DVB_USB_AF9035 drivers/media/usb/dvb-usb-v2/Makefile + +announce DVB_USB_AZ6007 - "Azurewave 6007 and clones DVB-T/C USB2.0 support" +clean_blob drivers/media/usb/dvb-usb-v2/az6007.c +clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AZ6007' +clean_mk CONFIG_DVB_USB_AZ6007 drivers/media/usb/dvb-usb-v2/Makefile + +announce DVB_USB_AZ6027 - "Azurewave DVB-S/S2 USB2.0 AZ6027 support" +clean_blob drivers/media/usb/dvb-usb/az6027.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_AZ6027' +clean_mk CONFIG_DVB_USB_AZ6027 drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_CXUSB - "Conexant USB2.0 hybrid reference design support" +clean_blob drivers/media/usb/dvb-usb/cxusb.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_CXUSB' +clean_mk CONFIG_DVB_USB_CXUSB drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_DIB0700 - "DiBcom DiB0700 USB DVB devices" +reject_firmware drivers/media/usb/dvb-usb/dib0700_devices.c +clean_blob drivers/media/usb/dvb-usb/dib0700_devices.c +clean_blob drivers/media/usb/dvb-usb/dib0700_core.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIB0700' +clean_mk CONFIG_DVB_USB_DIB0700 drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_DIBUSB_MB - "DiBcom USB DVB-T devices (based on the DiB3000M-B)" +clean_blob drivers/media/usb/dvb-usb/dibusb-mb.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIBUSB_MB' +clean_mk CONFIG_DVB_USB_DIBUSB_MB drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_DIBUSB_MC - "DiBcom USB DVB-T devices (based on the DiB3000M-C/P)" +clean_blob drivers/media/usb/dvb-usb/dibusb-mc.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIBUSB_MC' +clean_mk CONFIG_DVB_USB_DIBUSB_MC drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_DIGITV - "Nebula Electronics uDigiTV DVB-T USB2.0 support" +clean_blob drivers/media/usb/dvb-usb/digitv.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIGITV' +clean_mk CONFIG_DVB_USB_DIGITV drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_DTT200U - "WideView WT-200U and WT-220U (pen) DVB-T USB2.0 support (Yakumo/Hama/Typhoon/Yuan)" +clean_blob drivers/media/usb/dvb-usb/dtt200u.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DTT200U' +clean_mk CONFIG_DVB_USB_DTT200U drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_DW2102 - "DvbWorld DVB-S/S2 USB2.0 support" +reject_firmware drivers/media/usb/dvb-usb/dw2102.c +clean_blob drivers/media/usb/dvb-usb/dw2102.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DW2102' +clean_mk CONFIG_DVB_USB_DW2102 drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_EC168 - "E3C EC168 DVB-T USB2.0 support" +clean_blob drivers/media/usb/dvb-usb-v2/ec168.h +clean_blob drivers/media/usb/dvb-usb-v2/ec168.c +clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_EC168' +clean_mk CONFIG_DVB_USB_EC168 drivers/media/usb/dvb-usb-v2/Makefile + +announce DVB_USB_GP8PSK - "GENPIX 8PSK->USB module support" +reject_firmware drivers/media/usb/dvb-usb/gp8psk.c +clean_blob drivers/media/usb/dvb-usb/gp8psk.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_GP8PSK' +clean_mk CONFIG_DVB_USB_GP8PSK drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_IT913X - "it913x driver" +clean_blob drivers/media/usb/dvb-usb-v2/it913x.c +clean_file Documentation/dvb/it9137.txt +clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_IT913X' +clean_mk CONFIG_DVB_USB_IT913X drivers/media/usb/dvb-usb-v2/Makefile + +announce DVB_USB_LME2510 - "LME DM04/QQBOX DVB-S USB2.0 support" +reject_firmware drivers/media/usb/dvb-usb-v2/lmedm04.c +clean_blob drivers/media/usb/dvb-usb-v2/lmedm04.c +clean_file Documentation/dvb/lmedm04.txt +clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_LME2510' +clean_mk CONFIG_DVB_USB_LME2510 drivers/media/usb/dvb-usb-v2/Makefile + +announce DVB_USB_M920X - "Uli m920x DVB-T USB2.0 support" +reject_firmware drivers/media/usb/dvb-usb/m920x.c +clean_blob drivers/media/usb/dvb-usb/m920x.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_M920X' +clean_mk CONFIG_DVB_USB_M920X drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_NOVA_T_USB2 - "Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 support" +clean_blob drivers/media/usb/dvb-usb/nova-t-usb2.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_NOVA_T_USB2' +clean_mk CONFIG_DVB_USB_NOVA_T_USB2 drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_OPERA1 - "Opera1 DVB-S USB2.0 receiver" +reject_firmware drivers/media/usb/dvb-usb/opera1.c +clean_blob drivers/media/usb/dvb-usb/opera1.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_OPERA1' +clean_mk CONFIG_DVB_USB_OPERA1 drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_TECHNISAT_USB2 - "Technisat DVB-S/S2 USB2.0 support" +clean_blob drivers/media/usb/dvb-usb/technisat-usb2.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_TECHNISAT_USB2' +clean_mk CONFIG_DVB_USB_TECHNISAT_USB2 drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_TTUSB2 - "Pinnacle 400e DVB-S USB2.0 support" +clean_blob drivers/media/usb/dvb-usb/ttusb2.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_TTUSB2' +clean_mk CONFIG_DVB_USB_TTUSB2 drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_UMT_010 - "HanfTek UMT-010 DVB-T USB2.0 support" +clean_blob drivers/media/usb/dvb-usb/umt-010.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_UMT_010' +clean_mk CONFIG_DVB_USB_UMT_010 drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_VP702X - "TwinhanDTV StarBox and clones DVB-S USB2.0 support" +clean_blob drivers/media/usb/dvb-usb/vp702x.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_VP702X' +clean_mk CONFIG_DVB_USB_VP702X drivers/media/usb/dvb-usb/Makefile + +announce DVB_USB_VP7045 - "TwinhanDTV Alpha/MagicBoxII, DNTV tinyUSB2, Beetle USB2.0 support" +clean_blob drivers/media/usb/dvb-usb/vp7045.c +clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_VP7045' +clean_mk CONFIG_DVB_USB_VP7045 drivers/media/usb/dvb-usb/Makefile + +# dvb/frontends + +announce DVB_AF9013 - "Afatech AF9013 demodulator" +reject_firmware drivers/media/dvb-frontends/af9013.c +clean_blob drivers/media/dvb-frontends/af9013.c +clean_blob drivers/media/dvb-frontends/af9013_priv.h +clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_AF9013' +clean_mk CONFIG_DVB_AF9013 drivers/media/dvb-frontends/Makefile + +announce DVB_BCM3510 - "Broadcom BCM3510" +undefault_firmware 'BCM3510' drivers/media/dvb-frontends/bcm3510.c +reject_firmware drivers/media/dvb-frontends/bcm3510.c +reject_firmware drivers/media/dvb-frontends/bcm3510.h +clean_sed ' +/You.ll need a firmware/,/dvb-fe-bcm/d; +' drivers/media/dvb-frontends/bcm3510.c \ + "removed non-Free firmware notes" +clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_BCM3510' +clean_mk CONFIG_DVB_BCM3510 drivers/media/dvb-frontends/Makefile + +announce DVB_DS3000 - "Montage Tehnology DS3000 based" +undefault_firmware 'DS3000' \ + drivers/media/dvb-frontends/ds3000.c +reject_firmware drivers/media/dvb-frontends/ds3000.c +clean_blob drivers/media/dvb-frontends/ds3000.c +clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DS3000' +clean_mk CONFIG_DVB_DS3000 drivers/media/dvb-frontends/Makefile + +announce DVB_LGS8GXX - "Legend Silicon LGS8913/LGS8GL5/LGS8GXX DMB-TH demodulator" +reject_firmware drivers/media/dvb-frontends/lgs8gxx.c +clean_blob drivers/media/dvb-frontends/lgs8gxx.c +clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_LGS8GXX' +clean_mk CONFIG_DVB_LGS8GXX drivers/media/dvb-frontends/Makefile + +announce DVB_NXT200X - "NxtWave Communications NXT2002/NXT2004 based" +undefault_firmware 'NXT200[24]' drivers/media/dvb-frontends/nxt200x.c +reject_firmware drivers/media/dvb-frontends/nxt200x.c +clean_blob drivers/media/dvb-frontends/nxt200x.c +clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_NXT200X' +clean_mk CONFIG_DVB_NXT200X drivers/media/dvb-frontends/Makefile + +announce DVB_OR51132 - "Oren OR51132 based" +reject_firmware drivers/media/dvb-frontends/or51132.c +clean_blob drivers/media/dvb-frontends/or51132.c +clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_OR51132' +clean_mk CONFIG_DVB_OR51132 drivers/media/dvb-frontends/Makefile + +announce DVB_OR51211 - "Oren OR51211 based" +undefault_firmware 'OR51211' drivers/media/dvb-frontends/or51211.c +reject_firmware drivers/media/dvb-frontends/or51211.c +reject_firmware drivers/media/dvb-frontends/or51211.h +clean_blob drivers/media/dvb-frontends/or51211.c +clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_OR51211' +clean_mk CONFIG_DVB_OR51211 drivers/media/dvb-frontends/Makefile + +announce DVB_SP8870 - "Spase sp8870" +undefault_firmware 'SP8870' drivers/media/dvb-frontends/sp8870.c +reject_firmware drivers/media/dvb-frontends/sp8870.c +reject_firmware drivers/media/dvb-frontends/sp8870.h +clean_blob drivers/media/dvb-frontends/sp8870.c +clean_kconfig drivers/media/dvb-frontends 'DVB_SP8870' +clean_mk CONFIG_DVB_SP8870 drivers/media/dvb-frontends/Makefile + +announce DVB_CX24116 - "Conexant CX24116 based" +undefault_firmware CX24116 drivers/media/dvb-frontends/cx24116.c +reject_firmware drivers/media/dvb-frontends/cx24116.c +clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_CX24116' +clean_mk CONFIG_DVB_CX24116 drivers/media/dvb-frontends/Makefile + +announce DVB_SP887X - "Spase sp887x based" +undefault_firmware 'SP887X' drivers/media/dvb-frontends/sp887x.c +reject_firmware drivers/media/dvb-frontends/sp887x.c +reject_firmware drivers/media/dvb-frontends/sp887x.h +clean_blob drivers/media/dvb-frontends/sp887x.c +clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_SP887X' +clean_mk CONFIG_DVB_SP887X drivers/media/dvb-frontends/Makefile + +announce DVB_TDA10048 - "Philips TDA10048HN based" +undefine_macro 'TDA10048_DEFAULT_FIRMWARE_SIZE' 0 \ + 'removed non-Free firmware size' drivers/media/dvb-frontends/tda10048.c +undefault_firmware 'TDA10048' drivers/media/dvb-frontends/tda10048.c +reject_firmware drivers/media/dvb-frontends/tda10048.c +clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_TDA10048' +clean_mk CONFIG_DVB_TDA10048 drivers/media/dvb-frontends/Makefile + +announce DVB_TDA1004X - "Philips TDA10045H/TDA10046H" +undefault_firmware 'TDA1004[56]' drivers/media/dvb-frontends/tda1004x.c +reject_firmware drivers/media/dvb-frontends/tda1004x.c +reject_firmware drivers/media/dvb-frontends/tda1004x.h +clean_blob drivers/media/dvb-frontends/tda1004x.c +clean_kconfig drivers/media/dvb-frontends 'DVB_TDA1004X' +clean_mk CONFIG_DVB_TDA1004X drivers/media/dvb-frontends/Makefile + +announce DVB_TDA10071 - "NXP TDA10071" +reject_firmware drivers/media/dvb-frontends/tda10071.c +clean_blob drivers/media/dvb-frontends/tda10071.c +clean_blob drivers/media/dvb-frontends/tda10071_priv.h +clean_kconfig drivers/media/dvb-frontends 'DVB_TDA10071' +clean_mk CONFIG_DVB_TDA10071 drivers/media/dvb-frontends/Makefile + +# dvb + +announce DVB_AS102 - "Abilis AS102 DVB receiver" +reject_firmware drivers/staging/media/as102/as102_fw.c +clean_blob drivers/staging/media/as102/as102_fw.c +clean_kconfig drivers/staging/media/as102/Kconfig 'DVB_AS102' +clean_mk CONFIG_DVB_AS102 drivers/staging/media/as102/Makefile + +announce DVB_AV7110 - "AV7110 cards" +reject_firmware drivers/media/pci/ttpci/av7110.c +clean_blob drivers/media/pci/ttpci/av7110.c +clean_kconfig drivers/media/pci/ttpci/Kconfig 'DVB_AV7110' +clean_mk CONFIG_DVB_AV7110 drivers/media/pci/ttpci/Makefile + +announce DVB_BUDGET - "Budget cards" +reject_firmware drivers/media/pci/ttpci/budget.c +reject_firmware drivers/media/dvb-frontends/tdhd1.h + +announce DVB_BUDGET_AV - "Budget cards with analog video inputs" +reject_firmware drivers/media/pci/ttpci/budget-av.c + +announce DVB_BUDGET_CI - "Budget cards with onboard CI connector" +reject_firmware drivers/media/pci/ttpci/budget-ci.c + +announce DVB_DRXD - "Micronas DRXD driver" +reject_firmware drivers/media/dvb-frontends/drxd_hard.c +clean_blob drivers/media/dvb-frontends/drxd_hard.c +clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DRXD' +clean_mk CONFIG_DVB_DRXD drivers/media/dvb-frontends/Makefile + +announce DVB_DRXK - "Micronas DRXK based" +reject_firmware drivers/media/dvb-frontends/drxk_hard.c +clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DRXK' +clean_mk CONFIG_DVB_DRXK drivers/media/dvb-frontends/Makefile + +announce DVB_NGENE - "Micronas nGene support" +reject_firmware drivers/media/pci/ngene/ngene-core.c +clean_blob drivers/media/pci/ngene/ngene-core.c +clean_kconfig drivers/media/pci/ngene/Kconfig 'DVB_NGENE' +clean_mk CONFIG_DVB_NGENE drivers/media/pci/ngene/Makefile + +announce DVB_PLUTO2 - "Pluto2 cards" +reject_firmware drivers/media/pci/pluto2/pluto2.c + +announce SMS_SIANO_MDTV - "Siano SMS1xxx based MDTV receiver" +reject_firmware drivers/media/common/siano/smscoreapi.c +clean_blob drivers/media/common/siano/smscoreapi.c +clean_blob drivers/media/common/siano/sms-cards.c +clean_kconfig drivers/media/common/siano/Kconfig 'SMS_SIANO_MDTV' +clean_mk CONFIG_SMS_SIANO_MDTV drivers/media/common/siano/Makefile + +announce SMS_USB_DRV - "Siano's USB interface support" +reject_firmware drivers/media/usb/siano/smsusb.c +clean_blob drivers/media/usb/siano/smsusb.c +clean_kconfig drivers/media/usb/siano/Kconfig 'SMS_USB_DRV' +clean_mk CONFIG_SMS_USB_DRV drivers/media/usb/siano/Makefile + +announce DVB_TTUSB_BUDGET - "Technotrend/Hauppauge Nova-USB devices" +drop_fw_file firmware/ttusb-budget/dspbootcode.bin.ihex firmware/ttusb-budget/dspbootcode.bin +reject_firmware drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c +clean_blob drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c +clean_kconfig drivers/media/usb/ttusb-budget/Kconfig 'DVB_TTUSB_BUDGET' +clean_mk CONFIG_DVB_TTUSB_BUDGET drivers/media/usb/ttusb-budget/Makefile + +announce DVB_TTUSB_DEC - "Technotrend/Hauppauge USB DEC devices" +reject_firmware drivers/media/usb/ttusb-dec/ttusb_dec.c +clean_blob drivers/media/usb/ttusb-dec/ttusb_dec.c +clean_blob Documentation/dvb/ttusb-dec.txt +clean_kconfig drivers/media/usb/ttusb-dec/Kconfig 'DVB_TTUSB_DEC' +clean_mk CONFIG_DVB_TTUSB_DEC drivers/media/usb/ttusb-dec/Makefile + +# video + +announce VIDEO_BT848 - "BT848 Video For Linux" +reject_firmware drivers/media/pci/bt8xx/bttv-cards.c +clean_blob drivers/media/pci/bt8xx/bttv-cards.c +clean_blob Documentation/video4linux/bttv/README +clean_kconfig drivers/media/pci/bt8xx/Kconfig 'VIDEO_BT848' +clean_mk CONFIG_VIDEO_BT848 drivers/media/pci/bt8xx/Makefile + +announce VIDEO_CODA - "Chips&Media Coda multi-standard codec IP" +reject_firmware drivers/media/platform/coda.c +clean_blob drivers/media/platform/coda.c +clean_kconfig drivers/media/platform/Kconfig 'VIDEO_CODA' +clean_mk CONFIG_VIDEO_CODA drivers/media/platform/Makefile + +announce VIDEO_CPIA2 - "CPiA2 Video For Linux" +clean_fw firmware/cpia2/stv0672_vp4.bin.ihex firmware/cpia2/stv0672_vp4.bin +reject_firmware drivers/media/usb/cpia2/cpia2_core.c +clean_blob drivers/media/usb/cpia2/cpia2_core.c +clean_kconfig drivers/media/usb/cpia2/Kconfig 'VIDEO_CPIA2' +clean_mk CONFIG_VIDEO_CPIA2 drivers/media/usb/cpia2/Makefile + +announce VIDEO_CX18 - "Conexant cx23418 MPEG encoder support" +reject_firmware drivers/media/pci/cx18/cx18-av-firmware.c +reject_firmware drivers/media/pci/cx18/cx18-dvb.c +reject_firmware drivers/media/pci/cx18/cx18-firmware.c +clean_blob drivers/media/pci/cx18/cx18-av-firmware.c +clean_blob drivers/media/pci/cx18/cx18-dvb.c +clean_blob drivers/media/pci/cx18/cx18-firmware.c +clean_blob drivers/media/pci/cx18/cx18-driver.c +clean_kconfig drivers/media/pci/cx18/Kconfig 'VIDEO_CX18' +clean_mk CONFIG_VIDEO_CX18 drivers/media/pci/cx18/Makefile + +announce VIDEO_CX231XX - "Conexant cx231xx USB video capture support" +reject_firmware drivers/media/usb/cx231xx/cx231xx-417.c +clean_blob drivers/media/usb/cx231xx/cx231xx-417.c +clean_kconfig drivers/media/usb/cx231xx/Kconfig 'VIDEO_CX231XX' +clean_mk CONFIG_VIDEO_CX231XX drivers/media/usb/cx231xx/Makefile + +announce VIDEO_CX23885 - "Conexant cx23885 (2388x successor) support" +reject_firmware drivers/media/pci/cx23885/cx23885-417.c +clean_blob drivers/media/pci/cx23885/cx23885-417.c +reject_firmware drivers/media/pci/cx23885/cx23885-cards.c +clean_blob drivers/media/pci/cx23885/cx23885-cards.c +clean_kconfig drivers/media/pci/cx23885/Kconfig 'VIDEO_CX23885' +clean_mk CONFIG_VIDEO_CX23885 drivers/media/pci/cx23885/Makefile + +announce VIDEO_CX25840 - "Conexant CX2584x audio/video decoders" +reject_firmware drivers/media/i2c/cx25840/cx25840-firmware.c +clean_blob drivers/media/i2c/cx25840/cx25840-firmware.c +clean_kconfig drivers/media/i2c/cx25840/Kconfig 'VIDEO_CX25840' +clean_mk CONFIG_VIDEO_CX25840 drivers/media/i2c/cx25840/Makefile + +announce VIDEO_CX88_BLACKBIRD - "Blackbird MPEG encoder support (cx2388x + cx23416)" +reject_firmware drivers/media/pci/cx88/cx88-blackbird.c +clean_kconfig drivers/media/pci/cx88/Kconfig 'VIDEO_CX88_BLACKBIRD' +clean_mk CONFIG_VIDEO_CX88_BLACKBIRD drivers/media/pci/cx88/Makefile + +announce VIDEO_EM28XX_DVB - "DVB/ATSC Support for em28xx based TV cards" +clean_blob drivers/media/usb/em28xx/em28xx-dvb.c +clean_kconfig drivers/media/usb/em28xx/Kconfig 'VIDEO_EM28XX_DVB' +clean_mk CONFIG_VIDEO_EM28XX_DVB drivers/media/usb/em28xx/Makefile + +announce VIDEO_IVTV - "Conexant cx23416/cx23415 MPEG encoder/decoder support" +reject_firmware drivers/media/pci/ivtv/ivtv-firmware.c +clean_blob drivers/media/pci/ivtv/ivtv-firmware.c +clean_kconfig drivers/media/pci/ivtv/Kconfig 'VIDEO_IVTV' +clean_mk CONFIG_VIDEO_IVTV drivers/media/pci/ivtv/Makefile + +announce VIDEO_PVRUSB2 - "Hauppauge WinTV-PVR USB2 support" +reject_firmware drivers/media/usb/pvrusb2/pvrusb2-hdw.c +clean_blob drivers/media/usb/pvrusb2/pvrusb2-devattr.c +clean_kconfig drivers/media/usb/pvrusb2/Kconfig 'VIDEO_PVRUSB2' +clean_mk CONFIG_VIDEO_PVRUSB2 drivers/media/usb/pvrusb2/Makefile + +announce "VIDEO_CX23885, VIDEO_CX88_BLACKBIRD, VIDEO_IVTV, VIDEO_PVRUSB2" - "See above" +clean_blob include/media/cx2341x.h + +announce VIDEO_GO7007 - "Go 7007 support" +reject_firmware drivers/staging/media/go7007/go7007-driver.c +clean_blob drivers/staging/media/go7007/go7007-driver.c +reject_firmware drivers/staging/media/go7007/go7007-fw.c +clean_blob drivers/staging/media/go7007/go7007-usb.c +clean_blob drivers/staging/media/go7007/saa7134-go7007.c +clean_kconfig drivers/staging/media/go7007/Kconfig 'VIDEO_GO7007' +clean_mk CONFIG_VIDEO_GO7007 drivers/staging/media/go7007/Makefile + +announce VIDEO_GO7007_USB_S2250_BOARD - "Sensoray 2250/2251 support" +reject_firmware drivers/staging/media/go7007/s2250-loader.c +clean_blob drivers/staging/media/go7007/s2250-loader.c +clean_kconfig drivers/staging/media/go7007/Kconfig 'VIDEO_GO7007_USB_S2250_BOARD' +clean_mk CONFIG_VIDEO_GO7007_USB_S2250_BOARD drivers/staging/media/go7007/Makefile + +announce VIDEO_SAA7134_DVB - "DVB/ATSC Support for saa7134 based TV cards" +reject_firmware drivers/media/pci/saa7134/saa7134-dvb.c +clean_kconfig drivers/media/pci/saa7134/Kconfig 'VIDEO_SAA7134_DVB' +clean_mk CONFIG_VIDEO_SAA7134_DVB drivers/media/pci/saa7134/Makefile + +announce VIDEO_SAA7164 - "NXP SAA7164 support" +reject_firmware drivers/media/pci/saa7164/saa7164-fw.c +clean_blob drivers/media/pci/saa7164/saa7164-fw.c +clean_kconfig drivers/media/pci/saa7164/Kconfig 'VIDEO_SAA7164' +clean_mk CONFIG_VIDEO_SAA7164 drivers/media/pci/saa7164/Makefile + +announce VIDEO_TLG2300 - "Telegent TLG2300 USB video capture support" +reject_firmware drivers/media/usb/tlg2300/pd-main.c +clean_blob drivers/media/usb/tlg2300/pd-main.c +clean_kconfig drivers/media/usb/tlg2300/Kconfig 'VIDEO_TLG2300' +clean_mk CONFIG_VIDEO_TLG2300 drivers/media/usb/tlg2300/Makefile + +announce VIDEO_S5K4ECGX - "Samsung S5K4ECGX sensor support" +reject_firmware drivers/media/i2c/s5k4ecgx.c +clean_blob drivers/media/i2c/s5k4ecgx.c +clean_kconfig drivers/media/i2c/s5k4ecgx.c 'VIDEO_S5K4ECGX' +clean_mk CONFIG_VIDEO_S5K4ECGX drivers/media/i2c/Makefile + +announce VIDEO_SAMSUNG_S5P_MFC - "Samsung S5P MFC 5.1 Video Codec" +reject_firmware drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c +clean_blob drivers/media/platform/s5p-mfc/s5p_mfc.c +clean_kconfig drivers/media/platform/Kconfig 'VIDEO_SAMSUNG_S5P_MFC' +clean_mk CONFIG_VIDEO_SAMSUNG_S5P_MFC drivers/media/platform/s5p-mfc/Makefile + +announce USB_S2255 - "USB Sensoray 2255 video capture device" +reject_firmware drivers/media/usb/s2255/s2255drv.c +clean_blob drivers/media/usb/s2255/s2255drv.c +clean_kconfig drivers/media/usb/Kconfig 'USB_S2255' +clean_mk CONFIG_USB_S2255 drivers/media/usb/s2255/Makefile + +announce USB_GSPCA_VICAM - "USB 3com HomeConnect, AKA vicam" +drop_fw_file firmware/vicam/firmware.H16 firmware/vicam/firmware.fw +reject_firmware drivers/media/usb/gspca/vicam.c +clean_blob drivers/media/usb/gspca/vicam.c +clean_kconfig drivers/media/usb/gspca/Kconfig 'USB_GSPCA_VICAM' +clean_mk CONFIG_USB_GSPCA_VICAM drivers/media/usb/gspca/Makefile + +# radio + +announce RADIO_WL1273 - "Texas Instruments WL1273 I2C FM Radio" +reject_firmware drivers/media/radio/radio-wl1273.c +clean_blob drivers/media/radio/radio-wl1273.c +clean_kconfig drivers/media/radio/Kconfig 'RADIO_WL1273' +clean_mk CONFIG_RADIO_WL1273 drivers/media/radio/Makefile + +announce RADIO_WL128X - "Texas Instruments WL128x FM Radio" +clean_blob drivers/media/radio/wl128x/fmdrv_common.h +reject_firmware drivers/media/radio/wl128x/fmdrv_common.c +clean_blob drivers/media/radio/wl128x/fmdrv_common.c +clean_kconfig drivers/media/radio/Kconfig 'RADIO_WL128X' +clean_mk CONFIG_RADIO_WL128X drivers/media/radio/Makefile + +####### +# net # +####### + +announce ACENIC - "Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit" +drop_fw_file firmware/acenic/tg1.bin.ihex firmware/acenic/tg1.bin +drop_fw_file firmware/acenic/tg2.bin.ihex firmware/acenic/tg2.bin +reject_firmware drivers/net/ethernet/alteon/acenic.c +clean_blob drivers/net/ethernet/alteon/acenic.c +clean_kconfig drivers/net/ethernet/alteon/Kconfig 'ACENIC' +clean_mk CONFIG_ACENIC drivers/net/ethernet/alteon/Makefile + +announce ADAPTEC_STARFIRE - "Adaptec Starfire/DuraLAN support" +clean_fw firmware/adaptec/starfire_rx.bin.ihex firmware/adaptec/starfire_rx.bin +clean_fw firmware/adaptec/starfire_tx.bin.ihex firmware/adaptec/starfire_tx.bin +reject_firmware drivers/net/ethernet/adaptec/starfire.c +clean_blob drivers/net/ethernet/adaptec/starfire.c +clean_kconfig drivers/net/ethernet/adaptec/Kconfig 'ADAPTEC_STARFIRE' +clean_mk CONFIG_ADAPTEC_STARFIRE drivers/net/ethernet/adaptec/Makefile + +announce BNA - "Brocade 1010/1020 10Gb Ethernet Driver support" +clean_blob drivers/net/ethernet/brocade/bna/bnad.c +clean_blob drivers/net/ethernet/brocade/bna/cna.h +reject_firmware drivers/net/ethernet/brocade/bna/bnad_ethtool.c +reject_firmware drivers/net/ethernet/brocade/bna/cna_fwimg.c +clean_kconfig drivers/net/ethernet/brocade/bna/Kconfig 'BNA' +clean_mk CONFIG_BNA drivers/net/ethernet/brocade/bna/Makefile + +announce BNX2 - "Broadcom NetXtremeII" +drop_fw_file firmware/bnx2/bnx2-mips-09-6.2.1a.fw.ihex firmware/bnx2/bnx2-mips-09-6.2.1a.fw +drop_fw_file firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex firmware/bnx2/bnx2-rv2p-09-6.0.17.fw +drop_fw_file firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw +drop_fw_file firmware/bnx2/bnx2-mips-06-6.2.1.fw.ihex firmware/bnx2/bnx2-mips-06-6.2.1.fw +drop_fw_file firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex firmware/bnx2/bnx2-rv2p-06-6.0.15.fw +reject_firmware drivers/net/ethernet/broadcom/bnx2.c +clean_blob drivers/net/ethernet/broadcom/bnx2.c +clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'BNX2' +clean_mk CONFIG_BNX2 drivers/net/ethernet/broadcom/Makefile + +announce BNX2X - "Broadcom NetXtremeII 10Gb support" +drop_fw_file firmware/bnx2x/bnx2x-e1-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e1-6.2.9.0.fw +drop_fw_file firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw +drop_fw_file firmware/bnx2x/bnx2x-e2-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e2-6.2.9.0.fw +reject_firmware drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +clean_sed ' +/^#include "bnx2x_init\.h"/,/^$/{ + /^$/i\ +#define bnx2x_init_block(bp, start, end) \\\ + return (printk(KERN_ERR "%s: Missing Free firmware\\n", bp->dev->name),\\\ + -EINVAL) +}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c 'report missing Free firmware' +clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +clean_sed ' +/^bool bnx2x_test_firmware_version/,/^}$/{ + /^ u32 my_fw = /i\ + /*(DEBLOBBED)*/ + /^ u32 my_fw = /,/<< 24);/d; + /^ u32 loaded_fw = /,/^$/{ + /^$/i\ +\ + u32 my_fw = ~loaded_fw; + } +}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c 'fail already-loaded test' +clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h +clean_sed ' +/static void bnx2x_init_wr_wb/{ + i\ +extern void bnx2x_init_wr_wb(struct bnx2x *, u32, const u32 *, u32); +}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h 'declare removed function' +clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h +clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'BNX2X' +clean_mk CONFIG_BNX2X drivers/net/ethernet/broadcom/bnx2x/Makefile + +announce CASSINI - "Sun Cassini" +drop_fw_file firmware/sun/cassini.bin.ihex firmware/sun/cassini.bin +reject_firmware drivers/net/ethernet/sun/cassini.c +clean_blob drivers/net/ethernet/sun/cassini.c +clean_kconfig drivers/net/ethernet/sun/Kconfig 'CASSINI' +clean_mk CONFIG_CASSINI drivers/net/ethernet/sun/Makefile + +announce CHELSIO_T3 - "Chelsio AEL 2005 support" +drop_fw_file firmware/cxgb3/t3b_psram-1.1.0.bin.ihex firmware/cxgb3/t3b_psram-1.1.0.bin +drop_fw_file firmware/cxgb3/t3c_psram-1.1.0.bin.ihex firmware/cxgb3/t3c_psram-1.1.0.bin +drop_fw_file firmware/cxgb3/ael2005_opt_edc.bin.ihex firmware/cxgb3/ael2005_opt_edc.bin +drop_fw_file firmware/cxgb3/ael2005_twx_edc.bin.ihex firmware/cxgb3/ael2005_twx_edc.bin +drop_fw_file firmware/cxgb3/ael2020_twx_edc.bin.ihex firmware/cxgb3/ael2020_twx_edc.bin +reject_firmware drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c +clean_blob drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c +clean_kconfig drivers/net/ethernet/chelsio/Kconfig 'CHELSIO_T3' +clean_mk CONFIG_CHELSIO_T3 drivers/net/ethernet/chelsio/cxgb3/Makefile + +announce CHELSIO_T4 - "Chelsio Communications T4 Ethernet support" +reject_firmware drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c +clean_blob drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c +clean_kconfig drivers/net/ethernet/chelsio/Kconfig 'CHELSIO_T4' +clean_mk CONFIG_CHELSIO_T4 drivers/net/ethernet/chelsio/cxgb4/Makefile + +announce E100 - "Intel PRO/100+" +drop_fw_file firmware/e100/d101m_ucode.bin.ihex firmware/e100/d101m_ucode.bin +drop_fw_file firmware/e100/d101s_ucode.bin.ihex firmware/e100/d101s_ucode.bin +drop_fw_file firmware/e100/d102e_ucode.bin.ihex firmware/e100/d102e_ucode.bin +reject_firmware drivers/net/ethernet/intel/e100.c +clean_sed ' +/^static const struct firmware \*e100_\(reject\|request\)_firmware(/,/^}$/{ + s:^\(.*\)return ERR_PTR(err);$:\1netif_err(nic, probe, nic->netdev, "Proceeding without firmware\\n");\n\1return NULL;: +}' drivers/net/ethernet/intel/e100.c 'proceed without firmware' +clean_blob drivers/net/ethernet/intel/e100.c +clean_kconfig drivers/net/ethernet/intel/Kconfig 'E100' +clean_mk CONFIG_E100 drivers/net/ethernet/intel/Makefile + +announce FT1000_PCMCIA - "Driver for ft1000 pcmcia device." +clean_file drivers/staging/ft1000/ft1000-pcmcia/ft1000.img +reject_firmware drivers/staging/ft1000/TODO +clean_blob drivers/staging/ft1000/ft1000-pcmcia/boot.h +clean_sed ' +/^static int ft1000_reset_card/,/^}$/ { + /card_bootload/i\ + return /*(DEBLOBBED)*/ false; +} +' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c \ + 'disabled non-Free firmware-loading machinery' +reject_firmware drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c +clean_blob drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c +clean_kconfig drivers/staging/ft1000/Kconfig 'FT1000_PCMCIA' +clean_mk CONFIG_FT1000_PCMCIA drivers/staging/ft1000/Makefile + +announce FT1000_USB - "Driver for ft1000 USB devices." +clean_file drivers/staging/ft1000/ft1000-usb/ft3000.img +reject_firmware drivers/staging/ft1000/ft1000-usb/ft1000_usb.c +clean_blob drivers/staging/ft1000/ft1000-usb/ft1000_usb.c +clean_kconfig drivers/staging/ft1000/Kconfig 'FT1000_USB' +clean_mk CONFIG_FT1000_USB drivers/staging/ft1000/Makefile + +announce MYRI_SBUS - "MyriCOM Gigabit Ethernet" +drop_fw_file firmware/myricom/lanai.bin.ihex firmware/myricom/lanai.bin + +announce MYRI10GE - "Myricom Myri-10G Ethernet support" +reject_firmware drivers/net/ethernet/myricom/myri10ge/myri10ge.c +clean_blob drivers/net/ethernet/myricom/myri10ge/myri10ge.c +clean_kconfig drivers/net/ethernet/myricom/Kconfig 'MYRI10GE' +clean_mk CONFIG_MYRI10GE drivers/net/ethernet/myricom/myri10ge/Makefile + +announce NETXEN_NIC - "NetXen Multi port (1/10) Gigabit Ethernet NIC" +reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic.h +reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c +reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c +clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic.h +clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c +clean_kconfig drivers/net/ethernet/qlogic/Kconfig 'NETXEN_NIC' +clean_mk CONFIG_NETXEN_NIC drivers/net/ethernet/qlogic/Makefile + +announce QLCNIC - "QLOGIC QLCNIC 1/10Gb Converged Ethernet NIC Support" +reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic.h +reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_init.c +reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic.h +clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +clean_kconfig drivers/net/ethernet/qlogic/Kconfig 'QLCNIC' +clean_mk CONFIG_QLCNIC drivers/net/ethernet/qlogic/qlcnic/Makefile + +announce R8169 - "Realtek 8169 gigabit ethernet support" +reject_firmware drivers/net/ethernet/realtek/r8169.c +clean_blob drivers/net/ethernet/realtek/r8169.c +clean_kconfig drivers/net/ethernet/realtek/Kconfig R8169 +clean_mk CONFIG_R8169 drivers/net/ethernet/realtek/Makefile + +announce SLICOSS - "Alacritech Gigabit IS-NIC cards" +reject_firmware drivers/staging/slicoss/slicoss.c +clean_blob drivers/staging/slicoss/slicoss.c +clean_kconfig drivers/staging/slicoss/Kconfig 'SLICOSS' +clean_mk CONFIG_SLICOSS drivers/staging/slicoss/Makefile + +announce SPIDER_NET - "Spider Gigabit Ethernet driver" +reject_firmware drivers/net/ethernet/toshiba/spider_net.c +clean_sed 's,spider_fw\.bin,DEBLOBBED.bin,g' \ + drivers/net/ethernet/toshiba/spider_net.c 'removed non-Free firmware notes' +clean_blob drivers/net/ethernet/toshiba/spider_net.c +clean_blob drivers/net/ethernet/toshiba/spider_net.h +clean_kconfig drivers/net/ethernet/toshiba/Kconfig 'SPIDER_NET' +clean_mk CONFIG_SPIDER_NET drivers/net/ethernet/toshiba/Makefile + +announce TEHUTI - "Tehuti Networks 10G Ethernet" +drop_fw_file firmware/tehuti/bdx.bin.ihex firmware/tehuti/bdx.bin +reject_firmware drivers/net/ethernet/tehuti/tehuti.c +clean_blob drivers/net/ethernet/tehuti/tehuti.c +clean_kconfig drivers/net/ethernet/tehuti/Kconfig 'TEHUTI' +clean_mk CONFIG_TEHUTI drivers/net/ethernet/tehuti/Makefile + +announce TIGON3 - "Broadcom Tigon3" +drop_fw_file firmware/tigon/tg3.bin.ihex firmware/tigon/tg3.bin +drop_fw_file firmware/tigon/tg3_tso.bin.ihex firmware/tigon/tg3_tso.bin +drop_fw_file firmware/tigon/tg3_tso5.bin.ihex firmware/tigon/tg3_tso5.bin +reject_firmware drivers/net/ethernet/broadcom/tg3.c +clean_blob drivers/net/ethernet/broadcom/tg3.c +clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'TIGON3' +clean_mk CONFIG_TIGON3 drivers/net/ethernet/broadcom/Makefile + +announce TYPHOON - "3cr990 series Typhoon" +drop_fw_file firmware/3com/typhoon.bin.ihex firmware/3com/typhoon.bin +reject_firmware drivers/net/ethernet/3com/typhoon.c +clean_blob drivers/net/ethernet/3com/typhoon.c +clean_kconfig drivers/net/ethernet/3com/Kconfig 'TYPHOON' +clean_mk CONFIG_TYPHOON drivers/net/ethernet/3com/Makefile + +announce VXGE - "Exar X3100 Series 10GbE PCIe Server Adapter" +reject_firmware drivers/net/ethernet/neterion/vxge/vxge-main.c +clean_blob drivers/net/ethernet/neterion/vxge/vxge-main.c +clean_kconfig drivers/net/ethernet/neterion/Kconfig 'VXGE' +clean_mk CONFIG_VXGE drivers/net/ethernet/neterion/vxge/Makefile + +# appletalk + +announce COPS - "COPS LocalTalk PC" +clean_sed ' +/sizeof(\(ff\|lt\)drv_code)/{ + i\ + printk(KERN_INFO "%s: Missing Free firmware.\\n", dev->name);\ + return; +} +/\(ff\|lt\)drv_code/d; +' drivers/net/appletalk/cops.c 'report missing Free firmware' +clean_blob drivers/net/appletalk/cops.c +clean_file drivers/net/appletalk/cops_ffdrv.h +clean_file drivers/net/appletalk/cops_ltdrv.h +clean_kconfig drivers/net/appletalk/Kconfig 'COPS' +clean_mk CONFIG_COPS drivers/net/appletalk/Makefile + +# hamradio + +announce YAM - "YAM driver for AX.25" +drop_fw_file firmware/yam/1200.bin.ihex firmware/yam/1200.bin +drop_fw_file firmware/yam/9600.bin.ihex firmware/yam/9600.bin +reject_firmware drivers/net/hamradio/yam.c +clean_blob drivers/net/hamradio/yam.c +clean_kconfig drivers/net/hamradio/Kconfig 'YAM' +clean_mk CONFIG_YAM drivers/net/hamradio/Makefile + +# irda + +announce USB_IRDA - "IrDA USB dongles" +reject_firmware drivers/net/irda/irda-usb.c +clean_blob drivers/net/irda/irda-usb.c +clean_kconfig drivers/net/irda/Kconfig 'USB_IRDA' +clean_mk CONFIG_USB_IRDA drivers/net/irda/Makefile + +# smsc + +announce PCMCIA_SMC91C92 - "SMC 91Cxx PCMCIA" +drop_fw_file firmware/ositech/Xilinx7OD.bin.ihex firmware/ositech/Xilinx7OD.bin +reject_firmware drivers/net/ethernet/smsc/smc91c92_cs.c +clean_blob drivers/net/ethernet/smsc/smc91c92_cs.c +clean_kconfig drivers/net/ethernet/smsc/Kconfig 'PCMCIA_SMC91C92' +clean_mk CONFIG_PCMCIA_SMC91C92 drivers/net/ethernet/smsc/Makefile + +# near-field communication + +announce NFC_WILINK - "Texas Instruments NFC WiLink driver" +reject_firmware drivers/nfc/nfcwilink.c +clean_blob drivers/nfc/nfcwilink.c +clean_kconfig drivers/nfc/Kconfig 'NFC_WILINK' +clean_mk CONFIG_NFC_WILINK drivers/nfc/Makefile + +# pcmcia + +# CIS files are not software. +# announce PCCARD - "PCCard (PCMCIA/CardBus) support" +# reject_firmware drivers/pcmcia/ds.c +# clean_kconfig drivers/pcmcia/Kconfig 'PCCARD' +# clean_mk CONFIG_PCCARD drivers/pcmcia/Makefile + +announce PCMCIA_3C574 - "3Com 3c574 PCMCIA support" +# This is not software; it's Free, but GPLed without in-tree sources. +drop_fw_file firmware/cis/3CCFEM556.cis.ihex firmware/cis/3CCFEM556.cis +# clean_blob drivers/net/pcmcia/3c574_cs.c +# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C574' +# clean_mk CONFIG_PCMCIA_3C574 drivers/net/pcmcia/Makefile + +announce PCMCIA_3C589 - "3Com 3c589 PCMCIA support" +# This is not software; it's Free, but GPLed without in-tree sources. +drop_fw_file firmware/cis/3CXEM556.cis.ihex firmware/cis/3CXEM556.cis +# clean_blob drivers/net/pcmcia/3c589_cs.c +# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C589' +# clean_mk CONFIG_PCMCIA_3C589 drivers/net/pcmcia/Makefile + +announce PCMCIA_PCNET - "NE2000 compatible PCMCIA support" +# These are not software; they're Free, but GPLed without in-tree sources. +drop_fw_file firmware/cis/LA-PCM.cis.ihex firmware/cis/LA-PCM.cis +drop_fw_file firmware/cis/PCMLM28.cis.ihex firmware/cis/PCMLM28.cis +drop_fw_file firmware/cis/DP83903.cis.ihex firmware/cis/DP83903.cis +drop_fw_file firmware/cis/NE2K.cis.ihex firmware/cis/NE2K.cis +drop_fw_file firmware/cis/tamarack.cis.ihex firmware/cis/tamarack.cis +drop_fw_file firmware/cis/PE-200.cis.ihex firmware/cis/PE-200.cis +drop_fw_file firmware/cis/PE520.cis.ihex firmware/cis/PE520.cis +# clean_blob drivers/net/pcmcia/pcnet_cs.c +# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_PCNET' +# clean_mk CONFIG_PCMCIA_PCNET drivers/net/pcmcia/Makefile + +# usb + +announce USB_KAWETH - "USB KLSI KL5USB101-based ethernet device support" +drop_fw_file firmware/kaweth/new_code.bin.ihex firmware/kaweth/new_code.bin +drop_fw_file firmware/kaweth/new_code_fix.bin.ihex firmware/kaweth/new_code_fix.bin +drop_fw_file firmware/kaweth/trigger_code.bin.ihex firmware/kaweth/trigger_code.bin +drop_fw_file firmware/kaweth/trigger_code_fix.bin.ihex firmware/kaweth/trigger_code_fix.bin +reject_firmware drivers/net/usb/kaweth.c +clean_blob drivers/net/usb/kaweth.c +clean_kconfig drivers/net/usb/Kconfig 'USB_KAWETH' +clean_mk CONFIG_USB_KAWETH drivers/net/usb/Makefile + +# wireless + +announce ATMEL "Atmel at76c50x chipset 802.11b support" +reject_firmware drivers/net/wireless/atmel.c +clean_blob drivers/net/wireless/atmel.c +clean_kconfig drivers/net/wireless/Kconfig 'ATMEL' +clean_mk CONFIG_ATMEL drivers/net/wireless/Makefile + +announce AT76C50X_USB - "Atmel at76c503/at76c505/at76c505a USB cards" +reject_firmware drivers/net/wireless/at76c50x-usb.c +clean_blob drivers/net/wireless/at76c50x-usb.c +clean_kconfig drivers/net/wireless/Kconfig 'AT76C50X_USB' +clean_mk CONFIG_AT76C50X_USB drivers/net/wireless/Makefile + +announce B43 - "Broadcom 43xx wireless support (mac80211 stack)" +maybe_reject_firmware drivers/net/wireless/b43/main.c +clean_sed ' +/^static int b43_upload_microcode(/,/^}$/{ + / if (dev->fw\.opensource) {$/i\ + if (!dev->fw.opensource) {\ + b43err(dev->wl, "Rejected non-Free firmware\\n");\ + err = -EOPNOTSUPP;\ + goto error;\ + } +}' drivers/net/wireless/b43/main.c 'double-check and reject non-Free firmware' +# Major portions of firmware filenames not deblobbed. +clean_blob drivers/net/wireless/b43/main.c +clean_kconfig drivers/net/wireless/b43/Kconfig 'B43' +clean_mk CONFIG_B43 drivers/net/wireless/b43/Makefile + +announce B43LEGACY - "Broadcom 43xx-legacy wireless support (mac80211 stack)" +reject_firmware drivers/net/wireless/b43legacy/main.c +# Major portions of firwmare filenames not deblobbed. +clean_blob drivers/net/wireless/b43legacy/main.c +clean_kconfig drivers/net/wireless/b43legacy/Kconfig 'B43LEGACY' +clean_mk CONFIG_B43LEGACY drivers/net/wireless/b43legacy/Makefile + +announce BRCMSMAC - "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver" +reject_firmware drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c +clean_blob drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c +clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMSMAC' +clean_mk CONFIG_BRCMSMAC drivers/net/wireless/brcm80211/Makefile + +announce BRCMFMAC_SDIO - "Broadcom IEEE802.11n SDIO FullMAC WLAN driver" +reject_firmware drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c +clean_blob drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c +clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC_SDIO' +clean_mk CONFIG_BRCMFMAC_SDIO drivers/net/wireless/brcm80211/brcmfmac/Makefile + +announce BRCMFMAC_USB - "Broadcom IEEE802.11n USB FullMAC WLAN driver" +reject_firmware drivers/net/wireless/brcm80211/brcmfmac/usb.c +clean_blob drivers/net/wireless/brcm80211/brcmfmac/usb.c +clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC_USB' +clean_mk CONFIG_BRCMFMAC_USB drivers/net/wireless/brcm80211/brcmfmac/Makefile + +announce CSR_WIFI - "CSR wireless driver" +reject_firmware drivers/staging/csr/unifi_priv.h +reject_firmware drivers/staging/csr/firmware.c +reject_firmware drivers/staging/csr/putest.c +reject_firmware drivers/staging/csr/sme_native.c +reject_firmware drivers/staging/csr/sme_sys.c +clean_kconfig drivers/staging/csr/Kconfig 'CSR_WIFI' +clean_mk CONFIG_CSR_WIFI drivers/staging/csr/Makefile + +announce HERMES - "Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)" +reject_firmware drivers/net/wireless/orinoco/fw.c +clean_blob drivers/net/wireless/orinoco/fw.c +clean_kconfig drivers/net/wireless/orinoco/Kconfig 'HERMES' +clean_mk CONFIG_HERMES drivers/net/wireless/orinoco/Makefile + +announce ORINOCO_USB - "Agere Orinoco USB support" +reject_firmware drivers/net/wireless/orinoco/orinoco_usb.c +clean_blob drivers/net/wireless/orinoco/orinoco_usb.c +clean_kconfig drivers/net/wireless/orinoco/Kconfig 'ORINOCO_USB' +clean_mk CONFIG_ORINOCO_USB drivers/net/wireless/orinoco/Makefile + +announce WLAGS49_H2 - "Agere Systems HERMES II Wireless PC Card Model 0110" +# Some pieces of the firmware images are most definitely data, but +# others seem to be code. +clean_blob drivers/staging/wlags49_h2/ap_h2.c +clean_blob drivers/staging/wlags49_h2/sta_h2.c +echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/ap_h2.c +echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/sta_h2.c +clean_blob drivers/staging/wlags49_h2/wl_profile.c +clean_sed ' + s,\(.*hcf_status = \)dhf_download_fw(.*&fw_image );,//& /*(DEBLOBBED)*/\n\1HCF_ERR_INCOMP_FW;, +' drivers/staging/wlags49_h2/wl_main.c 'reject built-in non-Free firmware' +clean_kconfig drivers/staging/wlags49_h2/Kconfig 'WLAGS49_H2' +clean_mk CONFIG_WLAGS49_H2 drivers/staging/Makefile + +announce WLAGS49_H25 - "Linksys Systems HERMES II.5 Wireless-G_CompactFlash_Card" +# Some pieces of the firmware images are most definitely data, but +# others seem to be code. +clean_blob drivers/staging/wlags49_h2/ap_h25.c +clean_blob drivers/staging/wlags49_h2/sta_h25.c +echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/ap_h25.c +echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/sta_h25.c +clean_kconfig drivers/staging/wlags49_h25/Kconfig 'WLAGS49_H25' +clean_mk CONFIG_WLAGS49_H25 drivers/staging/Makefile + +announce IPW2100 - "Intel PRO/Wireless 2100 Network Connection" +reject_firmware drivers/net/wireless/ipw2x00/ipw2100.c +clean_blob drivers/net/wireless/ipw2x00/ipw2100.c +clean_kconfig drivers/net/wireless/Kconfig 'IPW2100' +clean_mk CONFIG_IPW2100 drivers/net/wireless/ipw2x00/Makefile + +announce IPW2200 - "Intel PRO/Wireless 2200BG and 2915ABG Network Connection" +reject_firmware drivers/net/wireless/ipw2x00/ipw2200.c +clean_blob drivers/net/wireless/ipw2x00/ipw2200.c +clean_kconfig drivers/net/wireless/Kconfig 'IPW2200' +clean_mk CONFIG_IPW2200 drivers/net/wireless/ipw2x00/Makefile + +announce IWL3945 - "Intel PRO/Wireless 3945ABG/BG Network Connection" +reject_firmware drivers/net/wireless/iwlegacy/3945-mac.c +clean_blob drivers/net/wireless/iwlegacy/3945-mac.c +clean_blob drivers/net/wireless/iwlegacy/3945.h +clean_kconfig drivers/net/wireless/iwlegacy/Kconfig 'IWL3945' +clean_mk CONFIG_IWL3945 drivers/net/wireless/iwlegacy/Makefile + +announce IWLWIFI - "Intel Wireless WiFi Next Gen AGN" +reject_firmware drivers/net/wireless/iwlwifi/iwl-drv.c +clean_blob drivers/net/wireless/iwlwifi/iwl-drv.c +clean_blob drivers/net/wireless/iwlwifi/pcie/5000.c +clean_blob drivers/net/wireless/iwlwifi/pcie/6000.c +clean_blob drivers/net/wireless/iwlwifi/pcie/1000.c +clean_blob drivers/net/wireless/iwlwifi/pcie/2000.c +clean_kconfig drivers/net/wireless/iwlwifi/Kconfig 'IWLWIFI' +clean_mk CONFIG_IWLWIFI drivers/net/wireless/iwlwifi/Makefile + +announce IWL4965 - "Intel Wireless WiFi 4965AGN" +reject_firmware drivers/net/wireless/iwlegacy/4965-mac.c +clean_blob drivers/net/wireless/iwlegacy/4965-mac.c +clean_blob drivers/net/wireless/iwlegacy/4965.c +clean_kconfig drivers/net/wireless/iwlegacy/Kconfig 'IWL4965' +clean_mk CONFIG_IWL4965 drivers/net/wireless/iwlegacy/Makefile + +announce LIBERTAS - "Marvell 8xxx Libertas WLAN driver support" +reject_firmware drivers/net/wireless/libertas/firmware.c +clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS' +clean_mk CONFIG_LIBERTAS drivers/net/wireless/libertas/Makefile + +announce LIBERTAS_CS - "Marvell Libertas 8385 CompactFlash 802.11b/g cards" +clean_blob drivers/net/wireless/libertas/if_cs.c +clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_CS' +clean_mk CONFIG_LIBERTAS_CS drivers/net/wireless/libertas/Makefile + +announce LIBERTAS_SDIO - "Marvell Libertas 8385 and 8686 SDIO 802.11b/g cards" +clean_blob drivers/net/wireless/libertas/if_sdio.c +clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_SDIO' +clean_mk CONFIG_LIBERTAS_SDIO drivers/net/wireless/libertas/Makefile + +announce LIBERTAS_SPI - "Marvell Libertas 8686 SPI 802.11b/g cards" +clean_blob drivers/net/wireless/libertas/if_spi.c +clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_SPI' +clean_mk CONFIG_LIBERTAS_SPI drivers/net/wireless/libertas/Makefile + +announce LIBERTAS_USB - "Marvell Libertas 8388 USB 802.11b/g cards" +clean_blob drivers/net/wireless/libertas/if_usb.c +clean_blob drivers/net/wireless/libertas/README +clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_USB' +clean_mk CONFIG_LIBERTAS_USB drivers/net/wireless/libertas/Makefile + +announce LIBERTAS_THINFIRM_USB - "Marvell Libertas 8388 USB 802.11b/g cards with thin firmware" +reject_firmware drivers/net/wireless/libertas_tf/if_usb.c +clean_blob drivers/net/wireless/libertas_tf/if_usb.c +clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_THINFIRM_USB' +clean_mk CONFIG_LIBERTAS_THINFIRM_USB drivers/net/wireless/libertas_tf/Makefile + +announce MWIFIEX - "Marvell WiFi-Ex Driver" +clean_blob drivers/net/wireless/mwifiex/README +reject_firmware drivers/net/wireless/mwifiex/main.c +clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX' +clean_mk CONFIG_MWIFIEX drivers/net/wireless/mwifiex/Makefile + +announce MWIFIEX_SDIO - "Marvell WiFi-Ex Driver for SD8787" +clean_blob drivers/net/wireless/mwifiex/sdio.h +clean_blob drivers/net/wireless/mwifiex/sdio.c +clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_SDIO' +clean_mk CONFIG_MWIFIEX_SDIO drivers/net/wireless/mwifiex/Makefile + +announce MWIFIEX_PCIE - "Marvell WiFi-Ex Driver for PCI 8766" +clean_blob drivers/net/wireless/mwifiex/pcie.h +clean_blob drivers/net/wireless/mwifiex/pcie.c +clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_PCIE' +clean_mk CONFIG_MWIFIEX_PCIE drivers/net/wireless/mwifiex/Makefile + +announce MWIFIEX_USB - "Marvell WiFi-Ex Driver for USB8797" +clean_blob drivers/net/wireless/mwifiex/usb.h +clean_blob drivers/net/wireless/mwifiex/usb.c +clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_USB' +clean_mk CONFIG_MWIFIEX_USB drivers/net/wireless/mwifiex/Makefile + +announce MWL8K - "Marvell 88W8xxx PCI/PCIe Wireless support" +reject_firmware drivers/net/wireless/mwl8k.c +clean_blob drivers/net/wireless/mwl8k.c +clean_kconfig drivers/net/wireless/Kconfig 'MWL8K' +clean_mk CONFIG_MWL8K drivers/net/wireless/Makefile + +announce AR5523 - "Atheros AR5523 wireless driver support" +reject_firmware drivers/net/wireless/ath/ar5523/ar5523.c +clean_blob drivers/net/wireless/ath/ar5523/ar5523.c +clean_blob drivers/net/wireless/ath/ar5523/ar5523.h +clean_kconfig drivers/net/wireless/ath/ar5523/Kconfig 'AR5523' +clean_mk CONFIG_AR5523 drivers/net/wireless/ath/ar5523/Makefile + +announce ATH6KL - "Atheros ath6kl support" +reject_firmware drivers/net/wireless/ath/ath6kl/init.c +clean_blob drivers/net/wireless/ath/ath6kl/init.c +clean_blob drivers/net/wireless/ath/ath6kl/core.h +clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL' +clean_mk CONFIG_ATH6KL drivers/net/wireless/ath/ath6kl/Makefile + +announce ATH6KL_SDIO - "Atheros ath6kl SDIO support" +clean_blob drivers/net/wireless/ath/ath6kl/sdio.c +clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL_SDIO' +clean_mk CONFIG_ATH6KL_SDIO drivers/net/wireless/ath/ath6kl/Makefile + +announce ATH6KL_USB - "Atheros ath6kl USB support" +clean_blob drivers/net/wireless/ath/ath6kl/usb.c +clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL_USB' +clean_mk CONFIG_ATH6KL_USB drivers/net/wireless/ath/ath6kl/Makefile + +announce ATH9K - "Atheros 802.11n wireless cards support" +reject_firmware drivers/net/wireless/ath/ath9k/init.c +clean_kconfig drivers/net/wireless/ath/ath9k/Kconfig 'ATH9K' +clean_mk CONFIG_ATH9K drivers/net/wireless/ath/ath9k/Makefile + +announce ATH9K_HTC - "Atheros HTC based wireless cards support" +reject_firmware drivers/net/wireless/ath/ath9k/hif_usb.c +clean_blob drivers/net/wireless/ath/ath9k/hif_usb.c +clean_kconfig drivers/net/wireless/ath/ath9k/Kconfig 'ATH9K_HTC' +clean_mk CONFIG_ATH9K_HTC drivers/net/wireless/ath/ath9k/Makefile + +announce PRISM2_USB - "Prism2.5/3 USB driver" +reject_firmware drivers/staging/wlan-ng/prism2fw.c +clean_blob drivers/staging/wlan-ng/prism2fw.c +clean_kconfig drivers/staging/wlan-ng/Kconfig PRISM2_USB +clean_mk CONFIG_PRISM2_USB drivers/staging/wlan-ng/Makefile + +announce P54_PCI - "Prism54 PCI support" +reject_firmware drivers/net/wireless/p54/p54pci.c +clean_blob drivers/net/wireless/p54/p54pci.c +clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_PCI' +clean_mk CONFIG_P54_PCI drivers/net/wireless/p54/Makefile + +announce P54_SPI - "Prism54 SPI (stlc45xx) support" +# There's support for loading custom 3826.eeprom here, with a default +# eeprom that is clearly pure data. Without Free 3826.arm, there's +# little point in trying to retain the ability to load 3826.eeprom, so +# we drop it altogether. +reject_firmware drivers/net/wireless/p54/p54spi.c +clean_blob drivers/net/wireless/p54/p54spi.c +clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_SPI' +clean_mk CONFIG_P54_SPI drivers/net/wireless/p54/Makefile + +announce P54_USB - "Prism54 USB support" +reject_firmware drivers/net/wireless/p54/p54usb.c +clean_blob drivers/net/wireless/p54/p54usb.c +clean_blob drivers/net/wireless/p54/p54usb.h +clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_USB' +clean_mk CONFIG_P54_USB drivers/net/wireless/p54/Makefile + +announce PRISM54 - "Intersil Prism GT/Duette/Indigo PCI/Cardbus" +reject_firmware drivers/net/wireless/prism54/islpci_dev.c +clean_blob drivers/net/wireless/prism54/islpci_dev.c +clean_kconfig drivers/net/wireless/Kconfig 'PRISM54' +clean_mk CONFIG_PRISM54 drivers/net/wireless/prism54/Makefile + +announce RT2X00_LIB_FIRMWARE - "Ralink driver firmware support" +reject_firmware drivers/net/wireless/rt2x00/rt2x00firmware.c +clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT2X00_LIB_FIRMWARE' +clean_mk CONFIG_RT2X00_LIB_FIRMWARE drivers/net/wireless/rt2x00/Makefile + +announce RT61PCI - "Ralink rt2501/rt61 (PCI/PCMCIA) support" +clean_blob drivers/net/wireless/rt2x00/rt61pci.h +clean_blob drivers/net/wireless/rt2x00/rt61pci.c +clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT61PCI' +clean_mk CONFIG_RT61PCI drivers/net/wireless/rt2x00/Makefile + +announce RT73USB - "Ralink rt2501/rt73 (USB) support" +clean_blob drivers/net/wireless/rt2x00/rt73usb.h +clean_blob drivers/net/wireless/rt2x00/rt73usb.c +clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT73USB' +clean_mk CONFIG_RT73USB drivers/net/wireless/rt2x00/Makefile + +announce RT2800PCI - "Ralink rt2800 (PCI/PCMCIA) support" +clean_blob drivers/net/wireless/rt2x00/rt2800pci.h +clean_blob drivers/net/wireless/rt2x00/rt2800pci.c +clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2800PCI +clean_mk CONFIG_RT2800PCI drivers/net/wireless/rt2x00/Makefile + +announce RT2800USB - "Ralink rt2800 (USB) support" +clean_blob drivers/net/wireless/rt2x00/rt2800usb.h +clean_blob drivers/net/wireless/rt2x00/rt2800usb.c +clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2800USB +clean_mk CONFIG_RT2800USB drivers/net/wireless/rt2x00/Makefile + +announce RTL8192CE - "Realtek RTL8192CE/RTL8188CE Wireless Network Adapter" +reject_firmware drivers/net/wireless/rtlwifi/rtl8192ce/sw.c +clean_blob drivers/net/wireless/rtlwifi/rtl8192ce/sw.c +clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192CE +clean_mk CONFIG_RTL8192CE drivers/net/wireless/rtlwifi/rtl8192ce/Makefile + +announce RTL8192CU - "Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter" +reject_firmware drivers/net/wireless/rtlwifi/rtl8192cu/sw.c +clean_blob drivers/net/wireless/rtlwifi/rtl8192cu/sw.c +clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192CU +clean_mk CONFIG_RTL8192CU drivers/net/wireless/rtlwifi/rtl8192cu/Makefile + +announce RTL8192DE - "Realtek RTL8192DE/RTL8188DE PCIe Wireless Network Adapter" +reject_firmware drivers/net/wireless/rtlwifi/rtl8192de/sw.c +clean_blob drivers/net/wireless/rtlwifi/rtl8192de/sw.c +clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192DE +clean_mk CONFIG_RTL8192DE drivers/net/wireless/rtlwifi/rtl8192de/Makefile + +announce RTL8192SE - "Realtek RTL8192SE/RTL8191SE PCIe Wireless Network Adapter" +reject_firmware drivers/net/wireless/rtlwifi/rtl8192se/sw.c +clean_blob drivers/net/wireless/rtlwifi/rtl8192se/sw.c +clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192SE +clean_mk CONFIG_RTL8192SE drivers/net/wireless/rtlwifi/rtl8192se/Makefile + +announce RTL8192E - "RealTek RTL8192E Wireless LAN NIC driver" +reject_firmware drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c +clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h +clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c +clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.c +clean_blob drivers/staging/rtl8192e/rtl8192e/rtl_core.c +clean_kconfig drivers/staging/rtl8192e/Kconfig RTL8192E +clean_mk CONFIG_RTL8192E drivers/staging/rtl8192e/Makefile + +announce RTL8192U - "RealTek RTL8192U Wireless LAN NIC driver" +reject_firmware drivers/staging/rtl8192u/r819xU_firmware.c +clean_blob drivers/staging/rtl8192u/r819xU_firmware.c +clean_kconfig drivers/staging/rtl8192u/Kconfig 'RTL8192U' +clean_mk CONFIG_RTL8192U drivers/staging/rtl8192u/Makefile + +announce R8712U - "RealTek RTL8712U (RTL8192SU) Wireless LAN NIC driver" +reject_firmware drivers/staging/rtl8712/hal_init.c +clean_blob drivers/staging/rtl8712/hal_init.c +clean_kconfig drivers/staging/rtl8712/Kconfig 'R8712U' +clean_mk CONFIG_R8712U drivers/staging/rtl8712/Makefile + +announce RTL8723AE - "Realtek RTL8723AE PCIe Wireless Network Adapter" +reject_firmware drivers/net/wireless/rtlwifi/rtl8723ae/sw.c +clean_blob drivers/net/wireless/rtlwifi/rtl8723ae/sw.c +clean_kconfig drivers/net/wireless/rtlwifi/Kconfig 'RTL8723AE' +clean_mk CONFIG_RTL8723AE drivers/net/wireless/rtlwifi/rtl8723ae/Makefile + +announce VT6656 - "VIA Technologies VT6656 support" +reject_firmware drivers/staging/vt6656/firmware.c +clean_blob drivers/staging/vt6656/firmware.c +clean_kconfig drivers/staging/vt6656/Kconfig 'VT6656' +clean_mk CONFIG_VT6656 drivers/staging/vt6656/Makefile + +announce WL1251 - "TI wl1251 support" +reject_firmware drivers/net/wireless/ti/wl1251/main.c +clean_blob drivers/net/wireless/ti/wl1251/main.c +clean_blob drivers/net/wireless/ti/wl1251/wl1251.h +clean_kconfig drivers/net/wireless/ti/wl1251/Kconfig 'WL1251' +clean_mk CONFIG_WL1251 drivers/net/wireless/ti/wl1251/Makefile + +announce WL12XX - "TI wl12xx support" +clean_blob drivers/net/wireless/ti/wl12xx/main.c +clean_kconfig drivers/net/wireless/ti/wl12xx/Kconfig 'WL12XX' +clean_mk CONFIG_WL12XX drivers/net/wireless/ti/wl12xx/Makefile + +announce WL18XX - "TI wl18xx support" +reject_firmware drivers/net/wireless/ti/wl18xx/main.c +clean_blob drivers/net/wireless/ti/wl18xx/main.c +clean_kconfig drivers/net/wireless/ti/wl18xx/Kconfig 'WL18XX' +clean_mk CONFIG_WL18XX drivers/net/wireless/ti/wl18xx/Makefile + +announce WLCORE - "TI wlcore support" +reject_firmware drivers/net/wireless/ti/wlcore/main.c +clean_blob drivers/net/wireless/ti/wlcore/main.c +clean_blob drivers/net/wireless/ti/wlcore/wlcore_i.h +clean_kconfig drivers/net/wireless/ti/wlcore/Kconfig 'WLCORE' +clean_mk CONFIG_WLCORE drivers/net/wireless/ti/wlcore/Makefile + +announce USB_ZD1201 - "USB ZD1201 based Wireless device support" +reject_firmware drivers/net/wireless/zd1201.c +clean_blob drivers/net/wireless/zd1201.c +clean_kconfig drivers/net/wireless/Kconfig 'USB_ZD1201' +clean_mk CONFIG_USB_ZD1201 drivers/net/wireless/Makefile + +announce ZD1211RW - "ZyDAS ZD1211/ZD1211B USB-wireless support" +reject_firmware drivers/net/wireless/zd1211rw/zd_usb.c +clean_blob drivers/net/wireless/zd1211rw/zd_usb.c +clean_kconfig drivers/net/wireless/zd1211rw/Kconfig 'ZD1211RW' +clean_mk CONFIG_ZD1211RW drivers/net/wireless/zd1211rw/Makefile + +# bluetooth + +announce BT_ATH3K - "Atheros firmware download driver" +reject_firmware drivers/bluetooth/ath3k.c +clean_blob drivers/bluetooth/ath3k.c +clean_kconfig drivers/bluetooth/Kconfig 'BT_ATH3K' +clean_mk CONFIG_BT_ATH3K drivers/bluetooth/Makefile + +announce BT_HCIBCM203X - "HCI BCM203x USB driver" +reject_firmware drivers/bluetooth/bcm203x.c +clean_blob drivers/bluetooth/bcm203x.c +clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBCM203X' +clean_mk CONFIG_BT_HCIBCM203X drivers/bluetooth/Makefile + +announce BT_HCIBFUSB - "HCI BlueFRITZ! USB driver" +reject_firmware drivers/bluetooth/bfusb.c +clean_blob drivers/bluetooth/bfusb.c +clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBFUSB' +clean_mk CONFIG_BT_HCIBFUSB drivers/bluetooth/Makefile + +announce BT_HCIBT3C - "HCI BT3C (PC Card) driver" +reject_firmware drivers/bluetooth/bt3c_cs.c +clean_blob drivers/bluetooth/bt3c_cs.c +clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBT3C' +clean_mk CONFIG_BT_HCIBT3C drivers/bluetooth/Makefile + +announce BT_MRVL_SDIO - "Marvell BT-over-SDIO driver" +reject_firmware drivers/bluetooth/btmrvl_sdio.c +clean_blob drivers/bluetooth/btmrvl_sdio.c +clean_blob Documentation/btmrvl.txt +clean_kconfig drivers/bluetooth/Kconfig 'BT_MRVL_SDIO' +clean_mk CONFIG_BT_MRVL_SDIO drivers/bluetooth/Makefile + +announce TI_ST - "Texas Instruments shared transport line discipline" +reject_firmware drivers/misc/ti-st/st_kim.c +clean_blob drivers/misc/ti-st/st_kim.c +clean_kconfig drivers/misc/ti-st/Kconfig 'TI_ST' +clean_mk CONFIG_TI_ST drivers/misc/ti-st/Makefile + +# wimax + +announce WIMAX_I2400M - "Intel Wireless WiMAX Connection 2400" +reject_firmware drivers/net/wimax/i2400m/fw.c +clean_blob drivers/net/wimax/i2400m/usb.c +clean_blob Documentation/wimax/README.i2400m +clean_kconfig drivers/net/wimax/i2400m/Kconfig 'WIMAX_I2400M' +clean_mk CONFIG_WIMAX_I2400M drivers/net/wimax/i2400m/Makefile + +announce BCM_WIMAX - "Beceem BCS200/BCS220-3 and BCSM250 wimax support" +clean_blob drivers/staging/bcm/Macros.h +# This disables loading of the .cfg file as well, but it's useless without +# the firmware proper. +clean_sed ' +/^static \(inline \)\?struct file \*open_firmware_file/,/^}$/ { + s,\(flp *= *\)filp_open[^;]*,\1/*(DEBLOBBED)*/(void*)-ENOENT, +}' drivers/staging/bcm/Misc.c 'disabled non-Free firmware loading machinery' +clean_kconfig drivers/staging/bcm/Kconfig 'BCM_WIMAX' +clean_mk CONFIG_BCM_WIMAX drivers/staging/bcm/Makefile + +announce WIMAX_GDM72XX_SDIO - "GCT GDM72xx WiMAX support: SDIO interface" +reject_firmware drivers/staging/gdm72xx/sdio_boot.c +clean_blob drivers/staging/gdm72xx/sdio_boot.c +clean_kconfig drivers/staging/gdm72xx/Kconfig 'WIMAX_GDM72XX_SDIO' +clean_mk CONFIG_WIMAX_GDM72XX_SDIO drivers/staging/gdm72xx/Makefile + +announce WIMAX_GDM72XX_USB - "GCT GDM72xx WiMAX support: USB interface" +reject_firmware drivers/staging/gdm72xx/usb_boot.c +clean_blob drivers/staging/gdm72xx/usb_boot.c +clean_kconfig drivers/staging/gdm72xx/Kconfig 'WIMAX_GDM72XX_USB' +clean_mk CONFIG_WIMAX_GDM72XX_USB drivers/staging/gdm72xx/Makefile + +# infiniband + +announce INFINIBAND_QIB - "QLogic PCIe HCA support" +drop_fw_file firmware/qlogic/sd7220.fw.ihex firmware/qlogic/sd7220.fw +reject_firmware drivers/infiniband/hw/qib/qib_sd7220.c +clean_blob drivers/infiniband/hw/qib/qib_sd7220.c +clean_kconfig drivers/infiniband/hw/qib/Kconfig 'INFINIBAND_QIB' +clean_mk CONFIG_INFINIBAND_QIB drivers/infiniband/hw/qib/Makefile + +# CAN + +announce CAN_SOFTING - "Softing Gmbh CAN generic support" +reject_firmware drivers/net/can/softing/softing_fw.c +clean_kconfig drivers/net/can/softing/Kconfig 'CAN_SOFTING' +clean_mk CONFIG_CAN_SOFTING drivers/net/can/softing/Makefile + +announce CAN_SOFTING_CS - "Softing Gmbh CAN pcmcia cards" +clean_blob drivers/net/can/softing/softing_cs.c +clean_blob drivers/net/can/softing/softing_platform.h +clean_sed ' +/^config CAN_SOFTING_CS$/,${ + /You need firmware/i\ + /*(DEBLOBBED)*/ + /You need firmware/,/softing-fw.*tar\.gz/d +}' drivers/net/can/softing/Kconfig 'removed firmware notes' +clean_kconfig drivers/net/can/softing/Kconfig 'CAN_SOFTING_CS' +clean_mk CONFIG_CAN_SOFTING_CS drivers/net/can/softing/Makefile + +######## +# ISDN # +######## + +announce ISDN_DIVAS - "Support Eicon DIVA Server cards" +clean_blob drivers/isdn/hardware/eicon/cardtype.h +clean_blob drivers/isdn/hardware/eicon/dsp_defs.h +clean_kconfig drivers/isdn/hardware/eicon/Kconfig 'ISDN_DIVAS' +clean_mk CONFIG_ISDN_DIVAS drivers/isdn/hardware/eicon/Makefile + +announce MISDN_SPEEDFAX - "Support for Sedlbauer Speedfax+" +reject_firmware drivers/isdn/hardware/mISDN/speedfax.c +clean_blob drivers/isdn/hardware/mISDN/speedfax.c +clean_kconfig drivers/isdn/hardware/mISDN/Kconfig 'MISDN_SPEEDFAX' +clean_mk CONFIG_MISDN_SPEEDFAX drivers/isdn/hardware/mISDN/Makefile + +########## +# Serial # +########## + +announce SERIAL_8250_CS - "8250/16550 PCMCIA device support" +# These are not software; they're Free, but GPLed without in-tree sources. +drop_fw_file firmware/cis/MT5634ZLX.cis.ihex firmware/cis/MT5634ZLX.cis +drop_fw_file firmware/cis/RS-COM-2P.cis.ihex firmware/cis/RS-COM-2P.cis +drop_fw_file firmware/cis/COMpad2.cis.ihex firmware/cis/COMpad2.cis +drop_fw_file firmware/cis/COMpad4.cis.ihex firmware/cis/COMpad4.cis +# These are not software; they're Free, but GPLed without textual sources. +# It could be assumed that these binaries *are* sources, since they +# can be trivially converted back to a textual form, without loss, +# but we're better off safe than sorry, so remove them from our tree. +drop_fw_file firmware/cis/SW_555_SER.cis.ihex firmware/cis/SW_555_SER.cis +drop_fw_file firmware/cis/SW_7xx_SER.cis.ihex firmware/cis/SW_7xx_SER.cis +drop_fw_file firmware/cis/SW_8xx_SER.cis.ihex firmware/cis/SW_8xx_SER.cis +# clean_blob drivers/tty/serial/serial_cs.c +# clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_8250_CS' +# clean_mk CONFIG_SERIAL_8250_CS drivers/tty/serial/Makefile + +announce SERIAL_ICOM - "IBM Multiport Serial Adapter" +reject_firmware drivers/tty/serial/icom.c +clean_blob drivers/tty/serial/icom.c +clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_ICOM' +clean_mk CONFIG_SERIAL_ICOM drivers/tty/serial/Makefile + +announce SERIAL_QE - "Freescale QUICC Engine serial port support" +reject_firmware drivers/tty/serial/ucc_uart.c +clean_blob drivers/tty/serial/ucc_uart.c +clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_QE' +clean_mk CONFIG_SERIAL_QE drivers/tty/serial/Makefile + +######### +# input # +######### + +announce TOUCHSCREEN_ATMEL_MXT - "Atmel mXT I2C Touchscreen" +reject_firmware drivers/input/touchscreen/atmel_mxt_ts.c +clean_blob drivers/input/touchscreen/atmel_mxt_ts.c +clean_kconfig drivers/input/touchscreen/Kconfig 'TOUCHSCREEN_ATMEL_MXT' +clean_mk CONFIG_TOUCHSCREEN_ATMEL_MXT drivers/input/touchscreen/Makefile + +announce LIRC_ZILOG - "Zilog/Hauppauge IR Transmitter" +reject_firmware drivers/staging/media/lirc/lirc_zilog.c +clean_blob drivers/staging/media/lirc/lirc_zilog.c +clean_kconfig drivers/staging/media/lirc/Kconfig 'LIRC_ZILOG' +clean_mk CONFIG_LIRC_ZILOG drivers/staging/media/lirc/Makefile + +#################### +# Data acquisition # +#################### + +announce COMEDI_DAQBOARD2000 - "IOtech DAQboard/2000 support" +reject_firmware drivers/staging/comedi/drivers/daqboard2000.c +clean_blob drivers/staging/comedi/drivers/daqboard2000.c +clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_DAQBOARD2000' +clean_mk CONFIG_COMEDI_DAQBOARD2000 drivers/staging/comedi/drivers/Makefile + +announce COMEDI_JR3_PCI - "JR3/PCI force sensor board support" +reject_firmware drivers/staging/comedi/drivers/jr3_pci.c +clean_blob drivers/staging/comedi/drivers/jr3_pci.c +clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_JR3_PCI' +clean_mk CONFIG_COMEDI_JR3_PCI drivers/staging/comedi/drivers/Makefile + +announce COMEDI_ME_DAQ - "Meilhaus ME-2000i, ME-2600i, ME-3000vm1 support" +reject_firmware drivers/staging/comedi/drivers/me_daq.c +clean_blob drivers/staging/comedi/drivers/me_daq.c +clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_ME_DAQ' +clean_mk CONFIG_COMEDI_ME_DAQ drivers/staging/comedi/drivers/Makefile + +announce COMEDI_NI_PCIDIO - "NI PCI-DIO32HS, PCI-6533, PCI-6534 support" +reject_firmware drivers/staging/comedi/drivers/ni_pcidio.c +clean_blob drivers/staging/comedi/drivers/ni_pcidio.c +clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_NI_PCIDIO' +clean_mk CONFIG_COMEDI_NI_PCIDIO drivers/staging/comedi/drivers/Makefile + +announce COMEDI_USBDUX - "ITL USBDUX support" +reject_firmware drivers/staging/comedi/drivers/usbdux.c +clean_blob drivers/staging/comedi/drivers/usbdux.c +clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUX' +clean_mk CONFIG_COMEDI_USBDUX drivers/staging/comedi/drivers/Makefile + +announce COMEDI_USBDUXFAST - "ITL USB-DUXfast support" +reject_firmware drivers/staging/comedi/drivers/usbduxfast.c +clean_blob drivers/staging/comedi/drivers/usbduxfast.c +clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUXFAST' +clean_mk CONFIG_COMEDI_USBDUXFAST drivers/staging/comedi/drivers/Makefile + +announce COMEDI_USBDUXSIGMA - "ITL USB-DUXsigma support" +reject_firmware drivers/staging/comedi/drivers/usbduxsigma.c +clean_blob drivers/staging/comedi/drivers/usbduxsigma.c +clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUXSIGMA' +clean_mk CONFIG_COMEDI_USBDUXSIGMA drivers/staging/comedi/drivers/Makefile + + +####### +# MMC # +####### + +announce MMC_VUB300 - "VUB300 USB to SDIO/SD/MMC Host Controller support" +clean_sed ' +/^config MMC_VUB300/,/^config /{ + /Some SDIO cards/i\ + /*(DEBLOBBED)*/ + /Some SDIO cards/,/obtainable data rate\.$/d +} +' drivers/mmc/host/Kconfig "removed firmware notes" +reject_firmware drivers/mmc/host/vub300.c +clean_blob drivers/mmc/host/vub300.c +clean_kconfig drivers/mmc/host/Kconfig 'MMC_VUB300' +clean_mk CONFIG_MMC_VUB300 drivers/mmc/host/Makefile + +######## +# SCSI # +######## + +announce SCSI_QLOGICPTI - "PTI Qlogic, ISP Driver" +drop_fw_file firmware/qlogic/isp1000.bin.ihex firmware/qlogic/isp1000.bin +reject_firmware drivers/scsi/qlogicpti.c +clean_blob drivers/scsi/qlogicpti.c +clean_kconfig drivers/scsi/Kconfig 'SCSI_QLOGICPTI' +clean_mk CONFIG_SCSI_QLOGICPTI drivers/scsi/Makefile + +announce SCSI_ADVANSYS - "AdvanSys SCSI" +drop_fw_file firmware/advansys/mcode.bin.ihex firmware/advansys/mcode.bin +drop_fw_file firmware/advansys/3550.bin.ihex firmware/advansys/3550.bin +drop_fw_file firmware/advansys/38C0800.bin.ihex firmware/advansys/38C0800.bin +drop_fw_file firmware/advansys/38C1600.bin.ihex firmware/advansys/38C1600.bin +reject_firmware drivers/scsi/advansys.c +clean_blob drivers/scsi/advansys.c +clean_kconfig drivers/scsi/Kconfig 'SCSI_ADVANSYS' +clean_mk CONFIG_SCSI_ADVANSYS drivers/scsi/Makefile + +announce SCSI_QLOGIC_1280 - "Qlogic QLA 1240/1x80/1x160 SCSI" +drop_fw_file firmware/qlogic/1040.bin.ihex firmware/qlogic/1040.bin +drop_fw_file firmware/qlogic/1280.bin.ihex firmware/qlogic/1280.bin +drop_fw_file firmware/qlogic/12160.bin.ihex firmware/qlogic/12160.bin +reject_firmware drivers/scsi/qla1280.c +clean_blob drivers/scsi/qla1280.c +clean_kconfig drivers/scsi/Kconfig 'SCSI_QLOGIC_1280' +clean_mk CONFIG_SCSI_QLOGIC_1280 drivers/scsi/Makefile + +announce SCSI_AIC94XX - "Adaptec AIC94xx SAS/SATA support" +reject_firmware drivers/scsi/aic94xx/aic94xx_seq.c +clean_blob drivers/scsi/aic94xx/aic94xx_seq.c +clean_blob drivers/scsi/aic94xx/aic94xx_seq.h +clean_kconfig drivers/scsi/aic94xx/Kconfig 'SCSI_AIC94XX' +clean_mk CONFIG_SCSI_AIC94XX drivers/scsi/aic94xx/Makefile + +announce SCSI_BFA_FC - "Brocade BFA Fibre Channel Support" +reject_firmware drivers/scsi/bfa/bfad.c +clean_blob drivers/scsi/bfa/bfad.c +clean_kconfig drivers/scsi/Kconfig 'SCSI_BFA_FC' +clean_mk CONFIG_SCSI_BFA_FC drivers/scsi/bfa/Makefile + +announce SCSI_CHELSIO_FCOE - "Chelsio Communications FCoE support" +reject_firmware drivers/scsi/csiostor/csio_hw.c +clean_blob drivers/scsi/csiostor/csio_hw.h +clean_blob drivers/scsi/csiostor/csio_init.c +clean_kconfig drivers/scsi/csiostor/Kconfig 'SCSI_CHELSIO_FCOE' +clean_mk CONFIG_SCSI_CHELSIO_FCOE drivers/scsi/csiostor/Makefile + +announce SCSI_LPFC - "Emulex LightPulse Fibre Channel Support" +# The firmware name is built out of Vital Product Data read from the +# adapter. The firmware is definitely code, and I couldn't find +# evidence it is Free, so I'm disabling it. It's not clear whether +# this is the hardware or the software inducing to the installation of +# non-Free firmware. +reject_firmware drivers/scsi/lpfc/lpfc.h +reject_firmware drivers/scsi/lpfc/lpfc_crtn.h +reject_firmware drivers/scsi/lpfc/lpfc_init.c +reject_firmware drivers/scsi/lpfc/lpfc_attr.c +clean_kconfig drivers/scsi/Kconfig 'SCSI_LPFC' +clean_mk CONFIG_SCSI_LPFC drivers/scsi/lpfc/Makefile + +announce SCSI_QLA_FC - "QLogic QLA2XXX Fibre Channel Support" +reject_firmware drivers/scsi/qla2xxx/qla_gbl.h +reject_firmware drivers/scsi/qla2xxx/qla_init.c +reject_firmware drivers/scsi/qla2xxx/qla_os.c +reject_firmware drivers/scsi/qla2xxx/qla_nx.c +clean_sed ' +/^config SCSI_QLA_FC$/,/^config /{ + /^ By default, firmware/i\ + /*(DEBLOBBED)*/ + /^ By default, firmware/,/ftp:[/][/].*firmware[/]/d +}' drivers/scsi/qla2xxx/Kconfig 'removed firmware notes' +clean_blob drivers/scsi/qla2xxx/qla_os.c +clean_kconfig drivers/scsi/qla2xxx/Kconfig 'SCSI_QLA_FC' +clean_mk CONFIG_SCSI_QLA_FC drivers/scsi/qla2xxx/Makefile + + +####### +# USB # +####### + +# atm + +announce USB_CXACRU - "Conexant AccessRunner USB support" +reject_firmware drivers/usb/atm/cxacru.c +clean_blob drivers/usb/atm/cxacru.c +clean_kconfig drivers/usb/atm/Kconfig 'USB_CXACRU' +clean_mk CONFIG_USB_CXACRU drivers/usb/atm/Makefile + +announce USB_SPEEDTOUCH - "Speedtouch USB support" +reject_firmware drivers/usb/atm/speedtch.c +clean_blob drivers/usb/atm/speedtch.c +clean_kconfig drivers/usb/atm/Kconfig 'USB_SPEEDTOUCH' +clean_mk CONFIG_USB_SPEEDTOUCH drivers/usb/atm/Makefile + +announce USB_UEAGLEATM - "ADI 930 and eagle USB DSL modem" +reject_firmware drivers/usb/atm/ueagle-atm.c +clean_blob drivers/usb/atm/ueagle-atm.c +clean_kconfig drivers/usb/atm/Kconfig 'USB_UEAGLEATM' +clean_mk CONFIG_USB_UEAGLEATM drivers/usb/atm/Makefile + +# misc + +announce USB_EMI26 - "EMI 2|6 USB Audio interface" +# These files are not under the GPL, better remove them all. +drop_fw_file firmware/emi26/bitstream.HEX firmware/emi26/bitstream.fw +drop_fw_file firmware/emi26/firmware.HEX firmware/emi26/firmware.fw +drop_fw_file firmware/emi26/loader.HEX firmware/emi26/loader.fw +reject_firmware drivers/usb/misc/emi26.c +clean_blob drivers/usb/misc/emi26.c +clean_kconfig drivers/usb/misc/Kconfig 'USB_EMI26' +clean_mk CONFIG_USB_EMI26 drivers/usb/misc/Makefile + +announce USB_EMI62 - "EMI 6|2m USB Audio interface" +# These files are probably not under the GPL, better remove them all. +drop_fw_file firmware/emi62/bitstream.HEX firmware/emi62/bitstream.fw +drop_fw_file firmware/emi62/loader.HEX firmware/emi62/loader.fw +drop_fw_file firmware/emi62/midi.HEX firmware/emi62/midi.fw +drop_fw_file firmware/emi62/spdif.HEX firmware/emi62/spdif.fw +reject_firmware drivers/usb/misc/emi62.c +clean_blob drivers/usb/misc/emi62.c +clean_kconfig drivers/usb/misc/Kconfig 'USB_EMI62' +clean_mk CONFIG_USB_EMI62 drivers/usb/misc/Makefile + +announce USB_EZUSB_FX2 - "Functions for loading firmware on EZUSB chips" +maybe_reject_firmware drivers/usb/misc/ezusb.c + +announce USB_ISIGHTFW - "iSight firmware loading support" +reject_firmware drivers/usb/misc/isight_firmware.c +clean_blob drivers/usb/misc/isight_firmware.c +clean_kconfig drivers/usb/misc/Kconfig 'USB_ISIGHTFW' +clean_mk CONFIG_USB_ISIGHTFW drivers/usb/misc/Makefile + +# storage + +announce USB_STORAGE_ENE_UB6250 - "USB ENE card reader support" +reject_firmware drivers/usb/storage/ene_ub6250.c +clean_blob drivers/usb/storage/ene_ub6250.c +clean_kconfig drivers/usb/storage/Kconfig 'USB_STORAGE_ENE_UB6250' +clean_mk 'CONFIG_USB_STORAGE_ENE_UB6250' drivers/usb/storage/Makefile + +announce USB_ENESTORAGE - "USB ENE card reader support" +clean_blob drivers/staging/keucr/init.h +clean_sed ' +/^int ENE_LoadBinCode(/,/^}$/ { + /kmalloc/i\ + return /*(DEBLOBBED)*/ USB_STOR_TRANSPORT_ERROR; +} +' drivers/staging/keucr/init.c 'disable non-Free firmware loading machinery' +clean_kconfig drivers/staging/keucr/Kconfig 'USB_ENESTORAGE' +clean_mk 'CONFIG_USB_ENESTORAGE' drivers/staging/keucr/Makefile + +# serial + +announce USB_SERIAL_KEYSPAN - "USB Keyspan USA-xxx Serial Driver" +drop_fw_file firmware/keyspan/mpr.HEX firmware/keyspan/mpr.fw +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_MPR' +drop_fw_file firmware/keyspan/usa18x.HEX firmware/keyspan/usa18x.fw +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA18X' +drop_fw_file firmware/keyspan/usa19.HEX firmware/keyspan/usa19.fw +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19' +drop_fw_file firmware/keyspan/usa19qi.HEX firmware/keyspan/usa19qi.fw +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19QI' +drop_fw_file firmware/keyspan/usa19qw.HEX firmware/keyspan/usa19qw.fw +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19QW' +drop_fw_file firmware/keyspan/usa19w.HEX firmware/keyspan/usa19w.fw +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19W' +drop_fw_file firmware/keyspan/usa28.HEX firmware/keyspan/usa28.fw +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28' +drop_fw_file firmware/keyspan/usa28xa.HEX firmware/keyspan/usa28xa.fw +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28XA' +drop_fw_file firmware/keyspan/usa28xb.HEX firmware/keyspan/usa28xb.fw +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28XB' +drop_fw_file firmware/keyspan/usa28x.HEX firmware/keyspan/usa28x.fw +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28X' +drop_fw_file firmware/keyspan/usa49w.HEX firmware/keyspan/usa49w.fw +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA49W' +drop_fw_file firmware/keyspan/usa49wlc.HEX firmware/keyspan/usa49wlc.fw +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA49WLC' +clean_blob drivers/usb/serial/keyspan.c +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN' +clean_mk CONFIG_USB_SERIAL_KEYSPAN drivers/usb/serial/Makefile + +announce USB_SERIAL_EDGEPORT - "USB Inside Out Edgeport Serial Driver" +clean_fw firmware/edgeport/boot.H16 firmware/edgeport/boot.fw +clean_fw firmware/edgeport/boot2.H16 firmware/edgeport/boot2.fw +clean_fw firmware/edgeport/down.H16 firmware/edgeport/down.fw +clean_fw firmware/edgeport/down2.H16 firmware/edgeport/down2.fw +reject_firmware drivers/usb/serial/io_edgeport.c +clean_blob drivers/usb/serial/io_edgeport.c +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_EDGEPORT' +clean_mk CONFIG_USB_SERIAL_EDGEPORT drivers/usb/serial/Makefile + +announce USB_SERIAL_EDGEPORT_TI - "USB Inside Out Edgeport Serial Driver (TI devices)" +clean_fw firmware/edgeport/down3.bin.ihex firmware/edgeport/down3.bin +reject_firmware drivers/usb/serial/io_ti.c +clean_blob drivers/usb/serial/io_ti.c +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_EDGEPORT_TI' +clean_mk CONFIG_USB_SERIAL_EDGEPORT_TI drivers/usb/serial/Makefile + +announce USB_SERIAL_TI - "USB TI 3410/5052 Serial Driver" +drop_fw_file firmware/ti_3410.fw.ihex firmware/ti_3410.fw +drop_fw_file firmware/ti_5052.fw.ihex firmware/ti_5052.fw +drop_fw_file firmware/mts_cdma.fw.ihex firmware/mts_cdma.fw +drop_fw_file firmware/mts_gsm.fw.ihex firmware/mts_gsm.fw +drop_fw_file firmware/mts_edge.fw.ihex firmware/mts_edge.fw +reject_firmware drivers/usb/serial/ti_usb_3410_5052.c +clean_blob drivers/usb/serial/ti_usb_3410_5052.c +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_TI' +clean_mk CONFIG_USB_SERIAL_TI drivers/usb/serial/Makefile + +announce USB_SERIAL_WHITEHEAT - "USB ConnectTech WhiteHEAT Serial Driver" +clean_fw firmware/whiteheat.HEX firmware/whiteheat.fw +clean_fw firmware/whiteheat_loader.HEX firmware/whiteheat_loader.fw +clean_fw firmware/whiteheat_loader_debug.HEX firmware/whiteheat_loader_debug.fw +clean_blob drivers/usb/serial/whiteheat.c +clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_WHITEHEAT' +clean_mk CONFIG_USB_SERIAL_WHITEHEAT drivers/usb/serial/Makefile + +# uwb + +announce UWB_I1480U - Support for Intel Wireless UWB Link 1480 HWA +reject_firmware drivers/uwb/i1480/dfu/i1480-dfu.h +reject_firmware drivers/uwb/i1480/dfu/mac.c +reject_firmware drivers/uwb/i1480/dfu/phy.c +clean_blob drivers/uwb/i1480/dfu/usb.c +clean_kconfig drivers/uwb/Kconfig 'UWB_I1480U' +clean_mk CONFIG_UWB_I1480U drivers/uwb/i1480/dfu/Makefile + + + +############## +# RemoteProc # +############## + +announce STE_MODEM_RPROC - "STE-Modem remoteproc support" +maybe_reject_firmware drivers/remoteproc/remoteproc_core.c +undefine_macro SPROC_MODEM_FIRMWARE "\"/*(DEBLOBBED)*/\"" \ + "disabled non-Free firmware" drivers/remoteproc/ste_modem_rproc.c +clean_kconfig drivers/remoteproc/Kconfig 'STE_MODEM_RPROC' +clean_mk CONFIG_STE_MODEM_RPROC drivers/remoteproc/Makefile + + +######### +# Sound # +######### + +announce SND_ASIHPI - "AudioScience ASIxxxx" +reject_firmware sound/pci/asihpi/hpidspcd.c +clean_blob sound/pci/asihpi/hpidspcd.c +clean_blob sound/pci/asihpi/hpioctl.c +clean_kconfig sound/pci/Kconfig 'SND_ASIHPI' +clean_mk CONFIG_SND_ASIHPI sound/pci/asihpi/Makefile + +announce SND_CS46XX - "Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x" +# This appears to have been extracted from some non-Free driver +clean_file sound/pci/cs46xx/cs46xx_image.h +# The following blobs are definitely extracted from non-Free drivers. +clean_file sound/pci/cs46xx/imgs/cwc4630.h +clean_file sound/pci/cs46xx/imgs/cwcasync.h +clean_file sound/pci/cs46xx/imgs/cwcsnoop.h +clean_sed ' +/^\(int \)\?snd_cs46xx_download_image([^;]*$/,/^}$/{ + /for.*BA1_MEMORY_COUNT/i\ +#if 0 + /^}$/{ + i\ +#else\ + snd_printk(KERN_ERR "cs46xx: Missing Free firmware\\n");\ + return -EINVAL;\ +#endif + } +} +s/cs46xx_dsp_load_module(chip, [&]cwc\(4630\|async\|snoop\)_module)/(snd_printk(KERN_ERR "cs46xx: Missing Free firmware\\n"),-EINVAL)/ +' sound/pci/cs46xx/cs46xx_lib.c 'report missing Free firmware' +clean_blob sound/pci/cs46xx/cs46xx_lib.c +clean_kconfig sound/pci/Kconfig 'SND_CS46XX' +clean_mk 'CONFIG_SND_CS46XX' sound/pci/cs46xx/Makefile + +announce SND_KORG1212 - "Korg 1212 IO" +drop_fw_file firmware/korg/k1212.dsp.ihex firmware/korg/k1212.dsp +reject_firmware sound/pci/korg1212/korg1212.c +clean_blob sound/pci/korg1212/korg1212.c +clean_kconfig sound/pci/Kconfig 'SND_KORG1212' +clean_mk 'CONFIG_SND_KORG1212' sound/pci/korg1212/Makefile + +announce SND_MAESTRO3 - "ESS Allegro/Maestro3" +drop_fw_file firmware/ess/maestro3_assp_kernel.fw.ihex firmware/ess/maestro3_assp_kernel.fw +drop_fw_file firmware/ess/maestro3_assp_minisrc.fw.ihex firmware/ess/maestro3_assp_minisrc.fw +reject_firmware sound/pci/maestro3.c +clean_blob sound/pci/maestro3.c +clean_kconfig sound/pci/Kconfig 'SND_MAESTRO3' +clean_mk 'CONFIG_SND_MAESTRO3' sound/pci/Makefile + +announce SND_YMFPCI - "Yamaha YMF724/740/744/754" +drop_fw_file firmware/yamaha/ds1_ctrl.fw.ihex firmware/yamaha/ds1_ctrl.fw +drop_fw_file firmware/yamaha/ds1_dsp.fw.ihex firmware/yamaha/ds1_dsp.fw +drop_fw_file firmware/yamaha/ds1e_ctrl.fw.ihex firmware/yamaha/ds1e_ctrl.fw +reject_firmware sound/pci/ymfpci/ymfpci_main.c +clean_blob sound/pci/ymfpci/ymfpci_main.c +clean_kconfig sound/pci/Kconfig 'SND_YMFPCI' +clean_mk 'CONFIG_SND_YMFPCI' sound/pci/ymfpci/Makefile + +announce SND_SB16_CSP - "SB16 Advanced Signal Processor" +drop_fw_file firmware/sb16/alaw_main.csp.ihex firmware/sb16/alaw_main.csp +drop_fw_file firmware/sb16/mulaw_main.csp.ihex firmware/sb16/mulaw_main.csp +drop_fw_file firmware/sb16/ima_adpcm_init.csp.ihex firmware/sb16/ima_adpcm_init.csp +drop_fw_file firmware/sb16/ima_adpcm_capture.csp.ihex firmware/sb16/ima_adpcm_capture.csp +drop_fw_file firmware/sb16/ima_adpcm_playback.csp.ihex firmware/sb16/ima_adpcm_playback.csp +reject_firmware sound/isa/sb/sb16_csp.c +clean_blob sound/isa/sb/sb16_csp.c +clean_kconfig sound/isa/Kconfig 'SND_SB16_CSP' +clean_mk 'CONFIG_SND_SB16_CSP' sound/isa/sb/Makefile + +announce SND_WAVEFRONT - "Turtle Beach Maui,Tropez,Tropez+ (Wavefront)" +drop_fw_file firmware/yamaha/yss225_registers.bin.ihex firmware/yamaha/yss225_registers.bin +reject_firmware sound/isa/wavefront/wavefront_fx.c +clean_blob sound/isa/wavefront/wavefront_fx.c +reject_firmware sound/isa/wavefront/wavefront_synth.c +clean_blob sound/isa/wavefront/wavefront_synth.c +clean_kconfig sound/isa/Kconfig 'SND_WAVEFRONT' +clean_mk 'CONFIG_SND_WAVEFRONT' sound/isa/wavefront/Makefile + +announce SND_VX_LIB - Digigram VX soundcards +reject_firmware sound/drivers/vx/vx_hwdep.c +clean_blob sound/drivers/vx/vx_hwdep.c +clean_kconfig sound/drivers/Kconfig 'SND_VX_LIB' +clean_mk CONFIG_SND_VX_LIB sound/drivers/vx/Makefile + +announce SND_DARLA20 - "(Echoaudio) Darla20" +clean_blob sound/pci/echoaudio/darla20.c +clean_kconfig sound/pci/Kconfig 'SND_DARLA20' +clean_mk CONFIG_SND_DARLA20 sound/pci/echoaudio/Makefile + +announce SND_DARLA24 - "(Echoaudio) Darla24" +clean_blob sound/pci/echoaudio/darla24.c +clean_kconfig sound/pci/Kconfig 'SND_DARLA24' +clean_mk CONFIG_SND_DARLA24 sound/pci/echoaudio/Makefile + +announce SND_ECHO3G - "(Echoaudio) 3G cards" +clean_blob sound/pci/echoaudio/echo3g.c +clean_kconfig sound/pci/Kconfig 'SND_ECHO3G' +clean_mk CONFIG_SND_ECHO3G sound/pci/echoaudio/Makefile + +announce SND_GINA20 - "(Echoaudio) Gina20" +clean_blob sound/pci/echoaudio/gina20.c +clean_kconfig sound/pci/Kconfig 'SND_GINA20' +clean_mk CONFIG_SND_GINA20 sound/pci/echoaudio/Makefile + +announce SND_GINA24 - "(Echoaudio) Gina24" +clean_blob sound/pci/echoaudio/gina24.c +clean_kconfig sound/pci/Kconfig 'SND_GINA24' +clean_mk CONFIG_SND_GINA24 sound/pci/echoaudio/Makefile + +announce SND_INDIGO - "(Echoaudio) Indigo" +clean_blob sound/pci/echoaudio/indigo.c +clean_kconfig sound/pci/Kconfig 'SND_INDIGO' +clean_mk CONFIG_SND_INDIGO sound/pci/echoaudio/Makefile + +announce SND_INDIGODJ - "(Echoaudio) Indigo DJ" +clean_blob sound/pci/echoaudio/indigodj.c +clean_kconfig sound/pci/Kconfig 'SND_INDIGODJ' +clean_mk CONFIG_SND_INDIGODJ sound/pci/echoaudio/Makefile + +announce SND_INDIGODJX - "(Echoaudio) Indigo DJx" +clean_blob sound/pci/echoaudio/indigodjx.c +clean_kconfig sound/pci/Kconfig 'SND_INDIGODJX' +clean_mk CONFIG_SND_INDIGODJX sound/pci/echoaudio/Makefile + +announce SND_INDIGOIO - "(Echoaudio) Indigo IO" +clean_blob sound/pci/echoaudio/indigoio.c +clean_kconfig sound/pci/Kconfig 'SND_INDIGOIO' +clean_mk CONFIG_SND_INDIGOIO sound/pci/echoaudio/Makefile + +announce SND_INDIGOIOX - "(Echoaudio) Indigo IOx" +clean_blob sound/pci/echoaudio/indigoiox.c +clean_kconfig sound/pci/Kconfig 'SND_INDIGOIOX' +clean_mk CONFIG_SND_INDIGOIOX sound/pci/echoaudio/Makefile + +announce SND_LAYLA20 - "(Echoaudio) Layla20" +clean_blob sound/pci/echoaudio/layla20.c +clean_kconfig sound/pci/Kconfig 'SND_LAYLA20' +clean_mk CONFIG_SND_LAYLA20 sound/pci/echoaudio/Makefile + +announce SND_LAYLA24 - "(Echoaudio) Layla24" +clean_blob sound/pci/echoaudio/layla24.c +clean_kconfig sound/pci/Kconfig 'SND_LAYLA24' +clean_mk CONFIG_SND_LAYLA24 sound/pci/echoaudio/Makefile + +announce SND_MIA - "(Echoaudio) Mia" +clean_blob sound/pci/echoaudio/mia.c +clean_kconfig sound/pci/Kconfig 'SND_MIA' +clean_mk CONFIG_SND_MIA sound/pci/echoaudio/Makefile + +announce SND_MONA - "(Echoaudio) Mona" +clean_blob sound/pci/echoaudio/mona.c +clean_kconfig sound/pci/Kconfig 'SND_MONA' +clean_mk CONFIG_SND_MONA sound/pci/echoaudio/Makefile + +announce SND_'<(Echoaudio)>' - "(Echoaudio) all of the above " +reject_firmware sound/pci/echoaudio/echoaudio.c +clean_blob sound/pci/echoaudio/echoaudio.c + +announce SND_EMU10K1 - "Emu10k1 (SB Live!, Audigy, E-mu APS)" +reject_firmware sound/pci/emu10k1/emu10k1_main.c +clean_blob sound/pci/emu10k1/emu10k1_main.c +clean_kconfig sound/pci/Kconfig 'SND_EMU10K1' +clean_mk CONFIG_SND_EMU10K1 sound/pci/emu10k1/Makefile + +announce SND_MIXART - "Digigram miXart" +reject_firmware sound/pci/mixart/mixart_hwdep.c +clean_blob sound/pci/mixart/mixart_hwdep.c +clean_kconfig sound/pci/Kconfig 'SND_MIXART' +clean_mk CONFIG_SND_MIXART sound/pci/mixart/Makefile + +announce SND_PCXHR - "Digigram PCXHR" +reject_firmware sound/pci/pcxhr/pcxhr_hwdep.c +clean_blob sound/pci/pcxhr/pcxhr_hwdep.c +clean_kconfig sound/pci/Kconfig 'SND_PCXHR' +clean_mk CONFIG_SND_PCXHR sound/pci/pcxhr/Makefile + +announce SND_RIPTIDE - "Conexant Riptide" +reject_firmware sound/pci/riptide/riptide.c +clean_blob sound/pci/riptide/riptide.c +clean_kconfig sound/pci/Kconfig 'SND_RIPTIDE' +clean_mk CONFIG_SND_RIPTIDE sound/pci/riptide/Makefile + +# This is ok, patch filenames are supplied as module parameters, and +# they are text files with patch instructions. +#announce SND_HDA_PATCH_LOADER - "Support initialization patch loading for HD-audio" +#reject_firmware sound/pci/hda/hda_hwdep.c +#clean_kconfig sound/pci/hda/Kconfig 'SND_HDA_PATCH_LOADER' + +announce SND_HDSP - "RME Hammerfall DSP Audio" +reject_firmware sound/pci/rme9652/hdsp.c +clean_blob sound/pci/rme9652/hdsp.c +clean_kconfig sound/pci/Kconfig 'SND_HDSP' +clean_mk CONFIG_SND_HDSP sound/pci/rme9652/Makefile + +announce SND_AICA - "Dreamcast Yamaha AICA sound" +reject_firmware sound/sh/aica.c +clean_blob sound/sh/aica.c +clean_kconfig sound/sh/Kconfig 'SND_AICA' +clean_mk CONFIG_SND_AICA sound/sh/Makefile + +announce SND_MSND_PINNACLE - "Support for Turtle Beach MultiSound Pinnacle" +clean_blob sound/isa/msnd/msnd_pinnacle.h +reject_firmware sound/isa/msnd/msnd_pinnacle.c +clean_blob sound/isa/msnd/msnd_pinnacle.c +clean_kconfig sound/isa/Kconfig 'SND_MSND_PINNACLE' +clean_mk CONFIG_SND_MSND_PINNACLE sound/isa/msnd/Makefile + +announce SND_MSND_CLASSIC - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey" +clean_blob sound/isa/msnd/msnd_classic.h +clean_kconfig sound/isa/Kconfig 'SND_MSND_CLASSIC' +clean_mk CONFIG_SND_MSND_CLASSIC sound/isa/msnd/Makefile + +announce SOUND_MSNDCLAS - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey (oss)" +clean_blob sound/oss/msnd_classic.h +clean_kconfig sound/oss/Kconfig 'SOUND_MSNDCLAS' +clean_sed ' +/^config MSNDCLAS_INIT_FILE$/, /^config / { + /^ default.*msndinit\.bin/ s,".*","/*(DEBLOBBED)*/",; +} +/^config MSNDCLAS_PERM_FILE$/, /^config / { + /^ default.*msndperm\.bin/ s,".*","/*(DEBLOBBED)*/",; +}' sound/oss/Kconfig 'removed default firmware' +clean_mk CONFIG_SOUND_MSNDCLAS sound/oss/Makefile + +announce SOUND_MSNDPIN - "Support for Turtle Beach MultiSound Pinnacle (oss)" +clean_blob sound/oss/msnd_pinnacle.h +clean_kconfig sound/oss/Kconfig 'SOUND_MSNDPIN' +clean_sed ' +/^config MSNDPIN_INIT_FILE$/, /^config / { + /^ default.*pndspini\.bin/ s,".*","/*(DEBLOBBED)*/",; +} +/^config MSNDPIN_PERM_FILE$/, /^config / { + /^ default.*pndsperm\.bin/ s,".*","/*(DEBLOBBED)*/",; +}' sound/oss/Kconfig 'removed default firmware' +clean_mk CONFIG_SOUND_MSNDPIN sound/oss/Makefile + +announce SND_SSCAPE - "Ensoniq SoundScape driver" +reject_firmware sound/isa/sscape.c +clean_blob sound/isa/sscape.c +clean_sed ' +/^config SND_SSCAPE$/, /^config / { + s,"\(scope\|sndscape\)\.co[d?]","/*(DEBLOBBED)*/",g; +}' sound/isa/Kconfig 'removed firmware names' +clean_kconfig sound/isa/Kconfig 'SND_SSCAPE' +clean_mk CONFIG_SND_SSCAPE sound/isa/Makefile + +announce SND_SOC_ADAU1701 - "ADAU1701 SigmaDSP processor" +clean_blob sound/soc/codecs/adau1701.c +clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_ADAU1701' +clean_mk CONFIG_SND_SOC_ADAU1701 sound/soc/codecs/Makefile + +announce SND_SOC_SIGMADSP - "SigmaStudio firmware loader" +maybe_reject_firmware sound/soc/codecs/sigmadsp.c + +announce SND_SOC_WM0010 - "WM0010 DSP driver" +reject_firmware sound/soc/codecs/wm0010.c +clean_blob sound/soc/codecs/wm0010.c +clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM0010' +clean_mk CONFIG_SND_SOC_WM0010 sound/soc/codecs/Makefile + +# It's not clear that wm2000_anc.bin is pure data. +# Check with developer, clean up for now. +announce SND_SOC_WM2000 - "WM2000 ALSA Soc Audio codecs" +reject_firmware sound/soc/codecs/wm2000.c +clean_blob sound/soc/codecs/wm2000.c +clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM2000' +clean_mk CONFIG_SND_SOC_WM2000 sound/soc/codecs/Makefile + +announce SND_SOC_WM8994 - "WM8994 ALSA Soc Audio codecs" +reject_firmware sound/soc/codecs/wm8958-dsp2.c +clean_blob sound/soc/codecs/wm8958-dsp2.c +clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM8994' +clean_mk CONFIG_SND_SOC_WM8994 sound/soc/codecs/Makefile + +# The coeff files might be pure data, but the wmfw surely aren't. +announce SND_SOC_WM_ADSP - "Wolfson ADSP support" +reject_firmware sound/soc/codecs/wm_adsp.c +clean_blob sound/soc/codecs/wm_adsp.c +clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM_ADSP' +clean_mk CONFIG_SND_SOC_WM_ADSP sound/soc/codecs/Makefile + +announce SND_SOC_SH4_SIU - "ALSA SoC driver for Renesas SH7343, SH7722 SIU peripheral" +reject_firmware sound/soc/sh/siu_dai.c +clean_blob sound/soc/sh/siu_dai.c +clean_kconfig sound/soc/sh/Kconfig 'SND_SOC_SH4_SIU' +clean_mk CONFIG_SND_SOC_SH4_SIU sound/soc/sh/Makefile + +announce SOUND_TRIX - "MediaTrix AudioTrix Pro support" +clean_blob sound/oss/trix.c +clean_kconfig sound/oss/Kconfig 'SOUND_TRIX' +clean_sed ' +/^config TRIX_BOOT_FILE$/, /^config / { + /^ default.*trxpro\.hex/ s,".*","/*(DEBLOBBED)*/",; +}' sound/oss/Kconfig 'removed default firmware' +clean_mk CONFIG_SOUND_TRIX sound/oss/Makefile + +announce SOUND_TRIX - "See above," +announce SOUND_PAS - "ProAudioSpectrum 16 support," +announce SOUND_SB - "100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support" +clean_blob sound/oss/sb_common.c +clean_kconfig sound/oss/Kconfig 'SOUND_PAS' +clean_kconfig sound/oss/Kconfig 'SOUND_SB' +clean_mk CONFIG_SOUND_PAS sound/oss/Makefile +clean_mk CONFIG_SOUND_SB sound/oss/Makefile + +announce SOUND_PSS - "PSS (AD1848, ADSP-2115, ESC614) support" +clean_sed 's,^\( [*] .*synth"\)\.$,\1/*.,' sound/oss/pss.c 'avoid nested comments' +clean_blob sound/oss/pss.c +clean_kconfig sound/oss/Kconfig 'SOUND_PSS' +clean_sed ' +/^config PSS_BOOT_FILE$/, /^config / { + /^ default.*dsp001\.ld/ s,".*","/*(DEBLOBBED)*/",; +}' sound/oss/Kconfig 'removed default firmware' +clean_mk CONFIG_SOUND_PSS sound/oss/Makefile + +announce SND_USB_6FIRE - "TerraTec DMX 6Fire USB" +reject_firmware sound/usb/6fire/firmware.c +clean_blob sound/usb/6fire/firmware.c +clean_kconfig sound/usb/Kconfig 'SND_USB_6FIRE' +clean_mk 'CONFIG_SND_USB_6FIRE' sound/usb/6fire/Makefile + +################# +# Documentation # +################# + +announce Documentation - "non-Free firmware scripts and documentation" +clean_blob Documentation/dvb/avermedia.txt +clean_blob Documentation/dvb/opera-firmware.txt +clean_blob Documentation/sound/alsa/ALSA-Configuration.txt +clean_blob Documentation/sound/oss/MultiSound +clean_blob Documentation/sound/oss/PSS +clean_blob Documentation/sound/oss/PSS-updates +clean_blob Documentation/sound/oss/README.OSS +clean_file Documentation/dvb/get_dvb_firmware +clean_file Documentation/video4linux/extract_xc3028.pl +clean_sed s,usb8388,whatever,g drivers/base/Kconfig 'removed blob name' +clean_blob firmware/README.AddingFirmware +clean_blob firmware/WHENCE + +if $errors; then + echo errors above were ignored because of --force >&2 +fi + +exit 0 diff --git a/freed-ora/current/master/deblob-check b/freed-ora/current/master/deblob-check index 794eab404..ee62c57fa 100755 --- a/freed-ora/current/master/deblob-check +++ b/freed-ora/current/master/deblob-check @@ -1,13 +1,13 @@ #! /bin/sh -# deblob-check version 2012-11-27 +# deblob-check version 2013-02-06 # Inspired in gNewSense's find-firmware script. # Written by Alexandre Oliva <lxoliva@fsfla.org> # Check http://www.fsfla.org/svn/fsfla/software/linux-libre for newer # versions. -# Copyright 2008-2012 Alexandre Oliva <lxoliva@fsfla.org> +# Copyright 2008-2013 Alexandre Oliva <lxoliva@fsfla.org> # # This program is part of GNU Linux-libre, a GNU project that # publishes scripts to clean up Linux so as to make it suitable for @@ -1864,7 +1864,7 @@ set_except () { defsnc 'static[ ]const[ ]u8[ ]viaLUT\[\][ ]=' drivers/hwmon/via686a.c initnc 'static[ ]struct[ ][{][ ]int[ ]xres,[ ]yres,[ ]left,[ ]right,[ ]upper,[ ]lower,[ ]hslen,[ ]vslen,[ ]vfreq[;][ ][}][ ]timmings\[\][ ]__initdata[ ]=[ ][{]' initnc 'static[ ]struct[ ]platinum_regvals[ ]platinum_reg_init_[0-9]*[ ]=[ ][{]' - initnc '[}][ ]sisfb_ddc[sf]modes\[\][ ]__devinitdata[ ]=' + defsnc '[}][ ]sisfb_ddc[sf]modes\[\][ ]\(__devinitdata[ ]\)\?=' drivers/video/sis/sis_main.h defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c initnc 'static[ ]u32[ ]LABELPATCHES\[\][ ]__attribute[(][(]unused[)][)][ ]=' @@ -2242,7 +2242,7 @@ set_except () { blobname 'mwl8k[/]\(helper\|fmimage\)_\(%u\|[0-9]\+\)\.fw' drivers/net/wireless/mwl8k.c blobname '3826\.arm' 'drivers/\(net/wireless/p54/p54spi\|staging/stlc45xx/stlc45xx\)\.c' defsnc 'static[ ]unsigned[ ]char[ ]p54spi_eeprom\[\][ ]=' drivers/net/wireless/p54/p54spi_eeprom.h - blobname '\(comedi[/]\)\?jr3pci\.idm' drivers/staging/comedi/drivers/jr3_pci.c + blobname '\(comedi[/]\)\?jr3pci\.idm\(["]\.[\n][ ][*][/]\)\?' drivers/staging/comedi/drivers/jr3_pci.c blobname 'usbdux\(fast\)\?_firmware\.\(hex\|bin\)' 'drivers/staging/comedi/drivers/usbdux\(fast\)\?\.c' blobname 'RT30xxEEPROM\.bin' drivers/staging/rt3070/common/eeprom.c defsnc 'static[ ]const[ ]u8[ ]default_cal_\(channels\|rssi\)\[\][ ]=' drivers/staging/stlc45xx/stlc45xx.c @@ -2346,7 +2346,7 @@ set_except () { defsnc 'static[ ]long[ ]limiter_times\[\][ ]=' drivers/media/radio/si4713-i2c.c blobname 'c[tb]fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad_fwimg.c defsnc 'static[ ]const[ ]u16[ ]\(VDCDC[1x]\|LDO[12]\)_VSEL_table\[\][ ]=' 'drivers/regulator/tps650\(23\|7x\)-regulator\.c' - defsnc 'static[ ]struct[ ]lms283gf05_seq[ ]disp_\(init\|pwdn\)seq\[\][ ]=' drivers/video/backlight/lms283gf05.c + defsnc 'static[ ]\(const[ ]\)\?struct[ ]lms283gf05_seq[ ]disp_\(init\|pwdn\)seq\[\][ ]=' drivers/video/backlight/lms283gf05.c defsnc '[}][ ]csc_table\[\][ ]=' drivers/video/msm/mdp_csc_table.h defsnc '\(static[ ]\)\?struct[ ]mdp_table_entry[ ]mdp_\(\(upscale\|gaussian_blur\)_table\|downscale_[xy]_table_PT[2468]TO\(PT[468]\|1\)\)\[\][ ]=' drivers/video/msm/mdp_scale_tables.c accept '[ ][ ]card->firmware[ ]=[ ]data->firmware[;]' drivers/bluetooth/btmrvl_sdio.c @@ -2431,7 +2431,7 @@ set_except () { # New in 2.6.34 blobname 'mts_mt9234\(mu\|zba\)\.fw' drivers/usb/serial/ti_usb_3410_5052.c - blobname 'cxgb4[/]t4fw\.bin' drivers/net/cxgb4/cxgb4_main.c + blobname 'cxgb4[/]t4fw\.bin' 'drivers/\(net/cxgb4/cxgb4_main\.c\|scsi/csiostor/csio_hw\.h\)' defsnc '[ ]static[ ]const[ ]unsigned[ ]int[ ]reg_ranges\[\][ ]=' drivers/net/cxgb4/cxgb4_main.c defsnc '[ ]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]=' drivers/net/cxgb4/t4_hw.c # above in -rc5 @@ -2507,23 +2507,23 @@ set_except () { defsnc '[ ]*static[ ]const[ ]char[ ]sha256_zero\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/n2_core.c defsnc '[}][ ]XGI\(fb_vrate\|_TV_filter\)\[\][ ]=' drivers/staging/xgifb/XGI_main.h defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_\(MD\|[CEV]G\)A_DAC\[\][ ]*=' drivers/staging/xgifb/vb_setmode.c - defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKDataStruct[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h - defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h - defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKData\(Struct\)\?[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=' drivers/staging/xgifb/vb_table.h defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330\(New\)\?_SR15\(_1\)\?\[8\]\[8\][ ]*=' drivers/staging/xgifb/vb_table.h defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_cr40_1\[15\]\[8\][ ]*=' drivers/staging/xgifb/vb_table.h - defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h - defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_ExtStruct[ ][ ]XGI330_EModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h - defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_StandTableStruct[ ]XGI330_StandTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h - defsnc '\([/][*]\)\?\(static[ ]\)\?\(struct[ ]\)\?XGI330_LCDDataStruct[ ][ ]XGI_\(\(St2\?\|Ext\)LCD\(1024x768\|1280x1024\)\|NoScaling\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ExtStruct[ ][ ]\?XGI330_EModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI\|SiS\)_StandTable\(Struct\|_S\)[ ]XGI330_StandTable\(\[\]\)\?[ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\([/][*]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LCDData\(Struct\)\?[ ][ ]\?XGI_\(\(St2\?\|Ext\)LCD\(1024x768\|1280x1024\)\|NoScaling\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI330_TVDataStruct[ ][ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525[ip]\|750p\)\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(750p\|525[ip]\)\)Timing\[\][ ][ ]*=' drivers/staging/xgifb/vb_table.h defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_HiTVGroup3\(Data\|Simu\|Text\)\[\][ ]*=' drivers/staging/xgifb/vb_table.h defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_Ren\(525\|750\)pGroup3\[\][ ]*=' drivers/staging/xgifb/vb_table.h defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_PanelDelayTblStruct[ ]XGI330_PanelDelayTbl\[\]' drivers/staging/xgifb/vb_table.h - defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI330_LVDSDataStruct[ ][ ]XGI\(330\)\?_LVDS\(320x480\|800x600\|1024x768\|1280x\(1024\|768[NS]\?\)\|1400x1050\|640x480\)Data_[12]\[\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LVDSData\(Struct\)\?[ ][ ]\?XGI\(330\)\?_LVDS\(320x480\|800x600\|1024x768\|1280x\(1024\|768[NS]\?\)\|1400x1050\|640x480\)Data_[12]\[\][ ]*=' drivers/staging/xgifb/vb_table.h defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_LVDSCRT1DataStruct[ ][ ]XGI_CHTVCRT1[UO]\(NTSC\|PAL\)\[\][ ]*=' drivers/staging/xgifb/vb_table.h - defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_ModeResInfoStruct[ ]XGI330_ModeResInfo\[\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ModeResInfo\(Struct\|_S\)[ ]XGI330_ModeResInfo\[\][ ]*=' drivers/staging/xgifb/vb_table.h defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)' defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)' defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)' @@ -2842,7 +2842,6 @@ set_except () { accept 'struct[ ]isci_orom[ ][*]isci_request_firmware[(]' 'drivers/scsi/isci/probe_roms\.[ch]' accept '[ ]if[ ][(]request_firmware[(][&]fw[,][ ]ISCI_FW_NAME[,]' drivers/scsi/isci/probe_roms.c accept '#define[ ]ISCI_FW_NAME[ ][ ]["]isci[/]isci_firmware\.bin["]' drivers/scsi/isci/probe_roms.h - defsnc 'static[ ]struct[ ]XGI_ExtStruct[ ]XGI330_EModeIDTable\[\][ ]=' drivers/staging/xgifb/vb_table.h defsnc 'static[ ]struct[ ]pll_limit[ ]\(cle266\|k800\|cx700\|vx855\)_pll_limits\[\][ ]=' drivers/video/via/hw.c accept '[ ][ ]-e[ ]["][$]tmp_dir[/]lib[/]modules[/][$]KERNELRELEASE[/]modules\.dep\.bin["]' scripts/depmod.sh blobname 'wm8958_\(enh_eq\|mbc\(_vss\)\?\)\.wfw' sound/soc/codecs/wm8958-dsp2.c @@ -3047,9 +3046,8 @@ set_except () { blobname 'TINfcInit_%d\.%d\.%d\.%d\.bts' drivers/nfc/nfcwilink.c defsnc 'static[ ]int[ ]ab8500_\(charger\|fg_lowbat\)_voltage_map\[\][ ]=' drivers/power/ab8500_charger.c defsnc '[ ]static[ ]const[ ]u8[ ]parity\[\][ ]=' drivers/staging/sep/sep_crypto.c - defsnc 'static[ ]struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h - defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable\[\][ ]=' drivers/staging/xgifb/vb_table.h - defsnc 'static[ ]struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h + defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h + defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h defsnc 'static[ ]const[ ]u8[ ]dim_table\[101\][ ]=' drivers/video/backlight/ot200_bl.c defsnc '[ ]static[ ]const[ ]unsigned[ ]char[ ]data_to_send\[\][ ]=' drivers/video/exynos/s6e8ax0.c accept '[ ]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][ ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ ]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][ ]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][ ][ ]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c @@ -3088,12 +3086,11 @@ set_except () { defsnc '[ ][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[2\][ ]=' drivers/staging/wlags49_h2/wl_util.c - defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable[ ]=' drivers/staging/xgifb/vb_table.h defsnc '[ ]static[ ]const[ ]unsigned[ ]char[ ]data_to_send_panel_reverse\[\][ ]=' drivers/video/exynos/s6e8ax0.c defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c defsnc 'static[ ]struct[ ]reg_default[ ]lm49453_reg_defs\[\][ ]=' sound/soc/codecs/lm49453.c accept '-[ ]Replace[ ]hard-coded[ ]firmware[ ]paths[ ]with[ ]request_firmware' drivers/staging/gdm72xx/TODO - blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c + blobname '\([/]lib[/]firmware[/]\)\?\(gdm72xx[/]\)\?gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c blobname 'mrvl[/]usb8797_uapsta\.bin' 'drivers/net/wireless/mwifiex/usb\.[ch]' # This is compiled and assembled out of actual sources as part of the build. @@ -3127,7 +3124,7 @@ set_except () { blobname 'ti-connectivity[/]wl18xx-\(fw\|conf\)\.bin' drivers/net/wireless/wl18xx/main.c defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(lp872x_ldo\|lp8720_ldo4\|lp8725_\(lilo\|buck\)\)_vtbl\[\][ ]=' drivers/regulator/lp872x.c - defsnc 'const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c + defsnc '\(static[ ]\)\?const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c defsnc 'static[ ]const[ ]unsigned[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VDCDCx_VSEL_table\[\][ ]=' drivers/regulator/tps6507x-regulator.c @@ -3139,7 +3136,6 @@ set_except () { defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c defsnc 'omap5430_adc_to_temp\[OMAP5430_ADC_END_VALUE[ ]-[ ]OMAP5430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap5-thermal.c defsnc 'static[ ]struct[ ]vesa_mode[ ]vesa_mode_table\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c - defsnc 'static[ ]struct[ ]SiS_\(LCD\|LVDS\)Data[ ][ ]*XGI_\(\(\(St\|Ext\)LCD\|LVDS\)\(1024x768\|1280x1024\|1400x1050\)\|NoScaling\)Data\(_[12]\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h defsnc 'static[ ]unsigned[ ]char[ ]rdesc\[\][ ]=' samples/uhid/uhid-example.c defsnc 'static[ ]struct[ ]reg_default[ ]isabelle_reg_defs\[\][ ]=' sound/soc/codecs/isabelle.c blobname 'dvb-usb-terratec-htc-stick-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c @@ -3204,7 +3200,7 @@ set_except () { defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(HiTV\|Ren\(525\|750\)p\)Group3\(Data\|Simu\|Text\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_ihex_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h defsnc '[/][*][ ]callback[ ]from[ ]request_firmware_nowait' sound/pci/hda/hda_intel.c - defsnc 'static[ ]int[ ]__devinit[ ]azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c + defsnc 'static[ ]int[ ]\(__devinit[ ]\)\?azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c defsnc 'static[ ]struct[ ]reg_default[ ]da9055_reg_defaults\[\][ ]=' sound/soc/codecs/da9055.c defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta32x_regs\[\][ ]=' sound/soc/codecs/sta32x.c blobname 'wm0010\(_stage2\.bin\|\.dfw\)' sound/soc/codecs/wm0010.c @@ -3230,12 +3226,132 @@ set_except () { blobname 'CMV4[pi]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c blobname 'dvb-fe-tda10071\.fw' drivers/media/dvb/frontends/tda10071_priv.h accept '[ ]st->it913x_config\.firmware[ ]=' drivers/media/usb/dvb-usb-v2/it913x.c + blobname 'ar3k[/]\(AthrBT_0x%08x\.dfu\|ramps_0x%08x_%d%s\)' drivers/bluetooth/ath3k.c + + # New in 3.8 + accept 'K_table:\([\n][ ]*\.quad[ ]*0x[0-9a-f]*[,]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S + defsnc 'const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c + accept '[ ]request_firmware[ ]can[ ]be[ ]called[ ]safely' Documentation/firmware_class/README + defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c + defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c + defsnc 'static[ ]const[ ]int[ ]h_coef_8t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_H_8T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c + defsnc 'static[ ]const[ ]int[ ]v_coef_4t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_V_4T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c + defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c + defsnc 'u32[ ]RTL8723EPHY_REG_1TARRAY\[RTL8723E_PHY_REG_1TARRAY_LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c + defsnc 'u32[ ]RTL8723EPHY_REG_ARRAY_PG\[RTL8723E_PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c + defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[Rtl8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c + defsnc 'u32[ ]RTL8723EMAC_ARRAY\[RTL8723E_MACARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c + defsnc 'u32[ ]RTL8723EAGCTAB_1TARRAY\[RTL8723E_AGCTAB_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c + defsnc 'static[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[AB]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c + defsnc 'static[ ]u16[ ]rx51_temp_table2\[\][ ]=' drivers/power/rx51_battery.c + defsnc 'static[ ]const[ ]u32[ ]runnable_avg_yN_\(inv\|sum\)\[\][ ]=' kernel/sched/fair.c + defsnc '[ ]static[ ]const[ ]u32[ ]base\[4\]\[10\][ ]=' net/wireless/util.c + defsnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ]=' sound/isa/sb/emu8000.c + defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8750_reg_defaults\[\][ ]=' sound/soc/codecs/wm8750.c + defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8770_reg_defaults\[\][ ]=' sound/soc/codecs/wm8770.c + defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8971_reg_defaults\[\][ ]=' sound/soc/codecs/wm8971.c + blobname 'nouveau[/]nv%02x_fuc%03x[dc]\?' drivers/gpu/drm/nouveau/core/core/falcon.c + blobname 'ar5523\.bin' drivers/net/wireless/ath/ar5523/ar5523.h + blobname 'rtlwifi[/]rtl8723\(ae\)\?fw\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c + blobname '%s-dsp%d\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c + blobname 'fw-4\.bin' drivers/net/wireless/ath/ath6kl/core.h + accept '[ ]hdsp->firmware[ ]=[ ]fw' sound/pci/rme9652/hdsp.c ;; */*freedo*.patch | */*logo*.patch) accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_libre_clut224.ppm ;; + */patch-3.7*) + # Removed chunks matched by entries that don't appear in the patch context. + initnc '[ ]0x019806b8[,][\n][ ]0x1427f116[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h + initnc '[ ]0xf1160198[,][\n][ ]0xb6041427[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h + # Present in 3.7 and removed in the patch (for --reverse-patch). + defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c' + defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c + defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c + defsnc 'unsigned[ ]char[ ]\(QUALITY\|STRENGTH\)_MAP\[\][ ]=' drivers/staging/rtl8187se/r8180_core.c + defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c' + defsnc '\(static[ ]const[ ]\)\?u\(8\|16\|32\)[ ]\(rtl8225\(z2\)\?_\(threshold\|gain_\(a\|bg\)\|chan\|rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\|ZEBRA2_CCK_OFDM_GAIN_SETTING\)\[\][ ]\?=' drivers/staging/rtl8187se/r8180_rtl8225z2.c + defsnc '[ ]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c + defsnc '[ ]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c + # Chunks matched by other entries that don't appear in the patch context. + initnc '[ ][{][ ]19200000[,][ ]216000000[,]' arch/arm/mach-tegra/tegra20_clocks_data.c + initnc '[ ]0x16019806[,][\n][ ]0x041427f1[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h + initnc '[ ]0x98069221[,][\n][ ]0x27f11601[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h + initnc '[ ][{]0x0000a284\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h + initnc '[ ][{]0x0000a574\([,][ ]0x9c1fff0b\)*\([,][ ]0x5e001eeb\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h + initnc '[ ][{]0x0000a580[,][ ]0x00000000[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h + initnc '[ ][{]0x0000a584\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h + initnc '[ ][{]0x0000a0b4\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h + initnc '[ ][{]0x0000982c\([,][ ]0x05eea6d4\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h + accept '[ ][ ]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE,[ ]true,[ ]patch\[dev\],' sound/pci/hda/hda_intel.c + initnc '[ ][{][ ]184[,][ ]0x00[ ][}][,]' sound/soc/codecs/lm49453.c + # Already present in 3.7. + defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h + accept '[ ]-[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README + accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c + defsnc '[ ][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c + defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h' + defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h + defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h + defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)' + defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c + defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c + defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw.c' + defsnc '[ ][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c + accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS + blobname '\(comedi[/]\)\?jr3pci\.idm\(["]\.[\n][ ][*][/]\)\?' drivers/staging/comedi/drivers/jr3_pci.c + blobname '\([/]lib[/]firmware[/]\)\?\(gdm72xx[/]\)\?gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c + defsnc '[}][ ]sisfb_ddc[sf]modes\[\][ ]\(__devinitdata[ ]\)\?=' drivers/video/sis/sis_main.h + defsnc 'static[ ]\(const[ ]\)\?struct[ ]lms283gf05_seq[ ]disp_\(init\|pwdn\)seq\[\][ ]=' drivers/video/backlight/lms283gf05.c + blobname 'cxgb4[/]t4fw\.bin' 'drivers/\(net/cxgb4/cxgb4_main\.c\|scsi/csiostor/csio_hw\.h\)' + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKData\(Struct\)\?[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ExtStruct[ ][ ]\?XGI330_EModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI\|SiS\)_StandTable\(Struct\|_S\)[ ]XGI330_StandTable\(\[\]\)\?[ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\([/][*]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LCDData\(Struct\)\?[ ][ ]\?XGI_\(\(St2\?\|Ext\)LCD\(1024x768\|1280x1024\)\|NoScaling\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LVDSData\(Struct\)\?[ ][ ]\?XGI\(330\)\?_LVDS\(320x480\|800x600\|1024x768\|1280x\(1024\|768[NS]\?\)\|1400x1050\|640x480\)Data_[12]\[\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ModeResInfo\(Struct\|_S\)[ ]XGI330_ModeResInfo\[\][ ]*=' drivers/staging/xgifb/vb_table.h + defsnc 'static[ ]struct[ ]XGI_ExtStruct[ ]XGI330_EModeIDTable\[\][ ]=' drivers/staging/xgifb/vb_table.h + defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h + defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h + defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable[ ]=' drivers/staging/xgifb/vb_table.h + defsnc '\(static[ ]\)\?const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c + defsnc 'static[ ]int[ ]\(__devinit[ ]\)\?azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c + + # New in 3.8 + accept 'K_table:\([\n][ ]*\.quad[ ]*0x[0-9a-f]*[,]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S + defsnc 'const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c + accept '[ ]request_firmware[ ]can[ ]be[ ]called[ ]safely' Documentation/firmware_class/README + defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c + defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c + defsnc 'static[ ]const[ ]int[ ]h_coef_8t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_H_8T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c + defsnc 'static[ ]const[ ]int[ ]v_coef_4t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_V_4T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c + defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c + defsnc 'u32[ ]RTL8723EPHY_REG_1TARRAY\[RTL8723E_PHY_REG_1TARRAY_LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c + defsnc 'u32[ ]RTL8723EPHY_REG_ARRAY_PG\[RTL8723E_PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c + defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[Rtl8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c + defsnc 'u32[ ]RTL8723EMAC_ARRAY\[RTL8723E_MACARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c + defsnc 'u32[ ]RTL8723EAGCTAB_1TARRAY\[RTL8723E_AGCTAB_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c + defsnc 'static[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[AB]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c + defsnc 'static[ ]u16[ ]rx51_temp_table2\[\][ ]=' drivers/power/rx51_battery.c + defsnc 'static[ ]const[ ]u32[ ]runnable_avg_yN_\(inv\|sum\)\[\][ ]=' kernel/sched/fair.c + defsnc '[ ]static[ ]const[ ]u32[ ]base\[4\]\[10\][ ]=' net/wireless/util.c + defsnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ]=' sound/isa/sb/emu8000.c + defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8750_reg_defaults\[\][ ]=' sound/soc/codecs/wm8750.c + defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8770_reg_defaults\[\][ ]=' sound/soc/codecs/wm8770.c + defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8971_reg_defaults\[\][ ]=' sound/soc/codecs/wm8971.c + blobname 'nouveau[/]nv%02x_fuc%03x[dc]\?' drivers/gpu/drm/nouveau/core/core/falcon.c + blobname 'ar5523\.bin' drivers/net/wireless/ath/ar5523/ar5523.h + blobname 'rtlwifi[/]rtl8723\(ae\)\?fw\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c + blobname '%s-dsp%d\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c + blobname 'fw-4\.bin' drivers/net/wireless/ath/ath6kl/core.h + accept '[ ]hdsp->firmware[ ]=[ ]fw' sound/pci/rme9652/hdsp.c + ;; + */patch-3.6*) # Present in patch for 3.6.4. accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c diff --git a/freed-ora/current/master/linux-2.6-defaults-acpi-video.patch b/freed-ora/current/master/defaults-acpi-video.patch index b83f4b614..b83f4b614 100644 --- a/freed-ora/current/master/linux-2.6-defaults-acpi-video.patch +++ b/freed-ora/current/master/defaults-acpi-video.patch diff --git a/freed-ora/current/master/dmar-disable-when-ricoh-multifunction.patch b/freed-ora/current/master/dmar-disable-when-ricoh-multifunction.patch index a4528617e..839db5940 100644 --- a/freed-ora/current/master/dmar-disable-when-ricoh-multifunction.patch +++ b/freed-ora/current/master/dmar-disable-when-ricoh-multifunction.patch @@ -16,7 +16,7 @@ index 4789f8e..5923914 100644 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x006a, quirk_calpella_no_shadow_gtt); +/* https://bugzilla.redhat.com/show_bug.cgi?id=605888 */ -+static void __devinit quirk_ricoh_multifunction(struct pci_dev *dev) ++static void quirk_ricoh_multifunction(struct pci_dev *dev) +{ + dmar_disabled = 1; +} diff --git a/freed-ora/current/master/efivarfs-3.7.patch b/freed-ora/current/master/efivarfs-3.7.patch deleted file mode 100644 index 300910716..000000000 --- a/freed-ora/current/master/efivarfs-3.7.patch +++ /dev/null @@ -1,1630 +0,0 @@ -From cb6f23ee9601297c3c70d0cfe3d77dfde9bd119d Mon Sep 17 00:00:00 2001 -From: Matthew Garrett <mjg@redhat.com> -Date: Fri, 5 Oct 2012 13:54:56 +0800 -Subject: [PATCH 01/17] efi: Add support for a UEFI variable filesystem - -The existing EFI variables code only supports variables of up to 1024 -bytes. This limitation existed in version 0.99 of the EFI specification, -but was removed before any full releases. Since variables can now be -larger than a single page, sysfs isn't the best interface for this. So, -instead, let's add a filesystem. Variables can be read, written and -created, with the first 4 bytes of each variable representing its UEFI -attributes. The create() method doesn't actually commit to flash since -zero-length variables can't exist per-spec. - -Updates from Jeremy Kerr <jeremy.kerr@canonical.com>. - -Signed-off-by: Matthew Garrett <mjg@redhat.com> -Signed-off-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 384 ++++++++++++++++++++++++++++++++++++++++++++- - include/linux/efi.h | 5 + - 2 files changed, 383 insertions(+), 6 deletions(-) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index d10c987..b605c48 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -80,6 +80,10 @@ - #include <linux/slab.h> - #include <linux/pstore.h> - -+#include <linux/fs.h> -+#include <linux/ramfs.h> -+#include <linux/pagemap.h> -+ - #include <asm/uaccess.h> - - #define EFIVARS_VERSION "0.08" -@@ -91,6 +95,7 @@ MODULE_LICENSE("GPL"); - MODULE_VERSION(EFIVARS_VERSION); - - #define DUMP_NAME_LEN 52 -+#define GUID_LEN 37 - - /* - * The maximum size of VariableName + Data = 1024 -@@ -108,7 +113,6 @@ struct efi_variable { - __u32 Attributes; - } __attribute__((packed)); - -- - struct efivar_entry { - struct efivars *efivars; - struct efi_variable var; -@@ -122,6 +126,9 @@ struct efivar_attribute { - ssize_t (*store)(struct efivar_entry *entry, const char *buf, size_t count); - }; - -+static struct efivars __efivars; -+static struct efivar_operations ops; -+ - #define PSTORE_EFI_ATTRIBUTES \ - (EFI_VARIABLE_NON_VOLATILE | \ - EFI_VARIABLE_BOOTSERVICE_ACCESS | \ -@@ -629,14 +636,380 @@ static struct kobj_type efivar_ktype = { - .default_attrs = def_attrs, - }; - --static struct pstore_info efi_pstore_info; -- - static inline void - efivar_unregister(struct efivar_entry *var) - { - kobject_put(&var->kobj); - } - -+static int efivarfs_file_open(struct inode *inode, struct file *file) -+{ -+ file->private_data = inode->i_private; -+ return 0; -+} -+ -+static ssize_t efivarfs_file_write(struct file *file, -+ const char __user *userbuf, size_t count, loff_t *ppos) -+{ -+ struct efivar_entry *var = file->private_data; -+ struct efivars *efivars; -+ efi_status_t status; -+ void *data; -+ u32 attributes; -+ struct inode *inode = file->f_mapping->host; -+ int datasize = count - sizeof(attributes); -+ -+ if (count < sizeof(attributes)) -+ return -EINVAL; -+ -+ data = kmalloc(datasize, GFP_KERNEL); -+ -+ if (!data) -+ return -ENOMEM; -+ -+ efivars = var->efivars; -+ -+ if (copy_from_user(&attributes, userbuf, sizeof(attributes))) { -+ count = -EFAULT; -+ goto out; -+ } -+ -+ if (attributes & ~(EFI_VARIABLE_MASK)) { -+ count = -EINVAL; -+ goto out; -+ } -+ -+ if (copy_from_user(data, userbuf + sizeof(attributes), datasize)) { -+ count = -EFAULT; -+ goto out; -+ } -+ -+ if (validate_var(&var->var, data, datasize) == false) { -+ count = -EINVAL; -+ goto out; -+ } -+ -+ status = efivars->ops->set_variable(var->var.VariableName, -+ &var->var.VendorGuid, -+ attributes, datasize, -+ data); -+ -+ switch (status) { -+ case EFI_SUCCESS: -+ mutex_lock(&inode->i_mutex); -+ i_size_write(inode, count); -+ mutex_unlock(&inode->i_mutex); -+ break; -+ case EFI_INVALID_PARAMETER: -+ count = -EINVAL; -+ break; -+ case EFI_OUT_OF_RESOURCES: -+ count = -ENOSPC; -+ break; -+ case EFI_DEVICE_ERROR: -+ count = -EIO; -+ break; -+ case EFI_WRITE_PROTECTED: -+ count = -EROFS; -+ break; -+ case EFI_SECURITY_VIOLATION: -+ count = -EACCES; -+ break; -+ case EFI_NOT_FOUND: -+ count = -ENOENT; -+ break; -+ default: -+ count = -EINVAL; -+ break; -+ } -+out: -+ kfree(data); -+ -+ return count; -+} -+ -+static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf, -+ size_t count, loff_t *ppos) -+{ -+ struct efivar_entry *var = file->private_data; -+ struct efivars *efivars = var->efivars; -+ efi_status_t status; -+ unsigned long datasize = 0; -+ u32 attributes; -+ void *data; -+ ssize_t size; -+ -+ status = efivars->ops->get_variable(var->var.VariableName, -+ &var->var.VendorGuid, -+ &attributes, &datasize, NULL); -+ -+ if (status != EFI_BUFFER_TOO_SMALL) -+ return 0; -+ -+ data = kmalloc(datasize + 4, GFP_KERNEL); -+ -+ if (!data) -+ return 0; -+ -+ status = efivars->ops->get_variable(var->var.VariableName, -+ &var->var.VendorGuid, -+ &attributes, &datasize, -+ (data + 4)); -+ -+ if (status != EFI_SUCCESS) -+ return 0; -+ -+ memcpy(data, &attributes, 4); -+ size = simple_read_from_buffer(userbuf, count, ppos, -+ data, datasize + 4); -+ kfree(data); -+ -+ return size; -+} -+ -+static void efivarfs_evict_inode(struct inode *inode) -+{ -+ clear_inode(inode); -+} -+ -+static const struct super_operations efivarfs_ops = { -+ .statfs = simple_statfs, -+ .drop_inode = generic_delete_inode, -+ .evict_inode = efivarfs_evict_inode, -+ .show_options = generic_show_options, -+}; -+ -+static struct super_block *efivarfs_sb; -+ -+static const struct inode_operations efivarfs_dir_inode_operations; -+ -+static const struct file_operations efivarfs_file_operations = { -+ .open = efivarfs_file_open, -+ .read = efivarfs_file_read, -+ .write = efivarfs_file_write, -+ .llseek = no_llseek, -+}; -+ -+static struct inode *efivarfs_get_inode(struct super_block *sb, -+ const struct inode *dir, int mode, dev_t dev) -+{ -+ struct inode *inode = new_inode(sb); -+ -+ if (inode) { -+ inode->i_ino = get_next_ino(); -+ inode->i_uid = inode->i_gid = 0; -+ inode->i_mode = mode; -+ inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; -+ switch (mode & S_IFMT) { -+ case S_IFREG: -+ inode->i_fop = &efivarfs_file_operations; -+ break; -+ case S_IFDIR: -+ inode->i_op = &efivarfs_dir_inode_operations; -+ inode->i_fop = &simple_dir_operations; -+ inc_nlink(inode); -+ break; -+ } -+ } -+ return inode; -+} -+ -+static void efivarfs_hex_to_guid(const char *str, efi_guid_t *guid) -+{ -+ guid->b[0] = hex_to_bin(str[6]) << 4 | hex_to_bin(str[7]); -+ guid->b[1] = hex_to_bin(str[4]) << 4 | hex_to_bin(str[5]); -+ guid->b[2] = hex_to_bin(str[2]) << 4 | hex_to_bin(str[3]); -+ guid->b[3] = hex_to_bin(str[0]) << 4 | hex_to_bin(str[1]); -+ guid->b[4] = hex_to_bin(str[11]) << 4 | hex_to_bin(str[12]); -+ guid->b[5] = hex_to_bin(str[9]) << 4 | hex_to_bin(str[10]); -+ guid->b[6] = hex_to_bin(str[16]) << 4 | hex_to_bin(str[17]); -+ guid->b[7] = hex_to_bin(str[14]) << 4 | hex_to_bin(str[15]); -+ guid->b[8] = hex_to_bin(str[19]) << 4 | hex_to_bin(str[20]); -+ guid->b[9] = hex_to_bin(str[21]) << 4 | hex_to_bin(str[22]); -+ guid->b[10] = hex_to_bin(str[24]) << 4 | hex_to_bin(str[25]); -+ guid->b[11] = hex_to_bin(str[26]) << 4 | hex_to_bin(str[27]); -+ guid->b[12] = hex_to_bin(str[28]) << 4 | hex_to_bin(str[29]); -+ guid->b[13] = hex_to_bin(str[30]) << 4 | hex_to_bin(str[31]); -+ guid->b[14] = hex_to_bin(str[32]) << 4 | hex_to_bin(str[33]); -+ guid->b[15] = hex_to_bin(str[34]) << 4 | hex_to_bin(str[35]); -+} -+ -+static int efivarfs_create(struct inode *dir, struct dentry *dentry, -+ umode_t mode, bool excl) -+{ -+ struct inode *inode = efivarfs_get_inode(dir->i_sb, dir, mode, 0); -+ struct efivars *efivars = &__efivars; -+ struct efivar_entry *var; -+ int namelen, i = 0, err = 0; -+ -+ if (dentry->d_name.len < 38) -+ return -EINVAL; -+ -+ if (!inode) -+ return -ENOSPC; -+ -+ var = kzalloc(sizeof(struct efivar_entry), GFP_KERNEL); -+ -+ if (!var) -+ return -ENOMEM; -+ -+ namelen = dentry->d_name.len - GUID_LEN; -+ -+ efivarfs_hex_to_guid(dentry->d_name.name + namelen + 1, -+ &var->var.VendorGuid); -+ -+ for (i = 0; i < namelen; i++) -+ var->var.VariableName[i] = dentry->d_name.name[i]; -+ -+ var->var.VariableName[i] = '\0'; -+ -+ inode->i_private = var; -+ var->efivars = efivars; -+ var->kobj.kset = efivars->kset; -+ -+ err = kobject_init_and_add(&var->kobj, &efivar_ktype, NULL, "%s", -+ dentry->d_name.name); -+ if (err) -+ goto out; -+ -+ kobject_uevent(&var->kobj, KOBJ_ADD); -+ spin_lock(&efivars->lock); -+ list_add(&var->list, &efivars->list); -+ spin_unlock(&efivars->lock); -+ d_instantiate(dentry, inode); -+ dget(dentry); -+out: -+ if (err) -+ kfree(var); -+ return err; -+} -+ -+static int efivarfs_unlink(struct inode *dir, struct dentry *dentry) -+{ -+ struct efivar_entry *var = dentry->d_inode->i_private; -+ struct efivars *efivars = var->efivars; -+ efi_status_t status; -+ -+ spin_lock(&efivars->lock); -+ -+ status = efivars->ops->set_variable(var->var.VariableName, -+ &var->var.VendorGuid, -+ 0, 0, NULL); -+ -+ if (status == EFI_SUCCESS || status == EFI_NOT_FOUND) { -+ list_del(&var->list); -+ spin_unlock(&efivars->lock); -+ efivar_unregister(var); -+ drop_nlink(dir); -+ dput(dentry); -+ return 0; -+ } -+ -+ spin_unlock(&efivars->lock); -+ return -EINVAL; -+}; -+ -+int efivarfs_fill_super(struct super_block *sb, void *data, int silent) -+{ -+ struct inode *inode = NULL; -+ struct dentry *root; -+ struct efivar_entry *entry, *n; -+ struct efivars *efivars = &__efivars; -+ int err; -+ -+ efivarfs_sb = sb; -+ -+ sb->s_maxbytes = MAX_LFS_FILESIZE; -+ sb->s_blocksize = PAGE_CACHE_SIZE; -+ sb->s_blocksize_bits = PAGE_CACHE_SHIFT; -+ sb->s_magic = PSTOREFS_MAGIC; -+ sb->s_op = &efivarfs_ops; -+ sb->s_time_gran = 1; -+ -+ inode = efivarfs_get_inode(sb, NULL, S_IFDIR | 0755, 0); -+ if (!inode) { -+ err = -ENOMEM; -+ goto fail; -+ } -+ inode->i_op = &efivarfs_dir_inode_operations; -+ -+ root = d_make_root(inode); -+ sb->s_root = root; -+ if (!root) { -+ err = -ENOMEM; -+ goto fail; -+ } -+ -+ list_for_each_entry_safe(entry, n, &efivars->list, list) { -+ struct inode *inode; -+ struct dentry *dentry, *root = efivarfs_sb->s_root; -+ char *name; -+ unsigned long size = 0; -+ int len, i; -+ -+ len = utf16_strlen(entry->var.VariableName); -+ -+ /* GUID plus trailing NULL */ -+ name = kmalloc(len + 38, GFP_ATOMIC); -+ -+ for (i = 0; i < len; i++) -+ name[i] = entry->var.VariableName[i] & 0xFF; -+ -+ name[len] = '-'; -+ -+ efi_guid_unparse(&entry->var.VendorGuid, name + len + 1); -+ -+ name[len+GUID_LEN] = '\0'; -+ -+ inode = efivarfs_get_inode(efivarfs_sb, root->d_inode, -+ S_IFREG | 0644, 0); -+ dentry = d_alloc_name(root, name); -+ -+ efivars->ops->get_variable(entry->var.VariableName, -+ &entry->var.VendorGuid, -+ &entry->var.Attributes, -+ &size, -+ NULL); -+ -+ mutex_lock(&inode->i_mutex); -+ inode->i_private = entry; -+ i_size_write(inode, size+4); -+ mutex_unlock(&inode->i_mutex); -+ d_add(dentry, inode); -+ } -+ -+ return 0; -+fail: -+ iput(inode); -+ return err; -+} -+ -+static struct dentry *efivarfs_mount(struct file_system_type *fs_type, -+ int flags, const char *dev_name, void *data) -+{ -+ return mount_single(fs_type, flags, data, efivarfs_fill_super); -+} -+ -+static void efivarfs_kill_sb(struct super_block *sb) -+{ -+ kill_litter_super(sb); -+ efivarfs_sb = NULL; -+} -+ -+static struct file_system_type efivarfs_type = { -+ .name = "efivarfs", -+ .mount = efivarfs_mount, -+ .kill_sb = efivarfs_kill_sb, -+}; -+ -+static const struct inode_operations efivarfs_dir_inode_operations = { -+ .lookup = simple_lookup, -+ .unlink = efivarfs_unlink, -+ .create = efivarfs_create, -+}; -+ -+static struct pstore_info efi_pstore_info; -+ - #ifdef CONFIG_PSTORE - - static int efi_pstore_open(struct pstore_info *psi) -@@ -1198,6 +1571,8 @@ int register_efivars(struct efivars *efivars, - pstore_register(&efivars->efi_pstore_info); - } - -+ register_filesystem(&efivarfs_type); -+ - out: - kfree(variable_name); - -@@ -1205,9 +1580,6 @@ out: - } - EXPORT_SYMBOL_GPL(register_efivars); - --static struct efivars __efivars; --static struct efivar_operations ops; -- - /* - * For now we register the efi subsystem with the firmware subsystem - * and the vars subsystem with the efi subsystem. In the future, it -diff --git a/include/linux/efi.h b/include/linux/efi.h -index 8670eb1..b2af157 100644 ---- a/include/linux/efi.h -+++ b/include/linux/efi.h -@@ -29,7 +29,12 @@ - #define EFI_UNSUPPORTED ( 3 | (1UL << (BITS_PER_LONG-1))) - #define EFI_BAD_BUFFER_SIZE ( 4 | (1UL << (BITS_PER_LONG-1))) - #define EFI_BUFFER_TOO_SMALL ( 5 | (1UL << (BITS_PER_LONG-1))) -+#define EFI_NOT_READY ( 6 | (1UL << (BITS_PER_LONG-1))) -+#define EFI_DEVICE_ERROR ( 7 | (1UL << (BITS_PER_LONG-1))) -+#define EFI_WRITE_PROTECTED ( 8 | (1UL << (BITS_PER_LONG-1))) -+#define EFI_OUT_OF_RESOURCES ( 9 | (1UL << (BITS_PER_LONG-1))) - #define EFI_NOT_FOUND (14 | (1UL << (BITS_PER_LONG-1))) -+#define EFI_SECURITY_VIOLATION (26 | (1UL << (BITS_PER_LONG-1))) - - typedef unsigned long efi_status_t; - typedef u8 efi_bool_t; --- -1.7.12.1 - - -From 2fc1dc88e97665c70f203f0132232ea55e8dd7eb Mon Sep 17 00:00:00 2001 -From: Jeremy Kerr <jeremy.kerr@canonical.com> -Date: Fri, 5 Oct 2012 13:54:56 +0800 -Subject: [PATCH 02/17] efi: Handle deletions and size changes in - efivarfs_write_file - -A write to an efivarfs file will not always result in a variable of -'count' size after the EFI SetVariable() call. We may have appended to -the existing data (ie, with the EFI_VARIABLE_APPEND_WRITE attribute), or -even have deleted the variable (with an authenticated variable update, -with a zero datasize). - -This change re-reads the updated variable from firmware, to check for -size changes and deletions. In the latter case, we need to drop the -dentry. - -Signed-off-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 49 ++++++++++++++++++++++++++++++++++++---------- - 1 file changed, 39 insertions(+), 10 deletions(-) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index b605c48..d7658b4 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -658,6 +658,7 @@ static ssize_t efivarfs_file_write(struct file *file, - u32 attributes; - struct inode *inode = file->f_mapping->host; - int datasize = count - sizeof(attributes); -+ unsigned long newdatasize; - - if (count < sizeof(attributes)) - return -EINVAL; -@@ -696,32 +697,60 @@ static ssize_t efivarfs_file_write(struct file *file, - - switch (status) { - case EFI_SUCCESS: -- mutex_lock(&inode->i_mutex); -- i_size_write(inode, count); -- mutex_unlock(&inode->i_mutex); - break; - case EFI_INVALID_PARAMETER: - count = -EINVAL; -- break; -+ goto out; - case EFI_OUT_OF_RESOURCES: - count = -ENOSPC; -- break; -+ goto out; - case EFI_DEVICE_ERROR: - count = -EIO; -- break; -+ goto out; - case EFI_WRITE_PROTECTED: - count = -EROFS; -- break; -+ goto out; - case EFI_SECURITY_VIOLATION: - count = -EACCES; -- break; -+ goto out; - case EFI_NOT_FOUND: - count = -ENOENT; -- break; -+ goto out; - default: - count = -EINVAL; -- break; -+ goto out; - } -+ -+ /* -+ * Writing to the variable may have caused a change in size (which -+ * could either be an append or an overwrite), or the variable to be -+ * deleted. Perform a GetVariable() so we can tell what actually -+ * happened. -+ */ -+ newdatasize = 0; -+ status = efivars->ops->get_variable(var->var.VariableName, -+ &var->var.VendorGuid, -+ NULL, &newdatasize, -+ NULL); -+ -+ if (status == EFI_BUFFER_TOO_SMALL) { -+ mutex_lock(&inode->i_mutex); -+ i_size_write(inode, newdatasize + sizeof(attributes)); -+ mutex_unlock(&inode->i_mutex); -+ -+ } else if (status == EFI_NOT_FOUND) { -+ spin_lock(&efivars->lock); -+ list_del(&var->list); -+ spin_unlock(&efivars->lock); -+ efivar_unregister(var); -+ drop_nlink(inode); -+ dput(file->f_dentry); -+ -+ } else { -+ pr_warn("efivarfs: inconsistent EFI variable implementation? " -+ "status = %lx\n", status); -+ } -+ - out: - kfree(data); - --- -1.7.12.1 - - -From c98611fc95672862950c9bc4d6a3a4c4453a3c3e Mon Sep 17 00:00:00 2001 -From: "Lee, Chun-Yi" <joeyli.kernel@gmail.com> -Date: Fri, 5 Oct 2012 13:54:56 +0800 -Subject: [PATCH 03/17] efi: add efivars kobject to efi sysfs folder - -UEFI variable filesystem need a new mount point, so this patch add -efivars kobject to efi_kobj for create a /sys/firmware/efi/efivars -folder. - -Cc: Matthew Garrett <mjg@redhat.com> -Cc: H. Peter Anvin <hpa@zytor.com> -Signed-off-by: Lee, Chun-Yi <jlee@suse.com> -Signed-off-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 9 +++++++++ - include/linux/efi.h | 1 + - 2 files changed, 10 insertions(+) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index d7658b4..6793965 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -1527,6 +1527,7 @@ void unregister_efivars(struct efivars *efivars) - sysfs_remove_bin_file(&efivars->kset->kobj, efivars->del_var); - kfree(efivars->new_var); - kfree(efivars->del_var); -+ kobject_put(efivars->kobject); - kset_unregister(efivars->kset); - } - EXPORT_SYMBOL_GPL(unregister_efivars); -@@ -1558,6 +1559,14 @@ int register_efivars(struct efivars *efivars, - goto out; - } - -+ efivars->kobject = kobject_create_and_add("efivars", parent_kobj); -+ if (!efivars->kobject) { -+ pr_err("efivars: Subsystem registration failed.\n"); -+ error = -ENOMEM; -+ kset_unregister(efivars->kset); -+ goto out; -+ } -+ - /* - * Per EFI spec, the maximum storage allocated for both - * the variable name and variable data is 1024 bytes. -diff --git a/include/linux/efi.h b/include/linux/efi.h -index b2af157..337aefb 100644 ---- a/include/linux/efi.h -+++ b/include/linux/efi.h -@@ -662,6 +662,7 @@ struct efivars { - spinlock_t lock; - struct list_head list; - struct kset *kset; -+ struct kobject *kobject; - struct bin_attribute *new_var, *del_var; - const struct efivar_operations *ops; - struct efivar_entry *walk_entry; --- -1.7.12.1 - - -From 8ef5f49da57087022f2031820ceb3b1c6101d76c Mon Sep 17 00:00:00 2001 -From: Matt Fleming <matt.fleming@intel.com> -Date: Thu, 4 Oct 2012 09:57:31 +0100 -Subject: [PATCH 04/17] efivarfs: Add documentation for the EFI variable - filesystem - -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - Documentation/filesystems/00-INDEX | 2 ++ - Documentation/filesystems/efivarfs.txt | 16 ++++++++++++++++ - 2 files changed, 18 insertions(+) - create mode 100644 Documentation/filesystems/efivarfs.txt - -diff --git a/Documentation/filesystems/00-INDEX b/Documentation/filesystems/00-INDEX -index 8c624a1..7b52ba7 100644 ---- a/Documentation/filesystems/00-INDEX -+++ b/Documentation/filesystems/00-INDEX -@@ -38,6 +38,8 @@ dnotify_test.c - - example program for dnotify - ecryptfs.txt - - docs on eCryptfs: stacked cryptographic filesystem for Linux. -+efivarfs.txt -+ - info for the efivarfs filesystem. - exofs.txt - - info, usage, mount options, design about EXOFS. - ext2.txt -diff --git a/Documentation/filesystems/efivarfs.txt b/Documentation/filesystems/efivarfs.txt -new file mode 100644 -index 0000000..c477af0 ---- /dev/null -+++ b/Documentation/filesystems/efivarfs.txt -@@ -0,0 +1,16 @@ -+ -+efivarfs - a (U)EFI variable filesystem -+ -+The efivarfs filesystem was created to address the shortcomings of -+using entries in sysfs to maintain EFI variables. The old sysfs EFI -+variables code only supported variables of up to 1024 bytes. This -+limitation existed in version 0.99 of the EFI specification, but was -+removed before any full releases. Since variables can now be larger -+than a single page, sysfs isn't the best interface for this. -+ -+Variables can be created, deleted and modified with the efivarfs -+filesystem. -+ -+efivarfs is typically mounted like this, -+ -+ mount -t efivarfs none /sys/firmware/efi/efivars --- -1.7.12.1 - - -From f69c39248e2f1eebf24f5ee55139602c56d15aec Mon Sep 17 00:00:00 2001 -From: Andy Whitcroft <apw@canonical.com> -Date: Thu, 11 Oct 2012 11:32:17 +0100 -Subject: [PATCH 05/17] efivarfs: efivarfs_file_read ensure we free data in - error paths - -Signed-off-by: Andy Whitcroft <apw@canonical.com> -Acked-by: Matthew Garrett <mjg@redhat.com> -Acked-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index 6793965..b7c9a32 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -766,7 +766,7 @@ static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf, - unsigned long datasize = 0; - u32 attributes; - void *data; -- ssize_t size; -+ ssize_t size = 0; - - status = efivars->ops->get_variable(var->var.VariableName, - &var->var.VendorGuid, -@@ -784,13 +784,13 @@ static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf, - &var->var.VendorGuid, - &attributes, &datasize, - (data + 4)); -- - if (status != EFI_SUCCESS) -- return 0; -+ goto out_free; - - memcpy(data, &attributes, 4); - size = simple_read_from_buffer(userbuf, count, ppos, - data, datasize + 4); -+out_free: - kfree(data); - - return size; --- -1.7.12.1 - - -From 429136e16c7c43bbebb8b8030203161a2d3fc3ce Mon Sep 17 00:00:00 2001 -From: Andy Whitcroft <apw@canonical.com> -Date: Thu, 11 Oct 2012 11:32:18 +0100 -Subject: [PATCH 06/17] efivarfs: efivarfs_create() ensure we drop our - reference on inode on error - -Signed-off-by: Andy Whitcroft <apw@canonical.com> -Acked-by: Matthew Garrett <mjg@redhat.com> -Acked-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 14 +++++++++----- - 1 file changed, 9 insertions(+), 5 deletions(-) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index b7c9a32..6e5f367 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -866,7 +866,7 @@ static void efivarfs_hex_to_guid(const char *str, efi_guid_t *guid) - static int efivarfs_create(struct inode *dir, struct dentry *dentry, - umode_t mode, bool excl) - { -- struct inode *inode = efivarfs_get_inode(dir->i_sb, dir, mode, 0); -+ struct inode *inode; - struct efivars *efivars = &__efivars; - struct efivar_entry *var; - int namelen, i = 0, err = 0; -@@ -874,13 +874,15 @@ static int efivarfs_create(struct inode *dir, struct dentry *dentry, - if (dentry->d_name.len < 38) - return -EINVAL; - -+ inode = efivarfs_get_inode(dir->i_sb, dir, mode, 0); - if (!inode) - return -ENOSPC; - - var = kzalloc(sizeof(struct efivar_entry), GFP_KERNEL); -- -- if (!var) -- return -ENOMEM; -+ if (!var) { -+ err = -ENOMEM; -+ goto out; -+ } - - namelen = dentry->d_name.len - GUID_LEN; - -@@ -908,8 +910,10 @@ static int efivarfs_create(struct inode *dir, struct dentry *dentry, - d_instantiate(dentry, inode); - dget(dentry); - out: -- if (err) -+ if (err) { - kfree(var); -+ iput(inode); -+ } - return err; - } - --- -1.7.12.1 - - -From 1a19268e8a4bae43c1feb3f71ee468c6bc70aca6 Mon Sep 17 00:00:00 2001 -From: Andy Whitcroft <apw@canonical.com> -Date: Thu, 11 Oct 2012 11:32:19 +0100 -Subject: [PATCH 07/17] efivarfs: efivarfs_fill_super() fix inode reference - counts - -When d_make_root() fails it will automatically drop the reference -on the root inode. We should not be doing so as well. - -Signed-off-by: Andy Whitcroft <apw@canonical.com> -Acked-by: Matthew Garrett <mjg@redhat.com> -Acked-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 16 ++++------------ - 1 file changed, 4 insertions(+), 12 deletions(-) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index 6e5f367..adfc486 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -948,7 +948,6 @@ int efivarfs_fill_super(struct super_block *sb, void *data, int silent) - struct dentry *root; - struct efivar_entry *entry, *n; - struct efivars *efivars = &__efivars; -- int err; - - efivarfs_sb = sb; - -@@ -960,18 +959,14 @@ int efivarfs_fill_super(struct super_block *sb, void *data, int silent) - sb->s_time_gran = 1; - - inode = efivarfs_get_inode(sb, NULL, S_IFDIR | 0755, 0); -- if (!inode) { -- err = -ENOMEM; -- goto fail; -- } -+ if (!inode) -+ return -ENOMEM; - inode->i_op = &efivarfs_dir_inode_operations; - - root = d_make_root(inode); - sb->s_root = root; -- if (!root) { -- err = -ENOMEM; -- goto fail; -- } -+ if (!root) -+ return -ENOMEM; - - list_for_each_entry_safe(entry, n, &efivars->list, list) { - struct inode *inode; -@@ -1012,9 +1007,6 @@ int efivarfs_fill_super(struct super_block *sb, void *data, int silent) - } - - return 0; --fail: -- iput(inode); -- return err; - } - - static struct dentry *efivarfs_mount(struct file_system_type *fs_type, --- -1.7.12.1 - - -From f0d90a4024493aed6fc77ce5cd3b93f278fed9c0 Mon Sep 17 00:00:00 2001 -From: Andy Whitcroft <apw@canonical.com> -Date: Thu, 11 Oct 2012 11:32:20 +0100 -Subject: [PATCH 08/17] efivarfs: efivarfs_fill_super() ensure we free our - temporary name - -d_alloc_name() copies the passed name to new storage, once complete we -no longer need our name. - -Signed-off-by: Andy Whitcroft <apw@canonical.com> -Acked-by: Matthew Garrett <mjg@redhat.com> -Acked-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index adfc486..36b3dd6 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -992,6 +992,8 @@ int efivarfs_fill_super(struct super_block *sb, void *data, int silent) - inode = efivarfs_get_inode(efivarfs_sb, root->d_inode, - S_IFREG | 0644, 0); - dentry = d_alloc_name(root, name); -+ /* copied by the above to local storage in the dentry. */ -+ kfree(name); - - efivars->ops->get_variable(entry->var.VariableName, - &entry->var.VendorGuid, --- -1.7.12.1 - - -From c4cf244c318218153200d0011d8ef0ebcf3146ea Mon Sep 17 00:00:00 2001 -From: Andy Whitcroft <apw@canonical.com> -Date: Thu, 11 Oct 2012 11:32:21 +0100 -Subject: [PATCH 09/17] efivarfs: efivarfs_fill_super() ensure we clean up - correctly on error - -Ensure we free both the name and inode on error when building the -individual variables. - -Signed-off-by: Andy Whitcroft <apw@canonical.com> -Acked-by: Matthew Garrett <mjg@redhat.com> -Acked-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 20 ++++++++++++++++++-- - 1 file changed, 18 insertions(+), 2 deletions(-) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index 36b3dd6..216086d 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -948,6 +948,7 @@ int efivarfs_fill_super(struct super_block *sb, void *data, int silent) - struct dentry *root; - struct efivar_entry *entry, *n; - struct efivars *efivars = &__efivars; -+ char *name; - - efivarfs_sb = sb; - -@@ -969,16 +970,18 @@ int efivarfs_fill_super(struct super_block *sb, void *data, int silent) - return -ENOMEM; - - list_for_each_entry_safe(entry, n, &efivars->list, list) { -- struct inode *inode; - struct dentry *dentry, *root = efivarfs_sb->s_root; -- char *name; - unsigned long size = 0; - int len, i; - -+ inode = NULL; -+ - len = utf16_strlen(entry->var.VariableName); - - /* GUID plus trailing NULL */ - name = kmalloc(len + 38, GFP_ATOMIC); -+ if (!name) -+ goto fail; - - for (i = 0; i < len; i++) - name[i] = entry->var.VariableName[i] & 0xFF; -@@ -991,7 +994,13 @@ int efivarfs_fill_super(struct super_block *sb, void *data, int silent) - - inode = efivarfs_get_inode(efivarfs_sb, root->d_inode, - S_IFREG | 0644, 0); -+ if (!inode) -+ goto fail_name; -+ - dentry = d_alloc_name(root, name); -+ if (!dentry) -+ goto fail_inode; -+ - /* copied by the above to local storage in the dentry. */ - kfree(name); - -@@ -1009,6 +1018,13 @@ int efivarfs_fill_super(struct super_block *sb, void *data, int silent) - } - - return 0; -+ -+fail_inode: -+ iput(inode); -+fail_name: -+ kfree(name); -+fail: -+ return -ENOMEM; - } - - static struct dentry *efivarfs_mount(struct file_system_type *fs_type, --- -1.7.12.1 - - -From d3b7165568bcb50e4526c3dadda59e43f6681bc0 Mon Sep 17 00:00:00 2001 -From: Jeremy Kerr <jeremy.kerr@canonical.com> -Date: Thu, 11 Oct 2012 21:19:11 +0800 -Subject: [PATCH 10/17] efivarfs: Implement exclusive access for - {get,set}_variable - -Currently, efivarfs does not enforce exclusion over the get_variable and -set_variable operations. Section 7.1 of UEFI requires us to only allow a -single processor to enter {get,set}_variable services at once. - -This change acquires the efivars->lock over calls to these operations -from the efivarfs paths. - -Signed-off-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 68 +++++++++++++++++++++++++++++----------------- - 1 file changed, 43 insertions(+), 25 deletions(-) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index 216086d..d478c56 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -690,35 +690,45 @@ static ssize_t efivarfs_file_write(struct file *file, - goto out; - } - -+ /* -+ * The lock here protects the get_variable call, the conditional -+ * set_variable call, and removal of the variable from the efivars -+ * list (in the case of an authenticated delete). -+ */ -+ spin_lock(&efivars->lock); -+ - status = efivars->ops->set_variable(var->var.VariableName, - &var->var.VendorGuid, - attributes, datasize, - data); - -- switch (status) { -- case EFI_SUCCESS: -- break; -- case EFI_INVALID_PARAMETER: -- count = -EINVAL; -- goto out; -- case EFI_OUT_OF_RESOURCES: -- count = -ENOSPC; -- goto out; -- case EFI_DEVICE_ERROR: -- count = -EIO; -- goto out; -- case EFI_WRITE_PROTECTED: -- count = -EROFS; -- goto out; -- case EFI_SECURITY_VIOLATION: -- count = -EACCES; -- goto out; -- case EFI_NOT_FOUND: -- count = -ENOENT; -- goto out; -- default: -- count = -EINVAL; -- goto out; -+ if (status != EFI_SUCCESS) { -+ spin_unlock(&efivars->lock); -+ kfree(data); -+ -+ switch (status) { -+ case EFI_INVALID_PARAMETER: -+ count = -EINVAL; -+ break; -+ case EFI_OUT_OF_RESOURCES: -+ count = -ENOSPC; -+ break; -+ case EFI_DEVICE_ERROR: -+ count = -EIO; -+ break; -+ case EFI_WRITE_PROTECTED: -+ count = -EROFS; -+ break; -+ case EFI_SECURITY_VIOLATION: -+ count = -EACCES; -+ break; -+ case EFI_NOT_FOUND: -+ count = -ENOENT; -+ break; -+ default: -+ count = -EINVAL; -+ } -+ return count; - } - - /* -@@ -734,12 +744,12 @@ static ssize_t efivarfs_file_write(struct file *file, - NULL); - - if (status == EFI_BUFFER_TOO_SMALL) { -+ spin_unlock(&efivars->lock); - mutex_lock(&inode->i_mutex); - i_size_write(inode, newdatasize + sizeof(attributes)); - mutex_unlock(&inode->i_mutex); - - } else if (status == EFI_NOT_FOUND) { -- spin_lock(&efivars->lock); - list_del(&var->list); - spin_unlock(&efivars->lock); - efivar_unregister(var); -@@ -747,6 +757,7 @@ static ssize_t efivarfs_file_write(struct file *file, - dput(file->f_dentry); - - } else { -+ spin_unlock(&efivars->lock); - pr_warn("efivarfs: inconsistent EFI variable implementation? " - "status = %lx\n", status); - } -@@ -768,9 +779,11 @@ static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf, - void *data; - ssize_t size = 0; - -+ spin_lock(&efivars->lock); - status = efivars->ops->get_variable(var->var.VariableName, - &var->var.VendorGuid, - &attributes, &datasize, NULL); -+ spin_unlock(&efivars->lock); - - if (status != EFI_BUFFER_TOO_SMALL) - return 0; -@@ -780,10 +793,13 @@ static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf, - if (!data) - return 0; - -+ spin_lock(&efivars->lock); - status = efivars->ops->get_variable(var->var.VariableName, - &var->var.VendorGuid, - &attributes, &datasize, - (data + 4)); -+ spin_unlock(&efivars->lock); -+ - if (status != EFI_SUCCESS) - goto out_free; - -@@ -1004,11 +1020,13 @@ int efivarfs_fill_super(struct super_block *sb, void *data, int silent) - /* copied by the above to local storage in the dentry. */ - kfree(name); - -+ spin_lock(&efivars->lock); - efivars->ops->get_variable(entry->var.VariableName, - &entry->var.VendorGuid, - &entry->var.Attributes, - &size, - NULL); -+ spin_unlock(&efivars->lock); - - mutex_lock(&inode->i_mutex); - inode->i_private = entry; --- -1.7.12.1 - - -From 90a462e9cf439a1987e0f9434d1f615addcc1970 Mon Sep 17 00:00:00 2001 -From: Jeremy Kerr <jeremy.kerr@canonical.com> -Date: Fri, 19 Oct 2012 15:16:45 +0800 -Subject: [PATCH 11/17] efi: Clarify GUID length calculations - -At present, the handling of GUIDs in efivar file names isn't consistent. -We use GUID_LEN in some places, and 38 in others (GUID_LEN plus -separator), and implicitly use the presence of the trailing NUL. - -This change removes the trailing NUL from GUID_LEN, so that we're -explicitly adding it when required. We also replace magic numbers -with GUID_LEN, and clarify the comments where appropriate. - -We also fix the allocation size in efivar_create_sysfs_entry, where -we're allocating one byte too much, due to counting the trailing NUL -twice - once when calculating short_name_size, and once in the kzalloc. - -Signed-off-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 33 +++++++++++++++++++++++++-------- - 1 file changed, 25 insertions(+), 8 deletions(-) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index d478c56..a93e401 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -95,7 +95,12 @@ MODULE_LICENSE("GPL"); - MODULE_VERSION(EFIVARS_VERSION); - - #define DUMP_NAME_LEN 52 --#define GUID_LEN 37 -+ -+/* -+ * Length of a GUID string (strlen("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee")) -+ * not including trailing NUL -+ */ -+#define GUID_LEN 36 - - /* - * The maximum size of VariableName + Data = 1024 -@@ -887,7 +892,11 @@ static int efivarfs_create(struct inode *dir, struct dentry *dentry, - struct efivar_entry *var; - int namelen, i = 0, err = 0; - -- if (dentry->d_name.len < 38) -+ /* -+ * We need a GUID, plus at least one letter for the variable name, -+ * plus the '-' separator -+ */ -+ if (dentry->d_name.len < GUID_LEN + 2) - return -EINVAL; - - inode = efivarfs_get_inode(dir->i_sb, dir, mode, 0); -@@ -900,7 +909,8 @@ static int efivarfs_create(struct inode *dir, struct dentry *dentry, - goto out; - } - -- namelen = dentry->d_name.len - GUID_LEN; -+ /* length of the variable name itself: remove GUID and separator */ -+ namelen = dentry->d_name.len - GUID_LEN - 1; - - efivarfs_hex_to_guid(dentry->d_name.name + namelen + 1, - &var->var.VendorGuid); -@@ -994,8 +1004,8 @@ int efivarfs_fill_super(struct super_block *sb, void *data, int silent) - - len = utf16_strlen(entry->var.VariableName); - -- /* GUID plus trailing NULL */ -- name = kmalloc(len + 38, GFP_ATOMIC); -+ /* name, plus '-', plus GUID, plus NUL*/ -+ name = kmalloc(len + 1 + GUID_LEN + 1, GFP_ATOMIC); - if (!name) - goto fail; - -@@ -1006,7 +1016,7 @@ int efivarfs_fill_super(struct super_block *sb, void *data, int silent) - - efi_guid_unparse(&entry->var.VendorGuid, name + len + 1); - -- name[len+GUID_LEN] = '\0'; -+ name[len+GUID_LEN+1] = '\0'; - - inode = efivarfs_get_inode(efivarfs_sb, root->d_inode, - S_IFREG | 0644, 0); -@@ -1435,11 +1445,18 @@ efivar_create_sysfs_entry(struct efivars *efivars, - efi_char16_t *variable_name, - efi_guid_t *vendor_guid) - { -- int i, short_name_size = variable_name_size / sizeof(efi_char16_t) + 38; -+ int i, short_name_size; - char *short_name; - struct efivar_entry *new_efivar; - -- short_name = kzalloc(short_name_size + 1, GFP_KERNEL); -+ /* -+ * Length of the variable bytes in ASCII, plus the '-' separator, -+ * plus the GUID, plus trailing NUL -+ */ -+ short_name_size = variable_name_size / sizeof(efi_char16_t) -+ + 1 + GUID_LEN + 1; -+ -+ short_name = kzalloc(short_name_size, GFP_KERNEL); - new_efivar = kzalloc(sizeof(struct efivar_entry), GFP_KERNEL); - - if (!short_name || !new_efivar) { --- -1.7.12.1 - - -From ecbf90823d85ebb41e68e6be01f476862d184825 Mon Sep 17 00:00:00 2001 -From: Matt Fleming <matt.fleming@intel.com> -Date: Tue, 16 Oct 2012 15:58:07 +0100 -Subject: [PATCH 12/17] efivarfs: Return an error if we fail to read a - variable - -Instead of always returning 0 in efivarfs_file_read(), even when we -fail to successfully read the variable, convert the EFI status to -something meaningful and return that to the caller. This way the user -will have some hint as to why the read failed. - -Acked-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 62 +++++++++++++++++++++++++++------------------- - 1 file changed, 36 insertions(+), 26 deletions(-) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index a93e401..277e426 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -653,6 +653,36 @@ static int efivarfs_file_open(struct inode *inode, struct file *file) - return 0; - } - -+static int efi_status_to_err(efi_status_t status) -+{ -+ int err; -+ -+ switch (status) { -+ case EFI_INVALID_PARAMETER: -+ err = -EINVAL; -+ break; -+ case EFI_OUT_OF_RESOURCES: -+ err = -ENOSPC; -+ break; -+ case EFI_DEVICE_ERROR: -+ err = -EIO; -+ break; -+ case EFI_WRITE_PROTECTED: -+ err = -EROFS; -+ break; -+ case EFI_SECURITY_VIOLATION: -+ err = -EACCES; -+ break; -+ case EFI_NOT_FOUND: -+ err = -ENOENT; -+ break; -+ default: -+ err = -EINVAL; -+ } -+ -+ return err; -+} -+ - static ssize_t efivarfs_file_write(struct file *file, - const char __user *userbuf, size_t count, loff_t *ppos) - { -@@ -711,29 +741,7 @@ static ssize_t efivarfs_file_write(struct file *file, - spin_unlock(&efivars->lock); - kfree(data); - -- switch (status) { -- case EFI_INVALID_PARAMETER: -- count = -EINVAL; -- break; -- case EFI_OUT_OF_RESOURCES: -- count = -ENOSPC; -- break; -- case EFI_DEVICE_ERROR: -- count = -EIO; -- break; -- case EFI_WRITE_PROTECTED: -- count = -EROFS; -- break; -- case EFI_SECURITY_VIOLATION: -- count = -EACCES; -- break; -- case EFI_NOT_FOUND: -- count = -ENOENT; -- break; -- default: -- count = -EINVAL; -- } -- return count; -+ return efi_status_to_err(status); - } - - /* -@@ -791,12 +799,12 @@ static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf, - spin_unlock(&efivars->lock); - - if (status != EFI_BUFFER_TOO_SMALL) -- return 0; -+ return efi_status_to_err(status); - - data = kmalloc(datasize + 4, GFP_KERNEL); - - if (!data) -- return 0; -+ return -ENOMEM; - - spin_lock(&efivars->lock); - status = efivars->ops->get_variable(var->var.VariableName, -@@ -805,8 +813,10 @@ static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf, - (data + 4)); - spin_unlock(&efivars->lock); - -- if (status != EFI_SUCCESS) -+ if (status != EFI_SUCCESS) { -+ size = efi_status_to_err(status); - goto out_free; -+ } - - memcpy(data, &attributes, 4); - size = simple_read_from_buffer(userbuf, count, ppos, --- -1.7.12.1 - - -From 39210330739b943856ff21b29b4a0804f4e8349f Mon Sep 17 00:00:00 2001 -From: Matt Fleming <matt.fleming@intel.com> -Date: Mon, 22 Oct 2012 15:23:29 +0100 -Subject: [PATCH 13/17] efivarfs: Replace magic number with sizeof(attributes) - -Seeing "+ 4" littered throughout the functions gets a bit -confusing. Use "sizeof(attributes)" which clearly explains what -quantity we're adding. - -Acked-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index 277e426..2c04434 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -801,7 +801,7 @@ static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf, - if (status != EFI_BUFFER_TOO_SMALL) - return efi_status_to_err(status); - -- data = kmalloc(datasize + 4, GFP_KERNEL); -+ data = kmalloc(datasize + sizeof(attributes), GFP_KERNEL); - - if (!data) - return -ENOMEM; -@@ -810,7 +810,7 @@ static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf, - status = efivars->ops->get_variable(var->var.VariableName, - &var->var.VendorGuid, - &attributes, &datasize, -- (data + 4)); -+ (data + sizeof(attributes))); - spin_unlock(&efivars->lock); - - if (status != EFI_SUCCESS) { -@@ -818,9 +818,9 @@ static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf, - goto out_free; - } - -- memcpy(data, &attributes, 4); -+ memcpy(data, &attributes, sizeof(attributes)); - size = simple_read_from_buffer(userbuf, count, ppos, -- data, datasize + 4); -+ data, datasize + sizeof(attributes)); - out_free: - kfree(data); - --- -1.7.12.1 - - -From 5555f0af6294b3675a95a06da23101150644936d Mon Sep 17 00:00:00 2001 -From: Matt Fleming <matt.fleming@intel.com> -Date: Mon, 22 Oct 2012 15:51:45 +0100 -Subject: [PATCH 14/17] efivarfs: Add unique magic number - -Using pstore's superblock magic number is no doubt going to cause -problems in the future. Give efivarfs its own magic number. - -Acked-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 2 +- - include/uapi/linux/magic.h | 1 + - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index 2c04434..3b0cf9a 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -991,7 +991,7 @@ int efivarfs_fill_super(struct super_block *sb, void *data, int silent) - sb->s_maxbytes = MAX_LFS_FILESIZE; - sb->s_blocksize = PAGE_CACHE_SIZE; - sb->s_blocksize_bits = PAGE_CACHE_SHIFT; -- sb->s_magic = PSTOREFS_MAGIC; -+ sb->s_magic = EFIVARFS_MAGIC; - sb->s_op = &efivarfs_ops; - sb->s_time_gran = 1; - -diff --git a/include/uapi/linux/magic.h b/include/uapi/linux/magic.h -index e15192c..12f68c7 100644 ---- a/include/uapi/linux/magic.h -+++ b/include/uapi/linux/magic.h -@@ -27,6 +27,7 @@ - #define ISOFS_SUPER_MAGIC 0x9660 - #define JFFS2_SUPER_MAGIC 0x72b6 - #define PSTOREFS_MAGIC 0x6165676C -+#define EFIVARFS_MAGIC 0xde5e81e4 - - #define MINIX_SUPER_MAGIC 0x137F /* minix v1 fs, 14 char names */ - #define MINIX_SUPER_MAGIC2 0x138F /* minix v1 fs, 30 char names */ --- -1.7.12.1 - - -From a42845c67f2386b164d0c5d8220838d7faf5a409 Mon Sep 17 00:00:00 2001 -From: Matt Fleming <matt.fleming@intel.com> -Date: Tue, 23 Oct 2012 12:35:43 +0100 -Subject: [PATCH 15/17] efivarfs: Make 'datasize' unsigned long - -There's no reason to declare 'datasize' as an int, since the majority -of the functions it's passed to expect an unsigned long anyway. Plus, -this way we avoid any sign problems during arithmetic. - -Acked-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index 3b0cf9a..6a858d1 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -692,7 +692,7 @@ static ssize_t efivarfs_file_write(struct file *file, - void *data; - u32 attributes; - struct inode *inode = file->f_mapping->host; -- int datasize = count - sizeof(attributes); -+ unsigned long datasize = count - sizeof(attributes); - unsigned long newdatasize; - - if (count < sizeof(attributes)) --- -1.7.12.1 - - -From a268bdf6d7ce623ea4bdfcf39aa52ed3fbfdfd65 Mon Sep 17 00:00:00 2001 -From: Matt Fleming <matt.fleming@intel.com> -Date: Tue, 23 Oct 2012 12:41:03 +0100 -Subject: [PATCH 16/17] efivarfs: Return a consistent error when - efivarfs_get_inode() fails - -Instead of returning -ENOSPC if efivarfs_get_inode() fails we should -be returning -ENOMEM, since running out of memory is the only reason -it can fail. Furthermore, that's the error value used everywhere else -in this file. It's also less likely to confuse users that hit this -error case. - -Acked-by: Jeremy Kerr <jeremy.kerr@canonical.com> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index 6a858d1..58cec62 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -911,7 +911,7 @@ static int efivarfs_create(struct inode *dir, struct dentry *dentry, - - inode = efivarfs_get_inode(dir->i_sb, dir, mode, 0); - if (!inode) -- return -ENOSPC; -+ return -ENOMEM; - - var = kzalloc(sizeof(struct efivar_entry), GFP_KERNEL); - if (!var) { --- -1.7.12.1 - - -From 9c3136c987175b179c0aa725d76cda156894f918 Mon Sep 17 00:00:00 2001 -From: Matt Fleming <matt.fleming@intel.com> -Date: Fri, 26 Oct 2012 12:18:53 +0100 -Subject: [PATCH 17/17] efivarfs: Fix return value of efivarfs_file_write() - -We're stuffing a variable of type size_t (unsigned) into a ssize_t -(signed) which, even though both types should be the same number of -bits, it's just asking for sign issues to be introduced. - -Cc: Jeremy Kerr <jeremy.kerr@canonical.com> -Reported-by: Alan Cox <alan@lxorguk.ukuu.org.uk> -Signed-off-by: Matt Fleming <matt.fleming@intel.com> ---- - drivers/firmware/efivars.c | 13 ++++++++----- - 1 file changed, 8 insertions(+), 5 deletions(-) - -diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c -index 58cec62..9ac9340 100644 ---- a/drivers/firmware/efivars.c -+++ b/drivers/firmware/efivars.c -@@ -694,6 +694,7 @@ static ssize_t efivarfs_file_write(struct file *file, - struct inode *inode = file->f_mapping->host; - unsigned long datasize = count - sizeof(attributes); - unsigned long newdatasize; -+ ssize_t bytes = 0; - - if (count < sizeof(attributes)) - return -EINVAL; -@@ -706,22 +707,22 @@ static ssize_t efivarfs_file_write(struct file *file, - efivars = var->efivars; - - if (copy_from_user(&attributes, userbuf, sizeof(attributes))) { -- count = -EFAULT; -+ bytes = -EFAULT; - goto out; - } - - if (attributes & ~(EFI_VARIABLE_MASK)) { -- count = -EINVAL; -+ bytes = -EINVAL; - goto out; - } - - if (copy_from_user(data, userbuf + sizeof(attributes), datasize)) { -- count = -EFAULT; -+ bytes = -EFAULT; - goto out; - } - - if (validate_var(&var->var, data, datasize) == false) { -- count = -EINVAL; -+ bytes = -EINVAL; - goto out; - } - -@@ -744,6 +745,8 @@ static ssize_t efivarfs_file_write(struct file *file, - return efi_status_to_err(status); - } - -+ bytes = count; -+ - /* - * Writing to the variable may have caused a change in size (which - * could either be an append or an overwrite), or the variable to be -@@ -778,7 +781,7 @@ static ssize_t efivarfs_file_write(struct file *file, - out: - kfree(data); - -- return count; -+ return bytes; - } - - static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf, --- -1.7.12.1 - diff --git a/freed-ora/current/master/exec-do-not-leave-bprm-interp-on-stack.patch b/freed-ora/current/master/exec-do-not-leave-bprm-interp-on-stack.patch deleted file mode 100644 index 5198824ed..000000000 --- a/freed-ora/current/master/exec-do-not-leave-bprm-interp-on-stack.patch +++ /dev/null @@ -1,118 +0,0 @@ -From 6752ab4cb863fc63ed85f1ca78a42235c09fad83 Mon Sep 17 00:00:00 2001 -From: Kees Cook <keescook@chromium.org> -Date: Mon, 26 Nov 2012 09:07:50 -0500 -Subject: [PATCH 1/2] exec: do not leave bprm->interp on stack - -If a series of scripts are executed, each triggering module loading via -unprintable bytes in the script header, kernel stack contents can leak -into the command line. - -Normally execution of binfmt_script and binfmt_misc happens recursively. -However, when modules are enabled, and unprintable bytes exist in the -bprm->buf, execution will restart after attempting to load matching binfmt -modules. Unfortunately, the logic in binfmt_script and binfmt_misc does -not expect to get restarted. They leave bprm->interp pointing to their -local stack. This means on restart bprm->interp is left pointing into -unused stack memory which can then be copied into the userspace argv -areas. - -After additional study, it seems that both recursion and restart remains -the desirable way to handle exec with scripts, misc, and modules. As -such, we need to protect the changes to interp. - -This changes the logic to require allocation for any changes to the -bprm->interp. To avoid adding a new kmalloc to every exec, the default -value is left as-is. Only when passing through binfmt_script or -binfmt_misc does an allocation take place. - -For a proof of concept, see DoTest.sh from: -http://www.halfdog.net/Security/2012/LinuxKernelBinfmtScriptStackDataDisclosure/ - -Signed-off-by: Kees Cook <keescook@chromium.org> -Cc: halfdog <me@halfdog.net> -Cc: P J P <ppandit@redhat.com> -Cc: Alexander Viro <viro@zeniv.linux.org.uk> -Cc: <stable@vger.kernel.org> -Signed-off-by: Andrew Morton <akpm@linux-foundation.org> ---- - fs/binfmt_misc.c | 5 ++++- - fs/binfmt_script.c | 4 +++- - fs/exec.c | 15 +++++++++++++++ - include/linux/binfmts.h | 1 + - 4 files changed, 23 insertions(+), 2 deletions(-) - -diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c -index 790b3cd..772428d 100644 ---- a/fs/binfmt_misc.c -+++ b/fs/binfmt_misc.c -@@ -176,7 +176,10 @@ static int load_misc_binary(struct linux_binprm *bprm, struct pt_regs *regs) - goto _error; - bprm->argc ++; - -- bprm->interp = iname; /* for binfmt_script */ -+ /* Update interp in case binfmt_script needs it. */ -+ retval = bprm_change_interp(iname, bprm); -+ if (retval < 0) -+ goto _error; - - interp_file = open_exec (iname); - retval = PTR_ERR (interp_file); -diff --git a/fs/binfmt_script.c b/fs/binfmt_script.c -index d3b8c1f..df49d48 100644 ---- a/fs/binfmt_script.c -+++ b/fs/binfmt_script.c -@@ -82,7 +82,9 @@ static int load_script(struct linux_binprm *bprm,struct pt_regs *regs) - retval = copy_strings_kernel(1, &i_name, bprm); - if (retval) return retval; - bprm->argc++; -- bprm->interp = interp; -+ retval = bprm_change_interp(interp, bprm); -+ if (retval < 0) -+ return retval; - - /* - * OK, now restart the process with the interpreter's dentry. -diff --git a/fs/exec.c b/fs/exec.c -index 0039055..c6e6de4 100644 ---- a/fs/exec.c -+++ b/fs/exec.c -@@ -1175,9 +1175,24 @@ void free_bprm(struct linux_binprm *bprm) - mutex_unlock(¤t->signal->cred_guard_mutex); - abort_creds(bprm->cred); - } -+ /* If a binfmt changed the interp, free it. */ -+ if (bprm->interp != bprm->filename) -+ kfree(bprm->interp); - kfree(bprm); - } - -+int bprm_change_interp(char *interp, struct linux_binprm *bprm) -+{ -+ /* If a binfmt changed the interp, free it first. */ -+ if (bprm->interp != bprm->filename) -+ kfree(bprm->interp); -+ bprm->interp = kstrdup(interp, GFP_KERNEL); -+ if (!bprm->interp) -+ return -ENOMEM; -+ return 0; -+} -+EXPORT_SYMBOL(bprm_change_interp); -+ - /* - * install the new credentials for this executable - */ -diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h -index cfcc6bf..de0628e 100644 ---- a/include/linux/binfmts.h -+++ b/include/linux/binfmts.h -@@ -114,6 +114,7 @@ extern int setup_arg_pages(struct linux_binprm * bprm, - unsigned long stack_top, - int executable_stack); - extern int bprm_mm_init(struct linux_binprm *bprm); -+extern int bprm_change_interp(char *interp, struct linux_binprm *bprm); - extern int copy_strings_kernel(int argc, const char *const *argv, - struct linux_binprm *bprm); - extern int prepare_bprm_creds(struct linux_binprm *bprm); --- -1.8.0 - diff --git a/freed-ora/current/master/exec-use-eloop-for-max-recursion-depth.patch b/freed-ora/current/master/exec-use-eloop-for-max-recursion-depth.patch deleted file mode 100644 index a3c48884f..000000000 --- a/freed-ora/current/master/exec-use-eloop-for-max-recursion-depth.patch +++ /dev/null @@ -1,144 +0,0 @@ -From ba1b23d05259e31d30a78017cdfbc010dcb08aa6 Mon Sep 17 00:00:00 2001 -From: Kees Cook <keescook@chromium.org> -Date: Mon, 26 Nov 2012 09:02:11 -0500 -Subject: [PATCH 2/2] exec: use -ELOOP for max recursion depth - -To avoid an explosion of request_module calls on a chain of abusive -scripts, fail maximum recursion with -ELOOP instead of -ENOEXEC. As soon -as maximum recursion depth is hit, the error will fail all the way back -up the chain, aborting immediately. - -This also has the side-effect of stopping the user's shell from attempting -to reexecute the top-level file as a shell script. As seen in the -dash source: - - if (cmd != path_bshell && errno == ENOEXEC) { - *argv-- = cmd; - *argv = cmd = path_bshell; - goto repeat; - } - -The above logic was designed for running scripts automatically that lacked -the "#!" header, not to re-try failed recursion. On a legitimate -ENOEXEC, -things continue to behave as the shell expects. - -Additionally, when tracking recursion, the binfmt handlers should not be -involved. The recursion being tracked is the depth of calls through -search_binary_handler(), so that function should be exclusively responsible -for tracking the depth. - -Signed-off-by: Kees Cook <keescook@chromium.org> -Cc: halfdog <me@halfdog.net> -Cc: P J P <ppandit@redhat.com> -Cc: Alexander Viro <viro@zeniv.linux.org.uk> -Signed-off-by: Andrew Morton <akpm@linux-foundation.org> ---- - fs/binfmt_em86.c | 1 - - fs/binfmt_misc.c | 6 ------ - fs/binfmt_script.c | 4 +--- - fs/exec.c | 10 +++++----- - include/linux/binfmts.h | 2 -- - 5 files changed, 6 insertions(+), 17 deletions(-) - -diff --git a/fs/binfmt_em86.c b/fs/binfmt_em86.c -index 2790c7e..575796a 100644 ---- a/fs/binfmt_em86.c -+++ b/fs/binfmt_em86.c -@@ -42,7 +42,6 @@ static int load_em86(struct linux_binprm *bprm,struct pt_regs *regs) - return -ENOEXEC; - } - -- bprm->recursion_depth++; /* Well, the bang-shell is implicit... */ - allow_write_access(bprm->file); - fput(bprm->file); - bprm->file = NULL; -diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c -index 772428d..f0f1a06 100644 ---- a/fs/binfmt_misc.c -+++ b/fs/binfmt_misc.c -@@ -117,10 +117,6 @@ static int load_misc_binary(struct linux_binprm *bprm, struct pt_regs *regs) - if (!enabled) - goto _ret; - -- retval = -ENOEXEC; -- if (bprm->recursion_depth > BINPRM_MAX_RECURSION) -- goto _ret; -- - /* to keep locking time low, we copy the interpreter string */ - read_lock(&entries_lock); - fmt = check_file(bprm); -@@ -200,8 +196,6 @@ static int load_misc_binary(struct linux_binprm *bprm, struct pt_regs *regs) - if (retval < 0) - goto _error; - -- bprm->recursion_depth++; -- - retval = search_binary_handler (bprm, regs); - if (retval < 0) - goto _error; -diff --git a/fs/binfmt_script.c b/fs/binfmt_script.c -index df49d48..8ae4be1 100644 ---- a/fs/binfmt_script.c -+++ b/fs/binfmt_script.c -@@ -22,15 +22,13 @@ static int load_script(struct linux_binprm *bprm,struct pt_regs *regs) - char interp[BINPRM_BUF_SIZE]; - int retval; - -- if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!') || -- (bprm->recursion_depth > BINPRM_MAX_RECURSION)) -+ if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!')) - return -ENOEXEC; - /* - * This section does the #! interpretation. - * Sorta complicated, but hopefully it will work. -TYT - */ - -- bprm->recursion_depth++; - allow_write_access(bprm->file); - fput(bprm->file); - bprm->file = NULL; -diff --git a/fs/exec.c b/fs/exec.c -index c6e6de4..85c1f9e 100644 ---- a/fs/exec.c -+++ b/fs/exec.c -@@ -1371,6 +1371,10 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) - struct linux_binfmt *fmt; - pid_t old_pid, old_vpid; - -+ /* This allows 4 levels of binfmt rewrites before failing hard. */ -+ if (depth > 5) -+ return -ELOOP; -+ - retval = security_bprm_check(bprm); - if (retval) - return retval; -@@ -1395,12 +1399,8 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) - if (!try_module_get(fmt->module)) - continue; - read_unlock(&binfmt_lock); -+ bprm->recursion_depth = depth + 1; - retval = fn(bprm, regs); -- /* -- * Restore the depth counter to its starting value -- * in this call, so we don't have to rely on every -- * load_binary function to restore it on return. -- */ - bprm->recursion_depth = depth; - if (retval >= 0) { - if (depth == 0) { -diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h -index de0628e..54135f6 100644 ---- a/include/linux/binfmts.h -+++ b/include/linux/binfmts.h -@@ -54,8 +54,6 @@ struct linux_binprm { - #define BINPRM_FLAGS_EXECFD_BIT 1 - #define BINPRM_FLAGS_EXECFD (1 << BINPRM_FLAGS_EXECFD_BIT) - --#define BINPRM_MAX_RECURSION 4 -- - /* Function parameter for binfmt->coredump */ - struct coredump_params { - siginfo_t *siginfo; --- -1.8.0 - diff --git a/freed-ora/current/master/handle-efi-roms.patch b/freed-ora/current/master/handle-efi-roms.patch deleted file mode 100644 index bc080542b..000000000 --- a/freed-ora/current/master/handle-efi-roms.patch +++ /dev/null @@ -1,388 +0,0 @@ -diff -ur linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/boot/compressed/eboot.c ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/boot/compressed/eboot.c ---- linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/boot/compressed/eboot.c 2012-08-22 15:26:32.485522068 -0400 -+++ ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/boot/compressed/eboot.c 2012-08-22 15:25:40.529244868 -0400 -@@ -8,6 +8,7 @@ - * ----------------------------------------------------------------------- */ - - #include <linux/efi.h> -+#include <linux/pci.h> - #include <asm/efi.h> - #include <asm/setup.h> - #include <asm/desc.h> -@@ -243,6 +244,121 @@ - *size = len; - } - -+static efi_status_t setup_efi_pci(struct boot_params *params) -+{ -+ efi_pci_io_protocol *pci; -+ efi_status_t status; -+ void **pci_handle; -+ efi_guid_t pci_proto = EFI_PCI_IO_PROTOCOL_GUID; -+ unsigned long nr_pci, size = 0; -+ int i; -+ struct setup_data *data; -+ -+ data = (struct setup_data *)params->hdr.setup_data; -+ -+ while (data && data->next) -+ data = (struct setup_data *)data->next; -+ -+ status = efi_call_phys5(sys_table->boottime->locate_handle, -+ EFI_LOCATE_BY_PROTOCOL, &pci_proto, -+ NULL, &size, pci_handle); -+ -+ if (status == EFI_BUFFER_TOO_SMALL) { -+ status = efi_call_phys3(sys_table->boottime->allocate_pool, -+ EFI_LOADER_DATA, size, &pci_handle); -+ -+ if (status != EFI_SUCCESS) -+ return status; -+ -+ status = efi_call_phys5(sys_table->boottime->locate_handle, -+ EFI_LOCATE_BY_PROTOCOL, &pci_proto, -+ NULL, &size, pci_handle); -+ } -+ -+ if (status != EFI_SUCCESS) -+ goto free_handle; -+ -+ nr_pci = size / sizeof(void *); -+ for (i = 0; i < nr_pci; i++) { -+ void *h = pci_handle[i]; -+ uint64_t attributes; -+ struct pci_setup_rom *rom; -+ -+ status = efi_call_phys3(sys_table->boottime->handle_protocol, -+ h, &pci_proto, &pci); -+ -+ if (status != EFI_SUCCESS) -+ continue; -+ -+ if (!pci) -+ continue; -+ -+ status = efi_call_phys4(pci->attributes, pci, -+ EfiPciIoAttributeOperationGet, 0, -+ &attributes); -+ -+ if (status != EFI_SUCCESS) -+ continue; -+ -+ if (!attributes & EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM) -+ continue; -+ -+ if (!pci->romimage || !pci->romsize) -+ continue; -+ -+ size = pci->romsize + sizeof(*rom); -+ -+ status = efi_call_phys3(sys_table->boottime->allocate_pool, -+ EFI_LOADER_DATA, size, &rom); -+ -+ if (status != EFI_SUCCESS) -+ continue; -+ -+ rom->data.type = SETUP_PCI; -+ rom->data.len = size - sizeof(struct setup_data); -+ rom->data.next = NULL; -+ rom->pcilen = pci->romsize; -+ -+ status = efi_call_phys5(pci->pci.read, pci, -+ EfiPciIoWidthUint16, PCI_VENDOR_ID, -+ 1, &(rom->vendor)); -+ -+ if (status != EFI_SUCCESS) -+ goto free_struct; -+ -+ status = efi_call_phys5(pci->pci.read, pci, -+ EfiPciIoWidthUint16, PCI_DEVICE_ID, -+ 1, &(rom->devid)); -+ -+ if (status != EFI_SUCCESS) -+ goto free_struct; -+ -+ status = efi_call_phys5(pci->get_location, pci, -+ &(rom->segment), &(rom->bus), -+ &(rom->device), &(rom->function)); -+ -+ if (status != EFI_SUCCESS) -+ goto free_struct; -+ -+ memcpy(rom->romdata, pci->romimage, pci->romsize); -+ -+ if (data) -+ data->next = (uint64_t)rom; -+ else -+ params->hdr.setup_data = (uint64_t)rom; -+ -+ data = (struct setup_data *)rom; -+ -+ continue; -+ free_struct: -+ efi_call_phys1(sys_table->boottime->free_pool, rom); -+ } -+ -+free_handle: -+ efi_call_phys1(sys_table->boottime->free_pool, pci_handle); -+ return status; -+} -+ - /* - * See if we have Graphics Output Protocol - */ -@@ -1052,6 +1171,8 @@ - - setup_graphics(boot_params); - -+ setup_efi_pci(boot_params); -+ - status = efi_call_phys3(sys_table->boottime->allocate_pool, - EFI_LOADER_DATA, sizeof(*gdt), - (void **)&gdt); -diff -ur linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/include/asm/bootparam.h ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/include/asm/bootparam.h ---- linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/include/asm/bootparam.h 2012-08-22 15:26:32.485522068 -0400 -+++ ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/include/asm/bootparam.h 2012-08-22 15:25:40.530244882 -0400 -@@ -13,6 +13,7 @@ - #define SETUP_NONE 0 - #define SETUP_E820_EXT 1 - #define SETUP_DTB 2 -+#define SETUP_PCI 3 - - /* extensible setup data list node */ - struct setup_data { -diff -ur linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/include/asm/pci.h ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/include/asm/pci.h ---- linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/include/asm/pci.h 2012-07-21 16:58:29.000000000 -0400 -+++ ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/include/asm/pci.h 2012-08-22 15:25:40.530244882 -0400 -@@ -171,4 +171,16 @@ - } - #endif - -+struct pci_setup_rom { -+ struct setup_data data; -+ uint16_t vendor; -+ uint16_t devid; -+ uint64_t pcilen; -+ unsigned long segment; -+ unsigned long bus; -+ unsigned long device; -+ unsigned long function; -+ uint8_t romdata[0]; -+}; -+ - #endif /* _ASM_X86_PCI_H */ -diff -ur linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/pci/common.c ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/pci/common.c ---- linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/pci/common.c 2012-08-22 15:24:45.477951182 -0400 -+++ ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/arch/x86/pci/common.c 2012-08-22 15:25:40.530244882 -0400 -@@ -17,6 +17,7 @@ - #include <asm/io.h> - #include <asm/smp.h> - #include <asm/pci_x86.h> -+#include <asm/setup.h> - - unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 | - PCI_PROBE_MMCONF; -@@ -608,6 +609,38 @@ - return (pci_probe & PCI_ASSIGN_ALL_BUSSES) ? 1 : 0; - } - -+int pcibios_add_device(struct pci_dev *dev) -+{ -+ struct setup_data *data; -+ struct pci_setup_rom *rom; -+ u64 pa_data; -+ -+ if (boot_params.hdr.version < 0x0209) -+ return 0; -+ -+ pa_data = boot_params.hdr.setup_data; -+ while (pa_data) { -+ data = phys_to_virt(pa_data); -+ -+ if (data->type == SETUP_PCI) { -+ rom = (struct pci_setup_rom *)data; -+ -+ if ((pci_domain_nr(dev->bus) == rom->segment) && -+ (dev->bus->number == rom->bus) && -+ (PCI_SLOT(dev->devfn) == rom->device) && -+ (PCI_FUNC(dev->devfn) == rom->function) && -+ (dev->vendor == rom->vendor) && -+ (dev->device == rom->devid)) { -+ dev->rom = (void *)(pa_data + -+ offsetof(struct pci_setup_rom, romdata)); -+ dev->romlen = rom->pcilen; -+ } -+ } -+ pa_data = data->next; -+ } -+ return 0; -+} -+ - int pcibios_enable_device(struct pci_dev *dev, int mask) - { - int err; -diff -ur linux-3.6.0-0.rc2.git2.1.fc18.x86_64/drivers/pci/bus.c ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/drivers/pci/bus.c ---- linux-3.6.0-0.rc2.git2.1.fc18.x86_64/drivers/pci/bus.c 2012-08-22 15:24:47.425961575 -0400 -+++ ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/drivers/pci/bus.c 2012-08-22 15:26:20.147456241 -0400 -@@ -166,6 +166,11 @@ - int retval; - - pci_fixup_device(pci_fixup_final, dev); -+ -+ retval = pcibios_add_device(dev); -+ if (retval) -+ return retval; -+ - retval = device_add(&dev->dev); - if (retval) - return retval; -diff -ur linux-3.6.0-0.rc2.git2.1.fc18.x86_64/drivers/pci/pci.c ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/drivers/pci/pci.c ---- linux-3.6.0-0.rc2.git2.1.fc18.x86_64/drivers/pci/pci.c 2012-08-22 15:24:47.432961612 -0400 -+++ ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/drivers/pci/pci.c 2012-08-22 15:25:40.531244893 -0400 -@@ -1385,6 +1385,19 @@ - dr->pinned = 1; - } - -+/* -+ * pcibios_add_device - provide arch specific hooks when adding device dev -+ * @dev: the PCI device being added -+ * -+ * Permits the platform to provide architecture specific functionality when -+ * devices are added. This is the default implementation. Architecture -+ * implementations can override this. -+ */ -+int __attribute__ ((weak)) pcibios_add_device (struct pci_dev *dev) -+{ -+ return 0; -+} -+ - /** - * pcibios_disable_device - disable arch specific PCI resources for device dev - * @dev: the PCI device to disable -diff -ur linux-3.6.0-0.rc2.git2.1.fc18.x86_64/drivers/pci/rom.c ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/drivers/pci/rom.c ---- linux-3.6.0-0.rc2.git2.1.fc18.x86_64/drivers/pci/rom.c 2012-07-21 16:58:29.000000000 -0400 -+++ ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/drivers/pci/rom.c 2012-08-22 15:25:40.531244893 -0400 -@@ -126,6 +126,12 @@ - /* primary video rom always starts here */ - start = (loff_t)0xC0000; - *size = 0x20000; /* cover C000:0 through E000:0 */ -+ /* -+ * Some devices may provide ROMs via a source other than the BAR -+ */ -+ } else if (pdev->rom && pdev->romlen) { -+ *size = pdev->romlen; -+ return phys_to_virt(pdev->rom); - } else { - if (res->flags & - (IORESOURCE_ROM_COPY | IORESOURCE_ROM_BIOS_COPY)) { -@@ -219,7 +225,8 @@ - if (res->flags & (IORESOURCE_ROM_COPY | IORESOURCE_ROM_BIOS_COPY)) - return; - -- iounmap(rom); -+ if (!pdev->rom || !pdev->romlen) -+ iounmap(rom); - - /* Disable again before continuing, leave enabled if pci=rom */ - if (!(res->flags & (IORESOURCE_ROM_ENABLE | IORESOURCE_ROM_SHADOW))) -diff -ur linux-3.6.0-0.rc2.git2.1.fc18.x86_64/include/linux/efi.h ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/include/linux/efi.h ---- linux-3.6.0-0.rc2.git2.1.fc18.x86_64/include/linux/efi.h 2012-08-22 15:24:49.550972911 -0400 -+++ ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/include/linux/efi.h 2012-08-22 15:25:40.533244906 -0400 -@@ -196,6 +196,77 @@ - void *create_event_ex; - } efi_boot_services_t; - -+typedef enum { -+ EfiPciIoWidthUint8, -+ EfiPciIoWidthUint16, -+ EfiPciIoWidthUint32, -+ EfiPciIoWidthUint64, -+ EfiPciIoWidthFifoUint8, -+ EfiPciIoWidthFifoUint16, -+ EfiPciIoWidthFifoUint32, -+ EfiPciIoWidthFifoUint64, -+ EfiPciIoWidthFillUint8, -+ EfiPciIoWidthFillUint16, -+ EfiPciIoWidthFillUint32, -+ EfiPciIoWidthFillUint64, -+ EfiPciIoWidthMaximum -+} EFI_PCI_IO_PROTOCOL_WIDTH; -+ -+typedef enum { -+ EfiPciIoAttributeOperationGet, -+ EfiPciIoAttributeOperationSet, -+ EfiPciIoAttributeOperationEnable, -+ EfiPciIoAttributeOperationDisable, -+ EfiPciIoAttributeOperationSupported, -+ EfiPciIoAttributeOperationMaximum -+} EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION; -+ -+ -+typedef struct { -+ void *read; -+ void *write; -+} efi_pci_io_protocol_access_t; -+ -+typedef struct { -+ void *poll_mem; -+ void *poll_io; -+ efi_pci_io_protocol_access_t mem; -+ efi_pci_io_protocol_access_t io; -+ efi_pci_io_protocol_access_t pci; -+ void *copy_mem; -+ void *map; -+ void *unmap; -+ void *allocate_buffer; -+ void *free_buffer; -+ void *flush; -+ void *get_location; -+ void *attributes; -+ void *get_bar_attributes; -+ void *set_bar_attributes; -+ uint64_t romsize; -+ void *romimage; -+} efi_pci_io_protocol; -+ -+#define EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO 0x0001 -+#define EFI_PCI_IO_ATTRIBUTE_ISA_IO 0x0002 -+#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO 0x0004 -+#define EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY 0x0008 -+#define EFI_PCI_IO_ATTRIBUTE_VGA_IO 0x0010 -+#define EFI_PCI_IO_ATTRIBUTE_IDE_PRIMARY_IO 0x0020 -+#define EFI_PCI_IO_ATTRIBUTE_IDE_SECONDARY_IO 0x0040 -+#define EFI_PCI_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x0080 -+#define EFI_PCI_IO_ATTRIBUTE_IO 0x0100 -+#define EFI_PCI_IO_ATTRIBUTE_MEMORY 0x0200 -+#define EFI_PCI_IO_ATTRIBUTE_BUS_MASTER 0x0400 -+#define EFI_PCI_IO_ATTRIBUTE_MEMORY_CACHED 0x0800 -+#define EFI_PCI_IO_ATTRIBUTE_MEMORY_DISABLE 0x1000 -+#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_DEVICE 0x2000 -+#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM 0x4000 -+#define EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE 0x8000 -+#define EFI_PCI_IO_ATTRIBUTE_ISA_IO_16 0x10000 -+#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO_16 0x20000 -+#define EFI_PCI_IO_ATTRIBUTE_VGA_IO_16 0x40000 -+ - /* - * Types and defines for EFI ResetSystem - */ -diff -ur linux-3.6.0-0.rc2.git2.1.fc18.x86_64/include/linux/pci.h ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/include/linux/pci.h ---- linux-3.6.0-0.rc2.git2.1.fc18.x86_64/include/linux/pci.h 2012-08-22 15:24:48.703968392 -0400 -+++ ../kernel-3.5.fc18.bak/linux-3.6.0-0.rc2.git2.1.fc18.x86_64/include/linux/pci.h 2012-08-22 15:25:40.534244910 -0400 -@@ -355,6 +355,8 @@ - }; - struct pci_ats *ats; /* Address Translation Service */ - #endif -+ void *rom; /* Physical pointer to ROM if it's not from the BAR */ -+ size_t romlen; /* Length of ROM if it's not from the BAR */ - }; - - static inline struct pci_dev *pci_physfn(struct pci_dev *dev) -@@ -1582,6 +1584,7 @@ - void pcibios_set_master(struct pci_dev *dev); - int pcibios_set_pcie_reset_state(struct pci_dev *dev, - enum pcie_reset_state state); -+int pcibios_add_device(struct pci_dev *dev); - - #ifdef CONFIG_PCI_MMCONFIG - extern void __init pci_mmcfg_early_init(void); diff --git a/freed-ora/current/master/linux-2.6-input-kill-stupid-messages.patch b/freed-ora/current/master/input-kill-stupid-messages.patch index ff7023f51..ff7023f51 100644 --- a/freed-ora/current/master/linux-2.6-input-kill-stupid-messages.patch +++ b/freed-ora/current/master/input-kill-stupid-messages.patch diff --git a/freed-ora/current/master/iwlegacy-add-flush-callback.patch b/freed-ora/current/master/iwlegacy-add-flush-callback.patch new file mode 100644 index 000000000..b8b656795 --- /dev/null +++ b/freed-ora/current/master/iwlegacy-add-flush-callback.patch @@ -0,0 +1,103 @@ +From 70277f47b58b174a6b0b891dcd06ae5125afb73b Mon Sep 17 00:00:00 2001 +From: Stanislaw Gruszka <sgruszka@redhat.com> +Date: Thu, 20 Dec 2012 14:31:51 +0100 +Subject: [PATCH] iwlegacy: add flush callback + +Dump implementation of flush, which just wait until all TX queues +become empty. + +Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> +Signed-off-by: John W. Linville <linville@tuxdriver.com> +--- + drivers/net/wireless/iwlegacy/3945-mac.c | 1 + + drivers/net/wireless/iwlegacy/4965-mac.c | 1 + + drivers/net/wireless/iwlegacy/common.c | 36 ++++++++++++++++++++++++++++++ + drivers/net/wireless/iwlegacy/common.h | 1 + + 4 files changed, 39 insertions(+), 0 deletions(-) + +diff --git a/drivers/net/wireless/iwlegacy/3945-mac.c b/drivers/net/wireless/iwlegacy/3945-mac.c +index d604b40..962400a 100644 +--- a/drivers/net/wireless/iwlegacy/3945-mac.c ++++ b/drivers/net/wireless/iwlegacy/3945-mac.c +@@ -3474,6 +3474,7 @@ struct ieee80211_ops il3945_mac_ops = { + .sta_add = il3945_mac_sta_add, + .sta_remove = il_mac_sta_remove, + .tx_last_beacon = il_mac_tx_last_beacon, ++ .flush = il_mac_flush, + }; + + static int +diff --git a/drivers/net/wireless/iwlegacy/4965-mac.c b/drivers/net/wireless/iwlegacy/4965-mac.c +index 6a86ed4..c40020c 100644 +--- a/drivers/net/wireless/iwlegacy/4965-mac.c ++++ b/drivers/net/wireless/iwlegacy/4965-mac.c +@@ -6308,6 +6308,7 @@ const struct ieee80211_ops il4965_mac_ops = { + .sta_remove = il_mac_sta_remove, + .channel_switch = il4965_mac_channel_switch, + .tx_last_beacon = il_mac_tx_last_beacon, ++ .flush = il_mac_flush, + }; + + static int +diff --git a/drivers/net/wireless/iwlegacy/common.c b/drivers/net/wireless/iwlegacy/common.c +index 7e16d10..56b8021 100644 +--- a/drivers/net/wireless/iwlegacy/common.c ++++ b/drivers/net/wireless/iwlegacy/common.c +@@ -4707,6 +4707,42 @@ out: + } + EXPORT_SYMBOL(il_mac_change_interface); + ++void ++il_mac_flush(struct ieee80211_hw *hw, bool drop) ++{ ++ struct il_priv *il = hw->priv; ++ unsigned long timeout = jiffies + msecs_to_jiffies(500); ++ int i; ++ ++ mutex_lock(&il->mutex); ++ D_MAC80211("enter\n"); ++ ++ if (il->txq == NULL) ++ goto out; ++ ++ for (i = 0; i < il->hw_params.max_txq_num; i++) { ++ struct il_queue *q; ++ ++ if (i == il->cmd_queue) ++ continue; ++ ++ q = &il->txq[i].q; ++ if (q->read_ptr == q->write_ptr) ++ continue; ++ ++ if (time_after(jiffies, timeout)) { ++ IL_ERR("Failed to flush queue %d\n", q->id); ++ break; ++ } ++ ++ msleep(20); ++ } ++out: ++ D_MAC80211("leave\n"); ++ mutex_unlock(&il->mutex); ++} ++EXPORT_SYMBOL(il_mac_flush); ++ + /* + * On every watchdog tick we check (latest) time stamp. If it does not + * change during timeout period and queue is not empty we reset firmware. +diff --git a/drivers/net/wireless/iwlegacy/common.h b/drivers/net/wireless/iwlegacy/common.h +index a9a569f..37fe553 100644 +--- a/drivers/net/wireless/iwlegacy/common.h ++++ b/drivers/net/wireless/iwlegacy/common.h +@@ -1723,6 +1723,7 @@ void il_mac_remove_interface(struct ieee80211_hw *hw, + struct ieee80211_vif *vif); + int il_mac_change_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + enum nl80211_iftype newtype, bool newp2p); ++void il_mac_flush(struct ieee80211_hw *hw, bool drop); + int il_alloc_txq_mem(struct il_priv *il); + void il_free_txq_mem(struct il_priv *il); + +-- +1.7.7.6 + diff --git a/freed-ora/current/master/kernel.spec b/freed-ora/current/master/kernel.spec index 95c1548bf..b0504d6ae 100644 --- a/freed-ora/current/master/kernel.spec +++ b/freed-ora/current/master/kernel.spec @@ -6,7 +6,7 @@ Summary: The Linux kernel # For a stable, released kernel, released_kernel should be 1. For rawhide # and/or a kernel built from an rc or git snapshot, released_kernel should # be 0. -%global released_kernel 1 +%global released_kernel 0 # Sign modules on x86. Make sure the config files match this setting if more # architectures are added. @@ -62,7 +62,7 @@ Summary: The Linux kernel # For non-released -rc kernels, this will be appended after the rcX and # gitX tags, so a 3 here would become part of release "0.rcX.gitX.3" # -%global baserelease 6 +%global baserelease 1 %global fedora_build %{baserelease} # base_sublevel is the kernel version we're starting with and patching @@ -78,9 +78,9 @@ Summary: The Linux kernel %define basegnu -gnu%{?librev} # To be inserted between "patch" and "-2.6.". -#define stablelibre -3.7%{?stablegnux} -%define rcrevlibre -3.6%{?rcrevgnux} -#define gitrevlibre -3.7%{?gitrevgnux} +#define stablelibre -3.8%{?stablegnux} +%define rcrevlibre -3.7%{?rcrevgnux} +#define gitrevlibre -3.8%{?gitrevgnux} %if 0%{?stablelibre:1} %define stablegnu -gnu%{?librev} @@ -131,9 +131,9 @@ Summary: The Linux kernel # The next upstream release sublevel (base_sublevel+1) %define upstream_sublevel %(echo $((%{base_sublevel} + 1))) # The rc snapshot level -%define rcrev 8 +%define rcrev 6 # The git snapshot level -%define gitrev 0 +%define gitrev 2 # Set rpm version accordingly %define rpmversion 3.%{upstream_sublevel}.0 %endif @@ -178,8 +178,6 @@ Summary: The Linux kernel %define with_tegra %{?_without_tegra: 0} %{?!_without_tegra: 1} # kernel-kirkwood (only valid for arm) %define with_kirkwood %{?_without_kirkwood: 0} %{?!_without_kirkwood: 1} -# kernel-imx (only valid for arm) -%define with_imx %{?_without_imx: 0} %{?!_without_imx: 1} # # Additional options for user-friendly one-off kernel building: # @@ -294,9 +292,8 @@ Summary: The Linux kernel %define with_pae 0 %endif -# kernel up (unified kernel target), tegra, omap and imx are only built on armv7 hfp/sfp +# kernel up (unified kernel target), tegra and omap are only built on armv7 hfp/sfp %ifnarch armv7hl armv7l -%define with_imx 0 %define with_omap 0 %define with_tegra 0 %endif @@ -379,7 +376,7 @@ Summary: The Linux kernel %endif # sparse blows up on ppc64 and sparc64 -%ifarch ppc64 ppc sparc64 ppc64p7 +%ifarch ppc64 ppc ppc64p7 %define with_sparse 0 %endif @@ -420,19 +417,6 @@ Summary: The Linux kernel %define with_tools 0 %endif -%ifarch sparc64 -%define asmarch sparc -%define all_arch_configs kernel-%{version}-sparc64*.config -%define make_target vmlinux -%define kernel_image vmlinux -%define image_install_path boot -%define with_tools 0 -%endif - -%ifarch sparcv9 -%define hdrarch sparc -%endif - %ifarch ppc %define asmarch powerpc %define hdrarch powerpc @@ -460,8 +444,6 @@ Summary: The Linux kernel %define with_perf 0 %define with_tools 0 %endif -# TEMPORARY until perf build fixed on ARM to get a new 3.7rc kernel -%define with_perf 0 %endif # Should make listnewconfig fail if there's config options @@ -479,7 +461,7 @@ Summary: The Linux kernel # Which is a BadThing(tm). # We only build kernel-headers on the following... -%define nobuildarches i386 s390 sparc sparcv9 +%define nobuildarches i386 s390 %ifarch %nobuildarches %define with_up 0 @@ -575,7 +557,7 @@ Version: %{rpmversion} Release: %{pkg_release} # DO NOT CHANGE THE 'ExclusiveArch' LINE TO TEMPORARILY EXCLUDE AN ARCHITECTURE BUILD. # SET %%nobuildarches (ABOVE) INSTEAD -ExclusiveArch: noarch %{all_x86} x86_64 ppc ppc64 ppc64p7 %{sparc} s390 s390x %{arm} +ExclusiveArch: noarch %{all_x86} x86_64 ppc ppc64 ppc64p7 s390 s390x %{arm} ExclusiveOS: Linux %kernel_reqprovconf @@ -586,7 +568,7 @@ ExclusiveOS: Linux BuildRequires: module-init-tools, patch >= 2.5.4, bash >= 2.03, sh-utils, tar BuildRequires: bzip2, xz, findutils, gzip, m4, perl, make >= 3.78, diffutils, gawk BuildRequires: gcc >= 3.4.2, binutils >= 2.12, redhat-rpm-config, hmaccalc -BuildRequires: net-tools +BuildRequires: net-tools, hostname BuildRequires: xmlto, asciidoc %if %{with_sparse} BuildRequires: sparse >= 0.4.1 @@ -601,9 +583,9 @@ BuildRequires: pciutils-devel gettext BuildConflicts: rhbuildsys(DiskFree) < 500Mb %if %{with_debuginfo} # Fancy new debuginfo generation introduced in Fedora 8/RHEL 6. -# The -r flag to find-debuginfo.sh to invoke eu-strip --reloc-debug-sections -# reduces the number of relocations in kernel module .ko.debug files and was -# introduced with rpm 4.9 and elfutils 0.153. +# The -r flag to find-debuginfo.sh invokes eu-strip --reloc-debug-sections +# which reduces the number of relocations in kernel module .ko.debug files and +# was introduced with rpm 4.9 and elfutils 0.153. BuildRequires: rpm-build >= 4.9.0-1, elfutils >= elfutils-0.153-1 %define debuginfo_args --strict-build-id -r %endif @@ -619,7 +601,7 @@ Source0: http://linux-libre.fsfla.org/pub/linux-libre/freed-ora/src/linux%{?base Source3: deblob-main Source4: deblob-check Source5: deblob-%{kversion} -# Source6: deblob-3.%{upstream_sublevel} +Source6: deblob-3.%{upstream_sublevel} %if %{signmodules} Source11: x509.genkey @@ -628,7 +610,8 @@ Source11: x509.genkey Source15: merge.pl Source16: mod-extra.list Source17: mod-extra.sh -Source18: mod-extra-sign.sh +Source18: mod-sign.sh +%define modsign_cmd %{SOURCE18} Source19: Makefile.release Source20: Makefile.config @@ -650,8 +633,6 @@ Source54: config-powerpc64p7 Source70: config-s390x -Source90: config-sparc64-generic - # Unified ARM kernels Source100: config-armv7 @@ -660,7 +641,6 @@ Source105: config-arm-generic Source110: config-arm-omap Source111: config-arm-tegra Source112: config-arm-kirkwood -Source113: config-arm-imx # This file is intentionally left empty in the stock kernel. Its a nicety # added for those wanting to do custom rebuilds with altered config opts. @@ -705,12 +685,10 @@ Patch00: patch%{?gitrevlibre}-3.%{base_sublevel}-git%{gitrev}%{?gitrevgnu}.xz %endif # we also need compile fixes for -vanilla -Patch04: linux-2.6-compile-fixes.patch +Patch04: compile-fixes.patch # build tweak for build ID magic, even for -vanilla -Patch05: linux-2.6-makefile-after_link.patch - -Patch06: power-x86-destdir.patch +Patch05: makefile-after_link.patch Patch07: freedo.patch @@ -718,7 +696,7 @@ Patch07: freedo.patch # revert upstream patches we get via other methods -Patch09: linux-2.6-upstream-reverts.patch +Patch09: upstream-reverts.patch # Git trees. # Standalone patches @@ -727,35 +705,29 @@ Patch100: taint-vbox.patch Patch110: vmbugon-warnon.patch -Patch390: linux-2.6-defaults-acpi-video.patch -Patch391: linux-2.6-acpi-video-dos.patch -Patch394: linux-2.6-acpi-debug-infinite-loop.patch +Patch390: defaults-acpi-video.patch +Patch391: acpi-video-dos.patch +Patch394: acpi-debug-infinite-loop.patch Patch396: acpi-sony-nonvs-blacklist.patch -Patch450: linux-2.6-input-kill-stupid-messages.patch -Patch452: linux-2.6.30-no-pcspkr-modalias.patch +Patch450: input-kill-stupid-messages.patch +Patch452: no-pcspkr-modalias.patch -Patch460: linux-2.6-serial-460800.patch +Patch460: serial-460800.patch Patch470: die-floppy-die.patch -Patch510: linux-2.6-silence-noise.patch -Patch520: quite-apm.patch -Patch530: linux-2.6-silence-fbcon-logo.patch +Patch510: silence-noise.patch +Patch520: quiet-apm.patch +Patch530: silence-fbcon-logo.patch +Patch540: silence-empty-ipi-mask-warning.patch -Patch700: linux-2.6-e1000-ich9-montevina.patch - -Patch800: linux-2.6-crash-driver.patch +Patch800: crash-driver.patch # crypto/ -Patch900: modsign-post-KS-jwb.patch # secure boot -Patch1000: secure-boot-20121212.patch -Patch1001: efivarfs-3.7.patch - -# Improve PCI support on UEFI -Patch1100: handle-efi-roms.patch +Patch1000: secure-boot-20130131.patch # virt + ksm patches @@ -770,12 +742,14 @@ Patch1825: drm-i915-dp-stfu.patch # Quiet boot fixes # silence the ACPI blacklist code -Patch2802: linux-2.6-silence-acpi-blacklist.patch +Patch2802: silence-acpi-blacklist.patch # media patches -Patch2899: linux-2.6-v4l-dvb-fixes.patch -Patch2900: linux-2.6-v4l-dvb-update.patch -Patch2901: linux-2.6-v4l-dvb-experimental.patch +Patch2899: v4l-dvb-fixes.patch +Patch2900: v4l-dvb-update.patch +Patch2901: v4l-dvb-experimental.patch + +Patch3000: brcmsmac-double-timeout.patch # fs fixes @@ -799,16 +773,14 @@ Patch14010: lis3-improve-handling-of-null-rate.patch Patch21000: arm-export-read_current_timer.patch Patch21001: arm-allnoconfig-error-__LINUX_ARM_ARCH__-undeclared.patch -# OMAP -Patch21003: arm-omapdrm-fixinc.patch +# IMX +Patch21003: arm-imx-fixdrm.patch # ARM tegra Patch21004: arm-tegra-nvec-kconfig.patch Patch21005: arm-tegra-usb-no-reset-linux33.patch -Patch21006: arm-tegra-sdhci-module-fix.patch -# ARM imx -Patch21008: arm-imx-fixdrm.patch +# versatile #rhbz 754518 Patch21235: scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch @@ -821,26 +793,25 @@ Patch22001: selinux-apply-different-permission-to-ptrace-child.patch # Build patch, should go away Patch22070: irqnr-build.patch -#rhbz 874791 -Patch22125: Bluetooth-Add-support-for-BCM20702A0.patch - #rhbz 859485 Patch21226: vt-Drop-K_OFF-for-VC_MUTE.patch -#rhbz CVE-2012-4530 868285 880147 -Patch21228: exec-do-not-leave-bprm-interp-on-stack.patch -Patch21229: exec-use-eloop-for-max-recursion-depth.patch +#rhbz 863424 +Patch21229: Revert-iwlwifi-fix-the-reclaimed-packet-tracking-upon.patch + +#rhbz 799564 +Patch21240: Input-increase-struct-ps2dev-cmdbuf-to-8-bytes.patch +Patch21241: Input-add-support-for-Cypress-PS2-Trackpads.patch -#rhbz 851278 -Patch21234: Revert-8139cp-revert-set-ring-address-before-enabling.patch -Patch21232: 8139cp-set-ring-address-after-enabling-C-mode.patch -Patch21233: 8139cp-re-enable-interrupts-after-tx-timeout.patch +# https://fedoraproject.org/wiki/Features/Checkpoint_Restore +Patch21242: criu-no-expert.patch -#rhbz 883414 -Patch21236: mac80211-fix-ibss-scanning.patch +#rhbz 830151 +Patch21243: mac80211-improve-latency-and-throughput-while-software.patch +Patch21244: iwlegacy-add-flush-callback.patch -#rhbz 873107 -Patch21237: 0001-ACPI-sony-laptop-do-proper-memcpy-for-ACPI_TYPE_INTE.patch +#rhbz 903881 +Patch21246: rtlwifi-Fix-scheduling-while-atomic-bug.patch # END OF PATCH DEFINITIONS @@ -1171,12 +1142,6 @@ non-Free blobs it includes by default. This package includes a version of the Linux kernel with support for marvell kirkwood based systems, i.e., guruplug, sheevaplug -%define variant_summary The Linux kernel compiled for freescale boards -%kernel_variant_package imx -%description imx -This package includes a version of the Linux kernel with support for -freescale based systems, i.e., efika smartbook. - %define variant_summary The Linux kernel compiled for TI-OMAP boards %kernel_variant_package omap %description omap @@ -1444,14 +1409,12 @@ do done %endif -ApplyPatch linux-2.6-makefile-after_link.patch +ApplyPatch makefile-after_link.patch # # misc small stuff to make things compile # -ApplyOptionalPatch linux-2.6-compile-fixes.patch - -ApplyPatch power-x86-destdir.patch +ApplyOptionalPatch compile-fixes.patch # Freedo logo. ApplyPatch freedo.patch @@ -1459,7 +1422,7 @@ ApplyPatch freedo.patch %if !%{nopatches} # revert patches from upstream that conflict or that we get via other means -ApplyOptionalPatch linux-2.6-upstream-reverts.patch -R +ApplyOptionalPatch upstream-reverts.patch -R ApplyPatch taint-vbox.patch @@ -1473,11 +1436,9 @@ ApplyPatch vmbugon-warnon.patch # ApplyPatch arm-export-read_current_timer.patch ApplyPatch arm-allnoconfig-error-__LINUX_ARM_ARCH__-undeclared.patch -ApplyPatch arm-omapdrm-fixinc.patch -ApplyPatch arm-imx-fixdrm.patch -ApplyPatch arm-tegra-nvec-kconfig.patch +# ApplyPatch arm-tegra-nvec-kconfig.patch ApplyPatch arm-tegra-usb-no-reset-linux33.patch -ApplyPatch arm-tegra-sdhci-module-fix.patch +ApplyPatch arm-imx-fixdrm.patch # # bugfixes to drivers and filesystems @@ -1498,9 +1459,9 @@ ApplyPatch arm-tegra-sdhci-module-fix.patch # WMI # ACPI -ApplyPatch linux-2.6-defaults-acpi-video.patch -ApplyPatch linux-2.6-acpi-video-dos.patch -ApplyPatch linux-2.6-acpi-debug-infinite-loop.patch +ApplyPatch defaults-acpi-video.patch +ApplyPatch acpi-video-dos.patch +ApplyPatch acpi-debug-infinite-loop.patch ApplyPatch acpi-sony-nonvs-blacklist.patch # @@ -1519,40 +1480,35 @@ ApplyPatch acpi-sony-nonvs-blacklist.patch # Misc fixes # The input layer spews crap no-one cares about. -ApplyPatch linux-2.6-input-kill-stupid-messages.patch +ApplyPatch input-kill-stupid-messages.patch # stop floppy.ko from autoloading during udev... ApplyPatch die-floppy-die.patch -ApplyPatch linux-2.6.30-no-pcspkr-modalias.patch +ApplyPatch no-pcspkr-modalias.patch # Allow to use 480600 baud on 16C950 UARTs -ApplyPatch linux-2.6-serial-460800.patch +ApplyPatch serial-460800.patch # Silence some useless messages that still get printed with 'quiet' -ApplyPatch linux-2.6-silence-noise.patch +ApplyPatch silence-noise.patch # Make fbcon not show the penguins with 'quiet' -ApplyPatch linux-2.6-silence-fbcon-logo.patch +ApplyPatch silence-fbcon-logo.patch + +# no-one cares about these warnings. +ApplyPatch silence-empty-ipi-mask-warning.patch # Changes to upstream defaults. # /dev/crash driver. -ApplyPatch linux-2.6-crash-driver.patch - -# Hack e1000e to work on Montevina SDV -ApplyPatch linux-2.6-e1000-ich9-montevina.patch +ApplyPatch crash-driver.patch # crypto/ -ApplyPatch modsign-post-KS-jwb.patch # secure boot -ApplyPatch efivarfs-3.7.patch -ApplyPatch secure-boot-20121212.patch - -# Improved PCI support for UEFI -ApplyPatch handle-efi-roms.patch +ApplyPatch secure-boot-20130131.patch # Assorted Virt Fixes @@ -1567,14 +1523,17 @@ ApplyOptionalPatch drm-intel-next.patch ApplyPatch drm-i915-dp-stfu.patch # silence the ACPI blacklist code -ApplyPatch linux-2.6-silence-acpi-blacklist.patch -ApplyPatch quite-apm.patch +ApplyPatch silence-acpi-blacklist.patch +ApplyPatch quiet-apm.patch # V4L/DVB updates/fixes/experimental drivers # apply if non-empty -ApplyOptionalPatch linux-2.6-v4l-dvb-fixes.patch -ApplyOptionalPatch linux-2.6-v4l-dvb-update.patch -ApplyOptionalPatch linux-2.6-v4l-dvb-experimental.patch +ApplyOptionalPatch v4l-dvb-fixes.patch +ApplyOptionalPatch v4l-dvb-update.patch +ApplyOptionalPatch v4l-dvb-experimental.patch + +# Experiment: Double the length of the brcmsmac transmit timeout. +ApplyPatch brcmsmac-double-timeout.patch # Patches headed upstream ApplyPatch fs-proc-devtree-remove_proc_entry.patch @@ -1602,27 +1561,25 @@ ApplyPatch selinux-apply-different-permission-to-ptrace-child.patch #Build patch, should go away ApplyPatch irqnr-build.patch -#rhbz 874791 -ApplyPatch Bluetooth-Add-support-for-BCM20702A0.patch - #rhbz 859485 ApplyPatch vt-Drop-K_OFF-for-VC_MUTE.patch -#rhbz CVE-2012-4530 868285 880147 -ApplyPatch exec-do-not-leave-bprm-interp-on-stack.patch -ApplyPatch exec-use-eloop-for-max-recursion-depth.patch +#rhbz 863424 +ApplyPatch Revert-iwlwifi-fix-the-reclaimed-packet-tracking-upon.patch -#rhbz 851278 -ApplyPatch Revert-8139cp-revert-set-ring-address-before-enabling.patch -ApplyPatch 8139cp-set-ring-address-after-enabling-C-mode.patch -ApplyPatch 8139cp-re-enable-interrupts-after-tx-timeout.patch +#rhbz 799564 +ApplyPatch Input-increase-struct-ps2dev-cmdbuf-to-8-bytes.patch +ApplyPatch Input-add-support-for-Cypress-PS2-Trackpads.patch -#rhbz 883414 -ApplyPatch mac80211-fix-ibss-scanning.patch +# https://fedoraproject.org/wiki/Features/Checkpoint_Restore +ApplyPatch criu-no-expert.patch -#rhbz 873107 -ApplyPatch 0001-ACPI-sony-laptop-do-proper-memcpy-for-ACPI_TYPE_INTE.patch +#rhbz 830151 +ApplyPatch mac80211-improve-latency-and-throughput-while-software.patch +ApplyPatch iwlegacy-add-flush-callback.patch +#rhbz 903881 +ApplyPatch rtlwifi-Fix-scheduling-while-atomic-bug.patch # END OF PATCH APPLICATIONS @@ -1709,11 +1666,12 @@ BuildKernel() { MakeTarget=$1 KernelImage=$2 Flavour=$3 + Flav=${Flavour:+.${Flavour}} InstallName=${4:-vmlinuz} # Pick the right config file for the kernel we're building Config=kernel-%{version}-%{_target_cpu}${Flavour:+-${Flavour}}.config - DevelDir=/usr/src/kernels/%{KVERREL}${Flavour:+.${Flavour}} + DevelDir=/usr/src/kernels/%{KVERREL}${Flav} # When the bootable image is just the ELF kernel, strip it. # We already copy the unstripped file into the debuginfo package. @@ -1723,7 +1681,7 @@ BuildKernel() { CopyKernel=cp fi - KernelVer=%{version}-libre.%{release}.%{_target_cpu}${Flavour:+.${Flavour}} + KernelVer=%{version}-libre.%{release}.%{_target_cpu}${Flav} echo BUILDING A KERNEL FOR ${Flavour} %{_target_cpu}... %if 0%{?stable_update} @@ -1732,7 +1690,7 @@ BuildKernel() { %endif # make sure EXTRAVERSION says what we want it to say - perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -libre.%{release}.%{_target_cpu}${Flavour:+.${Flavour}}/" Makefile + perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -libre.%{release}.%{_target_cpu}${Flav}/" Makefile # if pre-rc1 devel kernel, must fix up PATCHLEVEL for our versioning scheme %if !0%{?rcrev} @@ -1759,6 +1717,10 @@ BuildKernel() { %ifarch %{arm} # http://lists.infradead.org/pipermail/linux-arm-kernel/2012-March/091404.html make -s ARCH=$Arch V=1 %{?_smp_mflags} $MakeTarget %{?sparse_mflags} KALLSYMS_EXTRA_PASS=1 + + make -s ARCH=$Arch V=1 dtbs + mkdir -p $RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer + install -m 644 arch/arm/boot/dts/*.dtb $RPM_BUILD_ROOT/boot/dtb-$KernelVer/ %else make -s ARCH=$Arch V=1 %{?_smp_mflags} $MakeTarget %{?sparse_mflags} %endif @@ -1923,13 +1885,9 @@ BuildKernel() { %{SOURCE17} $RPM_BUILD_ROOT/lib/modules/$KernelVer %{SOURCE16} %if %{signmodules} - # Save off the .tmp_versions/ directory. We'll use it in the - # __debug_install_post macro below to sign the right things - # Also save the signing keys so we actually sign the modules with the - # right key. - cp -r .tmp_versions .tmp_versions.sign${Flavour:+.${Flavour}} - cp signing_key.priv signing_key.priv.sign${Flavour:+.${Flavour}} - cp signing_key.x509 signing_key.x509.sign${Flavour:+.${Flavour}} + # Save the signing keys so we can sign the modules in __modsign_install_post + cp signing_key.priv signing_key.priv.sign${Flav} + cp signing_key.x509 signing_key.x509.sign${Flav} %endif # remove files that will be auto generated by depmod at rpm -i time @@ -1979,10 +1937,6 @@ BuildKernel %make_target %kernel_image PAE BuildKernel %make_target %kernel_image kirkwood %endif -%if %{with_imx} -BuildKernel %make_target %kernel_image imx -%endif - %if %{with_omap} BuildKernel %make_target %kernel_image omap %endif @@ -2014,22 +1968,22 @@ BuildKernel %make_target %kernel_image smp chmod +x tools/power/cpupower/utils/version-gen.sh make %{?_smp_mflags} -C tools/power/cpupower CPUFREQ_BENCH=false %ifarch %{ix86} - cd tools/power/cpupower/debug/i386 + pushd tools/power/cpupower/debug/i386 make %{?_smp_mflags} centrino-decode powernow-k8-decode - cd - + popd %endif %ifarch x86_64 - cd tools/power/cpupower/debug/x86_64 + pushd tools/power/cpupower/debug/x86_64 make %{?_smp_mflags} centrino-decode powernow-k8-decode - cd - + popd %endif %ifarch %{ix86} x86_64 - cd tools/power/x86/x86_energy_perf_policy/ + pushd tools/power/x86/x86_energy_perf_policy/ make - cd - - cd tools/power/x86/turbostat + popd + pushd tools/power/x86/turbostat make - cd - + popd %endif #turbostat/x86_energy_perf_policy %endif %endif @@ -2043,80 +1997,74 @@ chmod -R a=rX Documentation find Documentation -type d | xargs chmod u+w %endif -### -### Special hacks for debuginfo subpackages. -### - -# This macro is used by %%install, so we must redefine it before that. -%define debug_package %{nil} - # In the modsign case, we do 3 things. 1) We check the "flavour" and hard # code the value in the following invocations. This is somewhat sub-optimal # but we're doing this inside of an RPM macro and it isn't as easy as it # could be because of that. 2) We restore the .tmp_versions/ directory from # the one we saved off in BuildKernel above. This is to make sure we're # signing the modules we actually built/installed in that flavour. 3) We -# grab the arch and invoke 'make modules_sign' and the mod-extra-sign.sh -# commands to actually sign the modules. +# grab the arch and invoke mod-sign.sh command to actually sign the modules. # # We have to do all of those things _after_ find-debuginfo runs, otherwise # that will strip the signature off of the modules. -%if %{with_debuginfo} -%define __debug_install_post \ - /usr/lib/rpm/find-debuginfo.sh %{debuginfo_args} %{_builddir}/%{?buildsubdir}\ - if [ "%{signmodules}" == "1" ]; \ - then \ - if [ "%{with_pae}" != "0" ]; \ - then \ - Arch=`head -1 configs/kernel-%{version}-%{_target_cpu}-PAE.config | cut -b 3-` \ - rm -rf .tmp_versions \ - mv .tmp_versions.sign.PAE .tmp_versions \ +%define __modsign_install_post \ + if [ "%{signmodules}" == "1" ]; then \ + if [ "%{with_pae}" != "0" ]; then \ mv signing_key.priv.sign.PAE signing_key.priv \ mv signing_key.x509.sign.PAE signing_key.x509 \ - make -s ARCH=$Arch V=1 INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_sign KERNELRELEASE=%{KVERREL}.PAE \ - %{SOURCE18} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.PAE/extra/ \ + %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.PAE/ \ fi \ - if [ "%{with_debug}" != "0" ]; \ - then \ - Arch=`head -1 configs/kernel-%{version}-%{_target_cpu}-debug.config | cut -b 3-` \ - rm -rf .tmp_versions \ - mv .tmp_versions.sign.debug .tmp_versions \ + if [ "%{with_debug}" != "0" ]; then \ mv signing_key.priv.sign.debug signing_key.priv \ mv signing_key.x509.sign.debug signing_key.x509 \ - make -s ARCH=$Arch V=1 INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_sign KERNELRELEASE=%{KVERREL}.debug \ - %{SOURCE18} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.debug/extra/ \ + %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.debug/ \ fi \ - if [ "%{with_pae_debug}" != "0" ]; \ - then \ - Arch=`head -1 configs/kernel-%{version}-%{_target_cpu}-PAEdebug.config | cut -b 3-` \ - rm -rf .tmp_versions \ - mv .tmp_versions.sign.PAEdebug .tmp_versions \ + if [ "%{with_pae_debug}" != "0" ]; then \ mv signing_key.priv.sign.PAEdebug signing_key.priv \ mv signing_key.x509.sign.PAEdebug signing_key.x509 \ - make -s ARCH=$Arch V=1 INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_sign KERNELRELEASE=%{KVERREL}.PAEdebug \ - %{SOURCE18} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.PAEdebug/extra/ \ + %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.PAEdebug/ \ fi \ - if [ "%{with_up}" != "0" ]; \ - then \ - Arch=`head -1 configs/kernel-%{version}-%{_target_cpu}.config | cut -b 3-` \ - rm -rf .tmp_versions \ - mv .tmp_versions.sign .tmp_versions \ + if [ "%{with_up}" != "0" ]; then \ mv signing_key.priv.sign signing_key.priv \ mv signing_key.x509.sign signing_key.x509 \ - make -s ARCH=$Arch V=1 INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_sign KERNELRELEASE=%{KVERREL} \ - %{SOURCE18} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/extra/ \ + %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/ \ fi \ fi \ %{nil} +### +### Special hacks for debuginfo subpackages. +### + +# This macro is used by %%install, so we must redefine it before that. +%define debug_package %{nil} + +%if %{with_debuginfo} + +%define __debug_install_post \ + /usr/lib/rpm/find-debuginfo.sh %{debuginfo_args} %{_builddir}/%{?buildsubdir}\ +%{nil} + %ifnarch noarch %global __debug_package 1 %files -f debugfiles.list debuginfo-common-%{_target_cpu} %defattr(-,root,root) %endif + %endif +# +# Disgusting hack alert! We need to ensure we sign modules *after* all +# invocations of strip occur, which is in __debug_install_post if +# find-debuginfo.sh runs, and __os_install_post if not. +# +%define __spec_install_post \ + %{?__debug_package:%{__debug_install_post}}\ + %{__arch_install_post}\ + %{__os_install_post}\ + %{__modsign_install_post} + ### ### install ### @@ -2186,16 +2134,16 @@ rm -f %{buildroot}%{_libdir}/*.{a,la} %find_lang cpupower mv cpupower.lang ../ %ifarch %{ix86} - cd tools/power/cpupower/debug/i386 + pushd tools/power/cpupower/debug/i386 install -m755 centrino-decode %{buildroot}%{_bindir}/centrino-decode install -m755 powernow-k8-decode %{buildroot}%{_bindir}/powernow-k8-decode - cd - + popd %endif %ifarch x86_64 - cd tools/power/cpupower/debug/x86_64 + pushd tools/power/cpupower/debug/x86_64 install -m755 centrino-decode %{buildroot}%{_bindir}/centrino-decode install -m755 powernow-k8-decode %{buildroot}%{_bindir}/powernow-k8-decode - cd - + popd %endif chmod 0755 %{buildroot}%{_libdir}/libcpupower.so* mkdir -p %{buildroot}%{_unitdir} %{buildroot}%{_sysconfdir}/sysconfig @@ -2204,12 +2152,12 @@ install -m644 %{SOURCE2001} %{buildroot}%{_sysconfdir}/sysconfig/cpupower %endif %ifarch %{ix86} x86_64 mkdir -p %{buildroot}%{_mandir}/man8 - cd tools/power/x86/x86_energy_perf_policy + pushd tools/power/x86/x86_energy_perf_policy make DESTDIR=%{buildroot} install - cd - - cd tools/power/x86/turbostat + popd + pushd tools/power/x86/turbostat make DESTDIR=%{buildroot} install - cd - + popd %endif #turbostat/x86_energy_perf_policy %endif @@ -2326,9 +2274,6 @@ fi}\ %kernel_variant_preun kirkwood %kernel_variant_post -v kirkwood -%kernel_variant_preun imx -%kernel_variant_post -v imx - %kernel_variant_preun omap %kernel_variant_post -v omap @@ -2448,6 +2393,9 @@ fi %defattr(-,root,root)\ /%{image_install_path}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-%{KVERREL}%{?2:.%{2}}\ /%{image_install_path}/.vmlinuz-%{KVERREL}%{?2:.%{2}}.hmac \ +%ifarch %{arm}\ +/%{image_install_path}/dtb-%{KVERREL}%{?2:.%{2}} \ +%endif\ %attr(600,root,root) /boot/System.map-%{KVERREL}%{?2:.%{2}}\ /boot/config-%{KVERREL}%{?2:.%{2}}\ %dir /lib/modules/%{KVERREL}%{?2:.%{2}}\ @@ -2483,7 +2431,6 @@ fi %kernel_variant_files %{with_pae} PAE %kernel_variant_files %{with_pae_debug} PAEdebug %kernel_variant_files %{with_kirkwood} kirkwood -%kernel_variant_files %{with_imx} imx %kernel_variant_files %{with_omap} omap %kernel_variant_files %{with_tegra} tegra @@ -2500,6 +2447,178 @@ fi # ||----w | # || || %changelog +* Wed Feb 6 2013 Alexandre Oliva <lxoliva@fsfla.org> -libre +- GNU Linux-libre 3.8-rc6-gnu. + +* Tue Feb 05 2013 Josh Boyer <jwboyer@redhat.com> - 3.8.0-0.rc6.git2.1 +- Linux v3.8-rc6-62-gfe547d7 +- Enable CONFIG_DRM_VMWGFX_FBCON (rhbz 907620) +- Enable CONFIG_DETECT_HUNG_TASK + +* Mon Feb 04 2013 Josh Boyer <jwboyer@redhat.com> - 3.8.0-0.rc6.git1.1 +- Linux v3.8-rc6-22-g6edacf0 +- Enable CONFIG_EXT4_DEBUG +- Fix rtlwifi scheduling while atomic from Larry Finger (rhbz 903881) + +* Fri Feb 01 2013 Josh Boyer <jwboyer@redhat.com> - 3.8.0-0.rc6.git0.1 +- Linux v3.8-rc6 +- Enable CONFIG_DMA_API_DEBUG +- Add patches to improve mac80211 latency and throughput (rhbz 830151) + +* Thu Jan 31 2013 Josh Boyer <jwboyer@redhat.com> - 3.8.0-0.rc5.git3.1 +- Linux v3.8-rc5-245-g04c2eee +- Enable CONFIG_DEBUG_STACK_USAGE + +* Wed Jan 30 2013 Josh Boyer <jwboyer@redhat.com> - 3.8.0-0.rc5.git2.1 +- Linux v3.8-rc5-218-ga56e160 +- Enable NAMESPACES and CHECKPOINT_RESTORE on x86_64 for F19 CRIU feature +- Enable CONFIG_DEBUG_ATOMIC_SLEEP + +* Tue Jan 29 2013 Josh Boyer <jwboyer@redhat.com> - 3.8.0-0.rc5.git1.1 +- Linux v3.8-rc5-150-g6abb7c2 + +* Tue Jan 29 2013 Josh Boyer <jwboyer@redhat.com> +- Backport driver for Cypress PS/2 trackpad (rhbz 799564) + +* Mon Jan 28 2013 Josh Boyer <jwboyer@redhat.com> - 3.8.0-0.rc5.git0.1 +- Linux v3.8-rc5 +- Add patches to fix issues with iwlwifi (rhbz 863424) +- Enable CONFIG_PROVE_RCU + +* Sun Jan 27 2013 Peter Robinson <pbrobinson@fedoraproject.org> +- Reenable perf on ARM (was suppose to be temporary) +- Build and package dtbs on ARM +- Enable FB options for qemu vexpress on unified + +* Fri Jan 25 2013 Kyle McMartin <kmcmarti@redhat.com> +- Sign all modules with the mod-extra-sign.sh script, ensures nothing gets + missed because of .config differences between invocations of BuildKernel. + +* Fri Jan 25 2013 Justin M. Forbes <jforbes@redhat.com> +- Turn off THP for 32bit + +* Fri Jan 25 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.0-0.rc4.git5.1 +- Linux v3.8-rc4-277-g66e2d3e +- Enable slub debug + +* Thu Jan 24 2013 Josh Boyer <jwboyer@redhat.com> +- Update secure-boot patchset + +* Thu Jan 24 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.0-0.rc4.git4.1 +- Linux v3.8-rc4-183-gff7532c +- Enable lockdep + +* Wed Jan 23 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.0-0.rc4.git3.1 +- Linux v3.8-rc4-139-g1d85490 +- Enable debug spinlocks + +* Wed Jan 23 2013 Dave Jones <davej@redhat.com> +- Remove warnings about empty IPI masks. + +* Sun Jan 20 2013 Peter Robinson <pbrobinson@fedoraproject.org> +- Remove obsolete ARM configs +- Update OMAP config for TI AM35XX SoCs +- Add patch to fix versatile build failure + +* Sat Jan 19 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.0-0.rc4.git1.1 +- Linux v3.8-rc4-42-g5da1f88 + +* Fri Jan 18 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.0-0.rc4.git0.1 +- Linux v3.8-rc4 +- Disable debugging options. + +* Fri Jan 18 2013 Peter Robinson <pbrobinson@fedoraproject.org> +- Disable problematic PL310 ARM errata +- Minor ARM config tweaks +- OMAP DRM driver to fix OMAP kernel build + +* Wed Jan 16 2013 Josh Boyer <jwboyer@redhat.com> +- Fix power management sysfs on non-secure boot machines (rhbz 896243) + +* Wed Jan 16 2013 Dave Jones <davej@redhat.com> +- Experiment: Double the length of the brcmsmac transmit timeout. + +* Wed Jan 16 2013 Josh Boyer <jwboyer@redhat.com> +- Add patch from Stanislaw Gruszka to fix iwlegacy IBSS cleanup (rhbz 886946) + +* Tue Jan 15 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.0-0.rc3.git2.1 +- Linux v3.8-rc3-293-g406089d + +* Tue Jan 15 2013 Josh Boyer <jwboyer@redhat.com> +- Enable CONFIG_DVB_USB_V2 (rhbz 895460) + +* Mon Jan 14 2013 Josh Boyer <jwboyer@redhat.com> +- Enable Orinoco drivers in kernel-modules-extra (rhbz 894069) + +* Mon Jan 14 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.0-0.rc3.git1.1 +- Linux v3.8-rc3-74-gb719f43 + +* Fri Jan 11 2013 Josh Boyer <jwboyer@redhat.com> +- Update secure-boot patchset + +* Thu Jan 10 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.0-0.rc3.git0.2 +- Reenable debugging options. + +* Thu Jan 10 2013 Dave Jones <davej@redhat.com> +- Drop old Montevina era E1000 workaround. + +* Thu Jan 10 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.0-0.rc3.git0.1 +- Linux v3.8-rc3 +- Disable debugging options. + +* Wed Jan 09 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.0-0.rc2.git4.1 +- Linux v3.8-rc2-370-g57a0c1e + +* Wed Jan 9 2013 Peter Robinson <pbrobinson@fedoraproject.org> +- Update ARM mvebu config + +* Wed Jan 09 2013 Josh Boyer <jwboyer@redhat.com> +- Enable CONFIG_CIFS_DEBUG as it was on before it was split out + +* Tue Jan 08 2013 Kyle McMartin <kmcmarti@redhat.com> +- Ensure modules are signed even if *-debuginfo rpms are not produced by + re-defining __spec_install_post and adding a hook after all strip + invocations. Ideally, in the future, we could patch the rpm macro and + remove the re-define from kernel.spec, but that's another windmill to tilt + at. + +* Tue Jan 08 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.0-0.rc2.git3.1 +- Linux v3.8-rc2-222-g2a893f9 + +* Mon Jan 07 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.0-0.rc2.git2.1 +- Linux v3.8-rc2-191-gd287b87 +- remove the namei-include.patch, it's upstream now + +* Mon Jan 07 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.0-0.rc2.git1.2 +- Reenable debugging options. + +* Mon Jan 7 2013 Peter Robinson <pbrobinson@fedoraproject.org> +- Further ARM config updates +- Add patch to fix building omapdrm + +* Mon Jan 07 2013 Justin M. Forbes <jforbes@redhat.com> +- Bye sparc + +* Mon Jan 07 2013 Justin M. Forbes <jforbes@redhat.com> +- Fix up configs for build + +* Mon Jan 07 2013 Josh Boyer <jwboyer@redhat.com> +- Patch to fix efivarfs underflow from Lingzhu Xiang (rhbz 888163) + +* Sat Jan 5 2013 Peter Robinson <pbrobinson@fedoraproject.org> +- Initial update of ARM configs for 3.8 +- Enable DRM driver for tegra +- Drop separate imx kernel. Will be reintroduced soon in unified + +* Fri Jan 04 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.0-0.rc2.git1.1 +- Linux v3.8-rc2-116-g5f243b9 + +* Thu Jan 03 2013 Justin M. Forbes <jforbes@redhat.com> +- Initial 3.8-rc2 rebase + +* Wed Jan 02 2013 Josh Boyer <jwboyer@redhat.com> +- BR the hostname package (rhbz 886113) + * Tue Dec 18 2012 Dave Jones <davej@redhat.com> - On rebases, list new config options. (Revert to pre-18 behaviour) diff --git a/freed-ora/current/master/linux-2.6-e1000-ich9-montevina.patch b/freed-ora/current/master/linux-2.6-e1000-ich9-montevina.patch deleted file mode 100644 index ec38a3902..000000000 --- a/freed-ora/current/master/linux-2.6-e1000-ich9-montevina.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 802e6d8c8477a553a677b23a247d6d2638e01958 Mon Sep 17 00:00:00 2001 -From: Dave Jones <davej@redhat.com> -Date: Wed, 26 Oct 2011 13:31:47 -0400 -Subject: [PATCH] e1000e: ich9 montevina - -This only showed up in one SDV (Montevina). -The PCIE slots don't seem to like network cards, so this is the only hope -to get networking working. It's never going upstream, but it's low impact -enough to carry just to keep those SDVs working. ---- - drivers/net/ethernet/intel/e1000e/ich8lan.c | 6 ++++++ - drivers/net/ethernet/intel/e1000e/netdev.c | 1 + - 2 files changed, 7 insertions(+), 0 deletions(-) - -diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c -index 6a17c62..0e40975 100644 ---- a/drivers/net/ethernet/intel/e1000e/ich8lan.c -+++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c -@@ -452,6 +452,12 @@ static s32 e1000_init_phy_params_ich8lan(struct e1000_hw *hw) - - /* Verify phy id */ - switch (phy->id) { -+ case 0: -+ if (hw->adapter->pdev->device == 0x10be) -+ e_dbg("got 0 phy id, trying anyway"); -+ /* Fall through to IGP03E1000 case below */ -+ else -+ return -E1000_ERR_PHY; - case IGP03E1000_E_PHY_ID: - phy->type = e1000_phy_igp_3; - phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT; -diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c -index a855db1..edac30b 100644 ---- a/drivers/net/ethernet/intel/e1000e/netdev.c -+++ b/drivers/net/ethernet/intel/e1000e/netdev.c -@@ -6359,6 +6359,7 @@ static DEFINE_PCI_DEVICE_TABLE(e1000_pci_tbl) = { - { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M), board_ich9lan }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M_AMT), board_ich9lan }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M_V), board_ich9lan }, -+ { PCI_VDEVICE(INTEL, 0x10be), board_ich9lan }, - - { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH10_R_BM_LM), board_ich9lan }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH10_R_BM_LF), board_ich9lan }, --- -1.7.6.4 - diff --git a/freed-ora/current/master/mac80211-fix-ibss-scanning.patch b/freed-ora/current/master/mac80211-fix-ibss-scanning.patch deleted file mode 100644 index c2bc698a0..000000000 --- a/freed-ora/current/master/mac80211-fix-ibss-scanning.patch +++ /dev/null @@ -1,132 +0,0 @@ -Do not scan on no-IBSS and disabled channels in IBSS mode. Doing this -can trigger Microcode errors on iwlwifi and iwlegacy drivers. - -Also rename ieee80211_request_internal_scan() function since it is only -used in IBSS mode and simplify calling it from ieee80211_sta_find_ibss(). - -This patch should address: -https://bugzilla.redhat.com/show_bug.cgi?id=883414 -https://bugzilla.kernel.org/show_bug.cgi?id=49411 - -Reported-by: Jesse Kahtava <jesse_kahtava@f-m.fm> -Reported-by: Mikko Rapeli <mikko.rapeli@iki.fi> -Cc: stable@vger.kernel.org -Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> ---- - net/mac80211/ibss.c | 9 ++++----- - net/mac80211/ieee80211_i.h | 6 +++--- - net/mac80211/scan.c | 34 ++++++++++++++++++++++++---------- - 3 files changed, 31 insertions(+), 18 deletions(-) - -diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c -index c21e33d..d9df6b8 100644 ---- a/net/mac80211/ibss.c -+++ b/net/mac80211/ibss.c -@@ -678,8 +678,8 @@ static void ieee80211_sta_merge_ibss(struct ieee80211_sub_if_data *sdata) - sdata_info(sdata, - "No active IBSS STAs - trying to scan for other IBSS networks with same SSID (merge)\n"); - -- ieee80211_request_internal_scan(sdata, -- ifibss->ssid, ifibss->ssid_len, NULL); -+ ieee80211_request_ibss_scan(sdata, ifibss->ssid, ifibss->ssid_len, -+ NULL); - } - - static void ieee80211_sta_create_ibss(struct ieee80211_sub_if_data *sdata) -@@ -777,9 +777,8 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata) - IEEE80211_SCAN_INTERVAL)) { - sdata_info(sdata, "Trigger new scan to find an IBSS to join\n"); - -- ieee80211_request_internal_scan(sdata, -- ifibss->ssid, ifibss->ssid_len, -- ifibss->fixed_channel ? ifibss->channel : NULL); -+ ieee80211_request_ibss_scan(sdata, ifibss->ssid, -+ ifibss->ssid_len, chan); - } else { - int interval = IEEE80211_SCAN_INTERVAL; - -diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h -index 156e583..bc48d4d 100644 ---- a/net/mac80211/ieee80211_i.h -+++ b/net/mac80211/ieee80211_i.h -@@ -1247,9 +1247,9 @@ void ieee80211_mesh_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, - - /* scan/BSS handling */ - void ieee80211_scan_work(struct work_struct *work); --int ieee80211_request_internal_scan(struct ieee80211_sub_if_data *sdata, -- const u8 *ssid, u8 ssid_len, -- struct ieee80211_channel *chan); -+int ieee80211_request_ibss_scan(struct ieee80211_sub_if_data *sdata, -+ const u8 *ssid, u8 ssid_len, -+ struct ieee80211_channel *chan); - int ieee80211_request_scan(struct ieee80211_sub_if_data *sdata, - struct cfg80211_scan_request *req); - void ieee80211_scan_cancel(struct ieee80211_local *local); -diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c -index 43e60b5..fab706f 100644 ---- a/net/mac80211/scan.c -+++ b/net/mac80211/scan.c -@@ -819,9 +819,9 @@ int ieee80211_request_scan(struct ieee80211_sub_if_data *sdata, - return res; - } - --int ieee80211_request_internal_scan(struct ieee80211_sub_if_data *sdata, -- const u8 *ssid, u8 ssid_len, -- struct ieee80211_channel *chan) -+int ieee80211_request_ibss_scan(struct ieee80211_sub_if_data *sdata, -+ const u8 *ssid, u8 ssid_len, -+ struct ieee80211_channel *chan) - { - struct ieee80211_local *local = sdata->local; - int ret = -EBUSY; -@@ -835,22 +835,36 @@ int ieee80211_request_internal_scan(struct ieee80211_sub_if_data *sdata, - - /* fill internal scan request */ - if (!chan) { -- int i, nchan = 0; -+ int i, max_n; -+ int n_ch = 0; - - for (band = 0; band < IEEE80211_NUM_BANDS; band++) { - if (!local->hw.wiphy->bands[band]) - continue; -- for (i = 0; -- i < local->hw.wiphy->bands[band]->n_channels; -- i++) { -- local->int_scan_req->channels[nchan] = -+ -+ max_n = local->hw.wiphy->bands[band]->n_channels; -+ for (i = 0; i < max_n; i++) { -+ struct ieee80211_channel *tmp_ch = - &local->hw.wiphy->bands[band]->channels[i]; -- nchan++; -+ -+ if (tmp_ch->flags & (IEEE80211_CHAN_NO_IBSS | -+ IEEE80211_CHAN_DISABLED)) -+ continue; -+ -+ local->int_scan_req->channels[n_ch] = tmp_ch; -+ n_ch++; - } - } - -- local->int_scan_req->n_channels = nchan; -+ if (WARN_ON_ONCE(n_ch == 0)) -+ goto unlock; -+ -+ local->int_scan_req->n_channels = n_ch; - } else { -+ if (WARN_ON_ONCE(chan->flags & (IEEE80211_CHAN_NO_IBSS | -+ IEEE80211_CHAN_DISABLED))) -+ goto unlock; -+ - local->int_scan_req->channels[0] = chan; - local->int_scan_req->n_channels = 1; - } --- -1.7.1 - --- -To unsubscribe from this list: send the line "unsubscribe linux-wireless" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html
\ No newline at end of file diff --git a/freed-ora/current/master/mac80211-improve-latency-and-throughput-while-software.patch b/freed-ora/current/master/mac80211-improve-latency-and-throughput-while-software.patch new file mode 100644 index 000000000..16f839418 --- /dev/null +++ b/freed-ora/current/master/mac80211-improve-latency-and-throughput-while-software.patch @@ -0,0 +1,142 @@ +From c790794fcb461842e6ae1d764b7f68e9a789d149 Mon Sep 17 00:00:00 2001 +From: Stanislaw Gruszka <sgruszka@redhat.com> +Date: Wed, 23 Jan 2013 12:32:45 +0100 +Subject: [PATCH] mac80211: improve latency and throughput while software + scanning + +Patch vastly improve latency while scanning. Slight throughput +improvements were observed as well. Is intended for improve performance +of voice and video applications, when scan is periodically requested by +user space (i.e. default NetworkManager behaviour). + +Patch remove latency requirement based on PM_QOS_NETWORK_LATENCY, +this value is 2000 seconds by default (i.e. approximately 0.5 hour !?!). + +Also remove listen interval requirement, which based on beaconing and +depending on BSS parameters. It can make we stay off-channel for a +second or more. + +Instead try to offer the best latency that we could, i.e. be off-channel +no longer than PASSIVE channel scan time: 125 ms. That mean we will +scan two ACTIVE channels and go back to on-channel, and one PASSIVE +channel, and go back to on-channel. + +Patch also decrease PASSIVE channel scan time to about 110 ms. + +As drawback patch increase overall scan time. On my tests, when scanning +both 2GHz and 5GHz bands, scanning time increase from 5 seconds up to 10 +seconds. Since that increase happen only when we are associated, I think +it can be acceptable. If eventually better scan time is needed for +situations when we lose signal and quickly need to decide to which AP +roam, additional scan flag or parameter can be introduced. + +I tested patch by doing: + +while true; do iw dev wlan0 scan; sleep 3; done > /dev/null + +and + +ping -i0.2 -c 1000 HOST + +on remote and local machine, results are as below: + +* Ping from local periodically scanning machine to AP: +Unpatched: rtt min/avg/max/mdev = 0.928/24.946/182.135/36.873 ms +Patched: rtt min/avg/max/mdev = 0.928/19.678/150.845/33.130 ms + +* Ping from remote machine to periodically scanning machine: +Unpatched: rtt min/avg/max/mdev = 1.637/120.683/709.139/164.337 ms +Patched: rtt min/avg/max/mdev = 1.807/26.893/201.435/40.284 ms + +Throughput measured by scp show following results. + +* Upload to periodically scanning machine: +Unpatched: 3.9MB/s 03:15 +Patched: 4.3MB/s 02:58 + +* Download from periodically scanning machine: +Unpatched: 5.5MB/s 02:17 +Patched: 6.2MB/s 02:02 + +Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> +Signed-off-by: Johannes Berg <johannes.berg@intel.com> +--- + net/mac80211/scan.c | 32 +++++--------------------------- + 1 file changed, 5 insertions(+), 27 deletions(-) + +diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c +index bf82e69..e6b2ebc 100644 +--- a/net/mac80211/scan.c ++++ b/net/mac80211/scan.c +@@ -27,7 +27,7 @@ + + #define IEEE80211_PROBE_DELAY (HZ / 33) + #define IEEE80211_CHANNEL_TIME (HZ / 33) +-#define IEEE80211_PASSIVE_CHANNEL_TIME (HZ / 8) ++#define IEEE80211_PASSIVE_CHANNEL_TIME (HZ / 9) + + static void ieee80211_rx_bss_free(struct cfg80211_bss *cbss) + { +@@ -547,8 +547,6 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local, + bool associated = false; + bool tx_empty = true; + bool bad_latency; +- bool listen_int_exceeded; +- unsigned long min_beacon_int = 0; + struct ieee80211_sub_if_data *sdata; + struct ieee80211_channel *next_chan; + enum mac80211_scan_state next_scan_state; +@@ -567,11 +565,6 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local, + if (sdata->u.mgd.associated) { + associated = true; + +- if (sdata->vif.bss_conf.beacon_int < +- min_beacon_int || min_beacon_int == 0) +- min_beacon_int = +- sdata->vif.bss_conf.beacon_int; +- + if (!qdisc_all_tx_empty(sdata->dev)) { + tx_empty = false; + break; +@@ -588,34 +581,19 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local, + * see if we can scan another channel without interfering + * with the current traffic situation. + * +- * Since we don't know if the AP has pending frames for us +- * we can only check for our tx queues and use the current +- * pm_qos requirements for rx. Hence, if no tx traffic occurs +- * at all we will scan as many channels in a row as the pm_qos +- * latency allows us to. Additionally we also check for the +- * currently negotiated listen interval to prevent losing +- * frames unnecessarily. +- * +- * Otherwise switch back to the operating channel. ++ * Keep good latency, do not stay off-channel more than 125 ms. + */ + + bad_latency = time_after(jiffies + +- ieee80211_scan_get_channel_time(next_chan), +- local->leave_oper_channel_time + +- usecs_to_jiffies(pm_qos_request(PM_QOS_NETWORK_LATENCY))); +- +- listen_int_exceeded = time_after(jiffies + +- ieee80211_scan_get_channel_time(next_chan), +- local->leave_oper_channel_time + +- usecs_to_jiffies(min_beacon_int * 1024) * +- local->hw.conf.listen_interval); ++ ieee80211_scan_get_channel_time(next_chan), ++ local->leave_oper_channel_time + HZ / 8); + + if (associated && !tx_empty) { + if (local->scan_req->flags & NL80211_SCAN_FLAG_LOW_PRIORITY) + next_scan_state = SCAN_ABORT; + else + next_scan_state = SCAN_SUSPEND; +- } else if (associated && (bad_latency || listen_int_exceeded)) { ++ } else if (associated && bad_latency) { + next_scan_state = SCAN_SUSPEND; + } else { + next_scan_state = SCAN_SET_CHANNEL; +-- +1.8.1 + diff --git a/freed-ora/current/master/linux-2.6-makefile-after_link.patch b/freed-ora/current/master/makefile-after_link.patch index b520b1942..b520b1942 100644 --- a/freed-ora/current/master/linux-2.6-makefile-after_link.patch +++ b/freed-ora/current/master/makefile-after_link.patch diff --git a/freed-ora/current/master/mod-extra.list b/freed-ora/current/master/mod-extra.list index 124d74ef2..53f8c36b9 100644 --- a/freed-ora/current/master/mod-extra.list +++ b/freed-ora/current/master/mod-extra.list @@ -188,3 +188,9 @@ w1_ds2431.ko w1_ds2423.ko w1_bq27000.ko ubifs.ko +orinoco.ko +orinoco_cs.ko +orinoco_plx.ko +orinoco_pci.ko +orinoco_nortel.ko +orinoco_usb.ko diff --git a/freed-ora/current/master/mod-extra-sign.sh b/freed-ora/current/master/mod-sign.sh index 9b24a4098..cae259298 100755 --- a/freed-ora/current/master/mod-extra-sign.sh +++ b/freed-ora/current/master/mod-sign.sh @@ -1,10 +1,10 @@ #! /bin/bash -# We need to sign modules we've moved from <path>/kernel/ to <path>/extra/ -# during mod-extra processing by hand. The 'modules_sign' Kbuild target can -# "handle" out-of-tree modules, but it does that by not signing them. Plus, -# the modules we've moved aren't actually out-of-tree. We've just shifted -# them to a different location behind Kbuild's back because we are mean. +# The modules_sign target checks for corresponding .o files for every .ko that +# is signed. This doesn't work for package builds which re-use the same build +# directory for every flavour, and the .config may change between flavours. +# So instead of using this script to just sign lib/modules/$KernelVer/extra, +# sign all .ko in the buildroot. # This essentially duplicates the 'modules_sign' Kbuild target and runs the # same commands for those modules. diff --git a/freed-ora/current/master/modsign-post-KS-jwb.patch b/freed-ora/current/master/modsign-post-KS-jwb.patch deleted file mode 100644 index 1bafd22f5..000000000 --- a/freed-ora/current/master/modsign-post-KS-jwb.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 56713a28675b966e027a824a0130b80dffab209f Mon Sep 17 00:00:00 2001 -From: Josh Boyer <jwboyer@redhat.com> -Date: Mon, 5 Nov 2012 09:09:24 +1030 -Subject: [PATCH] MODSIGN: Add modules_sign make target - -If CONFIG_MODULE_SIG is set, and 'make modules_sign' is called then this -patch will cause the modules to get a signature appended. The make target -is intended to be run after 'make modules_install', and will modify the -modules in-place in the installed location. It can be used to produce -signed modules after they have been processed by distribution build -scripts. - -Signed-off-by: Josh Boyer <jwboyer@redhat.com> -Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (minor typo fix) ---- - Makefile | 6 ++++++ - scripts/Makefile.modsign | 32 ++++++++++++++++++++++++++++++++ - 2 files changed, 38 insertions(+), 0 deletions(-) - create mode 100644 scripts/Makefile.modsign - -diff --git a/Makefile b/Makefile -index 42d0e56..253aa1b 100644 ---- a/Makefile -+++ b/Makefile -@@ -981,6 +981,12 @@ _modinst_post: _modinst_ - $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modinst - $(call cmd,depmod) - -+ifeq ($(CONFIG_MODULE_SIG), y) -+PHONY += modules_sign -+modules_sign: -+ $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modsign -+endif -+ - else # CONFIG_MODULES - - # Modules not configured -diff --git a/scripts/Makefile.modsign b/scripts/Makefile.modsign -new file mode 100644 -index 0000000..abfda62 ---- /dev/null -+++ b/scripts/Makefile.modsign -@@ -0,0 +1,32 @@ -+# ========================================================================== -+# Signing modules -+# ========================================================================== -+ -+PHONY := __modsign -+__modsign: -+ -+include scripts/Kbuild.include -+ -+__modules := $(sort $(shell grep -h '\.ko' /dev/null $(wildcard $(MODVERDIR)/*.mod))) -+modules := $(patsubst %.o,%.ko,$(wildcard $(__modules:.ko=.o))) -+ -+PHONY += $(modules) -+__modsign: $(modules) -+ @: -+ -+quiet_cmd_sign_ko = SIGN [M] $(2)/$(notdir $@) -+ cmd_sign_ko = $(mod_sign_cmd) $(2)/$(notdir $@) -+ -+# Modules built outside the kernel source tree go into extra by default -+INSTALL_MOD_DIR ?= extra -+ext-mod-dir = $(INSTALL_MOD_DIR)$(subst $(patsubst %/,%,$(KBUILD_EXTMOD)),,$(@D)) -+ -+modinst_dir = $(if $(KBUILD_EXTMOD),$(ext-mod-dir),kernel/$(@D)) -+ -+$(modules): -+ $(call cmd,sign_ko,$(MODLIB)/$(modinst_dir)) -+ -+# Declare the contents of the .PHONY variable as phony. We keep that -+# information in a variable se we can use it in if_changed and friends. -+ -+.PHONY: $(PHONY) --- -1.7.7.6 - diff --git a/freed-ora/current/master/linux-2.6.30-no-pcspkr-modalias.patch b/freed-ora/current/master/no-pcspkr-modalias.patch index 439269cef..439269cef 100644 --- a/freed-ora/current/master/linux-2.6.30-no-pcspkr-modalias.patch +++ b/freed-ora/current/master/no-pcspkr-modalias.patch diff --git a/freed-ora/current/master/patch-3.7-gnu-3.8-rc6-gnu.xz.sign b/freed-ora/current/master/patch-3.7-gnu-3.8-rc6-gnu.xz.sign new file mode 100644 index 000000000..13f0ff9f4 --- /dev/null +++ b/freed-ora/current/master/patch-3.7-gnu-3.8-rc6-gnu.xz.sign @@ -0,0 +1,7 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.19 (GNU/Linux) + +iEYEABECAAYFAlESa7oACgkQvLfPh359R6dM4ACgmV8K/x2YZ9WDHVA9FY2SIktK +LCwAniW4/Zu+Ny9y8ORKBb/56AyeCf1j +=WoxD +-----END PGP SIGNATURE----- diff --git a/freed-ora/current/master/power-x86-destdir.patch b/freed-ora/current/master/power-x86-destdir.patch deleted file mode 100644 index 97665314f..000000000 --- a/freed-ora/current/master/power-x86-destdir.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff --git a/tools/power/x86/turbostat/Makefile b/tools/power/x86/turbostat/Makefile -index f856495..984cc00 100644 ---- a/tools/power/x86/turbostat/Makefile -+++ b/tools/power/x86/turbostat/Makefile -@@ -1,3 +1,5 @@ -+DESTDIR ?= -+ - turbostat : turbostat.c - CFLAGS += -Wall - -@@ -5,5 +7,5 @@ clean : - rm -f turbostat - - install : -- install turbostat /usr/bin/turbostat -- install turbostat.8 /usr/share/man/man8 -+ install turbostat ${DESTDIR}/usr/bin/turbostat -+ install turbostat.8 ${DESTDIR}/usr/share/man/man8 -diff --git a/tools/power/x86/x86_energy_perf_policy/Makefile b/tools/power/x86/x86_energy_perf_policy/Makefile -index f458237..f9824f0 100644 ---- a/tools/power/x86/x86_energy_perf_policy/Makefile -+++ b/tools/power/x86/x86_energy_perf_policy/Makefile -@@ -1,8 +1,10 @@ -+DESTDIR ?= -+ - x86_energy_perf_policy : x86_energy_perf_policy.c - - clean : - rm -f x86_energy_perf_policy - - install : -- install x86_energy_perf_policy /usr/bin/ -- install x86_energy_perf_policy.8 /usr/share/man/man8/ -+ install x86_energy_perf_policy ${DESTDIR}/usr/bin/ -+ install x86_energy_perf_policy.8 ${DESTDIR}/usr/share/man/man8/ diff --git a/freed-ora/current/master/quite-apm.patch b/freed-ora/current/master/quiet-apm.patch index c38511c41..c38511c41 100644 --- a/freed-ora/current/master/quite-apm.patch +++ b/freed-ora/current/master/quiet-apm.patch diff --git a/freed-ora/current/master/rtlwifi-Fix-scheduling-while-atomic-bug.patch b/freed-ora/current/master/rtlwifi-Fix-scheduling-while-atomic-bug.patch new file mode 100644 index 000000000..d05b104b5 --- /dev/null +++ b/freed-ora/current/master/rtlwifi-Fix-scheduling-while-atomic-bug.patch @@ -0,0 +1,65 @@ +Kernel commits 41affd5 and 6539306 changed the locking in rtl_lps_leave() +from a spinlock to a mutex by doing the calls indirectly from a work queue +to reduce the time that interrupts were disabled. This change was fine for +most systems; however a scheduling while atomic bug was reported in +https://bugzilla.redhat.com/show_bug.cgi?id=903881. The backtrace indicates +that routine rtl_is_special(), which calls rtl_lps_leave() in three places +was entered in atomic context. These direct calls are replaced by putting a +request on the appropriate work queue. + +Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> +Reported-and-tested-by: Nathaniel Doherty <ntdoherty@gmail.com> +Cc: Nathaniel Doherty <ntdoherty@gmail.com> +Cc: Stanislaw Gruszka <sgruszka@redhat.com> +Cc: Stable <stable@vger.kernel.org> +--- + +John, + +If DaveM will still accept bug fixes for 3.8, please push this one. It +is unlikely to have any side effects. + +Thanks, + +Larry +--- + + base.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +Index: wireless-testing-new/drivers/net/wireless/rtlwifi/base.c +=================================================================== +--- wireless-testing-new.orig/drivers/net/wireless/rtlwifi/base.c ++++ wireless-testing-new/drivers/net/wireless/rtlwifi/base.c +@@ -1004,7 +1004,8 @@ u8 rtl_is_special_data(struct ieee80211_ + is_tx ? "Tx" : "Rx"); + + if (is_tx) { +- rtl_lps_leave(hw); ++ schedule_work(&rtlpriv-> ++ works.lps_leave_work); + ppsc->last_delaylps_stamp_jiffies = + jiffies; + } +@@ -1014,7 +1015,7 @@ u8 rtl_is_special_data(struct ieee80211_ + } + } else if (ETH_P_ARP == ether_type) { + if (is_tx) { +- rtl_lps_leave(hw); ++ schedule_work(&rtlpriv->works.lps_leave_work); + ppsc->last_delaylps_stamp_jiffies = jiffies; + } + +@@ -1024,7 +1025,7 @@ u8 rtl_is_special_data(struct ieee80211_ + "802.1X %s EAPOL pkt!!\n", is_tx ? "Tx" : "Rx"); + + if (is_tx) { +- rtl_lps_leave(hw); ++ schedule_work(&rtlpriv->works.lps_leave_work); + ppsc->last_delaylps_stamp_jiffies = jiffies; + } + +-- +To unsubscribe from this list: send the line "unsubscribe linux-wireless" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html
\ No newline at end of file diff --git a/freed-ora/current/master/secure-boot-20121212.patch b/freed-ora/current/master/secure-boot-20130131.patch index 387302b90..c58f5997c 100644 --- a/freed-ora/current/master/secure-boot-20121212.patch +++ b/freed-ora/current/master/secure-boot-20130131.patch @@ -1,7 +1,7 @@ -From d510ea864f470d96aafb75d0de7f09450407095e Mon Sep 17 00:00:00 2001 +From 6fb120959c4578023de0af1af9c887ddf6859671 Mon Sep 17 00:00:00 2001 From: Matthew Garrett <mjg@redhat.com> Date: Thu, 20 Sep 2012 10:40:56 -0400 -Subject: [PATCH 01/20] Secure boot: Add new capability +Subject: [PATCH 01/17] Secure boot: Add new capability Secure boot adds certain policy requirements, including that root must not be able to do anything that could cause the kernel to execute arbitrary code. @@ -32,297 +32,46 @@ index ba478fa..7109e65 100644 #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP) -- -1.8.0.1 +1.8.1 -From a07ae01ac4b304ac7f0e2b5d4193519f1a9eee8d Mon Sep 17 00:00:00 2001 -From: Matthew Garrett <mjg@redhat.com> -Date: Thu, 20 Sep 2012 10:40:57 -0400 -Subject: [PATCH 02/20] PCI: Lock down BAR access in secure boot environments - -Any hardware that can potentially generate DMA has to be locked down from -userspace in order to avoid it being possible for an attacker to cause -arbitrary kernel behaviour. Default to paranoid - in future we can -potentially relax this for sufficiently IOMMU-isolated devices. - -Signed-off-by: Matthew Garrett <mjg@redhat.com> ---- - drivers/pci/pci-sysfs.c | 9 +++++++++ - drivers/pci/proc.c | 8 +++++++- - drivers/pci/syscall.c | 2 +- - 3 files changed, 17 insertions(+), 2 deletions(-) - -diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c -index f39378d..1db1e74 100644 ---- a/drivers/pci/pci-sysfs.c -+++ b/drivers/pci/pci-sysfs.c -@@ -546,6 +546,9 @@ pci_write_config(struct file* filp, struct kobject *kobj, - loff_t init_off = off; - u8 *data = (u8*) buf; - -+ if (!capable(CAP_COMPROMISE_KERNEL)) -+ return -EPERM; -+ - if (off > dev->cfg_size) - return 0; - if (off + count > dev->cfg_size) { -@@ -852,6 +855,9 @@ pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr, - resource_size_t start, end; - int i; - -+ if (!capable(CAP_COMPROMISE_KERNEL)) -+ return -EPERM; -+ - for (i = 0; i < PCI_ROM_RESOURCE; i++) - if (res == &pdev->resource[i]) - break; -@@ -959,6 +965,9 @@ pci_write_resource_io(struct file *filp, struct kobject *kobj, - struct bin_attribute *attr, char *buf, - loff_t off, size_t count) - { -+ if (!capable(CAP_COMPROMISE_KERNEL)) -+ return -EPERM; -+ - return pci_resource_io(filp, kobj, attr, buf, off, count, true); - } - -diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c -index 9b8505c..35580bc 100644 ---- a/drivers/pci/proc.c -+++ b/drivers/pci/proc.c -@@ -139,6 +139,9 @@ proc_bus_pci_write(struct file *file, const char __user *buf, size_t nbytes, lof - int size = dp->size; - int cnt; - -+ if (!capable(CAP_COMPROMISE_KERNEL)) -+ return -EPERM; -+ - if (pos >= size) - return 0; - if (nbytes >= size) -@@ -219,6 +222,9 @@ static long proc_bus_pci_ioctl(struct file *file, unsigned int cmd, - #endif /* HAVE_PCI_MMAP */ - int ret = 0; - -+ if (!capable(CAP_COMPROMISE_KERNEL)) -+ return -EPERM; -+ - switch (cmd) { - case PCIIOC_CONTROLLER: - ret = pci_domain_nr(dev->bus); -@@ -259,7 +265,7 @@ static int proc_bus_pci_mmap(struct file *file, struct vm_area_struct *vma) - struct pci_filp_private *fpriv = file->private_data; - int i, ret; - -- if (!capable(CAP_SYS_RAWIO)) -+ if (!capable(CAP_SYS_RAWIO) || !capable(CAP_COMPROMISE_KERNEL)) - return -EPERM; - - /* Make sure the caller is mapping a real resource for this device */ -diff --git a/drivers/pci/syscall.c b/drivers/pci/syscall.c -index e1c1ec5..97e785f 100644 ---- a/drivers/pci/syscall.c -+++ b/drivers/pci/syscall.c -@@ -92,7 +92,7 @@ SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn, - u32 dword; - int err = 0; - -- if (!capable(CAP_SYS_ADMIN)) -+ if (!capable(CAP_SYS_ADMIN) || !capable(CAP_COMPROMISE_KERNEL)) - return -EPERM; - - dev = pci_get_bus_and_slot(bus, dfn); --- -1.8.0.1 - - -From 1b5a1b53577992b32a3f51b18aa07cb9b300a3b1 Mon Sep 17 00:00:00 2001 -From: Matthew Garrett <mjg@redhat.com> -Date: Thu, 20 Sep 2012 10:40:58 -0400 -Subject: [PATCH 03/20] x86: Lock down IO port access in secure boot - environments - -IO port access would permit users to gain access to PCI configuration -registers, which in turn (on a lot of hardware) give access to MMIO register -space. This would potentially permit root to trigger arbitrary DMA, so lock -it down by default. - -Signed-off-by: Matthew Garrett <mjg@redhat.com> ---- - arch/x86/kernel/ioport.c | 4 ++-- - drivers/char/mem.c | 3 +++ - 2 files changed, 5 insertions(+), 2 deletions(-) - -diff --git a/arch/x86/kernel/ioport.c b/arch/x86/kernel/ioport.c -index 8c96897..a2578c4 100644 ---- a/arch/x86/kernel/ioport.c -+++ b/arch/x86/kernel/ioport.c -@@ -28,7 +28,7 @@ asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int turn_on) - - if ((from + num <= from) || (from + num > IO_BITMAP_BITS)) - return -EINVAL; -- if (turn_on && !capable(CAP_SYS_RAWIO)) -+ if (turn_on && (!capable(CAP_SYS_RAWIO) || !capable(CAP_COMPROMISE_KERNEL))) - return -EPERM; - - /* -@@ -102,7 +102,7 @@ long sys_iopl(unsigned int level, struct pt_regs *regs) - return -EINVAL; - /* Trying to gain more privileges? */ - if (level > old) { -- if (!capable(CAP_SYS_RAWIO)) -+ if (!capable(CAP_SYS_RAWIO) || !capable(CAP_COMPROMISE_KERNEL)) - return -EPERM; - } - regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | (level << 12); -diff --git a/drivers/char/mem.c b/drivers/char/mem.c -index 0537903..47501fc 100644 ---- a/drivers/char/mem.c -+++ b/drivers/char/mem.c -@@ -597,6 +597,9 @@ static ssize_t write_port(struct file *file, const char __user *buf, - unsigned long i = *ppos; - const char __user * tmp = buf; - -+ if (!capable(CAP_COMPROMISE_KERNEL)) -+ return -EPERM; -+ - if (!access_ok(VERIFY_READ, buf, count)) - return -EFAULT; - while (count-- > 0 && i < 65536) { --- -1.8.0.1 - - -From 09c266136915eb1f4a9b36423b7ba65e3d024de4 Mon Sep 17 00:00:00 2001 -From: Matthew Garrett <mjg@redhat.com> -Date: Thu, 20 Sep 2012 10:40:59 -0400 -Subject: [PATCH 04/20] ACPI: Limit access to custom_method - -It must be impossible for even root to get code executed in kernel context -under a secure boot environment. custom_method effectively allows arbitrary -access to system memory, so it needs to have a capability check here. - -Signed-off-by: Matthew Garrett <mjg@redhat.com> ---- - drivers/acpi/custom_method.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/drivers/acpi/custom_method.c b/drivers/acpi/custom_method.c -index 5d42c24..247d58b 100644 ---- a/drivers/acpi/custom_method.c -+++ b/drivers/acpi/custom_method.c -@@ -29,6 +29,9 @@ static ssize_t cm_write(struct file *file, const char __user * user_buf, - struct acpi_table_header table; - acpi_status status; - -+ if (!capable(CAP_COMPROMISE_KERNEL)) -+ return -EPERM; -+ - if (!(*ppos)) { - /* parse the table header to get the table length */ - if (count <= sizeof(struct acpi_table_header)) --- -1.8.0.1 - - -From f3e9cb16e5ab3e680ec3ef464682c52371bbbbe3 Mon Sep 17 00:00:00 2001 -From: Matthew Garrett <mjg@redhat.com> -Date: Thu, 20 Sep 2012 10:41:00 -0400 -Subject: [PATCH 05/20] asus-wmi: Restrict debugfs interface - -We have no way of validating what all of the Asus WMI methods do on a -given machine, and there's a risk that some will allow hardware state to -be manipulated in such a way that arbitrary code can be executed in the -kernel. Add a capability check to prevent that. - -Signed-off-by: Matthew Garrett <mjg@redhat.com> ---- - drivers/platform/x86/asus-wmi.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index c0e9ff4..3c10167 100644 ---- a/drivers/platform/x86/asus-wmi.c -+++ b/drivers/platform/x86/asus-wmi.c -@@ -1521,6 +1521,9 @@ static int show_dsts(struct seq_file *m, void *data) - int err; - u32 retval = -1; - -+ if (!capable(CAP_COMPROMISE_KERNEL)) -+ return -EPERM; -+ - err = asus_wmi_get_devstate(asus, asus->debug.dev_id, &retval); - - if (err < 0) -@@ -1537,6 +1540,9 @@ static int show_devs(struct seq_file *m, void *data) - int err; - u32 retval = -1; - -+ if (!capable(CAP_COMPROMISE_KERNEL)) -+ return -EPERM; -+ - err = asus_wmi_set_devstate(asus->debug.dev_id, asus->debug.ctrl_param, - &retval); - -@@ -1561,6 +1567,9 @@ static int show_call(struct seq_file *m, void *data) - union acpi_object *obj; - acpi_status status; - -+ if (!capable(CAP_COMPROMISE_KERNEL)) -+ return -EPERM; -+ - status = wmi_evaluate_method(ASUS_WMI_MGMT_GUID, - 1, asus->debug.method_id, - &input, &output); --- -1.8.0.1 - - -From 23372d2a40135aca7a6d73511bd88790b598b489 Mon Sep 17 00:00:00 2001 -From: Matthew Garrett <mjg@redhat.com> -Date: Thu, 20 Sep 2012 10:41:01 -0400 -Subject: [PATCH 06/20] Restrict /dev/mem and /dev/kmem in secure boot setups +From 7aa8eb6a4b228db7e2920f323f1ba97063163de1 Mon Sep 17 00:00:00 2001 +From: Josh Boyer <jwboyer@redhat.com> +Date: Thu, 20 Sep 2012 10:41:05 -0400 +Subject: [PATCH 02/17] SELinux: define mapping for new Secure Boot capability -Allowing users to write to address space makes it possible for the kernel -to be subverted. Restrict this when we need to protect the kernel. +Add the name of the new Secure Boot capability. This allows SELinux +policies to properly map CAP_COMPROMISE_KERNEL to the appropriate +capability class. -Signed-off-by: Matthew Garrett <mjg@redhat.com> +Signed-off-by: Josh Boyer <jwboyer@redhat.com> --- - drivers/char/mem.c | 6 ++++++ - 1 file changed, 6 insertions(+) + security/selinux/include/classmap.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/drivers/char/mem.c b/drivers/char/mem.c -index 47501fc..8817cdc 100644 ---- a/drivers/char/mem.c -+++ b/drivers/char/mem.c -@@ -158,6 +158,9 @@ static ssize_t write_mem(struct file *file, const char __user *buf, - unsigned long copied; - void *ptr; - -+ if (!capable(CAP_COMPROMISE_KERNEL)) -+ return -EPERM; -+ - if (!valid_phys_addr_range(p, count)) - return -EFAULT; - -@@ -530,6 +533,9 @@ static ssize_t write_kmem(struct file *file, const char __user *buf, - char * kbuf; /* k-addr because vwrite() takes vmlist_lock rwlock */ - int err = 0; - -+ if (!capable(CAP_COMPROMISE_KERNEL)) -+ return -EPERM; -+ - if (p < (unsigned long) high_memory) { - unsigned long to_write = min_t(unsigned long, count, - (unsigned long)high_memory - p); +diff --git a/security/selinux/include/classmap.h b/security/selinux/include/classmap.h +index 14d04e6..ed99a2d 100644 +--- a/security/selinux/include/classmap.h ++++ b/security/selinux/include/classmap.h +@@ -146,8 +146,8 @@ struct security_class_mapping secclass_map[] = { + { "memprotect", { "mmap_zero", NULL } }, + { "peer", { "recv", NULL } }, + { "capability2", +- { "mac_override", "mac_admin", "syslog", "wake_alarm", "block_suspend", +- NULL } }, ++ { "mac_override", "mac_admin", "syslog", "wake_alarm", ++ "block_suspend", "compromise_kernel", NULL } }, + { "kernel_service", { "use_as_override", "create_files_as", NULL } }, + { "tun_socket", + { COMMON_SOCK_PERMS, "attach_queue", NULL } }, -- -1.8.0.1 +1.8.1 -From a0c80b01e80a1f6484a2a2811b4a212322494614 Mon Sep 17 00:00:00 2001 +From 10ed514ecac144034eba27bf9436ef111ac2ebd2 Mon Sep 17 00:00:00 2001 From: Josh Boyer <jwboyer@redhat.com> Date: Thu, 20 Sep 2012 10:41:02 -0400 -Subject: [PATCH 07/20] Secure boot: Add a dummy kernel parameter that will +Subject: [PATCH 03/17] Secure boot: Add a dummy kernel parameter that will switch on Secure Boot mode This forcibly drops CAP_COMPROMISE_KERNEL from both cap_permitted and cap_bset @@ -336,10 +85,10 @@ Signed-off-by: Josh Boyer <jwboyer@redhat.com> 2 files changed, 24 insertions(+) diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt -index 9776f06..0d6c28d 100644 +index 363e348..832b39b 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt -@@ -2599,6 +2599,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted. +@@ -2654,6 +2654,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted. Note: increases power consumption, thus should only be enabled if running jitter sensitive (HPC/RT) workloads. @@ -354,10 +103,10 @@ index 9776f06..0d6c28d 100644 If this boot parameter is not specified, only the first security module asking for security registration will be diff --git a/kernel/cred.c b/kernel/cred.c -index 48cea3d..3f5be65 100644 +index e0573a4..c3f4e3e 100644 --- a/kernel/cred.c +++ b/kernel/cred.c -@@ -623,6 +623,23 @@ void __init cred_init(void) +@@ -565,6 +565,23 @@ void __init cred_init(void) 0, SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL); } @@ -382,46 +131,49 @@ index 48cea3d..3f5be65 100644 * prepare_kernel_cred - Prepare a set of credentials for a kernel service * @daemon: A userspace daemon to be used as a reference -- -1.8.0.1 +1.8.1 -From 640f088c49da87a344417f58d3faa72d63a4f6ed Mon Sep 17 00:00:00 2001 +From 066b811cd05432ef91473cd349d20fa856d5ab18 Mon Sep 17 00:00:00 2001 From: Matthew Garrett <mjg@redhat.com> Date: Thu, 20 Sep 2012 10:41:03 -0400 -Subject: [PATCH 08/20] efi: Enable secure boot lockdown automatically when +Subject: [PATCH 04/17] efi: Enable secure boot lockdown automatically when enabled in firmware The firmware has a set of flags that indicate whether secure boot is enabled and enforcing. Use them to indicate whether the kernel should lock itself -down. +down. We also indicate the machine is in secure boot mode by adding the +EFI_SECURE_BOOT bit for use with efi_enabled. Signed-off-by: Matthew Garrett <mjg@redhat.com> +Signed-off-by: Josh Boyer <jwboyer@redhat.com> --- - Documentation/x86/zero-page.txt | 2 ++ - arch/x86/boot/compressed/eboot.c | 32 ++++++++++++++++++++++++++++++++ - arch/x86/include/asm/bootparam.h | 3 ++- - arch/x86/kernel/setup.c | 3 +++ - include/linux/cred.h | 2 ++ - 5 files changed, 41 insertions(+), 1 deletion(-) + Documentation/x86/zero-page.txt | 2 ++ + arch/x86/boot/compressed/eboot.c | 32 ++++++++++++++++++++++++++++++++ + arch/x86/include/uapi/asm/bootparam.h | 3 ++- + arch/x86/kernel/setup.c | 5 +++++ + include/linux/cred.h | 2 ++ + include/linux/efi.h | 1 + + 6 files changed, 44 insertions(+), 1 deletion(-) diff --git a/Documentation/x86/zero-page.txt b/Documentation/x86/zero-page.txt -index cf5437d..7f9ed48 100644 +index 199f453..ff651d3 100644 --- a/Documentation/x86/zero-page.txt +++ b/Documentation/x86/zero-page.txt -@@ -27,6 +27,8 @@ Offset Proto Name Meaning +@@ -30,6 +30,8 @@ Offset Proto Name Meaning 1E9/001 ALL eddbuf_entries Number of entries in eddbuf (below) 1EA/001 ALL edd_mbr_sig_buf_entries Number of entries in edd_mbr_sig_buffer (below) +1EB/001 ALL kbd_status Numlock is enabled +1EC/001 ALL secure_boot Kernel should enable secure boot lockdowns + 1EF/001 ALL sentinel Used to detect broken bootloaders 290/040 ALL edd_mbr_sig_buffer EDD MBR signatures 2D0/A00 ALL e820_map E820 memory map table - (array of struct e820entry) diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c -index e87b0ca..260cace 100644 +index f8fa411..96bd86b 100644 --- a/arch/x86/boot/compressed/eboot.c +++ b/arch/x86/boot/compressed/eboot.c -@@ -732,6 +732,36 @@ fail: +@@ -849,6 +849,36 @@ fail: return status; } @@ -458,7 +210,7 @@ index e87b0ca..260cace 100644 /* * Because the x86 boot code expects to be passed a boot_params we * need to create one ourselves (usually the bootloader would create -@@ -1026,6 +1056,8 @@ struct boot_params *efi_main(void *handle, efi_system_table_t *_table, +@@ -1143,6 +1173,8 @@ struct boot_params *efi_main(void *handle, efi_system_table_t *_table, if (sys_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) goto fail; @@ -466,40 +218,42 @@ index e87b0ca..260cace 100644 + setup_graphics(boot_params); - status = efi_call_phys3(sys_table->boottime->allocate_pool, -diff --git a/arch/x86/include/asm/bootparam.h b/arch/x86/include/asm/bootparam.h -index 2ad874c..c7338e0 100644 ---- a/arch/x86/include/asm/bootparam.h -+++ b/arch/x86/include/asm/bootparam.h -@@ -114,7 +114,8 @@ struct boot_params { + setup_efi_pci(boot_params); +diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h +index c15ddaf..85d7685 100644 +--- a/arch/x86/include/uapi/asm/bootparam.h ++++ b/arch/x86/include/uapi/asm/bootparam.h +@@ -131,7 +131,8 @@ struct boot_params { __u8 eddbuf_entries; /* 0x1e9 */ __u8 edd_mbr_sig_buf_entries; /* 0x1ea */ __u8 kbd_status; /* 0x1eb */ -- __u8 _pad6[5]; /* 0x1ec */ +- __u8 _pad5[3]; /* 0x1ec */ + __u8 secure_boot; /* 0x1ec */ -+ __u8 _pad6[4]; /* 0x1ed */ - struct setup_header hdr; /* setup header */ /* 0x1f1 */ - __u8 _pad7[0x290-0x1f1-sizeof(struct setup_header)]; - __u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX]; /* 0x290 */ ++ __u8 _pad5[2]; /* 0x1ed */ + /* + * The sentinel is set to a nonzero value (0xff) in header.S. + * diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c -index ca45696..800673d 100644 +index 8b24289..5355a54 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c -@@ -962,6 +962,9 @@ void __init setup_arch(char **cmdline_p) +@@ -1042,6 +1042,11 @@ void __init setup_arch(char **cmdline_p) io_delay_init(); -+ if (boot_params.secure_boot) ++ if (boot_params.secure_boot) { ++ set_bit(EFI_SECURE_BOOT, &x86_efi_facility); + secureboot_enable(); ++ } + /* * Parse the ACPI tables for possible boot-time SMP configuration. */ diff --git a/include/linux/cred.h b/include/linux/cred.h -index ebbed2c..a24faf1 100644 +index 04421e8..9e69542 100644 --- a/include/linux/cred.h +++ b/include/linux/cred.h -@@ -170,6 +170,8 @@ extern int set_security_override_from_ctx(struct cred *, const char *); +@@ -156,6 +156,8 @@ extern int set_security_override_from_ctx(struct cred *, const char *); extern int set_create_files_as(struct cred *, struct inode *); extern void __init cred_init(void); @@ -508,215 +262,29 @@ index ebbed2c..a24faf1 100644 /* * check for validity of credentials */ --- -1.8.0.1 - - -From 994d895b5b684fc53c3b43dda9aee460c1f526f2 Mon Sep 17 00:00:00 2001 -From: Josh Boyer <jwboyer@redhat.com> -Date: Thu, 20 Sep 2012 10:41:04 -0400 -Subject: [PATCH 09/20] acpi: Ignore acpi_rsdp kernel parameter in a secure - boot environment - -This option allows userspace to pass the RSDP address to the kernel. This -could potentially be used to circumvent the secure boot trust model. -We ignore the setting if we don't have the CAP_COMPROMISE_KERNEL capability. - -Signed-off-by: Josh Boyer <jwboyer@redhat.com> ---- - drivers/acpi/osl.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c -index 9eaf708..f94341b 100644 ---- a/drivers/acpi/osl.c -+++ b/drivers/acpi/osl.c -@@ -246,7 +246,7 @@ early_param("acpi_rsdp", setup_acpi_rsdp); - acpi_physical_address __init acpi_os_get_root_pointer(void) - { - #ifdef CONFIG_KEXEC -- if (acpi_rsdp) -+ if (acpi_rsdp && capable(CAP_COMPROMISE_KERNEL)) - return acpi_rsdp; - #endif - --- -1.8.0.1 - - -From c80aaf3eee3cb6b0d1a051e418ee99cd238c868c Mon Sep 17 00:00:00 2001 -From: Josh Boyer <jwboyer@redhat.com> -Date: Thu, 20 Sep 2012 10:41:05 -0400 -Subject: [PATCH 10/20] SELinux: define mapping for new Secure Boot capability - -Add the name of the new Secure Boot capability. This allows SELinux -policies to properly map CAP_COMPROMISE_KERNEL to the appropriate -capability class. - -Signed-off-by: Josh Boyer <jwboyer@redhat.com> ---- - security/selinux/include/classmap.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/security/selinux/include/classmap.h b/security/selinux/include/classmap.h -index df2de54..70e2834 100644 ---- a/security/selinux/include/classmap.h -+++ b/security/selinux/include/classmap.h -@@ -146,8 +146,8 @@ struct security_class_mapping secclass_map[] = { - { "memprotect", { "mmap_zero", NULL } }, - { "peer", { "recv", NULL } }, - { "capability2", -- { "mac_override", "mac_admin", "syslog", "wake_alarm", "block_suspend", -- NULL } }, -+ { "mac_override", "mac_admin", "syslog", "wake_alarm", -+ "block_suspend", "compromise_kernel", NULL } }, - { "kernel_service", { "use_as_override", "create_files_as", NULL } }, - { "tun_socket", - { COMMON_SOCK_PERMS, NULL } }, --- -1.8.0.1 - - -From 26352bcb92468233dd960b5d02ba1db344df72b9 Mon Sep 17 00:00:00 2001 -From: Matthew Garrett <mjg@redhat.com> -Date: Tue, 4 Sep 2012 11:55:13 -0400 -Subject: [PATCH 11/20] kexec: Disable in a secure boot environment - -kexec could be used as a vector for a malicious user to use a signed kernel -to circumvent the secure boot trust model. In the long run we'll want to -support signed kexec payloads, but for the moment we should just disable -loading entirely in that situation. - -Signed-off-by: Matthew Garrett <mjg@redhat.com> ---- - kernel/kexec.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kernel/kexec.c b/kernel/kexec.c -index 5e4bd78..dd464e0 100644 ---- a/kernel/kexec.c -+++ b/kernel/kexec.c -@@ -943,7 +943,7 @@ SYSCALL_DEFINE4(kexec_load, unsigned long, entry, unsigned long, nr_segments, - int result; - - /* We only trust the superuser with rebooting the system. */ -- if (!capable(CAP_SYS_BOOT)) -+ if (!capable(CAP_SYS_BOOT) || !capable(CAP_COMPROMISE_KERNEL)) - return -EPERM; - - /* --- -1.8.0.1 - - -From c03c68adceaec9656c55c47190fb4243bf903b40 Mon Sep 17 00:00:00 2001 -From: Josh Boyer <jwboyer@redhat.com> -Date: Mon, 25 Jun 2012 21:29:46 -0400 -Subject: [PATCH 12/20] Documentation: kernel-parameters.txt remove - capability.disable - -Remove the documentation for capability.disable. The code supporting this -parameter was removed with: - - commit 5915eb53861c5776cfec33ca4fcc1fd20d66dd27 - Author: Miklos Szeredi <mszeredi@suse.cz> - Date: Thu Jul 3 20:56:05 2008 +0200 - - security: remove dummy module - -Signed-off-by: Josh Boyer <jwboyer@redhat.com> ---- - Documentation/kernel-parameters.txt | 6 ------ - 1 file changed, 6 deletions(-) - -diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt -index 0d6c28d..d9af501 100644 ---- a/Documentation/kernel-parameters.txt -+++ b/Documentation/kernel-parameters.txt -@@ -446,12 +446,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted. - possible to determine what the correct size should be. - This option provides an override for these situations. - -- capability.disable= -- [SECURITY] Disable capabilities. This would normally -- be used only if an alternative security model is to be -- configured. Potentially dangerous and should only be -- used if you are entirely sure of the consequences. -- - ccw_timeout_log [S390] - See Documentation/s390/CommonIO for details. - --- -1.8.0.1 - - -From 3f1bda64d2c7b369e2833bd32cd1f3ba6c90348f Mon Sep 17 00:00:00 2001 -From: Josh Boyer <jwboyer@redhat.com> -Date: Fri, 5 Oct 2012 10:12:48 -0400 -Subject: [PATCH 13/20] modsign: Always enforce module signing in a Secure Boot - environment - -If a machine is booted into a Secure Boot environment, we need to -protect the trust model. This requires that all modules be signed -with a key that is in the kernel's _modsign keyring. The checks for -this are already done via the 'sig_enforce' module parameter. Make -this visible within the kernel and force it to be true. - -Signed-off-by: Josh Boyer <jwboyer@redhat.com> ---- - kernel/cred.c | 8 ++++++++ - kernel/module.c | 4 ++-- - 2 files changed, 10 insertions(+), 2 deletions(-) - -diff --git a/kernel/cred.c b/kernel/cred.c -index 3f5be65..a381e27 100644 ---- a/kernel/cred.c -+++ b/kernel/cred.c -@@ -623,11 +623,19 @@ void __init cred_init(void) - 0, SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL); - } - -+#ifdef CONFIG_MODULE_SIG -+extern bool sig_enforce; -+#endif -+ - void __init secureboot_enable() - { - pr_info("Secure boot enabled\n"); - cap_lower((&init_cred)->cap_bset, CAP_COMPROMISE_KERNEL); - cap_lower((&init_cred)->cap_permitted, CAP_COMPROMISE_KERNEL); -+#ifdef CONFIG_MODULE_SIG -+ /* Enable module signature enforcing */ -+ sig_enforce = true; -+#endif - } - - /* Dummy Secure Boot enable option to fake out UEFI SB=1 */ -diff --git a/kernel/module.c b/kernel/module.c -index 6e48c3a..6d5d2aa 100644 ---- a/kernel/module.c -+++ b/kernel/module.c -@@ -106,9 +106,9 @@ struct list_head *kdb_modules = &modules; /* kdb needs the list of modules */ - - #ifdef CONFIG_MODULE_SIG - #ifdef CONFIG_MODULE_SIG_FORCE --static bool sig_enforce = true; -+bool sig_enforce = true; - #else --static bool sig_enforce = false; -+bool sig_enforce = false; +diff --git a/include/linux/efi.h b/include/linux/efi.h +index 7a9498a..1ae16b6 100644 +--- a/include/linux/efi.h ++++ b/include/linux/efi.h +@@ -627,6 +627,7 @@ extern int __init efi_setup_pcdp_console(char *); + #define EFI_RUNTIME_SERVICES 3 /* Can we use runtime services? */ + #define EFI_MEMMAP 4 /* Can we use EFI memory map? */ + #define EFI_64BIT 5 /* Is the firmware 64-bit? */ ++#define EFI_SECURE_BOOT 6 /* Are we in Secure Boot mode? */ - static int param_set_bool_enable_only(const char *val, - const struct kernel_param *kp) + #ifdef CONFIG_EFI + # ifdef CONFIG_X86 -- -1.8.0.1 +1.8.1 -From e6e3ec77b2fa037b32829e7f5ee468ad8a62dd05 Mon Sep 17 00:00:00 2001 +From 8d8349396e90630e2617c5a855682a6c87a7ae4d Mon Sep 17 00:00:00 2001 From: Dave Howells <dhowells@redhat.com> Date: Tue, 23 Oct 2012 09:30:54 -0400 -Subject: [PATCH 14/20] Add EFI signature data types, such as are used for - containing hashes, keys and certificates for cryptographic verification. +Subject: [PATCH 05/17] Add EFI signature data types + +Add the data types that are used for containing hashes, keys and certificates +for cryptographic verification. Signed-off-by: David Howells <dhowells@redhat.com> --- @@ -724,10 +292,10 @@ Signed-off-by: David Howells <dhowells@redhat.com> 1 file changed, 20 insertions(+) diff --git a/include/linux/efi.h b/include/linux/efi.h -index 337aefb..a01f8a7 100644 +index 1ae16b6..de7021d 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h -@@ -317,6 +317,12 @@ typedef efi_status_t efi_query_capsule_caps_t(efi_capsule_header_t **capsules, +@@ -388,6 +388,12 @@ typedef efi_status_t efi_query_capsule_caps_t(efi_capsule_header_t **capsules, #define EFI_FILE_SYSTEM_GUID \ EFI_GUID( 0x964e5b22, 0x6459, 0x11d2, 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b ) @@ -740,7 +308,7 @@ index 337aefb..a01f8a7 100644 typedef struct { efi_guid_t guid; u64 table; -@@ -452,6 +458,20 @@ typedef struct { +@@ -523,6 +529,20 @@ typedef struct { #define EFI_INVALID_TABLE_ADDR (~0UL) @@ -762,34 +330,37 @@ index 337aefb..a01f8a7 100644 * All runtime access to EFI goes through this structure: */ -- -1.8.0.1 +1.8.1 -From c2542256f632a22232cf02d5fd64568a5afa4516 Mon Sep 17 00:00:00 2001 +From a221d71dd4487a5ee2b337540d0258512b7c8dba Mon Sep 17 00:00:00 2001 From: Dave Howells <dhowells@redhat.com> Date: Tue, 23 Oct 2012 09:36:28 -0400 -Subject: [PATCH 15/20] Add an EFI signature blob parser and key loader. X.509 - certificates are loaded into the specified keyring as asymmetric type keys. +Subject: [PATCH 06/17] Add an EFI signature blob parser and key loader. + +X.509 certificates are loaded into the specified keyring as asymmetric type +keys. Signed-off-by: David Howells <dhowells@redhat.com> --- - crypto/asymmetric_keys/Kconfig | 7 +++ + crypto/asymmetric_keys/Kconfig | 8 +++ crypto/asymmetric_keys/Makefile | 1 + - crypto/asymmetric_keys/efi_parser.c | 107 ++++++++++++++++++++++++++++++++++++ + crypto/asymmetric_keys/efi_parser.c | 108 ++++++++++++++++++++++++++++++++++++ include/linux/efi.h | 4 ++ - 4 files changed, 119 insertions(+) + 4 files changed, 121 insertions(+) create mode 100644 crypto/asymmetric_keys/efi_parser.c diff --git a/crypto/asymmetric_keys/Kconfig b/crypto/asymmetric_keys/Kconfig -index 6d2c2ea..eb53fc3 100644 +index 6d2c2ea..ace9c30 100644 --- a/crypto/asymmetric_keys/Kconfig +++ b/crypto/asymmetric_keys/Kconfig -@@ -35,4 +35,11 @@ config X509_CERTIFICATE_PARSER +@@ -35,4 +35,12 @@ config X509_CERTIFICATE_PARSER data and provides the ability to instantiate a crypto key from a public key packet found inside the certificate. +config EFI_SIGNATURE_LIST_PARSER + bool "EFI signature list parser" ++ depends on EFI + select X509_CERTIFICATE_PARSER + help + This option provides support for parsing EFI signature lists for @@ -810,10 +381,10 @@ index 0727204..cd8388e 100644 # X.509 Certificate handling diff --git a/crypto/asymmetric_keys/efi_parser.c b/crypto/asymmetric_keys/efi_parser.c new file mode 100644 -index 0000000..59b859a +index 0000000..636feb1 --- /dev/null +++ b/crypto/asymmetric_keys/efi_parser.c -@@ -0,0 +1,107 @@ +@@ -0,0 +1,108 @@ +/* EFI signature/key/certificate list parser + * + * Copyright (C) 2012 Red Hat, Inc. All Rights Reserved. @@ -877,7 +448,7 @@ index 0000000..59b859a + elsize < esize || + elsize % esize != 0) { + pr_devel("- bad size combo @%x\n", offs); -+ continue; ++ return -EBADMSG; + } + + if (efi_guidcmp(list.signature_type, efi_cert_x509_guid) != 0) { @@ -910,8 +481,9 @@ index 0000000..59b859a + pr_err("Problem loading in-kernel X.509 certificate (%ld)\n", + PTR_ERR(key)); + else -+ pr_notice("Loaded cert '%s'\n", -+ key_ref_to_ptr(key)->description); ++ pr_notice("Loaded cert '%s' linked to '%s'\n", ++ key_ref_to_ptr(key)->description, ++ keyring->description); + + data += esize; + size -= esize; @@ -922,10 +494,10 @@ index 0000000..59b859a + return 0; +} diff --git a/include/linux/efi.h b/include/linux/efi.h -index a01f8a7..44a7faa 100644 +index de7021d..64b3e55 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h -@@ -541,6 +541,10 @@ extern int efi_set_rtc_mmss(unsigned long nowtime); +@@ -612,6 +612,10 @@ extern int efi_set_rtc_mmss(unsigned long nowtime); extern void efi_reserve_boot_services(void); extern struct efi_memory_map memmap; @@ -937,85 +509,13 @@ index a01f8a7..44a7faa 100644 * efi_range_is_wc - check the WC bit on an address range * @start: starting kvirt address -- -1.8.0.1 +1.8.1 -From a418e6fdd2aa946a30cf1bee5c9540d03d626981 Mon Sep 17 00:00:00 2001 -From: Josh Boyer <jwboyer@redhat.com> -Date: Fri, 26 Oct 2012 12:29:49 -0400 -Subject: [PATCH 16/20] EFI: Add in-kernel variable to determine if Secure Boot - is enabled - -There are a few cases where in-kernel functions may need to know if -Secure Boot is enabled. The added capability check cannot be used as the -kernel can't drop it's own capabilites, so we add a global variable -similar to efi_enabled so they can determine if Secure Boot is enabled. - -Signed-off-by: Josh Boyer <jwboyer@redhat.com> ---- - arch/x86/kernel/setup.c | 6 +++++- - arch/x86/platform/efi/efi.c | 2 ++ - include/linux/efi.h | 3 +++ - 3 files changed, 10 insertions(+), 1 deletion(-) - -diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c -index 800673d..cf8823b 100644 ---- a/arch/x86/kernel/setup.c -+++ b/arch/x86/kernel/setup.c -@@ -962,8 +962,12 @@ void __init setup_arch(char **cmdline_p) - - io_delay_init(); - -- if (boot_params.secure_boot) -+ if (boot_params.secure_boot) { - secureboot_enable(); -+#ifdef CONFIG_EFI -+ secure_boot_enabled = 1; -+#endif -+ } - - /* - * Parse the ACPI tables for possible boot-time SMP configuration. -diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c -index ad44391..d22bfeb 100644 ---- a/arch/x86/platform/efi/efi.c -+++ b/arch/x86/platform/efi/efi.c -@@ -54,6 +54,8 @@ - int efi_enabled; - EXPORT_SYMBOL(efi_enabled); - -+int secure_boot_enabled; -+ - struct efi __read_mostly efi = { - .mps = EFI_INVALID_TABLE_ADDR, - .acpi = EFI_INVALID_TABLE_ADDR, -diff --git a/include/linux/efi.h b/include/linux/efi.h -index 44a7faa..b5403ae 100644 ---- a/include/linux/efi.h -+++ b/include/linux/efi.h -@@ -578,11 +578,14 @@ extern int __init efi_setup_pcdp_console(char *); - # ifdef CONFIG_X86 - extern int efi_enabled; - extern bool efi_64bit; -+ extern int secure_boot_enabled; - # else - # define efi_enabled 1 -+# define secure_boot_enabled 0 - # endif - #else - # define efi_enabled 0 -+# define secure_boot_enabled 0 - #endif - - /* --- -1.8.0.1 - - -From f6d05f0974f6a7667ebbbf91624678bcf32169ae Mon Sep 17 00:00:00 2001 +From 9c9d291a605d1d0864d047cff75724ad1cb8b97d Mon Sep 17 00:00:00 2001 From: Josh Boyer <jwboyer@redhat.com> Date: Fri, 26 Oct 2012 12:36:24 -0400 -Subject: [PATCH 17/20] MODSIGN: Add module certificate blacklist keyring +Subject: [PATCH 07/17] MODSIGN: Add module certificate blacklist keyring This adds an additional keyring that is used to store certificates that are blacklisted. This keyring is searched first when loading signed modules @@ -1025,16 +525,16 @@ useful in cases where third party certificates are used for module signing. Signed-off-by: Josh Boyer <jwboyer@redhat.com> --- init/Kconfig | 8 ++++++++ - kernel/modsign_pubkey.c | 17 +++++++++++++++++ + kernel/modsign_pubkey.c | 14 ++++++++++++++ kernel/module-internal.h | 3 +++ - kernel/module_signing.c | 14 +++++++++++++- - 4 files changed, 41 insertions(+), 1 deletion(-) + kernel/module_signing.c | 12 ++++++++++++ + 4 files changed, 37 insertions(+) diff --git a/init/Kconfig b/init/Kconfig -index 6fdd6e3..7a9bf00 100644 +index be8b7f5..d972b77 100644 --- a/init/Kconfig +++ b/init/Kconfig -@@ -1602,6 +1602,14 @@ config MODULE_SIG_FORCE +@@ -1665,6 +1665,14 @@ config MODULE_SIG_FORCE Reject unsigned modules or signed modules for which we don't have a key. Without this, such modules will simply taint the kernel. @@ -1050,7 +550,7 @@ index 6fdd6e3..7a9bf00 100644 prompt "Which hash algorithm should modules be signed with?" depends on MODULE_SIG diff --git a/kernel/modsign_pubkey.c b/kernel/modsign_pubkey.c -index 767e559..3bfb7ed 100644 +index 2b6e699..4cd408d 100644 --- a/kernel/modsign_pubkey.c +++ b/kernel/modsign_pubkey.c @@ -17,6 +17,9 @@ @@ -1063,22 +563,19 @@ index 767e559..3bfb7ed 100644 extern __initdata const u8 modsign_certificate_list[]; extern __initdata const u8 modsign_certificate_list_end[]; -@@ -52,6 +55,20 @@ static __init int module_verify_init(void) - if (key_instantiate_and_link(modsign_keyring, NULL, 0, NULL, NULL) < 0) - panic("Can't instantiate module signing keyring\n"); +@@ -43,6 +46,17 @@ static __init int module_verify_init(void) + if (IS_ERR(modsign_keyring)) + panic("Can't allocate module signing keyring\n"); +#ifdef CONFIG_MODULE_SIG_BLACKLIST -+ modsign_blacklist = key_alloc(&key_type_keyring, ".modsign_blacklist", ++ modsign_blacklist = keyring_alloc(".modsign_blacklist", + KUIDT_INIT(0), KGIDT_INIT(0), + current_cred(), + (KEY_POS_ALL & ~KEY_POS_SETATTR) | + KEY_USR_VIEW | KEY_USR_READ, -+ KEY_ALLOC_NOT_IN_QUOTA); ++ KEY_ALLOC_NOT_IN_QUOTA, NULL); + if (IS_ERR(modsign_blacklist)) + panic("Can't allocate module signing blacklist keyring\n"); -+ -+ if (key_instantiate_and_link(modsign_blacklist, NULL, 0, NULL, NULL) < 0) -+ panic("Can't instantiate module signing blacklist keyring\n"); +#endif + return 0; @@ -1098,45 +595,36 @@ index 24f9247..51a8380 100644 extern int mod_verify_sig(const void *mod, unsigned long *_modlen); diff --git a/kernel/module_signing.c b/kernel/module_signing.c -index f2970bd..8ab83a6 100644 +index f2970bd..5423195 100644 --- a/kernel/module_signing.c +++ b/kernel/module_signing.c -@@ -132,7 +132,7 @@ static int mod_extract_mpi_array(struct public_key_signature *pks, - static struct key *request_asymmetric_key(const char *signer, size_t signer_len, - const u8 *key_id, size_t key_id_len) - { -- key_ref_t key; -+ key_ref_t key, blacklist; - size_t i; - char *id, *q; - @@ -157,6 +157,18 @@ static struct key *request_asymmetric_key(const char *signer, size_t signer_len, pr_debug("Look up: \"%s\"\n", id); +#ifdef CONFIG_MODULE_SIG_BLACKLIST -+ blacklist = keyring_search(make_key_ref(modsign_blacklist, 1), ++ key = keyring_search(make_key_ref(modsign_blacklist, 1), + &key_type_asymmetric, id); -+ if (!IS_ERR(blacklist)) { ++ if (!IS_ERR(key)) { + /* module is signed with a cert in the blacklist. reject */ + pr_err("Module key '%s' is in blacklist\n", id); -+ key_ref_put(blacklist); ++ key_ref_put(key); + kfree(id); + return ERR_PTR(-EKEYREJECTED); + } +#endif -+ ++ key = keyring_search(make_key_ref(modsign_keyring, 1), &key_type_asymmetric, id); if (IS_ERR(key)) -- -1.8.0.1 +1.8.1 -From ff0ed221fe8d5a46a9bc36323ca8fb6f75c22a83 Mon Sep 17 00:00:00 2001 +From 4b85122267e2ac07833e20f0cac71c5c8c9ac65c Mon Sep 17 00:00:00 2001 From: Josh Boyer <jwboyer@redhat.com> Date: Fri, 26 Oct 2012 12:42:16 -0400 -Subject: [PATCH 18/20] MODSIGN: Import certificates from UEFI Secure Boot +Subject: [PATCH 08/17] MODSIGN: Import certificates from UEFI Secure Boot Secure Boot stores a list of allowed certificates in the 'db' variable. This imports those certificates into the module signing keyring. This @@ -1161,10 +649,10 @@ Signed-off-by: Josh Boyer <jwboyer@redhat.com> create mode 100644 kernel/modsign_uefi.c diff --git a/include/linux/efi.h b/include/linux/efi.h -index b5403ae..bba53e3 100644 +index 64b3e55..76fe526 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h -@@ -323,6 +323,12 @@ typedef efi_status_t efi_query_capsule_caps_t(efi_capsule_header_t **capsules, +@@ -394,6 +394,12 @@ typedef efi_status_t efi_query_capsule_caps_t(efi_capsule_header_t **capsules, #define EFI_CERT_X509_GUID \ EFI_GUID( 0xa5c059a1, 0x94e4, 0x4aa7, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72 ) @@ -1178,10 +666,10 @@ index b5403ae..bba53e3 100644 efi_guid_t guid; u64 table; diff --git a/init/Kconfig b/init/Kconfig -index 7a9bf00..51aa170 100644 +index d972b77..27e3a82 100644 --- a/init/Kconfig +++ b/init/Kconfig -@@ -1610,6 +1610,15 @@ config MODULE_SIG_BLACKLIST +@@ -1673,6 +1673,15 @@ config MODULE_SIG_BLACKLIST should not pass module signature verification. If a module is signed with something in this keyring, the load will be rejected. @@ -1198,18 +686,18 @@ index 7a9bf00..51aa170 100644 prompt "Which hash algorithm should modules be signed with?" depends on MODULE_SIG diff --git a/kernel/Makefile b/kernel/Makefile -index 86e3285..12e17ab 100644 +index 6c072b6..8848829 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -55,6 +55,7 @@ obj-$(CONFIG_PROVE_LOCKING) += spinlock.o obj-$(CONFIG_UID16) += uid16.o obj-$(CONFIG_MODULES) += module.o - obj-$(CONFIG_MODULE_SIG) += module_signing.o modsign_pubkey.o + obj-$(CONFIG_MODULE_SIG) += module_signing.o modsign_pubkey.o modsign_certificate.o +obj-$(CONFIG_MODULE_SIG_UEFI) += modsign_uefi.o obj-$(CONFIG_KALLSYMS) += kallsyms.o obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o obj-$(CONFIG_KEXEC) += kexec.o -@@ -113,6 +114,8 @@ obj-$(CONFIG_JUMP_LABEL) += jump_label.o +@@ -114,6 +115,8 @@ obj-$(CONFIG_CONTEXT_TRACKING) += context_tracking.o $(obj)/configs.o: $(obj)/config_data.h @@ -1220,7 +708,7 @@ index 86e3285..12e17ab 100644 targets += config_data.gz diff --git a/kernel/modsign_uefi.c b/kernel/modsign_uefi.c new file mode 100644 -index 0000000..76a5a34 +index 0000000..b9237d7 --- /dev/null +++ b/kernel/modsign_uefi.c @@ -0,0 +1,90 @@ @@ -1274,7 +762,7 @@ index 0000000..76a5a34 + int rc = 0; + + /* Check if SB is enabled and just return if not */ -+ if (!secure_boot_enabled) ++ if (!efi_enabled(EFI_SECURE_BOOT)) + return 0; + + /* Get db, MokListRT, and dbx. They might not exist, so it isn't @@ -1315,13 +803,423 @@ index 0000000..76a5a34 +} +late_initcall(load_uefi_certs); -- -1.8.0.1 +1.8.1 + + +From e6f51e0b73bdaf0bb8d6ebc07e041ce3b6126e9c Mon Sep 17 00:00:00 2001 +From: Matthew Garrett <mjg@redhat.com> +Date: Thu, 20 Sep 2012 10:40:57 -0400 +Subject: [PATCH 09/17] PCI: Lock down BAR access in secure boot environments + +Any hardware that can potentially generate DMA has to be locked down from +userspace in order to avoid it being possible for an attacker to cause +arbitrary kernel behaviour. Default to paranoid - in future we can +potentially relax this for sufficiently IOMMU-isolated devices. + +Signed-off-by: Matthew Garrett <mjg@redhat.com> +--- + drivers/pci/pci-sysfs.c | 9 +++++++++ + drivers/pci/proc.c | 8 +++++++- + drivers/pci/syscall.c | 2 +- + 3 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c +index 9c6e9bb..b966089 100644 +--- a/drivers/pci/pci-sysfs.c ++++ b/drivers/pci/pci-sysfs.c +@@ -622,6 +622,9 @@ pci_write_config(struct file* filp, struct kobject *kobj, + loff_t init_off = off; + u8 *data = (u8*) buf; + ++ if (!capable(CAP_COMPROMISE_KERNEL)) ++ return -EPERM; ++ + if (off > dev->cfg_size) + return 0; + if (off + count > dev->cfg_size) { +@@ -928,6 +931,9 @@ pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr, + resource_size_t start, end; + int i; + ++ if (!capable(CAP_COMPROMISE_KERNEL)) ++ return -EPERM; ++ + for (i = 0; i < PCI_ROM_RESOURCE; i++) + if (res == &pdev->resource[i]) + break; +@@ -1035,6 +1041,9 @@ pci_write_resource_io(struct file *filp, struct kobject *kobj, + struct bin_attribute *attr, char *buf, + loff_t off, size_t count) + { ++ if (!capable(CAP_COMPROMISE_KERNEL)) ++ return -EPERM; ++ + return pci_resource_io(filp, kobj, attr, buf, off, count, true); + } + +diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c +index 9b8505c..35580bc 100644 +--- a/drivers/pci/proc.c ++++ b/drivers/pci/proc.c +@@ -139,6 +139,9 @@ proc_bus_pci_write(struct file *file, const char __user *buf, size_t nbytes, lof + int size = dp->size; + int cnt; + ++ if (!capable(CAP_COMPROMISE_KERNEL)) ++ return -EPERM; ++ + if (pos >= size) + return 0; + if (nbytes >= size) +@@ -219,6 +222,9 @@ static long proc_bus_pci_ioctl(struct file *file, unsigned int cmd, + #endif /* HAVE_PCI_MMAP */ + int ret = 0; + ++ if (!capable(CAP_COMPROMISE_KERNEL)) ++ return -EPERM; ++ + switch (cmd) { + case PCIIOC_CONTROLLER: + ret = pci_domain_nr(dev->bus); +@@ -259,7 +265,7 @@ static int proc_bus_pci_mmap(struct file *file, struct vm_area_struct *vma) + struct pci_filp_private *fpriv = file->private_data; + int i, ret; + +- if (!capable(CAP_SYS_RAWIO)) ++ if (!capable(CAP_SYS_RAWIO) || !capable(CAP_COMPROMISE_KERNEL)) + return -EPERM; + + /* Make sure the caller is mapping a real resource for this device */ +diff --git a/drivers/pci/syscall.c b/drivers/pci/syscall.c +index e1c1ec5..97e785f 100644 +--- a/drivers/pci/syscall.c ++++ b/drivers/pci/syscall.c +@@ -92,7 +92,7 @@ SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn, + u32 dword; + int err = 0; + +- if (!capable(CAP_SYS_ADMIN)) ++ if (!capable(CAP_SYS_ADMIN) || !capable(CAP_COMPROMISE_KERNEL)) + return -EPERM; + + dev = pci_get_bus_and_slot(bus, dfn); +-- +1.8.1 + + +From c4399308a252ca147971bd6d2f1f56557f279201 Mon Sep 17 00:00:00 2001 +From: Matthew Garrett <mjg@redhat.com> +Date: Thu, 20 Sep 2012 10:40:58 -0400 +Subject: [PATCH 10/17] x86: Lock down IO port access in secure boot + environments + +IO port access would permit users to gain access to PCI configuration +registers, which in turn (on a lot of hardware) give access to MMIO register +space. This would potentially permit root to trigger arbitrary DMA, so lock +it down by default. + +Signed-off-by: Matthew Garrett <mjg@redhat.com> +--- + arch/x86/kernel/ioport.c | 4 ++-- + drivers/char/mem.c | 3 +++ + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/arch/x86/kernel/ioport.c b/arch/x86/kernel/ioport.c +index 8c96897..a2578c4 100644 +--- a/arch/x86/kernel/ioport.c ++++ b/arch/x86/kernel/ioport.c +@@ -28,7 +28,7 @@ asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int turn_on) + + if ((from + num <= from) || (from + num > IO_BITMAP_BITS)) + return -EINVAL; +- if (turn_on && !capable(CAP_SYS_RAWIO)) ++ if (turn_on && (!capable(CAP_SYS_RAWIO) || !capable(CAP_COMPROMISE_KERNEL))) + return -EPERM; + + /* +@@ -102,7 +102,7 @@ long sys_iopl(unsigned int level, struct pt_regs *regs) + return -EINVAL; + /* Trying to gain more privileges? */ + if (level > old) { +- if (!capable(CAP_SYS_RAWIO)) ++ if (!capable(CAP_SYS_RAWIO) || !capable(CAP_COMPROMISE_KERNEL)) + return -EPERM; + } + regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | (level << 12); +diff --git a/drivers/char/mem.c b/drivers/char/mem.c +index c6fa3bc..fc28099 100644 +--- a/drivers/char/mem.c ++++ b/drivers/char/mem.c +@@ -597,6 +597,9 @@ static ssize_t write_port(struct file *file, const char __user *buf, + unsigned long i = *ppos; + const char __user * tmp = buf; + ++ if (!capable(CAP_COMPROMISE_KERNEL)) ++ return -EPERM; ++ + if (!access_ok(VERIFY_READ, buf, count)) + return -EFAULT; + while (count-- > 0 && i < 65536) { +-- +1.8.1 + + +From b3e2bb87699c1b0aa235c772c1c5ae376b63ea49 Mon Sep 17 00:00:00 2001 +From: Matthew Garrett <mjg@redhat.com> +Date: Thu, 20 Sep 2012 10:40:59 -0400 +Subject: [PATCH 11/17] ACPI: Limit access to custom_method + +It must be impossible for even root to get code executed in kernel context +under a secure boot environment. custom_method effectively allows arbitrary +access to system memory, so it needs to have a capability check here. + +Signed-off-by: Matthew Garrett <mjg@redhat.com> +--- + drivers/acpi/custom_method.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/acpi/custom_method.c b/drivers/acpi/custom_method.c +index 5d42c24..247d58b 100644 +--- a/drivers/acpi/custom_method.c ++++ b/drivers/acpi/custom_method.c +@@ -29,6 +29,9 @@ static ssize_t cm_write(struct file *file, const char __user * user_buf, + struct acpi_table_header table; + acpi_status status; + ++ if (!capable(CAP_COMPROMISE_KERNEL)) ++ return -EPERM; ++ + if (!(*ppos)) { + /* parse the table header to get the table length */ + if (count <= sizeof(struct acpi_table_header)) +-- +1.8.1 + + +From 300b9cc9e0833d66b0ea49c259c1e2f7dfe7de12 Mon Sep 17 00:00:00 2001 +From: Matthew Garrett <mjg@redhat.com> +Date: Thu, 20 Sep 2012 10:41:00 -0400 +Subject: [PATCH 12/17] asus-wmi: Restrict debugfs interface + +We have no way of validating what all of the Asus WMI methods do on a +given machine, and there's a risk that some will allow hardware state to +be manipulated in such a way that arbitrary code can be executed in the +kernel. Add a capability check to prevent that. + +Signed-off-by: Matthew Garrett <mjg@redhat.com> +--- + drivers/platform/x86/asus-wmi.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c +index f80ae4d..059195f 100644 +--- a/drivers/platform/x86/asus-wmi.c ++++ b/drivers/platform/x86/asus-wmi.c +@@ -1521,6 +1521,9 @@ static int show_dsts(struct seq_file *m, void *data) + int err; + u32 retval = -1; + ++ if (!capable(CAP_COMPROMISE_KERNEL)) ++ return -EPERM; ++ + err = asus_wmi_get_devstate(asus, asus->debug.dev_id, &retval); + + if (err < 0) +@@ -1537,6 +1540,9 @@ static int show_devs(struct seq_file *m, void *data) + int err; + u32 retval = -1; + ++ if (!capable(CAP_COMPROMISE_KERNEL)) ++ return -EPERM; ++ + err = asus_wmi_set_devstate(asus->debug.dev_id, asus->debug.ctrl_param, + &retval); + +@@ -1561,6 +1567,9 @@ static int show_call(struct seq_file *m, void *data) + union acpi_object *obj; + acpi_status status; + ++ if (!capable(CAP_COMPROMISE_KERNEL)) ++ return -EPERM; ++ + status = wmi_evaluate_method(ASUS_WMI_MGMT_GUID, + 1, asus->debug.method_id, + &input, &output); +-- +1.8.1 + + +From 690713487cf5ac3949cf915e28a75a1270e2c2a6 Mon Sep 17 00:00:00 2001 +From: Matthew Garrett <mjg@redhat.com> +Date: Thu, 20 Sep 2012 10:41:01 -0400 +Subject: [PATCH 13/17] Restrict /dev/mem and /dev/kmem in secure boot setups + +Allowing users to write to address space makes it possible for the kernel +to be subverted. Restrict this when we need to protect the kernel. + +Signed-off-by: Matthew Garrett <mjg@redhat.com> +--- + drivers/char/mem.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/drivers/char/mem.c b/drivers/char/mem.c +index fc28099..b5df7a8 100644 +--- a/drivers/char/mem.c ++++ b/drivers/char/mem.c +@@ -158,6 +158,9 @@ static ssize_t write_mem(struct file *file, const char __user *buf, + unsigned long copied; + void *ptr; + ++ if (!capable(CAP_COMPROMISE_KERNEL)) ++ return -EPERM; ++ + if (!valid_phys_addr_range(p, count)) + return -EFAULT; + +@@ -530,6 +533,9 @@ static ssize_t write_kmem(struct file *file, const char __user *buf, + char * kbuf; /* k-addr because vwrite() takes vmlist_lock rwlock */ + int err = 0; + ++ if (!capable(CAP_COMPROMISE_KERNEL)) ++ return -EPERM; ++ + if (p < (unsigned long) high_memory) { + unsigned long to_write = min_t(unsigned long, count, + (unsigned long)high_memory - p); +-- +1.8.1 + + +From 170cc9e113785b6f38cbd4bf5d8bbd42d844d119 Mon Sep 17 00:00:00 2001 +From: Josh Boyer <jwboyer@redhat.com> +Date: Thu, 20 Sep 2012 10:41:04 -0400 +Subject: [PATCH 14/17] acpi: Ignore acpi_rsdp kernel parameter in a secure + boot environment + +This option allows userspace to pass the RSDP address to the kernel. This +could potentially be used to circumvent the secure boot trust model. +We ignore the setting if we don't have the CAP_COMPROMISE_KERNEL capability. + +Signed-off-by: Josh Boyer <jwboyer@redhat.com> +--- + drivers/acpi/osl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c +index bd22f86..88251d2 100644 +--- a/drivers/acpi/osl.c ++++ b/drivers/acpi/osl.c +@@ -246,7 +246,7 @@ early_param("acpi_rsdp", setup_acpi_rsdp); + acpi_physical_address __init acpi_os_get_root_pointer(void) + { + #ifdef CONFIG_KEXEC +- if (acpi_rsdp) ++ if (acpi_rsdp && capable(CAP_COMPROMISE_KERNEL)) + return acpi_rsdp; + #endif + +-- +1.8.1 + + +From eb021ca148e35633480ece4b472807a621ca9a5f Mon Sep 17 00:00:00 2001 +From: Matthew Garrett <mjg@redhat.com> +Date: Tue, 4 Sep 2012 11:55:13 -0400 +Subject: [PATCH 15/17] kexec: Disable in a secure boot environment + +kexec could be used as a vector for a malicious user to use a signed kernel +to circumvent the secure boot trust model. In the long run we'll want to +support signed kexec payloads, but for the moment we should just disable +loading entirely in that situation. +Signed-off-by: Matthew Garrett <mjg@redhat.com> +--- + kernel/kexec.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -From 7d5629a2000d9dc92da91d2f1258af748e89cfd7 Mon Sep 17 00:00:00 2001 +diff --git a/kernel/kexec.c b/kernel/kexec.c +index 5e4bd78..dd464e0 100644 +--- a/kernel/kexec.c ++++ b/kernel/kexec.c +@@ -943,7 +943,7 @@ SYSCALL_DEFINE4(kexec_load, unsigned long, entry, unsigned long, nr_segments, + int result; + + /* We only trust the superuser with rebooting the system. */ +- if (!capable(CAP_SYS_BOOT)) ++ if (!capable(CAP_SYS_BOOT) || !capable(CAP_COMPROMISE_KERNEL)) + return -EPERM; + + /* +-- +1.8.1 + + +From f170b22efeffede02664836a24604febd85ca061 Mon Sep 17 00:00:00 2001 +From: Josh Boyer <jwboyer@redhat.com> +Date: Fri, 5 Oct 2012 10:12:48 -0400 +Subject: [PATCH 16/17] MODSIGN: Always enforce module signing in a Secure Boot + environment + +If a machine is booted into a Secure Boot environment, we need to +protect the trust model. This requires that all modules be signed +with a key that is in the kernel's _modsign keyring. The checks for +this are already done via the 'sig_enforce' module parameter. Make +this visible within the kernel and force it to be true. + +Signed-off-by: Josh Boyer <jwboyer@redhat.com> +--- + kernel/cred.c | 8 ++++++++ + kernel/module.c | 4 ++-- + 2 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/kernel/cred.c b/kernel/cred.c +index c3f4e3e..c5554e0 100644 +--- a/kernel/cred.c ++++ b/kernel/cred.c +@@ -565,11 +565,19 @@ void __init cred_init(void) + 0, SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL); + } + ++#ifdef CONFIG_MODULE_SIG ++extern bool sig_enforce; ++#endif ++ + void __init secureboot_enable() + { + pr_info("Secure boot enabled\n"); + cap_lower((&init_cred)->cap_bset, CAP_COMPROMISE_KERNEL); + cap_lower((&init_cred)->cap_permitted, CAP_COMPROMISE_KERNEL); ++#ifdef CONFIG_MODULE_SIG ++ /* Enable module signature enforcing */ ++ sig_enforce = true; ++#endif + } + + /* Dummy Secure Boot enable option to fake out UEFI SB=1 */ +diff --git a/kernel/module.c b/kernel/module.c +index eab0827..93a16dc 100644 +--- a/kernel/module.c ++++ b/kernel/module.c +@@ -109,9 +109,9 @@ struct list_head *kdb_modules = &modules; /* kdb needs the list of modules */ + + #ifdef CONFIG_MODULE_SIG + #ifdef CONFIG_MODULE_SIG_FORCE +-static bool sig_enforce = true; ++bool sig_enforce = true; + #else +-static bool sig_enforce = false; ++bool sig_enforce = false; + + static int param_set_bool_enable_only(const char *val, + const struct kernel_param *kp) +-- +1.8.1 + + +From c44db6a096f11bd19182cb52c70fbd2f3de3dc6a Mon Sep 17 00:00:00 2001 From: Josh Boyer <jwboyer@redhat.com> Date: Fri, 26 Oct 2012 14:02:09 -0400 -Subject: [PATCH 19/20] hibernate: Disable in a Secure Boot environment +Subject: [PATCH 17/17] hibernate: Disable in a Secure Boot environment There is currently no way to verify the resume image when returning from hibernate. This might compromise the secure boot trust model, @@ -1330,16 +1228,24 @@ a Secure Boot environment. Signed-off-by: Josh Boyer <jwboyer@redhat.com> --- - kernel/power/hibernate.c | 14 +++++++++++++- - kernel/power/main.c | 4 +++- + kernel/power/hibernate.c | 15 ++++++++++++++- + kernel/power/main.c | 7 ++++++- kernel/power/user.c | 3 +++ - 3 files changed, 19 insertions(+), 2 deletions(-) + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c -index b26f5f1..f04343b 100644 +index b26f5f1..7f63cb4 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c -@@ -632,6 +632,10 @@ int hibernate(void) +@@ -28,6 +28,7 @@ + #include <linux/syscore_ops.h> + #include <linux/ctype.h> + #include <linux/genhd.h> ++#include <linux/efi.h> + + #include "power.h" + +@@ -632,6 +633,10 @@ int hibernate(void) { int error; @@ -1350,7 +1256,7 @@ index b26f5f1..f04343b 100644 lock_system_sleep(); /* The snapshot device should not be opened while we're running */ if (!atomic_add_unless(&snapshot_device_available, -1, 0)) { -@@ -723,7 +727,7 @@ static int software_resume(void) +@@ -723,7 +728,7 @@ static int software_resume(void) /* * If the user said "noresume".. bail out early. */ @@ -1359,11 +1265,11 @@ index b26f5f1..f04343b 100644 return 0; /* -@@ -889,6 +893,11 @@ static ssize_t disk_show(struct kobject *kobj, struct kobj_attribute *attr, +@@ -889,6 +894,11 @@ static ssize_t disk_show(struct kobject *kobj, struct kobj_attribute *attr, int i; char *start = buf; -+ if (!capable(CAP_COMPROMISE_KERNEL)) { ++ if (efi_enabled(EFI_SECURE_BOOT)) { + buf += sprintf(buf, "[%s]\n", "disabled"); + return buf-start; + } @@ -1371,7 +1277,7 @@ index b26f5f1..f04343b 100644 for (i = HIBERNATION_FIRST; i <= HIBERNATION_MAX; i++) { if (!hibernation_modes[i]) continue; -@@ -923,6 +932,9 @@ static ssize_t disk_store(struct kobject *kobj, struct kobj_attribute *attr, +@@ -923,6 +933,9 @@ static ssize_t disk_store(struct kobject *kobj, struct kobj_attribute *attr, char *p; int mode = HIBERNATION_INVALID; @@ -1382,16 +1288,26 @@ index b26f5f1..f04343b 100644 len = p ? p - buf : n; diff --git a/kernel/power/main.c b/kernel/power/main.c -index f458238..72580c1 100644 +index 1c16f91..4f915fc 100644 --- a/kernel/power/main.c +++ b/kernel/power/main.c -@@ -301,7 +301,9 @@ static ssize_t state_show(struct kobject *kobj, struct kobj_attribute *attr, +@@ -15,6 +15,7 @@ + #include <linux/workqueue.h> + #include <linux/debugfs.h> + #include <linux/seq_file.h> ++#include <linux/efi.h> + + #include "power.h" + +@@ -301,7 +302,11 @@ static ssize_t state_show(struct kobject *kobj, struct kobj_attribute *attr, } #endif #ifdef CONFIG_HIBERNATION - s += sprintf(s, "%s\n", "disk"); -+ if (capable(CAP_COMPROMISE_KERNEL)) { ++ if (!efi_enabled(EFI_SECURE_BOOT)) { + s += sprintf(s, "%s\n", "disk"); ++ } else { ++ s += sprintf(s, "\n"); + } #else if (s != buf) @@ -1411,42 +1327,5 @@ index 4ed81e7..b11a0f4 100644 if (!atomic_add_unless(&snapshot_device_available, -1, 0)) { -- -1.8.0.1 - - -From 81adc779dba0f45f10b5ff307bd55832305f1112 Mon Sep 17 00:00:00 2001 -From: Josh Boyer <jwboyer@redhat.com> -Date: Wed, 12 Dec 2012 11:48:49 -0500 -Subject: [PATCH 20/20] Don't soft lockup on bad EFI signature lists - -If a signature list is read from an UEFI variable and that contains bogus -data, we can go into an infinite loop in efi_parse_signature_list. Notably, -if one of the entries in the list has a signature_size that is larger than -the actual signature size, it will fail the elsize < esize test. Simply -continuing in the loop without modifying the data or size variables just -leads to the same list entry being parsed repeatedly. - -Since the data is bogus, but we can't tell which value is actually -incorrect, we need to stop parsing the list. Just return -EBADMSG instead. - -Signed-off-by: Josh Boyer <jwboyer@redhat.com> ---- - crypto/asymmetric_keys/efi_parser.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/crypto/asymmetric_keys/efi_parser.c b/crypto/asymmetric_keys/efi_parser.c -index 59b859a..a0b8a3a 100644 ---- a/crypto/asymmetric_keys/efi_parser.c -+++ b/crypto/asymmetric_keys/efi_parser.c -@@ -61,7 +61,7 @@ int __init parse_efi_signature_list(const void *data, size_t size, struct key *k - elsize < esize || - elsize % esize != 0) { - pr_devel("- bad size combo @%x\n", offs); -- continue; -+ return -EBADMSG; - } - - if (efi_guidcmp(list.signature_type, efi_cert_x509_guid) != 0) { --- -1.8.0.1 +1.8.1 diff --git a/freed-ora/current/master/linux-2.6-serial-460800.patch b/freed-ora/current/master/serial-460800.patch index 0e68378e7..0e68378e7 100644 --- a/freed-ora/current/master/linux-2.6-serial-460800.patch +++ b/freed-ora/current/master/serial-460800.patch diff --git a/freed-ora/current/master/linux-2.6-silence-acpi-blacklist.patch b/freed-ora/current/master/silence-acpi-blacklist.patch index c5997bb6e..c5997bb6e 100644 --- a/freed-ora/current/master/linux-2.6-silence-acpi-blacklist.patch +++ b/freed-ora/current/master/silence-acpi-blacklist.patch diff --git a/freed-ora/current/master/silence-empty-ipi-mask-warning.patch b/freed-ora/current/master/silence-empty-ipi-mask-warning.patch new file mode 100644 index 000000000..65a637c06 --- /dev/null +++ b/freed-ora/current/master/silence-empty-ipi-mask-warning.patch @@ -0,0 +1,11 @@ +--- linux-3.6.noarch/arch/x86/kernel/apic/ipi.c~ 2013-01-23 10:48:14.716069615 -0500 ++++ linux-3.6.noarch/arch/x86/kernel/apic/ipi.c 2013-01-23 10:48:26.217046545 -0500 +@@ -106,7 +106,7 @@ void default_send_IPI_mask_logical(const + unsigned long mask = cpumask_bits(cpumask)[0]; + unsigned long flags; + +- if (WARN_ONCE(!mask, "empty IPI mask")) ++ if (!mask) + return; + + local_irq_save(flags); diff --git a/freed-ora/current/master/linux-2.6-silence-fbcon-logo.patch b/freed-ora/current/master/silence-fbcon-logo.patch index 45ab73331..45ab73331 100644 --- a/freed-ora/current/master/linux-2.6-silence-fbcon-logo.patch +++ b/freed-ora/current/master/silence-fbcon-logo.patch diff --git a/freed-ora/current/master/linux-2.6-silence-noise.patch b/freed-ora/current/master/silence-noise.patch index 1e4d7c57f..1e4d7c57f 100644 --- a/freed-ora/current/master/linux-2.6-silence-noise.patch +++ b/freed-ora/current/master/silence-noise.patch diff --git a/freed-ora/current/master/sources b/freed-ora/current/master/sources index f2f1cee9e..b6141a416 100644 --- a/freed-ora/current/master/sources +++ b/freed-ora/current/master/sources @@ -1 +1,3 @@ 06bf9601d859531e7378eb43d4ca7dd3 linux-libre-3.7-gnu.tar.xz +f00c85f5db6bcc0ef47d399465fd464f patch-3.7-gnu-3.8-rc6-gnu.xz +47c13c925f34642b05ed4524d62257ec patch-3.8-rc6-git2.xz diff --git a/freed-ora/current/master/linux-2.6-upstream-reverts.patch b/freed-ora/current/master/upstream-reverts.patch index 607602cfc..607602cfc 100644 --- a/freed-ora/current/master/linux-2.6-upstream-reverts.patch +++ b/freed-ora/current/master/upstream-reverts.patch diff --git a/freed-ora/current/master/linux-2.6-v4l-dvb-experimental.patch b/freed-ora/current/master/v4l-dvb-experimental.patch index e69de29bb..e69de29bb 100644 --- a/freed-ora/current/master/linux-2.6-v4l-dvb-experimental.patch +++ b/freed-ora/current/master/v4l-dvb-experimental.patch diff --git a/freed-ora/current/master/linux-2.6-v4l-dvb-fixes.patch b/freed-ora/current/master/v4l-dvb-fixes.patch index e69de29bb..e69de29bb 100644 --- a/freed-ora/current/master/linux-2.6-v4l-dvb-fixes.patch +++ b/freed-ora/current/master/v4l-dvb-fixes.patch diff --git a/freed-ora/current/master/linux-2.6-v4l-dvb-update.patch b/freed-ora/current/master/v4l-dvb-update.patch index e69de29bb..e69de29bb 100644 --- a/freed-ora/current/master/linux-2.6-v4l-dvb-update.patch +++ b/freed-ora/current/master/v4l-dvb-update.patch |