From: Greg KH <greg@kroah.com>
To: darnok@68k.org
Cc: linux-kernel@vger.kernel.org, pjones@redhat.com,
konradr@redhat.com, konradr@linux.vnet.ibm.com,
randy.dunlap@oracle.com, hpa@zytor.com, lenb@kernel.org,
mike.anderson@us.ibm.com, dwm@austin.ibm.com
Subject: Re: [PATCH] Add iSCSI IBFT Support (v0.3)
Date: Wed, 28 Nov 2007 11:45:43 -0800 [thread overview]
Message-ID: <20071128194543.GA2469@kroah.com> (raw)
In-Reply-To: <20071128192140.GB6736@andromeda.dapyr.net>
On Wed, Nov 28, 2007 at 03:21:40PM -0400, darnok@68k.org wrote:
> On Tue, Nov 27, 2007 at 11:09:19AM -0800, Greg KH wrote:
> > On Tue, Nov 27, 2007 at 02:09:50PM -0400, darnok@68k.org wrote:
> > > On Mon, Nov 26, 2007 at 09:29:55PM -0800, Greg KH wrote:
> > > > On Mon, Nov 26, 2007 at 11:23:31PM -0500, Konrad Rzeszutek wrote:
> > > > > On Monday 26 November 2007 22:31:38 Greg KH wrote:
> > > > > > > +#if defined(CONFIG_ISCSI_IBFT) || defined(CONFIG_ISCSI_IBFT_MODULE)
> > > > > ..snip..
> > > > > > > +static ssize_t find_ibft(void)
> > > > > > > +{
> > > > > ..snip..
> > > > > > > +}
> > > > > >
> > > > > > What is a function (not even an inline one) doing in a .h file?
> > > > >
> > > > > I was not sure where to put it. This function (find_ibft) is used by the
> > > > > setup_[32|64].c and the iscsi_ibft.c code. Randy suggested I put in .c file,
> > > > > but I am not sure exactly where? Should I make a new file in called
> > > > > libs/iscsi_ibft_helper.c ?
> > > >
> > > > Put it in your .c file and make it a global function to be called by
> > > > someone else if they need it.
> > >
> > > If the kernel is built with CONFIG_ISCSI_IBFT=m, the
> > > setup_[32|64],c code would depend on the 'find_ibft' symbol which is
> > > in a module (in the iscsi_ibft.c), which is not available during
> > > the bootup phase and not linked to vmlinuz.
> >
> > Ah, then don't allow that :)
> >
> > > This isn't an issue if the module is built with CONFIG_ISCSI_IBFT=y of
> > > course.
> > >
> > > Or did by 'your .c file' mean a new file in arch/x86/kernel directory?
> >
> > I didn't realize an external file, outside of your changes, needed this
> > function. If it does, then perhaps you need to just place it elsewhere.
>
> The fundamental problem is that 'find_ibft' ought to be available
> from anywhere (or at least from the iscsi_ibft.c) so that the iscsi_ibft
> module can be loaded on any platform. But on x86, it needs to be called
> from setup_[32|64].c because the IBFT can be located anywhere
> between 512KB and 1MB - and the E820 does not neccesarily have to
> exclude that region. Hence the patch I proposed implements a
> 'reserve_ibft_region' code which would reserve the region of memory
> found by 'find_ibft' so that it can be preserved when iscsi_ibft
> module is actually loaded.
>
> It ends up that there are three consumers of 'find_ibft':
> a) the module itself (iscsi_ibft.c)
> b) setup_32.c
> c) setup_64.c
>
> The first choice, which looked the most flexible, was to have it
> in iscsi_ibft.h file.
> The second one, which would inhibit the user from making iscsi_ibft
> a module, would be to move it to iscsi_ibft.c and make it
> EXPORT_SYMBOL(), but that seems wasteful from a memory foot-print
> look.
> A third option was to put in /lib, but that doesn't seem right - this
> 'find_ibft' code is specific to this module.
>
> Of all the options, the cleanest looks to be the first choice :-(
> (I am not trying to be obstinate here - I just can't think of any
> other reasonable place).
If you insist on putting it in a .h file, it needs to be marked "inline"
at the least.
But, why not just put it in a separate file, that is built in if the
user wants iscsi support? That way the setup code can call it properly
if needed.
thanks,
greg k-h
next prev parent reply other threads:[~2007-11-28 19:53 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-26 22:56 [PATCH] Add iSCSI IBFT Support (v0.3) Konrad Rzeszutek
2007-11-26 23:53 ` Randy Dunlap
2007-11-27 4:23 ` Konrad Rzeszutek
2007-11-27 3:23 ` Greg KH
2007-11-27 3:31 ` Greg KH
2007-11-27 4:12 ` Doug Maxey
2007-11-27 4:50 ` Konrad Rzeszutek
2007-11-27 5:28 ` Greg KH
2007-11-27 23:06 ` Arjan van de Ven
2007-11-29 15:36 ` darnok
2007-12-05 0:39 ` Konrad Rzeszutek
2007-11-27 4:23 ` Konrad Rzeszutek
2007-11-27 5:29 ` Greg KH
2007-11-27 18:09 ` darnok
2007-11-27 19:09 ` Greg KH
2007-11-28 19:21 ` darnok
2007-11-28 19:45 ` Greg KH [this message]
2007-11-28 20:24 ` darnok
2007-11-28 20:33 ` Greg KH
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=20071128194543.GA2469@kroah.com \
--to=greg@kroah.com \
--cc=darnok@68k.org \
--cc=dwm@austin.ibm.com \
--cc=hpa@zytor.com \
--cc=konradr@linux.vnet.ibm.com \
--cc=konradr@redhat.com \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mike.anderson@us.ibm.com \
--cc=pjones@redhat.com \
--cc=randy.dunlap@oracle.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;
as well as URLs for NNTP newsgroup(s).