在 7/4/2016 4:48 AM, sunnydrake 写道:
Thanks for reply.
On 03.07.16 17:26, Wan Zongshun wrote:


在 7/3/2016 8:59 AM, sunnydrake 写道:
[description]
working in kernel 3.9
Oops in current 4.4.0-28,4.7.0-040700rc5
kernel options ivrs_ioapic[7]=00:14.0 ivrs_ioapic[8]=00:00.1 workaround to fix ivrs table
cause kernel Oops on boot
Do you mean "ivrs_ioapic[7]=00:14.0 ivrs_ioapic[8]=00:00.1" are workable at kernel-3.9 but failed in kernel-4.4?
1)yes kernel 3.9 boots ok with ivrs_ioapic[7]=00:14.0 ivrs_ioapic[8]=00:00.1
kernels 4.4 and 4.7 fall to Oops


[bug]
oops:
short oops text
AMD-Vi: Completion_wait loop timed Out
BUG: unable to handle kernel NULL pointer dereference at 000..03e
... irq_pm_install_action+0x1c/0xd0
full oops image text
http://img.ctrlv.in/img/16/07/03/577863055370c.jpg

[additional info]
dmesg|grep AMD-Vi without ivrs_ioapic[8]=00:00.1
This log is from the kernel print without ivrs_ioapic[8]=00:00.1?
Why not provide your kernel log with "ivrs_ioapic[7]=00:14.0 ivrs_ioapic[8]=00:00.1" ?
Full kernel log is better.


2) yes, because with ivrs_ioapic[7]=00:14.0 ivrs_ioapic[8]=00:00.1 kernels are not bootable. Screen of Oops http://img.ctrlv.in/img/16/07/03/577863055370c.jpg (this with params ivrs_ioapic[7]=00:14.0 ivrs_ioapic[8]=00:00.1 ). if you need something another like kdump, i can provide.

If you can provide a full kernel log with ivrs_ioapic[7]=00:14.0 ivrs_ioapic[8]=00:00.1, that is better. I checked your crash log, and find some things related to i8042 maybe wrong, it is ps2 relation driver, is it necessary in your system? can you disable this i8042 firsty to check if your issue is reasoned from it?

[ 0.108566] AMD-Vi: Using IVHD type 0x10
[ 0.108630] AMD-Vi: device: 00:00.2 cap: 0040 seg: 0 flags: 3e info 1300
[    0.108671] AMD-Vi:        mmio-addr: 00000000feb20000
[ 0.108750] AMD-Vi: DEV_SELECT_RANGE_START devid: 00:00.0 flags: 00
[    0.108792] AMD-Vi:   DEV_RANGE_END         devid: 00:00.2
[ 0.108834] AMD-Vi: DEV_SELECT devid: 00:02.0 flags: 00 [ 0.108875] AMD-Vi: DEV_SELECT_RANGE_START devid: 01:00.0 flags: 00
[    0.108917] AMD-Vi:   DEV_RANGE_END         devid: 01:00.1
[ 0.108958] AMD-Vi: DEV_SELECT devid: 00:04.0 flags: 00 [ 0.108999] AMD-Vi: DEV_SELECT devid: 02:00.0 flags: 00 [ 0.109041] AMD-Vi: DEV_SELECT devid: 00:07.0 flags: 00 [ 0.109082] AMD-Vi: DEV_SELECT devid: 03:00.0 flags: 00 [ 0.109124] AMD-Vi: DEV_SELECT devid: 00:11.0 flags: 00 [ 0.109166] AMD-Vi: DEV_SELECT_RANGE_START devid: 00:12.0 flags: 00
[    0.109207] AMD-Vi:   DEV_RANGE_END         devid: 00:12.2
[ 0.109249] AMD-Vi: DEV_SELECT_RANGE_START devid: 00:13.0 flags: 00
[    0.114267] AMD-Vi:   DEV_RANGE_END         devid: 00:13.2
[ 0.114308] AMD-Vi: DEV_SELECT devid: 00:14.0 flags: d7 [ 0.114348] AMD-Vi: DEV_SELECT devid: 00:14.2 flags: 00 [ 0.114389] AMD-Vi: DEV_SELECT devid: 00:14.3 flags: 00 [ 0.114429] AMD-Vi: DEV_SELECT devid: 00:14.4 flags: 00 [ 0.114471] AMD-Vi: DEV_ALIAS_RANGE devid: 04:00.0 flags: 00 devid_to: 00:14.4
[    0.114519] AMD-Vi:   DEV_RANGE_END         devid: 04:1f.7
[ 0.114564] AMD-Vi: DEV_SELECT devid: 00:14.5 flags: 00 [ 0.114605] AMD-Vi: DEV_SELECT devid: 00:15.0 flags: 00 [ 0.114645] AMD-Vi: DEV_SELECT_RANGE_START devid: 05:00.0 flags: 00
[    0.114687] AMD-Vi:   DEV_RANGE_END         devid: 05:00.1
[ 0.114728] AMD-Vi: DEV_SELECT_RANGE_START devid: 00:16.0 flags: 00
[    0.114768] AMD-Vi:   DEV_RANGE_END         devid: 00:16.2
[    0.114840] AMD-Vi:   DEV_SPECIAL(IOAPIC[0])        devid: 00:14.0
[    0.114885] AMD-Vi:   DEV_SPECIAL(HPET[0])        devid: 00:14.0
[    0.114927] AMD-Vi:   DEV_SPECIAL(IOAPIC[255]) devid: 00:00.1
[    0.114969] AMD-Vi: IOAPIC[8] not in IVRS table
Here, it is abnormal, you should add ivrs_ioapic[8]=00:00.1 in boot option, or else if the devices rely on
ivrs_ioapic[8], they will not work.

3) yes this why i used ivrs_ioapic[7]=00:14.0 ivrs_ioapic[8]=00:00.1 in 3.9 kernel to enable interrupt remapping, but on 4.4 and 4.7 this wil cause Oops.
[ 0.115010] AMD-Vi: Disabling interrupt remapping
[    2.994584] AMD-Vi: Completion-Wait loop timed out
[    3.103059] AMD-Vi: Completion-Wait loop timed out
[    3.103145] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40
[    3.103279] AMD-Vi: Lazy IO/TLB flushing enabled
[ 3.993134] AMD-Vi: Event logged [IOTLB_INV_TIMEOUT device=05:00.0 address=0x000000044c6464a0] [ 3.993213] AMD-Vi: Event logged [IOTLB_INV_TIMEOUT device=05:00.0 address=0x000000044c6464c0] [ 5.100622] AMD-Vi: Event logged [IOTLB_INV_TIMEOUT device=05:00.0 address=0x000000044c646500]
05:00.0 device should be dead now.

4) this is second graphics card(ATI R9 380) on second PCI-E i use vfio-pci to bind it early for later use in in virtual machine.

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu






_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to