I am currently investigating FTBFS of gauche (a scheme interpreter) on
hppa.  My knowledge of hppa is quite limited, though.  I am not on
this list.  Please send Cc: to me.

I have a question of CAS implementation.  I assume uni processor
system.

I am looking at:
        linux-source-2.6.30/arch/parisc/kernel/syscall.S

----------------
        /*
                prev = *addr;
                if ( prev == old )
                  *addr = new;
                return prev;
        */
[...]
cas_action:
[...]
        /* The load and store could fail */
1:      ldw     0(%sr3,%r26), %r28
        sub,<>  %r28, %r25, %r0
2:      stw     %r24, 0(%sr3,%r26)
----------------

Suppose that <addr> points to copy-on-write memory.  At the label 2,
storing data to <addr> will invoke memory trap and it will go to
do_page_fault() to get new memory.  In this scenario, is there a
possibility for the process to be scheduled off?

Call chain in question is:
        do_page_fault()
          ->..-> do_wp_page()
            ->..-> __alloc_pages_internal() with GFP_HIGHUSER_MOVABLE
              ->..> schedule()

linux/gfp.h has the definition:
#define GFP_HIGHUSER_MOVABLE    (__GFP_WAIT | __GFP_IO | __GFP_FS | \
                                 __GFP_HARDWALL | __GFP_HIGHMEM | \
                                 __GFP_MOVABLE)
-- 


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]
Archive: http://lists.debian.org/[email protected]

Reply via email to