kiddin9 3 年之前
父節點
當前提交
97c5be63c6

+ 4 - 0
.github/workflows/Openwrt-AutoBuild.yml

@@ -61,9 +61,13 @@ jobs:
         echo "UPLOAD_FIRMWARE_FOR_RELEASE=${UPLOAD_FIRMWARE_FOR_RELEASE}" >> $GITHUB_ENV
         echo "UPLOAD_FIRMWARE_TO_COWTRANSFER=${UPLOAD_FIRMWARE_TO_COWTRANSFER}" >> $GITHUB_ENV
         echo "UPLOAD_FIRMWARE_TO_WETRANSFER=${UPLOAD_FIRMWARE_TO_WETRANSFER}" >> $GITHUB_ENV
+        sed -i "1a REPO_TOKEN=${{ secrets.REPO_TOKEN }}" ${GITHUB_WORKSPACE}/devices/common/diy.sh
         if [ ${{matrix.target}} == "x86_64" ]; then
             echo "ARCH=linux/amd64" >> $GITHUB_ENV
             echo "MTARGET=x86_64" >> $GITHUB_ENV
+        elif [ ${{matrix.target}} == "x86_generic" ]; then
+            echo "ARCH=linux/amd32" >> $GITHUB_ENV
+            echo "MTARGET=x86_generic" >> $GITHUB_ENV
         elif [[ ${{matrix.target}} =~ (armvirt_64|ipq807x|mediatek_mt7622|mediatek_filogic|bcm27xx_bcm2710|ipq60xx_generic|bcm4908_generic|sunxi_cortexa53) ]]; then
             echo "MTARGET=aarch64_cortex-a53" >> $GITHUB_ENV
         elif [[ ${{matrix.target}} =~ (ramips_mt7621|ramips_mt7620|ramips_mt76x8) ]]; then

+ 5 - 0
.github/workflows/repo-dispatcher.yml

@@ -72,6 +72,11 @@ jobs:
           -X POST https://api.github.com/repos/${{ github.repository }}/dispatches \
           -H "Accept: application/vnd.github.everest-preview+json" \
           -H "Authorization: token ${{ secrets.REPO_TOKEN }}" \
+          -d '{"event_type": "x86_generic ${{ github.event.inputs.param }}", "client_payload": {"target": "x86_generic"}}'
+          curl \
+          -X POST https://api.github.com/repos/${{ github.repository }}/dispatches \
+          -H "Accept: application/vnd.github.everest-preview+json" \
+          -H "Authorization: token ${{ secrets.REPO_TOKEN }}" \
           -d '{"event_type": "rockchip_armv8 ${{ github.event.inputs.param }}", "client_payload": {"target": "rockchip_armv8"}}'
           curl \
           -X POST https://api.github.com/repos/${{ github.repository }}/dispatches \

+ 5 - 2
devices/common/diy.sh

@@ -19,13 +19,16 @@ sed -i '$a src-git kiddin9 https://github.com/kiddin9/openwrt-packages.git;maste
 
 sed -i "s/^.*vermagic$/\techo '1' > \$(LINUX_DIR)\/.vermagic/" include/kernel-defaults.mk
 
-rm -rf 
+status=$(curl -H "Authorization: token $REPO_TOKEN" -s "https://api.github.com/repos/kiddin9/openwrt-packages/actions/runs" | jq -r '.workflow_runs[0].status')
+while [ "$status" == "in_progress" ];do
+	sleep 5
+	status=$(curl -H "Authorization: token $REPO_TOKEN" -s "https://api.github.com/repos/kiddin9/openwrt-packages/actions/runs" | jq -r '.workflow_runs[0].status')
+done
 
 ./scripts/feeds update -a
 rm -rf feeds/kiddin9/.diy
 ./scripts/feeds install -a -p kiddin9 -f
 ./scripts/feeds install -a
-cd feeds/kiddin9; git pull; cd -
 
 mv -f feeds/kiddin9/{r81*,igb-intel} tmp/
 

+ 2 - 5
devices/ipq807x/.config

@@ -7,11 +7,8 @@ CONFIG_TARGET_DEVICE_ipq807x_generic_DEVICE_xiaomi_ax3600=y
 CONFIG_TARGET_DEVICE_ipq807x_generic_DEVICE_xiaomi_ax9000=y
 CONFIG_TARGET_DEVICE_ipq807x_generic_DEVICE_qnap_301w=y
 CONFIG_TARGET_DEVICE_ipq807x_generic_DEVICE_zte_mf269=y
+CONFIG_PACKAGE_kmod-rtl8812au-ct=n
+CONFIG_PACKAGE_kmod-qca-nss-crypto=n
 
 CONFIG_PACKAGE_luci-ssl=y # uhttpd服务
 
