diff --git a/debian/changelog b/debian/changelog index f49cc9495..f3b4ccc19 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,13 @@ -linux-2.6 (3.2.14-2) UNRELEASED; urgency=low +linux-2.6 (3.2.15-1) UNRELEASED; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.15 + - drm/radeon/kms: fix fans after resume (Closes: #596741) + - sysctl: fix write access to dmesg_restrict/kptr_restrict + - x86/PCI: use host bridge _CRS info on MSI MS-7253 (Closes: #619034) + - nfs: Fix length of buffer copied in __nfs4_get_acl_uncached + - [x86] ioat: fix size of 'completion' for Xen (Closes: #660554) + - cred: copy_process() should clear child->replacement_session_keyring [ Ben Hutchings ] * net: fix /proc/net/dev regression (Closes: #659499) @@ -6,15 +15,9 @@ linux-2.6 (3.2.14-2) UNRELEASED; urgency=low * [x86] drm/i915: mask transcoder select bits before setting them on LVDS * [armhf/mx5,mipsel/loongson-2f] input: Enable INPUT_TOUCHSCREEN (Closes: #668036) - * TOMOYO: Fix mount flags checking order. - * drm/radeon/kms: fix fans after resume (Closes: #596741) * [x86] hv: Update all Hyper-V drivers to 3.4-rc1 (Closes: #661318) - * nfs: Fix length of buffer copied in __nfs4_get_acl_uncached * hugetlb: fix race condition in hugetlb_fault() - [ Jonathan Nieder ] - * [x86] ioat: fix size of 'completion' for Xen (Closes: #660554) - -- Ben Hutchings Sat, 07 Apr 2012 01:56:13 +0100 linux-2.6 (3.2.14-1) unstable; urgency=low diff --git a/debian/patches/bugfix/all/TOMOYO-Fix-mount-flags-checking-order.patch b/debian/patches/bugfix/all/TOMOYO-Fix-mount-flags-checking-order.patch deleted file mode 100644 index 8c38e6b84..000000000 --- a/debian/patches/bugfix/all/TOMOYO-Fix-mount-flags-checking-order.patch +++ /dev/null @@ -1,89 +0,0 @@ -From: Tetsuo Handa -Date: Wed, 29 Feb 2012 21:53:22 +0900 -Subject: [PATCH] TOMOYO: Fix mount flags checking order. - -commit df91e49477a9be15921cb2854e1d12a3bdb5e425 upstream. - -Userspace can pass in arbitrary combinations of MS_* flags to mount(). - -If both MS_BIND and one of MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE are -passed, device name which should be checked for MS_BIND was not checked because -MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE had higher priority than MS_BIND. - -If both one of MS_BIND/MS_MOVE and MS_REMOUNT are passed, device name which -should not be checked for MS_REMOUNT was checked because MS_BIND/MS_MOVE had -higher priority than MS_REMOUNT. - -Fix these bugs by changing priority to MS_REMOUNT -> MS_BIND -> -MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE -> MS_MOVE as with do_mount() does. - -Also, unconditionally return -EINVAL if more than one of -MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE is passed so that TOMOYO will not -generate inaccurate audit logs, for commit 7a2e8a8f "VFS: Sanity check mount -flags passed to change_mnt_propagation()" clarified that these flags must be -exclusively passed. - -Signed-off-by: Tetsuo Handa -Signed-off-by: James Morris ---- - security/tomoyo/mount.c | 38 ++++++++++++++++++++------------------ - 1 file changed, 20 insertions(+), 18 deletions(-) - -diff --git a/security/tomoyo/mount.c b/security/tomoyo/mount.c -index bee09d0..fe00cdf 100644 ---- a/security/tomoyo/mount.c -+++ b/security/tomoyo/mount.c -@@ -199,30 +199,32 @@ int tomoyo_mount_permission(char *dev_name, struct path *path, - if (flags & MS_REMOUNT) { - type = tomoyo_mounts[TOMOYO_MOUNT_REMOUNT]; - flags &= ~MS_REMOUNT; -- } -- if (flags & MS_MOVE) { -- type = tomoyo_mounts[TOMOYO_MOUNT_MOVE]; -- flags &= ~MS_MOVE; -- } -- if (flags & MS_BIND) { -+ } else if (flags & MS_BIND) { - type = tomoyo_mounts[TOMOYO_MOUNT_BIND]; - flags &= ~MS_BIND; -- } -- if (flags & MS_UNBINDABLE) { -- type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_UNBINDABLE]; -- flags &= ~MS_UNBINDABLE; -- } -- if (flags & MS_PRIVATE) { -+ } else if (flags & MS_SHARED) { -+ if (flags & (MS_PRIVATE | MS_SLAVE | MS_UNBINDABLE)) -+ return -EINVAL; -+ type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_SHARED]; -+ flags &= ~MS_SHARED; -+ } else if (flags & MS_PRIVATE) { -+ if (flags & (MS_SHARED | MS_SLAVE | MS_UNBINDABLE)) -+ return -EINVAL; - type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_PRIVATE]; - flags &= ~MS_PRIVATE; -- } -- if (flags & MS_SLAVE) { -+ } else if (flags & MS_SLAVE) { -+ if (flags & (MS_SHARED | MS_PRIVATE | MS_UNBINDABLE)) -+ return -EINVAL; - type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_SLAVE]; - flags &= ~MS_SLAVE; -- } -- if (flags & MS_SHARED) { -- type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_SHARED]; -- flags &= ~MS_SHARED; -+ } else if (flags & MS_UNBINDABLE) { -+ if (flags & (MS_SHARED | MS_PRIVATE | MS_SLAVE)) -+ return -EINVAL; -+ type = tomoyo_mounts[TOMOYO_MOUNT_MAKE_UNBINDABLE]; -+ flags &= ~MS_UNBINDABLE; -+ } else if (flags & MS_MOVE) { -+ type = tomoyo_mounts[TOMOYO_MOUNT_MOVE]; -+ flags &= ~MS_MOVE; - } - if (!type) - type = ""; --- -1.7.9.5 - diff --git a/debian/patches/bugfix/all/drm-radeon-kms-fix-fans-after-resume.patch b/debian/patches/bugfix/all/drm-radeon-kms-fix-fans-after-resume.patch deleted file mode 100644 index 9a34d579f..000000000 --- a/debian/patches/bugfix/all/drm-radeon-kms-fix-fans-after-resume.patch +++ /dev/null @@ -1,74 +0,0 @@ -From: Alex Deucher -Date: Thu, 29 Mar 2012 19:04:08 -0400 -Subject: [PATCH] drm/radeon/kms: fix fans after resume -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -commit 402976fe51b2d1a58a29ba06fa1ca5ace3a4cdcd upstream. - -On pre-R600 asics, the SpeedFanControl table is not -executed as part of ASIC_Init as it is on newer asics. - -Fixes: -https://bugzilla.kernel.org/show_bug.cgi?id=29412 - -Signed-off-by: Alex Deucher -Reviewed-by: Michel Dänzer -Cc: stable@vger.kernel.org -Signed-off-by: Dave Airlie ---- - drivers/gpu/drm/radeon/atom.c | 15 ++++++++++++++- - drivers/gpu/drm/radeon/atom.h | 1 + - 2 files changed, 15 insertions(+), 1 deletion(-) - -diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c -index d1bd239..5ce9bf5 100644 ---- a/drivers/gpu/drm/radeon/atom.c -+++ b/drivers/gpu/drm/radeon/atom.c -@@ -1306,8 +1306,11 @@ struct atom_context *atom_parse(struct card_info *card, void *bios) - - int atom_asic_init(struct atom_context *ctx) - { -+ struct radeon_device *rdev = ctx->card->dev->dev_private; - int hwi = CU16(ctx->data_table + ATOM_DATA_FWI_PTR); - uint32_t ps[16]; -+ int ret; -+ - memset(ps, 0, 64); - - ps[0] = cpu_to_le32(CU32(hwi + ATOM_FWI_DEFSCLK_PTR)); -@@ -1317,7 +1320,17 @@ int atom_asic_init(struct atom_context *ctx) - - if (!CU16(ctx->cmd_table + 4 + 2 * ATOM_CMD_INIT)) - return 1; -- return atom_execute_table(ctx, ATOM_CMD_INIT, ps); -+ ret = atom_execute_table(ctx, ATOM_CMD_INIT, ps); -+ if (ret) -+ return ret; -+ -+ memset(ps, 0, 64); -+ -+ if (rdev->family < CHIP_R600) { -+ if (CU16(ctx->cmd_table + 4 + 2 * ATOM_CMD_SPDFANCNTL)) -+ atom_execute_table(ctx, ATOM_CMD_SPDFANCNTL, ps); -+ } -+ return ret; - } - - void atom_destroy(struct atom_context *ctx) -diff --git a/drivers/gpu/drm/radeon/atom.h b/drivers/gpu/drm/radeon/atom.h -index 93cfe20..25fea63 100644 ---- a/drivers/gpu/drm/radeon/atom.h -+++ b/drivers/gpu/drm/radeon/atom.h -@@ -44,6 +44,7 @@ - #define ATOM_CMD_SETSCLK 0x0A - #define ATOM_CMD_SETMCLK 0x0B - #define ATOM_CMD_SETPCLK 0x0C -+#define ATOM_CMD_SPDFANCNTL 0x39 - - #define ATOM_DATA_FWI_PTR 0xC - #define ATOM_DATA_IIO_PTR 0x32 --- -1.7.9.5 - diff --git a/debian/patches/bugfix/all/nfs-Fix-length-of-buffer-copied-in-__nfs4_get_acl_uncach.patch b/debian/patches/bugfix/all/nfs-Fix-length-of-buffer-copied-in-__nfs4_get_acl_uncach.patch deleted file mode 100644 index 49f591919..000000000 --- a/debian/patches/bugfix/all/nfs-Fix-length-of-buffer-copied-in-__nfs4_get_acl_uncach.patch +++ /dev/null @@ -1,33 +0,0 @@ -From: Sachin Prabhu -Date: Thu, 22 Mar 2012 16:46:28 +0000 -Subject: [PATCH] Fix length of buffer copied in __nfs4_get_acl_uncached - -commit 20e0fa98b751facf9a1101edaefbc19c82616a68 upstream. - -_copy_from_pages() used to copy data from the temporary buffer to the -user passed buffer is passed the wrong size parameter when copying -data. res.acl_len contains both the bitmap and acl lenghts while -acl_len contains the acl length after adjusting for the bitmap size. - -Signed-off-by: Sachin Prabhu -Signed-off-by: Trond Myklebust ---- - fs/nfs/nfs4proc.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c -index e809d23..45df7d4 100644 ---- a/fs/nfs/nfs4proc.c -+++ b/fs/nfs/nfs4proc.c -@@ -3712,7 +3712,7 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu - if (acl_len > buflen) - goto out_free; - _copy_from_pages(buf, pages, res.acl_data_offset, -- res.acl_len); -+ acl_len); - } - ret = acl_len; - out_free: --- -1.7.9.5 - diff --git a/debian/patches/bugfix/arm/ARM-ixp4xx-mtd-oops.patch b/debian/patches/bugfix/arm/ARM-ixp4xx-mtd-oops.patch deleted file mode 100644 index 8256d467a..000000000 --- a/debian/patches/bugfix/arm/ARM-ixp4xx-mtd-oops.patch +++ /dev/null @@ -1,123 +0,0 @@ -Queued as http://git.infradead.org/users/dedekind/l2-mtd.git/commit/40421b7fb59974bef9362b74c8d7b92944c578c4 - -From: Marc Kleine-Budde -To: linux-kernel@vger.kernel.org -Subject: [PATCH 2/2] mtd: ixp4xx: oops in ixp4xx_flash_probe -Date: Wed, 8 Feb 2012 20:24:29 +0100 -Message-Id: <1328729069-21308-3-git-send-email-mkl@blackshift.org> -In-Reply-To: <1328729069-21308-1-git-send-email-mkl@blackshift.org> -References: <1328729069-21308-1-git-send-email-mkl@blackshift.org> -Cc: Marc Kleine-Budde , linux-mtd@lists.infradead.org, - linux-arm-kernel@lists.infradead.org - -In commit "c797533 mtd: abstract last MTD partition parser argument" the -third argument of "mtd_device_parse_register()" changed from start address -of the MTD device to a pointer to a struct. - -The "ixp4xx_flash_probe()" function was not converted properly, causing -this oops during boot: - -Searching for RedBoot partition table in IXP4XX-Flash.0 at offset 0x7e0000 -Unable to handle kernel paging request at virtual address 50000000 -pgd = c0004000 -[50000000] *pgd=00000000 -Internal error: Oops: f5 [#1] -CPU: 0 Not tainted (3.2.5-00002-gc809cb2 #4) -PC is at parse_redboot_partitions+0x400/0x5b0 -LR is at parse_redboot_partitions+0x3e0/0x5b0 -pc : [] lr : [] psr: 20000013 -sp : c0829de4 ip : c0829de4 fp : c0829e3c -r10: c180d000 r9 : 00000000 r8 : 00000008 -r7 : 00000200 r6 : 50000000 r5 : 00000000 r4 : c0888c00 -r3 : c0944400 r2 : 00000000 r1 : c02c6060 r0 : 00000007 -Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel -Control: 000039ff Table: 00004000 DAC: 00000017 -Process swapper (pid: 1, stack limit = 0xc0828260) -Stack: (0xc0829de4 to 0xc082a000) -9de0: c0829e0c c182d000 c0179a08 c0944400 00000048 00000000 00000000 -9e00: 00020000 c0829e70 c180d000 00020000 00000000 00000000 c028ba40 c028ba18 -9e20: c028be88 50000000 c024b250 c0888c00 c0829e6c c0829e40 c0162f58 c0163ef8 -9e40: c0829e70 00000000 00000000 c0888c00 00000000 00000000 00000000 00000000 -9e60: c0829e90 c0829e70 c015ffac c0162ed8 c09418a0 c09418a0 c027cc28 c027cedc -9e80: 00000000 c0829eb4 c0829e94 c017a464 c015ff90 00000000 c027cc30 c02a2568 -9ea0: c027cc30 c028be48 c0829ec4 c0829eb8 c01338c4 c017a318 c0829ee8 c0829ec8 -9ec0: c01323b4 c01338b4 c027cc30 c028be48 c027cc64 00000000 00000000 c0829f04 -9ee0: c0829eec c013254c c0132338 c028be48 c0829f08 c01324b8 c0829f2c c0829f08 -9f00: c0131ba0 c01324c4 c08240f8 c083fbd0 c028be48 c028a4ac c0941840 00000000 -9f20: c0829f3c c0829f30 c0132218 c0131b40 c0829f68 c0829f40 c01314c0 c0132204 -9f40: c0236120 c02765cc c028be48 c026d95c 00000013 00000000 00000000 c0829f88 -9f60: c0829f6c c0132b90 c013134c c02765cc 00000000 c026d95c 00000013 c0829f98 -9f80: c0829f8c c0133d28 c0132b1c c0829fa8 c0829f9c c026d970 c0133ce8 c0829fdc -9fa0: c0829fac c025d270 c026d968 c028271c c0023c94 00000013 c02765cc c02766bc -9fc0: c0023c94 00000013 00000000 00000000 c0829ff4 c0829fe0 c025d400 c025d1d8 -9fe0: 00000000 c025d380 00000000 c0829ff8 c0023c94 c025d38c 62737507 6f74735f -Backtrace: -[] (parse_redboot_partitions+0x0/0x5b0) from [] (parse_mtd_partitions+0x8c/0xdc) -[] (parse_mtd_partitions+0x0/0xdc) from [] (mtd_device_parse_register+0x28/0xc8) -[] (mtd_device_parse_register+0x0/0xc8) from [] (ixp4xx_flash_probe+0x158/0x1dc) - r7:00000000 r6:c027cedc r5:c027cc28 r4:c09418a0 -[] (ixp4xx_flash_probe+0x0/0x1dc) from [] (platform_drv_probe+0x1c/0x20) - r7:c028be48 r6:c027cc30 r5:c02a2568 r4:c027cc30 -[] (platform_drv_probe+0x0/0x20) from [] (driver_probe_device+0x88/0x18c) -[] (driver_probe_device+0x0/0x18c) from [] (__driver_attach+0x94/0x98) - r8:00000000 r7:00000000 r6:c027cc64 r5:c028be48 r4:c027cc30 -[] (__driver_attach+0x0/0x98) from [] (bus_for_each_dev+0x6c/0x94) - r6:c01324b8 r5:c0829f08 r4:c028be48 -[] (bus_for_each_dev+0x0/0x94) from [] (driver_attach+0x20/0x28) - r7:00000000 r6:c0941840 r5:c028a4ac r4:c028be48 -[] (driver_attach+0x0/0x28) from [] (bus_add_driver+0x180/0x25c) -[] (bus_add_driver+0x0/0x25c) from [] (driver_register+0x80/0x13c) -[] (driver_register+0x0/0x13c) from [] (platform_driver_register+0x4c/0x60) - r7:00000013 r6:c026d95c r5:00000000 r4:c02765cc -[] (platform_driver_register+0x0/0x60) from [] (ixp4xx_flash_init+0x14/0x1c) -[] (ixp4xx_flash_init+0x0/0x1c) from [] (do_one_initcall+0xa4/0x17c) -[] (do_one_initcall+0x0/0x17c) from [] (kernel_init+0x80/0x124) - r9:00000000 r8:00000000 r7:00000013 r6:c0023c94 r5:c02766bc -r4:c02765cc -[] (kernel_init+0x0/0x124) from [] (do_exit+0x0/0x694) - r5:c025d380 r4:00000000 -Code: 0a000028 e3560000 e583a000 0a00001f (e5962000) ----[ end trace bf1eac11c431d0ba ]--- - -This patch fixes the problem by filling the needed information into a -"struct mtd_part_parser_data" and passing it to -"mtd_device_parse_register()". - -Cc: linux-mtd@lists.infradead.org -Signed-off-by: Marc Kleine-Budde ---- - drivers/mtd/maps/ixp4xx.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -diff --git a/drivers/mtd/maps/ixp4xx.c b/drivers/mtd/maps/ixp4xx.c -index 8b54101..e864fc6 100644 ---- a/drivers/mtd/maps/ixp4xx.c -+++ b/drivers/mtd/maps/ixp4xx.c -@@ -182,6 +182,9 @@ static int ixp4xx_flash_probe(struct platform_device *dev) - { - struct flash_platform_data *plat = dev->dev.platform_data; - struct ixp4xx_flash_info *info; -+ struct mtd_part_parser_data ppdata = { -+ .origin = dev->resource->start, -+ }; - int err = -1; - - if (!plat) -@@ -247,7 +250,7 @@ static int ixp4xx_flash_probe(struct platform_device *dev) - /* Use the fast version */ - info->map.write = ixp4xx_write16; - -- err = mtd_device_parse_register(info->mtd, probes, dev->resource->start, -+ err = mtd_device_parse_register(info->mtd, probes, &ppdata, - plat->parts, plat->nr_parts); - if (err) { - printk(KERN_ERR "Could not parse partitions\n"); --- -1.7.4.1 - - -_______________________________________________ -linux-arm-kernel mailing list -linux-arm-kernel@lists.infradead.org -http://lists.infradead.org/mailman/listinfo/linux-arm-kernel - diff --git a/debian/patches/bugfix/x86/ioat-fix-size-of-completion-for-Xen.patch b/debian/patches/bugfix/x86/ioat-fix-size-of-completion-for-Xen.patch deleted file mode 100644 index 4b6af5ce5..000000000 --- a/debian/patches/bugfix/x86/ioat-fix-size-of-completion-for-Xen.patch +++ /dev/null @@ -1,210 +0,0 @@ -From: Dan Williams -Date: Fri, 23 Mar 2012 13:36:42 -0700 -Subject: ioat: fix size of 'completion' for Xen - -commit 275029353953c2117941ade84f02a2303912fad1 upstream. - -Starting with v3.2 Jonathan reports that Xen crashes loading the ioatdma -driver. A debug run shows: - - ioatdma 0000:00:16.4: desc[0]: (0x300cc7000->0x300cc7040) cookie: 0 flags: 0x2 ctl: 0x29 (op: 0 int_en: 1 compl: 1) - ... - ioatdma 0000:00:16.4: ioat_get_current_completion: phys_complete: 0xcc7000 - -...which shows that in this environment GFP_KERNEL memory may be backed -by a 64-bit dma address. This breaks the driver's assumption that an -unsigned long should be able to contain the physical address for -descriptor memory. Switch to dma_addr_t which beyond being the right -size, is the true type for the data i.e. an io-virtual address -inidicating the engine's last processed descriptor. - -[stable: 3.2+] -Cc: -Reported-by: Jonathan Nieder -Reported-by: William Dauchy -Tested-by: William Dauchy -Tested-by: Dave Jiang -Signed-off-by: Dan Williams -Signed-off-by: Jonathan Nieder ---- - drivers/dma/ioat/dma.c | 16 ++++++++-------- - drivers/dma/ioat/dma.h | 6 +++--- - drivers/dma/ioat/dma_v2.c | 8 ++++---- - drivers/dma/ioat/dma_v3.c | 8 ++++---- - 4 files changed, 19 insertions(+), 19 deletions(-) - -diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c -index a4d6cb0c0343..659518015972 100644 ---- a/drivers/dma/ioat/dma.c -+++ b/drivers/dma/ioat/dma.c -@@ -548,9 +548,9 @@ void ioat_dma_unmap(struct ioat_chan_common *chan, enum dma_ctrl_flags flags, - PCI_DMA_TODEVICE, flags, 0); - } - --unsigned long ioat_get_current_completion(struct ioat_chan_common *chan) -+dma_addr_t ioat_get_current_completion(struct ioat_chan_common *chan) - { -- unsigned long phys_complete; -+ dma_addr_t phys_complete; - u64 completion; - - completion = *chan->completion; -@@ -571,7 +571,7 @@ unsigned long ioat_get_current_completion(struct ioat_chan_common *chan) - } - - bool ioat_cleanup_preamble(struct ioat_chan_common *chan, -- unsigned long *phys_complete) -+ dma_addr_t *phys_complete) - { - *phys_complete = ioat_get_current_completion(chan); - if (*phys_complete == chan->last_completion) -@@ -582,14 +582,14 @@ bool ioat_cleanup_preamble(struct ioat_chan_common *chan, - return true; - } - --static void __cleanup(struct ioat_dma_chan *ioat, unsigned long phys_complete) -+static void __cleanup(struct ioat_dma_chan *ioat, dma_addr_t phys_complete) - { - struct ioat_chan_common *chan = &ioat->base; - struct list_head *_desc, *n; - struct dma_async_tx_descriptor *tx; - -- dev_dbg(to_dev(chan), "%s: phys_complete: %lx\n", -- __func__, phys_complete); -+ dev_dbg(to_dev(chan), "%s: phys_complete: %llx\n", -+ __func__, (unsigned long long) phys_complete); - list_for_each_safe(_desc, n, &ioat->used_desc) { - struct ioat_desc_sw *desc; - -@@ -655,7 +655,7 @@ static void __cleanup(struct ioat_dma_chan *ioat, unsigned long phys_complete) - static void ioat1_cleanup(struct ioat_dma_chan *ioat) - { - struct ioat_chan_common *chan = &ioat->base; -- unsigned long phys_complete; -+ dma_addr_t phys_complete; - - prefetch(chan->completion); - -@@ -701,7 +701,7 @@ static void ioat1_timer_event(unsigned long data) - mod_timer(&chan->timer, jiffies + COMPLETION_TIMEOUT); - spin_unlock_bh(&ioat->desc_lock); - } else if (test_bit(IOAT_COMPLETION_PENDING, &chan->state)) { -- unsigned long phys_complete; -+ dma_addr_t phys_complete; - - spin_lock_bh(&ioat->desc_lock); - /* if we haven't made progress and we have already -diff --git a/drivers/dma/ioat/dma.h b/drivers/dma/ioat/dma.h -index 5216c8a92a21..8bebddd189c7 100644 ---- a/drivers/dma/ioat/dma.h -+++ b/drivers/dma/ioat/dma.h -@@ -88,7 +88,7 @@ struct ioatdma_device { - struct ioat_chan_common { - struct dma_chan common; - void __iomem *reg_base; -- unsigned long last_completion; -+ dma_addr_t last_completion; - spinlock_t cleanup_lock; - dma_cookie_t completed_cookie; - unsigned long state; -@@ -333,7 +333,7 @@ int __devinit ioat_dma_self_test(struct ioatdma_device *device); - void __devexit ioat_dma_remove(struct ioatdma_device *device); - struct dca_provider * __devinit ioat_dca_init(struct pci_dev *pdev, - void __iomem *iobase); --unsigned long ioat_get_current_completion(struct ioat_chan_common *chan); -+dma_addr_t ioat_get_current_completion(struct ioat_chan_common *chan); - void ioat_init_channel(struct ioatdma_device *device, - struct ioat_chan_common *chan, int idx); - enum dma_status ioat_dma_tx_status(struct dma_chan *c, dma_cookie_t cookie, -@@ -341,7 +341,7 @@ enum dma_status ioat_dma_tx_status(struct dma_chan *c, dma_cookie_t cookie, - void ioat_dma_unmap(struct ioat_chan_common *chan, enum dma_ctrl_flags flags, - size_t len, struct ioat_dma_descriptor *hw); - bool ioat_cleanup_preamble(struct ioat_chan_common *chan, -- unsigned long *phys_complete); -+ dma_addr_t *phys_complete); - void ioat_kobject_add(struct ioatdma_device *device, struct kobj_type *type); - void ioat_kobject_del(struct ioatdma_device *device); - extern const struct sysfs_ops ioat_sysfs_ops; -diff --git a/drivers/dma/ioat/dma_v2.c b/drivers/dma/ioat/dma_v2.c -index 5d65f8377971..cb8864d45601 100644 ---- a/drivers/dma/ioat/dma_v2.c -+++ b/drivers/dma/ioat/dma_v2.c -@@ -126,7 +126,7 @@ static void ioat2_start_null_desc(struct ioat2_dma_chan *ioat) - spin_unlock_bh(&ioat->prep_lock); - } - --static void __cleanup(struct ioat2_dma_chan *ioat, unsigned long phys_complete) -+static void __cleanup(struct ioat2_dma_chan *ioat, dma_addr_t phys_complete) - { - struct ioat_chan_common *chan = &ioat->base; - struct dma_async_tx_descriptor *tx; -@@ -178,7 +178,7 @@ static void __cleanup(struct ioat2_dma_chan *ioat, unsigned long phys_complete) - static void ioat2_cleanup(struct ioat2_dma_chan *ioat) - { - struct ioat_chan_common *chan = &ioat->base; -- unsigned long phys_complete; -+ dma_addr_t phys_complete; - - spin_lock_bh(&chan->cleanup_lock); - if (ioat_cleanup_preamble(chan, &phys_complete)) -@@ -259,7 +259,7 @@ int ioat2_reset_sync(struct ioat_chan_common *chan, unsigned long tmo) - static void ioat2_restart_channel(struct ioat2_dma_chan *ioat) - { - struct ioat_chan_common *chan = &ioat->base; -- unsigned long phys_complete; -+ dma_addr_t phys_complete; - - ioat2_quiesce(chan, 0); - if (ioat_cleanup_preamble(chan, &phys_complete)) -@@ -274,7 +274,7 @@ void ioat2_timer_event(unsigned long data) - struct ioat_chan_common *chan = &ioat->base; - - if (test_bit(IOAT_COMPLETION_PENDING, &chan->state)) { -- unsigned long phys_complete; -+ dma_addr_t phys_complete; - u64 status; - - status = ioat_chansts(chan); -diff --git a/drivers/dma/ioat/dma_v3.c b/drivers/dma/ioat/dma_v3.c -index f519c93a61e7..2dbf32b02735 100644 ---- a/drivers/dma/ioat/dma_v3.c -+++ b/drivers/dma/ioat/dma_v3.c -@@ -256,7 +256,7 @@ static bool desc_has_ext(struct ioat_ring_ent *desc) - * The difference from the dma_v2.c __cleanup() is that this routine - * handles extended descriptors and dma-unmapping raid operations. - */ --static void __cleanup(struct ioat2_dma_chan *ioat, unsigned long phys_complete) -+static void __cleanup(struct ioat2_dma_chan *ioat, dma_addr_t phys_complete) - { - struct ioat_chan_common *chan = &ioat->base; - struct ioat_ring_ent *desc; -@@ -314,7 +314,7 @@ static void __cleanup(struct ioat2_dma_chan *ioat, unsigned long phys_complete) - static void ioat3_cleanup(struct ioat2_dma_chan *ioat) - { - struct ioat_chan_common *chan = &ioat->base; -- unsigned long phys_complete; -+ dma_addr_t phys_complete; - - spin_lock_bh(&chan->cleanup_lock); - if (ioat_cleanup_preamble(chan, &phys_complete)) -@@ -333,7 +333,7 @@ static void ioat3_cleanup_event(unsigned long data) - static void ioat3_restart_channel(struct ioat2_dma_chan *ioat) - { - struct ioat_chan_common *chan = &ioat->base; -- unsigned long phys_complete; -+ dma_addr_t phys_complete; - - ioat2_quiesce(chan, 0); - if (ioat_cleanup_preamble(chan, &phys_complete)) -@@ -348,7 +348,7 @@ static void ioat3_timer_event(unsigned long data) - struct ioat_chan_common *chan = &ioat->base; - - if (test_bit(IOAT_COMPLETION_PENDING, &chan->state)) { -- unsigned long phys_complete; -+ dma_addr_t phys_complete; - u64 status; - - status = ioat_chansts(chan); --- -1.7.10.rc4 - diff --git a/debian/patches/debian/revert-x86-ioapic-Add-register-level-checks-to-detec.patch b/debian/patches/debian/revert-x86-ioapic-Add-register-level-checks-to-detec.patch deleted file mode 100644 index a33c8efba..000000000 --- a/debian/patches/debian/revert-x86-ioapic-Add-register-level-checks-to-detec.patch +++ /dev/null @@ -1,87 +0,0 @@ -From: Ben Hutchings -Date: Wed, 4 Apr 2012 02:08:12 +0100 -Subject: [PATCH] Revert "x86/ioapic: Add register level checks to detect - bogus io-apic entries" - -This reverts commit 273fb194e86b795b08a724c7646d0f694949070b. -It is reported to break Xen support (not sure which domains/modes). ---- - arch/x86/kernel/apic/io_apic.c | 40 ++++++++-------------------------------- - 1 file changed, 8 insertions(+), 32 deletions(-) - -diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c -index a25e276..6d939d7 100644 ---- a/arch/x86/kernel/apic/io_apic.c -+++ b/arch/x86/kernel/apic/io_apic.c -@@ -3963,36 +3963,18 @@ int mp_find_ioapic_pin(int ioapic, u32 gsi) - static __init int bad_ioapic(unsigned long address) - { - if (nr_ioapics >= MAX_IO_APICS) { -- pr_warn("WARNING: Max # of I/O APICs (%d) exceeded (found %d), skipping\n", -- MAX_IO_APICS, nr_ioapics); -+ printk(KERN_WARNING "WARNING: Max # of I/O APICs (%d) exceeded " -+ "(found %d), skipping\n", MAX_IO_APICS, nr_ioapics); - return 1; - } - if (!address) { -- pr_warn("WARNING: Bogus (zero) I/O APIC address found in table, skipping!\n"); -+ printk(KERN_WARNING "WARNING: Bogus (zero) I/O APIC address" -+ " found in table, skipping!\n"); - return 1; - } - return 0; - } - --static __init int bad_ioapic_register(int idx) --{ -- union IO_APIC_reg_00 reg_00; -- union IO_APIC_reg_01 reg_01; -- union IO_APIC_reg_02 reg_02; -- -- reg_00.raw = io_apic_read(idx, 0); -- reg_01.raw = io_apic_read(idx, 1); -- reg_02.raw = io_apic_read(idx, 2); -- -- if (reg_00.raw == -1 && reg_01.raw == -1 && reg_02.raw == -1) { -- pr_warn("I/O APIC 0x%x registers return all ones, skipping!\n", -- mpc_ioapic_addr(idx)); -- return 1; -- } -- -- return 0; --} -- - void __init mp_register_ioapic(int id, u32 address, u32 gsi_base) - { - int idx = 0; -@@ -4009,12 +3991,6 @@ void __init mp_register_ioapic(int id, u32 address, u32 gsi_base) - ioapics[idx].mp_config.apicaddr = address; - - set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address); -- -- if (bad_ioapic_register(idx)) { -- clear_fixmap(FIX_IO_APIC_BASE_0 + idx); -- return; -- } -- - ioapics[idx].mp_config.apicid = io_apic_unique_id(id); - ioapics[idx].mp_config.apicver = io_apic_get_version(idx); - -@@ -4035,10 +4011,10 @@ void __init mp_register_ioapic(int id, u32 address, u32 gsi_base) - if (gsi_cfg->gsi_end >= gsi_top) - gsi_top = gsi_cfg->gsi_end + 1; - -- pr_info("IOAPIC[%d]: apic_id %d, version %d, address 0x%x, GSI %d-%d\n", -- idx, mpc_ioapic_id(idx), -- mpc_ioapic_ver(idx), mpc_ioapic_addr(idx), -- gsi_cfg->gsi_base, gsi_cfg->gsi_end); -+ printk(KERN_INFO "IOAPIC[%d]: apic_id %d, version %d, address 0x%x, " -+ "GSI %d-%d\n", idx, mpc_ioapic_id(idx), -+ mpc_ioapic_ver(idx), mpc_ioapic_addr(idx), -+ gsi_cfg->gsi_base, gsi_cfg->gsi_end); - - nr_ioapics++; - } --- -1.7.9.5 - diff --git a/debian/patches/series/base b/debian/patches/series/base index dc9812488..f5272e2a3 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -69,7 +69,6 @@ + bugfix/x86/KVM-nVMX-Fix-warning-causing-idt-vectoring-info-beha.patch + features/all/hwmon-it87-Add-IT8728F-support.patch -+ bugfix/arm/ARM-ixp4xx-mtd-oops.patch + bugfix/x86/drm-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch + bugfix/x86/drm-i915-fix-operator-precedence-when-enabling-RC6p.patch @@ -81,19 +80,13 @@ + features/all/fs-hardlink-creation-restriction-cleanup.patch + bugfix/all/Don-t-limit-non-nested-epoll-paths.patch + bugfix/all/kbuild-do-not-check-for-ancient-modutils-tools.patch -+ bugfix/x86/ioat-fix-size-of-completion-for-Xen.patch # Temporary, until the original change has been tested some more + debian/revert-CIFS-Respect-negotiated-MaxMpxCount.patch -# Temporary, until the Xen regression is fixed -+ debian/revert-x86-ioapic-Add-register-level-checks-to-detec.patch - + bugfix/all/net-fix-proc-net-dev-regression.patch + bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch + bugfix/x86/drm-i915-mask-transcoder-select-bits-before-setting-.patch -+ bugfix/all/TOMOYO-Fix-mount-flags-checking-order.patch -+ bugfix/all/drm-radeon-kms-fix-fans-after-resume.patch # Update all Hyper-V drivers to 3.4-rc1 (no longer staging) + features/x86/hyperv/0001-NLS-improve-UTF8-UTF16-string-conversion-routine.patch @@ -178,5 +171,4 @@ + debian/revert-rtc-Provide-flag-for-rtc-devices-that-don-t-s.patch + debian/nls-Avoid-ABI-change-from-improvement-to-utf8s_to_ut.patch -+ bugfix/all/nfs-Fix-length-of-buffer-copied-in-__nfs4_get_acl_uncach.patch + bugfix/all/hugetlb-fix-race-condition-in-hugetlb_fault.patch