diff --git a/config b/config index e9fbabdda822..75c16dbed850 100644 --- a/config +++ b/config @@ -1,10 +1,10 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 6.2.12 Kernel Configuration +# Linux/x86 6.3.1 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="gcc (Clear Linux OS for Intel Architecture) 12.2.1 20230419 releases/gcc-12.2.0-750-g7b30f13b90" +CONFIG_CC_VERSION_TEXT="gcc (Clear Linux OS for Intel Architecture) 13.1.1 20230427 releases/gcc-13.1.0-16-g6778b885e8" CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=120201 +CONFIG_GCC_VERSION=130101 CONFIG_CLANG_VERSION=0 CONFIG_AS_IS_GNU=y CONFIG_AS_VERSION=24000 @@ -191,7 +191,6 @@ CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_CC_HAS_INT128=y CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" CONFIG_GCC11_NO_ARRAY_BOUNDS=y -CONFIG_GCC12_NO_ARRAY_BOUNDS=y CONFIG_CC_NO_ARRAY_BOUNDS=y CONFIG_ARCH_SUPPORTS_INT128=y CONFIG_NUMA_BALANCING=y @@ -207,6 +206,7 @@ CONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y # CONFIG_RT_GROUP_SCHED is not set +CONFIG_SCHED_MM_CID=y CONFIG_CGROUP_PIDS=y # CONFIG_CGROUP_RDMA is not set CONFIG_CGROUP_FREEZER=y @@ -241,6 +241,7 @@ CONFIG_RD_LZO=y CONFIG_RD_LZ4=y CONFIG_RD_ZSTD=y CONFIG_BOOT_CONFIG=y +# CONFIG_BOOT_CONFIG_FORCE is not set # CONFIG_BOOT_CONFIG_EMBED is not set CONFIG_INITRAMFS_PRESERVE_MTIME=y CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y @@ -703,6 +704,7 @@ CONFIG_HAVE_KVM_IRQ_BYPASS=y CONFIG_HAVE_KVM_NO_POLL=y CONFIG_KVM_XFER_TO_GUEST_WORK=y CONFIG_HAVE_KVM_PM_NOTIFIER=y +CONFIG_KVM_GENERIC_HARDWARE_ENABLING=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=y CONFIG_KVM_WERROR=y @@ -717,6 +719,7 @@ CONFIG_AS_AVX512=y CONFIG_AS_SHA1_NI=y CONFIG_AS_SHA256_NI=y CONFIG_AS_TPAUSE=y +CONFIG_AS_GFNI=y # # General architecture-dependent options @@ -939,7 +942,6 @@ CONFIG_EFI_PARTITION=y # CONFIG_CMDLINE_PARTITION is not set # end of Partition Types -CONFIG_BLOCK_COMPAT=y CONFIG_BLK_MQ_PCI=y CONFIG_BLK_MQ_VIRTIO=y CONFIG_BLK_MQ_RDMA=y @@ -1012,6 +1014,7 @@ CONFIG_ZBUD=y CONFIG_Z3FOLD=y CONFIG_ZSMALLOC=m # CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSMALLOC_CHAIN_SIZE=8 # # SLAB allocator options @@ -1262,6 +1265,7 @@ CONFIG_NF_CONNTRACK_EVENTS=y # CONFIG_NF_CONNTRACK_TIMEOUT is not set # CONFIG_NF_CONNTRACK_TIMESTAMP is not set CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CONNTRACK_OVS=y CONFIG_NF_CT_PROTO_DCCP=y CONFIG_NF_CT_PROTO_GRE=y CONFIG_NF_CT_PROTO_SCTP=y @@ -1508,7 +1512,6 @@ CONFIG_IP_NF_TARGET_MASQUERADE=m CONFIG_IP_NF_TARGET_NETMAP=m CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IP_NF_TARGET_ECN=m CONFIG_IP_NF_TARGET_TTL=m CONFIG_IP_NF_RAW=m @@ -1667,7 +1670,6 @@ CONFIG_NET_SCHED=y # # Queueing/Scheduling # -CONFIG_NET_SCH_CBQ=y CONFIG_NET_SCH_HTB=m CONFIG_NET_SCH_HFSC=m CONFIG_NET_SCH_PRIO=m @@ -1679,9 +1681,9 @@ CONFIG_NET_SCH_TEQL=m CONFIG_NET_SCH_TBF=m CONFIG_NET_SCH_CBS=m CONFIG_NET_SCH_ETF=m +CONFIG_NET_SCH_MQPRIO_LIB=m CONFIG_NET_SCH_TAPRIO=m CONFIG_NET_SCH_GRED=m -CONFIG_NET_SCH_DSMARK=m CONFIG_NET_SCH_NETEM=m CONFIG_NET_SCH_DRR=m CONFIG_NET_SCH_MQPRIO=m @@ -1710,8 +1712,6 @@ CONFIG_NET_CLS_FW=m CONFIG_NET_CLS_U32=m CONFIG_CLS_U32_PERF=y # CONFIG_CLS_U32_MARK is not set -CONFIG_NET_CLS_RSVP=m -CONFIG_NET_CLS_RSVP6=m CONFIG_NET_CLS_FLOW=m CONFIG_NET_CLS_CGROUP=y CONFIG_NET_CLS_BPF=y @@ -1877,6 +1877,7 @@ CONFIG_BT_VIRTIO=m CONFIG_AF_RXRPC=m # CONFIG_AF_RXRPC_IPV6 is not set # CONFIG_AF_RXRPC_INJECT_LOSS is not set +# CONFIG_AF_RXRPC_INJECT_RX_DELAY is not set # CONFIG_AF_RXRPC_DEBUG is not set # CONFIG_RXKAD is not set CONFIG_RXPERF=m @@ -2126,6 +2127,7 @@ CONFIG_HMEM_REPORTING=y # CONFIG_TEST_ASYNC_DRIVER_PROBE is not set CONFIG_GENERIC_CPU_AUTOPROBE=y CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_SOC_BUS=y CONFIG_REGMAP=y CONFIG_REGMAP_I2C=y CONFIG_REGMAP_SPI=m @@ -2358,7 +2360,6 @@ CONFIG_PARPORT_PC=m CONFIG_PARPORT_SERIAL=m CONFIG_PARPORT_PC_FIFO=y CONFIG_PARPORT_PC_SUPERIO=y -# CONFIG_PARPORT_AX88796 is not set CONFIG_PARPORT_1284=y CONFIG_PARPORT_NOT_PC=y CONFIG_PNP=y @@ -2372,7 +2373,6 @@ CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_NULL_BLK is not set # CONFIG_BLK_DEV_FD is not set CONFIG_CDROM=m -# CONFIG_PARIDE is not set CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m CONFIG_ZRAM=m # CONFIG_ZRAM_DEF_COMP_LZORLE is not set @@ -2493,7 +2493,6 @@ CONFIG_BCM_VK=m CONFIG_MISC_ALCOR_PCI=m CONFIG_MISC_RTSX_PCI=y CONFIG_MISC_RTSX_USB=m -# CONFIG_HABANA_AI is not set CONFIG_UACCE=m # CONFIG_PVPANIC is not set CONFIG_GP_PCI1XXXX=m @@ -2722,6 +2721,7 @@ CONFIG_PATA_MPIIX=y # CONFIG_PATA_NS87410 is not set # CONFIG_PATA_OPTI is not set # CONFIG_PATA_RZ1000 is not set +# CONFIG_PATA_PARPORT is not set # # Generic fallback / legacy drivers @@ -2869,6 +2869,7 @@ CONFIG_NET_DSA_MV88E6060=m CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON=m CONFIG_NET_DSA_MICROCHIP_KSZ9477_I2C=m CONFIG_NET_DSA_MICROCHIP_KSZ_SPI=m +CONFIG_NET_DSA_MICROCHIP_KSZ_PTP=y CONFIG_NET_DSA_MICROCHIP_KSZ8863_SMI=m CONFIG_NET_DSA_MV88E6XXX=m # CONFIG_NET_DSA_MV88E6XXX_PTP is not set @@ -3042,8 +3043,6 @@ CONFIG_MLX5_EN_RXNFC=y CONFIG_MLX5_MPFS=y CONFIG_MLX5_ESWITCH=y CONFIG_MLX5_BRIDGE=y -CONFIG_MLX5_CLS_ACT=y -CONFIG_MLX5_TC_SAMPLE=y CONFIG_MLX5_CORE_EN_DCB=y CONFIG_MLX5_CORE_IPOIB=y # CONFIG_MLX5_EN_MACSEC is not set @@ -3067,7 +3066,7 @@ CONFIG_MLXFW=m CONFIG_NET_VENDOR_MICROSOFT=y CONFIG_MICROSOFT_MANA=m # CONFIG_NET_VENDOR_MYRI is not set -# CONFIG_FEALNX is not set +CONFIG_FEALNX=m CONFIG_NET_VENDOR_NI=y CONFIG_NI_XGE_MANAGEMENT_ENET=m # CONFIG_NET_VENDOR_NATSEMI is not set @@ -3190,6 +3189,7 @@ CONFIG_MICROSEMI_PHY=m CONFIG_NATIONAL_PHY=m # CONFIG_NXP_C45_TJA11XX_PHY is not set # CONFIG_NXP_TJA11XX_PHY is not set +CONFIG_NCN26000_PHY=m CONFIG_AT803X_PHY=m CONFIG_QSEMI_PHY=m CONFIG_REALTEK_PHY=m @@ -3355,6 +3355,9 @@ CONFIG_ATH11K=m CONFIG_ATH11K_PCI=m CONFIG_ATH11K_DEBUG=y CONFIG_ATH11K_TRACING=y +CONFIG_ATH12K=m +# CONFIG_ATH12K_DEBUG is not set +# CONFIG_ATH12K_TRACING is not set CONFIG_WLAN_VENDOR_ATMEL=y # CONFIG_ATMEL is not set # CONFIG_AT76C50X_USB is not set @@ -3958,12 +3961,15 @@ CONFIG_SERIAL_8250_16550A_VARIANTS=y CONFIG_SERIAL_8250_FINTEK=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_PCILIB=y CONFIG_SERIAL_8250_PCI=y CONFIG_SERIAL_8250_EXAR=m CONFIG_SERIAL_8250_NR_UARTS=4 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 # CONFIG_SERIAL_8250_EXTENDED is not set +CONFIG_SERIAL_8250_PCI1XXXX=m CONFIG_SERIAL_8250_DWLIB=y +# CONFIG_SERIAL_8250_DFL is not set CONFIG_SERIAL_8250_DW=m # CONFIG_SERIAL_8250_RT288X is not set CONFIG_SERIAL_8250_LPSS=m @@ -4394,7 +4400,6 @@ CONFIG_W1_CON=y # CONFIG_W1_MASTER_MATROX is not set CONFIG_W1_MASTER_DS2490=m CONFIG_W1_MASTER_DS2482=m -# CONFIG_W1_MASTER_DS1WM is not set # CONFIG_W1_MASTER_GPIO is not set # CONFIG_W1_MASTER_SGI is not set # end of 1-wire Bus Masters @@ -4427,7 +4432,6 @@ CONFIG_W1_SLAVE_DS28E04=m CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set CONFIG_POWER_SUPPLY_HWMON=y -# CONFIG_PDA_POWER is not set # CONFIG_GENERIC_ADC_BATTERY is not set CONFIG_IP5XXX_POWER=m # CONFIG_TEST_POWER is not set @@ -4467,6 +4471,8 @@ CONFIG_CHARGER_SMB347=m CONFIG_BATTERY_GOLDFISH=m # CONFIG_BATTERY_RT5033 is not set # CONFIG_CHARGER_RT9455 is not set +CONFIG_CHARGER_RT9467=m +# CONFIG_CHARGER_RT9471 is not set CONFIG_CHARGER_CROS_USBPD=m CONFIG_CHARGER_CROS_PCHG=m # CONFIG_CHARGER_BD99954 is not set @@ -4561,6 +4567,7 @@ CONFIG_SENSORS_MAX6639=m CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_MAX6697=m CONFIG_SENSORS_MAX31790=m +CONFIG_SENSORS_MC34VR500=m CONFIG_SENSORS_MCP3021=m CONFIG_SENSORS_MLXREG_FAN=m CONFIG_SENSORS_TC654=m @@ -4631,6 +4638,8 @@ CONFIG_SENSORS_MAX8688=m # CONFIG_SENSORS_MP2888 is not set # CONFIG_SENSORS_MP2975 is not set CONFIG_SENSORS_MP5023=m +# CONFIG_SENSORS_MPQ7932_REGULATOR is not set +CONFIG_SENSORS_MPQ7932=m # CONFIG_SENSORS_PIM4328 is not set CONFIG_SENSORS_PLI1209BC=m # CONFIG_SENSORS_PLI1209BC_REGULATOR is not set @@ -4638,6 +4647,8 @@ CONFIG_SENSORS_PLI1209BC=m # CONFIG_SENSORS_PXE1610 is not set # CONFIG_SENSORS_Q54SJ108A2 is not set # CONFIG_SENSORS_STPDDC60 is not set +CONFIG_SENSORS_TDA38640=m +# CONFIG_SENSORS_TDA38640_REGULATOR is not set CONFIG_SENSORS_TPS40422=m CONFIG_SENSORS_TPS53679=m CONFIG_SENSORS_TPS546D24=m @@ -4713,6 +4724,7 @@ CONFIG_THERMAL_NETLINK=y CONFIG_THERMAL_STATISTICS=y CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=100 CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_ACPI=y CONFIG_THERMAL_WRITABLE_TRIPS=y CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set @@ -4730,6 +4742,7 @@ CONFIG_THERMAL_EMULATION=y # CONFIG_INTEL_POWERCLAMP=y CONFIG_X86_THERMAL_VECTOR=y +CONFIG_INTEL_TCC=y CONFIG_X86_PKG_TEMP_THERMAL=y CONFIG_INTEL_SOC_DTS_IOSF_CORE=m CONFIG_INTEL_SOC_DTS_THERMAL=m @@ -4799,7 +4812,6 @@ CONFIG_MFD_CROS_EC_DEV=m # CONFIG_MFD_MC13XXX_SPI is not set # CONFIG_MFD_MC13XXX_I2C is not set # CONFIG_MFD_MP2629 is not set -# CONFIG_HTC_PASIC3 is not set CONFIG_MFD_INTEL_QUARK_I2C_GPIO=m CONFIG_LPC_ICH=m CONFIG_LPC_SCH=m @@ -4834,7 +4846,6 @@ CONFIG_MFD_OCELOT=m CONFIG_MFD_VIPERBOARD=m # CONFIG_MFD_RETU is not set # CONFIG_MFD_PCF50633 is not set -# CONFIG_UCB1400_CORE is not set CONFIG_MFD_SY7636A=m # CONFIG_MFD_RDC321X is not set # CONFIG_MFD_RT4831 is not set @@ -4877,7 +4888,9 @@ CONFIG_MFD_VX855=m # CONFIG_MFD_WM8994 is not set # CONFIG_MFD_ATC260X_I2C is not set # CONFIG_RAVE_SP_CORE is not set -CONFIG_MFD_INTEL_M10_BMC=m +CONFIG_MFD_INTEL_M10_BMC_CORE=m +CONFIG_MFD_INTEL_M10_BMC_SPI=m +CONFIG_MFD_INTEL_M10_BMC_PMCI=m # end of Multifunction device drivers CONFIG_REGULATOR=y @@ -4908,6 +4921,7 @@ CONFIG_REGULATOR=y # CONFIG_REGULATOR_MAX8893 is not set # CONFIG_REGULATOR_MAX8952 is not set CONFIG_REGULATOR_MAX20086=m +CONFIG_REGULATOR_MAX20411=m # CONFIG_REGULATOR_MAX77826 is not set CONFIG_REGULATOR_MP8859=m # CONFIG_REGULATOR_MT6311 is not set @@ -5205,6 +5219,9 @@ CONFIG_VIDEO_IVTV=m CONFIG_VIDEO_IVTV_ALSA=m CONFIG_VIDEO_FB_IVTV=m # CONFIG_VIDEO_FB_IVTV_FORCE_PAT is not set +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_MXB=m # # Media capture/analog/hybrid TV support @@ -5249,6 +5266,10 @@ CONFIG_DVB_PLUTO2=m CONFIG_DVB_PT1=m CONFIG_DVB_PT3=m CONFIG_DVB_SMIPCIE=m +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m CONFIG_VIDEO_IPU3_CIO2=m CONFIG_CIO2_BRIDGE=y CONFIG_RADIO_ADAPTERS=m @@ -5385,9 +5406,13 @@ CONFIG_MEDIA_COMMON_OPTIONS=y # common driver options # CONFIG_CYPRESS_FIRMWARE=m +CONFIG_TTPCI_EEPROM=m +CONFIG_UVC_COMMON=m CONFIG_VIDEO_CX2341X=m CONFIG_VIDEO_TVEEPROM=m CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m CONFIG_SMS_SIANO_MDTV=m CONFIG_SMS_SIANO_RC=y CONFIG_VIDEOBUF2_CORE=m @@ -5423,6 +5448,7 @@ CONFIG_VIDEO_IMX219=m CONFIG_VIDEO_IMX258=m CONFIG_VIDEO_IMX274=m CONFIG_VIDEO_IMX290=m +CONFIG_VIDEO_IMX296=m CONFIG_VIDEO_IMX319=m CONFIG_VIDEO_IMX355=m CONFIG_VIDEO_MAX9271_LIB=m @@ -5461,6 +5487,7 @@ CONFIG_VIDEO_OV7670=m CONFIG_VIDEO_OV772X=m CONFIG_VIDEO_OV7740=m CONFIG_VIDEO_OV8856=m +CONFIG_VIDEO_OV8858=m CONFIG_VIDEO_OV8865=m CONFIG_VIDEO_OV9640=m CONFIG_VIDEO_OV9650=m @@ -5703,7 +5730,7 @@ CONFIG_DVB_TDA8083=m CONFIG_DVB_TDA8261=m CONFIG_DVB_TDA826X=m CONFIG_DVB_TS2020=m -# CONFIG_DVB_TUA6100 is not set +CONFIG_DVB_TUA6100=m CONFIG_DVB_TUNER_CX24113=m CONFIG_DVB_TUNER_ITD1000=m CONFIG_DVB_VES1X93=m @@ -5896,7 +5923,6 @@ CONFIG_DRM_AMD_DC_HDCP=y CONFIG_HSA_AMD=y CONFIG_DRM_NOUVEAU=m -CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT=y CONFIG_NOUVEAU_DEBUG=5 CONFIG_NOUVEAU_DEBUG_DEFAULT=3 # CONFIG_NOUVEAU_DEBUG_MMU is not set @@ -5955,6 +5981,8 @@ CONFIG_DRM_PANEL=y # # Display Panels # +CONFIG_DRM_PANEL_AUO_A030JTN01=m +# CONFIG_DRM_PANEL_ORISETECH_OTA5601A is not set CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m CONFIG_DRM_PANEL_WIDECHIPS_WS2401=m # end of Display Panels @@ -5991,11 +6019,6 @@ CONFIG_DRM_SSD130X_I2C=m CONFIG_DRM_SSD130X_SPI=m CONFIG_DRM_HYPERV=m CONFIG_DRM_LEGACY=y -# CONFIG_DRM_TDFX is not set -# CONFIG_DRM_R128 is not set -# CONFIG_DRM_MGA is not set -# CONFIG_DRM_VIA is not set -# CONFIG_DRM_SAVAGE is not set CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y CONFIG_DRM_PRIVACY_SCREEN=y @@ -6095,6 +6118,7 @@ CONFIG_LCD_PLATFORM=m # CONFIG_LCD_OTM3225A is not set CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_KTD253 is not set +CONFIG_BACKLIGHT_KTZ8866=m CONFIG_BACKLIGHT_PWM=m CONFIG_BACKLIGHT_MT6370=m CONFIG_BACKLIGHT_APPLE=m @@ -6133,6 +6157,8 @@ CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y # end of Graphics support CONFIG_DRM_ACCEL=y +CONFIG_DRM_ACCEL_HABANALABS=m +CONFIG_DRM_ACCEL_IVPU=m CONFIG_SOUND=m CONFIG_SND=m CONFIG_SND_TIMER=m @@ -6573,6 +6599,8 @@ CONFIG_SND_SOC_AK4458=m CONFIG_SND_SOC_AK5558=m # CONFIG_SND_SOC_ALC5623 is not set CONFIG_SND_SOC_AW8738=m +CONFIG_SND_SOC_AW88395_LIB=m +CONFIG_SND_SOC_AW88395=m CONFIG_SND_SOC_BD28623=m # CONFIG_SND_SOC_BT_SCO is not set CONFIG_SND_SOC_CROS_EC_CODEC=m @@ -6585,12 +6613,12 @@ CONFIG_SND_SOC_CS35L41_LIB=m CONFIG_SND_SOC_CS35L41=m CONFIG_SND_SOC_CS35L41_SPI=m CONFIG_SND_SOC_CS35L41_I2C=m -CONFIG_SND_SOC_CS35L45_TABLES=m CONFIG_SND_SOC_CS35L45=m CONFIG_SND_SOC_CS35L45_SPI=m CONFIG_SND_SOC_CS35L45_I2C=m CONFIG_SND_SOC_CS42L42_CORE=m CONFIG_SND_SOC_CS42L42=m +CONFIG_SND_SOC_CS42L42_SDW=m # CONFIG_SND_SOC_CS42L51_I2C is not set # CONFIG_SND_SOC_CS42L52 is not set # CONFIG_SND_SOC_CS42L56 is not set @@ -6623,6 +6651,7 @@ CONFIG_SND_SOC_HDAC_HDMI=m CONFIG_SND_SOC_HDAC_HDA=m CONFIG_SND_SOC_HDA=m CONFIG_SND_SOC_ICS43432=m +CONFIG_SND_SOC_IDT821034=m # CONFIG_SND_SOC_INNO_RK3036 is not set CONFIG_SND_SOC_MAX98088=m CONFIG_SND_SOC_MAX98090=m @@ -6655,6 +6684,7 @@ CONFIG_SND_SOC_PCM3060_SPI=m CONFIG_SND_SOC_PCM512x=m CONFIG_SND_SOC_PCM512x_I2C=m # CONFIG_SND_SOC_PCM512x_SPI is not set +CONFIG_SND_SOC_PEB2466=m # CONFIG_SND_SOC_RK3328 is not set CONFIG_SND_SOC_RL6231=m CONFIG_SND_SOC_RL6347A=m @@ -6691,6 +6721,7 @@ CONFIG_SND_SOC_RT700_SDW=m CONFIG_SND_SOC_RT711=m CONFIG_SND_SOC_RT711_SDW=m CONFIG_SND_SOC_RT711_SDCA_SDW=m +CONFIG_SND_SOC_RT712_SDCA_SDW=m CONFIG_SND_SOC_RT715=m CONFIG_SND_SOC_RT715_SDW=m CONFIG_SND_SOC_RT715_SDCA_SDW=m @@ -6701,6 +6732,7 @@ CONFIG_SND_SOC_SIGMADSP=m CONFIG_SND_SOC_SIGMADSP_REGMAP=m CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m CONFIG_SND_SOC_SIMPLE_MUX=m +CONFIG_SND_SOC_SMA1303=m CONFIG_SND_SOC_SPDIF=m CONFIG_SND_SOC_SRC4XXX_I2C=m CONFIG_SND_SOC_SRC4XXX=m @@ -6798,10 +6830,7 @@ CONFIG_HDMI_LPE_AUDIO=m CONFIG_SND_SYNTH_EMUX=m CONFIG_SND_VIRTIO=m CONFIG_AC97_BUS=m - -# -# HID support -# +CONFIG_HID_SUPPORT=y CONFIG_HID=y # CONFIG_HID_BATTERY_STRENGTH is not set CONFIG_HIDRAW=y @@ -6838,6 +6867,7 @@ CONFIG_HID_EMS_FF=m CONFIG_HID_ELAN=m CONFIG_HID_ELECOM=m CONFIG_HID_ELO=m +CONFIG_HID_EVISION=m CONFIG_HID_EZKEY=m # CONFIG_HID_FT260 is not set CONFIG_HID_GEMBIRD=m @@ -6910,6 +6940,7 @@ CONFIG_HID_SONY=m # CONFIG_SONY_FF is not set CONFIG_HID_SPEEDLINK=m CONFIG_HID_STEAM=m +# CONFIG_STEAM_FF is not set CONFIG_HID_STEELSERIES=m CONFIG_HID_SUNPLUS=m CONFIG_HID_RMI=m @@ -6938,6 +6969,11 @@ CONFIG_HID_ALPS=m CONFIG_HID_MCP2221=m # end of Special HID drivers +# +# HID-BPF support +# +# end of HID-BPF support + # # USB HID support # @@ -6946,12 +6982,8 @@ CONFIG_HID_PID=y CONFIG_USB_HIDDEV=y # end of USB HID support -# -# I2C HID support -# +CONFIG_I2C_HID=m CONFIG_I2C_HID_ACPI=m -# end of I2C HID support - CONFIG_I2C_HID_CORE=m # @@ -6974,8 +7006,6 @@ CONFIG_SURFACE_KBD=m # end of Surface System Aggregator Module HID support CONFIG_SURFACE_HID_CORE=m -# end of HID support - CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_SUPPORT=y CONFIG_USB_COMMON=y @@ -7269,6 +7299,7 @@ CONFIG_TYPEC_WUSB3801=m # USB Type-C Multiplexer/DeMultiplexer Switch support # CONFIG_TYPEC_MUX_FSA4480=m +CONFIG_TYPEC_MUX_GPIO_SBU=m CONFIG_TYPEC_MUX_PI3USB30532=m CONFIG_TYPEC_MUX_INTEL_PMC=m # end of USB Type-C Multiplexer/DeMultiplexer Switch support @@ -7591,7 +7622,6 @@ CONFIG_RTC_DRV_M48T59=m CONFIG_RTC_DRV_MSM6242=m CONFIG_RTC_DRV_BQ4802=m CONFIG_RTC_DRV_RP5C01=m -CONFIG_RTC_DRV_V3020=m CONFIG_RTC_DRV_CROS_EC=m # @@ -7623,6 +7653,7 @@ CONFIG_INTEL_IDXD_SVM=y CONFIG_INTEL_IDXD_PERFMON=y CONFIG_INTEL_IOATDMA=y CONFIG_PLX_DMA=m +CONFIG_XILINX_XDMA=m CONFIG_AMD_PTDMA=m # CONFIG_QCOM_HIDMA_MGMT is not set # CONFIG_QCOM_HIDMA is not set @@ -7681,7 +7712,7 @@ CONFIG_VFIO_PCI=y CONFIG_VFIO_PCI_VGA=y CONFIG_VFIO_PCI_IGD=y CONFIG_MLX5_VFIO_PCI=m -CONFIG_VFIO_MDEV=y +CONFIG_VFIO_MDEV=m CONFIG_IRQ_BYPASS_MANAGER=y CONFIG_VIRT_DRIVERS=y CONFIG_VMGENID=y @@ -7713,8 +7744,10 @@ CONFIG_VDPA_SIM_BLOCK=m CONFIG_IFCVF=m CONFIG_MLX5_VDPA=y CONFIG_MLX5_VDPA_NET=m +# CONFIG_MLX5_VDPA_STEERING_DEBUG is not set CONFIG_VP_VDPA=m CONFIG_ALIBABA_ENI_VDPA=m +# CONFIG_SNET_VDPA is not set CONFIG_VHOST_IOTLB=y CONFIG_VHOST_RING=m CONFIG_VHOST=y @@ -7746,7 +7779,6 @@ CONFIG_RTLLIB_CRYPTO_WEP=m CONFIG_RTL8192E=m CONFIG_RTL8723BS=m CONFIG_R8712U=m -CONFIG_R8188EU=m CONFIG_RTS5208=m CONFIG_VT6655=m CONFIG_VT6656=m @@ -7818,6 +7850,7 @@ CONFIG_CROS_EC=m CONFIG_CROS_EC_I2C=m CONFIG_CROS_EC_ISHTP=m CONFIG_CROS_EC_SPI=m +CONFIG_CROS_EC_UART=m CONFIG_CROS_EC_LPC=m CONFIG_CROS_EC_PROTO=y CONFIG_CROS_KBD_LED_BACKLIGHT=m @@ -7958,6 +7991,7 @@ CONFIG_INTEL_PUNIT_IPC=m CONFIG_INTEL_RST=m CONFIG_INTEL_SDSI=m CONFIG_INTEL_SMARTCONNECT=m +CONFIG_INTEL_TPMI=m CONFIG_INTEL_TURBO_MAX_3=y CONFIG_INTEL_VSEC=m CONFIG_MSI_LAPTOP=m @@ -8042,6 +8076,7 @@ CONFIG_INTEL_IOMMU_SVM=y CONFIG_INTEL_IOMMU_DEFAULT_ON=y CONFIG_INTEL_IOMMU_FLOPPY_WA=y CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON=y +CONFIG_INTEL_IOMMU_PERF_EVENTS=y CONFIG_IOMMUFD=y CONFIG_IRQ_REMAP=y CONFIG_HYPERV_IOMMU=y @@ -8109,6 +8144,8 @@ CONFIG_SOUNDWIRE_GENERIC_ALLOCATION=m # # end of Enable LiteX SoC Builder specific drivers +CONFIG_WPCM450_SOC=m + # # Qualcomm SoC drivers # @@ -8289,11 +8326,13 @@ CONFIG_SD_ADC_MODULATOR=m # CONFIG_TI_ADC128S052 is not set # CONFIG_TI_ADC161S626 is not set CONFIG_TI_ADS1015=m +CONFIG_TI_ADS7924=m # CONFIG_TI_ADS7950 is not set CONFIG_TI_ADS8344=m CONFIG_TI_ADS8688=m CONFIG_TI_ADS124S08=m # CONFIG_TI_ADS131E08 is not set +CONFIG_TI_LMP92064=m # CONFIG_TI_TLC4541 is not set # CONFIG_TI_TSC2046 is not set CONFIG_VF610_ADC=m @@ -8408,6 +8447,7 @@ CONFIG_LTC1660=m # CONFIG_LTC2632 is not set # CONFIG_M62332 is not set # CONFIG_MAX517 is not set +CONFIG_MAX5522=m CONFIG_MAX5821=m # CONFIG_MCP4725 is not set # CONFIG_MCP4922 is not set @@ -8603,6 +8643,7 @@ CONFIG_IIO_ST_MAGN_SPI_3AXIS=m # CONFIG_SENSORS_HMC5843_SPI is not set # CONFIG_SENSORS_RM3100_I2C is not set # CONFIG_SENSORS_RM3100_SPI is not set +CONFIG_TI_TMAG5273=m # CONFIG_YAMAHA_YAS530 is not set # end of Magnetometer sensors @@ -8792,7 +8833,7 @@ CONFIG_PHY_INTEL_LGM_EMMC=m CONFIG_POWERCAP=y CONFIG_INTEL_RAPL_CORE=y CONFIG_INTEL_RAPL=y -# CONFIG_IDLE_INJECT is not set +CONFIG_IDLE_INJECT=y # CONFIG_MCB is not set # @@ -8830,6 +8871,7 @@ CONFIG_DAX=y CONFIG_DEV_DAX=y CONFIG_DEV_DAX_PMEM=m CONFIG_DEV_DAX_HMEM=y +CONFIG_DEV_DAX_CXL=m CONFIG_DEV_DAX_HMEM_DEVICES=y CONFIG_DEV_DAX_KMEM=m CONFIG_NVMEM=y @@ -8888,8 +8930,8 @@ CONFIG_PM_OPP=y # CONFIG_SLIMBUS is not set # CONFIG_INTERCONNECT is not set CONFIG_COUNTER=m -# CONFIG_INTERRUPT_CNT is not set # CONFIG_INTEL_QEP is not set +# CONFIG_INTERRUPT_CNT is not set # CONFIG_MOST is not set # CONFIG_PECI is not set CONFIG_HTE=y @@ -8901,6 +8943,7 @@ CONFIG_HTE=y CONFIG_DCACHE_WORD_ACCESS=y CONFIG_VALIDATE_FS_PARSER=y CONFIG_FS_IOMAP=y +CONFIG_LEGACY_DIRECT_IO=y # CONFIG_EXT2_FS is not set # CONFIG_EXT3_FS is not set CONFIG_EXT4_FS=y @@ -9103,6 +9146,8 @@ CONFIG_EROFS_FS_POSIX_ACL=y CONFIG_EROFS_FS_SECURITY=y CONFIG_EROFS_FS_ZIP=y CONFIG_EROFS_FS_ZIP_LZMA=y +CONFIG_EROFS_FS_PCPU_KTHREAD=y +# CONFIG_EROFS_FS_PCPU_KTHREAD_HIPRI is not set CONFIG_VBOXSF_FS=m CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=m @@ -9145,7 +9190,11 @@ CONFIG_SUNRPC=m CONFIG_SUNRPC_GSS=m CONFIG_SUNRPC_BACKCHANNEL=y CONFIG_RPCSEC_GSS_KRB5=m -CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES=y +CONFIG_RPCSEC_GSS_KRB5_CRYPTOSYSTEM=y +# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_DES is not set +CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA1=y +# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_CAMELLIA is not set +CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA2=y # CONFIG_SUNRPC_DEBUG is not set CONFIG_SUNRPC_XPRT_RDMA=m CONFIG_CEPH_FS=m @@ -9500,6 +9549,8 @@ CONFIG_CRYPTO_SM4_AESNI_AVX2_X86_64=m # CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set # CONFIG_CRYPTO_TWOFISH_AVX_X86_64 is not set CONFIG_CRYPTO_ARIA_AESNI_AVX_X86_64=m +CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_ARIA_GFNI_AVX512_X86_64=m CONFIG_CRYPTO_CHACHA20_X86_64=m # CONFIG_CRYPTO_AEGIS128_AESNI_SSE2 is not set # CONFIG_CRYPTO_NHPOLY1305_SSE2 is not set @@ -9819,10 +9870,10 @@ CONFIG_ARCH_HAS_DEBUG_WX=y # CONFIG_DEBUG_WX is not set CONFIG_GENERIC_PTDUMP=y # CONFIG_PTDUMP_DEBUGFS is not set -# CONFIG_DEBUG_OBJECTS is not set -# CONFIG_SHRINKER_DEBUG is not set CONFIG_HAVE_DEBUG_KMEMLEAK=y # CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SHRINKER_DEBUG is not set # CONFIG_DEBUG_STACK_USAGE is not set CONFIG_SCHED_STACK_END_CHECK=y CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y @@ -9896,6 +9947,7 @@ CONFIG_LOCK_TORTURE_TEST=m # CONFIG_CSD_LOCK_WAIT_DEBUG is not set # end of Lock Debugging (spinlocks, mutexes, etc...) +# CONFIG_NMI_CHECK_CPU is not set # CONFIG_DEBUG_IRQFLAGS is not set CONFIG_STACKTRACE=y # CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set @@ -9923,6 +9975,7 @@ CONFIG_RCU_TORTURE_TEST=m # CONFIG_RCU_REF_SCALE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0 +# CONFIG_RCU_CPU_STALL_CPUTIME is not set CONFIG_RCU_TRACE=y # CONFIG_RCU_EQS_DEBUG is not set # end of RCU Debugging @@ -10027,6 +10080,7 @@ CONFIG_ARCH_HAS_KCOV=y CONFIG_CC_HAS_SANCOV_TRACE_PC=y # CONFIG_KCOV is not set CONFIG_RUNTIME_TESTING_MENU=y +# CONFIG_TEST_DHRY is not set # CONFIG_LKDTM is not set # CONFIG_TEST_MIN_HEAP is not set # CONFIG_TEST_DIV64 is not set @@ -10083,5 +10137,5 @@ CONFIG_MEMTEST=y # kernel-config sources: -# FILEVER=/usr/share/kernel-config/base-6.2-5-60 -# FILEVER=/usr/share/kernel-config/mandatory-6.2-5-60 +# FILEVER=/usr/share/kernel-config/base-6.3-5-61 +# FILEVER=/usr/share/kernel-config/mandatory-6.3-5-61 diff --git a/linux.spec b/linux.spec index b8c53dd74f34..a63a40ddfa74 100644 --- a/linux.spec +++ b/linux.spec @@ -5,13 +5,13 @@ # Name: linux -Version: 6.3.3 -Release: 1313 +Version: 6.3.4 +Release: 1317 License: GPL-2.0 Summary: The Linux kernel Url: http://www.kernel.org/ Group: kernel -Source0: https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.3.3.tar.xz +Source0: https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.3.4.tar.xz Source1: config Source2: cmdline @@ -33,7 +33,6 @@ Requires: linux-license = %{version}-%{release} #cve.end #mainline: Mainline patches, upstream backport and fixes from 0051 to 0099 -Patch0051: 0051-block-bfq-Fix-division-by-zero-error-on-zero-wsum.patch #mainline.end #Serie.clr 01XX: Clear Linux patches @@ -89,6 +88,7 @@ Patch0155: ratelimit-sched-yield.patch Patch0156: avoid-tlbs-in-guests.patch Patch0157: scale-net-alloc.patch Patch0158: 0158-clocksource-only-perform-extended-clocksource-checks.patch +Patch0159: vmidle.patch #Serie.end #backports @@ -141,13 +141,12 @@ Requires: linux-license = %{version}-%{release} Linux kernel build files %prep -%setup -q -n linux-6.3.3 +%setup -q -n linux-6.3.4 #cve.patch.start cve patches #cve.patch.end #mainline.patch.start Mainline patches, upstream backport and fixes -%patch0051 -p1 #mainline.patch.end #Serie.patch.start Clear Linux patches @@ -203,6 +202,7 @@ Linux kernel build files %patch0156 -p1 %patch0157 -p1 %patch0158 -p1 +%patch0159 -p1 #Serie.patch.end # backports diff --git a/release b/release index 16e80cad8ac1..fe2568ccc291 100644 --- a/release +++ b/release @@ -1 +1 @@ -1313 +1317 diff --git a/upstream b/upstream index 7f3b420796ff..0952994f133d 100644 --- a/upstream +++ b/upstream @@ -1 +1 @@ -8f883ca58074f3ca6e8662487ecda6c284471cf1/linux-6.3.3.tar.xz +d25847ee719b8ad822d26a95baccb6c25ca45f1b/linux-6.3.4.tar.xz diff --git a/vmidle.patch b/vmidle.patch new file mode 100644 index 000000000000..42f1de1a6c34 --- /dev/null +++ b/vmidle.patch @@ -0,0 +1,364 @@ +From 875eb1fb8991d2292b8624eb38f65396403412c5 Mon Sep 17 00:00:00 2001 +From: Arjan van de Ven +Date: Thu, 25 May 2023 17:42:26 +0000 +Subject: [PATCH] support intel_idle inside VM guests + +--- + drivers/idle/intel_idle.c | 242 +++++++++++++++++++++++++++++++++++++- + 1 file changed, 240 insertions(+), 2 deletions(-) + +diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c +index 4c0eb724303ad..70bf96ab8c95e 100644 +--- a/drivers/idle/intel_idle.c ++++ b/drivers/idle/intel_idle.c +@@ -51,11 +51,13 @@ + #include + #include + #include ++#include + #include + #include + #include + #include + #include ++#include + #include + + #define INTEL_IDLE_VERSION "0.5.1" +@@ -68,11 +70,14 @@ static struct cpuidle_driver intel_idle_driver = { + static int max_cstate = CPUIDLE_STATE_MAX - 1; + static unsigned int disabled_states_mask; + static unsigned int preferred_states_mask; ++static bool skip_mwait_check; + + static struct cpuidle_device __percpu *intel_idle_cpuidle_devices; + + static unsigned long auto_demotion_disable_flags; + ++static u64 umwait_limit; ++ + static enum { + C1E_PROMOTION_PRESERVE, + C1E_PROMOTION_ENABLE, +@@ -141,6 +146,14 @@ static __always_inline int __intel_idle(struct cpuidle_device *dev, + return index; + } + ++static __always_inline int __intel_idle_hlt(struct cpuidle_device *dev, ++ struct cpuidle_driver *drv, int index) ++{ ++ raw_safe_halt(); ++ raw_local_irq_disable(); ++ return index; ++} ++ + /** + * intel_idle - Ask the processor to enter the given idle state. + * @dev: cpuidle device of the target CPU. +@@ -173,6 +186,36 @@ static __cpuidle int intel_idle_irq(struct cpuidle_device *dev, + return ret; + } + ++/** ++ * intel_idle_hlt - Ask the processor to enter the given idle state using hlt. ++ * @dev: cpuidle device of the target CPU. ++ * @drv: cpuidle driver (assumed to point to intel_idle_driver). ++ * @index: Target idle state index. ++ * ++ * Use the HLT instruction to notify the processor that the CPU represented by ++ * @dev is idle and it can try to enter the idle state corresponding to @index. ++ * ++ * Must be called under local_irq_disable(). ++ */ ++static __cpuidle int intel_idle_hlt(struct cpuidle_device *dev, ++ struct cpuidle_driver *drv, int index) ++{ ++ return __intel_idle_hlt(dev, drv, index); ++} ++ ++static __cpuidle int intel_idle_hlt_irq(struct cpuidle_device *dev, ++ struct cpuidle_driver *drv, int index) ++{ ++ int ret; ++ ++ raw_local_irq_enable(); ++ ret = __intel_idle_hlt(dev, drv, index); ++ raw_local_irq_disable(); ++ ++ return ret; ++} ++ ++ + static __cpuidle int intel_idle_ibrs(struct cpuidle_device *dev, + struct cpuidle_driver *drv, int index) + { +@@ -251,6 +294,27 @@ static __cpuidle int intel_idle_s2idle(struct cpuidle_device *dev, + return 0; + } + ++/** ++ * intel_idle_umwait_irq - Request C0.x using the 'umwait' instruction. ++ * @dev: cpuidle device of the target CPU. ++ * @drv: cpuidle driver (assumed to point to intel_idle_driver). ++ * @index: Target idle state index. ++ * ++ * Request C0.1 or C0.2 using 'umwait' instruction with interrupts enabled. ++ */ ++static __cpuidle int intel_idle_umwait_irq(struct cpuidle_device *dev, ++ struct cpuidle_driver *drv, ++ int index) ++{ ++ u32 state = flg2MWAIT(drv->states[index].flags); ++ ++ raw_local_irq_enable(); ++ umwait_idle(rdtsc() + umwait_limit, state); ++ raw_local_irq_disable(); ++ ++ return index; ++} ++ + /* + * States are indexed by the cstate number, + * which is also the index into the MWAIT hint array. +@@ -991,6 +1055,13 @@ static struct cpuidle_state adl_n_cstates[] __initdata = { + .exit_latency = 1, + .target_residency = 2, + .enter = &intel_idle_umwait, }, ++ { ++ .name = "C0.2", ++ .desc = "UMWAIT C0.2", ++ .flags = MWAIT2flg(TPAUSE_C02_STATE) | CPUIDLE_FLAG_IRQ_ENABLE, ++ .exit_latency_ns = 100, ++ .target_residency_ns = 100, ++ .enter = &intel_idle_umwait_irq, }, + { + .name = "C1", + .desc = "MWAIT 0x00", +@@ -1323,6 +1394,32 @@ static struct cpuidle_state snr_cstates[] __initdata = { + .enter = NULL } + }; + ++static struct cpuidle_state vmguest_cstates[] __initdata = { ++ { ++ .name = "C0.2", ++ .desc = "UMWAIT C0.2", ++ .flags = MWAIT2flg(TPAUSE_C02_STATE) | CPUIDLE_FLAG_IRQ_ENABLE, ++ .exit_latency_ns = 100, ++ .target_residency_ns = 100, ++ .enter = &intel_idle_umwait_irq, }, ++ { ++ .name = "C1", ++ .desc = "HLT", ++ .flags = MWAIT2flg(0x00) | CPUIDLE_FLAG_IRQ_ENABLE, ++ .exit_latency = 5, ++ .target_residency = 10, ++ .enter = &intel_idle_hlt_irq, }, ++ { ++ .name = "C1L", ++ .desc = "Long HLT", ++ .flags = MWAIT2flg(0x00) | CPUIDLE_FLAG_TLB_FLUSHED, ++ .exit_latency = 5, ++ .target_residency = 500, ++ .enter = &intel_idle_hlt, }, ++ { ++ .enter = NULL } ++}; ++ + static const struct idle_cpu idle_cpu_nehalem __initconst = { + .state_table = nehalem_cstates, + .auto_demotion_disable_flags = NHM_C1_AUTO_DEMOTE | NHM_C3_AUTO_DEMOTE, +@@ -1505,6 +1602,9 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = { + X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE, &idle_cpu_adl), + X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L, &idle_cpu_adl_l), + X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_N, &idle_cpu_adl_n), ++ X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE, &idle_cpu_adl), ++ X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_P, &idle_cpu_adl), ++ X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_S, &idle_cpu_adl), + X86_MATCH_INTEL_FAM6_MODEL(SAPPHIRERAPIDS_X, &idle_cpu_spr), + X86_MATCH_INTEL_FAM6_MODEL(EMERALDRAPIDS_X, &idle_cpu_spr), + X86_MATCH_INTEL_FAM6_MODEL(XEON_PHI_KNL, &idle_cpu_knl), +@@ -1970,13 +2070,14 @@ static void __init intel_idle_init_cstates_icpu(struct cpuidle_driver *drv) + } + + mwait_hint = flg2MWAIT(cpuidle_state_table[cstate].flags); +- if (!intel_idle_verify_cstate(mwait_hint)) ++ if (!skip_mwait_check && !intel_idle_verify_cstate(mwait_hint)) + continue; + + /* Structure copy. */ + drv->states[drv->state_count] = cpuidle_state_table[cstate]; + +- if ((cpuidle_state_table[cstate].flags & CPUIDLE_FLAG_IRQ_ENABLE) || force_irq_on) { ++ if ((cpuidle_state_table[cstate].enter == intel_idle && ++ cpuidle_state_table[cstate].flags & CPUIDLE_FLAG_IRQ_ENABLE) || force_irq_on) { + printk("intel_idle: forced intel_idle_irq for state %d\n", cstate); + drv->states[drv->state_count].enter = intel_idle_irq; + } +@@ -2008,6 +2109,28 @@ static void __init intel_idle_init_cstates_icpu(struct cpuidle_driver *drv) + } + } + ++/** ++ * umwait_limit_init - initialize time limit value for 'umwait'. ++ * ++ * C0.1 and C0.2 (later C0.x) idle states are requested via the 'umwait' ++ * instruction. The 'umwait' instruction requires the "deadline" - the TSC ++ * counter value to break out of C0.x (unless it broke out because of an ++ * interrupt or some other event). ++ * ++ * The deadline is specified as an absolute TSC value, and it is calculated as ++ * current TSC value + 'umwait_limit'. This function initializes the ++ * 'umwait_limit' variable to count of cycles per tick. The motivation is: ++ * * the tick is not disabled for shallow states like C0.x so, so idle will ++ * not last longer than a tick anyway ++ * * limit idle time to give cpuidle a chance to re-evaluate its C-state ++ * selection decision and possibly select a deeper C-state. ++ */ ++static void __init umwait_limit_init(void) ++{ ++ umwait_limit = (u64)TICK_NSEC * tsc_khz; ++ do_div(umwait_limit, MICRO); ++} ++ + /** + * intel_idle_cpuidle_driver_init - Create the list of available idle states. + * @drv: cpuidle driver structure to initialize. +@@ -2015,6 +2138,7 @@ static void __init intel_idle_init_cstates_icpu(struct cpuidle_driver *drv) + static void __init intel_idle_cpuidle_driver_init(struct cpuidle_driver *drv) + { + cpuidle_poll_state_init(drv); ++ umwait_limit_init(); + + if (disabled_states_mask & BIT(0)) + drv->states[0].flags |= CPUIDLE_FLAG_OFF; +@@ -2114,6 +2238,118 @@ static void __init intel_idle_cpuidle_devices_uninit(void) + cpuidle_unregister_device(per_cpu_ptr(intel_idle_cpuidle_devices, i)); + } + ++/* ++ * Match up the latency and break even point of the bare metal (cpu based) ++ * states with the deepest VM available state. ++ * ++ * We only want to do this for the deepest state, the ones that has ++ * the TLB_FLUSHED flag set on the . ++ * ++ * All our short idle states are dominated by vmexit/vmenter latencies, ++ * not the underlying hardware latencies so we keep our values for these. ++ */ ++static void matchup_vm_state_with_baremetal(void) ++{ ++ int cstate; ++ ++ for (cstate = 0; cstate < CPUIDLE_STATE_MAX; ++cstate) { ++ int matching_cstate; ++ ++ if (intel_idle_max_cstate_reached(cstate)) ++ break; ++ ++ if (!cpuidle_state_table[cstate].enter && ++ !cpuidle_state_table[cstate].enter_s2idle) ++ break; ++ ++ if (!(cpuidle_state_table[matching_cstate].flags & CPUIDLE_FLAG_TLB_FLUSHED)) ++ continue; ++ ++ for (matching_cstate = 0; matching_cstate < CPUIDLE_STATE_MAX; ++matching_cstate) { ++ if (icpu->state_table[matching_cstate].exit_latency > cpuidle_state_table[cstate].exit_latency) { ++ cpuidle_state_table[cstate].exit_latency = icpu->state_table[matching_cstate].exit_latency; ++ cpuidle_state_table[cstate].target_residency = icpu->state_table[matching_cstate].target_residency; ++ } ++ } ++ ++ } ++} ++ ++/* ++ * If umwait is not available (either not supported by the CPU or marked by ++ * the hypervisor) we need to disable the C0.x states from our table ++ */ ++static void mask_out_umwait(void) ++{ ++ int cstate; ++ ++ if (boot_cpu_has(X86_FEATURE_WAITPKG)) ++ return; ++ ++ for (cstate = 0; cstate < CPUIDLE_STATE_MAX; ++cstate) { ++ if (intel_idle_max_cstate_reached(cstate)) ++ break; ++ ++ if (!cpuidle_state_table[cstate].enter && ++ !cpuidle_state_table[cstate].enter_s2idle) ++ break; ++ ++ if (cpuidle_state_table[cstate].enter == intel_idle_umwait_irq) ++ cpuidle_state_table[cstate].flags |= CPUIDLE_FLAG_UNUSABLE; ++ } ++} ++ ++static int __init intel_idle_vminit(const struct x86_cpu_id *id) ++{ ++ int retval; ++ ++ ++ cpuidle_state_table = vmguest_cstates; ++ skip_mwait_check = true; /* hypervisor hides mwait from us normally */ ++ ++ icpu = (const struct idle_cpu *)id->driver_data; ++ intel_idle_cpuidle_devices = alloc_percpu(struct cpuidle_device); ++ if (!intel_idle_cpuidle_devices) ++ return -ENOMEM; ++ ++ /* ++ * We don't know exactly what the host will do when we go idle, but as a worst estimate ++ * we can assume that the exit latency of the deepest host state will be hit for our ++ * deep (long duration) guest idle state. ++ * The same logic applies to the break even point for the long duration guest idle state. ++ * So lets copy these two properties from the table we found for the host CPU type. ++ */ ++ matchup_vm_state_with_baremetal(); ++ /* ++ * Not every VMM/CPU combination supports umwait; mark the C0.x states unsable if so. ++ */ ++ mask_out_umwait(); ++ ++ ++ intel_idle_cpuidle_driver_init(&intel_idle_driver); ++ ++ retval = cpuidle_register_driver(&intel_idle_driver); ++ if (retval) { ++ struct cpuidle_driver *drv = cpuidle_get_driver(); ++ printk(KERN_DEBUG pr_fmt("intel_idle yielding to %s\n"), ++ drv ? drv->name : "none"); ++ goto init_driver_fail; ++ } ++ ++ retval = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "idle/intel:online", ++ intel_idle_cpu_online, NULL); ++ if (retval < 0) ++ goto hp_setup_fail; ++ ++ return 0; ++hp_setup_fail: ++ intel_idle_cpuidle_devices_uninit(); ++ cpuidle_unregister_driver(&intel_idle_driver); ++init_driver_fail: ++ free_percpu(intel_idle_cpuidle_devices); ++ return retval; ++} ++ + static int __init intel_idle_init(void) + { + const struct x86_cpu_id *id; +@@ -2132,6 +2368,8 @@ static int __init intel_idle_init(void) + id = x86_match_cpu(intel_idle_ids); + if (id) { + if (!boot_cpu_has(X86_FEATURE_MWAIT)) { ++ if (boot_cpu_has(X86_FEATURE_HYPERVISOR)) ++ return intel_idle_vminit(id); + pr_debug("Please enable MWAIT in BIOS SETUP\n"); + return -ENODEV; + } +-- +2.40.1 +