Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Jun 2014 10:49:39 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Attilio Rao <attilio@freebsd.org>
Cc:        "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "src-committers@freebsd.org" <src-committers@freebsd.org>
Subject:   Re: svn commit: r267651 - in head: share/man/man4 sys/dev/cpuctl sys/sys usr.sbin/cpucontrol
Message-ID:  <20140620074939.GE3991@kib.kiev.ua>
In-Reply-To: <CAJ-FndCBNXcfOJg=NBNjacigm57d6ojwJbdt4w5bA-TC5wLRFw@mail.gmail.com>
References:  <201406192154.s5JLsfed074305@svn.freebsd.org> <20140620040801.GA3991@kib.kiev.ua> <CAJ-FndCBNXcfOJg=NBNjacigm57d6ojwJbdt4w5bA-TC5wLRFw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
On Fri, Jun 20, 2014 at 08:12:59AM +0200, Attilio Rao wrote:
> On Fri, Jun 20, 2014 at 6:08 AM, Konstantin Belousov
> <kostikbel@gmail.com> wrote:
> > On Thu, Jun 19, 2014 at 09:54:41PM +0000, Attilio Rao wrote:
> >> Author: attilio
> >> Date: Thu Jun 19 21:54:41 2014
> >> New Revision: 267651
> >> URL: http://svnweb.freebsd.org/changeset/base/267651
> >>
> >> Log:
> >>   Following comments in r242565 add the possibility to specify ecx when
> >>   performing cpuid calls.
> >>   Add also a new way to specify the level type to cpucontrol(8) as
> >>   reported in the manpage.
> >>
> >>   Sponsored by:       EMC / Isilon storage division
> >>   Reviewed by:        bdrewery, gcooper
> >>   Testerd by: bdrewery
> >> Modified: head/sys/sys/cpuctl.h
> >> ==============================================================================
> >> --- head/sys/sys/cpuctl.h     Thu Jun 19 21:05:07 2014        (r267650)
> >> +++ head/sys/sys/cpuctl.h     Thu Jun 19 21:54:41 2014        (r267651)
> >> @@ -35,7 +35,8 @@ typedef struct {
> >>  } cpuctl_msr_args_t;
> >>
> >>  typedef struct {
> >> -     int             level;  /* CPUID level */
> >> +     int             level;          /* CPUID level */
> >> +     int             level_type;     /* CPUID level type */
> >>       uint32_t        data[4];
> >>  } cpuctl_cpuid_args_t;
> >>
> >> @@ -50,5 +51,6 @@ typedef struct {
> >>  #define      CPUCTL_UPDATE   _IOWR('c', 4, cpuctl_update_args_t)
> >>  #define      CPUCTL_MSRSBIT  _IOWR('c', 5, cpuctl_msr_args_t)
> >>  #define      CPUCTL_MSRCBIT  _IOWR('c', 6, cpuctl_msr_args_t)
> >> +#define      CPUCTL_CPUID_COUNT _IOWR('c', 7, cpuctl_cpuid_args_t)
> >>
> >>  #endif /* _CPUCTL_H_ */
> >
> > The cpuctl(4) is used by third-party code, and this change breaks its
> > ABI. The numeric value for CPUCTL_CPUID is changed, which means that
> > old binaries call non-existing ioctl now. This is at least a visible
> > breakage, since the argument for the ioctl changed the layout as well.
> >
> > The following patch restored the CPUCTL_CPUID for me.  I considered
> > naming its argument differently, instead of renaming the argument
> > of CPUCTL_CPUID_COUNT (which you tried to do ?), but decided not,
> > to preserve the API as well.
> 
> No, breaking the ABI is fine for -CURRENT so I don't see why we need the bloat.

No, breaking ABI is not fine at all, be it CURRENT or not. We try to
keep the ABI stable, doing costly measures like symbol versioning, where
applicable. Since this is a change to ABI for kernel interface, it
cannot be covered by symver tricks and must be done in kernel.

> I don't plan on MFC this patch. If I need to (or any user requests
> that) I will do with the appropriate ABI-compliant way (ie. adding a
> new argument like this one).

Besides the same-world ABI issue, people run jails with lower world
version on higher-versioned kernels.

[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBAgAGBQJTo+eSAAoJEJDCuSvBvK1BhtkP/3wjtCIEw8Z6uRnqTO2UWw13
i2BcuxRhWbAReZd9SS9I2y6hyu+T0vVKqxvNR4qwUTqBpfMF+kMs0IBt0XfORpph
Jg76/gaCqupSFUK5+uhqHRw7oeX/IZyUSUCq9f6Ktmqm7wNs6Q2OuFdpK54ZoVgF
/3MredFAbjhsed19lnyKUConGsHSIys34hYQm2S3JWco7jrNXT/tFBwU/qcA238k
TaXiRLCFqCjCuYQNECiDlH7cFKuWSLi+Hfsqf3cTLKxe5XmX0ed5TYt77PoNUVNl
o4sWNILiH6JJsZoRznnDEGyrwmPFrtPmbsfhLlmVr9Zn2cocpz//PR0K5Z68uEPf
k/ehOWu1ROh2KhEQAPN0gvirkUeJt6w4Fy/27ctf1wopUnw6w+7TUCTWG1ZqEvZp
kpJ8ooMi1kJQeOSXekG4JbOsAmff4laKOgRJ4kH7yGQkU2O3uyQMfXkx/hD09B8W
uYiWj/w0IGjlqgj8TFrh/T7K8yR/UFTghjgWhDqBj3F/JsDnu/dBq/CMEGFmG8QU
lJfJ0uJxYLBlDLy6ELSew98jbU8OdCDOCYAoh+g/cM0KuCob5BdbMvTOI3ipzM7Q
GSreOpzF1pmUWNiHp8bfyuIgU2t5Yv6vTSjMIPOkkZGutb3ukQCyFB7d7HrqpJ02
wbJGZhpjRyKQ+YJR64Cq
=MXxi
-----END PGP SIGNATURE-----

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