mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Rodolfo Giometti <giometti@enneenne.com>
Cc: linux-kernel@vger.kernel.org, linuxpps@ml.enneenne.com,
	Greg KH <greg@kroah.com>
Subject: Re: [PATCH 1/1] LinuxPPS: Pulse per Second support for Linux
Date: Fri, 11 May 2007 23:17:11 -0700	[thread overview]
Message-ID: <20070511231711.21b8a334.akpm@linux-foundation.org> (raw)
In-Reply-To: <20070512055935.GD979@enneenne.com>

On Fri, 11 May 2007 23:55:37 +0200
Rodolfo Giometti <giometti@enneenne.com> wrote:

> Hello,
> 
> here my new patch with a lot of fixes.
> 
> The only issue not still fixed is the one related with:
> 
> 	#define NETLINK_PPSAPI          20
> 
> I need time to resolve it.
> 
> Follows my comments and then the patch, hope now I can came back into
> -mm tree again! :)

Well I suppose I could toss it in there for a bit of review-and-test.  But
I'll need to drop it again because we do need to split this patch into the series
of patches, please.

You should do this earlier rather than later because it improves reviewability.

> > - This:
> > 
> > 	static void pps_class_release(struct class_device *cdev)
> > 	{
> > 		/* Nop??? */
> > 	}
> > 
> >   is a bug and it earns you a nastygram from Greg.  These objects must be
> >   dynamically allocated - this is not optional.
> 
> It could be acceptable defining this function as void?

No, it needs to be a proper release function, like all the other ones
around the place.

This comes up again and again and again and I recently asked Greg to direct
me to (or to write) suitable documentation, and I think he did, but I lost
it.  Greg, can you remind us please?

