* Re: 2.4.9-ac12 ppc ftr_fixup
[not found] ` <20783.998880477@kao2.melbourne.sgi.com>
@ 2001-08-27 3:04 ` Tom Rini
2001-08-27 3:13 ` Keith Owens
2001-08-27 3:45 ` Keith Owens
0 siblings, 2 replies; 7+ messages in thread
From: Tom Rini @ 2001-08-27 3:04 UTC (permalink / raw)
To: Keith Owens; +Cc: linuxppc-dev
[cc's trimmed]
On Mon, Aug 27, 2001 at 12:47:57PM +1000, Keith Owens wrote:
> On Sun, 26 Aug 2001 19:15:36 -0700,
> Tom Rini <trini@kernel.crashing.org> wrote:
> >On Mon, Aug 27, 2001 at 10:27:22AM +1000, Keith Owens wrote:
> >
> >> 2.4.9-ac12 has new ppc code for CPU feature fixups. The ftr_fixup code
> >> only handles entries that are built into the kernel. timex.h defines
> >> get_cycles() using ftr_fixup and get_cycles() is used all over the
> >> place, including in modules. AFAICT we need to add modutils support
> >> for ftr_fixup.
> >
> >Er, eh? Excuse me if I'm being obtuse, but where is the problem? The fixup
> >stuff is closely tied to bootup and what processor we happen to be on
> >at the time. So we won't be trying to fixup any code in a module...
>
> do_cpu_ftr_fixups() replaces unsupported code with NOP, based on the
> table from __start___ftr_fixup to __stop___ftr_fixup which contains all
> the data marked as section(__ftr_fixup). Fine, but it only handles
> section __ftr_fixup data in the kernel, it does not write NOP over
> __ftr_fixup data in modules. So any code marked as section __ftr_fixup
> in a module executes unchanged. Unless I am missing something, that is
> a problem.
After a bit more digging, I'm pretty sure it's not much of a problem.
get_cycles seems to be either a) SMP or b) DRM or c) arcnet related.
a and b aren't an issue for 601 (no SMP and possible but unlikely that
DRM will work on a machine w/ a 601). If there's an arcnet PCI card, I suppose
it could be an issue then... Anyhow...
--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.4.9-ac12 ppc ftr_fixup
2001-08-27 3:04 ` 2.4.9-ac12 ppc ftr_fixup Tom Rini
@ 2001-08-27 3:13 ` Keith Owens
2001-08-27 3:45 ` Keith Owens
1 sibling, 0 replies; 7+ messages in thread
From: Keith Owens @ 2001-08-27 3:13 UTC (permalink / raw)
To: Tom Rini; +Cc: linuxppc-dev
On Sun, 26 Aug 2001 20:04:04 -0700,
Tom Rini <trini@kernel.crashing.org> wrote:
>On Mon, Aug 27, 2001 at 12:47:57PM +1000, Keith Owens wrote:
>> do_cpu_ftr_fixups() replaces unsupported code with NOP, based on the
>> table from __start___ftr_fixup to __stop___ftr_fixup which contains all
>> the data marked as section(__ftr_fixup). Fine, but it only handles
>> section __ftr_fixup data in the kernel, it does not write NOP over
>> __ftr_fixup data in modules. So any code marked as section __ftr_fixup
>> in a module executes unchanged. Unless I am missing something, that is
>> a problem.
>
>After a bit more digging, I'm pretty sure it's not much of a problem.
>get_cycles seems to be either a) SMP or b) DRM or c) arcnet related.
>a and b aren't an issue for 601 (no SMP and possible but unlikely that
>DRM will work on a machine w/ a 601). If there's an arcnet PCI card, I suppose
>it could be an issue then... Anyhow...
It is more than just get_cycles(). Look at the places that ftr is used,
fgrep -r BEGIN_FTR_SECTION include/asm-ppc* arch/ppc*
If any of that code ends up in a module then the problem exists.
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.4.9-ac12 ppc ftr_fixup
2001-08-27 3:04 ` 2.4.9-ac12 ppc ftr_fixup Tom Rini
2001-08-27 3:13 ` Keith Owens
@ 2001-08-27 3:45 ` Keith Owens
2001-08-27 4:24 ` Tom Rini
1 sibling, 1 reply; 7+ messages in thread
From: Keith Owens @ 2001-08-27 3:45 UTC (permalink / raw)
To: Tom Rini; +Cc: linuxppc-dev
Please check that this patch against modutils 2.4.7 works. It puts the
ftr fixup data in the archdata section of PPC modules. Use
"insmod -nm -o blob module_name" to get a map and check that the
generated blob contains an archdata section containing the ftr fixup
pointers. Pick any module from 2.4.8-ac12 that contains ftr data,
something using get_cycles will do.
The kernel does not do anything with the ppc archdata from modules yet,
that is a separate patch.
Index: 8.5/obj/obj_ppc.c
--- 8.5/obj/obj_ppc.c Fri, 05 Jan 2001 12:45:19 +1100 kaos (modutils-2.4/c/11_obj_ppc.c 1.1 644)
+++ 8.5(w)/obj/obj_ppc.c Mon, 27 Aug 2001 13:38:47 +1000 kaos (modutils-2.4/c/11_obj_ppc.c 1.1 644)
@@ -249,7 +249,25 @@ arch_finalize_section_address(struct obj
}
int
-arch_archdata (struct obj_file *fin, struct obj_section *sec)
+arch_archdata (struct obj_file *f, struct obj_section *archdata_sec)
{
+ struct archdata {
+ unsigned tgt_long __start___ftr_fixup;
+ unsigned tgt_long __stop___ftr_fixup;
+ } *ad;
+ struct obj_section *sec;
+
+ if (archdata_sec->contents)
+ free(archdata_sec->contents);
+ archdata_sec->header.sh_size = 0;
+ sec = obj_find_section(f, "__ftr_fixup");
+ if (sec) {
+ ad = (struct archdata *) (archdata_sec->contents) = xmalloc(sizeof(*ad));
+ memset(ad, 0, sizeof(*ad));
+ archdata_sec->header.sh_size = sizeof(*ad);
+ ad->__start___ftr_fixup = sec->header.sh_addr;
+ ad->__stop___ftr_fixup = sec->header.sh_addr + sec->header.sh_size;
+ }
+
return 0;
}
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.4.9-ac12 ppc ftr_fixup
2001-08-27 3:45 ` Keith Owens
@ 2001-08-27 4:24 ` Tom Rini
2001-08-27 4:31 ` Keith Owens
0 siblings, 1 reply; 7+ messages in thread
From: Tom Rini @ 2001-08-27 4:24 UTC (permalink / raw)
To: Keith Owens; +Cc: linuxppc-dev
On Mon, Aug 27, 2001 at 01:45:51PM +1000, Keith Owens wrote:
> Please check that this patch against modutils 2.4.7 works. It puts the
> ftr fixup data in the archdata section of PPC modules. Use
> "insmod -nm -o blob module_name" to get a map and check that the
> generated blob contains an archdata section containing the ftr fixup
> pointers. Pick any module from 2.4.8-ac12 that contains ftr data,
> something using get_cycles will do.
Well, I attempted to anyhow. The get_cycles calls are protected w/
a define that's usually off (and some quick trying couldn't find the
right combo of defines to turn on and have it compile), so I hacked
drivers/char/drm/drm_context.h (this is based on Linus' tree, which is all
I've got right now, sorry) to blindly call get_cycles. Assuming that
r128_context_switch is the context_switch in drivers/char/drm/drm_context.h,
I had an __archdata section, but it was empty.
--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.4.9-ac12 ppc ftr_fixup
2001-08-27 4:24 ` Tom Rini
@ 2001-08-27 4:31 ` Keith Owens
2001-08-27 4:54 ` Tom Rini
0 siblings, 1 reply; 7+ messages in thread
From: Keith Owens @ 2001-08-27 4:31 UTC (permalink / raw)
To: Tom Rini; +Cc: linuxppc-dev
On Sun, 26 Aug 2001 21:24:15 -0700,
Tom Rini <trini@kernel.crashing.org> wrote:
>right combo of defines to turn on and have it compile), so I hacked
>drivers/char/drm/drm_context.h (this is based on Linus' tree, which is all
>I've got right now, sorry) to blindly call get_cycles. Assuming that
>r128_context_switch is the context_switch in drivers/char/drm/drm_context.h,
>I had an __archdata section, but it was empty.
Did the .o file have section __ftr_fixup? Use objdump -h. And did
insmod pick up that newly compile module or did it pick up the
installed version?
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.4.9-ac12 ppc ftr_fixup
2001-08-27 4:31 ` Keith Owens
@ 2001-08-27 4:54 ` Tom Rini
2001-08-27 5:10 ` Keith Owens
0 siblings, 1 reply; 7+ messages in thread
From: Tom Rini @ 2001-08-27 4:54 UTC (permalink / raw)
To: Keith Owens; +Cc: linuxppc-dev
On Mon, Aug 27, 2001 at 02:31:20PM +1000, Keith Owens wrote:
> On Sun, 26 Aug 2001 21:24:15 -0700,
> Tom Rini <trini@kernel.crashing.org> wrote:
> >right combo of defines to turn on and have it compile), so I hacked
> >drivers/char/drm/drm_context.h (this is based on Linus' tree, which is all
> >I've got right now, sorry) to blindly call get_cycles. Assuming that
> >r128_context_switch is the context_switch in drivers/char/drm/drm_context.h,
> >I had an __archdata section, but it was empty.
>
> Did the .o file have section __ftr_fixup? Use objdump -h. And did
> insmod pick up that newly compile module or did it pick up the
> installed version?
I guess I should go get some sleep now... __archdata is 8 not 0, but the
last section I see (insmod -nm ./r128.o > r128.out) is the .bss...
--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.4.9-ac12 ppc ftr_fixup
2001-08-27 4:54 ` Tom Rini
@ 2001-08-27 5:10 ` Keith Owens
0 siblings, 0 replies; 7+ messages in thread
From: Keith Owens @ 2001-08-27 5:10 UTC (permalink / raw)
To: Tom Rini; +Cc: linuxppc-dev
On Sun, 26 Aug 2001 21:54:36 -0700,
Tom Rini <trini@kernel.crashing.org> wrote:
>I guess I should go get some sleep now... __archdata is 8 not 0, but the
>last section I see (insmod -nm ./r128.o > r128.out) is the .bss...
There is no __insmod_modname_S symbol for __archdata. Use
insmod -nm -O blob ./r128.o
so insmod writes the binary object to blob. Because it also uses -n,
the address starts at an arbitrary 0x12340000. Get the address of
__archdata from the start of the map, and
objdump -b binary -s --adjust-vma=0x12340000 --start-addr=0x1234xxxx blob
0x1234xxxx is the start address of __archdata. Alas if __archdata is
all zeroes, objdump dumps nothing, you might have to use a lower start
address to see an all zero section. However __archdata should not be
zeroes, if it exists.
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2001-08-27 5:10 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20010826191536.C1481@cpe-24-221-152-185.az.sprintbbd.net>
[not found] ` <20783.998880477@kao2.melbourne.sgi.com>
2001-08-27 3:04 ` 2.4.9-ac12 ppc ftr_fixup Tom Rini
2001-08-27 3:13 ` Keith Owens
2001-08-27 3:45 ` Keith Owens
2001-08-27 4:24 ` Tom Rini
2001-08-27 4:31 ` Keith Owens
2001-08-27 4:54 ` Tom Rini
2001-08-27 5:10 ` Keith Owens
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).