-CONFIG_PACKAGE_kmod-qca-nss-crypto=n
-CONFIG_PACKAGE_kmod-fs-antfs=n
-CONFIG_PACKAGE_kmod-ath11k-pci=n
-CONFIG_PACKAGE_kmod-rtl8812au-ct=n
-

+ 3 - 2
devices/ipq807x/diy.sh

@@ -5,13 +5,14 @@ SHELL_FOLDER=$(dirname $(readlink -f "$0"))
 
 bash $SHELL_FOLDER/../common/kernel_5.15.sh
 
-rm -rf package/boot/uboot-envtools package/firmware/ipq-wifi package/firmware/ath11k* package/kernel/mac80211 target/linux/generic
+rm -rf package/boot/uboot-envtools package/firmware/ipq-wifi package/firmware/ath11k* package/kernel/mac80211 target/linux/generic package/kernel/ath10k-ct
 svn export --force https://github.com/robimarko/openwrt/branches/ipq807x-5.15-pr/package/boot/uboot-envtools package/boot/uboot-envtools
 svn export --force https://github.com/robimarko/openwrt/branches/ipq807x-5.15-pr/package/firmware/ipq-wifi package/firmware/ipq-wifi
 svn export --force https://github.com/robimarko/openwrt/branches/ipq807x-5.15-pr/package/firmware/ath11k-firmware package/firmware/ath11k-firmware
 svn export --force https://github.com/robimarko/openwrt/branches/ipq807x-5.15-pr/package/kernel/mac80211 package/kernel/mac80211
 svn export --force https://github.com/robimarko/openwrt/branches/ipq807x-5.15-pr/package/kernel/qca-nss-dp package/kernel/qca-nss-dp
 svn export --force https://github.com/robimarko/openwrt/branches/ipq807x-5.15-pr/package/kernel/qca-ssdk package/kernel/qca-ssdk
+svn export --force https://github.com/robimarko/openwrt/branches/ipq807x-5.15-pr/package/kernel/ath10k-ct package/kernel/ath10k-ct
 
 svn co https://github.com/robimarko/openwrt/branches/ipq807x-5.15-pr/target/linux/generic target/linux/generic
 rm -rf target/linux/generic/.svn
@@ -21,7 +22,7 @@ svn co https://github.com/robimarko/openwrt/branches/ipq807x-5.15-pr/target/linu
 
 git clone https://github.com/robimarko/nss-packages --depth 1 package/nss-packages
 
-rm -rf package/network
+rm -rf package/network feeds/kiddin9/{rtl8821cu,rtl88x2bu}
 
 svn co https://github.com/robimarko/openwrt/branches/ipq807x-5.15-pr/package/network package/network
 

+ 11 - 0
devices/ipq807x/patches/usb3.patch

@@ -0,0 +1,11 @@
+--- a/package/kernel/linux/modules/usb.mk
++++ b/package/kernel/linux/modules/usb.mk
+@@ -494,7 +494,7 @@ $(eval $(call KernelPackage,usb-dwc3))
+ 
+ define KernelPackage/usb-dwc3-qcom
+   TITLE:=DWC3 Qualcomm USB driver
+-  DEPENDS:=@(TARGET_ipq40xx||TARGET_ipq806x) +kmod-usb-dwc3
++  DEPENDS:=@(TARGET_ipq40xx||TARGET_ipq806x||TARGET_ipq807x) +kmod-usb-dwc3
+   KCONFIG:= CONFIG_USB_DWC3_QCOM
+   FILES:= $(LINUX_DIR)/drivers/usb/dwc3/dwc3-qcom.ko
+   AUTOLOAD:=$(call AutoLoad,53,dwc3-qcom,1)

+ 1 - 0
devices/ramips_mt7621/.config

@@ -16,6 +16,7 @@ CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_d-team_newifi-d2=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_jdcloud_re-sp-01b=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_glinet_gl-mt1300=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_phicomm_k2p=y
+CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_phicomm_k2p-32m=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_asus_rt-ac85p=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_netgear_r6220=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_netgear_r6260=y

+ 402 - 0
devices/ramips_mt7621/patches/k2p_32m.patch

