Re: Need help with register_page_fault_notifier() replacement in2.6.24

From: Arjan van de Ven
Date: Sun Nov 18 2007 - 17:19:59 EST


On Sun, 18 Nov 2007 12:40:16 -0500
Pavel Roskin <proski@xxxxxxx> wrote:

> Hello!
>
> I'm trying to update a special tracing version of madwifi (driver for
> Atheros wireless cards) for Linux 2.6.24. This version was created to
> help reverse engineering the non-free part of the driver (also known
> as HAL, hardware abstraction layer).
>
> The problem is that functions register_page_fault_notifier() and
> unregister_page_fault_notifier() are gone in the current kernel git
> repository.
>
> They are needed to intercept access to the card by causing page fault
> and intercepting it.
>
> Those functions were removed on i386 platform because kprobes now
> registers the flat handler directly. The log says that other callers
> are supposed to use kprobes now.
>
> But what would be the right way to do it? I can intercept
> do_page_fault() with kprobes, but that looks unsafe, since
> do_page_fault() is used by kprobes internally.
>
> Or maybe I should install a fault handler with register_kprobe()? The
> problem is, it is only called for faults in kp->pre_handler and
> kp->post_handler and for single-stepping. I don't want to single-step
> anything, and moving all driver functionality in kp->pre_handler would
> be strange.
>
> Perhaps I'm missing something obvious. Any help will be appreciated.
>

if it's just for a custom case (as it sounds like).. a simple small
change to the pagefault handler sounds like the easiest thing to do...
(eg just a direct function call to what would have been your notifier)

--
If you want to reach me at my work email, use arjan@xxxxxxxxxxxxxxx
For development, discussion and tips for power savings,
visit http://www.lesswatts.org
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/