From 736edf9deaff3d5b866437c56f18dcb771b1ac09 Mon Sep 17 00:00:00 2001 From: Tony Ambardar Date: Wed, 17 Feb 2021 00:12:44 -0800 Subject: [PATCH 01/27] kernel: add missing config symbols for 5.10 Update generic config to add missing options that prompt during builds. Signed-off-by: Tony Ambardar --- target/linux/generic/config-5.10 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/target/linux/generic/config-5.10 b/target/linux/generic/config-5.10 index cb99441dc4..05d17e2189 100644 --- a/target/linux/generic/config-5.10 +++ b/target/linux/generic/config-5.10 @@ -2768,6 +2768,8 @@ CONFIG_JFFS2_SUMMARY=y # CONFIG_JME is not set CONFIG_JOLIET=y # CONFIG_JSA1212 is not set +# CONFIG_JZ4740_WDT is not set +# CONFIG_JZ4770_PHY is not set # CONFIG_JUMP_LABEL is not set # CONFIG_JZ4740_WDT is not set # CONFIG_JZ4770_PHY is not set @@ -2787,6 +2789,7 @@ CONFIG_KASAN_STACK=1 # CONFIG_KERNEL_LZ4 is not set # CONFIG_KERNEL_LZMA is not set # CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_ZSTD is not set CONFIG_KERNEL_MODE_NEON=y CONFIG_KERNEL_XZ=y CONFIG_KERNFS=y @@ -3031,6 +3034,7 @@ CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 # CONFIG_MACH_JZ4740 is not set # CONFIG_MACH_LOONGSON2EF is not set # CONFIG_MACH_LOONGSON32 is not set +# CONFIG_MACH_LOONGSON2EF is not set # CONFIG_MACH_LOONGSON64 is not set # CONFIG_MACH_PIC32 is not set # CONFIG_MACH_PISTACHIO is not set @@ -4498,6 +4502,7 @@ CONFIG_PROC_SYSCTL=y # CONFIG_PTP_1588_CLOCK_IXP46X is not set # CONFIG_PTP_1588_CLOCK_KVM is not set # CONFIG_PTP_1588_CLOCK_PCH is not set +# CONFIG_PTP_1588_CLOCK_VMW is not set # CONFIG_PUBLIC_KEY_ALGO_RSA is not set # CONFIG_PVPANIC is not set # CONFIG_PWM is not set @@ -5281,6 +5286,7 @@ CONFIG_SERIAL_EARLYCON=y # CONFIG_SGI_IP28 is not set # CONFIG_SGI_IP30 is not set # CONFIG_SGI_IP32 is not set +# CONFIG_SGI_MFD_IOC3 is not set # CONFIG_SGI_PARTITION is not set # CONFIG_SG_POOL is not set # CONFIG_SG_SPLIT is not set From 95a3741d17b4cd7b9441187c356d449d0aa9d75d Mon Sep 17 00:00:00 2001 From: Tony Ambardar Date: Sun, 7 Mar 2021 20:22:03 -0800 Subject: [PATCH 02/27] kernel: support new mdio_devres.ko module in 5.10 Add kmod-mdio-devres package and kernel config symbol, and update related kmod-r8169 and kmod-ixgbe package dependencies. Build tested module dependencies on x86/64 with CONFIG_ALL_KMODS=y. Signed-off-by: Tony Ambardar --- package/kernel/linux/modules/netdevices.mk | 24 +++++++++++++++++++--- target/linux/generic/config-5.10 | 2 +- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/package/kernel/linux/modules/netdevices.mk b/package/kernel/linux/modules/netdevices.mk index 76675589fc..7d8bb34131 100644 --- a/package/kernel/linux/modules/netdevices.mk +++ b/package/kernel/linux/modules/netdevices.mk @@ -138,6 +138,23 @@ endef $(eval $(call KernelPackage,mii)) +define KernelPackage/mdio-devres + SUBMENU:=$(NETWORK_DEVICES_MENU) + TITLE:=Supports MDIO device registration + DEPENDS:=@LINUX_5_10 +kmod-libphy + KCONFIG:=CONFIG_MDIO_DEVRES + HIDDEN:=1 + FILES:=$(LINUX_DIR)/drivers/net/phy/mdio_devres.ko + AUTOLOAD:=$(call AutoProbe,mdio-devres) +endef + +define KernelPackage/mdio-devres/description + Supports MDIO device registration +endef + +$(eval $(call KernelPackage,mdio-devres)) + + define KernelPackage/mdio-gpio SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:= Supports GPIO lib-based MDIO busses @@ -545,8 +562,9 @@ $(eval $(call KernelPackage,8139cp)) define KernelPackage/r8169 SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=RealTek RTL-8169 PCI Gigabit Ethernet Adapter kernel support - DEPENDS:=@PCI_SUPPORT +kmod-mii +r8169-firmware +kmod-phy-realtek - KCONFIG:=CONFIG_R8169 \ + DEPENDS:=@PCI_SUPPORT +kmod-mii +r8169-firmware +kmod-phy-realtek +LINUX_5_10:kmod-mdio-devres + KCONFIG:= \ + CONFIG_R8169 \ CONFIG_R8169_NAPI=y \ CONFIG_R8169_VLAN=n FILES:=$(LINUX_DIR)/drivers/net/ethernet/realtek/r8169.ko @@ -670,7 +688,7 @@ $(eval $(call KernelPackage,igbvf)) define KernelPackage/ixgbe SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Intel(R) 82598/82599 PCI-Express 10 Gigabit Ethernet support - DEPENDS:=@PCI_SUPPORT +kmod-mdio +kmod-ptp +kmod-hwmon-core +kmod-libphy + DEPENDS:=@PCI_SUPPORT +kmod-mdio +kmod-ptp +kmod-hwmon-core +kmod-libphy +LINUX_5_10:kmod-mdio-devres KCONFIG:=CONFIG_IXGBE \ CONFIG_IXGBE_VXLAN=n \ CONFIG_IXGBE_HWMON=y \ diff --git a/target/linux/generic/config-5.10 b/target/linux/generic/config-5.10 index 05d17e2189..ec3e41c990 100644 --- a/target/linux/generic/config-5.10 +++ b/target/linux/generic/config-5.10 @@ -3098,7 +3098,7 @@ CONFIG_MAY_USE_DEVLINK=y # CONFIG_MDIO_BUS_MUX_MMIOREG is not set # CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set # CONFIG_MDIO_DEVICE is not set -CONFIG_MDIO_DEVRES=y +# CONFIG_MDIO_DEVRES is not set # CONFIG_MDIO_HISI_FEMAC is not set # CONFIG_MDIO_IPQ4019 is not set # CONFIG_MDIO_IPQ8064 is not set From 839178138957dd891f37b8945cceb3875d043b10 Mon Sep 17 00:00:00 2001 From: Tony Ambardar Date: Mon, 8 Mar 2021 19:16:11 -0800 Subject: [PATCH 03/27] x86: support kernel 5.10 Add linux 5.10 as testing kernel, copy generic/subtarget configs and target patches from 5.4. Signed-off-by: Tony Ambardar x86: update target patches for kernel 5.10 Refresh all patches while also dropping: 800-hwmon-w83627ehf-dont-claim-nct677x.patch which is now upstreamed as: 3207408ab4cb ("hwmon: (w83627ehf) remove nct6775 and nct6776 support") Signed-off-by: Tony Ambardar x86: refresh 5.10 target config Refresh config using "make kernel_oldconfig". Signed-off-by: Tony Ambardar x86: refresh and test all subtarget configs Refresh configs using "make kernel_oldconfig CONFIG_TARGET=subtarget". Build and run-tested using QEMU: x86/64, x86/legacy, x86/generic. Build-tested only: x86/geode. Signed-off-by: Tony Ambardar [squashed commits] Signed-off-by: Kevin Darbyshire-Bryant --- target/linux/x86/64/config-5.10 | 501 ++++++++++++++++++ target/linux/x86/Makefile | 2 +- target/linux/x86/config-5.10 | 432 +++++++++++++++ target/linux/x86/generic/config-5.10 | 459 ++++++++++++++++ target/linux/x86/geode/config-5.10 | 139 +++++ target/linux/x86/legacy/config-5.10 | 213 ++++++++ .../patches-5.10/011-tune_lzma_options.patch | 22 + ...12-pcengines-apu2-detect-apuv4-board.patch | 50 ++ .../100-fix_cs5535_clockevt.patch | 13 + .../200-pcengines-apu2-reboot.patch | 19 + .../patches-5.10/300-pcengines_apu1_led.patch | 41 ++ 11 files changed, 1890 insertions(+), 1 deletion(-) create mode 100644 target/linux/x86/64/config-5.10 create mode 100644 target/linux/x86/config-5.10 create mode 100644 target/linux/x86/generic/config-5.10 create mode 100644 target/linux/x86/geode/config-5.10 create mode 100644 target/linux/x86/legacy/config-5.10 create mode 100644 target/linux/x86/patches-5.10/011-tune_lzma_options.patch create mode 100644 target/linux/x86/patches-5.10/012-pcengines-apu2-detect-apuv4-board.patch create mode 100644 target/linux/x86/patches-5.10/100-fix_cs5535_clockevt.patch create mode 100644 target/linux/x86/patches-5.10/200-pcengines-apu2-reboot.patch create mode 100644 target/linux/x86/patches-5.10/300-pcengines_apu1_led.patch diff --git a/target/linux/x86/64/config-5.10 b/target/linux/x86/64/config-5.10 new file mode 100644 index 0000000000..b9dafa06fb --- /dev/null +++ b/target/linux/x86/64/config-5.10 @@ -0,0 +1,501 @@ +CONFIG_64BIT=y +CONFIG_ACPI=y +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y +# CONFIG_ACPI_BGRT is not set +CONFIG_ACPI_BUTTON=y +# CONFIG_ACPI_CMPC is not set +CONFIG_ACPI_CONTAINER=y +CONFIG_ACPI_CPPC_LIB=y +CONFIG_ACPI_CPU_FREQ_PSS=y +# CONFIG_ACPI_DEBUG is not set +# CONFIG_ACPI_DEBUGGER is not set +# CONFIG_ACPI_DOCK is not set +# CONFIG_ACPI_DPTF is not set +# CONFIG_ACPI_EC_DEBUGFS is not set +CONFIG_ACPI_FAN=y +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_HOTPLUG_IOAPIC=y +# CONFIG_ACPI_I2C_OPREGION is not set +CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y +CONFIG_ACPI_LPIT=y +# CONFIG_ACPI_PCI_SLOT is not set +CONFIG_ACPI_PROCESSOR=y +# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set +CONFIG_ACPI_PROCESSOR_CSTATE=y +CONFIG_ACPI_PROCESSOR_IDLE=y +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y +# CONFIG_ACPI_SBS is not set +CONFIG_ACPI_SPCR_TABLE=y +CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y +# CONFIG_ACPI_TAD is not set +CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_VIDEO=y +# CONFIG_ACPI_WMI is not set +# CONFIG_ACRN_GUEST is not set +CONFIG_AGP=y +# CONFIG_AGP_AMD64 is not set +CONFIG_AGP_INTEL=y +# CONFIG_AGP_SIS is not set +# CONFIG_AGP_VIA is not set +CONFIG_ARCH_CPUIDLE_HALTPOLL=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y +CONFIG_ARCH_MMAP_RND_BITS=28 +CONFIG_ARCH_MMAP_RND_BITS_MAX=32 +CONFIG_ARCH_MMAP_RND_BITS_MIN=28 +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_WANTS_THP_SWAP=y +CONFIG_AUDIT_ARCH=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BALLOON_COMPACTION=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_INTEGRITY_T10=y +CONFIG_BLK_DEV_NVME=y +CONFIG_BLK_DEV_SR=y +CONFIG_BLK_MQ_VIRTIO=y +CONFIG_BLK_PM=y +# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set +CONFIG_BTT=y +CONFIG_CDROM=y +CONFIG_CONNECTOR=y +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y +# CONFIG_CPU_IDLE_GOV_HALTPOLL is not set +CONFIG_CPU_RMAP=y +CONFIG_CRC_T10DIF=y +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_AES_NI_INTEL=y +# CONFIG_CRYPTO_BLOWFISH_X86_64 is not set +# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 is not set +# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 is not set +# CONFIG_CRYPTO_CAMELLIA_X86_64 is not set +# CONFIG_CRYPTO_CAST5_AVX_X86_64 is not set +# CONFIG_CRYPTO_CAST6_AVX_X86_64 is not set +CONFIG_CRYPTO_CRCT10DIF=y +# CONFIG_CRYPTO_CRCT10DIF_PCLMUL is not set +CONFIG_CRYPTO_CRYPTD=y +# CONFIG_CRYPTO_DES3_EDE_X86_64 is not set +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_GF128MUL=y +CONFIG_CRYPTO_GLUE_HELPER_X86=y +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11 +CONFIG_CRYPTO_LRW=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_NHPOLY1305_AVX2 is not set +# CONFIG_CRYPTO_NHPOLY1305_SSE2 is not set +CONFIG_CRYPTO_NULL2=y +# CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set +# CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set +# CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set +# CONFIG_CRYPTO_SHA1_SSSE3 is not set +# CONFIG_CRYPTO_SHA256_SSSE3 is not set +# CONFIG_CRYPTO_SHA512_SSSE3 is not set +CONFIG_CRYPTO_SIMD=y +# CONFIG_CRYPTO_TWOFISH_AVX_X86_64 is not set +# CONFIG_CRYPTO_TWOFISH_X86_64 is not set +# CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set +CONFIG_CRYPTO_XTS=y +# CONFIG_DEBUG_HOTPLUG_CPU0 is not set +CONFIG_DMA_ACPI=y +CONFIG_DMA_OPS=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DRM=y +CONFIG_DRM_BOCHS=y +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +CONFIG_DRM_GEM_SHMEM_HELPER=y +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_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_FB_HELPER=y +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_MIPI_DSI=y +CONFIG_DRM_PANEL=y +CONFIG_DRM_PANEL_BRIDGE=y +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y +CONFIG_DRM_TTM=y +CONFIG_DRM_TTM_DMA_PAGE_POOL=y +CONFIG_DRM_TTM_HELPER=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_DRM_VRAM_HELPER=y +CONFIG_EFI=y +CONFIG_EFIVAR_FS=m +# CONFIG_EFI_BOOTLOADER_CONTROL is not set +# CONFIG_EFI_CAPSULE_LOADER is not set +# CONFIG_EFI_CUSTOM_SSDT_OVERLAYS is not set +# CONFIG_EFI_DISABLE_PCI_DMA is not set +CONFIG_EFI_EARLYCON=y +CONFIG_EFI_ESRT=y +# CONFIG_EFI_FAKE_MEMMAP is not set +CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y +# CONFIG_EFI_MIXED is not set +# CONFIG_EFI_PGT_DUMP is not set +# CONFIG_EFI_RCI2_TABLE is not set +CONFIG_EFI_RUNTIME_MAP=y +CONFIG_EFI_RUNTIME_WRAPPERS=y +CONFIG_EFI_STUB=y +# CONFIG_EFI_TEST is not set +# CONFIG_EFI_VARS is not set +CONFIG_FAILOVER=y +CONFIG_FB=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_CMDLINE=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_EFI=y +CONFIG_FB_HYPERV=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_SIMPLE=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_TILEBLITTING=y +# CONFIG_FB_VESA is not set +CONFIG_FONT_8x16=y +CONFIG_FONT_8x8=y +CONFIG_FONT_SUPPORT=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_FREEZER=y +CONFIG_FW_CACHE=y +CONFIG_GART_IOMMU=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_CPU=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_ACPI=y +CONFIG_GPIO_ICH=y +CONFIG_GPIO_SCH=y +CONFIG_HALTPOLL_CPUIDLE=y +CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y +CONFIG_HDMI=y +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HID_GENERIC=y +CONFIG_HID_HYPERV_MOUSE=y +CONFIG_HOTPLUG_CPU=y +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=y +# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set +# CONFIG_HOTPLUG_PCI_CPCI is not set +# CONFIG_HOTPLUG_PCI_PCIE is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set +CONFIG_HOTPLUG_SMT=y +CONFIG_HPET=y +CONFIG_HPET_MMAP=y +# CONFIG_HP_ACCEL is not set +CONFIG_HVC_DRIVER=y +CONFIG_HVC_IRQ=y +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y +CONFIG_HWMON=y +CONFIG_HWMON_VID=y +CONFIG_HW_RANDOM_AMD=y +CONFIG_HW_RANDOM_INTEL=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_HYPERV=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_HYPERV_BALLOON=y +CONFIG_HYPERV_KEYBOARD=y +CONFIG_HYPERV_NET=y +CONFIG_HYPERV_STORAGE=y +# CONFIG_HYPERV_TESTING is not set +CONFIG_HYPERV_TIMER=y +CONFIG_HYPERV_UTILS=y +# CONFIG_HYPERV_VSOCKETS is not set +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=y +# CONFIG_I2C_AMD_MP2 is not set +CONFIG_I2C_BOARDINFO=y +# CONFIG_I2C_MULTI_INSTANTIATE is not set +# CONFIG_IA32_EMULATION is not set +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set +CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y +# CONFIG_INTEL_ATOMISP2_LED is not set +CONFIG_INTEL_GTT=y +CONFIG_INTEL_IDLE=y +# CONFIG_INTEL_IDXD is not set +# CONFIG_INTEL_INT0002_VGPIO is not set +# CONFIG_INTEL_IPS is not set +# CONFIG_INTEL_MEI_HDCP is not set +# CONFIG_INTEL_MENLOW is not set +CONFIG_INTEL_PCH_THERMAL=y +# CONFIG_INTEL_SCU_PLATFORM is not set +CONFIG_INTEL_SOC_DTS_IOSF_CORE=y +CONFIG_INTEL_SOC_DTS_THERMAL=y +# CONFIG_INTEL_SPEED_SELECT_INTERFACE is not set +# CONFIG_INTEL_TURBO_MAX_3 is not set +# CONFIG_INTEL_UNCORE_FREQ_CONTROL is not set +CONFIG_INTERVAL_TREE=y +# CONFIG_IOMMU_DEBUG is not set +CONFIG_IOMMU_HELPER=y +CONFIG_IOSF_MBI=y +# CONFIG_IOSF_MBI_DEBUG is not set +# CONFIG_ISCSI_IBFT is not set +CONFIG_ISO9660_FS=y +CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y +CONFIG_KCMP=y +CONFIG_KVM_GUEST=y +CONFIG_LEDS_GPIO=y +# CONFIG_LEGACY_VSYSCALL_EMULATE is not set +CONFIG_LEGACY_VSYSCALL_NONE=y +# CONFIG_LEGACY_VSYSCALL_XONLY is not set +CONFIG_LIBNVDIMM=y +CONFIG_LOCK_SPIN_ON_OWNER=y +CONFIG_LPC_ICH=y +CONFIG_LPC_SCH=y +CONFIG_MAILBOX=y +# CONFIG_MAXSMP is not set +CONFIG_MEMORY_BALLOON=y +CONFIG_MEMREGION=y +CONFIG_MFD_CORE=y +# CONFIG_MFD_INTEL_LPSS_ACPI is not set +# CONFIG_MFD_INTEL_PMC_BXT is not set +CONFIG_MMC=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_CQHCI=y +CONFIG_MMC_RICOH_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_ACPI=y +CONFIG_MMC_SDHCI_IO_ACCESSORS=y +CONFIG_MMC_SDHCI_PCI=y +# CONFIG_MMC_SDHCI_PLTFM is not set +# CONFIG_MMC_TIFM_SD is not set +# CONFIG_MMC_WBSD is not set +CONFIG_MMU_NOTIFIER=y +CONFIG_MODULES_USE_ELF_RELA=y +# CONFIG_MPSC is not set +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_ND_BLK=y +CONFIG_ND_BTT=y +CONFIG_ND_CLAIM=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NET_FAILOVER=y +CONFIG_NET_FLOW_LIMIT=y +# CONFIG_NITRO_ENCLAVES is not set +CONFIG_NR_CPUS=8 +CONFIG_NR_CPUS_DEFAULT=64 +CONFIG_NR_CPUS_RANGE_BEGIN=2 +CONFIG_NR_CPUS_RANGE_END=512 +CONFIG_NVME_CORE=y +# CONFIG_NVME_HWMON is not set +CONFIG_NVME_MULTIPATH=y +# CONFIG_NVME_TCP is not set +CONFIG_OUTPUT_FORMAT="elf64-x86-64" +CONFIG_PADATA=y +CONFIG_PAGE_POOL=y +CONFIG_PAGE_REPORTING=y +CONFIG_PAGE_TABLE_ISOLATION=y +CONFIG_PARAVIRT=y +CONFIG_PARAVIRT_CLOCK=y +# CONFIG_PARAVIRT_DEBUG is not set +CONFIG_PARAVIRT_SPINLOCKS=y +CONFIG_PARAVIRT_XXL=y +CONFIG_PATA_AMD=y +CONFIG_PATA_ATIIXP=y +CONFIG_PATA_MPIIX=y +CONFIG_PATA_OLDPIIX=y +CONFIG_PATA_PLATFORM=y +CONFIG_PATA_TIMINGS=y +CONFIG_PATA_VIA=y +CONFIG_PCC=y +# CONFIG_PCENGINES_APU2 is not set +CONFIG_PCIEAER=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIE_PME=y +CONFIG_PCI_HYPERV=y +CONFIG_PCI_HYPERV_INTERFACE=y +# CONFIG_PCI_MMCONFIG is not set +CONFIG_PCI_XEN=y +CONFIG_PGTABLE_LEVELS=4 +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PINCTRL=y +# CONFIG_PINCTRL_BAYTRAIL is not set +# CONFIG_PINCTRL_BROXTON is not set +# CONFIG_PINCTRL_CANNONLAKE is not set +# CONFIG_PINCTRL_CHERRYVIEW is not set +# CONFIG_PINCTRL_DENVERTON is not set +# CONFIG_PINCTRL_EMMITSBURG is not set +# CONFIG_PINCTRL_GEMINILAKE is not set +# CONFIG_PINCTRL_JASPERLAKE is not set +# CONFIG_PINCTRL_LEWISBURG is not set +# CONFIG_PINCTRL_LYNXPOINT is not set +# CONFIG_PINCTRL_SUNRISEPOINT is not set +# CONFIG_PINCTRL_TIGERLAKE is not set +CONFIG_PM=y +# CONFIG_PMIC_OPREGION is not set +CONFIG_PM_CLK=y +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_PNP=y +CONFIG_PNPACPI=y +CONFIG_PNP_DEBUG_MESSAGES=y +CONFIG_PROC_EVENTS=y +CONFIG_PVH=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_RAS=y +CONFIG_RCU_NEED_SEGCBLIST=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RELAY=y +CONFIG_RELOCATABLE=y +CONFIG_RESET_ATTACK_MITIGATION=y +CONFIG_RFS_ACCEL=y +CONFIG_RPS=y +CONFIG_RTC_I2C_AND_SPI=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +# CONFIG_SAMSUNG_Q10 is not set +CONFIG_SATA_AHCI=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_MC_PRIO=y +CONFIG_SCHED_SMT=y +CONFIG_SCSI_VIRTIO=y +# CONFIG_SENSORS_AMD_ENERGY is not set +CONFIG_SENSORS_CORETEMP=y +CONFIG_SENSORS_FAM15H_POWER=y +CONFIG_SENSORS_I5500=y +CONFIG_SENSORS_K10TEMP=y +CONFIG_SENSORS_K8TEMP=y +CONFIG_SENSORS_VIA_CPUTEMP=y +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_MCTRL_GPIO=y +CONFIG_SMP=y +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_MANUAL=y +# CONFIG_SPARSEMEM_VMEMMAP is not set +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_STACK_VALIDATION=y +# CONFIG_SURFACE_3_POWER_OPREGION is not set +# CONFIG_SURFACE_PRO3_BUTTON is not set +CONFIG_SWIOTLB=y +CONFIG_SWIOTLB_XEN=y +CONFIG_SYNC_FILE=y +# CONFIG_SYSTEM76_ACPI is not set +CONFIG_SYS_HYPERVISOR=y +CONFIG_THERMAL_GOV_USER_SPACE=y +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +# CONFIG_TOSHIBA_BT_RFKILL is not set +CONFIG_TREE_RCU=y +CONFIG_TREE_SRCU=y +# CONFIG_UCLAMP_TASK is not set +CONFIG_UCS2_STRING=y +# CONFIG_UNWINDER_ORC is not set +CONFIG_USB_STORAGE=y +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_VIRTIO_DMA_SHARED_BUFFER=y +CONFIG_VIRTIO_MMIO=y +# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set +CONFIG_VIRTIO_NET=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_PCI_LEGACY=y +# CONFIG_VIRTIO_PMEM is not set +# CONFIG_VIRTIO_VSOCKETS is not set +CONFIG_VIRTIO_VSOCKETS_COMMON=y +CONFIG_VIRT_DRIVERS=y +CONFIG_VMAP_PFN=y +CONFIG_VMAP_STACK=y +# CONFIG_VMD is not set +CONFIG_VMWARE_BALLOON=y +CONFIG_VMWARE_PVSCSI=y +CONFIG_VMWARE_VMCI=y +CONFIG_VMWARE_VMCI_VSOCKETS=y +CONFIG_VMXNET3=y +CONFIG_VSOCKETS=y +CONFIG_VSOCKETS_LOOPBACK=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_X86_5LEVEL is not set +CONFIG_X86_64=y +CONFIG_X86_64_SMP=y +CONFIG_X86_ACPI_CPUFREQ=y +# CONFIG_X86_ACPI_CPUFREQ_CPB is not set +CONFIG_X86_AMD_FREQ_SENSITIVITY=y +# CONFIG_X86_AMD_PLATFORM_DEVICE is not set +CONFIG_X86_CPUID=y +CONFIG_X86_DIRECT_GBPAGES=y +CONFIG_X86_HV_CALLBACK_VECTOR=y +CONFIG_X86_INTEL_LPSS=y +# CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS is not set +CONFIG_X86_INTEL_PSTATE=y +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +# CONFIG_X86_PCC_CPUFREQ is not set +CONFIG_X86_PKG_TEMP_THERMAL=y +# CONFIG_X86_PMEM_LEGACY is not set +CONFIG_X86_PM_TIMER=y +# CONFIG_X86_POWERNOW_K8 is not set +# CONFIG_X86_VSYSCALL_EMULATION is not set +CONFIG_X86_X2APIC=y +# CONFIG_X86_X32 is not set +CONFIG_XEN=y +CONFIG_XENFS=y +CONFIG_XEN_512GB=y +CONFIG_XEN_ACPI=y +CONFIG_XEN_ACPI_PROCESSOR=y +CONFIG_XEN_AUTO_XLATE=y +# CONFIG_XEN_BACKEND is not set +CONFIG_XEN_BALLOON=y +CONFIG_XEN_BLKDEV_FRONTEND=y +CONFIG_XEN_COMPAT_XENFS=y +CONFIG_XEN_DEBUG_FS=y +CONFIG_XEN_DEV_EVTCHN=y +CONFIG_XEN_DOM0=y +CONFIG_XEN_EFI=y +CONFIG_XEN_FBDEV_FRONTEND=y +CONFIG_XEN_GNTDEV=y +CONFIG_XEN_GRANT_DEV_ALLOC=y +CONFIG_XEN_HAVE_PVMMU=y +CONFIG_XEN_HAVE_VPMU=y +# CONFIG_XEN_MCE_LOG is not set +CONFIG_XEN_NETDEV_FRONTEND=y +CONFIG_XEN_PCIDEV_FRONTEND=y +CONFIG_XEN_PRIVCMD=y +CONFIG_XEN_PV=y +CONFIG_XEN_PVH=y +CONFIG_XEN_PVHVM=y +CONFIG_XEN_PVHVM_SMP=y +CONFIG_XEN_PV_SMP=y +CONFIG_XEN_SAVE_RESTORE=y +CONFIG_XEN_SCSI_FRONTEND=y +CONFIG_XEN_SYMS=y +CONFIG_XEN_SYS_HYPERVISOR=y +CONFIG_XEN_WDT=y +CONFIG_XEN_XENBUS_FRONTEND=y +CONFIG_XPS=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZONE_DMA32=y diff --git a/target/linux/x86/Makefile b/target/linux/x86/Makefile index c78eac0094..0ab322d8bc 100644 --- a/target/linux/x86/Makefile +++ b/target/linux/x86/Makefile @@ -11,7 +11,7 @@ FEATURES:=squashfs ext4 vdi vmdk pcmcia targz fpu boot-part rootfs-part SUBTARGETS:=generic legacy geode 64 KERNEL_PATCHVER:=5.4 -KERNEL_TESTING_PATCHVER:=5.4 +KERNEL_TESTING_PATCHVER:=5.10 KERNELNAME:=bzImage diff --git a/target/linux/x86/config-5.10 b/target/linux/x86/config-5.10 new file mode 100644 index 0000000000..c90700af29 --- /dev/null +++ b/target/linux/x86/config-5.10 @@ -0,0 +1,432 @@ +# CONFIG_60XX_WDT is not set +# CONFIG_64BIT is not set +# CONFIG_ACPI is not set +# CONFIG_ACQUIRE_WDT is not set +# CONFIG_ADVANTECH_WDT is not set +# CONFIG_ALIM1535_WDT is not set +# CONFIG_ALIX is not set +CONFIG_AMD_NB=y +CONFIG_ARCH_32BIT_OFF_T=y +CONFIG_ARCH_CLOCKSOURCE_INIT=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +CONFIG_ARCH_RANDOM=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPLIT_ARG64=y +CONFIG_ARCH_STACKWALK=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_USES_PG_UNCACHED=y +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y +CONFIG_ATA=y +CONFIG_ATA_GENERIC=y +CONFIG_ATA_PIIX=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_SCSI_REQUEST=y +CONFIG_BOUNCE=y +CONFIG_CLKBLD_I8253=y +CONFIG_CLKDEV_LOOKUP=y +CONFIG_CLKEVT_I8253=y +CONFIG_CLKSRC_I8253=y +CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_COMMON_CLK=y +CONFIG_COMPAT_32=y +CONFIG_COMPAT_32BIT_TIME=y +# CONFIG_COMPAT_VDSO is not set +CONFIG_CONSOLE_TRANSLATIONS=y +# CONFIG_CPU5_WDT is not set +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_GOV_COMMON=y +# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_CPU_SUP_CYRIX_32=y +CONFIG_CPU_SUP_HYGON=y +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_TRANSMETA_32=y +CONFIG_CPU_SUP_UMC_32=y +CONFIG_CPU_SUP_ZHAOXIN=y +CONFIG_CRASH_CORE=y +CONFIG_CRC16=y +CONFIG_CRYPTO_CRC32=y +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32_PCLMUL is not set +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1 +CONFIG_CRYPTO_RNG2=y +# CONFIG_CRYPTO_SERPENT_SSE2_586 is not set +# CONFIG_CX_ECAT is not set +CONFIG_DCACHE_WORD_ACCESS=y +# CONFIG_DCDBAS is not set +# CONFIG_DEBUG_BOOT_PARAMS is not set +# CONFIG_DEBUG_ENTRY is not set +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_DEBUG_MISC=y +# CONFIG_DEBUG_NMI_SELFTEST is not set +# CONFIG_DEBUG_TLBFLUSH is not set +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_GZIP=y +# CONFIG_DELL_RBU is not set +CONFIG_DMADEVICES=y +CONFIG_DMI=y +CONFIG_DMIID=y +CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y +CONFIG_DMI_SYSFS=y +CONFIG_DNOTIFY=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_EARLY_PRINTK=y +# CONFIG_EARLY_PRINTK_DBGP is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y +# CONFIG_EDD is not set +# CONFIG_EISA is not set +# CONFIG_EUROTECH_WDT is not set +CONFIG_EXT4_FS=y +CONFIG_F2FS_FS=y +# CONFIG_F71808E_WDT is not set +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_FRAME_POINTER=y +CONFIG_FS_IOMAP=y +CONFIG_FS_MBCACHE=y +CONFIG_FUSION=y +# CONFIG_FUSION_CTL is not set +# CONFIG_FUSION_LOGGING is not set +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_SPI=y +CONFIG_FW_LOADER_PAGED_BUF=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_GENERIC_EARLY_IOREMAP=y +CONFIG_GENERIC_ENTRY=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y +CONFIG_GENERIC_IRQ_RESERVATION_MODE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_VDSO_32=y +# CONFIG_GEOS is not set +CONFIG_GLOB=y +# CONFIG_HANGCHECK_TIMER is not set +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HID=y +CONFIG_HIGHMEM=y +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set +# CONFIG_HIGHPTE is not set +CONFIG_HPET_EMULATE_RTC=y +CONFIG_HPET_TIMER=y +# CONFIG_HP_WATCHDOG is not set +CONFIG_HW_CONSOLE=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_GEODE=y +CONFIG_HW_RANDOM_VIA=y +# CONFIG_HYPERVISOR_GUEST is not set +CONFIG_HZ=250 +CONFIG_HZ_250=y +CONFIG_HZ_PERIODIC=y +CONFIG_I8253_LOCK=y +# CONFIG_I8K is not set +CONFIG_IA32_FEAT_CTL=y +# CONFIG_IB700_WDT is not set +# CONFIG_IBMASR is not set +# CONFIG_IBM_RTL is not set +# CONFIG_IE6XX_WDT is not set +CONFIG_ILLEGAL_POINTER_VALUE=0 +CONFIG_INITRAMFS_SOURCE="" +CONFIG_INPUT=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INSTRUCTION_DECODER=y +# CONFIG_INTEL_PCH_THERMAL is not set +# CONFIG_INTEL_POWERCLAMP is not set +# CONFIG_INTEL_SCU_PCI is not set +# CONFIG_IOSF_MBI is not set +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_NONE is not set +# CONFIG_IO_DELAY_UDELAY is not set +CONFIG_IO_URING=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_IRQ_WORK=y +# CONFIG_ISA is not set +CONFIG_ISA_DMA_API=y +# CONFIG_IT8712F_WDT is not set +# CONFIG_IT87_WDT is not set +# CONFIG_ITCO_WDT is not set +CONFIG_JBD2=y +CONFIG_KALLSYMS=y +CONFIG_KEXEC=y +CONFIG_KEXEC_CORE=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_LEDS_CLEVO_MAIL is not set +CONFIG_LLD_VERSION=0 +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_M486 is not set +# CONFIG_M486SX is not set +# CONFIG_M586 is not set +# CONFIG_M586MMX is not set +# CONFIG_M586TSC is not set +CONFIG_M686=y +# CONFIG_MACHZ_WDT is not set +# CONFIG_MATOM is not set +# CONFIG_MCORE2 is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MEFFICEON is not set +# CONFIG_MELAN is not set +CONFIG_MEMFD_CREATE=y +# CONFIG_MFD_INTEL_LPSS_PCI is not set +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +CONFIG_MICROCODE=y +CONFIG_MICROCODE_AMD=y +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_OLD_INTERFACE=y +CONFIG_MIGRATION=y +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MODIFY_LDT_SYSCALL is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_MODULES_USE_ELF_REL=y +# CONFIG_MPENTIUM4 is not set +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +# CONFIG_MTD is not set +CONFIG_MTRR=y +# CONFIG_MTRR_SANITIZER is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MWINCHIPC6 is not set +CONFIG_NAMESPACES=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_KM=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_NEED_SG_DMA_LENGTH=y +# CONFIG_NET5501 is not set +# CONFIG_NET_NS is not set +CONFIG_NLS=y +# CONFIG_NOHIGHMEM is not set +CONFIG_NR_CPUS=1 +CONFIG_NR_CPUS_DEFAULT=1 +CONFIG_NR_CPUS_RANGE_BEGIN=1 +CONFIG_NR_CPUS_RANGE_END=1 +# CONFIG_NSC_GPIO is not set +CONFIG_NVRAM=y +# CONFIG_OF is not set +CONFIG_OLD_SIGACTION=y +CONFIG_OLD_SIGSUSPEND3=y +# CONFIG_OLPC is not set +CONFIG_OPROFILE_NMI_TIMER=y +CONFIG_OUTPUT_FORMAT="elf32-i386" +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PC104=y +# CONFIG_PC8736x_GPIO is not set +# CONFIG_PC87413_WDT is not set +CONFIG_PCI=y +CONFIG_PCI_ATS=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_GOANY=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GODIRECT is not set +# CONFIG_PCI_GOMMCONFIG is not set +CONFIG_PCI_IOV=y +CONFIG_PCI_LABEL=y +CONFIG_PCI_LOCKLESS_CONFIG=y +CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y +CONFIG_PCSPKR_PLATFORM=y +CONFIG_PERF_EVENTS=y +CONFIG_PERF_EVENTS_INTEL_CSTATE=y +CONFIG_PERF_EVENTS_INTEL_RAPL=y +CONFIG_PERF_EVENTS_INTEL_UNCORE=y +CONFIG_PGTABLE_LEVELS=2 +CONFIG_PHYSICAL_ALIGN=0x100000 +CONFIG_PHYSICAL_START=0x1000000 +# CONFIG_PHY_INTEL_LGM_EMMC is not set +CONFIG_PMC_ATOM=y +CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_POWER_SUPPLY=y +# CONFIG_PROCESSOR_SELECT is not set +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_PROC_PID_ARCH_STATUS=y +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_PUNIT_ATOM_DEBUG is not set +CONFIG_RATIONAL=y +CONFIG_RD_BZIP2=y +CONFIG_RD_GZIP=y +CONFIG_RETPOLINE=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_MC146818_LIB=y +CONFIG_SATA_HOST=y +# CONFIG_SBC7240_WDT is not set +# CONFIG_SBC8360_WDT is not set +# CONFIG_SBC_EPX_C3_WATCHDOG is not set +# CONFIG_SC1200_WDT is not set +CONFIG_SCSI=y +CONFIG_SCSI_SPI_ATTRS=y +CONFIG_SCx200=y +CONFIG_SCx200HR_TIMER=y +# CONFIG_SCx200_GPIO is not set +# CONFIG_SCx200_WDT is not set +CONFIG_SERIAL_8250_PCI=y +# CONFIG_SERIAL_LANTIQ is not set +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_SERPORT=y +CONFIG_SG_POOL=y +# CONFIG_SMSC37B787_WDT is not set +# CONFIG_SMSC_SCH311X_WDT is not set +CONFIG_SPARSEMEM_STATIC=y +CONFIG_SPARSE_IRQ=y +CONFIG_SRCU=y +# CONFIG_STATIC_CALL_SELFTEST is not set +CONFIG_SYSCTL_EXCEPTION_TRACE=y +# CONFIG_TELCLOCK is not set +# CONFIG_TEST_FPU is not set +CONFIG_THERMAL=y +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THREAD_INFO_IN_TASK=y +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TINY_SRCU=y +# CONFIG_TOSHIBA is not set +# CONFIG_TQMX86_WDT is not set +CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y +CONFIG_UNWINDER_FRAME_POINTER=y +# CONFIG_UNWINDER_GUESS is not set +CONFIG_UP_LATE_INIT=y +CONFIG_USB=y +CONFIG_USB_COMMON=y +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +CONFIG_USB_EHCI_PCI=y +CONFIG_USB_HID=y +CONFIG_USB_HIDDEV=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +# CONFIG_USB_OHCI_HCD_PLATFORM is not set +CONFIG_USB_PCI=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_PCI=y +# CONFIG_USB_XHCI_PLATFORM is not set +# CONFIG_USERIO is not set +# CONFIG_USER_NS is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_VGA_CONSOLE=y +# CONFIG_VIA_WDT is not set +# CONFIG_VMWARE_VMCI is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +# CONFIG_WAFER_WDT is not set +CONFIG_X86=y +CONFIG_X86_32=y +# CONFIG_X86_32_IRIS is not set +CONFIG_X86_32_LAZY_GS=y +# CONFIG_X86_ANCIENT_MCE is not set +# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set +CONFIG_X86_CMOV=y +CONFIG_X86_CMPXCHG64=y +# CONFIG_X86_CPA_STATISTICS is not set +# CONFIG_X86_CPUFREQ_NFORCE2 is not set +# CONFIG_X86_CPUID is not set +# CONFIG_X86_CPU_RESCTRL is not set +CONFIG_X86_DEBUGCTLMSR=y +# CONFIG_X86_DEBUG_FPU is not set +# CONFIG_X86_DECODER_SELFTEST is not set +# CONFIG_X86_EXTENDED_PLATFORM is not set +CONFIG_X86_FEATURE_NAMES=y +CONFIG_X86_GENERIC=y +# CONFIG_X86_GX_SUSPMOD is not set +# CONFIG_X86_INTEL_PSTATE is not set +# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set +CONFIG_X86_INTEL_TSX_MODE_OFF=y +# CONFIG_X86_INTEL_TSX_MODE_ON is not set +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 +CONFIG_X86_IOPL_IOPERM=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_L1_CACHE_SHIFT=6 +# CONFIG_X86_LEGACY_VM86 is not set +CONFIG_X86_LOCAL_APIC=y +# CONFIG_X86_LONGRUN is not set +CONFIG_X86_MCE=y +# CONFIG_X86_MCELOG_LEGACY is not set +CONFIG_X86_MCE_AMD=y +# CONFIG_X86_MCE_INJECT is not set +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_THRESHOLD=y +CONFIG_X86_MINIMUM_CPU_FAMILY=6 +CONFIG_X86_MPPARSE=y +CONFIG_X86_MSR=y +# CONFIG_X86_P4_CLOCKMOD is not set +CONFIG_X86_PAT=y +CONFIG_X86_PLATFORM_DEVICES=y +# CONFIG_X86_POWERNOW_K6 is not set +# CONFIG_X86_POWERNOW_K7 is not set +# CONFIG_X86_REBOOTFIXUPS is not set +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_RESERVE_LOW=64 +CONFIG_X86_SMAP=y +# CONFIG_X86_SPEEDSTEP_CENTRINO is not set +# CONFIG_X86_SPEEDSTEP_ICH is not set +# CONFIG_X86_SPEEDSTEP_SMI is not set +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +CONFIG_X86_THERMAL_VECTOR=y +CONFIG_X86_TSC=y +CONFIG_X86_UMIP=y +CONFIG_X86_UP_APIC=y +CONFIG_X86_UP_IOAPIC=y +CONFIG_X86_USE_PPRO_CHECKSUM=y +CONFIG_X86_VERBOSE_BOOTUP=y +CONFIG_X86_VMX_FEATURE_NAMES=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_XZ_DEC_X86=y +CONFIG_ZLIB_INFLATE=y diff --git a/target/linux/x86/generic/config-5.10 b/target/linux/x86/generic/config-5.10 new file mode 100644 index 0000000000..0ba0079a1b --- /dev/null +++ b/target/linux/x86/generic/config-5.10 @@ -0,0 +1,459 @@ +# CONFIG_3C515 is not set +CONFIG_ACPI=y +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y +# CONFIG_ACPI_BGRT is not set +CONFIG_ACPI_BUTTON=y +# CONFIG_ACPI_CMPC is not set +CONFIG_ACPI_CONTAINER=y +CONFIG_ACPI_CPU_FREQ_PSS=y +# CONFIG_ACPI_DEBUG is not set +# CONFIG_ACPI_DEBUGGER is not set +# CONFIG_ACPI_DOCK is not set +# CONFIG_ACPI_DPTF is not set +# CONFIG_ACPI_EC_DEBUGFS is not set +# CONFIG_ACPI_FAN is not set +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_HOTPLUG_IOAPIC=y +# CONFIG_ACPI_I2C_OPREGION is not set +CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y +# CONFIG_ACPI_PCI_SLOT is not set +CONFIG_ACPI_PROCESSOR=y +# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set +CONFIG_ACPI_PROCESSOR_CSTATE=y +CONFIG_ACPI_PROCESSOR_IDLE=y +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y +# CONFIG_ACPI_SBS is not set +CONFIG_ACPI_SPCR_TABLE=y +CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y +CONFIG_ACPI_TAD=y +CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_VIDEO=y +# CONFIG_ACPI_WMI is not set +CONFIG_AGP=y +# CONFIG_AGP_ALI is not set +# CONFIG_AGP_AMD is not set +# CONFIG_AGP_AMD64 is not set +# CONFIG_AGP_ATI is not set +# CONFIG_AGP_EFFICEON is not set +CONFIG_AGP_INTEL=y +# CONFIG_AGP_NVIDIA is not set +# CONFIG_AGP_SIS is not set +# CONFIG_AGP_SWORKS is not set +# CONFIG_AGP_VIA is not set +# CONFIG_APM is not set +CONFIG_ARCH_CPUIDLE_HALTPOLL=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BALLOON_COMPACTION=y +CONFIG_BLK_DEV_SR=y +CONFIG_BLK_MQ_VIRTIO=y +CONFIG_BLK_PM=y +# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set +CONFIG_BTT=y +CONFIG_CDROM=y +CONFIG_CONNECTOR=y +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y +# CONFIG_CPU_IDLE_GOV_HALTPOLL is not set +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_CPU_RMAP=y +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_NULL2=y +# CONFIG_DEBUG_HOTPLUG_CPU0 is not set +CONFIG_DMA_ACPI=y +CONFIG_DMA_OPS=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DRM=y +CONFIG_DRM_BOCHS=y +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +CONFIG_DRM_GEM_SHMEM_HELPER=y +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_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_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_FB_HELPER=y +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_MIPI_DSI=y +CONFIG_DRM_PANEL=y +CONFIG_DRM_PANEL_BRIDGE=y +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y +CONFIG_DRM_TTM=y +CONFIG_DRM_TTM_DMA_PAGE_POOL=y +CONFIG_DRM_TTM_HELPER=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_DRM_VRAM_HELPER=y +CONFIG_EFI=y +CONFIG_EFIVAR_FS=m +# CONFIG_EFI_BOOTLOADER_CONTROL is not set +# CONFIG_EFI_CAPSULE_LOADER is not set +# CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH is not set +# CONFIG_EFI_CUSTOM_SSDT_OVERLAYS is not set +# CONFIG_EFI_DISABLE_PCI_DMA is not set +CONFIG_EFI_EARLYCON=y +CONFIG_EFI_ESRT=y +# CONFIG_EFI_FAKE_MEMMAP is not set +CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y +# CONFIG_EFI_PGT_DUMP is not set +# CONFIG_EFI_RCI2_TABLE is not set +CONFIG_EFI_RUNTIME_MAP=y +CONFIG_EFI_RUNTIME_WRAPPERS=y +CONFIG_EFI_STUB=y +# CONFIG_EFI_TEST is not set +# CONFIG_EFI_VARS is not set +# CONFIG_EL3 is not set +CONFIG_FAILOVER=y +CONFIG_FB=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_CMDLINE=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_EFI=y +CONFIG_FB_HYPERV=y +# CONFIG_FB_I810 is not set +CONFIG_FB_SIMPLE=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +# CONFIG_FB_VESA is not set +CONFIG_FONT_8x16=y +CONFIG_FONT_8x8=y +CONFIG_FONT_SUPPORT=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_FREEZER=y +CONFIG_FW_CACHE=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GENERIC_PINCONF=y +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_IRQCHIP=y +CONFIG_GPIO_ACPI=y +CONFIG_GUP_GET_PTE_LOW_HIGH=y +CONFIG_HALTPOLL_CPUIDLE=y +CONFIG_HDMI=y +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HID_GENERIC=y +CONFIG_HID_HYPERV_MOUSE=y +# CONFIG_HIGHMEM4G is not set +CONFIG_HIGHMEM64G=y +CONFIG_HOTPLUG_CPU=y +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=y +# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set +# CONFIG_HOTPLUG_PCI_COMPAQ is not set +# CONFIG_HOTPLUG_PCI_CPCI is not set +# CONFIG_HOTPLUG_PCI_IBM is not set +CONFIG_HOTPLUG_PCI_PCIE=y +# CONFIG_HOTPLUG_PCI_SHPC is not set +CONFIG_HOTPLUG_SMT=y +CONFIG_HPET=y +CONFIG_HPET_MMAP=y +# CONFIG_HP_ACCEL is not set +CONFIG_HVC_DRIVER=y +CONFIG_HVC_IRQ=y +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y +CONFIG_HWMON=y +CONFIG_HWMON_VID=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_HYPERV=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_HYPERV_BALLOON=y +CONFIG_HYPERV_KEYBOARD=y +CONFIG_HYPERV_NET=y +CONFIG_HYPERV_STORAGE=y +# CONFIG_HYPERV_TESTING is not set +CONFIG_HYPERV_TIMER=y +CONFIG_HYPERV_UTILS=y +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=y +# CONFIG_I2C_AMD_MP2 is not set +CONFIG_I2C_BOARDINFO=y +# CONFIG_I2C_MULTI_INSTANTIATE is not set +# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y +CONFIG_INTEL_GTT=y +CONFIG_INTEL_IDLE=y +# CONFIG_INTEL_INT0002_VGPIO is not set +# CONFIG_INTEL_IPS is not set +# CONFIG_INTEL_MEI_HDCP is not set +# CONFIG_INTEL_MENLOW is not set +CONFIG_INTEL_PCH_THERMAL=y +# CONFIG_INTEL_SCU_PLATFORM is not set +CONFIG_INTEL_SOC_DTS_IOSF_CORE=y +CONFIG_INTEL_SOC_DTS_THERMAL=y +CONFIG_INTERVAL_TREE=y +CONFIG_IOSF_MBI=y +# CONFIG_IOSF_MBI_DEBUG is not set +CONFIG_IRQ_BYPASS_MANAGER=y +CONFIG_ISA=y +CONFIG_ISAPNP=y +CONFIG_ISA_BUS_API=y +# CONFIG_ISCSI_IBFT is not set +CONFIG_ISO9660_FS=y +# CONFIG_JOLIET is not set +CONFIG_KCMP=y +CONFIG_KVM=y +CONFIG_KVM_AMD=y +CONFIG_KVM_ASYNC_PF=y +CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +CONFIG_KVM_GUEST=y +CONFIG_KVM_INTEL=y +CONFIG_KVM_MMIO=y +CONFIG_KVM_VFIO=y +# CONFIG_KVM_WERROR is not set +CONFIG_KVM_XFER_TO_GUEST_WORK=y +# CONFIG_LANCE is not set +CONFIG_LIBNVDIMM=y +CONFIG_LOCK_SPIN_ON_OWNER=y +# CONFIG_M686 is not set +# CONFIG_MDA_CONSOLE is not set +CONFIG_MEMORY_BALLOON=y +CONFIG_MEMREGION=y +CONFIG_MFD_CORE=y +CONFIG_MFD_INTEL_LPSS=y +CONFIG_MFD_INTEL_LPSS_ACPI=y +# CONFIG_MFD_INTEL_PMC_BXT is not set +# CONFIG_MIXCOMWD is not set +CONFIG_MMC=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_CQHCI=y +CONFIG_MMC_RICOH_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_IO_ACCESSORS=y +CONFIG_MMC_SDHCI_PCI=y +# CONFIG_MMC_SDHCI_PLTFM is not set +# CONFIG_MMC_TIFM_SD is not set +# CONFIG_MMC_WBSD is not set +CONFIG_MMU_NOTIFIER=y +# CONFIG_MOUSE_BCM5974 is not set +# CONFIG_MOUSE_CYAPA is not set +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +# CONFIG_MOUSE_PS2_BYD is not set +# CONFIG_MOUSE_PS2_CYPRESS is not set +# CONFIG_MOUSE_PS2_ELANTECH is not set +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SMBUS=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +CONFIG_MOUSE_PS2_TRACKPOINT=y +# CONFIG_MOUSE_PS2_VMMOUSE is not set +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_VSXXXAA is not set +CONFIG_MPENTIUM4=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_ND_BLK=y +CONFIG_ND_BTT=y +CONFIG_ND_CLAIM=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NET_FAILOVER=y +CONFIG_NET_FLOW_LIMIT=y +CONFIG_NO_HZ=y +CONFIG_NR_CPUS=4 +CONFIG_NR_CPUS_DEFAULT=8 +CONFIG_NR_CPUS_RANGE_BEGIN=2 +CONFIG_NR_CPUS_RANGE_END=8 +CONFIG_PADATA=y +CONFIG_PAGE_POOL=y +CONFIG_PAGE_REPORTING=y +CONFIG_PAGE_TABLE_ISOLATION=y +CONFIG_PARAVIRT=y +CONFIG_PARAVIRT_CLOCK=y +# CONFIG_PARAVIRT_DEBUG is not set +CONFIG_PARAVIRT_SPINLOCKS=y +CONFIG_PATA_AMD=y +CONFIG_PATA_ATIIXP=y +CONFIG_PATA_MPIIX=y +CONFIG_PATA_OLDPIIX=y +CONFIG_PATA_PLATFORM=y +CONFIG_PATA_SC1200=y +CONFIG_PATA_TIMINGS=y +CONFIG_PATA_VIA=y +# CONFIG_PCENGINES_APU2 is not set +CONFIG_PCIEAER=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIE_PME=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_XEN=y +# CONFIG_PCWATCHDOG is not set +CONFIG_PGTABLE_LEVELS=3 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_BROXTON=y +CONFIG_PINCTRL_CANNONLAKE=y +CONFIG_PINCTRL_CHERRYVIEW=y +CONFIG_PINCTRL_DENVERTON=y +# CONFIG_PINCTRL_EMMITSBURG is not set +CONFIG_PINCTRL_GEMINILAKE=y +CONFIG_PINCTRL_INTEL=y +# CONFIG_PINCTRL_JASPERLAKE is not set +# CONFIG_PINCTRL_LEWISBURG is not set +# CONFIG_PINCTRL_LYNXPOINT is not set +CONFIG_PINCTRL_SUNRISEPOINT=y +# CONFIG_PINCTRL_TIGERLAKE is not set +CONFIG_PM=y +# CONFIG_PMIC_OPREGION is not set +CONFIG_PM_CLK=y +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_PNP=y +CONFIG_PNPACPI=y +# CONFIG_PNPBIOS is not set +CONFIG_PNP_DEBUG_MESSAGES=y +CONFIG_PREEMPT_NOTIFIERS=y +CONFIG_PROC_EVENTS=y +CONFIG_PVH=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_RAS=y +CONFIG_RCU_NEED_SEGCBLIST=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RELAY=y +CONFIG_RELOCATABLE=y +CONFIG_RESET_ATTACK_MITIGATION=y +CONFIG_RFS_ACCEL=y +CONFIG_RPS=y +CONFIG_RTC_I2C_AND_SPI=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +# CONFIG_SAMSUNG_Q10 is not set +CONFIG_SATA_AHCI=y +CONFIG_SATA_VIA=y +CONFIG_SCHED_INFO=y +CONFIG_SCHED_SMT=y +# CONFIG_SCSI_FDOMAIN_ISA is not set +CONFIG_SCSI_VIRTIO=y +# CONFIG_SENSORS_AMD_ENERGY is not set +CONFIG_SENSORS_CORETEMP=y +CONFIG_SENSORS_FAM15H_POWER=y +CONFIG_SENSORS_I5500=y +CONFIG_SENSORS_K10TEMP=y +CONFIG_SENSORS_K8TEMP=y +CONFIG_SENSORS_VIA_CPUTEMP=y +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_MCTRL_GPIO=y +CONFIG_SMP=y +# CONFIG_SURFACE_3_POWER_OPREGION is not set +# CONFIG_SURFACE_PRO3_BUTTON is not set +CONFIG_SWIOTLB=y +CONFIG_SWIOTLB_XEN=y +CONFIG_SYNC_FILE=y +# CONFIG_SYSTEM76_ACPI is not set +CONFIG_SYS_HYPERVISOR=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_THERMAL_GOV_USER_SPACE=y +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +# CONFIG_TOSHIBA_BT_RFKILL is not set +CONFIG_TREE_RCU=y +CONFIG_TREE_SRCU=y +# CONFIG_UCLAMP_TASK is not set +CONFIG_UCS2_STRING=y +CONFIG_USB_STORAGE=y +CONFIG_USER_RETURN_NOTIFIER=y +CONFIG_VHOST=y +CONFIG_VHOST_IOTLB=y +CONFIG_VHOST_NET=y +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_VIRTIO_DMA_SHARED_BUFFER=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set +CONFIG_VIRTIO_NET=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_PCI_LEGACY=y +# CONFIG_VIRTIO_PMEM is not set +CONFIG_VIRTUALIZATION=y +CONFIG_VMAP_PFN=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WDT is not set +CONFIG_X86_32_SMP=y +CONFIG_X86_ACPI_CPUFREQ=y +# CONFIG_X86_ACPI_CPUFREQ_CPB is not set +CONFIG_X86_AMD_FREQ_SENSITIVITY=y +# CONFIG_X86_AMD_PLATFORM_DEVICE is not set +# CONFIG_X86_BIGSMP is not set +CONFIG_X86_CPUID=y +# CONFIG_X86_E_POWERSAVER is not set +CONFIG_X86_HV_CALLBACK_VECTOR=y +CONFIG_X86_INTEL_LPSS=y +CONFIG_X86_INTEL_PSTATE=y +CONFIG_X86_INTERNODE_CACHE_SHIFT=7 +CONFIG_X86_L1_CACHE_SHIFT=7 +# CONFIG_X86_LONGHAUL is not set +CONFIG_X86_NEED_RELOCS=y +CONFIG_X86_PAE=y +# CONFIG_X86_PCC_CPUFREQ is not set +CONFIG_X86_PKG_TEMP_THERMAL=y +# CONFIG_X86_PMEM_LEGACY is not set +CONFIG_X86_PM_TIMER=y +# CONFIG_X86_POWERNOW_K8 is not set +CONFIG_XEN=y +CONFIG_XENFS=y +CONFIG_XEN_ACPI=y +CONFIG_XEN_AUTO_XLATE=y +# CONFIG_XEN_BACKEND is not set +CONFIG_XEN_BALLOON=y +CONFIG_XEN_BLKDEV_FRONTEND=y +CONFIG_XEN_COMPAT_XENFS=y +CONFIG_XEN_DEBUG_FS=y +CONFIG_XEN_DEV_EVTCHN=y +CONFIG_XEN_FBDEV_FRONTEND=y +CONFIG_XEN_GNTDEV=y +CONFIG_XEN_GRANT_DEV_ALLOC=y +CONFIG_XEN_NETDEV_FRONTEND=y +CONFIG_XEN_PCIDEV_FRONTEND=y +CONFIG_XEN_PRIVCMD=y +CONFIG_XEN_PVH=y +CONFIG_XEN_PVHVM=y +CONFIG_XEN_PVHVM_SMP=y +CONFIG_XEN_SAVE_RESTORE=y +CONFIG_XEN_SCSI_FRONTEND=y +CONFIG_XEN_SYS_HYPERVISOR=y +CONFIG_XEN_WDT=y +CONFIG_XEN_XENBUS_FRONTEND=y +CONFIG_XPS=y +CONFIG_ZLIB_DEFLATE=y diff --git a/target/linux/x86/geode/config-5.10 b/target/linux/x86/geode/config-5.10 new file mode 100644 index 0000000000..c54a2eb610 --- /dev/null +++ b/target/linux/x86/geode/config-5.10 @@ -0,0 +1,139 @@ +# CONFIG_3C515 is not set +CONFIG_8139CP=y +CONFIG_8139TOO=y +CONFIG_8139TOO_8129=y +CONFIG_8139TOO_PIO=y +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_ACPI=y +CONFIG_ACPI_AC=y +# CONFIG_ACPI_BATTERY is not set +# CONFIG_ACPI_CMPC is not set +# CONFIG_ACPI_CONTAINER is not set +CONFIG_ACPI_CPU_FREQ_PSS=y +# CONFIG_ACPI_DEBUG is not set +# CONFIG_ACPI_DEBUGGER is not set +# CONFIG_ACPI_DOCK is not set +# CONFIG_ACPI_DPTF is not set +# CONFIG_ACPI_EC_DEBUGFS is not set +CONFIG_ACPI_FAN=y +CONFIG_ACPI_HOTPLUG_IOAPIC=y +CONFIG_ACPI_I2C_OPREGION=y +CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y +# CONFIG_ACPI_PCI_SLOT is not set +CONFIG_ACPI_PROCESSOR=y +# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set +CONFIG_ACPI_PROCESSOR_CSTATE=y +CONFIG_ACPI_PROCESSOR_IDLE=y +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y +# CONFIG_ACPI_SBS is not set +CONFIG_ACPI_SPCR_TABLE=y +CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y +CONFIG_ACPI_THERMAL=y +# CONFIG_ACPI_TINY_POWER_BUTTON is not set +# CONFIG_ACPI_WMI is not set +CONFIG_ALIX=y +CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y +# CONFIG_ATA_PIIX is not set +CONFIG_CS5535_CLOCK_EVENT_SRC=y +CONFIG_CS5535_MFGPT=y +CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7 +CONFIG_DMA_ACPI=y +# CONFIG_EL3 is not set +CONFIG_GEODE_WDT=y +CONFIG_GEOS=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_ACPI=y +CONFIG_GPIO_CS5535=y +# CONFIG_HPET is not set +# CONFIG_HP_ACCEL is not set +CONFIG_HWMON=y +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=y +CONFIG_I2C_ALGOPCA=y +CONFIG_I2C_ALGOPCF=y +# CONFIG_I2C_AMD_MP2 is not set +CONFIG_I2C_BOARDINFO=y +# CONFIG_I2C_MULTI_INSTANTIATE is not set +# CONFIG_INTEL_ATOMISP2_LED is not set +# CONFIG_INTEL_INT0002_VGPIO is not set +# CONFIG_INTEL_IPS is not set +# CONFIG_INTEL_MENLOW is not set +# CONFIG_INTEL_SCU_PLATFORM is not set +# CONFIG_INTEL_SOC_DTS_THERMAL is not set +CONFIG_IOSF_MBI=y +# CONFIG_IOSF_MBI_DEBUG is not set +CONFIG_ISA=y +# CONFIG_ISAPNP is not set +CONFIG_ISA_BUS_API=y +# CONFIG_ISCSI_IBFT is not set +# CONFIG_LANCE is not set +CONFIG_LEDS_GPIO=y +# CONFIG_M686 is not set +# CONFIG_MDA_CONSOLE is not set +CONFIG_MFD_CORE=y +CONFIG_MFD_CS5535=y +# CONFIG_MFD_INTEL_LPSS_ACPI is not set +# CONFIG_MFD_INTEL_PMC_BXT is not set +CONFIG_MGEODEGX1=y +# CONFIG_MIXCOMWD is not set +CONFIG_NATSEMI=y +CONFIG_NET5501=y +CONFIG_NSC_GPIO=y +CONFIG_PATA_CS5520=y +CONFIG_PATA_CS5530=y +CONFIG_PATA_CS5535=y +CONFIG_PATA_CS5536=y +CONFIG_PATA_SC1200=y +CONFIG_PC8736x_GPIO=y +# CONFIG_PCENGINES_APU2 is not set +CONFIG_PCI_MMCONFIG=y +# CONFIG_PCWATCHDOG is not set +CONFIG_PINCTRL=y +# CONFIG_PINCTRL_BAYTRAIL is not set +# CONFIG_PINCTRL_BROXTON is not set +# CONFIG_PINCTRL_CANNONLAKE is not set +# CONFIG_PINCTRL_CHERRYVIEW is not set +# CONFIG_PINCTRL_DENVERTON is not set +# CONFIG_PINCTRL_EMMITSBURG is not set +# CONFIG_PINCTRL_GEMINILAKE is not set +# CONFIG_PINCTRL_JASPERLAKE is not set +# CONFIG_PINCTRL_LEWISBURG is not set +# CONFIG_PINCTRL_LYNXPOINT is not set +# CONFIG_PINCTRL_SUNRISEPOINT is not set +# CONFIG_PINCTRL_TIGERLAKE is not set +# CONFIG_PMIC_OPREGION is not set +CONFIG_PNP=y +CONFIG_PNPACPI=y +# CONFIG_PNPBIOS is not set +CONFIG_PNP_DEBUG_MESSAGES=y +CONFIG_RTC_I2C_AND_SPI=y +# CONFIG_SAMSUNG_Q10 is not set +CONFIG_SC1200_WDT=y +# CONFIG_SCSI_FDOMAIN_ISA is not set +CONFIG_SCx200_ACB=y +CONFIG_SCx200_WDT=y +# CONFIG_SENSORS_AMD_ENERGY is not set +CONFIG_SENSORS_LM90=y +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_MCTRL_GPIO=y +# CONFIG_SURFACE_3_POWER_OPREGION is not set +# CONFIG_SURFACE_PRO3_BUTTON is not set +# CONFIG_SYSTEM76_ACPI is not set +# CONFIG_TOSHIBA_BT_RFKILL is not set +# CONFIG_USB_UHCI_HCD is not set +CONFIG_VIA_RHINE=y +CONFIG_VIA_RHINE_MMIO=y +# CONFIG_WDT is not set +# CONFIG_X86_ACPI_CPUFREQ is not set +CONFIG_X86_ALIGNMENT_16=y +# CONFIG_X86_AMD_PLATFORM_DEVICE is not set +CONFIG_X86_CPUID=y +# CONFIG_X86_E_POWERSAVER is not set +CONFIG_X86_INTEL_LPSS=y +# CONFIG_X86_LONGHAUL is not set +# CONFIG_X86_MCE is not set +CONFIG_X86_MINIMUM_CPU_FAMILY=5 +# CONFIG_X86_PCC_CPUFREQ is not set +CONFIG_X86_PM_TIMER=y +CONFIG_X86_REBOOTFIXUPS=y diff --git a/target/linux/x86/legacy/config-5.10 b/target/linux/x86/legacy/config-5.10 new file mode 100644 index 0000000000..2d9dcab7bc --- /dev/null +++ b/target/linux/x86/legacy/config-5.10 @@ -0,0 +1,213 @@ +# CONFIG_3C515 is not set +CONFIG_ACPI=y +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y +CONFIG_ACPI_BUTTON=y +# CONFIG_ACPI_CMPC is not set +# CONFIG_ACPI_CONTAINER is not set +CONFIG_ACPI_CPU_FREQ_PSS=y +# CONFIG_ACPI_DEBUG is not set +# CONFIG_ACPI_DEBUGGER is not set +# CONFIG_ACPI_DOCK is not set +# CONFIG_ACPI_DPTF is not set +# CONFIG_ACPI_EC_DEBUGFS is not set +# CONFIG_ACPI_FAN is not set +CONFIG_ACPI_HOTPLUG_IOAPIC=y +# CONFIG_ACPI_I2C_OPREGION is not set +CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y +# CONFIG_ACPI_PCI_SLOT is not set +CONFIG_ACPI_PROCESSOR=y +# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set +CONFIG_ACPI_PROCESSOR_CSTATE=y +CONFIG_ACPI_PROCESSOR_IDLE=y +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y +# CONFIG_ACPI_SBS is not set +CONFIG_ACPI_SPCR_TABLE=y +CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y +CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_VIDEO=y +# CONFIG_ACPI_WMI is not set +CONFIG_AGP=y +# CONFIG_AGP_ALI is not set +# CONFIG_AGP_AMD is not set +# CONFIG_AGP_AMD64 is not set +# CONFIG_AGP_ATI is not set +# CONFIG_AGP_EFFICEON is not set +CONFIG_AGP_INTEL=y +# CONFIG_AGP_NVIDIA is not set +# CONFIG_AGP_SIS is not set +# CONFIG_AGP_SWORKS is not set +# CONFIG_AGP_VIA is not set +CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BLK_DEV_SR=y +CONFIG_CDROM=y +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_DMA_ACPI=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DRM=y +CONFIG_DRM_AMDGPU=y +# CONFIG_DRM_AMD_DC is not set +# CONFIG_DRM_AMD_DC_SI is not set +CONFIG_DRM_BOCHS=y +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +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_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_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_FB_HELPER=y +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_MIPI_DSI=y +CONFIG_DRM_PANEL=y +CONFIG_DRM_PANEL_BRIDGE=y +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y +CONFIG_DRM_RADEON=y +CONFIG_DRM_SCHED=y +CONFIG_DRM_TTM=y +CONFIG_DRM_TTM_HELPER=y +CONFIG_DRM_VRAM_HELPER=y +# CONFIG_EL3 is not set +CONFIG_FB=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_CMDLINE=y +CONFIG_FB_DEFERRED_IO=y +# CONFIG_FB_I810 is not set +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +# CONFIG_FB_VESA is not set +CONFIG_FONT_8x16=y +CONFIG_FONT_8x8=y +CONFIG_FONT_SUPPORT=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_HDMI=y +CONFIG_HID_BATTERY_STRENGTH=y +# CONFIG_HIGHMEM4G is not set +CONFIG_HPET=y +CONFIG_HPET_MMAP=y +# CONFIG_HP_ACCEL is not set +CONFIG_HWMON=y +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=y +# CONFIG_I2C_AMD_MP2 is not set +CONFIG_I2C_BOARDINFO=y +# CONFIG_I2C_MULTI_INSTANTIATE is not set +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INTEL_GTT=y +CONFIG_INTEL_IDLE=y +# CONFIG_INTEL_IPS is not set +# CONFIG_INTEL_MEI_HDCP is not set +# CONFIG_INTEL_MENLOW is not set +# CONFIG_INTEL_SCU_PLATFORM is not set +# CONFIG_INTEL_SOC_DTS_THERMAL is not set +CONFIG_INTERVAL_TREE=y +CONFIG_IOSF_MBI=y +# CONFIG_IOSF_MBI_DEBUG is not set +CONFIG_ISA=y +CONFIG_ISAPNP=y +CONFIG_ISA_BUS_API=y +# CONFIG_ISCSI_IBFT is not set +CONFIG_ISO9660_FS=y +# CONFIG_JOLIET is not set +CONFIG_KCMP=y +# CONFIG_LANCE is not set +# CONFIG_MDA_CONSOLE is not set +CONFIG_MFD_CORE=y +CONFIG_MFD_INTEL_LPSS=y +CONFIG_MFD_INTEL_LPSS_ACPI=y +# CONFIG_MFD_INTEL_PMC_BXT is not set +# CONFIG_MIXCOMWD is not set +CONFIG_MMU_NOTIFIER=y +# CONFIG_MOUSE_BCM5974 is not set +# CONFIG_MOUSE_CYAPA is not set +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +# CONFIG_MOUSE_PS2_BYD is not set +# CONFIG_MOUSE_PS2_CYPRESS is not set +# CONFIG_MOUSE_PS2_ELANTECH is not set +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SMBUS=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +CONFIG_MOUSE_PS2_TRACKPOINT=y +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_VSXXXAA is not set +CONFIG_NOHIGHMEM=y +CONFIG_NO_HZ=y +CONFIG_PATA_AMD=y +CONFIG_PATA_ATIIXP=y +CONFIG_PATA_LEGACY=y +CONFIG_PATA_MPIIX=y +CONFIG_PATA_OLDPIIX=y +CONFIG_PATA_PLATFORM=y +CONFIG_PATA_SC1200=y +CONFIG_PATA_TIMINGS=y +CONFIG_PATA_VIA=y +CONFIG_PCIEAER=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCI_MMCONFIG=y +# CONFIG_PCWATCHDOG is not set +# CONFIG_PMIC_OPREGION is not set +CONFIG_PNP=y +CONFIG_PNPACPI=y +# CONFIG_PNPBIOS is not set +CONFIG_PNP_DEBUG_MESSAGES=y +CONFIG_RAS=y +CONFIG_RELAY=y +CONFIG_RTC_I2C_AND_SPI=y +# CONFIG_SAMSUNG_Q10 is not set +CONFIG_SATA_AHCI=y +# CONFIG_SCSI_FDOMAIN_ISA is not set +# CONFIG_SENSORS_AMD_ENERGY is not set +CONFIG_SERIAL_8250_PNP=y +# CONFIG_SURFACE_3_POWER_OPREGION is not set +# CONFIG_SURFACE_PRO3_BUTTON is not set +CONFIG_SYNC_FILE=y +# CONFIG_SYSTEM76_ACPI is not set +# CONFIG_TOSHIBA_BT_RFKILL is not set +CONFIG_USB_STORAGE=y +CONFIG_VMAP_PFN=y +# CONFIG_WDT is not set +CONFIG_X86_ACPI_CPUFREQ=y +# CONFIG_X86_ACPI_CPUFREQ_CPB is not set +# CONFIG_X86_AMD_FREQ_SENSITIVITY is not set +# CONFIG_X86_AMD_PLATFORM_DEVICE is not set +# CONFIG_X86_E_POWERSAVER is not set +# CONFIG_X86_INTEL_LPSS is not set +# CONFIG_X86_LONGHAUL is not set +# CONFIG_X86_PAE is not set +# CONFIG_X86_PCC_CPUFREQ is not set +CONFIG_X86_PM_TIMER=y +# CONFIG_X86_POWERNOW_K8 is not set +CONFIG_ZLIB_DEFLATE=y diff --git a/target/linux/x86/patches-5.10/011-tune_lzma_options.patch b/target/linux/x86/patches-5.10/011-tune_lzma_options.patch new file mode 100644 index 0000000000..c19e1f54db --- /dev/null +++ b/target/linux/x86/patches-5.10/011-tune_lzma_options.patch @@ -0,0 +1,22 @@ +--- a/scripts/Makefile.lib ++++ b/scripts/Makefile.lib +@@ -370,7 +370,7 @@ quiet_cmd_bzip2 = BZIP2 $@ + # --------------------------------------------------------------------------- + + quiet_cmd_lzma = LZMA $@ +- cmd_lzma = { cat $(real-prereqs) | $(LZMA) e -d20 -lc1 -lp2 -pb2 -eos -si -so; $(size_append); } > $@ ++ cmd_lzma = { cat $(real-prereqs) | $(LZMA) e -lc8 -eos -si -so; $(size_append); } > $@ + + quiet_cmd_lzo = LZO $@ + cmd_lzo = { cat $(real-prereqs) | $(KLZOP) -9; $(size_append); } > $@ +--- a/arch/x86/include/asm/boot.h ++++ b/arch/x86/include/asm/boot.h +@@ -24,7 +24,7 @@ + # error "Invalid value for CONFIG_PHYSICAL_ALIGN" + #endif + +-#if defined(CONFIG_KERNEL_BZIP2) ++#if defined(CONFIG_KERNEL_BZIP2) || defined(CONFIG_KERNEL_LZMA) + # define BOOT_HEAP_SIZE 0x400000 + #elif defined(CONFIG_KERNEL_ZSTD) + /* diff --git a/target/linux/x86/patches-5.10/012-pcengines-apu2-detect-apuv4-board.patch b/target/linux/x86/patches-5.10/012-pcengines-apu2-detect-apuv4-board.patch new file mode 100644 index 0000000000..989b91a691 --- /dev/null +++ b/target/linux/x86/patches-5.10/012-pcengines-apu2-detect-apuv4-board.patch @@ -0,0 +1,50 @@ +From 3d00da1de3ea36ba44f4a7ba76c8c8b16f98204b Mon Sep 17 00:00:00 2001 +From: "Enrico Weigelt, metux IT consult" +Date: Thu, 12 Dec 2019 14:27:56 +0100 +Subject: [PATCH] platform/x86: pcengines-apuv2: detect apuv4 board + +GPIO stuff on APUv4 seems to be the same as on APUv2, so we just +need to match on DMI data. + +Signed-off-by: Enrico Weigelt, metux IT consult +Signed-off-by: Andy Shevchenko +--- + drivers/platform/x86/pcengines-apuv2.c | 27 ++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +--- a/drivers/platform/x86/pcengines-apuv2.c ++++ b/drivers/platform/x86/pcengines-apuv2.c +@@ -213,6 +213,33 @@ static const struct dmi_system_id apu_gp + }, + .driver_data = (void *)&board_apu2, + }, ++ /* APU4 w/ legacy bios < 4.0.8 */ ++ { ++ .ident = "apu4", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"), ++ DMI_MATCH(DMI_BOARD_NAME, "APU4") ++ }, ++ .driver_data = (void *)&board_apu2, ++ }, ++ /* APU4 w/ legacy bios >= 4.0.8 */ ++ { ++ .ident = "apu4", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"), ++ DMI_MATCH(DMI_BOARD_NAME, "apu4") ++ }, ++ .driver_data = (void *)&board_apu2, ++ }, ++ /* APU4 w/ mainline bios */ ++ { ++ .ident = "apu4", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"), ++ DMI_MATCH(DMI_BOARD_NAME, "PC Engines apu4") ++ }, ++ .driver_data = (void *)&board_apu2, ++ }, + {} + }; + diff --git a/target/linux/x86/patches-5.10/100-fix_cs5535_clockevt.patch b/target/linux/x86/patches-5.10/100-fix_cs5535_clockevt.patch new file mode 100644 index 0000000000..d4de2027ba --- /dev/null +++ b/target/linux/x86/patches-5.10/100-fix_cs5535_clockevt.patch @@ -0,0 +1,13 @@ +--- a/drivers/clocksource/timer-cs5535.c ++++ b/drivers/clocksource/timer-cs5535.c +@@ -127,7 +127,9 @@ static irqreturn_t mfgpt_tick(int irq, v + cs5535_mfgpt_write(cs5535_event_clock, MFGPT_REG_SETUP, + MFGPT_SETUP_CNTEN | MFGPT_SETUP_CMP2); + +- cs5535_clockevent.event_handler(&cs5535_clockevent); ++ if (cs5535_clockevent.event_handler) ++ cs5535_clockevent.event_handler(&cs5535_clockevent); ++ + return IRQ_HANDLED; + } + diff --git a/target/linux/x86/patches-5.10/200-pcengines-apu2-reboot.patch b/target/linux/x86/patches-5.10/200-pcengines-apu2-reboot.patch new file mode 100644 index 0000000000..bc57806c74 --- /dev/null +++ b/target/linux/x86/patches-5.10/200-pcengines-apu2-reboot.patch @@ -0,0 +1,19 @@ +--- a/arch/x86/kernel/reboot.c ++++ b/arch/x86/kernel/reboot.c +@@ -477,6 +477,16 @@ static const struct dmi_system_id reboot + }, + }, + ++ /* PC Engines */ ++ { /* Handle problems with rebooting on PC Engines apu2 */ ++ .callback = set_pci_reboot, ++ .ident = "PC Engines apu2", ++ .matches = { ++ DMI_MATCH(DMI_BOARD_VENDOR, "PC Engines"), ++ DMI_MATCH(DMI_BOARD_NAME, "apu2"), ++ }, ++ }, ++ + /* Sony */ + { /* Handle problems with rebooting on Sony VGN-Z540N */ + .callback = set_bios_reboot, diff --git a/target/linux/x86/patches-5.10/300-pcengines_apu1_led.patch b/target/linux/x86/patches-5.10/300-pcengines_apu1_led.patch new file mode 100644 index 0000000000..9d1e4ab9c2 --- /dev/null +++ b/target/linux/x86/patches-5.10/300-pcengines_apu1_led.patch @@ -0,0 +1,41 @@ +From: Andreas Eberlein +Subject: x86: add LED support for PC Engines APU1 with mainline bios + +This adds support for the LEDs on PC Engines APU1 with the mainline bios. + +Signed-off-by: Andreas Eberlein +--- +--- a/drivers/leds/leds-apu.c ++++ b/drivers/leds/leds-apu.c +@@ -83,6 +83,7 @@ static const struct apu_led_profile apu1 + }; + + static const struct dmi_system_id apu_led_dmi_table[] __initconst = { ++ /* PC Engines APU with "Legacy" bios < 4.0.8 */ + { + .ident = "apu", + .matches = { +@@ -90,6 +91,14 @@ static const struct dmi_system_id apu_le + DMI_MATCH(DMI_PRODUCT_NAME, "APU") + } + }, ++ /* PC Engines APU with "Mainline" bios >= 4.0.8 */ ++ { ++ .ident = "apu", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "apu1") ++ } ++ }, + {} + }; + MODULE_DEVICE_TABLE(dmi, apu_led_dmi_table); +@@ -173,7 +182,7 @@ static int __init apu_led_init(void) + int err; + + if (!(dmi_match(DMI_SYS_VENDOR, "PC Engines") && +- dmi_match(DMI_PRODUCT_NAME, "APU"))) { ++ (dmi_match(DMI_PRODUCT_NAME, "APU") || dmi_match(DMI_PRODUCT_NAME, "apu1")))) { + pr_err("No PC Engines APUv1 board detected. For APUv2,3 support, enable CONFIG_PCENGINES_APU2\n"); + return -ENODEV; + } From 98d456a14e00e24acec36247fb5bd379da90f84e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Sun, 14 Mar 2021 19:10:18 +0100 Subject: [PATCH 04/27] bcm53xx: backport first 5.13 DTS changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds NVMEM bindings that are needed for proper booting on Linksys devices. Signed-off-by: Rafał Miłecki --- ...1X-fix-reg-formatting-in-memory-node.patch | 339 ++++++++++++++++++ ...-Describe-NVMEM-NVRAM-on-Linksys-Lux.patch | 136 +++++++ ...-BCM5301X-Add-serial-to-the-bootargs.patch | 2 +- 3 files changed, 476 insertions(+), 1 deletion(-) create mode 100644 target/linux/bcm53xx/patches-5.4/035-v5.13-0001-ARM-dts-BCM5301X-fix-reg-formatting-in-memory-node.patch create mode 100644 target/linux/bcm53xx/patches-5.4/035-v5.13-0002-ARM-dts-BCM5301X-Describe-NVMEM-NVRAM-on-Linksys-Lux.patch diff --git a/target/linux/bcm53xx/patches-5.4/035-v5.13-0001-ARM-dts-BCM5301X-fix-reg-formatting-in-memory-node.patch b/target/linux/bcm53xx/patches-5.4/035-v5.13-0001-ARM-dts-BCM5301X-fix-reg-formatting-in-memory-node.patch new file mode 100644 index 0000000000..532c1f72ab --- /dev/null +++ b/target/linux/bcm53xx/patches-5.4/035-v5.13-0001-ARM-dts-BCM5301X-fix-reg-formatting-in-memory-node.patch @@ -0,0 +1,339 @@ +From d0b16b9596468c29742049e26a866f559ec476bb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Tue, 9 Mar 2021 13:55:00 +0100 +Subject: [PATCH] ARM: dts: BCM5301X: fix "reg" formatting in /memory node +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes warnings/errors like: +arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dt.yaml: /: memory@0:reg:0: [0, 134217728, 2281701376, 402653184] is too long + From schema: /lib/python3.6/site-packages/dtschema/schemas/reg.yaml + +Signed-off-by: Rafał Miłecki +Signed-off-by: Florian Fainelli +--- + arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts | 4 ++-- + arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts | 4 ++-- + arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts | 4 ++-- + arch/arm/boot/dts/bcm4708-netgear-r6250.dts | 4 ++-- + arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts | 4 ++-- + arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts | 4 ++-- + arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts | 4 ++-- + arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts | 4 ++-- + arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts | 4 ++-- + arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts | 4 ++-- + arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts | 4 ++-- + arch/arm/boot/dts/bcm4709-linksys-ea9200.dts | 4 ++-- + arch/arm/boot/dts/bcm4709-netgear-r7000.dts | 4 ++-- + arch/arm/boot/dts/bcm4709-netgear-r8000.dts | 4 ++-- + arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts | 4 ++-- + arch/arm/boot/dts/bcm47094-linksys-panamera.dts | 4 ++-- + arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts | 4 ++-- + arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts | 4 ++-- + arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts | 4 ++-- + arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts | 4 ++-- + arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts | 4 ++-- + arch/arm/boot/dts/bcm47094-netgear-r8500.dts | 4 ++-- + arch/arm/boot/dts/bcm47094-phicomm-k3.dts | 4 ++-- + 23 files changed, 46 insertions(+), 46 deletions(-) + +--- a/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts ++++ b/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts +@@ -21,8 +21,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts ++++ b/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts +@@ -21,8 +21,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts ++++ b/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts +@@ -21,8 +21,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x18000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x18000000>; + }; + + spi { +--- a/arch/arm/boot/dts/bcm4708-netgear-r6250.dts ++++ b/arch/arm/boot/dts/bcm4708-netgear-r6250.dts +@@ -22,8 +22,8 @@ + + memory { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts ++++ b/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts +@@ -21,8 +21,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts ++++ b/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts +@@ -21,8 +21,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts ++++ b/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts +@@ -21,8 +21,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts ++++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts +@@ -21,8 +21,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + spi { +--- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts ++++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts +@@ -21,8 +21,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + spi { +--- a/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts ++++ b/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts +@@ -21,8 +21,8 @@ + + memory { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts ++++ b/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts +@@ -21,8 +21,8 @@ + + memory { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x18000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x18000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts ++++ b/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts +@@ -18,8 +18,8 @@ + + memory { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + gpio-keys { +--- a/arch/arm/boot/dts/bcm4709-netgear-r7000.dts ++++ b/arch/arm/boot/dts/bcm4709-netgear-r7000.dts +@@ -21,8 +21,8 @@ + + memory { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm4709-netgear-r8000.dts ++++ b/arch/arm/boot/dts/bcm4709-netgear-r8000.dts +@@ -32,8 +32,8 @@ + + memory { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts ++++ b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts +@@ -21,8 +21,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + nand: nand@18028000 { +--- a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts ++++ b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts +@@ -18,8 +18,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + gpio-keys { +--- a/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts ++++ b/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts +@@ -18,8 +18,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x18000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x18000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts ++++ b/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts +@@ -18,8 +18,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x18000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x18000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts ++++ b/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts +@@ -18,8 +18,8 @@ + + memory { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x18000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x18000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts ++++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts +@@ -18,8 +18,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x08000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x08000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts ++++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts +@@ -18,8 +18,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x18000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x18000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm47094-netgear-r8500.dts ++++ b/arch/arm/boot/dts/bcm47094-netgear-r8500.dts +@@ -18,8 +18,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x18000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x18000000>; + }; + + leds { +--- a/arch/arm/boot/dts/bcm47094-phicomm-k3.dts ++++ b/arch/arm/boot/dts/bcm47094-phicomm-k3.dts +@@ -15,8 +15,8 @@ + + memory@0 { + device_type = "memory"; +- reg = <0x00000000 0x08000000 +- 0x88000000 0x18000000>; ++ reg = <0x00000000 0x08000000>, ++ <0x88000000 0x18000000>; + }; + + gpio-keys { diff --git a/target/linux/bcm53xx/patches-5.4/035-v5.13-0002-ARM-dts-BCM5301X-Describe-NVMEM-NVRAM-on-Linksys-Lux.patch b/target/linux/bcm53xx/patches-5.4/035-v5.13-0002-ARM-dts-BCM5301X-Describe-NVMEM-NVRAM-on-Linksys-Lux.patch new file mode 100644 index 0000000000..136d221a97 --- /dev/null +++ b/target/linux/bcm53xx/patches-5.4/035-v5.13-0002-ARM-dts-BCM5301X-Describe-NVMEM-NVRAM-on-Linksys-Lux.patch @@ -0,0 +1,136 @@ +From 428ac8df021dd1cbcc693eb76636873d42327e5d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Wed, 10 Mar 2021 22:04:46 +0100 +Subject: [PATCH] ARM: dts: BCM5301X: Describe NVMEM NVRAM on Linksys & Luxul + routers +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Provide access to NVRAM which contains device environment variables. + +Signed-off-by: Rafał Miłecki +Signed-off-by: Florian Fainelli +--- + arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts | 5 +++++ + arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts | 5 +++++ + arch/arm/boot/dts/bcm4709-linksys-ea9200.dts | 5 +++++ + arch/arm/boot/dts/bcm47094-linksys-panamera.dts | 5 +++++ + arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts | 5 +++++ + arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts | 5 +++++ + arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts | 5 +++++ + arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts | 5 +++++ + 8 files changed, 40 insertions(+) + +--- a/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts ++++ b/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts +@@ -21,6 +21,11 @@ + reg = <0x00000000 0x08000000>; + }; + ++ nvram@1c080000 { ++ compatible = "brcm,nvram"; ++ reg = <0x1c080000 0x180000>; ++ }; ++ + gpio-keys { + compatible = "gpio-keys"; + +--- a/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts ++++ b/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts +@@ -21,6 +21,11 @@ + reg = <0x00000000 0x08000000>; + }; + ++ nvram@1eff0000 { ++ compatible = "brcm,nvram"; ++ reg = <0x1eff0000 0x10000>; ++ }; ++ + leds { + compatible = "gpio-leds"; + +--- a/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts ++++ b/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts +@@ -22,6 +22,11 @@ + <0x88000000 0x08000000>; + }; + ++ nvram@1c080000 { ++ compatible = "brcm,nvram"; ++ reg = <0x1c080000 0x180000>; ++ }; ++ + gpio-keys { + compatible = "gpio-keys"; + #address-cells = <1>; +--- a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts ++++ b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts +@@ -22,6 +22,11 @@ + <0x88000000 0x08000000>; + }; + ++ nvram@1c080000 { ++ compatible = "brcm,nvram"; ++ reg = <0x1c080000 0x100000>; ++ }; ++ + gpio-keys { + compatible = "gpio-keys"; + +--- a/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts ++++ b/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts +@@ -22,6 +22,11 @@ + <0x88000000 0x18000000>; + }; + ++ nvram@1eff0000 { ++ compatible = "brcm,nvram"; ++ reg = <0x1eff0000 0x10000>; ++ }; ++ + leds { + compatible = "gpio-leds"; + +--- a/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts ++++ b/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts +@@ -22,6 +22,11 @@ + <0x88000000 0x18000000>; + }; + ++ nvram@1eff0000 { ++ compatible = "brcm,nvram"; ++ reg = <0x1eff0000 0x10000>; ++ }; ++ + leds { + compatible = "gpio-leds"; + +--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts ++++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts +@@ -22,6 +22,11 @@ + <0x88000000 0x08000000>; + }; + ++ nvram@1eff0000 { ++ compatible = "brcm,nvram"; ++ reg = <0x1eff0000 0x10000>; ++ }; ++ + leds { + compatible = "gpio-leds"; + +--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts ++++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts +@@ -22,6 +22,11 @@ + <0x88000000 0x18000000>; + }; + ++ nvram@1eff0000 { ++ compatible = "brcm,nvram"; ++ reg = <0x1eff0000 0x10000>; ++ }; ++ + leds { + compatible = "gpio-leds"; + diff --git a/target/linux/bcm53xx/patches-5.4/320-ARM-dts-BCM5301X-Add-serial-to-the-bootargs.patch b/target/linux/bcm53xx/patches-5.4/320-ARM-dts-BCM5301X-Add-serial-to-the-bootargs.patch index cbba087daa..f0d5d0cae4 100644 --- a/target/linux/bcm53xx/patches-5.4/320-ARM-dts-BCM5301X-Add-serial-to-the-bootargs.patch +++ b/target/linux/bcm53xx/patches-5.4/320-ARM-dts-BCM5301X-Add-serial-to-the-bootargs.patch @@ -102,7 +102,7 @@ Signed-off-by: Rafał Miłecki + memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 + reg = <0x00000000 0x08000000>, --- a/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts +++ b/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts @@ -13,7 +13,7 @@ From 05dbfe616d551bce1a19d3846c8949c047325624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Sun, 14 Mar 2021 19:22:18 +0100 Subject: [PATCH 05/27] bcm4908: use accepted 5.13 DTS patches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some patches were slightly cleaned up. One things worth mentioning is that adding: phy-mode = "rgmii" broke SF2 driver. It made it access random register breaking switch setup. That's why this commit also adds a quick sf2 fix. Signed-off-by: Rafał Miłecki --- ...com-bcm4908-describe-internal-switch.patch | 28 ++--- ...s-broadcom-bcm4908-describe-USB-PHY.patch} | 6 +- ...m-bcm4908-describe-Ethernet-control.patch} | 11 +- ...m-bcm4908-describe-Netgear-R8000P-s.patch} | 4 +- ...m-bcm4908-add-remaining-Netgear-R80.patch} | 27 +++-- ...m-bcm4908-describe-firmware-partiti.patch} | 4 +- ...om-bcm4908-fix-switch-parent-node-na.patch | 30 +++++ ...cm-document-TP-Link-Archer-C2300-bi.patch} | 8 +- ...m-bcm4908-add-TP-Link-Archer-C2300-.patch} | 31 ++--- ...om-bcm4908-set-Asus-GT-AC5300-port-7.patch | 28 +++++ ...oadcom-bcm4908-limit-amount-of-GPIOs.patch | 2 +- ...quick-fix-for-RGMII-reg-access-on-BC.patch | 109 ++++++++++++++++++ 12 files changed, 238 insertions(+), 50 deletions(-) rename target/linux/bcm4908/patches-5.4/{130-0001-arm64-dts-broadcom-bcm4908-describe-USB-PHY.patch => 032-v5.13-0001-arm64-dts-broadcom-bcm4908-describe-USB-PHY.patch} (94%) rename target/linux/bcm4908/patches-5.4/{130-0002-arm64-dts-broadcom-bcm4908-describe-Ethernet-control.patch => 032-v5.13-0002-arm64-dts-broadcom-bcm4908-describe-Ethernet-control.patch} (79%) rename target/linux/bcm4908/patches-5.4/{130-0003-arm64-dts-broadcom-bcm4908-describe-Netgear-R8000P-s.patch => 032-v5.13-0003-arm64-dts-broadcom-bcm4908-describe-Netgear-R8000P-s.patch} (85%) rename target/linux/bcm4908/patches-5.4/{130-0004-arm64-dts-broadcom-bcm4908-add-remaining-Netgear-R80.patch => 032-v5.13-0004-arm64-dts-broadcom-bcm4908-add-remaining-Netgear-R80.patch} (78%) rename target/linux/bcm4908/patches-5.4/{130-0005-arm64-dts-broadcom-bcm4908-describe-firmware-partiti.patch => 032-v5.13-0005-arm64-dts-broadcom-bcm4908-describe-firmware-partiti.patch} (90%) create mode 100644 target/linux/bcm4908/patches-5.4/032-v5.13-0006-arm64-dts-broadcom-bcm4908-fix-switch-parent-node-na.patch rename target/linux/bcm4908/patches-5.4/{131-0001-dt-bindings-arm-bcm-document-TP-Link-Archer-C2300-bi.patch => 032-v5.13-0007-dt-bindings-arm-bcm-document-TP-Link-Archer-C2300-bi.patch} (69%) rename target/linux/bcm4908/patches-5.4/{131-0002-arm64-dts-broadcom-bcm4908-add-TP-Link-Archer-C2300-.patch => 032-v5.13-0008-arm64-dts-broadcom-bcm4908-add-TP-Link-Archer-C2300-.patch} (89%) create mode 100644 target/linux/bcm4908/patches-5.4/032-v5.13-0009-arm64-dts-broadcom-bcm4908-set-Asus-GT-AC5300-port-7.patch create mode 100644 target/linux/bcm4908/patches-5.4/702-net-dsa-bcm_sf2-quick-fix-for-RGMII-reg-access-on-BC.patch diff --git a/target/linux/bcm4908/patches-5.4/031-v5.12-0005-arm64-dts-broadcom-bcm4908-describe-internal-switch.patch b/target/linux/bcm4908/patches-5.4/031-v5.12-0005-arm64-dts-broadcom-bcm4908-describe-internal-switch.patch index c0e27a4e92..f80dc239bc 100644 --- a/target/linux/bcm4908/patches-5.4/031-v5.12-0005-arm64-dts-broadcom-bcm4908-describe-internal-switch.patch +++ b/target/linux/bcm4908/patches-5.4/031-v5.12-0005-arm64-dts-broadcom-bcm4908-describe-internal-switch.patch @@ -1,4 +1,4 @@ -From 961c38974fa5b34d6232d7485120e4392d279ab4 Mon Sep 17 00:00:00 2001 +From 527a3ac9bdf81da4b7160ce3cea57f28a0e5eb64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Wed, 13 Jan 2021 12:14:06 +0100 Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe internal switch @@ -58,22 +58,22 @@ Signed-off-by: Florian Fainelli + +&mdio { + /* lan8 */ -+ phy@0 { ++ ethernet-phy@0 { + reg = <0>; + }; + + /* lan7 */ -+ phy@1 { ++ ethernet-phy@1 { + reg = <1>; + }; + + /* lan4 */ -+ phy@2 { ++ ethernet-phy@2 { + reg = <2>; + }; + + /* lan3 */ -+ phy@3 { ++ ethernet-phy@3 { + reg = <3>; + }; +}; @@ -97,13 +97,13 @@ Signed-off-by: Florian Fainelli status = "disabled"; }; + -+ switch@80000 { ++ ethernet-switch@80000 { + compatible = "simple-bus"; + #size-cells = <1>; + #address-cells = <1>; + ranges = <0 0x80000 0x50000>; + -+ switch@0 { ++ ethernet-switch@0 { + compatible = "brcm,bcm4908-switch"; + reg = <0x0 0x40000>, + <0x40000 0x110>, @@ -155,26 +155,26 @@ Signed-off-by: Florian Fainelli + compatible = "brcm,unimac-mdio"; + reg = <0x405c0 0x8>; + reg-names = "mdio"; -+ #size-cells = <1>; -+ #address-cells = <0>; ++ #size-cells = <0>; ++ #address-cells = <1>; + -+ phy8: phy@8 { ++ phy8: ethernet-phy@8 { + reg = <8>; + }; + -+ phy9: phy@9 { ++ phy9: ethernet-phy@9 { + reg = <9>; + }; + -+ phy10: phy@a { ++ phy10: ethernet-phy@a { + reg = <10>; + }; + -+ phy11: phy@b { ++ phy11: ethernet-phy@b { + reg = <11>; + }; + -+ phy12: phy@c { ++ phy12: ethernet-phy@c { + reg = <12>; + }; + }; diff --git a/target/linux/bcm4908/patches-5.4/130-0001-arm64-dts-broadcom-bcm4908-describe-USB-PHY.patch b/target/linux/bcm4908/patches-5.4/032-v5.13-0001-arm64-dts-broadcom-bcm4908-describe-USB-PHY.patch similarity index 94% rename from target/linux/bcm4908/patches-5.4/130-0001-arm64-dts-broadcom-bcm4908-describe-USB-PHY.patch rename to target/linux/bcm4908/patches-5.4/032-v5.13-0001-arm64-dts-broadcom-bcm4908-describe-USB-PHY.patch index 8a10212d92..edf2ca6a38 100644 --- a/target/linux/bcm4908/patches-5.4/130-0001-arm64-dts-broadcom-bcm4908-describe-USB-PHY.patch +++ b/target/linux/bcm4908/patches-5.4/032-v5.13-0001-arm64-dts-broadcom-bcm4908-describe-USB-PHY.patch @@ -1,5 +1,6 @@ +From 3c321ba794ca6383a4aa68ea803e18cc6ad44412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -Date: Mon, 15 Feb 2021 19:46:54 +0100 +Date: Fri, 19 Feb 2021 06:50:26 +0100 Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe USB PHY MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -9,6 +10,7 @@ BCM4908 uses slightly modified STB family USB PHY. It handles OHCI/EHCI and XHCI. It requires powering up using the PMB. Signed-off-by: Rafał Miłecki +Signed-off-by: Florian Fainelli --- .../bcm4908/bcm4906-netgear-r8000p.dts | 17 +++++++++++++ .../bcm4908/bcm4908-asus-gt-ac5300.dts | 17 +++++++++++++ @@ -86,7 +88,7 @@ Signed-off-by: Rafał Miłecki + usb_phy: usb-phy@c200 { + compatible = "brcm,bcm4908-usb-phy"; + reg = <0xc200 0x100>; -+ reg-names = "crtl"; ++ reg-names = "ctrl"; + power-domains = <&pmb BCM_PMB_HOST_USB>; + dr_mode = "host"; + brcm,has-xhci; diff --git a/target/linux/bcm4908/patches-5.4/130-0002-arm64-dts-broadcom-bcm4908-describe-Ethernet-control.patch b/target/linux/bcm4908/patches-5.4/032-v5.13-0002-arm64-dts-broadcom-bcm4908-describe-Ethernet-control.patch similarity index 79% rename from target/linux/bcm4908/patches-5.4/130-0002-arm64-dts-broadcom-bcm4908-describe-Ethernet-control.patch rename to target/linux/bcm4908/patches-5.4/032-v5.13-0002-arm64-dts-broadcom-bcm4908-describe-Ethernet-control.patch index 30487851c1..6c41e3d797 100644 --- a/target/linux/bcm4908/patches-5.4/130-0002-arm64-dts-broadcom-bcm4908-describe-Ethernet-control.patch +++ b/target/linux/bcm4908/patches-5.4/032-v5.13-0002-arm64-dts-broadcom-bcm4908-describe-Ethernet-control.patch @@ -1,5 +1,6 @@ +From b1bbe48eec190b6a35f400c5a3ec6b0fc8fc3fe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -Date: Mon, 15 Feb 2021 19:51:26 +0100 +Date: Fri, 19 Feb 2021 06:50:27 +0100 Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe Ethernet controller MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -8,9 +9,10 @@ Content-Transfer-Encoding: 8bit BCM4908 SoCs have an integrated Ethernet controller. Signed-off-by: Rafał Miłecki +Signed-off-by: Florian Fainelli --- - .../boot/dts/broadcom/bcm4908/bcm4908.dtsi | 20 +++++++++++++++++++ - 1 file changed, 20 insertions(+) + .../boot/dts/broadcom/bcm4908/bcm4908.dtsi | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) --- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi +++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi @@ -29,7 +31,7 @@ Signed-off-by: Rafał Miłecki usb_phy: usb-phy@c200 { compatible = "brcm,bcm4908-usb-phy"; reg = <0xc200 0x100>; -@@ -199,6 +207,18 @@ +@@ -199,6 +207,17 @@ phy-mode = "internal"; phy-handle = <&phy11>; }; @@ -38,7 +40,6 @@ Signed-off-by: Rafał Miłecki + reg = <8>; + phy-mode = "internal"; + ethernet = <&enet>; -+ brcm,use-bcm-hdr; + + fixed-link { + speed = <1000>; diff --git a/target/linux/bcm4908/patches-5.4/130-0003-arm64-dts-broadcom-bcm4908-describe-Netgear-R8000P-s.patch b/target/linux/bcm4908/patches-5.4/032-v5.13-0003-arm64-dts-broadcom-bcm4908-describe-Netgear-R8000P-s.patch similarity index 85% rename from target/linux/bcm4908/patches-5.4/130-0003-arm64-dts-broadcom-bcm4908-describe-Netgear-R8000P-s.patch rename to target/linux/bcm4908/patches-5.4/032-v5.13-0003-arm64-dts-broadcom-bcm4908-describe-Netgear-R8000P-s.patch index 1ee59d7e2d..9c7f9cee6c 100644 --- a/target/linux/bcm4908/patches-5.4/130-0003-arm64-dts-broadcom-bcm4908-describe-Netgear-R8000P-s.patch +++ b/target/linux/bcm4908/patches-5.4/032-v5.13-0003-arm64-dts-broadcom-bcm4908-describe-Netgear-R8000P-s.patch @@ -1,5 +1,6 @@ +From 406e98afffe975982f63ea5d21bf9a47a81b56ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -Date: Mon, 15 Feb 2021 19:52:58 +0100 +Date: Fri, 19 Feb 2021 06:50:28 +0100 Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe Netgear R8000P switch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -8,6 +9,7 @@ Content-Transfer-Encoding: 8bit R8000P model has 4 LAN ports and 1 WAN port. Signed-off-by: Rafał Miłecki +Signed-off-by: Florian Fainelli --- .../bcm4908/bcm4906-netgear-r8000p.dts | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/target/linux/bcm4908/patches-5.4/130-0004-arm64-dts-broadcom-bcm4908-add-remaining-Netgear-R80.patch b/target/linux/bcm4908/patches-5.4/032-v5.13-0004-arm64-dts-broadcom-bcm4908-add-remaining-Netgear-R80.patch similarity index 78% rename from target/linux/bcm4908/patches-5.4/130-0004-arm64-dts-broadcom-bcm4908-add-remaining-Netgear-R80.patch rename to target/linux/bcm4908/patches-5.4/032-v5.13-0004-arm64-dts-broadcom-bcm4908-add-remaining-Netgear-R80.patch index c192c35df0..56249c82f8 100644 --- a/target/linux/bcm4908/patches-5.4/130-0004-arm64-dts-broadcom-bcm4908-add-remaining-Netgear-R80.patch +++ b/target/linux/bcm4908/patches-5.4/032-v5.13-0004-arm64-dts-broadcom-bcm4908-add-remaining-Netgear-R80.patch @@ -1,5 +1,6 @@ +From 6224415c0389ba6661825746312163a64ece8f3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -Date: Mon, 15 Feb 2021 20:05:41 +0100 +Date: Fri, 19 Feb 2021 06:50:29 +0100 Subject: [PATCH] arm64: dts: broadcom: bcm4908: add remaining Netgear R8000P LEDs MIME-Version: 1.0 @@ -10,9 +11,10 @@ There are a few more GPIO connected LEDs there didn't get described initially. Signed-off-by: Rafał Miłecki +Signed-off-by: Florian Fainelli --- - .../bcm4908/bcm4906-netgear-r8000p.dts | 48 +++++++++++++++++++ - 1 file changed, 48 insertions(+) + .../bcm4908/bcm4906-netgear-r8000p.dts | 50 ++++++++++++++++++- + 1 file changed, 49 insertions(+), 1 deletion(-) --- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts +++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts @@ -20,55 +22,56 @@ Signed-off-by: Rafał Miłecki leds { compatible = "gpio-leds"; -+ power-white { +- wps { ++ led-power-white { + function = LED_FUNCTION_POWER; + color = ; + gpios = <&gpio0 8 GPIO_ACTIVE_LOW>; + }; + -+ power-amber { ++ led-power-amber { + function = LED_FUNCTION_POWER; + color = ; + gpios = <&gpio0 9 GPIO_ACTIVE_LOW>; + }; + - wps { ++ led-wps { function = LED_FUNCTION_WPS; color = ; gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; }; + -+ 2ghz { ++ led-2ghz { + function = "2ghz"; + color = ; + gpios = <&gpio0 14 GPIO_ACTIVE_LOW>; + }; + -+ 5ghz-1 { ++ led-5ghz-1 { + function = "5ghz-1"; + color = ; + gpios = <&gpio0 15 GPIO_ACTIVE_LOW>; + }; + -+ 5ghz-2 { ++ led-5ghz-2 { + function = "5ghz-2"; + color = ; + gpios = <&gpio0 16 GPIO_ACTIVE_LOW>; + }; + -+ usb2 { ++ led-usb2 { + function = "usb2"; + color = ; + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; + }; + -+ usb3 { ++ led-usb3 { + function = "usb3"; + color = ; + gpios = <&gpio0 18 GPIO_ACTIVE_LOW>; + }; + -+ wifi { ++ led-wifi { + function = "wifi"; + color = ; + gpios = <&gpio0 56 GPIO_ACTIVE_LOW>; diff --git a/target/linux/bcm4908/patches-5.4/130-0005-arm64-dts-broadcom-bcm4908-describe-firmware-partiti.patch b/target/linux/bcm4908/patches-5.4/032-v5.13-0005-arm64-dts-broadcom-bcm4908-describe-firmware-partiti.patch similarity index 90% rename from target/linux/bcm4908/patches-5.4/130-0005-arm64-dts-broadcom-bcm4908-describe-firmware-partiti.patch rename to target/linux/bcm4908/patches-5.4/032-v5.13-0005-arm64-dts-broadcom-bcm4908-describe-firmware-partiti.patch index 10f33f5140..d03adc1743 100644 --- a/target/linux/bcm4908/patches-5.4/130-0005-arm64-dts-broadcom-bcm4908-describe-firmware-partiti.patch +++ b/target/linux/bcm4908/patches-5.4/032-v5.13-0005-arm64-dts-broadcom-bcm4908-describe-firmware-partiti.patch @@ -1,5 +1,6 @@ +From cbaca2c467dc25a163107e14a53b7925214eab17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -Date: Mon, 15 Feb 2021 20:30:09 +0100 +Date: Fri, 19 Feb 2021 06:50:30 +0100 Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe firmware partitions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -9,6 +10,7 @@ BCM4908 bootloader supports multiple firmware partitions and has its own bindings defined for them. Signed-off-by: Rafał Miłecki +Signed-off-by: Florian Fainelli --- .../dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts | 1 + .../dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts | 12 +++++++++++- diff --git a/target/linux/bcm4908/patches-5.4/032-v5.13-0006-arm64-dts-broadcom-bcm4908-fix-switch-parent-node-na.patch b/target/linux/bcm4908/patches-5.4/032-v5.13-0006-arm64-dts-broadcom-bcm4908-fix-switch-parent-node-na.patch new file mode 100644 index 0000000000..8b95fc2759 --- /dev/null +++ b/target/linux/bcm4908/patches-5.4/032-v5.13-0006-arm64-dts-broadcom-bcm4908-fix-switch-parent-node-na.patch @@ -0,0 +1,30 @@ +From a348ff97ffb840b9d74b0e64b3e0e6002187d224 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Tue, 9 Mar 2021 19:44:09 +0100 +Subject: [PATCH] arm64: dts: broadcom: bcm4908: fix switch parent node name +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Ethernet switch and MDIO are grouped using "simple-bus". It's not +allowed to use "ethernet-switch" node name as it isn't a switch. Replace +it with "bus". + +Fixes: 527a3ac9bdf8 ("arm64: dts: broadcom: bcm4908: describe internal switch") +Signed-off-by: Rafał Miłecki +Signed-off-by: Florian Fainelli +--- + arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi ++++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi +@@ -156,7 +156,7 @@ + status = "disabled"; + }; + +- ethernet-switch@80000 { ++ bus@80000 { + compatible = "simple-bus"; + #size-cells = <1>; + #address-cells = <1>; diff --git a/target/linux/bcm4908/patches-5.4/131-0001-dt-bindings-arm-bcm-document-TP-Link-Archer-C2300-bi.patch b/target/linux/bcm4908/patches-5.4/032-v5.13-0007-dt-bindings-arm-bcm-document-TP-Link-Archer-C2300-bi.patch similarity index 69% rename from target/linux/bcm4908/patches-5.4/131-0001-dt-bindings-arm-bcm-document-TP-Link-Archer-C2300-bi.patch rename to target/linux/bcm4908/patches-5.4/032-v5.13-0007-dt-bindings-arm-bcm-document-TP-Link-Archer-C2300-bi.patch index 911237be9a..07d4121ef1 100644 --- a/target/linux/bcm4908/patches-5.4/131-0001-dt-bindings-arm-bcm-document-TP-Link-Archer-C2300-bi.patch +++ b/target/linux/bcm4908/patches-5.4/032-v5.13-0007-dt-bindings-arm-bcm-document-TP-Link-Archer-C2300-bi.patch @@ -1,10 +1,16 @@ +From b3de2a12d1a61d90a4d86c9840acc7d05066137f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -Date: Fri, 5 Mar 2021 13:34:03 +0100 +Date: Wed, 10 Mar 2021 08:46:02 +0100 Subject: [PATCH] dt-bindings: arm: bcm: document TP-Link Archer C2300 binding +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit One more BCM4906 based device. Signed-off-by: Rafał Miłecki +Reviewed-by: Rob Herring +Signed-off-by: Florian Fainelli --- Documentation/devicetree/bindings/arm/bcm/brcm,bcm4908.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/bcm4908/patches-5.4/131-0002-arm64-dts-broadcom-bcm4908-add-TP-Link-Archer-C2300-.patch b/target/linux/bcm4908/patches-5.4/032-v5.13-0008-arm64-dts-broadcom-bcm4908-add-TP-Link-Archer-C2300-.patch similarity index 89% rename from target/linux/bcm4908/patches-5.4/131-0002-arm64-dts-broadcom-bcm4908-add-TP-Link-Archer-C2300-.patch rename to target/linux/bcm4908/patches-5.4/032-v5.13-0008-arm64-dts-broadcom-bcm4908-add-TP-Link-Archer-C2300-.patch index cc1835e799..0dd7f2301f 100644 --- a/target/linux/bcm4908/patches-5.4/131-0002-arm64-dts-broadcom-bcm4908-add-TP-Link-Archer-C2300-.patch +++ b/target/linux/bcm4908/patches-5.4/032-v5.13-0008-arm64-dts-broadcom-bcm4908-add-TP-Link-Archer-C2300-.patch @@ -1,12 +1,17 @@ +From 6a30934a5470a0ce7ea32b0c6b600accfae94b1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -Date: Fri, 5 Mar 2021 13:36:25 +0100 +Date: Wed, 10 Mar 2021 08:46:03 +0100 Subject: [PATCH] arm64: dts: broadcom: bcm4908: add TP-Link Archer C2300 V1 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit Archer C2300 V1 is a home router based on the BCM4906 (2 CPU cores). It has 512 MiB of RAM, NAND flash, USB 2.0 and USB 3.0 ports, 4 LAN ports, 1 WAN port. Signed-off-by: Rafał Miłecki +Signed-off-by: Florian Fainelli --- arch/arm64/boot/dts/broadcom/bcm4908/Makefile | 1 + .../bcm4906-tplink-archer-c2300-v1.dts | 182 ++++++++++++++++++ @@ -43,61 +48,61 @@ Signed-off-by: Rafał Miłecki + leds { + compatible = "gpio-leds"; + -+ power-white { ++ led-power { + function = LED_FUNCTION_POWER; + color = ; + gpios = <&gpio0 0 GPIO_ACTIVE_LOW>; + }; + -+ 2ghz { ++ led-2ghz { + function = "2ghz"; + color = ; + gpios = <&gpio0 2 GPIO_ACTIVE_LOW>; + }; + -+ 5ghz { ++ led-5ghz { + function = "5ghz"; + color = ; + gpios = <&gpio0 3 GPIO_ACTIVE_LOW>; + }; + -+ wan-amber { ++ led-wan-amber { + function = LED_FUNCTION_WAN; + color = ; + gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>; + }; + -+ wan-blue { ++ led-wan-blue { + function = LED_FUNCTION_WAN; + color = ; + gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; + }; + -+ lan { ++ led-lan { + function = LED_FUNCTION_LAN; + color = ; + gpios = <&gpio0 12 GPIO_ACTIVE_LOW>; + }; + -+ wps { ++ led-wps { + function = LED_FUNCTION_WPS; + color = ; + gpios = <&gpio0 14 GPIO_ACTIVE_LOW>; + }; + -+ usb-high-white { -+ function = "usbup"; ++ led-usb2 { ++ function = "usb2"; + color = ; + gpios = <&gpio0 15 GPIO_ACTIVE_LOW>; + }; + -+ usb-low-white { -+ function = "usbdown"; ++ led-usb3 { ++ function = "usbd3"; + color = ; + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; + }; + -+ brightness { ++ led-brightness { + function = LED_FUNCTION_BACKLIGHT; + color = ; + gpios = <&gpio0 19 GPIO_ACTIVE_LOW>; diff --git a/target/linux/bcm4908/patches-5.4/032-v5.13-0009-arm64-dts-broadcom-bcm4908-set-Asus-GT-AC5300-port-7.patch b/target/linux/bcm4908/patches-5.4/032-v5.13-0009-arm64-dts-broadcom-bcm4908-set-Asus-GT-AC5300-port-7.patch new file mode 100644 index 0000000000..30def36c39 --- /dev/null +++ b/target/linux/bcm4908/patches-5.4/032-v5.13-0009-arm64-dts-broadcom-bcm4908-set-Asus-GT-AC5300-port-7.patch @@ -0,0 +1,28 @@ +From 5ccb9f9cf05bbd729430c6d6d30d40c96a15c56a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Fri, 12 Mar 2021 12:01:20 +0100 +Subject: [PATCH] arm64: dts: broadcom: bcm4908: set Asus GT-AC5300 port 7 PHY + mode +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Port 7 is connected to the external BCM53134S switch using RGMII. + +Fixes: 527a3ac9bdf8 ("arm64: dts: broadcom: bcm4908: describe internal switch") +Signed-off-by: Rafał Miłecki +Signed-off-by: Florian Fainelli +--- + arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts ++++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts +@@ -82,6 +82,7 @@ + port@7 { + label = "sw"; + reg = <7>; ++ phy-mode = "rgmii"; + + fixed-link { + speed = <1000>; diff --git a/target/linux/bcm4908/patches-5.4/300-arm64-dts-broadcom-bcm4908-limit-amount-of-GPIOs.patch b/target/linux/bcm4908/patches-5.4/300-arm64-dts-broadcom-bcm4908-limit-amount-of-GPIOs.patch index c28c69c6f8..a3494fd2e5 100644 --- a/target/linux/bcm4908/patches-5.4/300-arm64-dts-broadcom-bcm4908-limit-amount-of-GPIOs.patch +++ b/target/linux/bcm4908/patches-5.4/300-arm64-dts-broadcom-bcm4908-limit-amount-of-GPIOs.patch @@ -12,7 +12,7 @@ Signed-off-by: Rafał Miłecki --- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi +++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi -@@ -281,7 +281,7 @@ +@@ -280,7 +280,7 @@ gpio0: gpio-controller@500 { compatible = "brcm,bcm6345-gpio"; reg-names = "dirout", "dat"; diff --git a/target/linux/bcm4908/patches-5.4/702-net-dsa-bcm_sf2-quick-fix-for-RGMII-reg-access-on-BC.patch b/target/linux/bcm4908/patches-5.4/702-net-dsa-bcm_sf2-quick-fix-for-RGMII-reg-access-on-BC.patch new file mode 100644 index 0000000000..2d88cf353b --- /dev/null +++ b/target/linux/bcm4908/patches-5.4/702-net-dsa-bcm_sf2-quick-fix-for-RGMII-reg-access-on-BC.patch @@ -0,0 +1,109 @@ +From 7e2dc41c745f6d9c571919d98abed2d783fce8fb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Sun, 14 Mar 2021 22:43:32 +0100 +Subject: [PATCH] net: dsa: bcm_sf2: quick fix for RGMII reg access on BCM4908 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +BCM4908 has only 1 RGMII register and it's used for port 7. + +Signed-off-by: Rafał Miłecki +--- + drivers/net/dsa/bcm_sf2.c | 30 +++++++++++++++++++++++------- + drivers/net/dsa/bcm_sf2_regs.h | 1 + + 2 files changed, 24 insertions(+), 7 deletions(-) + +--- a/drivers/net/dsa/bcm_sf2.c ++++ b/drivers/net/dsa/bcm_sf2.c +@@ -543,10 +543,19 @@ static void bcm_sf2_sw_mac_config(struct + struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); + u32 id_mode_dis = 0, port_mode; + u32 reg, offset; ++ u32 rgmii_ctrl; + + if (port == core_readl(priv, CORE_IMP0_PRT_ID)) + return; + ++ if (priv->type == BCM4908_DEVICE_ID) { ++ if (port != 7) ++ return; ++ rgmii_ctrl = REG_RGMII_11_CNTRL; ++ } else { ++ rgmii_ctrl = REG_RGMII_CNTRL_P(port); ++ } ++ + if (priv->type == BCM4908_DEVICE_ID || + priv->type == BCM7445_DEVICE_ID) + offset = CORE_STS_OVERRIDE_GMIIP_PORT(port); +@@ -574,7 +583,7 @@ static void bcm_sf2_sw_mac_config(struct + /* Clear id_mode_dis bit, and the existing port mode, let + * RGMII_MODE_EN bet set by mac_link_{up,down} + */ +- reg = reg_readl(priv, REG_RGMII_CNTRL_P(port)); ++ reg = reg_readl(priv, rgmii_ctrl); + reg &= ~ID_MODE_DIS; + reg &= ~(PORT_MODE_MASK << PORT_MODE_SHIFT); + reg &= ~(RX_PAUSE_EN | TX_PAUSE_EN); +@@ -589,7 +598,7 @@ static void bcm_sf2_sw_mac_config(struct + reg |= RX_PAUSE_EN; + } + +- reg_writel(priv, reg, REG_RGMII_CNTRL_P(port)); ++ reg_writel(priv, reg, rgmii_ctrl); + + force_link: + /* Force link settings detected from the PHY */ +@@ -615,6 +624,7 @@ static void bcm_sf2_sw_mac_link_set(stru + phy_interface_t interface, bool link) + { + struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); ++ u32 rgmii_ctrl; + u32 reg; + + if (!phy_interface_mode_is_rgmii(interface) && +@@ -622,13 +632,21 @@ static void bcm_sf2_sw_mac_link_set(stru + interface != PHY_INTERFACE_MODE_REVMII) + return; + ++ if (priv->type == BCM4908_DEVICE_ID) { ++ if (port != 7) ++ return; ++ rgmii_ctrl = REG_RGMII_11_CNTRL; ++ } else { ++ rgmii_ctrl = REG_RGMII_CNTRL_P(port); ++ } ++ + /* If the link is down, just disable the interface to conserve power */ +- reg = reg_readl(priv, REG_RGMII_CNTRL_P(port)); ++ reg = reg_readl(priv, rgmii_ctrl); + if (link) + reg |= RGMII_MODE_EN; + else + reg &= ~RGMII_MODE_EN; +- reg_writel(priv, reg, REG_RGMII_CNTRL_P(port)); ++ reg_writel(priv, reg, rgmii_ctrl); + } + + static void bcm_sf2_sw_mac_link_down(struct dsa_switch *ds, int port, +@@ -999,9 +1017,7 @@ static const u16 bcm_sf2_4908_reg_offset + [REG_PHY_REVISION] = 0x14, + [REG_SPHY_CNTRL] = 0x24, + [REG_CROSSBAR] = 0xc8, +- [REG_RGMII_0_CNTRL] = 0xe0, +- [REG_RGMII_1_CNTRL] = 0xec, +- [REG_RGMII_2_CNTRL] = 0xf8, ++ [REG_RGMII_11_CNTRL] = 0x014c, + [REG_LED_0_CNTRL] = 0x40, + [REG_LED_1_CNTRL] = 0x4c, + [REG_LED_2_CNTRL] = 0x58, +--- a/drivers/net/dsa/bcm_sf2_regs.h ++++ b/drivers/net/dsa/bcm_sf2_regs.h +@@ -21,6 +21,7 @@ enum bcm_sf2_reg_offs { + REG_RGMII_0_CNTRL, + REG_RGMII_1_CNTRL, + REG_RGMII_2_CNTRL, ++ REG_RGMII_11_CNTRL, + REG_LED_0_CNTRL, + REG_LED_1_CNTRL, + REG_LED_2_CNTRL, From 00a326a7360e5e172962e65392e85308e847997e Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sun, 14 Mar 2021 19:04:20 +0000 Subject: [PATCH 06/27] firmware-utils/ptgen: remove unused variable assignment Discovered by coverty: CID 1473630: Code maintainability issues (UNUSED_VALUE) Assigning value from "type_to_guid_and_name(type, &name)" to "part_guid" here, but that stored value is overwritten before it can be used. Remove the now redundant assignment of part_guid which is also set conditionally later on. Fixes: 4a078bd135 ("firmware-utils/ptgen: fix partition guid and name") Signed-off-by: Daniel Golle --- tools/firmware-utils/src/ptgen.c | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/firmware-utils/src/ptgen.c b/tools/firmware-utils/src/ptgen.c index 1eed21393d..d911b9d1f0 100644 --- a/tools/firmware-utils/src/ptgen.c +++ b/tools/firmware-utils/src/ptgen.c @@ -630,7 +630,6 @@ int main (int argc, char **argv) break; case 't': type = (char)strtoul(optarg, NULL, 16); - part_guid = type_to_guid_and_name(type, &name); break; case 'a': active = (int)strtoul(optarg, NULL, 0); From 578c73fea3a322a408d940636e4c170242dce2cb Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sun, 14 Mar 2021 19:07:00 +0000 Subject: [PATCH 07/27] uboot-mediatek: select matching U-Boot for board Instead of building all U-Boot variants by default, build only those needed by the selected board(s). Signed-off-by: Daniel Golle --- package/boot/uboot-mediatek/Makefile | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/package/boot/uboot-mediatek/Makefile b/package/boot/uboot-mediatek/Makefile index efdc25a195..1fb67321ed 100644 --- a/package/boot/uboot-mediatek/Makefile +++ b/package/boot/uboot-mediatek/Makefile @@ -12,19 +12,20 @@ include $(INCLUDE_DIR)/host-build.mk define U-Boot/Default BUILD_TARGET:=mediatek UBOOT_IMAGE:=u-boot-mtk.bin - DEFAULT:=y endef define U-Boot/mt7622_rfb1 NAME:=MT7622 Reference Board 1 - BUILD_SUBTARGET:=mt7622 UBOOT_CONFIG:=mt7622_rfb + BUILD_DEVICES:=mediatek_mt7622-rfb1 mediatek_mt7622-rfb1-ubi + BUILD_SUBTARGET:=mt7622 endef define U-Boot/mt7622_linksys_e8450 NAME:=Linksys E8450 - BUILD_SUBTARGET:=mt7622 UBOOT_CONFIG:=mt7622_linksys_e8450 + BUILD_DEVICES:=linksys_e8450-ubi + BUILD_SUBTARGET:=mt7622 UBOOT_IMAGE:=u-boot.fip BL2_BOOTDEV:=snand BL2_DDRBLOB:=1 @@ -33,8 +34,9 @@ endef define U-Boot/mt7622_bananapi_bpi-r64-emmc NAME:=BananaPi R64 (eMMC) - BUILD_SUBTARGET:=mt7622 UBOOT_CONFIG:=mt7622_bananapi_bpi-r64-emmc + BUILD_DEVICES:=bananapi_bpi-r64 + BUILD_SUBTARGET:=mt7622 UBOOT_IMAGE:=u-boot.fip BL2_BOOTDEV:=emmc BL2_DDRBLOB:=2 @@ -43,8 +45,9 @@ endef define U-Boot/mt7622_bananapi_bpi-r64-sdmmc NAME:=BananaPi R64 (SDMMC) - BUILD_SUBTARGET:=mt7622 UBOOT_CONFIG:=mt7622_bananapi_bpi-r64-sdmmc + BUILD_DEVICES:=bananapi_bpi-r64 + BUILD_SUBTARGET:=mt7622 UBOOT_IMAGE:=u-boot.fip BL2_BOOTDEV:=sdmmc BL2_DDRBLOB:=2 @@ -53,31 +56,34 @@ endef define U-Boot/mt7623a_unielec_u7623 NAME:=UniElec U7623 (mt7623) + BUILD_DEVICES:=unielec_u7623-emmc unielec_u7623-02-emmc-512m-legacy BUILD_SUBTARGET:=mt7623 UBOOT_CONFIG:=mt7623a_unielec_u7623_02 endef define U-Boot/mt7623n_bpir2 NAME:=Banana Pi R2 (mt7623) + BUILD_DEVICES:=bpi_bananapi-r2 BUILD_SUBTARGET:=mt7623 UBOOT_IMAGE:=u-boot.bin UBOOT_CONFIG:=mt7623n_bpir2 endef -define U-Boot/mt7629 - NAME:=MT7629 +define U-Boot/mt7629_rfb + NAME:=MT7629 Reference Board BUILD_SUBTARGET:=mt7629 + BUILD_DEVICES:=mediatek_mt7629-rfb UBOOT_CONFIG:=mt7629_rfb endef UBOOT_TARGETS := \ - mt7629 \ mt7622_bananapi_bpi-r64-emmc \ mt7622_bananapi_bpi-r64-sdmmc \ mt7622_linksys_e8450 \ mt7622_rfb1 \ mt7623n_bpir2 \ - mt7623a_unielec_u7623 + mt7623a_unielec_u7623 \ + mt7629_rfb UBOOT_MAKE_FLAGS += $(UBOOT_IMAGE:.fip=.bin) From 34adb6db1da8e5303f5499ba8d2540fd5410216d Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sun, 14 Mar 2021 19:11:14 +0000 Subject: [PATCH 08/27] mediatek: mt7622: clean up image build * clean up whitespace to make GPT partitioning more readable * don't select packages already part of the target default selection * don't select U-Boot variants (breaks ImageBuilder) * don't select AHCI on boards without SATA * don't select kmod-usb2 and kmod-ohci, USB 1.x and USB 2.0 devices work fine with the in-SoC XHCI host having just kmod-usb3 installed. * select kmod-btmtkuart for devices with Bluetooth support * sort DEVICE_PACKAGES Signed-off-by: Daniel Golle --- target/linux/mediatek/image/mt7622.mk | 35 ++++++++++----------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/target/linux/mediatek/image/mt7622.mk b/target/linux/mediatek/image/mt7622.mk index 9f54021524..6824d4a8ee 100644 --- a/target/linux/mediatek/image/mt7622.mk +++ b/target/linux/mediatek/image/mt7622.mk @@ -15,20 +15,20 @@ define Build/bl31-uboot endef define Build/mt7622-gpt - cp $@ $@.tmp || true + cp $@ $@.tmp 2>/dev/null || true ptgen -g -o $@.tmp -a 1 -l 1024 \ $(if $(findstring sdmmc,$1), \ -H \ - -t 0x83 -N bl2 -r -p 512k@512k \ + -t 0x83 -N bl2 -r -p 512k@512k \ ) \ - -t 0xef -N fip -r -p 1M@2M \ - -t 0x83 -N ubootenv -r -p 1M@4M \ - -N recovery -r -p 32M@6M \ + -t 0xef -N fip -r -p 1M@2M \ + -t 0x83 -N ubootenv -r -p 1M@4M \ + -N recovery -r -p 32M@6M \ $(if $(findstring sdmmc,$1), \ - -t 0x2e -N production -p 216M@40M \ + -t 0x2e -N production -p 216M@40M \ ) \ $(if $(findstring emmc,$1), \ - -t 0x2e -N production -p 980M@40M \ + -t 0x2e -N production -p 980M@40M \ ) cat $@.tmp >> $@ rm $@.tmp @@ -38,12 +38,7 @@ define Device/bananapi_bpi-r64 DEVICE_VENDOR := Bananapi DEVICE_MODEL := BPi-R64 DEVICE_DTS := mt7622-bananapi-bpi-r64 - DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk \ - kmod-mt7615e kmod-mt7615-firmware \ - uboot-mt7622_bananapi_bpi-r64-emmc \ - uboot-mt7622_bananapi_bpi-r64-sdmmc \ - e2fsprogs mkf2fs f2fsck \ - kmod-nls-cp437 kmod-nls-iso8859-1 kmod-vfat blockd + DEVICE_PACKAGES := kmod-ata-ahci-mtk kmod-btmtkuart kmod-usb3 e2fsprogs mkf2fs f2fsck ARTIFACTS := sdcard.img IMAGES := sysupgrade.itb KERNEL_INITRAMFS_SUFFIX := -recovery.itb @@ -61,8 +56,7 @@ define Device/elecom_wrc-2533gent DEVICE_MODEL := WRC-2533GENT DEVICE_DTS := mt7622-elecom-wrc-2533gent DEVICE_DTS_DIR := ../dts - DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-mt7615e \ - kmod-mt7615-firmware kmod-btmtkuart swconfig + DEVICE_PACKAGES := kmod-btmtkuart kmod-usb3 swconfig endef TARGET_DEVICES += elecom_wrc-2533gent @@ -73,8 +67,7 @@ define Device/linksys_e8450 DEVICE_ALT0_MODEL := RT3200 DEVICE_DTS := mt7622-linksys-e8450 DEVICE_DTS_DIR := ../dts - DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk \ - kmod-mt7615e kmod-mt7615-firmware kmod-mt7915e + DEVICE_PACKAGES := kmod-mt7915e kmod-usb3 endef TARGET_DEVICES += linksys_e8450 @@ -87,6 +80,7 @@ define Device/linksys_e8450-ubi DEVICE_ALT0_VARIANT := UBI DEVICE_DTS := mt7622-linksys-e8450-ubi DEVICE_DTS_DIR := ../dts + DEVICE_PACKAGES := kmod-mt7915e kmod-usb3 UBINIZE_OPTS := -E 5 BLOCKSIZE := 128k PAGESIZE := 2048 @@ -99,9 +93,6 @@ define Device/linksys_e8450-ubi KERNEL_INITRAMFS_SUFFIX := -recovery.itb IMAGES := sysupgrade.itb IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-static-with-rootfs | append-metadata - DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk \ - kmod-mt7615e kmod-mt7615-firmware kmod-mt7915e \ - u-boot-mt7622_linksys_e8450 uboot-envtools ARTIFACTS := preloader.bin bl31-uboot.fip ARTIFACT/preloader.bin := bl2 snand-1ddr ARTIFACT/bl31-uboot.fip := bl31-uboot linksys_e8450 @@ -112,7 +103,7 @@ define Device/mediatek_mt7622-rfb1 DEVICE_VENDOR := MediaTek DEVICE_MODEL := MTK7622 rfb1 AP DEVICE_DTS := mt7622-rfb1 - DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk + DEVICE_PACKAGES := kmod-ata-ahci-mtk kmod-btmtkuart kmod-usb3 endef TARGET_DEVICES += mediatek_mt7622-rfb1 @@ -121,6 +112,7 @@ define Device/mediatek_mt7622-rfb1-ubi DEVICE_MODEL := MTK7622 rfb1 AP (UBI) DEVICE_DTS := mt7622-rfb1-ubi DEVICE_DTS_DIR := ../dts + DEVICE_PACKAGES := kmod-ata-ahci-mtk kmod-btmtkuart kmod-usb3 UBINIZE_OPTS := -E 5 BLOCKSIZE := 128k PAGESIZE := 2048 @@ -130,7 +122,6 @@ define Device/mediatek_mt7622-rfb1-ubi IMAGE/factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | \ check-size $$$$(IMAGE_SIZE) IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata - DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk endef TARGET_DEVICES += mediatek_mt7622-rfb1-ubi From 8dae189c7e4322715fab02126ba6cf85c2ad1aa5 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sun, 14 Mar 2021 22:08:16 +0000 Subject: [PATCH 09/27] uboot-mediatek: also install production image to eMMC Make installation to eMMC more convenient on the BPi-R64 by also copying the production image (if valid) from SD Card to eMMC. Signed-off-by: Daniel Golle --- .../patches/403-add-bananapi_bpi-r64_defconfigs.patch | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/package/boot/uboot-mediatek/patches/403-add-bananapi_bpi-r64_defconfigs.patch b/package/boot/uboot-mediatek/patches/403-add-bananapi_bpi-r64_defconfigs.patch index 9d52cc4feb..03a1a71064 100644 --- a/package/boot/uboot-mediatek/patches/403-add-bananapi_bpi-r64_defconfigs.patch +++ b/package/boot/uboot-mediatek/patches/403-add-bananapi_bpi-r64_defconfigs.patch @@ -147,7 +147,7 @@ +CONFIG_USB_STORAGE=y --- /dev/null +++ b/bananapi_bpi-r64-sdmmc_env -@@ -0,0 +1,54 @@ +@@ -0,0 +1,57 @@ +ipaddr=192.168.1.1 +serverip=192.168.1.254 +loadaddr=0x4007ff28 @@ -184,8 +184,11 @@ +emmc_write_bl2=mmc dev 0 1 && mmc partconf 0 1 1 1 && mmc erase 0x0 0x400 && mmc write $loadaddr 0x0 0x100 ; mmc partconf 0 1 1 0 +emmc_write_hdr=mmc dev 0 0 && mmc erase 0x0 0x40 && mmc write $loadaddr 0x0 0x40 +emmc_write_bl3=mmc dev 0 0 && mmc erase 0x1000 0x800 && mmc write $loadaddr 0x1000 0x800 ++emmc_write_production=iminfo $loadaddr && mmc dev 0 && part start mmc 0 $part_default part_addr && part size mmc 0 $part_default part_size && run mmc_write_vol +emmc_write_recovery=iminfo $loadaddr && mmc dev 0 && part start mmc 0 $part_recovery part_addr && part size mmc 0 $part_recovery part_size && run mmc_write_vol -+emmc_init=run sdmmc_read_emmc_bl2 && run emmc_write_bl2 && run sdmmc_read_emmc_hdr && run emmc_write_hdr && run sdmmc_read_emmc_bl3 && run emmc_write_bl3 && run sdmmc_read_recovery && run emmc_write_recovery ; env default bootcmd ; saveenv ; saveenv ++emmc_init_bl=run sdmmc_read_emmc_bl2 && run emmc_write_bl2 && run sdmmc_read_emmc_hdr && run emmc_write_hdr && run sdmmc_read_emmc_bl3 && run emmc_write_bl3 ++emmc_init_openwrt=run sdmmc_read_recovery && run emmc_write_recovery ; run sdmmc_read_production && run emmc_write_production ++emmc_init=run emmc_init_bl && run emmc_init_openwrt ; env default bootcmd ; saveenv ; saveenv +sdmmc_write_production=iminfo $fileaddr && mmc dev 1 && part start mmc 1 $part_default part_addr && part size mmc 1 $part_default part_size && run mmc_write_vol +sdmmc_write_recovery=iminfo $fileaddr && mmc dev 1 && part start mmc 1 $part_recovery part_addr && part size mmc 1 $part_recovery part_size && run mmc_write_vol +sdmmc_read_production=mmc dev 1 && part start mmc 1 $part_default part_addr && part size mmc 1 $part_default part_size && run mmc_read_vol From 6a7a1f1c64cb307aef561b66956d32867b119a24 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sun, 14 Mar 2021 22:55:17 +0000 Subject: [PATCH 10/27] opkg: update to git HEAD d3a63b3 libopkg: add option to strip ABI versions from listed names Signed-off-by: Daniel Golle --- package/system/opkg/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/system/opkg/Makefile b/package/system/opkg/Makefile index b739650261..6c36825711 100644 --- a/package/system/opkg/Makefile +++ b/package/system/opkg/Makefile @@ -14,9 +14,9 @@ PKG_FLAGS:=essential PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://git.openwrt.org/project/opkg-lede.git -PKG_SOURCE_DATE:=2021-03-11 -PKG_SOURCE_VERSION:=d71856a4f137dc9fb890c5e777790e2c51fde921 -PKG_MIRROR_HASH:=4da8ef070474dbc3854435838fbec585d1bdf74f7c99a2fb27203798b7f93c19 +PKG_SOURCE_DATE:=2021-03-14 +PKG_SOURCE_VERSION:=d3a63b327383a2ac1a8f925a58a2f6a7808f5181 +PKG_MIRROR_HASH:=65339e965b3d3d2d49b98e41d774bcedb0f044335c651d306d95cd3e96ca57c3 PKG_LICENSE:=GPL-2.0 PKG_LICENSE_FILES:=COPYING From 988ed0080284903d1fe4851c5ae8f1238bc61da2 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Mon, 15 Mar 2021 00:48:02 +0000 Subject: [PATCH 11/27] opkg: update to git HEAD 5936c4f libopkg: pkg_hash: prefer original packages to satisfy dependencies Signed-off-by: Daniel Golle --- package/system/opkg/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/system/opkg/Makefile b/package/system/opkg/Makefile index 6c36825711..fb7d8667c6 100644 --- a/package/system/opkg/Makefile +++ b/package/system/opkg/Makefile @@ -14,9 +14,9 @@ PKG_FLAGS:=essential PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://git.openwrt.org/project/opkg-lede.git -PKG_SOURCE_DATE:=2021-03-14 -PKG_SOURCE_VERSION:=d3a63b327383a2ac1a8f925a58a2f6a7808f5181 -PKG_MIRROR_HASH:=65339e965b3d3d2d49b98e41d774bcedb0f044335c651d306d95cd3e96ca57c3 +PKG_SOURCE_DATE:=2021-03-15 +PKG_SOURCE_VERSION:=5936c4f9660248284e8a9b040ea3153d3ea888de +PKG_MIRROR_HASH:=b873c209baaf4f150c89646d58e4a0072f807d24b02c320ab8c7ae9180c13240 PKG_LICENSE:=GPL-2.0 PKG_LICENSE_FILES:=COPYING From 6cd13be01492e330c2c2f3b00f06a2df347a9f63 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Sat, 6 Mar 2021 14:16:55 -0800 Subject: [PATCH 12/27] gettext-full: disable nameless locale define It seems some packages like transmission and json-glib fail with it enabled. Signed-off-by: Rosen Penev --- package/libs/gettext-full/Makefile | 2 +- package/libs/gettext-full/patches/010-m4.patch | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/libs/gettext-full/Makefile b/package/libs/gettext-full/Makefile index eaedd4ed40..8111a36f5f 100644 --- a/package/libs/gettext-full/Makefile +++ b/package/libs/gettext-full/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=gettext-full PKG_VERSION:=0.21 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=gettext-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@GNU/gettext diff --git a/package/libs/gettext-full/patches/010-m4.patch b/package/libs/gettext-full/patches/010-m4.patch index d910ab7a21..6d08835e37 100644 --- a/package/libs/gettext-full/patches/010-m4.patch +++ b/package/libs/gettext-full/patches/010-m4.patch @@ -84,7 +84,7 @@ -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ - -e 's,@''HAVE_NAMELESS_LOCALES''@,@HAVE_NAMELESS_LOCALES@,g' \ -+ -e 's,@''HAVE_NAMELESS_LOCALES''@,1,g' \ ++ -e 's,@''HAVE_NAMELESS_LOCALES''@,0,g' \ -e 's,@''HAVE_NEWLOCALE''@,@HAVE_NEWLOCALE@,g' \ < $(srcdir)/libgnuintl.in.h \ | if test '@WOE32DLL@' = yes; then \ @@ -93,7 +93,7 @@ -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ - -e 's,@''HAVE_NAMELESS_LOCALES''@,@HAVE_NAMELESS_LOCALES@,g' \ -+ -e 's,@''HAVE_NAMELESS_LOCALES''@,1,g' \ ++ -e 's,@''HAVE_NAMELESS_LOCALES''@,0,g' \ -e 's,@''HAVE_NEWLOCALE''@,@HAVE_NEWLOCALE@,g' \ < $(srcdir)/libgnuintl.in.h > libintl.h MOSTLYCLEANFILES += libintl.h @@ -278,7 +278,7 @@ -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ - -e 's,@''HAVE_NAMELESS_LOCALES''@,@HAVE_NAMELESS_LOCALES@,g' \ -+ -e 's,@''HAVE_NAMELESS_LOCALES''@,1,g' \ ++ -e 's,@''HAVE_NAMELESS_LOCALES''@,0,g' \ -e 's,@''HAVE_NEWLOCALE''@,@HAVE_NEWLOCALE@,g' \ < $(srcdir)/libgnuintl.in.h \ | if test '@WOE32DLL@' = yes; then \ @@ -287,7 +287,7 @@ -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ - -e 's,@''HAVE_NAMELESS_LOCALES''@,@HAVE_NAMELESS_LOCALES@,g' \ -+ -e 's,@''HAVE_NAMELESS_LOCALES''@,1,g' \ ++ -e 's,@''HAVE_NAMELESS_LOCALES''@,0,g' \ -e 's,@''HAVE_NEWLOCALE''@,@HAVE_NEWLOCALE@,g' \ < $(srcdir)/libgnuintl.in.h > libintl.h MOSTLYCLEANFILES += libintl.h From 72f481b1579e844d25ca71ec72b2fa377d961f04 Mon Sep 17 00:00:00 2001 From: Paul Spooren Date: Thu, 4 Feb 2021 13:34:30 -1000 Subject: [PATCH 13/27] scripts,ipkg-build: apply shellcheck This commit cleans the `ipkg-build` script via changes suggested by shellcheck. These are mostly word splitting issues. Remove the definition of GZIP, this adds three "lookups" of the `gzip` binary but the rest of the build system doesn't seem to use such improvements neither. Signed-off-by: Paul Spooren --- scripts/ipkg-build | 81 +++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 41 deletions(-) diff --git a/scripts/ipkg-build b/scripts/ipkg-build index 343aab6caf..8533c97fcc 100755 --- a/scripts/ipkg-build +++ b/scripts/ipkg-build @@ -13,7 +13,6 @@ version=1.0 FIND="$(command -v find)" FIND="${FIND:-$(command -v gfind)}" TAR="${TAR:-$(command -v tar)}" -GZIP="$(command -v gzip)" # try to use fixed source epoch if [ -n "$PKG_SOURCE_DATE_EPOCH" ]; then @@ -31,40 +30,40 @@ ipkg_extract_value() { required_field() { field=$1 - grep "^$field:" < $CONTROL/control | ipkg_extract_value + grep "^$field:" < "$CONTROL/control" | ipkg_extract_value } pkg_appears_sane() { - local pkg_dir=$1 + local pkg_dir="$1" - local owd=$PWD - cd $pkg_dir + local owd="$PWD" + cd "$pkg_dir" PKG_ERROR=0 - pkg=`required_field Package` - version=`required_field Version | sed 's/Version://; s/^.://g;'` - arch=`required_field Architecture` + pkg="$(required_field Package)" + version="$(required_field Version | sed 's/Version://; s/^.://g;')" + arch="$(required_field Architecture)" - if echo $pkg | grep '[^a-zA-Z0-9_.+-]'; then + if echo "$pkg" | grep '[^a-zA-Z0-9_.+-]'; then echo "*** Error: Package name $name contains illegal characters, (other than [a-z0-9.+-])" >&2 PKG_ERROR=1; fi - if [ -f $CONTROL/conffiles ]; then - rm -f $CONTROL/conffiles.resolved + if [ -f "$CONTROL/conffiles" ]; then + rm -f "$CONTROL/conffiles.resolved" - for cf in `$FIND $(sed -e "s!^/!$pkg_dir/!" $CONTROL/conffiles) -type f`; do - echo "${cf#$pkg_dir}" >> $CONTROL/conffiles.resolved + for cf in $($FIND $(sed -e "s!^/!$pkg_dir/!" "$CONTROL/conffiles") -type f); do + echo "${cf#$pkg_dir}" >> "$CONTROL/conffiles.resolved" done - rm $CONTROL/conffiles - if [ -f $CONTROL/conffiles.resolved ]; then - mv $CONTROL/conffiles.resolved $CONTROL/conffiles - chmod 0644 $CONTROL/conffiles + rm "$CONTROL"/conffiles + if [ -f "$CONTROL"/conffiles.resolved ]; then + mv "$CONTROL"/conffiles.resolved "$CONTROL"/conffiles + chmod 0644 "$CONTROL"/conffiles fi fi - cd $owd + cd "$owd" return $PKG_ERROR } @@ -95,17 +94,17 @@ file_modes="" usage="Usage: $0 [-v] [-h] [-m] []" while getopts "hvm:" opt; do case $opt in - v ) echo $version + v ) echo "$version" exit 0 ;; - h ) echo $usage >&2 ;; + h ) echo "$usage" >&2 ;; m ) file_modes=$OPTARG ;; - \? ) echo $usage >&2 + \? ) echo "$usage" >&2 esac done -shift $(($OPTIND - 1)) +shift $((OPTIND - 1)) # continue on to process additional arguments @@ -115,42 +114,42 @@ case $# in ;; 2) dest_dir=$2 - if [ "$dest_dir" = "." -o "$dest_dir" = "./" ] ; then + if [ "$dest_dir" = "." ] || [ "$dest_dir" = "./" ] ; then dest_dir=$PWD fi ;; *) - echo $usage >&2 + echo "$usage" >&2 exit 1 ;; esac -pkg_dir=$1 +pkg_dir="$1" -if [ ! -d $pkg_dir ]; then +if [ ! -d "$pkg_dir" ]; then echo "*** Error: Directory $pkg_dir does not exist" >&2 exit 1 fi # CONTROL is second so that it takes precedence CONTROL= -[ -d $pkg_dir/CONTROL ] && CONTROL=CONTROL +[ -d "$pkg_dir"/CONTROL ] && CONTROL=CONTROL if [ -z "$CONTROL" ]; then echo "*** Error: Directory $pkg_dir has no CONTROL subdirectory." >&2 exit 1 fi -if ! pkg_appears_sane $pkg_dir; then +if ! pkg_appears_sane "$pkg_dir"; then echo >&2 echo "ipkg-build: Please fix the above errors and try again." >&2 exit 1 fi tmp_dir=$dest_dir/IPKG_BUILD.$$ -mkdir $tmp_dir +mkdir "$tmp_dir" -echo $CONTROL > $tmp_dir/tarX -cd $pkg_dir +echo $CONTROL > "$tmp_dir"/tarX +cd "$pkg_dir" for file_mode in $file_modes; do case $file_mode in /*:*:*:*) @@ -179,22 +178,22 @@ for file_mode in $file_modes; do chown "$uid:$gid" "$pkg_dir/$path" chmod "$mode" "$pkg_dir/$path" done -$TAR -X $tmp_dir/tarX --format=gnu --sort=name -cpf - --mtime="$TIMESTAMP" . | $GZIP -n - > $tmp_dir/data.tar.gz +$TAR -X "$tmp_dir"/tarX --format=gnu --sort=name -cpf - --mtime="$TIMESTAMP" . | gzip -n - > "$tmp_dir"/data.tar.gz -installed_size=`stat -c "%s" $tmp_dir/data.tar.gz` +installed_size=$(stat -c "%s" "$tmp_dir"/data.tar.gz) sed -i -e "s/^Installed-Size: .*/Installed-Size: $installed_size/" \ - $pkg_dir/$CONTROL/control + "$pkg_dir"/$CONTROL/control -( cd $pkg_dir/$CONTROL && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" . | $GZIP -n - > $tmp_dir/control.tar.gz ) -rm $tmp_dir/tarX +( cd "$pkg_dir"/$CONTROL && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" . | gzip -n - > "$tmp_dir"/control.tar.gz ) +rm "$tmp_dir"/tarX -echo "2.0" > $tmp_dir/debian-binary +echo "2.0" > "$tmp_dir"/debian-binary pkg_file=$dest_dir/${pkg}_${version}_${arch}.ipk -rm -f $pkg_file -( cd $tmp_dir && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" ./debian-binary ./data.tar.gz ./control.tar.gz | $GZIP -n - > $pkg_file ) +rm -f "$pkg_file" +( cd "$tmp_dir" && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" ./debian-binary ./data.tar.gz ./control.tar.gz | gzip -n - > "$pkg_file" ) -rm $tmp_dir/debian-binary $tmp_dir/data.tar.gz $tmp_dir/control.tar.gz -rmdir $tmp_dir +rm "$tmp_dir"/debian-binary "$tmp_dir"/data.tar.gz "$tmp_dir"/control.tar.gz +rmdir "$tmp_dir" echo "Packaged contents of $pkg_dir into $pkg_file" From bb95be9265a9e3eb71c4f50b5f289a75683405d4 Mon Sep 17 00:00:00 2001 From: Paul Spooren Date: Thu, 4 Feb 2021 13:49:02 -1000 Subject: [PATCH 14/27] scripts,ipkg-build: use realpath for pkg_dir This allows manual execution of the ipkg-build script even with releative path. Signed-off-by: Paul Spooren --- scripts/ipkg-build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/ipkg-build b/scripts/ipkg-build index 8533c97fcc..c112270a2b 100755 --- a/scripts/ipkg-build +++ b/scripts/ipkg-build @@ -124,7 +124,7 @@ case $# in ;; esac -pkg_dir="$1" +pkg_dir="$(realpath "$1")" if [ ! -d "$pkg_dir" ]; then echo "*** Error: Directory $pkg_dir does not exist" >&2 From 7379f8bd3e7ee0722faa6ec8b2969081fbdc1e07 Mon Sep 17 00:00:00 2001 From: Andre Heider Date: Tue, 16 Feb 2021 08:21:08 +0100 Subject: [PATCH 15/27] build: prereq: drop support for Python 3.5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The final Python 3.5 release was 3.5.10 in September 2020 [0]. This release series is now End-of-Life (EOL). The only LTS distribution that still only ships Python 3.5 is Ubuntu 16.04, which will be EOL in April 2021 [1]. The meson build system bumped their python requirement to 3.6 for the 0.57.0 release. This patch ensures that OpenWrt can update meson while still relying on the host python. [0] https://www.python.org/dev/peps/pep-0478/#id4 [1] https://ubuntu.com/about/release-cycle [2] https://mesonbuild.com/Release-notes-for-0-57-0.html#minimum-required-python-version-updated-to-36 Signed-off-by: Andre Heider [python3.6+ in README.md] Signed-off-by: Petr Štetiar --- README.md | 2 +- include/prereq-build.mk | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 68063d9f86..0581a94a09 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ the [Build System Setup](https://openwrt.org/docs/guide-developer/build-system/i documentation. ``` -gcc-6+ binutils bzip2 flex python3 perl make4.1+ find grep diff unzip gawk getopt +gcc-6+ binutils bzip2 flex python3.6+ perl make4.1+ find grep diff unzip gawk getopt subversion libz-dev libc-dev rsync which ``` diff --git a/include/prereq-build.mk b/include/prereq-build.mk index 32edc6e437..b2526a1ec1 100644 --- a/include/prereq-build.mk +++ b/include/prereq-build.mk @@ -141,21 +141,19 @@ $(eval $(call SetupHostCommand,perl,Please install Perl 5.x, \ $(eval $(call CleanupPython2)) -$(eval $(call SetupHostCommand,python,Please install Python >= 3.5, \ +$(eval $(call SetupHostCommand,python,Please install Python >= 3.6, \ python3.9 -V 2>&1 | grep 'Python 3', \ python3.8 -V 2>&1 | grep 'Python 3', \ python3.7 -V 2>&1 | grep 'Python 3', \ python3.6 -V 2>&1 | grep 'Python 3', \ - python3.5 -V 2>&1 | grep 'Python 3', \ - python3 -V 2>&1 | grep -E 'Python 3\.[5-9]\.?')) + python3 -V 2>&1 | grep -E 'Python 3\.[6-9]\.?')) -$(eval $(call SetupHostCommand,python3,Please install Python >= 3.5, \ +$(eval $(call SetupHostCommand,python3,Please install Python >= 3.6, \ python3.9 -V 2>&1 | grep 'Python 3', \ python3.8 -V 2>&1 | grep 'Python 3', \ python3.7 -V 2>&1 | grep 'Python 3', \ python3.6 -V 2>&1 | grep 'Python 3', \ - python3.5 -V 2>&1 | grep 'Python 3', \ - python3 -V 2>&1 | grep -E 'Python 3\.[5-9]\.?')) + python3 -V 2>&1 | grep -E 'Python 3\.[6-9]\.?')) $(eval $(call SetupHostCommand,git,Please install Git (git-core) >= 1.7.12.2, \ git --exec-path | xargs -I % -- grep -q -- --recursive %/git-submodule)) From 5dc501507222b38d731b89c3311d8253b73dd0e7 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 15 Mar 2021 00:05:42 +0100 Subject: [PATCH 16/27] mac80211: backport upstream patches for driver disconnect Needed for an mt76 update Signed-off-by: Felix Fietkau --- ...ort-immediate-reconnect-request-hint.patch | 301 ++++++++++++++++++ ...-driver-based-disconnect-with-reconn.patch | 271 ++++++++++++++++ ...-get_default_func-move-default-flow-.patch | 2 +- ...add-rx-decapsulation-offload-support.patch | 4 +- .../500-mac80211_configure_antenna_gain.patch | 20 +- .../utils/iw/patches/001-nl80211_h_sync.patch | 10 +- 6 files changed, 593 insertions(+), 15 deletions(-) create mode 100644 package/kernel/mac80211/patches/subsys/300-cfg80211-support-immediate-reconnect-request-hint.patch create mode 100644 package/kernel/mac80211/patches/subsys/301-mac80211-support-driver-based-disconnect-with-reconn.patch diff --git a/package/kernel/mac80211/patches/subsys/300-cfg80211-support-immediate-reconnect-request-hint.patch b/package/kernel/mac80211/patches/subsys/300-cfg80211-support-immediate-reconnect-request-hint.patch new file mode 100644 index 0000000000..d3f4aa7972 --- /dev/null +++ b/package/kernel/mac80211/patches/subsys/300-cfg80211-support-immediate-reconnect-request-hint.patch @@ -0,0 +1,301 @@ +From: Johannes Berg +Date: Sun, 6 Dec 2020 14:54:42 +0200 +Subject: [PATCH] cfg80211: support immediate reconnect request hint + +There are cases where it's necessary to disconnect, but an +immediate reconnection is desired. Support a hint to userspace +that this is the case, by including a new attribute in the +deauth or disassoc event. + +Signed-off-by: Luca Coelho +Link: https://lore.kernel.org/r/iwlwifi.20201206145305.58d33941fb9d.I0e7168c205c7949529c8e3b86f3c9b12c01a7017@changeid +Signed-off-by: Johannes Berg +--- + +--- a/include/net/cfg80211.h ++++ b/include/net/cfg80211.h +@@ -6410,13 +6410,15 @@ void cfg80211_abandon_assoc(struct net_d + * @dev: network device + * @buf: 802.11 frame (header + body) + * @len: length of the frame data ++ * @reconnect: immediate reconnect is desired (include the nl80211 attribute) + * + * This function is called whenever deauthentication has been processed in + * station mode. This includes both received deauthentication frames and + * locally generated ones. This function may sleep. The caller must hold the + * corresponding wdev's mutex. + */ +-void cfg80211_tx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len); ++void cfg80211_tx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len, ++ bool reconnect); + + /** + * cfg80211_rx_unprot_mlme_mgmt - notification of unprotected mlme mgmt frame +--- a/include/uapi/linux/nl80211.h ++++ b/include/uapi/linux/nl80211.h +@@ -2527,6 +2527,10 @@ enum nl80211_commands { + * override mask. Used with NL80211_ATTR_S1G_CAPABILITY in + * NL80211_CMD_ASSOCIATE or NL80211_CMD_CONNECT. + * ++ * @NL80211_ATTR_RECONNECT_REQUESTED: flag attribute, used with deauth and ++ * disassoc events to indicate that an immediate reconnect to the AP ++ * is desired. ++ * + * @NUM_NL80211_ATTR: total number of nl80211_attrs available + * @NL80211_ATTR_MAX: highest attribute number currently defined + * @__NL80211_ATTR_AFTER_LAST: internal use +@@ -3016,6 +3020,8 @@ enum nl80211_attrs { + NL80211_ATTR_S1G_CAPABILITY, + NL80211_ATTR_S1G_CAPABILITY_MASK, + ++ NL80211_ATTR_RECONNECT_REQUESTED, ++ + /* add attributes here, update the policy in nl80211.c */ + + __NL80211_ATTR_AFTER_LAST, +--- a/net/mac80211/mlme.c ++++ b/net/mac80211/mlme.c +@@ -2729,7 +2729,7 @@ static void ieee80211_report_disconnect( + }; + + if (tx) +- cfg80211_tx_mlme_mgmt(sdata->dev, buf, len); ++ cfg80211_tx_mlme_mgmt(sdata->dev, buf, len, false); + else + cfg80211_rx_mlme_mgmt(sdata->dev, buf, len); + +@@ -4716,7 +4716,8 @@ void ieee80211_mgd_quiesce(struct ieee80 + if (ifmgd->auth_data) + ieee80211_destroy_auth_data(sdata, false); + cfg80211_tx_mlme_mgmt(sdata->dev, frame_buf, +- IEEE80211_DEAUTH_FRAME_LEN); ++ IEEE80211_DEAUTH_FRAME_LEN, ++ false); + } + + /* This is a bit of a hack - we should find a better and more generic +--- a/net/wireless/mlme.c ++++ b/net/wireless/mlme.c +@@ -4,7 +4,7 @@ + * + * Copyright (c) 2009, Jouni Malinen + * Copyright (c) 2015 Intel Deutschland GmbH +- * Copyright (C) 2019 Intel Corporation ++ * Copyright (C) 2019-2020 Intel Corporation + */ + + #include +@@ -81,7 +81,8 @@ static void cfg80211_process_auth(struct + } + + static void cfg80211_process_deauth(struct wireless_dev *wdev, +- const u8 *buf, size_t len) ++ const u8 *buf, size_t len, ++ bool reconnect) + { + struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); + struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)buf; +@@ -89,7 +90,7 @@ static void cfg80211_process_deauth(stru + u16 reason_code = le16_to_cpu(mgmt->u.deauth.reason_code); + bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr); + +- nl80211_send_deauth(rdev, wdev->netdev, buf, len, GFP_KERNEL); ++ nl80211_send_deauth(rdev, wdev->netdev, buf, len, reconnect, GFP_KERNEL); + + if (!wdev->current_bss || + !ether_addr_equal(wdev->current_bss->pub.bssid, bssid)) +@@ -100,7 +101,8 @@ static void cfg80211_process_deauth(stru + } + + static void cfg80211_process_disassoc(struct wireless_dev *wdev, +- const u8 *buf, size_t len) ++ const u8 *buf, size_t len, ++ bool reconnect) + { + struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); + struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)buf; +@@ -108,7 +110,8 @@ static void cfg80211_process_disassoc(st + u16 reason_code = le16_to_cpu(mgmt->u.disassoc.reason_code); + bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr); + +- nl80211_send_disassoc(rdev, wdev->netdev, buf, len, GFP_KERNEL); ++ nl80211_send_disassoc(rdev, wdev->netdev, buf, len, reconnect, ++ GFP_KERNEL); + + if (WARN_ON(!wdev->current_bss || + !ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) +@@ -133,9 +136,9 @@ void cfg80211_rx_mlme_mgmt(struct net_de + if (ieee80211_is_auth(mgmt->frame_control)) + cfg80211_process_auth(wdev, buf, len); + else if (ieee80211_is_deauth(mgmt->frame_control)) +- cfg80211_process_deauth(wdev, buf, len); ++ cfg80211_process_deauth(wdev, buf, len, false); + else if (ieee80211_is_disassoc(mgmt->frame_control)) +- cfg80211_process_disassoc(wdev, buf, len); ++ cfg80211_process_disassoc(wdev, buf, len, false); + } + EXPORT_SYMBOL(cfg80211_rx_mlme_mgmt); + +@@ -180,22 +183,23 @@ void cfg80211_abandon_assoc(struct net_d + } + EXPORT_SYMBOL(cfg80211_abandon_assoc); + +-void cfg80211_tx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len) ++void cfg80211_tx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len, ++ bool reconnect) + { + struct wireless_dev *wdev = dev->ieee80211_ptr; + struct ieee80211_mgmt *mgmt = (void *)buf; + + ASSERT_WDEV_LOCK(wdev); + +- trace_cfg80211_tx_mlme_mgmt(dev, buf, len); ++ trace_cfg80211_tx_mlme_mgmt(dev, buf, len, reconnect); + + if (WARN_ON(len < 2)) + return; + + if (ieee80211_is_deauth(mgmt->frame_control)) +- cfg80211_process_deauth(wdev, buf, len); ++ cfg80211_process_deauth(wdev, buf, len, reconnect); + else +- cfg80211_process_disassoc(wdev, buf, len); ++ cfg80211_process_disassoc(wdev, buf, len, reconnect); + } + EXPORT_SYMBOL(cfg80211_tx_mlme_mgmt); + +--- a/net/wireless/nl80211.c ++++ b/net/wireless/nl80211.c +@@ -732,6 +732,7 @@ static const struct nla_policy nl80211_p + NLA_POLICY_EXACT_LEN(IEEE80211_S1G_CAPABILITY_LEN), + [NL80211_ATTR_S1G_CAPABILITY_MASK] = + NLA_POLICY_EXACT_LEN(IEEE80211_S1G_CAPABILITY_LEN), ++ [NL80211_ATTR_RECONNECT_REQUESTED] = { .type = NLA_REJECT }, + }; + + /* policy for the key attributes */ +@@ -15899,7 +15900,7 @@ static void nl80211_send_mlme_event(stru + const u8 *buf, size_t len, + enum nl80211_commands cmd, gfp_t gfp, + int uapsd_queues, const u8 *req_ies, +- size_t req_ies_len) ++ size_t req_ies_len, bool reconnect) + { + struct sk_buff *msg; + void *hdr; +@@ -15921,6 +15922,9 @@ static void nl80211_send_mlme_event(stru + nla_put(msg, NL80211_ATTR_REQ_IE, req_ies_len, req_ies))) + goto nla_put_failure; + ++ if (reconnect && nla_put_flag(msg, NL80211_ATTR_RECONNECT_REQUESTED)) ++ goto nla_put_failure; ++ + if (uapsd_queues >= 0) { + struct nlattr *nla_wmm = + nla_nest_start_noflag(msg, NL80211_ATTR_STA_WME); +@@ -15949,7 +15953,8 @@ void nl80211_send_rx_auth(struct cfg8021 + size_t len, gfp_t gfp) + { + nl80211_send_mlme_event(rdev, netdev, buf, len, +- NL80211_CMD_AUTHENTICATE, gfp, -1, NULL, 0); ++ NL80211_CMD_AUTHENTICATE, gfp, -1, NULL, 0, ++ false); + } + + void nl80211_send_rx_assoc(struct cfg80211_registered_device *rdev, +@@ -15959,23 +15964,25 @@ void nl80211_send_rx_assoc(struct cfg802 + { + nl80211_send_mlme_event(rdev, netdev, buf, len, + NL80211_CMD_ASSOCIATE, gfp, uapsd_queues, +- req_ies, req_ies_len); ++ req_ies, req_ies_len, false); + } + + void nl80211_send_deauth(struct cfg80211_registered_device *rdev, + struct net_device *netdev, const u8 *buf, +- size_t len, gfp_t gfp) ++ size_t len, bool reconnect, gfp_t gfp) + { + nl80211_send_mlme_event(rdev, netdev, buf, len, +- NL80211_CMD_DEAUTHENTICATE, gfp, -1, NULL, 0); ++ NL80211_CMD_DEAUTHENTICATE, gfp, -1, NULL, 0, ++ reconnect); + } + + void nl80211_send_disassoc(struct cfg80211_registered_device *rdev, + struct net_device *netdev, const u8 *buf, +- size_t len, gfp_t gfp) ++ size_t len, bool reconnect, gfp_t gfp) + { + nl80211_send_mlme_event(rdev, netdev, buf, len, +- NL80211_CMD_DISASSOCIATE, gfp, -1, NULL, 0); ++ NL80211_CMD_DISASSOCIATE, gfp, -1, NULL, 0, ++ reconnect); + } + + void cfg80211_rx_unprot_mlme_mgmt(struct net_device *dev, const u8 *buf, +@@ -16006,7 +16013,7 @@ void cfg80211_rx_unprot_mlme_mgmt(struct + + trace_cfg80211_rx_unprot_mlme_mgmt(dev, buf, len); + nl80211_send_mlme_event(rdev, dev, buf, len, cmd, GFP_ATOMIC, -1, +- NULL, 0); ++ NULL, 0, false); + } + EXPORT_SYMBOL(cfg80211_rx_unprot_mlme_mgmt); + +--- a/net/wireless/nl80211.h ++++ b/net/wireless/nl80211.h +@@ -1,7 +1,7 @@ + /* SPDX-License-Identifier: GPL-2.0 */ + /* + * Portions of this file +- * Copyright (C) 2018 Intel Corporation ++ * Copyright (C) 2018, 2020 Intel Corporation + */ + #ifndef __NET_WIRELESS_NL80211_H + #define __NET_WIRELESS_NL80211_H +@@ -69,10 +69,12 @@ void nl80211_send_rx_assoc(struct cfg802 + const u8 *req_ies, size_t req_ies_len); + void nl80211_send_deauth(struct cfg80211_registered_device *rdev, + struct net_device *netdev, +- const u8 *buf, size_t len, gfp_t gfp); ++ const u8 *buf, size_t len, ++ bool reconnect, gfp_t gfp); + void nl80211_send_disassoc(struct cfg80211_registered_device *rdev, + struct net_device *netdev, +- const u8 *buf, size_t len, gfp_t gfp); ++ const u8 *buf, size_t len, ++ bool reconnect, gfp_t gfp); + void nl80211_send_auth_timeout(struct cfg80211_registered_device *rdev, + struct net_device *netdev, + const u8 *addr, gfp_t gfp); +--- a/net/wireless/trace.h ++++ b/net/wireless/trace.h +@@ -2684,19 +2684,23 @@ DEFINE_EVENT(netdev_frame_event, cfg8021 + ); + + TRACE_EVENT(cfg80211_tx_mlme_mgmt, +- TP_PROTO(struct net_device *netdev, const u8 *buf, int len), +- TP_ARGS(netdev, buf, len), ++ TP_PROTO(struct net_device *netdev, const u8 *buf, int len, ++ bool reconnect), ++ TP_ARGS(netdev, buf, len, reconnect), + TP_STRUCT__entry( + NETDEV_ENTRY + __dynamic_array(u8, frame, len) ++ __field(int, reconnect) + ), + TP_fast_assign( + NETDEV_ASSIGN; + memcpy(__get_dynamic_array(frame), buf, len); ++ __entry->reconnect = reconnect; + ), +- TP_printk(NETDEV_PR_FMT ", ftype:0x%.2x", ++ TP_printk(NETDEV_PR_FMT ", ftype:0x%.2x reconnect:%d", + NETDEV_PR_ARG, +- le16_to_cpup((__le16 *)__get_dynamic_array(frame))) ++ le16_to_cpup((__le16 *)__get_dynamic_array(frame)), ++ __entry->reconnect) + ); + + DECLARE_EVENT_CLASS(netdev_mac_evt, diff --git a/package/kernel/mac80211/patches/subsys/301-mac80211-support-driver-based-disconnect-with-reconn.patch b/package/kernel/mac80211/patches/subsys/301-mac80211-support-driver-based-disconnect-with-reconn.patch new file mode 100644 index 0000000000..8f948c140e --- /dev/null +++ b/package/kernel/mac80211/patches/subsys/301-mac80211-support-driver-based-disconnect-with-reconn.patch @@ -0,0 +1,271 @@ +From: Johannes Berg +Date: Sun, 6 Dec 2020 14:54:43 +0200 +Subject: [PATCH] mac80211: support driver-based disconnect with reconnect hint + +Support the driver indicating that a disconnection needs +to be performed, and pass through the reconnect hint in +this case. + +Signed-off-by: Johannes Berg +Signed-off-by: Luca Coelho +Link: https://lore.kernel.org/r/iwlwifi.20201206145305.5c8dab7a22a0.I58459fdf6968b16c90cab9c574f0f04ca22b0c79@changeid +Signed-off-by: Johannes Berg +--- + +--- a/include/net/mac80211.h ++++ b/include/net/mac80211.h +@@ -5885,6 +5885,17 @@ void ieee80211_beacon_loss(struct ieee80 + void ieee80211_connection_loss(struct ieee80211_vif *vif); + + /** ++ * ieee80211_disconnect - request disconnection ++ * ++ * @vif: &struct ieee80211_vif pointer from the add_interface callback. ++ * @reconnect: immediate reconnect is desired ++ * ++ * Request disconnection from the current network and, if enabled, send a ++ * hint to the higher layers that immediate reconnect is desired. ++ */ ++void ieee80211_disconnect(struct ieee80211_vif *vif, bool reconnect); ++ ++/** + * ieee80211_resume_disconnect - disconnect from AP after resume + * + * @vif: &struct ieee80211_vif pointer from the add_interface callback. +--- a/net/mac80211/ieee80211_i.h ++++ b/net/mac80211/ieee80211_i.h +@@ -461,7 +461,9 @@ struct ieee80211_if_managed { + unsigned long probe_timeout; + int probe_send_count; + bool nullfunc_failed; +- bool connection_loss; ++ u8 connection_loss:1, ++ driver_disconnect:1, ++ reconnect:1; + + struct cfg80211_bss *associated; + struct ieee80211_mgd_auth_data *auth_data; +--- a/net/mac80211/mlme.c ++++ b/net/mac80211/mlme.c +@@ -2720,7 +2720,7 @@ EXPORT_SYMBOL(ieee80211_ap_probereq_get) + + static void ieee80211_report_disconnect(struct ieee80211_sub_if_data *sdata, + const u8 *buf, size_t len, bool tx, +- u16 reason) ++ u16 reason, bool reconnect) + { + struct ieee80211_event event = { + .type = MLME_EVENT, +@@ -2729,7 +2729,7 @@ static void ieee80211_report_disconnect( + }; + + if (tx) +- cfg80211_tx_mlme_mgmt(sdata->dev, buf, len, false); ++ cfg80211_tx_mlme_mgmt(sdata->dev, buf, len, reconnect); + else + cfg80211_rx_mlme_mgmt(sdata->dev, buf, len); + +@@ -2751,13 +2751,18 @@ static void __ieee80211_disconnect(struc + + tx = !sdata->csa_block_tx; + +- /* AP is probably out of range (or not reachable for another reason) so +- * remove the bss struct for that AP. +- */ +- cfg80211_unlink_bss(local->hw.wiphy, ifmgd->associated); ++ if (!ifmgd->driver_disconnect) { ++ /* ++ * AP is probably out of range (or not reachable for another ++ * reason) so remove the bss struct for that AP. ++ */ ++ cfg80211_unlink_bss(local->hw.wiphy, ifmgd->associated); ++ } + + ieee80211_set_disassoc(sdata, IEEE80211_STYPE_DEAUTH, +- WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY, ++ ifmgd->driver_disconnect ? ++ WLAN_REASON_DEAUTH_LEAVING : ++ WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY, + tx, frame_buf); + mutex_lock(&local->mtx); + sdata->vif.csa_active = false; +@@ -2770,7 +2775,9 @@ static void __ieee80211_disconnect(struc + mutex_unlock(&local->mtx); + + ieee80211_report_disconnect(sdata, frame_buf, sizeof(frame_buf), tx, +- WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY); ++ WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY, ++ ifmgd->reconnect); ++ ifmgd->reconnect = false; + + sdata_unlock(sdata); + } +@@ -2789,6 +2796,13 @@ static void ieee80211_beacon_connection_ + sdata_info(sdata, "Connection to AP %pM lost\n", + ifmgd->bssid); + __ieee80211_disconnect(sdata); ++ ifmgd->connection_loss = false; ++ } else if (ifmgd->driver_disconnect) { ++ sdata_info(sdata, ++ "Driver requested disconnection from AP %pM\n", ++ ifmgd->bssid); ++ __ieee80211_disconnect(sdata); ++ ifmgd->driver_disconnect = false; + } else { + ieee80211_mgd_probe_ap(sdata, true); + } +@@ -2827,6 +2841,21 @@ void ieee80211_connection_loss(struct ie + } + EXPORT_SYMBOL(ieee80211_connection_loss); + ++void ieee80211_disconnect(struct ieee80211_vif *vif, bool reconnect) ++{ ++ struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif); ++ struct ieee80211_hw *hw = &sdata->local->hw; ++ ++ trace_api_disconnect(sdata, reconnect); ++ ++ if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_STATION)) ++ return; ++ ++ sdata->u.mgd.driver_disconnect = true; ++ sdata->u.mgd.reconnect = reconnect; ++ ieee80211_queue_work(hw, &sdata->u.mgd.beacon_connection_loss_work); ++} ++EXPORT_SYMBOL(ieee80211_disconnect); + + static void ieee80211_destroy_auth_data(struct ieee80211_sub_if_data *sdata, + bool assoc) +@@ -3130,7 +3159,7 @@ static void ieee80211_rx_mgmt_deauth(str + ieee80211_set_disassoc(sdata, 0, 0, false, NULL); + + ieee80211_report_disconnect(sdata, (u8 *)mgmt, len, false, +- reason_code); ++ reason_code, false); + return; + } + +@@ -3179,7 +3208,8 @@ static void ieee80211_rx_mgmt_disassoc(s + + ieee80211_set_disassoc(sdata, 0, 0, false, NULL); + +- ieee80211_report_disconnect(sdata, (u8 *)mgmt, len, false, reason_code); ++ ieee80211_report_disconnect(sdata, (u8 *)mgmt, len, false, reason_code, ++ false); + } + + static void ieee80211_get_rates(struct ieee80211_supported_band *sband, +@@ -4199,7 +4229,8 @@ static void ieee80211_rx_mgmt_beacon(str + true, deauth_buf); + ieee80211_report_disconnect(sdata, deauth_buf, + sizeof(deauth_buf), true, +- WLAN_REASON_DEAUTH_LEAVING); ++ WLAN_REASON_DEAUTH_LEAVING, ++ false); + return; + } + +@@ -4344,7 +4375,7 @@ static void ieee80211_sta_connection_los + tx, frame_buf); + + ieee80211_report_disconnect(sdata, frame_buf, sizeof(frame_buf), true, +- reason); ++ reason, false); + } + + static int ieee80211_auth(struct ieee80211_sub_if_data *sdata) +@@ -5431,7 +5462,8 @@ int ieee80211_mgd_auth(struct ieee80211_ + + ieee80211_report_disconnect(sdata, frame_buf, + sizeof(frame_buf), true, +- WLAN_REASON_UNSPECIFIED); ++ WLAN_REASON_UNSPECIFIED, ++ false); + } + + sdata_info(sdata, "authenticate with %pM\n", req->bss->bssid); +@@ -5503,7 +5535,8 @@ int ieee80211_mgd_assoc(struct ieee80211 + + ieee80211_report_disconnect(sdata, frame_buf, + sizeof(frame_buf), true, +- WLAN_REASON_UNSPECIFIED); ++ WLAN_REASON_UNSPECIFIED, ++ false); + } + + if (ifmgd->auth_data && !ifmgd->auth_data->done) { +@@ -5802,7 +5835,7 @@ int ieee80211_mgd_deauth(struct ieee8021 + ieee80211_destroy_auth_data(sdata, false); + ieee80211_report_disconnect(sdata, frame_buf, + sizeof(frame_buf), true, +- req->reason_code); ++ req->reason_code, false); + + return 0; + } +@@ -5822,7 +5855,7 @@ int ieee80211_mgd_deauth(struct ieee8021 + ieee80211_destroy_assoc_data(sdata, false, true); + ieee80211_report_disconnect(sdata, frame_buf, + sizeof(frame_buf), true, +- req->reason_code); ++ req->reason_code, false); + return 0; + } + +@@ -5837,7 +5870,7 @@ int ieee80211_mgd_deauth(struct ieee8021 + req->reason_code, tx, frame_buf); + ieee80211_report_disconnect(sdata, frame_buf, + sizeof(frame_buf), true, +- req->reason_code); ++ req->reason_code, false); + return 0; + } + +@@ -5870,7 +5903,7 @@ int ieee80211_mgd_disassoc(struct ieee80 + frame_buf); + + ieee80211_report_disconnect(sdata, frame_buf, sizeof(frame_buf), true, +- req->reason_code); ++ req->reason_code, false); + + return 0; + } +--- a/net/mac80211/trace.h ++++ b/net/mac80211/trace.h +@@ -2,7 +2,7 @@ + /* + * Portions of this file + * Copyright(c) 2016-2017 Intel Deutschland GmbH +-* Copyright (C) 2018 - 2019 Intel Corporation ++* Copyright (C) 2018 - 2020 Intel Corporation + */ + + #if !defined(__MAC80211_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ) +@@ -2086,6 +2086,27 @@ TRACE_EVENT(api_connection_loss, + ) + ); + ++TRACE_EVENT(api_disconnect, ++ TP_PROTO(struct ieee80211_sub_if_data *sdata, bool reconnect), ++ ++ TP_ARGS(sdata, reconnect), ++ ++ TP_STRUCT__entry( ++ VIF_ENTRY ++ __field(int, reconnect) ++ ), ++ ++ TP_fast_assign( ++ VIF_ASSIGN; ++ __entry->reconnect = reconnect; ++ ), ++ ++ TP_printk( ++ VIF_PR_FMT " reconnect:%d", ++ VIF_PR_ARG, __entry->reconnect ++ ) ++); ++ + TRACE_EVENT(api_cqm_rssi_notify, + TP_PROTO(struct ieee80211_sub_if_data *sdata, + enum nl80211_cqm_rssi_threshold_event rssi_event, diff --git a/package/kernel/mac80211/patches/subsys/311-net-fq_impl-drop-get_default_func-move-default-flow-.patch b/package/kernel/mac80211/patches/subsys/311-net-fq_impl-drop-get_default_func-move-default-flow-.patch index de1f1bb7f5..f8748ef123 100644 --- a/package/kernel/mac80211/patches/subsys/311-net-fq_impl-drop-get_default_func-move-default-flow-.patch +++ b/package/kernel/mac80211/patches/subsys/311-net-fq_impl-drop-get_default_func-move-default-flow-.patch @@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau static int fq_init(struct fq *fq, int flows_cnt) --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -855,7 +855,6 @@ enum txq_info_flags { +@@ -857,7 +857,6 @@ enum txq_info_flags { */ struct txq_info { struct fq_tin tin; diff --git a/package/kernel/mac80211/patches/subsys/315-mac80211-add-rx-decapsulation-offload-support.patch b/package/kernel/mac80211/patches/subsys/315-mac80211-add-rx-decapsulation-offload-support.patch index 02486372e9..09407f3b1d 100644 --- a/package/kernel/mac80211/patches/subsys/315-mac80211-add-rx-decapsulation-offload-support.patch +++ b/package/kernel/mac80211/patches/subsys/315-mac80211-add-rx-decapsulation-offload-support.patch @@ -536,7 +536,7 @@ Signed-off-by: Felix Fietkau }; --- a/net/mac80211/trace.h +++ b/net/mac80211/trace.h -@@ -2740,7 +2740,7 @@ DEFINE_EVENT(local_sdata_addr_evt, drv_u +@@ -2761,7 +2761,7 @@ DEFINE_EVENT(local_sdata_addr_evt, drv_u TP_ARGS(local, sdata) ); @@ -545,7 +545,7 @@ Signed-off-by: Felix Fietkau TP_PROTO(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata, struct ieee80211_sta *sta, bool enabled), -@@ -2767,6 +2767,22 @@ TRACE_EVENT(drv_sta_set_4addr, +@@ -2788,6 +2788,22 @@ TRACE_EVENT(drv_sta_set_4addr, ) ); diff --git a/package/kernel/mac80211/patches/subsys/500-mac80211_configure_antenna_gain.patch b/package/kernel/mac80211/patches/subsys/500-mac80211_configure_antenna_gain.patch index 7cd0417363..3d1bb3d6c8 100644 --- a/package/kernel/mac80211/patches/subsys/500-mac80211_configure_antenna_gain.patch +++ b/package/kernel/mac80211/patches/subsys/500-mac80211_configure_antenna_gain.patch @@ -36,9 +36,9 @@ u8 ps_dtim_period; --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h -@@ -2527,6 +2527,9 @@ enum nl80211_commands { - * override mask. Used with NL80211_ATTR_S1G_CAPABILITY in - * NL80211_CMD_ASSOCIATE or NL80211_CMD_CONNECT. +@@ -2531,6 +2531,9 @@ enum nl80211_commands { + * disassoc events to indicate that an immediate reconnect to the AP + * is desired. * + * @NL80211_ATTR_WIPHY_ANTENNA_GAIN: Configured antenna gain. Used to reduce + * transmit power to stay within regulatory limits. u32, dBi. @@ -46,9 +46,9 @@ * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use -@@ -3016,6 +3019,8 @@ enum nl80211_attrs { - NL80211_ATTR_S1G_CAPABILITY, - NL80211_ATTR_S1G_CAPABILITY_MASK, +@@ -3022,6 +3025,8 @@ enum nl80211_attrs { + + NL80211_ATTR_RECONNECT_REQUESTED, + NL80211_ATTR_WIPHY_ANTENNA_GAIN, + @@ -87,7 +87,7 @@ CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd) --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -1401,6 +1401,7 @@ struct ieee80211_local { +@@ -1403,6 +1403,7 @@ struct ieee80211_local { int dynamic_ps_forced_timeout; int user_power_level; /* in dBm, for all interfaces */ @@ -129,15 +129,15 @@ local->hw.max_mtu = IEEE80211_MAX_DATA_LEN; --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c -@@ -732,6 +732,7 @@ static const struct nla_policy nl80211_p - NLA_POLICY_EXACT_LEN(IEEE80211_S1G_CAPABILITY_LEN), +@@ -733,6 +733,7 @@ static const struct nla_policy nl80211_p [NL80211_ATTR_S1G_CAPABILITY_MASK] = NLA_POLICY_EXACT_LEN(IEEE80211_S1G_CAPABILITY_LEN), + [NL80211_ATTR_RECONNECT_REQUESTED] = { .type = NLA_REJECT }, + [NL80211_ATTR_WIPHY_ANTENNA_GAIN] = { .type = NLA_U32 }, }; /* policy for the key attributes */ -@@ -3240,6 +3241,20 @@ static int nl80211_set_wiphy(struct sk_b +@@ -3241,6 +3242,20 @@ static int nl80211_set_wiphy(struct sk_b if (result) return result; } diff --git a/package/network/utils/iw/patches/001-nl80211_h_sync.patch b/package/network/utils/iw/patches/001-nl80211_h_sync.patch index c944e02ba6..5aa3cd5146 100644 --- a/package/network/utils/iw/patches/001-nl80211_h_sync.patch +++ b/package/network/utils/iw/patches/001-nl80211_h_sync.patch @@ -1,19 +1,25 @@ --- a/nl80211.h +++ b/nl80211.h -@@ -2527,6 +2527,9 @@ enum nl80211_commands { +@@ -2527,6 +2527,13 @@ enum nl80211_commands { * override mask. Used with NL80211_ATTR_S1G_CAPABILITY in * NL80211_CMD_ASSOCIATE or NL80211_CMD_CONNECT. * ++ * @NL80211_ATTR_RECONNECT_REQUESTED: flag attribute, used with deauth and ++ * disassoc events to indicate that an immediate reconnect to the AP ++ * is desired. ++ * + * @NL80211_ATTR_WIPHY_ANTENNA_GAIN: Configured antenna gain. Used to reduce + * transmit power to stay within regulatory limits. u32, dBi. + * * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use -@@ -3016,6 +3019,8 @@ enum nl80211_attrs { +@@ -3016,6 +3023,10 @@ enum nl80211_attrs { NL80211_ATTR_S1G_CAPABILITY, NL80211_ATTR_S1G_CAPABILITY_MASK, ++ NL80211_ATTR_RECONNECT_REQUESTED, ++ + NL80211_ATTR_WIPHY_ANTENNA_GAIN, + /* add attributes here, update the policy in nl80211.c */ From 12b5f898f9222d35b80058fee5bd2ae935226070 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 15 Mar 2021 00:10:03 +0100 Subject: [PATCH 17/27] mt76: update to the latest version 6a3cf95733e2 mt76: fix tx skb error handling in mt76_dma_tx_queue_skb ab9045153343 mt76: mt7915: only modify tx buffer list after allocating tx token id 7e1eff676257 mt76: mt7915: fix unused 'mode' variable 8a2e22fcbf69 mt76: mt7921: fix suspend/resume sequence 27a54e8b687f mt76: mt7921: fix memory leak in mt7921_coredump_work c267322f0bdb mt76: mt7921: switch to new api for hardware beacon filter [v2 update] fd2c59d9ba46 mt76: mt7921: fixup rx bitrate statistics [v2 update] bfa8d5a6a9a1 mt76: adjust to upstream API for enabling threaded NAPI 1706fb6c48e8 mt76: mt7663s: fix rx buffer refcounting c5aca6692c41 mt76: mt7615: enable hw rx-amsdu de-aggregation 9002b0b30aed mt76: mt7615: add rx checksum offload support 8e3f5bfe74f6 mt76: mt7615: add support for rx decapsulation offload 8e3bba8bd3ef mt76: mt7615: fix memory leak in mt7615_coredump_work 760adce29100 mt76: mt7921: fix aggr length histogram 84229a51845a mt76: mt7915: fix aggr len debugfs node 10a95da23cb7 mt76: mt7921: remove unneeded semicolon 2856dc8fb57e mt76: mt7921: fix stats register definitions 1b245e57549d mt76: mt7615: fix TSF configuration 1a2e2965b62b mt76: mt7615: remove hdr->fw_ver check f60ec1b9473d mt76: mt7615: fix mib stats counter reporting to mac80211 8a5b036af48f mt76: mt7915: fix mib stats counter reporting to mac80211 ee6dbcc64f6d mt76: connac: fix kernel warning adding monitor interface e46dd240ce72 mt76: check return value of mt76_txq_send_burst in mt76_txq_schedule_list ddf95ead3bb3 mt76: mt7921: get rid of mt7921_sta_rc_update routine fd2a51ea9dc8 mt76: mt7921: fix the base of PCIe interrupt 28f53d074bb0 mt76: mt7921: fix the base of the dynamic remap 8d737632b57f mt76: mt7921: check mcu returned values in mt7921_start 5ff25c915e62 mt76: mt7915: add missing capabilities for DBDC 58dd3f26c099 mt76: mt7615: fix CSA notification for DBDC 76f4959107ac mt76: mt7615: stop ext_phy queue when mac reset happens 7de0a0654054 mt76: mt7915: fix CSA notification for DBDC e9e418fc7eb0 mt76: mt7915: stop ext_phy queue when mac reset happens 477b78301879 mt76: mt7915: fix PHY mode for DBDC 37b4dc0f7595 mt76: mt76x0u: Add support for TP-Link T2UHP(UN) v1 29a04583aecb mt76: mt7915: fix rxrate reporting a4307e6ba054 mt76: mt7915: fix txrate reporting 256f324f8fcd mt76: mt7915: check mcu returned values in mt7915_ops 638b112188a5 mt76: mt7615: check mcu returned values in mt7615_ops 975cccfa96da mt76: mt7663: fix when beacon filter is being applied aafe972e95b2 mt76: mt7663s: make all of packets 4-bytes aligned in sdio tx aggregation 0d5b1a702715 mt76: mt7663s: fix the possible device hang in high traffic 00628061b546 mt76: mt7615: add missing capabilities for DBDC 2303e1844afd mt76: mt7915: fix possible deadlock while mt7915_register_ext_phy() 6e2b9d258306 mt76: mt7921: reduce mcu timeouts for suspend, offload and hif_ctrl msg 3cf5afc02955 mt76: introduce mcu_reset function pointer in mt76_mcu_ops structure 9af9622df549 mt76: mt7921: introduce mt7921_run_firmware utility routine. e12c44a7e165 mt76: mt7921: introduce __mt7921_start utility routine 7b56d5bf6ea0 mt76: dma: introduce mt76_dma_queue_reset routine a80e50098b51 mt76: dma: export mt76_dma_rx_cleanup routine e0708e296e27 mt76: mt7921: add wifi reset support 87e09e8482cf mt76: mt7921: remove leftovers from dbdc configuration cc933b3669f7 mt76: mt7921: remove redundant check on type ca22cc221ae7 linux-firmware: add firmware for MT7921 Signed-off-by: Felix Fietkau --- package/kernel/mt76/Makefile | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/package/kernel/mt76/Makefile b/package/kernel/mt76/Makefile index 810ee4c3d4..b60afb355d 100644 --- a/package/kernel/mt76/Makefile +++ b/package/kernel/mt76/Makefile @@ -8,9 +8,9 @@ PKG_LICENSE_FILES:= PKG_SOURCE_URL:=https://github.com/openwrt/mt76 PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2021-02-14 -PKG_SOURCE_VERSION:=289cd7804587dc48f776d450db9cd3762692a370 -PKG_MIRROR_HASH:=91885feca9d935586c6e33a8e3734bfa61991d869bf42ac0d1c8c3b19bfa9653 +PKG_SOURCE_DATE:=2021-03-15 +PKG_SOURCE_VERSION:=ca22cc221ae7c87535d6f24b12c0280f6b560b31 +PKG_MIRROR_HASH:=291f078568a83aa9e930e3d496a8b0e406feb720c472aafc82fefe01c921e04d PKG_MAINTAINER:=Felix Fietkau PKG_BUILD_PARALLEL:=1 @@ -406,6 +406,14 @@ define KernelPackage/mt7915e/install $(1)/lib/firmware/mediatek endef +define KernelPackage/mt7921e/install + $(INSTALL_DIR) $(1)/lib/firmware/mediatek + cp \ + $(PKG_BUILD_DIR)/firmware/WIFI_MT7961_patch_mcu_1_2_hdr.bin \ + $(PKG_BUILD_DIR)/firmware/WIFI_RAM_CODE_MT7961_1.bin \ + $(1)/lib/firmware/mediatek +endef + define Package/mt76-test/install mkdir -p $(1)/usr/sbin $(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/mt76-test $(1)/usr/sbin From 4a79c32fee81aba5ae3a7efda9db7819a66ac838 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 14 Mar 2021 23:53:35 +0100 Subject: [PATCH 18/27] kernel: replace threaded NAPI implementation in 5.10 with upstream backport This uses a kthread per NAPI instance instead of the workqueue approach Signed-off-by: Felix Fietkau --- ...pi-poll-functionality-to-__napi_poll.patch | 88 +++++ ...threaded-able-napi-poll-loop-support.patch | 261 +++++++++++++++ ...tribute-to-control-napi-threaded-mod.patch | 177 ++++++++++ ...ween-napi-kthread-mode-and-busy-poll.patch | 93 ++++++ ...arding-path-from-virtual-netdevice-a.patch | 10 +- ...lve-forwarding-path-for-vlan-devices.patch | 2 +- ...e-forwarding-path-for-bridge-devices.patch | 2 +- ...ve-VLAN-tag-actions-in-forwarding-pa.patch | 4 +- ...forwarding-path-for-bridge-pppoe-dev.patch | 2 +- ...-forwarding-path-for-dsa-slave-ports.patch | 4 +- ...etfilter-flowtable-add-pppoe-support.patch | 2 +- ...w_table-fix-untagging-with-hardware-.patch | 2 +- ...T-skip-GRO-for-foreign-MAC-addresses.patch | 12 +- ...dd-support-for-threaded-NAPI-polling.patch | 301 ------------------ ...attribute-for-enabling-threaded-NAPI.patch | 74 ----- 15 files changed, 639 insertions(+), 395 deletions(-) create mode 100644 target/linux/generic/backport-5.10/600-v5.12-net-extract-napi-poll-functionality-to-__napi_poll.patch create mode 100644 target/linux/generic/backport-5.10/601-v5.12-net-implement-threaded-able-napi-poll-loop-support.patch create mode 100644 target/linux/generic/backport-5.10/602-v5.12-net-add-sysfs-attribute-to-control-napi-threaded-mod.patch create mode 100644 target/linux/generic/backport-5.10/603-v5.12-net-fix-race-between-napi-kthread-mode-and-busy-poll.patch delete mode 100644 target/linux/generic/pending-5.10/690-net-add-support-for-threaded-NAPI-polling.patch delete mode 100644 target/linux/generic/pending-5.10/691-net-add-sysfs-attribute-for-enabling-threaded-NAPI.patch diff --git a/target/linux/generic/backport-5.10/600-v5.12-net-extract-napi-poll-functionality-to-__napi_poll.patch b/target/linux/generic/backport-5.10/600-v5.12-net-extract-napi-poll-functionality-to-__napi_poll.patch new file mode 100644 index 0000000000..d0b7c9bc2c --- /dev/null +++ b/target/linux/generic/backport-5.10/600-v5.12-net-extract-napi-poll-functionality-to-__napi_poll.patch @@ -0,0 +1,88 @@ +From: Felix Fietkau +Date: Mon, 8 Feb 2021 11:34:08 -0800 +Subject: [PATCH] net: extract napi poll functionality to __napi_poll() + +This commit introduces a new function __napi_poll() which does the main +logic of the existing napi_poll() function, and will be called by other +functions in later commits. +This idea and implementation is done by Felix Fietkau and +is proposed as part of the patch to move napi work to work_queue +context. +This commit by itself is a code restructure. + +Signed-off-by: Felix Fietkau +Signed-off-by: Wei Wang +Reviewed-by: Alexander Duyck +Signed-off-by: David S. Miller +--- + +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -6740,15 +6740,10 @@ void __netif_napi_del(struct napi_struct + } + EXPORT_SYMBOL(__netif_napi_del); + +-static int napi_poll(struct napi_struct *n, struct list_head *repoll) ++static int __napi_poll(struct napi_struct *n, bool *repoll) + { +- void *have; + int work, weight; + +- list_del_init(&n->poll_list); +- +- have = netpoll_poll_lock(n); +- + weight = n->weight; + + /* This NAPI_STATE_SCHED test is for avoiding a race +@@ -6768,7 +6763,7 @@ static int napi_poll(struct napi_struct + n->poll, work, weight); + + if (likely(work < weight)) +- goto out_unlock; ++ return work; + + /* Drivers must not modify the NAPI state if they + * consume the entire weight. In such cases this code +@@ -6777,7 +6772,7 @@ static int napi_poll(struct napi_struct + */ + if (unlikely(napi_disable_pending(n))) { + napi_complete(n); +- goto out_unlock; ++ return work; + } + + if (n->gro_bitmask) { +@@ -6795,12 +6790,29 @@ static int napi_poll(struct napi_struct + if (unlikely(!list_empty(&n->poll_list))) { + pr_warn_once("%s: Budget exhausted after napi rescheduled\n", + n->dev ? n->dev->name : "backlog"); +- goto out_unlock; ++ return work; + } + +- list_add_tail(&n->poll_list, repoll); ++ *repoll = true; ++ ++ return work; ++} ++ ++static int napi_poll(struct napi_struct *n, struct list_head *repoll) ++{ ++ bool do_repoll = false; ++ void *have; ++ int work; ++ ++ list_del_init(&n->poll_list); ++ ++ have = netpoll_poll_lock(n); ++ ++ work = __napi_poll(n, &do_repoll); ++ ++ if (do_repoll) ++ list_add_tail(&n->poll_list, repoll); + +-out_unlock: + netpoll_poll_unlock(have); + + return work; diff --git a/target/linux/generic/backport-5.10/601-v5.12-net-implement-threaded-able-napi-poll-loop-support.patch b/target/linux/generic/backport-5.10/601-v5.12-net-implement-threaded-able-napi-poll-loop-support.patch new file mode 100644 index 0000000000..22075cb9bc --- /dev/null +++ b/target/linux/generic/backport-5.10/601-v5.12-net-implement-threaded-able-napi-poll-loop-support.patch @@ -0,0 +1,261 @@ +From: Wei Wang +Date: Mon, 8 Feb 2021 11:34:09 -0800 +Subject: [PATCH] net: implement threaded-able napi poll loop support + +This patch allows running each napi poll loop inside its own +kernel thread. +The kthread is created during netif_napi_add() if dev->threaded +is set. And threaded mode is enabled in napi_enable(). We will +provide a way to set dev->threaded and enable threaded mode +without a device up/down in the following patch. + +Once that threaded mode is enabled and the kthread is +started, napi_schedule() will wake-up such thread instead +of scheduling the softirq. + +The threaded poll loop behaves quite likely the net_rx_action, +but it does not have to manipulate local irqs and uses +an explicit scheduling point based on netdev_budget. + +Co-developed-by: Paolo Abeni +Signed-off-by: Paolo Abeni +Co-developed-by: Hannes Frederic Sowa +Signed-off-by: Hannes Frederic Sowa +Co-developed-by: Jakub Kicinski +Signed-off-by: Jakub Kicinski +Signed-off-by: Wei Wang +Reviewed-by: Alexander Duyck +Signed-off-by: David S. Miller +--- + +--- a/include/linux/netdevice.h ++++ b/include/linux/netdevice.h +@@ -347,6 +347,7 @@ struct napi_struct { + struct list_head dev_list; + struct hlist_node napi_hash_node; + unsigned int napi_id; ++ struct task_struct *thread; + }; + + enum { +@@ -357,6 +358,7 @@ enum { + NAPI_STATE_LISTED, /* NAPI added to system lists */ + NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */ + NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */ ++ NAPI_STATE_THREADED, /* The poll is performed inside its own thread*/ + }; + + enum { +@@ -367,6 +369,7 @@ enum { + NAPIF_STATE_LISTED = BIT(NAPI_STATE_LISTED), + NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL), + NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL), ++ NAPIF_STATE_THREADED = BIT(NAPI_STATE_THREADED), + }; + + enum gro_result { +@@ -497,20 +500,7 @@ static inline bool napi_complete(struct + */ + void napi_disable(struct napi_struct *n); + +-/** +- * napi_enable - enable NAPI scheduling +- * @n: NAPI context +- * +- * Resume NAPI from being scheduled on this context. +- * Must be paired with napi_disable. +- */ +-static inline void napi_enable(struct napi_struct *n) +-{ +- BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state)); +- smp_mb__before_atomic(); +- clear_bit(NAPI_STATE_SCHED, &n->state); +- clear_bit(NAPI_STATE_NPSVC, &n->state); +-} ++void napi_enable(struct napi_struct *n); + + /** + * napi_synchronize - wait until NAPI is not running +@@ -1835,6 +1825,8 @@ enum netdev_priv_flags { + * + * @wol_enabled: Wake-on-LAN is enabled + * ++ * @threaded: napi threaded mode is enabled ++ * + * @net_notifier_list: List of per-net netdev notifier block + * that follow this device when it is moved + * to another network namespace. +@@ -2152,6 +2144,7 @@ struct net_device { + struct lock_class_key *qdisc_running_key; + bool proto_down; + unsigned wol_enabled:1; ++ unsigned threaded:1; + + struct list_head net_notifier_list; + +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -91,6 +91,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -1488,6 +1489,27 @@ void netdev_notify_peers(struct net_devi + } + EXPORT_SYMBOL(netdev_notify_peers); + ++static int napi_threaded_poll(void *data); ++ ++static int napi_kthread_create(struct napi_struct *n) ++{ ++ int err = 0; ++ ++ /* Create and wake up the kthread once to put it in ++ * TASK_INTERRUPTIBLE mode to avoid the blocked task ++ * warning and work with loadavg. ++ */ ++ n->thread = kthread_run(napi_threaded_poll, n, "napi/%s-%d", ++ n->dev->name, n->napi_id); ++ if (IS_ERR(n->thread)) { ++ err = PTR_ERR(n->thread); ++ pr_err("kthread_run failed with err %d\n", err); ++ n->thread = NULL; ++ } ++ ++ return err; ++} ++ + static int __dev_open(struct net_device *dev, struct netlink_ext_ack *extack) + { + const struct net_device_ops *ops = dev->netdev_ops; +@@ -4242,6 +4264,21 @@ int gro_normal_batch __read_mostly = 8; + static inline void ____napi_schedule(struct softnet_data *sd, + struct napi_struct *napi) + { ++ struct task_struct *thread; ++ ++ if (test_bit(NAPI_STATE_THREADED, &napi->state)) { ++ /* Paired with smp_mb__before_atomic() in ++ * napi_enable(). Use READ_ONCE() to guarantee ++ * a complete read on napi->thread. Only call ++ * wake_up_process() when it's not NULL. ++ */ ++ thread = READ_ONCE(napi->thread); ++ if (thread) { ++ wake_up_process(thread); ++ return; ++ } ++ } ++ + list_add_tail(&napi->poll_list, &sd->poll_list); + __raise_softirq_irqoff(NET_RX_SOFTIRQ); + } +@@ -6693,6 +6730,12 @@ void netif_napi_add(struct net_device *d + set_bit(NAPI_STATE_NPSVC, &napi->state); + list_add_rcu(&napi->dev_list, &dev->napi_list); + napi_hash_add(napi); ++ /* Create kthread for this napi if dev->threaded is set. ++ * Clear dev->threaded if kthread creation failed so that ++ * threaded mode will not be enabled in napi_enable(). ++ */ ++ if (dev->threaded && napi_kthread_create(napi)) ++ dev->threaded = 0; + } + EXPORT_SYMBOL(netif_napi_add); + +@@ -6709,9 +6752,28 @@ void napi_disable(struct napi_struct *n) + hrtimer_cancel(&n->timer); + + clear_bit(NAPI_STATE_DISABLE, &n->state); ++ clear_bit(NAPI_STATE_THREADED, &n->state); + } + EXPORT_SYMBOL(napi_disable); + ++/** ++ * napi_enable - enable NAPI scheduling ++ * @n: NAPI context ++ * ++ * Resume NAPI from being scheduled on this context. ++ * Must be paired with napi_disable. ++ */ ++void napi_enable(struct napi_struct *n) ++{ ++ BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state)); ++ smp_mb__before_atomic(); ++ clear_bit(NAPI_STATE_SCHED, &n->state); ++ clear_bit(NAPI_STATE_NPSVC, &n->state); ++ if (n->dev->threaded && n->thread) ++ set_bit(NAPI_STATE_THREADED, &n->state); ++} ++EXPORT_SYMBOL(napi_enable); ++ + static void flush_gro_hash(struct napi_struct *napi) + { + int i; +@@ -6737,6 +6799,11 @@ void __netif_napi_del(struct napi_struct + + flush_gro_hash(napi); + napi->gro_bitmask = 0; ++ ++ if (napi->thread) { ++ kthread_stop(napi->thread); ++ napi->thread = NULL; ++ } + } + EXPORT_SYMBOL(__netif_napi_del); + +@@ -6818,6 +6885,51 @@ static int napi_poll(struct napi_struct + return work; + } + ++static int napi_thread_wait(struct napi_struct *napi) ++{ ++ set_current_state(TASK_INTERRUPTIBLE); ++ ++ while (!kthread_should_stop() && !napi_disable_pending(napi)) { ++ if (test_bit(NAPI_STATE_SCHED, &napi->state)) { ++ WARN_ON(!list_empty(&napi->poll_list)); ++ __set_current_state(TASK_RUNNING); ++ return 0; ++ } ++ ++ schedule(); ++ set_current_state(TASK_INTERRUPTIBLE); ++ } ++ __set_current_state(TASK_RUNNING); ++ return -1; ++} ++ ++static int napi_threaded_poll(void *data) ++{ ++ struct napi_struct *napi = data; ++ void *have; ++ ++ while (!napi_thread_wait(napi)) { ++ for (;;) { ++ bool repoll = false; ++ ++ local_bh_disable(); ++ ++ have = netpoll_poll_lock(napi); ++ __napi_poll(napi, &repoll); ++ netpoll_poll_unlock(have); ++ ++ __kfree_skb_flush(); ++ local_bh_enable(); ++ ++ if (!repoll) ++ break; ++ ++ cond_resched(); ++ } ++ } ++ return 0; ++} ++ + static __latent_entropy void net_rx_action(struct softirq_action *h) + { + struct softnet_data *sd = this_cpu_ptr(&softnet_data); diff --git a/target/linux/generic/backport-5.10/602-v5.12-net-add-sysfs-attribute-to-control-napi-threaded-mod.patch b/target/linux/generic/backport-5.10/602-v5.12-net-add-sysfs-attribute-to-control-napi-threaded-mod.patch new file mode 100644 index 0000000000..ddcdfe7bff --- /dev/null +++ b/target/linux/generic/backport-5.10/602-v5.12-net-add-sysfs-attribute-to-control-napi-threaded-mod.patch @@ -0,0 +1,177 @@ +From: Wei Wang +Date: Mon, 8 Feb 2021 11:34:10 -0800 +Subject: [PATCH] net: add sysfs attribute to control napi threaded mode + +This patch adds a new sysfs attribute to the network device class. +Said attribute provides a per-device control to enable/disable the +threaded mode for all the napi instances of the given network device, +without the need for a device up/down. +User sets it to 1 or 0 to enable or disable threaded mode. +Note: when switching between threaded and the current softirq based mode +for a napi instance, it will not immediately take effect if the napi is +currently being polled. The mode switch will happen for the next time +napi_schedule() is called. + +Co-developed-by: Paolo Abeni +Signed-off-by: Paolo Abeni +Co-developed-by: Hannes Frederic Sowa +Signed-off-by: Hannes Frederic Sowa +Co-developed-by: Felix Fietkau +Signed-off-by: Felix Fietkau +Signed-off-by: Wei Wang +Reviewed-by: Alexander Duyck +Signed-off-by: David S. Miller +--- + +--- a/Documentation/ABI/testing/sysfs-class-net ++++ b/Documentation/ABI/testing/sysfs-class-net +@@ -337,3 +337,18 @@ Contact: netdev@vger.kernel.org + Description: + 32-bit unsigned integer counting the number of times the link has + been down ++ ++What: /sys/class/net//threaded ++Date: Jan 2021 ++KernelVersion: 5.12 ++Contact: netdev@vger.kernel.org ++Description: ++ Boolean value to control the threaded mode per device. User could ++ set this value to enable/disable threaded mode for all napi ++ belonging to this device, without the need to do device up/down. ++ ++ Possible values: ++ == ================================== ++ 0 threaded mode disabled for this dev ++ 1 threaded mode enabled for this dev ++ == ================================== +--- a/include/linux/netdevice.h ++++ b/include/linux/netdevice.h +@@ -491,6 +491,8 @@ static inline bool napi_complete(struct + return napi_complete_done(n, 0); + } + ++int dev_set_threaded(struct net_device *dev, bool threaded); ++ + /** + * napi_disable - prevent NAPI from scheduling + * @n: NAPI context +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -4268,8 +4268,9 @@ static inline void ____napi_schedule(str + + if (test_bit(NAPI_STATE_THREADED, &napi->state)) { + /* Paired with smp_mb__before_atomic() in +- * napi_enable(). Use READ_ONCE() to guarantee +- * a complete read on napi->thread. Only call ++ * napi_enable()/dev_set_threaded(). ++ * Use READ_ONCE() to guarantee a complete ++ * read on napi->thread. Only call + * wake_up_process() when it's not NULL. + */ + thread = READ_ONCE(napi->thread); +@@ -6703,6 +6704,49 @@ static void init_gro_hash(struct napi_st + napi->gro_bitmask = 0; + } + ++int dev_set_threaded(struct net_device *dev, bool threaded) ++{ ++ struct napi_struct *napi; ++ int err = 0; ++ ++ if (dev->threaded == threaded) ++ return 0; ++ ++ if (threaded) { ++ list_for_each_entry(napi, &dev->napi_list, dev_list) { ++ if (!napi->thread) { ++ err = napi_kthread_create(napi); ++ if (err) { ++ threaded = false; ++ break; ++ } ++ } ++ } ++ } ++ ++ dev->threaded = threaded; ++ ++ /* Make sure kthread is created before THREADED bit ++ * is set. ++ */ ++ smp_mb__before_atomic(); ++ ++ /* Setting/unsetting threaded mode on a napi might not immediately ++ * take effect, if the current napi instance is actively being ++ * polled. In this case, the switch between threaded mode and ++ * softirq mode will happen in the next round of napi_schedule(). ++ * This should not cause hiccups/stalls to the live traffic. ++ */ ++ list_for_each_entry(napi, &dev->napi_list, dev_list) { ++ if (threaded) ++ set_bit(NAPI_STATE_THREADED, &napi->state); ++ else ++ clear_bit(NAPI_STATE_THREADED, &napi->state); ++ } ++ ++ return err; ++} ++ + void netif_napi_add(struct net_device *dev, struct napi_struct *napi, + int (*poll)(struct napi_struct *, int), int weight) + { +--- a/net/core/net-sysfs.c ++++ b/net/core/net-sysfs.c +@@ -538,6 +538,45 @@ static ssize_t phys_switch_id_show(struc + } + static DEVICE_ATTR_RO(phys_switch_id); + ++static ssize_t threaded_show(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct net_device *netdev = to_net_dev(dev); ++ ssize_t ret = -EINVAL; ++ ++ if (!rtnl_trylock()) ++ return restart_syscall(); ++ ++ if (dev_isalive(netdev)) ++ ret = sprintf(buf, fmt_dec, netdev->threaded); ++ ++ rtnl_unlock(); ++ return ret; ++} ++ ++static int modify_napi_threaded(struct net_device *dev, unsigned long val) ++{ ++ int ret; ++ ++ if (list_empty(&dev->napi_list)) ++ return -EOPNOTSUPP; ++ ++ if (val != 0 && val != 1) ++ return -EOPNOTSUPP; ++ ++ ret = dev_set_threaded(dev, val); ++ ++ return ret; ++} ++ ++static ssize_t threaded_store(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t len) ++{ ++ return netdev_store(dev, attr, buf, len, modify_napi_threaded); ++} ++static DEVICE_ATTR_RW(threaded); ++ + static struct attribute *net_class_attrs[] __ro_after_init = { + &dev_attr_netdev_group.attr, + &dev_attr_type.attr, +@@ -570,6 +609,7 @@ static struct attribute *net_class_attrs + &dev_attr_proto_down.attr, + &dev_attr_carrier_up_count.attr, + &dev_attr_carrier_down_count.attr, ++ &dev_attr_threaded.attr, + NULL, + }; + ATTRIBUTE_GROUPS(net_class); diff --git a/target/linux/generic/backport-5.10/603-v5.12-net-fix-race-between-napi-kthread-mode-and-busy-poll.patch b/target/linux/generic/backport-5.10/603-v5.12-net-fix-race-between-napi-kthread-mode-and-busy-poll.patch new file mode 100644 index 0000000000..e0fd09b012 --- /dev/null +++ b/target/linux/generic/backport-5.10/603-v5.12-net-fix-race-between-napi-kthread-mode-and-busy-poll.patch @@ -0,0 +1,93 @@ +From: Wei Wang +Date: Mon, 1 Mar 2021 17:21:13 -0800 +Subject: [PATCH] net: fix race between napi kthread mode and busy poll + +Currently, napi_thread_wait() checks for NAPI_STATE_SCHED bit to +determine if the kthread owns this napi and could call napi->poll() on +it. However, if socket busy poll is enabled, it is possible that the +busy poll thread grabs this SCHED bit (after the previous napi->poll() +invokes napi_complete_done() and clears SCHED bit) and tries to poll +on the same napi. napi_disable() could grab the SCHED bit as well. +This patch tries to fix this race by adding a new bit +NAPI_STATE_SCHED_THREADED in napi->state. This bit gets set in +____napi_schedule() if the threaded mode is enabled, and gets cleared +in napi_complete_done(), and we only poll the napi in kthread if this +bit is set. This helps distinguish the ownership of the napi between +kthread and other scenarios and fixes the race issue. + +Fixes: 29863d41bb6e ("net: implement threaded-able napi poll loop support") +Reported-by: Martin Zaharinov +Suggested-by: Jakub Kicinski +Signed-off-by: Wei Wang +Cc: Alexander Duyck +Cc: Eric Dumazet +Cc: Paolo Abeni +Cc: Hannes Frederic Sowa +--- + +--- a/include/linux/netdevice.h ++++ b/include/linux/netdevice.h +@@ -359,6 +359,7 @@ enum { + NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */ + NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */ + NAPI_STATE_THREADED, /* The poll is performed inside its own thread*/ ++ NAPI_STATE_SCHED_THREADED, /* Napi is currently scheduled in threaded mode */ + }; + + enum { +@@ -370,6 +371,7 @@ enum { + NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL), + NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL), + NAPIF_STATE_THREADED = BIT(NAPI_STATE_THREADED), ++ NAPIF_STATE_SCHED_THREADED = BIT(NAPI_STATE_SCHED_THREADED), + }; + + enum gro_result { +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -4275,6 +4275,8 @@ static inline void ____napi_schedule(str + */ + thread = READ_ONCE(napi->thread); + if (thread) { ++ if (thread->state != TASK_INTERRUPTIBLE) ++ set_bit(NAPI_STATE_SCHED_THREADED, &napi->state); + wake_up_process(thread); + return; + } +@@ -6495,7 +6497,8 @@ bool napi_complete_done(struct napi_stru + + WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED)); + +- new = val & ~(NAPIF_STATE_MISSED | NAPIF_STATE_SCHED); ++ new = val & ~(NAPIF_STATE_MISSED | NAPIF_STATE_SCHED | ++ NAPIF_STATE_SCHED_THREADED); + + /* If STATE_MISSED was set, leave STATE_SCHED set, + * because we will call napi->poll() one more time. +@@ -6931,16 +6934,25 @@ static int napi_poll(struct napi_struct + + static int napi_thread_wait(struct napi_struct *napi) + { ++ bool woken = false; ++ + set_current_state(TASK_INTERRUPTIBLE); + + while (!kthread_should_stop() && !napi_disable_pending(napi)) { +- if (test_bit(NAPI_STATE_SCHED, &napi->state)) { ++ /* Testing SCHED_THREADED bit here to make sure the current ++ * kthread owns this napi and could poll on this napi. ++ * Testing SCHED bit is not enough because SCHED bit might be ++ * set by some other busy poll thread or by napi_disable(). ++ */ ++ if (test_bit(NAPI_STATE_SCHED_THREADED, &napi->state) || woken) { + WARN_ON(!list_empty(&napi->poll_list)); + __set_current_state(TASK_RUNNING); + return 0; + } + + schedule(); ++ /* woken being true indicates this thread owns this napi. */ ++ woken = true; + set_current_state(TASK_INTERRUPTIBLE); + } + __set_current_state(TASK_RUNNING); diff --git a/target/linux/generic/pending-5.10/640-02-net-resolve-forwarding-path-from-virtual-netdevice-a.patch b/target/linux/generic/pending-5.10/640-02-net-resolve-forwarding-path-from-virtual-netdevice-a.patch index 603dddfc36..224831d593 100644 --- a/target/linux/generic/pending-5.10/640-02-net-resolve-forwarding-path-from-virtual-netdevice-a.patch +++ b/target/linux/generic/pending-5.10/640-02-net-resolve-forwarding-path-from-virtual-netdevice-a.patch @@ -58,7 +58,7 @@ Signed-off-by: Pablo Neira Ayuso --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -833,6 +833,27 @@ typedef u16 (*select_queue_fallback_t)(s +@@ -827,6 +827,27 @@ typedef u16 (*select_queue_fallback_t)(s struct sk_buff *skb, struct net_device *sb_dev); @@ -86,7 +86,7 @@ Signed-off-by: Pablo Neira Ayuso enum tc_setup_type { TC_SETUP_QDISC_MQPRIO, TC_SETUP_CLSU32, -@@ -1279,6 +1300,8 @@ struct netdev_net_notifier { +@@ -1273,6 +1294,8 @@ struct netdev_net_notifier { * struct net_device *(*ndo_get_peer_dev)(struct net_device *dev); * If a device is paired with a peer device, return the peer instance. * The caller must be under RCU read context. @@ -95,7 +95,7 @@ Signed-off-by: Pablo Neira Ayuso */ struct net_device_ops { int (*ndo_init)(struct net_device *dev); -@@ -1487,6 +1510,8 @@ struct net_device_ops { +@@ -1481,6 +1504,8 @@ struct net_device_ops { int (*ndo_tunnel_ctl)(struct net_device *dev, struct ip_tunnel_parm *p, int cmd); struct net_device * (*ndo_get_peer_dev)(struct net_device *dev); @@ -104,7 +104,7 @@ Signed-off-by: Pablo Neira Ayuso }; /** -@@ -2798,6 +2823,8 @@ void dev_remove_offload(struct packet_of +@@ -2795,6 +2820,8 @@ void dev_remove_offload(struct packet_of int dev_get_iflink(const struct net_device *dev); int dev_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb); @@ -115,7 +115,7 @@ Signed-off-by: Pablo Neira Ayuso struct net_device *dev_get_by_name(struct net *net, const char *name); --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -846,6 +846,52 @@ int dev_fill_metadata_dst(struct net_dev +@@ -847,6 +847,52 @@ int dev_fill_metadata_dst(struct net_dev } EXPORT_SYMBOL_GPL(dev_fill_metadata_dst); diff --git a/target/linux/generic/pending-5.10/640-03-net-8021q-resolve-forwarding-path-for-vlan-devices.patch b/target/linux/generic/pending-5.10/640-03-net-8021q-resolve-forwarding-path-for-vlan-devices.patch index 26fb64509c..69e025be26 100644 --- a/target/linux/generic/pending-5.10/640-03-net-8021q-resolve-forwarding-path-for-vlan-devices.patch +++ b/target/linux/generic/pending-5.10/640-03-net-8021q-resolve-forwarding-path-for-vlan-devices.patch @@ -28,7 +28,7 @@ Signed-off-by: Pablo Neira Ayuso --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -835,11 +835,18 @@ typedef u16 (*select_queue_fallback_t)(s +@@ -829,11 +829,18 @@ typedef u16 (*select_queue_fallback_t)(s enum net_device_path_type { DEV_PATH_ETHERNET = 0, diff --git a/target/linux/generic/pending-5.10/640-04-bridge-resolve-forwarding-path-for-bridge-devices.patch b/target/linux/generic/pending-5.10/640-04-bridge-resolve-forwarding-path-for-bridge-devices.patch index d9093b3da4..cfb817f20f 100644 --- a/target/linux/generic/pending-5.10/640-04-bridge-resolve-forwarding-path-for-bridge-devices.patch +++ b/target/linux/generic/pending-5.10/640-04-bridge-resolve-forwarding-path-for-bridge-devices.patch @@ -9,7 +9,7 @@ Signed-off-by: Pablo Neira Ayuso --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -836,6 +836,7 @@ typedef u16 (*select_queue_fallback_t)(s +@@ -830,6 +830,7 @@ typedef u16 (*select_queue_fallback_t)(s enum net_device_path_type { DEV_PATH_ETHERNET = 0, DEV_PATH_VLAN, diff --git a/target/linux/generic/pending-5.10/640-09-net-bridge-resolve-VLAN-tag-actions-in-forwarding-pa.patch b/target/linux/generic/pending-5.10/640-09-net-bridge-resolve-VLAN-tag-actions-in-forwarding-pa.patch index 9bd1f6b4c6..8f8d58b299 100644 --- a/target/linux/generic/pending-5.10/640-09-net-bridge-resolve-VLAN-tag-actions-in-forwarding-pa.patch +++ b/target/linux/generic/pending-5.10/640-09-net-bridge-resolve-VLAN-tag-actions-in-forwarding-pa.patch @@ -15,7 +15,7 @@ Signed-off-by: Pablo Neira Ayuso --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -847,10 +847,20 @@ struct net_device_path { +@@ -841,10 +841,20 @@ struct net_device_path { u16 id; __be16 proto; } encap; @@ -36,7 +36,7 @@ Signed-off-by: Pablo Neira Ayuso struct net_device_path_stack { int num_paths; -@@ -860,6 +870,12 @@ struct net_device_path_stack { +@@ -854,6 +864,12 @@ struct net_device_path_stack { struct net_device_path_ctx { const struct net_device *dev; const u8 *daddr; diff --git a/target/linux/generic/pending-5.10/640-11-net-ppp-resolve-forwarding-path-for-bridge-pppoe-dev.patch b/target/linux/generic/pending-5.10/640-11-net-ppp-resolve-forwarding-path-for-bridge-pppoe-dev.patch index 34d918206f..88c89b27a0 100644 --- a/target/linux/generic/pending-5.10/640-11-net-ppp-resolve-forwarding-path-for-bridge-pppoe-dev.patch +++ b/target/linux/generic/pending-5.10/640-11-net-ppp-resolve-forwarding-path-for-bridge-pppoe-dev.patch @@ -78,7 +78,7 @@ Pass on the PPPoE session ID and the real device. static int pppoe_recvmsg(struct socket *sock, struct msghdr *m, --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -837,6 +837,7 @@ enum net_device_path_type { +@@ -831,6 +831,7 @@ enum net_device_path_type { DEV_PATH_ETHERNET = 0, DEV_PATH_VLAN, DEV_PATH_BRIDGE, diff --git a/target/linux/generic/pending-5.10/640-12-net-dsa-resolve-forwarding-path-for-dsa-slave-ports.patch b/target/linux/generic/pending-5.10/640-12-net-dsa-resolve-forwarding-path-for-dsa-slave-ports.patch index 3e7a9eaef9..c8f0a32dd9 100644 --- a/target/linux/generic/pending-5.10/640-12-net-dsa-resolve-forwarding-path-for-dsa-slave-ports.patch +++ b/target/linux/generic/pending-5.10/640-12-net-dsa-resolve-forwarding-path-for-dsa-slave-ports.patch @@ -7,7 +7,7 @@ Add .ndo_fill_forward_path for dsa slave port devices --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -838,6 +838,7 @@ enum net_device_path_type { +@@ -832,6 +832,7 @@ enum net_device_path_type { DEV_PATH_VLAN, DEV_PATH_BRIDGE, DEV_PATH_PPPOE, @@ -15,7 +15,7 @@ Add .ndo_fill_forward_path for dsa slave port devices }; struct net_device_path { -@@ -857,6 +858,10 @@ struct net_device_path { +@@ -851,6 +852,10 @@ struct net_device_path { u16 vlan_id; __be16 vlan_proto; } bridge; diff --git a/target/linux/generic/pending-5.10/640-13-netfilter-flowtable-add-pppoe-support.patch b/target/linux/generic/pending-5.10/640-13-netfilter-flowtable-add-pppoe-support.patch index 6a14514565..524f466bf9 100644 --- a/target/linux/generic/pending-5.10/640-13-netfilter-flowtable-add-pppoe-support.patch +++ b/target/linux/generic/pending-5.10/640-13-netfilter-flowtable-add-pppoe-support.patch @@ -27,7 +27,7 @@ Subject: [PATCH] netfilter: flowtable: add pppoe support --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -848,6 +848,7 @@ struct net_device_path { +@@ -842,6 +842,7 @@ struct net_device_path { struct { u16 id; __be16 proto; diff --git a/target/linux/generic/pending-5.10/640-18-netfilter-nf_flow_table-fix-untagging-with-hardware-.patch b/target/linux/generic/pending-5.10/640-18-netfilter-nf_flow_table-fix-untagging-with-hardware-.patch index 33600a862e..18f43196eb 100644 --- a/target/linux/generic/pending-5.10/640-18-netfilter-nf_flow_table-fix-untagging-with-hardware-.patch +++ b/target/linux/generic/pending-5.10/640-18-netfilter-nf_flow_table-fix-untagging-with-hardware-.patch @@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -855,6 +855,7 @@ struct net_device_path { +@@ -849,6 +849,7 @@ struct net_device_path { DEV_PATH_BR_VLAN_KEEP, DEV_PATH_BR_VLAN_TAG, DEV_PATH_BR_VLAN_UNTAG, diff --git a/target/linux/generic/pending-5.10/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-5.10/680-NET-skip-GRO-for-foreign-MAC-addresses.patch index 0422221468..3e2aa368d2 100644 --- a/target/linux/generic/pending-5.10/680-NET-skip-GRO-for-foreign-MAC-addresses.patch +++ b/target/linux/generic/pending-5.10/680-NET-skip-GRO-for-foreign-MAC-addresses.patch @@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -2033,6 +2033,8 @@ struct net_device { +@@ -2029,6 +2029,8 @@ struct net_device { struct netdev_hw_addr_list mc; struct netdev_hw_addr_list dev_addrs; @@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau __u16 tc_index; /* traffic control index */ --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -5965,6 +5965,9 @@ static enum gro_result dev_gro_receive(s +@@ -6005,6 +6005,9 @@ static enum gro_result dev_gro_receive(s int same_flow; int grow; @@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau if (netif_elide_gro(skb->dev)) goto normal; -@@ -7793,6 +7796,48 @@ static void __netdev_adjacent_dev_unlink +@@ -7973,6 +7976,48 @@ static void __netdev_adjacent_dev_unlink &upper_dev->adj_list.lower); } @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau static int __netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, bool master, void *upper_priv, void *upper_info, -@@ -7844,6 +7889,7 @@ static int __netdev_upper_dev_link(struc +@@ -8024,6 +8069,7 @@ static int __netdev_upper_dev_link(struc if (ret) return ret; @@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, &changeupper_info.info); ret = notifier_to_errno(ret); -@@ -7940,6 +7986,7 @@ static void __netdev_upper_dev_unlink(st +@@ -8120,6 +8166,7 @@ static void __netdev_upper_dev_unlink(st __netdev_adjacent_dev_unlink_neighbour(dev, upper_dev); @@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, &changeupper_info.info); -@@ -8726,6 +8773,7 @@ int dev_set_mac_address(struct net_devic +@@ -8906,6 +8953,7 @@ int dev_set_mac_address(struct net_devic if (err) return err; dev->addr_assign_type = NET_ADDR_SET; diff --git a/target/linux/generic/pending-5.10/690-net-add-support-for-threaded-NAPI-polling.patch b/target/linux/generic/pending-5.10/690-net-add-support-for-threaded-NAPI-polling.patch deleted file mode 100644 index 9b1bd6e976..0000000000 --- a/target/linux/generic/pending-5.10/690-net-add-support-for-threaded-NAPI-polling.patch +++ /dev/null @@ -1,301 +0,0 @@ -From: Felix Fietkau -Date: Sun, 26 Jul 2020 14:03:21 +0200 -Subject: [PATCH] net: add support for threaded NAPI polling - -For some drivers (especially 802.11 drivers), doing a lot of work in the NAPI -poll function does not perform well. Since NAPI poll is bound to the CPU it -was scheduled from, we can easily end up with a few very busy CPUs spending -most of their time in softirq/ksoftirqd and some idle ones. - -Introduce threaded NAPI for such drivers based on a workqueue. The API is the -same except for using netif_threaded_napi_add instead of netif_napi_add. - -In my tests with mt76 on MT7621 using threaded NAPI + a thread for tx scheduling -improves LAN->WLAN bridging throughput by 10-50%. Throughput without threaded -NAPI is wildly inconsistent, depending on the CPU that runs the tx scheduling -thread. - -With threaded NAPI, throughput seems stable and consistent (and higher than -the best results I got without it). - -Based on a patch by Hillf Danton - -Cc: Hillf Danton -Signed-off-by: Felix Fietkau ---- - ---- a/include/linux/netdevice.h -+++ b/include/linux/netdevice.h -@@ -347,6 +347,7 @@ struct napi_struct { - struct list_head dev_list; - struct hlist_node napi_hash_node; - unsigned int napi_id; -+ struct work_struct work; - }; - - enum { -@@ -357,6 +358,7 @@ enum { - NAPI_STATE_LISTED, /* NAPI added to system lists */ - NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */ - NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */ -+ NAPI_STATE_THREADED, /* Use threaded NAPI */ - }; - - enum { -@@ -367,6 +369,7 @@ enum { - NAPIF_STATE_LISTED = BIT(NAPI_STATE_LISTED), - NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL), - NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL), -+ NAPIF_STATE_THREADED = BIT(NAPI_STATE_THREADED), - }; - - enum gro_result { -@@ -2211,6 +2214,7 @@ struct net_device { - struct lock_class_key *qdisc_running_key; - bool proto_down; - unsigned wol_enabled:1; -+ unsigned threaded:1; - - struct list_head net_notifier_list; - -@@ -2413,6 +2417,26 @@ void netif_napi_add(struct net_device *d - int (*poll)(struct napi_struct *, int), int weight); - - /** -+ * netif_threaded_napi_add - initialize a NAPI context -+ * @dev: network device -+ * @napi: NAPI context -+ * @poll: polling function -+ * @weight: default weight -+ * -+ * This variant of netif_napi_add() should be used from drivers using NAPI -+ * with CPU intensive poll functions. -+ * This will schedule polling from a high priority workqueue -+ */ -+static inline void netif_threaded_napi_add(struct net_device *dev, -+ struct napi_struct *napi, -+ int (*poll)(struct napi_struct *, int), -+ int weight) -+{ -+ set_bit(NAPI_STATE_THREADED, &napi->state); -+ netif_napi_add(dev, napi, poll, weight); -+} -+ -+/** - * netif_tx_napi_add - initialize a NAPI context - * @dev: network device - * @napi: NAPI context ---- a/net/core/dev.c -+++ b/net/core/dev.c -@@ -159,6 +159,7 @@ static DEFINE_SPINLOCK(offload_lock); - struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly; - struct list_head ptype_all __read_mostly; /* Taps */ - static struct list_head offload_base __read_mostly; -+static struct workqueue_struct *napi_workq __read_mostly; - - static int netif_rx_internal(struct sk_buff *skb); - static int call_netdevice_notifiers_info(unsigned long val, -@@ -6407,6 +6408,11 @@ void __napi_schedule(struct napi_struct - { - unsigned long flags; - -+ if (test_bit(NAPI_STATE_THREADED, &n->state)) { -+ queue_work(napi_workq, &n->work); -+ return; -+ } -+ - local_irq_save(flags); - ____napi_schedule(this_cpu_ptr(&softnet_data), n); - local_irq_restore(flags); -@@ -6454,6 +6460,11 @@ EXPORT_SYMBOL(napi_schedule_prep); - */ - void __napi_schedule_irqoff(struct napi_struct *n) - { -+ if (test_bit(NAPI_STATE_THREADED, &n->state)) { -+ queue_work(napi_workq, &n->work); -+ return; -+ } -+ - ____napi_schedule(this_cpu_ptr(&softnet_data), n); - } - EXPORT_SYMBOL(__napi_schedule_irqoff); -@@ -6715,12 +6726,94 @@ static void init_gro_hash(struct napi_st - napi->gro_bitmask = 0; - } - -+static int __napi_poll(struct napi_struct *n, bool *repoll) -+{ -+ int work, weight; -+ -+ weight = n->weight; -+ -+ /* This NAPI_STATE_SCHED test is for avoiding a race -+ * with netpoll's poll_napi(). Only the entity which -+ * obtains the lock and sees NAPI_STATE_SCHED set will -+ * actually make the ->poll() call. Therefore we avoid -+ * accidentally calling ->poll() when NAPI is not scheduled. -+ */ -+ work = 0; -+ if (test_bit(NAPI_STATE_SCHED, &n->state)) { -+ work = n->poll(n, weight); -+ trace_napi_poll(n, work, weight); -+ } -+ -+ if (unlikely(work > weight)) -+ pr_err_once("NAPI poll function %pS returned %d, exceeding its budget of %d.\n", -+ n->poll, work, weight); -+ -+ if (likely(work < weight)) -+ return work; -+ -+ /* Drivers must not modify the NAPI state if they -+ * consume the entire weight. In such cases this code -+ * still "owns" the NAPI instance and therefore can -+ * move the instance around on the list at-will. -+ */ -+ if (unlikely(napi_disable_pending(n))) { -+ napi_complete(n); -+ return work; -+ } -+ -+ if (n->gro_bitmask) { -+ /* flush too old packets -+ * If HZ < 1000, flush all packets. -+ */ -+ napi_gro_flush(n, HZ >= 1000); -+ } -+ -+ gro_normal_list(n); -+ -+ *repoll = true; -+ -+ return work; -+} -+ -+static void napi_workfn(struct work_struct *work) -+{ -+ struct napi_struct *n = container_of(work, struct napi_struct, work); -+ void *have; -+ -+ for (;;) { -+ bool repoll = false; -+ -+ local_bh_disable(); -+ -+ have = netpoll_poll_lock(n); -+ __napi_poll(n, &repoll); -+ netpoll_poll_unlock(have); -+ -+ local_bh_enable(); -+ -+ if (!repoll) -+ return; -+ -+ if (!need_resched()) -+ continue; -+ -+ /* -+ * have to pay for the latency of task switch even if -+ * napi is scheduled -+ */ -+ queue_work(napi_workq, work); -+ return; -+ } -+} -+ - void netif_napi_add(struct net_device *dev, struct napi_struct *napi, - int (*poll)(struct napi_struct *, int), int weight) - { - if (WARN_ON(test_and_set_bit(NAPI_STATE_LISTED, &napi->state))) - return; - -+ if (dev->threaded) -+ set_bit(NAPI_STATE_THREADED, &napi->state); - INIT_LIST_HEAD(&napi->poll_list); - INIT_HLIST_NODE(&napi->napi_hash_node); - hrtimer_init(&napi->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED); -@@ -6738,6 +6831,7 @@ void netif_napi_add(struct net_device *d - #ifdef CONFIG_NETPOLL - napi->poll_owner = -1; - #endif -+ INIT_WORK(&napi->work, napi_workfn); - set_bit(NAPI_STATE_SCHED, &napi->state); - set_bit(NAPI_STATE_NPSVC, &napi->state); - list_add_rcu(&napi->dev_list, &dev->napi_list); -@@ -6780,6 +6874,7 @@ void __netif_napi_del(struct napi_struct - if (!test_and_clear_bit(NAPI_STATE_LISTED, &napi->state)) - return; - -+ cancel_work_sync(&napi->work); - napi_hash_del(napi); - list_del_rcu(&napi->dev_list); - napi_free_frags(napi); -@@ -6791,53 +6886,19 @@ EXPORT_SYMBOL(__netif_napi_del); - - static int napi_poll(struct napi_struct *n, struct list_head *repoll) - { -+ bool do_repoll = false; - void *have; -- int work, weight; -+ int work; - - list_del_init(&n->poll_list); - - have = netpoll_poll_lock(n); - -- weight = n->weight; -+ work = __napi_poll(n, &do_repoll); - -- /* This NAPI_STATE_SCHED test is for avoiding a race -- * with netpoll's poll_napi(). Only the entity which -- * obtains the lock and sees NAPI_STATE_SCHED set will -- * actually make the ->poll() call. Therefore we avoid -- * accidentally calling ->poll() when NAPI is not scheduled. -- */ -- work = 0; -- if (test_bit(NAPI_STATE_SCHED, &n->state)) { -- work = n->poll(n, weight); -- trace_napi_poll(n, work, weight); -- } -- -- if (unlikely(work > weight)) -- pr_err_once("NAPI poll function %pS returned %d, exceeding its budget of %d.\n", -- n->poll, work, weight); -- -- if (likely(work < weight)) -+ if (!do_repoll) - goto out_unlock; - -- /* Drivers must not modify the NAPI state if they -- * consume the entire weight. In such cases this code -- * still "owns" the NAPI instance and therefore can -- * move the instance around on the list at-will. -- */ -- if (unlikely(napi_disable_pending(n))) { -- napi_complete(n); -- goto out_unlock; -- } -- -- if (n->gro_bitmask) { -- /* flush too old packets -- * If HZ < 1000, flush all packets. -- */ -- napi_gro_flush(n, HZ >= 1000); -- } -- -- gro_normal_list(n); -- - /* Some drivers may have called napi_schedule - * prior to exhausting their budget. - */ -@@ -11333,6 +11394,10 @@ static int __init net_dev_init(void) - sd->backlog.weight = weight_p; - } - -+ napi_workq = alloc_workqueue("napi_workq", WQ_UNBOUND | WQ_HIGHPRI, -+ WQ_UNBOUND_MAX_ACTIVE | WQ_SYSFS); -+ BUG_ON(!napi_workq); -+ - dev_boot_phase = 0; - - /* The loopback device is special if any other network devices diff --git a/target/linux/generic/pending-5.10/691-net-add-sysfs-attribute-for-enabling-threaded-NAPI.patch b/target/linux/generic/pending-5.10/691-net-add-sysfs-attribute-for-enabling-threaded-NAPI.patch deleted file mode 100644 index 279ae2c25a..0000000000 --- a/target/linux/generic/pending-5.10/691-net-add-sysfs-attribute-for-enabling-threaded-NAPI.patch +++ /dev/null @@ -1,74 +0,0 @@ -From: Felix Fietkau -Date: Fri, 21 Aug 2020 15:07:54 +0200 -Subject: [PATCH] net: add sysfs attribute for enabling threaded NAPI - -This can be used to enable threaded NAPI on drivers that did not explicitly -request it. - -Suggested-by: Eric Dumazet -Signed-off-by: Felix Fietkau ---- - ---- a/net/core/net-sysfs.c -+++ b/net/core/net-sysfs.c -@@ -472,6 +472,52 @@ static ssize_t proto_down_store(struct d - } - NETDEVICE_SHOW_RW(proto_down, fmt_dec); - -+static int change_napi_threaded(struct net_device *dev, unsigned long val) -+{ -+ struct napi_struct *napi; -+ -+ if (list_empty(&dev->napi_list)) -+ return -EOPNOTSUPP; -+ -+ list_for_each_entry(napi, &dev->napi_list, dev_list) { -+ if (val) -+ set_bit(NAPI_STATE_THREADED, &napi->state); -+ else -+ clear_bit(NAPI_STATE_THREADED, &napi->state); -+ } -+ -+ return 0; -+} -+ -+static ssize_t napi_threaded_store(struct device *dev, -+ struct device_attribute *attr, -+ const char *buf, size_t len) -+{ -+ return netdev_store(dev, attr, buf, len, change_napi_threaded); -+} -+ -+static ssize_t napi_threaded_show(struct device *dev, -+ struct device_attribute *attr, -+ char *buf) -+{ -+ struct net_device *netdev = to_net_dev(dev); -+ struct napi_struct *napi; -+ bool enabled = false; -+ -+ if (!rtnl_trylock()) -+ return restart_syscall(); -+ -+ list_for_each_entry(napi, &netdev->napi_list, dev_list) { -+ if (test_bit(NAPI_STATE_THREADED, &napi->state)) -+ enabled = true; -+ } -+ -+ rtnl_unlock(); -+ -+ return sprintf(buf, fmt_dec, enabled); -+} -+static DEVICE_ATTR_RW(napi_threaded); -+ - static ssize_t phys_port_id_show(struct device *dev, - struct device_attribute *attr, char *buf) - { -@@ -564,6 +610,7 @@ static struct attribute *net_class_attrs - &dev_attr_tx_queue_len.attr, - &dev_attr_gro_flush_timeout.attr, - &dev_attr_napi_defer_hard_irqs.attr, -+ &dev_attr_napi_threaded.attr, - &dev_attr_phys_port_id.attr, - &dev_attr_phys_port_name.attr, - &dev_attr_phys_switch_id.attr, From cb740fbe25e2410ae6f1c30c1e46941bf8ca0902 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Tue, 9 Mar 2021 00:55:19 +0100 Subject: [PATCH 19/27] mediatek: fix mtk parallel nand driver This fixes some bugs in the mtk parallel nand driver introduced in 5.10. This patch was send upstream. Signed-off-by: Hauke Mehrtens --- ...Fix-WAITRDY-break-condition-and-time.patch | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 target/linux/mediatek/patches-5.10/360-mtd-rawnand-mtk-Fix-WAITRDY-break-condition-and-time.patch diff --git a/target/linux/mediatek/patches-5.10/360-mtd-rawnand-mtk-Fix-WAITRDY-break-condition-and-time.patch b/target/linux/mediatek/patches-5.10/360-mtd-rawnand-mtk-Fix-WAITRDY-break-condition-and-time.patch new file mode 100644 index 0000000000..340e80f67b --- /dev/null +++ b/target/linux/mediatek/patches-5.10/360-mtd-rawnand-mtk-Fix-WAITRDY-break-condition-and-time.patch @@ -0,0 +1,36 @@ +From 4a4854761c9dedeedbf72c25d1317ab2e7600d4f Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Mon, 8 Mar 2021 23:16:17 +0100 +Subject: [PATCH] mtd: rawnand: mtk: Fix WAITRDY break condition and timeout + +This fixes NAND_OP_WAITRDY_INSTR operation in the driver. Without this +change the driver waits till the system is busy, but we should wait till +the busy flag is cleared. The readl_poll_timeout() function gets a break +condition, not a wait condition. + +In addition fix the timeout. The timeout_ms is given in ms, but the +readl_poll_timeout() function takes the timeout in us. Multiple the +given timeout by 1000 to convert it. + +Without this change, the driver does not work at all, it doesn't even +identify the NAND chip. + +Fixes: 5197360f9e09 ("mtd: rawnand: mtk: Convert the driver to exec_op()") +Signed-off-by: Hauke Mehrtens +--- + drivers/mtd/nand/raw/mtk_nand.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/mtd/nand/raw/mtk_nand.c ++++ b/drivers/mtd/nand/raw/mtk_nand.c +@@ -488,8 +488,8 @@ static int mtk_nfc_exec_instr(struct nan + return 0; + case NAND_OP_WAITRDY_INSTR: + return readl_poll_timeout(nfc->regs + NFI_STA, status, +- status & STA_BUSY, 20, +- instr->ctx.waitrdy.timeout_ms); ++ !(status & STA_BUSY), 20, ++ instr->ctx.waitrdy.timeout_ms * 1000); + default: + break; + } From 4d9f69322cdaaec10a8f37c67c772f5c3b21e841 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Wed, 30 Dec 2020 18:24:51 +0100 Subject: [PATCH 20/27] tools: otrx: allow own magic This allows to specify an own magic instead of using the default magic value TRX_MAGIC. If no own magic is specified the default one will be used. Signed-off-by: INAGAKI Hiroshi Signed-off-by: Hauke Mehrtens --- tools/firmware-utils/src/otrx.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tools/firmware-utils/src/otrx.c b/tools/firmware-utils/src/otrx.c index 223e032f2b..3bbbac39e3 100644 --- a/tools/firmware-utils/src/otrx.c +++ b/tools/firmware-utils/src/otrx.c @@ -287,7 +287,6 @@ static int otrx_create_write_hdr(FILE *trx, struct trx_header *hdr) { uint8_t buf[1024]; uint32_t crc32; - hdr->magic = cpu_to_le32(TRX_MAGIC); hdr->version = 1; fseek(trx, 0, SEEK_SET); @@ -324,9 +323,13 @@ static int otrx_create(int argc, char **argv) { ssize_t sbytes; size_t curr_idx = 0; size_t curr_offset = sizeof(hdr); + char *e; + uint32_t magic; int c; int err = 0; + hdr.magic = cpu_to_le32(TRX_MAGIC); + if (argc < 3) { fprintf(stderr, "No TRX file passed\n"); err = -EINVAL; @@ -343,7 +346,7 @@ static int otrx_create(int argc, char **argv) { fseek(trx, curr_offset, SEEK_SET); optind = 3; - while ((c = getopt(argc, argv, "f:A:a:b:")) != -1) { + while ((c = getopt(argc, argv, "f:A:a:b:M:")) != -1) { switch (c) { case 'f': if (curr_idx >= TRX_MAX_PARTS) { @@ -400,6 +403,14 @@ static int otrx_create(int argc, char **argv) { curr_offset += sbytes; } break; + case 'M': + errno = 0; + magic = strtoul(optarg, &e, 0); + if (errno || (e == optarg) || *e) + fprintf(stderr, "illegal magic string %s\n", optarg); + else + hdr.magic = cpu_to_le32(magic); + break; } if (err) break; From b5b0796a13223b56f1c2e13e2697c92dec22e9c2 Mon Sep 17 00:00:00 2001 From: INAGAKI Hiroshi Date: Sun, 7 Mar 2021 16:47:17 +0100 Subject: [PATCH 21/27] mtd: add option for TRX magic to fixtrx Buffalo uses the TRX header with a different magic and even changes this magic with different devices. This change allows to specify the header to use as a command line argument. This is needed for the Buffalo WSR-2533DHP2 based on mt7622. Co-Developed-by: Hauke Mehrtens Signed-off-by: INAGAKI Hiroshi Signed-off-by: Hauke Mehrtens --- package/system/mtd/src/mtd.c | 14 ++++++++++++-- package/system/mtd/src/mtd.h | 1 + package/system/mtd/src/trx.c | 8 ++++---- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/package/system/mtd/src/mtd.c b/package/system/mtd/src/mtd.c index 9baed3fd5e..fc7071d940 100644 --- a/package/system/mtd/src/mtd.c +++ b/package/system/mtd/src/mtd.c @@ -94,6 +94,7 @@ int mtdsize = 0; int erasesize = 0; int jffs2_skip_bytes=0; int mtdtype = 0; +uint32_t opt_trxmagic = TRX_MAGIC; int mtd_open(const char *mtd, bool block) { @@ -205,7 +206,7 @@ image_check(int imagefd, const char *mtd) magic = ((uint32_t *)buf)[0]; - if (be32_to_cpu(magic) == TRX_MAGIC) + if (be32_to_cpu(magic) == opt_trxmagic) imageformat = MTD_IMAGE_FORMAT_TRX; else if (be32_to_cpu(magic) == SEAMA_MAGIC) imageformat = MTD_IMAGE_FORMAT_SEAMA; @@ -810,6 +811,7 @@ static void usage(void) " -l the length of data that we want to dump\n"); if (mtd_fixtrx) { fprintf(stderr, + " -M magic number of the image header in the partition (for fixtrx)\n" " -o offset offset of the image header in the partition(for fixtrx)\n"); } if (mtd_fixtrx || mtd_fixseama || mtd_fixwrg || mtd_fixwrgg) { @@ -877,7 +879,7 @@ int main (int argc, char **argv) #ifdef FIS_SUPPORT "F:" #endif - "frnqe:d:s:j:p:o:c:t:l:")) != -1) + "frnqe:d:s:j:p:o:c:t:l:M:")) != -1) switch (ch) { case 'f': force = 1; @@ -929,6 +931,14 @@ int main (int argc, char **argv) usage(); } break; + case 'M': + errno = 0; + opt_trxmagic = strtoul(optarg, 0, 0); + if (errno) { + fprintf(stderr, "-M: illegal numeric string\n"); + usage(); + } + break; case 'o': errno = 0; offset = strtoul(optarg, 0, 0); diff --git a/package/system/mtd/src/mtd.h b/package/system/mtd/src/mtd.h index fe716b7150..d2facc8e3b 100644 --- a/package/system/mtd/src/mtd.h +++ b/package/system/mtd/src/mtd.h @@ -12,6 +12,7 @@ extern int quiet; extern int mtdsize; extern int erasesize; +extern uint32_t opt_trxmagic; extern int mtd_open(const char *mtd, bool block); extern int mtd_check_open(const char *mtd); diff --git a/package/system/mtd/src/trx.c b/package/system/mtd/src/trx.c index 3e3b5d220c..d7c5d832c4 100644 --- a/package/system/mtd/src/trx.c +++ b/package/system/mtd/src/trx.c @@ -35,7 +35,6 @@ #include "mtd.h" #include "crc32.h" -#define TRX_MAGIC 0x30524448 /* "HDR0" */ #define TRX_CRC32_DATA_OFFSET 12 /* First 12 bytes are not covered by CRC32 */ #define TRX_CRC32_DATA_SIZE 16 struct trx_header { @@ -92,7 +91,7 @@ trx_fixup(int fd, const char *name) } trx = ptr; - if (trx->magic != TRX_MAGIC) { + if (ntohl(trx->magic) != opt_trxmagic) { fprintf(stderr, "TRX header not found\n"); goto err; } @@ -127,7 +126,8 @@ trx_check(int imagefd, const char *mtd, char *buf, int *len) } } - if (trx->magic != TRX_MAGIC || trx->len < sizeof(struct trx_header)) { + if (ntohl(trx->magic) != opt_trxmagic || + trx->len < sizeof(struct trx_header)) { if (quiet < 2) { fprintf(stderr, "Bad trx header\n"); fprintf(stderr, "This is not the correct file format; refusing to flash.\n" @@ -200,7 +200,7 @@ mtd_fixtrx(const char *mtd, size_t offset, size_t data_size) } trx = (struct trx_header *)(first_block + offset); - if (trx->magic != STORE32_LE(0x30524448)) { + if (ntohl(trx->magic) != opt_trxmagic) { fprintf(stderr, "No trx magic found\n"); exit(1); } From 58c5e256648293fee08792098f1d8643ceedf7fd Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sun, 7 Mar 2021 18:28:15 +0100 Subject: [PATCH 22/27] mediatek: support non standard trx magic values MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Buffalo uses the TRX format with a different magic, add support for this. It is planned to send these patches upstream. Cc: Rafał Miłecki Signed-off-by: INAGAKI Hiroshi Signed-off-by: Hauke Mehrtens --- ...trx-Allow-to-specify-trx-magic-in-DT.patch | 75 +++++++++++++++++++ ...ove-dependency-to-BRCM-architectures.patch | 23 ++++++ ...trx-Allow-to-specify-trx-magic-in-DT.patch | 75 +++++++++++++++++++ ...ove-dependency-to-BRCM-architectures.patch | 23 ++++++ 4 files changed, 196 insertions(+) create mode 100644 target/linux/mediatek/patches-5.10/350-mtd-parsers-trx-Allow-to-specify-trx-magic-in-DT.patch create mode 100644 target/linux/mediatek/patches-5.10/351-mtd-parsers-Remove-dependency-to-BRCM-architectures.patch create mode 100644 target/linux/mediatek/patches-5.4/0350-mtd-parsers-trx-Allow-to-specify-trx-magic-in-DT.patch create mode 100644 target/linux/mediatek/patches-5.4/0351-mtd-parsers-Remove-dependency-to-BRCM-architectures.patch diff --git a/target/linux/mediatek/patches-5.10/350-mtd-parsers-trx-Allow-to-specify-trx-magic-in-DT.patch b/target/linux/mediatek/patches-5.10/350-mtd-parsers-trx-Allow-to-specify-trx-magic-in-DT.patch new file mode 100644 index 0000000000..4db51a88ad --- /dev/null +++ b/target/linux/mediatek/patches-5.10/350-mtd-parsers-trx-Allow-to-specify-trx-magic-in-DT.patch @@ -0,0 +1,75 @@ +From 0600e3d81628002a5cd80cf83ee454851b0063c0 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 7 Mar 2021 18:19:26 +0100 +Subject: mtd: parsers: trx: Allow to specify trx-magic in DT + +Buffalo uses a different TRX magic for every device, to be able to use +this trx parser, make it possible to specify the TRX magic in device +tree. If no TRX magic is specified in device tree, the standard value +will be used. This value should only be specified if a vendor chooses to +use a non standard TRX magic. + +Signed-off-by: Hauke Mehrtens +--- + .../bindings/mtd/partitions/brcm,trx.txt | 5 +++++ + drivers/mtd/parsers/parser_trx.c | 21 ++++++++++++++++++- + 2 files changed, 25 insertions(+), 1 deletion(-) + +--- a/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt ++++ b/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt +@@ -28,6 +28,11 @@ detected by a software parsing TRX heade + Required properties: + - compatible : (required) must be "brcm,trx" + ++Optional properties: ++ ++- trx-magic: TRX magic, if it is different from the default magic ++ 0x30524448 as a u32. ++ + Example: + + flash@0 { +--- a/drivers/mtd/parsers/parser_trx.c ++++ b/drivers/mtd/parsers/parser_trx.c +@@ -74,6 +74,24 @@ out_default: + return "rootfs"; + } + ++static uint32_t parser_trx_get_magic(struct mtd_info *mtd) ++{ ++ uint32_t trx_magic = TRX_MAGIC; ++ struct device_node *np; ++ int err; ++ ++ np = mtd_get_of_node(mtd); ++ if (!np) ++ return trx_magic; ++ ++ /* Get different magic from device tree if specified */ ++ err = of_property_read_u32(np, "trx-magic", &trx_magic); ++ if (err != 0 && err != -EINVAL) ++ pr_err("failed to parse \"trx-magic\" DT attribute, use default: %d\n", err); ++ ++ return trx_magic; ++} ++ + static int parser_trx_parse(struct mtd_info *mtd, + const struct mtd_partition **pparts, + struct mtd_part_parser_data *data) +@@ -83,6 +101,7 @@ static int parser_trx_parse(struct mtd_i + struct trx_header trx; + size_t bytes_read; + uint8_t curr_part = 0, i = 0; ++ uint32_t trx_magic = parser_trx_get_magic(mtd); + int err; + + parts = kcalloc(TRX_PARSER_MAX_PARTS, sizeof(struct mtd_partition), +@@ -97,7 +116,7 @@ static int parser_trx_parse(struct mtd_i + return err; + } + +- if (trx.magic != TRX_MAGIC) { ++ if (trx.magic != trx_magic) { + kfree(parts); + return -ENOENT; + } diff --git a/target/linux/mediatek/patches-5.10/351-mtd-parsers-Remove-dependency-to-BRCM-architectures.patch b/target/linux/mediatek/patches-5.10/351-mtd-parsers-Remove-dependency-to-BRCM-architectures.patch new file mode 100644 index 0000000000..5f06cad4cd --- /dev/null +++ b/target/linux/mediatek/patches-5.10/351-mtd-parsers-Remove-dependency-to-BRCM-architectures.patch @@ -0,0 +1,23 @@ +From 63f0cf88ab5461acb0911252f12bb94ee3bf05a2 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 7 Mar 2021 18:23:29 +0100 +Subject: mtd: parsers: Remove dependency to BRCM architectures + +Buffalo uses the TRX partition format also on Mediatek SoCs. + +Signed-off-by: Hauke Mehrtens +--- + drivers/mtd/parsers/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/mtd/parsers/Kconfig ++++ b/drivers/mtd/parsers/Kconfig +@@ -121,7 +121,7 @@ config MTD_AFS_PARTS + + config MTD_PARSER_TRX + tristate "Parser for TRX format partitions" +- depends on MTD && (BCM47XX || ARCH_BCM_5301X || COMPILE_TEST) ++ depends on MTD + help + TRX is a firmware format used by Broadcom on their devices. It + may contain up to 3/4 partitions (depending on the version). diff --git a/target/linux/mediatek/patches-5.4/0350-mtd-parsers-trx-Allow-to-specify-trx-magic-in-DT.patch b/target/linux/mediatek/patches-5.4/0350-mtd-parsers-trx-Allow-to-specify-trx-magic-in-DT.patch new file mode 100644 index 0000000000..4db51a88ad --- /dev/null +++ b/target/linux/mediatek/patches-5.4/0350-mtd-parsers-trx-Allow-to-specify-trx-magic-in-DT.patch @@ -0,0 +1,75 @@ +From 0600e3d81628002a5cd80cf83ee454851b0063c0 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 7 Mar 2021 18:19:26 +0100 +Subject: mtd: parsers: trx: Allow to specify trx-magic in DT + +Buffalo uses a different TRX magic for every device, to be able to use +this trx parser, make it possible to specify the TRX magic in device +tree. If no TRX magic is specified in device tree, the standard value +will be used. This value should only be specified if a vendor chooses to +use a non standard TRX magic. + +Signed-off-by: Hauke Mehrtens +--- + .../bindings/mtd/partitions/brcm,trx.txt | 5 +++++ + drivers/mtd/parsers/parser_trx.c | 21 ++++++++++++++++++- + 2 files changed, 25 insertions(+), 1 deletion(-) + +--- a/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt ++++ b/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt +@@ -28,6 +28,11 @@ detected by a software parsing TRX heade + Required properties: + - compatible : (required) must be "brcm,trx" + ++Optional properties: ++ ++- trx-magic: TRX magic, if it is different from the default magic ++ 0x30524448 as a u32. ++ + Example: + + flash@0 { +--- a/drivers/mtd/parsers/parser_trx.c ++++ b/drivers/mtd/parsers/parser_trx.c +@@ -74,6 +74,24 @@ out_default: + return "rootfs"; + } + ++static uint32_t parser_trx_get_magic(struct mtd_info *mtd) ++{ ++ uint32_t trx_magic = TRX_MAGIC; ++ struct device_node *np; ++ int err; ++ ++ np = mtd_get_of_node(mtd); ++ if (!np) ++ return trx_magic; ++ ++ /* Get different magic from device tree if specified */ ++ err = of_property_read_u32(np, "trx-magic", &trx_magic); ++ if (err != 0 && err != -EINVAL) ++ pr_err("failed to parse \"trx-magic\" DT attribute, use default: %d\n", err); ++ ++ return trx_magic; ++} ++ + static int parser_trx_parse(struct mtd_info *mtd, + const struct mtd_partition **pparts, + struct mtd_part_parser_data *data) +@@ -83,6 +101,7 @@ static int parser_trx_parse(struct mtd_i + struct trx_header trx; + size_t bytes_read; + uint8_t curr_part = 0, i = 0; ++ uint32_t trx_magic = parser_trx_get_magic(mtd); + int err; + + parts = kcalloc(TRX_PARSER_MAX_PARTS, sizeof(struct mtd_partition), +@@ -97,7 +116,7 @@ static int parser_trx_parse(struct mtd_i + return err; + } + +- if (trx.magic != TRX_MAGIC) { ++ if (trx.magic != trx_magic) { + kfree(parts); + return -ENOENT; + } diff --git a/target/linux/mediatek/patches-5.4/0351-mtd-parsers-Remove-dependency-to-BRCM-architectures.patch b/target/linux/mediatek/patches-5.4/0351-mtd-parsers-Remove-dependency-to-BRCM-architectures.patch new file mode 100644 index 0000000000..5f06cad4cd --- /dev/null +++ b/target/linux/mediatek/patches-5.4/0351-mtd-parsers-Remove-dependency-to-BRCM-architectures.patch @@ -0,0 +1,23 @@ +From 63f0cf88ab5461acb0911252f12bb94ee3bf05a2 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 7 Mar 2021 18:23:29 +0100 +Subject: mtd: parsers: Remove dependency to BRCM architectures + +Buffalo uses the TRX partition format also on Mediatek SoCs. + +Signed-off-by: Hauke Mehrtens +--- + drivers/mtd/parsers/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/mtd/parsers/Kconfig ++++ b/drivers/mtd/parsers/Kconfig +@@ -121,7 +121,7 @@ config MTD_AFS_PARTS + + config MTD_PARSER_TRX + tristate "Parser for TRX format partitions" +- depends on MTD && (BCM47XX || ARCH_BCM_5301X || COMPILE_TEST) ++ depends on MTD + help + TRX is a firmware format used by Broadcom on their devices. It + may contain up to 3/4 partitions (depending on the version). From 74f15628dd8c4b00071f7a94996ff9b695a6bd7a Mon Sep 17 00:00:00 2001 From: INAGAKI Hiroshi Date: Sun, 7 Mar 2021 18:36:16 +0100 Subject: [PATCH 23/27] mediatek: add support for Buffalo WSR-2533DHP2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds support for the Buffalo WSR-2533DHP2. The device uses the Broadcom TRX image format with a special magic. To be able to boot the images or load them they have to be wrapped with different headers depending how it is loaded. There are multiple ways to install OpenWrt on this device. Boot ramdisk from U-Boot ---------------------------- This will load the image and not write it into the flash. 1. Stop boot menu with "space" key 2. Select "System Load Linux to SDRAM via TFTP." 3. Load this image: openwrt-mediatek-mt7622-buffalo_wsr-2533dhp2-initramfs-kernel.bin 4. The system boots the image Write to flash from U-Boot ----------------------------- This will load the image over tftp and directly write it into the flash. 1. Stop boot menu with "space" key 2. Select "System Load Linux Kernel then write to Flash via TFTP." 3. Load this image: openwrt-mediatek-mt7622-buffalo_wsr-2533dhp2-squashfs-factory-uboot.bin 4. The system writes this image into the flash and boots into it. Write to flash from Web UI ----------------------------- This will load the image over over the Web UI and write it into the flash 1. Open the Web UI 2. Go to "管理" -> "ファームウェア更新" 3. Select "ローカルファイル指定" and click "更新実行" 4. Load this image: openwrt-mediatek-mt7622-buffalo_wsr-2533dhp2-squashfs-factory.bin 5. The system writes this image into the flash and boots into it. Specifications ------------------- * SoC: MT7622 (4x4 2.4 GHz Wifi) * Wifi: MT7615 (4x4 5 GHz Wifi) * Flash: Winbond W29N01HZ 128MB SLC NAND * RAM 256MB * Ethernet: Realtek RTL8367S (5 x 1GBit/s, SoC via 2.5GBit/s) Co-Developed-by: Hauke Mehrtens Signed-off-by: INAGAKI Hiroshi Signed-off-by: Hauke Mehrtens --- package/boot/uboot-envtools/files/mediatek | 3 + package/system/mtd/src/Makefile | 1 + .../dts/mt7622-buffalo-wsr-2533dhp2.dts | 340 ++++++++++++++++++ target/linux/mediatek/image/mt7622.mk | 64 ++++ .../mt7622/base-files/etc/board.d/02_network | 4 + .../base-files/etc/uci-defaults/09_fix_crc | 10 + .../mt7622/base-files/lib/upgrade/buffalo.sh | 126 +++++++ .../mt7622/base-files/lib/upgrade/platform.sh | 15 + target/linux/mediatek/mt7622/config-5.10 | 1 + 9 files changed, 564 insertions(+) create mode 100644 target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts create mode 100644 target/linux/mediatek/mt7622/base-files/etc/uci-defaults/09_fix_crc create mode 100644 target/linux/mediatek/mt7622/base-files/lib/upgrade/buffalo.sh diff --git a/package/boot/uboot-envtools/files/mediatek b/package/boot/uboot-envtools/files/mediatek index ba6d780c49..ce28fb31cb 100644 --- a/package/boot/uboot-envtools/files/mediatek +++ b/package/boot/uboot-envtools/files/mediatek @@ -24,6 +24,9 @@ case "$board" in ubootenv_add_uci_config "$envdev" "0x0" "0x80000" "0x80000" "1" ubootenv_add_uci_config "$envdev" "0x80000" "0x80000" "0x80000" "1" ;; +buffalo,wsr-2533dhp2) + ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x1000" "0x1000" + ;; esac config_load ubootenv diff --git a/package/system/mtd/src/Makefile b/package/system/mtd/src/Makefile index 6baea52b8f..e204ecb221 100644 --- a/package/system/mtd/src/Makefile +++ b/package/system/mtd/src/Makefile @@ -12,6 +12,7 @@ obj.gemini = $(obj.wrgg) obj.brcm = trx.o obj.bcm47xx = $(obj.brcm) obj.bcm53xx = $(obj.brcm) $(obj.seama) +obj.mediatek = $(obj.brcm) obj.bcm63xx = imagetag.o obj.bmips = imagetag.o obj.ramips = $(obj.seama) $(obj.tpl) $(obj.wrg) linksys_bootcount.o diff --git a/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts b/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts new file mode 100644 index 0000000000..397be1445b --- /dev/null +++ b/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts @@ -0,0 +1,340 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; +#include +#include + +#include "mt7622.dtsi" +#include "mt6380.dtsi" + +/ { + model = "Buffalo WSR-2533DHP2"; + compatible = "buffalo,wsr-2533dhp2", "mediatek,mt7622"; + + aliases { + serial0 = &uart0; + led-boot = &power_green; + led-failsafe = &power_amber; + led-running = &power_green; + led-upgrade = &power_green; + }; + + chosen { + bootargs = "earlycon=uart8250,mmio32,0x11002000 console=ttyS0,115200n8 swiotlb=512"; + }; + + memory { + reg = <0 0x40000000 0 0x0F000000>; + }; + + leds { + compatible = "gpio-leds"; + + wireless_amber { + label = "amber:wireless"; + gpios = <&pio 2 GPIO_ACTIVE_HIGH>; + }; + + power_amber: power_amber { + label = "amber:power"; + gpios = <&pio 3 GPIO_ACTIVE_LOW>; + }; + + power_green: power_green { + label = "green:power"; + gpios = <&pio 4 GPIO_ACTIVE_LOW>; + default-state = "on"; + }; + + wireless_green { + label = "green:wireless"; + gpios = <&pio 15 GPIO_ACTIVE_HIGH>; + }; + + internet { + label = "green:internet"; + gpios = <&pio 19 GPIO_ACTIVE_HIGH>; + }; + + router { + label = "green:router"; + gpios = <&pio 20 GPIO_ACTIVE_HIGH>; + }; + }; + + keys { + compatible = "gpio-keys"; + poll-interval = <100>; + + reset { + label = "reset"; + gpios = <&pio 0 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + /* GPIO 1 and 16 are a tri-state switch button with + * ROUTER / AP / WB. + */ + router { + label = "router"; + gpios = <&pio 1 GPIO_ACTIVE_LOW>; + linux,code = ; + linux,input-type = ; + }; + + bridge { + label = "wb"; + gpios = <&pio 16 GPIO_ACTIVE_LOW>; + linux,code = ; + linux,input-type = ; + }; + + /* GPIO 18 is a switch button with AUTO / MANUAL. */ + manual { + label = "manual"; + gpios = <&pio 18 GPIO_ACTIVE_LOW>; + linux,code = ; + linux,input-type = ; + }; + + wps { + label = "wps"; + gpios = <&pio 102 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + + rtkgsw: rtkgsw@0 { + compatible = "mediatek,rtk-gsw"; + mediatek,ethsys = <ðsys>; + mediatek,mdio = <&mdio>; + mediatek,reset-pin = <&pio 54 GPIO_ACTIVE_HIGH>; + }; +}; + +&cpu0 { + proc-supply = <&mt6380_vcpu_reg>; + sram-supply = <&mt6380_vm_reg>; +}; + +&cpu1 { + proc-supply = <&mt6380_vcpu_reg>; + sram-supply = <&mt6380_vm_reg>; +}; + +&pcie0 { + pinctrl-names = "default"; + pinctrl-0 = <&pcie0_pins>; + status = "okay"; +}; + +&slot0 { + status = "okay"; + + wifi@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0000 0 0 0 0>; + mediatek,mtd-eeprom = <&factory 0x5000>; + ieee80211-freq-limit = <5000000 6000000>; + }; +}; + +&pio { + eth_pins: eth-pins { + mux { + function = "eth"; + groups = "mdc_mdio", "rgmii_via_gmac2"; + }; + }; + + /* Parallel nand is shared pin with eMMC */ + parallel_nand_pins: parallel-nand-pins { + mux { + function = "flash"; + groups = "par_nand"; + }; + + conf-cmd-dat { + pins = "NCEB", "NWEB", "NREB", + "NDL4", "NDL5", "NDL6", + "NDL7", "NRB", "NCLE", + "NALE", "NDL0", "NDL1", + "NDL2", "NDL3"; + input-enable; + drive-strength = <8>; + bias-pull-up; + }; + }; + + pcie0_pins: pcie0-pins { + mux { + function = "pcie"; + groups = "pcie0_pad_perst", + "pcie0_1_waken", + "pcie0_1_clkreq"; + }; + }; + + pmic_bus_pins: pmic-bus-pins { + mux { + function = "pmic"; + groups = "pmic_bus"; + }; + }; + + pwm7_pins: pwm1-2-pins { + mux { + function = "pwm"; + groups = "pwm_ch7_2"; + }; + }; + + uart0_pins: uart0-pins { + mux { + function = "uart"; + groups = "uart0_0_tx_rx" ; + }; + }; + + watchdog_pins: watchdog-pins { + mux { + function = "watchdog"; + groups = "watchdog"; + }; + }; +}; + +&bch { + status = "okay"; +}; + +ð { + pinctrl-names = "default"; + pinctrl-0 = <ð_pins>; + status = "okay"; + + gmac0: mac@0 { + compatible = "mediatek,eth-mac"; + reg = <0>; + + phy-connection-type = "2500base-x"; + + mtd-mac-address = <&factory 0x4>; + mtd-mac-address-increment = <(-1)>; + + fixed-link { + speed = <2500>; + full-duplex; + pause; + }; + }; + + mdio: mdio-bus { + #address-cells = <1>; + #size-cells = <0>; + }; +}; + +&nandc { + pinctrl-names = "default"; + pinctrl-0 = <¶llel_nand_pins>; + status = "okay"; + + nand@0 { + reg = <0>; + nand-ecc-mode = "hw"; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "Preloader"; + reg = <0x0 0x80000>; + read-only; + }; + + partition@80000 { + label = "ATF"; + reg = <0x80000 0x40000>; + read-only; + }; + + partition@c0000 { + label = "Bootloader"; + reg = <0xc0000 0x80000>; + read-only; + }; + + partition@140000 { + label = "Config"; + reg = <0x140000 0x80000>; + read-only; + }; + + factory: partition@1c0000 { + label = "factory"; + reg = <0x1c0000 0x40000>; + read-only; + }; + + partition@200000 { + compatible = "brcm,trx"; + trx-magic = <0x32504844>; + label = "firmware"; + reg = <0x200000 0x3a00000>; + }; + + partition@3C00000 { + label = "Kernel2"; + reg = <0x3c00000 0x3a00000>; + }; + + partition@7600000 { + label = "glbcfg"; + reg = <0x7600000 0x200000>; + read-only; + }; + + partition@7800000 { + label = "board_data"; + reg = <0x7800000 0x200000>; + read-only; + }; + }; + }; +}; + +&pwm { + pinctrl-names = "default"; + pinctrl-0 = <&pwm7_pins>; + status = "okay"; +}; + +&pwrap { + pinctrl-names = "default"; + pinctrl-0 = <&pmic_bus_pins>; + status = "okay"; +}; + +&uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins>; + status = "okay"; +}; + +&watchdog { + pinctrl-names = "default"; + pinctrl-0 = <&watchdog_pins>; + status = "okay"; +}; + +&wmac { + status = "okay"; + + mediatek,mtd-eeprom = <&factory 0x0>; +}; + +&rtc { + status = "disabled"; +}; diff --git a/target/linux/mediatek/image/mt7622.mk b/target/linux/mediatek/image/mt7622.mk index 6824d4a8ee..e31baf2275 100644 --- a/target/linux/mediatek/image/mt7622.mk +++ b/target/linux/mediatek/image/mt7622.mk @@ -6,6 +6,28 @@ else KERNEL_LOADADDR := 0x44000000 endif +define Image/Prepare + # For UBI we want only one extra block + rm -f $(KDIR)/ubi_mark + echo -ne '\xde\xad\xc0\xde' > $(KDIR)/ubi_mark +endef + +define Build/buffalo-kernel-trx + $(eval magic=$(word 1,$(1))) + $(eval dummy=$(word 2,$(1))) + $(eval kern_size=$(if $(KERNEL_SIZE),$(KERNEL_SIZE),0x400000)) + + $(if $(dummy),touch $(dummy)) + $(STAGING_DIR_HOST)/bin/otrx create $@.new \ + $(if $(magic),-M $(magic),) \ + -f $@ \ + $(if $(dummy),\ + -a 0x20000 \ + -b $$(( $(subst k, * 1024,$(kern_size)) )) \ + -f $(dummy),) + mv $@.new $@ +endef + define Build/bl2 cat $(STAGING_DIR_IMAGE)/mt7622-$1-bl2.img >> $@ endef @@ -34,6 +56,19 @@ define Build/mt7622-gpt rm $@.tmp endef +define Build/trx-nand + # kernel: always use 4 MiB (-28 B or TRX header) to allow upgrades even + # if it grows up between releases + # root: UBI with one extra block containing UBI mark to trigger erasing + # rest of partition + $(STAGING_DIR_HOST)/bin/otrx create $@.new \ + -M 0x32504844 \ + -f $(IMAGE_KERNEL) -a 0x20000 -b 0x400000 \ + -f $@ \ + -A $(KDIR)/ubi_mark -a 0x20000 + mv $@.new $@ +endef + define Device/bananapi_bpi-r64 DEVICE_VENDOR := Bananapi DEVICE_MODEL := BPi-R64 @@ -51,6 +86,35 @@ define Device/bananapi_bpi-r64 endef TARGET_DEVICES += bananapi_bpi-r64 +define Device/buffalo_wsr-2533dhp2 + DEVICE_VENDOR := Buffalo + DEVICE_MODEL := WSR-2533DHP2 + DEVICE_DTS := mt7622-buffalo-wsr-2533dhp2 + DEVICE_DTS_DIR := ../dts + IMAGE_SIZE := 59392k + KERNEL_SIZE := 4096k + BLOCKSIZE := 128k + PAGESIZE := 2048 + SUBPAGESIZE := 512 + UBINIZE_OPTS := -E 5 + BUFFALO_TAG_PLATFORM := MTK + BUFFALO_TAG_VERSION := 9.99 + BUFFALO_TAG_MINOR := 9.99 + IMAGES += factory.bin factory-uboot.bin + KERNEL_INITRAMFS := kernel-bin | lzma | \ + fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | \ + buffalo-kernel-trx + IMAGE/factory.bin := append-ubi | trx-nand | \ + buffalo-enc WSR-2533DHP2 $$(BUFFALO_TAG_VERSION) -l | \ + buffalo-tag-dhp WSR-2533DHP2 JP JP | buffalo-enc-tag -l | buffalo-dhp-image + IMAGE/factory-uboot.bin := append-ubi | trx-nand + IMAGE/sysupgrade.bin := append-kernel | \ + buffalo-kernel-trx 0x32504844 $(KDIR)/tmp/$$(DEVICE_NAME).null | \ + sysupgrade-tar kernel=$$$$@ | append-metadata + DEVICE_PACKAGES := kmod-mt7615e kmod-mt7615-firmware swconfig uboot-envtools +endef +TARGET_DEVICES += buffalo_wsr-2533dhp2 + define Device/elecom_wrc-2533gent DEVICE_VENDOR := Elecom DEVICE_MODEL := WRC-2533GENT diff --git a/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network b/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network index f537ccdb80..f1daa2fae1 100644 --- a/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network +++ b/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network @@ -14,6 +14,10 @@ mediatek_setup_interfaces() mediatek,mt7622-rfb1) ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" wan ;; + buffalo,wsr-2533dhp2) + ucidef_add_switch "switch0" \ + "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "6@eth0" + ;; ubnt,unifi-6-lr) ucidef_set_interfaces_lan "eth0" ;; diff --git a/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/09_fix_crc b/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/09_fix_crc new file mode 100644 index 0000000000..81cb6b18b7 --- /dev/null +++ b/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/09_fix_crc @@ -0,0 +1,10 @@ +. /lib/functions.sh + +kernel_size=$(sed -n 's/mtd[0-9]*: \([0-9a-f]*\).*"\(kernel\|linux\)".*/\1/p' /proc/mtd) + +case "$(board_name)" in +buffalo,wsr-2533dhp2) + mtd -M 0x44485032 ${kernel_size:+-c 0x$kernel_size} fixtrx firmware && exit 0 + exit 1 + ;; +esac diff --git a/target/linux/mediatek/mt7622/base-files/lib/upgrade/buffalo.sh b/target/linux/mediatek/mt7622/base-files/lib/upgrade/buffalo.sh new file mode 100644 index 0000000000..844cc4ed95 --- /dev/null +++ b/target/linux/mediatek/mt7622/base-files/lib/upgrade/buffalo.sh @@ -0,0 +1,126 @@ +# ======== dev note ======== +# for following buffalo MT7622 devices: +# +# - WSR-2533DHP2 (trx magic: "DHP2") +# - WSR-2533DHP3 (trx magic: "DHP3") +# - WSR-3200AX4S (trx magic: "DHP3") +# +# sysupgrade-tar image: +# +# This is for normal upgrading for OpenWrt. +# use nand_do_upgrade with CI_KERNPART="firmware" +# +# - if the size of new kernel is not equal with the current kernel's +# -> block upgrade and print a message about using TRX + UBI +# formatted image +# (should be flashed the new ubi contains rootfs + rootfs_data +# with the offset (=new padded kernel's end) if this case? But +# it maybe too hard for writing scripts...) +# +# TRX + UBI formatted image: +# +# This is for upgrading if the new kernel is larger than the +# current kernel. +# +# ex: +# - stock firmware is installed in the flash and booted with +# OpenWrt initramfs image +# - kernel partition is increased from 4MiB in OpenWrt in the +# future +# +# packing TRX + UBI formatted image by tar is needed for image validation +# with the metadata in the future? +# ====== dev note end ====== +# +# The mtd partitions "firmware" and "Kernel2" on NAND flash are os-image +# partitions. These partitions are called as "Image1/Image2" in U-Boot +# on WSR-2533DHP2, and they are checked conditions when booting. +# "Image1" is always used for booting. +# +# == U-Boot Behaviors == +# - "Image1"/"Image2" images are good, images are different or +# "Image2" image is broken +# -> writes os-image to "Image2" from "Image1" +# +# - "Image1" image is broken +# -> writes os-image to "Image1" from "Image2" +# +# - "Image1"/"Image2" images are broken +# -> fall to U-Boot command line + +buffalo_check_image() { + local board="$1" + local boardname="$(echo $board | tr ',' '_')" + local magic="$2" + local fw_image="$3" + + # return error state if TRX + UBI formatted image specified + # to notify about configurations + if [ "$magic" = "44485032" -o "$magic" = "44485033" ]; then + echo "Your configurations won't be saved if factory-uboot.bin image specified." + echo "But if you want to upgrade, please execute sysupgrade with \"-F\" option." + return 1 + fi + + # check if valid tar file specifed + if ! tar tf "$fw_image" &>/dev/null; then + echo "Specified file is not a tar archive: $fw_image" + return 1 + fi + + local control_len=$( (tar xf $fw_image sysupgrade-$boardname/CONTROL -O | wc -c) 2> /dev/null) + + # check if valid sysupgrade tar archive + if [ "$control_len" = "0" ]; then + echo "Invalid sysupgrade file: $fw_image" + return 1 + fi + + local kern_part_len=$(grep "\"linux\"" /proc/mtd | sed "s/mtd[0-9]*:[ \t]*\([^ \t]*\).*/\1/") + [ -z "$kern_part_len" ] && { + echo "Unable to get \"linux\" partition size" + return 1 + } + kern_part_len=$((0x$kern_part_len)) + + # this also checks if the sysupgrade image is for correct models + local kern_bin_len=$( (tar xf $fw_image sysupgrade-${boardname}/kernel -O | wc -c) 2> /dev/null) + if [ -z "$kern_bin_len" ]; then + echo "Failed to get new kernel size, is valid sysupgrade image specified for the device?" + return 1 + fi + + # kernel binary has a trx header (len: 28 (0x1c)) + kern_bin_len=$((kern_bin_len - 28)) + + if [ "$kern_bin_len" != "$kern_part_len" ]; then + echo -n "The length of new kernel is invalid for current " + echo "\"linux\" partition, please use factory-uboot.bin image." + echo "\"linux\" partition: $kern_part_len, new kernel: $kern_bin_len" + return 1 + fi +} + +# for TRX + UBI formatted image +buffalo_upgrade_ubinized() { + sync + echo 3 > /proc/sys/vm/drop_caches + + local mtdnum="$( find_mtd_index "ubi" )" + # if no "ubi", don't return error for the purpose of recovery + # ex: recovery after accidental erasing "firmware" partition + if [ ! "$mtdnum" ]; then + echo "cannot find ubi mtd partition \"ubi\", skip detachment" + else + ubidetach -m "$mtdnum" + fi + + # erase all data in "firmware" + mtd erase "${PART_NAME}" + # write TRX + UBI formatted image to "firmware" + get_image "$1" | mtd $MTD_ARGS write - "${PART_NAME:-firmware}" + if [ $? -ne 0 ]; then + echo "Failed to write the specified image." + exit 1 + fi +} diff --git a/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh index 87852881bf..97a492c7fb 100755 --- a/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh +++ b/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh @@ -56,6 +56,18 @@ platform_do_upgrade() { get_image "$1" | dd of=/dev/$fitpart echo $rootdev > /tmp/sysupgrade.rootdev ;; + buffalo,wsr-2533dhp2) + local magic="$(get_magic_long "$1")" + + # use "mtd write" if the magic is "DHP2 (0x44485032)" + # or "DHP3 (0x44485033)" + if [ "$magic" = "44485032" -o "$magic" = "44485033" ]; then + buffalo_upgrade_ubinized "$1" + else + CI_KERNPART="firmware" + nand_do_upgrade "$1" + fi + ;; linksys,e8450-ubi|\ mediatek,mt7622,ubi) CI_KERNPART="fit" @@ -84,6 +96,9 @@ platform_check_image() { [ "$#" -gt 1 ] && return 1 case "$board" in + buffalo,wsr-2533dhp2) + buffalo_check_image "$board" "$magic" "$1" || return 1 + ;; *) [ "$magic" != "d00dfeed" ] && { echo "Invalid image type." diff --git a/target/linux/mediatek/mt7622/config-5.10 b/target/linux/mediatek/mt7622/config-5.10 index 5d80056365..b899d9dbbb 100644 --- a/target/linux/mediatek/mt7622/config-5.10 +++ b/target/linux/mediatek/mt7622/config-5.10 @@ -247,6 +247,7 @@ CONFIG_MTD_NAND_MTK_BMT=y CONFIG_MTD_RAW_NAND=y CONFIG_MTD_SPI_NAND=y CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_PARSER_TRX=y CONFIG_MTD_SPLIT_FIRMWARE=y CONFIG_MTD_SPLIT_FIT_FW=y CONFIG_MTD_UBI=y From c17b1dca606054587e0488019a50b996faeec8c5 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Mon, 15 Mar 2021 16:39:20 +0000 Subject: [PATCH 24/27] mediatek: mt7622: drop duplicate DEVICE_PACKAGES kmod-mt7615e kmod-mt7615-firmware and uboot-envtools are already part of the target's default package set. No need to add them again for buffalo_wsr-2533dhp2. Signed-off-by: Daniel Golle --- target/linux/mediatek/image/mt7622.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/mediatek/image/mt7622.mk b/target/linux/mediatek/image/mt7622.mk index e31baf2275..13f734b38c 100644 --- a/target/linux/mediatek/image/mt7622.mk +++ b/target/linux/mediatek/image/mt7622.mk @@ -111,7 +111,7 @@ define Device/buffalo_wsr-2533dhp2 IMAGE/sysupgrade.bin := append-kernel | \ buffalo-kernel-trx 0x32504844 $(KDIR)/tmp/$$(DEVICE_NAME).null | \ sysupgrade-tar kernel=$$$$@ | append-metadata - DEVICE_PACKAGES := kmod-mt7615e kmod-mt7615-firmware swconfig uboot-envtools + DEVICE_PACKAGES := swconfig endef TARGET_DEVICES += buffalo_wsr-2533dhp2 From d7c8ca4d0b5c18c08e645f010fd0012f54c1c102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Mon, 15 Mar 2021 20:30:21 +0100 Subject: [PATCH 25/27] bcm4908: backport first PHY 5.13 patches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Upstream accepted version of Kconfig change 2. Documentation binding fix Signed-off-by: Rafał Miłecki --- ...-select-SOC_BRCMSTB-on-brcmstb-only.patch} | 15 +++++++-- ...brcm-brcmstb-usb-phy-add-power-domai.patch | 31 +++++++++++++++++++ 2 files changed, 43 insertions(+), 3 deletions(-) rename target/linux/bcm4908/patches-5.4/{800-phy-phy-brcm-usb-select-SOC_BRCMSTB-on-brcmstb-only.patch => 086-v5.13-0001-phy-phy-brcm-usb-select-SOC_BRCMSTB-on-brcmstb-only.patch} (51%) create mode 100644 target/linux/bcm4908/patches-5.4/086-v5.13-0002-dt-bindings-phy-brcm-brcmstb-usb-phy-add-power-domai.patch diff --git a/target/linux/bcm4908/patches-5.4/800-phy-phy-brcm-usb-select-SOC_BRCMSTB-on-brcmstb-only.patch b/target/linux/bcm4908/patches-5.4/086-v5.13-0001-phy-phy-brcm-usb-select-SOC_BRCMSTB-on-brcmstb-only.patch similarity index 51% rename from target/linux/bcm4908/patches-5.4/800-phy-phy-brcm-usb-select-SOC_BRCMSTB-on-brcmstb-only.patch rename to target/linux/bcm4908/patches-5.4/086-v5.13-0001-phy-phy-brcm-usb-select-SOC_BRCMSTB-on-brcmstb-only.patch index 965d60c18e..a341326ef4 100644 --- a/target/linux/bcm4908/patches-5.4/800-phy-phy-brcm-usb-select-SOC_BRCMSTB-on-brcmstb-only.patch +++ b/target/linux/bcm4908/patches-5.4/086-v5.13-0001-phy-phy-brcm-usb-select-SOC_BRCMSTB-on-brcmstb-only.patch @@ -1,14 +1,23 @@ -From 73f63c66bf80bebd46d38a2660078dbe3fe11170 Mon Sep 17 00:00:00 2001 +From 261ab1fd5c5d2d7ff7d5bab3f5db3c69c4bcea58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -Date: Thu, 14 Jan 2021 12:02:28 +0100 +Date: Fri, 5 Mar 2021 16:24:06 +0100 Subject: [PATCH] phy: phy-brcm-usb: select SOC_BRCMSTB on brcmstb only MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -BCM4908 doesn't need brcmstb SoC stuff compiled. +phy-brcm-usb has some conditional init code required on selected brcmstb +devices. Execution of that code depends on family / product detected by +brcmstb soc code. +For ARCH_BCM4908 brcmstb soc code always return 0 values as ids. Don't +bother selecting & compiling that redundant driver. + +Depends-on: 149ae80b1d50 ("soc: bcm: brcmstb: add stubs for getting platform IDs") Signed-off-by: Rafał Miłecki +Acked-by: Florian Fainelli +Link: https://lore.kernel.org/r/20210305152406.2588-1-zajec5@gmail.com +Signed-off-by: Vinod Koul --- drivers/phy/broadcom/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/bcm4908/patches-5.4/086-v5.13-0002-dt-bindings-phy-brcm-brcmstb-usb-phy-add-power-domai.patch b/target/linux/bcm4908/patches-5.4/086-v5.13-0002-dt-bindings-phy-brcm-brcmstb-usb-phy-add-power-domai.patch new file mode 100644 index 0000000000..4db442c0ae --- /dev/null +++ b/target/linux/bcm4908/patches-5.4/086-v5.13-0002-dt-bindings-phy-brcm-brcmstb-usb-phy-add-power-domai.patch @@ -0,0 +1,31 @@ +From d9de0cbd5b1f6b51c92a40937945f26a35d848ff Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Tue, 9 Mar 2021 19:26:16 +0100 +Subject: [PATCH] dt-bindings: phy: brcm,brcmstb-usb-phy: add power-domains +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On BCM4908 USB PHY is managed using power controller so it needs +describing properly using the power-domains. + +Signed-off-by: Rafał Miłecki +Acked-by: Florian Fainelli +Link: https://lore.kernel.org/r/20210309182616.25783-1-zajec5@gmail.com +Signed-off-by: Vinod Koul +--- + .../devicetree/bindings/phy/brcm,brcmstb-usb-phy.yaml | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/Documentation/devicetree/bindings/phy/brcm,brcmstb-usb-phy.yaml ++++ b/Documentation/devicetree/bindings/phy/brcm,brcmstb-usb-phy.yaml +@@ -42,6 +42,9 @@ properties: + - const: usb_mdio + - const: bdc_ec + ++ power-domains: ++ maxItems: 1 ++ + clocks: + minItems: 1 + maxItems: 2 From 662ceebc4ccc5a23fffd06cdda054b1a8e261048 Mon Sep 17 00:00:00 2001 From: Tony Ambardar Date: Mon, 15 Mar 2021 02:48:46 -0700 Subject: [PATCH 26/27] x86/legacy: fix subtarget CPU for kernel 5.10 The 5.10 target config defined a baseline i686 CPU aligned to the 32-bit generic subtarget. However, the legacy subtarget arch wasn't set to the older 586MMX, defaulting instead to the i686. Explicitly set the subtarget arch and refresh the subtarget config, as done already with the old geode subtarget. Fixes: 8391781389 ("x86: support kernel 5.10") Signed-off-by: Tony Ambardar --- target/linux/x86/legacy/config-5.10 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/linux/x86/legacy/config-5.10 b/target/linux/x86/legacy/config-5.10 index 2d9dcab7bc..1accd7c199 100644 --- a/target/linux/x86/legacy/config-5.10 +++ b/target/linux/x86/legacy/config-5.10 @@ -140,6 +140,8 @@ CONFIG_ISO9660_FS=y # CONFIG_JOLIET is not set CONFIG_KCMP=y # CONFIG_LANCE is not set +CONFIG_M586MMX=y +# CONFIG_M686 is not set # CONFIG_MDA_CONSOLE is not set CONFIG_MFD_CORE=y CONFIG_MFD_INTEL_LPSS=y @@ -201,11 +203,14 @@ CONFIG_VMAP_PFN=y # CONFIG_WDT is not set CONFIG_X86_ACPI_CPUFREQ=y # CONFIG_X86_ACPI_CPUFREQ_CPB is not set +CONFIG_X86_ALIGNMENT_16=y # CONFIG_X86_AMD_FREQ_SENSITIVITY is not set # CONFIG_X86_AMD_PLATFORM_DEVICE is not set # CONFIG_X86_E_POWERSAVER is not set +CONFIG_X86_F00F_BUG=y # CONFIG_X86_INTEL_LPSS is not set # CONFIG_X86_LONGHAUL is not set +CONFIG_X86_MINIMUM_CPU_FAMILY=5 # CONFIG_X86_PAE is not set # CONFIG_X86_PCC_CPUFREQ is not set CONFIG_X86_PM_TIMER=y From 680f91d0e5444d58815af03bf41c12592438f9d8 Mon Sep 17 00:00:00 2001 From: Ilya Lipnitskiy Date: Mon, 15 Mar 2021 22:29:55 -0700 Subject: [PATCH 27/27] kernel: backports: mt7530: fix TRGMII mode after reset Backport upstream patch that fixes TRGMII mode now that mt7530 is actually resetting the switch on ramips devices. Patches apply to both Linux 5.4 and 5.10, since TRGMII is broken on both. Fixes: 69551a244292 ("ramips: manage low reset lines") Signed-off-by: Ilya Lipnitskiy --- ...setup-core-clock-even-in-TRGMII-mode.patch | 84 +++++++++++++++++++ ...setup-core-clock-even-in-TRGMII-mode.patch | 84 +++++++++++++++++++ ...-net-dsa-mt7530-Support-EEE-features.patch | 6 +- ...-net-dsa-mt7530-Support-EEE-features.patch | 6 +- 4 files changed, 174 insertions(+), 6 deletions(-) create mode 100644 target/linux/generic/backport-5.10/780-net-dsa-mt7530-setup-core-clock-even-in-TRGMII-mode.patch create mode 100644 target/linux/generic/backport-5.4/780-net-dsa-mt7530-setup-core-clock-even-in-TRGMII-mode.patch diff --git a/target/linux/generic/backport-5.10/780-net-dsa-mt7530-setup-core-clock-even-in-TRGMII-mode.patch b/target/linux/generic/backport-5.10/780-net-dsa-mt7530-setup-core-clock-even-in-TRGMII-mode.patch new file mode 100644 index 0000000000..951ae9c664 --- /dev/null +++ b/target/linux/generic/backport-5.10/780-net-dsa-mt7530-setup-core-clock-even-in-TRGMII-mode.patch @@ -0,0 +1,84 @@ +From c3b8e07909dbe67b0d580416c1a5257643a73be7 Mon Sep 17 00:00:00 2001 +From: Ilya Lipnitskiy +Date: Fri, 12 Mar 2021 00:07:03 -0800 +Subject: [PATCH] net: dsa: mt7530: setup core clock even in TRGMII mode + +A recent change to MIPS ralink reset logic made it so mt7530 actually +resets the switch on platforms such as mt7621 (where bit 2 is the reset +line for the switch). That exposed an issue where the switch would not +function properly in TRGMII mode after a reset. + +Reconfigure core clock in TRGMII mode to fix the issue. + +Tested on Ubiquiti ER-X (MT7621) with TRGMII mode enabled. + +Fixes: 3f9ef7785a9c ("MIPS: ralink: manage low reset lines") +Signed-off-by: Ilya Lipnitskiy +Signed-off-by: David S. Miller +--- + drivers/net/dsa/mt7530.c | 52 +++++++++++++++++++--------------------- + 1 file changed, 25 insertions(+), 27 deletions(-) + +--- a/drivers/net/dsa/mt7530.c ++++ b/drivers/net/dsa/mt7530.c +@@ -435,34 +435,32 @@ mt7530_pad_clk_setup(struct dsa_switch * + TD_DM_DRVP(8) | TD_DM_DRVN(8)); + + /* Setup core clock for MT7530 */ +- if (!trgint) { +- /* Disable MT7530 core clock */ +- core_clear(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); +- +- /* Disable PLL, since phy_device has not yet been created +- * provided for phy_[read,write]_mmd_indirect is called, we +- * provide our own core_write_mmd_indirect to complete this +- * function. +- */ +- core_write_mmd_indirect(priv, +- CORE_GSWPLL_GRP1, +- MDIO_MMD_VEND2, +- 0); +- +- /* Set core clock into 500Mhz */ +- core_write(priv, CORE_GSWPLL_GRP2, +- RG_GSWPLL_POSDIV_500M(1) | +- RG_GSWPLL_FBKDIV_500M(25)); +- +- /* Enable PLL */ +- core_write(priv, CORE_GSWPLL_GRP1, +- RG_GSWPLL_EN_PRE | +- RG_GSWPLL_POSDIV_200M(2) | +- RG_GSWPLL_FBKDIV_200M(32)); +- +- /* Enable MT7530 core clock */ +- core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); +- } ++ /* Disable MT7530 core clock */ ++ core_clear(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); ++ ++ /* Disable PLL, since phy_device has not yet been created ++ * provided for phy_[read,write]_mmd_indirect is called, we ++ * provide our own core_write_mmd_indirect to complete this ++ * function. ++ */ ++ core_write_mmd_indirect(priv, ++ CORE_GSWPLL_GRP1, ++ MDIO_MMD_VEND2, ++ 0); ++ ++ /* Set core clock into 500Mhz */ ++ core_write(priv, CORE_GSWPLL_GRP2, ++ RG_GSWPLL_POSDIV_500M(1) | ++ RG_GSWPLL_FBKDIV_500M(25)); ++ ++ /* Enable PLL */ ++ core_write(priv, CORE_GSWPLL_GRP1, ++ RG_GSWPLL_EN_PRE | ++ RG_GSWPLL_POSDIV_200M(2) | ++ RG_GSWPLL_FBKDIV_200M(32)); ++ ++ /* Enable MT7530 core clock */ ++ core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); + + /* Setup the MT7530 TRGMII Tx Clock */ + core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); diff --git a/target/linux/generic/backport-5.4/780-net-dsa-mt7530-setup-core-clock-even-in-TRGMII-mode.patch b/target/linux/generic/backport-5.4/780-net-dsa-mt7530-setup-core-clock-even-in-TRGMII-mode.patch new file mode 100644 index 0000000000..d48d797294 --- /dev/null +++ b/target/linux/generic/backport-5.4/780-net-dsa-mt7530-setup-core-clock-even-in-TRGMII-mode.patch @@ -0,0 +1,84 @@ +From c3b8e07909dbe67b0d580416c1a5257643a73be7 Mon Sep 17 00:00:00 2001 +From: Ilya Lipnitskiy +Date: Fri, 12 Mar 2021 00:07:03 -0800 +Subject: [PATCH] net: dsa: mt7530: setup core clock even in TRGMII mode + +A recent change to MIPS ralink reset logic made it so mt7530 actually +resets the switch on platforms such as mt7621 (where bit 2 is the reset +line for the switch). That exposed an issue where the switch would not +function properly in TRGMII mode after a reset. + +Reconfigure core clock in TRGMII mode to fix the issue. + +Tested on Ubiquiti ER-X (MT7621) with TRGMII mode enabled. + +Fixes: 3f9ef7785a9c ("MIPS: ralink: manage low reset lines") +Signed-off-by: Ilya Lipnitskiy +Signed-off-by: David S. Miller +--- + drivers/net/dsa/mt7530.c | 52 +++++++++++++++++++--------------------- + 1 file changed, 25 insertions(+), 27 deletions(-) + +--- a/drivers/net/dsa/mt7530.c ++++ b/drivers/net/dsa/mt7530.c +@@ -427,34 +427,32 @@ mt7530_pad_clk_setup(struct dsa_switch * + TD_DM_DRVP(8) | TD_DM_DRVN(8)); + + /* Setup core clock for MT7530 */ +- if (!trgint) { +- /* Disable MT7530 core clock */ +- core_clear(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); +- +- /* Disable PLL, since phy_device has not yet been created +- * provided for phy_[read,write]_mmd_indirect is called, we +- * provide our own core_write_mmd_indirect to complete this +- * function. +- */ +- core_write_mmd_indirect(priv, +- CORE_GSWPLL_GRP1, +- MDIO_MMD_VEND2, +- 0); +- +- /* Set core clock into 500Mhz */ +- core_write(priv, CORE_GSWPLL_GRP2, +- RG_GSWPLL_POSDIV_500M(1) | +- RG_GSWPLL_FBKDIV_500M(25)); +- +- /* Enable PLL */ +- core_write(priv, CORE_GSWPLL_GRP1, +- RG_GSWPLL_EN_PRE | +- RG_GSWPLL_POSDIV_200M(2) | +- RG_GSWPLL_FBKDIV_200M(32)); +- +- /* Enable MT7530 core clock */ +- core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); +- } ++ /* Disable MT7530 core clock */ ++ core_clear(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); ++ ++ /* Disable PLL, since phy_device has not yet been created ++ * provided for phy_[read,write]_mmd_indirect is called, we ++ * provide our own core_write_mmd_indirect to complete this ++ * function. ++ */ ++ core_write_mmd_indirect(priv, ++ CORE_GSWPLL_GRP1, ++ MDIO_MMD_VEND2, ++ 0); ++ ++ /* Set core clock into 500Mhz */ ++ core_write(priv, CORE_GSWPLL_GRP2, ++ RG_GSWPLL_POSDIV_500M(1) | ++ RG_GSWPLL_FBKDIV_500M(25)); ++ ++ /* Enable PLL */ ++ core_write(priv, CORE_GSWPLL_GRP1, ++ RG_GSWPLL_EN_PRE | ++ RG_GSWPLL_POSDIV_200M(2) | ++ RG_GSWPLL_FBKDIV_200M(32)); ++ ++ /* Enable MT7530 core clock */ ++ core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); + + /* Setup the MT7530 TRGMII Tx Clock */ + core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); diff --git a/target/linux/generic/pending-5.10/761-net-dsa-mt7530-Support-EEE-features.patch b/target/linux/generic/pending-5.10/761-net-dsa-mt7530-Support-EEE-features.patch index 3e4413db02..3e654f4b04 100644 --- a/target/linux/generic/pending-5.10/761-net-dsa-mt7530-Support-EEE-features.patch +++ b/target/linux/generic/pending-5.10/761-net-dsa-mt7530-Support-EEE-features.patch @@ -9,7 +9,7 @@ Content-Transfer-Encoding: 8bit Signed-off-by: René van Dorst --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c -@@ -2266,9 +2266,13 @@ static void mt753x_phylink_mac_link_up(s +@@ -2264,9 +2264,13 @@ static void mt753x_phylink_mac_link_up(s switch (speed) { case SPEED_1000: mcr |= PMCR_FORCE_SPEED_1000; @@ -23,7 +23,7 @@ Signed-off-by: René van Dorst break; } if (duplex == DUPLEX_FULL) { -@@ -2509,6 +2513,54 @@ mt753x_phy_write(struct dsa_switch *ds, +@@ -2507,6 +2511,54 @@ mt753x_phy_write(struct dsa_switch *ds, return priv->info->phy_write(ds, port, regnum, val); } @@ -78,7 +78,7 @@ Signed-off-by: René van Dorst static const struct dsa_switch_ops mt7530_switch_ops = { .get_tag_protocol = mtk_get_tag_protocol, .setup = mt753x_setup, -@@ -2537,6 +2589,8 @@ static const struct dsa_switch_ops mt753 +@@ -2535,6 +2587,8 @@ static const struct dsa_switch_ops mt753 .phylink_mac_an_restart = mt753x_phylink_mac_an_restart, .phylink_mac_link_down = mt753x_phylink_mac_link_down, .phylink_mac_link_up = mt753x_phylink_mac_link_up, diff --git a/target/linux/generic/pending-5.4/761-net-dsa-mt7530-Support-EEE-features.patch b/target/linux/generic/pending-5.4/761-net-dsa-mt7530-Support-EEE-features.patch index 1822647ff1..b9ca691f6f 100644 --- a/target/linux/generic/pending-5.4/761-net-dsa-mt7530-Support-EEE-features.patch +++ b/target/linux/generic/pending-5.4/761-net-dsa-mt7530-Support-EEE-features.patch @@ -9,7 +9,7 @@ Content-Transfer-Encoding: 8bit Signed-off-by: René van Dorst --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c -@@ -1419,9 +1419,13 @@ static void mt7530_phylink_mac_config(st +@@ -1417,9 +1417,13 @@ static void mt7530_phylink_mac_config(st switch (state->speed) { case SPEED_1000: mcr_new |= PMCR_FORCE_SPEED_1000; @@ -23,7 +23,7 @@ Signed-off-by: René van Dorst break; } if (state->duplex == DUPLEX_FULL) { -@@ -1557,6 +1561,54 @@ mt7530_phylink_mac_link_state(struct dsa +@@ -1555,6 +1559,54 @@ mt7530_phylink_mac_link_state(struct dsa return 1; } @@ -78,7 +78,7 @@ Signed-off-by: René van Dorst static const struct dsa_switch_ops mt7530_switch_ops = { .get_tag_protocol = mtk_get_tag_protocol, .setup = mt7530_setup, -@@ -1584,6 +1636,8 @@ static const struct dsa_switch_ops mt753 +@@ -1582,6 +1634,8 @@ static const struct dsa_switch_ops mt753 .phylink_mac_config = mt7530_phylink_mac_config, .phylink_mac_link_down = mt7530_phylink_mac_link_down, .phylink_mac_link_up = mt7530_phylink_mac_link_up,