Guenter Roeck | 9 Jul 22:24 2013
Picon

WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar with Intel Motherboard

I started seeing this problem after updating the BIOS trying fix another issue,
though I may have missed it earlier.

I understand this is a BIOS bug. Would be great if someone can pass this on
to Intel BIOS engineers.

CPU is i7-4770K.

Guenter

---

[    0.000000] WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar+0x86/0xa0()
[    0.000000] Your BIOS is broken; DMAR reported at address 0!
[    0.000000] BIOS vendor: Intel Corp.; Ver: RLH8710H.86A.0320.2013.0606.1802; Product Version:
[    0.000000] Modules linked in:
[    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.10.0+ #1
[    0.000000] Hardware name:                  /DH87RL, BIOS RLH8710H.86A.0320.2013.0606.1802 06/06/2013
[    0.000000]  000000000000000b ffffffff81c01e20 ffffffff81671cfc ffffffff81c01e68
[    0.000000]  ffffffff81c01e58 ffffffff81043370 ffffffff81f6800c ffffffff81cbb520
[    0.000000]  0000000000000000 ffff88061fdaad40 00000000c73cc018 ffffffff81c01eb8
[    0.000000] Call Trace:
[    0.000000]  [<ffffffff81671cfc>] dump_stack+0x45/0x56
[    0.000000]  [<ffffffff81043370>] warn_slowpath_common+0x70/0xa0
[    0.000000]  [<ffffffff81043404>] warn_slowpath_fmt_taint+0x44/0x50
[    0.000000]  [<ffffffff81d162eb>] ? early_ioremap+0x13/0x15
[    0.000000]  [<ffffffff81d0d6a6>] ? __acpi_map_table+0x13/0x1a
[    0.000000]  [<ffffffff81548bf6>] warn_invalid_dmar+0x86/0xa0
[    0.000000]  [<ffffffff81d4b994>] check_zero_address+0x57/0xf7
[    0.000000]  [<ffffffff81d4ba49>] detect_intel_iommu+0x15/0xb6
(Continue reading)

Bjorn Helgaas | 9 Jul 23:05 2013
Picon

Re: WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar with Intel Motherboard

[+cc Joerg, David, iommu list]

On Tue, Jul 9, 2013 at 2:24 PM, Guenter Roeck <linux@...> wrote:
> I started seeing this problem after updating the BIOS trying fix another issue,
> though I may have missed it earlier.
>
> I understand this is a BIOS bug. Would be great if someone can pass this on
> to Intel BIOS engineers.

Maybe.  It'd be nice if Linux handled it better, though.

> CPU is i7-4770K.
>
> Guenter
>
> ---
>
> [    0.000000] WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar+0x86/0xa0()
> [    0.000000] Your BIOS is broken; DMAR reported at address 0!
> [    0.000000] BIOS vendor: Intel Corp.; Ver: RLH8710H.86A.0320.2013.0606.1802; Product Version:
> [    0.000000] Modules linked in:
> [    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.10.0+ #1
> [    0.000000] Hardware name:                  /DH87RL, BIOS RLH8710H.86A.0320.2013.0606.1802 06/06/2013
> [    0.000000]  000000000000000b ffffffff81c01e20 ffffffff81671cfc ffffffff81c01e68
> [    0.000000]  ffffffff81c01e58 ffffffff81043370 ffffffff81f6800c ffffffff81cbb520
> [    0.000000]  0000000000000000 ffff88061fdaad40 00000000c73cc018 ffffffff81c01eb8
> [    0.000000] Call Trace:
> [    0.000000]  [<ffffffff81671cfc>] dump_stack+0x45/0x56
> [    0.000000]  [<ffffffff81043370>] warn_slowpath_common+0x70/0xa0
> [    0.000000]  [<ffffffff81043404>] warn_slowpath_fmt_taint+0x44/0x50
(Continue reading)

Guenter Roeck | 10 Jul 00:31 2013
Picon

Re: WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar with Intel Motherboard

On Tue, Jul 09, 2013 at 03:05:39PM -0600, Bjorn Helgaas wrote:
> [+cc Joerg, David, iommu list]
> 
> On Tue, Jul 9, 2013 at 2:24 PM, Guenter Roeck <linux <at> roeck-us.net> wrote:
> > I started seeing this problem after updating the BIOS trying fix another issue,
> > though I may have missed it earlier.
> >
> > I understand this is a BIOS bug. Would be great if someone can pass this on
> > to Intel BIOS engineers.
> 
> Maybe.  It'd be nice if Linux handled it better, though.
> 
If anyone has an idea how to do that, I'll be happy to write a patch.

Guenter

> > CPU is i7-4770K.
> >
> > Guenter
> >
> > ---
> >
> > [    0.000000] WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar+0x86/0xa0()
> > [    0.000000] Your BIOS is broken; DMAR reported at address 0!
> > [    0.000000] BIOS vendor: Intel Corp.; Ver: RLH8710H.86A.0320.2013.0606.1802; Product Version:
> > [    0.000000] Modules linked in:
> > [    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.10.0+ #1
> > [    0.000000] Hardware name:                  /DH87RL, BIOS RLH8710H.86A.0320.2013.0606.1802 06/06/2013
> > [    0.000000]  000000000000000b ffffffff81c01e20 ffffffff81671cfc ffffffff81c01e68
> > [    0.000000]  ffffffff81c01e58 ffffffff81043370 ffffffff81f6800c ffffffff81cbb520
(Continue reading)

Chris Wright | 10 Jul 01:22 2013

Re: WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar with Intel Motherboard

* Guenter Roeck (linux@...) wrote:
> On Tue, Jul 09, 2013 at 03:05:39PM -0600, Bjorn Helgaas wrote:
> > [+cc Joerg, David, iommu list]
> > 
> > On Tue, Jul 9, 2013 at 2:24 PM, Guenter Roeck <linux@...> wrote:
> > > I started seeing this problem after updating the BIOS trying fix another issue,
> > > though I may have missed it earlier.
> > >
> > > I understand this is a BIOS bug. Would be great if someone can pass this on
> > > to Intel BIOS engineers.
> > 
> > Maybe.  It'd be nice if Linux handled it better, though.
> > 
> If anyone has an idea how to do that, I'll be happy to write a patch.

I'm not sure there's much you can do.  The BIOS is saying there's a DMAR
unit, and then saying the registers are at addr 0x0.  The kernel is
simply warning you about the invalid DMAR table entry.

One thing I've seen is the BIOS zeroing the base register address when
VT-d is disabled in BIOS.  So, Guenter, a "fix" may be simply enabling
VT-d in the BIOS.

thanks,
-chris
Guenter Roeck | 10 Jul 01:43 2013
Picon

Re: WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar with Intel Motherboard

On Tue, Jul 09, 2013 at 04:22:52PM -0700, Chris Wright wrote:
> * Guenter Roeck (linux@...) wrote:
> > On Tue, Jul 09, 2013 at 03:05:39PM -0600, Bjorn Helgaas wrote:
> > > [+cc Joerg, David, iommu list]
> > > 
> > > On Tue, Jul 9, 2013 at 2:24 PM, Guenter Roeck <linux@...> wrote:
> > > > I started seeing this problem after updating the BIOS trying fix another issue,
> > > > though I may have missed it earlier.
> > > >
> > > > I understand this is a BIOS bug. Would be great if someone can pass this on
> > > > to Intel BIOS engineers.
> > > 
> > > Maybe.  It'd be nice if Linux handled it better, though.
> > > 
> > If anyone has an idea how to do that, I'll be happy to write a patch.
> 
> I'm not sure there's much you can do.  The BIOS is saying there's a DMAR
> unit, and then saying the registers are at addr 0x0.  The kernel is
> simply warning you about the invalid DMAR table entry.
> 
> One thing I've seen is the BIOS zeroing the base register address when
> VT-d is disabled in BIOS.  So, Guenter, a "fix" may be simply enabling
> VT-d in the BIOS.
> 
Ah, yes, I think I may have that disabled. I'll check it tonight.

Does that really warrant a traceback, or would a warning message be more
appropriate (possibly telling the user to enable VT-d) ?

Thanks,
(Continue reading)

Chris Wright | 10 Jul 02:05 2013

Re: WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar with Intel Motherboard

* Guenter Roeck (linux@...) wrote:
> On Tue, Jul 09, 2013 at 04:22:52PM -0700, Chris Wright wrote:
> > * Guenter Roeck (linux@...) wrote:
> > > On Tue, Jul 09, 2013 at 03:05:39PM -0600, Bjorn Helgaas wrote:
> > > > [+cc Joerg, David, iommu list]
> > > > 
> > > > On Tue, Jul 9, 2013 at 2:24 PM, Guenter Roeck <linux@...> wrote:
> > > > > I started seeing this problem after updating the BIOS trying fix another issue,
> > > > > though I may have missed it earlier.
> > > > >
> > > > > I understand this is a BIOS bug. Would be great if someone can pass this on
> > > > > to Intel BIOS engineers.
> > > > 
> > > > Maybe.  It'd be nice if Linux handled it better, though.
> > > > 
> > > If anyone has an idea how to do that, I'll be happy to write a patch.
> > 
> > I'm not sure there's much you can do.  The BIOS is saying there's a DMAR
> > unit, and then saying the registers are at addr 0x0.  The kernel is
> > simply warning you about the invalid DMAR table entry.
> > 
> > One thing I've seen is the BIOS zeroing the base register address when
> > VT-d is disabled in BIOS.  So, Guenter, a "fix" may be simply enabling
> > VT-d in the BIOS.
>
> Ah, yes, I think I may have that disabled. I'll check it tonight.
> 
> Does that really warrant a traceback, or would a warning message be more
> appropriate (possibly telling the user to enable VT-d) ?

(Continue reading)

Guenter Roeck | 10 Jul 02:18 2013
Picon

Re: WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar with Intel Motherboard

On Tue, Jul 09, 2013 at 05:05:11PM -0700, Chris Wright wrote:
> * Guenter Roeck (linux@...) wrote:
> > On Tue, Jul 09, 2013 at 04:22:52PM -0700, Chris Wright wrote:
> > > * Guenter Roeck (linux@...) wrote:
> > > > On Tue, Jul 09, 2013 at 03:05:39PM -0600, Bjorn Helgaas wrote:
> > > > > [+cc Joerg, David, iommu list]
> > > > > 
> > > > > On Tue, Jul 9, 2013 at 2:24 PM, Guenter Roeck <linux@...> wrote:
> > > > > > I started seeing this problem after updating the BIOS trying fix another issue,
> > > > > > though I may have missed it earlier.
> > > > > >
> > > > > > I understand this is a BIOS bug. Would be great if someone can pass this on
> > > > > > to Intel BIOS engineers.
> > > > > 
> > > > > Maybe.  It'd be nice if Linux handled it better, though.
> > > > > 
> > > > If anyone has an idea how to do that, I'll be happy to write a patch.
> > > 
> > > I'm not sure there's much you can do.  The BIOS is saying there's a DMAR
> > > unit, and then saying the registers are at addr 0x0.  The kernel is
> > > simply warning you about the invalid DMAR table entry.
> > > 
> > > One thing I've seen is the BIOS zeroing the base register address when
> > > VT-d is disabled in BIOS.  So, Guenter, a "fix" may be simply enabling
> > > VT-d in the BIOS.
> >
> > Ah, yes, I think I may have that disabled. I'll check it tonight.
> > 
> > Does that really warrant a traceback, or would a warning message be more
> > appropriate (possibly telling the user to enable VT-d) ?
(Continue reading)

David Woodhouse | 10 Jul 02:53 2013

Re: WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar with Intel Motherboard

On Tue, 2013-07-09 at 17:18 -0700, Guenter Roeck wrote:
> 
> I meant warning as in pr_warn or dev_warn, not WARNING as in traceback.
> Keep in mind that a casual user doesn't expect to see a traceback and will tend
> to get alarmed. Several bugs have been filed against this "issue" in various
> distributions, which is not surprising given the alarmist message.
> What is the point of that ?

It is warning you that your hardware is broken. Take it back to the
place from which you purchased it, and ask for your money back if it
isn't fixed.

(Slightly) more seriously, this level of warning *does* get things
fixed, and when kerneloops was running it made it very easy to track
this kind of issue and apply pressure where it was needed to improve
quality.

Any user who has taken the trouble to file bugs has *also* taken it up
with their firmware vendor, I hope?

--

-- 
dwmw2

Attachment (smime.p7s): application/x-pkcs7-signature, 7762 bytes
On Tue, 2013-07-09 at 17:18 -0700, Guenter Roeck wrote:
> 
> I meant warning as in pr_warn or dev_warn, not WARNING as in traceback.
> Keep in mind that a casual user doesn't expect to see a traceback and will tend
(Continue reading)

Guenter Roeck | 10 Jul 05:55 2013
Picon

Re: WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar with Intel Motherboard

On Wed, Jul 10, 2013 at 01:53:15AM +0100, David Woodhouse wrote:
> On Tue, 2013-07-09 at 17:18 -0700, Guenter Roeck wrote:
> > 
> > I meant warning as in pr_warn or dev_warn, not WARNING as in traceback.
> > Keep in mind that a casual user doesn't expect to see a traceback and will tend
> > to get alarmed. Several bugs have been filed against this "issue" in various
> > distributions, which is not surprising given the alarmist message.
> > What is the point of that ?
> 
> It is warning you that your hardware is broken. Take it back to the
> place from which you purchased it, and ask for your money back if it
> isn't fixed.
> 
> (Slightly) more seriously, this level of warning *does* get things
> fixed, and when kerneloops was running it made it very easy to track
> this kind of issue and apply pressure where it was needed to improve
> quality.
> 
> Any user who has taken the trouble to file bugs has *also* taken it up
> with their firmware vendor, I hope?
> 
No idea ... but have you ever tried that as a private entity ?

If there is a secret list of people to contact at vendor X to get things
like this one fixed, please let me know ;).

Thanks,
Guenter
Chris Wright | 11 Jul 21:00 2013

Re: WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar with Intel Motherboard

* Guenter Roeck (linux@...) wrote:
> On Tue, Jul 09, 2013 at 04:22:52PM -0700, Chris Wright wrote:
> > One thing I've seen is the BIOS zeroing the base register address when
> > VT-d is disabled in BIOS.  So, Guenter, a "fix" may be simply enabling
> > VT-d in the BIOS.
> > 
> Ah, yes, I think I may have that disabled. I'll check it tonight.

Did you find out if BIOS change fixed this?

thanks,
-chris
Guenter Roeck | 11 Jul 22:59 2013
Picon

Re: WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar with Intel Motherboard

On Thu, Jul 11, 2013 at 12:00:54PM -0700, Chris Wright wrote:
> * Guenter Roeck (linux@...) wrote:
> > On Tue, Jul 09, 2013 at 04:22:52PM -0700, Chris Wright wrote:
> > > One thing I've seen is the BIOS zeroing the base register address when
> > > VT-d is disabled in BIOS.  So, Guenter, a "fix" may be simply enabling
> > > VT-d in the BIOS.
> > > 
> > Ah, yes, I think I may have that disabled. I'll check it tonight.
> 
> Did you find out if BIOS change fixed this?
> 
No, it didn't. Enabling or disabling virtualization in the BIOS did not make
a difference. It looks like there is a bad DMAR table entry (with address 0)
in the ACPI data. In case you are interested how it looks like:

DMAR  <at>  0xcb3f3f90
  0000: 44 4d 41 52 90 00 00 00 01 d5 49 4e 54 45 4c 20  DMAR......INTEL
  0010: 44 48 38 37 52 4c 20 20 40 01 00 00 49 4e 54 4c  DH87RL   <at> ...INTL
  0020: 01 00 00 00 26 00 00 00 00 00 00 00 00 00 00 00  ....&...........
  0030: 00 00 10 00 01 00 00 00 00 00 00 00 00 00 00 00  ................
  0040: 01 00 30 00 00 00 00 00 00 b0 eb cb 00 00 00 00  ..0.............
  0050: ff 9f ec cb 00 00 00 00 01 08 00 00 00 00 1d 00  ................
  0060: 01 08 00 00 00 00 1a 00 01 08 00 00 00 00 14 00  ................
  0070: 01 00 20 00 00 00 00 00 00 00 00 d7 00 00 00 00  .. .............
  0080: ff ff 1f df 00 00 00 00 01 08 00 00 00 00 02 00  ................

Turns out the i7-4770K doesn't support VT-d, so my current understanding
is that there should be no DMAR table in the first place.

Guenter
(Continue reading)

Chris Wright | 12 Jul 00:31 2013

Re: WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar with Intel Motherboard

* Guenter Roeck (linux@...) wrote:
> On Thu, Jul 11, 2013 at 12:00:54PM -0700, Chris Wright wrote:
> > * Guenter Roeck (linux@...) wrote:
> > > On Tue, Jul 09, 2013 at 04:22:52PM -0700, Chris Wright wrote:
> > > > One thing I've seen is the BIOS zeroing the base register address when
> > > > VT-d is disabled in BIOS.  So, Guenter, a "fix" may be simply enabling
> > > > VT-d in the BIOS.
> > > > 
> > > Ah, yes, I think I may have that disabled. I'll check it tonight.
> > 
> > Did you find out if BIOS change fixed this?
> > 
> No, it didn't. Enabling or disabling virtualization in the BIOS did not make
> a difference. It looks like there is a bad DMAR table entry (with address 0)
> in the ACPI data. In case you are interested how it looks like:
> 
> DMAR  <at>  0xcb3f3f90
>   0000: 44 4d 41 52 90 00 00 00 01 d5 49 4e 54 45 4c 20  DMAR......INTEL
>   0010: 44 48 38 37 52 4c 20 20 40 01 00 00 49 4e 54 4c  DH87RL   <at> ...INTL
>   0020: 01 00 00 00 26 00 00 00 00 00 00 00 00 00 00 00  ....&...........
>   0030: 00 00 10 00 01 00 00 00 00 00 00 00 00 00 00 00  ................
>   0040: 01 00 30 00 00 00 00 00 00 b0 eb cb 00 00 00 00  ..0.............
>   0050: ff 9f ec cb 00 00 00 00 01 08 00 00 00 00 1d 00  ................
>   0060: 01 08 00 00 00 00 1a 00 01 08 00 00 00 00 14 00  ................
>   0070: 01 00 20 00 00 00 00 00 00 00 00 d7 00 00 00 00  .. .............
>   0080: ff ff 1f df 00 00 00 00 01 08 00 00 00 00 02 00  ................
> 
> Turns out the i7-4770K doesn't support VT-d, so my current understanding
> is that there should be no DMAR table in the first place.

(Continue reading)

Joerg Roedel | 14 Aug 11:36 2013

Re: WARNING: at drivers/iommu/dmar.c:484 warn_invalid_dmar with Intel Motherboard

On Tue, Jul 09, 2013 at 03:31:06PM -0700, Guenter Roeck wrote:
> On Tue, Jul 09, 2013 at 03:05:39PM -0600, Bjorn Helgaas wrote:
> > [+cc Joerg, David, iommu list]
> > 
> > On Tue, Jul 9, 2013 at 2:24 PM, Guenter Roeck <linux@...> wrote:
> > > I started seeing this problem after updating the BIOS trying fix another issue,
> > > though I may have missed it earlier.
> > >
> > > I understand this is a BIOS bug. Would be great if someone can pass this on
> > > to Intel BIOS engineers.
> > 
> > Maybe.  It'd be nice if Linux handled it better, though.
> > 
> If anyone has an idea how to do that, I'll be happy to write a patch.

I doubt that we can do anything meaningful here. The BIOS is broken in a
way so that we can't use the IOMMU in Linux. We can patch away the
WARN_ON and make it a sumple FW_BUG message, but the noise a WARN_ON
makes maybe help getting this issue fixed.

But I may be convinced otherwise, if people think this WARN_ON is not
worth it.

	Joerg


Gmane