Proxmox-Port/packages/qemu-server/patches/002-fix-arm64-pcie.patch
2024-10-18 15:49:49 +08:00

211 lines
7.2 KiB
Diff

diff --git a/PVE/QemuServer/PCI.pm b/PVE/QemuServer/PCI.pm
index 1673041b..429d110b 100644
--- a/PVE/QemuServer/PCI.pm
+++ b/PVE/QemuServer/PCI.pm
@@ -151,82 +151,72 @@ sub get_pci_addr_map {
ahci0 => { bus => 0, addr => 7 },
qga0 => { bus => 0, addr => 8 },
spice => { bus => 0, addr => 9 },
- virtio0 => { bus => 0, addr => 10 },
- virtio1 => { bus => 0, addr => 11 },
- virtio2 => { bus => 0, addr => 12 },
- virtio3 => { bus => 0, addr => 13 },
- virtio4 => { bus => 0, addr => 14 },
- virtio5 => { bus => 0, addr => 15 },
- hostpci0 => { bus => 0, addr => 16 },
- hostpci1 => { bus => 0, addr => 17 },
- net0 => { bus => 0, addr => 18 },
- net1 => { bus => 0, addr => 19 },
- net2 => { bus => 0, addr => 20 },
- net3 => { bus => 0, addr => 21 },
- net4 => { bus => 0, addr => 22 },
- net5 => { bus => 0, addr => 23 },
+# pcie.1 => { bus => 0, addr => 10 },
+ net0 => { bus => 0, addr => 11 },
+ hostpci4 => { bus => 0, addr => 12 },
+ hostpci5 => { bus => 0, addr => 13 },
+ hostpci6 => { bus => 0, addr => 14 },
+ hostpci7 => { bus => 0, addr => 15 },
+ hostpci8 => { bus => 0, addr => 16 },
+ hostpci19 => { bus => 0, addr => 17 },
+ hostpci10 => { bus => 0, addr => 18 },
+ 'xhci' => { bus => 0, addr => 19 },
+ hostpci0 => { bus => 0, addr => 22 },
+ hostpci1 => { bus => 0, addr => 23 },
vga1 => { bus => 0, addr => 24 },
vga2 => { bus => 0, addr => 25 },
- vga3 => { bus => 0, addr => 26 },
+# vga3 => { bus => 0, addr => 26 }, #use to pcie2-3,for aarch64
hostpci2 => { bus => 0, addr => 27 },
hostpci3 => { bus => 0, addr => 28 },
- #addr29 : usb-host (pve-usb.cfg)
+# addr29 : usb-host (pve-usb.cfg)
'pci.1' => { bus => 0, addr => 30 },
'pci.2' => { bus => 0, addr => 31 },
- 'net6' => { bus => 1, addr => 1 },
- 'net7' => { bus => 1, addr => 2 },
- 'net8' => { bus => 1, addr => 3 },
- 'net9' => { bus => 1, addr => 4 },
- 'net10' => { bus => 1, addr => 5 },
- 'net11' => { bus => 1, addr => 6 },
- 'net12' => { bus => 1, addr => 7 },
- 'net13' => { bus => 1, addr => 8 },
- 'net14' => { bus => 1, addr => 9 },
- 'net15' => { bus => 1, addr => 10 },
- 'net16' => { bus => 1, addr => 11 },
- 'net17' => { bus => 1, addr => 12 },
- 'net18' => { bus => 1, addr => 13 },
- 'net19' => { bus => 1, addr => 14 },
- 'net20' => { bus => 1, addr => 15 },
- 'net21' => { bus => 1, addr => 16 },
- 'net22' => { bus => 1, addr => 17 },
- 'net23' => { bus => 1, addr => 18 },
- 'net24' => { bus => 1, addr => 19 },
- 'net25' => { bus => 1, addr => 20 },
- 'net26' => { bus => 1, addr => 21 },
- 'net27' => { bus => 1, addr => 22 },
- 'net28' => { bus => 1, addr => 23 },
- 'net29' => { bus => 1, addr => 24 },
- 'net30' => { bus => 1, addr => 25 },
- 'net31' => { bus => 1, addr => 26 },
- 'xhci' => { bus => 1, addr => 27 },
+# 'net0' => { bus => 1, addr => 1 },
+ 'net1' => { bus => 1, addr => 2 },
+ 'net2' => { bus => 1, addr => 3 },
+ 'net3' => { bus => 1, addr => 4 },
+ 'net4' => { bus => 1, addr => 5 },
+ 'net5' => { bus => 1, addr => 6 },
+ 'net6' => { bus => 1, addr => 7 },
+ 'net7' => { bus => 1, addr => 8 },
+ 'net8' => { bus => 1, addr => 9 },
+ 'net9' => { bus => 1, addr => 10 },
+ 'net10' => { bus => 1, addr => 11 },
+ 'net11' => { bus => 1, addr => 12 },
+ 'net12' => { bus => 1, addr => 13 },
+ 'net13' => { bus => 1, addr => 14 },
+ 'net14' => { bus => 1, addr => 15 },
+ 'net15' => { bus => 1, addr => 16 },
+ 'net16' => { bus => 1, addr => 17 },
+ 'net17' => { bus => 1, addr => 18 },
+ 'net18' => { bus => 1, addr => 19 },
+ 'net19' => { bus => 1, addr => 20 },
+ 'net20' => { bus => 1, addr => 21 },
+ 'net21' => { bus => 1, addr => 22 },
+ 'net22' => { bus => 1, addr => 23 },
+ 'net23' => { bus => 1, addr => 24 },
+ 'net24' => { bus => 1, addr => 25 },
'pci.4' => { bus => 1, addr => 28 },
'rng0' => { bus => 1, addr => 29 },
'pci.2-igd' => { bus => 1, addr => 30 }, # replaces pci.2 in case a legacy IGD device is passed through
- 'virtio6' => { bus => 2, addr => 1 },
- 'virtio7' => { bus => 2, addr => 2 },
- 'virtio8' => { bus => 2, addr => 3 },
- 'virtio9' => { bus => 2, addr => 4 },
- 'virtio10' => { bus => 2, addr => 5 },
- 'virtio11' => { bus => 2, addr => 6 },
- 'virtio12' => { bus => 2, addr => 7 },
- 'virtio13' => { bus => 2, addr => 8 },
- 'virtio14' => { bus => 2, addr => 9 },
- 'virtio15' => { bus => 2, addr => 10 },
- 'ivshmem' => { bus => 2, addr => 11 },
- 'audio0' => { bus => 2, addr => 12 },
- hostpci4 => { bus => 2, addr => 13 },
- hostpci5 => { bus => 2, addr => 14 },
- hostpci6 => { bus => 2, addr => 15 },
- hostpci7 => { bus => 2, addr => 16 },
- hostpci8 => { bus => 2, addr => 17 },
- hostpci9 => { bus => 2, addr => 18 },
- hostpci10 => { bus => 2, addr => 19 },
- hostpci11 => { bus => 2, addr => 20 },
- hostpci12 => { bus => 2, addr => 21 },
- hostpci13 => { bus => 2, addr => 22 },
- hostpci14 => { bus => 2, addr => 23 },
- hostpci15 => { bus => 2, addr => 24 },
+ 'virtio0' => { bus => 2, addr => 1 },
+ 'virtio1' => { bus => 2, addr => 2 },
+ 'virtio2' => { bus => 2, addr => 3 },
+ 'virtio3' => { bus => 2, addr => 4 },
+ 'virtio4' => { bus => 2, addr => 5 },
+ 'virtio5' => { bus => 2, addr => 6 },
+ 'virtio6' => { bus => 2, addr => 7 },
+ 'virtio7' => { bus => 2, addr => 8 },
+ 'virtio8' => { bus => 2, addr => 9 },
+ 'virtio9' => { bus => 2, addr => 10 },
+ 'virtio10' => { bus => 2, addr => 11 },
+ 'virtio11' => { bus => 2, addr => 12 },
+ 'virtio12' => { bus => 2, addr => 13 },
+ 'virtio13' => { bus => 2, addr => 14 },
+ 'virtio14' => { bus => 2, addr => 15 },
+ 'virtio15' => { bus => 2, addr => 16 },
+ 'ivshmem' => { bus => 2, addr => 17 },
+ 'audio0' => { bus => 2, addr => 18 },
'virtioscsi0' => { bus => 3, addr => 1 },
'virtioscsi1' => { bus => 3, addr => 2 },
'virtioscsi2' => { bus => 3, addr => 3 },
@@ -576,7 +566,9 @@ sub print_hostpci_devices {
my $kvm_off = 0;
my $gpu_passthrough = 0;
my $legacy_igd = 0;
-
+ if ($arch eq 'aarch64') {
+ push @$devices, '-readconfig', '/usr/share/qemu-server/pve-aarch64.cfg';
+ }
my $pciaddr;
my $pci_devices = choose_hostpci_devices(parse_hostpci_devices($conf), $vmid);
diff --git a/qemu-configs/Makefile b/qemu-configs/Makefile
index f55e9bef..463df4f3 100644
--- a/qemu-configs/Makefile
+++ b/qemu-configs/Makefile
@@ -2,11 +2,12 @@ DESTDIR=
USRSHAREDIR=$(DESTDIR)/usr/share/qemu-server
.PHONY: install
-install: pve-usb.cfg pve-q35.cfg pve-q35-4.0.cfg
+install: pve-usb.cfg pve-q35.cfg pve-q35-4.0.cfg pve-aarch64.cfg
install -d $(USRSHAREDIR)
install -m 0644 pve-usb.cfg $(USRSHAREDIR)
install -m 0644 pve-q35.cfg $(USRSHAREDIR)
install -m 0644 pve-q35-4.0.cfg $(USRSHAREDIR)
+ install -m 0644 pve-aarch64.cfg $(USRSHAREDIR)
.PHONY: clean
clean:
diff --git a/qemu-configs/pve-aarch64.cfg b/qemu-configs/pve-aarch64.cfg
new file mode 100644
index 00000000..9ba549e6
--- /dev/null
+++ b/qemu-configs/pve-aarch64.cfg
@@ -0,0 +1,30 @@
+[device "pcie.1"]
+ driver = "pci-bridge"
+ bus = "pcie.0"
+ addr = "0xa"
+ chassis_nr = "1"
+
+#[device "pciroot"]
+# driver = "pci-bridge"
+# bus = "pci.1"
+# addr = "1.0"
+# chassis_nr = "1"
+
+[device "pcie.2"]
+ driver = "pci-bridge"
+ bus = "pci.1"
+ addr = "1.0"
+ chassis_nr = "2"
+
+
+[device "pcie.3"]
+ driver = "pci-bridge"
+ bus = "pci.2"
+ addr = "1.0"
+ chassis_nr = "3"
+
+[device "pcie.4"]
+ driver = "pci-bridge"
+ bus = "pci.2"
+ addr = "2.0"
+ chassis_nr = "4"