twa is giant locked in 7-Current or everywhere?
scottl at samsco.org
Wed Aug 15 11:01:27 PDT 2007
The TWA driver uses an INTR_FAST handler, meaning that it forgoes the
traditional interrupt-thread model in FreeBSD. There are good and bad
tradeoffs with doing that, and I'm always happy to discuss the topic
in detail with those who are interested. In any case, most of the
codepaths inside of the driver were still covered by Giant, just not
the low-level interrupt handler.
In 7-CURRENT, I changed the CAM (SCSI) layer API a bit, and the TWA
driver was an unfortunate victim of the change. The easy fix was to
revert the interrupt handler to being fully Giant-covered. There should
be very little difference in actual performance unless the interrupt is
being shared with another device. Even then the difference should be
Pushing the TWA source forward so that it is Giant-free would be an
interesting task. Unfortunately, the existing code relies heavily on
spin locks, while CAM requires that Giant-free drivers use sleep locks.
Since this code is actively maintained by AMCC/3Ware, some amount of
coordination would be needed with them to ensure the changes are
Artem Kuchin wrote:
> When i installed twas driver on 6.2-STABLE it said
> i presumed that it measn that twa is giant-lock free.
> Now, after installing 7-CURRENT i see
> Aug 15 17:00:02 omni3 kernel: 3ware device driver for 9000 series
> storage controllers, version: 3.70.03.007
> Aug 15 17:00:02 omni3 kernel: twa0: <3ware 9000 series Storage
> Controller> port 0x3000-0x30ff mem
> 0x88000000-0x89ffffff,0x8a200000-0x8a200fff irq 16 at devic
> Aug 15 17:00:02 omni3 kernel: twa0: [GIANT-LOCKED]
> Aug 15 17:00:02 omni3 kernel: twa0: [ITHREAD]
> So, it says GIANT-LOCKED and then ITHREAD.
> Apparently, i have no real understaning what those words mean.
> COuld anyone explain the meaning of
> Giant-locked is self explanatory and.. bad.
> Thank you.
> freebsd-stable at freebsd.org mailing list
> To unsubscribe, send any mail to "freebsd-stable-unsubscribe at freebsd.org"
More information about the freebsd-stable