[linux] 03/03: Update to 3.2.81
debian-kernel at lists.debian.org
debian-kernel at lists.debian.org
Wed Jun 15 21:57:46 UTC 2016
This is an automated email from the git hooks/post-receive script.
benh pushed a commit to branch wheezy-security
in repository linux.
commit e0b5e266b2f68ef02b2a64c66af1ee796adbda0d
Author: Ben Hutchings <ben at decadent.org.uk>
Date: Wed Jun 15 22:54:49 2016 +0100
Update to 3.2.81
Drop or refresh patches as appropriate.
---
debian/changelog | 51 ++++++--
...idge_filename-handle-malformed-NM-entries.patch | 63 ---------
...age-access-is-denied-if-hugepages-are-not.patch | 141 ---------------------
...allow-hugepages_supported-to-be-architect.patch | 52 --------
...-add-link-layer-header-validation-functio.patch | 40 ------
...t-net-validate-variable-length-ll-headers.patch | 55 --------
...86-mm-xen-Suppress-hugetlbfs-in-PV-guests.patch | 68 ----------
debian/patches/features/all/drm/drm-3.4.patch | 141 ++++++++++++++-------
debian/patches/features/all/xen/microcode.patch | 50 +++-----
debian/patches/series | 6 -
10 files changed, 153 insertions(+), 514 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index faaf4a6..17cd9ae 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-linux (3.2.80-1) UNRELEASED; urgency=medium
+linux (3.2.81-1) UNRELEASED; urgency=medium
* New upstream stable update:
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.79
@@ -146,6 +146,44 @@ linux (3.2.80-1) UNRELEASED; urgency=medium
- ipv4: l2tp: fix a potential issue in l2tp_ip_recv
- ipv6: Count in extension headers in skb->network_header
- netfilter: x_tables: fix unconditional helper
+ https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.81
+ - [x86] microcode/amd: Do not overwrite final patch levels
+ - crypto: gcm - fix rfc4543 to handle async crypto correctly
+ - crypto: gcm - Fix rfc4543 decryption crash
+ - [x86] Add 1/2/4/8 byte optimization to 64bit
+ __copy_{from,to}_user_inatomic
+ - ipmi: fix timeout calculation when bmc is disconnected
+ - Input: gtco - fix crash on detecting device without endpoints
+ (CVE-2016-2187)
+ - libahci: save port map for forced port map
+ - [x86] kvm: do not leak guest xcr0 into host interrupt handlers
+ - nl80211: check netlink protocol in socket release notification
+ - usb: xhci: applying XHCI_PME_STUCK_QUIRK to Intel BXT B0 host
+ - usb: xhci: fix wild pointers in xhci_mem_cleanup
+ - USB: uas: Add a new NO_REPORT_LUNS quirk
+ - usb: hcd: out of bounds access in for_each_companion
+ - Input: pmic8xxx-pwrkey - fix algorithm for converting trigger delay
+ - hugetlb: ensure hugepage access is denied if hugepages are not supported
+ - mm: hugetlb: allow hugepages_supported to be architecture specific
+ - [x86] mm/xen: Suppress hugetlbfs in PV guests (CVE-2016-3961)
+ - batman-adv: Check skb size before using encapsulated ETH+VLAN header
+ - batman-adv: Reduce refcnt of removed router when updating route
+ - batman-adv: Fix broadcast/ogm queue limit on a removed interface
+ - IB/security: Restrict use of the write() interface (CVE-2016-4565)
+ - thp: introduce hugepage_vma_check()
+ - mm/huge_memory: replace VM_NO_THP VM_BUG_ON with actual VMA check
+ - [x86] EDAC: i7core, sb_edac: Don't return NOTIFY_BAD from mce_decoder
+ callback
+ - Make hash_64() use a 64-bit multiply when appropriate
+ - Minimal fix-up of bad hashing behavior of hash_64()
+ - ACPICA: Dispatcher: Update thread ID for recursive method calls
+ - crypto: hash - Fix page length clamping in hash walk
+ - proc: prevent accessing /proc/<PID>/environ until it's ready
+ - get_rock_ridge_filename(): handle malformed NM entries (CVE-2016-4913)
+ - nf_conntrack: avoid kernel pointer value leak in slab name
+ - net: fix infoleak in llc (CVE-2016-4485)
+ - net: fix infoleak in rtnetlink (CVE-2016-4486)
+ - net: fix a kernel infoleak in x25 module (CVE-2016-4580)
[ Ben Hutchings ]
* drm, agp: Update to 3.4.112:
@@ -162,21 +200,14 @@ linux (3.2.80-1) UNRELEASED; urgency=medium
- kernel: softirq: unlock with irqs on
- rcu/torture: Comment out rcu_bh ops on PREEMPT_RT_FULL
- kernel: sched: Fix preempt_disable_ip recodring for preempt_disable()
- * Revert "net: validate variable length ll headers", "ax25: add link layer
- header validation function" and "net/ipv6: add sysctl option
- accept_ra_min_hop_limit" to avoid ABI changes
+ * Revert "net/ipv6: add sysctl option accept_ra_min_hop_limit" to avoid
+ ABI change
* aufs: Make fcntl(F_SETFL, ...) work (Closes: #627782):
- for aufs: new f_op->setfl() to support fcntl(F_SETFL)
- aufs: implement new f_op->setfl()
- fs: Fix ABI change for aufs F_SETFL fix
- * hugetlb: ensure hugepage access is denied if hugepages are not supported
- * mm: hugetlb: allow hugepages_supported to be architecture specific
- * [x86] mm/xen: Suppress hugetlbfs in PV guests (CVE-2016-3961)
* stable-update: Rewrite stable-update.sh in Python
- [ Salvatore Bonaccorso ]
- * get_rock_ridge_filename(): handle malformed NM entries (CVE-2016-4913)
-
-- Ben Hutchings <ben at decadent.org.uk> Fri, 01 Apr 2016 02:11:16 +0100
linux (3.2.78-1) wheezy; urgency=medium
diff --git a/debian/patches/bugfix/all/get_rock_ridge_filename-handle-malformed-NM-entries.patch b/debian/patches/bugfix/all/get_rock_ridge_filename-handle-malformed-NM-entries.patch
deleted file mode 100644
index 063a5a5..0000000
--- a/debian/patches/bugfix/all/get_rock_ridge_filename-handle-malformed-NM-entries.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Thu, 5 May 2016 16:25:35 -0400
-Subject: get_rock_ridge_filename(): handle malformed NM entries
-Origin: https://git.kernel.org/linus/99d825822eade8d827a1817357cbf3f889a552d6
-
-Payloads of NM entries are not supposed to contain NUL. When we run
-into such, only the part prior to the first NUL goes into the
-concatenation (i.e. the directory entry name being encoded by a bunch
-of NM entries). We do stop when the amount collected so far + the
-claimed amount in the current NM entry exceed 254. So far, so good,
-but what we return as the total length is the sum of *claimed*
-sizes, not the actual amount collected. And that can grow pretty
-large - not unlimited, since you'd need to put CE entries in
-between to be able to get more than the maximum that could be
-contained in one isofs directory entry / continuation chunk and
-we are stop once we'd encountered 32 CEs, but you can get about 8Kb
-easily. And that's what will be passed to readdir callback as the
-name length. 8Kb __copy_to_user() from a buffer allocated by
-__get_free_page()
-
-Cc: stable at vger.kernel.org # 0.98pl6+ (yes, really)
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
----
- fs/isofs/rock.c | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
-diff --git a/fs/isofs/rock.c b/fs/isofs/rock.c
-index 5384ceb..98b3eb7 100644
---- a/fs/isofs/rock.c
-+++ b/fs/isofs/rock.c
-@@ -203,6 +203,8 @@ int get_rock_ridge_filename(struct iso_directory_record *de,
- int retnamlen = 0;
- int truncate = 0;
- int ret = 0;
-+ char *p;
-+ int len;
-
- if (!ISOFS_SB(inode->i_sb)->s_rock)
- return 0;
-@@ -267,12 +269,17 @@ repeat:
- rr->u.NM.flags);
- break;
- }
-- if ((strlen(retname) + rr->len - 5) >= 254) {
-+ len = rr->len - 5;
-+ if (retnamlen + len >= 254) {
- truncate = 1;
- break;
- }
-- strncat(retname, rr->u.NM.name, rr->len - 5);
-- retnamlen += rr->len - 5;
-+ p = memchr(rr->u.NM.name, '\0', len);
-+ if (unlikely(p))
-+ len = p - rr->u.NM.name;
-+ memcpy(retname + retnamlen, rr->u.NM.name, len);
-+ retnamlen += len;
-+ retname[retnamlen] = '\0';
- break;
- case SIG('R', 'E'):
- kfree(rs.buffer);
---
-2.8.1
-
diff --git a/debian/patches/bugfix/all/hugetlb-ensure-hugepage-access-is-denied-if-hugepages-are-not.patch b/debian/patches/bugfix/all/hugetlb-ensure-hugepage-access-is-denied-if-hugepages-are-not.patch
deleted file mode 100644
index 19b360b..0000000
--- a/debian/patches/bugfix/all/hugetlb-ensure-hugepage-access-is-denied-if-hugepages-are-not.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-From: Nishanth Aravamudan <nacc at linux.vnet.ibm.com>
-Date: Tue, 6 May 2014 12:50:00 -0700
-Subject: hugetlb: ensure hugepage access is denied if hugepages are not
- supported
-
-commit 457c1b27ed56ec472d202731b12417bff023594a upstream.
-
-Currently, I am seeing the following when I `mount -t hugetlbfs /none
-/dev/hugetlbfs`, and then simply do a `ls /dev/hugetlbfs`. I think it's
-related to the fact that hugetlbfs is properly not correctly setting
-itself up in this state?:
-
- Unable to handle kernel paging request for data at address 0x00000031
- Faulting instruction address: 0xc000000000245710
- Oops: Kernel access of bad area, sig: 11 [#1]
- SMP NR_CPUS=2048 NUMA pSeries
- ....
-
-In KVM guests on Power, in a guest not backed by hugepages, we see the
-following:
-
- AnonHugePages: 0 kB
- HugePages_Total: 0
- HugePages_Free: 0
- HugePages_Rsvd: 0
- HugePages_Surp: 0
- Hugepagesize: 64 kB
-
-HPAGE_SHIFT == 0 in this configuration, which indicates that hugepages
-are not supported at boot-time, but this is only checked in
-hugetlb_init(). Extract the check to a helper function, and use it in a
-few relevant places.
-
-This does make hugetlbfs not supported (not registered at all) in this
-environment. I believe this is fine, as there are no valid hugepages
-and that won't change at runtime.
-
-[akpm at linux-foundation.org: use pr_info(), per Mel]
-[akpm at linux-foundation.org: fix build when HPAGE_SHIFT is undefined]
-Signed-off-by: Nishanth Aravamudan <nacc at linux.vnet.ibm.com>
-Reviewed-by: Aneesh Kumar K.V <aneesh.kumar at linux.vnet.ibm.com>
-Acked-by: Mel Gorman <mgorman at suse.de>
-Cc: Randy Dunlap <rdunlap at infradead.org>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-[bwh: Backported to 3.2:
- - Drop changes to hugetlb_show_meminfo()
- - Adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/hugetlbfs/inode.c | 5 +++++
- include/linux/hugetlb.h | 10 ++++++++++
- mm/hugetlb.c | 19 ++++++++++++++-----
- 3 files changed, 29 insertions(+), 5 deletions(-)
-
---- a/fs/hugetlbfs/inode.c
-+++ b/fs/hugetlbfs/inode.c
-@@ -979,6 +979,11 @@ static int __init init_hugetlbfs_fs(void
- int error;
- struct vfsmount *vfsmount;
-
-+ if (!hugepages_supported()) {
-+ pr_info("hugetlbfs: disabling because there are no supported hugepage sizes\n");
-+ return -ENOTSUPP;
-+ }
-+
- error = bdi_init(&hugetlbfs_backing_dev_info);
- if (error)
- return error;
---- a/include/linux/hugetlb.h
-+++ b/include/linux/hugetlb.h
-@@ -344,6 +344,16 @@ static inline pgoff_t basepage_index(str
- return __basepage_index(page);
- }
-
-+static inline bool hugepages_supported(void)
-+{
-+ /*
-+ * Some platform decide whether they support huge pages at boot
-+ * time. On these, such as powerpc, HPAGE_SHIFT is set to 0 when
-+ * there is no such support
-+ */
-+ return HPAGE_SHIFT != 0;
-+}
-+
- #else
- struct hstate {};
- #define alloc_huge_page_node(h, nid) NULL
---- a/mm/hugetlb.c
-+++ b/mm/hugetlb.c
-@@ -1889,11 +1889,7 @@ module_exit(hugetlb_exit);
-
- static int __init hugetlb_init(void)
- {
-- /* Some platform decide whether they support huge pages at boot
-- * time. On these, such as powerpc, HPAGE_SHIFT is set to 0 when
-- * there is no such support
-- */
-- if (HPAGE_SHIFT == 0)
-+ if (!hugepages_supported())
- return 0;
-
- if (!size_to_hstate(default_hstate_size)) {
-@@ -2010,6 +2006,9 @@ static int hugetlb_sysctl_handler_common
- unsigned long tmp;
- int ret;
-
-+ if (!hugepages_supported())
-+ return -ENOTSUPP;
-+
- tmp = h->max_huge_pages;
-
- if (write && h->order >= MAX_ORDER)
-@@ -2075,6 +2074,9 @@ int hugetlb_overcommit_handler(struct ct
- unsigned long tmp;
- int ret;
-
-+ if (!hugepages_supported())
-+ return -ENOTSUPP;
-+
- tmp = h->nr_overcommit_huge_pages;
-
- if (write && h->order >= MAX_ORDER)
-@@ -2100,6 +2102,8 @@ out:
- void hugetlb_report_meminfo(struct seq_file *m)
- {
- struct hstate *h = &default_hstate;
-+ if (!hugepages_supported())
-+ return;
- seq_printf(m,
- "HugePages_Total: %5lu\n"
- "HugePages_Free: %5lu\n"
-@@ -2116,6 +2120,8 @@ void hugetlb_report_meminfo(struct seq_f
- int hugetlb_report_node_meminfo(int nid, char *buf)
- {
- struct hstate *h = &default_hstate;
-+ if (!hugepages_supported())
-+ return 0;
- return sprintf(buf,
- "Node %d HugePages_Total: %5u\n"
- "Node %d HugePages_Free: %5u\n"
diff --git a/debian/patches/bugfix/all/mm-hugetlb-allow-hugepages_supported-to-be-architect.patch b/debian/patches/bugfix/all/mm-hugetlb-allow-hugepages_supported-to-be-architect.patch
deleted file mode 100644
index d00d0ec..0000000
--- a/debian/patches/bugfix/all/mm-hugetlb-allow-hugepages_supported-to-be-architect.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From: Dominik Dingel <dingel at linux.vnet.ibm.com>
-Date: Fri, 17 Jul 2015 16:23:37 -0700
-Subject: mm: hugetlb: allow hugepages_supported to be architecture specific
-
-commit 2531c8cf56a640cd7d17057df8484e570716a450 upstream.
-
-s390 has a constant hugepage size, by setting HPAGE_SHIFT we also change
-e.g. the pageblock_order, which should be independent in respect to
-hugepage support.
-
-With this patch every architecture is free to define how to check
-for hugepage support.
-
-Signed-off-by: Dominik Dingel <dingel at linux.vnet.ibm.com>
-Acked-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Cc: Heiko Carstens <heiko.carstens at de.ibm.com>
-Cc: Christian Borntraeger <borntraeger at de.ibm.com>
-Cc: Michael Holzheu <holzheu at linux.vnet.ibm.com>
-Cc: Gerald Schaefer <gerald.schaefer at de.ibm.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/hugetlb.h | 17 ++++++++---------
- 1 file changed, 8 insertions(+), 9 deletions(-)
-
---- a/include/linux/hugetlb.h
-+++ b/include/linux/hugetlb.h
-@@ -344,15 +344,14 @@ static inline pgoff_t basepage_index(str
- return __basepage_index(page);
- }
-
--static inline bool hugepages_supported(void)
--{
-- /*
-- * Some platform decide whether they support huge pages at boot
-- * time. On these, such as powerpc, HPAGE_SHIFT is set to 0 when
-- * there is no such support
-- */
-- return HPAGE_SHIFT != 0;
--}
-+#ifndef hugepages_supported
-+/*
-+ * Some platform decide whether they support huge pages at boot
-+ * time. Some of them, such as powerpc, set HPAGE_SHIFT to 0
-+ * when there is no such support
-+ */
-+#define hugepages_supported() (HPAGE_SHIFT != 0)
-+#endif
-
- #else
- struct hstate {};
diff --git a/debian/patches/bugfix/all/revert-ax25-add-link-layer-header-validation-functio.patch b/debian/patches/bugfix/all/revert-ax25-add-link-layer-header-validation-functio.patch
deleted file mode 100644
index 672d497..0000000
--- a/debian/patches/bugfix/all/revert-ax25-add-link-layer-header-validation-functio.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Sun, 1 May 2016 17:59:44 +0200
-Subject: Revert "ax25: add link layer header validation function"
-
-This reverts commit 0954b59d9f4b2dcc59f28d1f64c3a21062a64372, which was
-commit ea47781c26510e5d97f80f9aceafe9065bd5e3aa upstream. It is
-pointless unless af_packet calls the new function.
----
- net/ax25/ax25_ip.c | 15 ---------------
- 1 file changed, 15 deletions(-)
-
-diff --git a/net/ax25/ax25_ip.c b/net/ax25/ax25_ip.c
-index a0c9956b5b23..cf0c47a26530 100644
---- a/net/ax25/ax25_ip.c
-+++ b/net/ax25/ax25_ip.c
-@@ -232,24 +232,9 @@ int ax25_rebuild_header(struct sk_buff *skb)
-
- #endif
-
--static bool ax25_validate_header(const char *header, unsigned int len)
--{
-- ax25_digi digi;
--
-- if (!len)
-- return false;
--
-- if (header[0])
-- return true;
--
-- return ax25_addr_parse(header + 1, len - 1, NULL, NULL, &digi, NULL,
-- NULL);
--}
--
- const struct header_ops ax25_header_ops = {
- .create = ax25_hard_header,
- .rebuild = ax25_rebuild_header,
-- .validate = ax25_validate_header,
- };
-
- EXPORT_SYMBOL(ax25_hard_header);
diff --git a/debian/patches/bugfix/all/revert-net-validate-variable-length-ll-headers.patch b/debian/patches/bugfix/all/revert-net-validate-variable-length-ll-headers.patch
deleted file mode 100644
index 728a2b9..0000000
--- a/debian/patches/bugfix/all/revert-net-validate-variable-length-ll-headers.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Sun, 1 May 2016 18:00:43 +0200
-Subject: Revert "net: validate variable length ll headers"
-
-This reverts commit b5518429e70cd783b8ca52335456172c1a0589f6, which was
-commit 2793a23aacbd754dbbb5cb75093deb7e4103bace upstream. It is
-pointless unless af_packet calls the new function.
----
- include/linux/netdevice.h | 21 +--------------------
- 1 file changed, 1 insertion(+), 20 deletions(-)
-
---- a/include/linux/netdevice.h
-+++ b/include/linux/netdevice.h
-@@ -296,7 +296,6 @@ struct header_ops {
- void (*cache_update)(struct hh_cache *hh,
- const struct net_device *dev,
- const unsigned char *haddr);
-- bool (*validate)(const char *ll_header, unsigned int len);
- };
-
- /* These flag bits are private to the generic network queueing
-@@ -1146,7 +1145,7 @@ struct net_device {
-
- unsigned int mtu; /* interface MTU value */
- unsigned short type; /* interface hardware type */
-- unsigned short hard_header_len; /* maximum hardware hdr length */
-+ unsigned short hard_header_len; /* hardware hdr length */
-
- /* extra head- and tailroom the hardware may need, but not in all cases
- * can this be guaranteed, especially tailroom. Some cases also use
-@@ -1757,24 +1756,6 @@ static inline int dev_rebuild_header(str
- return dev->header_ops->rebuild(skb);
- }
-
--/* ll_header must have at least hard_header_len allocated */
--static inline bool dev_validate_header(const struct net_device *dev,
-- char *ll_header, int len)
--{
-- if (likely(len >= dev->hard_header_len))
-- return true;
--
-- if (capable(CAP_SYS_RAWIO)) {
-- memset(ll_header + len, 0, dev->hard_header_len - len);
-- return true;
-- }
--
-- if (dev->header_ops && dev->header_ops->validate)
-- return dev->header_ops->validate(ll_header, len);
--
-- return false;
--}
--
- typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len);
- extern int register_gifconf(unsigned int family, gifconf_func_t * gifconf);
- static inline int unregister_gifconf(unsigned int family)
diff --git a/debian/patches/bugfix/x86/x86-mm-xen-Suppress-hugetlbfs-in-PV-guests.patch b/debian/patches/bugfix/x86/x86-mm-xen-Suppress-hugetlbfs-in-PV-guests.patch
deleted file mode 100644
index 69763f3..0000000
--- a/debian/patches/bugfix/x86/x86-mm-xen-Suppress-hugetlbfs-in-PV-guests.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From: Jan Beulich <JBeulich at suse.com>
-Date: Thu, 21 Apr 2016 00:27:04 -0600
-Subject: x86/mm/xen: Suppress hugetlbfs in PV guests
-
-commit 103f6112f253017d7062cd74d17f4a514ed4485c upstream.
-
-Huge pages are not normally available to PV guests. Not suppressing
-hugetlbfs use results in an endless loop of page faults when user mode
-code tries to access a hugetlbfs mapped area (since the hypervisor
-denies such PTEs to be created, but error indications can't be
-propagated out of xen_set_pte_at(), just like for various of its
-siblings), and - once killed in an oops like this:
-
- kernel BUG at .../fs/hugetlbfs/inode.c:428!
- invalid opcode: 0000 [#1] SMP
- ...
- RIP: e030:[<ffffffff811c333b>] [<ffffffff811c333b>] remove_inode_hugepages+0x25b/0x320
- ...
- Call Trace:
- [<ffffffff811c3415>] hugetlbfs_evict_inode+0x15/0x40
- [<ffffffff81167b3d>] evict+0xbd/0x1b0
- [<ffffffff8116514a>] __dentry_kill+0x19a/0x1f0
- [<ffffffff81165b0e>] dput+0x1fe/0x220
- [<ffffffff81150535>] __fput+0x155/0x200
- [<ffffffff81079fc0>] task_work_run+0x60/0xa0
- [<ffffffff81063510>] do_exit+0x160/0x400
- [<ffffffff810637eb>] do_group_exit+0x3b/0xa0
- [<ffffffff8106e8bd>] get_signal+0x1ed/0x470
- [<ffffffff8100f854>] do_signal+0x14/0x110
- [<ffffffff810030e9>] prepare_exit_to_usermode+0xe9/0xf0
- [<ffffffff814178a5>] retint_user+0x8/0x13
-
-This is CVE-2016-3961 / XSA-174.
-
-Reported-by: Vitaly Kuznetsov <vkuznets at redhat.com>
-Signed-off-by: Jan Beulich <jbeulich at suse.com>
-Cc: Andrew Morton <akpm at linux-foundation.org>
-Cc: Andy Lutomirski <luto at amacapital.net>
-Cc: Boris Ostrovsky <boris.ostrovsky at oracle.com>
-Cc: Borislav Petkov <bp at alien8.de>
-Cc: Brian Gerst <brgerst at gmail.com>
-Cc: David Vrabel <david.vrabel at citrix.com>
-Cc: Denys Vlasenko <dvlasenk at redhat.com>
-Cc: H. Peter Anvin <hpa at zytor.com>
-Cc: Juergen Gross <JGross at suse.com>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Luis R. Rodriguez <mcgrof at suse.com>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Toshi Kani <toshi.kani at hp.com>
-Cc: xen-devel <xen-devel at lists.xenproject.org>
-Link: http://lkml.kernel.org/r/57188ED802000078000E431C@prv-mh.provo.novell.com
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/include/asm/hugetlb.h | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/arch/x86/include/asm/hugetlb.h
-+++ b/arch/x86/include/asm/hugetlb.h
-@@ -3,6 +3,7 @@
-
- #include <asm/page.h>
-
-+#define hugepages_supported() cpu_has_pse
-
- static inline int is_hugepage_only_range(struct mm_struct *mm,
- unsigned long addr,
diff --git a/debian/patches/features/all/drm/drm-3.4.patch b/debian/patches/features/all/drm/drm-3.4.patch
index 65c22a2..4d5e723 100644
--- a/debian/patches/features/all/drm/drm-3.4.patch
+++ b/debian/patches/features/all/drm/drm-3.4.patch
@@ -43963,7 +43963,7 @@ index ca67338e5533..38c0a4720cc8 100644
int i915_max_ioctl = DRM_ARRAY_SIZE(i915_ioctls);
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
-index 452bc512e6a7..89f3d4aed664 100644
+index e216c21110e4..89f3d4aed664 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -66,7 +66,11 @@ MODULE_PARM_DESC(semaphores,
@@ -44098,7 +44098,43 @@ index 452bc512e6a7..89f3d4aed664 100644
mutex_unlock(&dev->struct_mutex);
if (HAS_PCH_SPLIT(dev))
-@@ -614,13 +643,40 @@ static int ironlake_do_reset(struct drm_device *dev, u8 flags)
+@@ -538,35 +567,6 @@ int i915_resume(struct drm_device *dev)
+ if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
+ return 0;
+
+- /*
+- * Note that we need to set the power state explicitly, since we
+- * powered off the device during freeze and the PCI core won't power
+- * it back up for us during thaw. Powering off the device during
+- * freeze is not a hard requirement though, and during the
+- * suspend/resume phases the PCI core makes sure we get here with the
+- * device powered on. So in case we change our freeze logic and keep
+- * the device powered we can also remove the following set power state
+- * call.
+- */
+- ret = pci_set_power_state(dev->pdev, PCI_D0);
+- if (ret) {
+- DRM_ERROR("failed to set PCI D0 power state (%d)\n", ret);
+- return ret;
+- }
+-
+- /*
+- * Note that pci_enable_device() first enables any parent bridge
+- * device and only then sets the power state for this device. The
+- * bridge enabling is a nop though, since bridge devices are resumed
+- * first. The order of enabling power and enabling the device is
+- * imposed by the PCI core as described above, so here we preserve the
+- * same order for the freeze/thaw phases.
+- *
+- * TODO: eventually we should remove pci_disable_device() /
+- * pci_enable_enable_device() from suspend/resume. Due to how they
+- * depend on the device enable refcount we can't anyway depend on them
+- * disabling/enabling the device.
+- */
+ if (pci_enable_device(dev->pdev))
+ return -EIO;
+
+@@ -643,13 +643,40 @@ static int ironlake_do_reset(struct drm_device *dev, u8 flags)
static int gen6_do_reset(struct drm_device *dev, u8 flags)
{
struct drm_i915_private *dev_priv = dev->dev_private;
@@ -44142,7 +44178,7 @@ index 452bc512e6a7..89f3d4aed664 100644
* @dev: drm device to reset
* @flags: reset domains
*
-@@ -643,7 +699,6 @@ int i915_reset(struct drm_device *dev, u8 flags)
+@@ -672,7 +699,6 @@ int i915_reset(struct drm_device *dev, u8 flags)
* need to
*/
bool need_display = true;
@@ -44150,7 +44186,7 @@ index 452bc512e6a7..89f3d4aed664 100644
int ret;
if (!i915_try_reset)
-@@ -661,11 +716,6 @@ int i915_reset(struct drm_device *dev, u8 flags)
+@@ -690,11 +716,6 @@ int i915_reset(struct drm_device *dev, u8 flags)
case 7:
case 6:
ret = gen6_do_reset(dev, flags);
@@ -44162,7 +44198,7 @@ index 452bc512e6a7..89f3d4aed664 100644
break;
case 5:
ret = ironlake_do_reset(dev, flags);
-@@ -702,12 +752,16 @@ int i915_reset(struct drm_device *dev, u8 flags)
+@@ -731,12 +752,16 @@ int i915_reset(struct drm_device *dev, u8 flags)
!dev_priv->mm.suspended) {
dev_priv->mm.suspended = 0;
@@ -44179,7 +44215,7 @@ index 452bc512e6a7..89f3d4aed664 100644
mutex_unlock(&dev->struct_mutex);
drm_irq_uninstall(dev);
drm_mode_config_reset(dev);
-@@ -830,6 +884,21 @@ static struct vm_operations_struct i915_gem_vm_ops = {
+@@ -859,6 +884,21 @@ static struct vm_operations_struct i915_gem_vm_ops = {
.close = drm_gem_vm_close,
};
@@ -44201,7 +44237,7 @@ index 452bc512e6a7..89f3d4aed664 100644
static struct drm_driver driver = {
/* Don't use MTRRs here; the Xserver or userspace app should
* deal with them for Intel hardware.
-@@ -863,21 +932,7 @@ static struct drm_driver driver = {
+@@ -892,21 +932,7 @@ static struct drm_driver driver = {
.dumb_map_offset = i915_gem_mmap_gtt,
.dumb_destroy = i915_gem_dumb_destroy,
.ioctls = i915_ioctls,
@@ -44224,7 +44260,7 @@ index 452bc512e6a7..89f3d4aed664 100644
.name = DRIVER_NAME,
.desc = DRIVER_DESC,
.date = DRIVER_DATE,
-@@ -945,17 +1000,21 @@ MODULE_LICENSE("GPL and additional rights");
+@@ -974,17 +1000,21 @@ MODULE_LICENSE("GPL and additional rights");
/* We give fast paths for the really cool registers */
#define NEEDS_FORCE_WAKE(dev_priv, reg) \
((HAS_FORCE_WAKE((dev_priv)->dev)) && \
@@ -44251,7 +44287,7 @@ index 452bc512e6a7..89f3d4aed664 100644
} else { \
val = read##y(dev_priv->regs + reg); \
} \
-@@ -971,11 +1030,15 @@ __i915_read(64, q)
+@@ -1000,11 +1030,15 @@ __i915_read(64, q)
#define __i915_write(x, y) \
void i915_write##x(struct drm_i915_private *dev_priv, u32 reg, u##x val) { \
@@ -72463,7 +72499,7 @@ index 3e34f1ee340a..5325c20fd706 100644
radeon_write_dpcd_reg(dp_info->radeon_connector, DP_LANE_COUNT_SET, tmp);
diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c
-index a1a7d071eb17..dd5c14e917e0 100644
+index cd8b34146146..dd5c14e917e0 100644
--- a/drivers/gpu/drm/radeon/atombios_encoders.c
+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
@@ -57,22 +57,6 @@ static inline bool radeon_encoder_is_digital(struct drm_encoder *encoder)
@@ -72489,7 +72525,18 @@ index a1a7d071eb17..dd5c14e917e0 100644
static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
struct drm_display_mode *mode,
struct drm_display_mode *adjusted_mode)
-@@ -257,7 +241,7 @@ atombios_dvo_setup(struct drm_encoder *encoder, int action)
+@@ -90,10 +74,6 @@ static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
+ && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2)))
+ adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2;
+
+- /* vertical FP must be at least 1 */
+- if (mode->crtc_vsync_start == mode->crtc_vdisplay)
+- adjusted_mode->crtc_vsync_start++;
+-
+ /* get the native mode for LVDS */
+ if (radeon_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT))
+ radeon_panel_mode_fixup(encoder, adjusted_mode);
+@@ -261,7 +241,7 @@ atombios_dvo_setup(struct drm_encoder *encoder, int action)
/* R4xx, R5xx */
args.ext_tmds.sXTmdsEncoder.ucEnable = action;
@@ -72498,7 +72545,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.ext_tmds.sXTmdsEncoder.ucMisc |= PANEL_ENCODER_MISC_DUAL;
args.ext_tmds.sXTmdsEncoder.ucMisc |= ATOM_PANEL_MISC_888RGB;
-@@ -269,7 +253,7 @@ atombios_dvo_setup(struct drm_encoder *encoder, int action)
+@@ -273,7 +253,7 @@ atombios_dvo_setup(struct drm_encoder *encoder, int action)
/* DFP1, CRT1, TV1 depending on the type of port */
args.dvo.sDVOEncoder.ucDeviceType = ATOM_DEVICE_DFP1_INDEX;
@@ -72507,7 +72554,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.dvo.sDVOEncoder.usDevAttr.sDigAttrib.ucAttribute |= PANEL_ENCODER_MISC_DUAL;
break;
case 3:
-@@ -353,7 +337,7 @@ atombios_digital_setup(struct drm_encoder *encoder, int action)
+@@ -357,7 +337,7 @@ atombios_digital_setup(struct drm_encoder *encoder, int action)
} else {
if (dig->linkb)
args.v1.ucMisc |= PANEL_ENCODER_MISC_TMDS_LINKB;
@@ -72516,7 +72563,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v1.ucMisc |= PANEL_ENCODER_MISC_DUAL;
/*if (pScrn->rgbBits == 8) */
args.v1.ucMisc |= ATOM_PANEL_MISC_888RGB;
-@@ -392,7 +376,7 @@ atombios_digital_setup(struct drm_encoder *encoder, int action)
+@@ -396,7 +376,7 @@ atombios_digital_setup(struct drm_encoder *encoder, int action)
} else {
if (dig->linkb)
args.v2.ucMisc |= PANEL_ENCODER_MISC_TMDS_LINKB;
@@ -72525,7 +72572,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v2.ucMisc |= PANEL_ENCODER_MISC_DUAL;
}
break;
-@@ -412,9 +396,9 @@ atombios_digital_setup(struct drm_encoder *encoder, int action)
+@@ -416,9 +396,9 @@ atombios_digital_setup(struct drm_encoder *encoder, int action)
int
atombios_get_encoder_mode(struct drm_encoder *encoder)
{
@@ -72536,7 +72583,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
struct drm_connector *connector;
struct radeon_connector *radeon_connector;
struct radeon_connector_atom_dig *dig_connector;
-@@ -438,13 +422,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
+@@ -442,13 +422,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
switch (connector->connector_type) {
case DRM_MODE_CONNECTOR_DVII:
case DRM_MODE_CONNECTOR_HDMIB: /* HDMI-B is basically DL-DVI; analog works fine */
@@ -72555,7 +72602,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
return ATOM_ENCODER_MODE_DVI;
else
return ATOM_ENCODER_MODE_CRT;
-@@ -452,13 +434,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
+@@ -456,13 +434,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
case DRM_MODE_CONNECTOR_DVID:
case DRM_MODE_CONNECTOR_HDMIA:
default:
@@ -72574,7 +72621,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
return ATOM_ENCODER_MODE_DVI;
break;
case DRM_MODE_CONNECTOR_LVDS:
-@@ -469,13 +449,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
+@@ -473,13 +449,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
if ((dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) ||
(dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP))
return ATOM_ENCODER_MODE_DP;
@@ -72593,7 +72640,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
return ATOM_ENCODER_MODE_DVI;
break;
case DRM_MODE_CONNECTOR_eDP:
-@@ -510,7 +488,7 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
+@@ -514,7 +488,7 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
* - 2 DIG encoder blocks.
* DIG1/2 can drive UNIPHY0/1/2 link A or link B
*
@@ -72602,7 +72649,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
* - 3 DIG transmitter blocks UNIPHY0/1/2 (links A and B).
* Supports up to 6 digital outputs
* - 6 DIG encoder blocks.
-@@ -526,7 +504,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
+@@ -530,7 +504,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
* - 3 DIG transmitter blocks UNIPHY0/1/2 (links A and B).
* Supports up to 6 digital outputs
* - 2 DIG encoder blocks.
@@ -72614,7 +72661,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
*
* Routing
* crtc -> dig encoder -> UNIPHY/LVTMA (1 or 2 links)
-@@ -568,7 +550,7 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
+@@ -572,7 +550,7 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
dp_clock = dig_connector->dp_clock;
dp_lane_count = dig_connector->dp_lane_count;
hpd_id = radeon_connector->hpd.hpd;
@@ -72623,7 +72670,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
}
/* no dig encoder assigned */
-@@ -602,11 +584,13 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
+@@ -606,11 +584,13 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
if (ENCODER_MODE_IS_DP(args.v1.ucEncoderMode))
args.v1.ucLaneNum = dp_lane_count;
@@ -72638,7 +72685,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
switch (radeon_encoder->encoder_id) {
case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
args.v1.ucConfig = ATOM_ENCODER_CONFIG_V2_TRANSMITTER1;
-@@ -623,10 +607,6 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
+@@ -627,10 +607,6 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKB;
else
args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKA;
@@ -72649,7 +72696,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
break;
case 2:
case 3:
-@@ -639,7 +619,7 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
+@@ -643,7 +619,7 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
if (ENCODER_MODE_IS_DP(args.v1.ucEncoderMode))
args.v3.ucLaneNum = dp_lane_count;
@@ -72658,7 +72705,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v3.ucLaneNum = 8;
else
args.v3.ucLaneNum = 4;
-@@ -679,7 +659,7 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
+@@ -683,7 +659,7 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
if (ENCODER_MODE_IS_DP(args.v1.ucEncoderMode))
args.v4.ucLaneNum = dp_lane_count;
@@ -72667,7 +72714,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v4.ucLaneNum = 8;
else
args.v4.ucLaneNum = 4;
-@@ -736,6 +716,7 @@ union dig_transmitter_control {
+@@ -740,6 +716,7 @@ union dig_transmitter_control {
DIG_TRANSMITTER_CONTROL_PARAMETERS_V2 v2;
DIG_TRANSMITTER_CONTROL_PARAMETERS_V3 v3;
DIG_TRANSMITTER_CONTROL_PARAMETERS_V4 v4;
@@ -72675,7 +72722,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
};
void
-@@ -756,6 +737,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -760,6 +737,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
int connector_object_id = 0;
int igp_lane_info = 0;
int dig_encoder = dig->dig_encoder;
@@ -72683,7 +72730,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
if (action == ATOM_TRANSMITTER_ACTION_INIT) {
connector = radeon_get_connector_for_encoder_init(encoder);
-@@ -771,6 +753,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -775,6 +753,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
struct radeon_connector_atom_dig *dig_connector =
radeon_connector->con_priv;
@@ -72691,7 +72738,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
dp_clock = dig_connector->dp_clock;
dp_lane_count = dig_connector->dp_lane_count;
connector_object_id =
-@@ -823,7 +806,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -827,7 +806,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
if (is_dp)
args.v1.usPixelClock =
cpu_to_le16(dp_clock / 10);
@@ -72700,7 +72747,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v1.usPixelClock = cpu_to_le16((radeon_encoder->pixel_clock / 2) / 10);
else
args.v1.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10);
-@@ -838,7 +821,8 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -842,7 +821,8 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
if ((rdev->flags & RADEON_IS_IGP) &&
(radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_UNIPHY)) {
@@ -72710,7 +72757,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
if (igp_lane_info & 0x1)
args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_LANE_0_3;
else if (igp_lane_info & 0x2)
-@@ -865,7 +849,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -869,7 +849,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
else if (radeon_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) {
if (dig->coherent_mode)
args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_COHERENT;
@@ -72719,7 +72766,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_8LANE_LINK;
}
break;
-@@ -880,7 +864,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -884,7 +864,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
if (is_dp)
args.v2.usPixelClock =
cpu_to_le16(dp_clock / 10);
@@ -72728,7 +72775,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v2.usPixelClock = cpu_to_le16((radeon_encoder->pixel_clock / 2) / 10);
else
args.v2.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10);
-@@ -908,7 +892,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -912,7 +892,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
} else if (radeon_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) {
if (dig->coherent_mode)
args.v2.acConfig.fCoherentMode = 1;
@@ -72737,7 +72784,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v2.acConfig.fDualLinkConnector = 1;
}
break;
-@@ -923,7 +907,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -927,7 +907,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
if (is_dp)
args.v3.usPixelClock =
cpu_to_le16(dp_clock / 10);
@@ -72746,7 +72793,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v3.usPixelClock = cpu_to_le16((radeon_encoder->pixel_clock / 2) / 10);
else
args.v3.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10);
-@@ -931,7 +915,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -935,7 +915,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
if (is_dp)
args.v3.ucLaneNum = dp_lane_count;
@@ -72755,7 +72802,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v3.ucLaneNum = 8;
else
args.v3.ucLaneNum = 4;
-@@ -968,7 +952,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -972,7 +952,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
else if (radeon_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) {
if (dig->coherent_mode)
args.v3.acConfig.fCoherentMode = 1;
@@ -72764,7 +72811,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v3.acConfig.fDualLinkConnector = 1;
}
break;
-@@ -983,7 +967,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -987,7 +967,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
if (is_dp)
args.v4.usPixelClock =
cpu_to_le16(dp_clock / 10);
@@ -72773,7 +72820,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v4.usPixelClock = cpu_to_le16((radeon_encoder->pixel_clock / 2) / 10);
else
args.v4.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10);
-@@ -991,7 +975,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -995,7 +975,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
if (is_dp)
args.v4.ucLaneNum = dp_lane_count;
@@ -72782,7 +72829,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v4.ucLaneNum = 8;
else
args.v4.ucLaneNum = 4;
-@@ -1031,10 +1015,64 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -1035,10 +1015,64 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
else if (radeon_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) {
if (dig->coherent_mode)
args.v4.acConfig.fCoherentMode = 1;
@@ -72848,7 +72895,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
default:
DRM_ERROR("Unknown table version %d, %d\n", frev, crev);
break;
-@@ -1130,7 +1168,7 @@ atombios_external_encoder_setup(struct drm_encoder *encoder,
+@@ -1134,7 +1168,7 @@ atombios_external_encoder_setup(struct drm_encoder *encoder,
dp_lane_count = dig_connector->dp_lane_count;
connector_object_id =
(radeon_connector->connector_object_id & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT;
@@ -72857,7 +72904,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
}
memset(&args, 0, sizeof(args));
-@@ -1154,7 +1192,7 @@ atombios_external_encoder_setup(struct drm_encoder *encoder,
+@@ -1158,7 +1192,7 @@ atombios_external_encoder_setup(struct drm_encoder *encoder,
if (dp_clock == 270000)
args.v1.sDigEncoder.ucConfig |= ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ;
args.v1.sDigEncoder.ucLaneNum = dp_lane_count;
@@ -72866,7 +72913,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v1.sDigEncoder.ucLaneNum = 8;
else
args.v1.sDigEncoder.ucLaneNum = 4;
-@@ -1173,7 +1211,7 @@ atombios_external_encoder_setup(struct drm_encoder *encoder,
+@@ -1177,7 +1211,7 @@ atombios_external_encoder_setup(struct drm_encoder *encoder,
else if (dp_clock == 540000)
args.v3.sExtEncoder.ucConfig |= EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_5_40GHZ;
args.v3.sExtEncoder.ucLaneNum = dp_lane_count;
@@ -72875,7 +72922,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
args.v3.sExtEncoder.ucLaneNum = 8;
else
args.v3.sExtEncoder.ucLaneNum = 4;
-@@ -1371,7 +1409,7 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *encoder, int mode)
+@@ -1375,7 +1409,7 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *encoder, int mode)
ATOM_ENCODER_CMD_SETUP_PANEL_MODE,
dig->panel_mode);
if (ext_encoder) {
@@ -72884,7 +72931,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
atombios_external_encoder_setup(encoder, ext_encoder,
EXTERNAL_ENCODER_ACTION_V3_ENCODER_SETUP);
}
-@@ -1450,7 +1488,7 @@ radeon_atom_encoder_dpms_ext(struct drm_encoder *encoder,
+@@ -1454,7 +1488,7 @@ radeon_atom_encoder_dpms_ext(struct drm_encoder *encoder,
switch (mode) {
case DRM_MODE_DPMS_ON:
default:
@@ -72893,7 +72940,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
atombios_external_encoder_setup(encoder, ext_encoder,
EXTERNAL_ENCODER_ACTION_V3_ENABLE_OUTPUT);
atombios_external_encoder_setup(encoder, ext_encoder,
-@@ -1461,7 +1499,7 @@ radeon_atom_encoder_dpms_ext(struct drm_encoder *encoder,
+@@ -1465,7 +1499,7 @@ radeon_atom_encoder_dpms_ext(struct drm_encoder *encoder,
case DRM_MODE_DPMS_STANDBY:
case DRM_MODE_DPMS_SUSPEND:
case DRM_MODE_DPMS_OFF:
@@ -72902,7 +72949,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
atombios_external_encoder_setup(encoder, ext_encoder,
EXTERNAL_ENCODER_ACTION_V3_ENCODER_BLANKING);
atombios_external_encoder_setup(encoder, ext_encoder,
-@@ -1743,13 +1781,34 @@ static int radeon_atom_pick_dig_encoder(struct drm_encoder *encoder)
+@@ -1747,13 +1781,34 @@ static int radeon_atom_pick_dig_encoder(struct drm_encoder *encoder)
struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
struct drm_encoder *test_encoder;
@@ -72942,7 +72989,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
/* ontario follows DCE4 */
if (rdev->family == CHIP_PALM) {
if (dig->linkb)
-@@ -1837,7 +1896,7 @@ radeon_atom_encoder_init(struct radeon_device *rdev)
+@@ -1841,7 +1896,7 @@ radeon_atom_encoder_init(struct radeon_device *rdev)
break;
}
diff --git a/debian/patches/features/all/xen/microcode.patch b/debian/patches/features/all/xen/microcode.patch
index e1bcdd3..58c5d1b 100644
--- a/debian/patches/features/all/xen/microcode.patch
+++ b/debian/patches/features/all/xen/microcode.patch
@@ -17,22 +17,16 @@ Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge at citrix.com>
Takes from git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git#upstream/microcode
- arch/x86/include/asm/microcode.h | 9 ++
- arch/x86/kernel/Makefile | 1 +
- arch/x86/kernel/microcode_core.c | 5 +-
- arch/x86/kernel/microcode_xen.c | 198 ++++++++++++++++++++++++++++++++++++++
- arch/x86/xen/Kconfig | 4 +
- 5 files changed, 216 insertions(+), 1 deletion(-)
- create mode 100644 arch/x86/kernel/microcode_xen.c
+[bwh: Adjust context to apply after "x86/microcode/amd: Do not overwrite
+ final patch levels" in 3.2.81]
-Index: linux/arch/x86/include/asm/microcode.h
-===================================================================
---- linux.orig/arch/x86/include/asm/microcode.h 2012-10-30 23:27:11.000000000 +0000
-+++ linux/arch/x86/include/asm/microcode.h 2012-11-09 10:59:49.000000000 +0000
-@@ -61,4 +61,13 @@
- }
+--- a/arch/x86/include/asm/microcode.h
++++ b/arch/x86/include/asm/microcode.h
+@@ -62,4 +62,14 @@ static inline struct microcode_ops * __i
#endif
+ extern bool check_current_patch_level(u32 *rev, bool early);
++
+#ifdef CONFIG_MICROCODE_XEN
+extern struct microcode_ops * __init init_xen_microcode(void);
+#else
@@ -43,11 +37,9 @@ Index: linux/arch/x86/include/asm/microcode.h
+#endif
+
#endif /* _ASM_X86_MICROCODE_H */
-Index: linux/arch/x86/kernel/Makefile
-===================================================================
---- linux.orig/arch/x86/kernel/Makefile 2012-10-30 23:27:11.000000000 +0000
-+++ linux/arch/x86/kernel/Makefile 2012-11-09 10:59:49.000000000 +0000
-@@ -92,6 +92,7 @@
+--- a/arch/x86/kernel/Makefile
++++ b/arch/x86/kernel/Makefile
+@@ -93,6 +93,7 @@ obj-$(CONFIG_PCSPKR_PLATFORM) += pcspeak
microcode-y := microcode_core.o
microcode-$(CONFIG_MICROCODE_INTEL) += microcode_intel.o
microcode-$(CONFIG_MICROCODE_AMD) += microcode_amd.o
@@ -55,10 +47,8 @@ Index: linux/arch/x86/kernel/Makefile
obj-$(CONFIG_MICROCODE) += microcode.o
obj-$(CONFIG_X86_CHECK_BIOS_CORRUPTION) += check.o
-Index: linux/arch/x86/kernel/microcode_core.c
-===================================================================
---- linux.orig/arch/x86/kernel/microcode_core.c 2012-11-09 10:18:15.000000000 +0000
-+++ linux/arch/x86/kernel/microcode_core.c 2012-11-09 10:59:49.000000000 +0000
+--- a/arch/x86/kernel/microcode_core.c
++++ b/arch/x86/kernel/microcode_core.c
@@ -84,6 +84,7 @@
#include <linux/mm.h>
#include <linux/syscore_ops.h>
@@ -67,7 +57,7 @@ Index: linux/arch/x86/kernel/microcode_core.c
#include <asm/microcode.h>
#include <asm/processor.h>
-@@ -518,7 +519,9 @@
+@@ -518,7 +519,9 @@ static int __init microcode_init(void)
struct cpuinfo_x86 *c = &cpu_data(0);
int error;
@@ -78,10 +68,8 @@ Index: linux/arch/x86/kernel/microcode_core.c
microcode_ops = init_intel_microcode();
else if (c->x86_vendor == X86_VENDOR_AMD)
microcode_ops = init_amd_microcode();
-Index: linux/arch/x86/kernel/microcode_xen.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux/arch/x86/kernel/microcode_xen.c 2012-11-09 10:59:49.000000000 +0000
+--- /dev/null
++++ b/arch/x86/kernel/microcode_xen.c
@@ -0,0 +1,198 @@
+/*
+ * Xen microcode update driver
@@ -281,11 +269,9 @@ Index: linux/arch/x86/kernel/microcode_xen.c
+ return NULL;
+ return µcode_xen_ops;
+}
-Index: linux/arch/x86/xen/Kconfig
-===================================================================
---- linux.orig/arch/x86/xen/Kconfig 2012-10-30 23:27:11.000000000 +0000
-+++ linux/arch/x86/xen/Kconfig 2012-11-09 11:00:42.000000000 +0000
-@@ -48,3 +48,7 @@
+--- a/arch/x86/xen/Kconfig
++++ b/arch/x86/xen/Kconfig
+@@ -48,3 +48,7 @@ config XEN_DEBUG_FS
help
Enable statistics output and various tuning options in debugfs.
Enabling this option may incur a significant performance overhead.
diff --git a/debian/patches/series b/debian/patches/series
index 5d12603..ab75c59 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1172,11 +1172,5 @@ debian/revert-libata-align-ata_device-s-id-on-a-cacheline.patch
debian/tracing-avoid-abi-change-in-3.2.79.patch
debian/fs-fix-abi-change-in-3.2.80.patch
debian/pci-fix-abi-change-in-3.2.80.patch
-bugfix/all/revert-ax25-add-link-layer-header-validation-functio.patch
-bugfix/all/revert-net-validate-variable-length-ll-headers.patch
debian/revert-net-ipv6-add-sysctl-option-accept_ra_min_hop_limit.patch
debian/fs-fix-abi-change-for-aufs-f_setfl-fix.patch
-bugfix/all/get_rock_ridge_filename-handle-malformed-NM-entries.patch
-bugfix/all/hugetlb-ensure-hugepage-access-is-denied-if-hugepages-are-not.patch
-bugfix/all/mm-hugetlb-allow-hugepages_supported-to-be-architect.patch
-bugfix/x86/x86-mm-xen-Suppress-hugetlbfs-in-PV-guests.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/linux.git
More information about the Kernel-svn-changes
mailing list