From: Greg Kroah-Hartman Date: Fri, 3 May 2013 02:30:13 +0000 (-0700) Subject: 3.0-stable patches X-Git-Tag: v3.0.77~47 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7cdeac1663fa505f4c8dc6c7d99948926b55683a;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0-stable patches added patches: powerpc-add-isync-to-copy_and_flush.patch powerpc-spufs-initialise-inode-i_ino-in-spufs_new_inode.patch --- diff --git a/queue-3.0/powerpc-add-isync-to-copy_and_flush.patch b/queue-3.0/powerpc-add-isync-to-copy_and_flush.patch new file mode 100644 index 00000000000..c40b92628c1 --- /dev/null +++ b/queue-3.0/powerpc-add-isync-to-copy_and_flush.patch @@ -0,0 +1,43 @@ +From 29ce3c5073057991217916abc25628e906911757 Mon Sep 17 00:00:00 2001 +From: Michael Neuling +Date: Wed, 24 Apr 2013 00:30:09 +0000 +Subject: powerpc: Add isync to copy_and_flush + +From: Michael Neuling + +commit 29ce3c5073057991217916abc25628e906911757 upstream. + +In __after_prom_start we copy the kernel down to zero in two calls to +copy_and_flush. After the first call (copy from 0 to copy_to_here:) +we jump to the newly copied code soon after. + +Unfortunately there's no isync between the copy of this code and the +jump to it. Hence it's possible that stale instructions could still be +in the icache or pipeline before we branch to it. + +We've seen this on real machines and it's results in no console output +after: + calling quiesce... + returning from prom_init + +The below adds an isync to ensure that the copy and flushing has +completed before any branching to the new instructions occurs. + +Signed-off-by: Michael Neuling +Signed-off-by: Benjamin Herrenschmidt +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/kernel/head_64.S | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/powerpc/kernel/head_64.S ++++ b/arch/powerpc/kernel/head_64.S +@@ -492,6 +492,7 @@ _GLOBAL(copy_and_flush) + sync + addi r5,r5,8 + addi r6,r6,8 ++ isync + blr + + .align 8 diff --git a/queue-3.0/powerpc-spufs-initialise-inode-i_ino-in-spufs_new_inode.patch b/queue-3.0/powerpc-spufs-initialise-inode-i_ino-in-spufs_new_inode.patch new file mode 100644 index 00000000000..545a3273bf5 --- /dev/null +++ b/queue-3.0/powerpc-spufs-initialise-inode-i_ino-in-spufs_new_inode.patch @@ -0,0 +1,34 @@ +From 6747e83235caecd30b186d1282e4eba7679f81b7 Mon Sep 17 00:00:00 2001 +From: Michael Ellerman +Date: Tue, 23 Apr 2013 15:13:14 +0000 +Subject: powerpc/spufs: Initialise inode->i_ino in spufs_new_inode() + +From: Michael Ellerman + +commit 6747e83235caecd30b186d1282e4eba7679f81b7 upstream. + +In commit 85fe402 (fs: do not assign default i_ino in new_inode), the +initialisation of i_ino was removed from new_inode() and pushed down +into the callers. However spufs_new_inode() was not updated. + +This exhibits as no files appearing in /spu, because all our dirents +have a zero inode, which readdir() seems to dislike. + +Signed-off-by: Michael Ellerman +Signed-off-by: Benjamin Herrenschmidt +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/platforms/cell/spufs/inode.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/powerpc/platforms/cell/spufs/inode.c ++++ b/arch/powerpc/platforms/cell/spufs/inode.c +@@ -100,6 +100,7 @@ spufs_new_inode(struct super_block *sb, + if (!inode) + goto out; + ++ inode->i_ino = get_next_ino(); + inode->i_mode = mode; + inode->i_uid = current_fsuid(); + inode->i_gid = current_fsgid(); diff --git a/queue-3.0/series b/queue-3.0/series index 451b06f0a0f..73d3e75f969 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -1,2 +1,4 @@ +powerpc-add-isync-to-copy_and_flush.patch +powerpc-spufs-initialise-inode-i_ino-in-spufs_new_inode.patch usb-serial-option-added-support-olivetti-olicard-145.patch usb-option-add-a-d-link-dwm-156-variant.patch