Roland Dreier <[email protected]> writes:
> While reading the MSI code trying to find a reason why MSI wouldn't
> work for devices that have a 32-bit MSI address capability, I noticed
> that read_msi_msg() seems to read the message data from the wrong
> offset in this case.
Doh! Sorry about that.
Acked-by: "Eric W. Biederman" <[email protected]>
> Signed-off-by: Roland Dreier <[email protected]>
> ---
> Unfortunately MSI still doesn't seem to work with Intel 945GM
> integrated graphics on my laptop, even with this fix....
>
> drivers/pci/msi.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
> index be1df85..87e0161 100644
> --- a/drivers/pci/msi.c
> +++ b/drivers/pci/msi.c
> @@ -132,7 +132,7 @@ void read_msi_msg(unsigned int irq, struct msi_msg *msg)
> pci_read_config_word(dev, msi_data_reg(pos, 1), &data);
> } else {
> msg->address_hi = 0;
> - pci_read_config_word(dev, msi_data_reg(pos, 1), &data);
> + pci_read_config_word(dev, msi_data_reg(pos, 0), &data);
> }
> msg->data = data;
> break;
> > While reading the MSI code trying to find a reason why MSI wouldn't
> > work for devices that have a 32-bit MSI address capability, I noticed
> > that read_msi_msg() seems to read the message data from the wrong
> > offset in this case.
>
> Doh! Sorry about that.
Doesn't matter, it wasn't the bug hitting me anyway :) the IRQ never
got affinity changed so read_msi_msg() never even got called.
I'm starting to think that Intel 945GM graphics just has a busted MSI
implementation, although there may be a bug hiding in the Linux code
that I'm not seeing.
- R.
Roland Dreier <[email protected]> writes:
> > > While reading the MSI code trying to find a reason why MSI wouldn't
> > > work for devices that have a 32-bit MSI address capability, I noticed
> > > that read_msi_msg() seems to read the message data from the wrong
> > > offset in this case.
> >
> > Doh! Sorry about that.
>
> Doesn't matter, it wasn't the bug hitting me anyway :) the IRQ never
> got affinity changed so read_msi_msg() never even got called.
>
> I'm starting to think that Intel 945GM graphics just has a busted MSI
> implementation, although there may be a bug hiding in the Linux code
> that I'm not seeing.
Well it is a bug worth fixing. Who knows it may have something
to do with the disable_irq problems the forcedeth driver was seeing.
Right now MSI is still sufficiently new that everyone is still getting
the bugs out of their implementations.
Eric
> Well it is a bug worth fixing. Who knows it may have something
> to do with the disable_irq problems the forcedeth driver was seeing.
I agree completely, the fix looks obvious and there's no point in
leaving the bug there. I just don't have a test case that I can point
to as being fixed by this, since I don't have a working 32-bit MSI
device...
Do you know whether the forcedeth devices have a 32-bit MSI address?
- R.
Roland Dreier <[email protected]> writes:
> > Well it is a bug worth fixing. Who knows it may have something
> > to do with the disable_irq problems the forcedeth driver was seeing.
>
> I agree completely, the fix looks obvious and there's no point in
> leaving the bug there. I just don't have a test case that I can point
> to as being fixed by this, since I don't have a working 32-bit MSI
> device...
>
> Do you know whether the forcedeth devices have a 32-bit MSI address?
Sorry I don't. The ones I have don't have an MSI capability.
Eric