diff --git a/debian.master/control.stub.in b/debian.master/control.stub.in index cf74b152945993..2a59aca7dcb4e7 100644 --- a/debian.master/control.stub.in +++ b/debian.master/control.stub.in @@ -9,8 +9,9 @@ Build-Depends: automake , bc , bindgen:native [amd64 arm64 armhf ppc64el riscv64 s390x], + binutils-dev, bison , - clang-19:native [amd64 arm64 armhf ppc64el riscv64 s390x], + clang:native [amd64 arm64 armhf ppc64el riscv64 s390x], cpio, curl , debhelper-compat (= 10), @@ -22,7 +23,10 @@ Build-Depends: java-common , kmod , libaudit-dev , + libbpf-dev, + libbpf-tools, libcap-dev , + libcapstone-dev, libdebuginfod-dev [amd64 arm64 armhf ppc64el s390x riscv64] , libdw-dev , libelf-dev , @@ -31,13 +35,15 @@ Build-Depends: libnewt-dev , libnuma-dev [amd64 arm64 ppc64el s390x] , libpci-dev , + libperl-dev, libssl-dev , - libstdc++-dev, + libstdc++-14-dev, libtool , libtraceevent-dev [amd64 arm64 armhf ppc64el s390x riscv64] , libtracefs-dev [amd64 arm64 armhf ppc64el s390x riscv64] , libudev-dev , libunwind8-dev [amd64 arm64 armhf ppc64el] , + llvm-dev, makedumpfile:native [amd64] , openssl , dwarves (>= 1.21) [amd64 arm64 armhf ppc64el s390x riscv64] , @@ -47,9 +53,9 @@ Build-Depends: libpython3-dev , python3-setuptools, rsync [!i386] , - rust-src:native [amd64 arm64 armhf ppc64el riscv64 s390x], - rustc:native (>= 1.82) [amd64 arm64 armhf ppc64el riscv64 s390x], - rustfmt:native [amd64 arm64 armhf ppc64el riscv64 s390x], + rust-1.82-src:native [amd64 arm64 armhf ppc64el riscv64 s390x], + rustc-1.82:native (>= 1.82) [amd64 arm64 armhf ppc64el riscv64 s390x], + rustfmt-1.82:native [amd64 arm64 armhf ppc64el riscv64 s390x], uuid-dev , zstd , Build-Depends-Indep: diff --git a/debian/control b/debian/control index 90eeaaecce6cb7..5bb750c7fb94fa 100644 --- a/debian/control +++ b/debian/control @@ -11,8 +11,9 @@ Build-Depends: automake , bc , bindgen:native [amd64 arm64 armhf ppc64el riscv64 s390x], + binutils-dev, bison , - clang-19:native [amd64 arm64 armhf ppc64el riscv64 s390x], + clang:native [amd64 arm64 armhf ppc64el riscv64 s390x], cpio, curl , debhelper-compat (= 10), @@ -24,7 +25,10 @@ Build-Depends: java-common , kmod , libaudit-dev , + libbpf-dev, + libbpf-tools, libcap-dev , + libcapstone-dev, libdebuginfod-dev [amd64 arm64 armhf ppc64el s390x riscv64] , libdw-dev , libelf-dev , @@ -33,13 +37,15 @@ Build-Depends: libnewt-dev , libnuma-dev [amd64 arm64 ppc64el s390x] , libpci-dev , + libperl-dev, libssl-dev , - libstdc++-dev, + libstdc++-14-dev, libtool , libtraceevent-dev [amd64 arm64 armhf ppc64el s390x riscv64] , libtracefs-dev [amd64 arm64 armhf ppc64el s390x riscv64] , libudev-dev , libunwind8-dev [amd64 arm64 armhf ppc64el] , + llvm-dev, makedumpfile:native [amd64] , openssl , dwarves (>= 1.21) [amd64 arm64 armhf ppc64el s390x riscv64] , @@ -49,9 +55,9 @@ Build-Depends: libpython3-dev , python3-setuptools, rsync [!i386] , - rust-src:native [amd64 arm64 armhf ppc64el riscv64 s390x], - rustc:native (>= 1.82) [amd64 arm64 armhf ppc64el riscv64 s390x], - rustfmt:native [amd64 arm64 armhf ppc64el riscv64 s390x], + rust-1.82-src:native [amd64 arm64 armhf ppc64el riscv64 s390x], + rustc-1.82:native (>= 1.82) [amd64 arm64 armhf ppc64el riscv64 s390x], + rustfmt-1.82:native [amd64 arm64 armhf ppc64el riscv64 s390x], uuid-dev , zstd , Build-Depends-Indep: @@ -199,7 +205,7 @@ Architecture: all Multi-Arch: foreign Section: kernel Priority: optional -Provides: +Provides: linux-cpupower, Recommends: bpftool (>= 7.6.0+6.14.0-8~), @@ -715,4 +721,3 @@ Description: Linux kernel vision modules for version 6.16.3-76061603 one of the linux-modules-vision-generic-64k* meta-packages, which will ensure that upgrades work correctly, and that supporting packages are also installed. - diff --git a/debian/rules b/debian/rules index e03555f2755d69..1def2b76b7d4a2 100755 --- a/debian/rules +++ b/debian/rules @@ -104,8 +104,8 @@ endif # Being used to build a mainline build -- turn off things which do not work. ifeq ($(do_mainline_build),true) - do_tools=false - no_dumpfile=1 +# do_tools=false +# no_dumpfile=1 $(foreach _m,$(all_dkms_modules),$(eval do_$(_m) = false)) do_skip_checks=true do_sources_list = false diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c index 1a4a26e6ffd24c..4cd37fe96c6e94 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c @@ -149,13 +149,13 @@ static int psp_v11_0_wait_for_bootloader(struct psp_context *psp) int ret; int retry_loop; - for (retry_loop = 0; retry_loop < 10; retry_loop++) { + for (retry_loop = 0; retry_loop < 20; retry_loop++) { /* Wait for bootloader to signify that is ready having bit 31 of C2PMSG_35 set to 1 */ ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_35), 0x80000000, - 0x80000000, + 0x8000FFFF, false); if (ret == 0) @@ -399,18 +399,6 @@ static int psp_v11_0_mode1_reset(struct psp_context *psp) msleep(500); - offset = SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_33); - - ret = psp_wait_for(psp, offset, MBOX_TOS_RESP_FLAG, MBOX_TOS_RESP_MASK, - false); - - if (ret) { - DRM_INFO("psp mode 1 reset failed!\n"); - return -EINVAL; - } - - DRM_INFO("psp mode1 reset succeed \n"); - return 0; } @@ -666,7 +654,8 @@ static const struct psp_funcs psp_v11_0_funcs = { .ring_get_wptr = psp_v11_0_ring_get_wptr, .ring_set_wptr = psp_v11_0_ring_set_wptr, .load_usbc_pd_fw = psp_v11_0_load_usbc_pd_fw, - .read_usbc_pd_fw = psp_v11_0_read_usbc_pd_fw + .read_usbc_pd_fw = psp_v11_0_read_usbc_pd_fw, + .wait_for_bootloader = psp_v11_0_wait_for_bootloader }; void psp_v11_0_set_psp_funcs(struct psp_context *psp) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 724de7ed3c0425..b2b97fc0a9cf1d 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -1436,6 +1436,11 @@ intel_dp_mode_valid(struct drm_connector *_connector, if (mode->clock < 10000) return MODE_CLOCK_LOW; + if (intel_has_quirk(display, QUIRK_EDP_MAX_240HZ_HOOK) && + intel_dp_is_edp(intel_dp) && + drm_mode_vrefresh(mode) > 240) + return MODE_BAD; + fixed_mode = intel_panel_fixed_mode(connector, mode); if (intel_dp_is_edp(intel_dp) && fixed_mode) { status = intel_panel_mode_valid(connector, mode); diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/i915/display/intel_quirks.c index a32fae510ed27d..050f3461ba6062 100644 --- a/drivers/gpu/drm/i915/display/intel_quirks.c +++ b/drivers/gpu/drm/i915/display/intel_quirks.c @@ -72,6 +72,12 @@ static void quirk_no_pps_backlight_power_hook(struct intel_display *display) drm_info(display->drm, "Applying no pps backlight power quirk\n"); } +static void quirk_edp_max_240hz_hook(struct intel_display *display) +{ + intel_set_quirk(display, QUIRK_EDP_MAX_240HZ_HOOK); + drm_info(display->drm, "Applying max 240Hz quirk\n"); +} + static void quirk_fw_sync_len(struct intel_dp *intel_dp) { struct intel_display *display = to_intel_display(intel_dp); @@ -120,6 +126,12 @@ static int intel_dmi_no_pps_backlight(const struct dmi_system_id *id) return 1; } +static int intel_dmi_edp_max_240hz(const struct dmi_system_id *id) +{ + DRM_INFO("Restrict output refreshrate to maximum 240Hz %s\n", id->ident); + return 1; +} + static const struct intel_dmi_quirk intel_dmi_quirks[] = { { .dmi_id_list = &(const struct dmi_system_id[]) { @@ -166,6 +178,31 @@ static const struct intel_dmi_quirk intel_dmi_quirks[] = { }, .hook = quirk_no_pps_backlight_power_hook, }, + { + .dmi_id_list = &(const struct dmi_system_id[]) { + { + .callback = intel_dmi_edp_max_240hz, + .ident = "TUXEDO Stellaris 16 Intel Gen7", + .matches = {DMI_EXACT_MATCH(DMI_BOARD_NAME, "X6AR5xxY"), + }, + }, + { + .callback = intel_dmi_edp_max_240hz, + .ident = "TUXEDO Stellaris 16 Intel Gen7", + .matches = {DMI_EXACT_MATCH(DMI_BOARD_NAME, "X6AR5xxY_mLED"), + }, + }, + { + .callback = intel_dmi_edp_max_240hz, + .ident = "System76 Serval WS", + .matches = {DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "System76"), + DMI_EXACT_MATCH(DMI_BOARD_VERSION, "serw14"), + }, + }, + { } + }, + .hook = quirk_edp_max_240hz_hook, + }, }; static struct intel_quirk intel_quirks[] = { diff --git a/drivers/gpu/drm/i915/display/intel_quirks.h b/drivers/gpu/drm/i915/display/intel_quirks.h index cafdebda75354f..8fe3f3467106ab 100644 --- a/drivers/gpu/drm/i915/display/intel_quirks.h +++ b/drivers/gpu/drm/i915/display/intel_quirks.h @@ -20,6 +20,7 @@ enum intel_quirk_id { QUIRK_LVDS_SSC_DISABLE, QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK, QUIRK_FW_SYNC_LEN, + QUIRK_EDP_MAX_240HZ_HOOK, }; void intel_init_quirks(struct intel_display *display); diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 7b8e80c4f1d98c..c44afd4723617d 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -2573,12 +2573,16 @@ static struct rtable *__mkroute_output(const struct fib_result *res, !netif_is_l3_master(dev_out)) return ERR_PTR(-EINVAL); - if (ipv4_is_lbcast(fl4->daddr)) + if (ipv4_is_lbcast(fl4->daddr)) { type = RTN_BROADCAST; - else if (ipv4_is_multicast(fl4->daddr)) + + /* reset fi to prevent gateway resolution */ + fi = NULL; + } else if (ipv4_is_multicast(fl4->daddr)) { type = RTN_MULTICAST; - else if (ipv4_is_zeronet(fl4->daddr)) + } else if (ipv4_is_zeronet(fl4->daddr)) { return ERR_PTR(-EINVAL); + } if (dev_out->flags & IFF_LOOPBACK) flags |= RTCF_LOCAL; @@ -2586,6 +2590,7 @@ static struct rtable *__mkroute_output(const struct fib_result *res, do_cache = true; if (type == RTN_BROADCAST) { flags |= RTCF_BROADCAST | RTCF_LOCAL; + fi = NULL; } else if (type == RTN_MULTICAST) { flags |= RTCF_MULTICAST | RTCF_LOCAL; if (!ip_check_mc_rcu(in_dev, fl4->daddr, fl4->saddr, @@ -2655,8 +2660,12 @@ static struct rtable *__mkroute_output(const struct fib_result *res, rth->dst.output = ip_mc_output; RT_CACHE_STAT_INC(out_slow_mc); } + if (type == RTN_BROADCAST) { + /* ensure MTU value for broadcast routes is retained */ + ip_dst_init_metrics(&rth->dst, res->fi->fib_metrics); + } #ifdef CONFIG_IP_MROUTE - if (type == RTN_MULTICAST) { + else if (type == RTN_MULTICAST) { if (IN_DEV_MFORWARD(in_dev) && !ipv4_is_local_multicast(fl4->daddr)) { rth->dst.input = ip_mr_input;