IRC channel logs

2022-10-09.log

back to list of logs

<damo22>youpi: could it be that we need the spls to be different levels again?
<damo22>splvm may need to be used to distinguish the priority of the threading?
<damo22>* Before attempting to acquire the update lock on a pmap, a cpu (A) must
<damo22>* be at least at the priority of the interprocessor interrupt
<damo22>* (splip<=splvm). Otherwise, A could grab a lock and be interrupted by a
<damo22>* kernel update; it would spin forever in pmap_update_interrupt() trying
<damo22>* to acquire the user pmap lock it had already acquired.
<damo22>Pellescours: did you test with apic (not my branch)?
<damo22>i think i have a fix if it hangs
<damo22>start acpi: acpi Kernel Page fault trap, eip 0xc1008e4e
<damo22>kernel: Page fault (14), code=2
<damo22>Stopped at update_ktss_iopb+0x9e: movw %si,0x66(%eax)
<damo22>update_ktss_iopb(fa6a2000,2000,f4843f00,c106d259)+0x9e
<damo22>i386_io_perm_modify(f484edd0,f484fc20,1,f60b3000,f60b3000)+0x12a
<damo22>_Xi386_io_perm_modify(f60b3010,fa69e010,f4843f60,c101936d,f60b3000)+0x55
<damo22>ipc_kobject_server(f60b3000,f4856ee0,f483df78,0)+0x92
<damo22>mach_msg_trap(bffffdc4,3,28,20,7)+0xb9d
<damo22>i wrote some code to update the ktss on other cpus running the same task when the iopb changes
<damo22>and added some locks
<damo22>but it seems to crash i think because its not making a copy of the iopb ?
<youpi>damo22: disabling interrupts is still enough to avoid letting the IPI call pmap_update_interrupt
<damo22>cli ?
<damo22>do you mean calling cli stops IPI?
<damo22>im trying to figure out this ktss issue now
<damo22>TLB shootdowns is a separate problem
<youpi>I don't think IPI would be a non-maskable interrupt, yes
<damo22>thats interesting, i can look into enabling interrupts before sending the IPI
<youpi>IPIs are just routed like other hardware interrupts, aren't they?
<damo22>not really, they go through the lapic instead of the ioapic or pic
<youpi>sure but I mean software-wise
<damo22>yes
<damo22>i encoded it as vector 0xfb like the linux kernel
<damo22>for calling a single function
<damo22>is current_thread()->processor_set the processor set for a task?
<damo22>i dont understand how a thread can have multiple cpus
<damo22>i want to get a list of cpus for the current task
<youpi>it's not "have multiple cpus", but "be allowed to run on a given set of cpus"
<damo22>oh
<damo22>i am trying to get a list of the processors currently running a particular task
<youpi>simpler will probably to rather loop over processors and check if its current thread is part of your task
<youpi>+be
<damo22>ok
<damo22>thx
<damo22>processor->next_thread ?
<damo22>thread_select.part.0.constprop.0(0,0,0,0,0)+0xc9
<damo22>thread_block(c1061b30,f484c000,f4845ee0,c1061721)+0x4f
<damo22>i think the problem is: splsched() used to block interrupts from happening when threads were being swapped
<Pellescours>damo22: last time I tried with apic (master branch), there was issue with interrupt being lost or something like that.
***ay is now known as Andrew
<iska>damo22 how close are you now?
<robfree>hello
<robfree>I'm interested in operative systems and I'm wondering if anyone has a tip for me to start learning about operative systems? I have gotten Andrew's book about operative systems, but I'm not sure if it's too old for today's operative systems reality
<robfree>(Andrew Tanenbaum)
<youpi>robfree: it's not too old, all its principles still apply today
<robfree>youpi: great, thanks for the info. I will read into it then