Linux v3.14.1-rc1
This commit is contained in:
parent
58049b4965
commit
f9bb91845a
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,38 @@
|
|||
Bugzilla: N/A
|
||||
Upstream-status: Nak'd, supposedly replacement coming to auto-select
|
||||
|
||||
From 0f3f5c5b4ca2eb1f41947c50bedb9b17aa1a1f80 Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@fedoraproject.org>
|
||||
Date: Mon, 11 Nov 2013 08:39:16 -0500
|
||||
Subject: [PATCH] lib/cpumask: Make CPUMASK_OFFSTACK usable without debug
|
||||
dependency
|
||||
|
||||
When CPUMASK_OFFSTACK was added in 2008, it was dependent upon
|
||||
DEBUG_PER_CPU_MAPS being enabled, or an architecture could select it.
|
||||
The debug dependency adds additional overhead that isn't required for
|
||||
operation of the feature, and we need CPUMASK_OFFSTACK to increase the
|
||||
NR_CPUS value beyond 512 on x86. We drop the current dependency and make
|
||||
sure SMP is set.
|
||||
|
||||
Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
|
||||
---
|
||||
lib/Kconfig | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/Kconfig b/lib/Kconfig
|
||||
index b3c8be0..50b47cd 100644
|
||||
--- a/lib/Kconfig
|
||||
+++ b/lib/Kconfig
|
||||
@@ -342,7 +342,8 @@ config CHECK_SIGNATURE
|
||||
bool
|
||||
|
||||
config CPUMASK_OFFSTACK
|
||||
- bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS
|
||||
+ bool "Force CPU masks off stack"
|
||||
+ depends on SMP
|
||||
help
|
||||
Use dynamic allocation for cpumask_var_t, instead of putting
|
||||
them on the stack. This is a bit more expensive, but avoids
|
||||
--
|
||||
1.8.3.1
|
||||
|
|
@ -1,101 +0,0 @@
|
|||
Bugzilla: 896695
|
||||
Upstream-status: Still pending upstream
|
||||
|
||||
From 3efd689c41080b0d4a9cc263a51f2868e3d5a37b Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 9 Oct 2013 15:03:57 +0200
|
||||
Subject: [PATCH] iwlwifi: don't WARN on bad firmware state
|
||||
|
||||
When we restart firmware is possible and hance firmware is marked as not
|
||||
alive, we can still get calls from mac80211. Don't WARN on in this
|
||||
situation as this triggers automatic bug reports with no valuable
|
||||
information.
|
||||
|
||||
This extend change from:
|
||||
|
||||
commit 8ca95995e64f5d270889badb3e449dca91106a2b
|
||||
Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
Date: Sun Sep 15 11:37:17 2013 +0300
|
||||
|
||||
iwlwifi: don't WARN on host commands sent when firmware is dead
|
||||
|
||||
which remove WARN_ONCE from one place, but those warnings are also
|
||||
triggered from other functions.
|
||||
|
||||
Patch adds also unlikely() statement.
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/iwl-trans.h | 22 +++++++++++-----------
|
||||
1 files changed, 11 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.h b/drivers/net/wireless/iwlwifi/iwl-trans.h
|
||||
index 80b4750..c6bac7c 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-trans.h
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-trans.h
|
||||
@@ -601,7 +601,7 @@ static inline int iwl_trans_send_cmd(struct iwl_trans *trans,
|
||||
{
|
||||
int ret;
|
||||
|
||||
- if (trans->state != IWL_TRANS_FW_ALIVE) {
|
||||
+ if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) {
|
||||
IWL_ERR(trans, "%s bad state = %d", __func__, trans->state);
|
||||
return -EIO;
|
||||
}
|
||||
@@ -640,8 +640,8 @@ static inline void iwl_trans_free_tx_cmd(struct iwl_trans *trans,
|
||||
static inline int iwl_trans_tx(struct iwl_trans *trans, struct sk_buff *skb,
|
||||
struct iwl_device_cmd *dev_cmd, int queue)
|
||||
{
|
||||
- WARN_ONCE(trans->state != IWL_TRANS_FW_ALIVE,
|
||||
- "%s bad state = %d", __func__, trans->state);
|
||||
+ if (unlikely(trans->state != IWL_TRANS_FW_ALIVE))
|
||||
+ IWL_ERR(trans, "%s bad state = %d", __func__, trans->state);
|
||||
|
||||
return trans->ops->tx(trans, skb, dev_cmd, queue);
|
||||
}
|
||||
@@ -649,16 +649,16 @@ static inline int iwl_trans_tx(struct iwl_trans *trans, struct sk_buff *skb,
|
||||
static inline void iwl_trans_reclaim(struct iwl_trans *trans, int queue,
|
||||
int ssn, struct sk_buff_head *skbs)
|
||||
{
|
||||
- WARN_ONCE(trans->state != IWL_TRANS_FW_ALIVE,
|
||||
- "%s bad state = %d", __func__, trans->state);
|
||||
+ if (unlikely(trans->state != IWL_TRANS_FW_ALIVE))
|
||||
+ IWL_ERR(trans, "%s bad state = %d", __func__, trans->state);
|
||||
|
||||
trans->ops->reclaim(trans, queue, ssn, skbs);
|
||||
}
|
||||
|
||||
static inline void iwl_trans_txq_disable(struct iwl_trans *trans, int queue)
|
||||
{
|
||||
- WARN_ONCE(trans->state != IWL_TRANS_FW_ALIVE,
|
||||
- "%s bad state = %d", __func__, trans->state);
|
||||
+ if (unlikely(trans->state != IWL_TRANS_FW_ALIVE))
|
||||
+ IWL_ERR(trans, "%s bad state = %d", __func__, trans->state);
|
||||
|
||||
trans->ops->txq_disable(trans, queue);
|
||||
}
|
||||
@@ -669,8 +669,8 @@ static inline void iwl_trans_txq_enable(struct iwl_trans *trans, int queue,
|
||||
{
|
||||
might_sleep();
|
||||
|
||||
- WARN_ONCE(trans->state != IWL_TRANS_FW_ALIVE,
|
||||
- "%s bad state = %d", __func__, trans->state);
|
||||
+ if (unlikely((trans->state != IWL_TRANS_FW_ALIVE)))
|
||||
+ IWL_ERR(trans, "%s bad state = %d", __func__, trans->state);
|
||||
|
||||
trans->ops->txq_enable(trans, queue, fifo, sta_id, tid,
|
||||
frame_limit, ssn);
|
||||
@@ -685,8 +685,8 @@ static inline void iwl_trans_ac_txq_enable(struct iwl_trans *trans, int queue,
|
||||
|
||||
static inline int iwl_trans_wait_tx_queue_empty(struct iwl_trans *trans)
|
||||
{
|
||||
- WARN_ONCE(trans->state != IWL_TRANS_FW_ALIVE,
|
||||
- "%s bad state = %d", __func__, trans->state);
|
||||
+ if (unlikely(trans->state != IWL_TRANS_FW_ALIVE))
|
||||
+ IWL_ERR(trans, "%s bad state = %d", __func__, trans->state);
|
||||
|
||||
return trans->ops->wait_tx_queue_empty(trans);
|
||||
}
|
||||
--
|
||||
1.7.1
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,71 @@
|
|||
Bugzilla: 1051748
|
||||
Upstream-status: Queued for 3.15
|
||||
|
||||
From b075dd40c95d11c2c8690f6c4d6232fc0d9e7f56 Mon Sep 17 00:00:00 2001
|
||||
From: Lucas De Marchi <lucas.demarchi@intel.com>
|
||||
Date: Tue, 18 Feb 2014 05:19:26 +0000
|
||||
Subject: Bluetooth: allocate static minor for vhci
|
||||
|
||||
Commit bfacbb9 (Bluetooth: Use devname:vhci module alias for virtual HCI
|
||||
driver) added the module alias to hci_vhci module so it's possible to
|
||||
create the /dev/vhci node. However creating an alias without
|
||||
specifying the minor doesn't allow us to create the node ahead,
|
||||
triggerring module auto-load when it's first accessed.
|
||||
|
||||
Starting with depmod from kmod 16 we started to warn if there's a
|
||||
devname alias without specifying the major and minor.
|
||||
|
||||
Let's do the same done for uhid, kvm, fuse and others, specifying a
|
||||
fixed minor. In systems with systemd as the init the following will
|
||||
happen: on early boot systemd will call "kmod static-nodes" to read
|
||||
/lib/modules/$(uname -r)/modules.devname and then create the nodes. When
|
||||
first accessed these "dead" nodes will trigger the module loading.
|
||||
|
||||
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
|
||||
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
---
|
||||
diff --git a/Documentation/devices.txt b/Documentation/devices.txt
|
||||
index 10378cc..04356f5 100644
|
||||
--- a/Documentation/devices.txt
|
||||
+++ b/Documentation/devices.txt
|
||||
@@ -353,6 +353,7 @@ Your cooperation is appreciated.
|
||||
133 = /dev/exttrp External device trap
|
||||
134 = /dev/apm_bios Advanced Power Management BIOS
|
||||
135 = /dev/rtc Real Time Clock
|
||||
+ 137 = /dev/vhci Bluetooth virtual HCI driver
|
||||
139 = /dev/openprom SPARC OpenBoot PROM
|
||||
140 = /dev/relay8 Berkshire Products Octal relay card
|
||||
141 = /dev/relay16 Berkshire Products ISO-16 relay card
|
||||
diff --git a/drivers/bluetooth/hci_vhci.c b/drivers/bluetooth/hci_vhci.c
|
||||
index 1ef6990..add1c6a 100644
|
||||
--- a/drivers/bluetooth/hci_vhci.c
|
||||
+++ b/drivers/bluetooth/hci_vhci.c
|
||||
@@ -359,7 +359,7 @@ static const struct file_operations vhci_fops = {
|
||||
static struct miscdevice vhci_miscdev= {
|
||||
.name = "vhci",
|
||||
.fops = &vhci_fops,
|
||||
- .minor = MISC_DYNAMIC_MINOR,
|
||||
+ .minor = VHCI_MINOR,
|
||||
};
|
||||
|
||||
static int __init vhci_init(void)
|
||||
@@ -385,3 +385,4 @@ MODULE_DESCRIPTION("Bluetooth virtual HCI driver ver " VERSION);
|
||||
MODULE_VERSION(VERSION);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_ALIAS("devname:vhci");
|
||||
+MODULE_ALIAS_MISCDEV(VHCI_MINOR);
|
||||
diff --git a/include/linux/miscdevice.h b/include/linux/miscdevice.h
|
||||
index 3737f72..7bb6148 100644
|
||||
--- a/include/linux/miscdevice.h
|
||||
+++ b/include/linux/miscdevice.h
|
||||
@@ -23,6 +23,7 @@
|
||||
#define TEMP_MINOR 131 /* Temperature Sensor */
|
||||
#define RTC_MINOR 135
|
||||
#define EFI_RTC_MINOR 136 /* EFI Time services */
|
||||
+#define VHCI_MINOR 137
|
||||
#define SUN_OPENPROM_MINOR 139
|
||||
#define DMAPI_MINOR 140 /* DMAPI */
|
||||
#define NVRAM_MINOR 144
|
||||
--
|
||||
cgit v0.9.2
|
|
@ -1,36 +0,0 @@
|
|||
Bugzilla: 1030802
|
||||
Upstream-status: 3.13
|
||||
|
||||
From 9cb80b965eaf7af1369f6e16f48a05fbaaccc021 Mon Sep 17 00:00:00 2001
|
||||
From: Matt Walker <matt.g.d.walker@gmail.com>
|
||||
Date: Thu, 5 Dec 2013 12:39:02 -0800
|
||||
Subject: [PATCH] Input: elantech - add support for newer (August 2013) devices
|
||||
|
||||
Added detection for newer Elantech touchpads, so that kernel doesn't
|
||||
fall-back to default PS/2 driver. Supports touchpads released after
|
||||
~August 2013. Fixes bug:
|
||||
https://lists.launchpad.net/kernel-packages/msg18481.html
|
||||
|
||||
Tested on an Acer Aspire S7-392-6302.
|
||||
|
||||
Signed-off by: Matt Walker <matt.g.d.walker@gmail.com>
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
drivers/input/mouse/elantech.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
|
||||
index 8551dca..597e9b8 100644
|
||||
--- a/drivers/input/mouse/elantech.c
|
||||
+++ b/drivers/input/mouse/elantech.c
|
||||
@@ -1313,6 +1313,7 @@ static int elantech_set_properties(struct elantech_data *etd)
|
||||
break;
|
||||
case 6:
|
||||
case 7:
|
||||
+ case 8:
|
||||
etd->hw_version = 4;
|
||||
break;
|
||||
default:
|
||||
--
|
||||
1.8.3.1
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
Bugzilla: 1042071
|
||||
Upstream-status: 3.13 and sent to stable
|
||||
Delivered-To: jwboyer@gmail.com
|
||||
Received: by 10.76.104.107 with SMTP id gd11csp361298oab;
|
||||
Thu, 12 Dec 2013 12:41:21 -0800 (PST)
|
||||
X-Received: by 10.50.109.132 with SMTP id hs4mr33803866igb.34.1386880880893;
|
||||
Thu, 12 Dec 2013 12:41:20 -0800 (PST)
|
||||
Return-Path: <stable-owner@vger.kernel.org>
|
||||
Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67])
|
||||
by mx.google.com with ESMTP id q8si17378346pav.173.2013.12.12.12.40.57
|
||||
for <multiple recipients>;
|
||||
Thu, 12 Dec 2013 12:41:20 -0800 (PST)
|
||||
Received-SPF: pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67;
|
||||
Authentication-Results: mx.google.com;
|
||||
spf=pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mail=stable-owner@vger.kernel.org;
|
||||
dkim=neutral (bad format) header.i=@gmail.com
|
||||
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
|
||||
id S1752041Ab3LLUhR (ORCPT <rfc822;kumadasu@gmail.com> + 64 others);
|
||||
Thu, 12 Dec 2013 15:37:17 -0500
|
||||
Received: from mail-ea0-f179.google.com ([209.85.215.179]:43785 "EHLO
|
||||
mail-ea0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
|
||||
with ESMTP id S1751761Ab3LLUhN (ORCPT
|
||||
<rfc822;stable@vger.kernel.org>); Thu, 12 Dec 2013 15:37:13 -0500
|
||||
Received: by mail-ea0-f179.google.com with SMTP id r15so485140ead.24
|
||||
for <multiple recipients>; Thu, 12 Dec 2013 12:37:11 -0800 (PST)
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=gmail.com; s=20120113;
|
||||
h=sender:from:to:cc:subject:date:message-id;
|
||||
bh=3nLdta59rbActmGe9iq6aMqjNBfzfF7lqy0gb7EeI0I=;
|
||||
b=fWKHZKszZQjXAVDzYAlwX8s4+UNEomYiCAX0zvDzW7A5Yiy28MUt0QbNu6288Pu+Qs
|
||||
NJ38SpDcPLWzGknYOLggLa21nXsv4tX9vp4FFEY4i3H5iCVpXbvxIc+n9ZVOzWY2wkxK
|
||||
HR1Xf24kJ9FPuV/LoIyu5RlHZUm95BoAe7TxRZWlkcxQ0vEOSAyZQwH4EIj6SS7fXI1d
|
||||
PoqZKm7100ib0/wm6I49cF2b0EXRTSOYrgZneyniPVGpfTkpN2atNcEgdLSvAWQKEI+p
|
||||
79Dt0/BJd2CIuqgUbZBlA8pH6a119FtfrVqxVWJAmVvsv9lpkMIjJrFTj9yqpUFKeeYB
|
||||
XTeA==
|
||||
X-Received: by 10.14.6.136 with SMTP id 8mr9978716een.11.1386880631657;
|
||||
Thu, 12 Dec 2013 12:37:11 -0800 (PST)
|
||||
Received: from playground.com (net-2-35-202-54.cust.dsl.vodafone.it. [2.35.202.54])
|
||||
by mx.google.com with ESMTPSA id o47sm70323739eem.21.2013.12.12.12.37.00
|
||||
for <multiple recipients>
|
||||
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
|
||||
Thu, 12 Dec 2013 12:37:01 -0800 (PST)
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
To: linux-kernel@vger.kernel.org
|
||||
Cc: gleb@redhat.com, kvm@vger.kernel.org, pmatouse@redhat.com,
|
||||
Andy Honig <ahonig@google.com>, stable@vger.kernel.org
|
||||
Subject: [PATCH] KVM: Improve create VCPU parameter
|
||||
Date: Thu, 12 Dec 2013 21:36:51 +0100
|
||||
Message-Id: <1386880614-23300-1-git-send-email-pbonzini@redhat.com>
|
||||
X-Mailer: git-send-email 1.8.3.1
|
||||
Sender: stable-owner@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <stable.vger.kernel.org>
|
||||
X-Mailing-List: stable@vger.kernel.org
|
||||
|
||||
From: Andy Honig <ahonig@google.com>
|
||||
|
||||
In multiple functions the vcpu_id is used as an offset into a bitfield. Ag
|
||||
malicious user could specify a vcpu_id greater than 255 in order to set or
|
||||
clear bits in kernel memory. This could be used to elevate priveges in the
|
||||
kernel. This patch verifies that the vcpu_id provided is less than 255.
|
||||
The api documentation already specifies that the vcpu_id must be less than
|
||||
max_vcpus, but this is currently not checked.
|
||||
|
||||
Reported-by: Andrew Honig <ahonig@google.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Andrew Honig <ahonig@google.com>
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
---
|
||||
virt/kvm/kvm_main.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
|
||||
index a0aa84b5941a..4f588bc94186 100644
|
||||
--- a/virt/kvm/kvm_main.c
|
||||
+++ b/virt/kvm/kvm_main.c
|
||||
@@ -1898,6 +1898,9 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id)
|
||||
int r;
|
||||
struct kvm_vcpu *vcpu, *v;
|
||||
|
||||
+ if (id >= KVM_MAX_VCPUS)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
vcpu = kvm_arch_vcpu_create(kvm, id);
|
||||
if (IS_ERR(vcpu))
|
||||
return PTR_ERR(vcpu);
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe stable" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
|
@ -0,0 +1,38 @@
|
|||
Bugzilla: 1085016
|
||||
Upstream-status: Queued for 3.15
|
||||
|
||||
From 5678de3f15010b9022ee45673f33bcfc71d47b60 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Fri, 28 Mar 2014 20:41:50 +0100
|
||||
Subject: KVM: ioapic: fix assignment of ioapic->rtc_status.pending_eoi
|
||||
(CVE-2014-0155)
|
||||
|
||||
QE reported that they got the BUG_ON in ioapic_service to trigger.
|
||||
I cannot reproduce it, but there are two reasons why this could happen.
|
||||
|
||||
The less likely but also easiest one, is when kvm_irq_delivery_to_apic
|
||||
does not deliver to any APIC and returns -1.
|
||||
|
||||
Because irqe.shorthand == 0, the kvm_for_each_vcpu loop in that
|
||||
function is never reached. However, you can target the similar loop in
|
||||
kvm_irq_delivery_to_apic_fast; just program a zero logical destination
|
||||
address into the IOAPIC, or an out-of-range physical destination address.
|
||||
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
|
||||
diff --git a/virt/kvm/ioapic.c b/virt/kvm/ioapic.c
|
||||
index d4b6015..d98d107 100644
|
||||
--- a/virt/kvm/ioapic.c
|
||||
+++ b/virt/kvm/ioapic.c
|
||||
@@ -356,7 +356,7 @@ static int ioapic_service(struct kvm_ioapic *ioapic, int irq, bool line_status)
|
||||
BUG_ON(ioapic->rtc_status.pending_eoi != 0);
|
||||
ret = kvm_irq_delivery_to_apic(ioapic->kvm, NULL, &irqe,
|
||||
ioapic->rtc_status.dest_map);
|
||||
- ioapic->rtc_status.pending_eoi = ret;
|
||||
+ ioapic->rtc_status.pending_eoi = (ret < 0 ? 0 : ret);
|
||||
} else
|
||||
ret = kvm_irq_delivery_to_apic(ioapic->kvm, NULL, &irqe, NULL);
|
||||
|
||||
--
|
||||
cgit v0.10.1
|
||||
|
|
@ -1,247 +0,0 @@
|
|||
Bugzilla: 1042090
|
||||
Upstream-status: 3.13 and sent for stable
|
||||
Delivered-To: jwboyer@gmail.com
|
||||
Received: by 10.76.104.107 with SMTP id gd11csp361293oab;
|
||||
Thu, 12 Dec 2013 12:41:12 -0800 (PST)
|
||||
X-Received: by 10.68.244.2 with SMTP id xc2mr15600217pbc.58.1386880872483;
|
||||
Thu, 12 Dec 2013 12:41:12 -0800 (PST)
|
||||
Return-Path: <stable-owner@vger.kernel.org>
|
||||
Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67])
|
||||
by mx.google.com with ESMTP id 5si8126292pbj.245.2013.12.12.12.40.49
|
||||
for <multiple recipients>;
|
||||
Thu, 12 Dec 2013 12:41:12 -0800 (PST)
|
||||
Received-SPF: pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67;
|
||||
Authentication-Results: mx.google.com;
|
||||
spf=pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mail=stable-owner@vger.kernel.org;
|
||||
dkim=neutral (bad format) header.i=@gmail.com
|
||||
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
|
||||
id S1751901Ab3LLUiK (ORCPT <rfc822;kumadasu@gmail.com> + 64 others);
|
||||
Thu, 12 Dec 2013 15:38:10 -0500
|
||||
Received: from mail-ea0-f169.google.com ([209.85.215.169]:43997 "EHLO
|
||||
mail-ea0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
|
||||
with ESMTP id S1751940Ab3LLUhR (ORCPT
|
||||
<rfc822;stable@vger.kernel.org>); Thu, 12 Dec 2013 15:37:17 -0500
|
||||
Received: by mail-ea0-f169.google.com with SMTP id l9so411843eaj.0
|
||||
for <multiple recipients>; Thu, 12 Dec 2013 12:37:15 -0800 (PST)
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=gmail.com; s=20120113;
|
||||
h=sender:from:to:cc:subject:date:message-id;
|
||||
bh=2MLmYgVGbv9FpnyP90yrPKk21SJoXFj93yQcaRn4G8Y=;
|
||||
b=ouBadI22VTf1UuezbySC80FWJYdpF/8Ks6I8f5rq1/7SDQPTpScjOYjZX0UtIf1ihj
|
||||
aeQ7IHqpmIYGKWadUbH2l88ZP1+rP7T+f2dZQeCb3HLNsPum0Ix8dzm/koeDnuS3dx75
|
||||
50E9ZcFXO13Hx24tM8p0SAuYZ1DvbCNnPRK0yxHOmCtCWe+mQLBIgig1rg8TzSAazWm7
|
||||
8LhpztDlIzNyZcfzKQvtdqTOBdnhadx5x39fxOe54Yw4JbppDa7R+BY5Jz6GOd3U0Op1
|
||||
Nf97rU0pe/jeyOtjF0LVs/d9iyPPeRoSE+VAr91iT8qj9S2PFEN1QxxWL8sdvsDPZK6B
|
||||
ZCmw==
|
||||
X-Received: by 10.14.182.199 with SMTP id o47mr10030582eem.7.1386880635352;
|
||||
Thu, 12 Dec 2013 12:37:15 -0800 (PST)
|
||||
Received: from playground.com (net-2-35-202-54.cust.dsl.vodafone.it. [2.35.202.54])
|
||||
by mx.google.com with ESMTPSA id o47sm70323739eem.21.2013.12.12.12.37.13
|
||||
for <multiple recipients>
|
||||
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
|
||||
Thu, 12 Dec 2013 12:37:14 -0800 (PST)
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
To: linux-kernel@vger.kernel.org
|
||||
Cc: gleb@redhat.com, kvm@vger.kernel.org, pmatouse@redhat.com,
|
||||
Andy Honig <ahonig@google.com>, stable@vger.kernel.org
|
||||
Subject: [PATCH] KVM: x86: Convert vapic synchronization to _cached functions (CVE-2013-6368)
|
||||
Date: Thu, 12 Dec 2013 21:36:53 +0100
|
||||
Message-Id: <1386880614-23300-3-git-send-email-pbonzini@redhat.com>
|
||||
X-Mailer: git-send-email 1.8.3.1
|
||||
Sender: stable-owner@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <stable.vger.kernel.org>
|
||||
X-Mailing-List: stable@vger.kernel.org
|
||||
|
||||
From: Andy Honig <ahonig@google.com>
|
||||
|
||||
In kvm_lapic_sync_from_vapic and kvm_lapic_sync_to_vapic there is the
|
||||
potential to corrupt kernel memory if userspace provides an address that
|
||||
is at the end of a page. This patches concerts those functions to use
|
||||
kvm_write_guest_cached and kvm_read_guest_cached. It also checks the
|
||||
vapic_address specified by userspace during ioctl processing and returns
|
||||
an error to userspace if the address is not a valid GPA.
|
||||
|
||||
This is generally not guest triggerable, because the required write is
|
||||
done by firmware that runs before the guest. Also, it only affects AMD
|
||||
processors and oldish Intel that do not have the FlexPriority feature
|
||||
(unless you disable FlexPriority, of course; then newer processors are
|
||||
also affected).
|
||||
|
||||
Fixes: b93463aa59d6 ('KVM: Accelerated apic support')
|
||||
|
||||
Reported-by: Andrew Honig <ahonig@google.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Andrew Honig <ahonig@google.com>
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
---
|
||||
arch/x86/kvm/lapic.c | 27 +++++++++++++++------------
|
||||
arch/x86/kvm/lapic.h | 4 ++--
|
||||
arch/x86/kvm/x86.c | 40 +---------------------------------------
|
||||
3 files changed, 18 insertions(+), 53 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
|
||||
index 89b52ec7d09c..b8bec45c1610 100644
|
||||
--- a/arch/x86/kvm/lapic.c
|
||||
+++ b/arch/x86/kvm/lapic.c
|
||||
@@ -1692,7 +1692,6 @@ static void apic_sync_pv_eoi_from_guest(struct kvm_vcpu *vcpu,
|
||||
void kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
u32 data;
|
||||
- void *vapic;
|
||||
|
||||
if (test_bit(KVM_APIC_PV_EOI_PENDING, &vcpu->arch.apic_attention))
|
||||
apic_sync_pv_eoi_from_guest(vcpu, vcpu->arch.apic);
|
||||
@@ -1700,9 +1699,8 @@ void kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu)
|
||||
if (!test_bit(KVM_APIC_CHECK_VAPIC, &vcpu->arch.apic_attention))
|
||||
return;
|
||||
|
||||
- vapic = kmap_atomic(vcpu->arch.apic->vapic_page);
|
||||
- data = *(u32 *)(vapic + offset_in_page(vcpu->arch.apic->vapic_addr));
|
||||
- kunmap_atomic(vapic);
|
||||
+ kvm_read_guest_cached(vcpu->kvm, &vcpu->arch.apic->vapic_cache, &data,
|
||||
+ sizeof(u32));
|
||||
|
||||
apic_set_tpr(vcpu->arch.apic, data & 0xff);
|
||||
}
|
||||
@@ -1738,7 +1736,6 @@ void kvm_lapic_sync_to_vapic(struct kvm_vcpu *vcpu)
|
||||
u32 data, tpr;
|
||||
int max_irr, max_isr;
|
||||
struct kvm_lapic *apic = vcpu->arch.apic;
|
||||
- void *vapic;
|
||||
|
||||
apic_sync_pv_eoi_to_guest(vcpu, apic);
|
||||
|
||||
@@ -1754,18 +1751,24 @@ void kvm_lapic_sync_to_vapic(struct kvm_vcpu *vcpu)
|
||||
max_isr = 0;
|
||||
data = (tpr & 0xff) | ((max_isr & 0xf0) << 8) | (max_irr << 24);
|
||||
|
||||
- vapic = kmap_atomic(vcpu->arch.apic->vapic_page);
|
||||
- *(u32 *)(vapic + offset_in_page(vcpu->arch.apic->vapic_addr)) = data;
|
||||
- kunmap_atomic(vapic);
|
||||
+ kvm_write_guest_cached(vcpu->kvm, &vcpu->arch.apic->vapic_cache, &data,
|
||||
+ sizeof(u32));
|
||||
}
|
||||
|
||||
-void kvm_lapic_set_vapic_addr(struct kvm_vcpu *vcpu, gpa_t vapic_addr)
|
||||
+int kvm_lapic_set_vapic_addr(struct kvm_vcpu *vcpu, gpa_t vapic_addr)
|
||||
{
|
||||
- vcpu->arch.apic->vapic_addr = vapic_addr;
|
||||
- if (vapic_addr)
|
||||
+ if (vapic_addr) {
|
||||
+ if (kvm_gfn_to_hva_cache_init(vcpu->kvm,
|
||||
+ &vcpu->arch.apic->vapic_cache,
|
||||
+ vapic_addr, sizeof(u32)))
|
||||
+ return -EINVAL;
|
||||
__set_bit(KVM_APIC_CHECK_VAPIC, &vcpu->arch.apic_attention);
|
||||
- else
|
||||
+ } else {
|
||||
__clear_bit(KVM_APIC_CHECK_VAPIC, &vcpu->arch.apic_attention);
|
||||
+ }
|
||||
+
|
||||
+ vcpu->arch.apic->vapic_addr = vapic_addr;
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
int kvm_x2apic_msr_write(struct kvm_vcpu *vcpu, u32 msr, u64 data)
|
||||
diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h
|
||||
index c730ac9fe801..c8b0d0d2da5c 100644
|
||||
--- a/arch/x86/kvm/lapic.h
|
||||
+++ b/arch/x86/kvm/lapic.h
|
||||
@@ -34,7 +34,7 @@ struct kvm_lapic {
|
||||
*/
|
||||
void *regs;
|
||||
gpa_t vapic_addr;
|
||||
- struct page *vapic_page;
|
||||
+ struct gfn_to_hva_cache vapic_cache;
|
||||
unsigned long pending_events;
|
||||
unsigned int sipi_vector;
|
||||
};
|
||||
@@ -76,7 +76,7 @@ void kvm_set_lapic_tscdeadline_msr(struct kvm_vcpu *vcpu, u64 data);
|
||||
void kvm_apic_write_nodecode(struct kvm_vcpu *vcpu, u32 offset);
|
||||
void kvm_apic_set_eoi_accelerated(struct kvm_vcpu *vcpu, int vector);
|
||||
|
||||
-void kvm_lapic_set_vapic_addr(struct kvm_vcpu *vcpu, gpa_t vapic_addr);
|
||||
+int kvm_lapic_set_vapic_addr(struct kvm_vcpu *vcpu, gpa_t vapic_addr);
|
||||
void kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu);
|
||||
void kvm_lapic_sync_to_vapic(struct kvm_vcpu *vcpu);
|
||||
|
||||
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
|
||||
index 21ef1ba184ae..5d004da1e35d 100644
|
||||
--- a/arch/x86/kvm/x86.c
|
||||
+++ b/arch/x86/kvm/x86.c
|
||||
@@ -3214,8 +3214,7 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
|
||||
r = -EFAULT;
|
||||
if (copy_from_user(&va, argp, sizeof va))
|
||||
goto out;
|
||||
- r = 0;
|
||||
- kvm_lapic_set_vapic_addr(vcpu, va.vapic_addr);
|
||||
+ r = kvm_lapic_set_vapic_addr(vcpu, va.vapic_addr);
|
||||
break;
|
||||
}
|
||||
case KVM_X86_SETUP_MCE: {
|
||||
@@ -5739,36 +5738,6 @@ static void post_kvm_run_save(struct kvm_vcpu *vcpu)
|
||||
!kvm_event_needs_reinjection(vcpu);
|
||||
}
|
||||
|
||||
-static int vapic_enter(struct kvm_vcpu *vcpu)
|
||||
-{
|
||||
- struct kvm_lapic *apic = vcpu->arch.apic;
|
||||
- struct page *page;
|
||||
-
|
||||
- if (!apic || !apic->vapic_addr)
|
||||
- return 0;
|
||||
-
|
||||
- page = gfn_to_page(vcpu->kvm, apic->vapic_addr >> PAGE_SHIFT);
|
||||
- if (is_error_page(page))
|
||||
- return -EFAULT;
|
||||
-
|
||||
- vcpu->arch.apic->vapic_page = page;
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static void vapic_exit(struct kvm_vcpu *vcpu)
|
||||
-{
|
||||
- struct kvm_lapic *apic = vcpu->arch.apic;
|
||||
- int idx;
|
||||
-
|
||||
- if (!apic || !apic->vapic_addr)
|
||||
- return;
|
||||
-
|
||||
- idx = srcu_read_lock(&vcpu->kvm->srcu);
|
||||
- kvm_release_page_dirty(apic->vapic_page);
|
||||
- mark_page_dirty(vcpu->kvm, apic->vapic_addr >> PAGE_SHIFT);
|
||||
- srcu_read_unlock(&vcpu->kvm->srcu, idx);
|
||||
-}
|
||||
-
|
||||
static void update_cr8_intercept(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
int max_irr, tpr;
|
||||
@@ -6069,11 +6038,6 @@ static int __vcpu_run(struct kvm_vcpu *vcpu)
|
||||
struct kvm *kvm = vcpu->kvm;
|
||||
|
||||
vcpu->srcu_idx = srcu_read_lock(&kvm->srcu);
|
||||
- r = vapic_enter(vcpu);
|
||||
- if (r) {
|
||||
- srcu_read_unlock(&kvm->srcu, vcpu->srcu_idx);
|
||||
- return r;
|
||||
- }
|
||||
|
||||
r = 1;
|
||||
while (r > 0) {
|
||||
@@ -6132,8 +6096,6 @@ static int __vcpu_run(struct kvm_vcpu *vcpu)
|
||||
|
||||
srcu_read_unlock(&kvm->srcu, vcpu->srcu_idx);
|
||||
|
||||
- vapic_exit(vcpu);
|
||||
-
|
||||
return r;
|
||||
}
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe stable" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
|
@ -1,102 +0,0 @@
|
|||
Bugzilla: 1042081
|
||||
Upstream-status: 3.13 and sent for stable
|
||||
Delivered-To: jwboyer@gmail.com
|
||||
Received: by 10.76.104.107 with SMTP id gd11csp361402oab;
|
||||
Thu, 12 Dec 2013 12:43:43 -0800 (PST)
|
||||
X-Received: by 10.68.241.134 with SMTP id wi6mr15423072pbc.44.1386881023599;
|
||||
Thu, 12 Dec 2013 12:43:43 -0800 (PST)
|
||||
Return-Path: <linux-kernel-owner@vger.kernel.org>
|
||||
Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67])
|
||||
by mx.google.com with ESMTP id w3si17375457pbh.89.2013.12.12.12.43.07
|
||||
for <multiple recipients>;
|
||||
Thu, 12 Dec 2013 12:43:43 -0800 (PST)
|
||||
Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67;
|
||||
Authentication-Results: mx.google.com;
|
||||
spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mail=linux-kernel-owner@vger.kernel.org;
|
||||
dkim=neutral (bad format) header.i=@gmail.com
|
||||
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
|
||||
id S1752145Ab3LLUiu (ORCPT <rfc822;multinymous@gmail.com>
|
||||
+ 99 others); Thu, 12 Dec 2013 15:38:50 -0500
|
||||
Received: from mail-ee0-f45.google.com ([74.125.83.45]:47138 "EHLO
|
||||
mail-ee0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
|
||||
with ESMTP id S1751902Ab3LLUhP (ORCPT
|
||||
<rfc822;linux-kernel@vger.kernel.org>);
|
||||
Thu, 12 Dec 2013 15:37:15 -0500
|
||||
Received: by mail-ee0-f45.google.com with SMTP id d49so478739eek.32
|
||||
for <multiple recipients>; Thu, 12 Dec 2013 12:37:13 -0800 (PST)
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=gmail.com; s=20120113;
|
||||
h=sender:from:to:cc:subject:date:message-id;
|
||||
bh=Fa9qXXe9oER+jgB6WXA5v2LyR8O2Vaag7ZsOsv67MLg=;
|
||||
b=WbBUzKN8o3OzB75st3w60z/rVczWaaxrvWc2URlwJwZ0lgqObvbXvAb3ophFJxsr/O
|
||||
P3rEj33CGt5vFAmZWsrST8I4pVb7IPZYqmPuBklMhDmvegy2um2xEDCyIuI0oybwgple
|
||||
n1dYPBTNqBhiiLgIUeKgEf88yU5dsAgKOZSTnkMYhDSy9pnGxRda4WtErJ+SHjvcMaX3
|
||||
t2Vt97egJ2n+e+2BvnpS8xZ8biqp6/l3EzvdsL4W849fUUshAKva4Npu0T/D4E3JIp2O
|
||||
3uY+geb/txJL2rOCacT3RljUb3+zAy2zhqGSjKR3AHePFNIX9RxfMi/vlPmTjO0vfmCP
|
||||
H86Q==
|
||||
X-Received: by 10.14.2.73 with SMTP id 49mr10139590eee.15.1386880633625;
|
||||
Thu, 12 Dec 2013 12:37:13 -0800 (PST)
|
||||
Received: from playground.com (net-2-35-202-54.cust.dsl.vodafone.it. [2.35.202.54])
|
||||
by mx.google.com with ESMTPSA id o47sm70323739eem.21.2013.12.12.12.37.11
|
||||
for <multiple recipients>
|
||||
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
|
||||
Thu, 12 Dec 2013 12:37:12 -0800 (PST)
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
To: linux-kernel@vger.kernel.org
|
||||
Cc: gleb@redhat.com, kvm@vger.kernel.org, pmatouse@redhat.com,
|
||||
Andy Honig <ahonig@google.com>, stable@vger.kernel.org
|
||||
Subject: [PATCH] KVM: x86: Fix potential divide by 0 in lapic (CVE-2013-6367)
|
||||
Date: Thu, 12 Dec 2013 21:36:52 +0100
|
||||
Message-Id: <1386880614-23300-2-git-send-email-pbonzini@redhat.com>
|
||||
X-Mailer: git-send-email 1.8.3.1
|
||||
Sender: linux-kernel-owner@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <linux-kernel.vger.kernel.org>
|
||||
X-Mailing-List: linux-kernel@vger.kernel.org
|
||||
|
||||
From: Andy Honig <ahonig@google.com>
|
||||
|
||||
Under guest controllable circumstances apic_get_tmcct will execute a
|
||||
divide by zero and cause a crash. If the guest cpuid support
|
||||
tsc deadline timers and performs the following sequence of requests
|
||||
the host will crash.
|
||||
- Set the mode to periodic
|
||||
- Set the TMICT to 0
|
||||
- Set the mode bits to 11 (neither periodic, nor one shot, nor tsc deadline)
|
||||
- Set the TMICT to non-zero.
|
||||
Then the lapic_timer.period will be 0, but the TMICT will not be. If the
|
||||
guest then reads from the TMCCT then the host will perform a divide by 0.
|
||||
|
||||
This patch ensures that if the lapic_timer.period is 0, then the division
|
||||
does not occur.
|
||||
|
||||
Reported-by: Andrew Honig <ahonig@google.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Andrew Honig <ahonig@google.com>
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
---
|
||||
arch/x86/kvm/lapic.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
|
||||
index 5439117d5c4c..89b52ec7d09c 100644
|
||||
--- a/arch/x86/kvm/lapic.c
|
||||
+++ b/arch/x86/kvm/lapic.c
|
||||
@@ -841,7 +841,8 @@ static u32 apic_get_tmcct(struct kvm_lapic *apic)
|
||||
ASSERT(apic != NULL);
|
||||
|
||||
/* if initial count is 0, current count should also be 0 */
|
||||
- if (kvm_apic_get_reg(apic, APIC_TMICT) == 0)
|
||||
+ if (kvm_apic_get_reg(apic, APIC_TMICT) == 0 ||
|
||||
+ apic->lapic_timer.period == 0)
|
||||
return 0;
|
||||
|
||||
remaining = hrtimer_get_remaining(&apic->lapic_timer.timer);
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
||||
Please read the FAQ at http://www.tux.org/lkml/
|
|
@ -1,109 +0,0 @@
|
|||
Bugzilla: 1042099
|
||||
Upstream-status: 3.13 and sent for stable
|
||||
Delivered-To: jwboyer@gmail.com
|
||||
Received: by 10.76.104.107 with SMTP id gd11csp361370oab;
|
||||
Thu, 12 Dec 2013 12:42:56 -0800 (PST)
|
||||
X-Received: by 10.43.172.4 with SMTP id nw4mr8453091icc.25.1386880976232;
|
||||
Thu, 12 Dec 2013 12:42:56 -0800 (PST)
|
||||
Return-Path: <stable-owner@vger.kernel.org>
|
||||
Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67])
|
||||
by mx.google.com with ESMTP id 2si15667240pax.109.2013.12.12.12.42.31
|
||||
for <multiple recipients>;
|
||||
Thu, 12 Dec 2013 12:42:56 -0800 (PST)
|
||||
Received-SPF: pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67;
|
||||
Authentication-Results: mx.google.com;
|
||||
spf=pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mail=stable-owner@vger.kernel.org;
|
||||
dkim=neutral (bad format) header.i=@gmail.com
|
||||
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
|
||||
id S1751853Ab3LLUiJ (ORCPT <rfc822;kumadasu@gmail.com> + 64 others);
|
||||
Thu, 12 Dec 2013 15:38:09 -0500
|
||||
Received: from mail-ee0-f54.google.com ([74.125.83.54]:48290 "EHLO
|
||||
mail-ee0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
|
||||
with ESMTP id S1751884Ab3LLUhS (ORCPT
|
||||
<rfc822;stable@vger.kernel.org>); Thu, 12 Dec 2013 15:37:18 -0500
|
||||
Received: by mail-ee0-f54.google.com with SMTP id e51so406857eek.13
|
||||
for <multiple recipients>; Thu, 12 Dec 2013 12:37:17 -0800 (PST)
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=gmail.com; s=20120113;
|
||||
h=sender:from:to:cc:subject:date:message-id;
|
||||
bh=VG00enyRpNYeJLwAwqWOGuy3mCBmvpmEBgLPB1IiKNo=;
|
||||
b=p0BlraPBMTIxTXGUuJyYTYRxuMKATenNpVX01fyzNpSYZsMruyMU/sJ8gdc2991eao
|
||||
ZU+66Xlnbd+AyQiuq4P9sMv6Gvax6MvJg04SMZWnLWoZGonmIIwSPch1UKLSJzRN7K+N
|
||||
+Ot3jLtNBYBoREljPkbscbMVOJ2y+S7N61oOZ7IHZNyXVFWDlW8aunduSgc3cytBEhkx
|
||||
UMUUbHVLo+XrXtuggFrmn8oUfJ1hiHQSpOyx8bi0ztxlEjL4DEFpJsKbjRe4sGRgeUy6
|
||||
dRk+7dEcILKBTRVvXaJSriXG5bhZTbcZ5gZab27Ilm1H8Va5Z6R+9C1AwX2x5CQA7Mb1
|
||||
Edug==
|
||||
X-Received: by 10.14.107.3 with SMTP id n3mr9951281eeg.67.1386880636981;
|
||||
Thu, 12 Dec 2013 12:37:16 -0800 (PST)
|
||||
Received: from playground.com (net-2-35-202-54.cust.dsl.vodafone.it. [2.35.202.54])
|
||||
by mx.google.com with ESMTPSA id o47sm70323739eem.21.2013.12.12.12.37.15
|
||||
for <multiple recipients>
|
||||
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
|
||||
Thu, 12 Dec 2013 12:37:16 -0800 (PST)
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
To: linux-kernel@vger.kernel.org
|
||||
Cc: gleb@redhat.com, kvm@vger.kernel.org, pmatouse@redhat.com,
|
||||
stable@vger.kernel.org
|
||||
Subject: [PATCH] KVM: x86: fix guest-initiated crash with x2apic (CVE-2013-6376)
|
||||
Date: Thu, 12 Dec 2013 21:36:54 +0100
|
||||
Message-Id: <1386880614-23300-4-git-send-email-pbonzini@redhat.com>
|
||||
X-Mailer: git-send-email 1.8.3.1
|
||||
Sender: stable-owner@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <stable.vger.kernel.org>
|
||||
X-Mailing-List: stable@vger.kernel.org
|
||||
|
||||
From: Gleb Natapov <gleb@redhat.com>
|
||||
|
||||
A guest can cause a BUG_ON() leading to a host kernel crash.
|
||||
When the guest writes to the ICR to request an IPI, while in x2apic
|
||||
mode the following things happen, the destination is read from
|
||||
ICR2, which is a register that the guest can control.
|
||||
|
||||
kvm_irq_delivery_to_apic_fast uses the high 16 bits of ICR2 as the
|
||||
cluster id. A BUG_ON is triggered, which is a protection against
|
||||
accessing map->logical_map with an out-of-bounds access and manages
|
||||
to avoid that anything really unsafe occurs.
|
||||
|
||||
The logic in the code is correct from real HW point of view. The problem
|
||||
is that KVM supports only one cluster with ID 0 in clustered mode, but
|
||||
the code that has the bug does not take this into account.
|
||||
|
||||
Reported-by: Lars Bull <larsbull@google.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Gleb Natapov <gleb@redhat.com>
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
---
|
||||
arch/x86/kvm/lapic.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
|
||||
index b8bec45c1610..801dc3fd66e1 100644
|
||||
--- a/arch/x86/kvm/lapic.c
|
||||
+++ b/arch/x86/kvm/lapic.c
|
||||
@@ -143,6 +143,8 @@ static inline int kvm_apic_id(struct kvm_lapic *apic)
|
||||
return (kvm_apic_get_reg(apic, APIC_ID) >> 24) & 0xff;
|
||||
}
|
||||
|
||||
+#define KMV_X2APIC_CID_BITS 0
|
||||
+
|
||||
static void recalculate_apic_map(struct kvm *kvm)
|
||||
{
|
||||
struct kvm_apic_map *new, *old = NULL;
|
||||
@@ -180,7 +182,8 @@ static void recalculate_apic_map(struct kvm *kvm)
|
||||
if (apic_x2apic_mode(apic)) {
|
||||
new->ldr_bits = 32;
|
||||
new->cid_shift = 16;
|
||||
- new->cid_mask = new->lid_mask = 0xffff;
|
||||
+ new->cid_mask = (1 << KMV_X2APIC_CID_BITS) - 1;
|
||||
+ new->lid_mask = 0xffff;
|
||||
} else if (kvm_apic_sw_enabled(apic) &&
|
||||
!new->cid_mask /* flat mode */ &&
|
||||
kvm_apic_get_reg(apic, APIC_DFR) == APIC_DFR_CLUSTER) {
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe stable" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
|
@ -0,0 +1,44 @@
|
|||
Bugzilla: 917708
|
||||
Upstream-status: Fedora mustard
|
||||
|
||||
From e3da68be55914bfeedb8866f191cc0958579611d Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@fedoraproject.org>
|
||||
Date: Wed, 13 Nov 2013 10:21:18 -0500
|
||||
Subject: [PATCH] Revert "userns: Allow unprivileged users to create user
|
||||
namespaces."
|
||||
|
||||
This reverts commit 5eaf563e53294d6696e651466697eb9d491f3946.
|
||||
|
||||
Conflicts:
|
||||
kernel/fork.c
|
||||
---
|
||||
kernel/fork.c | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/kernel/fork.c b/kernel/fork.c
|
||||
index f6d11fc..e04c9a7 100644
|
||||
--- a/kernel/fork.c
|
||||
+++ b/kernel/fork.c
|
||||
@@ -1573,6 +1573,19 @@ long do_fork(unsigned long clone_flags,
|
||||
long nr;
|
||||
|
||||
/*
|
||||
+ * Do some preliminary argument and permissions checking before we
|
||||
+ * actually start allocating stuff
|
||||
+ */
|
||||
+ if (clone_flags & CLONE_NEWUSER) {
|
||||
+ /* hopefully this check will go away when userns support is
|
||||
+ * complete
|
||||
+ */
|
||||
+ if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SETUID) ||
|
||||
+ !capable(CAP_SETGID))
|
||||
+ return -EPERM;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
* Determine whether and which event to report to ptracer. When
|
||||
* called from kernel_thread or CLONE_UNTRACED is explicitly
|
||||
* requested, no event is reported; otherwise, report if the event
|
||||
--
|
||||
1.8.3.1
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
|
||||
index 3ed80b2..17fc718 100644
|
||||
--- a/drivers/acpi/sleep.c
|
||||
+++ b/drivers/acpi/sleep.c
|
||||
@@ -390,6 +390,14 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
|
||||
},
|
||||
{
|
||||
.callback = init_nvs_nosave,
|
||||
+ .ident = "Sony Vaio VGN-FW21E",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW21E"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .callback = init_nvs_nosave,
|
||||
.ident = "Sony Vaio VGN-SR11M",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
|
||||
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
|
||||
index 0e46fae..6d9a3ab 100644
|
||||
--- a/drivers/acpi/sleep.c
|
||||
+++ b/drivers/acpi/sleep.c
|
||||
@@ -398,6 +398,14 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
|
||||
},
|
||||
{
|
||||
.callback = init_nvs_nosave,
|
||||
+ .ident = "Sony Vaio VPCEB17FX",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB17FX"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .callback = init_nvs_nosave,
|
||||
.ident = "Sony Vaio VGN-SR11M",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
|
|
@ -1,33 +0,0 @@
|
|||
Bugzilla: 1011362
|
||||
Upstream-status: queued for 3.13
|
||||
|
||||
From b54629e226d196e802abdd30c5e34f2a47cddcf2 Mon Sep 17 00:00:00 2001
|
||||
From: hahnjo <hahnjo@hahnjo.de>
|
||||
Date: Tue, 12 Nov 2013 17:19:24 +0000
|
||||
Subject: alx: Reset phy speed after resume
|
||||
|
||||
This fixes bug 62491 (https://bugzilla.kernel.org/show_bug.cgi?id=62491).
|
||||
After resuming some users got the following error flooding the kernel log:
|
||||
alx 0000:02:00.0: invalid PHY speed/duplex: 0xffff
|
||||
|
||||
Signed-off-by: Jonas Hahnfeld <linux@hahnjo.de>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
(limited to 'drivers/net/ethernet/atheros/alx')
|
||||
|
||||
diff --git a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/atheros/alx/main.c
|
||||
index 5aa5e81..c3c4c26 100644
|
||||
--- a/drivers/net/ethernet/atheros/alx/main.c
|
||||
+++ b/drivers/net/ethernet/atheros/alx/main.c
|
||||
@@ -1388,6 +1388,9 @@ static int alx_resume(struct device *dev)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(dev);
|
||||
struct alx_priv *alx = pci_get_drvdata(pdev);
|
||||
+ struct alx_hw *hw = &alx->hw;
|
||||
+
|
||||
+ alx_reset_phy(hw);
|
||||
|
||||
if (!netif_running(alx->dev))
|
||||
return 0;
|
||||
--
|
||||
cgit v0.9.2
|
File diff suppressed because it is too large
Load Diff
|
@ -1,610 +0,0 @@
|
|||
Bugzilla: 1012025
|
||||
Upstream-status: In beagle github repository https://github.com/beagleboard/kernel
|
||||
|
||||
From 82fe302f565e00cfde3e96c6132df93b39525e7b Mon Sep 17 00:00:00 2001
|
||||
From: Philipp Zabel <p.zabel@pengutronix.de>
|
||||
Date: Tue, 28 May 2013 17:06:15 +0200
|
||||
Subject: [PATCH] reset: Add driver for gpio-controlled reset pins
|
||||
|
||||
This driver implements a reset controller device that toggle a gpio
|
||||
connected to a reset pin of a peripheral IC. The delay between assertion
|
||||
and de-assertion of the reset signal can be configured via device tree.
|
||||
|
||||
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
|
||||
Reviewed-by: Stephen Warren <swarren@nvidia.com>
|
||||
---
|
||||
.../devicetree/bindings/reset/gpio-reset.txt | 35 +++++
|
||||
drivers/reset/Kconfig | 11 ++
|
||||
drivers/reset/Makefile | 1 +
|
||||
drivers/reset/gpio-reset.c | 169 +++++++++++++++++++++
|
||||
4 files changed, 216 insertions(+)
|
||||
create mode 100644 Documentation/devicetree/bindings/reset/gpio-reset.txt
|
||||
create mode 100644 drivers/reset/gpio-reset.c
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/reset/gpio-reset.txt b/Documentation/devicetree/bindings/reset/gpio-reset.txt
|
||||
new file mode 100644
|
||||
index 0000000..bca5348
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/reset/gpio-reset.txt
|
||||
@@ -0,0 +1,35 @@
|
||||
+GPIO reset controller
|
||||
+=====================
|
||||
+
|
||||
+A GPIO reset controller controls a single GPIO that is connected to the reset
|
||||
+pin of a peripheral IC. Please also refer to reset.txt in this directory for
|
||||
+common reset controller binding usage.
|
||||
+
|
||||
+Required properties:
|
||||
+- compatible: Should be "gpio-reset"
|
||||
+- reset-gpios: A gpio used as reset line. The gpio specifier for this property
|
||||
+ depends on the gpio controller that provides the gpio.
|
||||
+- #reset-cells: 0, see below
|
||||
+
|
||||
+Optional properties:
|
||||
+- reset-delay-us: delay in microseconds. The gpio reset line will be asserted for
|
||||
+ this duration to reset.
|
||||
+- initially-in-reset: boolean. If not set, the initial state should be a
|
||||
+ deasserted reset line. If this property exists, the
|
||||
+ reset line should be kept in reset.
|
||||
+
|
||||
+example:
|
||||
+
|
||||
+sii902x_reset: gpio-reset {
|
||||
+ compatible = "gpio-reset";
|
||||
+ reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
|
||||
+ reset-delay-us = <10000>;
|
||||
+ initially-in-reset;
|
||||
+ #reset-cells = <0>;
|
||||
+};
|
||||
+
|
||||
+/* Device with nRESET pin connected to GPIO5_0 */
|
||||
+sii902x@39 {
|
||||
+ /* ... */
|
||||
+ resets = <&sii902x_reset>; /* active-low GPIO5_0, 10 ms delay */
|
||||
+};
|
||||
diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig
|
||||
index c9d04f7..1a862df 100644
|
||||
--- a/drivers/reset/Kconfig
|
||||
+++ b/drivers/reset/Kconfig
|
||||
@@ -11,3 +11,14 @@ menuconfig RESET_CONTROLLER
|
||||
via GPIOs or SoC-internal reset controller modules.
|
||||
|
||||
If unsure, say no.
|
||||
+
|
||||
+if RESET_CONTROLLER
|
||||
+
|
||||
+config RESET_GPIO
|
||||
+ tristate "GPIO reset controller support"
|
||||
+ depends on GPIOLIB && OF
|
||||
+ help
|
||||
+ This driver provides support for reset lines that are controlled
|
||||
+ directly by GPIOs.
|
||||
+
|
||||
+endif
|
||||
diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile
|
||||
index 1e2d83f..b854f20 100644
|
||||
--- a/drivers/reset/Makefile
|
||||
+++ b/drivers/reset/Makefile
|
||||
@@ -1 +1,2 @@
|
||||
obj-$(CONFIG_RESET_CONTROLLER) += core.o
|
||||
+obj-$(CONFIG_RESET_GPIO) += gpio-reset.o
|
||||
diff --git a/drivers/reset/gpio-reset.c b/drivers/reset/gpio-reset.c
|
||||
new file mode 100644
|
||||
index 0000000..acc1076
|
||||
--- /dev/null
|
||||
+++ b/drivers/reset/gpio-reset.c
|
||||
@@ -0,0 +1,169 @@
|
||||
+/*
|
||||
+ * GPIO Reset Controller driver
|
||||
+ *
|
||||
+ * Copyright 2013 Philipp Zabel, Pengutronix
|
||||
+ *
|
||||
+ * 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.
|
||||
+ */
|
||||
+#include <linux/delay.h>
|
||||
+#include <linux/err.h>
|
||||
+#include <linux/gpio.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/of_gpio.h>
|
||||
+#include <linux/platform_device.h>
|
||||
+#include <linux/reset-controller.h>
|
||||
+
|
||||
+struct gpio_reset_data {
|
||||
+ struct reset_controller_dev rcdev;
|
||||
+ unsigned int gpio;
|
||||
+ bool active_low;
|
||||
+ u32 delay_us;
|
||||
+};
|
||||
+
|
||||
+static void __gpio_reset_set(struct reset_controller_dev *rcdev, int asserted)
|
||||
+{
|
||||
+ struct gpio_reset_data *drvdata = container_of(rcdev,
|
||||
+ struct gpio_reset_data, rcdev);
|
||||
+ int value = asserted;
|
||||
+
|
||||
+ if (drvdata->active_low)
|
||||
+ value = !value;
|
||||
+
|
||||
+ gpio_set_value(drvdata->gpio, value);
|
||||
+}
|
||||
+
|
||||
+static int gpio_reset(struct reset_controller_dev *rcdev, unsigned long id)
|
||||
+{
|
||||
+ struct gpio_reset_data *drvdata = container_of(rcdev,
|
||||
+ struct gpio_reset_data, rcdev);
|
||||
+
|
||||
+ if (drvdata->delay_us < 0)
|
||||
+ return -ENOSYS;
|
||||
+
|
||||
+ __gpio_reset_set(rcdev, 1);
|
||||
+ udelay(drvdata->delay_us);
|
||||
+ __gpio_reset_set(rcdev, 0);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int gpio_reset_assert(struct reset_controller_dev *rcdev,
|
||||
+ unsigned long id)
|
||||
+{
|
||||
+ __gpio_reset_set(rcdev, 1);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int gpio_reset_deassert(struct reset_controller_dev *rcdev,
|
||||
+ unsigned long id)
|
||||
+{
|
||||
+ __gpio_reset_set(rcdev, 0);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static struct reset_control_ops gpio_reset_ops = {
|
||||
+ .reset = gpio_reset,
|
||||
+ .assert = gpio_reset_assert,
|
||||
+ .deassert = gpio_reset_deassert,
|
||||
+};
|
||||
+
|
||||
+static int of_gpio_reset_xlate(struct reset_controller_dev *rcdev,
|
||||
+ const struct of_phandle_args *reset_spec)
|
||||
+{
|
||||
+ if (WARN_ON(reset_spec->args_count != 0))
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int gpio_reset_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ struct device_node *np = pdev->dev.of_node;
|
||||
+ struct gpio_reset_data *drvdata;
|
||||
+ enum of_gpio_flags flags;
|
||||
+ unsigned long gpio_flags;
|
||||
+ bool initially_in_reset;
|
||||
+ int ret;
|
||||
+
|
||||
+ drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL);
|
||||
+ if (drvdata == NULL)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ if (of_gpio_named_count(np, "reset-gpios") != 1)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ drvdata->gpio = of_get_named_gpio_flags(np, "reset-gpios", 0, &flags);
|
||||
+ if (drvdata->gpio == -EPROBE_DEFER) {
|
||||
+ return drvdata->gpio;
|
||||
+ } else if (!gpio_is_valid(drvdata->gpio)) {
|
||||
+ dev_err(&pdev->dev, "invalid reset gpio: %d\n", drvdata->gpio);
|
||||
+ return drvdata->gpio;
|
||||
+ }
|
||||
+
|
||||
+ drvdata->active_low = flags & OF_GPIO_ACTIVE_LOW;
|
||||
+
|
||||
+ ret = of_property_read_u32(np, "reset-delay-us", &drvdata->delay_us);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ initially_in_reset = of_property_read_bool(np, "initially-in-reset");
|
||||
+ if (drvdata->active_low ^ initially_in_reset)
|
||||
+ gpio_flags = GPIOF_OUT_INIT_HIGH;
|
||||
+ else
|
||||
+ gpio_flags = GPIOF_OUT_INIT_LOW;
|
||||
+
|
||||
+ ret = devm_gpio_request_one(&pdev->dev, drvdata->gpio, gpio_flags, NULL);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(&pdev->dev, "failed to request gpio %d: %d\n",
|
||||
+ drvdata->gpio, ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ drvdata->rcdev.of_node = np;
|
||||
+ drvdata->rcdev.owner = THIS_MODULE;
|
||||
+ drvdata->rcdev.nr_resets = 1;
|
||||
+ drvdata->rcdev.ops = &gpio_reset_ops;
|
||||
+ drvdata->rcdev.of_xlate = of_gpio_reset_xlate;
|
||||
+ reset_controller_register(&drvdata->rcdev);
|
||||
+
|
||||
+ platform_set_drvdata(pdev, drvdata);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int gpio_reset_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ struct gpio_reset_data *drvdata = platform_get_drvdata(pdev);
|
||||
+
|
||||
+ reset_controller_unregister(&drvdata->rcdev);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static struct of_device_id gpio_reset_dt_ids[] = {
|
||||
+ { .compatible = "gpio-reset" },
|
||||
+ { }
|
||||
+};
|
||||
+
|
||||
+static struct platform_driver gpio_reset_driver = {
|
||||
+ .probe = gpio_reset_probe,
|
||||
+ .remove = gpio_reset_remove,
|
||||
+ .driver = {
|
||||
+ .name = "gpio-reset",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .of_match_table = of_match_ptr(gpio_reset_dt_ids),
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+module_platform_driver(gpio_reset_driver);
|
||||
+
|
||||
+MODULE_AUTHOR("Philipp Zabel <p.zabel@pengutronix.de>");
|
||||
+MODULE_DESCRIPTION("gpio reset controller");
|
||||
+MODULE_LICENSE("GPL");
|
||||
+MODULE_ALIAS("platform:gpio-reset");
|
||||
+MODULE_DEVICE_TABLE(of, gpio_reset_dt_ids);
|
||||
--
|
||||
1.8.2.1
|
||||
|
||||
From 03664ac63b20b55af9522449bbad048476d259d5 Mon Sep 17 00:00:00 2001
|
||||
From: Joel Fernandes <joelf@ti.com>
|
||||
Date: Wed, 3 Jul 2013 17:29:44 -0500
|
||||
Subject: [PATCH 2/2] sound: soc: soc-dmaengine-pcm: Add support for new
|
||||
DMAEngine request API
|
||||
|
||||
Formerly these resources were coming HWMOD on OMAP-like SoCs. With the
|
||||
impending removal of HWMOD data, drivers are being converted to use the
|
||||
"of-dma" method of requesting DMA channels which from DT and can be obtained
|
||||
using the dma_request_slave_channel API. Add support to the soc-dmaengine-pcm
|
||||
helpers so that we can fetch and open channels using this method.
|
||||
|
||||
Signed-off-by: Joel Fernandes <joelf@ti.com>
|
||||
---
|
||||
sound/core/pcm_dmaengine.c | 22 ++++++++++++++++++++++
|
||||
1 file changed, 22 insertions(+)
|
||||
|
||||
diff --git a/sound/core/pcm_dmaengine.c b/sound/core/pcm_dmaengine.c
|
||||
index aa924d9..461fe4f 100644
|
||||
--- a/sound/core/pcm_dmaengine.c
|
||||
+++ b/sound/core/pcm_dmaengine.c
|
||||
@@ -276,6 +276,16 @@ struct dma_chan *snd_dmaengine_pcm_request_channel(dma_filter_fn filter_fn,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_request_channel);
|
||||
|
||||
+struct dma_chan *snd_dmaengine_pcm_request_slave_channel(
|
||||
+ struct snd_pcm_substream *substream, char *name)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct device *dev = snd_soc_dai_get_drvdata(rtd->cpu_dai);
|
||||
+
|
||||
+ return dma_request_slave_channel(dev, name);
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_request_slave_channel);
|
||||
+
|
||||
/**
|
||||
* snd_dmaengine_pcm_open - Open a dmaengine based PCM substream
|
||||
* @substream: PCM substream
|
||||
@@ -334,6 +344,18 @@ int snd_dmaengine_pcm_open_request_chan(struct snd_pcm_substream *substream,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_open_request_chan);
|
||||
|
||||
+int snd_dmaengine_pcm_open_request_slave_chan(struct snd_pcm_substream *substream, char *name)
|
||||
+{
|
||||
+ if(substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
||||
+ return snd_dmaengine_pcm_open(substream,
|
||||
+ snd_dmaengine_pcm_request_slave_channel(substream, "tx"));
|
||||
+ } else {
|
||||
+ return snd_dmaengine_pcm_open(substream,
|
||||
+ snd_dmaengine_pcm_request_slave_channel(substream, "rx"));
|
||||
+ }
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_open_request_slave_chan);
|
||||
+
|
||||
/**
|
||||
* snd_dmaengine_pcm_close - Close a dmaengine based PCM substream
|
||||
* @substream: PCM substream
|
||||
--
|
||||
1.8.4.rc3
|
||||
|
||||
From ae38683badc8c80b29ccc8aa4e059f900b603551 Mon Sep 17 00:00:00 2001
|
||||
From: Pantelis Antoniou <panto@antoniou-consulting.com>
|
||||
Date: Fri, 26 Oct 2012 15:48:00 +0300
|
||||
Subject: [PATCH 1/2] omap-hsmmc: Correct usage of of_find_node_by_name
|
||||
|
||||
of_find_node_by_name expect to have the parent node reference taken.
|
||||
---
|
||||
drivers/mmc/host/omap_hsmmc.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
|
||||
index 6ac63df..f5b660c 100644
|
||||
--- a/drivers/mmc/host/omap_hsmmc.c
|
||||
+++ b/drivers/mmc/host/omap_hsmmc.c
|
||||
@@ -1893,6 +1893,16 @@ static int omap_hsmmc_probe(struct platform_device *pdev)
|
||||
* as we want. */
|
||||
mmc->max_segs = 1024;
|
||||
|
||||
+ /* Eventually we should get our max_segs limitation for EDMA by
|
||||
+ * querying the dmaengine API */
|
||||
+ if (pdev->dev.of_node) {
|
||||
+ struct device_node *parent = of_node_get(pdev->dev.of_node->parent);
|
||||
+ struct device_node *node;
|
||||
+ node = of_find_node_by_name(parent, "edma");
|
||||
+ if (node)
|
||||
+ mmc->max_segs = 16;
|
||||
+ }
|
||||
+
|
||||
mmc->max_blk_size = 512; /* Block Length at max can be 1024 */
|
||||
mmc->max_blk_count = 0xFFFF; /* No. of Blocks is 16 bits */
|
||||
mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
|
||||
--
|
||||
1.8.2.1
|
||||
|
||||
From 5d93a65cfc4ff6aaf78ab49f71daa2a644ea2ace Mon Sep 17 00:00:00 2001
|
||||
From: Pantelis Antoniou <panto@antoniou-consulting.com>
|
||||
Date: Fri, 30 Nov 2012 12:18:16 +0200
|
||||
Subject: [PATCH 2/2] omap_hsmmc: Add reset gpio
|
||||
|
||||
Add a gpio property for controlling reset of the mmc device.
|
||||
eMMC on the beaglebone black requires it.
|
||||
|
||||
Signed-off-by: Pantelis Antoniou <panto@antoniou-consulting.com>
|
||||
---
|
||||
drivers/mmc/host/omap_hsmmc.c | 40 +++++++++++++++++++++++++++++++++-
|
||||
include/linux/platform_data/mmc-omap.h | 3 +++
|
||||
2 files changed, 42 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
|
||||
index f5b660c..1bdb90f 100644
|
||||
--- a/drivers/mmc/host/omap_hsmmc.c
|
||||
+++ b/drivers/mmc/host/omap_hsmmc.c
|
||||
@@ -41,6 +41,8 @@
|
||||
#include <linux/pinctrl/consumer.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/platform_data/mmc-omap.h>
|
||||
+#include <linux/pinctrl/consumer.h>
|
||||
+#include <linux/err.h>
|
||||
|
||||
/* OMAP HSMMC Host Controller Registers */
|
||||
#define OMAP_HSMMC_SYSSTATUS 0x0014
|
||||
@@ -392,6 +394,7 @@ static inline int omap_hsmmc_have_reg(void)
|
||||
static int omap_hsmmc_gpio_init(struct omap_mmc_platform_data *pdata)
|
||||
{
|
||||
int ret;
|
||||
+ unsigned long flags;
|
||||
|
||||
if (gpio_is_valid(pdata->slots[0].switch_pin)) {
|
||||
if (pdata->slots[0].cover)
|
||||
@@ -421,6 +424,24 @@ static int omap_hsmmc_gpio_init(struct omap_mmc_platform_data *pdata)
|
||||
} else
|
||||
pdata->slots[0].gpio_wp = -EINVAL;
|
||||
|
||||
+ if (gpio_is_valid(pdata->slots[0].gpio_reset)) {
|
||||
+ flags = pdata->slots[0].gpio_reset_active_low ?
|
||||
+ GPIOF_OUT_INIT_LOW : GPIOF_OUT_INIT_HIGH;
|
||||
+ ret = gpio_request_one(pdata->slots[0].gpio_reset, flags,
|
||||
+ "mmc_reset");
|
||||
+ if (ret)
|
||||
+ goto err_free_wp;
|
||||
+
|
||||
+ /* hold reset */
|
||||
+ udelay(pdata->slots[0].gpio_reset_hold_us);
|
||||
+
|
||||
+ gpio_set_value(pdata->slots[0].gpio_reset,
|
||||
+ !pdata->slots[0].gpio_reset_active_low);
|
||||
+
|
||||
+ } else
|
||||
+ pdata->slots[0].gpio_reset = -EINVAL;
|
||||
+
|
||||
+
|
||||
return 0;
|
||||
|
||||
err_free_wp:
|
||||
@@ -434,6 +455,8 @@ err_free_sp:
|
||||
|
||||
static void omap_hsmmc_gpio_free(struct omap_mmc_platform_data *pdata)
|
||||
{
|
||||
+ if (gpio_is_valid(pdata->slots[0].gpio_reset))
|
||||
+ gpio_free(pdata->slots[0].gpio_reset);
|
||||
if (gpio_is_valid(pdata->slots[0].gpio_wp))
|
||||
gpio_free(pdata->slots[0].gpio_wp);
|
||||
if (gpio_is_valid(pdata->slots[0].switch_pin))
|
||||
@@ -788,7 +811,7 @@ omap_hsmmc_start_command(struct omap_hsmmc_host *host, struct mmc_command *cmd,
|
||||
* ac, bc, adtc, bcr. Only commands ending an open ended transfer need
|
||||
* a val of 0x3, rest 0x0.
|
||||
*/
|
||||
- if (cmd == host->mrq->stop)
|
||||
+ if (host->mrq && cmd == host->mrq->stop)
|
||||
cmdtype = 0x3;
|
||||
|
||||
cmdreg = (cmd->opcode << 24) | (resptype << 16) | (cmdtype << 22);
|
||||
@@ -830,6 +853,8 @@ static void omap_hsmmc_request_done(struct omap_hsmmc_host *host, struct mmc_req
|
||||
int dma_ch;
|
||||
unsigned long flags;
|
||||
|
||||
+ BUG_ON(mrq == NULL);
|
||||
+
|
||||
spin_lock_irqsave(&host->irq_lock, flags);
|
||||
host->req_in_progress = 0;
|
||||
dma_ch = host->dma_ch;
|
||||
@@ -1720,6 +1745,7 @@ static struct omap_mmc_platform_data *of_get_hsmmc_pdata(struct device *dev)
|
||||
struct device_node *np = dev->of_node;
|
||||
u32 bus_width, max_freq;
|
||||
int cd_gpio, wp_gpio;
|
||||
+ enum of_gpio_flags reset_flags;
|
||||
|
||||
cd_gpio = of_get_named_gpio(np, "cd-gpios", 0);
|
||||
wp_gpio = of_get_named_gpio(np, "wp-gpios", 0);
|
||||
@@ -1737,6 +1763,14 @@ static struct omap_mmc_platform_data *of_get_hsmmc_pdata(struct device *dev)
|
||||
pdata->nr_slots = 1;
|
||||
pdata->slots[0].switch_pin = cd_gpio;
|
||||
pdata->slots[0].gpio_wp = wp_gpio;
|
||||
+ reset_flags = 0;
|
||||
+ pdata->slots[0].gpio_reset = of_get_named_gpio_flags(np,
|
||||
+ "reset-gpios", 0, &reset_flags);
|
||||
+ pdata->slots[0].gpio_reset_active_low =
|
||||
+ (reset_flags & OF_GPIO_ACTIVE_LOW) != 0;
|
||||
+ pdata->slots[0].gpio_reset_hold_us = 100; /* default */
|
||||
+ of_property_read_u32(np, "reset-gpio-hold-us",
|
||||
+ &pdata->slots[0].gpio_reset_hold_us);
|
||||
|
||||
if (of_find_property(np, "ti,non-removable", NULL)) {
|
||||
pdata->slots[0].nonremovable = true;
|
||||
@@ -1802,6 +1836,10 @@ static int omap_hsmmc_probe(struct platform_device *pdev)
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
+ pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
|
||||
+ if (IS_ERR(pinctrl))
|
||||
+ dev_warn(&pdev->dev, "unable to select pin group\n");
|
||||
+
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
if (res == NULL || irq < 0)
|
||||
diff --git a/include/linux/platform_data/mmc-omap.h b/include/linux/platform_data/mmc-omap.h
|
||||
index 2bf1b30..d548994 100644
|
||||
--- a/include/linux/platform_data/mmc-omap.h
|
||||
+++ b/include/linux/platform_data/mmc-omap.h
|
||||
@@ -115,6 +115,9 @@ struct omap_mmc_platform_data {
|
||||
|
||||
int switch_pin; /* gpio (card detect) */
|
||||
int gpio_wp; /* gpio (write protect) */
|
||||
+ int gpio_reset; /* gpio (reset) */
|
||||
+ int gpio_reset_active_low; /* 1 if reset is active low */
|
||||
+ u32 gpio_reset_hold_us; /* time to hold in us */
|
||||
|
||||
int (*set_bus_mode)(struct device *dev, int slot, int bus_mode);
|
||||
int (*set_power)(struct device *dev, int slot,
|
||||
--
|
||||
1.8.2.1
|
||||
|
||||
From b45e4df71f07f2178db133db540e3f15e0b4ec05 Mon Sep 17 00:00:00 2001
|
||||
From: Pantelis Antoniou <panto@antoniou-consulting.com>
|
||||
Date: Sat, 15 Sep 2012 12:00:41 +0300
|
||||
Subject: [PATCH] pinctrl: pinctrl-single must be initialized early.
|
||||
|
||||
When using pinctrl-single to handle i2c initialization, it has
|
||||
to be done early. Whether this is the best way to do so, is an
|
||||
exercise left to the reader.
|
||||
---
|
||||
drivers/pinctrl/pinctrl-single.c | 12 +++++++++++-
|
||||
1 file changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
|
||||
index a82ace4..aeef35d 100644
|
||||
--- a/drivers/pinctrl/pinctrl-single.c
|
||||
+++ b/drivers/pinctrl/pinctrl-single.c
|
||||
@@ -1673,7 +1673,17 @@ static struct platform_driver pcs_driver = {
|
||||
#endif
|
||||
};
|
||||
|
||||
-module_platform_driver(pcs_driver);
|
||||
+static int __init pcs_init(void)
|
||||
+{
|
||||
+ return platform_driver_register(&pcs_driver);
|
||||
+}
|
||||
+postcore_initcall(pcs_init);
|
||||
+
|
||||
+static void __exit pcs_exit(void)
|
||||
+{
|
||||
+ platform_driver_unregister(&pcs_driver);
|
||||
+}
|
||||
+module_exit(pcs_exit);
|
||||
|
||||
MODULE_AUTHOR("Tony Lindgren <tony@atomide.com>");
|
||||
MODULE_DESCRIPTION("One-register-per-pin type device tree based pinctrl driver");
|
||||
--
|
||||
1.8.2.1
|
||||
|
||||
From e5e7abd2de7d8d4c74b5a1ccc6d47988250bd17d Mon Sep 17 00:00:00 2001
|
||||
From: Pantelis Antoniou <panto@antoniou-consulting.com>
|
||||
Date: Fri, 28 Jun 2013 18:39:55 +0300
|
||||
Subject: [PATCH 1/4] dts: beaglebone: Add I2C definitions for EEPROMs & capes
|
||||
|
||||
Add the I2C definitions for the EEPROM devices on the baseboard
|
||||
and on the possibly connected capes.
|
||||
|
||||
Signed-off-by: Pantelis Antoniou <panto@antoniou-consulting.com>
|
||||
---
|
||||
arch/arm/boot/dts/am335x-bone-common.dtsi | 39 +++++++++++++++++++++++++++++++
|
||||
1 file changed, 39 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/am335x-bone-common.dtsi b/arch/arm/boot/dts/am335x-bone-common.dtsi
|
||||
index e3f27ec..2d12775 100644
|
||||
--- a/arch/arm/boot/dts/am335x-bone-common.dtsi
|
||||
+++ b/arch/arm/boot/dts/am335x-bone-common.dtsi
|
||||
@@ -84,6 +84,13 @@
|
||||
>;
|
||||
};
|
||||
|
||||
+ i2c2_pins: pinmux_i2c2_pins {
|
||||
+ pinctrl-single,pins = <
|
||||
+ 0x178 0x73 /* uart1_ctsn.i2c2_sda, SLEWCTRL_SLOW | INPUT_PULLUP | MODE3 */
|
||||
+ 0x17c 0x73 /* uart1_rtsn.i2c2_scl, SLEWCTRL_SLOW | INPUT_PULLUP | MODE3 */
|
||||
+ >;
|
||||
+ };
|
||||
+
|
||||
uart0_pins: pinmux_uart0_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x170 (PIN_INPUT_PULLUP | MUX_MODE0) /* uart0_rxd.uart0_rxd */
|
||||
@@ -220,6 +227,38 @@
|
||||
reg = <0x24>;
|
||||
};
|
||||
|
||||
+ baseboard_eeprom: baseboard_eeprom@50 {
|
||||
+ compatible = "at,24c256";
|
||||
+ reg = <0x50>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2c2 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&i2c2_pins>;
|
||||
+
|
||||
+ status = "okay";
|
||||
+ clock-frequency = <100000>;
|
||||
+
|
||||
+ cape_eeprom0: cape_eeprom0@54 {
|
||||
+ compatible = "at,24c256";
|
||||
+ reg = <0x54>;
|
||||
+ };
|
||||
+
|
||||
+ cape_eeprom1: cape_eeprom1@55 {
|
||||
+ compatible = "at,24c256";
|
||||
+ reg = <0x55>;
|
||||
+ };
|
||||
+
|
||||
+ cape_eeprom2: cape_eeprom2@56 {
|
||||
+ compatible = "at,24c256";
|
||||
+ reg = <0x56>;
|
||||
+ };
|
||||
+
|
||||
+ cape_eeprom3: cape_eeprom3@57 {
|
||||
+ compatible = "at,24c256";
|
||||
+ reg = <0x57>;
|
||||
+ };
|
||||
};
|
||||
|
||||
/include/ "tps65217.dtsi"
|
||||
--
|
||||
1.8.4.rc3
|
|
@ -1,23 +0,0 @@
|
|||
Bugzilla: 1012025
|
||||
Upstream-status: An initial work around for the cpsw driver issue trying to access HW registers
|
||||
with clock disabled. Upstream is working on a proper fix with the hope to land it in 3.13.
|
||||
|
||||
--- linux-3.12.4-1.fc20.x86_64/drivers/net/ethernet/ti/cpsw.c.orig 2013-12-11 20:52:41.576478796 +0000
|
||||
+++ linux-3.12.4-1.fc20.x86_64/drivers/net/ethernet/ti/cpsw.c 2013-12-11 20:55:14.418692261 +0000
|
||||
@@ -2001,6 +2001,8 @@
|
||||
goto clean_cpsw_iores_ret;
|
||||
}
|
||||
priv->regs = ss_regs;
|
||||
+
|
||||
+ pm_runtime_get_sync(&pdev->dev);
|
||||
priv->version = __raw_readl(&priv->regs->id_ver);
|
||||
priv->host_port = HOST_PORT_NUM;
|
||||
|
||||
@@ -2161,6 +2163,7 @@
|
||||
goto clean_irq_ret;
|
||||
}
|
||||
}
|
||||
+ pm_runtime_put_sync(&pdev->dev);
|
||||
|
||||
return 0;
|
||||
|
|
@ -1,36 +1,55 @@
|
|||
Add initial support for cm-fx6 module.
|
||||
commit 682d055e6ac5c3855f51649de6d68e9bb29c26a6
|
||||
Author: Valentin Raevsky <valentin@compulab.co.il>
|
||||
Date: Tue Oct 29 14:11:43 2013 +0200
|
||||
|
||||
cm-fx6 is a module based on mx6q SoC with the following features:
|
||||
- Up to 4GB of DDR3
|
||||
- 1 LCD/DVI output port
|
||||
- 1 HDMI output port
|
||||
- 2 LVDS LCD ports
|
||||
- Gigabit Ethernet
|
||||
- Analog Audio
|
||||
- CAN
|
||||
- SATA
|
||||
- NAND
|
||||
- PCIE
|
||||
|
||||
This patch allows to boot up the module, configures the serial console,
|
||||
the Ethernet adapter and the hearbeat led.
|
||||
|
||||
Signed-off-by: Valentin Raevsky <valentin@xxxxxxxxxxxxxx>
|
||||
Acked-by: Igor Grinberg <grinberg@xxxxxxxxxxxxxx>
|
||||
---
|
||||
arch/arm/boot/dts/imx6q-cm-fx6.dts | 51 ++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 51 insertions(+)
|
||||
create mode 100644 arch/arm/boot/dts/imx6q-cm-fx6.dts
|
||||
ARM: dts: Add initial support for cm-fx6.
|
||||
|
||||
Add initial support for cm-fx6 module.
|
||||
|
||||
cm-fx6 is a module based on mx6q SoC with the following features:
|
||||
- Up to 4GB of DDR3
|
||||
- 1 LCD/DVI output port
|
||||
- 1 HDMI output port
|
||||
- 2 LVDS LCD ports
|
||||
- Gigabit Ethernet
|
||||
- Analog Audio
|
||||
- CAN
|
||||
- SATA
|
||||
- NAND
|
||||
- PCIE
|
||||
|
||||
This patch allows to boot up the module, configures the serial console,
|
||||
the Ethernet adapter and the heartbeat led.
|
||||
|
||||
cm-fx6 is embedded inside the Utilite computer.
|
||||
|
||||
Signed-off-by: Valentin Raevsky <valentin@compulab.co.il>
|
||||
Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
|
||||
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
|
||||
|
||||
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
|
||||
index 8081479..5672e91 100644
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -162,6 +162,7 @@ dtb-$(CONFIG_ARCH_MXC) += \
|
||||
imx6dl-sabresd.dtb \
|
||||
imx6dl-wandboard.dtb \
|
||||
imx6q-arm2.dtb \
|
||||
+ imx6q-cm-fx6.dtb \
|
||||
imx6q-cubox-i.dtb \
|
||||
imx6q-phytec-pbab01.dtb \
|
||||
imx6q-sabreauto.dtb \
|
||||
diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts
|
||||
new file mode 100644
|
||||
index 0000000..1080215
|
||||
index 0000000..99b46f8
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts
|
||||
@@ -0,0 +1,51 @@
|
||||
@@ -0,0 +1,107 @@
|
||||
+/*
|
||||
+ * Copyright 2013 CompuLab Ltd.
|
||||
+ *
|
||||
+ * Author: Valentin Raevsky <valentin@compulab.co.il>
|
||||
+ *
|
||||
+ * The code contained herein is licensed under the GNU General Public
|
||||
+ * License. You may obtain a copy of the GNU General Public License
|
||||
+ * Version 2 or later at the following locations:
|
||||
|
@ -53,7 +72,7 @@ index 0000000..1080215
|
|||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ debug-led {
|
||||
+ heartbeat-led {
|
||||
+ label = "Heartbeat";
|
||||
+ gpios = <&gpio2 31 0>;
|
||||
+ linux,default-trigger = "heartbeat";
|
||||
|
@ -61,35 +80,79 @@ index 0000000..1080215
|
|||
+ };
|
||||
+};
|
||||
+
|
||||
+&gpmi {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_gpmi_nand_1>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&fec {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_enet_1>;
|
||||
+ pinctrl-0 = <&pinctrl_enet>;
|
||||
+ phy-mode = "rgmii";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&uart4 {
|
||||
+&gpmi {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_uart4_1>;
|
||||
+ pinctrl-0 = <&pinctrl_gpmi_nand>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -137,6 +137,7 @@
|
||||
imx6dl-sabresd.dtb \
|
||||
imx6dl-wandboard.dtb \
|
||||
imx6q-arm2.dtb \
|
||||
+ imx6q-cm-fx6.dtb \
|
||||
imx6q-phytec-pbab01.dtb \
|
||||
imx6q-sabreauto.dtb \
|
||||
imx6q-sabrelite.dtb \
|
||||
--
|
||||
1.7.9.5
|
||||
|
||||
+
|
||||
+&iomuxc {
|
||||
+ imx6q-cm-fx6 {
|
||||
+ pinctrl_enet: enetgrp {
|
||||
+ fsl,pins = <
|
||||
+ MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0
|
||||
+ MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0
|
||||
+ MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0
|
||||
+ MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0
|
||||
+ MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0
|
||||
+ MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
|
||||
+ MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0
|
||||
+ MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0
|
||||
+ MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0
|
||||
+ MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0
|
||||
+ MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0
|
||||
+ MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
|
||||
+ MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0
|
||||
+ MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0
|
||||
+ MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0
|
||||
+ MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8
|
||||
+ >;
|
||||
+ };
|
||||
+
|
||||
+ pinctrl_gpmi_nand: gpminandgrp {
|
||||
+ fsl,pins = <
|
||||
+ MX6QDL_PAD_NANDF_CLE__NAND_CLE 0xb0b1
|
||||
+ MX6QDL_PAD_NANDF_ALE__NAND_ALE 0xb0b1
|
||||
+ MX6QDL_PAD_NANDF_WP_B__NAND_WP_B 0xb0b1
|
||||
+ MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000
|
||||
+ MX6QDL_PAD_NANDF_CS0__NAND_CE0_B 0xb0b1
|
||||
+ MX6QDL_PAD_NANDF_CS1__NAND_CE1_B 0xb0b1
|
||||
+ MX6QDL_PAD_SD4_CMD__NAND_RE_B 0xb0b1
|
||||
+ MX6QDL_PAD_SD4_CLK__NAND_WE_B 0xb0b1
|
||||
+ MX6QDL_PAD_NANDF_D0__NAND_DATA00 0xb0b1
|
||||
+ MX6QDL_PAD_NANDF_D1__NAND_DATA01 0xb0b1
|
||||
+ MX6QDL_PAD_NANDF_D2__NAND_DATA02 0xb0b1
|
||||
+ MX6QDL_PAD_NANDF_D3__NAND_DATA03 0xb0b1
|
||||
+ MX6QDL_PAD_NANDF_D4__NAND_DATA04 0xb0b1
|
||||
+ MX6QDL_PAD_NANDF_D5__NAND_DATA05 0xb0b1
|
||||
+ MX6QDL_PAD_NANDF_D6__NAND_DATA06 0xb0b1
|
||||
+ MX6QDL_PAD_NANDF_D7__NAND_DATA07 0xb0b1
|
||||
+ MX6QDL_PAD_SD4_DAT0__NAND_DQS 0x00b1
|
||||
+ >;
|
||||
+ };
|
||||
+
|
||||
+ pinctrl_uart4: uart4grp {
|
||||
+ fsl,pins = <
|
||||
+ MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
|
||||
+ MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
|
||||
+ >;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&uart4 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_uart4>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&sata {
|
||||
+ status = "okay";
|
||||
+};
|
||||
|
|
|
@ -0,0 +1,99 @@
|
|||
From fb4a8356eb67514b10618d1e9e4059ced14c05f2 Mon Sep 17 00:00:00 2001
|
||||
From: Marc Dietrich <marvin24@gmx.de>
|
||||
Date: Sat, 21 Dec 2013 21:38:13 +0100
|
||||
Subject: [PATCH] ARM: tegra: paz00: Add LVDS support to device tree
|
||||
|
||||
Add backlight and panel nodes for the PAZ00 TFT LCD panel.
|
||||
|
||||
Signed-off-by: Marc Dietrich <marvin24@gmx.de>
|
||||
---
|
||||
arch/arm/boot/dts/tegra20-paz00.dts | 46 ++++++++++++++++++++++++++++++++++-
|
||||
1 files changed, 45 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/tegra20-paz00.dts b/arch/arm/boot/dts/tegra20-paz00.dts
|
||||
index c7cd8e6..9a39a80 100644
|
||||
--- a/arch/arm/boot/dts/tegra20-paz00.dts
|
||||
+++ b/arch/arm/boot/dts/tegra20-paz00.dts
|
||||
@@ -17,6 +17,14 @@
|
||||
};
|
||||
|
||||
host1x@50000000 {
|
||||
+ dc@54200000 {
|
||||
+ rgb {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ nvidia,panel = <&panel>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
hdmi@54280000 {
|
||||
status = "okay";
|
||||
|
||||
@@ -257,7 +265,11 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
- i2c@7000c000 {
|
||||
+ pwm: pwm@7000a000 {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ lvds_ddc: i2c@7000c000 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
@@ -475,6 +487,18 @@
|
||||
non-removable;
|
||||
};
|
||||
|
||||
+ backlight: backlight {
|
||||
+ compatible = "pwm-backlight";
|
||||
+
|
||||
+ enable-gpios = <&gpio TEGRA_GPIO(U, 4) GPIO_ACTIVE_HIGH>;
|
||||
+ pwms = <&pwm 0 5000000>;
|
||||
+
|
||||
+ brightness-levels = <0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 255>;
|
||||
+ default-brightness-level = <10>;
|
||||
+
|
||||
+ backlight-boot-off;
|
||||
+ };
|
||||
+
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
@@ -509,6 +533,16 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ panel: panel {
|
||||
+ compatible = "samsung,ltn101nt05", "simple-panel";
|
||||
+
|
||||
+ ddc-i2c-bus = <&lvds_ddc>;
|
||||
+ power-supply = <&vdd_pnl_reg>;
|
||||
+ enable-gpios = <&gpio TEGRA_GPIO(M, 6) GPIO_ACTIVE_HIGH>;
|
||||
+
|
||||
+ backlight = <&backlight>;
|
||||
+ };
|
||||
+
|
||||
regulators {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
@@ -522,6 +556,16 @@
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
+
|
||||
+ vdd_pnl_reg: regulator@1 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ reg = <1>;
|
||||
+ regulator-name = "+3VS,vdd_pnl";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ gpio = <&gpio TEGRA_GPIO(A, 4) GPIO_ACTIVE_HIGH>;
|
||||
+ enable-active-high;
|
||||
+ };
|
||||
};
|
||||
|
||||
sound {
|
||||
--
|
||||
1.7.1
|
|
@ -6,8 +6,12 @@ CONFIG_FB_SSD1307=m
|
|||
CONFIG_HW_PERF_EVENTS=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_NFS_FS=y
|
||||
|
||||
# CONFIG_PID_IN_CONTEXTIDR is not set
|
||||
|
||||
# CONFIG_CPU_BIG_ENDIAN is not set
|
||||
# CONFIG_BIG_LITTLE is not set
|
||||
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_SYSFS=y
|
||||
|
||||
|
@ -16,21 +20,32 @@ CONFIG_RESET_GPIO=y
|
|||
|
||||
CONFIG_RCU_FANOUT_LEAF=16
|
||||
# CONFIG_RTC_DRV_SNVS is not set
|
||||
# CONFIG_RTC_DRV_HYM8563 is not set
|
||||
CONFIG_BACKLIGHT_PWM=m
|
||||
CONFIG_INPUT_PWM_BEEPER=m
|
||||
CONFIG_ARM_SP805_WATCHDOG=m
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
# CONFIG_ARM_DT_BL_CPUFREQ is not set
|
||||
CONFIG_NR_CPUS=8
|
||||
CONFIG_ARM_DMA_USE_IOMMU=y
|
||||
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_DMA_VIRTUAL_CHANNELS=y
|
||||
CONFIG_FB_SIMPLE=y
|
||||
|
||||
CONFIG_HAVE_PERF_REGS=y
|
||||
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
|
||||
|
||||
# ARM AMBA generic HW
|
||||
CONFIG_ARM_AMBA=y
|
||||
CONFIG_ARM_CCI=y
|
||||
CONFIG_ARM_DMA_USE_IOMMU=y
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_GLOBAL_TIMER=y
|
||||
CONFIG_ARM_SMMU=y
|
||||
CONFIG_MMC_ARMMMCI=y
|
||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
CONFIG_SERIAL_AMBA_PL011=y
|
||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
CONFIG_SERIO_AMBAKMI=y
|
||||
CONFIG_OC_ETM=y
|
||||
CONFIG_FB_ARMCLCD=y
|
||||
|
@ -56,14 +71,18 @@ CONFIG_OF_EARLY_FLATTREE=y
|
|||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_I2C=m
|
||||
CONFIG_OF_IOMMU=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_MDIO=m
|
||||
CONFIG_OF_MTD=y
|
||||
CONFIG_OF_NET=y
|
||||
CONFIG_OF_PCI_IRQ=m
|
||||
CONFIG_OF_PCI=m
|
||||
CONFIG_OF_RESERVED_MEM=y
|
||||
CONFIG_PATA_OF_PLATFORM=m
|
||||
# CONFIG_OF_SELFTEST is not set
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_THERMAL_OF=y
|
||||
|
||||
# External Connectors
|
||||
CONFIG_EXTCON=m
|
||||
|
@ -88,18 +107,21 @@ CONFIG_MTD_PHYSMAP_OF=m
|
|||
# GPIO
|
||||
CONFIG_GPIO_DEVRES=y
|
||||
CONFIG_GPIO_GENERIC=m
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=m
|
||||
CONFIG_GPIO_WATCHDOG=m
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
CONFIG_MDIO_GPIO=m
|
||||
CONFIG_BACKLIGHT_GPIO=m
|
||||
CONFIG_POWER_RESET_GPIO=y
|
||||
CONFIG_POWER_RESET_RESTART=y
|
||||
|
||||
#i2c
|
||||
CONFIG_I2C_ARB_GPIO_CHALLENGE=m
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_I2C_GPIO=m
|
||||
CONFIG_I2C_MUX=m
|
||||
# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set
|
||||
CONFIG_I2C_MUX_GPIO=m
|
||||
CONFIG_I2C_MUX_PINCTRL=m
|
||||
CONFIG_I2C_MUX_PCA9541=m
|
||||
|
@ -108,24 +130,54 @@ CONFIG_I2C_MUX_PCA9541=m
|
|||
CONFIG_SENSORS_IIO_HWMON=m
|
||||
CONFIG_IIO_SYSFS_TRIGGER=m
|
||||
|
||||
# PHY framework
|
||||
CONFIG_GENERIC_PHY=y
|
||||
|
||||
# MFD
|
||||
CONFIG_MFD_CORE=m
|
||||
|
||||
CONFIG_SMC91X=m
|
||||
CONFIG_SMC911X=m
|
||||
|
||||
CONFIG_CPU_THERMAL=y
|
||||
CONFIG_THERMAL_GOV_USER_SPACE=y
|
||||
|
||||
# Contiguous Memory Allocator
|
||||
CONFIG_CMA=y
|
||||
CONFIG_DMA_CMA=y
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
CONFIG_CMA_SIZE_MBYTES=16
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MIN is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_ALIGNMENT=8
|
||||
CONFIG_CMA_AREAS=7
|
||||
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
# CONFIG_TRANSPARENT_HUGEPAGE is not set
|
||||
# CONFIG_XEN is not set
|
||||
# CONFIG_DRM_RCAR_DU is not set
|
||||
# CONFIG_I2C_RCAR is not set
|
||||
# CONFIG_DRM_SHMOBILE is not set
|
||||
# CONFIG_I2C_SH_MOBILE is not set
|
||||
# CONFIG_MMC_DW_SOCFPGA is not set
|
||||
# CONFIG_ARM_SMMU is not set
|
||||
# CONFIG_I2C_NOMADIK is not set
|
||||
# CONFIG_IRQ_DOMAIN_DEBUG is not set
|
||||
# CONFIG_LEDS_RENESAS_TPU is not set
|
||||
# CONFIG_LOCK_STAT is not set
|
||||
|
||||
# CONFIG_DRM_ARMADA is not set
|
||||
# CONFIG_DRM_TEGRA is not set
|
||||
# CONFIG_SHMOBILE_IOMMU is not set
|
||||
|
||||
# CONFIG_COMMON_CLK_SI570 is not set
|
||||
# CONFIG_COMMON_CLK_QCOM is not set
|
||||
|
||||
# CONFIG_ARM_PTDUMP is not set
|
||||
|
||||
# CONFIG_PATA_PLATFORM is not set
|
||||
|
||||
### turn off things which make no sense on embedded SoC
|
||||
|
||||
# core
|
||||
|
@ -140,6 +192,7 @@ CONFIG_SMC911X=m
|
|||
# CONFIG_NET_VENDOR_EXAR is not set
|
||||
# CONFIG_NET_VENDOR_INTEL is not set
|
||||
# CONFIG_NET_VENDOR_MELLANOX is not set
|
||||
# CONFIG_NET_VENDOR_BROCADE is not set
|
||||
|
||||
# scsi
|
||||
|
||||
|
@ -149,5 +202,11 @@ CONFIG_SMC911X=m
|
|||
# CONFIG_SCSI_IPS is not set
|
||||
# CONFIG_SCSI_CXGB3_ISCSI is not set
|
||||
# CONFIG_SCSI_CXGB4_ISCSI is not set
|
||||
# CONFIG_SCSI_BFA_FC is not set
|
||||
|
||||
# serial
|
||||
# CONFIG_SERIAL_SH_SCI is not set
|
||||
|
||||
CONFIG_CRASH=m
|
||||
|
||||
# CONFIG_DEBUG_SET_MODULE_RONX is not set
|
||||
|
|
14
config-arm64
14
config-arm64
|
@ -1,6 +1,8 @@
|
|||
CONFIG_64BIT=y
|
||||
CONFIG_ARM64=y
|
||||
|
||||
# CONFIG_CPU_BIG_ENDIAN is not set
|
||||
|
||||
# arm64 only SoCs
|
||||
CONFIG_ARCH_XGENE=y
|
||||
|
||||
|
@ -8,9 +10,8 @@ CONFIG_ARCH_XGENE=y
|
|||
# CONFIG_AMBA_PL08X is not set
|
||||
CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
CONFIG_ARM64_64K_PAGES=y
|
||||
# CONFIG_ARM_DT_BL_CPUFREQ is not set
|
||||
CONFIG_ARM_SMMU=y
|
||||
# CONFIG_ARM64_64K_PAGES is not set
|
||||
CONFIG_COMPAT=y
|
||||
|
||||
CONFIG_BCMA_POSSIBLE=y
|
||||
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
|
||||
|
@ -39,7 +40,8 @@ CONFIG_HAVE_NET_DSA=y
|
|||
CONFIG_HVC_DRIVER=y
|
||||
CONFIG_HZ=100
|
||||
|
||||
# CONFIG_KVM is not set
|
||||
CONFIG_KVM=y
|
||||
CONFIG_KVM_ARM_MAX_VCPUS=8
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
|
||||
CONFIG_NFS_ACL_SUPPORT=y
|
||||
|
@ -57,15 +59,12 @@ CONFIG_SERIAL_8250_DMA=y
|
|||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
|
||||
CONFIG_SWIOTLB=y
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
# CONFIG_THERMAL is not set
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
|
||||
# not arm64
|
||||
# CONFIG_HW_RANDOM_ATMEL is not set
|
||||
# CONFIG_HW_RANDOM_EXYNOS is not set
|
||||
# CONFIG_GPIO_ADNP is not set
|
||||
# CONFIG_GPIO_MCP23S08 is not set
|
||||
# CONFIG_MDIO_BUS_MUX_GPIO is not set
|
||||
|
@ -80,3 +79,4 @@ CONFIG_VM_EVENT_COUNTERS=y
|
|||
# CONFIG_PARPORT_PC is not set
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_POWER_RESET_XGENE=y
|
||||
CONFIG_COMMON_CLK_XGENE=y
|
||||
|
|
133
config-armv7
133
config-armv7
|
@ -1,14 +1,15 @@
|
|||
# ARM unified arch kernel
|
||||
|
||||
# CONFIG_ARCH_EXYNOS_MULTI is not set
|
||||
# CONFIG_ARCH_BERLIN is not set
|
||||
# CONFIG_ARCH_KEYSTONE is not set
|
||||
CONFIG_ARCH_MVEBU=y
|
||||
CONFIG_ARCH_MXC=y
|
||||
CONFIG_ARCH_OMAP2PLUS=y
|
||||
# CONFIG_ARCH_OMAP2 is not set
|
||||
CONFIG_ARCH_OMAP3=y
|
||||
CONFIG_ARCH_OMAP4=y
|
||||
CONFIG_ARCH_PICOXCELL=y
|
||||
CONFIG_ARCH_ROCKCHIP=y
|
||||
CONFIG_ARCH_SOCFPGA=y
|
||||
CONFIG_ARCH_SUNXI=y
|
||||
CONFIG_ARCH_TEGRA=y
|
||||
CONFIG_ARCH_U8500=y
|
||||
# CONFIG_ARCH_VIRT is not set
|
||||
|
@ -30,7 +31,6 @@ CONFIG_CACHE_TAUROS2=y
|
|||
CONFIG_MV_XOR=y
|
||||
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
|
||||
|
@ -42,47 +42,41 @@ CONFIG_RTC_DRV_MV=m
|
|||
CONFIG_MVNETA=m
|
||||
CONFIG_GPIO_MVEBU=y
|
||||
CONFIG_MVEBU_CLK_CORE=y
|
||||
CONFIG_MVEBU_CLK_COREDIV=y
|
||||
CONFIG_MVEBU_CLK_GATING=y
|
||||
CONFIG_MMC_MVSDIO=m
|
||||
CONFIG_SPI_ORION=m
|
||||
CONFIG_USB_MV_UDC=m
|
||||
CONFIG_MVEBU_MBUS=y
|
||||
CONFIG_PHY_MVEBU_SATA=y
|
||||
CONFIG_ARMADA_THERMAL=m
|
||||
CONFIG_DRM_ARMADA=m
|
||||
|
||||
# omap
|
||||
CONFIG_ARCH_OMAP2PLUS_TYPICAL=y
|
||||
# CONFIG_ARCH_OMAP2 is not set
|
||||
CONFIG_ARCH_OMAP3=y
|
||||
CONFIG_ARCH_OMAP4=y
|
||||
CONFIG_SOC_OMAP5=y
|
||||
# CONFIG_SOC_DRA7XX is not set
|
||||
# CONFIG_SOC_OMAP2420 is not set
|
||||
# CONFIG_SOC_OMAP2430 is not set
|
||||
CONFIG_SOC_OMAP3430=y
|
||||
CONFIG_SOC_TI81XX=y
|
||||
CONFIG_MACH_OMAP_GENERIC=y
|
||||
CONFIG_MACH_OMAP3_BEAGLE=y
|
||||
CONFIG_MACH_CRANEBOARD=y
|
||||
CONFIG_MACH_DEVKIT8000=y
|
||||
# CONFIG_MACH_NOKIA_RX51 is not set
|
||||
CONFIG_MACH_OMAP_3630SDP=y
|
||||
CONFIG_MACH_OMAP_GENERIC=y
|
||||
CONFIG_MACH_OMAP_LDP=y
|
||||
CONFIG_MACH_OMAP3_BEAGLE=y
|
||||
# CONFIG_MACH_OMAP3EVM is not set
|
||||
CONFIG_MACH_OMAP_3430SDP=y
|
||||
CONFIG_MACH_OMAP3530_LV_SOM=y
|
||||
# CONFIG_MACH_OMAP3517EVM is not set
|
||||
CONFIG_MACH_OMAP3_PANDORA=y
|
||||
CONFIG_MACH_OMAP3_TORPEDO=y
|
||||
CONFIG_MACH_OVERO=y
|
||||
# CONFIG_MACH_OMAP3EVM is not set
|
||||
# CONFIG_MACH_OMAP3517EVM is not set
|
||||
CONFIG_MACH_CRANEBOARD=y
|
||||
CONFIG_MACH_OMAP3_PANDORA=y
|
||||
CONFIG_MACH_TOUCHBOOK=y
|
||||
CONFIG_MACH_OMAP_3430SDP=y
|
||||
# CONFIG_MACH_NOKIA_N8X0 is not set
|
||||
# CONFIG_MACH_NOKIA_RM680 is not set
|
||||
# CONFIG_MACH_NOKIA_RX51 is not set
|
||||
CONFIG_MACH_OMAP_ZOOM2=y
|
||||
CONFIG_MACH_OMAP_ZOOM3=y
|
||||
CONFIG_MACH_CM_T35=y
|
||||
CONFIG_MACH_CM_T3517=y
|
||||
CONFIG_MACH_IGEP0030=y
|
||||
CONFIG_MACH_SBC3530=y
|
||||
CONFIG_MACH_OMAP_3630SDP=y
|
||||
# CONFIG_MACH_TI8168EVM is not set
|
||||
# CONFIG_MACH_TI8148EVM is not set
|
||||
|
||||
|
@ -106,8 +100,6 @@ CONFIG_OMAP_IOVMM=m
|
|||
CONFIG_HWSPINLOCK_OMAP=m
|
||||
CONFIG_OMAP3_EMU=y
|
||||
# CONFIG_OMAP3_SDRC_AC_TIMING is not set
|
||||
CONFIG_OMAP_WATCHDOG=m
|
||||
CONFIG_TWL4030_WATCHDOG=m
|
||||
|
||||
CONFIG_SERIAL_OMAP=y
|
||||
CONFIG_SERIAL_OMAP_CONSOLE=y
|
||||
|
@ -131,14 +123,13 @@ CONFIG_TWL6040_CORE=y
|
|||
CONFIG_CLK_TWL6040=m
|
||||
CONFIG_OMAP_INTERCONNECT=m
|
||||
CONFIG_MFD_OMAP_USB_HOST=y
|
||||
CONFIG_MTD_ONENAND_OMAP2=m
|
||||
CONFIG_HDQ_MASTER_OMAP=m
|
||||
CONFIG_REGULATOR_TWL4030=y
|
||||
CONFIG_BACKLIGHT_PANDORA=m
|
||||
CONFIG_OMAP_OCP2SCP=m
|
||||
CONFIG_USB_EHCI_HCD_OMAP=m
|
||||
CONFIG_USB_OHCI_HCD_PLATFORM=m
|
||||
CONFIG_USB_OHCI_HCD_OMAP3=y
|
||||
CONFIG_USB_OHCI_HCD_OMAP3=m
|
||||
CONFIG_USB_MUSB_AM35X=m
|
||||
CONFIG_USB_MUSB_OMAP2PLUS=m
|
||||
CONFIG_OMAP_CONTROL_USB=m
|
||||
|
@ -153,11 +144,11 @@ CONFIG_TWL6030_GPADC=m
|
|||
|
||||
# OMAP5 (possibly other devices too)
|
||||
CONFIG_MFD_PALMAS=y
|
||||
CONFIG_PINCTRL_PALMAS=y
|
||||
CONFIG_EXTCON_PALMAS=m
|
||||
CONFIG_RTC_DRV_PALMAS=m
|
||||
CONFIG_REGULATOR_PALMAS=m
|
||||
CONFIG_GPIO_PALMAS=y
|
||||
CONFIG_PINCTRL_PALMAS=y
|
||||
CONFIG_REGULATOR_PALMAS=y
|
||||
CONFIG_RTC_DRV_PALMAS=m
|
||||
|
||||
CONFIG_WL_TI=y
|
||||
CONFIG_WLCORE_SDIO=m
|
||||
|
@ -167,7 +158,9 @@ CONFIG_WILINK_PLATFORM_DATA=y
|
|||
CONFIG_MFD_WL1273_CORE=m
|
||||
CONFIG_NFC_WILINK=m
|
||||
|
||||
CONFIG_MTD_ONENAND_OMAP2=m
|
||||
CONFIG_MTD_NAND_OMAP2=m
|
||||
CONFIG_MTD_NAND_OMAP_BCH=y
|
||||
CONFIG_SPI_OMAP24XX=m
|
||||
CONFIG_MFD_TI_SSP=m
|
||||
CONFIG_SPI_TI_SSP=m
|
||||
|
@ -182,7 +175,7 @@ CONFIG_TOUCHSCREEN_TI_TSCADC=m
|
|||
|
||||
# OMAP thermal temp. Can likely be built as module but doesn't autoload so build in to ensure performance on PandaES
|
||||
CONFIG_OMAP_BANDGAP=y
|
||||
CONFIG_TI_SOC_THERMAL=m
|
||||
CONFIG_TI_SOC_THERMAL=y
|
||||
CONFIG_TI_THERMAL=y
|
||||
CONFIG_OMAP4_THERMAL=y
|
||||
CONFIG_OMAP5_THERMAL=y
|
||||
|
@ -202,6 +195,7 @@ CONFIG_PWM_TWL_LED=m
|
|||
CONFIG_CRYPTO_DEV_OMAP_SHAM=m
|
||||
CONFIG_CRYPTO_DEV_OMAP_AES=m
|
||||
CONFIG_HW_RANDOM_OMAP=m
|
||||
CONFIG_HW_RANDOM_OMAP3_ROM=m
|
||||
|
||||
CONFIG_DRM_OMAP=m
|
||||
CONFIG_DRM_OMAP_NUM_CRTCS=2
|
||||
|
@ -237,6 +231,7 @@ CONFIG_DISPLAY_PANEL_LGPHILIPS_LB035Q02=m
|
|||
CONFIG_DISPLAY_PANEL_SHARP_LS037V7DW01=m
|
||||
CONFIG_DISPLAY_PANEL_TPO_TD043MTEA1=m
|
||||
CONFIG_DISPLAY_PANEL_NEC_NL8048HL11=m
|
||||
CONFIG_DISPLAY_PANEL_TPO_TD028TTEC1=m
|
||||
|
||||
# Enable V4L2 drivers for OMAP2+
|
||||
CONFIG_MEDIA_CONTROLLER=y
|
||||
|
@ -301,40 +296,40 @@ CONFIG_SOC_AM33XX=y
|
|||
CONFIG_SOC_AM43XX=y
|
||||
CONFIG_AM335X_CONTROL_USB=m
|
||||
CONFIG_AM335X_PHY_USB=m
|
||||
CONFIG_USB_MUSB_AM335X_CHILD=y
|
||||
CONFIG_USB_MUSB_AM335X_CHILD=m
|
||||
CONFIG_TI_CPPI41=m
|
||||
CONFIG_USB_TI_CPPI41_DMA=y
|
||||
CONFIG_MFD_TI_AM335X_TSCADC=m
|
||||
CONFIG_TI_ST=m
|
||||
CONFIG_TI_DAC7512=m
|
||||
CONFIG_TI_DAVINCI_CPDMA=m
|
||||
CONFIG_TI_DAVINCI_EMAC=m
|
||||
CONFIG_TI_DAVINCI_MDIO=m
|
||||
CONFIG_TI_DAVINCI_CPDMA=m
|
||||
CONFIG_TI_CPSW=m
|
||||
CONFIG_TI_CPSW_PHY_SEL=y
|
||||
CONFIG_TI_CPTS=y
|
||||
# Needed for BBone White
|
||||
CONFIG_REGULATOR_TPS65217=y
|
||||
CONFIG_TI_EMIF=m
|
||||
CONFIG_DRM_TILCDC=m
|
||||
CONFIG_SPI_DAVINCI=m
|
||||
CONFIG_SND_DAVINCI_SOC=m
|
||||
CONFIG_SND_DAVINCI_SOC_I2S=m
|
||||
CONFIG_SND_DAVINCI_SOC_MCASP=m
|
||||
CONFIG_SND_DAVINCI_SOC_VCIF=m
|
||||
CONFIG_SND_DAVINCI_SOC_GENERIC_EVM=m
|
||||
CONFIG_SND_AM33XX_SOC_EVM=m
|
||||
CONFIG_REGULATOR_TI_ABB=m
|
||||
CONFIG_TI_PRIV_EDMA=y
|
||||
CONFIG_TI_EDMA=y
|
||||
# Terribly unstable so disable for now
|
||||
# CONFIG_USB_TI_CPPI41_DMA is not set
|
||||
# CONFIG_TI_CPPI41 is not set
|
||||
CONFIG_MFD_TI_AM335X_TSCADC=m
|
||||
CONFIG_CHARGER_BQ24190=m
|
||||
CONFIG_TI_ADC081C=m
|
||||
CONFIG_TI_AM335X_ADC=m
|
||||
CONFIG_PWM_TIPWMSS=y
|
||||
|
||||
# Allwinner a1x
|
||||
CONFIG_PINCTRL_SUNXI=y
|
||||
CONFIG_SUNXI_WATCHDOG=m
|
||||
CONFIG_MDIO_SUN4I=m
|
||||
CONFIG_NET_VENDOR_ALLWINNER=y
|
||||
CONFIG_SUN4I_EMAC=m
|
||||
# CONFIG_GPIO_DAVINCI is not set
|
||||
# CONFIG_DAVINCI_WATCHDOG is not set
|
||||
|
||||
# i.MX
|
||||
CONFIG_MXC_IRQ_PRIOR=y
|
||||
# CONFIG_MXC_DEBUG_BOARD is not set
|
||||
CONFIG_SOC_IMX50=y
|
||||
CONFIG_SOC_IMX53=y
|
||||
CONFIG_SOC_IMX6Q=y
|
||||
CONFIG_SOC_IMX6SL=y
|
||||
|
@ -344,6 +339,8 @@ CONFIG_MACH_IMX51_DT=y
|
|||
CONFIG_ARM_IMX6Q_CPUFREQ=m
|
||||
CONFIG_IMX_THERMAL=m
|
||||
CONFIG_PATA_IMX=m
|
||||
CONFIG_PCI_IMX6=y
|
||||
# CONFIG_USB_EHCI_MXC is not set
|
||||
CONFIG_USB_CHIPIDEA=m
|
||||
CONFIG_USB_CHIPIDEA_UDC=y
|
||||
CONFIG_USB_CHIPIDEA_HOST=y
|
||||
|
@ -352,13 +349,18 @@ CONFIG_USB_FSL_USB2=m
|
|||
CONFIG_NET_VENDOR_FREESCALE=y
|
||||
CONFIG_FEC=m
|
||||
CONFIG_KEYBOARD_IMX=m
|
||||
CONFIG_KEYBOARD_STMPE=m
|
||||
CONFIG_TOUCHSCREEN_STMPE=m
|
||||
CONFIG_SERIAL_IMX=y
|
||||
CONFIG_SERIAL_IMX_CONSOLE=y
|
||||
CONFIG_PINCTRL_IMX6SL=y
|
||||
CONFIG_I2C_IMX=m
|
||||
CONFIG_STMPE_I2C=y
|
||||
CONFIG_SPI_IMX=m
|
||||
CONFIG_STMPE_SPI=y
|
||||
CONFIG_MFD_MC13783=m
|
||||
CONFIG_MFD_MC13XXX_SPI=m
|
||||
CONFIG_MFD_STMPE=y
|
||||
CONFIG_W1_MASTER_MXC=m
|
||||
CONFIG_IMX_WEIM=y
|
||||
CONFIG_IMX2_WDT=m
|
||||
|
@ -366,8 +368,10 @@ CONFIG_HW_RANDOM_MXC_RNGA=m
|
|||
CONFIG_CRYPTO_DEV_SAHARA=m
|
||||
CONFIG_RTC_DRV_SNVS=m
|
||||
# CONFIG_FB_MX3 is not set
|
||||
# CONFIG_FB_IMX is not set
|
||||
|
||||
CONFIG_SND_IMX_SOC=m
|
||||
CONFIG_SND_SOC_FSL_SPDIF=m
|
||||
CONFIG_SND_SOC_FSL_SSI=m
|
||||
CONFIG_SND_SOC_FSL_UTILS=m
|
||||
CONFIG_SND_SOC_IMX_SSI=m
|
||||
|
@ -379,7 +383,6 @@ CONFIG_SND_SOC_IMX_WM8962=m
|
|||
CONFIG_SND_SOC_IMX_MC13783=m
|
||||
CONFIG_SND_SOC_IMX_SPDIF=m
|
||||
|
||||
CONFIG_USB_EHCI_MXC=m
|
||||
CONFIG_USB_IMX21_HCD=m
|
||||
CONFIG_USB_MXS_PHY=m
|
||||
CONFIG_MMC_DW_SOCFPGA=m
|
||||
|
@ -396,7 +399,6 @@ CONFIG_AHCI_IMX=m
|
|||
# CONFIG_MXS_DMA is not set
|
||||
|
||||
CONFIG_PWM_IMX=m
|
||||
CONFIG_BACKLIGHT_PWM=m
|
||||
CONFIG_DRM_IMX=m
|
||||
CONFIG_DRM_IMX_FB_HELPER=m
|
||||
CONFIG_DRM_IMX_HDMI=m
|
||||
|
@ -428,6 +430,7 @@ CONFIG_INPUT_DA9052_ONKEY=m
|
|||
CONFIG_INPUT_DA9055_ONKEY=m
|
||||
CONFIG_GPIO_DA9052=m
|
||||
CONFIG_GPIO_DA9055=m
|
||||
CONFIG_GPIO_STMPE=y
|
||||
CONFIG_BATTERY_DA9052=m
|
||||
CONFIG_SENSORS_DA9052_ADC=m
|
||||
CONFIG_SENSORS_DA9055=m
|
||||
|
@ -480,15 +483,9 @@ CONFIG_AB8500_BM=y
|
|||
CONFIG_AB8500_GPADC=y
|
||||
CONFIG_SENSORS_AB8500=m
|
||||
CONFIG_STE_MODEM_RPROC=m
|
||||
CONFIG_CW1200=m
|
||||
CONFIG_CW1200_WLAN_SDIO=m
|
||||
CONFIG_CW1200_WLAN_SPI=m
|
||||
CONFIG_UX500_WATCHDOG=m
|
||||
CONFIG_IIO_ST_ACCEL_3AXIS=m
|
||||
CONFIG_IIO_ST_GYRO_3AXIS=m
|
||||
|
||||
CONFIG_IIO_ST_GYRO_I2C_3AXIS=m
|
||||
CONFIG_IIO_ST_GYRO_SPI_3AXIS=m
|
||||
CONFIG_IIO_ST_MAGN_3AXIS=m
|
||||
CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
|
||||
CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
|
||||
CONFIG_IIO_ST_PRESS=m
|
||||
|
@ -501,10 +498,12 @@ CONFIG_IIO_ST_SENSORS_CORE=m
|
|||
# tegra
|
||||
CONFIG_ARCH_TEGRA_2x_SOC=y
|
||||
CONFIG_ARCH_TEGRA_3x_SOC=y
|
||||
# CONFIG_ARCH_TEGRA_114_SOC is not set
|
||||
CONFIG_ARCH_TEGRA_114_SOC=y
|
||||
CONFIG_ARCH_TEGRA_124_SOC=y
|
||||
CONFIG_ARM_TEGRA_CPUFREQ=y
|
||||
CONFIG_TEGRA20_MC=y
|
||||
CONFIG_TEGRA30_MC=y
|
||||
CONFIG_TRUSTED_FOUNDATIONS=y
|
||||
|
||||
CONFIG_SERIAL_TEGRA=y
|
||||
|
||||
|
@ -514,12 +513,13 @@ CONFIG_TEGRA_IOMMU_SMMU=y
|
|||
CONFIG_MMC_SDHCI_TEGRA=m
|
||||
|
||||
CONFIG_I2C_TEGRA=m
|
||||
CONFIG_I2C_MUX_PCA954x=m
|
||||
|
||||
CONFIG_TEGRA_SYSTEM_DMA=y
|
||||
CONFIG_TEGRA_EMC_SCALING_ENABLE=y
|
||||
CONFIG_TEGRA_AHB=y
|
||||
CONFIG_TEGRA20_APB_DMA=y
|
||||
# CONFIG_SPI_TEGRA114 is not set
|
||||
CONFIG_SPI_TEGRA114=m
|
||||
CONFIG_SPI_TEGRA20_SFLASH=m
|
||||
CONFIG_SPI_TEGRA20_SLINK=m
|
||||
|
||||
|
@ -533,12 +533,15 @@ CONFIG_RTC_DRV_TEGRA=m
|
|||
|
||||
CONFIG_SND_SOC_TEGRA=m
|
||||
CONFIG_SND_SOC_TEGRA_ALC5632=m
|
||||
CONFIG_SND_SOC_TEGRA_MAX98090=m
|
||||
CONFIG_SND_SOC_TEGRA_RT5640=m
|
||||
CONFIG_SND_SOC_TEGRA_TRIMSLICE=m
|
||||
CONFIG_SND_SOC_TEGRA_WM8753=m
|
||||
CONFIG_SND_SOC_TEGRA_WM8903=m
|
||||
CONFIG_SND_SOC_TEGRA_WM9712=m
|
||||
CONFIG_SND_SOC_TEGRA20_AC97=m
|
||||
CONFIG_SND_SOC_TEGRA20_DAS=m
|
||||
CONFIG_SND_SOC_TEGRA20_SPDIF=m
|
||||
CONFIG_SND_SOC_TEGRA30_AHUB=m
|
||||
CONFIG_SND_SOC_TEGRA30_I2S=m
|
||||
|
||||
|
@ -559,14 +562,16 @@ CONFIG_PWM_TEGRA=m
|
|||
|
||||
CONFIG_TEGRA_HOST1X=m
|
||||
CONFIG_TEGRA_HOST1X_FIREWALL=y
|
||||
|
||||
CONFIG_DRM_TEGRA=y
|
||||
# CONFIG_DRM_TEGRA_STAGING is not set
|
||||
CONFIG_DRM_TEGRA=m
|
||||
CONFIG_DRM_TEGRA_FBDEV=y
|
||||
# CONFIG_DRM_TEGRA_DEBUG is not set
|
||||
CONFIG_DRM_TEGRA_STAGING=y
|
||||
CONFIG_DRM_PANEL=y
|
||||
CONFIG_DRM_PANEL_SIMPLE=m
|
||||
|
||||
|
||||
CONFIG_CRYPTO_DEV_TEGRA_AES=m
|
||||
|
||||
CONFIG_LEDS_RENESAS_TPU=y
|
||||
CONFIG_GPIO_PCA953X=m
|
||||
|
||||
# OLPC XO
|
||||
|
@ -586,6 +591,7 @@ CONFIG_XILINX_EMACLITE=m
|
|||
CONFIG_GPIO_XILINX=y
|
||||
CONFIG_I2C_XILINX=m
|
||||
CONFIG_SPI_XILINX=m
|
||||
CONFIG_MMC_SDHCI_OF_ARASAN=m
|
||||
|
||||
# Multi function devices
|
||||
CONFIG_MFD_88PM800=m
|
||||
|
@ -625,13 +631,13 @@ CONFIG_REGULATOR_MAX8973=m
|
|||
|
||||
# CONFIG_BATTERY_RX51 is not set
|
||||
# CONFIG_IR_RX51 is not set
|
||||
# CONFIG_GENERIC_CPUFREQ_CPU0 is not set
|
||||
# CONFIG_MFD_SMSC is not set
|
||||
# CONFIG_MFD_SEC_CORE is not set
|
||||
# CONFIG_MFD_LP8788 is not set
|
||||
# CONFIG_MFD_MAX77686 is not set
|
||||
# CONFIG_MFD_MAX77693 is not set
|
||||
# CONFIG_MFD_MAX8997 is not set
|
||||
# CONFIG_MFD_MAX14577 is not set
|
||||
# CONFIG_MFD_AAT2870_CORE is not set
|
||||
# CONFIG_MFD_RC5T583 is not set
|
||||
# CONFIG_MFD_SMSC is not set
|
||||
|
@ -649,10 +655,9 @@ CONFIG_REGULATOR_MAX8973=m
|
|||
# CONFIG_VIRTUALIZATION is not set
|
||||
# CONFIG_POWER_RESET_QNAP is not set
|
||||
# CONFIG_OMAP2_DSS_DEBUG is not set
|
||||
# CONFIG_DRM_TEGRA_DEBUG is not set
|
||||
# CONFIG_CRYPTO_DEV_UX500_DEBUG is not set
|
||||
# CONFIG_AB8500_DEBUG is not set
|
||||
|
||||
# CONFIG_SOC_VF610 is not set
|
||||
# CONFIG_ARM_CCI is not set
|
||||
# CONFIG_MMC_TMIO is not set
|
||||
# CONFIG_SND_SOC_ADI is not set
|
||||
|
|
|
@ -8,6 +8,7 @@ CONFIG_ARM=y
|
|||
CONFIG_ARCH_MULTI_V7=y
|
||||
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_CMDLINE_FROM_BOOTLOADER=y
|
||||
CONFIG_HAVE_ARM_ARCH_TIMER=y
|
||||
CONFIG_HAVE_ARM_TWD=y
|
||||
CONFIG_AEABI=y
|
||||
|
@ -49,8 +50,10 @@ CONFIG_ALWAYS_USE_PERSISTENT_CLOCK=y
|
|||
|
||||
# Platforms enabled/disabled globally on ARMv7
|
||||
CONFIG_ARCH_HIGHBANK=y
|
||||
CONFIG_ARCH_SUNXI=y
|
||||
CONFIG_ARCH_VEXPRESS_CA9X4=y
|
||||
CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y
|
||||
# CONFIG_ARCH_VEXPRESS_SPC is not set
|
||||
# CONFIG_ARCH_BCM is not set
|
||||
# CONFIG_PLAT_SPEAR is not set
|
||||
# CONFIG_ARCH_STI is not set
|
||||
|
@ -58,14 +61,9 @@ CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y
|
|||
# CONFIG_ARCH_U8500 is not set
|
||||
# CONFIG_ARCH_WM8850 is not set
|
||||
# CONFIG_ARCH_SHMOBILE_MULTI is not set
|
||||
|
||||
# highbank
|
||||
# 2013/04/19 - stability issues
|
||||
CONFIG_EDAC_HIGHBANK_MC=m
|
||||
CONFIG_EDAC_HIGHBANK_L2=m
|
||||
CONFIG_SATA_HIGHBANK=m
|
||||
CONFIG_ARM_HIGHBANK_CPUFREQ=m
|
||||
CONFIG_ARM_HIGHBANK_CPUIDLE=y
|
||||
# CONFIG_ARCH_BERLIN is not set
|
||||
# CONFIG_ARCH_HI3xxx is not set
|
||||
# CONFIG_ARCH_MSM_DT is not set
|
||||
|
||||
# errata
|
||||
# v5/v6
|
||||
|
@ -110,7 +108,7 @@ CONFIG_RCU_FANOUT=32
|
|||
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_CPU_IDLE_MULTIPLE_DRIVERS is not set
|
||||
|
||||
# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
|
||||
|
||||
|
@ -119,8 +117,6 @@ CONFIG_LSM_MMAP_MIN_ADDR=32768
|
|||
|
||||
CONFIG_XZ_DEC_ARM=y
|
||||
|
||||
CONFIG_ARM_CPU_SUSPEND=y
|
||||
|
||||
CONFIG_LOCAL_TIMERS=y
|
||||
CONFIG_UACCESS_WITH_MEMCPY=y
|
||||
CONFIG_CC_STACKPROTECTOR=y
|
||||
|
@ -153,10 +149,39 @@ CONFIG_RTC_DRV_PL031=y
|
|||
|
||||
CONFIG_PL330_DMA=m
|
||||
CONFIG_AMBA_PL08X=y
|
||||
CONFIG_ARM_SP805_WATCHDOG=m
|
||||
CONFIG_GPIO_PL061=y
|
||||
CONFIG_PL320_MBOX=y
|
||||
|
||||
# highbank
|
||||
CONFIG_EDAC_HIGHBANK_MC=m
|
||||
CONFIG_EDAC_HIGHBANK_L2=m
|
||||
CONFIG_SATA_HIGHBANK=m
|
||||
CONFIG_ARM_HIGHBANK_CPUFREQ=m
|
||||
# CONFIG_ARM_HIGHBANK_CPUIDLE is not set
|
||||
|
||||
# Allwinner a1x
|
||||
CONFIG_PINCTRL_SUNXI=y
|
||||
CONFIG_SUNXI_WATCHDOG=m
|
||||
CONFIG_MDIO_SUN4I=m
|
||||
CONFIG_NET_VENDOR_ALLWINNER=y
|
||||
CONFIG_SUN4I_EMAC=m
|
||||
CONFIG_STMMAC_PLATFORM=y
|
||||
CONFIG_DWMAC_SUNXI=y
|
||||
CONFIG_EEPROM_SUNXI_SID=m
|
||||
CONFIG_RTC_DRV_SUNXI=m
|
||||
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_I2C=m
|
||||
CONFIG_REGMAP_SPI=m
|
||||
CONFIG_REGMAP_SPMI=m
|
||||
CONFIG_REGMAP_MMIO=m
|
||||
CONFIG_REGMAP_IRQ=y
|
||||
|
||||
# Power management
|
||||
CONFIG_PM_OPP=y
|
||||
CONFIG_ARM_CPU_SUSPEND=y
|
||||
CONFIG_GENERIC_CPUFREQ_CPU0=m
|
||||
|
||||
# usb
|
||||
CONFIG_USB_OTG=y
|
||||
# CONFIG_USB_OTG_WHITELIST is not set
|
||||
|
@ -201,6 +226,8 @@ CONFIG_USB_CONFIGFS_OBEX=y
|
|||
# CONFIG_USB_CONFIGFS_RNDIS is not set
|
||||
CONFIG_USB_CONFIGFS_SERIAL=y
|
||||
CONFIG_USB_CONFIGFS_STORAGE=y
|
||||
# CONFIG_USB_CONFIGFS_F_LB_SS is not set
|
||||
# CONFIG_USB_CONFIGFS_F_FS is not set
|
||||
|
||||
# CONFIG_MUSB_PIO_ONLY is not set
|
||||
# CONFIG_USB_MUSB_DEBUG is not set
|
||||
|
@ -243,25 +270,30 @@ CONFIG_PINCTRL_SINGLE=y
|
|||
CONFIG_GENERIC_PINCONF=y
|
||||
# CONFIG_PINCTRL_SAMSUNG is not set
|
||||
# CONFIG_PINCTRL_EXYNOS4 is not set
|
||||
# CONFIG_PINCTRL_CAPRI is not set
|
||||
# CONFIG_PINCTRL_MSM8X74 is not set
|
||||
|
||||
# GPIO
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=m
|
||||
# CONFIG_GPIO_EM is not set
|
||||
CONFIG_GPIO_74X164=m
|
||||
CONFIG_GPIO_ADNP=m
|
||||
CONFIG_GPIO_MCP23S08=m
|
||||
CONFIG_SERIAL_8250_EM=m
|
||||
CONFIG_INPUT_GPIO_TILT_POLLED=m
|
||||
CONFIG_MDIO_BUS_MUX_GPIO=m
|
||||
CONFIG_MDIO_BUS_MUX_MMIOREG=m
|
||||
CONFIG_LEDS_GPIO=m
|
||||
CONFIG_GPIO_MAX7301=m
|
||||
CONFIG_GPIO_MC33880=m
|
||||
CONFIG_GPIO_74X164=m
|
||||
CONFIG_GPIO_TPS65910=y
|
||||
CONFIG_GPIO_TPS65912=m
|
||||
CONFIG_LEDS_GPIO=m
|
||||
CONFIG_MDIO_BUS_MUX=m
|
||||
CONFIG_MDIO_BUS_MUX_GPIO=m
|
||||
CONFIG_MDIO_BUS_MUX_MMIOREG=m
|
||||
CONFIG_INPUT_GPIO=m
|
||||
CONFIG_INPUT_GPIO_BEEPER=m
|
||||
CONFIG_INPUT_GPIO_TILT_POLLED=m
|
||||
CONFIG_INPUT_MATRIXKMAP=m
|
||||
CONFIG_KEYBOARD_GPIO=m
|
||||
CONFIG_KEYBOARD_MATRIX=m
|
||||
# CONFIG_GPIO_RCAR is not set
|
||||
CONFIG_W1_MASTER_GPIO=m
|
||||
CONFIG_CHARGER_GPIO=m
|
||||
|
||||
# SPI
|
||||
CONFIG_SPI=y
|
||||
|
@ -287,10 +319,16 @@ CONFIG_NFC_NCI_SPI=y
|
|||
# i2c
|
||||
CONFIG_I2C_DESIGNWARE_CORE=m
|
||||
CONFIG_I2C_DESIGNWARE_PLATFORM=m
|
||||
CONFIG_I2C_MV64XXX=m
|
||||
|
||||
# HW crypto and rng
|
||||
CONFIG_CRYPTO_SHA1_ARM=m
|
||||
CONFIG_CRYPTO_AES_ARM=m
|
||||
# CONFIG_CRYPTO_AES_ARM_BS is not set
|
||||
|
||||
# DMA
|
||||
CONFIG_TI_PRIV_EDMA=y
|
||||
CONFIG_TI_EDMA=y
|
||||
|
||||
# EDAC
|
||||
CONFIG_EDAC=y
|
||||
|
@ -313,6 +351,22 @@ CONFIG_MTD_DATAFLASH=m
|
|||
CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y
|
||||
CONFIG_MTD_DATAFLASH_OTP=y
|
||||
CONFIG_MTD_M25P80=m
|
||||
CONFIG_MTD_NAND=m
|
||||
CONFIG_MTD_NAND_CAFE=m
|
||||
# CONFIG_MTD_NAND_DENALI is not set
|
||||
CONFIG_MTD_NAND_DOCG4=m
|
||||
CONFIG_MTD_NAND_ECC_SMC=y
|
||||
CONFIG_MTD_NAND_FSMC=m
|
||||
CONFIG_MTD_NAND_GPIO=m
|
||||
CONFIG_MTD_NAND_MXC=m
|
||||
CONFIG_MTD_NAND_NANDSIM=m
|
||||
CONFIG_MTD_NAND_ORION=m
|
||||
CONFIG_MTD_NAND_PLATFORM=m
|
||||
CONFIG_MTD_NAND_PXA3xx=m
|
||||
CONFIG_MTD_NAND_RICOH=m
|
||||
CONFIG_MTD_NAND_TMIO=m
|
||||
CONFIG_MTD_SPINAND_MT29F=m
|
||||
CONFIG_MTD_SPINAND_ONDIEECC=y
|
||||
CONFIG_MTD_SST25L=m
|
||||
CONFIG_EEPROM_AT25=m
|
||||
CONFIG_EEPROM_93XX46=m
|
||||
|
@ -329,6 +383,7 @@ CONFIG_SPI_DW_PCI=m
|
|||
# CONFIG_MMC_DW_SOCFPGA is not set
|
||||
# CONFIG_MMC_DW_EXYNOS is not set
|
||||
# CONFIG_MMC_DW_IDMAC is not set
|
||||
# CONFIG_MMC_DW_K3 is not set
|
||||
CONFIG_USB_DWC2=m
|
||||
# CONFIG_USB_DWC2_DEBUG is not set
|
||||
# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
|
||||
|
@ -337,7 +392,10 @@ CONFIG_USB_DWC3_OMAP=m
|
|||
CONFIG_USB_DWC3_EXYNOS=m
|
||||
CONFIG_USB_DWC3_PCI=m
|
||||
# CONFIG_USB_DWC3_DEBUG is not set
|
||||
# CONFIG_USB_DWC3_KEYSTONE is not set
|
||||
CONFIG_DW_WATCHDOG=m
|
||||
CONFIG_PCIE_DW=y
|
||||
CONFIG_PCI_EXYNOS=y
|
||||
|
||||
# Sound
|
||||
CONFIG_SND_SOC=m
|
||||
|
@ -375,11 +433,12 @@ CONFIG_RTC_DRV_TPS80031=m
|
|||
# Regulators
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_RFKILL_REGULATOR=m
|
||||
# CONFIG_REGULATOR_DUMMY is not set
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=m
|
||||
CONFIG_REGULATOR_DUMMY=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_REGULATOR_VIRTUAL_CONSUMER=m
|
||||
CONFIG_REGULATOR_USERSPACE_CONSUMER=m
|
||||
CONFIG_REGULATOR_GPIO=m
|
||||
# CONFIG_REGULATOR_ACT8865 is not set
|
||||
CONFIG_REGULATOR_AD5398=m
|
||||
CONFIG_REGULATOR_DA9210=m
|
||||
CONFIG_REGULATOR_FAN53555=m
|
||||
|
@ -407,6 +466,10 @@ CONFIG_REGULATOR_TPS65912=m
|
|||
CONFIG_REGULATOR_TPS80031=m
|
||||
|
||||
CONFIG_CHARGER_MANAGER=y
|
||||
CONFIG_CHARGER_BQ2415X=m
|
||||
CONFIG_CHARGER_BQ24190=m
|
||||
CONFIG_CHARGER_BQ24735=m
|
||||
CONFIG_CHARGER_GPIO=m
|
||||
CONFIG_CHARGER_TPS65090=m
|
||||
CONFIG_PDA_POWER=m
|
||||
CONFIG_GENERIC_ADC_BATTERY=m
|
||||
|
@ -452,22 +515,11 @@ CONFIG_LEDS_DAC124S085=m
|
|||
CONFIG_LEDS_PWM=m
|
||||
CONFIG_BMP085_SPI=m
|
||||
|
||||
# Contiguous Memory Allocator
|
||||
CONFIG_OF_RESERVED_MEM=y
|
||||
CONFIG_CMA=y
|
||||
CONFIG_DMA_CMA=y
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
CONFIG_CMA_SIZE_MBYTES=16
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MIN is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_ALIGNMENT=8
|
||||
CONFIG_CMA_AREAS=7
|
||||
CONFIG_SRAM=y
|
||||
|
||||
# Ethernet
|
||||
CONFIG_KS8851=m
|
||||
CONFIG_KS8851_MLL=m
|
||||
CONFIG_ENC28J60=m
|
||||
CONFIG_LIBERTAS_SPI=m
|
||||
CONFIG_P54_SPI=m
|
||||
|
@ -502,13 +554,18 @@ CONFIG_UBIFS_FS_ZLIB=y
|
|||
# Sensors
|
||||
CONFIG_SENSORS_HTU21=m
|
||||
|
||||
# Chromebook
|
||||
CONFIG_MFD_CROS_EC=m
|
||||
CONFIG_MFD_CROS_EC_I2C=m
|
||||
CONFIG_MFD_CROS_EC_SPI=m
|
||||
CONFIG_KEYBOARD_CROS_EC=m
|
||||
|
||||
# Should be in generic
|
||||
CONFIG_BPF_JIT=y
|
||||
|
||||
# CONFIG_NET_VENDOR_CIRRUS is not set
|
||||
# CONFIG_NET_VENDOR_MICROCHIP is not set
|
||||
|
||||
# CONFIG_PATA_PLATFORM is not set
|
||||
|
||||
# CONFIG_DRM_EXYNOS is not set
|
||||
# CONFIG_DRM_TILCDC is not set
|
||||
# CONFIG_DRM_IMX is not set
|
||||
|
@ -529,6 +586,7 @@ CONFIG_BPF_JIT=y
|
|||
# CONFIG_DEPRECATED_PARAM_STRUCT is not set
|
||||
# CONFIG_LATTICE_ECP3_CONFIG is not set
|
||||
# CONFIG_M25PXX_USE_FAST_READ is not set
|
||||
# CONFIG_SERIAL_8250_EM is not set
|
||||
# CONFIG_SERIAL_MAX3100 is not set
|
||||
# CONFIG_SERIAL_MAX310X is not set
|
||||
# CONFIG_SERIAL_IFX6X60 is not set
|
||||
|
@ -536,6 +594,8 @@ CONFIG_BPF_JIT=y
|
|||
# CONFIG_SPI_TOPCLIFF_PCH is not set
|
||||
# CONFIG_SPI_PXA2XX is not set
|
||||
# CONFIG_SPI_FSL_DSPI is not set
|
||||
# CONFIG_FB_XILINX is not set
|
||||
# CONFIG_USB_S3C_HSOTG is not set
|
||||
|
||||
# these modules all fail with missing __bad_udelay
|
||||
# http://www.spinics.net/lists/arm/msg15615.html provides some background
|
||||
|
@ -557,7 +617,5 @@ CONFIG_BPF_JIT=y
|
|||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
# CONFIG_DEBUG_PINCTRL is not set
|
||||
# CONFIG_ARM_DT_BL_CPUFREQ is not set
|
||||
|
||||
# FIX ME
|
||||
# CONFIG_FB_XILINX is not set
|
||||
# CONFIG_DMADEVICES_VDEBUG is not set
|
||||
# CONFIG_DMADEVICES_DEBUG is not set
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
# ARM A15 lpae unified arch kernel
|
||||
CONFIG_ARCH_EXYNOS_MULTI=y
|
||||
CONFIG_ARCH_KEYSTONE=y
|
||||
CONFIG_ARCH_VIRT=y
|
||||
CONFIG_ARCH_EXYNOS5=y
|
||||
|
||||
# CONFIG_ARCH_MVEBU is not set
|
||||
# CONFIG_ARCH_MXC is not set
|
||||
|
@ -10,24 +8,19 @@ CONFIG_ARCH_EXYNOS5=y
|
|||
# CONFIG_ARCH_OMAP4 is not set
|
||||
# CONFIG_SOC_OMAP5 is not set
|
||||
# CONFIG_SOC_AM33XX is not set
|
||||
# CONFIG_SND_AM33XX_SOC_EVM is not set
|
||||
# CONFIG_SOC_AM43XX is not set
|
||||
# CONFIG_SOC_DRA7XX is not set
|
||||
# CONFIG_ARCH_ROCKCHIP is not set
|
||||
# CONFIG_ARCH_SOCFPGA is not set
|
||||
# CONFIG_ARCH_SUNXI is not set
|
||||
# CONFIG_ARCH_TEGRA is not set
|
||||
# CONFIG_ARCH_ZYNQ is not set
|
||||
|
||||
|
||||
# CONFIG_ARCH_EXYNOS4 is not set
|
||||
|
||||
# CONFIG_EXYNOS_ATAGS is not set
|
||||
|
||||
CONFIG_ARM_LPAE=y
|
||||
CONFIG_SYS_SUPPORTS_HUGETLBFS=y
|
||||
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_ARM_VIRT_EXT=y
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_ARM_SMMU=y
|
||||
CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8
|
||||
|
||||
# Cortex-A15
|
||||
|
@ -40,7 +33,7 @@ CONFIG_KVM_ARM_MAX_VCPUS=8
|
|||
CONFIG_KVM_ARM_VGIC=y
|
||||
CONFIG_KVM_ARM_TIMER=y
|
||||
|
||||
CONFIG_XEN=y
|
||||
# CONFIG_XEN is not set
|
||||
CONFIG_XEN_FBDEV_FRONTEND=y
|
||||
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
|
||||
CONFIG_XEN_BLKDEV_FRONTEND=m
|
||||
|
@ -57,8 +50,8 @@ CONFIG_XEN_SYS_HYPERVISOR=y
|
|||
CONFIG_XEN_GNTDEV=y
|
||||
CONFIG_XEN_GRANT_DEV_ALLOC=m
|
||||
CONFIG_XEN_WDT=m
|
||||
# CONFIG_XEN_BALLOON is not set
|
||||
|
||||
CONFIG_MACH_EXYNOS5_DT=y
|
||||
CONFIG_SERIAL_SAMSUNG=y
|
||||
CONFIG_SERIAL_SAMSUNG_CONSOLE=y
|
||||
# CONFIG_SAMSUNG_PM_DEBUG is not set
|
||||
|
@ -69,13 +62,12 @@ CONFIG_SOC_EXYNOS5440=y
|
|||
# CONFIG_ARM_EXYNOS5250_CPUFREQ is not set
|
||||
# CONFIG_ARM_EXYNOS5440_CPUFREQ is not set
|
||||
# CONFIG_ARM_EXYNOS_CPUFREQ is not set
|
||||
# CONFIG_GENERIC_CPUFREQ_CPU0 is not set
|
||||
CONFIG_EXYNOS_THERMAL=m
|
||||
CONFIG_PCI_EXYNOS=y
|
||||
|
||||
CONFIG_ARM_CCI=y
|
||||
CONFIG_TCG_TIS_I2C_INFINEON=m
|
||||
|
||||
# CONFIG_EXYNOS_ATAGS is not set
|
||||
CONFIG_PINCTRL_EXYNOS=y
|
||||
CONFIG_PINCTRL_EXYNOS5440=y
|
||||
CONFIG_EXYNOS_IOMMU=y
|
||||
|
@ -114,11 +106,15 @@ CONFIG_SAMSUNG_USB3PHY=m
|
|||
CONFIG_MMC_DW_EXYNOS=m
|
||||
CONFIG_RTC_DRV_S3C=m
|
||||
|
||||
# Chromebook
|
||||
CONFIG_MFD_CROS_EC=m
|
||||
CONFIG_MFD_CROS_EC_I2C=m
|
||||
CONFIG_MFD_CROS_EC_SPI=m
|
||||
CONFIG_KEYBOARD_CROS_EC=m
|
||||
# TI Keystone
|
||||
CONFIG_KEYSTONE_USB_PHY=m
|
||||
CONFIG_USB_DWC3_KEYSTONE=m
|
||||
CONFIG_GPIO_DAVINCI=y
|
||||
CONFIG_I2C_DAVINCI=m
|
||||
# CONFIG_DAVINCI_WATCHDOG is not set
|
||||
# CONFIG_SPI_DAVINCI is not set
|
||||
# CONFIG_SND_DAVINCI_SOC is not set
|
||||
# CONFIG_TI_SOC_THERMAL is not set
|
||||
|
||||
# Arndale/Origen
|
||||
CONFIG_MFD_MAX8997=y
|
||||
|
@ -137,6 +133,3 @@ CONFIG_S3C_LOWLEVEL_UART_PORT=1
|
|||
# CONFIG_S3C2410_WATCHDOG is not set
|
||||
# CONFIG_MMC_SDHCI_S3C is not set
|
||||
# CONFIG_TEGRA_HOST1X is not set
|
||||
# CONFIG_SPI_DAVINCI is not set
|
||||
# CONFIG_I2C_DAVINCI is not set
|
||||
# CONFIG_TI_SOC_THERMAL is not set
|
||||
|
|
|
@ -26,8 +26,6 @@ CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
|
|||
CONFIG_FAIL_IO_TIMEOUT=y
|
||||
CONFIG_FAIL_MMC_REQUEST=y
|
||||
|
||||
CONFIG_SLUB_DEBUG_ON=y
|
||||
|
||||
CONFIG_LOCK_STAT=y
|
||||
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
|
@ -104,6 +102,7 @@ CONFIG_KDB_KEYBOARD=y
|
|||
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
|
||||
|
||||
CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
|
||||
CONFIG_PERCPU_TEST=m
|
||||
CONFIG_TEST_LIST_SORT=y
|
||||
CONFIG_TEST_STRING_HELPERS=m
|
||||
|
||||
|
|
160
config-generic
160
config-generic
|
@ -61,7 +61,7 @@ CONFIG_PID_NS=y
|
|||
CONFIG_UTS_NS=y
|
||||
CONFIG_IPC_NS=y
|
||||
CONFIG_NET_NS=y
|
||||
# CONFIG_USER_NS is not set
|
||||
CONFIG_USER_NS=y
|
||||
# CONFIG_UIDGID_STRICT_TYPE_CHECKS is not set
|
||||
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
|
@ -72,6 +72,7 @@ CONFIG_PREEMPT_VOLUNTARY=y
|
|||
CONFIG_SLUB=y
|
||||
CONFIG_SLUB_CPU_PARTIAL=y
|
||||
# CONFIG_SLUB_STATS is not set
|
||||
# CONFIG_SLUB_DEBUG_ON is not set
|
||||
|
||||
# CONFIG_AD525X_DPOT is not set
|
||||
# CONFIG_ATMEL_PWM is not set
|
||||
|
@ -127,7 +128,8 @@ CONFIG_MMC=m
|
|||
CONFIG_SDIO_UART=m
|
||||
# CONFIG_MMC_TEST is not set
|
||||
# CONFIG_MMC_DEBUG is not set
|
||||
# CONFIG_MMC_UNSAFE_RESUME is not set
|
||||
# https://lists.fedoraproject.org/pipermail/kernel/2014-February/004889.html
|
||||
CONFIG_MMC_UNSAFE_RESUME=y
|
||||
# CONFIG_MMC_CLKGATE is not set
|
||||
CONFIG_MMC_BLOCK=m
|
||||
CONFIG_MMC_BLOCK_MINORS=8
|
||||
|
@ -147,6 +149,7 @@ CONFIG_MMC_REALTEK_PCI=m
|
|||
CONFIG_MMC_VUB300=m
|
||||
# CONFIG_MMC_SDHCI_PXAV2 is not set
|
||||
# CONFIG_MMC_SDHCI_PXAV3 is not set
|
||||
# CONFIG_MMC_SDHCI_OF_ARASAN is not set
|
||||
|
||||
|
||||
CONFIG_CB710_CORE=m
|
||||
|
@ -181,6 +184,7 @@ CONFIG_INFINIBAND_NES=m
|
|||
CONFIG_INFINIBAND_QIB=m
|
||||
CONFIG_INFINIBAND_QIB_DCA=y
|
||||
# CONFIG_INFINIBAND_OCRDMA is not set
|
||||
# CONFIG_INFINIBAND_USNIC is not set
|
||||
|
||||
#
|
||||
# Executable file formats
|
||||
|
@ -195,7 +199,6 @@ CONFIG_BINFMT_MISC=m
|
|||
# Device Drivers
|
||||
#
|
||||
|
||||
# CONFIG_COMMON_CLK_DEBUG is not set
|
||||
# CONFIG_COMMON_CLK_SI5351 is not set
|
||||
|
||||
#
|
||||
|
@ -309,8 +312,11 @@ CONFIG_HOTPLUG_PCI_ACPI_IBM=m
|
|||
# Block devices
|
||||
#
|
||||
CONFIG_BLK_DEV=y
|
||||
CONFIG_BLK_DEV_NULL_BLK=m
|
||||
CONFIG_BLK_DEV_FD=m
|
||||
# CONFIG_PARIDE is not set
|
||||
CONFIG_ZRAM=m
|
||||
# CONFIG_ZRAM_DEBUG is not set
|
||||
|
||||
CONFIG_BLK_CPQ_DA=m
|
||||
CONFIG_BLK_CPQ_CISS_DA=m
|
||||
|
@ -325,6 +331,7 @@ CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
|
|||
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
|
||||
CONFIG_BLK_DEV_NBD=m
|
||||
CONFIG_BLK_DEV_NVME=m
|
||||
CONFIG_BLK_DEV_SKD=m # 64-bit only but easier to put here
|
||||
CONFIG_BLK_DEV_OSD=m
|
||||
CONFIG_BLK_DEV_RAM=m
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
|
@ -435,8 +442,7 @@ CONFIG_AIC79XX_RESET_DELAY_MS=15000
|
|||
# CONFIG_AIC79XX_DEBUG_ENABLE is not set
|
||||
CONFIG_AIC79XX_DEBUG_MASK=0
|
||||
# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
|
||||
CONFIG_SCSI_AIC94XX=m
|
||||
# CONFIG_AIC94XX_DEBUG is not set
|
||||
# CONFIG_SCSI_AIC94XX is not set
|
||||
# CONFIG_SCSI_ADVANSYS is not set
|
||||
CONFIG_SCSI_BFA_FC=m
|
||||
CONFIG_MEGARAID_NEWGEN=y
|
||||
|
@ -662,7 +668,7 @@ CONFIG_FIREWIRE_SBP2=m
|
|||
CONFIG_FIREWIRE_NET=m
|
||||
CONFIG_FIREWIRE_OHCI_DEBUG=y
|
||||
CONFIG_FIREWIRE_NOSY=m
|
||||
CONFIG_FIREWIRE_SERIAL=m
|
||||
# CONFIG_FIREWIRE_SERIAL is not set
|
||||
# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
|
||||
|
||||
#
|
||||
|
@ -786,6 +792,7 @@ CONFIG_INET6_AH=m
|
|||
CONFIG_INET6_ESP=m
|
||||
CONFIG_INET6_IPCOMP=m
|
||||
CONFIG_IPV6_MIP6=y
|
||||
CONFIG_IPV6_VTI=m
|
||||
CONFIG_IPV6_SIT=m
|
||||
CONFIG_IPV6_SIT_6RD=y
|
||||
CONFIG_IPV6_TUNNEL=m
|
||||
|
@ -853,6 +860,7 @@ CONFIG_NETFILTER_XT_TARGET_TPROXY=m
|
|||
|
||||
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
|
||||
CONFIG_NETFILTER_XT_MATCH_BPF=m
|
||||
CONFIG_NETFILTER_XT_MATCH_CGROUP=m
|
||||
CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
|
||||
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
|
||||
CONFIG_NETFILTER_XT_MATCH_CPU=m
|
||||
|
@ -869,8 +877,10 @@ CONFIG_NETFILTER_XT_MATCH_ESP=m
|
|||
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
|
||||
CONFIG_NETFILTER_XT_MATCH_HELPER=m
|
||||
CONFIG_NETFILTER_XT_MATCH_HL=m
|
||||
CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
|
||||
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
|
||||
CONFIG_NETFILTER_XT_MATCH_IPVS=m
|
||||
CONFIG_NETFILTER_XT_MATCH_L2TP=m
|
||||
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
|
||||
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
|
||||
CONFIG_NETFILTER_XT_MATCH_MAC=m
|
||||
|
@ -982,6 +992,33 @@ CONFIG_NF_NAT_IPV6=m
|
|||
CONFIG_IP6_NF_TARGET_MASQUERADE=m
|
||||
# CONFIG_IP6_NF_TARGET_NPT is not set
|
||||
|
||||
# nf_tables support
|
||||
CONFIG_NF_TABLES=m
|
||||
CONFIG_NF_TABLES_INET=m
|
||||
CONFIG_NFT_EXTHDR=m
|
||||
CONFIG_NFT_META=m
|
||||
CONFIG_NFT_CT=m
|
||||
CONFIG_NFT_RBTREE=m
|
||||
CONFIG_NFT_HASH=m
|
||||
CONFIG_NFT_COUNTER=m
|
||||
CONFIG_NFT_LOG=m
|
||||
CONFIG_NFT_LIMIT=m
|
||||
CONFIG_NFT_NAT=m
|
||||
CONFIG_NFT_QUEUE=m
|
||||
CONFIG_NFT_REJECT=m
|
||||
CONFIG_NFT_COMPAT=m
|
||||
|
||||
CONFIG_NF_TABLES_IPV4=m
|
||||
CONFIG_NFT_REJECT_IPV4=m
|
||||
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=m
|
||||
|
||||
CONFIG_NF_TABLES_IPV6=m
|
||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||
|
||||
CONFIG_NF_TABLES_BRIDGE=m
|
||||
#
|
||||
# Bridge: Netfilter Configuration
|
||||
#
|
||||
|
@ -1029,7 +1066,9 @@ CONFIG_IP_SET_HASH_IP=m
|
|||
CONFIG_IP_SET_HASH_IPPORT=m
|
||||
CONFIG_IP_SET_HASH_IPPORTIP=m
|
||||
CONFIG_IP_SET_HASH_IPPORTNET=m
|
||||
CONFIG_IP_SET_HASH_NETPORTNET=m
|
||||
CONFIG_IP_SET_HASH_NET=m
|
||||
CONFIG_IP_SET_HASH_NETNET=m
|
||||
CONFIG_IP_SET_HASH_NETPORT=m
|
||||
CONFIG_IP_SET_HASH_NETIFACE=m
|
||||
CONFIG_IP_SET_LIST_SET=m
|
||||
|
@ -1107,11 +1146,14 @@ CONFIG_NET_SCH_QFQ=m
|
|||
CONFIG_NET_SCH_CODEL=m
|
||||
CONFIG_NET_SCH_FQ_CODEL=m
|
||||
CONFIG_NET_SCH_FQ=m
|
||||
CONFIG_NET_SCH_HHF=m
|
||||
CONFIG_NET_SCH_PIE=m
|
||||
CONFIG_NET_SCH_PLUG=m
|
||||
CONFIG_NET_CLS=y
|
||||
CONFIG_NET_CLS_ACT=y
|
||||
CONFIG_NET_CLS_BASIC=m
|
||||
CONFIG_NET_CLS_CGROUP=y
|
||||
CONFIG_NET_CLS_BPF=m
|
||||
CONFIG_NET_CLS_FLOW=m
|
||||
CONFIG_NET_CLS_FW=m
|
||||
CONFIG_NET_CLS_IND=y
|
||||
|
@ -1155,7 +1197,6 @@ CONFIG_OPENVSWITCH=m
|
|||
CONFIG_OPENVSWITCH_GRE=y
|
||||
CONFIG_OPENVSWITCH_VXLAN=y
|
||||
CONFIG_VSOCKETS=m
|
||||
CONFIG_NETPRIO_CGROUP=m
|
||||
|
||||
|
||||
#
|
||||
|
@ -1343,6 +1384,10 @@ CONFIG_IXGBE_DCB=y
|
|||
CONFIG_IXGBE_HWMON=y
|
||||
CONFIG_IXGBE_PTP=y
|
||||
CONFIG_I40E=m
|
||||
# CONFIG_I40E_VXLAN is not set
|
||||
# CONFIG_I40E_DCB is not set
|
||||
# CONFIG_I40EVF is not set
|
||||
|
||||
|
||||
# CONFIG_NET_VENDOR_I825XX is not set
|
||||
CONFIG_NET_VENDOR_MARVELL=y
|
||||
|
@ -1589,11 +1634,16 @@ CONFIG_ATH9K_HTC=m
|
|||
CONFIG_ATH9K_BTCOEX_SUPPORT=y
|
||||
# CONFIG_ATH9K_HTC_DEBUGFS is not set
|
||||
# CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
|
||||
# CONFIG_ATH9K_STATION_STATISTICS is not set
|
||||
# CONFIG_ATH9K_WOW is not set
|
||||
#
|
||||
CONFIG_ATH10K=m
|
||||
CONFIG_ATH10K_PCI=m
|
||||
# CONFIG_ATH10K_DEBUG is not set
|
||||
# CONFIG_ATH10K_TRACING is not set
|
||||
CONFIG_ATH10K_DEBUGFS=y
|
||||
CONFIG_WCN36XX=m
|
||||
# CONFIG_WCN36XX_DEBUGFS is not set
|
||||
CONFIG_WIL6210=m
|
||||
CONFIG_WIL6210_ISR_COR=y
|
||||
# CONFIG_WIL6210_TRACING is not set
|
||||
|
@ -1704,6 +1754,7 @@ CONFIG_RT73USB=m
|
|||
CONFIG_RTL8180=m
|
||||
CONFIG_RTL8187=m
|
||||
# CONFIG_USB_ZD1201 is not set
|
||||
# CONFIG_USB_NET_SR9800 is not set
|
||||
CONFIG_USB_NET_RNDIS_WLAN=m
|
||||
CONFIG_USB_NET_KALMIA=m
|
||||
CONFIG_USB_NET_QMI_WWAN=m
|
||||
|
@ -1775,15 +1826,19 @@ CONFIG_BAYCOM_EPP=m
|
|||
CONFIG_YAM=m
|
||||
|
||||
CONFIG_NFC=m
|
||||
CONFIG_NFC_DIGITAL=m
|
||||
CONFIG_NFC_NCI=m
|
||||
CONFIG_NFC_HCI=m
|
||||
CONFIG_NFC_SHDLC=y
|
||||
CONFIG_NFC_LLCP=y
|
||||
CONFIG_NFC_SIM=m
|
||||
CONFIG_NFC_MRVL=m
|
||||
CONFIG_NFC_MRVL_USB=m
|
||||
|
||||
#
|
||||
# Near Field Communication (NFC) devices
|
||||
#
|
||||
CONFIG_NFC_PORT100=m
|
||||
CONFIG_NFC_PN544=m
|
||||
CONFIG_NFC_PN544_I2C=m
|
||||
CONFIG_NFC_PN533=m
|
||||
|
@ -2050,6 +2105,7 @@ CONFIG_SERIO_ARC_PS2=m
|
|||
# CONFIG_SERIO_OLPC_APSP is not set
|
||||
# CONFIG_SERIO_PARKBD is not set
|
||||
# CONFIG_SERIO_PCIPS2 is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
|
@ -2057,6 +2113,7 @@ CONFIG_SERIO_ARC_PS2=m
|
|||
CONFIG_INPUT_KEYBOARD=y
|
||||
CONFIG_KEYBOARD_ATKBD=y
|
||||
# CONFIG_KEYBOARD_SUNKBD is not set
|
||||
# CONFIG_KEYBOARD_SH_KEYSC is not set
|
||||
# CONFIG_KEYBOARD_XTKBD is not set
|
||||
# CONFIG_KEYBOARD_MATRIX is not set
|
||||
# CONFIG_KEYBOARD_NEWTON is not set
|
||||
|
@ -2141,6 +2198,7 @@ CONFIG_TOUCHSCREEN_MTOUCH=m
|
|||
CONFIG_TOUCHSCREEN_MCS5000=m
|
||||
CONFIG_TOUCHSCREEN_MK712=m
|
||||
CONFIG_TOUCHSCREEN_PENMOUNT=m
|
||||
# CONFIG_TOUCHSCREEN_SUR40 is not set
|
||||
# CONFIG_TOUCHSCREEN_TPS6507X is not set
|
||||
CONFIG_TOUCHSCREEN_TSC_SERIO=m
|
||||
CONFIG_TOUCHSCREEN_TSC2007=m
|
||||
|
@ -2161,6 +2219,7 @@ CONFIG_TOUCHSCREEN_ATMEL_MXT=m
|
|||
# CONFIG_TOUCHSCREEN_MAX11801 is not set
|
||||
CONFIG_TOUCHSCREEN_AUO_PIXCIR=m
|
||||
CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m
|
||||
CONFIG_TOUCHSCREEN_ZFORCE=m
|
||||
|
||||
CONFIG_INPUT_MISC=y
|
||||
CONFIG_INPUT_PCSPKR=m
|
||||
|
@ -2207,6 +2266,8 @@ CONFIG_TIFM_7XX1=m
|
|||
CONFIG_TCG_TPM=m
|
||||
CONFIG_TCG_TIS=m
|
||||
# CONFIG_TCG_TIS_I2C_INFINEON is not set
|
||||
# CONFIG_TCG_TIS_I2C_ATMEL is not set
|
||||
# CONFIG_TCG_TIS_I2C_NUVOTON is not set
|
||||
CONFIG_TCG_NSC=m
|
||||
CONFIG_TCG_ATMEL=m
|
||||
# CONFIG_TCG_INFINEON is not set
|
||||
|
@ -2271,7 +2332,12 @@ CONFIG_I2C=m
|
|||
CONFIG_I2C_COMPAT=y
|
||||
CONFIG_I2C_CHARDEV=m
|
||||
# CONFIG_I2C_MUX is not set
|
||||
# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set
|
||||
# CONFIG_I2C_MUX_PCA954x is not set
|
||||
# CONFIG_I2C_MUX_GPIO is not set
|
||||
# CONFIG_I2C_MUX_PCA9541 is not set
|
||||
# CONFIG_I2C_MUX_PINCTRL is not set
|
||||
#
|
||||
|
||||
#
|
||||
# I2C Algorithms
|
||||
|
@ -2311,6 +2377,7 @@ CONFIG_I2C_NFORCE2=m
|
|||
# CONFIG_I2C_OCORES is not set
|
||||
CONFIG_I2C_PARPORT=m
|
||||
CONFIG_I2C_PARPORT_LIGHT=m
|
||||
# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
|
||||
CONFIG_I2C_PASEMI=m
|
||||
CONFIG_I2C_PCA_PLATFORM=m
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
|
@ -2495,8 +2562,13 @@ CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS=y
|
|||
# CONFIG_MCP4725 is not set
|
||||
# CONFIG_ITG3200 is not set
|
||||
# CONFIG_APDS9300 is not set
|
||||
# CONFIG_CM32181 is not set
|
||||
# CONFIG_CM36651 is not set
|
||||
# CONFIG_GP2AP020A00F is not set
|
||||
# CONFIG_TSL2583 is not set
|
||||
# CONFIG_TSL2x7x is not set
|
||||
# CONFIG_TCS3472 is not set
|
||||
# CONFIG_TSL4531 is not set
|
||||
# CONFIG_NAU7802 is not set
|
||||
# CONFIG_TI_ADC081C is not set
|
||||
# CONFIG_EXYNOS_ADC is not set
|
||||
|
@ -2505,10 +2577,12 @@ CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS=y
|
|||
CONFIG_IIO_ST_GYRO_3AXIS=m
|
||||
CONFIG_IIO_ST_MAGN_3AXIS=m
|
||||
CONFIG_IIO_ST_ACCEL_3AXIS=m
|
||||
CONFIG_HID_SENSOR_INCLINOMETER_3D=m
|
||||
# CONFIG_ADJD_S311 is not set
|
||||
# CONFIG_SENSORS_TSL2563 is not set
|
||||
# CONFIG_VCNL4000 is not set
|
||||
# CONFIG_AK8975 is not set
|
||||
# CONFIG_MAG3110 is not set
|
||||
# CONFIG_TMP006 is not set
|
||||
# CONFIG_IIO_ST_PRESS is not set
|
||||
# CONFIG_KXSD9 is not set
|
||||
|
@ -2520,6 +2594,7 @@ CONFIG_IIO_ST_ACCEL_3AXIS=m
|
|||
# CONFIG_AD7887 is not set
|
||||
# CONFIG_AD7923 is not set
|
||||
# CONFIG_MCP320X is not set
|
||||
# CONFIG_MCP3422 is not set
|
||||
# CONFIG_AD8366 is not set
|
||||
# CONFIG_AD5360 is not set
|
||||
# CONFIG_AD5421 is not set
|
||||
|
@ -2540,6 +2615,8 @@ CONFIG_IIO_ST_ACCEL_3AXIS=m
|
|||
# CONFIG_ADXRS450 is not set
|
||||
# CONFIG_ADIS16400 is not set
|
||||
# CONFIG_ADIS16480 is not set
|
||||
# CONFIG_DHT11 is not set
|
||||
# CONFIG_MPL3115 is not set
|
||||
|
||||
# staging IIO drivers
|
||||
# CONFIG_AD7291 is not set
|
||||
|
@ -2671,6 +2748,7 @@ CONFIG_WM831X_WATCHDOG=m
|
|||
# CONFIG_DW_WATCHDOG is not set
|
||||
CONFIG_W83697UG_WDT=m
|
||||
# CONFIG_MEN_A21_WDT is not set
|
||||
# CONFIG_GPIO_WATCHDOG is not set
|
||||
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_TIMERIOMEM=m
|
||||
|
@ -2734,6 +2812,7 @@ CONFIG_RTC_DRV_DS3232=m
|
|||
CONFIG_RTC_DRV_ISL12022=m
|
||||
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
|
||||
# CONFIG_RTC_DRV_MOXART is not set
|
||||
# CONFIG_RTC_DRV_ISL12057 is not set
|
||||
|
||||
CONFIG_R3964=m
|
||||
# CONFIG_APPLICOM is not set
|
||||
|
@ -2775,7 +2854,9 @@ CONFIG_DRM_MGAG200=m # do not enable on f17 or older
|
|||
# CONFIG_DRM_SAVAGE is not set
|
||||
CONFIG_DRM_I915=m
|
||||
CONFIG_DRM_I915_KMS=y
|
||||
CONFIG_DRM_I915_FBDEV=y
|
||||
# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
|
||||
# CONFIG_DRM_I915_UMS is not set
|
||||
CONFIG_DRM_VIA=m
|
||||
CONFIG_DRM_NOUVEAU=m
|
||||
CONFIG_NOUVEAU_DEBUG=5
|
||||
|
@ -2790,6 +2871,7 @@ CONFIG_DRM_UDL=m
|
|||
CONFIG_DRM_VMWGFX=m
|
||||
CONFIG_DRM_VMWGFX_FBCON=y
|
||||
CONFIG_DRM_QXL=m
|
||||
CONFIG_DRM_BOCHS=m
|
||||
|
||||
#
|
||||
# PCMCIA character devices
|
||||
|
@ -2823,6 +2905,10 @@ CONFIG_VIDEO_V4L2=y
|
|||
# CONFIG_VIDEO_V4L2_INT_DEVICE is not set
|
||||
CONFIG_VIDEO_V4L2_SUBDEV_API=y
|
||||
# CONFIG_VIDEO_VIVI is not set
|
||||
# CONFIG_USB_SI4713 is not set
|
||||
# CONFIG_PLATFORM_SI4713 is not set
|
||||
# CONFIG_I2C_SI4713 is not set
|
||||
# CONFIG_USB_RAREMONO is not set
|
||||
|
||||
#
|
||||
# Video For Linux
|
||||
|
@ -2856,6 +2942,7 @@ CONFIG_VIDEO_CX88_BLACKBIRD=m
|
|||
CONFIG_VIDEO_CX88_ENABLE_VP3054=y
|
||||
CONFIG_VIDEO_CX88_VP3054=m
|
||||
CONFIG_VIDEO_EM28XX=m
|
||||
CONFIG_VIDEO_EM28XX_V4L2=m
|
||||
CONFIG_VIDEO_EM28XX_ALSA=m
|
||||
CONFIG_VIDEO_EM28XX_DVB=m
|
||||
CONFIG_VIDEO_EM28XX_RC=y
|
||||
|
@ -3147,6 +3234,7 @@ CONFIG_FB_EFI=y
|
|||
# CONFIG_FB_BROADSHEET is not set
|
||||
# CONFIG_FB_UDL is not set
|
||||
# CONFIG_FB_GOLDFISH is not set
|
||||
# CONFIG_FB_OPENCORES is not set
|
||||
|
||||
# CONFIG_FIRMWARE_EDID is not set
|
||||
|
||||
|
@ -3329,6 +3417,7 @@ CONFIG_SND_FIREWIRE=y
|
|||
CONFIG_SND_FIREWIRE_SPEAKERS=m
|
||||
CONFIG_SND_ISIGHT=m
|
||||
CONFIG_SND_SCS1X=m
|
||||
CONFIG_SND_DICE=m
|
||||
|
||||
#
|
||||
# Open Sound System
|
||||
|
@ -3370,6 +3459,7 @@ CONFIG_USB_EHCI_TT_NEWSCHED=y
|
|||
CONFIG_USB_ISP1362_HCD=m
|
||||
CONFIG_USB_FUSBH200_HCD=m
|
||||
# CONFIG_USB_FOTG210_HCD is not set
|
||||
# CONFIG_USB_GR_UDC is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD_PCI=y
|
||||
# CONFIG_USB_OHCI_HCD_SSB is not set
|
||||
|
@ -3460,10 +3550,12 @@ CONFIG_HID_ORTEK=m
|
|||
CONFIG_HID_PANTHERLORD=m
|
||||
CONFIG_HID_PETALYNX=m
|
||||
CONFIG_HID_PICOLCD=m
|
||||
CONFIG_HID_RMI=m
|
||||
CONFIG_HID_ROCCAT=m
|
||||
CONFIG_HID_ROCCAT_KONE=m
|
||||
CONFIG_HID_SAMSUNG=m
|
||||
CONFIG_HID_SONY=m
|
||||
CONFIG_SONY_FF=y
|
||||
CONFIG_HID_SUNPLUS=m
|
||||
CONFIG_HID_STEELSERIES=m
|
||||
CONFIG_HID_GREENASIA=m
|
||||
|
@ -3600,6 +3692,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_HUAWEI_CDC_NCM=m
|
||||
CONFIG_USB_NET_CDC_MBIM=m
|
||||
CONFIG_USB_NET_ZAURUS=m
|
||||
CONFIG_USB_NET_CX82310_ETH=m
|
||||
|
@ -3683,6 +3776,7 @@ CONFIG_USB_SERIAL_MOS7715_PARPORT=y
|
|||
# CONFIG_USB_SERIAL_ZTE is not set
|
||||
CONFIG_USB_SERIAL_MOS7840=m
|
||||
CONFIG_USB_SERIAL_MOTOROLA=m
|
||||
# CONFIG_USB_SERIAL_MXUPORT is not set
|
||||
CONFIG_USB_SERIAL_NAVMAN=m
|
||||
CONFIG_USB_SERIAL_OPTION=m
|
||||
CONFIG_USB_SERIAL_OTI6858=m
|
||||
|
@ -3726,7 +3820,11 @@ CONFIG_USB_APPLEDISPLAY=m
|
|||
|
||||
# Physical Layer USB driver
|
||||
CONFIG_USB_PHY=y
|
||||
# CONFIG_USB_OTG_FSM is not set
|
||||
|
||||
# CONFIG_GENERIC_PHY is not set
|
||||
# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set
|
||||
# CONFIG_PHY_EXYNOS_DP_VIDEO is not set
|
||||
# CONFIG_OMAP_USB2 is not set
|
||||
# CONFIG_OMAP_USB3 is not set
|
||||
# CONFIG_OMAP_CONTROL_USB is not set
|
||||
|
@ -3734,6 +3832,7 @@ CONFIG_USB_PHY=y
|
|||
# CONFIG_SAMSUNG_USBPHY is not set
|
||||
# CONFIG_SAMSUNG_USB2PHY is not set
|
||||
# CONFIG_SAMSUNG_USB3PHY is not set
|
||||
# CONFIG_BCM_KONA_USB2_PHY is not set
|
||||
CONFIG_USB_RCAR_PHY=m
|
||||
CONFIG_USB_ATM=m
|
||||
CONFIG_USB_CXACRU=m
|
||||
|
@ -3830,6 +3929,7 @@ CONFIG_MFD_VIPERBOARD=m
|
|||
# CONFIG_HTC_I2CPLD is not set
|
||||
# CONFIG_MFD_MAX8925 is not set
|
||||
# CONFIG_MFD_ASIC3 is not set
|
||||
# CONFIG_MFD_AS3722 is not set
|
||||
# CONFIG_HTC_EGPIO is not set
|
||||
# CONFIG_TPS6507X is not set
|
||||
# CONFIG_ABX500_CORE is not set
|
||||
|
@ -3853,6 +3953,7 @@ CONFIG_MFD_VIPERBOARD=m
|
|||
# CONFIG_MFD_TPS65912 is not set
|
||||
# CONFIG_MFD_SYSCON is not set
|
||||
# CONFIG_MFD_DA9063 is not set
|
||||
# CONFIG_MFD_LP3943 is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
|
@ -3905,6 +4006,7 @@ CONFIG_CEPH_FS=m
|
|||
CONFIG_CEPH_FSCACHE=y
|
||||
CONFIG_BLK_DEV_RBD=m
|
||||
CONFIG_CEPH_LIB=m
|
||||
CONFIG_CEPH_FS_POSIX_ACL=y
|
||||
# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
|
||||
|
||||
CONFIG_FSCACHE=m
|
||||
|
@ -4001,6 +4103,7 @@ CONFIG_NFS_V4=y
|
|||
CONFIG_NFS_SWAP=y
|
||||
CONFIG_NFS_V4_1=y
|
||||
CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
|
||||
# CONFIG_NFS_V4_1_MIGRATION is not set
|
||||
CONFIG_NFS_V4_2=y
|
||||
CONFIG_NFSD=m
|
||||
CONFIG_NFSD_V3=y
|
||||
|
@ -4168,6 +4271,7 @@ CONFIG_OPROFILE_EVENT_MULTIPLEX=y
|
|||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_FRAME_WARN=1024
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x0
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
|
@ -4211,6 +4315,7 @@ CONFIG_LOCKUP_DETECTOR=y
|
|||
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
|
||||
# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
|
||||
# CONFIG_PANIC_ON_OOPS is not set
|
||||
CONFIG_PANIC_TIMEOUT=0
|
||||
CONFIG_ATOMIC64_SELFTEST=y
|
||||
CONFIG_MEMORY_FAILURE=y
|
||||
CONFIG_HWPOISON_INJECT=m
|
||||
|
@ -4354,6 +4459,7 @@ CONFIG_CRC_CCITT=m
|
|||
CONFIG_CRC_ITU_T=m
|
||||
CONFIG_CRC_T10DIF=m
|
||||
CONFIG_CRC8=m
|
||||
# CONFIG_RANDOM32_SELFTEST is not set
|
||||
# CONFIG_CRC7 is not set
|
||||
CONFIG_CORDIC=m
|
||||
# CONFIG_DDR is not set
|
||||
|
@ -4381,6 +4487,7 @@ CONFIG_BACKLIGHT_PROGEAR=m
|
|||
# CONFIG_BACKLIGHT_ADP8860 is not set
|
||||
# CONFIG_BACKLIGHT_ADP8870 is not set
|
||||
# CONFIG_BACKLIGHT_LM3630 is not set
|
||||
# CONFIG_BACKLIGHT_LM3630A is not set
|
||||
# CONFIG_BACKLIGHT_LM3639 is not set
|
||||
CONFIG_FB_NVIDIA_BACKLIGHT=y
|
||||
CONFIG_FB_RIVA_BACKLIGHT=y
|
||||
|
@ -4419,6 +4526,8 @@ CONFIG_MEMCG_SWAP_ENABLED=y
|
|||
CONFIG_MEMCG_KMEM=y
|
||||
# CONFIG_CGROUP_HUGETLB is not set
|
||||
CONFIG_CGROUP_PERF=y
|
||||
CONFIG_CGROUP_NET_PRIO=m
|
||||
# CONFIG_CGROUP_NET_CLASSID is not set
|
||||
CONFIG_BLK_CGROUP=y
|
||||
|
||||
# CONFIG_SYSFS_DEPRECATED is not set
|
||||
|
@ -4441,6 +4550,7 @@ CONFIG_THERMAL_GOV_FAIR_SHARE=y
|
|||
# CONFIG_THERMAL_GOV_USER_SPACE is not set
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
# CONFIG_THERMAL_EMULATION is not set
|
||||
# CONFIG_THERMAL_OF is not set
|
||||
# CONFIG_CPU_THERMAL is not set
|
||||
|
||||
CONFIG_INOTIFY=y
|
||||
|
@ -4458,6 +4568,7 @@ CONFIG_IBMASR=m
|
|||
CONFIG_PM=y
|
||||
CONFIG_PM_STD_PARTITION=""
|
||||
CONFIG_PM_DEBUG=y
|
||||
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
|
||||
CONFIG_PM_TRACE=y
|
||||
CONFIG_PM_TRACE_RTC=y
|
||||
# CONFIG_PM_TEST_SUSPEND is not set
|
||||
|
@ -4544,6 +4655,7 @@ CONFIG_LEDS_DELL_NETBOOKS=m
|
|||
# CONFIG_LEDS_PWM is not set
|
||||
# CONFIG_LEDS_LP8501 is not set
|
||||
# CONFIG_LEDS_PCA963X is not set
|
||||
# CONFIG_LEDS_PCA9685 is not set
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_LEDS_TRIGGER_TIMER=m
|
||||
CONFIG_LEDS_TRIGGER_ONESHOT=m
|
||||
|
@ -4654,6 +4766,7 @@ CONFIG_APM_POWER=m
|
|||
# CONFIG_CHARGER_PCF50633 is not set
|
||||
# CONFIG_CHARGER_BQ2415X is not set
|
||||
# CONFIG_CHARGER_BQ24190 is not set
|
||||
# CONFIG_CHARGER_BQ24735 is not set
|
||||
CONFIG_POWER_RESET=y
|
||||
|
||||
# CONFIG_PDA_POWER is not set
|
||||
|
@ -4699,6 +4812,7 @@ CONFIG_NOZOMI=m
|
|||
CONFIG_INPUT_APANEL=m
|
||||
CONFIG_INPUT_GP2A=m
|
||||
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
|
||||
# CONFIG_INPUT_GPIO_BEEPER is not set
|
||||
|
||||
# CONFIG_INTEL_MENLOW is not set
|
||||
CONFIG_ENCLOSURE_SERVICES=m
|
||||
|
@ -4727,7 +4841,7 @@ CONFIG_OPTIMIZE_INLINING=y
|
|||
# FIXME: This should be x86/ia64 only
|
||||
# CONFIG_HP_ILO is not set
|
||||
|
||||
# CONFIG_GPIOLIB is not set
|
||||
CONFIG_GPIOLIB=y
|
||||
# CONFIG_PINCTRL is not set
|
||||
# CONFIG_DEBUG_PINCTRL is not set
|
||||
# CONFIG_PINMUX is not set
|
||||
|
@ -4778,6 +4892,9 @@ CONFIG_STAGING_MEDIA=y
|
|||
# CONFIG_TI_ST is not set
|
||||
# CONFIG_FB_XGI is not set
|
||||
# CONFIG_VIDEO_GO7007 is not set
|
||||
# CONFIG_I2C_BCM2048 is not set
|
||||
# CONFIG_VIDEO_TCM825X is not set
|
||||
# CONFIG_VIDEO_OMAP4 is not set
|
||||
# CONFIG_USB_MSI3101 is not set
|
||||
# CONFIG_DT3155 is not set
|
||||
# CONFIG_W35UND is not set
|
||||
|
@ -4805,10 +4922,10 @@ CONFIG_RTL8192E=m
|
|||
# CONFIG_VIDEO_CX25821 is not set
|
||||
# CONFIG_R8187SE is not set
|
||||
# CONFIG_R8188EU is not set
|
||||
# CONFIG_R8821AE is not set
|
||||
# CONFIG_RTL8192U is not set
|
||||
# CONFIG_FB_SM7XX is not set
|
||||
# CONFIG_SPECTRA is not set
|
||||
# CONFIG_ZRAM is not set
|
||||
# CONFIG_EASYCAP is not set
|
||||
# CONFIG_SOLO6X10 is not set
|
||||
# CONFIG_ACPI_QUICKSTART is not set
|
||||
|
@ -4833,7 +4950,6 @@ CONFIG_ALTERA_STAPL=m
|
|||
# CONFIG_RTS5139 is not set
|
||||
# CONFIG_NVEC_LEDS is not set
|
||||
# CONFIG_VT6655 is not set
|
||||
# CONFIG_ZSMALLOC is not set
|
||||
# CONFIG_RAMSTER is not set
|
||||
# CONFIG_USB_WPAN_HCD is not set
|
||||
# CONFIG_WIMAX_GDM72XX is not set
|
||||
|
@ -4850,6 +4966,7 @@ CONFIG_ALTERA_STAPL=m
|
|||
# CONFIG_XILLYBUS is not set
|
||||
# CONFIG_DGAP is not set
|
||||
# CONFIG_DGNC is not set
|
||||
# CONFIG_RTS5208 is not set
|
||||
# END OF STAGING
|
||||
|
||||
#
|
||||
|
@ -4904,6 +5021,8 @@ CONFIG_IEEE802154_FAKELB=m
|
|||
CONFIG_MAC802154=m
|
||||
CONFIG_NET_MPLS_GSO=m
|
||||
|
||||
# CONFIG_HSR is not set
|
||||
|
||||
# CONFIG_EXTCON is not set
|
||||
# CONFIG_EXTCON_ADC_JACK is not set
|
||||
# CONFIG_MEMORY is not set
|
||||
|
@ -4923,6 +5042,8 @@ CONFIG_PTP_1588_CLOCK_PCH=m
|
|||
CONFIG_CLEANCACHE=y
|
||||
CONFIG_FRONTSWAP=y
|
||||
CONFIG_ZSWAP=y
|
||||
CONFIG_ZSMALLOC=y
|
||||
# CONFIG_PGTABLE_MAPPING is not set
|
||||
|
||||
# CONFIG_MDIO_GPIO is not set
|
||||
# CONFIG_KEYBOARD_GPIO is not set
|
||||
|
@ -4960,16 +5081,19 @@ CONFIG_GPIO_VIPERBOARD=m
|
|||
# CONFIG_GPIO_BT8XX is not set
|
||||
# CONFIG_GPIO_SX150X is not set
|
||||
# CONFIG_GPIO_GRGPIO is not set
|
||||
# CONFIG_GPIO_PL061 is not set
|
||||
# CONFIG_GPIO_BCM_KONA is not set
|
||||
# CONFIG_GPIO_SCH311X is not set
|
||||
|
||||
# FIXME: Why?
|
||||
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
|
||||
|
||||
CONFIG_TEST_KSTRTOX=y
|
||||
CONFIG_XZ_DEC=y
|
||||
# CONFIG_XZ_DEC_X86 is not set
|
||||
# CONFIG_XZ_DEC_POWERPC is not set
|
||||
CONFIG_XZ_DEC_X86=y
|
||||
CONFIG_XZ_DEC_POWERPC=y
|
||||
# CONFIG_XZ_DEC_IA64 is not set
|
||||
# CONFIG_XZ_DEC_ARM is not set
|
||||
CONFIG_XZ_DEC_ARM=y
|
||||
# CONFIG_XZ_DEC_ARMTHUMB is not set
|
||||
# CONFIG_XZ_DEC_SPARC is not set
|
||||
# CONFIG_XZ_DEC_TEST is not set
|
||||
|
@ -4992,6 +5116,8 @@ CONFIG_PSTORE_RAM=m
|
|||
# CONFIG_PSTORE_CONSOLE is not set
|
||||
# CONFIG_PSTORE_FTRACE is not set
|
||||
|
||||
# CONFIG_TEST_MODULE is not set
|
||||
# CONFIG_TEST_USER_COPY is not set
|
||||
|
||||
# CONFIG_AVERAGE is not set
|
||||
# CONFIG_VMXNET3 is not set
|
||||
|
@ -5023,8 +5149,16 @@ CONFIG_FMC_TRIVIAL=m
|
|||
CONFIG_FMC_WRITE_EEPROM=m
|
||||
CONFIG_FMC_CHARDEV=m
|
||||
|
||||
# CONFIG_GENWQE is not set
|
||||
|
||||
# CONFIG_POWERCAP is not set
|
||||
|
||||
# CONFIG_HSI is not set
|
||||
|
||||
# CONFIG_CPU_IDLE is not set
|
||||
|
||||
# CONFIG_ARM_ARCH_TIMER_EVTSTREAM is not set
|
||||
|
||||
# CONFIG_PM_DEVFREQ is not set
|
||||
# CONFIG_MODULE_SIG is not set
|
||||
# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
|
||||
|
|
|
@ -26,8 +26,6 @@ CONFIG_CPUMASK_OFFSTACK=y
|
|||
# CONFIG_FAIL_IO_TIMEOUT is not set
|
||||
# CONFIG_FAIL_MMC_REQUEST is not set
|
||||
|
||||
# CONFIG_SLUB_DEBUG_ON is not set
|
||||
|
||||
# CONFIG_LOCK_STAT is not set
|
||||
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
|
@ -104,6 +102,7 @@ CONFIG_KDB_KEYBOARD=y
|
|||
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
|
||||
|
||||
# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set
|
||||
# CONFIG_PERCPU_TEST is not set
|
||||
# CONFIG_TEST_LIST_SORT is not set
|
||||
# CONFIG_TEST_STRING_HELPERS is not set
|
||||
|
||||
|
|
|
@ -321,6 +321,7 @@ CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m
|
|||
|
||||
# CONFIG_PPC_MPC512x is not set
|
||||
# CONFIG_RTC_DRV_MPC5121 is not set
|
||||
# CONFIG_RTC_DRV_HYM8563 is not set
|
||||
|
||||
# CONFIG_MPC512X_DMA is not set
|
||||
|
||||
|
@ -360,7 +361,7 @@ CONFIG_RCU_FANOUT_LEAF=16
|
|||
# CONFIG_SPAPR_TCE_IOMMU is not set
|
||||
# CONFIG_TRANSPARENT_HUGEPAGE is not set
|
||||
|
||||
# CONFIG_PPC_DENORMALISATION is not set
|
||||
CONFIG_PPC_DENORMALISATION=y
|
||||
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
|
||||
# CONFIG_GPIO_ADNP is not set
|
||||
# CONFIG_MFD_SYSCON is not set
|
||||
|
@ -371,6 +372,7 @@ CONFIG_RCU_FANOUT_LEAF=16
|
|||
# CONFIG_OF_VIDEOMODE is not set
|
||||
|
||||
# CONFIG_POWERNV_MSI is not set
|
||||
# CONFIG_CPU_LITTLE_ENDIAN is not set
|
||||
|
||||
CONFIG_POWER_RESET_GPIO=y
|
||||
CONFIG_FB_SSD1307=m
|
||||
|
|
|
@ -14,6 +14,8 @@ CONFIG_PPC_PMAC=y
|
|||
CONFIG_PPC_POWERNV=y
|
||||
CONFIG_POWERNV_MSI=y
|
||||
CONFIG_PPC_POWERNV_RTAS=y
|
||||
CONFIG_HW_RANDOM_POWERNV=m
|
||||
CONFIG_SCOM_DEBUGFS=y
|
||||
# CONFIG_PPC_PASEMI is not set
|
||||
# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set
|
||||
# CONFIG_PPC_PS3 is not set
|
||||
|
@ -87,6 +89,8 @@ CONFIG_NR_CPUS=1024
|
|||
CONFIG_RTAS_PROC=y
|
||||
CONFIG_IOMMU_VMERGE=y
|
||||
CONFIG_NUMA=y
|
||||
CONFIG_NUMA_BALANCING=y
|
||||
CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
|
||||
CONFIG_PPC_64K_PAGES=y
|
||||
CONFIG_PPC_SUBPAGE_PROT=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
|
@ -97,6 +101,8 @@ CONFIG_HZ_100=y
|
|||
|
||||
CONFIG_MEMORY_HOTREMOVE=y
|
||||
|
||||
CONFIG_PPC64_SUPPORTS_MEMORY_FAILURE=y
|
||||
|
||||
CONFIG_CGROUP_HUGETLB=y
|
||||
|
||||
# CONFIG_MV643XX_ETH is not set
|
||||
|
@ -139,7 +145,8 @@ CONFIG_RCU_FANOUT=64
|
|||
CONFIG_CMA=y
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
CONFIG_KVM_BOOK3S_64=m
|
||||
CONFIG_KVM_BOOK3S_64_HV=y
|
||||
CONFIG_KVM_BOOK3S_64_HV=m
|
||||
CONFIG_KVM_BOOK3S_64_PR=m
|
||||
# CONFIG_KVM_EXIT_TIMING is not set
|
||||
CONFIG_KVM_XICS=y
|
||||
|
||||
|
@ -156,7 +163,8 @@ CONFIG_PSERIES_ENERGY=m
|
|||
|
||||
CONFIG_CPU_IDLE=y
|
||||
# CONFIG_CPU_IDLE_GOV_LADDER is not set
|
||||
CONFIG_PSERIES_IDLE=y
|
||||
CONFIG_PSERIES_CPUIDLE=y
|
||||
CONFIG_POWERNV_CPUIDLE=y
|
||||
|
||||
CONFIG_PPC_ICSWX=y
|
||||
CONFIG_IO_EVENT_IRQ=y
|
||||
|
|
|
@ -10,6 +10,8 @@ CONFIG_PPC_PSERIES=y
|
|||
CONFIG_PPC_POWERNV=y
|
||||
CONFIG_POWERNV_MSI=y
|
||||
CONFIG_PPC_POWERNV_RTAS=y
|
||||
CONFIG_HW_RANDOM_POWERNV=m
|
||||
CONFIG_SCOM_DEBUGFS=y
|
||||
# CONFIG_PPC_PASEMI is not set
|
||||
# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set
|
||||
# CONFIG_PPC_PS3 is not set
|
||||
|
@ -78,6 +80,8 @@ CONFIG_NR_CPUS=1024
|
|||
CONFIG_RTAS_PROC=y
|
||||
CONFIG_IOMMU_VMERGE=y
|
||||
CONFIG_NUMA=y
|
||||
CONFIG_NUMA_BALANCING=y
|
||||
CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
|
||||
CONFIG_PPC_64K_PAGES=y
|
||||
CONFIG_PPC_SUBPAGE_PROT=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
|
@ -88,6 +92,8 @@ CONFIG_HZ_100=y
|
|||
|
||||
CONFIG_MEMORY_HOTREMOVE=y
|
||||
|
||||
CONFIG_PPC64_SUPPORTS_MEMORY_FAILURE=y
|
||||
|
||||
CONFIG_CGROUP_HUGETLB=y
|
||||
|
||||
# CONFIG_MV643XX_ETH is not set
|
||||
|
@ -130,7 +136,8 @@ CONFIG_RCU_FANOUT=64
|
|||
CONFIG_CMA=y
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
CONFIG_KVM_BOOK3S_64=m
|
||||
CONFIG_KVM_BOOK3S_64_HV=y
|
||||
CONFIG_KVM_BOOK3S_64_HV=m
|
||||
CONFIG_KVM_BOOK3S_64_PR=m
|
||||
# CONFIG_KVM_EXIT_TIMING is not set
|
||||
CONFIG_KVM_XICS=y
|
||||
|
||||
|
@ -147,7 +154,8 @@ CONFIG_PSERIES_ENERGY=m
|
|||
|
||||
CONFIG_CPU_IDLE=y
|
||||
# CONFIG_CPU_IDLE_GOV_LADDER is not set
|
||||
CONFIG_PSERIES_IDLE=y
|
||||
CONFIG_PSERIES_CPUIDLE=y
|
||||
CONFIG_POWERNV_CPUIDLE=y
|
||||
|
||||
CONFIG_PPC_ICSWX=y
|
||||
CONFIG_IO_EVENT_IRQ=y
|
||||
|
|
|
@ -73,8 +73,6 @@ CONFIG_APM_CPU_IDLE=y
|
|||
# CONFIG_APM_DISPLAY_BLANK is not set
|
||||
# CONFIG_APM_ALLOW_INTS is not set
|
||||
|
||||
CONFIG_ACPI_BLACKLIST_YEAR=1999
|
||||
|
||||
|
||||
# CONFIG_X86_POWERNOW_K6 is not set
|
||||
CONFIG_X86_POWERNOW_K7=y
|
||||
|
@ -226,8 +224,13 @@ CONFIG_BACKLIGHT_PWM=m
|
|||
# CONFIG_GPIO_ADNP is not set
|
||||
# CONFIG_BACKLIGHT_OT200 is not set
|
||||
# CONFIG_RTC_DRV_SNVS is not set
|
||||
# CONFIG_RTC_DRV_HYM8563 is not set
|
||||
# CONFIG_OF_DISPLAY_TIMING is not set
|
||||
# CONFIG_OF_VIDEOMODE is not set
|
||||
|
||||
# CONFIG_MLX5_INFINIBAND is not set
|
||||
# CONFIG_PINCTRL_SINGLE is not set
|
||||
# CONFIG_PINCTRL_CAPRI is not set
|
||||
# CONFIG_PINCTRL_MSM8X74 is not set
|
||||
# CONFIG_COMMON_CLK_SI570 is not set
|
||||
# CONFIG_COMMON_CLK_QCOM is not set
|
||||
|
|
|
@ -40,6 +40,8 @@ CONFIG_EFI_VARS_PSTORE=y
|
|||
CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y
|
||||
CONFIG_EFI_PCDP=y
|
||||
CONFIG_FB_EFI=y
|
||||
CONFIG_EARLY_PRINTK_EFI=y
|
||||
CONFIG_EFI_RUNTIME_MAP=y
|
||||
# needs FB_SIMPLE to work correctly
|
||||
# CONFIG_X86_SYSFB is not set
|
||||
|
||||
|
@ -95,6 +97,7 @@ CONFIG_ACPI_APEI_MEMORY_FAILURE=y
|
|||
CONFIG_ACPI_IPMI=m
|
||||
CONFIG_ACPI_CUSTOM_METHOD=m
|
||||
CONFIG_ACPI_BGRT=y
|
||||
# CONFIG_ACPI_EXTLOG is not set
|
||||
|
||||
CONFIG_X86_INTEL_PSTATE=y
|
||||
CONFIG_X86_ACPI_CPUFREQ=m
|
||||
|
@ -112,6 +115,9 @@ CONFIG_NVRAM=y
|
|||
CONFIG_CRYPTO_DEV_PADLOCK=m
|
||||
CONFIG_CRYPTO_DEV_PADLOCK_AES=m
|
||||
CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
|
||||
CONFIG_CRYPTO_DEV_CCP=y
|
||||
CONFIG_CRYPTO_DEV_CCP_DD=m
|
||||
CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
|
||||
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
|
||||
|
@ -196,7 +202,9 @@ CONFIG_AMILO_RFKILL=m
|
|||
CONFIG_ASUS_LAPTOP=m
|
||||
CONFIG_COMPAL_LAPTOP=m
|
||||
CONFIG_DELL_LAPTOP=m
|
||||
CONFIG_CHROME_PLATFORMS=y
|
||||
CONFIG_CHROMEOS_LAPTOP=m
|
||||
CONFIG_CHROMEOS_PSTORE=m
|
||||
CONFIG_EEEPC_LAPTOP=m
|
||||
CONFIG_FUJITSU_TABLET=m
|
||||
CONFIG_FUJITSU_LAPTOP=m
|
||||
|
@ -213,6 +221,7 @@ CONFIG_ACER_WMI=m
|
|||
CONFIG_ACERHDF=m
|
||||
CONFIG_ASUS_WMI=m
|
||||
CONFIG_ASUS_NB_WMI=m
|
||||
CONFIG_HP_WIRELESS=m
|
||||
CONFIG_HP_WMI=m
|
||||
# CONFIG_INTEL_SCU_IPC is not set
|
||||
CONFIG_DELL_WMI=m
|
||||
|
@ -382,6 +391,7 @@ CONFIG_F71808E_WDT=m
|
|||
CONFIG_HPWDT_NMI_DECODING=y
|
||||
# CONFIG_MFD_TPS6586X is not set
|
||||
# CONFIG_INTEL_MID_DMAC is not set
|
||||
# CONFIG_GPIO_INTEL_MID is not set
|
||||
CONFIG_PCH_DMA=m
|
||||
CONFIG_INTEL_IPS=m
|
||||
# CONFIG_IBM_RTL is not set
|
||||
|
@ -406,6 +416,7 @@ CONFIG_HP_ACCEL=m
|
|||
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_CC_STACKPROTECTOR=y
|
||||
CONFIG_CC_STACKPROTECTOR_STRONG=y
|
||||
CONFIG_RELOCATABLE=y
|
||||
|
||||
CONFIG_HYPERV=m
|
||||
|
@ -415,6 +426,7 @@ CONFIG_HYPERV_NET=m
|
|||
CONFIG_HYPERV_STORAGE=m
|
||||
CONFIG_HYPERV_BALLOON=m
|
||||
CONFIG_FB_HYPERV=m
|
||||
CONFIG_HYPERV_KEYBOARD=m
|
||||
|
||||
# Depends on HOTPLUG_PCI_PCIE
|
||||
CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m
|
||||
|
@ -441,6 +453,7 @@ CONFIG_PINCTRL_BAYTRAIL=y
|
|||
|
||||
# CONFIG_INTEL_POWERCLAMP is not set
|
||||
CONFIG_X86_PKG_TEMP_THERMAL=m
|
||||
CONFIG_ACPI_INT3403_THERMAL=m
|
||||
|
||||
CONFIG_VMWARE_VMCI=m
|
||||
CONFIG_VMWARE_VMCI_VSOCKETS=m
|
||||
|
|
|
@ -6,7 +6,8 @@ CONFIG_64BIT=y
|
|||
CONFIG_GENERIC_CPU=y
|
||||
|
||||
# CONFIG_X86_VSMP is not set
|
||||
# CONFIG_X86_UV is not set
|
||||
CONFIG_X86_UV=y
|
||||
CONFIG_UV_MMTIMER=m
|
||||
CONFIG_NUMA=y
|
||||
CONFIG_K8_NUMA=y
|
||||
CONFIG_AMD_NUMA=y
|
||||
|
@ -21,6 +22,9 @@ CONFIG_NR_CPUS=1024
|
|||
CONFIG_PHYSICAL_START=0x1000000
|
||||
CONFIG_PHYSICAL_ALIGN=0x1000000
|
||||
|
||||
# https://lists.fedoraproject.org/pipermail/kernel/2013-December/004753.html
|
||||
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
|
||||
|
||||
CONFIG_IA32_EMULATION=y
|
||||
# CONFIG_IA32_AOUT is not set
|
||||
|
||||
|
@ -30,18 +34,22 @@ CONFIG_AMD_IOMMU_V2=m
|
|||
# CONFIG_IOMMU_DEBUG is not set
|
||||
CONFIG_SWIOTLB=y
|
||||
# CONFIG_CALGARY_IOMMU is not set
|
||||
# CONFIG_GART_IOMMU is not set
|
||||
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
|
||||
CONFIG_CGROUP_HUGETLB=y
|
||||
CONFIG_MEM_SOFT_DIRTY=y
|
||||
|
||||
CONFIG_KEXEC_JUMP=y
|
||||
|
||||
CONFIG_ACPI_BLACKLIST_YEAR=0
|
||||
CONFIG_ACPI_HOTPLUG_MEMORY=y
|
||||
|
||||
# CONFIG_INTEL_SCU_IPC is not set
|
||||
|
||||
CONFIG_INTEL_MIC_HOST=m
|
||||
CONFIG_INTEL_MIC_CARD=m
|
||||
|
||||
# SHPC has half-arsed PCI probing, which makes it load on too many systems
|
||||
CONFIG_HOTPLUG_PCI_SHPC=m
|
||||
|
||||
|
@ -86,7 +94,8 @@ 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_HOTPLUG=y
|
||||
# CONFIG_ARCH_MEMORY_PROBE is not set
|
||||
# CONFIG_MEMORY_HOTREMOVE is not set
|
||||
|
||||
# CONFIG_BLK_DEV_CMD640 is not set
|
||||
|
@ -109,6 +118,7 @@ CONFIG_XEN_DEV_EVTCHN=m
|
|||
CONFIG_XEN_SYS_HYPERVISOR=y
|
||||
# CONFIG_XEN_MCE_LOG is not set
|
||||
# CONFIG_XEN_STUB is not set
|
||||
# CONFIG_XEN_PVH is not set
|
||||
|
||||
CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
|
||||
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
Bugzilla: 1000439
|
||||
Upstream-status: unknown
|
||||
|
||||
From cb8e390d258b7f8073afafcbb163976e27346e9d Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@fedoraproject.org>
|
||||
Date: Fri, 11 Oct 2013 08:37:53 -0400
|
||||
Subject: [PATCH] cpupower: Fix segfault due to incorrect getopt_long arugments
|
||||
|
||||
If a user calls 'cpupower set --perf-bias 15', the process will end with a
|
||||
SIGSEGV in libc because cpupower-set passes a NULL optarg to the atoi call.
|
||||
This is because the getopt_long structure currently has all of the options
|
||||
as having an optional_argument when they really have a required argument.
|
||||
We change the structure to use required_argument to match the short options
|
||||
and it resolves the issue.
|
||||
|
||||
This fixes https://bugzilla.redhat.com/show_bug.cgi?id=1000439
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
|
||||
---
|
||||
tools/power/cpupower/utils/cpupower-set.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/tools/power/cpupower/utils/cpupower-set.c b/tools/power/cpupower/utils/cpupower-set.c
|
||||
index dc4de37..bcf1d2f 100644
|
||||
--- a/tools/power/cpupower/utils/cpupower-set.c
|
||||
+++ b/tools/power/cpupower/utils/cpupower-set.c
|
||||
@@ -18,9 +18,9 @@
|
||||
#include "helpers/bitmask.h"
|
||||
|
||||
static struct option set_opts[] = {
|
||||
- { .name = "perf-bias", .has_arg = optional_argument, .flag = NULL, .val = 'b'},
|
||||
- { .name = "sched-mc", .has_arg = optional_argument, .flag = NULL, .val = 'm'},
|
||||
- { .name = "sched-smt", .has_arg = optional_argument, .flag = NULL, .val = 's'},
|
||||
+ { .name = "perf-bias", .has_arg = required_argument, .flag = NULL, .val = 'b'},
|
||||
+ { .name = "sched-mc", .has_arg = required_argument, .flag = NULL, .val = 'm'},
|
||||
+ { .name = "sched-smt", .has_arg = required_argument, .flag = NULL, .val = 's'},
|
||||
{ },
|
||||
};
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
1017
dell-laptop.patch
1017
dell-laptop.patch
File diff suppressed because it is too large
Load Diff
|
@ -1,34 +0,0 @@
|
|||
Bugzilla: 993744
|
||||
Upstream-status: Still pending upstream
|
||||
|
||||
diff --git a/drivers/md/dm-cache-policy-mq.c b/drivers/md/dm-cache-policy-mq.c
|
||||
index cab6dd2..ec79c8f 100644
|
||||
--- a/drivers/md/dm-cache-policy-mq.c
|
||||
+++ b/drivers/md/dm-cache-policy-mq.c
|
||||
@@ -868,7 +868,7 @@ static void mq_destroy(struct dm_cache_policy *p)
|
||||
struct mq_policy *mq = to_mq_policy(p);
|
||||
|
||||
free_bitset(mq->allocation_bitset);
|
||||
- kfree(mq->table);
|
||||
+ vfree(mq->table);
|
||||
free_entries(mq);
|
||||
kfree(mq);
|
||||
}
|
||||
@@ -1189,7 +1189,7 @@ static struct dm_cache_policy *mq_create(dm_cblock_t cache_size,
|
||||
|
||||
mq->nr_buckets = next_power(from_cblock(cache_size) / 2, 16);
|
||||
mq->hash_bits = ffs(mq->nr_buckets) - 1;
|
||||
- mq->table = kzalloc(sizeof(*mq->table) * mq->nr_buckets, GFP_KERNEL);
|
||||
+ mq->table = vzalloc(sizeof(*mq->table) * mq->nr_buckets);
|
||||
if (!mq->table)
|
||||
goto bad_alloc_table;
|
||||
|
||||
@@ -1200,7 +1200,7 @@ static struct dm_cache_policy *mq_create(dm_cblock_t cache_size,
|
||||
return &mq->policy;
|
||||
|
||||
bad_alloc_bitset:
|
||||
- kfree(mq->table);
|
||||
+ vfree(mq->table);
|
||||
bad_alloc_table:
|
||||
free_entries(mq);
|
||||
bad_cache_alloc:
|
|
@ -1,53 +0,0 @@
|
|||
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
|
||||
index fb2fbc1..0aaf67d 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_dp.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_dp.c
|
||||
@@ -283,7 +283,7 @@ intel_dp_check_edp(struct intel_dp *intel_dp)
|
||||
pp_ctrl_reg = IS_VALLEYVIEW(dev) ? PIPEA_PP_CONTROL : PCH_PP_CONTROL;
|
||||
|
||||
if (!ironlake_edp_have_panel_power(intel_dp) && !ironlake_edp_have_panel_vdd(intel_dp)) {
|
||||
- WARN(1, "eDP powered off while attempting aux channel communication.\n");
|
||||
+ DRM_ERROR("eDP powered off while attempting aux channel communication.\n");
|
||||
DRM_DEBUG_KMS("Status 0x%08x Control 0x%08x\n",
|
||||
I915_READ(pp_stat_reg),
|
||||
I915_READ(pp_ctrl_reg));
|
||||
@@ -376,7 +376,7 @@ intel_dp_aux_ch(struct intel_dp *intel_dp,
|
||||
}
|
||||
|
||||
if (try == 3) {
|
||||
- WARN(1, "dp_aux_ch not started status 0x%08x\n",
|
||||
+ DRM_ERROR("dp_aux_ch not started status 0x%08x\n",
|
||||
I915_READ(ch_ctl));
|
||||
ret = -EBUSY;
|
||||
goto out;
|
||||
@@ -995,8 +995,8 @@ void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp)
|
||||
return;
|
||||
DRM_DEBUG_KMS("Turn eDP VDD on\n");
|
||||
|
||||
- WARN(intel_dp->want_panel_vdd,
|
||||
- "eDP VDD already requested on\n");
|
||||
+ if (intel_dp->want_panel_vdd)
|
||||
+ DRM_ERROR("eDP VDD already requested on\n");
|
||||
|
||||
intel_dp->want_panel_vdd = true;
|
||||
|
||||
@@ -1070,7 +1070,8 @@ void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync)
|
||||
return;
|
||||
|
||||
DRM_DEBUG_KMS("Turn eDP VDD off %d\n", intel_dp->want_panel_vdd);
|
||||
- WARN(!intel_dp->want_panel_vdd, "eDP VDD not forced on");
|
||||
+ if (!intel_dp->want_panel_vdd)
|
||||
+ DRM_ERROR("eDP VDD not forced on");
|
||||
|
||||
intel_dp->want_panel_vdd = false;
|
||||
|
||||
@@ -1144,7 +1145,8 @@ void ironlake_edp_panel_off(struct intel_dp *intel_dp)
|
||||
|
||||
DRM_DEBUG_KMS("Turn eDP power off\n");
|
||||
|
||||
- WARN(!intel_dp->want_panel_vdd, "Need VDD to turn off panel\n");
|
||||
+ if (!intel_dp->want_panel_vdd)
|
||||
+ DRM_ERROR("Need VDD to turn off panel\n");
|
||||
|
||||
pp = ironlake_get_pp_control(intel_dp);
|
||||
/* We need to switch off panel power _and_ force vdd, for otherwise some
|
|
@ -0,0 +1,20 @@
|
|||
Bugzilla: 1027037 1028785
|
||||
Upstream-status: http://lists.freedesktop.org/archives/intel-gfx/2013-November/035948.html
|
||||
|
||||
This is _by far_ the most common backtrace for i915 on retrace.fp.o, and
|
||||
it's mostly useless noise. There's not enough context when it's generated
|
||||
to know if something actually went wrong. Downgrade the message to
|
||||
KMS debugging so we can still get it if we want it.
|
||||
|
||||
diff -up linux-3.13.0-0.rc0.git2.1.fc21.x86_64/drivers/gpu/drm/i915/intel_display.c.jx linux-3.13.0-0.rc0.git2.1.fc21.x86_64/drivers/gpu/drm/i915/intel_display.c
|
||||
--- linux-3.13.0-0.rc0.git2.1.fc21.x86_64/drivers/gpu/drm/i915/intel_display.c.jx 2013-11-03 18:41:51.000000000 -0500
|
||||
+++ linux-3.13.0-0.rc0.git2.1.fc21.x86_64/drivers/gpu/drm/i915/intel_display.c 2013-11-13 10:12:05.781301624 -0500
|
||||
@@ -8803,7 +8803,7 @@ check_crtc_state(struct drm_device *dev)
|
||||
|
||||
if (active &&
|
||||
!intel_pipe_config_compare(dev, &crtc->config, &pipe_config)) {
|
||||
- WARN(1, "pipe state doesn't match!\n");
|
||||
+ DRM_DEBUG_KMS("pipe state doesn't match!\n");
|
||||
intel_dump_pipe_config(crtc, &pipe_config,
|
||||
"[hw state]");
|
||||
intel_dump_pipe_config(crtc, &crtc->config,
|
|
@ -1,213 +0,0 @@
|
|||
Bugzilla: N/A
|
||||
Upstream-status: Queued for 3.13
|
||||
|
||||
From db8edc33193879f39c1b52521e20f4d6eb4e9858 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@redhat.com>
|
||||
Date: Fri, 08 Nov 2013 06:36:45 +0000
|
||||
Subject: drm/qxl: backport fixes for Fedora
|
||||
|
||||
This pulls these changes from drm-next back into Fedora.
|
||||
|
||||
drm/qxl: prefer the monitor config resolution (b080742393e2c1)
|
||||
drm/qxl: remove unnecessary check (a40a60d912a101e8dfb08ee1)
|
||||
drm/qxl: fix disabling extra monitors from client (5cab51cb3381157)
|
||||
qxl: avoid an oops in the deferred io code. (cc87509d87696d7cd39)
|
||||
drm/qxl: support 64bit surface bar (35541782dcc1e502)
|
||||
qxl: add a connector property to denote hotplug should rescan modes. (4695b03970df37)
|
||||
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
|
||||
index 835caba..1d975eb 100644
|
||||
--- a/drivers/gpu/drm/qxl/qxl_display.c
|
||||
+++ b/drivers/gpu/drm/qxl/qxl_display.c
|
||||
@@ -110,7 +110,9 @@ void qxl_display_read_client_monitors_config(struct qxl_device *qdev)
|
||||
drm_helper_hpd_irq_event(qdev->ddev);
|
||||
}
|
||||
|
||||
-static int qxl_add_monitors_config_modes(struct drm_connector *connector)
|
||||
+static int qxl_add_monitors_config_modes(struct drm_connector *connector,
|
||||
+ unsigned *pwidth,
|
||||
+ unsigned *pheight)
|
||||
{
|
||||
struct drm_device *dev = connector->dev;
|
||||
struct qxl_device *qdev = dev->dev_private;
|
||||
@@ -126,11 +128,15 @@ static int qxl_add_monitors_config_modes(struct drm_connector *connector)
|
||||
mode = drm_cvt_mode(dev, head->width, head->height, 60, false, false,
|
||||
false);
|
||||
mode->type |= DRM_MODE_TYPE_PREFERRED;
|
||||
+ *pwidth = head->width;
|
||||
+ *pheight = head->height;
|
||||
drm_mode_probed_add(connector, mode);
|
||||
return 1;
|
||||
}
|
||||
|
||||
-static int qxl_add_common_modes(struct drm_connector *connector)
|
||||
+static int qxl_add_common_modes(struct drm_connector *connector,
|
||||
+ unsigned pwidth,
|
||||
+ unsigned pheight)
|
||||
{
|
||||
struct drm_device *dev = connector->dev;
|
||||
struct drm_display_mode *mode = NULL;
|
||||
@@ -159,12 +165,9 @@ static int qxl_add_common_modes(struct drm_connector *connector)
|
||||
};
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(common_modes); i++) {
|
||||
- if (common_modes[i].w < 320 || common_modes[i].h < 200)
|
||||
- continue;
|
||||
-
|
||||
mode = drm_cvt_mode(dev, common_modes[i].w, common_modes[i].h,
|
||||
60, false, false, false);
|
||||
- if (common_modes[i].w == 1024 && common_modes[i].h == 768)
|
||||
+ if (common_modes[i].w == pwidth && common_modes[i].h == pheight)
|
||||
mode->type |= DRM_MODE_TYPE_PREFERRED;
|
||||
drm_mode_probed_add(connector, mode);
|
||||
}
|
||||
@@ -720,16 +723,18 @@ static int qxl_conn_get_modes(struct drm_connector *connector)
|
||||
{
|
||||
int ret = 0;
|
||||
struct qxl_device *qdev = connector->dev->dev_private;
|
||||
+ unsigned pwidth = 1024;
|
||||
+ unsigned pheight = 768;
|
||||
|
||||
DRM_DEBUG_KMS("monitors_config=%p\n", qdev->monitors_config);
|
||||
/* TODO: what should we do here? only show the configured modes for the
|
||||
* device, or allow the full list, or both? */
|
||||
if (qdev->monitors_config && qdev->monitors_config->count) {
|
||||
- ret = qxl_add_monitors_config_modes(connector);
|
||||
+ ret = qxl_add_monitors_config_modes(connector, &pwidth, &pheight);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
- ret += qxl_add_common_modes(connector);
|
||||
+ ret += qxl_add_common_modes(connector, pwidth, pheight);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -793,7 +798,10 @@ static enum drm_connector_status qxl_conn_detect(
|
||||
qdev->client_monitors_config->count > output->index &&
|
||||
qxl_head_enabled(&qdev->client_monitors_config->heads[output->index]));
|
||||
|
||||
- DRM_DEBUG("\n");
|
||||
+ DRM_DEBUG("#%d connected: %d\n", output->index, connected);
|
||||
+ if (!connected)
|
||||
+ qxl_monitors_config_set(qdev, output->index, 0, 0, 0, 0, 0);
|
||||
+
|
||||
return connected ? connector_status_connected
|
||||
: connector_status_disconnected;
|
||||
}
|
||||
@@ -835,8 +843,21 @@ static const struct drm_encoder_funcs qxl_enc_funcs = {
|
||||
.destroy = qxl_enc_destroy,
|
||||
};
|
||||
|
||||
+static int qxl_mode_create_hotplug_mode_update_property(struct qxl_device *qdev)
|
||||
+{
|
||||
+ if (qdev->hotplug_mode_update_property)
|
||||
+ return 0;
|
||||
+
|
||||
+ qdev->hotplug_mode_update_property =
|
||||
+ drm_property_create_range(qdev->ddev, DRM_MODE_PROP_IMMUTABLE,
|
||||
+ "hotplug_mode_update", 0, 1);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int qdev_output_init(struct drm_device *dev, int num_output)
|
||||
{
|
||||
+ struct qxl_device *qdev = dev->dev_private;
|
||||
struct qxl_output *qxl_output;
|
||||
struct drm_connector *connector;
|
||||
struct drm_encoder *encoder;
|
||||
@@ -863,6 +884,8 @@ static int qdev_output_init(struct drm_device *dev, int num_output)
|
||||
drm_encoder_helper_add(encoder, &qxl_enc_helper_funcs);
|
||||
drm_connector_helper_add(connector, &qxl_connector_helper_funcs);
|
||||
|
||||
+ drm_object_attach_property(&connector->base,
|
||||
+ qdev->hotplug_mode_update_property, 0);
|
||||
drm_sysfs_connector_add(connector);
|
||||
return 0;
|
||||
}
|
||||
@@ -975,6 +998,9 @@ int qxl_modeset_init(struct qxl_device *qdev)
|
||||
qdev->ddev->mode_config.max_height = 8192;
|
||||
|
||||
qdev->ddev->mode_config.fb_base = qdev->vram_base;
|
||||
+
|
||||
+ qxl_mode_create_hotplug_mode_update_property(qdev);
|
||||
+
|
||||
for (i = 0 ; i < qxl_num_crtc; ++i) {
|
||||
qdev_crtc_init(qdev->ddev, i);
|
||||
qdev_output_init(qdev->ddev, i);
|
||||
diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h
|
||||
index 7e96f4f..18c599d 100644
|
||||
--- a/drivers/gpu/drm/qxl/qxl_drv.h
|
||||
+++ b/drivers/gpu/drm/qxl/qxl_drv.h
|
||||
@@ -323,6 +323,8 @@ struct qxl_device {
|
||||
struct work_struct gc_work;
|
||||
|
||||
struct work_struct fb_work;
|
||||
+
|
||||
+ struct drm_property *hotplug_mode_update_property;
|
||||
};
|
||||
|
||||
/* forward declaration for QXL_INFO_IO */
|
||||
diff --git a/drivers/gpu/drm/qxl/qxl_kms.c b/drivers/gpu/drm/qxl/qxl_kms.c
|
||||
index 9e8da9e..e0ddd5b 100644
|
||||
--- a/drivers/gpu/drm/qxl/qxl_kms.c
|
||||
+++ b/drivers/gpu/drm/qxl/qxl_kms.c
|
||||
@@ -120,7 +120,7 @@ int qxl_device_init(struct qxl_device *qdev,
|
||||
struct pci_dev *pdev,
|
||||
unsigned long flags)
|
||||
{
|
||||
- int r;
|
||||
+ int r, sb;
|
||||
|
||||
qdev->dev = &pdev->dev;
|
||||
qdev->ddev = ddev;
|
||||
@@ -136,21 +136,39 @@ int qxl_device_init(struct qxl_device *qdev,
|
||||
qdev->rom_base = pci_resource_start(pdev, 2);
|
||||
qdev->rom_size = pci_resource_len(pdev, 2);
|
||||
qdev->vram_base = pci_resource_start(pdev, 0);
|
||||
- qdev->surfaceram_base = pci_resource_start(pdev, 1);
|
||||
- qdev->surfaceram_size = pci_resource_len(pdev, 1);
|
||||
qdev->io_base = pci_resource_start(pdev, 3);
|
||||
|
||||
qdev->vram_mapping = io_mapping_create_wc(qdev->vram_base, pci_resource_len(pdev, 0));
|
||||
- qdev->surface_mapping = io_mapping_create_wc(qdev->surfaceram_base, qdev->surfaceram_size);
|
||||
- DRM_DEBUG_KMS("qxl: vram %llx-%llx(%dM %dk), surface %llx-%llx(%dM %dk)\n",
|
||||
+
|
||||
+ if (pci_resource_len(pdev, 4) > 0) {
|
||||
+ /* 64bit surface bar present */
|
||||
+ sb = 4;
|
||||
+ qdev->surfaceram_base = pci_resource_start(pdev, sb);
|
||||
+ qdev->surfaceram_size = pci_resource_len(pdev, sb);
|
||||
+ qdev->surface_mapping =
|
||||
+ io_mapping_create_wc(qdev->surfaceram_base,
|
||||
+ qdev->surfaceram_size);
|
||||
+ }
|
||||
+ if (qdev->surface_mapping == NULL) {
|
||||
+ /* 64bit surface bar not present (or mapping failed) */
|
||||
+ sb = 1;
|
||||
+ qdev->surfaceram_base = pci_resource_start(pdev, sb);
|
||||
+ qdev->surfaceram_size = pci_resource_len(pdev, sb);
|
||||
+ qdev->surface_mapping =
|
||||
+ io_mapping_create_wc(qdev->surfaceram_base,
|
||||
+ qdev->surfaceram_size);
|
||||
+ }
|
||||
+
|
||||
+ DRM_DEBUG_KMS("qxl: vram %llx-%llx(%dM %dk), surface %llx-%llx(%dM %dk, %s)\n",
|
||||
(unsigned long long)qdev->vram_base,
|
||||
(unsigned long long)pci_resource_end(pdev, 0),
|
||||
(int)pci_resource_len(pdev, 0) / 1024 / 1024,
|
||||
(int)pci_resource_len(pdev, 0) / 1024,
|
||||
(unsigned long long)qdev->surfaceram_base,
|
||||
- (unsigned long long)pci_resource_end(pdev, 1),
|
||||
+ (unsigned long long)pci_resource_end(pdev, sb),
|
||||
(int)qdev->surfaceram_size / 1024 / 1024,
|
||||
- (int)qdev->surfaceram_size / 1024);
|
||||
+ (int)qdev->surfaceram_size / 1024,
|
||||
+ (sb == 4) ? "64bit" : "32bit");
|
||||
|
||||
qdev->rom = ioremap(qdev->rom_base, qdev->rom_size);
|
||||
if (!qdev->rom) {
|
||||
--
|
||||
cgit v0.9.0.2-2-gbebe
|
|
@ -1,110 +0,0 @@
|
|||
Bugzilla: 1030802
|
||||
Upstream-status: http://www.mail-archive.com/linux-input@vger.kernel.org/msg07220.html
|
||||
|
||||
From e1c7fa5fbb6688bd464658ff8a93bdf23c442065 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Mon, 9 Dec 2013 15:18:04 +0100
|
||||
Subject: [PATCH v2] elantech: Properly differentiate between clickpads and
|
||||
normal touchpads
|
||||
|
||||
The current assumption in the elantech driver that hw version 3 touchpads are
|
||||
never clickpads and hw version 4 touchpads are always clickpads is wrong.
|
||||
|
||||
There are several bug reports for this, ie:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1030802
|
||||
http://superuser.com/questions/619582/right-elantech-touchpad-button-not-working-in-linux
|
||||
|
||||
I've spend a couple of hours wading through various bugzillas,
|
||||
launchpads and forum posts to create a list of fw-versions and capabilities
|
||||
for different laptop models to find a good method to differentiate between
|
||||
clickpads and versions with separate hardware buttons.
|
||||
|
||||
Which shows that a device being a clickpad is reliable indicated by bit 12
|
||||
being set in the fw_version. I've included the gathered list inside the driver,
|
||||
so that we've this info at hand if we need to revisit this later.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
drivers/input/mouse/elantech.c | 45 +++++++++++++++++++++++++++++++++++++++---
|
||||
1 file changed, 42 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
|
||||
index 597e9b8..ef1cf52 100644
|
||||
--- a/drivers/input/mouse/elantech.c
|
||||
+++ b/drivers/input/mouse/elantech.c
|
||||
@@ -486,6 +486,7 @@ static void elantech_input_sync_v4(struct psmouse *psmouse)
|
||||
unsigned char *packet = psmouse->packet;
|
||||
|
||||
input_report_key(dev, BTN_LEFT, packet[0] & 0x01);
|
||||
+ input_report_key(dev, BTN_RIGHT, packet[0] & 0x02);
|
||||
input_mt_report_pointer_emulation(dev, true);
|
||||
input_sync(dev);
|
||||
}
|
||||
@@ -984,6 +985,44 @@ static int elantech_get_resolution_v4(struct psmouse *psmouse,
|
||||
}
|
||||
|
||||
/*
|
||||
+ * Advertise INPUT_PROP_BUTTONPAD for clickpads. The testing of bit 12 in
|
||||
+ * fw_version for this is based on the following fw_version & caps table:
|
||||
+ *
|
||||
+ * Laptop-model: fw_version: caps: buttons:
|
||||
+ * Acer S3 0x461f00 10, 13, 0e clickpad
|
||||
+ * Acer S7-392 0x581f01 50, 17, 0d clickpad
|
||||
+ * Acer V5-131 0x461f02 01, 16, 0c clickpad
|
||||
+ * Acer V5-551 0x461f00 ? clickpad
|
||||
+ * Asus K53SV 0x450f01 78, 15, 0c 2 hw buttons
|
||||
+ * Asus G46VW 0x460f02 00, 18, 0c 2 hw buttons
|
||||
+ * Asus G750JX 0x360f00 00, 16, 0c 2 hw buttons
|
||||
+ * Asus UX31 0x361f00 20, 15, 0e clickpad
|
||||
+ * Asus UX32VD 0x361f02 00, 15, 0e clickpad
|
||||
+ * Avatar AVIU-145A2 0x361f00 ? clickpad
|
||||
+ * Gigabyte U2442 0x450f01 58, 17, 0c 2 hw buttons
|
||||
+ * Lenovo L430 0x350f02 b9, 15, 0c 2 hw buttons (*)
|
||||
+ * Samsung NF210 0x150b00 78, 14, 0a 2 hw buttons
|
||||
+ * Samsung NP770Z5E 0x575f01 10, 15, 0f clickpad
|
||||
+ * Samsung NP700Z5B 0x361f06 21, 15, 0f clickpad
|
||||
+ * Samsung NP900X3E-A02 0x575f03 ? clickpad
|
||||
+ * Samsung NP-QX410 0x851b00 19, 14, 0c clickpad
|
||||
+ * Samsung RC512 0x450f00 08, 15, 0c 2 hw buttons
|
||||
+ * Samsung RF710 0x450f00 ? 2 hw buttons
|
||||
+ * System76 Pangolin 0x250f01 ? 2 hw buttons
|
||||
+ * (*) + 3 trackpoint buttons
|
||||
+ */
|
||||
+static void elantech_set_buttonpad_prop(struct psmouse *psmouse)
|
||||
+{
|
||||
+ struct input_dev *dev = psmouse->dev;
|
||||
+ struct elantech_data *etd = psmouse->private;
|
||||
+
|
||||
+ if (etd->fw_version & 0x001000) {
|
||||
+ __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit);
|
||||
+ __clear_bit(BTN_RIGHT, dev->keybit);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
* Set the appropriate event bits for the input subsystem
|
||||
*/
|
||||
static int elantech_set_input_params(struct psmouse *psmouse)
|
||||
@@ -1026,6 +1065,8 @@ static int elantech_set_input_params(struct psmouse *psmouse)
|
||||
__set_bit(INPUT_PROP_SEMI_MT, dev->propbit);
|
||||
/* fall through */
|
||||
case 3:
|
||||
+ if (etd->hw_version == 3)
|
||||
+ elantech_set_buttonpad_prop(psmouse);
|
||||
input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0);
|
||||
input_set_abs_params(dev, ABS_Y, y_min, y_max, 0, 0);
|
||||
if (etd->reports_pressure) {
|
||||
@@ -1047,9 +1088,7 @@ static int elantech_set_input_params(struct psmouse *psmouse)
|
||||
*/
|
||||
psmouse_warn(psmouse, "couldn't query resolution data.\n");
|
||||
}
|
||||
- /* v4 is clickpad, with only one button. */
|
||||
- __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit);
|
||||
- __clear_bit(BTN_RIGHT, dev->keybit);
|
||||
+ elantech_set_buttonpad_prop(psmouse);
|
||||
__set_bit(BTN_TOOL_QUADTAP, dev->keybit);
|
||||
/* For X to recognize me as touchpad. */
|
||||
input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0);
|
||||
--
|
||||
1.8.4.2
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
diff --git a/fs/proc/proc_devtree.c b/fs/proc/proc_devtree.c
|
||||
index 927cbd1..f060f28 100644
|
||||
--- a/fs/proc/proc_devtree.c
|
||||
+++ b/fs/proc/proc_devtree.c
|
||||
@@ -233,6 +233,7 @@ void __init proc_device_tree_init(void)
|
||||
return;
|
||||
root = of_find_node_by_path("/");
|
||||
if (root == NULL) {
|
||||
+ remove_proc_entry("device-tree", NULL);
|
||||
pr_debug("/proc/device-tree: can't find root\n");
|
||||
return;
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
Bugzilla: 1046495
|
||||
Upstream-status: Sent for 3.14 http://marc.info/?l=linux-wireless&m=139453882510796&w=2
|
||||
|
||||
From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
|
||||
There is a flow in which we send the host command in SYNC
|
||||
mode, but we don't take priv->mutex.
|
||||
|
||||
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1046495
|
||||
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
|
||||
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/dvm/main.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c
|
||||
index ba1b1ea..ea7e70c 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/dvm/main.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/dvm/main.c
|
||||
@@ -252,13 +252,17 @@ static void iwl_bg_bt_runtime_config(struct work_struct *work)
|
||||
struct iwl_priv *priv =
|
||||
container_of(work, struct iwl_priv, bt_runtime_config);
|
||||
|
||||
+ mutex_lock(&priv->mutex);
|
||||
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
||||
- return;
|
||||
+ goto out;
|
||||
|
||||
/* dont send host command if rf-kill is on */
|
||||
if (!iwl_is_ready_rf(priv))
|
||||
- return;
|
||||
+ goto out;
|
||||
+
|
||||
iwlagn_send_advance_bt_config(priv);
|
||||
+out:
|
||||
+ mutex_unlock(&priv->mutex);
|
||||
}
|
||||
|
||||
static void iwl_bg_bt_full_concurrency(struct work_struct *work)
|
||||
--
|
||||
1.8.3.2
|
||||
|
||||
--
|
||||
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
|
186
kernel.spec
186
kernel.spec
|
@ -68,13 +68,13 @@ Summary: The Linux kernel
|
|||
# base_sublevel is the kernel version we're starting with and patching
|
||||
# on top of -- for example, 3.1-rc7-git1 starts with a 3.0 base,
|
||||
# which yields a base_sublevel of 0.
|
||||
%define base_sublevel 12
|
||||
%define base_sublevel 14
|
||||
|
||||
## If this is a released kernel ##
|
||||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 5
|
||||
%define stable_update 0
|
||||
# Is it a -stable RC?
|
||||
%define stable_rc 0
|
||||
# Set rpm version accordingly
|
||||
|
@ -394,7 +394,7 @@ Summary: The Linux kernel
|
|||
%endif
|
||||
|
||||
%ifarch aarch64
|
||||
%define all_arch_configs kernel-%{version}-arm64.config
|
||||
%define all_arch_configs kernel-%{version}-aarch64*.config
|
||||
%define asmarch arm64
|
||||
%define hdrarch arm64
|
||||
%define make_target Image.gz
|
||||
|
@ -493,11 +493,11 @@ BuildRequires: xmlto, asciidoc
|
|||
BuildRequires: sparse
|
||||
%endif
|
||||
%if %{with_perf}
|
||||
BuildRequires: elfutils-devel zlib-devel binutils-devel newt-devel python-devel perl(ExtUtils::Embed) bison
|
||||
BuildRequires: elfutils-devel zlib-devel binutils-devel newt-devel python-devel perl(ExtUtils::Embed) bison flex
|
||||
BuildRequires: audit-libs-devel
|
||||
%endif
|
||||
%if %{with_tools}
|
||||
BuildRequires: pciutils-devel gettext
|
||||
BuildRequires: pciutils-devel gettext ncurses-devel
|
||||
%endif
|
||||
BuildConflicts: rhbuildsys(DiskFree) < 500Mb
|
||||
%if %{with_debuginfo}
|
||||
|
@ -613,7 +613,6 @@ Patch09: upstream-reverts.patch
|
|||
# Standalone patches
|
||||
|
||||
Patch390: defaults-acpi-video.patch
|
||||
Patch396: acpi-sony-nonvs-blacklist.patch
|
||||
|
||||
Patch450: input-kill-stupid-messages.patch
|
||||
Patch452: no-pcspkr-modalias.patch
|
||||
|
@ -625,18 +624,15 @@ Patch470: die-floppy-die.patch
|
|||
Patch510: silence-noise.patch
|
||||
Patch530: silence-fbcon-logo.patch
|
||||
|
||||
Patch600: x86-allow-1024-cpus.patch
|
||||
Patch600: 0001-lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch
|
||||
|
||||
#rhbz 917708
|
||||
Patch700: Revert-userns-Allow-unprivileged-users-to-create-use.patch
|
||||
|
||||
Patch800: crash-driver.patch
|
||||
|
||||
# crypto/
|
||||
|
||||
# keys
|
||||
Patch900: keys-expand-keyring.patch
|
||||
Patch901: keys-krb-support.patch
|
||||
Patch902: keys-x509-improv.patch
|
||||
Patch903: keys-fixes.patch
|
||||
|
||||
# secure boot
|
||||
Patch1000: secure-modules.patch
|
||||
Patch1001: modsign-uefi.patch
|
||||
|
@ -649,18 +645,15 @@ Patch1003: sysrq-secure-boot.patch
|
|||
|
||||
# nouveau + drm fixes
|
||||
# intel drm is all merged upstream
|
||||
Patch1825: drm-i915-dp-stfu.patch
|
||||
|
||||
Patch1826: drm-i915-hush-check-crtc-state.patch
|
||||
# Quiet boot fixes
|
||||
# silence the ACPI blacklist code
|
||||
Patch2802: silence-acpi-blacklist.patch
|
||||
|
||||
# fs fixes
|
||||
|
||||
# NFSv4
|
||||
|
||||
# patches headed upstream
|
||||
Patch10000: fs-proc-devtree-remove_proc_entry.patch
|
||||
Patch12015: 3.14.1-rc1.patch
|
||||
|
||||
Patch12016: disable-i8042-check-on-apple-mac.patch
|
||||
|
||||
|
@ -684,18 +677,14 @@ Patch21010: arm-omap-load-tfp410.patch
|
|||
# ARM tegra
|
||||
Patch21020: arm-tegra-usb-no-reset-linux33.patch
|
||||
|
||||
# Add panel support for tegra paz00
|
||||
# Backported from linux-next scheduled for 3.15
|
||||
Patch21021: arm-tegra-paz00-panel-dts.patch
|
||||
|
||||
# ARM i.MX6
|
||||
# http://www.spinics.net/lists/devicetree/msg08276.html
|
||||
Patch21025: arm-imx6-utilite.patch
|
||||
|
||||
# am33xx (BeagleBone)
|
||||
# https://github.com/beagleboard/kernel
|
||||
# Pulled primarily from the above git repo. First patch is all in arm-soc
|
||||
# scheduled for 3.13. The others should be landing via other trees
|
||||
Patch21030: arm-am33xx-arm-soc-upstream.patch
|
||||
Patch21031: arm-am33xx-bblack.patch
|
||||
Patch21032: arm-am33xx-cpsw.patch
|
||||
|
||||
#rhbz 754518
|
||||
Patch21235: scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch
|
||||
|
||||
|
@ -709,46 +698,20 @@ Patch22000: weird-root-dentry-name-debug.patch
|
|||
|
||||
Patch25047: drm-radeon-Disable-writeback-by-default-on-ppc.patch
|
||||
|
||||
#rhbz 896695
|
||||
Patch25127: 0002-iwlwifi-don-t-WARN-on-bad-firmware-state.patch
|
||||
#rhbz 1051748
|
||||
Patch25035: Bluetooth-allocate-static-minor-for-vhci.patch
|
||||
|
||||
#rhbz 993744
|
||||
Patch25128: dm-cache-policy-mq_fix-large-scale-table-allocation-bug.patch
|
||||
#rhbz 1046495
|
||||
Patch25044: iwlwifi-dvm-take-mutex-when-sending-SYNC-BT-config-command.patch
|
||||
|
||||
#rhbz 1000439
|
||||
Patch25129: cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch
|
||||
#CVE-2014-0155 rhbz 1081589 1085016
|
||||
Patch25036: KVM-ioapic-fix-assignment-of-ioapic-rtc_status-pending_eoi.patch
|
||||
|
||||
Patch25140: drm-qxl-backport-fixes-for-Fedora.patch
|
||||
#rhbz 1048314
|
||||
Patch25062: 0001-HID-rmi-introduce-RMI-driver-for-Synaptics-touchpads.patch
|
||||
|
||||
#rhbz 1011362
|
||||
Patch25148: alx-Reset-phy-speed-after-resume.patch
|
||||
|
||||
# Fix 15sec NFS mount delay
|
||||
Patch25152: sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch
|
||||
Patch25153: sunrpc-replace-gssd_running-with-more-reliable-check.patch
|
||||
Patch25154: nfs-check-gssd-running-before-krb5i-auth.patch
|
||||
|
||||
#CVE-2013-6382 rhbz 1033603 1034670
|
||||
Patch25157: xfs-underflow-bug-in-xfs_attrlist_by_handle.patch
|
||||
|
||||
#rhbz 958826
|
||||
Patch25164: dell-laptop.patch
|
||||
|
||||
#rhbz 1030802
|
||||
Patch25170: Input-elantech-add-support-for-newer-August-2013-dev.patch
|
||||
Patch25171: elantech-Properly-differentiate-between-clickpads-an.patch
|
||||
|
||||
#CVE-2013-6367 rhbz 1032207 1042081
|
||||
Patch25172: KVM-x86-Fix-potential-divide-by-0-in-lapic.patch
|
||||
|
||||
#CVE-2013-6368 rhbz 1032210 1042090
|
||||
Patch25173: KVM-x86-Convert-vapic-synchronization-to-_cached-functions.patch
|
||||
|
||||
#CVE-2013-6376 rhbz 1033106 1042099
|
||||
Patch25174: KVM-x86-fix-guest-initiated-crash-with-x2apic.patch
|
||||
|
||||
#CVE-2013-4587 rhbz 1030986 1042071
|
||||
Patch25175: KVM-Improve-create-VCPU-parameter.patch
|
||||
#rhbz 1074235
|
||||
Patch25055: lib-percpu_counter.c-fix-bad-percpu-counter-state-du.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
|
||||
|
@ -899,7 +862,7 @@ This package provides debug information for package kernel-tools.
|
|||
# symlinks because of the trailing nonmatching alternation and
|
||||
# the leading .*, because of find-debuginfo.sh's buggy handling
|
||||
# of matching the pattern against the symlinks file.
|
||||
%{expand:%%global debuginfo_args %{?debuginfo_args} -p '.*%%{_bindir}/centrino-decode(\.debug)?|.*%%{_bindir}/powernow-k8-decode(\.debug)?|.*%%{_bindir}/cpupower(\.debug)?|.*%%{_libdir}/libcpupower.*|.*%%{_bindir}/turbostat(\.debug)?|.*%%{_bindir}/x86_energy_perf_policy(\.debug)?|XXX' -o kernel-tools-debuginfo.list}
|
||||
%{expand:%%global debuginfo_args %{?debuginfo_args} -p '.*%%{_bindir}/centrino-decode(\.debug)?|.*%%{_bindir}/powernow-k8-decode(\.debug)?|.*%%{_bindir}/cpupower(\.debug)?|.*%%{_libdir}/libcpupower.*|.*%%{_bindir}/turbostat(\.debug)?|.*%%{_bindir}/x86_energy_perf_policy(\.debug)?|.*%%{_bindir}/tmon(\.debug)?|XXX' -o kernel-tools-debuginfo.list}
|
||||
|
||||
%endif # with_tools
|
||||
|
||||
|
@ -950,10 +913,10 @@ against the %{?2:%{2} }kernel package.\
|
|||
Summary: Extra kernel modules to match the %{?2:%{2} }kernel\
|
||||
Group: System Environment/Kernel\
|
||||
Provides: kernel%{?1:-%{1}}-modules-extra-%{_target_cpu} = %{version}-%{release}\
|
||||
Provides: kernel-modules-extra-%{_target_cpu} = %{version}-%{release}%{?1:+%{1}}\
|
||||
Provides: kernel-modules-extra = %{version}-%{release}%{?1:+%{1}}\
|
||||
Provides: kernel%{?1:-%{1}}-modules-extra-%{_target_cpu} = %{version}-%{release}%{?1:+%{1}}\
|
||||
Provides: kernel%{?1:-%{1}}-modules-extra = %{version}-%{release}%{?1:+%{1}}\
|
||||
Provides: installonlypkg(kernel-module)\
|
||||
Provides: kernel-modules-extra-uname-r = %{KVERREL}%{?1:+%{1}}\
|
||||
Provides: kernel%{?1:-%{1}}-modules-extra-uname-r = %{KVERREL}%{?1:+%{1}}\
|
||||
Requires: kernel-uname-r = %{KVERREL}%{?1:+%{1}}\
|
||||
AutoReqProv: no\
|
||||
%description -n kernel%{?variant}%{?1:-%{1}}-modules-extra\
|
||||
|
@ -1186,7 +1149,7 @@ if [ ! -d kernel-%{kversion}%{?dist}/vanilla-%{vanillaversion} ]; then
|
|||
done
|
||||
if [[ ! -z $sharedir && -d $sharedir/vanilla-%{kversion} ]] ; then
|
||||
%setup -q -n kernel-%{kversion}%{?dist} -c -T
|
||||
cp -rl $sharedir/vanilla-%{kversion} .
|
||||
cp -al $sharedir/vanilla-%{kversion} .
|
||||
else
|
||||
%setup -q -n kernel-%{kversion}%{?dist} -c
|
||||
mv linux-%{kversion} vanilla-%{kversion}
|
||||
|
@ -1203,12 +1166,12 @@ if [ ! -d kernel-%{kversion}%{?dist}/vanilla-%{vanillaversion} ]; then
|
|||
done
|
||||
if [[ ! -z $sharedir && -d $sharedir/vanilla-%{vanillaversion} ]] ; then
|
||||
|
||||
cp -rl $sharedir/vanilla-%{vanillaversion} .
|
||||
cp -al $sharedir/vanilla-%{vanillaversion} .
|
||||
|
||||
else
|
||||
|
||||
# Need to apply patches to the base vanilla version.
|
||||
cp -rl vanilla-%{kversion} vanilla-%{vanillaversion}
|
||||
cp -al vanilla-%{kversion} vanilla-%{vanillaversion}
|
||||
cd vanilla-%{vanillaversion}
|
||||
|
||||
# Update vanilla to the latest upstream.
|
||||
|
@ -1239,7 +1202,7 @@ else
|
|||
fi
|
||||
|
||||
# Now build the fedora kernel tree.
|
||||
cp -rl vanilla-%{vanillaversion} linux-%{KVERREL}
|
||||
cp -al vanilla-%{vanillaversion} linux-%{KVERREL}
|
||||
|
||||
cd linux-%{KVERREL}
|
||||
|
||||
|
@ -1271,7 +1234,7 @@ make -f %{SOURCE19} config-release
|
|||
make -f %{SOURCE20} VERSION=%{version} configs
|
||||
|
||||
# Merge in any user-provided local config option changes
|
||||
for i in kernel-%{version}-*.config
|
||||
for i in %{all_arch_configs}
|
||||
do
|
||||
mv $i $i.tmp
|
||||
./merge.pl %{SOURCE1000} $i.tmp > $i
|
||||
|
@ -1292,7 +1255,7 @@ ApplyOptionalPatch upstream-reverts.patch -R
|
|||
|
||||
# Architecture patches
|
||||
# x86(-64)
|
||||
ApplyPatch x86-allow-1024-cpus.patch
|
||||
ApplyPatch 0001-lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch
|
||||
|
||||
# ARM64
|
||||
|
||||
|
@ -1303,11 +1266,9 @@ ApplyPatch arm-lpae-ax88796.patch
|
|||
ApplyPatch arm-sound-soc-samsung-dma-avoid-another-64bit-division.patch
|
||||
ApplyPatch arm-omap-load-tfp410.patch
|
||||
ApplyPatch arm-tegra-usb-no-reset-linux33.patch
|
||||
ApplyPatch arm-tegra-paz00-panel-dts.patch
|
||||
ApplyPatch arm-imx6-utilite.patch
|
||||
|
||||
ApplyPatch arm-am33xx-arm-soc-upstream.patch
|
||||
ApplyPatch arm-am33xx-bblack.patch
|
||||
ApplyPatch arm-am33xx-cpsw.patch
|
||||
|
||||
#
|
||||
# bugfixes to drivers and filesystems
|
||||
|
@ -1329,7 +1290,6 @@ ApplyPatch arm-am33xx-cpsw.patch
|
|||
|
||||
# ACPI
|
||||
ApplyPatch defaults-acpi-video.patch
|
||||
ApplyPatch acpi-sony-nonvs-blacklist.patch
|
||||
|
||||
#
|
||||
# PCI
|
||||
|
@ -1365,18 +1325,14 @@ ApplyPatch silence-fbcon-logo.patch
|
|||
|
||||
# Changes to upstream defaults.
|
||||
|
||||
#rhbz 917708
|
||||
ApplyPatch Revert-userns-Allow-unprivileged-users-to-create-use.patch
|
||||
|
||||
# /dev/crash driver.
|
||||
ApplyPatch crash-driver.patch
|
||||
|
||||
# crypto/
|
||||
|
||||
# keys
|
||||
ApplyPatch keys-expand-keyring.patch
|
||||
ApplyPatch keys-krb-support.patch
|
||||
ApplyPatch keys-x509-improv.patch
|
||||
ApplyPatch keys-fixes.patch
|
||||
|
||||
# secure boot
|
||||
ApplyPatch secure-modules.patch
|
||||
ApplyPatch modsign-uefi.patch
|
||||
|
@ -1390,15 +1346,12 @@ ApplyPatch sysrq-secure-boot.patch
|
|||
# Nouveau DRM
|
||||
|
||||
# Intel DRM
|
||||
ApplyPatch drm-i915-dp-stfu.patch
|
||||
ApplyPatch drm-i915-hush-check-crtc-state.patch
|
||||
|
||||
# Radeon DRM
|
||||
|
||||
# silence the ACPI blacklist code
|
||||
ApplyPatch silence-acpi-blacklist.patch
|
||||
|
||||
# Patches headed upstream
|
||||
ApplyPatch fs-proc-devtree-remove_proc_entry.patch
|
||||
ApplyPatch 3.14.1-rc1.patch
|
||||
|
||||
ApplyPatch disable-i8042-check-on-apple-mac.patch
|
||||
|
||||
|
@ -1423,46 +1376,20 @@ ApplyPatch ath9k_rx_dma_stop_check.patch
|
|||
|
||||
ApplyPatch drm-radeon-Disable-writeback-by-default-on-ppc.patch
|
||||
|
||||
#rhbz 896695
|
||||
ApplyPatch 0002-iwlwifi-don-t-WARN-on-bad-firmware-state.patch
|
||||
#rhbz 1051748
|
||||
ApplyPatch Bluetooth-allocate-static-minor-for-vhci.patch
|
||||
|
||||
#rhbz 993744
|
||||
ApplyPatch dm-cache-policy-mq_fix-large-scale-table-allocation-bug.patch
|
||||
#rhbz 1046495
|
||||
ApplyPatch iwlwifi-dvm-take-mutex-when-sending-SYNC-BT-config-command.patch
|
||||
|
||||
#rhbz 1000439
|
||||
ApplyPatch cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch
|
||||
#CVE-2014-0155 rhbz 1081589 1085016
|
||||
ApplyPatch KVM-ioapic-fix-assignment-of-ioapic-rtc_status-pending_eoi.patch
|
||||
|
||||
ApplyPatch drm-qxl-backport-fixes-for-Fedora.patch
|
||||
#rhbz 1048314
|
||||
ApplyPatch 0001-HID-rmi-introduce-RMI-driver-for-Synaptics-touchpads.patch
|
||||
|
||||
#rhbz 1011362
|
||||
ApplyPatch alx-Reset-phy-speed-after-resume.patch
|
||||
|
||||
# Fix 15sec NFS mount delay
|
||||
ApplyPatch sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch
|
||||
ApplyPatch sunrpc-replace-gssd_running-with-more-reliable-check.patch
|
||||
ApplyPatch nfs-check-gssd-running-before-krb5i-auth.patch
|
||||
|
||||
#CVE-2013-6382 rhbz 1033603 1034670
|
||||
ApplyPatch xfs-underflow-bug-in-xfs_attrlist_by_handle.patch
|
||||
|
||||
#rhbz 958826
|
||||
ApplyPatch dell-laptop.patch
|
||||
|
||||
#rhbz 1030802
|
||||
ApplyPatch Input-elantech-add-support-for-newer-August-2013-dev.patch
|
||||
ApplyPatch elantech-Properly-differentiate-between-clickpads-an.patch
|
||||
|
||||
#CVE-2013-6367 rhbz 1032207 1042081
|
||||
ApplyPatch KVM-x86-Fix-potential-divide-by-0-in-lapic.patch
|
||||
|
||||
#CVE-2013-6368 rhbz 1032210 1042090
|
||||
ApplyPatch KVM-x86-Convert-vapic-synchronization-to-_cached-functions.patch
|
||||
|
||||
#CVE-2013-6376 rhbz 1033106 1042099
|
||||
ApplyPatch KVM-x86-fix-guest-initiated-crash-with-x2apic.patch
|
||||
|
||||
#CVE-2013-4587 rhbz 1030986 1042071
|
||||
ApplyPatch KVM-Improve-create-VCPU-parameter.patch
|
||||
#rhbz 1074235
|
||||
ApplyPatch lib-percpu_counter.c-fix-bad-percpu-counter-state-du.patch
|
||||
|
||||
# END OF PATCH APPLICATIONS
|
||||
|
||||
|
@ -1848,6 +1775,9 @@ chmod +x tools/power/cpupower/utils/version-gen.sh
|
|||
popd
|
||||
%endif #turbostat/x86_energy_perf_policy
|
||||
%endif
|
||||
pushd tools/thermal/tmon/
|
||||
%{make}
|
||||
popd
|
||||
%endif
|
||||
|
||||
%if %{with_doc}
|
||||
|
@ -1961,13 +1891,15 @@ find $RPM_BUILD_ROOT/usr/include \
|
|||
|
||||
%if %{with_perf}
|
||||
# perf tool binary and supporting scripts/binaries
|
||||
%{perf_make} DESTDIR=$RPM_BUILD_ROOT install
|
||||
%{perf_make} DESTDIR=$RPM_BUILD_ROOT install-bin
|
||||
# remove the 'trace' symlink.
|
||||
rm -f %{buildroot}%{_bindir}/trace
|
||||
|
||||
# python-perf extension
|
||||
%{perf_make} DESTDIR=$RPM_BUILD_ROOT install-python_ext
|
||||
|
||||
# perf man pages (note: implicit rpm magic compresses them later)
|
||||
%{perf_make} DESTDIR=$RPM_BUILD_ROOT install-man || %{doc_build_fail}
|
||||
%{perf_make} DESTDIR=$RPM_BUILD_ROOT try-install-man || %{doc_build_fail}
|
||||
%endif
|
||||
|
||||
%if %{with_tools}
|
||||
|
@ -2002,6 +1934,9 @@ install -m644 %{SOURCE2001} %{buildroot}%{_sysconfdir}/sysconfig/cpupower
|
|||
make DESTDIR=%{buildroot} install
|
||||
popd
|
||||
%endif #turbostat/x86_energy_perf_policy
|
||||
pushd tools/thermal/tmon
|
||||
make INSTALL_ROOT=%{buildroot} install
|
||||
popd
|
||||
%endif
|
||||
|
||||
%if %{with_bootwrapper}
|
||||
|
@ -2180,6 +2115,7 @@ fi
|
|||
%{_bindir}/turbostat
|
||||
%{_mandir}/man8/turbostat*
|
||||
%endif
|
||||
%{_bindir}/tmon
|
||||
%endif
|
||||
|
||||
%if %{with_debuginfo}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
1025
keys-fixes.patch
1025
keys-fixes.patch
File diff suppressed because it is too large
Load Diff
|
@ -1,748 +0,0 @@
|
|||
From d7ccdaa17aab12a49f5e9e327b55167c4af26bf8 Mon Sep 17 00:00:00 2001
|
||||
From: David Howells <dhowells@redhat.com>
|
||||
Date: Fri, 30 Aug 2013 15:37:54 +0100
|
||||
Subject: [PATCH 1/2] KEYS: Implement a big key type that can save to tmpfs
|
||||
|
||||
Implement a big key type that can save its contents to tmpfs and thus
|
||||
swapspace when memory is tight. This is useful for Kerberos ticket caches.
|
||||
|
||||
Signed-off-by: David Howells <dhowells@redhat.com>
|
||||
Tested-by: Simo Sorce <simo@redhat.com>
|
||||
---
|
||||
include/keys/big_key-type.h | 25 ++++++
|
||||
include/linux/key.h | 1 +
|
||||
security/keys/Kconfig | 11 +++
|
||||
security/keys/Makefile | 1 +
|
||||
security/keys/big_key.c | 204 ++++++++++++++++++++++++++++++++++++++++++++
|
||||
5 files changed, 242 insertions(+)
|
||||
create mode 100644 include/keys/big_key-type.h
|
||||
create mode 100644 security/keys/big_key.c
|
||||
|
||||
diff --git a/include/keys/big_key-type.h b/include/keys/big_key-type.h
|
||||
new file mode 100644
|
||||
index 0000000..d69bc8a
|
||||
--- /dev/null
|
||||
+++ b/include/keys/big_key-type.h
|
||||
@@ -0,0 +1,25 @@
|
||||
+/* Big capacity key type.
|
||||
+ *
|
||||
+ * Copyright (C) 2013 Red Hat, Inc. All Rights Reserved.
|
||||
+ * Written by David Howells (dhowells@redhat.com)
|
||||
+ *
|
||||
+ * 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.
|
||||
+ */
|
||||
+
|
||||
+#ifndef _KEYS_BIG_KEY_TYPE_H
|
||||
+#define _KEYS_BIG_KEY_TYPE_H
|
||||
+
|
||||
+#include <linux/key-type.h>
|
||||
+
|
||||
+extern struct key_type key_type_big_key;
|
||||
+
|
||||
+extern int big_key_instantiate(struct key *key, struct key_preparsed_payload *prep);
|
||||
+extern void big_key_revoke(struct key *key);
|
||||
+extern void big_key_destroy(struct key *key);
|
||||
+extern void big_key_describe(const struct key *big_key, struct seq_file *m);
|
||||
+extern long big_key_read(const struct key *key, char __user *buffer, size_t buflen);
|
||||
+
|
||||
+#endif /* _KEYS_BIG_KEY_TYPE_H */
|
||||
diff --git a/include/linux/key.h b/include/linux/key.h
|
||||
index 2417f78..010dbb6 100644
|
||||
--- a/include/linux/key.h
|
||||
+++ b/include/linux/key.h
|
||||
@@ -201,6 +201,7 @@ struct key {
|
||||
unsigned long value;
|
||||
void __rcu *rcudata;
|
||||
void *data;
|
||||
+ void *data2[2];
|
||||
} payload;
|
||||
struct assoc_array keys;
|
||||
};
|
||||
diff --git a/security/keys/Kconfig b/security/keys/Kconfig
|
||||
index 15e0dfe..b563622 100644
|
||||
--- a/security/keys/Kconfig
|
||||
+++ b/security/keys/Kconfig
|
||||
@@ -20,6 +20,17 @@ config KEYS
|
||||
|
||||
If you are unsure as to whether this is required, answer N.
|
||||
|
||||
+config BIG_KEYS
|
||||
+ tristate "Large payload keys"
|
||||
+ depends on KEYS
|
||||
+ depends on TMPFS
|
||||
+ help
|
||||
+ This option provides support for holding large keys within the kernel
|
||||
+ (for example Kerberos ticket caches). The data may be stored out to
|
||||
+ swapspace by tmpfs.
|
||||
+
|
||||
+ If you are unsure as to whether this is required, answer N.
|
||||
+
|
||||
config TRUSTED_KEYS
|
||||
tristate "TRUSTED KEYS"
|
||||
depends on KEYS && TCG_TPM
|
||||
diff --git a/security/keys/Makefile b/security/keys/Makefile
|
||||
index 504aaa0..c487c77 100644
|
||||
--- a/security/keys/Makefile
|
||||
+++ b/security/keys/Makefile
|
||||
@@ -22,5 +22,6 @@ obj-$(CONFIG_SYSCTL) += sysctl.o
|
||||
#
|
||||
# Key types
|
||||
#
|
||||
+obj-$(CONFIG_BIG_KEYS) += big_key.o
|
||||
obj-$(CONFIG_TRUSTED_KEYS) += trusted.o
|
||||
obj-$(CONFIG_ENCRYPTED_KEYS) += encrypted-keys/
|
||||
diff --git a/security/keys/big_key.c b/security/keys/big_key.c
|
||||
new file mode 100644
|
||||
index 0000000..5f9defc
|
||||
--- /dev/null
|
||||
+++ b/security/keys/big_key.c
|
||||
@@ -0,0 +1,204 @@
|
||||
+/* Large capacity key type
|
||||
+ *
|
||||
+ * Copyright (C) 2013 Red Hat, Inc. All Rights Reserved.
|
||||
+ * Written by David Howells (dhowells@redhat.com)
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public Licence
|
||||
+ * as published by the Free Software Foundation; either version
|
||||
+ * 2 of the Licence, or (at your option) any later version.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/seq_file.h>
|
||||
+#include <linux/file.h>
|
||||
+#include <linux/shmem_fs.h>
|
||||
+#include <linux/err.h>
|
||||
+#include <keys/user-type.h>
|
||||
+#include <keys/big_key-type.h>
|
||||
+
|
||||
+MODULE_LICENSE("GPL");
|
||||
+
|
||||
+/*
|
||||
+ * If the data is under this limit, there's no point creating a shm file to
|
||||
+ * hold it as the permanently resident metadata for the shmem fs will be at
|
||||
+ * least as large as the data.
|
||||
+ */
|
||||
+#define BIG_KEY_FILE_THRESHOLD (sizeof(struct inode) + sizeof(struct dentry))
|
||||
+
|
||||
+/*
|
||||
+ * big_key defined keys take an arbitrary string as the description and an
|
||||
+ * arbitrary blob of data as the payload
|
||||
+ */
|
||||
+struct key_type key_type_big_key = {
|
||||
+ .name = "big_key",
|
||||
+ .def_lookup_type = KEYRING_SEARCH_LOOKUP_DIRECT,
|
||||
+ .instantiate = big_key_instantiate,
|
||||
+ .match = user_match,
|
||||
+ .revoke = big_key_revoke,
|
||||
+ .destroy = big_key_destroy,
|
||||
+ .describe = big_key_describe,
|
||||
+ .read = big_key_read,
|
||||
+};
|
||||
+
|
||||
+/*
|
||||
+ * Instantiate a big key
|
||||
+ */
|
||||
+int big_key_instantiate(struct key *key, struct key_preparsed_payload *prep)
|
||||
+{
|
||||
+ struct path *path = (struct path *)&key->payload.data2;
|
||||
+ struct file *file;
|
||||
+ ssize_t written;
|
||||
+ size_t datalen = prep->datalen;
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = -EINVAL;
|
||||
+ if (datalen <= 0 || datalen > 1024 * 1024 || !prep->data)
|
||||
+ goto error;
|
||||
+
|
||||
+ /* Set an arbitrary quota */
|
||||
+ ret = key_payload_reserve(key, 16);
|
||||
+ if (ret < 0)
|
||||
+ goto error;
|
||||
+
|
||||
+ key->type_data.x[1] = datalen;
|
||||
+
|
||||
+ if (datalen > BIG_KEY_FILE_THRESHOLD) {
|
||||
+ /* Create a shmem file to store the data in. This will permit the data
|
||||
+ * to be swapped out if needed.
|
||||
+ *
|
||||
+ * TODO: Encrypt the stored data with a temporary key.
|
||||
+ */
|
||||
+ file = shmem_file_setup("", datalen, 0);
|
||||
+ if (IS_ERR(file))
|
||||
+ goto err_quota;
|
||||
+
|
||||
+ written = kernel_write(file, prep->data, prep->datalen, 0);
|
||||
+ if (written != datalen) {
|
||||
+ if (written >= 0)
|
||||
+ ret = -ENOMEM;
|
||||
+ goto err_fput;
|
||||
+ }
|
||||
+
|
||||
+ /* Pin the mount and dentry to the key so that we can open it again
|
||||
+ * later
|
||||
+ */
|
||||
+ *path = file->f_path;
|
||||
+ path_get(path);
|
||||
+ fput(file);
|
||||
+ } else {
|
||||
+ /* Just store the data in a buffer */
|
||||
+ void *data = kmalloc(datalen, GFP_KERNEL);
|
||||
+ if (!data) {
|
||||
+ ret = -ENOMEM;
|
||||
+ goto err_quota;
|
||||
+ }
|
||||
+
|
||||
+ key->payload.data = memcpy(data, prep->data, prep->datalen);
|
||||
+ }
|
||||
+ return 0;
|
||||
+
|
||||
+err_fput:
|
||||
+ fput(file);
|
||||
+err_quota:
|
||||
+ key_payload_reserve(key, 0);
|
||||
+error:
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * dispose of the links from a revoked keyring
|
||||
+ * - called with the key sem write-locked
|
||||
+ */
|
||||
+void big_key_revoke(struct key *key)
|
||||
+{
|
||||
+ struct path *path = (struct path *)&key->payload.data2;
|
||||
+
|
||||
+ /* clear the quota */
|
||||
+ key_payload_reserve(key, 0);
|
||||
+ if (key_is_instantiated(key) && key->type_data.x[1] > BIG_KEY_FILE_THRESHOLD)
|
||||
+ vfs_truncate(path, 0);
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * dispose of the data dangling from the corpse of a big_key key
|
||||
+ */
|
||||
+void big_key_destroy(struct key *key)
|
||||
+{
|
||||
+ if (key->type_data.x[1] > BIG_KEY_FILE_THRESHOLD) {
|
||||
+ struct path *path = (struct path *)&key->payload.data2;
|
||||
+ path_put(path);
|
||||
+ path->mnt = NULL;
|
||||
+ path->dentry = NULL;
|
||||
+ } else {
|
||||
+ kfree(key->payload.data);
|
||||
+ key->payload.data = NULL;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * describe the big_key key
|
||||
+ */
|
||||
+void big_key_describe(const struct key *key, struct seq_file *m)
|
||||
+{
|
||||
+ unsigned long datalen = key->type_data.x[1];
|
||||
+
|
||||
+ seq_puts(m, key->description);
|
||||
+
|
||||
+ if (key_is_instantiated(key))
|
||||
+ seq_printf(m, ": %lu [%s]",
|
||||
+ datalen,
|
||||
+ datalen > BIG_KEY_FILE_THRESHOLD ? "file" : "buff");
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * read the key data
|
||||
+ * - the key's semaphore is read-locked
|
||||
+ */
|
||||
+long big_key_read(const struct key *key, char __user *buffer, size_t buflen)
|
||||
+{
|
||||
+ unsigned long datalen = key->type_data.x[1];
|
||||
+ long ret;
|
||||
+
|
||||
+ if (!buffer || buflen < datalen)
|
||||
+ return datalen;
|
||||
+
|
||||
+ if (datalen > BIG_KEY_FILE_THRESHOLD) {
|
||||
+ struct path *path = (struct path *)&key->payload.data2;
|
||||
+ struct file *file;
|
||||
+ loff_t pos;
|
||||
+
|
||||
+ file = dentry_open(path, O_RDONLY, current_cred());
|
||||
+ if (IS_ERR(file))
|
||||
+ return PTR_ERR(file);
|
||||
+
|
||||
+ pos = 0;
|
||||
+ ret = vfs_read(file, buffer, datalen, &pos);
|
||||
+ fput(file);
|
||||
+ if (ret >= 0 && ret != datalen)
|
||||
+ ret = -EIO;
|
||||
+ } else {
|
||||
+ ret = datalen;
|
||||
+ if (copy_to_user(buffer, key->payload.data, datalen) != 0)
|
||||
+ ret = -EFAULT;
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * Module stuff
|
||||
+ */
|
||||
+static int __init big_key_init(void)
|
||||
+{
|
||||
+ return register_key_type(&key_type_big_key);
|
||||
+}
|
||||
+
|
||||
+static void __exit big_key_cleanup(void)
|
||||
+{
|
||||
+ unregister_key_type(&key_type_big_key);
|
||||
+}
|
||||
+
|
||||
+module_init(big_key_init);
|
||||
+module_exit(big_key_cleanup);
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
From 862e98313b10123fa4352117b0b0c0f5a530cefb Mon Sep 17 00:00:00 2001
|
||||
From: David Howells <dhowells@redhat.com>
|
||||
Date: Fri, 30 Aug 2013 15:37:54 +0100
|
||||
Subject: [PATCH 2/2] KEYS: Add per-user_namespace registers for persistent
|
||||
per-UID kerberos caches
|
||||
|
||||
Add support for per-user_namespace registers of persistent per-UID kerberos
|
||||
caches held within the kernel.
|
||||
|
||||
This allows the kerberos cache to be retained beyond the life of all a user's
|
||||
processes so that the user's cron jobs can work.
|
||||
|
||||
The kerberos cache is envisioned as a keyring/key tree looking something like:
|
||||
|
||||
struct user_namespace
|
||||
\___ .krb_cache keyring - The register
|
||||
\___ _krb.0 keyring - Root's Kerberos cache
|
||||
\___ _krb.5000 keyring - User 5000's Kerberos cache
|
||||
\___ _krb.5001 keyring - User 5001's Kerberos cache
|
||||
\___ tkt785 big_key - A ccache blob
|
||||
\___ tkt12345 big_key - Another ccache blob
|
||||
|
||||
Or possibly:
|
||||
|
||||
struct user_namespace
|
||||
\___ .krb_cache keyring - The register
|
||||
\___ _krb.0 keyring - Root's Kerberos cache
|
||||
\___ _krb.5000 keyring - User 5000's Kerberos cache
|
||||
\___ _krb.5001 keyring - User 5001's Kerberos cache
|
||||
\___ tkt785 keyring - A ccache
|
||||
\___ krbtgt/REDHAT.COM@REDHAT.COM big_key
|
||||
\___ http/REDHAT.COM@REDHAT.COM user
|
||||
\___ afs/REDHAT.COM@REDHAT.COM user
|
||||
\___ nfs/REDHAT.COM@REDHAT.COM user
|
||||
\___ krbtgt/KERNEL.ORG@KERNEL.ORG big_key
|
||||
\___ http/KERNEL.ORG@KERNEL.ORG big_key
|
||||
|
||||
What goes into a particular Kerberos cache is entirely up to userspace. Kernel
|
||||
support is limited to giving you the Kerberos cache keyring that you want.
|
||||
|
||||
The user asks for their Kerberos cache by:
|
||||
|
||||
krb_cache = keyctl_get_krbcache(uid, dest_keyring);
|
||||
|
||||
The uid is -1 or the user's own UID for the user's own cache or the uid of some
|
||||
other user's cache (requires CAP_SETUID). This permits rpc.gssd or whatever to
|
||||
mess with the cache.
|
||||
|
||||
The cache returned is a keyring named "_krb.<uid>" that the possessor can read,
|
||||
search, clear, invalidate, unlink from and add links to. Active LSMs get a
|
||||
chance to rule on whether the caller is permitted to make a link.
|
||||
|
||||
Each uid's cache keyring is created when it first accessed and is given a
|
||||
timeout that is extended each time this function is called so that the keyring
|
||||
goes away after a while. The timeout is configurable by sysctl but defaults to
|
||||
three days.
|
||||
|
||||
Each user_namespace struct gets a lazily-created keyring that serves as the
|
||||
register. The cache keyrings are added to it. This means that standard key
|
||||
search and garbage collection facilities are available.
|
||||
|
||||
The user_namespace struct's register goes away when it does and anything left
|
||||
in it is then automatically gc'd.
|
||||
|
||||
Signed-off-by: David Howells <dhowells@redhat.com>
|
||||
Tested-by: Simo Sorce <simo@redhat.com>
|
||||
cc: Serge E. Hallyn <serge.hallyn@ubuntu.com>
|
||||
cc: Eric W. Biederman <ebiederm@xmission.com>
|
||||
---
|
||||
include/linux/user_namespace.h | 7 ++
|
||||
include/uapi/linux/keyctl.h | 1 +
|
||||
kernel/user.c | 4 +
|
||||
kernel/user_namespace.c | 6 ++
|
||||
security/keys/Kconfig | 17 +++++
|
||||
security/keys/Makefile | 1 +
|
||||
security/keys/compat.c | 3 +
|
||||
security/keys/internal.h | 9 +++
|
||||
security/keys/keyctl.c | 3 +
|
||||
security/keys/persistent.c | 169 +++++++++++++++++++++++++++++++++++++++++
|
||||
security/keys/sysctl.c | 11 +++
|
||||
11 files changed, 231 insertions(+)
|
||||
create mode 100644 security/keys/persistent.c
|
||||
|
||||
diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h
|
||||
index 4db2985..bb0639d 100644
|
||||
--- a/include/linux/user_namespace.h
|
||||
+++ b/include/linux/user_namespace.h
|
||||
@@ -27,6 +27,13 @@ struct user_namespace {
|
||||
kuid_t owner;
|
||||
kgid_t group;
|
||||
unsigned int proc_inum;
|
||||
+
|
||||
+ /* Register of per-UID persistent keyrings for this namespace */
|
||||
+#ifdef CONFIG_PERSISTENT_KEYRINGS
|
||||
+ struct key *persistent_keyring_register;
|
||||
+ struct rw_semaphore persistent_keyring_register_sem;
|
||||
+#endif
|
||||
+
|
||||
};
|
||||
|
||||
extern struct user_namespace init_user_ns;
|
||||
diff --git a/include/uapi/linux/keyctl.h b/include/uapi/linux/keyctl.h
|
||||
index c9b7f4fa..840cb99 100644
|
||||
--- a/include/uapi/linux/keyctl.h
|
||||
+++ b/include/uapi/linux/keyctl.h
|
||||
@@ -56,5 +56,6 @@
|
||||
#define KEYCTL_REJECT 19 /* reject a partially constructed key */
|
||||
#define KEYCTL_INSTANTIATE_IOV 20 /* instantiate a partially constructed key */
|
||||
#define KEYCTL_INVALIDATE 21 /* invalidate a key */
|
||||
+#define KEYCTL_GET_PERSISTENT 22 /* get a user's persistent keyring */
|
||||
|
||||
#endif /* _LINUX_KEYCTL_H */
|
||||
diff --git a/kernel/user.c b/kernel/user.c
|
||||
index 5bbb919..a3a0dbf 100644
|
||||
--- a/kernel/user.c
|
||||
+++ b/kernel/user.c
|
||||
@@ -51,6 +51,10 @@ struct user_namespace init_user_ns = {
|
||||
.owner = GLOBAL_ROOT_UID,
|
||||
.group = GLOBAL_ROOT_GID,
|
||||
.proc_inum = PROC_USER_INIT_INO,
|
||||
+#ifdef CONFIG_KEYS_KERBEROS_CACHE
|
||||
+ .krb_cache_register_sem =
|
||||
+ __RWSEM_INITIALIZER(init_user_ns.krb_cache_register_sem),
|
||||
+#endif
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(init_user_ns);
|
||||
|
||||
diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
|
||||
index 13fb113..2dbc299 100644
|
||||
--- a/kernel/user_namespace.c
|
||||
+++ b/kernel/user_namespace.c
|
||||
@@ -101,6 +101,9 @@ int create_user_ns(struct cred *new)
|
||||
|
||||
set_cred_user_ns(new, ns);
|
||||
|
||||
+#ifdef CONFIG_PERSISTENT_KEYRINGS
|
||||
+ rwsem_init(&ns->persistent_keyring_register_sem);
|
||||
+#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -130,6 +133,9 @@ void free_user_ns(struct user_namespace *ns)
|
||||
|
||||
do {
|
||||
parent = ns->parent;
|
||||
+#ifdef CONFIG_PERSISTENT_KEYRINGS
|
||||
+ key_put(ns->persistent_keyring_register);
|
||||
+#endif
|
||||
proc_free_inum(ns->proc_inum);
|
||||
kmem_cache_free(user_ns_cachep, ns);
|
||||
ns = parent;
|
||||
diff --git a/security/keys/Kconfig b/security/keys/Kconfig
|
||||
index b563622..53d8748 100644
|
||||
--- a/security/keys/Kconfig
|
||||
+++ b/security/keys/Kconfig
|
||||
@@ -20,6 +20,23 @@ config KEYS
|
||||
|
||||
If you are unsure as to whether this is required, answer N.
|
||||
|
||||
+config PERSISTENT_KEYRINGS
|
||||
+ bool "Enable register of persistent per-UID keyrings"
|
||||
+ depends on KEYS
|
||||
+ help
|
||||
+ This option provides a register of persistent per-UID keyrings,
|
||||
+ primarily aimed at Kerberos key storage. The keyrings are persistent
|
||||
+ in the sense that they stay around after all processes of that UID
|
||||
+ have exited, not that they survive the machine being rebooted.
|
||||
+
|
||||
+ A particular keyring may be accessed by either the user whose keyring
|
||||
+ it is or by a process with administrative privileges. The active
|
||||
+ LSMs gets to rule on which admin-level processes get to access the
|
||||
+ cache.
|
||||
+
|
||||
+ Keyrings are created and added into the register upon demand and get
|
||||
+ removed if they expire (a default timeout is set upon creation).
|
||||
+
|
||||
config BIG_KEYS
|
||||
tristate "Large payload keys"
|
||||
depends on KEYS
|
||||
diff --git a/security/keys/Makefile b/security/keys/Makefile
|
||||
index c487c77..dfb3a7b 100644
|
||||
--- a/security/keys/Makefile
|
||||
+++ b/security/keys/Makefile
|
||||
@@ -18,6 +18,7 @@ obj-y := \
|
||||
obj-$(CONFIG_KEYS_COMPAT) += compat.o
|
||||
obj-$(CONFIG_PROC_FS) += proc.o
|
||||
obj-$(CONFIG_SYSCTL) += sysctl.o
|
||||
+obj-$(CONFIG_PERSISTENT_KEYRINGS) += persistent.o
|
||||
|
||||
#
|
||||
# Key types
|
||||
diff --git a/security/keys/compat.c b/security/keys/compat.c
|
||||
index d65fa7f..bbd32c7 100644
|
||||
--- a/security/keys/compat.c
|
||||
+++ b/security/keys/compat.c
|
||||
@@ -138,6 +138,9 @@ asmlinkage long compat_sys_keyctl(u32 option,
|
||||
case KEYCTL_INVALIDATE:
|
||||
return keyctl_invalidate_key(arg2);
|
||||
|
||||
+ case KEYCTL_GET_PERSISTENT:
|
||||
+ return keyctl_get_persistent(arg2, arg3);
|
||||
+
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
diff --git a/security/keys/internal.h b/security/keys/internal.h
|
||||
index 581c6f6..80b2aac 100644
|
||||
--- a/security/keys/internal.h
|
||||
+++ b/security/keys/internal.h
|
||||
@@ -255,6 +255,15 @@ extern long keyctl_invalidate_key(key_serial_t);
|
||||
extern long keyctl_instantiate_key_common(key_serial_t,
|
||||
const struct iovec *,
|
||||
unsigned, size_t, key_serial_t);
|
||||
+#ifdef CONFIG_PERSISTENT_KEYRINGS
|
||||
+extern long keyctl_get_persistent(uid_t, key_serial_t);
|
||||
+extern unsigned persistent_keyring_expiry;
|
||||
+#else
|
||||
+static inline long keyctl_get_persistent(uid_t uid, key_serial_t destring)
|
||||
+{
|
||||
+ return -EOPNOTSUPP;
|
||||
+}
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* Debugging key validation
|
||||
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c
|
||||
index 33cfd27..cee72ce 100644
|
||||
--- a/security/keys/keyctl.c
|
||||
+++ b/security/keys/keyctl.c
|
||||
@@ -1667,6 +1667,9 @@ SYSCALL_DEFINE5(keyctl, int, option, unsigned long, arg2, unsigned long, arg3,
|
||||
case KEYCTL_INVALIDATE:
|
||||
return keyctl_invalidate_key((key_serial_t) arg2);
|
||||
|
||||
+ case KEYCTL_GET_PERSISTENT:
|
||||
+ return keyctl_get_persistent((uid_t)arg2, (key_serial_t)arg3);
|
||||
+
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
diff --git a/security/keys/persistent.c b/security/keys/persistent.c
|
||||
new file mode 100644
|
||||
index 0000000..631a022
|
||||
--- /dev/null
|
||||
+++ b/security/keys/persistent.c
|
||||
@@ -0,0 +1,169 @@
|
||||
+/* General persistent per-UID keyrings register
|
||||
+ *
|
||||
+ * Copyright (C) 2013 Red Hat, Inc. All Rights Reserved.
|
||||
+ * Written by David Howells (dhowells@redhat.com)
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public Licence
|
||||
+ * as published by the Free Software Foundation; either version
|
||||
+ * 2 of the Licence, or (at your option) any later version.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/user_namespace.h>
|
||||
+#include "internal.h"
|
||||
+
|
||||
+unsigned persistent_keyring_expiry = 3 * 24 * 3600; /* Expire after 3 days of non-use */
|
||||
+
|
||||
+/*
|
||||
+ * Create the persistent keyring register for the current user namespace.
|
||||
+ *
|
||||
+ * Called with the namespace's sem locked for writing.
|
||||
+ */
|
||||
+static int key_create_persistent_register(struct user_namespace *ns)
|
||||
+{
|
||||
+ struct key *reg = keyring_alloc(".persistent_register",
|
||||
+ 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, NULL);
|
||||
+ if (IS_ERR(reg))
|
||||
+ return PTR_ERR(reg);
|
||||
+
|
||||
+ ns->persistent_keyring_register = reg;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * Create the persistent keyring for the specified user.
|
||||
+ *
|
||||
+ * Called with the namespace's sem locked for writing.
|
||||
+ */
|
||||
+static key_ref_t key_create_persistent(struct user_namespace *ns, kuid_t uid,
|
||||
+ struct keyring_index_key *index_key)
|
||||
+{
|
||||
+ struct key *persistent;
|
||||
+ key_ref_t reg_ref, persistent_ref;
|
||||
+
|
||||
+ if (!ns->persistent_keyring_register) {
|
||||
+ long err = key_create_persistent_register(ns);
|
||||
+ if (err < 0)
|
||||
+ return ERR_PTR(err);
|
||||
+ } else {
|
||||
+ reg_ref = make_key_ref(ns->persistent_keyring_register, true);
|
||||
+ persistent_ref = find_key_to_update(reg_ref, index_key);
|
||||
+ if (persistent_ref)
|
||||
+ return persistent_ref;
|
||||
+ }
|
||||
+
|
||||
+ persistent = keyring_alloc(index_key->description,
|
||||
+ uid, INVALID_GID, current_cred(),
|
||||
+ ((KEY_POS_ALL & ~KEY_POS_SETATTR) |
|
||||
+ KEY_USR_VIEW | KEY_USR_READ),
|
||||
+ KEY_ALLOC_NOT_IN_QUOTA,
|
||||
+ ns->persistent_keyring_register);
|
||||
+ if (IS_ERR(persistent))
|
||||
+ return ERR_CAST(persistent);
|
||||
+
|
||||
+ return make_key_ref(persistent, true);
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * Get the persistent keyring for a specific UID and link it to the nominated
|
||||
+ * keyring.
|
||||
+ */
|
||||
+static long key_get_persistent(struct user_namespace *ns, kuid_t uid,
|
||||
+ key_ref_t dest_ref)
|
||||
+{
|
||||
+ struct keyring_index_key index_key;
|
||||
+ struct key *persistent;
|
||||
+ key_ref_t reg_ref, persistent_ref;
|
||||
+ char buf[32];
|
||||
+ long ret;
|
||||
+
|
||||
+ /* Look in the register if it exists */
|
||||
+ index_key.type = &key_type_keyring;
|
||||
+ index_key.description = buf;
|
||||
+ index_key.desc_len = sprintf(buf, "_persistent.%u", from_kuid(ns, uid));
|
||||
+
|
||||
+ if (ns->persistent_keyring_register) {
|
||||
+ reg_ref = make_key_ref(ns->persistent_keyring_register, true);
|
||||
+ down_read(&ns->persistent_keyring_register_sem);
|
||||
+ persistent_ref = find_key_to_update(reg_ref, &index_key);
|
||||
+ up_read(&ns->persistent_keyring_register_sem);
|
||||
+
|
||||
+ if (persistent_ref)
|
||||
+ goto found;
|
||||
+ }
|
||||
+
|
||||
+ /* It wasn't in the register, so we'll need to create it. We might
|
||||
+ * also need to create the register.
|
||||
+ */
|
||||
+ down_write(&ns->persistent_keyring_register_sem);
|
||||
+ persistent_ref = key_create_persistent(ns, uid, &index_key);
|
||||
+ up_write(&ns->persistent_keyring_register_sem);
|
||||
+ if (!IS_ERR(persistent_ref))
|
||||
+ goto found;
|
||||
+
|
||||
+ return PTR_ERR(persistent_ref);
|
||||
+
|
||||
+found:
|
||||
+ ret = key_task_permission(persistent_ref, current_cred(), KEY_LINK);
|
||||
+ if (ret == 0) {
|
||||
+ persistent = key_ref_to_ptr(persistent_ref);
|
||||
+ ret = key_link(key_ref_to_ptr(dest_ref), persistent);
|
||||
+ if (ret == 0) {
|
||||
+ key_set_timeout(persistent, persistent_keyring_expiry);
|
||||
+ ret = persistent->serial;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ key_ref_put(persistent_ref);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * Get the persistent keyring for a specific UID and link it to the nominated
|
||||
+ * keyring.
|
||||
+ */
|
||||
+long keyctl_get_persistent(uid_t _uid, key_serial_t destid)
|
||||
+{
|
||||
+ struct user_namespace *ns = current_user_ns();
|
||||
+ key_ref_t dest_ref;
|
||||
+ kuid_t uid;
|
||||
+ long ret;
|
||||
+
|
||||
+ /* -1 indicates the current user */
|
||||
+ if (_uid == (uid_t)-1) {
|
||||
+ uid = current_uid();
|
||||
+ } else {
|
||||
+ uid = make_kuid(ns, _uid);
|
||||
+ if (!uid_valid(uid))
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ /* You can only see your own persistent cache if you're not
|
||||
+ * sufficiently privileged.
|
||||
+ */
|
||||
+ if (uid != current_uid() &&
|
||||
+ uid != current_suid() &&
|
||||
+ uid != current_euid() &&
|
||||
+ uid != current_fsuid() &&
|
||||
+ !ns_capable(ns, CAP_SETUID))
|
||||
+ return -EPERM;
|
||||
+ }
|
||||
+
|
||||
+ /* There must be a destination keyring */
|
||||
+ dest_ref = lookup_user_key(destid, KEY_LOOKUP_CREATE, KEY_WRITE);
|
||||
+ if (IS_ERR(dest_ref))
|
||||
+ return PTR_ERR(dest_ref);
|
||||
+ if (key_ref_to_ptr(dest_ref)->type != &key_type_keyring) {
|
||||
+ ret = -ENOTDIR;
|
||||
+ goto out_put_dest;
|
||||
+ }
|
||||
+
|
||||
+ ret = key_get_persistent(ns, uid, dest_ref);
|
||||
+
|
||||
+out_put_dest:
|
||||
+ key_ref_put(dest_ref);
|
||||
+ return ret;
|
||||
+}
|
||||
diff --git a/security/keys/sysctl.c b/security/keys/sysctl.c
|
||||
index ee32d18..8c0af08 100644
|
||||
--- a/security/keys/sysctl.c
|
||||
+++ b/security/keys/sysctl.c
|
||||
@@ -61,5 +61,16 @@ ctl_table key_sysctls[] = {
|
||||
.extra1 = (void *) &zero,
|
||||
.extra2 = (void *) &max,
|
||||
},
|
||||
+#ifdef CONFIG_PERSISTENT_KEYRINGS
|
||||
+ {
|
||||
+ .procname = "persistent_keyring_expiry",
|
||||
+ .data = &persistent_keyring_expiry,
|
||||
+ .maxlen = sizeof(unsigned),
|
||||
+ .mode = 0644,
|
||||
+ .proc_handler = proc_dointvec_minmax,
|
||||
+ .extra1 = (void *) &zero,
|
||||
+ .extra2 = (void *) &max,
|
||||
+ },
|
||||
+#endif
|
||||
{ }
|
||||
};
|
||||
--
|
||||
1.8.3.1
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,63 @@
|
|||
Bugzilla: 1074235
|
||||
Upstream-status: 3.15 and CC'd to stable
|
||||
|
||||
From e39435ce68bb4685288f78b1a7e24311f7ef939f Mon Sep 17 00:00:00 2001
|
||||
From: Jens Axboe <axboe@fb.com>
|
||||
Date: Tue, 8 Apr 2014 16:04:12 -0700
|
||||
Subject: [PATCH] lib/percpu_counter.c: fix bad percpu counter state during
|
||||
suspend
|
||||
|
||||
I got a bug report yesterday from Laszlo Ersek in which he states that
|
||||
his kvm instance fails to suspend. Laszlo bisected it down to this
|
||||
commit 1cf7e9c68fe8 ("virtio_blk: blk-mq support") where virtio-blk is
|
||||
converted to use the blk-mq infrastructure.
|
||||
|
||||
After digging a bit, it became clear that the issue was with the queue
|
||||
drain. blk-mq tracks queue usage in a percpu counter, which is
|
||||
incremented on request alloc and decremented when the request is freed.
|
||||
The initial hunt was for an inconsistency in blk-mq, but everything
|
||||
seemed fine. In fact, the counter only returned crazy values when
|
||||
suspend was in progress.
|
||||
|
||||
When a CPU is unplugged, the percpu counters merges that CPU state with
|
||||
the general state. blk-mq takes care to register a hotcpu notifier with
|
||||
the appropriate priority, so we know it runs after the percpu counter
|
||||
notifier. However, the percpu counter notifier only merges the state
|
||||
when the CPU is fully gone. This leaves a state transition where the
|
||||
CPU going away is no longer in the online mask, yet it still holds
|
||||
private values. This means that in this state, percpu_counter_sum()
|
||||
returns invalid results, and the suspend then hangs waiting for
|
||||
abs(dead-cpu-value) requests to complete which of course will never
|
||||
happen.
|
||||
|
||||
Fix this by clearing the state earlier, so we never have a case where
|
||||
the CPU isn't in online mask but still holds private state. This bug
|
||||
has been there since forever, I guess we don't have a lot of users where
|
||||
percpu counters needs to be reliable during the suspend cycle.
|
||||
|
||||
Signed-off-by: Jens Axboe <axboe@fb.com>
|
||||
Reported-by: Laszlo Ersek <lersek@redhat.com>
|
||||
Tested-by: Laszlo Ersek <lersek@redhat.com>
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
lib/percpu_counter.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/percpu_counter.c b/lib/percpu_counter.c
|
||||
index 8280a5dd1727..7dd33577b905 100644
|
||||
--- a/lib/percpu_counter.c
|
||||
+++ b/lib/percpu_counter.c
|
||||
@@ -169,7 +169,7 @@ static int percpu_counter_hotcpu_callback(struct notifier_block *nb,
|
||||
struct percpu_counter *fbc;
|
||||
|
||||
compute_batch_value();
|
||||
- if (action != CPU_DEAD)
|
||||
+ if (action != CPU_DEAD && action != CPU_DEAD_FROZEN)
|
||||
return NOTIFY_OK;
|
||||
|
||||
cpu = (unsigned long)hcpu;
|
||||
--
|
||||
1.8.5.3
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
Bugzilla: N/A
|
||||
Upstream-status: ??
|
||||
|
||||
From b707aea6a4947c3806ced2c23e889943a0f36876 Mon Sep 17 00:00:00 2001
|
||||
From: Roland McGrath <roland@redhat.com>
|
||||
Date: Mon, 6 Oct 2008 23:03:03 -0700
|
||||
|
@ -8,17 +11,18 @@ after each final link. This includes vmlinux itself and vDSO images.
|
|||
|
||||
Signed-off-by: Roland McGrath <roland@redhat.com>
|
||||
|
||||
|
||||
diff --git a/arch/arm64/kernel/vdso/Makefile b/arch/arm64/kernel/vdso/Makefile
|
||||
index d8064af..04dcfe1 100644
|
||||
index 6d20b7d..863a01b 100644
|
||||
--- a/arch/arm64/kernel/vdso/Makefile
|
||||
+++ b/arch/arm64/kernel/vdso/Makefile
|
||||
@@ -48,7 +48,8 @@ $(obj-vdso): %.o: %.S
|
||||
|
||||
# Actual build commands
|
||||
quiet_cmd_vdsold = VDSOL $@
|
||||
- cmd_vdsold = $(CC) $(c_flags) -Wl,-T $^ -o $@
|
||||
+ cmd_vdsold = $(CC) $(c_flags) -Wl,-T $^ -o $@ \
|
||||
+ $(if $(AFTER_LINK),; $(AFTER_LINK))
|
||||
- cmd_vdsold = $(CC) $(c_flags) -Wl,-n -Wl,-T $^ -o $@
|
||||
+ cmd_vdsold = $(CC) $(c_flags) -Wl,-n -Wl,-T $^ -o $@ \
|
||||
+ $(if $(AFTER_LINK),;$(AFTER_LINK))
|
||||
quiet_cmd_vdsoas = VDSOA $@
|
||||
cmd_vdsoas = $(CC) $(a_flags) -c -o $@ $<
|
||||
|
||||
|
@ -95,7 +99,7 @@ index fd14be1..1f3eb19 100644
|
|||
VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv)
|
||||
GCOV_PROFILE := n
|
||||
diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
|
||||
index 0149949..e307cda 100644
|
||||
index 2dcb377..25e170e 100644
|
||||
--- a/scripts/link-vmlinux.sh
|
||||
+++ b/scripts/link-vmlinux.sh
|
||||
@@ -65,6 +65,10 @@ vmlinux_link()
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
From 0a5e59dd7a921f20d77b13aa4e01392086ddbd12 Mon Sep 17 00:00:00 2001
|
||||
Bugzilla: N/A
|
||||
Upstream-status: Fedora mustard for now
|
||||
|
||||
From 2b668e069365b608e855cf1f5edcf8caed0aaa4d Mon Sep 17 00:00:00 2001
|
||||
From: Dave Howells <dhowells@redhat.com>
|
||||
Date: Tue, 23 Oct 2012 09:30:54 -0400
|
||||
Subject: [PATCH 1/5] Add EFI signature data types
|
||||
|
@ -12,10 +15,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 eed2202..1da1b3c 100644
|
||||
index 0c1d367..de1faea 100644
|
||||
--- a/include/linux/efi.h
|
||||
+++ b/include/linux/efi.h
|
||||
@@ -389,6 +389,12 @@ typedef efi_status_t efi_query_variable_store_t(u32 attributes, unsigned long si
|
||||
@@ -394,6 +394,12 @@ typedef efi_status_t efi_query_variable_store_t(u32 attributes, unsigned long si
|
||||
#define EFI_FILE_SYSTEM_GUID \
|
||||
EFI_GUID( 0x964e5b22, 0x6459, 0x11d2, 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b )
|
||||
|
||||
|
@ -28,7 +31,7 @@ index eed2202..1da1b3c 100644
|
|||
typedef struct {
|
||||
efi_guid_t guid;
|
||||
u64 table;
|
||||
@@ -524,6 +530,20 @@ typedef struct {
|
||||
@@ -541,6 +547,20 @@ typedef struct _efi_file_io_interface {
|
||||
|
||||
#define EFI_INVALID_TABLE_ADDR (~0UL)
|
||||
|
||||
|
@ -50,10 +53,10 @@ index eed2202..1da1b3c 100644
|
|||
* All runtime access to EFI goes through this structure:
|
||||
*/
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From 8b75428a7e1813cd3bc225a959e63d67898e4808 Mon Sep 17 00:00:00 2001
|
||||
From 42d75e3e3fe134cc274f765525031b764540a587 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Howells <dhowells@redhat.com>
|
||||
Date: Tue, 23 Oct 2012 09:36:28 -0400
|
||||
Subject: [PATCH 2/5] Add an EFI signature blob parser and key loader.
|
||||
|
@ -71,10 +74,10 @@ Signed-off-by: David Howells <dhowells@redhat.com>
|
|||
create mode 100644 crypto/asymmetric_keys/efi_parser.c
|
||||
|
||||
diff --git a/crypto/asymmetric_keys/Kconfig b/crypto/asymmetric_keys/Kconfig
|
||||
index 6d2c2ea..ace9c30 100644
|
||||
index 03a6eb9..6306ffc 100644
|
||||
--- a/crypto/asymmetric_keys/Kconfig
|
||||
+++ b/crypto/asymmetric_keys/Kconfig
|
||||
@@ -35,4 +35,12 @@ config X509_CERTIFICATE_PARSER
|
||||
@@ -37,4 +37,12 @@ config X509_CERTIFICATE_PARSER
|
||||
data and provides the ability to instantiate a crypto key from a
|
||||
public key packet found inside the certificate.
|
||||
|
||||
|
@ -215,10 +218,10 @@ index 0000000..424896a
|
|||
+ return 0;
|
||||
+}
|
||||
diff --git a/include/linux/efi.h b/include/linux/efi.h
|
||||
index 1da1b3c..42a1d25 100644
|
||||
index de1faea..13e1425 100644
|
||||
--- a/include/linux/efi.h
|
||||
+++ b/include/linux/efi.h
|
||||
@@ -619,6 +619,10 @@ extern int efi_set_rtc_mmss(const struct timespec *now);
|
||||
@@ -641,6 +641,10 @@ extern int efi_set_rtc_mmss(const struct timespec *now);
|
||||
extern void efi_reserve_boot_services(void);
|
||||
extern struct efi_memory_map memmap;
|
||||
|
||||
|
@ -230,10 +233,10 @@ index 1da1b3c..42a1d25 100644
|
|||
* efi_range_is_wc - check the WC bit on an address range
|
||||
* @start: starting kvirt address
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From 920108c0f9cc5854dd329a5dfc904e91d40a4b26 Mon Sep 17 00:00:00 2001
|
||||
From d750dbcdcb3a712a2ea4ec57b9c9729c6a26b41d Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@fedoraproject.org>
|
||||
Date: Fri, 26 Oct 2012 12:36:24 -0400
|
||||
Subject: [PATCH 3/5] KEYS: Add a system blacklist keyring
|
||||
|
@ -267,10 +270,10 @@ index 8dabc39..e466de1 100644
|
|||
|
||||
#endif /* _KEYS_SYSTEM_KEYRING_H */
|
||||
diff --git a/init/Kconfig b/init/Kconfig
|
||||
index 0ff5407..ba76e57 100644
|
||||
index 5236dc5..f59e6fe 100644
|
||||
--- a/init/Kconfig
|
||||
+++ b/init/Kconfig
|
||||
@@ -1680,6 +1680,15 @@ config SYSTEM_TRUSTED_KEYRING
|
||||
@@ -1673,6 +1673,15 @@ config SYSTEM_TRUSTED_KEYRING
|
||||
|
||||
Keys in this keyring are used by module signature checking.
|
||||
|
||||
|
@ -287,7 +290,7 @@ index 0ff5407..ba76e57 100644
|
|||
bool "Enable loadable module support"
|
||||
option modules
|
||||
diff --git a/kernel/module_signing.c b/kernel/module_signing.c
|
||||
index 0b6b870..0a29b40 100644
|
||||
index be5b8fa..fed815f 100644
|
||||
--- a/kernel/module_signing.c
|
||||
+++ b/kernel/module_signing.c
|
||||
@@ -158,6 +158,18 @@ static struct key *request_asymmetric_key(const char *signer, size_t signer_len,
|
||||
|
@ -310,7 +313,7 @@ index 0b6b870..0a29b40 100644
|
|||
&key_type_asymmetric, id);
|
||||
if (IS_ERR(key))
|
||||
diff --git a/kernel/system_keyring.c b/kernel/system_keyring.c
|
||||
index 564dd93..389b50d 100644
|
||||
index 52ebc70..478c4f8 100644
|
||||
--- a/kernel/system_keyring.c
|
||||
+++ b/kernel/system_keyring.c
|
||||
@@ -20,6 +20,9 @@
|
||||
|
@ -322,7 +325,7 @@ index 564dd93..389b50d 100644
|
|||
+#endif
|
||||
|
||||
extern __initconst const u8 system_certificate_list[];
|
||||
extern __initconst const u8 system_certificate_list_end[];
|
||||
extern __initconst const unsigned long system_certificate_list_size;
|
||||
@@ -41,6 +44,20 @@ static __init int system_trusted_keyring_init(void)
|
||||
panic("Can't allocate system trusted keyring\n");
|
||||
|
||||
|
@ -345,10 +348,10 @@ index 564dd93..389b50d 100644
|
|||
}
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From 69dca9998380c1931227a01205cdf23c34509753 Mon Sep 17 00:00:00 2001
|
||||
From c32beadd0d75fddcd75b700e4a75884d7a82e9bb Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@fedoraproject.org>
|
||||
Date: Fri, 26 Oct 2012 12:42:16 -0400
|
||||
Subject: [PATCH 4/5] MODSIGN: Import certificates from UEFI Secure Boot
|
||||
|
@ -376,10 +379,10 @@ Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
|
|||
create mode 100644 kernel/modsign_uefi.c
|
||||
|
||||
diff --git a/include/linux/efi.h b/include/linux/efi.h
|
||||
index 42a1d25..d3e6036 100644
|
||||
index 13e1425..a7175eb 100644
|
||||
--- a/include/linux/efi.h
|
||||
+++ b/include/linux/efi.h
|
||||
@@ -395,6 +395,12 @@ typedef efi_status_t efi_query_variable_store_t(u32 attributes, unsigned long si
|
||||
@@ -400,6 +400,12 @@ typedef efi_status_t efi_query_variable_store_t(u32 attributes, unsigned long si
|
||||
#define EFI_CERT_X509_GUID \
|
||||
EFI_GUID( 0xa5c059a1, 0x94e4, 0x4aa7, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72 )
|
||||
|
||||
|
@ -393,10 +396,10 @@ index 42a1d25..d3e6036 100644
|
|||
efi_guid_t guid;
|
||||
u64 table;
|
||||
diff --git a/init/Kconfig b/init/Kconfig
|
||||
index ba76e57..b09cd98 100644
|
||||
index f59e6fe..90fa75f 100644
|
||||
--- a/init/Kconfig
|
||||
+++ b/init/Kconfig
|
||||
@@ -1799,6 +1799,15 @@ config MODULE_SIG_ALL
|
||||
@@ -1792,6 +1792,15 @@ config MODULE_SIG_ALL
|
||||
comment "Do not forget to sign required modules with scripts/sign-file"
|
||||
depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL
|
||||
|
||||
|
@ -413,10 +416,10 @@ index ba76e57..b09cd98 100644
|
|||
prompt "Which hash algorithm should modules be signed with?"
|
||||
depends on MODULE_SIG
|
||||
diff --git a/kernel/Makefile b/kernel/Makefile
|
||||
index 6313698..cb35a89 100644
|
||||
index bc010ee..bee938f 100644
|
||||
--- a/kernel/Makefile
|
||||
+++ b/kernel/Makefile
|
||||
@@ -57,6 +57,7 @@ obj-$(CONFIG_UID16) += uid16.o
|
||||
@@ -44,6 +44,7 @@ obj-$(CONFIG_UID16) += uid16.o
|
||||
obj-$(CONFIG_SYSTEM_TRUSTED_KEYRING) += system_keyring.o system_certificates.o
|
||||
obj-$(CONFIG_MODULES) += module.o
|
||||
obj-$(CONFIG_MODULE_SIG) += module_signing.o
|
||||
|
@ -424,7 +427,7 @@ index 6313698..cb35a89 100644
|
|||
obj-$(CONFIG_KALLSYMS) += kallsyms.o
|
||||
obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
|
||||
obj-$(CONFIG_KEXEC) += kexec.o
|
||||
@@ -115,6 +116,8 @@ obj-$(CONFIG_CONTEXT_TRACKING) += context_tracking.o
|
||||
@@ -96,6 +97,8 @@ obj-$(CONFIG_CONTEXT_TRACKING) += context_tracking.o
|
||||
|
||||
$(obj)/configs.o: $(obj)/config_data.h
|
||||
|
||||
|
@ -532,10 +535,10 @@ index 0000000..94b0eb3
|
|||
+}
|
||||
+late_initcall(load_uefi_certs);
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From c8e6d256ddfa2182d5b011a4ab70f8c5c9b2b590 Mon Sep 17 00:00:00 2001
|
||||
From 5c86fc6c7e4d51286d75ee6d8ceedf983ae434fb Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@fedoraproject.org>
|
||||
Date: Thu, 3 Oct 2013 10:14:23 -0400
|
||||
Subject: [PATCH 5/5] MODSIGN: Support not importing certs from db
|
||||
|
@ -617,5 +620,5 @@ index 94b0eb3..ae28b97 100644
|
|||
|
||||
mok = get_cert_list(L"MokListRT", &mok_var, &moksize);
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
Bugzilla: N/A
|
||||
Upstream-status: queued in NFS git tree (for 3.13/3.14?)
|
||||
|
||||
Currently, the client will attempt to use krb5i in the SETCLIENTID call
|
||||
even if rpc.gssd isn't running. When that fails, it'll then fall back to
|
||||
RPC_AUTH_UNIX. This introduced a delay when mounting if rpc.gssd isn't
|
||||
running, and causes warning messages to pop up in the ring buffer.
|
||||
|
||||
Check to see if rpc.gssd is running before even attempting to use krb5i
|
||||
auth, and just silently skip trying to do so if it isn't. In the event
|
||||
that the admin is actually trying to mount with krb5*, it will still
|
||||
fail at a later stage of the mount attempt.
|
||||
|
||||
Signed-off-by: Jeff Layton <jlayton@redhat.com>
|
||||
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
---
|
||||
fs/nfs/nfs4client.c | 7 ++++++-
|
||||
1 files changed, 6 insertions(+), 1 deletions(-)
|
||||
|
||||
diff -up linux-3.11.9-200.fc19.x86_64/fs/nfs/nfs4client.c.orig linux-3.11.9-200.fc19.x86_64/fs/nfs/nfs4client.c
|
||||
--- linux-3.11.9-200.fc19.x86_64/fs/nfs/nfs4client.c.orig 2013-09-02 16:46:10.000000000 -0400
|
||||
+++ linux-3.11.9-200.fc19.x86_64/fs/nfs/nfs4client.c 2013-11-21 10:20:27.288286000 -0500
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <linux/sunrpc/auth.h>
|
||||
#include <linux/sunrpc/xprt.h>
|
||||
#include <linux/sunrpc/bc_xprt.h>
|
||||
+#include <linux/sunrpc/rpc_pipe_fs.h>
|
||||
#include "internal.h"
|
||||
#include "callback.h"
|
||||
#include "delegation.h"
|
||||
@@ -206,7 +207,11 @@ struct nfs_client *nfs4_init_client(stru
|
||||
if (clp->cl_minorversion != 0)
|
||||
__set_bit(NFS_CS_INFINITE_SLOTS, &clp->cl_flags);
|
||||
__set_bit(NFS_CS_DISCRTRY, &clp->cl_flags);
|
||||
- error = nfs_create_rpc_client(clp, timeparms, RPC_AUTH_GSS_KRB5I);
|
||||
+
|
||||
+ error = -EINVAL;
|
||||
+ if (gssd_running(clp->cl_net))
|
||||
+ error = nfs_create_rpc_client(clp, timeparms,
|
||||
+ RPC_AUTH_GSS_KRB5I);
|
||||
if (error == -EINVAL)
|
||||
error = nfs_create_rpc_client(clp, timeparms, RPC_AUTH_UNIX);
|
||||
if (error < 0)
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
Bugzilla: N/A
|
||||
Upstream-status: Fedora mustard
|
||||
|
||||
From ffe1ee94d526900ce1e5191cdd38934477dd209a Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@fedoraproject.org>
|
||||
Date: Fri, 26 Oct 2012 14:02:09 -0400
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
From 8dea807503a1ba88d9e27595daae7f86ec968711 Mon Sep 17 00:00:00 2001
|
||||
Bugzilla: N/A
|
||||
Upstream-status: Fedora mustard. Replaced by securelevels, but that was nak'd
|
||||
|
||||
From f212a4d8b8638a3e15e4cd76874d4fab60726752 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <matthew.garrett@nebula.com>
|
||||
Date: Fri, 9 Aug 2013 17:58:15 -0400
|
||||
Subject: [PATCH 01/14] Add secure_modules() call
|
||||
|
@ -14,10 +17,10 @@ Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
|
|||
2 files changed, 17 insertions(+)
|
||||
|
||||
diff --git a/include/linux/module.h b/include/linux/module.h
|
||||
index 46f1ea0..0c266b2 100644
|
||||
index 15cd6b1..30702eb 100644
|
||||
--- a/include/linux/module.h
|
||||
+++ b/include/linux/module.h
|
||||
@@ -509,6 +509,8 @@ int unregister_module_notifier(struct notifier_block * nb);
|
||||
@@ -512,6 +512,8 @@ int unregister_module_notifier(struct notifier_block * nb);
|
||||
|
||||
extern void print_modules(void);
|
||||
|
||||
|
@ -26,7 +29,7 @@ index 46f1ea0..0c266b2 100644
|
|||
#else /* !CONFIG_MODULES... */
|
||||
|
||||
/* Given an address, look for it in the exception tables. */
|
||||
@@ -619,6 +621,11 @@ static inline int unregister_module_notifier(struct notifier_block * nb)
|
||||
@@ -622,6 +624,11 @@ static inline int unregister_module_notifier(struct notifier_block * nb)
|
||||
static inline void print_modules(void)
|
||||
{
|
||||
}
|
||||
|
@ -39,10 +42,10 @@ index 46f1ea0..0c266b2 100644
|
|||
|
||||
#ifdef CONFIG_SYSFS
|
||||
diff --git a/kernel/module.c b/kernel/module.c
|
||||
index 2069158..0e94acf 100644
|
||||
index f5a3b1e..644c33e 100644
|
||||
--- a/kernel/module.c
|
||||
+++ b/kernel/module.c
|
||||
@@ -3852,3 +3852,13 @@ void module_layout(struct module *mod,
|
||||
@@ -3831,3 +3831,13 @@ void module_layout(struct module *mod,
|
||||
}
|
||||
EXPORT_SYMBOL(module_layout);
|
||||
#endif
|
||||
|
@ -57,10 +60,10 @@ index 2069158..0e94acf 100644
|
|||
+}
|
||||
+EXPORT_SYMBOL(secure_modules);
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From 9b7b3f6283bf784e4ea1c34e52646b12971b2823 Mon Sep 17 00:00:00 2001
|
||||
From 394a8259d0b457495dddda8704821ec9e56ea44a Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <matthew.garrett@nebula.com>
|
||||
Date: Thu, 8 Mar 2012 10:10:38 -0500
|
||||
Subject: [PATCH 02/14] PCI: Lock down BAR access when module security is
|
||||
|
@ -80,7 +83,7 @@ Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
|
|||
3 files changed, 19 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
|
||||
index c0dbe1f..cd4e35f 100644
|
||||
index c91e6c1..447742e 100644
|
||||
--- a/drivers/pci/pci-sysfs.c
|
||||
+++ b/drivers/pci/pci-sysfs.c
|
||||
@@ -29,6 +29,7 @@
|
||||
|
@ -91,7 +94,7 @@ index c0dbe1f..cd4e35f 100644
|
|||
#include "pci.h"
|
||||
|
||||
static int sysfs_initialized; /* = 0 */
|
||||
@@ -624,6 +625,9 @@ pci_write_config(struct file* filp, struct kobject *kobj,
|
||||
@@ -668,6 +669,9 @@ pci_write_config(struct file* filp, struct kobject *kobj,
|
||||
loff_t init_off = off;
|
||||
u8 *data = (u8*) buf;
|
||||
|
||||
|
@ -101,7 +104,7 @@ index c0dbe1f..cd4e35f 100644
|
|||
if (off > dev->cfg_size)
|
||||
return 0;
|
||||
if (off + count > dev->cfg_size) {
|
||||
@@ -930,6 +934,9 @@ pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr,
|
||||
@@ -974,6 +978,9 @@ pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr,
|
||||
resource_size_t start, end;
|
||||
int i;
|
||||
|
||||
|
@ -111,7 +114,7 @@ index c0dbe1f..cd4e35f 100644
|
|||
for (i = 0; i < PCI_ROM_RESOURCE; i++)
|
||||
if (res == &pdev->resource[i])
|
||||
break;
|
||||
@@ -1037,6 +1044,9 @@ pci_write_resource_io(struct file *filp, struct kobject *kobj,
|
||||
@@ -1081,6 +1088,9 @@ pci_write_resource_io(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *attr, char *buf,
|
||||
loff_t off, size_t count)
|
||||
{
|
||||
|
@ -122,7 +125,7 @@ index c0dbe1f..cd4e35f 100644
|
|||
}
|
||||
|
||||
diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
|
||||
index cdc7836..e3d498b 100644
|
||||
index 46d1378..294fe7b 100644
|
||||
--- a/drivers/pci/proc.c
|
||||
+++ b/drivers/pci/proc.c
|
||||
@@ -117,6 +117,9 @@ proc_bus_pci_write(struct file *file, const char __user *buf, size_t nbytes, lof
|
||||
|
@ -155,7 +158,7 @@ index cdc7836..e3d498b 100644
|
|||
|
||||
/* 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..bffbf71 100644
|
||||
index 24750a1..fa57896 100644
|
||||
--- a/drivers/pci/syscall.c
|
||||
+++ b/drivers/pci/syscall.c
|
||||
@@ -10,6 +10,7 @@
|
||||
|
@ -176,10 +179,10 @@ index e1c1ec5..bffbf71 100644
|
|||
|
||||
dev = pci_get_bus_and_slot(bus, dfn);
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From aac2425a2664c09c2a369e1eec6e7a5bc2713cb1 Mon Sep 17 00:00:00 2001
|
||||
From 69532e626cece8a43c2528246e0421488b468102 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <matthew.garrett@nebula.com>
|
||||
Date: Thu, 8 Mar 2012 10:35:59 -0500
|
||||
Subject: [PATCH 03/14] x86: Lock down IO port access when module security is
|
||||
|
@ -249,10 +252,10 @@ index f895a8c..1af8664 100644
|
|||
return -EFAULT;
|
||||
while (count-- > 0 && i < 65536) {
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From e7f9789c7eedf291972666befee726ff8e7126f6 Mon Sep 17 00:00:00 2001
|
||||
From 8771ff55273e964d707b174dd0dbe433783c0254 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <matthew.garrett@nebula.com>
|
||||
Date: Fri, 9 Mar 2012 08:39:37 -0500
|
||||
Subject: [PATCH 04/14] ACPI: Limit access to custom_method
|
||||
|
@ -281,10 +284,10 @@ index 12b62f2..50647b3 100644
|
|||
/* parse the table header to get the table length */
|
||||
if (count <= sizeof(struct acpi_table_header))
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From d81cd6628c821d47bd086354cbc57b1474f3c1a8 Mon Sep 17 00:00:00 2001
|
||||
From 7d3e3db90e1b4cf33ba4a46624ae4a68f787e5fc Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <matthew.garrett@nebula.com>
|
||||
Date: Fri, 9 Mar 2012 08:46:50 -0500
|
||||
Subject: [PATCH 05/14] asus-wmi: Restrict debugfs interface when module
|
||||
|
@ -336,10 +339,10 @@ index 19c313b..db18ef66 100644
|
|||
1, asus->debug.method_id,
|
||||
&input, &output);
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From df75e984729ef50bb691b4d15472529fcd81580b Mon Sep 17 00:00:00 2001
|
||||
From 98ebe083d75333e269730fe374cca42ac7f08a07 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <matthew.garrett@nebula.com>
|
||||
Date: Fri, 9 Mar 2012 09:28:15 -0500
|
||||
Subject: [PATCH 06/14] Restrict /dev/mem and /dev/kmem when module loading is
|
||||
|
@ -379,10 +382,10 @@ index 1af8664..61406c8 100644
|
|||
unsigned long to_write = min_t(unsigned long, count,
|
||||
(unsigned long)high_memory - p);
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From 78955913cc46cc5e5c7f2c71c1b07a5c18e06456 Mon Sep 17 00:00:00 2001
|
||||
From 71353d491c70b303a07b4e79c896e729a4f74978 Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@redhat.com>
|
||||
Date: Mon, 25 Jun 2012 19:57:30 -0400
|
||||
Subject: [PATCH 07/14] acpi: Ignore acpi_rsdp kernel parameter when module
|
||||
|
@ -398,7 +401,7 @@ Signed-off-by: Josh Boyer <jwboyer@redhat.com>
|
|||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
|
||||
index 6ab2c35..e4c4410 100644
|
||||
index 54a20ff..d21d269 100644
|
||||
--- a/drivers/acpi/osl.c
|
||||
+++ b/drivers/acpi/osl.c
|
||||
@@ -45,6 +45,7 @@
|
||||
|
@ -409,7 +412,7 @@ index 6ab2c35..e4c4410 100644
|
|||
|
||||
#include <asm/io.h>
|
||||
#include <asm/uaccess.h>
|
||||
@@ -245,7 +246,7 @@ early_param("acpi_rsdp", setup_acpi_rsdp);
|
||||
@@ -248,7 +249,7 @@ early_param("acpi_rsdp", setup_acpi_rsdp);
|
||||
acpi_physical_address __init acpi_os_get_root_pointer(void)
|
||||
{
|
||||
#ifdef CONFIG_KEXEC
|
||||
|
@ -419,10 +422,10 @@ index 6ab2c35..e4c4410 100644
|
|||
#endif
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From 23aae9143fbece326b3a26bf5ba48956c99cabe4 Mon Sep 17 00:00:00 2001
|
||||
From e0a6b0dd91460123d71784d531b9df26449940ae Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <matthew.garrett@nebula.com>
|
||||
Date: Fri, 9 Aug 2013 03:33:56 -0400
|
||||
Subject: [PATCH 08/14] kexec: Disable at runtime if the kernel enforces module
|
||||
|
@ -438,7 +441,7 @@ Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
|
|||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/kernel/kexec.c b/kernel/kexec.c
|
||||
index 59f7b55..3e2b63a 100644
|
||||
index 9c97016..8ad0d38 100644
|
||||
--- a/kernel/kexec.c
|
||||
+++ b/kernel/kexec.c
|
||||
@@ -32,6 +32,7 @@
|
||||
|
@ -449,7 +452,7 @@ index 59f7b55..3e2b63a 100644
|
|||
|
||||
#include <asm/page.h>
|
||||
#include <asm/uaccess.h>
|
||||
@@ -943,6 +944,13 @@ SYSCALL_DEFINE4(kexec_load, unsigned long, entry, unsigned long, nr_segments,
|
||||
@@ -946,6 +947,13 @@ SYSCALL_DEFINE4(kexec_load, unsigned long, entry, unsigned long, nr_segments,
|
||||
return -EPERM;
|
||||
|
||||
/*
|
||||
|
@ -464,10 +467,10 @@ index 59f7b55..3e2b63a 100644
|
|||
* This leaves us room for future extensions.
|
||||
*/
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From 218cd49aa2d6a085c5c4edc0396200864f0b54ad Mon Sep 17 00:00:00 2001
|
||||
From c340630e68e5ed4d731d60d05ef9e2ae27080b66 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <matthew.garrett@nebula.com>
|
||||
Date: Tue, 3 Sep 2013 11:23:29 -0400
|
||||
Subject: [PATCH 09/14] uswsusp: Disable when module loading is restricted
|
||||
|
@ -482,7 +485,7 @@ Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
|
|||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/kernel/power/user.c b/kernel/power/user.c
|
||||
index 4ed81e7..15cb72f 100644
|
||||
index 98d3575..efe99de 100644
|
||||
--- a/kernel/power/user.c
|
||||
+++ b/kernel/power/user.c
|
||||
@@ -24,6 +24,7 @@
|
||||
|
@ -493,7 +496,7 @@ index 4ed81e7..15cb72f 100644
|
|||
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
@@ -48,6 +49,9 @@ static int snapshot_open(struct inode *inode, struct file *filp)
|
||||
@@ -49,6 +50,9 @@ static int snapshot_open(struct inode *inode, struct file *filp)
|
||||
struct snapshot_data *data;
|
||||
int error;
|
||||
|
||||
|
@ -504,10 +507,10 @@ index 4ed81e7..15cb72f 100644
|
|||
|
||||
if (!atomic_add_unless(&snapshot_device_available, -1, 0)) {
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From beeaac053d4ae57dc65be1da8b46e5d4bc6542b8 Mon Sep 17 00:00:00 2001
|
||||
From 273deda4ddec360ce67ac256b8cbdabdc5e8c51d Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <matthew.garrett@nebula.com>
|
||||
Date: Fri, 8 Feb 2013 11:12:13 -0800
|
||||
Subject: [PATCH 10/14] x86: Restrict MSR access when module loading is
|
||||
|
@ -524,7 +527,7 @@ Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
|
|||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c
|
||||
index 88458fa..d08f7e3 100644
|
||||
index 05266b5..e2bd647 100644
|
||||
--- a/arch/x86/kernel/msr.c
|
||||
+++ b/arch/x86/kernel/msr.c
|
||||
@@ -103,6 +103,9 @@ static ssize_t msr_write(struct file *file, const char __user *buf,
|
||||
|
@ -549,10 +552,10 @@ index 88458fa..d08f7e3 100644
|
|||
err = -EFAULT;
|
||||
break;
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From b4331711c52aff0a6a9cef0f4b52fe261874d6f2 Mon Sep 17 00:00:00 2001
|
||||
From 089166c0d42f1b82988aad4f23607deb6ee531e7 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <matthew.garrett@nebula.com>
|
||||
Date: Fri, 9 Aug 2013 18:36:30 -0400
|
||||
Subject: [PATCH 11/14] Add option to automatically enforce module signatures
|
||||
|
@ -588,12 +591,12 @@ index 199f453..ec38acf 100644
|
|||
290/040 ALL edd_mbr_sig_buffer EDD MBR signatures
|
||||
2D0/A00 ALL e820_map E820 memory map table
|
||||
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
|
||||
index b32ebf9..6a6c19b 100644
|
||||
index 5216e28..2a147a3 100644
|
||||
--- a/arch/x86/Kconfig
|
||||
+++ b/arch/x86/Kconfig
|
||||
@@ -1581,6 +1581,16 @@ config EFI_STUB
|
||||
@@ -1582,6 +1582,16 @@ config EFI_STUB
|
||||
|
||||
See Documentation/x86/efi-stub.txt for more information.
|
||||
See Documentation/efi-stub.txt for more information.
|
||||
|
||||
+config EFI_SECURE_BOOT_SIG_ENFORCE
|
||||
+ def_bool n
|
||||
|
@ -609,7 +612,7 @@ index b32ebf9..6a6c19b 100644
|
|||
def_bool y
|
||||
prompt "Enable seccomp to safely compute untrusted bytecode"
|
||||
diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
|
||||
index b7388a4..53bfe4f 100644
|
||||
index a7677ba..4e172e9 100644
|
||||
--- a/arch/x86/boot/compressed/eboot.c
|
||||
+++ b/arch/x86/boot/compressed/eboot.c
|
||||
@@ -12,6 +12,7 @@
|
||||
|
@ -620,10 +623,10 @@ index b7388a4..53bfe4f 100644
|
|||
|
||||
#undef memcpy /* Use memcpy from misc.c */
|
||||
|
||||
@@ -861,6 +862,37 @@ fail:
|
||||
return status;
|
||||
@@ -741,6 +742,37 @@ free_mem_map:
|
||||
}
|
||||
|
||||
|
||||
+static int get_secure_boot(void)
|
||||
+{
|
||||
+ u8 sb, setup;
|
||||
|
@ -656,9 +659,9 @@ index b7388a4..53bfe4f 100644
|
|||
+
|
||||
+
|
||||
/*
|
||||
* Because the x86 boot code expects to be passed a boot_params we
|
||||
* need to create one ourselves (usually the bootloader would create
|
||||
@@ -1169,6 +1201,10 @@ struct boot_params *efi_main(void *handle, efi_system_table_t *_table,
|
||||
* On success we return a pointer to a boot_params structure, and NULL
|
||||
* on failure.
|
||||
@@ -760,6 +792,10 @@ struct boot_params *efi_main(void *handle, efi_system_table_t *_table,
|
||||
if (sys_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE)
|
||||
goto fail;
|
||||
|
||||
|
@ -670,10 +673,10 @@ index b7388a4..53bfe4f 100644
|
|||
|
||||
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
|
||||
index 225b098..90dbfb7 100644
|
||||
--- a/arch/x86/include/uapi/asm/bootparam.h
|
||||
+++ b/arch/x86/include/uapi/asm/bootparam.h
|
||||
@@ -131,7 +131,8 @@ struct boot_params {
|
||||
@@ -133,7 +133,8 @@ struct boot_params {
|
||||
__u8 eddbuf_entries; /* 0x1e9 */
|
||||
__u8 edd_mbr_sig_buf_entries; /* 0x1ea */
|
||||
__u8 kbd_status; /* 0x1eb */
|
||||
|
@ -684,7 +687,7 @@ index c15ddaf..85d7685 100644
|
|||
* 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 f8ec578..deeb7bc 100644
|
||||
index 182b3f9..ab6cc9e 100644
|
||||
--- a/arch/x86/kernel/setup.c
|
||||
+++ b/arch/x86/kernel/setup.c
|
||||
@@ -1129,6 +1129,12 @@ void __init setup_arch(char **cmdline_p)
|
||||
|
@ -701,10 +704,10 @@ index f8ec578..deeb7bc 100644
|
|||
* Parse the ACPI tables for possible boot-time SMP configuration.
|
||||
*/
|
||||
diff --git a/include/linux/module.h b/include/linux/module.h
|
||||
index 0c266b2..5a6374a 100644
|
||||
index 30702eb..3eb0f52 100644
|
||||
--- a/include/linux/module.h
|
||||
+++ b/include/linux/module.h
|
||||
@@ -184,6 +184,12 @@ const struct exception_table_entry *search_exception_tables(unsigned long add);
|
||||
@@ -190,6 +190,12 @@ const struct exception_table_entry *search_exception_tables(unsigned long add);
|
||||
|
||||
struct notifier_block;
|
||||
|
||||
|
@ -718,10 +721,10 @@ index 0c266b2..5a6374a 100644
|
|||
|
||||
extern int modules_disabled; /* for sysctl */
|
||||
diff --git a/kernel/module.c b/kernel/module.c
|
||||
index 0e94acf..974139b 100644
|
||||
index 644c33e..92b73b1 100644
|
||||
--- a/kernel/module.c
|
||||
+++ b/kernel/module.c
|
||||
@@ -3853,6 +3853,13 @@ void module_layout(struct module *mod,
|
||||
@@ -3832,6 +3832,13 @@ void module_layout(struct module *mod,
|
||||
EXPORT_SYMBOL(module_layout);
|
||||
#endif
|
||||
|
||||
|
@ -736,10 +739,10 @@ index 0e94acf..974139b 100644
|
|||
{
|
||||
#ifdef CONFIG_MODULE_SIG
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From bb28516d346e6511f1e012321c48eb142763e539 Mon Sep 17 00:00:00 2001
|
||||
From e9ad6bd405fa01b7dd52d8c75b9dc91ae52e131d Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@redhat.com>
|
||||
Date: Tue, 5 Feb 2013 19:25:05 -0500
|
||||
Subject: [PATCH 12/14] efi: Disable secure boot if shim is in insecure mode
|
||||
|
@ -756,10 +759,10 @@ Signed-off-by: Josh Boyer <jwboyer@redhat.com>
|
|||
1 file changed, 19 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
|
||||
index 53bfe4f..946028b 100644
|
||||
index 4e172e9..4905f4d 100644
|
||||
--- a/arch/x86/boot/compressed/eboot.c
|
||||
+++ b/arch/x86/boot/compressed/eboot.c
|
||||
@@ -864,8 +864,9 @@ fail:
|
||||
@@ -744,8 +744,9 @@ free_mem_map:
|
||||
|
||||
static int get_secure_boot(void)
|
||||
{
|
||||
|
@ -770,7 +773,7 @@ index 53bfe4f..946028b 100644
|
|||
efi_guid_t var_guid = EFI_GLOBAL_VARIABLE_GUID;
|
||||
efi_status_t status;
|
||||
|
||||
@@ -889,6 +890,23 @@ static int get_secure_boot(void)
|
||||
@@ -769,6 +770,23 @@ static int get_secure_boot(void)
|
||||
if (setup == 1)
|
||||
return 0;
|
||||
|
||||
|
@ -795,10 +798,10 @@ index 53bfe4f..946028b 100644
|
|||
}
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From 4c8824bac8d4284e66c39c365ba84151f2d78e87 Mon Sep 17 00:00:00 2001
|
||||
From f9f355d5e58c1503bb7c03d92c9e89267e0f46ad Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@fedoraproject.org>
|
||||
Date: Tue, 27 Aug 2013 13:28:43 -0400
|
||||
Subject: [PATCH 13/14] efi: Make EFI_SECURE_BOOT_SIG_ENFORCE depend on EFI
|
||||
|
@ -812,11 +815,11 @@ Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
|
|||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
|
||||
index 6a6c19b..10498ec 100644
|
||||
index 2a147a3..9e644d5 100644
|
||||
--- a/arch/x86/Kconfig
|
||||
+++ b/arch/x86/Kconfig
|
||||
@@ -1582,7 +1582,8 @@ config EFI_STUB
|
||||
See Documentation/x86/efi-stub.txt for more information.
|
||||
@@ -1583,7 +1583,8 @@ config EFI_STUB
|
||||
See Documentation/efi-stub.txt for more information.
|
||||
|
||||
config EFI_SECURE_BOOT_SIG_ENFORCE
|
||||
- def_bool n
|
||||
|
@ -826,10 +829,10 @@ index 6a6c19b..10498ec 100644
|
|||
---help---
|
||||
UEFI Secure Boot provides a mechanism for ensuring that the
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
||||
From 871b0ed1847c3c5413a4ca72ecf18735858f7708 Mon Sep 17 00:00:00 2001
|
||||
From a30576a9db583213474b74360c5869e8882e6ed7 Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@fedoraproject.org>
|
||||
Date: Tue, 27 Aug 2013 13:33:03 -0400
|
||||
Subject: [PATCH 14/14] efi: Add EFI_SECURE_BOOT bit
|
||||
|
@ -844,7 +847,7 @@ Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
|
|||
2 files changed, 3 insertions(+)
|
||||
|
||||
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
|
||||
index deeb7bc..08dc16e 100644
|
||||
index ab6cc9e..99933cd 100644
|
||||
--- a/arch/x86/kernel/setup.c
|
||||
+++ b/arch/x86/kernel/setup.c
|
||||
@@ -1131,7 +1131,9 @@ void __init setup_arch(char **cmdline_p)
|
||||
|
@ -858,17 +861,17 @@ index deeb7bc..08dc16e 100644
|
|||
#endif
|
||||
|
||||
diff --git a/include/linux/efi.h b/include/linux/efi.h
|
||||
index 5f8f176..eed2202 100644
|
||||
index 0a819e7..0c1d367 100644
|
||||
--- a/include/linux/efi.h
|
||||
+++ b/include/linux/efi.h
|
||||
@@ -634,6 +634,7 @@ extern int __init efi_setup_pcdp_console(char *);
|
||||
#define EFI_RUNTIME_SERVICES 3 /* Can we use runtime services? */
|
||||
@@ -657,6 +657,7 @@ extern int __init efi_setup_pcdp_console(char *);
|
||||
#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? */
|
||||
#define EFI_ARCH_1 6 /* First arch-specific bit */
|
||||
+#define EFI_SECURE_BOOT 7 /* Are we in Secure Boot mode? */
|
||||
|
||||
#ifdef CONFIG_EFI
|
||||
# ifdef CONFIG_X86
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
diff -up linux-2.6.26.noarch/drivers/acpi/blacklist.c.jx linux-2.6.26.noarch/drivers/acpi/blacklist.c
|
||||
--- linux-2.6.26.noarch/drivers/acpi/blacklist.c.jx 2008-07-13 17:51:29.000000000 -0400
|
||||
+++ linux-2.6.26.noarch/drivers/acpi/blacklist.c 2008-08-12 14:21:39.000000000 -0400
|
||||
@@ -81,18 +81,18 @@ static int __init blacklist_by_year(void
|
||||
|
||||
/* Doesn't exist? Likely an old system */
|
||||
if (!dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL)) {
|
||||
- printk(KERN_ERR PREFIX "no DMI BIOS year, "
|
||||
+ printk(KERN_INFO PREFIX "no DMI BIOS year, "
|
||||
"acpi=force is required to enable ACPI\n" );
|
||||
return 1;
|
||||
}
|
||||
/* 0? Likely a buggy new BIOS */
|
||||
if (year == 0) {
|
||||
- printk(KERN_ERR PREFIX "DMI BIOS year==0, "
|
||||
+ printk(KERN_INFO PREFIX "DMI BIOS year==0, "
|
||||
"assuming ACPI-capable machine\n" );
|
||||
return 0;
|
||||
}
|
||||
if (year < CONFIG_ACPI_BLACKLIST_YEAR) {
|
||||
- printk(KERN_ERR PREFIX "BIOS age (%d) fails cutoff (%d), "
|
||||
+ printk(KERN_INFO PREFIX "BIOS age (%d) fails cutoff (%d), "
|
||||
"acpi=force is required to enable ACPI\n",
|
||||
year, CONFIG_ACPI_BLACKLIST_YEAR);
|
||||
return 1;
|
4
sources
4
sources
|
@ -1,2 +1,2 @@
|
|||
cc6ee608854e0da4b64f6c1ff8b6398c linux-3.12.tar.xz
|
||||
70e456d21f7e7c0dc2f9bd170f1ae4ee patch-3.12.5.xz
|
||||
b621207b3f6ecbb67db18b13258f8ea8 linux-3.14.tar.xz
|
||||
d36baf2d62de5aa61f10a976d00d2d2a perf-man-3.14.tar.gz
|
||||
|
|
|
@ -1,233 +0,0 @@
|
|||
Bugzilla: N/A
|
||||
Upstream-status: queued in NFS git tree (for 3.13/3.14?)
|
||||
|
||||
rpc.gssd will naturally hold open any pipe named */clnt*/gssd that shows
|
||||
up under rpc_pipefs. That behavior gives us a reliable mechanism to tell
|
||||
whether it's actually running or not.
|
||||
|
||||
Create a new toplevel "gssd" directory in rpc_pipefs when it's mounted.
|
||||
Under that directory create another directory called "clntXX", and then
|
||||
within that a pipe called "gssd".
|
||||
|
||||
We'll never send an upcall along that pipe, and any downcall written to
|
||||
it will just return -EINVAL.
|
||||
|
||||
Signed-off-by: Jeff Layton <jlayton@redhat.com>
|
||||
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
---
|
||||
include/linux/sunrpc/rpc_pipe_fs.h | 3 +-
|
||||
net/sunrpc/netns.h | 1 +
|
||||
net/sunrpc/rpc_pipe.c | 93 ++++++++++++++++++++++++++++++++++-
|
||||
net/sunrpc/sunrpc_syms.c | 8 +++-
|
||||
4 files changed, 100 insertions(+), 5 deletions(-)
|
||||
|
||||
diff -up linux-3.11.9-200.fc19.x86_64/include/linux/sunrpc/rpc_pipe_fs.h.orig linux-3.11.9-200.fc19.x86_64/include/linux/sunrpc/rpc_pipe_fs.h
|
||||
--- linux-3.11.9-200.fc19.x86_64/include/linux/sunrpc/rpc_pipe_fs.h.orig 2013-09-02 16:46:10.000000000 -0400
|
||||
+++ linux-3.11.9-200.fc19.x86_64/include/linux/sunrpc/rpc_pipe_fs.h 2013-11-21 10:11:17.893026000 -0500
|
||||
@@ -64,7 +64,8 @@ enum {
|
||||
|
||||
extern struct dentry *rpc_d_lookup_sb(const struct super_block *sb,
|
||||
const unsigned char *dir_name);
|
||||
-extern void rpc_pipefs_init_net(struct net *net);
|
||||
+extern int rpc_pipefs_init_net(struct net *net);
|
||||
+extern void rpc_pipefs_exit_net(struct net *net);
|
||||
extern struct super_block *rpc_get_sb_net(const struct net *net);
|
||||
extern void rpc_put_sb_net(const struct net *net);
|
||||
|
||||
diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/netns.h.orig linux-3.11.9-200.fc19.x86_64/net/sunrpc/netns.h
|
||||
--- linux-3.11.9-200.fc19.x86_64/net/sunrpc/netns.h.orig 2013-09-02 16:46:10.000000000 -0400
|
||||
+++ linux-3.11.9-200.fc19.x86_64/net/sunrpc/netns.h 2013-11-21 10:11:17.897029000 -0500
|
||||
@@ -14,6 +14,7 @@ struct sunrpc_net {
|
||||
struct cache_detail *rsi_cache;
|
||||
|
||||
struct super_block *pipefs_sb;
|
||||
+ struct rpc_pipe *gssd_dummy;
|
||||
struct mutex pipefs_sb_lock;
|
||||
|
||||
struct list_head all_clients;
|
||||
diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c.orig linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c
|
||||
--- linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c.orig 2013-09-02 16:46:10.000000000 -0400
|
||||
+++ linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c 2013-11-21 10:11:17.903026000 -0500
|
||||
@@ -38,7 +38,7 @@
|
||||
#define NET_NAME(net) ((net == &init_net) ? " (init_net)" : "")
|
||||
|
||||
static struct file_system_type rpc_pipe_fs_type;
|
||||
-
|
||||
+static const struct rpc_pipe_ops gssd_dummy_pipe_ops;
|
||||
|
||||
static struct kmem_cache *rpc_inode_cachep __read_mostly;
|
||||
|
||||
@@ -1019,6 +1019,7 @@ enum {
|
||||
RPCAUTH_nfsd4_cb,
|
||||
RPCAUTH_cache,
|
||||
RPCAUTH_nfsd,
|
||||
+ RPCAUTH_gssd,
|
||||
RPCAUTH_RootEOF
|
||||
};
|
||||
|
||||
@@ -1055,6 +1056,10 @@ static const struct rpc_filelist files[]
|
||||
.name = "nfsd",
|
||||
.mode = S_IFDIR | S_IRUGO | S_IXUGO,
|
||||
},
|
||||
+ [RPCAUTH_gssd] = {
|
||||
+ .name = "gssd",
|
||||
+ .mode = S_IFDIR | S_IRUGO | S_IXUGO,
|
||||
+ },
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -1068,13 +1073,25 @@ struct dentry *rpc_d_lookup_sb(const str
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rpc_d_lookup_sb);
|
||||
|
||||
-void rpc_pipefs_init_net(struct net *net)
|
||||
+int rpc_pipefs_init_net(struct net *net)
|
||||
{
|
||||
struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
|
||||
|
||||
+ sn->gssd_dummy = rpc_mkpipe_data(&gssd_dummy_pipe_ops, 0);
|
||||
+ if (IS_ERR(sn->gssd_dummy))
|
||||
+ return PTR_ERR(sn->gssd_dummy);
|
||||
+
|
||||
mutex_init(&sn->pipefs_sb_lock);
|
||||
sn->gssd_running = 1;
|
||||
sn->pipe_version = -1;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+void rpc_pipefs_exit_net(struct net *net)
|
||||
+{
|
||||
+ struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
|
||||
+
|
||||
+ rpc_destroy_pipe_data(sn->gssd_dummy);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1104,11 +1121,73 @@ void rpc_put_sb_net(const struct net *ne
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rpc_put_sb_net);
|
||||
|
||||
+static const struct rpc_filelist gssd_dummy_clnt_dir[] = {
|
||||
+ [0] = {
|
||||
+ .name = "clntXX",
|
||||
+ .mode = S_IFDIR | S_IRUGO | S_IXUGO,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+static ssize_t
|
||||
+dummy_downcall(struct file *filp, const char __user *src, size_t len)
|
||||
+{
|
||||
+ return -EINVAL;
|
||||
+}
|
||||
+
|
||||
+static const struct rpc_pipe_ops gssd_dummy_pipe_ops = {
|
||||
+ .upcall = rpc_pipe_generic_upcall,
|
||||
+ .downcall = dummy_downcall,
|
||||
+};
|
||||
+
|
||||
+/**
|
||||
+ * rpc_gssd_dummy_populate - create a dummy gssd pipe
|
||||
+ * @root: root of the rpc_pipefs filesystem
|
||||
+ * @pipe_data: pipe data created when netns is initialized
|
||||
+ *
|
||||
+ * Create a dummy set of directories and a pipe that gssd can hold open to
|
||||
+ * indicate that it is up and running.
|
||||
+ */
|
||||
+static struct dentry *
|
||||
+rpc_gssd_dummy_populate(struct dentry *root, struct rpc_pipe *pipe_data)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+ struct dentry *gssd_dentry;
|
||||
+ struct dentry *clnt_dentry = NULL;
|
||||
+ struct dentry *pipe_dentry = NULL;
|
||||
+ struct qstr q = QSTR_INIT(files[RPCAUTH_gssd].name,
|
||||
+ strlen(files[RPCAUTH_gssd].name));
|
||||
+
|
||||
+ /* We should never get this far if "gssd" doesn't exist */
|
||||
+ gssd_dentry = d_hash_and_lookup(root, &q);
|
||||
+ if (!gssd_dentry)
|
||||
+ return ERR_PTR(-ENOENT);
|
||||
+
|
||||
+ ret = rpc_populate(gssd_dentry, gssd_dummy_clnt_dir, 0, 1, NULL);
|
||||
+ if (ret) {
|
||||
+ pipe_dentry = ERR_PTR(ret);
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ q.name = gssd_dummy_clnt_dir[0].name;
|
||||
+ q.len = strlen(gssd_dummy_clnt_dir[0].name);
|
||||
+ clnt_dentry = d_hash_and_lookup(gssd_dentry, &q);
|
||||
+ if (!clnt_dentry) {
|
||||
+ pipe_dentry = ERR_PTR(-ENOENT);
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ pipe_dentry = rpc_mkpipe_dentry(clnt_dentry, "gssd", NULL, pipe_data);
|
||||
+out:
|
||||
+ dput(clnt_dentry);
|
||||
+ dput(gssd_dentry);
|
||||
+ return pipe_dentry;
|
||||
+}
|
||||
+
|
||||
static int
|
||||
rpc_fill_super(struct super_block *sb, void *data, int silent)
|
||||
{
|
||||
struct inode *inode;
|
||||
- struct dentry *root;
|
||||
+ struct dentry *root, *gssd_dentry;
|
||||
struct net *net = data;
|
||||
struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
|
||||
int err;
|
||||
@@ -1126,6 +1205,13 @@ rpc_fill_super(struct super_block *sb, v
|
||||
return -ENOMEM;
|
||||
if (rpc_populate(root, files, RPCAUTH_lockd, RPCAUTH_RootEOF, NULL))
|
||||
return -ENOMEM;
|
||||
+
|
||||
+ gssd_dentry = rpc_gssd_dummy_populate(root, sn->gssd_dummy);
|
||||
+ if (IS_ERR(gssd_dentry)) {
|
||||
+ __rpc_depopulate(root, files, RPCAUTH_lockd, RPCAUTH_RootEOF);
|
||||
+ return PTR_ERR(gssd_dentry);
|
||||
+ }
|
||||
+
|
||||
dprintk("RPC: sending pipefs MOUNT notification for net %p%s\n",
|
||||
net, NET_NAME(net));
|
||||
mutex_lock(&sn->pipefs_sb_lock);
|
||||
@@ -1140,6 +1226,7 @@ rpc_fill_super(struct super_block *sb, v
|
||||
return 0;
|
||||
|
||||
err_depopulate:
|
||||
+ dput(gssd_dentry);
|
||||
blocking_notifier_call_chain(&rpc_pipefs_notifier_list,
|
||||
RPC_PIPEFS_UMOUNT,
|
||||
sb);
|
||||
diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/sunrpc_syms.c.orig linux-3.11.9-200.fc19.x86_64/net/sunrpc/sunrpc_syms.c
|
||||
--- linux-3.11.9-200.fc19.x86_64/net/sunrpc/sunrpc_syms.c.orig 2013-09-02 16:46:10.000000000 -0400
|
||||
+++ linux-3.11.9-200.fc19.x86_64/net/sunrpc/sunrpc_syms.c 2013-11-21 10:11:17.908026000 -0500
|
||||
@@ -44,12 +44,17 @@ static __net_init int sunrpc_init_net(st
|
||||
if (err)
|
||||
goto err_unixgid;
|
||||
|
||||
- rpc_pipefs_init_net(net);
|
||||
+ err = rpc_pipefs_init_net(net);
|
||||
+ if (err)
|
||||
+ goto err_pipefs;
|
||||
+
|
||||
INIT_LIST_HEAD(&sn->all_clients);
|
||||
spin_lock_init(&sn->rpc_client_lock);
|
||||
spin_lock_init(&sn->rpcb_clnt_lock);
|
||||
return 0;
|
||||
|
||||
+err_pipefs:
|
||||
+ unix_gid_cache_destroy(net);
|
||||
err_unixgid:
|
||||
ip_map_cache_destroy(net);
|
||||
err_ipmap:
|
||||
@@ -60,6 +65,7 @@ err_proc:
|
||||
|
||||
static __net_exit void sunrpc_exit_net(struct net *net)
|
||||
{
|
||||
+ rpc_pipefs_exit_net(net);
|
||||
unix_gid_cache_destroy(net);
|
||||
ip_map_cache_destroy(net);
|
||||
rpc_proc_exit(net);
|
||||
|
|
@ -1,139 +0,0 @@
|
|||
Bugzilla: N/A
|
||||
Upstream-status: queued in NFS git tree (for 3.13/3.14?)
|
||||
|
||||
Now that we have a more reliable method to tell if gssd is running, we
|
||||
can replace the sn->gssd_running flag with a function that will query to
|
||||
see if it's up and running.
|
||||
|
||||
There's also no need to attempt an upcall that we know will fail, so
|
||||
just return -EACCES if gssd isn't running. Finally, fix the warn_gss()
|
||||
message not to claim that that the upcall timed out since we don't
|
||||
necesarily perform one now when gssd isn't running, and remove the
|
||||
extraneous newline from the message.
|
||||
|
||||
Signed-off-by: Jeff Layton <jlayton@redhat.com>
|
||||
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
---
|
||||
Fixed up to apply to 3.12.1 by Josh Boyer <jwboyer@fedoraproject.org>
|
||||
|
||||
include/linux/sunrpc/rpc_pipe_fs.h | 2 ++
|
||||
net/sunrpc/auth_gss/auth_gss.c | 17 +++++++----------
|
||||
net/sunrpc/netns.h | 2 --
|
||||
net/sunrpc/rpc_pipe.c | 14 ++++++++++----
|
||||
4 files changed, 19 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/include/linux/sunrpc/rpc_pipe_fs.h b/include/linux/sunrpc/rpc_pipe_fs.h
|
||||
index 85f1342..7f490be 100644
|
||||
--- a/include/linux/sunrpc/rpc_pipe_fs.h
|
||||
+++ b/include/linux/sunrpc/rpc_pipe_fs.h
|
||||
@@ -131,5 +131,7 @@ extern int rpc_unlink(struct dentry *);
|
||||
extern int register_rpc_pipefs(void);
|
||||
extern void unregister_rpc_pipefs(void);
|
||||
|
||||
+extern bool gssd_running(struct net *net);
|
||||
+
|
||||
#endif
|
||||
#endif
|
||||
diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
|
||||
index 0846566..1ada878 100644
|
||||
--- a/net/sunrpc/auth_gss/auth_gss.c
|
||||
+++ b/net/sunrpc/auth_gss/auth_gss.c
|
||||
@@ -517,8 +517,7 @@ static void warn_gssd(void)
|
||||
unsigned long now = jiffies;
|
||||
|
||||
if (time_after(now, ratelimit)) {
|
||||
- printk(KERN_WARNING "RPC: AUTH_GSS upcall timed out.\n"
|
||||
- "Please check user daemon is running.\n");
|
||||
+ pr_warn("RPC: AUTH_GSS upcall failed. Please check user daemon is running.\n");
|
||||
ratelimit = now + 15*HZ;
|
||||
}
|
||||
}
|
||||
@@ -581,7 +580,6 @@ gss_create_upcall(struct gss_auth *gss_auth, struct gss_cred *gss_cred)
|
||||
struct rpc_pipe *pipe;
|
||||
struct rpc_cred *cred = &gss_cred->gc_base;
|
||||
struct gss_upcall_msg *gss_msg;
|
||||
- unsigned long timeout;
|
||||
DEFINE_WAIT(wait);
|
||||
int err;
|
||||
|
||||
@@ -589,17 +587,16 @@ gss_create_upcall(struct gss_auth *gss_auth, struct gss_cred *gss_cred)
|
||||
__func__, from_kuid(&init_user_ns, cred->cr_uid));
|
||||
retry:
|
||||
err = 0;
|
||||
- /* Default timeout is 15s unless we know that gssd is not running */
|
||||
- timeout = 15 * HZ;
|
||||
- if (!sn->gssd_running)
|
||||
- timeout = HZ >> 2;
|
||||
+ /* if gssd is down, just skip upcalling altogether */
|
||||
+ if (!gssd_running(net)) {
|
||||
+ warn_gssd();
|
||||
+ return -EACCES;
|
||||
+ }
|
||||
gss_msg = gss_setup_upcall(gss_auth, cred);
|
||||
if (PTR_ERR(gss_msg) == -EAGAIN) {
|
||||
err = wait_event_interruptible_timeout(pipe_version_waitqueue,
|
||||
- sn->pipe_version >= 0, timeout);
|
||||
+ sn->pipe_version >= 0, 15 * HZ);
|
||||
if (sn->pipe_version < 0) {
|
||||
- if (err == 0)
|
||||
- sn->gssd_running = 0;
|
||||
warn_gssd();
|
||||
err = -EACCES;
|
||||
}
|
||||
diff --git a/net/sunrpc/netns.h b/net/sunrpc/netns.h
|
||||
index 8a8e841..94e506f 100644
|
||||
--- a/net/sunrpc/netns.h
|
||||
+++ b/net/sunrpc/netns.h
|
||||
@@ -33,8 +33,6 @@ struct sunrpc_net {
|
||||
int pipe_version;
|
||||
atomic_t pipe_users;
|
||||
struct proc_dir_entry *use_gssp_proc;
|
||||
-
|
||||
- unsigned int gssd_running;
|
||||
};
|
||||
|
||||
extern int sunrpc_net_id;
|
||||
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
|
||||
index 40aef18..ad444f3 100644
|
||||
--- a/net/sunrpc/rpc_pipe.c
|
||||
+++ b/net/sunrpc/rpc_pipe.c
|
||||
@@ -216,14 +216,11 @@ rpc_destroy_inode(struct inode *inode)
|
||||
static int
|
||||
rpc_pipe_open(struct inode *inode, struct file *filp)
|
||||
{
|
||||
- struct net *net = inode->i_sb->s_fs_info;
|
||||
- struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
|
||||
struct rpc_pipe *pipe;
|
||||
int first_open;
|
||||
int res = -ENXIO;
|
||||
|
||||
mutex_lock(&inode->i_mutex);
|
||||
- sn->gssd_running = 1;
|
||||
pipe = RPC_I(inode)->pipe;
|
||||
if (pipe == NULL)
|
||||
goto out;
|
||||
@@ -1231,7 +1228,6 @@ int rpc_pipefs_init_net(struct net *net)
|
||||
return PTR_ERR(sn->gssd_dummy);
|
||||
|
||||
mutex_init(&sn->pipefs_sb_lock);
|
||||
- sn->gssd_running = 1;
|
||||
sn->pipe_version = -1;
|
||||
return 0;
|
||||
}
|
||||
@@ -1385,6 +1381,16 @@ err_depopulate:
|
||||
return err;
|
||||
}
|
||||
|
||||
+bool
|
||||
+gssd_running(struct net *net)
|
||||
+{
|
||||
+ struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
|
||||
+ struct rpc_pipe *pipe = sn->gssd_dummy;
|
||||
+
|
||||
+ return pipe->nreaders || pipe->nwriters;
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(gssd_running);
|
||||
+
|
||||
static struct dentry *
|
||||
rpc_mount(struct file_system_type *fs_type,
|
||||
int flags, const char *dev_name, void *data)
|
|
@ -1,20 +1,23 @@
|
|||
From 71aac34ed679daa0bf772051eb40412b5bd95da3 Mon Sep 17 00:00:00 2001
|
||||
Bugzilla: N/A
|
||||
Upstream-status: Fedora mustard
|
||||
|
||||
From 29c1f71a2d0845a71ea2ebd2fb33542373dc52dd Mon Sep 17 00:00:00 2001
|
||||
From: Kyle McMartin <kyle@redhat.com>
|
||||
Date: Fri, 30 Aug 2013 09:28:51 -0400
|
||||
Subject: [PATCH] Add sysrq option to disable secure boot mode
|
||||
|
||||
---
|
||||
arch/x86/kernel/setup.c | 35 +++++++++++++++++++++++++++++++++++
|
||||
arch/x86/kernel/setup.c | 36 ++++++++++++++++++++++++++++++++++++
|
||||
drivers/input/misc/uinput.c | 1 +
|
||||
drivers/tty/sysrq.c | 19 +++++++++++++------
|
||||
include/linux/input.h | 5 +++++
|
||||
include/linux/sysrq.h | 8 +++++++-
|
||||
kernel/debug/kdb/kdb_main.c | 2 +-
|
||||
kernel/module.c | 4 ++--
|
||||
7 files changed, 64 insertions(+), 10 deletions(-)
|
||||
7 files changed, 65 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
|
||||
index 08dc16e..6971f8e 100644
|
||||
index c773add..92c480c 100644
|
||||
--- a/arch/x86/kernel/setup.c
|
||||
+++ b/arch/x86/kernel/setup.c
|
||||
@@ -70,6 +70,11 @@
|
||||
|
@ -29,11 +32,10 @@ index 08dc16e..6971f8e 100644
|
|||
#include <video/edid.h>
|
||||
|
||||
#include <asm/mtrr.h>
|
||||
@@ -1253,3 +1258,33 @@ void __init i386_reserve_resources(void)
|
||||
}
|
||||
@@ -1275,6 +1280,37 @@ void __init i386_reserve_resources(void)
|
||||
|
||||
#endif /* CONFIG_X86_32 */
|
||||
+
|
||||
|
||||
+#ifdef CONFIG_MAGIC_SYSRQ
|
||||
+#ifdef CONFIG_MODULE_SIG
|
||||
+extern bool sig_enforce;
|
||||
|
@ -63,8 +65,13 @@ index 08dc16e..6971f8e 100644
|
|||
+}
|
||||
+late_initcall(secure_boot_sysrq);
|
||||
+#endif /*CONFIG_MAGIC_SYSRQ*/
|
||||
+
|
||||
+
|
||||
static struct notifier_block kernel_offset_notifier = {
|
||||
.notifier_call = dump_kernel_offset
|
||||
};
|
||||
diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c
|
||||
index a0a4bba..3327cc3 100644
|
||||
index 7728359..a3e8ba8 100644
|
||||
--- a/drivers/input/misc/uinput.c
|
||||
+++ b/drivers/input/misc/uinput.c
|
||||
@@ -351,6 +351,7 @@ static int uinput_allocate_device(struct uinput_device *udev)
|
||||
|
@ -76,10 +83,10 @@ index a0a4bba..3327cc3 100644
|
|||
input_set_drvdata(udev->dev, udev);
|
||||
|
||||
diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
|
||||
index d5cc3ac..05b33f5 100644
|
||||
index ce396ec..aee594a 100644
|
||||
--- a/drivers/tty/sysrq.c
|
||||
+++ b/drivers/tty/sysrq.c
|
||||
@@ -461,6 +461,7 @@ static struct sysrq_key_op *sysrq_key_table[36] = {
|
||||
@@ -462,6 +462,7 @@ static struct sysrq_key_op *sysrq_key_table[36] = {
|
||||
&sysrq_showstate_blocked_op, /* w */
|
||||
/* x: May be registered on ppc/powerpc for xmon */
|
||||
/* x: May be registered on sparc64 for global PMU dump */
|
||||
|
@ -87,7 +94,7 @@ index d5cc3ac..05b33f5 100644
|
|||
NULL, /* x */
|
||||
/* y: May be registered on sparc64 for global register dump */
|
||||
NULL, /* y */
|
||||
@@ -504,7 +505,7 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
|
||||
@@ -505,7 +506,7 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
|
||||
sysrq_key_table[i] = op_p;
|
||||
}
|
||||
|
||||
|
@ -96,7 +103,7 @@ index d5cc3ac..05b33f5 100644
|
|||
{
|
||||
struct sysrq_key_op *op_p;
|
||||
int orig_log_level;
|
||||
@@ -524,11 +525,15 @@ void __handle_sysrq(int key, bool check_mask)
|
||||
@@ -525,11 +526,15 @@ void __handle_sysrq(int key, bool check_mask)
|
||||
|
||||
op_p = __sysrq_get_key_op(key);
|
||||
if (op_p) {
|
||||
|
@ -113,7 +120,7 @@ index d5cc3ac..05b33f5 100644
|
|||
printk("%s\n", op_p->action_msg);
|
||||
console_loglevel = orig_log_level;
|
||||
op_p->handler(key);
|
||||
@@ -559,7 +564,7 @@ void __handle_sysrq(int key, bool check_mask)
|
||||
@@ -560,7 +565,7 @@ void __handle_sysrq(int key, bool check_mask)
|
||||
void handle_sysrq(int key)
|
||||
{
|
||||
if (sysrq_on())
|
||||
|
@ -122,7 +129,7 @@ index d5cc3ac..05b33f5 100644
|
|||
}
|
||||
EXPORT_SYMBOL(handle_sysrq);
|
||||
|
||||
@@ -639,7 +644,7 @@ static void sysrq_do_reset(unsigned long _state)
|
||||
@@ -640,7 +645,7 @@ static void sysrq_do_reset(unsigned long _state)
|
||||
static void sysrq_handle_reset_request(struct sysrq_state *state)
|
||||
{
|
||||
if (state->reset_requested)
|
||||
|
@ -131,7 +138,7 @@ index d5cc3ac..05b33f5 100644
|
|||
|
||||
if (sysrq_reset_downtime_ms)
|
||||
mod_timer(&state->keyreset_timer,
|
||||
@@ -756,8 +761,10 @@ static bool sysrq_handle_keypress(struct sysrq_state *sysrq,
|
||||
@@ -791,8 +796,10 @@ static bool sysrq_handle_keypress(struct sysrq_state *sysrq,
|
||||
|
||||
default:
|
||||
if (sysrq->active && value && value != 2) {
|
||||
|
@ -143,7 +150,7 @@ index d5cc3ac..05b33f5 100644
|
|||
}
|
||||
break;
|
||||
}
|
||||
@@ -1038,7 +1045,7 @@ static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
|
||||
@@ -1080,7 +1087,7 @@ static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
|
||||
|
||||
if (get_user(c, buf))
|
||||
return -EFAULT;
|
||||
|
@ -183,10 +190,10 @@ index 82ce323..9e534f2 100644
|
|||
* Verify that we are in sync with input_device_id mod_devicetable.h #defines
|
||||
*/
|
||||
diff --git a/include/linux/sysrq.h b/include/linux/sysrq.h
|
||||
index 7faf933..87ae634 100644
|
||||
index 387fa7d..4b07e30 100644
|
||||
--- a/include/linux/sysrq.h
|
||||
+++ b/include/linux/sysrq.h
|
||||
@@ -31,6 +31,8 @@
|
||||
@@ -28,6 +28,8 @@
|
||||
#define SYSRQ_ENABLE_BOOT 0x0080
|
||||
#define SYSRQ_ENABLE_RTNICE 0x0100
|
||||
|
||||
|
@ -195,7 +202,7 @@ index 7faf933..87ae634 100644
|
|||
struct sysrq_key_op {
|
||||
void (*handler)(int);
|
||||
char *help_msg;
|
||||
@@ -45,8 +47,12 @@ struct sysrq_key_op {
|
||||
@@ -42,8 +44,12 @@ struct sysrq_key_op {
|
||||
* are available -- else NULL's).
|
||||
*/
|
||||
|
||||
|
@ -210,10 +217,10 @@ index 7faf933..87ae634 100644
|
|||
int unregister_sysrq_key(int key, struct sysrq_key_op *op);
|
||||
struct sysrq_key_op *__sysrq_get_key_op(int key);
|
||||
diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
|
||||
index 00eb8f7..54fbbcc 100644
|
||||
index 0b097c8..18b400d 100644
|
||||
--- a/kernel/debug/kdb/kdb_main.c
|
||||
+++ b/kernel/debug/kdb/kdb_main.c
|
||||
@@ -1921,7 +1921,7 @@ static int kdb_sr(int argc, const char **argv)
|
||||
@@ -1924,7 +1924,7 @@ static int kdb_sr(int argc, const char **argv)
|
||||
if (argc != 1)
|
||||
return KDB_ARGCOUNT;
|
||||
kdb_trap_printk++;
|
||||
|
@ -223,7 +230,7 @@ index 00eb8f7..54fbbcc 100644
|
|||
|
||||
return 0;
|
||||
diff --git a/kernel/module.c b/kernel/module.c
|
||||
index bc7c987..5e4e2c2 100644
|
||||
index 92b73b1..a44fb2a 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 */
|
||||
|
@ -239,5 +246,5 @@ index bc7c987..5e4e2c2 100644
|
|||
static int param_set_bool_enable_only(const char *val,
|
||||
const struct kernel_param *kp)
|
||||
--
|
||||
1.8.3.1
|
||||
1.8.4.2
|
||||
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
|
||||
index f67e839..d726b2d 100644
|
||||
--- a/arch/x86/Kconfig
|
||||
+++ b/arch/x86/Kconfig
|
||||
@@ -825,7 +825,7 @@ config MAXSMP
|
||||
config NR_CPUS
|
||||
int "Maximum number of CPUs" if SMP && !MAXSMP
|
||||
range 2 8 if SMP && X86_32 && !X86_BIGSMP
|
||||
- range 2 512 if SMP && !MAXSMP
|
||||
+ range 2 1024 if SMP && !MAXSMP
|
||||
default "1" if !SMP
|
||||
default "4096" if MAXSMP
|
||||
default "32" if SMP && (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000)
|
|
@ -1,149 +0,0 @@
|
|||
Bugzilla: 1033603
|
||||
Upstream-status: Submitted but not queued http://thread.gmane.org/gmane.comp.file-systems.xfs.general/57654
|
||||
|
||||
Path: news.gmane.org!not-for-mail
|
||||
From: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Newsgroups: gmane.comp.file-systems.xfs.general
|
||||
Subject: [patch] xfs: underflow bug in xfs_attrlist_by_handle()
|
||||
Date: Thu, 31 Oct 2013 21:00:10 +0300
|
||||
Lines: 43
|
||||
Approved: news@gmane.org
|
||||
Message-ID: <20131031180010.GA24839@longonot.mountain>
|
||||
References: <20131025144452.GA28451@ngolde.de>
|
||||
NNTP-Posting-Host: plane.gmane.org
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset="us-ascii"
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Trace: ger.gmane.org 1383242609 27303 80.91.229.3 (31 Oct 2013 18:03:29 GMT)
|
||||
X-Complaints-To: usenet@ger.gmane.org
|
||||
NNTP-Posting-Date: Thu, 31 Oct 2013 18:03:29 +0000 (UTC)
|
||||
Cc: Fabian Yamaguchi <fabs@goesec.de>, security@kernel.org,
|
||||
Alex Elder <elder@kernel.org>, Nico Golde <nico@ngolde.de>, xfs@oss.sgi.com
|
||||
To: Ben Myers <bpm@sgi.com>
|
||||
Original-X-From: xfs-bounces@oss.sgi.com Thu Oct 31 19:03:33 2013
|
||||
Return-path: <xfs-bounces@oss.sgi.com>
|
||||
Envelope-to: sgi-linux-xfs@gmane.org
|
||||
Original-Received: from oss.sgi.com ([192.48.182.195])
|
||||
by plane.gmane.org with esmtp (Exim 4.69)
|
||||
(envelope-from <xfs-bounces@oss.sgi.com>)
|
||||
id 1Vbwag-0001Ow-Sv
|
||||
for sgi-linux-xfs@gmane.org; Thu, 31 Oct 2013 19:03:31 +0100
|
||||
Original-Received: from oss.sgi.com (localhost [IPv6:::1])
|
||||
by oss.sgi.com (Postfix) with ESMTP id DB14A7F85;
|
||||
Thu, 31 Oct 2013 13:03:28 -0500 (CDT)
|
||||
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com
|
||||
X-Spam-Level:
|
||||
X-Spam-Status: No, score=0.0 required=5.0 tests=UNPARSEABLE_RELAY
|
||||
autolearn=ham version=3.3.1
|
||||
X-Original-To: xfs@oss.sgi.com
|
||||
Delivered-To: xfs@oss.sgi.com
|
||||
Original-Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111])
|
||||
by oss.sgi.com (Postfix) with ESMTP id A0ED87F83
|
||||
for <xfs@oss.sgi.com>; Thu, 31 Oct 2013 13:03:27 -0500 (CDT)
|
||||
Original-Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11])
|
||||
by relay1.corp.sgi.com (Postfix) with ESMTP id 71E0A8F804B
|
||||
for <xfs@oss.sgi.com>; Thu, 31 Oct 2013 11:03:24 -0700 (PDT)
|
||||
X-ASG-Debug-ID: 1383242599-04bdf0789a41ef30001-NocioJ
|
||||
Original-Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by
|
||||
cuda.sgi.com with ESMTP id CWKetu2Mc6MhJZij (version=TLSv1
|
||||
cipher=AES256-SHA bits=256 verify=NO);
|
||||
Thu, 31 Oct 2013 11:03:20 -0700 (PDT)
|
||||
X-Barracuda-Envelope-From: dan.carpenter@oracle.com
|
||||
X-Barracuda-Apparent-Source-IP: 156.151.31.81
|
||||
Original-Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238])
|
||||
by userp1040.oracle.com (Sentrion-MTA-4.3.1/Sentrion-MTA-4.3.1) with
|
||||
ESMTP id r9VI3AZn009606
|
||||
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK);
|
||||
Thu, 31 Oct 2013 18:03:11 GMT
|
||||
Original-Received: from aserz7022.oracle.com (aserz7022.oracle.com [141.146.126.231])
|
||||
by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id
|
||||
r9VI39qG016923
|
||||
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO);
|
||||
Thu, 31 Oct 2013 18:03:10 GMT
|
||||
Original-Received: from abhmt101.oracle.com (abhmt101.oracle.com [141.146.116.53])
|
||||
by aserz7022.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id
|
||||
r9VI395m016915; Thu, 31 Oct 2013 18:03:09 GMT
|
||||
Original-Received: from longonot.mountain (/105.160.144.228)
|
||||
by default (Oracle Beehive Gateway v4.0)
|
||||
with ESMTP ; Thu, 31 Oct 2013 11:03:08 -0700
|
||||
X-ASG-Orig-Subj: [patch] xfs: underflow bug in xfs_attrlist_by_handle()
|
||||
Content-Disposition: inline
|
||||
In-Reply-To: <20131025144452.GA28451@ngolde.de>
|
||||
User-Agent: Mutt/1.5.21 (2010-09-15)
|
||||
X-Source-IP: acsinet22.oracle.com [141.146.126.238]
|
||||
X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81]
|
||||
X-Barracuda-Start-Time: 1383242600
|
||||
X-Barracuda-Encrypted: AES256-SHA
|
||||
X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi
|
||||
X-Virus-Scanned: by bsmtpd at sgi.com
|
||||
X-Barracuda-BRTS-Status: 1
|
||||
X-Barracuda-Spam-Score: 0.00
|
||||
X-Barracuda-Spam-Status: No,
|
||||
SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0
|
||||
QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=UNPARSEABLE_RELAY
|
||||
X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.141937
|
||||
Rule breakdown below
|
||||
pts rule name description
|
||||
---- ----------------------
|
||||
--------------------------------------------------
|
||||
0.00 UNPARSEABLE_RELAY Informational: message has unparseable relay
|
||||
lines
|
||||
X-BeenThere: xfs@oss.sgi.com
|
||||
X-Mailman-Version: 2.1.14
|
||||
Precedence: list
|
||||
List-Id: XFS Filesystem from SGI <xfs.oss.sgi.com>
|
||||
List-Unsubscribe: <http://oss.sgi.com/mailman/options/xfs>,
|
||||
<mailto:xfs-request@oss.sgi.com?subject=unsubscribe>
|
||||
List-Archive: <http://oss.sgi.com/pipermail/xfs>
|
||||
List-Post: <mailto:xfs@oss.sgi.com>
|
||||
List-Help: <mailto:xfs-request@oss.sgi.com?subject=help>
|
||||
List-Subscribe: <http://oss.sgi.com/mailman/listinfo/xfs>,
|
||||
<mailto:xfs-request@oss.sgi.com?subject=subscribe>
|
||||
Errors-To: xfs-bounces@oss.sgi.com
|
||||
Original-Sender: xfs-bounces@oss.sgi.com
|
||||
Xref: news.gmane.org gmane.comp.file-systems.xfs.general:57654
|
||||
Archived-At: <http://permalink.gmane.org/gmane.comp.file-systems.xfs.general/57654>
|
||||
|
||||
If we allocate less than sizeof(struct attrlist) then we end up
|
||||
corrupting memory or doing a ZERO_PTR_SIZE dereference.
|
||||
|
||||
This can only be triggered with CAP_SYS_ADMIN.
|
||||
|
||||
Reported-by: Nico Golde <nico@ngolde.de>
|
||||
Reported-by: Fabian Yamaguchi <fabs@goesec.de>
|
||||
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
|
||||
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
|
||||
index 4d61340..33ad9a7 100644
|
||||
--- a/fs/xfs/xfs_ioctl.c
|
||||
+++ b/fs/xfs/xfs_ioctl.c
|
||||
@@ -442,7 +442,8 @@ xfs_attrlist_by_handle(
|
||||
return -XFS_ERROR(EPERM);
|
||||
if (copy_from_user(&al_hreq, arg, sizeof(xfs_fsop_attrlist_handlereq_t)))
|
||||
return -XFS_ERROR(EFAULT);
|
||||
- if (al_hreq.buflen > XATTR_LIST_MAX)
|
||||
+ if (al_hreq.buflen < sizeof(struct attrlist) ||
|
||||
+ al_hreq.buflen > XATTR_LIST_MAX)
|
||||
return -XFS_ERROR(EINVAL);
|
||||
|
||||
/*
|
||||
diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c
|
||||
index e8fb123..a7992f8 100644
|
||||
--- a/fs/xfs/xfs_ioctl32.c
|
||||
+++ b/fs/xfs/xfs_ioctl32.c
|
||||
@@ -356,7 +356,8 @@ xfs_compat_attrlist_by_handle(
|
||||
if (copy_from_user(&al_hreq, arg,
|
||||
sizeof(compat_xfs_fsop_attrlist_handlereq_t)))
|
||||
return -XFS_ERROR(EFAULT);
|
||||
- if (al_hreq.buflen > XATTR_LIST_MAX)
|
||||
+ if (al_hreq.buflen < sizeof(struct attrlist) ||
|
||||
+ al_hreq.buflen > XATTR_LIST_MAX)
|
||||
return -XFS_ERROR(EINVAL);
|
||||
|
||||
/*
|
||||
|
||||
_______________________________________________
|
||||
xfs mailing list
|
||||
xfs@oss.sgi.com
|
||||
http://oss.sgi.com/mailman/listinfo/xfs
|
||||
|
Loading…
Reference in New Issue