]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 6 Dec 2012 20:24:06 +0000 (12:24 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 6 Dec 2012 20:24:06 +0000 (12:24 -0800)
added patches:
0001-pnfsblock-fix-partial-page-buffer-wirte.patch
acpi-missing-break.patch
drm-i915-add-no-lvds-quirk-for-supermicro-x7spa-h.patch
i915-quirk-no_lvds-on-gigabyte-ga-d525tud-itx-motherboard.patch
kbuild-do-not-package-boot-and-lib-in-make-tar-pkg.patch
s390-mm-have-16-byte-aligned-struct-pages.patch

queue-3.4/0001-pnfsblock-fix-partial-page-buffer-wirte.patch [new file with mode: 0644]
queue-3.4/acpi-missing-break.patch [new file with mode: 0644]
queue-3.4/drm-i915-add-no-lvds-quirk-for-supermicro-x7spa-h.patch [new file with mode: 0644]
queue-3.4/i915-quirk-no_lvds-on-gigabyte-ga-d525tud-itx-motherboard.patch [new file with mode: 0644]
queue-3.4/kbuild-do-not-package-boot-and-lib-in-make-tar-pkg.patch [new file with mode: 0644]
queue-3.4/s390-mm-have-16-byte-aligned-struct-pages.patch [new file with mode: 0644]
queue-3.4/series

diff --git a/queue-3.4/0001-pnfsblock-fix-partial-page-buffer-wirte.patch b/queue-3.4/0001-pnfsblock-fix-partial-page-buffer-wirte.patch
new file mode 100644 (file)
index 0000000..670b938
--- /dev/null
@@ -0,0 +1,299 @@
+From bb51f7df0688f137998c3746705a346c7d8323c2 Mon Sep 17 00:00:00 2001
+From: Peng Tao <bergwolf@gmail.com>
+Date: Fri, 24 Aug 2012 00:27:51 +0800
+Subject: pnfsblock: fix partial page buffer wirte
+
+From: Peng Tao <bergwolf@gmail.com>
+
+commit fe6e1e8d9fad86873eb74a26e80a8f91f9e870b5 upstream.
+
+If applications use flock to protect its write range, generic NFS
+will not do read-modify-write cycle at page cache level. Therefore
+LD should know how to handle non-sector aligned writes. Otherwise
+there will be data corruption.
+
+Signed-off-by: Peng Tao <tao.peng@emc.com>
+Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/nfs/blocklayout/blocklayout.c |  176 ++++++++++++++++++++++++++++++++++++---
+ fs/nfs/blocklayout/blocklayout.h |    1 
+ 2 files changed, 165 insertions(+), 12 deletions(-)
+
+--- a/fs/nfs/blocklayout/blocklayout.c
++++ b/fs/nfs/blocklayout/blocklayout.c
+@@ -162,25 +162,39 @@ static struct bio *bl_alloc_init_bio(int
+       return bio;
+ }
+-static struct bio *bl_add_page_to_bio(struct bio *bio, int npg, int rw,
++static struct bio *do_add_page_to_bio(struct bio *bio, int npg, int rw,
+                                     sector_t isect, struct page *page,
+                                     struct pnfs_block_extent *be,
+                                     void (*end_io)(struct bio *, int err),
+-                                    struct parallel_io *par)
++                                    struct parallel_io *par,
++                                    unsigned int offset, int len)
+ {
++      isect = isect + (offset >> SECTOR_SHIFT);
++      dprintk("%s: npg %d rw %d isect %llu offset %u len %d\n", __func__,
++              npg, rw, (unsigned long long)isect, offset, len);
+ retry:
+       if (!bio) {
+               bio = bl_alloc_init_bio(npg, isect, be, end_io, par);
+               if (!bio)
+                       return ERR_PTR(-ENOMEM);
+       }
+-      if (bio_add_page(bio, page, PAGE_CACHE_SIZE, 0) < PAGE_CACHE_SIZE) {
++      if (bio_add_page(bio, page, len, offset) < len) {
+               bio = bl_submit_bio(rw, bio);
+               goto retry;
+       }
+       return bio;
+ }
++static struct bio *bl_add_page_to_bio(struct bio *bio, int npg, int rw,
++                                    sector_t isect, struct page *page,
++                                    struct pnfs_block_extent *be,
++                                    void (*end_io)(struct bio *, int err),
++                                    struct parallel_io *par)
++{
++      return do_add_page_to_bio(bio, npg, rw, isect, page, be,
++                                end_io, par, 0, PAGE_CACHE_SIZE);
++}
++
+ /* This is basically copied from mpage_end_io_read */
+ static void bl_end_io_read(struct bio *bio, int err)
+ {
+@@ -443,6 +457,107 @@ map_block(struct buffer_head *bh, sector
+       return;
+ }
++static void
++bl_read_single_end_io(struct bio *bio, int error)
++{
++      struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1;
++      struct page *page = bvec->bv_page;
++
++      /* Only one page in bvec */
++      unlock_page(page);
++}
++
++static int
++bl_do_readpage_sync(struct page *page, struct pnfs_block_extent *be,
++                  unsigned int offset, unsigned int len)
++{
++      struct bio *bio;
++      struct page *shadow_page;
++      sector_t isect;
++      char *kaddr, *kshadow_addr;
++      int ret = 0;
++
++      dprintk("%s: offset %u len %u\n", __func__, offset, len);
++
++      shadow_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
++      if (shadow_page == NULL)
++              return -ENOMEM;
++
++      bio = bio_alloc(GFP_NOIO, 1);
++      if (bio == NULL)
++              return -ENOMEM;
++
++      isect = (page->index << PAGE_CACHE_SECTOR_SHIFT) +
++              (offset / SECTOR_SIZE);
++
++      bio->bi_sector = isect - be->be_f_offset + be->be_v_offset;
++      bio->bi_bdev = be->be_mdev;
++      bio->bi_end_io = bl_read_single_end_io;
++
++      lock_page(shadow_page);
++      if (bio_add_page(bio, shadow_page,
++                       SECTOR_SIZE, round_down(offset, SECTOR_SIZE)) == 0) {
++              unlock_page(shadow_page);
++              bio_put(bio);
++              return -EIO;
++      }
++
++      submit_bio(READ, bio);
++      wait_on_page_locked(shadow_page);
++      if (unlikely(!test_bit(BIO_UPTODATE, &bio->bi_flags))) {
++              ret = -EIO;
++      } else {
++              kaddr = kmap_atomic(page);
++              kshadow_addr = kmap_atomic(shadow_page);
++              memcpy(kaddr + offset, kshadow_addr + offset, len);
++              kunmap_atomic(kshadow_addr);
++              kunmap_atomic(kaddr);
++      }
++      __free_page(shadow_page);
++      bio_put(bio);
++
++      return ret;
++}
++
++static int
++bl_read_partial_page_sync(struct page *page, struct pnfs_block_extent *be,
++                        unsigned int dirty_offset, unsigned int dirty_len,
++                        bool full_page)
++{
++      int ret = 0;
++      unsigned int start, end;
++
++      if (full_page) {
++              start = 0;
++              end = PAGE_CACHE_SIZE;
++      } else {
++              start = round_down(dirty_offset, SECTOR_SIZE);
++              end = round_up(dirty_offset + dirty_len, SECTOR_SIZE);
++      }
++
++      dprintk("%s: offset %u len %d\n", __func__, dirty_offset, dirty_len);
++      if (!be) {
++              zero_user_segments(page, start, dirty_offset,
++                                 dirty_offset + dirty_len, end);
++              if (start == 0 && end == PAGE_CACHE_SIZE &&
++                  trylock_page(page)) {
++                      SetPageUptodate(page);
++                      unlock_page(page);
++              }
++              return ret;
++      }
++
++      if (start != dirty_offset)
++              ret = bl_do_readpage_sync(page, be, start,
++                                        dirty_offset - start);
++
++      if (!ret && (dirty_offset + dirty_len < end))
++              ret = bl_do_readpage_sync(page, be, dirty_offset + dirty_len,
++                                        end - dirty_offset - dirty_len);
++
++      return ret;
++}
++
+ /* Given an unmapped page, zero it or read in page for COW, page is locked
+  * by caller.
+  */
+@@ -476,7 +591,6 @@ init_page_for_write(struct page *page, s
+       SetPageUptodate(page);
+ cleanup:
+-      bl_put_extent(cow_read);
+       if (bh)
+               free_buffer_head(bh);
+       if (ret) {
+@@ -547,6 +661,7 @@ bl_write_pagelist(struct nfs_write_data
+       struct parallel_io *par;
+       loff_t offset = wdata->args.offset;
+       size_t count = wdata->args.count;
++      unsigned int pg_offset, pg_len, saved_len;
+       struct page **pages = wdata->args.pages;
+       struct page *page;
+       pgoff_t index;
+@@ -651,10 +766,11 @@ next_page:
+               if (!extent_length) {
+                       /* We've used up the previous extent */
+                       bl_put_extent(be);
++                      bl_put_extent(cow_read);
+                       bio = bl_submit_bio(WRITE, bio);
+                       /* Get the next one */
+                       be = bl_find_get_extent(BLK_LSEG2EXT(wdata->lseg),
+-                                           isect, NULL);
++                                              isect, &cow_read);
+                       if (!be || !is_writable(be, isect)) {
+                               wdata->pnfs_error = -EINVAL;
+                               goto out;
+@@ -671,7 +787,26 @@ next_page:
+                       extent_length = be->be_length -
+                           (isect - be->be_f_offset);
+               }
+-              if (be->be_state == PNFS_BLOCK_INVALID_DATA) {
++
++              dprintk("%s offset %lld count %Zu\n", __func__, offset, count);
++              pg_offset = offset & ~PAGE_CACHE_MASK;
++              if (pg_offset + count > PAGE_CACHE_SIZE)
++                      pg_len = PAGE_CACHE_SIZE - pg_offset;
++              else
++                      pg_len = count;
++
++              saved_len = pg_len;
++              if (be->be_state == PNFS_BLOCK_INVALID_DATA &&
++                  !bl_is_sector_init(be->be_inval, isect)) {
++                      ret = bl_read_partial_page_sync(pages[i], cow_read,
++                                              pg_offset, pg_len, true);
++                      if (ret) {
++                              dprintk("%s bl_read_partial_page_sync fail %d\n",
++                                      __func__, ret);
++                              wdata->pnfs_error = ret;
++                              goto out;
++                      }
++
+                       ret = bl_mark_sectors_init(be->be_inval, isect,
+                                                      PAGE_CACHE_SECTORS);
+                       if (unlikely(ret)) {
+@@ -680,15 +815,33 @@ next_page:
+                               wdata->pnfs_error = ret;
+                               goto out;
+                       }
++
++                      /* Expand to full page write */
++                      pg_offset = 0;
++                      pg_len = PAGE_CACHE_SIZE;
++              } else if ((pg_offset & (SECTOR_SIZE - 1)) ||
++                          (pg_len & (SECTOR_SIZE - 1))) {
++                      /* ahh, nasty case. We have to do sync full sector
++                       * read-modify-write cycles.
++                       */
++                      unsigned int saved_offset = pg_offset;
++                      ret = bl_read_partial_page_sync(pages[i], be, pg_offset,
++                                                      pg_len, false);
++                      pg_offset = round_down(pg_offset, SECTOR_SIZE);
++                      pg_len = round_up(saved_offset + pg_len, SECTOR_SIZE)
++                               - pg_offset;
+               }
+-              bio = bl_add_page_to_bio(bio, wdata->npages - i, WRITE,
++              bio = do_add_page_to_bio(bio, wdata->npages - i, WRITE,
+                                        isect, pages[i], be,
+-                                       bl_end_io_write, par);
++                                       bl_end_io_write, par,
++                                       pg_offset, pg_len);
+               if (IS_ERR(bio)) {
+                       wdata->pnfs_error = PTR_ERR(bio);
+                       bio = NULL;
+                       goto out;
+               }
++              offset += saved_len;
++              count -= saved_len;
+               isect += PAGE_CACHE_SECTORS;
+               last_isect = isect;
+               extent_length -= PAGE_CACHE_SECTORS;
+@@ -706,17 +859,16 @@ next_page:
+       }
+ write_done:
+-      wdata->res.count = (last_isect << SECTOR_SHIFT) - (offset);
+-      if (count < wdata->res.count) {
+-              wdata->res.count = count;
+-      }
++      wdata->res.count = wdata->args.count;
+ out:
+       bl_put_extent(be);
++      bl_put_extent(cow_read);
+       bl_submit_bio(WRITE, bio);
+       put_parallel(par);
+       return PNFS_ATTEMPTED;
+ out_mds:
+       bl_put_extent(be);
++      bl_put_extent(cow_read);
+       kfree(par);
+       return PNFS_NOT_ATTEMPTED;
+ }
+--- a/fs/nfs/blocklayout/blocklayout.h
++++ b/fs/nfs/blocklayout/blocklayout.h
+@@ -41,6 +41,7 @@
+ #define PAGE_CACHE_SECTORS (PAGE_CACHE_SIZE >> SECTOR_SHIFT)
+ #define PAGE_CACHE_SECTOR_SHIFT (PAGE_CACHE_SHIFT - SECTOR_SHIFT)
++#define SECTOR_SIZE (1 << SECTOR_SHIFT)
+ struct block_mount_id {
+       spinlock_t                      bm_lock;    /* protects list */
diff --git a/queue-3.4/acpi-missing-break.patch b/queue-3.4/acpi-missing-break.patch
new file mode 100644 (file)
index 0000000..57f3e65
--- /dev/null
@@ -0,0 +1,31 @@
+From 879dca019dc43a1622edca3e7dde644b14b5acc5 Mon Sep 17 00:00:00 2001
+From: Alan Cox <alan@linux.intel.com>
+Date: Fri, 26 Oct 2012 01:05:56 +0200
+Subject: ACPI: missing break
+
+From: Alan Cox <alan@linux.intel.com>
+
+commit 879dca019dc43a1622edca3e7dde644b14b5acc5 upstream.
+
+We handle NOTIFY_THROTTLING so don't then fall through to unsupported event.
+
+Signed-off-by: Alan Cox <alan@linux.intel.com>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+
+---
+ drivers/acpi/processor_driver.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/acpi/processor_driver.c
++++ b/drivers/acpi/processor_driver.c
+@@ -407,6 +407,7 @@ static void acpi_processor_notify(struct
+               acpi_bus_generate_proc_event(device, event, 0);
+               acpi_bus_generate_netlink_event(device->pnp.device_class,
+                                                 dev_name(&device->dev), event, 0);
++              break;
+       default:
+               ACPI_DEBUG_PRINT((ACPI_DB_INFO,
+                                 "Unsupported event [0x%x]\n", event));
diff --git a/queue-3.4/drm-i915-add-no-lvds-quirk-for-supermicro-x7spa-h.patch b/queue-3.4/drm-i915-add-no-lvds-quirk-for-supermicro-x7spa-h.patch
new file mode 100644 (file)
index 0000000..c61df8d
--- /dev/null
@@ -0,0 +1,37 @@
+From c31407a3672aaebb4acddf90944a114fa5c8af7b Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Thu, 18 Oct 2012 21:07:01 +0100
+Subject: drm/i915: Add no-lvds quirk for Supermicro X7SPA-H
+
+From: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit c31407a3672aaebb4acddf90944a114fa5c8af7b upstream.
+
+Reported-and-tested-by: Francois Tigeot <ftigeot@wolfpond.org>
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55375
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/intel_lvds.c |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/gpu/drm/i915/intel_lvds.c
++++ b/drivers/gpu/drm/i915/intel_lvds.c
+@@ -793,6 +793,14 @@ static const struct dmi_system_id intel_
+                       DMI_MATCH(DMI_BOARD_NAME, "D525TUD"),
+               },
+       },
++      {
++              .callback = intel_no_lvds_dmi_callback,
++              .ident = "Supermicro X7SPA-H",
++              .matches = {
++                      DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"),
++                      DMI_MATCH(DMI_PRODUCT_NAME, "X7SPA-H"),
++              },
++      },
+       { }     /* terminating entry */
+ };
diff --git a/queue-3.4/i915-quirk-no_lvds-on-gigabyte-ga-d525tud-itx-motherboard.patch b/queue-3.4/i915-quirk-no_lvds-on-gigabyte-ga-d525tud-itx-motherboard.patch
new file mode 100644 (file)
index 0000000..2d76a8f
--- /dev/null
@@ -0,0 +1,46 @@
+From a51d4ed01e5bb39d2cf36a12f9976ab08872c192 Mon Sep 17 00:00:00 2001
+From: Calvin Walton <calvin.walton@kepstin.ca>
+Date: Fri, 24 Aug 2012 07:56:31 -0400
+Subject: i915: Quirk no_lvds on Gigabyte GA-D525TUD ITX motherboard
+
+From: Calvin Walton <calvin.walton@kepstin.ca>
+
+commit a51d4ed01e5bb39d2cf36a12f9976ab08872c192 upstream.
+
+This board is incorrectly detected as having an LVDS connector,
+resulting in the VGA output (the only available output on the board)
+showing the console only in the top-left 1024x768 pixels, and an extra
+LVDS connector appearing in X.
+
+It's a desktop Mini-ITX board using an Atom D525 CPU with an NM10
+chipset.
+
+I've had this board for about a year, but this is the first time I
+noticed the issue because I've been running it headless for most of its
+life.
+
+Signed-off-by: Calvin Walton <calvin.walton@kepstin.ca>
+Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/intel_lvds.c |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/gpu/drm/i915/intel_lvds.c
++++ b/drivers/gpu/drm/i915/intel_lvds.c
+@@ -785,6 +785,14 @@ static const struct dmi_system_id intel_
+                       DMI_MATCH(DMI_BOARD_NAME, "ZBOXSD-ID12/ID13"),
+               },
+       },
++      {
++              .callback = intel_no_lvds_dmi_callback,
++              .ident = "Gigabyte GA-D525TUD",
++              .matches = {
++                      DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co., Ltd."),
++                      DMI_MATCH(DMI_BOARD_NAME, "D525TUD"),
++              },
++      },
+       { }     /* terminating entry */
+ };
diff --git a/queue-3.4/kbuild-do-not-package-boot-and-lib-in-make-tar-pkg.patch b/queue-3.4/kbuild-do-not-package-boot-and-lib-in-make-tar-pkg.patch
new file mode 100644 (file)
index 0000000..74e725c
--- /dev/null
@@ -0,0 +1,36 @@
+From 0767530346a06285e2c34b239976dae1d0d3d621 Mon Sep 17 00:00:00 2001
+From: Michal Marek <mmarek@suse.cz>
+Date: Tue, 25 Sep 2012 16:03:03 +0200
+Subject: kbuild: Do not package /boot and /lib in make tar-pkg
+
+From: Michal Marek <mmarek@suse.cz>
+
+commit fe04ddf7c2910362f3817c8156e41cbd6c0ee35d upstream.
+
+There were reports of users destroying their Fedora installs by a kernel
+tarball that replaces the /lib -> /usr/lib symlink. Let's remove the
+toplevel directories from the tarball to prevent this from happening.
+
+Reported-by: Andi Kleen <andi@firstfloor.org>
+Suggested-by: Ben Hutchings <ben@decadent.org.uk>
+Signed-off-by: Michal Marek <mmarek@suse.cz>
+[bwh: Fold in commit 3ce9e53e788881da0d5f3912f80e0dd6b501f304 to avoid
+ conflicts]
+Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ scripts/package/buildtar |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/scripts/package/buildtar
++++ b/scripts/package/buildtar
+@@ -109,7 +109,7 @@ esac
+       if tar --owner=root --group=root --help >/dev/null 2>&1; then
+               opts="--owner=root --group=root"
+       fi
+-      tar cf - . $opts | ${compress} > "${tarball}${file_ext}"
++      tar cf - boot/* lib/* $opts | ${compress} > "${tarball}${file_ext}"
+ )
+ echo "Tarball successfully created in ${tarball}${file_ext}"
diff --git a/queue-3.4/s390-mm-have-16-byte-aligned-struct-pages.patch b/queue-3.4/s390-mm-have-16-byte-aligned-struct-pages.patch
new file mode 100644 (file)
index 0000000..564a01a
--- /dev/null
@@ -0,0 +1,42 @@
+From 4bffbb3455372a26816e364fb4448810f7014452 Mon Sep 17 00:00:00 2001
+From: Heiko Carstens <heiko.carstens@de.ibm.com>
+Date: Thu, 8 Nov 2012 14:18:47 +0100
+Subject: s390/mm: have 16 byte aligned struct pages
+
+From: Heiko Carstens <heiko.carstens@de.ibm.com>
+
+commit 4bffbb3455372a26816e364fb4448810f7014452 upstream.
+
+Select HAVE_ALIGNED_STRUCT_PAGE on s390, so that the slub allocator can make
+use of compare and swap double for lockless updates. This increases the size
+of struct page to 64 bytes (instead of 56 bytes), however the performance gain
+justifies the increased size:
+
+- now excactly four struct pages fit into a single cache line; the
+  case that accessing a struct page causes two cache line loads
+  does not exist anymore.
+- calculating the offset of a struct page within the memmap array
+  is only a simple shift instead of a more expensive multiplication.
+
+A "hackbench 200 process 200" run on a 32 cpu system did show an 8% runtime
+improvement.
+
+Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
+Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
+Signed-off-by: CAI Qian <caiqian@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/s390/Kconfig |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/s390/Kconfig
++++ b/arch/s390/Kconfig
+@@ -93,6 +93,7 @@ config S390
+       select ARCH_SAVE_PAGE_KEYS if HIBERNATION
+       select HAVE_MEMBLOCK
+       select HAVE_MEMBLOCK_NODE_MAP
++      select HAVE_ALIGNED_STRUCT_PAGE if SLUB
+       select ARCH_DISCARD_MEMBLOCK
+       select ARCH_INLINE_SPIN_TRYLOCK
+       select ARCH_INLINE_SPIN_TRYLOCK_BH
index 82f00b5b34c1ed6256ea5919d02da112da36a8b7..b6ad1b7baa241723fa55bb8c6e43721d4808c1e6 100644 (file)
@@ -12,3 +12,9 @@ md-raid10-close-race-that-lose-writes-lost-when-replacement-completes.patch
 i7300_edac-fix-error-flag-testing.patch
 revert-sched-autogroup-stop-going-ahead-if-autogroup-is-disabled.patch
 bnx2x-remove-redundant-warning-log.patch
+s390-mm-have-16-byte-aligned-struct-pages.patch
+acpi-missing-break.patch
+i915-quirk-no_lvds-on-gigabyte-ga-d525tud-itx-motherboard.patch
+drm-i915-add-no-lvds-quirk-for-supermicro-x7spa-h.patch
+0001-pnfsblock-fix-partial-page-buffer-wirte.patch
+kbuild-do-not-package-boot-and-lib-in-make-tar-pkg.patch