--- /dev/null
+From 72fca4a4b32dc778b5b885c3498700e42b610d49 Mon Sep 17 00:00:00 2001
+From: Jan Luebbe <jlu@pengutronix.de>
+Date: Mon, 4 Feb 2013 14:28:53 -0800
+Subject: drivers/rtc/rtc-isl1208.c: call rtc_update_irq() from the alarm irq handler
+
+From: Jan Luebbe <jlu@pengutronix.de>
+
+commit 72fca4a4b32dc778b5b885c3498700e42b610d49 upstream.
+
+Previously the alarm event was not propagated into the RTC subsystem.
+By adding a call to rtc_update_irq, this fixes a timeout problem with
+the hwclock utility.
+
+Signed-off-by: Jan Luebbe <jlu@pengutronix.de>
+Cc: Alessandro Zummo <a.zummo@towertech.it>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/rtc/rtc-isl1208.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/rtc/rtc-isl1208.c
++++ b/drivers/rtc/rtc-isl1208.c
+@@ -506,6 +506,7 @@ isl1208_rtc_interrupt(int irq, void *dat
+ {
+ unsigned long timeout = jiffies + msecs_to_jiffies(1000);
+ struct i2c_client *client = data;
++ struct rtc_device *rtc = i2c_get_clientdata(client);
+ int handled = 0, sr, err;
+
+ /*
+@@ -528,6 +529,8 @@ isl1208_rtc_interrupt(int irq, void *dat
+ if (sr & ISL1208_REG_SR_ALM) {
+ dev_dbg(&client->dev, "alarm!\n");
+
++ rtc_update_irq(rtc, 1, RTC_IRQF | RTC_AF);
++
+ /* Clear the alarm */
+ sr &= ~ISL1208_REG_SR_ALM;
+ sr = i2c_smbus_write_byte_data(client, ISL1208_REG_SR, sr);
--- /dev/null
+From e7e034e18a0ab6bafb2425c3242cac311164f4d6 Mon Sep 17 00:00:00 2001
+From: Haojian Zhuang <haojian.zhuang@linaro.org>
+Date: Mon, 4 Feb 2013 14:28:54 -0800
+Subject: drivers/rtc/rtc-pl031.c: fix the missing operation on enable
+
+From: Haojian Zhuang <haojian.zhuang@linaro.org>
+
+commit e7e034e18a0ab6bafb2425c3242cac311164f4d6 upstream.
+
+The RTC control register should be enabled in the process of
+initializing.
+
+Without this patch, I failed to enable RTC in Hisilicon Hi3620 SoC. The
+register mapping section in RTC is always read as zero. So I doubt that
+ST guys may already enable this register in bootloader. So they won't
+meet this issue.
+
+Signed-off-by: Haojian Zhuang <haojian.zhuang@linaro.org>
+Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
+Cc: Linus Walleij <linus.walleij@linaro.org>
+Cc: Alessandro Zummo <a.zummo@towertech.it>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/rtc/rtc-pl031.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+--- a/drivers/rtc/rtc-pl031.c
++++ b/drivers/rtc/rtc-pl031.c
+@@ -44,6 +44,7 @@
+ #define RTC_YMR 0x34 /* Year match register */
+ #define RTC_YLR 0x38 /* Year data load register */
+
++#define RTC_CR_EN (1 << 0) /* counter enable bit */
+ #define RTC_CR_CWEN (1 << 26) /* Clockwatch enable bit */
+
+ #define RTC_TCR_EN (1 << 1) /* Periodic timer enable bit */
+@@ -320,7 +321,7 @@ static int pl031_probe(struct amba_devic
+ struct pl031_local *ldata;
+ struct pl031_vendor_data *vendor = id->data;
+ struct rtc_class_ops *ops = &vendor->ops;
+- unsigned long time;
++ unsigned long time, data;
+
+ ret = amba_request_regions(adev, NULL);
+ if (ret)
+@@ -345,10 +346,11 @@ static int pl031_probe(struct amba_devic
+ dev_dbg(&adev->dev, "designer ID = 0x%02x\n", amba_manf(adev));
+ dev_dbg(&adev->dev, "revision = 0x%01x\n", amba_rev(adev));
+
++ data = readl(ldata->base + RTC_CR);
+ /* Enable the clockwatch on ST Variants */
+ if (vendor->clockwatch)
+- writel(readl(ldata->base + RTC_CR) | RTC_CR_CWEN,
+- ldata->base + RTC_CR);
++ data |= RTC_CR_CWEN;
++ writel(data | RTC_CR_EN, ldata->base + RTC_CR);
+
+ /*
+ * On ST PL031 variants, the RTC reset value does not provide correct
--- /dev/null
+From be7517d6ab9722f0abad6ba5ffd39cfced95549c Mon Sep 17 00:00:00 2001
+From: Tony Lu <zlu@tilera.com>
+Date: Mon, 4 Feb 2013 14:28:46 -0800
+Subject: mm/hugetlb: set PTE as huge in hugetlb_change_protection and remove_migration_pte
+
+From: Tony Lu <zlu@tilera.com>
+
+commit be7517d6ab9722f0abad6ba5ffd39cfced95549c upstream.
+
+When setting a huge PTE, besides calling pte_mkhuge(), we also need to
+call arch_make_huge_pte(), which we indeed do in make_huge_pte(), but we
+forget to do in hugetlb_change_protection() and remove_migration_pte().
+
+Signed-off-by: Zhigang Lu <zlu@tilera.com>
+Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
+Reviewed-by: Michal Hocko <mhocko@suse.cz>
+Acked-by: Hillf Danton <dhillf@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ mm/hugetlb.c | 1 +
+ mm/migrate.c | 4 +++-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+--- a/mm/hugetlb.c
++++ b/mm/hugetlb.c
+@@ -3028,6 +3028,7 @@ void hugetlb_change_protection(struct vm
+ if (!huge_pte_none(huge_ptep_get(ptep))) {
+ pte = huge_ptep_get_and_clear(mm, address, ptep);
+ pte = pte_mkhuge(pte_modify(pte, newprot));
++ pte = arch_make_huge_pte(pte, vma, NULL, 0);
+ set_huge_pte_at(mm, address, ptep, pte);
+ }
+ }
+--- a/mm/migrate.c
++++ b/mm/migrate.c
+@@ -143,8 +143,10 @@ static int remove_migration_pte(struct p
+ if (is_write_migration_entry(entry))
+ pte = pte_mkwrite(pte);
+ #ifdef CONFIG_HUGETLB_PAGE
+- if (PageHuge(new))
++ if (PageHuge(new)) {
+ pte = pte_mkhuge(pte);
++ pte = arch_make_huge_pte(pte, vma, new, 0);
++ }
+ #endif
+ flush_cache_page(vma, addr, pte_pfn(pte));
+ set_pte_at(mm, addr, ptep, pte);
--- /dev/null
+From a9bae189542e71f91e61a4428adf6e5a7dfe8063 Mon Sep 17 00:00:00 2001
+From: Vyacheslav Dubeyko <slava@dubeyko.com>
+Date: Mon, 4 Feb 2013 14:28:41 -0800
+Subject: nilfs2: fix fix very long mount time issue
+
+From: Vyacheslav Dubeyko <slava@dubeyko.com>
+
+commit a9bae189542e71f91e61a4428adf6e5a7dfe8063 upstream.
+
+There exists a situation when GC can work in background alone without
+any other filesystem activity during significant time.
+
+The nilfs_clean_segments() method calls nilfs_segctor_construct() that
+updates superblocks in the case of NILFS_SC_SUPER_ROOT and
+THE_NILFS_DISCONTINUED flags are set. But when GC is working alone the
+nilfs_clean_segments() is called with unset THE_NILFS_DISCONTINUED flag.
+As a result, the update of superblocks doesn't occurred all this time
+and in the case of SPOR superblocks keep very old values of last super
+root placement.
+
+SYMPTOMS:
+
+Trying to mount a NILFS2 volume after SPOR in such environment ends with
+very long mounting time (it can achieve about several hours in some
+cases).
+
+REPRODUCING PATH:
+
+1. It needs to use external USB HDD, disable automount and doesn't
+ make any additional filesystem activity on the NILFS2 volume.
+
+2. Generate temporary file with size about 100 - 500 GB (for example,
+ dd if=/dev/zero of=<file_name> bs=1073741824 count=200). The size of
+ file defines duration of GC working.
+
+3. Then it needs to delete file.
+
+4. Start GC manually by means of command "nilfs-clean -p 0". When you
+ start GC by means of such way then, at the end, superblocks is updated
+ by once. So, for simulation of SPOR, it needs to wait sometime (15 -
+ 40 minutes) and simply switch off USB HDD manually.
+
+5. Switch on USB HDD again and try to mount NILFS2 volume. As a
+ result, NILFS2 volume will mount during very long time.
+
+REPRODUCIBILITY: 100%
+
+FIX:
+
+This patch adds checking that superblocks need to update and set
+THE_NILFS_DISCONTINUED flag before nilfs_clean_segments() call.
+
+Reported-by: Sergey Alexandrov <splavgm@gmail.com>
+Signed-off-by: Vyacheslav Dubeyko <slava@dubeyko.com>
+Tested-by: Vyacheslav Dubeyko <slava@dubeyko.com>
+Acked-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
+Tested-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/nilfs2/ioctl.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/fs/nilfs2/ioctl.c
++++ b/fs/nilfs2/ioctl.c
+@@ -664,8 +664,11 @@ static int nilfs_ioctl_clean_segments(st
+ if (ret < 0)
+ printk(KERN_ERR "NILFS: GC failed during preparation: "
+ "cannot read source blocks: err=%d\n", ret);
+- else
++ else {
++ if (nilfs_sb_need_update(nilfs))
++ set_nilfs_discontinued(nilfs);
+ ret = nilfs_clean_segments(inode->i_sb, argv, kbufs);
++ }
+
+ nilfs_remove_all_gcinodes(nilfs);
+ clear_nilfs_gc_running(nilfs);
x86-64-replace-left-over-sti-cli-in-ia32-audit-exit-code.patch
sched-rt-use-root_domain-of-rt_rq-not-current-processor.patch
mtd-davinci_nand-fix-modular-build-with-config_of-y.patch
+nilfs2-fix-fix-very-long-mount-time-issue.patch
+mm-hugetlb-set-pte-as-huge-in-hugetlb_change_protection-and-remove_migration_pte.patch
+drivers-rtc-rtc-isl1208.c-call-rtc_update_irq-from-the-alarm-irq-handler.patch
+drivers-rtc-rtc-pl031.c-fix-the-missing-operation-on-enable.patch