Skip to contentSkip to conversation

get/put_user() on SMP system

DISCUSSION Mark Hapke 1 participant 2 messages May 22, 2002 – May 23, 2002

lore
Share & tools
lore

Mark Hapke

author
#0 lore raw

Hello.

This posting is related to the one before ("put/get_user problems on SMP-System"). I am working on dual P3 system at 933Mhz with 1G RAM and a ServerWorks CNB20LE (rev 05) chipset. Kernel version is 2.4.9. The system is compatible to Intel MP Spec. 1.1.

The situation is that i want to copy several unsigned long value from my invoked ISR in kernel space to user space. The driver, in which the ISR is included, gets some pointers to indexes and these should be updated through the ISR. In this special case the ISR will definitly be running on another cpu then the process whose indexes should be updated. This does not work, only when ISR and process are executed on the same cpu.

Looking at the definition of
__put_user_asm(x, addr, err, itype, rtype, ltype)

I see no reason why this should not work (this is obviously my problem =:-)) Can someone help me here?

Thanks,
Mark

author
#1 lore raw

Hi.

i referred to posting that is not existent, sorry for that.

In the posting i mentioned that i receive error -14 (-EFAULT) telling me that the propper vma could not be found. This is confusing because it works when isr and process run on the same cpu, as allready noted below. Is it maybe related to the "current" process handling, since "current" is taken off the stack and is therefore local to the specific cpu?

Thanks,
Mark

PS I really need a hint, so if someone knows, please tell me.

Quoted 28 lines · Mark Hapke

Hello.

This posting is related to the one before ("put/get_user problems on SMP-System"). I am working on dual P3 system at 933Mhz with 1G RAM and a ServerWorks CNB20LE (rev 05) chipset. Kernel version is 2.4.9. The system is compatible to Intel MP Spec. 1.1.

The situation is that i want to copy several unsigned long value from my invoked ISR in kernel space to user space. The driver, in which the ISR is included, gets some pointers to indexes and these should be updated through the ISR. In this special case the ISR will definitly be running on another cpu then the process whose indexes should be updated. This does not work, only when ISR and process are executed on the same cpu.

Looking at the definition of
__put_user_asm(x, addr, err, itype, rtype, ltype)

I see no reason why this should not work (this is obviously my problem =:-)) Can someone help me here?

Thanks,
Mark

-
To unsubscribe from this list: send the line "unsubscribe linux-smp" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html