public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
From: ykzhao <yakui.zhao@intel.com>
To: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: "lenb@kernel.org" <lenb@kernel.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"minyard@acm.org" <minyard@acm.org>,
	"openipmi-developer@lists.sourceforge.net"
	<openipmi-developer@lists.sourceforge.net>
Subject: Re: [PATCH v4 1/2] IPMI/ACPI: use ACPI detection mechanism firstly to detect IPMI system interface
Date: Mon, 25 Jan 2010 14:37:04 +0800	[thread overview]
Message-ID: <1264401424.28311.60.camel@localhost.localdomain> (raw)
In-Reply-To: <201001220906.37404.bjorn.helgaas@hp.com>

On Sat, 2010-01-23 at 00:06 +0800, Bjorn Helgaas wrote:
> On Thursday 21 January 2010 06:15:00 pm ykzhao wrote:
> > On Thu, 2010-01-21 at 09:54 -0800, Bjorn Helgaas wrote:
> > > On Wednesday 20 January 2010 06:20:25 pm ykzhao wrote:
> > > > On Wed, 2010-01-20 at 09:51 -0700, Bjorn Helgaas wrote:
> > > > > On Monday 28 December 2009 06:44:19 pm yakui.zhao@intel.com wrote:
> > > > > > From: Zhao Yakui <yakui.zhao@intel.com>
> > > > > > 
> > > > > > Sometimes one IPMI system interface will be detected by several methods.
> > > > > > For example: ACPI mechanism, SPMI table, DMI or hardcode mechanism.
> > > > > > In such case when one IPMI system interface can be detected in two mechanism,
> > > > > > the second mechanism will fail in the detection and can't record which IPMI
> > > > > > system interface is detected by it.
> > > > > > 
> > > > > > Use the ACPI detection mechanism firstly to detect the IPMI system interface
> > > > > > so that we can know which IPMI system interface is detected in ACPI namespace.
> > > > > > 
> > > > > > Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
> > > > > > ---
> > > > > >  drivers/char/ipmi/ipmi_si_intf.c |    8 +++++---
> > > > > >  1 files changed, 5 insertions(+), 3 deletions(-)
> > > > > > 
> > > > > > diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
> > > > > > index 176f175..3f6ca11 100644
> > > > > > --- a/drivers/char/ipmi/ipmi_si_intf.c
> > > > > > +++ b/drivers/char/ipmi/ipmi_si_intf.c
> > > > > > @@ -3195,6 +3195,10 @@ static __devinit int init_ipmi_si(void)
> > > > > >  
> > > > > >  	printk(KERN_INFO "IPMI System Interface driver.\n");
> > > > > >  
> > > > > > +#ifdef CONFIG_ACPI
> > > > > > +	pnp_register_driver(&ipmi_pnp_driver);
> > > > > > +#endif
> > > > > > +
> > > > > >  	hardcode_find_bmc();
> > > > > 
> > > > > The usual practice is to handle devices explicitly specified by
> > > > > module parameters first.  That way, the driver should work with
> > > > > no module parameters in most cases, but the user can specify the
> > > > > device location manually if necessary to work around a firmware
> > > > > bug.
> > > > 
> > > > The reason I change the order of detecting IPMI device is that maybe one
> > > > IPMI device can be registered by several different mechanisms. When we
> > > > register one IPMI device by using try_smi_init, it will firstly check
> > > > whether the IPMI device is already registered by comparing the address.
> > > > 
> > > > If the IPMI device is already registered by another mechanism,  we can't
> > > > enable ACPI to access the IPMI device as we can't create the user
> > > > interface between ACPI and IPMI device.
> > > > 
> > > > If we add the module option to use the hardcode mechanism,  maybe we
> > > > will fail in detecting IPMI device by using ACPI mechanism. 
> > > > 
> > > > > For that reason, I would use this order instead:
> > > > > 
> > > > > 	hardcode_find_bmc();
> > > > > 	pnp_register_driver();
> > > > > 	...
> > > 
> > > I agree that pnp_register_driver() should be before spmi_find_bmc().
> > > 
> > > I agree that if we find an IPMI device based on module parameters,
> > > we likely won't be able to set up the IPMI opregion.  We shouldn't
> > > be using module parameters in the first place.  If we *are* using
> > > the module parameters, it's because the firmware is buggy.  I think
> > > it's perfectly fine if buggy firmware can't use the IPMI opregion.
> > > 
> > > Is that your concern, or did I miss the meaning of your email?
> > 
> > What you said is right. The above is my concern. The purpose of changing
> > the detection order is to assure that the opregion can be set up
> > correctly if the IPMI device can be detected by using ACPI mechanism. 
> 
> In my opinion, it's better to adhere to the common Linux pattern of
> "if the user explicitly specifies something with module parameters,
> that overrides anything the kernel would figure out by itself."

It looks reasonable. If the module parameter is treated as the highest
priority, I can put the ACPI detection after hardcode detection. 

thanks for pointing out this issue.
   Yakui.

> 
> If that means the opregion doesn't work when we use module parameters,
> I think we should just accept that.  Or you could do extra work inside
> ipmi_si_intf.c to deal with that situation.
> 
> Bjorn


  reply	other threads:[~2010-01-25  6:37 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-29  1:44 [PATCH v4 0/2] IPMI/ACPI: Install the ACPI IPMI opregion yakui.zhao
2009-12-29  1:44 ` [PATCH v4 1/2] IPMI/ACPI: use ACPI detection mechanism firstly to detect IPMI system interface yakui.zhao
2009-12-29  1:44   ` [PATCH v4 2/2] IPMI/ACPI: Install the IPMI space handler to enable ACPI to access the BMC controller yakui.zhao
2010-01-20 17:47     ` Bjorn Helgaas
2010-01-21  3:32       ` ykzhao
2010-01-20 16:51   ` [PATCH v4 1/2] IPMI/ACPI: use ACPI detection mechanism firstly to detect IPMI system interface Bjorn Helgaas
2010-01-21  1:20     ` ykzhao
2010-01-21 17:54       ` Bjorn Helgaas
2010-01-22  1:15         ` ykzhao
2010-01-22 16:06           ` Bjorn Helgaas
2010-01-25  6:37             ` ykzhao [this message]
  -- strict thread matches above, loose matches on Subject: below --
2009-12-18  7:56 [PATCH v4 0/2] IPMI/ACPI: Install the ACPI IPMI opregion yakui.zhao
2009-12-18  7:57 ` [PATCH v4 1/2] IPMI/ACPI: use ACPI detection mechanism firstly to detect IPMI system interface yakui.zhao

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=1264401424.28311.60.camel@localhost.localdomain \
    --to=yakui.zhao@intel.com \
    --cc=bjorn.helgaas@hp.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=minyard@acm.org \
    --cc=openipmi-developer@lists.sourceforge.net \
    /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