Den tors 22 apr. 2021 kl 23:13 skrev Scott Bennett <sbennett1...@gmail.com>: > > Diff below remove the KERNEL_LOCK()/UNLOCK() dance from uvm_fault() for > > both amd64 and sparc64. That means the kernel lock will only be taken > > for lower faults and some amap/anon code will now run without it. > > > > I'd be interested to have this tested and see how much does that impact > > the build time of packages. > > > > We should be able to do the switch on an arch-by-arch basis. It's > > easier for me to develop & debug on these two architectures so I started > > with them. If you want to unlock another architecture and report back, > > I'd be glad. > > I'd be willing to test this on octeon. However, with my poor little EdgeRouter > Lite, I would only be able to test building a few packages. > > Would this be the correct diff for octeon?
Yes, there are a few more uvm_fault()s but those are in the parts relating to FPU emulation which I also didn't unlock but I am running exactly this on a few of my octeons too, without noticed issues. > pcb->pcb_onfault = 0; > - KERNEL_LOCK(); > rv = uvm_fault(kernel_map, va, 0, access_type); > - KERNEL_UNLOCK(); > pcb->pcb_onfault = onfault; > pcb->pcb_onfault = 0; > - KERNEL_LOCK(); > rv = uvm_fault(map, va, 0, access_type); > - KERNEL_UNLOCK(); > pcb->pcb_onfault = onfault; -- May the most significant bit of your life be positive.