Subject: Re: microcode driver for ia-32
To: Sascha Retzki <lantis@iqranet.info>
From: Bill Studenmund <wrstuden@netbsd.org>
List: tech-kern
Date: 08/08/2004 18:36:12
--6sX45UoQRIJXqkqR
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, Aug 06, 2004 at 07:18:03PM +0200, Sascha Retzki wrote:
> Am Fr, 2004-08-06 um 18.38 schrieb Bill Studenmund:
> > On Fri, Aug 06, 2004 at 04:13:58PM +0100, phlox wrote:
> > Further, there are systems out there with much more than 4 CPUs on them=
.=20
> > Higher-end iron can have 16 or 64 heads, and really-high end stuff can=
=20
> > have 512 or 1024 heads. It would be really really messy to have to have=
 a=20
> > node for each one.
> >=20
> I like the second, because of the "UNIX semantics". What about a
> directory ?

The important UNIX semantic is that everything is a file. :-) We are=20
preseving that.

I see a few problems with one node per CPU:

a) You have to have the node to perform the update. Say you update your=20
BIOS and it changes the CPU numbering. You now need different nodes to=20
update the microcode in your CPUs. Or you need nodes lying around just in=
=20
case something happens. Or say you just bought your second CPU. You have=20
to make the nodes before you can update new microcode. If you had just the=
=20
nodes you needed, you have to boot twice after you install the new CPU.

b) One big reason to have different nodes is because different users will=
=20
access the devices at once. I muttered on about this in my other note. We=
=20
will only have one user (root) accessing the microcode, and root will only=
=20
do it about once per boot (perhaps twice, if there is some sort of=20
microcode update and you want to try it w/o rebooting a server).

c) A follow-on to the above would be that with different device nodes we=20
can assign different permissions. So we can let user JimJoe directly=20
connect to one serial device while he can't access another. This=20
permission (which is also used for ownership of consoles) isn't needed for=
=20
microcode.

d) It's not obvious that the names we give CPUs are the names we want to=20
use as targets for microcode update. If you have hyperthreading on, a=20
given CPU showes up as two CPUs to the host OS. I don't think they both=20
need updating independantly; one operation should update both.

So I think it's simplest if we just leave the file system out of this one,=
=20
and have one node for microcode.

Take care,

Bill

--6sX45UoQRIJXqkqR
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (NetBSD)

iD8DBQFBFtULWz+3JHUci9cRAkxUAJoDDqWQKEFXtRPRUJewYaDgU8qtRgCfZAF1
ai6hvKKUVp7ztO6EG9RITX0=
=pjZv
-----END PGP SIGNATURE-----

--6sX45UoQRIJXqkqR--