@@ -0,0 +1,402 @@
+diff --git a/target/linux/ramips/dts/mt7621_phicomm_k2p-32m.dts b/target/linux/ramips/dts/mt7621_phicomm_k2p-32m.dts
+new file mode 100644
+index 000000000000..e828b069afb4
+--- /dev/null
++++ b/target/linux/ramips/dts/mt7621_phicomm_k2p-32m.dts
+@@ -0,0 +1,14 @@
++#include "mt7621_phicomm_k2p.dtsi"
++
++/ {
++	compatible = "phicomm,k2p-32m", "mediatek,mt7621-soc";
++	model = "Phicomm K2P (32M)";
++};
++
++&firmware {
++	reg = <0xa0000 0x1f60000>;
++};
++
++&flash {
++	broken-flash-reset;
++};
+diff --git a/target/linux/ramips/dts/mt7621_phicomm_k2p.dts b/target/linux/ramips/dts/mt7621_phicomm_k2p.dts
+index fa02521ba6c1..1a973a2a82ce 100644
+--- a/target/linux/ramips/dts/mt7621_phicomm_k2p.dts
++++ b/target/linux/ramips/dts/mt7621_phicomm_k2p.dts
+@@ -1,169 +1,10 @@
+-#include "mt7621.dtsi"
+-
+-#include <dt-bindings/gpio/gpio.h>
+-#include <dt-bindings/input/input.h>
++#include "mt7621_phicomm_k2p.dtsi"
+ 
+ / {
+ 	compatible = "phicomm,k2p", "mediatek,mt7621-soc";
+ 	model = "Phicomm K2P";
+-
+-	aliases {
+-		led-boot = &led_blue;
+-		led-failsafe = &led_blue;
+-		led-running = &led_blue;
+-		led-upgrade = &led_blue;
+-	};
+-
+-	leds {
+-		compatible = "gpio-leds";
+-
+-		stat_r {
+-			label = "red:status";
+-			gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
+-		};
+-
+-		stat_y {
+-			label = "yellow:status";
+-			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+-		};
+-
+-		led_blue: stat_b {
+-			label = "blue:status";
+-			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+-		};
+-	};
+-
+-	keys {
+-		compatible = "gpio-keys";
+-
+-		reset {
+-			label = "reset";
+-			gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
+-			linux,code = <KEY_RESTART>;
+-		};
+-	};
+-};
+-
+-&spi0 {
+-	status = "okay";
+-
+-	flash@0 {
+-		compatible = "jedec,spi-nor";
+-		reg = <0>;
+-		spi-max-frequency = <50000000>;
+-
+-		partitions {
+-			compatible = "fixed-partitions";
+-			#address-cells = <1>;
+-			#size-cells = <1>;
+-
+-			partition@0 {
+-				label = "u-boot";
+-				reg = <0x0 0x30000>;
+-				read-only;
+-			};
+-
+-			partition@30000 {
+-				label = "u-boot-env";
+-				reg = <0x30000 0x10000>;
+-				read-only;
+-			};
+-
+-			factory: partition@40000 {
+-				label = "factory";
+-				reg = <0x40000 0x10000>;
+-				read-only;
+-			};
+-
+-			partition@50000 {
+-				label = "permanent_config";
+-				reg = <0x50000 0x50000>;
+-				read-only;
+-			};
+-
+-			partition@a0000 {
+-				compatible = "denx,uimage";
+-				label = "firmware";
+-				reg = <0xa0000 0xf60000>;
+-			};
+-		};
+-	};
+ };
+ 
+-&pcie {
+-	status = "okay";
+-};
+-
+-&pcie0 {
+-	wifi@0,0 {
+-		compatible = "mediatek,mt76";
+-		reg = <0x0000 0 0 0 0>;
+-		mediatek,mtd-eeprom = <&factory 0x0>;
+-
+-		/* 5 GHz (phy1) does not take the address from calibration data,
+-		   but setting it manually here works */
+-		nvmem-cells = <&macaddr_factory_4>;
+-		nvmem-cell-names = "mac-address";
+-	};
+-};
+-
+-&gmac0 {
+-	nvmem-cells = <&macaddr_factory_e000>;
+-	nvmem-cell-names = "mac-address";
+-};
+-
+-&switch0 {
+-	ports {
+-		port@0 {
+-			status = "okay";
+-			label = "lan1";
+-		};
+-
+-		port@1 {
+-			status = "okay";
+-			label = "lan2";
+-		};
+-
+-		port@2 {
+-			status = "okay";
+-			label = "lan3";
+-		};
+-
+-		port@3 {
+-			status = "okay";
+-			label = "lan4";
+-		};
+-
+-		port@4 {
+-			status = "okay";
+-			label = "wan";
+-			nvmem-cells = <&macaddr_factory_e006>;
+-			nvmem-cell-names = "mac-address";
+-		};
+-	};
+-};
+-
+-&state_default {
+-	gpio {
+-		groups = "i2c", "jtag";
+-		function = "gpio";
+-	};
+-};
+-
+-&factory {
+-	compatible = "nvmem-cells";
+-	#address-cells = <1>;
+-	#size-cells = <1>;
+-
+-	macaddr_factory_4: macaddr@4 {
+-		reg = <0x4 0x6>;
+-	};
+-
+-	macaddr_factory_e000: macaddr@e000 {
+-		reg = <0xe000 0x6>;
+-	};
+-
+-	macaddr_factory_e006: macaddr@e006 {
+-		reg = <0xe006 0x6>;
+-	};
++&firmware {
++	reg = <0xa0000 0xf60000>;
+ };
+diff --git a/target/linux/ramips/dts/mt7621_phicomm_k2p.dtsi b/target/linux/ramips/dts/mt7621_phicomm_k2p.dtsi
+new file mode 100644
+index 000000000000..90458050554c
+--- /dev/null
++++ b/target/linux/ramips/dts/mt7621_phicomm_k2p.dtsi
+@@ -0,0 +1,165 @@
++#include "mt7621.dtsi"
++
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/input/input.h>
++
++/ {
++	aliases {
++		led-boot = &led_blue;
++		led-failsafe = &led_blue;
++		led-running = &led_blue;
++		led-upgrade = &led_blue;
++	};
++
++	leds {
++		compatible = "gpio-leds";
++
++		stat_r {
++			label = "red:status";
++			gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
++		};
++
++		stat_y {
++			label = "yellow:status";
++			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
++		};
++
++		led_blue: stat_b {
++			label = "blue:status";
++			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
++		};
++	};
++
++	keys {
++		compatible = "gpio-keys";
++
++		reset {
++			label = "reset";
++			gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
++			linux,code = <KEY_RESTART>;
++		};
++	};
++};
++
++&spi0 {
++	status = "okay";
++
++	flash: flash@0 {
++		compatible = "jedec,spi-nor";
++		reg = <0>;
++		spi-max-frequency = <50000000>;
++
++		partitions {
++			compatible = "fixed-partitions";
++			#address-cells = <1>;
++			#size-cells = <1>;
++
++			partition@0 {
++				label = "u-boot";
++				reg = <0x0 0x30000>;
++				read-only;
++			};
++
++			partition@30000 {
++				label = "u-boot-env";
++				reg = <0x30000 0x10000>;
++				read-only;
++			};
++
++			factory: partition@40000 {
++				label = "factory";
++				reg = <0x40000 0x10000>;
++				read-only;
++			};
++
++			partition@50000 {
++				label = "permanent_config";
++				reg = <0x50000 0x50000>;
++				read-only;
++			};
++
++			firmware: partition@a0000 {
++				compatible = "denx,uimage";
++				label = "firmware";
++			};
++		};
++	};
++};
++
++&pcie {
++	status = "okay";
++};
++
++&pcie0 {
++	wifi@0,0 {
++		compatible = "mediatek,mt76";
++		reg = <0x0000 0 0 0 0>;
++		mediatek,mtd-eeprom = <&factory 0x0>;
++
++		/* 5 GHz (phy1) does not take the address from calibration data,
++		   but setting it manually here works */
++		nvmem-cells = <&macaddr_factory_4>;
++		nvmem-cell-names = "mac-address";
++	};
++};
++
++&gmac0 {
++	nvmem-cells = <&macaddr_factory_e000>;
++	nvmem-cell-names = "mac-address";
++};
++
++&switch0 {
++	ports {
++		port@0 {
++			status = "okay";
++			label = "lan1";
++		};
++
++		port@1 {
++			status = "okay";
++			label = "lan2";
++		};
++
++		port@2 {
++			status = "okay";
++			label = "lan3";
++		};
++
++		port@3 {
++			status = "okay";
++			label = "lan4";
++		};
++
++		port@4 {
++			status = "okay";
++			label = "wan";
++			nvmem-cells = <&macaddr_factory_e006>;
++			nvmem-cell-names = "mac-address";
++		};
++	};
++};
++
++&state_default {
++	gpio {
++		groups = "i2c", "jtag";
++		function = "gpio";
++	};
++};
++
++&factory {
++	compatible = "nvmem-cells";
++	#address-cells = <1>;
++	#size-cells = <1>;
++
++	macaddr_factory_4: macaddr@4 {
++		reg = <0x4 0x6>;
++	};
++
++	macaddr_factory_e000: macaddr@e000 {
++		reg = <0xe000 0x6>;
++	};
++
++	macaddr_factory_e006: macaddr@e006 {
++		reg = <0xe006 0x6>;
++	};
++};
+diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
+index 8c3ef04e35f4..b043d14bd12f 100644
+--- a/target/linux/ramips/image/mt7621.mk
++++ b/target/linux/ramips/image/mt7621.mk
+@@ -829,6 +829,16 @@ define Device/phicomm_k2p
+ endef
+ TARGET_DEVICES += phicomm_k2p
+ 
++define Device/phicomm_k2p-32m
++  IMAGE_SIZE := 32128k
++  DEVICE_VENDOR := Phicomm
++  DEVICE_MODEL := K2P
++  DEVICE_VARIANT := 32M
++  SUPPORTED_DEVICES += k2p-32M
++  DEVICE_PACKAGES := kmod-mt7615e kmod-mt7615-firmware
++endef
++TARGET_DEVICES += phicomm_k2p-32m
++
+ define Device/planex_vr500
+   $(Device/uimage-lzma-loader)
+   IMAGE_SIZE := 65216k
+
+--- a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
++++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
+@@ -28,7 +28,8 @@ case "$board" in
+ 				> /sys${DEVPATH}/macaddress
+ 		;;
+ 	dlink,dir-853-r1|\
+-	phicomm,k2p)
++	phicomm,k2p|\
++	phicomm,k2p-32m)
+ 		if [ "$PHYNBR" = "0" ]; then
+ 			base_mac=$(macaddr_add "$(mtd_get_mac_binary factory 0x4)" -1)
+ 			macaddr_setbit_la "$base_mac" > /sys${DEVPATH}/macaddress

