Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Jun 2011 15:53:10 +0200
From:      Attilio Rao <attilio@freebsd.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        src-committers@freebsd.org, Alan Cox <alc@freebsd.org>, svn-src-all@freebsd.org, "Bjoern A. Zeeb" <bz@freebsd.org>, Bruce Evans <brde@optusnet.com.au>, svn-src-head@freebsd.org
Subject:   Re: svn commit: r223307 - head/sys/vm
Message-ID:  <BANLkTinEg=h59RhrhnbGNRniyQ_Sn8W8SA@mail.gmail.com>
In-Reply-To: <201106220948.02421.jhb@freebsd.org>
References:  <201106191913.p5JJDOqJ006272@svn.freebsd.org> <BBC34F79-FFA7-4A05-83B3-DE17E0AB14D0@FreeBSD.org> <20110622063258.D2275@besplex.bde.org> <201106220948.02421.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
2011/6/22 John Baldwin <jhb@freebsd.org>:
> On Tuesday, June 21, 2011 4:58:10 pm Bruce Evans wrote:
>> On Tue, 21 Jun 2011, Bjoern A. Zeeb wrote:
>>
>> > On Jun 19, 2011, at 7:13 PM, Alan Cox wrote:
>> >
>> > Hi Alan,
>> >
>> >> Author: alc
>> >> Date: Sun Jun 19 19:13:24 2011
>> >> New Revision: 223307
>> >> URL: http://svn.freebsd.org/changeset/base/223307
>> >>
>> >> Log:
>> >> =C2=A0Precisely document the synchronization rules for the page's dir=
ty field.
>> >> =C2=A0(Saying that the lock on the object that the page belongs to mu=
st be held
>> >> =C2=A0only represents one aspect of the rules.)
>> >>
>> >> =C2=A0Eliminate the use of the page queues lock for atomically perfor=
ming read-
>> >> =C2=A0modify-write operations on the dirty field when the underlying =
architecture
>> >> =C2=A0supports atomic operations on char and short types.
>> >>
>> >> =C2=A0Document the fact that 32KB pages aren't really supported.
>> >
>> > contrary to the tinderbox I'd like to point out that all mips kernels =
built by universe are broken with a SVN HEAD from earlier today. =C2=A0Coul=
d
> you please check and see if you can fix it? =C2=A0The errors I get are:
>> >
>> > vm_page.o: In function `vm_page_clear_dirty':
>> > /sys/vm/vm_page.c:(.text+0x18d0): undefined reference to `atomic_clear=
_8'
>> > /sys/vm/vm_page.c:(.text+0x18d0): relocation truncated to fit: R_MIPS_=
26 against `atomic_clear_8'
>> > vm_page.o: In function `vm_page_set_validclean':
>> > /sys/vm/vm_page.c:(.text+0x38f0): undefined reference to `atomic_clear=
_8'
>> > /sys/vm/vm_page.c:(.text+0x38f0): relocation truncated to fit: R_MIPS_=
26 against `atomic_clear_8'
>>
>> Atomic types shorter than int cannot be used in MI code, since they migh=
t
>> not exist. =C2=A0Apparently they don't exist on mips. =C2=A0jake@ fixed =
all their
>> old uses for sparc4 in ~Y2K.
>
> I agree. =C2=A0Is there any harm in having the 'dirty' and 'valid' fields=
 in
> vm_page always be at least of size 'int'?
>
> In the case of amd64, vm_page would change from a size of 120 bytes to 12=
8.
>
> On i386 I think you'd end up changing the size from 68 to 76.
>
> (Using an int results in alignment padding after 'busy'.)
>
> Hmm, that's around 120k of extra vm_page_t space for a machine with 64M o=
f
> RAM, so around 0.18% of RAM would be used on both platforms (presumably t=
he
> usage would be similar on other platforms as well). =C2=A0At 24 GB of RAM=
, the
> extra space is just under 0.20% of RAM (48M).

I think that there is a bit of misunderstanding here.

The idea here is to use just the atomic 8bits for the architectures
that support it and otherwise use the vm_page_queue_lock.
Anyway, as not all the architectures have this implementation, rather
than replicate a lot of MD code to be used in MI, Alan just went with
an explicit stub, where necessary.

The real bug I see here is that we thought mips was supporting _8
atomic ops while it doesn't seem to be the case (sorry for being lazy
on checking, but I nearly have 0 time).

Attilio


--=20
Peace can only be achieved by understanding - A. Einstein



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BANLkTinEg=h59RhrhnbGNRniyQ_Sn8W8SA>