Hi,
that made all devices being recognized during boot with UEFI - good.
We seem closer, but not there yet (for my main board at least).
There is still an issue with interrupts (or dma - see missing bus master in pci differences).
It seems device interrupts via ioapic don't get interrupts/data at all or not reliably. This affects following devices AFAICS on my system:
com*
wm1 (PCIe network card)
radeon (see errors below)
MSI/X using devices seem to do fine.
Interrupt allocation is the same in both environments:
UEFI & CSM
interrupt id device name(s)
ioapic0 pin 9 acpi SCI
ioapic0 pin 1 pckbc1 kbd
msix0 vec 0 nvme0 adminq
msix0 vec 1 nvme0 ioq1
msix0 vec 2 nvme0 ioq2
msix0 vec 3 nvme0 ioq3
msix0 vec 4 nvme0 ioq4
msix0 vec 5 nvme0 ioq5
msix0 vec 6 nvme0 ioq6
msix0 vec 7 nvme0 ioq7
msi1 vec 0 xhci0
msi2 vec 0 ahcisata0
msix3 vec 0 wm0TXRX0
msix3 vec 1 wm0TXRX1
msix3 vec 2 wm0LINK
ioapic1 pin 10 wm1, com5
ioapic1 pin 11 com2, ahd0
ioapic1 pin 8 com3
ioapic1 pin 9 com4
msi4 vec 0 hdaudio0
msi5 vec 0 mpii0
msi6 vec 0 xhci1
msi7 vec 0 ahcisata1
msi8 vec 0 hdaudio1
ioapic0 pin 4 com0
ioapic1 pin 30 radeon0
Other hickups seen:
keyboard input (PS/2) is sometimes repeateddddd
glxgears regularly stalls for a seconds and does not really run smoothly.
llinfo entries for wm1 fail, arp resolution on wm1 fail
wm1 seems completely broken - no packets are received there
dmesg differences are from efi presence, minor difference memory size, different usb detection sequence. nothing critical.
The main difference is the radeon* fails to properly initialize giving these diagnostics:
kern info: [drm] radeon: irq initialized.
kern info: [drm] ring test on 0 succeeded in 0 usecs
kern info: [drm] ring test on 3 succeeded in 3 usecs
kern error: [drm:(/src/NetBSD/cur/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c:345)uvd_v1_0_start] *ERROR* UVD not responding, trying to reset the VCPU!!!
kern error: [drm:(/src/NetBSD/cur/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c:345)uvd_v1_0_start] *ERROR* UVD not responding, trying to reset the VCPU!!!
kern error: [drm:(/src/NetBSD/cur/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c:345)uvd_v1_0_start] *ERROR* UVD not responding, trying to reset the VCPU!!!
kern error: [drm:(/src/NetBSD/cur/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c:345)uvd_v1_0_start] *ERROR* UVD not responding, trying to reset the VCPU!!!
kern error: [drm:(/src/NetBSD/cur/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c:345)uvd_v1_0_start] *ERROR* UVD not responding, trying to reset the VCPU!!!
kern error: [drm:(/src/NetBSD/cur/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c:345)uvd_v1_0_start] *ERROR* UVD not responding, trying to reset the VCPU!!!
kern error: [drm:(/src/NetBSD/cur/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c:345)uvd_v1_0_start] *ERROR* UVD not responding, trying to reset the VCPU!!!
kern error: [drm:(/src/NetBSD/cur/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c:345)uvd_v1_0_start] *ERROR* UVD not responding, trying to reset the VCPU!!!
kern error: [drm:(/src/NetBSD/cur/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c:345)uvd_v1_0_start] *ERROR* UVD not responding, trying to reset the VCPU!!!
kern error: [drm:(/src/NetBSD/cur/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c:345)uvd_v1_0_start] *ERROR* UVD not responding, trying to reset the VCPU!!!
kern error: [drm:(/src/NetBSD/cur/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c:354)uvd_v1_0_start] *ERROR* UVD not responding, giving up!!!
kern error: [drm:(/src/NetBSD/cur/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_evergreen.c:5688)evergreen_startup] *ERROR* radeon: error initializing UVD (-1).
kern info: [drm] ib test on ring 0 succeeded in 0 usecs
kern info: [drm] ib test on ring 3 succeeded in 0 usecs
Differences between pci configs (lspic -v)
--- lspci-csm-20190127 2019-01-27 14:42:57.454117956 +0100
+++ lspci-uefi-20190127 2019-01-27 14:51:27.003880544 +0100
@@ -4,7 +4,7 @@
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Device 1451
Subsystem: Advanced Micro Devices, Inc. [AMD] Device 1451
- Flags: bus master, fast devsel, latency 0, IRQ 255
+ Flags: fast devsel, IRQ 255
Capabilities: [40] Secure device <?>
Capabilities: [64] MSI: Enable- Count=1/4 Maskable- 64bit+
Capabilities: [74] HyperTransport: MSI Mapping Enable+ Fixed+
@@ -213,7 +213,7 @@
Capabilities: [100] Advanced Error Reporting
1d:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 43b4 (rev 02) (prog-if 00 [Normal decode])
- Flags: bus master, fast devsel, latency 0, IRQ 11
+ Flags: fast devsel, IRQ 11
Bus: primary=1d, secondary=1e, subordinate=1e, sec-latency=0
I/O behind bridge: None
Memory behind bridge: None
@@ -241,7 +241,7 @@
Capabilities: [400] L1 PM Substates
1d:02.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 43b4 (rev 02) (prog-if 00 [Normal decode])
- Flags: bus master, fast devsel, latency 0, IRQ 5
+ Flags: fast devsel, IRQ 5
Bus: primary=1d, secondary=20, subordinate=20, sec-latency=0
I/O behind bridge: 0000c000-0000cfff [size=4K]
Memory behind bridge: fcd00000-fcdfffff [size=1M]
@@ -255,7 +255,7 @@
Capabilities: [400] L1 PM Substates
1d:03.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 43b4 (rev 02) (prog-if 00 [Normal decode])
- Flags: bus master, fast devsel, latency 0, IRQ 11
+ Flags: fast devsel, IRQ 11
Bus: primary=1d, secondary=21, subordinate=21, sec-latency=0
I/O behind bridge: 0000b000-0000bfff [size=4K]
Memory behind bridge: fcc00000-fccfffff [size=1M]
@@ -269,7 +269,7 @@
Capabilities: [400] L1 PM Substates
1d:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 43b4 (rev 02) (prog-if 00 [Normal decode])
- Flags: bus master, fast devsel, latency 0, IRQ 11
+ Flags: fast devsel, IRQ 11
Bus: primary=1d, secondary=22, subordinate=22, sec-latency=0
I/O behind bridge: None
Memory behind bridge: None
@@ -283,7 +283,7 @@
Capabilities: [400] L1 PM Substates
1d:06.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 43b4 (rev 02) (prog-if 00 [Normal decode])
- Flags: bus master, fast devsel, latency 0, IRQ 5
+ Flags: fast devsel, IRQ 5
Bus: primary=1d, secondary=24, subordinate=24, sec-latency=0
I/O behind bridge: 0000a000-0000afff [size=4K]
Memory behind bridge: fcb00000-fcbfffff [size=1M]
@@ -339,7 +339,7 @@
21:00.0 Serial controller: MosChip Semiconductor Technology Ltd. 4-Port PCIe Serial Adapter (prog-if 02 [16550])
Subsystem: Device a000:1000
- Flags: bus master, fast devsel, latency 0, IRQ 11
+ Flags: fast devsel, IRQ 11
I/O ports at b030
Memory at fcc07000 (32-bit, non-prefetchable)
Memory at fcc06000 (32-bit, non-prefetchable)
@@ -351,7 +351,7 @@
21:00.1 Serial controller: MosChip Semiconductor Technology Ltd. 4-Port PCIe Serial Adapter (prog-if 02 [16550])
Subsystem: Device a000:1000
- Flags: bus master, fast devsel, latency 0, IRQ 11
+ Flags: fast devsel, IRQ 11
I/O ports at b020
Memory at fcc05000 (32-bit, non-prefetchable)
Memory at fcc04000 (32-bit, non-prefetchable)
@@ -362,7 +362,7 @@
21:00.2 Serial controller: MosChip Semiconductor Technology Ltd. 4-Port PCIe Serial Adapter (prog-if 02 [16550])
Subsystem: Device a000:1000
- Flags: bus master, fast devsel, latency 0, IRQ 10
+ Flags: fast devsel, IRQ 10
I/O ports at b010
Memory at fcc03000 (32-bit, non-prefetchable)
Memory at fcc02000 (32-bit, non-prefetchable)
@@ -373,7 +373,7 @@
21:00.3 Serial controller: MosChip Semiconductor Technology Ltd. 4-Port PCIe Serial Adapter (prog-if 02 [16550])
Subsystem: Device a000:1000
- Flags: bus master, fast devsel, latency 0, IRQ 5
+ Flags: fast devsel, IRQ 5
I/O ports at b000
Memory at fcc01000 (32-bit, non-prefetchable)
Memory at fcc00000 (32-bit, non-prefetchable)
@@ -384,7 +384,7 @@
24:00.0 System peripheral: Meinberg Funkuhren GPS180PEX GPS Receiver (PCI Express) (rev 01)
Subsystem: Meinberg Funkuhren GPS180PEX GPS Receiver (PCI Express)
- Flags: bus master, fast devsel, latency 0, IRQ 5
+ Flags: fast devsel, IRQ 5
I/O ports at a000
Memory at fcb00000 (32-bit, non-prefetchable)
Capabilities: [50] MSI: Enable- Count=1/4 Maskable- 64bit+
@@ -465,7 +465,7 @@
29:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Device 145a
Subsystem: Advanced Micro Devices, Inc. [AMD] Device 145a
- Flags: bus master, fast devsel, latency 0, IRQ 255
+ Flags: fast devsel, IRQ 255
Capabilities: [48] Vendor Specific Information: Len=08 <?>
Capabilities: [50] Power Management version 3
Capabilities: [64] Express Endpoint, MSI 00
@@ -476,9 +476,9 @@
29:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] Device 1456
Subsystem: Advanced Micro Devices, Inc. [AMD] Device 1456
- Flags: bus master, fast devsel, latency 0, IRQ 11
- Memory at fd100000 (32-bit, non-prefetchable)
- Memory at fd200000 (32-bit, non-prefetchable)
+ Flags: fast devsel, IRQ 11
+ Memory at fd100000 (32-bit, non-prefetchable) [disabled]
+ Memory at fd200000 (32-bit, non-prefetchable) [disabled]
Capabilities: [48] Vendor Specific Information: Len=08 <?>
Capabilities: [50] Power Management version 3
Capabilities: [64] Express Endpoint, MSI 00
@@ -502,7 +502,7 @@
2a:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Device 1455
Subsystem: Advanced Micro Devices, Inc. [AMD] Device 1455
- Flags: bus master, fast devsel, latency 0, IRQ 255
+ Flags: fast devsel, IRQ 255
Capabilities: [48] Vendor Specific Information: Len=08 <?>
Capabilities: [50] Power Management version 3
Capabilities: [64] Express Endpoint, MSI 00
Frank
On 01/23/19 07:56, SAITOH Masanobu wrote:
Module Name: src
Committed By: msaitoh
Date: Wed Jan 23 06:56:19 UTC 2019
Modified Files:
src/sys/dev/pci: if_fxp_pci.c nvme_pci.c xhci_pci.c
src/sys/dev/pci/ixgbe: ixgbe.c ixv.c
Log Message:
Nowadays some UEFI BIOSes don't enable some PCI devices' address decoding.
To resolve this problem, pci_map.c rev. 1.34-1.36 changed the
pci_mapreg_(sub)map()'s to set the decode bit if it's not set. It's good for
almost all drivers, but some other drivers don't use pci_mapreg_map().
In drivers which don't use pci_mapreg_map(), some of them expilicitly enable
decoding but others don't. Add code to enable decoding to them.
See also the following discussion:
http://mail-index.netbsd.org/tech-kern/2017/03/22/msg021678.html
To generate a diff of this commit:
cvs rdiff -u -r1.84 -r1.85 src/sys/dev/pci/if_fxp_pci.c
cvs rdiff -u -r1.25 -r1.26 src/sys/dev/pci/nvme_pci.c
cvs rdiff -u -r1.20 -r1.21 src/sys/dev/pci/xhci_pci.c
cvs rdiff -u -r1.170 -r1.171 src/sys/dev/pci/ixgbe/ixgbe.c
cvs rdiff -u -r1.107 -r1.108 src/sys/dev/pci/ixgbe/ixv.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.