Bug 97661 - The ivrs_ioapic table is not correct on some AMD machines
Summary: The ivrs_ioapic table is not correct on some AMD machines
Status: ASSIGNED
Alias: None
Product: Other
Classification: Unclassified
Component: Other (show other bugs)
Hardware: x86-64 Linux
: P1 normal
Assignee: other_other
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-05-04 02:24 UTC by AceLan Kao
Modified: 2016-03-07 15:25 UTC (History)
4 users (show)

See Also:
Kernel Version: 4.0-rc5
Subsystem:
Regression: No
Bisected commit-id:


Attachments
dmesg with amd_iommu_dump option (66.95 KB, text/x-log)
2015-05-04 02:24 UTC, AceLan Kao
Details

Description AceLan Kao 2015-05-04 02:24:28 UTC
Created attachment 175721 [details]
dmesg with amd_iommu_dump option

Hi all,

We've encountered some issues that results from wrong ioapic device id setting in the BIOS. That will lead to Boardcom wifi can't connect to AP(searching is fine).
There are 2 ways we found to fix this are to set "amd_iommu=off" or "noioapci"

I discussed with Joerg Roedel(the maintainer of AMD IOMMU) and he pointed out from the attached dmesg log

<quote>
> [    0.080177] AMD-Vi: device: 00:00.2 cap: 0040 seg: 0 flags: b8 info 0000
> [    0.080181] AMD-Vi:        mmio-addr: 00000000feb80000
> [    0.080198] AMD-Vi:   DEV_SELECT_RANGE_START        devid: 00:01.0 flags:
> 00
> [    0.080200] AMD-Vi:   DEV_RANGE_END                 devid: ff:1f.6
> [    0.081192] AMD-Vi:   DEV_ALIAS_RANGE               devid: 05:00.0 flags:
> 00 devid_to: 00:14.4
> [    0.081194] AMD-Vi:   DEV_RANGE_END                 devid: 05:1f.7
> [    0.081204] AMD-Vi:   DEV_SPECIAL(HPET[0])         devid: 00:14.0
> [    0.081207] AMD-Vi:   DEV_SPECIAL(IOAPIC[4])               devid: 00:14.0
> [    0.081208] AMD-Vi:   DEV_SPECIAL(IOAPIC[5])               devid: 00:00.0

This is dump of the IVRS table contents. It tells us that IOAPIC with ID
5 uses PCI request-id 00:00.0. But this information is wrong, it uses
request-id 00:00.1, as seen below:

> [   23.515063] AMD-Vi: Event logged [INVALID_DEVICE_REQUEST device=00:00.1
> address=0x000000fdf80c0020 flags=0x0a00]

This message comes from an interrupt request sent by the IOAPIC, and it
uses a different request-id. 
</quote>

We contacted the OEM BIOS engineer to correct this, but they refused, since it's not an issue on Windows and they don't want to re-do the testing. So, we tried to fix this by setting "ivrs_ioapic=00:00.1".

I'm wondering if we can add a quirk in amd_iommu driver to list those machines and set the correct ioapic device id in it, so that we can fix this issue by ourselves, instead of relying on BIOS.

BTW, we have some AMD machines with this issue, not only affects wifi, but some also affect graphics.
Comment 1 John W. Linville 2015-05-04 15:55:30 UTC
I don't really see this as a wireless issue.  I'm not really sure where it needs to go...
Comment 2 Aaron Lu 2015-07-08 06:06:30 UTC
(In reply to AceLan Kao from comment #0)
> I'm wondering if we can add a quirk in amd_iommu driver to list those
> machines and set the correct ioapic device id in it, so that we can fix this
> issue by ourselves, instead of relying on BIOS.

I think that is a good idea and worth a try by sending a patch to community.
There is no place for iommu issues in bugzilla, so I'm moving it to Other.

Note You need to log in before you can comment on or make changes to this bug.