From: Randolph Chung <randolph@tausq.org>
To: parisc-linux@lists.parisc-linux.org
Subject: [parisc-linux] memory mapping and sort_extable?
Date: Wed, 4 Feb 2004 01:43:59 -0800 [thread overview]
Message-ID: <20040204094358.GL959@tausq.org> (raw)
pa,
2.6.2-rc2 doesn't boot on my c3k when running 32-bit kernel and if
CONFIG_STI_CONSOLE is not enabled. The problem seems to be that for some
reason [*] when CONFIG_STI_CONSOLE is not defined, we map all kernel
memory as r/o, so when sort_extable (in lib/extable.c) tries to
rearrange our exception tables it writes to the kernel pages and faults.
interestingly, when building a 64-bit kernel with similar config options
i don't see a fault... maybe there is something else happening there.
From a cursory inspection, it appears that we never use to sort our
exception tables; dumping the extable from a vmlinux binary shows that
the entries are properly sorted at link time... but i haven't tried
this on modules to see if they are also sorted. Not sure how the
sorting is happening... does ld do it?
Anyway, the following patch trivially removes sort_extable for parisc
and lets the kernel boot. Not yet sure if it's correct. Does anyone
know?
[*] Why do we map kernel pages as read-only? is it just to be "extra
safe"?
randolph
Index: include/asm-parisc/uaccess.h
===================================================================
RCS file: /var/cvs/linux-2.6/include/asm-parisc/uaccess.h,v
retrieving revision 1.12
diff -u -p -r1.12 uaccess.h
--- include/asm-parisc/uaccess.h 28 Jan 2004 05:27:46 -0000 1.12
+++ include/asm-parisc/uaccess.h 4 Feb 2004 07:16:54 -0000
@@ -66,6 +66,8 @@ struct exception_table_entry {
long skip; /* pcoq skip | r9 clear flag | r8 -EFAULT flag */
};
+#define ARCH_HAS_SORT_EXTABLE
+
#define __get_user(x,ptr) \
({ \
register long __gu_err __asm__ ("r8") = 0; \
--- arch/parisc/mm/extable.c 2003-09-24 03:11:46.000000000 -0700
+++ arch/parisc/mm/extable.c 2004-02-03 22:58:41.000000000 -0800
@@ -0,0 +1,7 @@
+#include <asm/uaccess.h>
+
+void sort_extable(struct exception_table_entry *start,
+ struct exception_table_entry *finish)
+{
+}
+
Index: arch/parisc/mm/Makefile
===================================================================
RCS file: /var/cvs/linux-2.6/arch/parisc/mm/Makefile,v
retrieving revision 1.2
diff -u -p -r1.2 Makefile
--- arch/parisc/mm/Makefile 27 Jan 2004 18:44:34 -0000 1.2
+++ arch/parisc/mm/Makefile 4 Feb 2004 07:17:20 -0000
@@ -2,4 +2,4 @@
# Makefile for arch/parisc/mm
#
-obj-y := init.o fault.o ioremap.o
+obj-y := init.o fault.o ioremap.o extable.o
--
Randolph Chung
Debian GNU/Linux Developer, hppa/ia64 ports
http://www.tausq.org/
next reply other threads:[~2004-02-04 7:22 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-04 9:43 Randolph Chung [this message]
2004-02-04 15:04 ` [parisc-linux] memory mapping and sort_extable? James Bottomley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040204094358.GL959@tausq.org \
--to=randolph@tausq.org \
--cc=parisc-linux@lists.parisc-linux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox