linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Greg Kroah-Hartman <greg@kroah.com>,
	Kyle McMartin <kyle@parisc-linux.org>,
	linuxppc-dev@ozlabs.org, Brice Goglin <brice@myri.com>,
	shaohua.li@intel.com, linux-pci@atrey.karlin.mff.cuni.cz,
	"David S. Miller" <davem@davemloft.net>
Subject: Re: [RFC/PATCH 0/16] Ops based MSI Implementation
Date: Mon, 29 Jan 2007 08:17:28 +1100	[thread overview]
Message-ID: <1170019048.26655.27.camel@localhost.localdomain> (raw)
In-Reply-To: <m1fy9uq3et.fsf@ebiederm.dsl.xmission.com>


> Yes of some form.  Although only needing 2 ops instead of 6 is still
> simpler.  Until we can agree on a point where the ops lookup is
> generic I don't see the point in placing it in generic code.

At least 4 actually, since we would need suspend/resume as well.
 
> In addition I am extremely uncomfortable with making the interface to
> the architecture any wider than we need it to be, as refactoring code
> across multiple architectures is hard as usually the developer does
> not have the hardware to touch all of the code that is touched.

The interface to the arch in our model is the function to get ops :-)
Most "normal" backends would just "plug" those ops with the provided
raw_ functions.

> The argument that we need to support what the RTAS is doing to support
> other hypervisors seems to be a fallacy.  What the RTAS is doing is
> not sane from a hardware standpoint, so I do not expect it from other
> virtualized/hypervisor style environments. 
>
> If the hardware provides capabilities to isolate the MSI messages
> properly it does not need to prevent us from touching the msi setup
> registers. 

It does isolate and it doesn't -prevent- config space access. However,
in order to enable MSIs, we have to configure the device -and- the IRQ
controller on the bus on which the device sits on, that is, to obtain
vectors from the HV, configure the controller to receive MSIs from that
device and route them to us, etc...., and the only API the HV provides
for doing so is that RTAS function that configures both in one call.

I don't see what's fundamentally wrong with that approach.

>  If the hardware does not isolate the MSI messages properly
> there is another problem.  Especially in the context of MSI-X where
> the registers can be in the middle of any mmio bar I do not see a sane
> way of keeping us from touching the hardware directly in the first
> place.

They are not blocked as I said above, at least not for most devices,
(though the controller/receiver side is). However, we don't have an API
to get the address/value to write into the device, nor to
configure/enable MSIs in the PIC. The only API we have is basically
called "change-msi" which can be use to enable MSI, MSI-X or disable
them (though we can provide how many we want to enable out of what is
requested by the device... we can't enable sparse MSI-X though, we can
only enable the N first ones).

> However it is quite likely that supporting the RTAS is not going to 
> require much code to support.  So I don't see an argument against not
> supporting the RTAS.

It would imply 2 or 3 more hooks at the toplevel... so we are going from
your 2 initial hooks to 4 (bcs we need to hook suspend/resume), now to 6
or 7.... 

> There is the additional problem in all of this that our interface for
> MSI-X to the drivers is quite likely the wrong interface.  I believe
> we will want to incrementally allocate more irqs at run time as there
> are work queues or the like which can be attached to them.  We can get
> there with the current vector allocator by freeing and reallocating
> all of the msi-x irqs when the driver wants more so the current
> interface will suffice but it is far from optimal.

Our hypervisor will not unfortunately let us do that. We can only use
RTAS "change-msi" to allocate more/less MSIs and that is disruptive of
the device function (we might lose pending interrupts when doing so, in
fact, in the initial HV interface definition, we could only do that with
the device actually disabled in the command register !).

In general, I'd rather have the device pre-allocate the MSI-X it needs,
though it can later on decide to use more or less.

Ben.

  reply	other threads:[~2007-01-28 21:17 UTC|newest]

Thread overview: 143+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-25  8:34 [RFC/PATCH 0/16] Ops based MSI Implementation Michael Ellerman
2007-01-25  8:34 ` [RFC/PATCH 1/16] Replace pci_msi_quirk with calls to pci_no_msi() Michael Ellerman
2007-01-25 22:33   ` patch msi-replace-pci_msi_quirk-with-calls-to-pci_no_msi.patch added to gregkh-2.6 tree gregkh
2007-01-25  8:34 ` [RFC/PATCH 2/16] Remove pci_scan_msi_device() Michael Ellerman
2007-01-25 22:33   ` patch msi-remove-pci_scan_msi_device.patch added to gregkh-2.6 tree gregkh
2007-01-25  8:34 ` [RFC/PATCH 3/16] Combine pci_(save|restore)_msi/msix_state Michael Ellerman
2007-01-25 22:33   ` patch msi-combine-pci__msi-msix_state.patch added to gregkh-2.6 tree gregkh
2007-01-25  8:34 ` [RFC/PATCH 5/16] Ops based MSI implementation Michael Ellerman
2007-01-25 21:52   ` Greg KH
2007-01-25 22:05     ` Roland Dreier
2007-01-25 22:10       ` Greg KH
2007-01-26  1:02     ` Michael Ellerman
2007-01-25  8:34 ` [RFC/PATCH 4/16] Abstract MSI suspend Michael Ellerman
2007-01-25 22:33   ` patch msi-abstract-msi-suspend.patch added to gregkh-2.6 tree gregkh
2007-01-28  8:27   ` [RFC/PATCH 4/16] Abstract MSI suspend Eric W. Biederman
2007-01-29  7:22     ` Michael Ellerman
2007-01-29  8:45       ` Eric W. Biederman
2007-01-29  9:47         ` Michael Ellerman
2007-01-29 16:52           ` Grant Grundler
2007-01-29 16:57             ` Roland Dreier
2007-01-29 17:02               ` Roland Dreier
2007-01-29 17:25                 ` Eric W. Biederman
2007-01-29 17:32                   ` Roland Dreier
2007-01-29 22:03               ` Grant Grundler
2007-01-29 17:20           ` Eric W. Biederman
2007-02-01  4:24       ` Greg KH
2007-01-25  8:34 ` [RFC/PATCH 6/16] Add bare metal MSI enable & disable routines Michael Ellerman
2007-01-26  5:35   ` Eric W. Biederman
2007-01-25  8:34 ` [RFC/PATCH 7/16] Rip out the existing powerpc msi stubs Michael Ellerman
2007-01-25  8:34 ` [RFC/PATCH 8/16] Enable MSI on Powerpc Michael Ellerman
2007-01-25  8:34 ` [RFC/PATCH 9/16] RTAS MSI implementation Michael Ellerman
2007-01-25  8:34 ` [RFC/PATCH 10/16] Add a pci_irq_fixup for MSI via RTAS Michael Ellerman
2007-01-25  8:34 ` [RFC/PATCH 11/16] Activate MSI via RTAS on pseries Michael Ellerman
2007-01-25  8:34 ` [RFC/PATCH 12/16] Tell firmware we support MSI Michael Ellerman
2007-01-25  8:34 ` [RFC/PATCH 13/16] MPIC MSI allocator Michael Ellerman
2007-01-25  8:34 ` [RFC/PATCH 15/16] Enable MSI mappings for MPIC Michael Ellerman
2007-01-25  8:34 ` [RFC/PATCH 14/16] MPIC MSI backend Michael Ellerman
2007-01-26  6:43   ` Grant Grundler
2007-01-26  7:02     ` Eric W. Biederman
2007-01-26  8:47       ` Segher Boessenkool
2007-01-26 16:32         ` Eric W. Biederman
2007-01-26 17:19           ` Grant Grundler
2007-01-26 17:56             ` Eric W. Biederman
2007-01-26 22:48               ` Benjamin Herrenschmidt
2007-01-27  7:01               ` Michael Ellerman
2007-01-26 22:40             ` Benjamin Herrenschmidt
2007-01-27  2:11               ` David Miller
2007-01-26 22:08           ` Benjamin Herrenschmidt
2007-01-27  6:54             ` Michael Ellerman
2007-01-26 20:50       ` Benjamin Herrenschmidt
2007-01-26 22:46       ` Paul Mackerras
2007-01-27  2:46         ` Eric W. Biederman
2007-01-27  3:02           ` David Miller
2007-01-27  4:28             ` Eric W. Biederman
2007-01-27 18:30         ` Grant Grundler
2007-01-27 20:02           ` Benjamin Herrenschmidt
2007-01-26 20:41     ` Benjamin Herrenschmidt
2007-01-26  9:11   ` Segher Boessenkool
2007-01-27  6:33     ` Michael Ellerman
2007-01-25  8:34 ` [RFC/PATCH 16/16] Activate MSI for the MPIC backend on U3 Michael Ellerman
2007-01-25 21:53 ` [RFC/PATCH 0/16] Ops based MSI Implementation Greg KH
2007-01-25 21:55   ` David Miller
2007-01-26  1:05     ` Michael Ellerman
2007-01-26  1:03   ` Michael Ellerman
2007-01-26  6:18 ` Eric W. Biederman
2007-01-26  6:56   ` Grant Grundler
2007-01-26  7:15     ` Eric W. Biederman
2007-01-26  7:48       ` Grant Grundler
2007-01-26 15:26         ` Eric W. Biederman
2007-01-26 21:58         ` Benjamin Herrenschmidt
2007-01-26  8:57     ` Segher Boessenkool
2007-01-26 17:27       ` Grant Grundler
2007-01-26 20:57     ` Benjamin Herrenschmidt
2007-01-26 21:24   ` Benjamin Herrenschmidt
2007-01-27  5:41   ` Michael Ellerman
2007-01-28  6:16     ` Eric W. Biederman
2007-01-28  8:12       ` Michael Ellerman
2007-01-28  8:36         ` Eric W. Biederman
2007-01-28 20:14           ` Benjamin Herrenschmidt
2007-01-28 20:53             ` Eric W. Biederman
2007-01-28 21:17               ` Benjamin Herrenschmidt [this message]
2007-01-28 22:36                 ` Eric W. Biederman
2007-01-28 23:17                   ` Benjamin Herrenschmidt
2007-01-28 23:38                     ` Eric W. Biederman
2007-01-28 23:51                       ` David Miller
2007-01-29  0:58                         ` Benjamin Herrenschmidt
2007-01-29  1:13                           ` David Miller
2007-01-29  3:17                             ` Benjamin Herrenschmidt
2007-01-29  4:19                               ` David Miller
2007-01-29  4:44                                 ` Benjamin Herrenschmidt
2007-01-29  5:46                             ` Eric W. Biederman
2007-01-29  6:08                               ` Benjamin Herrenschmidt
2007-01-31  6:52                           ` David Miller
2007-01-31  7:40                             ` Eric W. Biederman
2007-02-01  0:55                               ` David Miller
2007-01-29  0:26                       ` Benjamin Herrenschmidt
2007-01-29  0:59                       ` Michael Ellerman
2007-01-28 23:31                   ` David Miller
2007-01-28 23:59                     ` Benjamin Herrenschmidt
2007-01-28 23:26               ` David Miller
2007-01-28 23:25             ` David Miller
2007-01-27  4:59 ` Michael Ellerman
2007-01-28 19:40 ` [PATCH 0/6] MSI portability cleanups Eric W. Biederman
2007-01-28 19:42   ` [PATCH 1/6] msi: Kill msi_lookup_irq Eric W. Biederman
2007-01-28 19:44     ` [PATCH 2/6] msi: Remove msi_lock Eric W. Biederman
2007-01-28 19:45       ` [PATCH 3/6] msi: Fix msi_remove_pci_irq_vectors Eric W. Biederman
2007-01-28 19:47         ` [PATCH 4/6] msi: Remove attach_msi_entry Eric W. Biederman
2007-01-28 19:52           ` [PATCH 5/6] msi: Kill the msi_desc array Eric W. Biederman
2007-01-28 19:56             ` [PATCH 6/6] msi: Make MSI useable more architectures Eric W. Biederman
2007-02-01  6:08               ` patch msi-make-msi-useable-more-architectures.patch added to gregkh-2.6 tree gregkh
2007-02-01  6:07             ` patch msi-kill-the-msi_desc-array.patch " gregkh
2007-02-01  6:08           ` patch msi-remove-attach_msi_entry.patch " gregkh
2007-02-01  6:07         ` patch msi-fix-msi_remove_pci_irq_vectors.patch " gregkh
2007-02-01  6:08       ` patch msi-remove-msi_lock.patch " gregkh
2007-01-28 22:01     ` [PATCH 1/6] msi: Kill msi_lookup_irq Paul Mackerras
2007-01-28 22:18       ` Eric W. Biederman
2007-02-01  6:07     ` patch msi-kill-msi_lookup_irq.patch added to gregkh-2.6 tree gregkh
2007-01-28 20:23   ` [PATCH 0/6] MSI portability cleanups Benjamin Herrenschmidt
2007-01-28 20:47     ` Jeff Garzik
2007-01-28 21:20       ` Eric W. Biederman
2007-01-28 21:26         ` Ingo Molnar
2007-01-28 22:09         ` Benjamin Herrenschmidt
2007-01-28 23:26           ` Eric W. Biederman
2007-01-28 23:37             ` David Miller
2007-01-29  5:18               ` Eric W. Biederman
2007-01-29  5:25                 ` David Miller
2007-01-29  5:58                   ` Eric W. Biederman
2007-01-29  6:05                   ` Benjamin Herrenschmidt
2007-01-29  8:28                     ` Eric W. Biederman
2007-01-29  9:03                     ` Eric W. Biederman
2007-01-29 10:11                       ` Michael Ellerman
2007-01-29 20:32                         ` Benjamin Herrenschmidt
2007-01-29 23:29                         ` Paul Mackerras
2007-01-29 23:40                           ` Benjamin Herrenschmidt
2007-01-29 20:22                       ` Benjamin Herrenschmidt
2007-01-29 23:05                         ` Paul Mackerras
2007-01-30 19:32                           ` Segher Boessenkool
2007-01-29  1:33             ` Benjamin Herrenschmidt
2007-02-01  4:29           ` Greg KH
2007-01-28 23:44         ` David Miller
2007-01-28 22:11       ` Eric W. Biederman
2007-01-28 23:42       ` David Miller
2007-01-28 21:34     ` Eric W. Biederman

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=1170019048.26655.27.camel@localhost.localdomain \
    --to=benh@kernel.crashing.org \
    --cc=brice@myri.com \
    --cc=davem@davemloft.net \
    --cc=ebiederm@xmission.com \
    --cc=greg@kroah.com \
    --cc=kyle@parisc-linux.org \
    --cc=linux-pci@atrey.karlin.mff.cuni.cz \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=shaohua.li@intel.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).