All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jean Delvare <khali@linux-fr.org>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: LKML <linux-kernel@vger.kernel.org>, Tejun Heo <htejun@gmail.com>,
	Jeff Garzik <jgarzik@redhat.com>,
	"Rafael J. Wysocki" <rjw@sisk.pl>,
	"H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [PATCH] DMI: allow omitting ident strings in DMI tables
Date: Thu, 3 Dec 2009 09:30:09 +0100	[thread overview]
Message-ID: <20091203093009.059197a6@hyperion.delvare> (raw)
In-Reply-To: <20091203031240.GB9121@core.coreip.homeip.net>

Hi Dmitry,

On Wed, 2 Dec 2009 19:12:40 -0800, Dmitry Torokhov wrote:
> The purpose of dmi->ident is twofold - it may be used by DMI callback
> functions when composing log messages; it is also used to determine
> end of DMI table in dmi_check_system() and dmi_first_match(). However,
> in case when callbacks are not interested in using ident at all it just
> wastes memory. Let's consider entries with empty ident but initialized
> first match slot as a valid entry and not as end-of-table marker.

You are free to use an empty string ("") as the ident. This will use
1 byte of memory, I'm sure you can afford it. struct dmi_system_id is
332 bytes large on 32-bit systems (344 on 64-bit systems), and we use
such an empty structure as the list terminator. So I really doubt we
care about the extra few bytes used by the ident strings.

> 
> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
> ---
> 
> CCed a few random people since they touched dmi code in the last few
> months...
> 
>  drivers/firmware/dmi_scan.c |   13 +++++++++++--
>  1 files changed, 11 insertions(+), 2 deletions(-)
> 
> 
> diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
> index 938100f..9116aa7 100644
> --- a/drivers/firmware/dmi_scan.c
> +++ b/drivers/firmware/dmi_scan.c
> @@ -440,6 +440,15 @@ static bool dmi_matches(const struct dmi_system_id *dmi)
>  }
>  
>  /**
> + *	dmi_is_end_of_table - check for end-of-table marker
> + *	@dmi: pointer to the dmi_system_id structure to check
> + */
> +static bool dmi_is_end_of_table(const struct dmi_system_id *dmi)
> +{
> +	return dmi->ident == NULL && dmi->matches[0].slot == DMI_NONE;

If you really want to allow for dmi->ident == NULL, then I guess you can
_only_ check for dmi->matches[0].slot == DMI_NONE. I can't think of any
legitimate use of DMI_NONE for a used slot. The only thing you have to
do then is to ensure that DMI_NONE = 0 in <linux/mod_devicetable.h>
(I'm not sure if any C standard guarantees that enums starts at 0.)

There's a possible optimization in dmi_matches(), BTW: DMI_NONE should
break, not continue.

-- 
Jean Delvare

  reply	other threads:[~2009-12-03  8:30 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-03  3:12 [PATCH] DMI: allow omitting ident strings in DMI tables Dmitry Torokhov
2009-12-03  8:30 ` Jean Delvare [this message]
2009-12-03  8:56   ` Dmitry Torokhov
2009-12-03  9:25     ` Jean Delvare
2009-12-04  7:34       ` Dmitry Torokhov
2009-12-04 16:19         ` Jean Delvare

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=20091203093009.059197a6@hyperion.delvare \
    --to=khali@linux-fr.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=hpa@zytor.com \
    --cc=htejun@gmail.com \
    --cc=jgarzik@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rjw@sisk.pl \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.