> >   We have a bunch of code in random other drivers which is dependent upon
> >   CONFIG_PPS_CLIENT_foo.  The problem is that if a kernel was compiled with
> >   CONFIG_PPS_CLIENT_foo=n and then the pps driver is later built for that
> >   kernel, it won't actually work because lp, serial etc weren't correctly
> >   configured when _they_ were built.
> > 
> >   This sort of cross-module coupling is considered to be a bad thing, but
> >   I'm not really sure it's all that important.
> >
> > - Please split the patch up into a series of patches: one for pps core and
> >   one for each of the clients (servers?): one for lp, one for serial, etc.
> > 
> >   Try to arrange for that series of patches to build and run at each stage
> >   of application.
> > 
> >   Please don't lose my changes when you do so ;)
> > 
> >   Please review the changes I made and a) stick to the same style and b) fix
> >   up any sites which I missed.
> > 
> > - Please remove all the typedefs:
> > 
> > +typedef struct ntp_fp {
> > +typedef union pps_timeu {
> > +typedef struct pps_info {
> > +typedef struct pps_params {
> > 
> >   and just use `struct ntp_fp' everywhere.
> 
> Those typedefs are defined in PPS specifications (please, see RFC 2783).

We don't use typedefs in-kernel.  Please convert the code to use `struct
ntp_fp' everywhere.

For RFC compatibility to userspace you can do

#ifndef __KERNEL__
typedef struct ntp_fp ntp_fp_t;
...
#endif

> > - The above four structures are communicated with userspace, yes?
> > 
> >   I believe that they will not work correctly when 32-bit userspace is
> >   communicating with a 64-bit kernel.  Alignments change and sizeof(long)
> >   changes.
> > 
> >   You don't want to have to write compat code.  I suggest that you redo
> >   those structures in terms of __u32, __u64, etc.  You probably need to use
> >   attribute((packed)) too, not sure.
> > 
> >   Then let's get that part carefully reviewed (Arnd Bergmann <arnd@arndb.de>
> >   is my go-to guru on this) and please test it carefully.
> > 
> >   Yeah, you just haven't got a chance that something as huge and as complex
> >   as struct pps_netlink_msg will survive the 32->64 transition.
> 
> The same as above. These structure are fixed by RFC 2783.

Your answer has no relationship to my question.

The problem here is that under a 64-bit kernel we require that applications
which use this structure definition work correctly when they are compiled
to generate 32-bit code and when they are compiled to generate 64-bit code.

Furthermore we should aim to to have to code work correctly across
different version of the compiler, and when different compiler options are
used, and when altogether different compilers are used.

It is not clear to me that your definition is sufficiently defensive
against _any_ of these things.

> > - Please ensure that `make headers_check' passes OK (you'll hear from me if
> >   it doesn't ;))
> 
> Done.
> 
> > - Can we get rid of the private dbg, err and info macros?  Surely there are
> >   generic ones somewhere.
> 
> They are very useful to LinuxPPS users who can enable/disable them by
> configuration menu.

You misunderstand.  I'm not saying "remove the callsites".  I'm saying
"remove the definitions".

Because we already have things like pr_debug() and pr_info(), so new code
should use those rather than reinventing them.

Plus, we already have at least 52 different implementations of "dbg" in the
tree and your 53rd one didn't compile because it clashed with someone
else's.  This is the compiler sending us a message: "use the exiting
infrastructure".   If that infrastructure is insufficient then let's
improve it.


  reply	other threads:[~2007-05-12  6:18 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-21  7:41 Rodolfo Giometti
2007-03-21  8:05 ` Jon K Hellan
2007-03-21  8:08   ` Rodolfo Giometti
2007-03-21 15:34   ` Lennart Sorensen
2007-03-21 16:55 ` [LinuxPPS] " Reg Clemens
2007-03-21 20:36   ` Rodolfo Giometti
2007-03-21 22:35     ` Reg Clemens
2007-04-26 21:01       ` Rodolfo Giometti
2007-05-02 19:33 ` Rodolfo Giometti
2007-05-02 21:06   ` john stultz
2007-05-03 10:03     ` Rodolfo Giometti
2007-05-10  7:27   ` Andrew Morton
2007-05-10  9:48     ` Andrew Morton
2007-05-10 10:58     ` Rodolfo Giometti
2007-05-10 11:01       ` David Miller
2007-05-10 11:45         ` Rodolfo Giometti
2007-05-10 11:51           ` David Miller
2007-05-10 11:54             ` David Miller
2007-05-11  0:30         ` Info about the new netlink layer userland API Rodolfo Giometti
2007-05-12  5:59     ` [PATCH 1/1] LinuxPPS: Pulse per Second support for Linux Rodolfo Giometti
2007-05-12  6:17       ` Andrew Morton [this message]
2007-05-12  7:08         ` Greg KH
  -- strict thread matches above, loose matches on Subject: below --
2007-02-16 18:52 Rodolfo Giometti
2007-02-16 19:12 ` Russell King
2007-02-16 20:43   ` Rodolfo Giometti
2007-02-16 20:51     ` Russell King
2007-02-16 21:03       ` Rodolfo Giometti
2007-02-16 19:56 ` Jan Dittmer
2007-02-16 20:57   ` Rodolfo Giometti
2007-02-16 21:19     ` Jan Dittmer
2007-02-20  2:56 ` H. Peter Anvin
2007-02-21 12:04   ` Rodolfo Giometti
2007-02-21 16:14     ` H. Peter Anvin
2007-02-22  8:51       ` Rodolfo Giometti
2007-02-21 23:51     ` Roman Zippel
2007-02-22  9:00       ` Rodolfo Giometti
2007-02-21 10:16 ` Pavel Machek
2007-02-22  9:59   ` Rodolfo Giometti
2007-03-13 21:38 ` Rodolfo Giometti
2007-03-13 22:48   ` Lennart Sorensen
2007-03-14  9:31     ` Rodolfo Giometti
2007-03-14 13:19       ` Lennart Sorensen
2007-03-14 14:06         ` Rodolfo Giometti
2007-03-14 14:12           ` Lennart Sorensen
2007-03-14 14:27             ` Rodolfo Giometti
2007-03-14 14:42               ` Lennart Sorensen
2007-03-14 14:52                 ` Rodolfo Giometti
2007-03-14 15:37                   ` Lennart Sorensen
2007-03-14 15:47                     ` Rodolfo Giometti
2007-03-14 20:57                       ` Lennart Sorensen
2007-03-15 10:29                         ` Rodolfo Giometti
2007-03-15 15:18                           ` Lennart Sorensen
2007-03-15 15:37                             ` Rodolfo Giometti

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070511231711.21b8a334.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=giometti@enneenne.com \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxpps@ml.enneenne.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome