summaryrefslogtreecommitdiffstats
path: root/hvcs_pi_buf_alloc.patch
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@redhat.com>2011-09-14 09:44:30 -0400
committerJosh Boyer <jwboyer@redhat.com>2011-09-14 09:44:57 -0400
commit86a04b430985ea2fd853d89cb2a30a3165775767 (patch)
tree8d784ad2d5feba3c0c08c253f7916bd467536045 /hvcs_pi_buf_alloc.patch
parent5f0e65d63df7b57fb0b2f064d66b3a1922dde0ef (diff)
downloadkernel-86a04b430985ea2fd853d89cb2a30a3165775767.tar.gz
kernel-86a04b430985ea2fd853d89cb2a30a3165775767.tar.xz
kernel-86a04b430985ea2fd853d89cb2a30a3165775767.zip
Add patch to fix POWER virtual serial driver (rhbz 738096)
Diffstat (limited to 'hvcs_pi_buf_alloc.patch')
-rw-r--r--hvcs_pi_buf_alloc.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/hvcs_pi_buf_alloc.patch b/hvcs_pi_buf_alloc.patch
new file mode 100644
index 000000000..ecabe49b1
--- /dev/null
+++ b/hvcs_pi_buf_alloc.patch
@@ -0,0 +1,43 @@
+
+The Power platform requires the partner info buffer to be page aligned
+otherwise it will fail the partner info hcall with H_PARAMETER. Switch
+from using kmalloc to allocate this buffer to __get_free_page to ensure
+page alignment.
+
+Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
+---
+
+ drivers/tty/hvc/hvcs.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff -puN drivers/tty/hvc/hvcs.c~hvcs_pi_buf_alloc drivers/tty/hvc/hvcs.c
+--- linux-2.6/drivers/tty/hvc/hvcs.c~hvcs_pi_buf_alloc 2011-09-09 16:00:25.000000000 -0500
++++ linux-2.6-bjking1/drivers/tty/hvc/hvcs.c 2011-09-09 16:07:08.000000000 -0500
+@@ -1532,7 +1532,7 @@ static int __devinit hvcs_initialize(voi
+ goto register_fail;
+ }
+
+- hvcs_pi_buff = kmalloc(PAGE_SIZE, GFP_KERNEL);
++ hvcs_pi_buff = (unsigned long *) __get_free_page(GFP_KERNEL);
+ if (!hvcs_pi_buff) {
+ rc = -ENOMEM;
+ goto buff_alloc_fail;
+@@ -1548,7 +1548,7 @@ static int __devinit hvcs_initialize(voi
+ return 0;
+
+ kthread_fail:
+- kfree(hvcs_pi_buff);
++ free_page((unsigned long)hvcs_pi_buff);
+ buff_alloc_fail:
+ tty_unregister_driver(hvcs_tty_driver);
+ register_fail:
+@@ -1597,7 +1597,7 @@ static void __exit hvcs_module_exit(void
+ kthread_stop(hvcs_task);
+
+ spin_lock(&hvcs_pi_lock);
+- kfree(hvcs_pi_buff);
++ free_page((unsigned long)hvcs_pi_buff);
+ hvcs_pi_buff = NULL;
+ spin_unlock(&hvcs_pi_lock);
+
+_