Subject: port-sparc64/37468: sparc64 trap/interrupt handling and kernel_lock
To: None <port-sparc64-maintainer@netbsd.org, gnats-admin@netbsd.org,>
From: None <ad@netbsd.org>
List: netbsd-bugs
Date: 12/03/2007 10:35:00
>Number: 37468
>Category: port-sparc64
>Synopsis: sparc64 trap/interrupt handling and kernel_lock
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: port-sparc64-maintainer
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon Dec 03 10:35:00 +0000 2007
>Originator: Andrew Doran
>Release: 4.99.39
>Organization:
The NetBSD Project
>Environment:
N/A
>Description:
The interrupt path on sparc64 doesn't seem to acquire kernel_lock.
Also the trap handler doesn't acquire it before calling uvm_fault().
>How-To-Repeat:
Code inspection.
>Fix:
For interrupts: acquire kernel_lock for interrupts registered at IPL_VM.
For trap handling: acquire kernel_lock before calling into UVM, or wait
until the vmlocking branch is merged into -current and do nothing.