Re: Killing Giant for 13

Warner Losh <[email protected]>
Newsgroups gmane.os.freebsd.architechture
Message-ID <CANCZdfrOg76REnzp=gR3zDy7f3uM8p6nE4nih1-EmGb0AbpSmg@mail.gmail.com>
On Tue, Jul 13, 2021 at 9:13 AM Hans Petter Selasky <[email protected]> wrote:

> Hi,
>
> I've been pondering with some ideas around Giant removal too.
>
> First of all, I think the first step getting rid of Giant, is to move
> all Giant usage related to newbus into two own global functions, so we
> can start working on what and how the device tree should be protected
> separately. Personally I would prefer a sleepable EPOCH (See
> https://reviews.freebsd.org/D30376), because that would interact nicely
> with freeing the device softc and other internal structures.
>

Yea, I'm unsure of epoch or smr is the right path forward here, but at
a high level, I'm thinking along the same lines as you are.


> void
> device_tree_lock()
> {
>      mtx_lock(&Giant);
> }
>
> void
> device_tree_unlock()
> {
>      mtx_unlock(&Giant);
> }
>

I have a tree with this change worked through already, though with a
different name. I've also pushed Giant down a bit in a few places too
in that tree.


> Secondly I think that if we can remove all code sleeping with Giant, so
> to speak, either by using msleep(&Giant) or by using M_NOWAIT, we can
> get rid of the DROP and PICKUP Giant macros, and get Giant out of the
> fast path in all of the kernel. Then if Giant i still around as a mutex,
> it won't have that much impact!
>
> Warner, what is the status of your Giant work?
>

Stalled a bit for want of time, and waiting on the big ball of goo that's
the x86 keyboard / console driver to reach some kind of resolution.

I posted https://reviews.freebsd.org/D23388 a while back, but got
bogged down removing the Giant requirement from device_busy
because there's a few infrequently used drivers that are tricky to
test that are using it. https://reviews.freebsd.org/D26284 has
the code to do that, but I think I got distracted by the quiesce
discussion which is a better way to cope, but again, involves a
number of infrequently used drivers.

Both of these reviews likely needs to be rebased, if I don't
happen to have them in a local git branch (they date from the dawn
of my git svn usage, so maybe got dropped along the way
by mistake).

Warner
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.