diff options
author | Alyssa Ross <hi@alyssa.is> | 2023-10-22 08:24:10 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-10-22 08:24:10 +0000 |
commit | b5faee77a2dceb31545db209ebee1476acb71198 (patch) | |
tree | 784c2f2bb13052e519604b14cc235dec3b7f55ef /modules/nixos-apple-silicon/apple-silicon-support | |
parent | 2a87a287685e127797106ffe684015a2371729fd (diff) | |
parent | 08cea2d8b6b32b5dd3976d369863d4b22a22f2b4 (diff) | |
download | nixlib-b5faee77a2dceb31545db209ebee1476acb71198.tar nixlib-b5faee77a2dceb31545db209ebee1476acb71198.tar.gz nixlib-b5faee77a2dceb31545db209ebee1476acb71198.tar.bz2 nixlib-b5faee77a2dceb31545db209ebee1476acb71198.tar.lz nixlib-b5faee77a2dceb31545db209ebee1476acb71198.tar.xz nixlib-b5faee77a2dceb31545db209ebee1476acb71198.tar.zst nixlib-b5faee77a2dceb31545db209ebee1476acb71198.zip |
Merge commit '08cea2d8b6b32b5dd3976d369863d4b22a22f2b4'
Diffstat (limited to 'modules/nixos-apple-silicon/apple-silicon-support')
12 files changed, 175 insertions, 150 deletions
diff --git a/modules/nixos-apple-silicon/apple-silicon-support/modules/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/modules/default.nix index 1ae87bb9e4c5..d6f397671c72 100644 --- a/modules/nixos-apple-silicon/apple-silicon-support/modules/default.nix +++ b/modules/nixos-apple-silicon/apple-silicon-support/modules/default.nix @@ -5,6 +5,7 @@ ./mesa ./peripheral-firmware ./boot-m1n1 + ./sound ]; config = diff --git a/modules/nixos-apple-silicon/apple-silicon-support/modules/sound/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/modules/sound/default.nix new file mode 100644 index 000000000000..5713f1aa18ec --- /dev/null +++ b/modules/nixos-apple-silicon/apple-silicon-support/modules/sound/default.nix @@ -0,0 +1,20 @@ +{ config, pkgs, lib, ... }: + +{ + options.hardware.asahi = { + setupAlsaUcm = lib.mkOption { + type = lib.types.bool; + default = config.sound.enable; + description = '' + Enable the Asahi-specific ALSA UCM2 configs in the global environment + so that headphone jack input and output work properly. + ''; + }; + }; + + config = lib.mkIf config.hardware.asahi.setupAlsaUcm { + environment.variables = { + ALSA_CONFIG_UCM2 = "${pkgs.alsa-ucm-conf-asahi}/share/alsa/ucm2"; + }; + }; +} diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/alsa-ucm-conf-asahi/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/alsa-ucm-conf-asahi/default.nix new file mode 100644 index 000000000000..bb34f19f4f9c --- /dev/null +++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/alsa-ucm-conf-asahi/default.nix @@ -0,0 +1,19 @@ +{ lib +, fetchFromGitHub +, alsa-ucm-conf }: + +(alsa-ucm-conf.overrideAttrs (oldAttrs: rec { + version = "3"; + + src_asahi = fetchFromGitHub { + # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/main/alsa-ucm-conf-asahi/PKGBUILD + owner = "AsahiLinux"; + repo = "alsa-ucm-conf-asahi"; + rev = "v${version}"; + hash = "sha256-TCCT0AJx0SdnTzzBaV94zuD2hrPqvk+9vTTuEQmpJjc="; + }; + + postInstall = oldAttrs.postInstall or "" + '' + cp -r ${src_asahi}/ucm2 $out/share/alsa + ''; +})) diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/asahi-fwextract/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/asahi-fwextract/default.nix index 5b0a2b83f66e..556beb571cb8 100755 --- a/modules/nixos-apple-silicon/apple-silicon-support/packages/asahi-fwextract/default.nix +++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/asahi-fwextract/default.nix @@ -8,14 +8,14 @@ python3.pkgs.buildPythonApplication rec { pname = "asahi-fwextract"; - version = "0.5.4"; + version = "0.6.9"; # tracking version: https://github.com/AsahiLinux/PKGBUILDs/blob/main/asahi-fwextract/PKGBUILD src = fetchFromGitHub { owner = "AsahiLinux"; repo = "asahi-installer"; rev = "v${version}"; - hash = "sha256-jUEVuferUrJ+0T+rWUemE1dIUTo9puUDCmp/p5vIFtM="; + hash = "sha256-MkNi4EBgT4gfev/yWqYyw5HZxewj6XTfb8na+eI2iVo="; }; postPatch = '' diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/config b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/config index 3c6df06adbda..37294fd976bc 100644 --- a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/config +++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/config @@ -3,7 +3,7 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 6.4.0 Kernel Configuration +# Linux/arm64 6.5.0 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.1.0" CONFIG_CC_IS_GCC=y @@ -257,6 +257,7 @@ CONFIG_KALLSYMS_BASE_RELATIVE=y CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y CONFIG_KCMP=y CONFIG_RSEQ=y +CONFIG_CACHESTAT_SYSCALL=y # CONFIG_DEBUG_RSEQ is not set # CONFIG_EMBEDDED is not set CONFIG_HAVE_PERF_EVENTS=y @@ -273,8 +274,8 @@ CONFIG_PERF_EVENTS=y CONFIG_SYSTEM_DATA_VERIFICATION=y CONFIG_PROFILING=y CONFIG_RUST=y -CONFIG_RUSTC_VERSION_TEXT="rustc 1.71.1 (eb26296b5 2023-08-03) (Arch Linux rust 1:1.71.1-1)" -CONFIG_BINDGEN_VERSION_TEXT="bindgen 0.66.1" +CONFIG_RUSTC_VERSION_TEXT="rustc 1.72.1 (d5c2e9c34 2023-09-13) (Arch Linux rust 1:1.72.1-1)" +CONFIG_BINDGEN_VERSION_TEXT="bindgen 0.68.1" # end of General setup CONFIG_ARM64=y @@ -326,6 +327,7 @@ CONFIG_ARCH_APPLE=y # CONFIG_ARCH_MESON is not set # CONFIG_ARCH_MVEBU is not set # CONFIG_ARCH_NXP is not set +# CONFIG_ARCH_MA35 is not set # CONFIG_ARCH_NPCM is not set # CONFIG_ARCH_QCOM is not set # CONFIG_ARCH_REALTEK is not set @@ -333,6 +335,7 @@ CONFIG_ARCH_APPLE=y # CONFIG_ARCH_ROCKCHIP is not set # CONFIG_ARCH_SEATTLE is not set # CONFIG_ARCH_INTEL_SOCFPGA is not set +# CONFIG_ARCH_STM32 is not set # CONFIG_ARCH_SYNQUACER is not set # CONFIG_ARCH_TEGRA is not set # CONFIG_ARCH_SPRD is not set @@ -352,6 +355,7 @@ CONFIG_ARCH_APPLE=y # # ARM errata workarounds via the alternatives framework # +# CONFIG_AMPERE_ERRATUM_AC03_CPU_38 is not set # CONFIG_ARM64_ERRATUM_826319 is not set # CONFIG_ARM64_ERRATUM_827319 is not set # CONFIG_ARM64_ERRATUM_824069 is not set @@ -493,7 +497,6 @@ CONFIG_ARM64_EPAN=y CONFIG_ARM64_SVE=y CONFIG_ARM64_SME=y -CONFIG_ARM64_MODULE_PLTS=y # CONFIG_ARM64_PSEUDO_NMI is not set CONFIG_ARM64_MEMORY_MODEL_CONTROL=y CONFIG_RELOCATABLE=y @@ -614,6 +617,8 @@ CONFIG_KVM=y CONFIG_CRASH_CORE=y CONFIG_KEXEC_CORE=y CONFIG_ARCH_HAS_SUBPAGE_FAULTS=y +CONFIG_HOTPLUG_CORE_SYNC=y +CONFIG_HOTPLUG_CORE_SYNC_DEAD=y CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y # CONFIG_STATIC_KEYS_SELFTEST is not set @@ -848,6 +853,7 @@ CONFIG_ZPOOL=y CONFIG_SWAP=y CONFIG_ZSWAP=y # CONFIG_ZSWAP_DEFAULT_ON is not set +# CONFIG_ZSWAP_EXCLUSIVE_LOADS_DEFAULT_ON is not set # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO=y # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set @@ -868,7 +874,7 @@ CONFIG_ZSMALLOC_CHAIN_SIZE=8 # # SLAB allocator options # -# CONFIG_SLAB is not set +# CONFIG_SLAB_DEPRECATED is not set CONFIG_SLUB=y # CONFIG_SLUB_TINY is not set CONFIG_SLAB_MERGE_DEFAULT=y @@ -935,6 +941,8 @@ CONFIG_SECRETMEM=y # CONFIG_USERFAULTFD is not set # CONFIG_LRU_GEN is not set CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y +CONFIG_PER_VMA_LOCK=y +CONFIG_LOCK_MM_AND_FIND_VMA=y # # Data Access Monitoring @@ -2749,6 +2757,11 @@ CONFIG_PPP_MPPE=m CONFIG_PPP_MULTILINK=y CONFIG_PPPOATM=m CONFIG_PPPOE=m +# CONFIG_PPPOE_HASH_BITS_1 is not set +# CONFIG_PPPOE_HASH_BITS_2 is not set +CONFIG_PPPOE_HASH_BITS_4=y +# CONFIG_PPPOE_HASH_BITS_8 is not set +CONFIG_PPPOE_HASH_BITS=4 CONFIG_PPTP=m CONFIG_PPPOL2TP=m CONFIG_PPP_ASYNC=m @@ -3632,6 +3645,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_MAX31722 is not set # CONFIG_SENSORS_MAX31730 is not set # CONFIG_SENSORS_MAX31760 is not set +# CONFIG_MAX31827 is not set # CONFIG_SENSORS_MAX6620 is not set # CONFIG_SENSORS_MAX6621 is not set # CONFIG_SENSORS_MAX6639 is not set @@ -3736,6 +3750,7 @@ CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set # CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set +# CONFIG_THERMAL_DEFAULT_GOV_BANG_BANG is not set CONFIG_THERMAL_GOV_FAIR_SHARE=y CONFIG_THERMAL_GOV_STEP_WISE=y CONFIG_THERMAL_GOV_BANG_BANG=y @@ -3765,6 +3780,7 @@ CONFIG_WATCHDOG_OPEN_TIMEOUT=0 CONFIG_SOFT_WATCHDOG=m # CONFIG_GPIO_WATCHDOG is not set # CONFIG_XILINX_WATCHDOG is not set +# CONFIG_XILINX_WINDOW_WATCHDOG is not set # CONFIG_ZIIRAVE_WATCHDOG is not set # CONFIG_ARM_SP805_WATCHDOG is not set # CONFIG_ARM_SBSA_WATCHDOG is not set @@ -3810,7 +3826,7 @@ CONFIG_MFD_APPLE_SPMI_PMU=m # CONFIG_MFD_BD9571MWV is not set # CONFIG_MFD_AXP20X_I2C is not set # CONFIG_MFD_MADERA is not set -# CONFIG_MFD_MAX597X is not set +# CONFIG_MFD_MAX5970 is not set # CONFIG_PMIC_DA903X is not set # CONFIG_MFD_DA9052_SPI is not set # CONFIG_MFD_DA9052_I2C is not set @@ -3834,6 +3850,7 @@ CONFIG_MFD_APPLE_SPMI_PMU=m # CONFIG_MFD_88PM805 is not set # CONFIG_MFD_88PM860X is not set # CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77541 is not set # CONFIG_MFD_MAX77620 is not set # CONFIG_MFD_MAX77650 is not set # CONFIG_MFD_MAX77686 is not set @@ -3861,7 +3878,8 @@ CONFIG_MFD_APPLE_SPMI_PMU=m # CONFIG_MFD_RT5033 is not set # CONFIG_MFD_RT5120 is not set # CONFIG_MFD_RC5T583 is not set -# CONFIG_MFD_RK808 is not set +# CONFIG_MFD_RK8XX_I2C is not set +# CONFIG_MFD_RK8XX_SPI is not set # CONFIG_MFD_RN5T618 is not set # CONFIG_MFD_SEC_CORE is not set # CONFIG_MFD_SI476X_CORE is not set @@ -3889,6 +3907,8 @@ CONFIG_MFD_SYSCON=y # CONFIG_MFD_TPS65910 is not set # CONFIG_MFD_TPS65912_I2C is not set # CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_TPS6594_I2C is not set +# CONFIG_MFD_TPS6594_SPI is not set # CONFIG_TWL4030_CORE is not set # CONFIG_TWL6040_CORE is not set # CONFIG_MFD_WL1273_CORE is not set @@ -3964,6 +3984,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y # CONFIG_REGULATOR_PWM is not set # CONFIG_REGULATOR_QCOM_SPMI is not set # CONFIG_REGULATOR_QCOM_USB_VBUS is not set +# CONFIG_REGULATOR_RAA215300 is not set # CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set # CONFIG_REGULATOR_RT4801 is not set # CONFIG_REGULATOR_RT4803 is not set @@ -3983,6 +4004,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y # CONFIG_REGULATOR_TPS51632 is not set # CONFIG_REGULATOR_TPS62360 is not set # CONFIG_REGULATOR_TPS6286X is not set +# CONFIG_REGULATOR_TPS6287X is not set # CONFIG_REGULATOR_TPS65023 is not set # CONFIG_REGULATOR_TPS6507X is not set # CONFIG_REGULATOR_TPS65132 is not set @@ -4169,7 +4191,6 @@ CONFIG_VIDEO_PVRUSB2=m CONFIG_VIDEO_PVRUSB2_SYSFS=y CONFIG_VIDEO_PVRUSB2_DVB=y # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set -CONFIG_VIDEO_STK1160_COMMON=m CONFIG_VIDEO_STK1160=m # @@ -4293,6 +4314,11 @@ CONFIG_V4L_MEM2MEM_DRIVERS=y # # +# Apple media platform drivers +# +CONFIG_VIDEO_APPLE_ISP=m + +# # Aspeed media platform drivers # @@ -4440,6 +4466,7 @@ CONFIG_VIDEO_MT9V011=m # CONFIG_VIDEO_MT9V032 is not set # CONFIG_VIDEO_MT9V111 is not set # CONFIG_VIDEO_OG01A1B is not set +# CONFIG_VIDEO_OV01A10 is not set # CONFIG_VIDEO_OV02A10 is not set # CONFIG_VIDEO_OV08D10 is not set # CONFIG_VIDEO_OV08X40 is not set @@ -4900,6 +4927,7 @@ CONFIG_DRM_PANEL_SIMPLE=m # CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20 is not set # CONFIG_DRM_PANEL_SAMSUNG_DB7430 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6D27A1 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6D7AA0 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set @@ -4995,15 +5023,14 @@ CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y CONFIG_FB_NOTIFY=y CONFIG_FB=y CONFIG_FIRMWARE_EDID=y -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_SYS_FILLRECT=y CONFIG_FB_SYS_COPYAREA=y CONFIG_FB_SYS_IMAGEBLIT=y # CONFIG_FB_FOREIGN_ENDIAN is not set CONFIG_FB_SYS_FOPS=y CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_SYS_HELPERS=y +CONFIG_FB_SYS_HELPERS_DEFERRED=y CONFIG_FB_MODE_HELPERS=y CONFIG_FB_TILEBLITTING=y @@ -5141,10 +5168,12 @@ CONFIG_SND_SEQ_HRTIMER_DEFAULT=y CONFIG_SND_SEQ_MIDI_EVENT=m CONFIG_SND_SEQ_MIDI=m CONFIG_SND_SEQ_VIRMIDI=m +# CONFIG_SND_SEQ_UMP is not set CONFIG_SND_MPU401_UART=m CONFIG_SND_DRIVERS=y CONFIG_SND_DUMMY=m CONFIG_SND_ALOOP=m +# CONFIG_SND_PCMTEST is not set CONFIG_SND_VIRMIDI=m CONFIG_SND_MTPAV=m CONFIG_SND_SERIAL_U16550=m @@ -5161,6 +5190,7 @@ CONFIG_SND_HDA_PREALLOC_SIZE=4096 # CONFIG_SND_SPI is not set CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=m +# CONFIG_SND_USB_AUDIO_MIDI_V2 is not set CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y CONFIG_SND_USB_UA101=m CONFIG_SND_USB_CAIAQ=m @@ -5206,6 +5236,7 @@ CONFIG_SND_SOC_FSL_UTILS=m CONFIG_SND_SOC_IMX_AUDMUX=m # end of SoC Audio for Freescale CPUs +# CONFIG_SND_SOC_CHV3_I2S is not set # CONFIG_SND_I2S_HI6210_I2S is not set # CONFIG_SND_SOC_IMG is not set # CONFIG_SND_SOC_MTK_BTCVSD is not set @@ -5249,6 +5280,7 @@ CONFIG_SND_SOC_WM_ADSP=m # CONFIG_SND_SOC_AW88395 is not set # CONFIG_SND_SOC_BD28623 is not set CONFIG_SND_SOC_BT_SCO=m +# CONFIG_SND_SOC_CHV3_CODEC is not set CONFIG_SND_SOC_CS35L32=m CONFIG_SND_SOC_CS35L33=m CONFIG_SND_SOC_CS35L34=m @@ -5306,6 +5338,7 @@ CONFIG_SND_SOC_CS53L30=m # CONFIG_SND_SOC_MAX98927 is not set # CONFIG_SND_SOC_MAX98520 is not set # CONFIG_SND_SOC_MAX98373_I2C is not set +# CONFIG_SND_SOC_MAX98388 is not set # CONFIG_SND_SOC_MAX98390 is not set # CONFIG_SND_SOC_MAX98396 is not set # CONFIG_SND_SOC_MAX9860 is not set @@ -5341,6 +5374,7 @@ CONFIG_SND_SOC_CS53L30=m # CONFIG_SND_SOC_SSM2518 is not set # CONFIG_SND_SOC_SSM2602_SPI is not set # CONFIG_SND_SOC_SSM2602_I2C is not set +# CONFIG_SND_SOC_SSM3515 is not set # CONFIG_SND_SOC_SSM4567 is not set # CONFIG_SND_SOC_STA32X is not set # CONFIG_SND_SOC_STA350 is not set @@ -5350,6 +5384,7 @@ CONFIG_SND_SOC_TAS2562=m CONFIG_SND_SOC_TAS2764=m CONFIG_SND_SOC_TAS2770=m CONFIG_SND_SOC_TAS2780=m +# CONFIG_SND_SOC_TAS2781_I2C is not set CONFIG_SND_SOC_TAS5086=m CONFIG_SND_SOC_TAS571X=m CONFIG_SND_SOC_TAS5720=m @@ -5505,6 +5540,7 @@ CONFIG_HID_NINTENDO=m CONFIG_NINTENDO_FF=y CONFIG_HID_NTI=m CONFIG_HID_NTRIG=m +# CONFIG_HID_NVIDIA_SHIELD is not set CONFIG_HID_ORTEK=m CONFIG_HID_PANTHERLORD=m CONFIG_PANTHERLORD_FF=y @@ -5945,6 +5981,7 @@ CONFIG_TYPEC_TPS6598X=m # CONFIG_TYPEC_MUX_FSA4480 is not set # CONFIG_TYPEC_MUX_GPIO_SBU is not set # CONFIG_TYPEC_MUX_PI3USB30532 is not set +# CONFIG_TYPEC_MUX_NB7VPQ904M is not set # end of USB Type-C Multiplexer/DeMultiplexer Switch support # @@ -5998,6 +6035,7 @@ CONFIG_LEDS_CLASS_FLASH=m # LED drivers # # CONFIG_LEDS_AN30259A is not set +# CONFIG_LEDS_AW200XX is not set # CONFIG_LEDS_AW2013 is not set # CONFIG_LEDS_BCM6328 is not set # CONFIG_LEDS_BCM6358 is not set @@ -6036,7 +6074,7 @@ CONFIG_LEDS_SYSCON=y # CONFIG_LEDS_MLXREG is not set CONFIG_LEDS_USER=m # CONFIG_LEDS_SPI_BYTE is not set -# CONFIG_LEDS_TI_LMU_COMMON is not set +# CONFIG_LEDS_LM3697 is not set # # Flash and Torch LED drivers @@ -6270,14 +6308,31 @@ CONFIG_VFIO_CONTAINER=y CONFIG_VFIO_IOMMU_TYPE1=m # CONFIG_VFIO_NOIOMMU is not set CONFIG_VFIO_VIRQFD=y + +# +# VFIO support for PCI devices +# CONFIG_VFIO_PCI_CORE=m CONFIG_VFIO_PCI_MMAP=y CONFIG_VFIO_PCI_INTX=y CONFIG_VFIO_PCI=m +# end of VFIO support for PCI devices + +# +# VFIO support for platform devices +# +CONFIG_VFIO_PLATFORM_BASE=m CONFIG_VFIO_PLATFORM=m # CONFIG_VFIO_AMBA is not set + +# +# VFIO platform reset drivers +# # CONFIG_VFIO_PLATFORM_CALXEDAXGMAC_RESET is not set # CONFIG_VFIO_PLATFORM_AMDXGBE_RESET is not set +# end of VFIO platform reset drivers +# end of VFIO support for platform devices + # CONFIG_VIRT_DRIVERS is not set CONFIG_VIRTIO_ANCHOR=y CONFIG_VIRTIO=y @@ -6604,6 +6659,7 @@ CONFIG_ARM_PMUV3=y CONFIG_APPLE_M1_CPU_PMU=y # CONFIG_HISI_PCIE_PMU is not set # CONFIG_HNS3_PMU is not set +# CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU is not set # end of Performance monitor support CONFIG_RAS=y @@ -6740,7 +6796,6 @@ CONFIG_QUOTA_TREE=y # CONFIG_QFMT_V1 is not set CONFIG_QFMT_V2=y CONFIG_QUOTACTL=y -CONFIG_AUTOFS4_FS=y CONFIG_AUTOFS_FS=y CONFIG_FUSE_FS=m CONFIG_CUSE=m @@ -7026,7 +7081,6 @@ CONFIG_SECURITYFS=y CONFIG_SECURITY_NETWORK=y CONFIG_SECURITY_NETWORK_XFRM=y CONFIG_SECURITY_PATH=y -CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y # CONFIG_HARDENED_USERCOPY is not set # CONFIG_FORTIFY_SOURCE is not set # CONFIG_STATIC_USERMODEHELPER is not set @@ -7089,6 +7143,7 @@ CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI2=y CONFIG_CRYPTO_AEAD=y CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_SIG2=y CONFIG_CRYPTO_SKCIPHER=y CONFIG_CRYPTO_SKCIPHER2=y CONFIG_CRYPTO_HASH=y @@ -7182,6 +7237,7 @@ CONFIG_CRYPTO_AEGIS128=m CONFIG_CRYPTO_CHACHA20POLY1305=m CONFIG_CRYPTO_CCM=m CONFIG_CRYPTO_GCM=y +CONFIG_CRYPTO_GENIV=y CONFIG_CRYPTO_SEQIV=y CONFIG_CRYPTO_ECHAINIV=m CONFIG_CRYPTO_ESSIV=m @@ -7242,6 +7298,7 @@ CONFIG_CRYPTO_DRBG_HASH=y CONFIG_CRYPTO_DRBG_CTR=y CONFIG_CRYPTO_DRBG=y CONFIG_CRYPTO_JITTERENTROPY=y +# CONFIG_CRYPTO_JITTERENTROPY_TESTINTERFACE is not set CONFIG_CRYPTO_KDF800108_CTR=y # end of Random number generation @@ -7438,6 +7495,7 @@ CONFIG_HAS_IOPORT=y CONFIG_HAS_IOPORT_MAP=y CONFIG_HAS_DMA=y CONFIG_DMA_OPS=y +CONFIG_NEED_SG_DMA_FLAGS=y CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y @@ -7448,6 +7506,7 @@ CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y CONFIG_SWIOTLB=y +CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y # CONFIG_DMA_RESTRICTED_POOL is not set CONFIG_DMA_NONCOHERENT_MMAP=y CONFIG_DMA_COHERENT_POOL=y @@ -7593,6 +7652,7 @@ CONFIG_PTDUMP_CORE=y # CONFIG_PTDUMP_DEBUGFS is not set CONFIG_HAVE_DEBUG_KMEMLEAK=y # CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_PER_VMA_LOCK_STATS is not set # CONFIG_DEBUG_OBJECTS is not set # CONFIG_SHRINKER_DEBUG is not set # CONFIG_DEBUG_STACK_USAGE is not set @@ -7622,10 +7682,13 @@ CONFIG_PANIC_TIMEOUT=0 CONFIG_LOCKUP_DETECTOR=y CONFIG_SOFTLOCKUP_DETECTOR=y # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y +# CONFIG_HARDLOCKUP_DETECTOR is not set CONFIG_DETECT_HUNG_TASK=y CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set # CONFIG_WQ_WATCHDOG is not set +# CONFIG_WQ_CPU_INTENSIVE_REPORT is not set # CONFIG_TEST_LOCKUP is not set # end of Debug Oops, Lockups and Hangs @@ -7698,6 +7761,7 @@ CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0 # CONFIG_DEBUG_CGROUP_REF is not set CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y @@ -7706,6 +7770,8 @@ CONFIG_HAVE_C_RECORDMCOUNT=y CONFIG_TRACING_SUPPORT=y # CONFIG_FTRACE is not set # CONFIG_SAMPLES is not set +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y CONFIG_STRICT_DEVMEM=y # CONFIG_IO_STRICT_DEVMEM is not set @@ -7740,3 +7806,12 @@ CONFIG_RUST_OVERFLOW_CHECKS=y # CONFIG_RUST_BUILD_ASSERT_ALLOW is not set # end of Rust hacking # end of Kernel hacking + +# NixOS-specific config options +# needed by systemd +CONFIG_AUTOFS4_FS=y +# needed for systemd initrd and TPM features +CONFIG_ACPI=y +CONFIG_TCG_TPM=y +CONFIG_TCG_TIS=m +CONFIG_TCG_CRB=m diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default.nix index abcd9963d02f..4696a6f1af69 100644 --- a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default.nix +++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/default.nix @@ -11,24 +11,41 @@ }: let - # parse <OPT> (y|m|n) style configuration as found in a patch's extraConfig + i = builtins.elemAt; + + # parse <OPT> [ymn]|foo style configuration as found in a patch's extraConfig # into a list of k, v tuples parseExtraConfig = config: let lines = builtins.filter (s: s != "") (lib.strings.splitString "\n" config); - parseLine = line: - let t = lib.strings.splitString " " line; - in assert (builtins.length t == 2); t; + parseLine = line: let + t = lib.strings.splitString " " line; + join = l: builtins.foldl' (a: b: "${a} ${b}") + (builtins.head l) (builtins.tail l); + v = if (builtins.length t) > 2 then join (builtins.tail t) else (i t 1); + in [ "CONFIG_${i t 0}" v ]; in map parseLine lines; - # parse CONFIG_<OPT>=(y|m|n) style configuration as found in a config file + # parse <OPT>=lib.kernel.(yes|module|no)|lib.kernel.freeform "foo" + # style configuration as found in a patch's extraStructuredConfig into + # a list of k, v tuples + parseExtraStructuredConfig = config: lib.attrsets.mapAttrsToList + (k: v: [ "CONFIG_${k}" (v.tristate or v.freeform) ] ) config; + + parsePatchConfig = { extraConfig ? "", extraStructuredConfig ? {}, ... }: + (parseExtraConfig extraConfig) ++ + (parseExtraStructuredConfig extraStructuredConfig); + + # parse CONFIG_<OPT>=[ymn]|"foo" style configuration as found in a config file # into a list of k, v tuples parseConfig = config: let - parseLine = builtins.match "(CONFIG_[[:upper:][:digit:]_]+)=(y|m|n)"; + parseLine = builtins.match ''(CONFIG_[[:upper:][:digit:]_]+)=(([ymn])|"([^"]*)")''; + # get either the [ymn] option or the "foo" option; whichever matched + t = l: let v = (i l 2); in [ (i l 0) (if v != null then v else (i l 3)) ]; lines = lib.strings.splitString "\n" config; - in builtins.filter (t: t != null) (map parseLine lines); + in map t (builtins.filter (l: l != null) (map parseLine lines)); origConfigfile = ./config; @@ -38,10 +55,13 @@ let origConfigText = builtins.readFile origConfigfile; # extraConfig from all patches in order - extraConfig = lib.fold (patch: ex: ex ++ - (parseExtraConfig (patch.extraConfig or ""))) [] _kernelPatches; + extraConfig = + lib.fold (patch: ex: ex ++ (parsePatchConfig patch)) [] _kernelPatches; # config file text for above - extraConfigText = (map (t: "CONFIG_${builtins.elemAt t 0}=${builtins.elemAt t 1}") extraConfig); + extraConfigText = let + text = k: v: if (v == "y") || (v == "m") || (v == "n") + then "${k}=${v}" else ''${k}="${v}"''; + in (map (t: text (i t 0) (i t 1)) extraConfig); # final config as a text file path configfile = if extraConfig == [] then origConfigfile else @@ -53,9 +73,9 @@ let ''; # final config as an attrset config = let - makePair = t: lib.nameValuePair (builtins.elemAt t 0) (builtins.elemAt t 1); + makePair = t: lib.nameValuePair (i t 0) (i t 1); configList = (parseConfig origConfigText) ++ extraConfig; - in builtins.listToAttrs (map makePair configList); + in builtins.listToAttrs (map makePair (lib.lists.reverseList configList)); # used to (ostensibly) keep compatibility for those running stable versions of nixos rustOlder = version: withRust && (lib.versionOlder rustc.version version); @@ -68,15 +88,16 @@ let (linuxKernel.manualConfig rec { inherit stdenv lib; - version = "6.4.0-asahi"; + version = "6.5.0-asahi"; modDirVersion = version; + extraMeta.branch = "6.5"; src = fetchFromGitHub { # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/main/linux-asahi/PKGBUILD owner = "AsahiLinux"; repo = "linux"; - rev = "asahi-6.4-10"; - hash = "sha256-PUuQcqcQy7digMb0VwO5AVpAC8cA2WsTR6xDhGtL/pY="; + rev = "asahi-6.5-15"; + hash = "sha256-Rruk/Nrw425XerZjgDJ4PJ3c63CCycch1qz7vFxHPCE="; }; kernelPatches = [ @@ -98,23 +119,9 @@ let { name = "default-pagesize-16k"; patch = ./default-pagesize-16k.patch; } - ] ++ lib.optionals (bindgenAtLeast "0.63.0") [ - { name = "rust-bindgen"; - patch = ./rust-bindgen-0.63-fix.patch; - } - ] ++ lib.optionals (bindgenAtLeast "0.65.0") [ - { name = "rust-bindgen"; - patch = ./rust-bindgen-0.65-fix.patch; - } - ] ++ lib.optionals (rustAtLeast "1.72.0") [ - { name = "rustc-1.72.0"; - patch = ./rustc-1.72.0-fix.patch; - } ] ++ _kernelPatches; inherit configfile config; - - extraMeta.branch = "6.4"; } // (args.argsOverride or {})).overrideAttrs (old: if withRust then { nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ rust-bindgen diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rust-bindgen-0.63-fix.patch b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rust-bindgen-0.63-fix.patch deleted file mode 100644 index 4b5e9a225d18..000000000000 --- a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rust-bindgen-0.63-fix.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/rust/Makefile b/rust/Makefile -index bfe16bcd9..2116b1b7e 100644 ---- a/rust/Makefile -+++ b/rust/Makefile -@@ -333,8 +333,8 @@ $(obj)/bindings/bindings_generated.rs: $(src)/bindings/bindings_helper.h \ - # given it is `libclang`; but for consistency, future Clang changes and/or - # a potential future GCC backend for `bindgen`, we disable it too. - $(obj)/bindings/bindings_helpers_generated.rs: private bindgen_target_flags = \ -- --blacklist-type '.*' --whitelist-var '' \ -- --whitelist-function 'rust_helper_.*' -+ --blocklist-type '.*' --allowlist-var '' \ -+ --allowlist-function 'rust_helper_.*' - $(obj)/bindings/bindings_helpers_generated.rs: private bindgen_target_cflags = \ - -I$(objtree)/$(obj) -Wno-missing-prototypes -Wno-missing-declarations - $(obj)/bindings/bindings_helpers_generated.rs: private bindgen_target_extra = ; \ diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rust-bindgen-0.65-fix.patch b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rust-bindgen-0.65-fix.patch deleted file mode 100644 index 75f10cc12156..000000000000 --- a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rust-bindgen-0.65-fix.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/rust/Makefile b/rust/Makefile -index aee0701..bc4bfbb 100644 ---- a/rust/Makefile -+++ b/rust/Makefile -@@ -288,7 +288,7 @@ quiet_cmd_bindgen = BINDGEN $@ - $(BINDGEN) $< $(bindgen_target_flags) \ - --use-core --with-derive-default --ctypes-prefix core::ffi --no-layout-tests \ - --no-debug '.*' \ -- --size_t-is-usize -o $@ -- $(bindgen_c_flags_final) -DMODULE \ -+ -o $@ -- $(bindgen_c_flags_final) -DMODULE \ - $(bindgen_target_cflags) $(bindgen_target_extra) - - $(obj)/bindings/bindings_generated.rs: private bindgen_target_flags = \ - diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rustc-1.72.0-fix.patch b/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rustc-1.72.0-fix.patch deleted file mode 100644 index faba7ae9f11f..000000000000 --- a/modules/nixos-apple-silicon/apple-silicon-support/packages/linux-asahi/rustc-1.72.0-fix.patch +++ /dev/null @@ -1,55 +0,0 @@ -diff --git a/rust/alloc/alloc.rs b/rust/alloc/alloc.rs -index 74bf72412ad9..fe48094ac1f6 100644 ---- a/rust/alloc/alloc.rs -+++ b/rust/alloc/alloc.rs -@@ -329,14 +329,15 @@ unsafe fn exchange_malloc(size: usize, align: usize) -> *mut u8 { - } - } - --#[cfg_attr(not(test), lang = "box_free")] -+#[cfg(all(bootstrap, not(test)))] -+#[lang = "box_free"] - #[inline] - // This signature has to be the same as `Box`, otherwise an ICE will happen. - // When an additional parameter to `Box` is added (like `A: Allocator`), this has to be added here as - // well. - // For example if `Box` is changed to `struct Box<T: ?Sized, A: Allocator>(Unique<T>, A)`, - // this function has to be changed to `fn box_free<T: ?Sized, A: Allocator>(Unique<T>, A)` as well. --pub(crate) unsafe fn box_free<T: ?Sized, A: Allocator>( -+unsafe fn box_free<T: ?Sized, A: Allocator>( - ptr: Unique<T>, - alloc: A, - ) { -diff --git a/rust/alloc/boxed.rs b/rust/alloc/boxed.rs -index 0c043c59c1a4..64da5bd482d1 100644 ---- a/rust/alloc/boxed.rs -+++ b/rust/alloc/boxed.rs -@@ -1218,7 +1218,14 @@ pub fn into_pin(boxed: Self) -> Pin<Self> - #[stable(feature = "rust1", since = "1.0.0")] - unsafe impl<#[may_dangle] T: ?Sized, A: Allocator> Drop for Box<T, A> { - fn drop(&mut self) { -- // FIXME: Do nothing, drop is currently performed by compiler. -+ // the T in the Box is dropped by the compiler before the destructor is run -+ -+ let ptr = self.0; -+ -+ unsafe { -+ let layout = Layout::for_value_raw(ptr.as_ptr()); -+ self.1.deallocate(From::from(ptr.cast()), layout) -+ } - } - } - -diff --git a/rust/kernel/sync/arc.rs b/rust/kernel/sync/arc.rs -index 3bb73b614fd1..a7521cec9e16 100644 ---- a/rust/kernel/sync/arc.rs -+++ b/rust/kernel/sync/arc.rs -@@ -350,7 +350,7 @@ fn drop(&mut self) { - - // SAFETY: The pointer was initialised from the result of `Box::leak`, and - // a ManuallyDrop<T> is compatible. We already dropped the contents above. -- unsafe { Box::from_raw(self.ptr.as_ptr() as *mut ManuallyDrop<ArcInner<T>>) }; -+ unsafe { drop(Box::from_raw(self.ptr.as_ptr() as *mut ManuallyDrop<ArcInner<T>>)) }; - } - } - } diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/m1n1/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/m1n1/default.nix index abd6e1f1d77d..7955f47ab435 100644 --- a/modules/nixos-apple-silicon/apple-silicon-support/packages/m1n1/default.nix +++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/m1n1/default.nix @@ -25,14 +25,14 @@ let }); in stdenv.mkDerivation rec { pname = "m1n1"; - version = "1.3.6"; + version = "1.4.2"; src = fetchFromGitHub { # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/main/m1n1/PKGBUILD owner = "AsahiLinux"; repo = "m1n1"; rev = "v${version}"; - hash = "sha256-OlNI7SKWiG7+I5TJhdQuPjCigkYr5C70U/7Go3aEAxc="; + hash = "sha256-zPHLlhXUIX6MV2pnDkuSg4Pz8gB4YOZiaa8MuLasgPY="; fetchSubmodules = true; }; @@ -62,6 +62,7 @@ in stdenv.mkDerivation rec { rm bootlogo_128.png convert bootlogo_256.png -resize 128x128 bootlogo_128.png + patchShebangs --build ./makelogo.sh ./makelogo.sh popd &>/dev/null ''; diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/overlay.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/overlay.nix index 635a41db7bd2..982d9081fcab 100644 --- a/modules/nixos-apple-silicon/apple-silicon-support/packages/overlay.nix +++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/overlay.nix @@ -4,5 +4,5 @@ final: prev: { uboot-asahi = final.callPackage ./uboot-asahi { }; asahi-fwextract = final.callPackage ./asahi-fwextract { }; mesa-asahi-edge = final.callPackage ./mesa-asahi-edge { inherit (prev) mesa; }; - # TODO: package alsa-ucm-conf-asahi for headphone jack support + alsa-ucm-conf-asahi = final.callPackage ./alsa-ucm-conf-asahi { inherit (prev) alsa-ucm-conf; }; } diff --git a/modules/nixos-apple-silicon/apple-silicon-support/packages/uboot-asahi/default.nix b/modules/nixos-apple-silicon/apple-silicon-support/packages/uboot-asahi/default.nix index bc84cafbd3f7..908aff32b1ae 100644 --- a/modules/nixos-apple-silicon/apple-silicon-support/packages/uboot-asahi/default.nix +++ b/modules/nixos-apple-silicon/apple-silicon-support/packages/uboot-asahi/default.nix @@ -1,6 +1,5 @@ { lib , fetchFromGitHub -, fetchpatch , buildUBoot , m1n1 }: @@ -10,10 +9,10 @@ # tracking: https://github.com/AsahiLinux/PKGBUILDs/blob/main/uboot-asahi/PKGBUILD owner = "AsahiLinux"; repo = "u-boot"; - rev = "asahi-v2023.04-1"; - hash = "sha256-vGuZrT+siynhXWnvvR3b3v2f/imF5qapyO0EgMc+4ZQ="; + rev = "asahi-v2023.07.02-3"; + hash = "sha256-a7iNawyq7K6jhiVzu5x8mllF3olTP+jQRXGGSsoKINI="; }; - version = "2023.04.asahi2-1"; + version = "2023.07.02.asahi3-1"; defconfig = "apple_m1_defconfig"; extraMeta.platforms = [ "aarch64-linux" ]; @@ -26,24 +25,11 @@ CONFIG_VIDEO_FONT_4X6=n CONFIG_VIDEO_FONT_8X16=n CONFIG_VIDEO_FONT_SUN12X22=n - CONFIG_VIDEO_FONT_TER12X24=n - CONFIG_VIDEO_FONT_TER16X32=y + CONFIG_VIDEO_FONT_16X32=y ''; }).overrideAttrs (o: { # nixos's downstream patches are not applicable - # however, we add in bigger u-boot fonts because the mac laptop screens are high-res patches = [ - (fetchpatch { - url = "https://git.alpinelinux.org/aports/plain/testing/u-boot-asahi/apritzel-first5-video.patch?id=990110f35b50b74bdb4e902d94fa15b07a8eac9e"; - sha256 = "sha256-QPvJYxIcQBHbwsj7l96qGUZSipk1sB3ZyniD1Io18dY="; - revert = false; - }) - - (fetchpatch { - url = "https://git.alpinelinux.org/aports/plain/testing/u-boot-asahi/mps-u-boot-ter12x24.patch?id=990110f35b50b74bdb4e902d94fa15b07a8eac9e"; - sha256 = "sha256-wrQpIYiuNRi/p2p290KCGPmuRxFEOPlbICoFvd+E8p0="; - revert = false; - }) ]; # flag somehow breaks DTC compilation so we remove it |