+ 16 - 0
devices/x86_generic/.config

@@ -0,0 +1,16 @@
+
+CONFIG_TARGET_x86=y
+CONFIG_TARGET_x86_generic=y
+CONFIG_TARGET_ROOTFS_TARGZ=y
+
+# EFI支持:
+CONFIG_GRUB_IMAGES=y
+CONFIG_GRUB_EFI_IMAGES=y
+CONFIG_VMDK_IMAGES=n
+
+# 其他需要安装的软件包:
+CONFIG_PACKAGE_luci-ssl=n # uhttpd服务
+CONFIG_PACKAGE_luci-ssl-nginx=y # nginx
+
+CONFIG_OPENSSL_PREFER_CHACHA_OVER_GCM=n
+

+ 33 - 0
devices/x86_generic/diy.sh

@@ -0,0 +1,33 @@
+#!/bin/bash
+
+SHELL_FOLDER=$(dirname $(readlink -f "$0"))
+bash $SHELL_FOLDER/../common/kernel_5.15.sh
+
+svn co https://github.com/coolsnowwolf/lede/trunk/target/linux/x86/files target/linux/x86/files
+rm -rf target/linux/x86/files/.svn
+
+svn co https://github.com/coolsnowwolf/lede/trunk/target/linux/x86/patches-5.15 target/linux/x86/patches-5.15
+rm -rf target/linux/x86/patches-5.15/.svn
+
+curl -sfL https://raw.githubusercontent.com/coolsnowwolf/lede/master/package/kernel/linux/modules/video.mk -o package/kernel/linux/modules/video.mk
+
+sed -i "s/ +PACKAGE_kmod-backlight:kmod-backlight//" package/kernel/linux/modules/video.mk
+
+sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += autocore-x86 kmod-usb-hid kmod-mmc kmod-sdhci usbutils pciutils lm-sensors-detect kmod-alx kmod-vmxnet3 kmod-igbvf kmod-iavf kmod-bnx2x kmod-pcnet32 kmod-tulip kmod-r8125 kmod-8139cp kmod-8139too kmod-i40e kmod-drm-i915 kmod-drm-amdgpu kmod-mlx4-core kmod-mlx5-core fdisk lsblk/' target/linux/x86/Makefile
+
+mv -f tmp/r81* feeds/kiddin9/
+sed -i 's,kmod-r8169,kmod-r8168,g' target/linux/x86/image/*.mk
+sed -i 's/256/1024/g' target/linux/x86/image/Makefile
+
+sed -i "s/and \$(findstring ext4,\$(1)),//" include/image.mk
+
+echo '
+CONFIG_ACPI=y
+CONFIG_X86_ACPI_CPUFREQ=y
+CONFIG_NR_CPUS=512
+' >> ./target/linux/x86/config-5.15
+
+sed -i "s/DEVICE_MODEL := x86/DEVICE_MODEL := x86\/32/" target/linux/x86/image/generic.mk
+
+sed -i "s/enabled '0'/enabled '1'/g" feeds/packages/utils/irqbalance/files/irqbalance.config
+

+ 198 - 0
devices/x86_generic/patches/Intel_gpu.patch

@@ -0,0 +1,198 @@
+diff --git a/package/firmware/linux-firmware/intel.mk b/package/firmware/linux-firmware/intel.mk
+index 923701c703d..7f60014ea6c 100644
+--- a/package/firmware/linux-firmware/intel.mk
++++ b/package/firmware/linux-firmware/intel.mk
+@@ -176,3 +176,95 @@ define Package/e100-firmware/install
+ 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/e100/d102e_ucode.bin $(1)/lib/firmware/e100/
+ endef
+ $(eval $(call BuildPackage,e100-firmware))
++
++Package/i915-firmware = $(call Package/firmware-default,Intel GPU firmware)
++define Package/i915-firmware/install
++	$(INSTALL_DIR) $(1)/lib/firmware/i915
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_dmc_ver1_09.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adlp_dmc_ver2_09.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adlp_dmc_ver2_10.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adlp_dmc_ver2_12.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adlp_guc_62.0.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adls_dmc_ver2_01.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_dmc_ver1_07.bin $(1)/lib/firmware/i915/
++	ln -s /lib/firmware/i915/bxt_dmc_ver1_07.bin $(1)/lib/firmware/i915/bxt_dmc_ver1.bin
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_32.0.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_33.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_ver8_7.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_ver9_29.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_huc_2.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_huc_ver01_07_1398.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_huc_ver01_8_2893.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cml_guc_33.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cml_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cml_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cml_huc_4.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cnl_dmc_ver1_06.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cnl_dmc_ver1_07.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_dmc_ver2_02.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_huc_7.7.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_huc_7.9.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/ehl_guc_33.0.4.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/ehl_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/ehl_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/ehl_huc_9.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_dmc_ver1_04.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_guc_32.0.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_guc_33.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_huc_4.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_huc_ver03_01_2893.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_dmc_ver1_07.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_dmc_ver1_09.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_guc_32.0.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_guc_33.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_huc_9.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_huc_ver8_4_3238.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_dmc_ver1_01.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_dmc_ver1_04.bin $(1)/lib/firmware/i915/
++	ln -s /lib/firmware/i915/kbl_dmc_ver1_04.bin $(1)/lib/firmware/i915/kbl_dmc_ver1.bin
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_32.0.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_33.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_ver9_14.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_ver9_39.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_huc_4.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_huc_ver02_00_1810.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/rkl_dmc_ver2_02.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/rkl_dmc_ver2_03.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_dmc_ver1_23.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_dmc_ver1_26.bin $(1)/lib/firmware/i915/
++	ln -s /lib/firmware/i915/skl_dmc_ver1_26.bin $(1)/lib/firmware/i915/skl_dmc_ver1.bin
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_dmc_ver1_27.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_32.0.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_33.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_ver1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_ver4.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_ver6_1.bin $(1)/lib/firmware/i915/
++	ln -s /lib/firmware/i915/skl_guc_ver6_1.bin $(1)/lib/firmware/i915/skl_guc_ver6.bin
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_ver9_33.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_huc_2.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_huc_ver01_07_1398.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_dmc_ver2_04.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_dmc_ver2_06.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_dmc_ver2_08.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_dmc_ver2_12.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_guc_35.2.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_huc_7.0.12.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_huc_7.0.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_huc_7.5.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_huc_7.9.3.bin $(1)/lib/firmware/i915/
++endef
++$(eval $(call BuildPackage,i915-firmware))
+
+diff --git a/package/kernel/linux/modules/virt.mk b/package/kernel/linux/modules/virt.mk
+index 5ed0d5dbbf2..a853a8c7980 100644
+--- a/package/kernel/linux/modules/virt.mk
++++ b/package/kernel/linux/modules/virt.mk
+@@ -4,6 +4,50 @@
+ # This is free software, licensed under the GNU General Public License v2.
+ # See /LICENSE for more information.
+ #
++define KernelPackage/vfio-mdev
++  SUBMENU:=Virtualization
++  TITLE:=VFIO driver support to to virtualize devices
++  DEPENDS:=@TARGET_x86_64
++  KCONFIG:=	\
++	CONFIG_IOMMU_API=y \
++	CONFIG_MMU=y \
++	CONFIG_VFIO=y \
++	CONFIG_VFIO_MDEV \
++	CONFIG_VFIO_MDEV_DEVICE \
++	CONFIG_VFIO_NOIOMMU=y \
++	CONFIG_VFIO_PCI=y \
++	CONFIG_VFIO_PCI_IGD=y
++  FILES:= \
++	$(LINUX_DIR)/drivers/vfio/mdev/mdev.ko \
++	$(LINUX_DIR)/drivers/vfio/mdev/[email protected]
++  AUTOLOAD:=$(call AutoProbe,mdev vfio_mdev)
++endef
++
++define KernelPackage/vfio-mdev/description
++  Provides a framework to virtualize devices.
++endef
++
++$(eval $(call KernelPackage,vfio-mdev))
++
++define KernelPackage/i915-gvt
++  SUBMENU:=Virtualization
++  TITLE:=Enable KVM/VFIO support for Intel GVT-g
++  DEPENDS:=@TARGET_x86_64 +kmod-kvm-intel +kmod-drm-i915 +kmod-vfio-mdev
++  KCONFIG:= CONFIG_DRM_I915_GVT_KVMGT
++  FILES:= \
++      $(LINUX_DIR)/drivers/gpu/drm/i915/gvt/[email protected] \
++      $(LINUX_DIR)/drivers/gpu/drm/i915/[email protected]
++  AUTOLOAD:=$(call AutoProbe,kvmgt)
++endef
++
++define KernelPackage/i915-gvt/description
++  Enable Intel GVT-g graphics virtualization technology host support with 
++  integrated graphics. With GVT-g, it's possible to have one integrated 
++  graphics device shared by multiple VMs under KVM.
++endef
++
++$(eval $(call KernelPackage,i915-gvt))
++
+ define KernelPackage/irqbypass
+   SUBMENU:=Virtualization
+   TITLE:=IRQ offload/bypass manager
+
+--- a/target/linux/x86/64/config-5.15
++++ b/target/linux/x86/64/config-5.15
+@@ -117,30 +117,12 @@ CONFIG_DRM_FBDEV_EMULATION=y
+ CONFIG_DRM_FBDEV_OVERALLOC=100
+ CONFIG_DRM_GEM_SHMEM_HELPER=y
+ # CONFIG_DRM_HYPERV is not set
+-CONFIG_DRM_I915=y
+-CONFIG_DRM_I915_CAPTURE_ERROR=y
+-CONFIG_DRM_I915_COMPRESS_ERROR=y
+-# CONFIG_DRM_I915_DEBUG is not set
+-# CONFIG_DRM_I915_DEBUG_GUC is not set
+-# CONFIG_DRM_I915_DEBUG_MMIO is not set
+-# CONFIG_DRM_I915_DEBUG_RUNTIME_PM is not set
+-# CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set
+-CONFIG_DRM_I915_FENCE_TIMEOUT=10000
+ CONFIG_DRM_I915_FORCE_PROBE=""
+-CONFIG_DRM_I915_GVT=y
+ CONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500
+-# CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set
+-CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
+ CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
+ CONFIG_DRM_I915_REQUEST_TIMEOUT=20000
+-# CONFIG_DRM_I915_SELFTEST is not set
+ CONFIG_DRM_I915_STOP_TIMEOUT=100
+-# CONFIG_DRM_I915_SW_FENCE_CHECK_DAG is not set
+-# CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set
+ CONFIG_DRM_I915_TIMESLICE_DURATION=1
+-CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250
+-CONFIG_DRM_I915_USERPTR=y
+-# CONFIG_DRM_I915_WERROR is not set
+ CONFIG_DRM_KMS_HELPER=y
+ CONFIG_DRM_MIPI_DSI=y
+ CONFIG_DRM_PANEL=y
+@@ -178,6 +160,7 @@ CONFIG_FB_CMDLINE=y
+ CONFIG_FB_DEFERRED_IO=y
+ CONFIG_FB_EFI=y
+ CONFIG_FB_HYPERV=y
++# CONFIG_FB_INTEL is not set
+ CONFIG_FB_MODE_HELPERS=y
+ CONFIG_FB_SIMPLE=y
+ CONFIG_FB_SYS_COPYAREA=y

+ 12 - 0
devices/x86_generic/patches/def_set_interfaces_lan_wan.patch

@@ -0,0 +1,12 @@
+--- a/target/linux/x86/base-files/etc/board.d/02_network
++++ b/target/linux/x86/base-files/etc/board.d/02_network
+@@ -22,6 +22,9 @@ traverse-technologies-geos)
+ 	macaddr="$(cat /sys/class/net/eth0/address)" 2>/dev/null
+ 	[ -n "$macaddr" ] && ucidef_set_interface_macaddr "wan" "$macaddr"
+ 	;;
++*)
++	[ "$(ip address | grep ^[0-9] | awk -F: '{print $2}' | sed "s/ //g" | grep '^[e]' | grep -cvE "(@|\.)")" -gt 2 ] && ucidef_set_interfaces_lan_wan "$(ip address | grep ^[0-9] | awk -F: '{print $2}' | sed "s/ //g" | grep '^[e]' | grep -vE "(@|\.|eth1)" | tr "\n" " " | sed "s/ $//")" "eth1"
++	;;
+ esac
+ board_config_flush
+ 

+ 20 - 0
devices/x86_generic/patches/image-commands.patch

@@ -0,0 +1,20 @@
+--- a/include/image-commands.mk
++++ b/include/image-commands.mk
+@@ -419,6 +419,17 @@ endef
+ 
+ # Convert a raw image into a $1 type image.
+ # E.g. | qemu-image vdi <optional extra arguments to qemu-img binary>
++define Build/qemu-exsi
++	if command -v qemu-img; then \
++		name="$(subst .vmdk.zip,,$@)"; \
++		qemu-img convert -f raw -O $1 $@ $$name.vmdk; \
++		rm -f $@; \
++		zip -jm $@ $$name*.vmdk; \
++	else \
++		echo "WARNING: Install qemu-img to create VDI/VMDK images" >&2; exit 1; \
++	fi
++endef
++
+ define Build/qemu-image
+ 	if command -v qemu-img; then \
+ 		qemu-img convert -f raw -O $1 $@ [email protected]; \

+ 49 - 0
devices/x86_generic/patches/image.patch

@@ -0,0 +1,49 @@
+From c7bc056650227ba6003414356f57b33cdb2603b7 Mon Sep 17 00:00:00 2001
+From: kiddin9 <[email protected]>
+Date: Sat, 23 Apr 2022 18:38:12 +0800
+Subject: [PATCH] Update Makefile
+
+---
+ target/linux/x86/image/Makefile | 12 ++++--------
+ 1 file changed, 4 insertions(+), 8 deletions(-)
+
+diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile
+index 322131c2a488..0b4ed1d272eb 100644
+--- a/target/linux/x86/image/Makefile
++++ b/target/linux/x86/image/Makefile
+@@ -108,22 +108,18 @@ define Device/Default
+   IMAGE/combined.img := grub-config pc | combined | grub-install | append-metadata
+   IMAGE/combined.img.gz := grub-config pc | combined | grub-install | gzip | append-metadata
+   IMAGE/combined.vdi := grub-config pc | combined | grub-install | qemu-image vdi
+-  IMAGE/combined.vmdk := grub-config pc | combined | grub-install | qemu-image vmdk
++  IMAGE/combined.vmdk.zip := grub-config pc | combined | grub-install | qemu-exsi vmdk -o adapter_type=lsilogic -o subformat=monolithicFlat
+   IMAGE/combined.vhdx := grub-config pc | combined | grub-install | qemu-image vhdx -o subformat=dynamic
+-  IMAGE/rootfs.img := append-rootfs | pad-to $(ROOTFS_PARTSIZE)
+-  IMAGE/rootfs.img.gz := append-rootfs | pad-to $(ROOTFS_PARTSIZE) | gzip
+   ARTIFACT/image-efi.iso := grub-config iso | iso efi
+   IMAGE/combined-efi.img := grub-config efi | combined efi | grub-install efi | append-metadata
+   IMAGE/combined-efi.img.gz := grub-config efi | combined efi | grub-install efi | gzip | append-metadata
+   IMAGE/combined-efi.vdi := grub-config efi | combined efi | grub-install efi | qemu-image vdi
+-  IMAGE/combined-efi.vmdk := grub-config efi | combined efi | grub-install efi | qemu-image vmdk
++  IMAGE/combined-efi.vmdk.zip := grub-config efi | combined efi | grub-install efi | qemu-exsi vmdk -o adapter_type=lsilogic -o subformat=monolithicFlat
+   IMAGE/combined-efi.vhdx := grub-config efi | combined efi | grub-install efi | qemu-image vhdx -o subformat=dynamic
+   ifeq ($(CONFIG_TARGET_IMAGES_GZIP),y)
+-    IMAGES-y := rootfs.img.gz
+     IMAGES-$$(CONFIG_GRUB_IMAGES) += combined.img.gz
+     IMAGES-$$(CONFIG_GRUB_EFI_IMAGES) += combined-efi.img.gz
+   else
+-    IMAGES-y := rootfs.img
+     IMAGES-$$(CONFIG_GRUB_IMAGES) += combined.img
+     IMAGES-$$(CONFIG_GRUB_EFI_IMAGES) += combined-efi.img
+   endif
+@@ -139,8 +135,8 @@ define Device/Default
+     IMAGES-$$(CONFIG_GRUB_EFI_IMAGES) += combined-efi.vdi
+   endif
+   ifeq ($(CONFIG_VMDK_IMAGES),y)
+-    IMAGES-$$(CONFIG_GRUB_IMAGES) += combined.vmdk
+-    IMAGES-$$(CONFIG_GRUB_EFI_IMAGES) += combined-efi.vmdk
++    IMAGES-$$(CONFIG_GRUB_IMAGES) += combined.vmdk.zip
++    IMAGES-$$(CONFIG_GRUB_EFI_IMAGES) += combined-efi.vmdk.zip
+   endif
+   ifeq ($(CONFIG_VHDX_IMAGES),y)
+     IMAGES-$$(CONFIG_GRUB_IMAGES) += combined.vhdx