SMP spinlocks forever while doing a put_user

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



So I've been doing some research into SMP on MIPS as I mentioned a while back, 
and as I think I mentioned, I've run into issues with put_user, well, not 
putting. In particular, I found that it was engaging in the classic SMP 
pastime of sitting in a spinlock forever, doing nothing.

My current configuration is one emulated 5kc with 64mb of emulated RAM. After 
adding some preliminary support to GXemul so that it can act as a GDB server, 
I managed to dig up the following backtrace before my crummy GDB server 
implementation blew up:

(gdb) bt
#0  0xffffffff8027f4b8 in _spin_lock (lock=0x3af0) at spinlock.h:60
#1  0xffffffff80194bac in handle_mm_fault (mm=0x3a80, vma=0x310948, 
address=64321698660352, write_access=0) at mm/memory.c:2029
Cannot access memory at address 0x81b758
(gdb)

In particular, line 2029 is the spinlock within the following snippet of code:
        /*
         * We need the page table lock to synchronize with kswapd
         * and the SMP-safe atomic PTE updates.
         */
        pgd = pgd_offset(mm, address);
        spin_lock(&mm->page_table_lock);

I'm not sure where this is being held that I'm not seeing it. I guess I should 
probably enable spinlock debugging, although I've tried that once in the past 
and gotten a total of zero spinlock-debug related messages. I'll give it 
another shot, in case I selected the wrong option or some such.

Does anyone have any insight as to what's going on here?

Thanks in advance,
joshua


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux