From nobody Mon Oct 27 00:19:05 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cvvJB3vjyz6DxQL; Mon, 27 Oct 2025 00:19:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cvvJB1zhFz3nXb; Mon, 27 Oct 2025 00:19:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761524346; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JSPwB5lyO+I21tkeP0crraeDraLfpj4vKpH30C6hf54=; b=x8KJ/R8c/5g9eP8fmDVIF/QIW7utWL75Qx+9kGUdptyS2w8RRA9ti11osxcTW2K0lRpU5j mpdp9GERUWOWFYx0t9wLtD2Mw+rI1+QCTk/EkSKpPv0KLoqEBMzTwipKb3bu4KLlAU2odY 58vXiff5TIxToKKECEaGMCrhPd7+zlI6Az30uaYXGoK4rqAZxJmeW1mOkDuqCdFw8r22Kn mzXRKPd/7TyJoTiagZ+v3LYWTmE3ipXZpAB28WLQWuoA2BX75CJGm1o5tCnrOXSrozp4Fc zHHGnOOWsWJ/z+5nxOHvLlPpx7DGWktRRKUZ5rQwNY2pgjqxr8ipUuOEyE3ozw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761524346; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JSPwB5lyO+I21tkeP0crraeDraLfpj4vKpH30C6hf54=; b=HV7UpVvUnU5vgdxF11dyF2KxKPD7iZ4V2v+slBZoLZ+72L1IRc/PFLMtgR0VsH2zoAaT7N e+NMLGm9+ylygMQ8DoUviQIR4l6/+OKqBblTPKm5Ec5/6Yb++/2c10sLBFZXU3a+9zvNeY hsO4c3IkbbByWpDNJKGMlcOpxM59YOkp25o5O92/PfGviYg9rr3SQv3IjcYkzwN5SzNcx/ xd138fv7D8Y3lflBYO9pnOvQTw2PrOSroicOxBt7gYZv6foaviT6PY68fsHprTP5pzC69A ccxWzuY7P8eg6C1gnqH4AZoKfiMCgyxFMHvxxRSGpGBOqla7zMrwTtWdJ5KG/w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761524346; a=rsa-sha256; cv=none; b=aclaHc//RA1QV5IE0qSpWly8njlNZhBU/xgtp3R/d0JMV8WKej2ImtWkIl0Nwkbi1H5GHz oiCxtoNuMCSlQnH1V5ozCdHW/kxXvfAcZhLM+a2askyDO3Iv4XzNv1gaPJuTq2sBMBLaWm Ot4IUyYq8FNAvFU63wuxRO+oNLYpVF2YHJRboZHYEjw0fX0r5lv80jr9CD0tfV026EJjCc E8RcDtU5lZ9hjvhWd8XWNUaoT4IDjb8csyOP9sJ+vKUQG+GHQBa2SekqoKxEUrkDTWIDG+ UkVAeo0HRVccVwtUrEufs5v3Qcx9z2Zr+qrimXXCQ5SKvQT4jT5o52QHOsC45A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cvvJB1Xmqzw8B; Mon, 27 Oct 2025 00:19:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59R0J6Pg043126; Mon, 27 Oct 2025 00:19:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59R0J5I9043122; Mon, 27 Oct 2025 00:19:05 GMT (envelope-from git) Date: Mon, 27 Oct 2025 00:19:05 GMT Message-Id: <202510270019.59R0J5I9043122@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 0272ecf58625 - stable/15 - rtw88: update Realtek's rtw88 driver List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 0272ecf586255991f94f80378c4a3384e83fccc5 Auto-Submitted: auto-generated The branch stable/15 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=0272ecf586255991f94f80378c4a3384e83fccc5 commit 0272ecf586255991f94f80378c4a3384e83fccc5 Author: Bjoern A. Zeeb AuthorDate: 2025-10-17 20:22:54 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-10-27 00:18:21 +0000 rtw88: update Realtek's rtw88 driver This version is based on git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git e5f0a698b34ed76002dc5cff3804a61c80233a7a ( tag: v6.17 ). (cherry picked from commit eb15fdb1b72de02e7a4c454f7eeeb1cee5cb83df) --- sys/contrib/dev/rtw88/Makefile | 9 + sys/contrib/dev/rtw88/coex.c | 24 +- sys/contrib/dev/rtw88/debug.c | 57 +- sys/contrib/dev/rtw88/fw.c | 31 +- sys/contrib/dev/rtw88/fw.h | 1 + sys/contrib/dev/rtw88/hci.h | 8 + sys/contrib/dev/rtw88/mac.c | 50 +- sys/contrib/dev/rtw88/mac.h | 3 + sys/contrib/dev/rtw88/mac80211.c | 11 +- sys/contrib/dev/rtw88/main.c | 118 +- sys/contrib/dev/rtw88/main.h | 65 +- sys/contrib/dev/rtw88/pci.c | 55 +- sys/contrib/dev/rtw88/pci.h | 1 + sys/contrib/dev/rtw88/phy.c | 215 +- sys/contrib/dev/rtw88/phy.h | 20 +- sys/contrib/dev/rtw88/reg.h | 69 +- sys/contrib/dev/rtw88/rtw8703b.c | 64 +- sys/contrib/dev/rtw88/rtw8723cs.c | 2 +- sys/contrib/dev/rtw88/rtw8723d.c | 8 +- sys/contrib/dev/rtw88/rtw8723de.c | 3 +- sys/contrib/dev/rtw88/rtw8723ds.c | 2 +- sys/contrib/dev/rtw88/rtw8723du.c | 2 +- sys/contrib/dev/rtw88/rtw8723x.c | 68 +- sys/contrib/dev/rtw88/rtw8723x.h | 6 + sys/contrib/dev/rtw88/rtw8812a.c | 5 +- sys/contrib/dev/rtw88/rtw8812au.c | 2 +- sys/contrib/dev/rtw88/rtw8814a.c | 2281 +++ sys/contrib/dev/rtw88/rtw8814a.h | 62 + sys/contrib/dev/rtw88/rtw8814a_table.c | 23930 +++++++++++++++++++++++++++++++ sys/contrib/dev/rtw88/rtw8814a_table.h | 40 + sys/contrib/dev/rtw88/rtw8814ae.c | 34 + sys/contrib/dev/rtw88/rtw8814au.c | 54 + sys/contrib/dev/rtw88/rtw8821a.c | 5 +- sys/contrib/dev/rtw88/rtw8821au.c | 2 +- sys/contrib/dev/rtw88/rtw8821c.c | 21 +- sys/contrib/dev/rtw88/rtw8821ce.c | 3 +- sys/contrib/dev/rtw88/rtw8821cs.c | 2 +- sys/contrib/dev/rtw88/rtw8821cu.c | 2 +- sys/contrib/dev/rtw88/rtw8822b.c | 22 +- sys/contrib/dev/rtw88/rtw8822be.c | 3 +- sys/contrib/dev/rtw88/rtw8822bs.c | 2 +- sys/contrib/dev/rtw88/rtw8822bu.c | 8 +- sys/contrib/dev/rtw88/rtw8822c.c | 11 +- sys/contrib/dev/rtw88/rtw8822ce.c | 3 +- sys/contrib/dev/rtw88/rtw8822cs.c | 2 +- sys/contrib/dev/rtw88/rtw8822cu.c | 2 +- sys/contrib/dev/rtw88/rtw88xxa.c | 2 +- sys/contrib/dev/rtw88/rx.c | 6 + sys/contrib/dev/rtw88/sar.c | 2 +- sys/contrib/dev/rtw88/sdio.c | 37 +- sys/contrib/dev/rtw88/tx.c | 3 +- sys/contrib/dev/rtw88/usb.c | 65 +- sys/contrib/dev/rtw88/util.c | 3 +- sys/modules/rtw88/Makefile | 5 +- 54 files changed, 27180 insertions(+), 331 deletions(-) diff --git a/sys/contrib/dev/rtw88/Makefile b/sys/contrib/dev/rtw88/Makefile index 0cbbb366e393..0b3da05a2938 100644 --- a/sys/contrib/dev/rtw88/Makefile +++ b/sys/contrib/dev/rtw88/Makefile @@ -94,6 +94,15 @@ rtw88_8821au-objs := rtw8821au.o obj-$(CONFIG_RTW88_8812AU) += rtw88_8812au.o rtw88_8812au-objs := rtw8812au.o +obj-$(CONFIG_RTW88_8814A) += rtw88_8814a.o +rtw88_8814a-objs := rtw8814a.o rtw8814a_table.o + +obj-$(CONFIG_RTW88_8814AE) += rtw88_8814ae.o +rtw88_8814ae-objs := rtw8814ae.o + +obj-$(CONFIG_RTW88_8814AU) += rtw88_8814au.o +rtw88_8814au-objs := rtw8814au.o + obj-$(CONFIG_RTW88_PCI) += rtw88_pci.o rtw88_pci-objs := pci.o diff --git a/sys/contrib/dev/rtw88/coex.c b/sys/contrib/dev/rtw88/coex.c index c929db1e53ca..b4dc6ff2c175 100644 --- a/sys/contrib/dev/rtw88/coex.c +++ b/sys/contrib/dev/rtw88/coex.c @@ -309,7 +309,7 @@ static void rtw_coex_tdma_timer_base(struct rtw_dev *rtwdev, u8 type) { struct rtw_coex *coex = &rtwdev->coex; struct rtw_coex_stat *coex_stat = &coex->stat; - u8 para[2] = {0}; + u8 para[6] = {}; u8 times; u16 tbtt_interval = coex_stat->wl_beacon_interval; @@ -1501,28 +1501,28 @@ static u8 rtw_coex_algorithm(struct rtw_dev *rtwdev) algorithm = COEX_ALGO_HFP; break; case BPM_HID: - case BPM_HFP + BPM_HID: + case BPM_HFP | BPM_HID: algorithm = COEX_ALGO_HID; break; - case BPM_HFP + BPM_A2DP: - case BPM_HID + BPM_A2DP: - case BPM_HFP + BPM_HID + BPM_A2DP: + case BPM_HFP | BPM_A2DP: + case BPM_HID | BPM_A2DP: + case BPM_HFP | BPM_HID | BPM_A2DP: algorithm = COEX_ALGO_A2DP_HID; break; - case BPM_HFP + BPM_PAN: - case BPM_HID + BPM_PAN: - case BPM_HFP + BPM_HID + BPM_PAN: + case BPM_HFP | BPM_PAN: + case BPM_HID | BPM_PAN: + case BPM_HFP | BPM_HID | BPM_PAN: algorithm = COEX_ALGO_PAN_HID; break; - case BPM_HFP + BPM_A2DP + BPM_PAN: - case BPM_HID + BPM_A2DP + BPM_PAN: - case BPM_HFP + BPM_HID + BPM_A2DP + BPM_PAN: + case BPM_HFP | BPM_A2DP | BPM_PAN: + case BPM_HID | BPM_A2DP | BPM_PAN: + case BPM_HFP | BPM_HID | BPM_A2DP | BPM_PAN: algorithm = COEX_ALGO_A2DP_PAN_HID; break; case BPM_PAN: algorithm = COEX_ALGO_PAN; break; - case BPM_A2DP + BPM_PAN: + case BPM_A2DP | BPM_PAN: algorithm = COEX_ALGO_A2DP_PAN; break; case BPM_A2DP: diff --git a/sys/contrib/dev/rtw88/debug.c b/sys/contrib/dev/rtw88/debug.c index f0ee8e62da3b..53742a3220f2 100644 --- a/sys/contrib/dev/rtw88/debug.c +++ b/sys/contrib/dev/rtw88/debug.c @@ -654,10 +654,10 @@ static void rtw_print_rate(struct seq_file *m, u8 rate) case DESC_RATE6M...DESC_RATE54M: rtw_print_ofdm_rate_txt(m, rate); break; - case DESC_RATEMCS0...DESC_RATEMCS15: + case DESC_RATEMCS0...DESC_RATEMCS31: rtw_print_ht_rate_txt(m, rate); break; - case DESC_RATEVHT1SS_MCS0...DESC_RATEVHT2SS_MCS9: + case DESC_RATEVHT1SS_MCS0...DESC_RATEVHT4SS_MCS9: rtw_print_vht_rate_txt(m, rate); break; default: @@ -692,9 +692,11 @@ static int rtw_debugfs_get_tx_pwr_tbl(struct seq_file *m, void *v) { struct rtw_debugfs_priv *debugfs_priv = m->private; struct rtw_dev *rtwdev = debugfs_priv->rtwdev; + struct rtw_power_params pwr_param = {0}; struct rtw_hal *hal = &rtwdev->hal; + u8 nss = rtwdev->efuse.hw_cap.nss; u8 path, rate, bw, ch, regd; - struct rtw_power_params pwr_param = {0}; + u8 max_ht_rate, max_rate; mutex_lock(&rtwdev->mutex); bw = hal->current_band_width; @@ -707,19 +709,23 @@ static int rtw_debugfs_get_tx_pwr_tbl(struct seq_file *m, void *v) seq_printf(m, "%-4s %-10s %-9s %-9s (%-4s %-4s %-4s) %-4s\n", "path", "rate", "pwr", "base", "byr", "lmt", "sar", "rem"); + max_ht_rate = DESC_RATEMCS0 + nss * 8 - 1; + + if (rtwdev->chip->vht_supported) + max_rate = DESC_RATEVHT1SS_MCS0 + nss * 10 - 1; + else + max_rate = max_ht_rate; + mutex_lock(&hal->tx_power_mutex); - for (path = RF_PATH_A; path <= RF_PATH_B; path++) { + for (path = RF_PATH_A; path < hal->rf_path_num; path++) { /* there is no CCK rates used in 5G */ if (hal->current_band_type == RTW_BAND_5G) rate = DESC_RATE6M; else rate = DESC_RATE1M; - /* now, not support vht 3ss and vht 4ss*/ - for (; rate <= DESC_RATEVHT2SS_MCS9; rate++) { - /* now, not support ht 3ss and ht 4ss*/ - if (rate > DESC_RATEMCS15 && - rate < DESC_RATEVHT1SS_MCS0) + for (; rate <= max_rate; rate++) { + if (rate > max_ht_rate && rate <= DESC_RATEMCS31) continue; rtw_get_tx_power_params(rtwdev, path, rate, bw, @@ -849,20 +855,28 @@ static int rtw_debugfs_get_phy_info(struct seq_file *m, void *v) last_cnt->num_qry_pkt[rate_id + 9]); } - seq_printf(m, "[RSSI(dBm)] = {%d, %d}\n", + seq_printf(m, "[RSSI(dBm)] = {%d, %d, %d, %d}\n", dm_info->rssi[RF_PATH_A] - 100, - dm_info->rssi[RF_PATH_B] - 100); - seq_printf(m, "[Rx EVM(dB)] = {-%d, -%d}\n", + dm_info->rssi[RF_PATH_B] - 100, + dm_info->rssi[RF_PATH_C] - 100, + dm_info->rssi[RF_PATH_D] - 100); + seq_printf(m, "[Rx EVM(dB)] = {-%d, -%d, -%d, -%d}\n", dm_info->rx_evm_dbm[RF_PATH_A], - dm_info->rx_evm_dbm[RF_PATH_B]); - seq_printf(m, "[Rx SNR] = {%d, %d}\n", + dm_info->rx_evm_dbm[RF_PATH_B], + dm_info->rx_evm_dbm[RF_PATH_C], + dm_info->rx_evm_dbm[RF_PATH_D]); + seq_printf(m, "[Rx SNR] = {%d, %d, %d, %d}\n", dm_info->rx_snr[RF_PATH_A], - dm_info->rx_snr[RF_PATH_B]); - seq_printf(m, "[CFO_tail(KHz)] = {%d, %d}\n", + dm_info->rx_snr[RF_PATH_B], + dm_info->rx_snr[RF_PATH_C], + dm_info->rx_snr[RF_PATH_D]); + seq_printf(m, "[CFO_tail(KHz)] = {%d, %d, %d, %d}\n", dm_info->cfo_tail[RF_PATH_A], - dm_info->cfo_tail[RF_PATH_B]); + dm_info->cfo_tail[RF_PATH_B], + dm_info->cfo_tail[RF_PATH_C], + dm_info->cfo_tail[RF_PATH_D]); - if (dm_info->curr_rx_rate >= DESC_RATE11M) { + if (dm_info->curr_rx_rate >= DESC_RATE6M) { seq_puts(m, "[Rx Average Status]:\n"); seq_printf(m, " * OFDM, EVM: {-%d}, SNR: {%d}\n", (u8)ewma_evm_read(&ewma_evm[RTW_EVM_OFDM]), @@ -875,6 +889,13 @@ static int rtw_debugfs_get_phy_info(struct seq_file *m, void *v) (u8)ewma_evm_read(&ewma_evm[RTW_EVM_2SS_B]), (u8)ewma_snr_read(&ewma_snr[RTW_SNR_2SS_A]), (u8)ewma_snr_read(&ewma_snr[RTW_SNR_2SS_B])); + seq_printf(m, " * 3SS, EVM: {-%d, -%d, -%d}, SNR: {%d, %d, %d}\n", + (u8)ewma_evm_read(&ewma_evm[RTW_EVM_3SS_A]), + (u8)ewma_evm_read(&ewma_evm[RTW_EVM_3SS_B]), + (u8)ewma_evm_read(&ewma_evm[RTW_EVM_3SS_C]), + (u8)ewma_snr_read(&ewma_snr[RTW_SNR_3SS_A]), + (u8)ewma_snr_read(&ewma_snr[RTW_SNR_3SS_B]), + (u8)ewma_snr_read(&ewma_snr[RTW_SNR_3SS_C])); } seq_puts(m, "[Rx Counter]:\n"); diff --git a/sys/contrib/dev/rtw88/fw.c b/sys/contrib/dev/rtw88/fw.c index ae5af6bc3e92..5ce4a6bcffb6 100644 --- a/sys/contrib/dev/rtw88/fw.c +++ b/sys/contrib/dev/rtw88/fw.c @@ -521,7 +521,7 @@ rtw_fw_send_general_info(struct rtw_dev *rtwdev) u8 h2c_pkt[H2C_PKT_SIZE] = {0}; u16 total_size = H2C_PKT_HDR_SIZE + 4; - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) return; rtw_h2c_pkt_set_header(h2c_pkt, H2C_PKT_GENERAL_INFO); @@ -544,7 +544,7 @@ rtw_fw_send_phydm_info(struct rtw_dev *rtwdev) u16 total_size = H2C_PKT_HDR_SIZE + 8; u8 fw_rf_type = 0; - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) return; if (hal->rf_type == RF_1T1R) @@ -735,6 +735,7 @@ void rtw_fw_send_ra_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, { u8 h2c_pkt[H2C_PKT_SIZE] = {0}; bool disable_pt = true; + u32 mask_hi; SET_H2C_CMD_ID_CLASS(h2c_pkt, H2C_CMD_RA_INFO); @@ -755,6 +756,20 @@ void rtw_fw_send_ra_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, si->init_ra_lv = 0; rtw_fw_send_h2c_command(rtwdev, h2c_pkt); + + if (rtwdev->chip->id != RTW_CHIP_TYPE_8814A) + return; + + SET_H2C_CMD_ID_CLASS(h2c_pkt, H2C_CMD_RA_INFO_HI); + + mask_hi = si->ra_mask >> 32; + + SET_RA_INFO_RA_MASK0(h2c_pkt, (mask_hi & 0xff)); + SET_RA_INFO_RA_MASK1(h2c_pkt, (mask_hi & 0xff00) >> 8); + SET_RA_INFO_RA_MASK2(h2c_pkt, (mask_hi & 0xff0000) >> 16); + SET_RA_INFO_RA_MASK3(h2c_pkt, (mask_hi & 0xff000000) >> 24); + + rtw_fw_send_h2c_command(rtwdev, h2c_pkt); } void rtw_fw_media_status_report(struct rtw_dev *rtwdev, u8 mac_id, bool connect) @@ -1451,7 +1466,7 @@ void rtw_add_rsvd_page_sta(struct rtw_dev *rtwdev, int rtw_fw_write_data_rsvd_page(struct rtw_dev *rtwdev, u16 pg_addr, u8 *buf, u32 size) { - u8 bckp[2]; + u8 bckp[3]; u8 val; u16 rsvd_pg_head; u32 bcn_valid_addr; @@ -1463,7 +1478,9 @@ int rtw_fw_write_data_rsvd_page(struct rtw_dev *rtwdev, u16 pg_addr, if (!size) return -EINVAL; - if (rtw_chip_wcpu_11n(rtwdev)) { + bckp[2] = rtw_read8(rtwdev, REG_BCN_CTRL); + + if (rtw_chip_wcpu_8051(rtwdev)) { rtw_write32_set(rtwdev, REG_DWBCN0_CTRL, BIT_BCN_VALID); } else { pg_addr &= BIT_MASK_BCN_HEAD_1_V1; @@ -1476,6 +1493,9 @@ int rtw_fw_write_data_rsvd_page(struct rtw_dev *rtwdev, u16 pg_addr, val |= BIT_ENSWBCN >> 8; rtw_write8(rtwdev, REG_CR + 1, val); + rtw_write8(rtwdev, REG_BCN_CTRL, + (bckp[2] & ~BIT_EN_BCN_FUNCTION) | BIT_DIS_TSF_UDT); + if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_PCIE) { val = rtw_read8(rtwdev, REG_FWHW_TXQ_CTRL + 2); bckp[1] = val; @@ -1489,7 +1509,7 @@ int rtw_fw_write_data_rsvd_page(struct rtw_dev *rtwdev, u16 pg_addr, goto restore; } - if (rtw_chip_wcpu_11n(rtwdev)) { + if (rtw_chip_wcpu_8051(rtwdev)) { bcn_valid_addr = REG_DWBCN0_CTRL; bcn_valid_mask = BIT_BCN_VALID; } else { @@ -1506,6 +1526,7 @@ restore: rsvd_pg_head = rtwdev->fifo.rsvd_boundary; rtw_write16(rtwdev, REG_FIFOPAGE_CTRL_2, rsvd_pg_head | BIT_BCN_VALID_V1); + rtw_write8(rtwdev, REG_BCN_CTRL, bckp[2]); if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_PCIE) rtw_write8(rtwdev, REG_FWHW_TXQ_CTRL + 2, bckp[1]); rtw_write8(rtwdev, REG_CR + 1, bckp[0]); diff --git a/sys/contrib/dev/rtw88/fw.h b/sys/contrib/dev/rtw88/fw.h index 404de1b0c407..48ad9ceab6ea 100644 --- a/sys/contrib/dev/rtw88/fw.h +++ b/sys/contrib/dev/rtw88/fw.h @@ -557,6 +557,7 @@ static inline void rtw_h2c_pkt_set_header(u8 *h2c_pkt, u8 sub_id) #define H2C_CMD_DEFAULT_PORT 0x2c #define H2C_CMD_RA_INFO 0x40 #define H2C_CMD_RSSI_MONITOR 0x42 +#define H2C_CMD_RA_INFO_HI 0x46 #define H2C_CMD_BCN_FILTER_OFFLOAD_P0 0x56 #define H2C_CMD_BCN_FILTER_OFFLOAD_P1 0x57 #define H2C_CMD_WL_PHY_INFO 0x58 diff --git a/sys/contrib/dev/rtw88/hci.h b/sys/contrib/dev/rtw88/hci.h index 96aeda26014e..d4bee9c3ecfe 100644 --- a/sys/contrib/dev/rtw88/hci.h +++ b/sys/contrib/dev/rtw88/hci.h @@ -19,6 +19,8 @@ struct rtw_hci_ops { void (*link_ps)(struct rtw_dev *rtwdev, bool enter); void (*interface_cfg)(struct rtw_dev *rtwdev); void (*dynamic_rx_agg)(struct rtw_dev *rtwdev, bool enable); + void (*write_firmware_page)(struct rtw_dev *rtwdev, u32 page, + const u8 *data, u32 size); int (*write_data_rsvd_page)(struct rtw_dev *rtwdev, u8 *buf, u32 size); int (*write_data_h2c)(struct rtw_dev *rtwdev, u8 *buf, u32 size); @@ -79,6 +81,12 @@ static inline void rtw_hci_dynamic_rx_agg(struct rtw_dev *rtwdev, bool enable) rtwdev->hci.ops->dynamic_rx_agg(rtwdev, enable); } +static inline void rtw_hci_write_firmware_page(struct rtw_dev *rtwdev, u32 page, + const u8 *data, u32 size) +{ + rtwdev->hci.ops->write_firmware_page(rtwdev, page, data, size); +} + static inline int rtw_hci_write_data_rsvd_page(struct rtw_dev *rtwdev, u8 *buf, u32 size) { diff --git a/sys/contrib/dev/rtw88/mac.c b/sys/contrib/dev/rtw88/mac.c index cae9cca6dca3..eaa928bab240 100644 --- a/sys/contrib/dev/rtw88/mac.c +++ b/sys/contrib/dev/rtw88/mac.c @@ -41,7 +41,7 @@ void rtw_set_channel_mac(struct rtw_dev *rtwdev, u8 channel, u8 bw, } rtw_write32(rtwdev, REG_WMAC_TRXPTCL_CTL, value32); - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) return; value32 = rtw_read32(rtwdev, REG_AFE_CTRL1) & ~(BIT_MAC_CLK_SEL); @@ -67,7 +67,7 @@ static int rtw_mac_pre_system_cfg(struct rtw_dev *rtwdev) rtw_write8(rtwdev, REG_RSV_CTRL, 0); - if (rtw_chip_wcpu_11n(rtwdev)) { + if (rtw_chip_wcpu_8051(rtwdev)) { if (rtw_read32(rtwdev, REG_SYS_CFG1) & BIT_LDO) rtw_write8(rtwdev, REG_LDO_SWR_CTRL, LDO_SEL); else @@ -278,7 +278,7 @@ static int rtw_mac_power_switch(struct rtw_dev *rtwdev, bool pwr_on) bool cur_pwr; int ret; - if (rtw_chip_wcpu_11ac(rtwdev)) { + if (rtw_chip_wcpu_3081(rtwdev)) { rpwm = rtw_read8(rtwdev, rtwdev->hci.rpwm_addr); /* Check FW still exist or not */ @@ -291,6 +291,7 @@ static int rtw_mac_power_switch(struct rtw_dev *rtwdev, bool pwr_on) if (rtw_read8(rtwdev, REG_CR) == 0xea) cur_pwr = false; else if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_USB && + chip->id != RTW_CHIP_TYPE_8814A && (rtw_read8(rtwdev, REG_SYS_STATUS1 + 1) & BIT(0))) cur_pwr = false; else @@ -368,7 +369,7 @@ static int __rtw_mac_init_system_cfg_legacy(struct rtw_dev *rtwdev) static int rtw_mac_init_system_cfg(struct rtw_dev *rtwdev) { - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) return __rtw_mac_init_system_cfg_legacy(rtwdev); return __rtw_mac_init_system_cfg(rtwdev); @@ -784,7 +785,8 @@ static int __rtw_download_firmware(struct rtw_dev *rtwdev, if (!check_firmware_size(data, size)) return -EINVAL; - if (!ltecoex_read_reg(rtwdev, 0x38, <ecoex_bckp)) + if (rtwdev->chip->ltecoex_addr && + !ltecoex_read_reg(rtwdev, 0x38, <ecoex_bckp)) return -EBUSY; wlan_cpu_enable(rtwdev, false); @@ -802,7 +804,8 @@ static int __rtw_download_firmware(struct rtw_dev *rtwdev, wlan_cpu_enable(rtwdev, true); - if (!ltecoex_reg_write(rtwdev, 0x38, ltecoex_bckp)) { + if (rtwdev->chip->ltecoex_addr && + !ltecoex_reg_write(rtwdev, 0x38, ltecoex_bckp)) { ret = -EBUSY; goto dlfw_fail; } @@ -853,8 +856,8 @@ fwdl_ready: } } -static void -write_firmware_page(struct rtw_dev *rtwdev, u32 page, const u8 *data, u32 size) +void rtw_write_firmware_page(struct rtw_dev *rtwdev, u32 page, + const u8 *data, u32 size) { u32 val32; u32 block_nr; @@ -884,6 +887,7 @@ write_firmware_page(struct rtw_dev *rtwdev, u32 page, const u8 *data, u32 size) rtw_write32(rtwdev, write_addr, le32_to_cpu(remain_data)); } } +EXPORT_SYMBOL(rtw_write_firmware_page); static int download_firmware_legacy(struct rtw_dev *rtwdev, const u8 *data, u32 size) @@ -901,11 +905,13 @@ download_firmware_legacy(struct rtw_dev *rtwdev, const u8 *data, u32 size) rtw_write8_set(rtwdev, REG_MCUFW_CTRL, BIT_FWDL_CHK_RPT); for (page = 0; page < total_page; page++) { - write_firmware_page(rtwdev, page, data, DLFW_PAGE_SIZE_LEGACY); + rtw_hci_write_firmware_page(rtwdev, page, data, + DLFW_PAGE_SIZE_LEGACY); data += DLFW_PAGE_SIZE_LEGACY; } if (last_page_size) - write_firmware_page(rtwdev, page, data, last_page_size); + rtw_hci_write_firmware_page(rtwdev, page, data, + last_page_size); if (!check_hw_ready(rtwdev, REG_MCUFW_CTRL, BIT_FWDL_CHK_RPT, 1)) { rtw_err(rtwdev, "failed to check download firmware report\n"); @@ -975,7 +981,7 @@ out: static int _rtw_download_firmware(struct rtw_dev *rtwdev, struct rtw_fw_state *fw) { - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) return __rtw_download_firmware_legacy(rtwdev, fw); return __rtw_download_firmware(rtwdev, fw); @@ -1116,7 +1122,7 @@ static int txdma_queue_mapping(struct rtw_dev *rtwdev) rtw_write8(rtwdev, REG_CR, 0); rtw_write8(rtwdev, REG_CR, MAC_TRX_ENABLE); - if (rtw_chip_wcpu_11ac(rtwdev)) + if (rtw_chip_wcpu_3081(rtwdev)) rtw_write32(rtwdev, REG_H2CQ_CSR, BIT_H2CQ_FULL); if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_SDIO) { @@ -1139,7 +1145,7 @@ int rtw_set_trx_fifo_info(struct rtw_dev *rtwdev) /* config rsvd page num */ fifo->rsvd_drv_pg_num = chip->rsvd_drv_pg_num; fifo->txff_pg_num = chip->txff_size / chip->page_size; - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) fifo->rsvd_pg_num = fifo->rsvd_drv_pg_num; else fifo->rsvd_pg_num = fifo->rsvd_drv_pg_num + @@ -1157,7 +1163,7 @@ int rtw_set_trx_fifo_info(struct rtw_dev *rtwdev) fifo->rsvd_boundary = fifo->txff_pg_num - fifo->rsvd_pg_num; cur_pg_addr = fifo->txff_pg_num; - if (rtw_chip_wcpu_11ac(rtwdev)) { + if (rtw_chip_wcpu_3081(rtwdev)) { cur_pg_addr -= csi_buf_pg_num; fifo->rsvd_csibuf_addr = cur_pg_addr; cur_pg_addr -= RSVD_PG_FW_TXBUF_NUM; @@ -1286,7 +1292,7 @@ static int priority_queue_cfg(struct rtw_dev *rtwdev) pubq_num = fifo->acq_pg_num - pg_tbl->hq_num - pg_tbl->lq_num - pg_tbl->nq_num - pg_tbl->exq_num - pg_tbl->gapq_num; - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) return __priority_queue_cfg_legacy(rtwdev, pg_tbl, pubq_num); else return __priority_queue_cfg(rtwdev, pg_tbl, pubq_num); @@ -1302,7 +1308,7 @@ static int init_h2c(struct rtw_dev *rtwdev) u32 h2cq_free; u32 wp, rp; - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) return 0; h2cq_addr = fifo->rsvd_h2cq_addr << TX_PAGE_SIZE_SHIFT; @@ -1369,7 +1375,7 @@ static int rtw_drv_info_cfg(struct rtw_dev *rtwdev) u8 value8; rtw_write8(rtwdev, REG_RX_DRVINFO_SZ, PHY_STATUS_SIZE); - if (rtw_chip_wcpu_11ac(rtwdev)) { + if (rtw_chip_wcpu_3081(rtwdev)) { value8 = rtw_read8(rtwdev, REG_TRXFF_BNDY + 1); value8 &= 0xF0; /* For rxdesc len = 0 issue */ @@ -1403,3 +1409,13 @@ int rtw_mac_init(struct rtw_dev *rtwdev) return 0; } + +int rtw_mac_postinit(struct rtw_dev *rtwdev) +{ + const struct rtw_chip_info *chip = rtwdev->chip; + + if (!chip->ops->mac_postinit) + return 0; + + return chip->ops->mac_postinit(rtwdev); +} diff --git a/sys/contrib/dev/rtw88/mac.h b/sys/contrib/dev/rtw88/mac.h index 6905e2747372..b73af90ee1d7 100644 --- a/sys/contrib/dev/rtw88/mac.h +++ b/sys/contrib/dev/rtw88/mac.h @@ -34,8 +34,11 @@ int rtw_pwr_seq_parser(struct rtw_dev *rtwdev, const struct rtw_pwr_seq_cmd * const *cmd_seq); int rtw_mac_power_on(struct rtw_dev *rtwdev); void rtw_mac_power_off(struct rtw_dev *rtwdev); +void rtw_write_firmware_page(struct rtw_dev *rtwdev, u32 page, + const u8 *data, u32 size); int rtw_download_firmware(struct rtw_dev *rtwdev, struct rtw_fw_state *fw); int rtw_mac_init(struct rtw_dev *rtwdev); +int rtw_mac_postinit(struct rtw_dev *rtwdev); void rtw_mac_flush_queues(struct rtw_dev *rtwdev, u32 queues, bool drop); int rtw_set_trx_fifo_info(struct rtw_dev *rtwdev); int rtw_ddma_to_fw_fifo(struct rtw_dev *rtwdev, u32 ocp_src, u32 size); diff --git a/sys/contrib/dev/rtw88/mac80211.c b/sys/contrib/dev/rtw88/mac80211.c index 719052b7c6bb..8d84f1a3bc18 100644 --- a/sys/contrib/dev/rtw88/mac80211.c +++ b/sys/contrib/dev/rtw88/mac80211.c @@ -71,7 +71,7 @@ static void rtw_ops_stop(struct ieee80211_hw *hw, bool suspend) mutex_unlock(&rtwdev->mutex); } -static int rtw_ops_config(struct ieee80211_hw *hw, u32 changed) +static int rtw_ops_config(struct ieee80211_hw *hw, int radio_idx, u32 changed) { struct rtw_dev *rtwdev = hw->priv; int ret = 0; @@ -411,6 +411,8 @@ static void rtw_ops_bss_info_changed(struct ieee80211_hw *hw, if (rtw_bf_support) rtw_bf_assoc(rtwdev, vif, conf); + rtw_set_ampdu_factor(rtwdev, vif, conf); + rtw_fw_beacon_filter_config(rtwdev, true, vif); } else { rtw_leave_lps(rtwdev); @@ -721,7 +723,8 @@ static void rtw_ops_mgd_prepare_tx(struct ieee80211_hw *hw, mutex_unlock(&rtwdev->mutex); } -static int rtw_ops_set_rts_threshold(struct ieee80211_hw *hw, u32 value) +static int rtw_ops_set_rts_threshold(struct ieee80211_hw *hw, int radio_idx, + u32 value) { struct rtw_dev *rtwdev = hw->priv; @@ -810,6 +813,7 @@ static int rtw_ops_set_bitrate_mask(struct ieee80211_hw *hw, } static int rtw_ops_set_antenna(struct ieee80211_hw *hw, + int radio_idx, u32 tx_antenna, u32 rx_antenna) { @@ -821,13 +825,14 @@ static int rtw_ops_set_antenna(struct ieee80211_hw *hw, return -EOPNOTSUPP; mutex_lock(&rtwdev->mutex); - ret = chip->ops->set_antenna(rtwdev, tx_antenna, rx_antenna); + ret = chip->ops->set_antenna(rtwdev, -1, tx_antenna, rx_antenna); mutex_unlock(&rtwdev->mutex); return ret; } static int rtw_ops_get_antenna(struct ieee80211_hw *hw, + int radio_idx, u32 *tx_antenna, u32 *rx_antenna) { diff --git a/sys/contrib/dev/rtw88/main.c b/sys/contrib/dev/rtw88/main.c index 963b73f35350..d9e6e9477dfb 100644 --- a/sys/contrib/dev/rtw88/main.c +++ b/sys/contrib/dev/rtw88/main.c @@ -207,7 +207,7 @@ u16 rtw_desc_to_bitrate(u8 desc_rate) return rate.bitrate; } -static struct ieee80211_supported_band rtw_band_2ghz = { +static const struct ieee80211_supported_band rtw_band_2ghz = { .band = NL80211_BAND_2GHZ, .channels = rtw_channeltable_2g, @@ -220,7 +220,7 @@ static struct ieee80211_supported_band rtw_band_2ghz = { .vht_cap = {0}, }; -static struct ieee80211_supported_band rtw_band_5ghz = { +static const struct ieee80211_supported_band rtw_band_5ghz = { .band = NL80211_BAND_5GHZ, .channels = rtw_channeltable_5g, @@ -420,7 +420,7 @@ int rtw_sta_add(struct rtw_dev *rtwdev, struct ieee80211_sta *sta, struct rtw_vif *rtwvif = (struct rtw_vif *)vif->drv_priv; int i; - if (vif->type == NL80211_IFTYPE_STATION) { + if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls) { si->mac_id = rtwvif->mac_id; } else { si->mac_id = rtw_acquire_macid(rtwdev); @@ -462,7 +462,7 @@ void rtw_sta_remove(struct rtw_dev *rtwdev, struct ieee80211_sta *sta, cancel_work_sync(&si->rc_work); - if (vif->type != NL80211_IFTYPE_STATION) + if (vif->type != NL80211_IFTYPE_STATION || sta->tdls) rtw_release_macid(rtwdev, si->mac_id); if (fw_exist) rtw_fw_media_status_report(rtwdev, si->mac_id, false); @@ -717,6 +717,7 @@ void rtw_fw_recovery(struct rtw_dev *rtwdev) if (!test_bit(RTW_FLAG_RESTARTING, rtwdev->flags)) ieee80211_queue_work(rtwdev->hw, &rtwdev->fw_recovery_work); } +EXPORT_SYMBOL(rtw_fw_recovery); static void __fw_recovery_work(struct rtw_dev *rtwdev) { @@ -1315,7 +1316,9 @@ void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, if (sta->deflink.vht_cap.cap & IEEE80211_VHT_CAP_RXLDPC) ldpc_en = VHT_LDPC_EN; } else if (sta->deflink.ht_cap.ht_supported) { - ra_mask |= (sta->deflink.ht_cap.mcs.rx_mask[1] << 20) | + ra_mask |= ((u64)sta->deflink.ht_cap.mcs.rx_mask[3] << 36) | + ((u64)sta->deflink.ht_cap.mcs.rx_mask[2] << 28) | + (sta->deflink.ht_cap.mcs.rx_mask[1] << 20) | (sta->deflink.ht_cap.mcs.rx_mask[0] << 12); if (sta->deflink.ht_cap.cap & IEEE80211_HT_CAP_RX_STBC) stbc_en = HT_STBC_EN; @@ -1325,6 +1328,9 @@ void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, if (efuse->hw_cap.nss == 1 || rtwdev->hal.txrx_1ss) ra_mask &= RA_MASK_VHT_RATES_1SS | RA_MASK_HT_RATES_1SS; + else if (efuse->hw_cap.nss == 2) + ra_mask &= RA_MASK_VHT_RATES_2SS | RA_MASK_HT_RATES_2SS | + RA_MASK_VHT_RATES_1SS | RA_MASK_HT_RATES_1SS; if (hal->current_band_type == RTW_BAND_5G) { ra_mask |= (u64)sta->deflink.supp_rates[NL80211_BAND_5GHZ] << 4; @@ -1387,10 +1393,9 @@ void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, break; } - if (sta->deflink.vht_cap.vht_supported && ra_mask & 0xffc00000) - tx_num = 2; - else if (sta->deflink.ht_cap.ht_supported && ra_mask & 0xfff00000) - tx_num = 2; + if (sta->deflink.vht_cap.vht_supported || + sta->deflink.ht_cap.ht_supported) + tx_num = efuse->hw_cap.nss; rate_id = get_rate_id(wireless_set, bw_mode, tx_num); @@ -1492,6 +1497,12 @@ int rtw_power_on(struct rtw_dev *rtwdev) chip->ops->phy_set_param(rtwdev); + ret = rtw_mac_postinit(rtwdev); + if (ret) { + rtw_err(rtwdev, "failed to configure mac in postinit\n"); + goto err_off; + } + ret = rtw_hci_start(rtwdev); if (ret) { rtw_err(rtwdev, "failed to start hci\n"); @@ -1646,6 +1657,7 @@ static void rtw_init_ht_cap(struct rtw_dev *rtwdev, { const struct rtw_chip_info *chip = rtwdev->chip; struct rtw_efuse *efuse = &rtwdev->efuse; + int i; ht_cap->ht_supported = true; ht_cap->cap = 0; @@ -1665,25 +1677,20 @@ static void rtw_init_ht_cap(struct rtw_dev *rtwdev, ht_cap->ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K; ht_cap->ampdu_density = chip->ampdu_density; ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED; - if (efuse->hw_cap.nss > 1) { - ht_cap->mcs.rx_mask[0] = 0xFF; - ht_cap->mcs.rx_mask[1] = 0xFF; - ht_cap->mcs.rx_mask[4] = 0x01; - ht_cap->mcs.rx_highest = cpu_to_le16(300); - } else { - ht_cap->mcs.rx_mask[0] = 0xFF; - ht_cap->mcs.rx_mask[1] = 0x00; - ht_cap->mcs.rx_mask[4] = 0x01; - ht_cap->mcs.rx_highest = cpu_to_le16(150); - } + + for (i = 0; i < efuse->hw_cap.nss; i++) + ht_cap->mcs.rx_mask[i] = 0xFF; + ht_cap->mcs.rx_mask[4] = 0x01; + ht_cap->mcs.rx_highest = cpu_to_le16(150 * efuse->hw_cap.nss); } static void rtw_init_vht_cap(struct rtw_dev *rtwdev, struct ieee80211_sta_vht_cap *vht_cap) { struct rtw_efuse *efuse = &rtwdev->efuse; - u16 mcs_map; + u16 mcs_map = 0; __le16 highest; + int i; if (efuse->hw_cap.ptcl != EFUSE_HW_CAP_IGNORE && efuse->hw_cap.ptcl != EFUSE_HW_CAP_PTCL_VHT) @@ -1706,21 +1713,15 @@ static void rtw_init_vht_cap(struct rtw_dev *rtwdev, if (rtw_chip_has_rx_ldpc(rtwdev)) vht_cap->cap |= IEEE80211_VHT_CAP_RXLDPC; - mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_9 << 0 | - IEEE80211_VHT_MCS_NOT_SUPPORTED << 4 | - IEEE80211_VHT_MCS_NOT_SUPPORTED << 6 | - IEEE80211_VHT_MCS_NOT_SUPPORTED << 8 | - IEEE80211_VHT_MCS_NOT_SUPPORTED << 10 | - IEEE80211_VHT_MCS_NOT_SUPPORTED << 12 | - IEEE80211_VHT_MCS_NOT_SUPPORTED << 14; - if (efuse->hw_cap.nss > 1) { - highest = cpu_to_le16(780); - mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << 2; - } else { - highest = cpu_to_le16(390); - mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << 2; + for (i = 0; i < 8; i++) { + if (i < efuse->hw_cap.nss) + mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << (i * 2); + else + mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << (i * 2); } + highest = cpu_to_le16(390 * efuse->hw_cap.nss); + vht_cap->vht_mcs.rx_mcs_map = cpu_to_le16(mcs_map); vht_cap->vht_mcs.tx_mcs_map = cpu_to_le16(mcs_map); vht_cap->vht_mcs.rx_highest = highest; @@ -1872,7 +1873,7 @@ static void __update_firmware_info_legacy(struct rtw_dev *rtwdev, static void update_firmware_info(struct rtw_dev *rtwdev, struct rtw_fw_state *fw) { - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) __update_firmware_info_legacy(rtwdev, fw); else __update_firmware_info(rtwdev, fw); @@ -2329,7 +2330,6 @@ EXPORT_SYMBOL(rtw_core_deinit); int rtw_register_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw) { - bool sta_mode_only = rtwdev->hci.type == RTW_HCI_TYPE_SDIO; struct rtw_hal *hal = &rtwdev->hal; int max_tx_headroom = 0; int ret; @@ -2353,17 +2353,15 @@ int rtw_register_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw) ieee80211_hw_set(hw, SUPPORTS_PS); ieee80211_hw_set(hw, SUPPORTS_DYNAMIC_PS); ieee80211_hw_set(hw, SUPPORT_FAST_XMIT); - ieee80211_hw_set(hw, SUPPORTS_AMSDU_IN_AMPDU); + if (rtwdev->chip->amsdu_in_ampdu) + ieee80211_hw_set(hw, SUPPORTS_AMSDU_IN_AMPDU); ieee80211_hw_set(hw, HAS_RATE_CONTROL); ieee80211_hw_set(hw, TX_AMSDU); ieee80211_hw_set(hw, SINGLE_SCAN_ON_ALL_BANDS); - if (sta_mode_only) - hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION); - else - hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | - BIT(NL80211_IFTYPE_AP) | - BIT(NL80211_IFTYPE_ADHOC); + hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | + BIT(NL80211_IFTYPE_AP) | + BIT(NL80211_IFTYPE_ADHOC); hw->wiphy->available_antennas_tx = hal->antenna_tx; hw->wiphy->available_antennas_rx = hal->antenna_rx; @@ -2374,7 +2372,7 @@ int rtw_register_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw) hw->wiphy->max_scan_ssids = RTW_SCAN_MAX_SSIDS; hw->wiphy->max_scan_ie_len = rtw_get_max_scan_ie_len(rtwdev); - if (!sta_mode_only && rtwdev->chip->id == RTW_CHIP_TYPE_8822C) { + if (rtwdev->chip->id == RTW_CHIP_TYPE_8822C) { hw->wiphy->iface_combinations = rtw_iface_combs; hw->wiphy->n_iface_combinations = ARRAY_SIZE(rtw_iface_combs); } @@ -2558,6 +2556,38 @@ void rtw_core_enable_beacon(struct rtw_dev *rtwdev, bool enable) } } +void rtw_set_ampdu_factor(struct rtw_dev *rtwdev, struct ieee80211_vif *vif, + struct ieee80211_bss_conf *bss_conf) +{ + const struct rtw_chip_ops *ops = rtwdev->chip->ops; + struct ieee80211_sta *sta; + u8 factor = 0xff; + + if (!ops->set_ampdu_factor) + return; + + rcu_read_lock(); + + sta = ieee80211_find_sta(vif, bss_conf->bssid); + if (!sta) { + rcu_read_unlock(); + rtw_warn(rtwdev, "%s: failed to find station %pM\n", + __func__, bss_conf->bssid); + return; + } + + if (sta->deflink.vht_cap.vht_supported) + factor = u32_get_bits(sta->deflink.vht_cap.cap, + IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK); + else if (sta->deflink.ht_cap.ht_supported) + factor = sta->deflink.ht_cap.ampdu_factor; + + rcu_read_unlock(); + + if (factor != 0xff) + ops->set_ampdu_factor(rtwdev, factor); +} + MODULE_AUTHOR("Realtek Corporation"); MODULE_DESCRIPTION("Realtek 802.11ac wireless core module"); MODULE_LICENSE("Dual BSD/GPL"); diff --git a/sys/contrib/dev/rtw88/main.h b/sys/contrib/dev/rtw88/main.h index 963863618523..d1e4f3e41ba1 100644 --- a/sys/contrib/dev/rtw88/main.h +++ b/sys/contrib/dev/rtw88/main.h @@ -70,7 +70,7 @@ enum rtw_hci_type { }; struct rtw_hci { - struct rtw_hci_ops *ops; + const struct rtw_hci_ops *ops; enum rtw_hci_type type; u32 rpwm_addr; @@ -175,9 +175,14 @@ enum rtw_rate_section { RTW_RATE_SECTION_HT_2S, RTW_RATE_SECTION_VHT_1S, RTW_RATE_SECTION_VHT_2S, + __RTW_RATE_SECTION_2SS_MAX = RTW_RATE_SECTION_VHT_2S, + RTW_RATE_SECTION_HT_3S, + RTW_RATE_SECTION_HT_4S, + RTW_RATE_SECTION_VHT_3S, + RTW_RATE_SECTION_VHT_4S, /* keep last */ - RTW_RATE_SECTION_MAX, + RTW_RATE_SECTION_NUM, }; enum rtw_wireless_set { @@ -200,6 +205,7 @@ enum rtw_chip_type { RTW_CHIP_TYPE_8703B, RTW_CHIP_TYPE_8821A, RTW_CHIP_TYPE_8812A, + RTW_CHIP_TYPE_8814A, }; enum rtw_tx_queue_type { @@ -389,6 +395,9 @@ enum rtw_evm { RTW_EVM_1SS, RTW_EVM_2SS_A, RTW_EVM_2SS_B, + RTW_EVM_3SS_A, + RTW_EVM_3SS_B, + RTW_EVM_3SS_C, /* keep it last */ RTW_EVM_NUM }; @@ -406,6 +415,10 @@ enum rtw_snr { RTW_SNR_2SS_B, RTW_SNR_2SS_C, RTW_SNR_2SS_D, + RTW_SNR_3SS_A, + RTW_SNR_3SS_B, + RTW_SNR_3SS_C, + RTW_SNR_3SS_D, /* keep it last */ RTW_SNR_NUM }; @@ -831,7 +844,7 @@ struct rtw_vif { }; struct rtw_regulatory { - char alpha2[2]; + char alpha2[2] __nonstring; u8 txpwr_regd_2g; u8 txpwr_regd_5g; }; @@ -854,6 +867,7 @@ struct rtw_chip_ops { int (*power_on)(struct rtw_dev *rtwdev); void (*power_off)(struct rtw_dev *rtwdev); int (*mac_init)(struct rtw_dev *rtwdev); + int (*mac_postinit)(struct rtw_dev *rtwdev); int (*dump_fw_crash)(struct rtw_dev *rtwdev); void (*shutdown)(struct rtw_dev *rtwdev); int (*read_efuse)(struct rtw_dev *rtwdev, u8 *map); @@ -869,11 +883,12 @@ struct rtw_chip_ops { void (*set_tx_power_index)(struct rtw_dev *rtwdev); int (*rsvd_page_dump)(struct rtw_dev *rtwdev, u8 *buf, u32 offset, u32 size); - int (*set_antenna)(struct rtw_dev *rtwdev, + int (*set_antenna)(struct rtw_dev *rtwdev, int radio_idx, u32 antenna_tx, u32 antenna_rx); void (*cfg_ldo25)(struct rtw_dev *rtwdev, bool enable); void (*efuse_grant)(struct rtw_dev *rtwdev, bool enable); *** 28602 LINES SKIPPED *** From nobody Mon Oct 27 00:19:07 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cvvJD4MWQz6DxF9; Mon, 27 Oct 2025 00:19:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cvvJC59Qyz3nSC; Mon, 27 Oct 2025 00:19:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761524347; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bueEtwuhlvgmBYVOE/D0+ns7mDbQIbqwIc+V/9tpSOA=; b=pfhjxA8QuKhjbZ+ZT5Usb/CMaD+SIdVyMI8AmRdsvye9/2kNj9w55QKYpxbrH5XFI2qE+y xnk68QsoIk51jARpQ2rt7pYYR+HQUtfkMLManJgnn8uC3RlvPClKNn/9+sceBMChs5a9my MpINtB/Ck9PQf3WCVK0RTyjlgZMTMjpoatNEecO/sazUqsgNYbnr50EiySPqG4KrXz1AZH WefNDHntgSYgvBU5PJwufsJ+ZZ8v/waZretep6vJgNEsxkYFwwY20xzANNFDybt/76X/wU xQhY0jAiXYl3znnIy7VPjuHBWS6v9kpXegtf3yu4gLamU20zq4HmLElWiWqylg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761524347; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bueEtwuhlvgmBYVOE/D0+ns7mDbQIbqwIc+V/9tpSOA=; b=XUUpN5EqT4DLEVjjyIkQuNlknSnL+a2xVvxTduOsgBx05jid5b+tIPHkoUIOg1ilebW6wn gckVTZjqQM4hCrMs95U+DWbC9pk1LmqAa40MDHKMSdC28/QXYH74a6zB0q0XnFVeEHPrH2 UIsNi3kjtsnijp3kbIb59nSS79d+ZBX3NVQZ2odeHKPBCt6W4Z1eNG/W4HKVGAESoSEnPB 5ghpAcB0dd0XCuCtzew1O00a9treqKmnR51z1GA5gS0YnQU6WwO6n+dBDIcXKyQH0M88Ha NZbA3mQtcaz++j3FDhHQ6E4iLRz4pUdp68d9ERWjFmUngWxgQC1aBf3Iqc0LXw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761524347; a=rsa-sha256; cv=none; b=WT247dLSTKaT7+1ImvifIYdo2lnSWwb3WW1+U0GKO0DEaIkA4AqxuKb79ZjD0/ETv9/f9Y lUqc1QKK3sci95PmM40MZNTalmlW/9u99oNw3L3b3rzQN357yi/bvJp0ZK4XLPEDGFY4sI hs1DZUV7/y58rE3xblzBUhWaADlE53GdbTRQ22i1YH8L+Tt2EkD8Lg/l/+vtpg/Ai8g1a+ BTNl77Prsb9liFPQGU+2sdeU4f7vNwBGIaIsi+kuhEZr0sTvRqId9Nmt5twwI0B9d05fH6 faz8kOxT8YHJZflLgG4ctdPAi5wI6SqJcQQZYVXAaOW2N8bhCLRz/4DtkCMLNg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cvvJC4Tz1zw2T; Mon, 27 Oct 2025 00:19:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59R0J7QX043162; Mon, 27 Oct 2025 00:19:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59R0J7a9043159; Mon, 27 Oct 2025 00:19:07 GMT (envelope-from git) Date: Mon, 27 Oct 2025 00:19:07 GMT Message-Id: <202510270019.59R0J7a9043159@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: a13158f451cf - stable/15 - rtw89: update Realtek's rtw89 driver List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: a13158f451cffe04a723a71144e614ebb6821a58 Auto-Submitted: auto-generated The branch stable/15 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=a13158f451cffe04a723a71144e614ebb6821a58 commit a13158f451cffe04a723a71144e614ebb6821a58 Author: Bjoern A. Zeeb AuthorDate: 2025-10-17 20:46:45 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-10-27 00:18:21 +0000 rtw89: update Realtek's rtw89 driver This version is based on git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git e5f0a698b34ed76002dc5cff3804a61c80233a7a ( tag: v6.17 ). (cherry picked from commit 354a030185c650d1465ed2035a83636b8f825d72) --- sys/contrib/dev/rtw89/Kconfig | 28 +- sys/contrib/dev/rtw89/Makefile | 9 + sys/contrib/dev/rtw89/acpi.c | 1140 +++++++- sys/contrib/dev/rtw89/acpi.h | 223 +- sys/contrib/dev/rtw89/cam.c | 13 + sys/contrib/dev/rtw89/chan.c | 993 +++++-- sys/contrib/dev/rtw89/chan.h | 92 +- sys/contrib/dev/rtw89/coex.c | 4128 +++++++++++++++++----------- sys/contrib/dev/rtw89/coex.h | 25 +- sys/contrib/dev/rtw89/core.c | 1019 +++++-- sys/contrib/dev/rtw89/core.h | 572 +++- sys/contrib/dev/rtw89/debug.c | 2232 ++++++++------- sys/contrib/dev/rtw89/fw.c | 1464 ++++++++-- sys/contrib/dev/rtw89/fw.h | 305 +- sys/contrib/dev/rtw89/mac.c | 316 ++- sys/contrib/dev/rtw89/mac.h | 63 +- sys/contrib/dev/rtw89/mac80211.c | 420 +-- sys/contrib/dev/rtw89/mac_be.c | 12 +- sys/contrib/dev/rtw89/pci.c | 78 +- sys/contrib/dev/rtw89/pci.h | 57 +- sys/contrib/dev/rtw89/pci_be.c | 2 +- sys/contrib/dev/rtw89/phy.c | 1209 +++++--- sys/contrib/dev/rtw89/phy.h | 40 +- sys/contrib/dev/rtw89/phy_be.c | 2 +- sys/contrib/dev/rtw89/ps.c | 207 +- sys/contrib/dev/rtw89/ps.h | 6 + sys/contrib/dev/rtw89/reg.h | 95 +- sys/contrib/dev/rtw89/regd.c | 780 ++++-- sys/contrib/dev/rtw89/rtw8851b.c | 199 +- sys/contrib/dev/rtw89/rtw8851b_rfk.c | 156 +- sys/contrib/dev/rtw89/rtw8851b_rfk_table.c | 77 +- sys/contrib/dev/rtw89/rtw8851b_rfk_table.h | 2 +- sys/contrib/dev/rtw89/rtw8851b_table.c | 501 ++-- sys/contrib/dev/rtw89/rtw8851be.c | 1 + sys/contrib/dev/rtw89/rtw8851bu.c | 39 + sys/contrib/dev/rtw89/rtw8852a.c | 35 +- sys/contrib/dev/rtw89/rtw8852ae.c | 1 + sys/contrib/dev/rtw89/rtw8852b.c | 128 +- sys/contrib/dev/rtw89/rtw8852b_common.c | 46 +- sys/contrib/dev/rtw89/rtw8852b_rfk.c | 95 +- sys/contrib/dev/rtw89/rtw8852b_rfk.h | 3 + sys/contrib/dev/rtw89/rtw8852be.c | 1 + sys/contrib/dev/rtw89/rtw8852bt.c | 47 +- sys/contrib/dev/rtw89/rtw8852bt_rfk.c | 87 +- sys/contrib/dev/rtw89/rtw8852bt_rfk.h | 3 + sys/contrib/dev/rtw89/rtw8852bte.c | 1 + sys/contrib/dev/rtw89/rtw8852bu.c | 55 + sys/contrib/dev/rtw89/rtw8852c.c | 65 +- sys/contrib/dev/rtw89/rtw8852ce.c | 1 + sys/contrib/dev/rtw89/rtw8922a.c | 157 +- sys/contrib/dev/rtw89/rtw8922a_rfk.c | 57 +- sys/contrib/dev/rtw89/rtw8922ae.c | 1 + sys/contrib/dev/rtw89/sar.c | 677 ++++- sys/contrib/dev/rtw89/sar.h | 27 +- sys/contrib/dev/rtw89/ser.c | 34 +- sys/contrib/dev/rtw89/txrx.h | 32 + sys/contrib/dev/rtw89/usb.c | 1042 +++++++ sys/contrib/dev/rtw89/usb.h | 65 + sys/contrib/dev/rtw89/util.c | 220 +- sys/contrib/dev/rtw89/util.h | 13 +- sys/contrib/dev/rtw89/wow.c | 28 +- sys/contrib/dev/rtw89/wow.h | 14 +- sys/modules/rtw89/Makefile | 8 +- 63 files changed, 14320 insertions(+), 5128 deletions(-) diff --git a/sys/contrib/dev/rtw89/Kconfig b/sys/contrib/dev/rtw89/Kconfig index b1c86cdd9c0e..4288c30b400a 100644 --- a/sys/contrib/dev/rtw89/Kconfig +++ b/sys/contrib/dev/rtw89/Kconfig @@ -17,6 +17,9 @@ config RTW89_CORE config RTW89_PCI tristate +config RTW89_USB + tristate + config RTW89_8851B tristate @@ -49,6 +52,17 @@ config RTW89_8851BE 802.11ax PCIe wireless network (Wi-Fi 6) adapter +config RTW89_8851BU + tristate "Realtek 8851BU USB wireless network (Wi-Fi 6) adapter" + depends on USB + select RTW89_CORE + select RTW89_USB + select RTW89_8851B + help + Select this option will enable support for 8851BU chipset + + 802.11ax USB wireless network (Wi-Fi 6) adapter + config RTW89_8852AE tristate "Realtek 8852AE PCI wireless network (Wi-Fi 6) adapter" depends on PCI @@ -72,6 +86,18 @@ config RTW89_8852BE 802.11ax PCIe wireless network (Wi-Fi 6) adapter +config RTW89_8852BU + tristate "Realtek 8852BU USB wireless network (Wi-Fi 6) adapter" + depends on USB + select RTW89_CORE + select RTW89_USB + select RTW89_8852B + select RTW89_8852B_COMMON + help + Select this option will enable support for 8852BU chipset + + 802.11ax USB wireless network (Wi-Fi 6) adapter + config RTW89_8852BTE tristate "Realtek 8852BE-VT PCI wireless network (Wi-Fi 6) adapter" depends on PCI @@ -123,7 +149,7 @@ config RTW89_DEBUGMSG config RTW89_DEBUGFS bool "Realtek rtw89 debugfs support" - depends on RTW89_CORE + depends on RTW89_CORE && CFG80211_DEBUGFS select RTW89_DEBUG help Enable debugfs support diff --git a/sys/contrib/dev/rtw89/Makefile b/sys/contrib/dev/rtw89/Makefile index c751013e811e..23e43c444f69 100644 --- a/sys/contrib/dev/rtw89/Makefile +++ b/sys/contrib/dev/rtw89/Makefile @@ -31,6 +31,9 @@ rtw89_8851b-objs := rtw8851b.o \ obj-$(CONFIG_RTW89_8851BE) += rtw89_8851be.o rtw89_8851be-objs := rtw8851be.o +obj-$(CONFIG_RTW89_8851BU) += rtw89_8851bu.o +rtw89_8851bu-objs := rtw8851bu.o + obj-$(CONFIG_RTW89_8852A) += rtw89_8852a.o rtw89_8852a-objs := rtw8852a.o \ rtw8852a_table.o \ @@ -52,6 +55,9 @@ rtw89_8852b-objs := rtw8852b.o \ obj-$(CONFIG_RTW89_8852BE) += rtw89_8852be.o rtw89_8852be-objs := rtw8852be.o +obj-$(CONFIG_RTW89_8852BU) += rtw89_8852bu.o +rtw89_8852bu-objs := rtw8852bu.o + obj-$(CONFIG_RTW89_8852BT) += rtw89_8852bt.o rtw89_8852bt-objs := rtw8852bt.o \ rtw8852bt_rfk.o \ @@ -81,3 +87,6 @@ rtw89_core-$(CONFIG_RTW89_DEBUG) += debug.o obj-$(CONFIG_RTW89_PCI) += rtw89_pci.o rtw89_pci-y := pci.o pci_be.o +obj-$(CONFIG_RTW89_USB) += rtw89_usb.o +rtw89_usb-y := usb.o + diff --git a/sys/contrib/dev/rtw89/acpi.c b/sys/contrib/dev/rtw89/acpi.c index f5dedb12c129..fdba1ea46ec6 100644 --- a/sys/contrib/dev/rtw89/acpi.c +++ b/sys/contrib/dev/rtw89/acpi.c @@ -12,6 +12,125 @@ static const guid_t rtw89_guid = GUID_INIT(0xD2A8C3E8, 0x4B69, 0x4F00, 0x82, 0xBD, 0xFE, 0x86, 0x07, 0x80, 0x3A, 0xA7); +static u32 rtw89_acpi_traversal_object(struct rtw89_dev *rtwdev, + const union acpi_object *obj, u8 *pos) +{ + const union acpi_object *elm; + unsigned int i; + u32 sub_len; + u32 len = 0; + u8 *tmp; + + switch (obj->type) { + case ACPI_TYPE_INTEGER: + if (pos) + pos[len] = obj->integer.value; + + len++; + break; + case ACPI_TYPE_BUFFER: + if (unlikely(obj->buffer.length == 0)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "%s: invalid buffer type\n", __func__); + goto err; + } + + if (pos) + memcpy(pos, obj->buffer.pointer, obj->buffer.length); + + len += obj->buffer.length; + break; + case ACPI_TYPE_PACKAGE: + if (unlikely(obj->package.count == 0)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "%s: invalid package type\n", __func__); + goto err; + } + + for (i = 0; i < obj->package.count; i++) { + elm = &obj->package.elements[i]; + tmp = pos ? pos + len : NULL; + + sub_len = rtw89_acpi_traversal_object(rtwdev, elm, tmp); + if (unlikely(sub_len == 0)) + goto err; + + len += sub_len; + } + break; + default: + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: unhandled type: %d\n", + __func__, obj->type); + goto err; + } + + return len; + +err: + return 0; +} + +static u32 rtw89_acpi_calculate_object_length(struct rtw89_dev *rtwdev, + const union acpi_object *obj) +{ + return rtw89_acpi_traversal_object(rtwdev, obj, NULL); +} + +static struct rtw89_acpi_data * +rtw89_acpi_evaluate_method(struct rtw89_dev *rtwdev, const char *method) +{ + struct acpi_buffer buf = {ACPI_ALLOCATE_BUFFER, NULL}; + struct rtw89_acpi_data *data = NULL; + acpi_handle root, handle; + union acpi_object *obj; + acpi_status status; + u32 len; + + root = ACPI_HANDLE(rtwdev->dev); + if (!root) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "acpi (%s): failed to get root\n", method); + return NULL; + } + +#if defined(__linux__) + status = acpi_get_handle(root, (acpi_string)method, &handle); +#elif defined(__FreeBSD__) + status = acpi_get_handle(root, method, &handle); +#endif + if (ACPI_FAILURE(status)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "acpi (%s): failed to get handle\n", method); + return NULL; + } + + status = acpi_evaluate_object(handle, NULL, NULL, &buf); + if (ACPI_FAILURE(status)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "acpi (%s): failed to evaluate object\n", method); + return NULL; + } + + obj = buf.pointer; + len = rtw89_acpi_calculate_object_length(rtwdev, obj); + if (unlikely(len == 0)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "acpi (%s): failed to traversal obj len\n", method); + goto out; + } + + data = kzalloc(struct_size(data, buf, len), GFP_KERNEL); + if (!data) + goto out; + + data->len = len; + rtw89_acpi_traversal_object(rtwdev, obj, data->buf); + +out: + ACPI_FREE(obj); + return data; +} + static int rtw89_acpi_dsm_get_value(struct rtw89_dev *rtwdev, union acpi_object *obj, u8 *value) @@ -121,6 +240,138 @@ int rtw89_acpi_dsm_get_policy_6ghz_sp(struct rtw89_dev *rtwdev, return 0; } +static bool chk_acpi_policy_6ghz_vlp_sig(const struct rtw89_acpi_policy_6ghz_vlp *p) +{ + return p->signature[0] == 0x52 && + p->signature[1] == 0x54 && + p->signature[2] == 0x4B && + p->signature[3] == 0x0B; +} + +static +int rtw89_acpi_dsm_get_policy_6ghz_vlp(struct rtw89_dev *rtwdev, + union acpi_object *obj, + struct rtw89_acpi_policy_6ghz_vlp **policy) +{ + const struct rtw89_acpi_policy_6ghz_vlp *ptr; + u32 buf_len; + + if (obj->type != ACPI_TYPE_BUFFER) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "acpi: expect buffer but type: %d\n", obj->type); + return -EINVAL; + } + + buf_len = obj->buffer.length; + if (buf_len < sizeof(*ptr)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: invalid buffer length: %u\n", + __func__, buf_len); + return -EINVAL; + } + + ptr = (typeof(ptr))obj->buffer.pointer; + if (!chk_acpi_policy_6ghz_vlp_sig(ptr)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: bad signature\n", __func__); + return -EINVAL; + } + + *policy = kmemdup(ptr, sizeof(*ptr), GFP_KERNEL); + if (!*policy) + return -ENOMEM; + + rtw89_hex_dump(rtwdev, RTW89_DBG_ACPI, "policy_6ghz_vlp: ", *policy, + sizeof(*ptr)); + return 0; +} + +static bool chk_acpi_policy_tas_sig(const struct rtw89_acpi_policy_tas *p) +{ + return p->signature[0] == 0x52 && + p->signature[1] == 0x54 && + p->signature[2] == 0x4B && + p->signature[3] == 0x05; +} + +static int rtw89_acpi_dsm_get_policy_tas(struct rtw89_dev *rtwdev, + union acpi_object *obj, + struct rtw89_acpi_policy_tas **policy) +{ + const struct rtw89_acpi_policy_tas *ptr; + u32 buf_len; + + if (obj->type != ACPI_TYPE_BUFFER) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "acpi: expect buffer but type: %d\n", obj->type); + return -EINVAL; + } + + buf_len = obj->buffer.length; + if (buf_len < sizeof(*ptr)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: invalid buffer length: %u\n", + __func__, buf_len); + return -EINVAL; + } + + ptr = (typeof(ptr))obj->buffer.pointer; + if (!chk_acpi_policy_tas_sig(ptr)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: bad signature\n", __func__); + return -EINVAL; + } + + *policy = kmemdup(ptr, sizeof(*ptr), GFP_KERNEL); + if (!*policy) + return -ENOMEM; + + rtw89_hex_dump(rtwdev, RTW89_DBG_ACPI, "policy_tas: ", *policy, + sizeof(*ptr)); + return 0; +} + +static +bool chk_acpi_policy_reg_rules_sig(const struct rtw89_acpi_policy_reg_rules *p) +{ + return p->signature[0] == 0x52 && + p->signature[1] == 0x54 && + p->signature[2] == 0x4B && + p->signature[3] == 0x0A; +} + +static +int rtw89_acpi_dsm_get_policy_reg_rules(struct rtw89_dev *rtwdev, + union acpi_object *obj, + struct rtw89_acpi_policy_reg_rules **policy) +{ + const struct rtw89_acpi_policy_reg_rules *ptr; + u32 buf_len; + + if (obj->type != ACPI_TYPE_BUFFER) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "acpi: expect buffer but type: %d\n", obj->type); + return -EINVAL; + } + + buf_len = obj->buffer.length; + if (buf_len < sizeof(*ptr)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: invalid buffer length: %u\n", + __func__, buf_len); + return -EINVAL; + } + + ptr = (typeof(ptr))obj->buffer.pointer; + if (!chk_acpi_policy_reg_rules_sig(ptr)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: bad signature\n", __func__); + return -EINVAL; + } + + *policy = kmemdup(ptr, sizeof(*ptr), GFP_KERNEL); + if (!*policy) + return -ENOMEM; + + rtw89_hex_dump(rtwdev, RTW89_DBG_ACPI, "policy_reg_rules: ", *policy, + sizeof(*ptr)); + return 0; +} + int rtw89_acpi_evaluate_dsm(struct rtw89_dev *rtwdev, enum rtw89_acpi_dsm_func func, struct rtw89_acpi_dsm_result *res) @@ -142,6 +393,14 @@ int rtw89_acpi_evaluate_dsm(struct rtw89_dev *rtwdev, else if (func == RTW89_ACPI_DSM_FUNC_6GHZ_SP_SUP) ret = rtw89_acpi_dsm_get_policy_6ghz_sp(rtwdev, obj, &res->u.policy_6ghz_sp); + else if (func == RTW89_ACPI_DSM_FUNC_6GHZ_VLP_SUP) + ret = rtw89_acpi_dsm_get_policy_6ghz_vlp(rtwdev, obj, + &res->u.policy_6ghz_vlp); + else if (func == RTW89_ACPI_DSM_FUNC_TAS_EN) + ret = rtw89_acpi_dsm_get_policy_tas(rtwdev, obj, &res->u.policy_tas); + else if (func == RTW89_ACPI_DSM_FUNC_REG_RULES_EN) + ret = rtw89_acpi_dsm_get_policy_reg_rules(rtwdev, obj, + &res->u.policy_reg_rules); else ret = rtw89_acpi_dsm_get_value(rtwdev, obj, &res->u.value); @@ -152,46 +411,879 @@ int rtw89_acpi_evaluate_dsm(struct rtw89_dev *rtwdev, int rtw89_acpi_evaluate_rtag(struct rtw89_dev *rtwdev, struct rtw89_acpi_rtag_result *res) { - struct acpi_buffer buf = {ACPI_ALLOCATE_BUFFER, NULL}; - acpi_handle root, handle; - union acpi_object *obj; - acpi_status status; +#if defined(__linux__) + const struct rtw89_acpi_data *data; +#elif defined(__FreeBSD__) + struct rtw89_acpi_data *data; +#endif u32 buf_len; int ret = 0; - root = ACPI_HANDLE(rtwdev->dev); - if (!root) - return -EOPNOTSUPP; - - status = acpi_get_handle(root, (acpi_string)"RTAG", &handle); - if (ACPI_FAILURE(status)) + data = rtw89_acpi_evaluate_method(rtwdev, "RTAG"); + if (!data) return -EIO; - status = acpi_evaluate_object(handle, NULL, NULL, &buf); - if (ACPI_FAILURE(status)) - return -EIO; + buf_len = data->len; + if (buf_len != sizeof(*res)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: invalid buffer length: %u\n", + __func__, buf_len); + ret = -EINVAL; + goto out; + } - obj = buf.pointer; - if (obj->type != ACPI_TYPE_BUFFER) { + *res = *(struct rtw89_acpi_rtag_result *)data->buf; + + rtw89_hex_dump(rtwdev, RTW89_DBG_ACPI, "antenna_gain: ", res, sizeof(*res)); + +out: + kfree(data); + return ret; +} + +enum rtw89_acpi_sar_subband rtw89_acpi_sar_get_subband(struct rtw89_dev *rtwdev, + u32 center_freq) +{ + switch (center_freq) { + default: rtw89_debug(rtwdev, RTW89_DBG_ACPI, - "acpi: expect buffer but type: %d\n", obj->type); - ret = -EINVAL; + "center freq %u to ACPI SAR subband is unhandled\n", + center_freq); + fallthrough; + case 2412 ... 2484: + return RTW89_ACPI_SAR_2GHZ_SUBBAND; + case 5180 ... 5240: + return RTW89_ACPI_SAR_5GHZ_SUBBAND_1; + case 5250 ... 5320: + return RTW89_ACPI_SAR_5GHZ_SUBBAND_2; + case 5500 ... 5720: + return RTW89_ACPI_SAR_5GHZ_SUBBAND_2E; + case 5745 ... 5885: + return RTW89_ACPI_SAR_5GHZ_SUBBAND_3_4; + case 5955 ... 6155: + return RTW89_ACPI_SAR_6GHZ_SUBBAND_5_L; + case 6175 ... 6415: + return RTW89_ACPI_SAR_6GHZ_SUBBAND_5_H; + case 6435 ... 6515: + return RTW89_ACPI_SAR_6GHZ_SUBBAND_6; + case 6535 ... 6695: + return RTW89_ACPI_SAR_6GHZ_SUBBAND_7_L; + case 6715 ... 6855: + return RTW89_ACPI_SAR_6GHZ_SUBBAND_7_H; + + /* freq 6875 (ch 185, 20MHz) spans RTW89_ACPI_SAR_6GHZ_SUBBAND_7_H + * and RTW89_ACPI_SAR_6GHZ_SUBBAND_8, so directly describe it with + * struct rtw89_6ghz_span. + */ + + case 6895 ... 7115: + return RTW89_ACPI_SAR_6GHZ_SUBBAND_8; + } +} + +enum rtw89_band rtw89_acpi_sar_subband_to_band(struct rtw89_dev *rtwdev, + enum rtw89_acpi_sar_subband subband) +{ + switch (subband) { + default: + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "ACPI SAR subband %u to band is unhandled\n", subband); + fallthrough; + case RTW89_ACPI_SAR_2GHZ_SUBBAND: + return RTW89_BAND_2G; + case RTW89_ACPI_SAR_5GHZ_SUBBAND_1: + return RTW89_BAND_5G; + case RTW89_ACPI_SAR_5GHZ_SUBBAND_2: + return RTW89_BAND_5G; + case RTW89_ACPI_SAR_5GHZ_SUBBAND_2E: + return RTW89_BAND_5G; + case RTW89_ACPI_SAR_5GHZ_SUBBAND_3_4: + return RTW89_BAND_5G; + case RTW89_ACPI_SAR_6GHZ_SUBBAND_5_L: + return RTW89_BAND_6G; + case RTW89_ACPI_SAR_6GHZ_SUBBAND_5_H: + return RTW89_BAND_6G; + case RTW89_ACPI_SAR_6GHZ_SUBBAND_6: + return RTW89_BAND_6G; + case RTW89_ACPI_SAR_6GHZ_SUBBAND_7_L: + return RTW89_BAND_6G; + case RTW89_ACPI_SAR_6GHZ_SUBBAND_7_H: + return RTW89_BAND_6G; + case RTW89_ACPI_SAR_6GHZ_SUBBAND_8: + return RTW89_BAND_6G; + } +} + +static u8 rtw89_acpi_sar_rfpath_to_hp_antidx(enum rtw89_rf_path rfpath) +{ + switch (rfpath) { + default: + case RF_PATH_B: + return 0; + case RF_PATH_A: + return 1; + } +} + +static u8 rtw89_acpi_sar_rfpath_to_rt_antidx(enum rtw89_rf_path rfpath) +{ + switch (rfpath) { + default: + case RF_PATH_A: + return 0; + case RF_PATH_B: + return 1; + } +} + +static s16 rtw89_acpi_sar_normalize_hp_val(u8 v) +{ + static const u8 bias = 10; + static const u8 fct = 1; + u16 res; + + BUILD_BUG_ON(fct > TXPWR_FACTOR_OF_RTW89_ACPI_SAR); + + res = (bias << TXPWR_FACTOR_OF_RTW89_ACPI_SAR) + + (v << (TXPWR_FACTOR_OF_RTW89_ACPI_SAR - fct)); + + return min_t(s32, res, MAX_VAL_OF_RTW89_ACPI_SAR); +} + +static s16 rtw89_acpi_sar_normalize_rt_val(u8 v) +{ + static const u8 fct = 3; + u16 res; + + BUILD_BUG_ON(fct > TXPWR_FACTOR_OF_RTW89_ACPI_SAR); + + res = v << (TXPWR_FACTOR_OF_RTW89_ACPI_SAR - fct); + + return min_t(s32, res, MAX_VAL_OF_RTW89_ACPI_SAR); +} + +static +void rtw89_acpi_sar_load_std_legacy(struct rtw89_dev *rtwdev, + const struct rtw89_acpi_sar_recognition *rec, + const void *content, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_sar_std_legacy *ptr = content; + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) { + u8 antidx = rec->rfpath_to_antidx(path); + + if (subband < RTW89_ACPI_SAR_SUBBAND_NR_LEGACY) + ent->v[subband][path] = + rec->normalize(ptr->v[antidx][subband]); + else + ent->v[subband][path] = MAX_VAL_OF_RTW89_ACPI_SAR; + } + } +} + +static +void rtw89_acpi_sar_load_std_has_6ghz(struct rtw89_dev *rtwdev, + const struct rtw89_acpi_sar_recognition *rec, + const void *content, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_sar_std_has_6ghz *ptr = content; + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + + BUILD_BUG_ON(RTW89_ACPI_SAR_SUBBAND_NR_HAS_6GHZ != NUM_OF_RTW89_ACPI_SAR_SUBBAND); + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) { + u8 antidx = rec->rfpath_to_antidx(path); + + ent->v[subband][path] = rec->normalize(ptr->v[antidx][subband]); + } + } +} + +static +void rtw89_acpi_sar_load_sml_legacy(struct rtw89_dev *rtwdev, + const struct rtw89_acpi_sar_recognition *rec, + const void *content, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_sar_sml_legacy *ptr = content; + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) { + u8 antidx = rec->rfpath_to_antidx(path); + + if (subband < RTW89_ACPI_SAR_SUBBAND_NR_LEGACY) + ent->v[subband][path] = + rec->normalize(ptr->v[antidx][subband]); + else + ent->v[subband][path] = MAX_VAL_OF_RTW89_ACPI_SAR; + } + } +} + +static +void rtw89_acpi_sar_load_sml_has_6ghz(struct rtw89_dev *rtwdev, + const struct rtw89_acpi_sar_recognition *rec, + const void *content, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_sar_sml_has_6ghz *ptr = content; + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + + BUILD_BUG_ON(RTW89_ACPI_SAR_SUBBAND_NR_HAS_6GHZ != NUM_OF_RTW89_ACPI_SAR_SUBBAND); + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) { + u8 antidx = rec->rfpath_to_antidx(path); + + ent->v[subband][path] = rec->normalize(ptr->v[antidx][subband]); + } + } +} + +static s16 rtw89_acpi_geo_sar_normalize_delta(s8 delta) +{ + static const u8 fct = 1; + + BUILD_BUG_ON(fct > TXPWR_FACTOR_OF_RTW89_ACPI_SAR); + + return delta << (TXPWR_FACTOR_OF_RTW89_ACPI_SAR - fct); +} + +static enum rtw89_acpi_geo_sar_regd_hp +rtw89_acpi_geo_sar_regd_convert_hp_idx(enum rtw89_regulation_type regd) +{ + switch (regd) { + case RTW89_FCC: + case RTW89_IC: + case RTW89_NCC: + case RTW89_CHILE: + case RTW89_MEXICO: + return RTW89_ACPI_GEO_SAR_REGD_HP_FCC; + case RTW89_ETSI: + case RTW89_MKK: + case RTW89_ACMA: + return RTW89_ACPI_GEO_SAR_REGD_HP_ETSI; + default: + case RTW89_WW: + case RTW89_NA: + case RTW89_KCC: + return RTW89_ACPI_GEO_SAR_REGD_HP_WW; + } +} + +static enum rtw89_acpi_geo_sar_regd_rt +rtw89_acpi_geo_sar_regd_convert_rt_idx(enum rtw89_regulation_type regd) +{ + switch (regd) { + case RTW89_FCC: + case RTW89_NCC: + case RTW89_CHILE: + case RTW89_MEXICO: + return RTW89_ACPI_GEO_SAR_REGD_RT_FCC; + case RTW89_ETSI: + case RTW89_ACMA: + return RTW89_ACPI_GEO_SAR_REGD_RT_ETSI; + case RTW89_MKK: + return RTW89_ACPI_GEO_SAR_REGD_RT_MKK; + case RTW89_IC: + return RTW89_ACPI_GEO_SAR_REGD_RT_IC; + case RTW89_KCC: + return RTW89_ACPI_GEO_SAR_REGD_RT_KCC; + default: + case RTW89_WW: + case RTW89_NA: + return RTW89_ACPI_GEO_SAR_REGD_RT_WW; + } +} + +static +void rtw89_acpi_geo_sar_load_by_hp(struct rtw89_dev *rtwdev, + const struct rtw89_acpi_geo_sar_hp_val *ptr, + enum rtw89_rf_path path, s16 *val) +{ + u8 antidx = rtw89_acpi_sar_rfpath_to_hp_antidx(path); + s16 delta = rtw89_acpi_geo_sar_normalize_delta(ptr->delta[antidx]); + s16 max = rtw89_acpi_sar_normalize_hp_val(ptr->max); + + *val = clamp_t(s32, (*val) + delta, MIN_VAL_OF_RTW89_ACPI_SAR, max); +} + +static +void rtw89_acpi_geo_sar_load_by_rt(struct rtw89_dev *rtwdev, + const struct rtw89_acpi_geo_sar_rt_val *ptr, + s16 *val) +{ + s16 delta = rtw89_acpi_geo_sar_normalize_delta(ptr->delta); + s16 max = rtw89_acpi_sar_normalize_rt_val(ptr->max); + + *val = clamp_t(s32, (*val) + delta, MIN_VAL_OF_RTW89_ACPI_SAR, max); +} + +static +void rtw89_acpi_geo_sar_load_hp_legacy(struct rtw89_dev *rtwdev, + const void *content, + enum rtw89_regulation_type regd, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_geo_sar_hp_legacy *ptr = content; + const struct rtw89_acpi_geo_sar_hp_legacy_entry *ptr_ent; + const struct rtw89_acpi_geo_sar_hp_val *ptr_ent_val; + enum rtw89_acpi_geo_sar_regd_hp geo_idx = + rtw89_acpi_geo_sar_regd_convert_hp_idx(regd); + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + enum rtw89_band band; + + ptr_ent = &ptr->entries[geo_idx]; + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + band = rtw89_acpi_sar_subband_to_band(rtwdev, subband); + switch (band) { + case RTW89_BAND_2G: + ptr_ent_val = &ptr_ent->val_2ghz; + break; + case RTW89_BAND_5G: + ptr_ent_val = &ptr_ent->val_5ghz; + break; + default: + case RTW89_BAND_6G: + ptr_ent_val = NULL; + break; + } + + if (!ptr_ent_val) + continue; + + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) + rtw89_acpi_geo_sar_load_by_hp(rtwdev, ptr_ent_val, path, + &ent->v[subband][path]); + } +} + +static +void rtw89_acpi_geo_sar_load_hp_has_6ghz(struct rtw89_dev *rtwdev, + const void *content, + enum rtw89_regulation_type regd, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_geo_sar_hp_has_6ghz *ptr = content; + const struct rtw89_acpi_geo_sar_hp_has_6ghz_entry *ptr_ent; + const struct rtw89_acpi_geo_sar_hp_val *ptr_ent_val; + enum rtw89_acpi_geo_sar_regd_hp geo_idx = + rtw89_acpi_geo_sar_regd_convert_hp_idx(regd); + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + enum rtw89_band band; + + ptr_ent = &ptr->entries[geo_idx]; + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + band = rtw89_acpi_sar_subband_to_band(rtwdev, subband); + switch (band) { + case RTW89_BAND_2G: + ptr_ent_val = &ptr_ent->val_2ghz; + break; + case RTW89_BAND_5G: + ptr_ent_val = &ptr_ent->val_5ghz; + break; + case RTW89_BAND_6G: + ptr_ent_val = &ptr_ent->val_6ghz; + break; + default: + ptr_ent_val = NULL; + break; + } + + if (!ptr_ent_val) + continue; + + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) + rtw89_acpi_geo_sar_load_by_hp(rtwdev, ptr_ent_val, path, + &ent->v[subband][path]); + } +} + +static +void rtw89_acpi_geo_sar_load_rt_legacy(struct rtw89_dev *rtwdev, + const void *content, + enum rtw89_regulation_type regd, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_geo_sar_rt_legacy *ptr = content; + const struct rtw89_acpi_geo_sar_rt_legacy_entry *ptr_ent; + const struct rtw89_acpi_geo_sar_rt_val *ptr_ent_val; + enum rtw89_acpi_geo_sar_regd_rt geo_idx = + rtw89_acpi_geo_sar_regd_convert_rt_idx(regd); + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + enum rtw89_band band; + + ptr_ent = &ptr->entries[geo_idx]; + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + band = rtw89_acpi_sar_subband_to_band(rtwdev, subband); + switch (band) { + case RTW89_BAND_2G: + ptr_ent_val = &ptr_ent->val_2ghz; + break; + case RTW89_BAND_5G: + ptr_ent_val = &ptr_ent->val_5ghz; + break; + default: + case RTW89_BAND_6G: + ptr_ent_val = NULL; + break; + } + + if (!ptr_ent_val) + continue; + + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) + rtw89_acpi_geo_sar_load_by_rt(rtwdev, ptr_ent_val, + &ent->v[subband][path]); + } +} + +static +void rtw89_acpi_geo_sar_load_rt_has_6ghz(struct rtw89_dev *rtwdev, + const void *content, + enum rtw89_regulation_type regd, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_geo_sar_rt_has_6ghz *ptr = content; + const struct rtw89_acpi_geo_sar_rt_has_6ghz_entry *ptr_ent; + const struct rtw89_acpi_geo_sar_rt_val *ptr_ent_val; + enum rtw89_acpi_geo_sar_regd_rt geo_idx = + rtw89_acpi_geo_sar_regd_convert_rt_idx(regd); + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + enum rtw89_band band; + + ptr_ent = &ptr->entries[geo_idx]; + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + band = rtw89_acpi_sar_subband_to_band(rtwdev, subband); + switch (band) { + case RTW89_BAND_2G: + ptr_ent_val = &ptr_ent->val_2ghz; + break; + case RTW89_BAND_5G: + ptr_ent_val = &ptr_ent->val_5ghz; + break; + case RTW89_BAND_6G: + ptr_ent_val = &ptr_ent->val_6ghz; + break; + default: + ptr_ent_val = NULL; + break; + } + + if (!ptr_ent_val) + continue; + + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) + rtw89_acpi_geo_sar_load_by_rt(rtwdev, ptr_ent_val, + &ent->v[subband][path]); + } +} + +#define RTW89_ACPI_GEO_SAR_DECL_HANDLER(type) \ +static const struct rtw89_acpi_geo_sar_handler \ +rtw89_acpi_geo_sar_handler_ ## type = { \ + .data_size = RTW89_ACPI_GEO_SAR_SIZE_OF(type), \ + .load = rtw89_acpi_geo_sar_load_ ## type, \ +} + +RTW89_ACPI_GEO_SAR_DECL_HANDLER(hp_legacy); +RTW89_ACPI_GEO_SAR_DECL_HANDLER(hp_has_6ghz); +RTW89_ACPI_GEO_SAR_DECL_HANDLER(rt_legacy); +RTW89_ACPI_GEO_SAR_DECL_HANDLER(rt_has_6ghz); + +static const struct rtw89_acpi_sar_recognition rtw89_acpi_sar_recs[] = { + { + .id = { + .cid = RTW89_ACPI_SAR_CID_HP, + .rev = RTW89_ACPI_SAR_REV_LEGACY, + .size = RTW89_ACPI_SAR_SIZE_OF(std_legacy), + }, + .geo = &rtw89_acpi_geo_sar_handler_hp_legacy, + + .rfpath_to_antidx = rtw89_acpi_sar_rfpath_to_hp_antidx, *** 30297 LINES SKIPPED *** From nobody Mon Oct 27 00:19:09 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cvvJG3Cwjz6Dxbc; Mon, 27 Oct 2025 00:19:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cvvJG0Fddz3nmg; Mon, 27 Oct 2025 00:19:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761524350; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G0EXcHp3JjFNI6o7hhcXp+Y3o63UGefDbcBIozoPUDc=; b=xe6LQSa9S7isNMBs43xjmEV17/lorTkcaA6EJ1QsSIKITUUIvX6uVfXfa61vZ29F9ZHQNW LHsROw5tmewPJYUbBaMVOcchJQjkAY+tob4qVTVDvs2WvgNyPMcGOvpw7teSWTRA0MvWTD MuPMfxBvxWV+5ZMwnUDCwHm3pQTisZjrrZhknnWSHUOwLkEDIS6776n8IHUNdfsGcLVxJ4 3ce/xoirJoWAGMYHWy7VUYH7dNu11gb+0XY4NwnBWacrPaGujgGUoUj/BFd2YpmIOBuDMz kDtnQhzWuWOS237mwc44sJiHVcKmSJ+Z6ZvLB+Ujz6SQmPuDcpK1JAYwhiV5Mg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761524350; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G0EXcHp3JjFNI6o7hhcXp+Y3o63UGefDbcBIozoPUDc=; b=XoikLB0rgXXjsvOZYjotrs3gz1gZN4a3wmwdEhdvPPsJWB/rSE/HTcg9bhmQvpZVKn+8xo sDhxOosBFpUZwX+pxTL1xcax1T0t3+M4uejO0BKl9P2Y+0u+khSSujBq0UfajZrtont/qp CgplJyVeAfRcQYkJExJlxJd4nGAtVSguqZpiGEQh2QFekx2dzo4g86yMuHKIHcVUjWygFK LYAdO2+liXBYrkE+BkRjFJoOCRPzoHouu4fbUEga5Q6utCzqbGEznvaLtSsHUmrgxMUC1w YhfsUC01/q2o4ZzlXNI147/r8thfjZsj9xkDIDkbeYMjcCjg0HQQH2Z1Fc4uxg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761524350; a=rsa-sha256; cv=none; b=L2tjNWTEruJLRDfFEHAzRWwmy0vwRu6xtyEEnGf7RyA4bj+b4irZFG/y4k5LMRGpNRIc7R 0/idjNIP1P6hxDehHtcc9N652uhZ6dqMEqffH2SVTiT98Q/X5EAMof1P+Ny6R1D6H2Y6iG INhJ3NEUshsgiLoPHr+yvShIACViBDK5jKqQ4bARYkP40zytlF/9tQLjq8KZSWh9M0uCLn m+tJsi97H867KZZ87Xy3+eTcdbdChhB8rp5eFJDF9pUO+w4GUsd09Nu0YEuFc3Cw7/WIUm PyMIo2R3UabTCo3RGeooB7SaTzZLA+7kpOukM71XJ4t27wFvoM2R7PL1r6wvQQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cvvJF6fWSzwMr; Mon, 27 Oct 2025 00:19:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59R0J9hB043235; Mon, 27 Oct 2025 00:19:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59R0J956043232; Mon, 27 Oct 2025 00:19:09 GMT (envelope-from git) Date: Mon, 27 Oct 2025 00:19:09 GMT Message-Id: <202510270019.59R0J956043232@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 22eb6e43d034 - stable/15 - LinuxKPI: 802.11: additions for Linux v6.17 based wireless drivers List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 22eb6e43d034ec325e2833f3694efe4b33fa58a0 Auto-Submitted: auto-generated The branch stable/15 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=22eb6e43d034ec325e2833f3694efe4b33fa58a0 commit 22eb6e43d034ec325e2833f3694efe4b33fa58a0 Author: Bjoern A. Zeeb AuthorDate: 2025-10-11 09:21:55 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-10-27 00:18:22 +0000 LinuxKPI: 802.11: additions for Linux v6.17 based wireless drivers This includes the conflicting changes from previous driver versions (v6.11/v6.14), mostly being function pointer or function arguments. (cherry picked from commit 76aed633b5b526fc2cdb3fa654f54b3cb8e5cfaf) --- sys/compat/linuxkpi/common/include/net/mac80211.h | 14 +++++++------- sys/compat/linuxkpi/common/src/linux_80211_macops.c | 12 ++++++++---- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/sys/compat/linuxkpi/common/include/net/mac80211.h b/sys/compat/linuxkpi/common/include/net/mac80211.h index 523836b52a40..ee1ace3684de 100644 --- a/sys/compat/linuxkpi/common/include/net/mac80211.h +++ b/sys/compat/linuxkpi/common/include/net/mac80211.h @@ -956,7 +956,7 @@ struct ieee80211_ops { int (*start)(struct ieee80211_hw *); void (*stop)(struct ieee80211_hw *, bool); - int (*config)(struct ieee80211_hw *, u32); + int (*config)(struct ieee80211_hw *, int, u32); void (*reconfig_complete)(struct ieee80211_hw *, enum ieee80211_reconfig_type); void (*prep_add_interface)(struct ieee80211_hw *, enum nl80211_iftype); @@ -983,7 +983,7 @@ struct ieee80211_ops { void (*flush)(struct ieee80211_hw *, struct ieee80211_vif *, u32, bool); void (*flush_sta)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_sta *); - int (*set_frag_threshold)(struct ieee80211_hw *, u32); + int (*set_frag_threshold)(struct ieee80211_hw *, int, u32); void (*sync_rx_queues)(struct ieee80211_hw *); @@ -1026,8 +1026,8 @@ struct ieee80211_ops { void (*unassign_vif_chanctx)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_bss_conf *, struct ieee80211_chanctx_conf *); int (*switch_vif_chanctx)(struct ieee80211_hw *, struct ieee80211_vif_chanctx_switch *, int, enum ieee80211_chanctx_switch_mode); - int (*get_antenna)(struct ieee80211_hw *, u32 *, u32 *); - int (*set_antenna)(struct ieee80211_hw *, u32, u32); + int (*get_antenna)(struct ieee80211_hw *, int, u32 *, u32 *); + int (*set_antenna)(struct ieee80211_hw *, int, u32, u32); int (*remain_on_channel)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_channel *, int, enum ieee80211_roc_type); int (*cancel_remain_on_channel)(struct ieee80211_hw *, struct ieee80211_vif *); @@ -1038,7 +1038,7 @@ struct ieee80211_ops { void (*bss_info_changed)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_bss_conf *, u64); void (*link_info_changed)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_bss_conf *, u64); - int (*set_rts_threshold)(struct ieee80211_hw *, u32); + int (*set_rts_threshold)(struct ieee80211_hw *, int, u32); void (*event_callback)(struct ieee80211_hw *, struct ieee80211_vif *, const struct ieee80211_event *); int (*get_survey)(struct ieee80211_hw *, int, struct survey_info *); int (*get_ftm_responder_stats)(struct ieee80211_hw *, struct ieee80211_vif *, struct cfg80211_ftm_responder_stats *); @@ -1048,7 +1048,7 @@ struct ieee80211_ops { void (*offset_tsf)(struct ieee80211_hw *, struct ieee80211_vif *, s64); int (*set_bitrate_mask)(struct ieee80211_hw *, struct ieee80211_vif *, const struct cfg80211_bitrate_mask *); - void (*set_coverage_class)(struct ieee80211_hw *, s16); + void (*set_coverage_class)(struct ieee80211_hw *, int, s16); int (*set_tim)(struct ieee80211_hw *, struct ieee80211_sta *, bool); int (*set_key)(struct ieee80211_hw *, enum set_key_cmd, struct ieee80211_vif *, struct ieee80211_sta *, struct ieee80211_key_conf *); @@ -2406,7 +2406,7 @@ ieee80211_remove_key(struct ieee80211_key_conf *key) static __inline struct ieee80211_key_conf * ieee80211_gtk_rekey_add(struct ieee80211_vif *vif, - struct ieee80211_key_conf *key, int link_id) + uint16_t keyidx, uint8_t *key, size_t keylen, int link_id) { TODO(); return (NULL); diff --git a/sys/compat/linuxkpi/common/src/linux_80211_macops.c b/sys/compat/linuxkpi/common/src/linux_80211_macops.c index 04f9f6d7e7fc..d9e82a6d64ee 100644 --- a/sys/compat/linuxkpi/common/src/linux_80211_macops.c +++ b/sys/compat/linuxkpi/common/src/linux_80211_macops.c @@ -102,7 +102,8 @@ lkpi_80211_mo_get_antenna(struct ieee80211_hw *hw, u32 *txs, u32 *rxs) } LKPI_80211_TRACE_MO("hw %p", hw); - error = lhw->ops->get_antenna(hw, txs, rxs); + LKPI_80211_TRACE_MO("TODO link/radio_idx"); + error = lhw->ops->get_antenna(hw, 0, txs, rxs); out: return (error); @@ -121,7 +122,8 @@ lkpi_80211_mo_set_frag_threshold(struct ieee80211_hw *hw, uint32_t frag_th) } LKPI_80211_TRACE_MO("hw %p frag_th %u", hw, frag_th); - error = lhw->ops->set_frag_threshold(hw, frag_th); + LKPI_80211_TRACE_MO("TODO link/radio_idx"); + error = lhw->ops->set_frag_threshold(hw, 0, frag_th); out: return (error); @@ -140,7 +142,8 @@ lkpi_80211_mo_set_rts_threshold(struct ieee80211_hw *hw, uint32_t rts_th) } LKPI_80211_TRACE_MO("hw %p rts_th %u", hw, rts_th); - error = lhw->ops->set_rts_threshold(hw, rts_th); + LKPI_80211_TRACE_MO("TODO link/radio_idx"); + error = lhw->ops->set_rts_threshold(hw, 0, rts_th); out: return (error); @@ -436,7 +439,8 @@ lkpi_80211_mo_config(struct ieee80211_hw *hw, uint32_t changed) } LKPI_80211_TRACE_MO("hw %p changed %u", hw, changed); - error = lhw->ops->config(hw, changed); + LKPI_80211_TRACE_MO("TODO link/radio_idx"); + error = lhw->ops->config(hw, 0, changed); out: return (error); From nobody Mon Oct 27 00:19:08 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cvvJF1QX5z6DxWY; Mon, 27 Oct 2025 00:19:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cvvJD6QkFz3nb5; Mon, 27 Oct 2025 00:19:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761524348; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=a+nfZcvTxTFwlARkKyW+vFuP/v5F9Gv1b+PgN7XuCGs=; b=WrNv0w+vveuZjcoXSLTg6m/ONkX7faK/WN78oGLIbkd/A6ZHrM+zDB2YxyD8VcYABHxyTN 2EhjoPzZWClsOXYNKonnB7ZLQI2RawJHA1XMofhiO7CxX3smUnyQbeT0odibwQpMcIKjYc z07arBZnDVEez28rZ8aPGRecHcGwIkcfV5gdVT38+ErTb7KfFCNoBAYWnPbTwYnoSFUU6x PzosJ2xe/ZR3M84V0glqjhne0GptNY7y3m5uM9pe12G/1E8GvtCLwE3aSOGXscxhwZHg+F MXlQlw/SjhfpWYkV6w9Plerjwfi0WjP7hdW/gr4e9XwDGyfqTP1XuqIsyN1iBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761524348; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=a+nfZcvTxTFwlARkKyW+vFuP/v5F9Gv1b+PgN7XuCGs=; b=T9XcXojULXzphnK0FIrqE1lRiYECHIDj8d/gyLgTbL5xEssfnjJs3MMwQrC0JchFjOVclw 3EYhzzsYA3u+axyqoyjY3NFjHadpZW+luPp68TWJh2bJlRWfgnIdzvZqJbeHhdL+M6Snoc O4w9R5DNuAowq9K7kjrOAMz0dG2EZ10jtgRBCRuzYwskW4oQxroCbe3kvzFWbRdy7UgXe7 yop2nwAAvhP0sX34RsOEqsDiXkM3hO6M7Y6xM5pgTvBNbY3T1J/8JkUH/7K2QHt1PmPUxl kDO9i6DmL9wjPn1a3Ux4TJwibIJZnXEjLonhy58lW9DDBp6kYAXIvKusOn1JbA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761524348; a=rsa-sha256; cv=none; b=jtjpU2cSh9t2dEwhWnWs8Pzyk8gasjSQVyEiVMZTnZwnUitxMsAuV9oU8VzATRzKuv52Tt lPbWMQiVslxK8JNCpEat+pldtaIhmOmyDqY6KhRaUE5rf6YJBTbYxw0Tv9fG3dHqAc4+hq 0yizgVSqSXWLezBaI8siMQ++NN2N0GAJJTWpQkE3DjmQWGLoonpFL9g9Qgxb6ZQosJCAKp 83PCOTEdQhalkuGVU/AFuw7hMDr8azksuVMDARUO8EK+Le9d2pzlQSV7+6jcJbrXSTpt0c Bqq7t5zLm07ML382rhxCv/P97qucjXQRSTtZJp2pgPhRPWS5d3X+L5pEXwFYCg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cvvJD5jPRzw0p; Mon, 27 Oct 2025 00:19:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59R0J8k6043200; Mon, 27 Oct 2025 00:19:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59R0J8uA043197; Mon, 27 Oct 2025 00:19:08 GMT (envelope-from git) Date: Mon, 27 Oct 2025 00:19:08 GMT Message-Id: <202510270019.59R0J8uA043197@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 54c8cac0ad8e - stable/15 - mt76: update Mediatek's mt76 driver List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 54c8cac0ad8e90f4da9e95cf36419dfe83d6b2f0 Auto-Submitted: auto-generated The branch stable/15 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=54c8cac0ad8e90f4da9e95cf36419dfe83d6b2f0 commit 54c8cac0ad8e90f4da9e95cf36419dfe83d6b2f0 Author: Bjoern A. Zeeb AuthorDate: 2025-10-17 21:22:52 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-10-27 00:18:22 +0000 mt76: update Mediatek's mt76 driver This version is based on git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git e5f0a698b34ed76002dc5cff3804a61c80233a7a ( tag: v6.17 ). (cherry picked from commit 14b53301e8d482654f94c23e6884fe96b3d26825) --- sys/contrib/dev/mediatek/mt76/channel.c | 9 +- sys/contrib/dev/mediatek/mt76/dma.c | 14 +- sys/contrib/dev/mediatek/mt76/eeprom.c | 4 + sys/contrib/dev/mediatek/mt76/mac80211.c | 70 +- sys/contrib/dev/mediatek/mt76/mcu.c | 4 + sys/contrib/dev/mediatek/mt76/mt76.h | 53 +- sys/contrib/dev/mediatek/mt76/mt7603/dma.c | 2 +- sys/contrib/dev/mediatek/mt76/mt7603/mac.c | 10 +- sys/contrib/dev/mediatek/mt76/mt7603/main.c | 5 +- sys/contrib/dev/mediatek/mt76/mt7615/init.c | 2 +- sys/contrib/dev/mediatek/mt76/mt7615/mac.c | 7 +- sys/contrib/dev/mediatek/mt76/mt7615/main.c | 17 +- sys/contrib/dev/mediatek/mt76/mt7615/mcu.c | 6 +- sys/contrib/dev/mediatek/mt76/mt7615/pci_mac.c | 4 +- sys/contrib/dev/mediatek/mt76/mt7615/sdio_mcu.c | 180 ---- sys/contrib/dev/mediatek/mt76/mt7615/usb.c | 2 +- sys/contrib/dev/mediatek/mt76/mt7615/usb_mcu.c | 100 --- sys/contrib/dev/mediatek/mt76/mt76_connac.h | 7 +- sys/contrib/dev/mediatek/mt76/mt76_connac3_mac.h | 4 + sys/contrib/dev/mediatek/mt76/mt76_connac_mac.c | 2 +- sys/contrib/dev/mediatek/mt76/mt76_connac_mcu.c | 51 +- sys/contrib/dev/mediatek/mt76/mt76_connac_mcu.h | 14 + sys/contrib/dev/mediatek/mt76/mt76x0/pci.c | 3 +- sys/contrib/dev/mediatek/mt76/mt76x02.h | 9 +- sys/contrib/dev/mediatek/mt76/mt76x02_mac.c | 4 +- sys/contrib/dev/mediatek/mt76/mt76x02_mmio.c | 1 - sys/contrib/dev/mediatek/mt76/mt76x02_usb_core.c | 4 +- sys/contrib/dev/mediatek/mt76/mt76x02_util.c | 4 +- sys/contrib/dev/mediatek/mt76/mt76x2/pci.c | 3 +- sys/contrib/dev/mediatek/mt76/mt76x2/pci_main.c | 6 +- sys/contrib/dev/mediatek/mt76/mt76x2/usb.c | 6 +- sys/contrib/dev/mediatek/mt76/mt76x2/usb_init.c | 13 +- sys/contrib/dev/mediatek/mt76/mt76x2/usb_main.c | 2 +- sys/contrib/dev/mediatek/mt76/mt7915/debugfs.c | 81 +- sys/contrib/dev/mediatek/mt76/mt7915/eeprom.c | 33 +- sys/contrib/dev/mediatek/mt76/mt7915/eeprom.h | 1 + sys/contrib/dev/mediatek/mt76/mt7915/init.c | 16 +- sys/contrib/dev/mediatek/mt76/mt7915/mac.c | 84 +- sys/contrib/dev/mediatek/mt76/mt7915/main.c | 13 +- sys/contrib/dev/mediatek/mt76/mt7915/mcu.c | 86 +- sys/contrib/dev/mediatek/mt76/mt7915/mcu.h | 14 +- sys/contrib/dev/mediatek/mt76/mt7915/mmio.c | 11 +- sys/contrib/dev/mediatek/mt76/mt7915/mt7915.h | 25 +- sys/contrib/dev/mediatek/mt76/mt7921/mac.c | 8 +- sys/contrib/dev/mediatek/mt76/mt7921/main.c | 28 +- sys/contrib/dev/mediatek/mt76/mt7921/sdio.c | 2 + sys/contrib/dev/mediatek/mt76/mt7921/sdio_mac.c | 58 ++ sys/contrib/dev/mediatek/mt76/mt7925/Makefile | 1 + sys/contrib/dev/mediatek/mt76/mt7925/init.c | 104 +++ sys/contrib/dev/mediatek/mt76/mt7925/mac.c | 8 +- sys/contrib/dev/mediatek/mt76/mt7925/main.c | 219 +++-- sys/contrib/dev/mediatek/mt76/mt7925/mcu.c | 522 +++++++---- sys/contrib/dev/mediatek/mt76/mt7925/mcu.h | 93 +- sys/contrib/dev/mediatek/mt76/mt7925/mt7925.h | 42 +- sys/contrib/dev/mediatek/mt76/mt7925/pci.c | 7 +- sys/contrib/dev/mediatek/mt76/mt7925/regs.h | 4 +- sys/contrib/dev/mediatek/mt76/mt7925/testmode.c | 201 +++++ sys/contrib/dev/mediatek/mt76/mt792x.h | 22 +- sys/contrib/dev/mediatek/mt76/mt792x_acpi_sar.c | 123 ++- sys/contrib/dev/mediatek/mt76/mt792x_acpi_sar.h | 18 +- sys/contrib/dev/mediatek/mt76/mt792x_core.c | 45 +- sys/contrib/dev/mediatek/mt76/mt792x_mac.c | 5 +- sys/contrib/dev/mediatek/mt76/mt7996/coredump.c | 4 +- sys/contrib/dev/mediatek/mt76/mt7996/debugfs.c | 73 +- sys/contrib/dev/mediatek/mt76/mt7996/dma.c | 196 +++-- sys/contrib/dev/mediatek/mt76/mt7996/eeprom.c | 42 +- sys/contrib/dev/mediatek/mt76/mt7996/init.c | 45 +- sys/contrib/dev/mediatek/mt76/mt7996/mac.c | 492 +++++++---- sys/contrib/dev/mediatek/mt76/mt7996/main.c | 1028 ++++++++++++++++------ sys/contrib/dev/mediatek/mt76/mt7996/mcu.c | 907 ++++++++++++------- sys/contrib/dev/mediatek/mt76/mt7996/mcu.h | 59 +- sys/contrib/dev/mediatek/mt76/mt7996/mmio.c | 200 ++++- sys/contrib/dev/mediatek/mt76/mt7996/mt7996.h | 156 ++-- sys/contrib/dev/mediatek/mt76/mt7996/pci.c | 26 +- sys/contrib/dev/mediatek/mt76/mt7996/regs.h | 51 +- sys/contrib/dev/mediatek/mt76/scan.c | 21 +- sys/contrib/dev/mediatek/mt76/sdio_txrx.c | 6 +- sys/contrib/dev/mediatek/mt76/tx.c | 26 +- sys/contrib/dev/mediatek/mt76/util.c | 2 +- sys/contrib/dev/mediatek/mt76/wed.c | 6 +- sys/modules/mt76/Makefile.inc | 1 + 81 files changed, 3978 insertions(+), 1859 deletions(-) diff --git a/sys/contrib/dev/mediatek/mt76/channel.c b/sys/contrib/dev/mediatek/mt76/channel.c index 6a35c6ebd823..77b75792eb48 100644 --- a/sys/contrib/dev/mediatek/mt76/channel.c +++ b/sys/contrib/dev/mediatek/mt76/channel.c @@ -173,13 +173,13 @@ void mt76_unassign_vif_chanctx(struct ieee80211_hw *hw, if (!mlink) goto out; - if (link_conf != &vif->bss_conf) + if (mlink != (struct mt76_vif_link *)vif->drv_priv) rcu_assign_pointer(mvif->link[link_id], NULL); dev->drv->vif_link_remove(phy, vif, link_conf, mlink); mlink->ctx = NULL; - if (link_conf != &vif->bss_conf) + if (mlink != (struct mt76_vif_link *)vif->drv_priv) kfree_rcu(mlink, rcu_head); out: @@ -293,6 +293,7 @@ struct mt76_vif_link *mt76_get_vif_phy_link(struct mt76_phy *phy, kfree(mlink); return ERR_PTR(ret); } + rcu_assign_pointer(mvif->offchannel_link, mlink); return mlink; } @@ -301,10 +302,14 @@ void mt76_put_vif_phy_link(struct mt76_phy *phy, struct ieee80211_vif *vif, struct mt76_vif_link *mlink) { struct mt76_dev *dev = phy->dev; + struct mt76_vif_data *mvif; if (IS_ERR_OR_NULL(mlink) || !mlink->offchannel) return; + mvif = mlink->mvif; + + rcu_assign_pointer(mvif->offchannel_link, NULL); dev->drv->vif_link_remove(phy, vif, &vif->bss_conf, mlink); kfree(mlink); } diff --git a/sys/contrib/dev/mediatek/mt76/dma.c b/sys/contrib/dev/mediatek/mt76/dma.c index 6765e1281ac3..af902a761e42 100644 --- a/sys/contrib/dev/mediatek/mt76/dma.c +++ b/sys/contrib/dev/mediatek/mt76/dma.c @@ -6,7 +6,7 @@ #include #if defined(__FreeBSD__) #include -#include +#include #endif #include "mt76.h" #include "dma.h" @@ -647,10 +647,8 @@ mt76_dma_rx_fill_buf(struct mt76_dev *dev, struct mt76_queue *q, while (q->queued < q->ndesc - 1) { struct mt76_queue_buf qbuf = {}; - enum dma_data_direction dir; - dma_addr_t addr; - int offset; void *buf = NULL; + int offset; if (mt76_queue_is_wed_rro_ind(q)) goto done; @@ -659,11 +657,8 @@ mt76_dma_rx_fill_buf(struct mt76_dev *dev, struct mt76_queue *q, if (!buf) break; - addr = page_pool_get_dma_addr(virt_to_head_page(buf)) + offset; - dir = page_pool_get_dma_dir(q->page_pool); - dma_sync_single_for_device(dev->dma_dev, addr, len, dir); - - qbuf.addr = addr + q->buf_offset; + qbuf.addr = page_pool_get_dma_addr(virt_to_head_page(buf)) + + offset + q->buf_offset; done: qbuf.len = len - q->buf_offset; qbuf.skip_unmap = false; @@ -1023,6 +1018,7 @@ void mt76_dma_cleanup(struct mt76_dev *dev) int i; mt76_worker_disable(&dev->tx_worker); + napi_disable(&dev->tx_napi); netif_napi_del(&dev->tx_napi); for (i = 0; i < ARRAY_SIZE(dev->phys); i++) { diff --git a/sys/contrib/dev/mediatek/mt76/eeprom.c b/sys/contrib/dev/mediatek/mt76/eeprom.c index eb25879e2021..f2eb2cd6e509 100644 --- a/sys/contrib/dev/mediatek/mt76/eeprom.c +++ b/sys/contrib/dev/mediatek/mt76/eeprom.c @@ -101,6 +101,10 @@ int mt76_get_of_data_from_mtd(struct mt76_dev *dev, void *eep, int offset, int l #ifdef CONFIG_NL80211_TESTMODE dev->test_mtd.name = devm_kstrdup(dev->dev, part, GFP_KERNEL); + if (!dev->test_mtd.name) { + ret = -ENOMEM; + goto out_put_node; + } dev->test_mtd.offset = offset; #endif diff --git a/sys/contrib/dev/mediatek/mt76/mac80211.c b/sys/contrib/dev/mediatek/mt76/mac80211.c index f4a714c57f82..927d8519104f 100644 --- a/sys/contrib/dev/mediatek/mt76/mac80211.c +++ b/sys/contrib/dev/mediatek/mt76/mac80211.c @@ -459,8 +459,10 @@ mt76_phy_init(struct mt76_phy *phy, struct ieee80211_hw *hw) wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_AIRTIME_FAIRNESS); wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_AQL); - wiphy->available_antennas_tx = phy->antenna_mask; - wiphy->available_antennas_rx = phy->antenna_mask; + if (!wiphy->available_antennas_tx) + wiphy->available_antennas_tx = phy->antenna_mask; + if (!wiphy->available_antennas_rx) + wiphy->available_antennas_rx = phy->antenna_mask; wiphy->sar_capa = &mt76_sar_capa; phy->frp = devm_kcalloc(dev->dev, wiphy->sar_capa->num_freq_ranges, @@ -848,8 +850,45 @@ void mt76_free_device(struct mt76_dev *dev) } EXPORT_SYMBOL_GPL(mt76_free_device); -static struct mt76_phy * -mt76_vif_phy(struct ieee80211_hw *hw, struct ieee80211_vif *vif) +static void mt76_reset_phy(struct mt76_phy *phy) +{ + if (!phy) + return; + + INIT_LIST_HEAD(&phy->tx_list); +} + +void mt76_reset_device(struct mt76_dev *dev) +{ + int i; + + rcu_read_lock(); + for (i = 0; i < ARRAY_SIZE(dev->wcid); i++) { + struct mt76_wcid *wcid; + + wcid = rcu_dereference(dev->wcid[i]); + if (!wcid) + continue; + + wcid->sta = 0; + mt76_wcid_cleanup(dev, wcid); + rcu_assign_pointer(dev->wcid[i], NULL); + } + rcu_read_unlock(); + + INIT_LIST_HEAD(&dev->wcid_list); + INIT_LIST_HEAD(&dev->sta_poll_list); + dev->vif_mask = 0; + memset(dev->wcid_mask, 0, sizeof(dev->wcid_mask)); + + mt76_reset_phy(&dev->phy); + for (i = 0; i < ARRAY_SIZE(dev->phys); i++) + mt76_reset_phy(dev->phys[i]); +} +EXPORT_SYMBOL_GPL(mt76_reset_device); + +struct mt76_phy *mt76_vif_phy(struct ieee80211_hw *hw, + struct ieee80211_vif *vif) { struct mt76_vif_link *mlink = (struct mt76_vif_link *)vif->drv_priv; struct mt76_chanctx *ctx; @@ -863,6 +902,7 @@ mt76_vif_phy(struct ieee80211_hw *hw, struct ieee80211_vif *vif) ctx = (struct mt76_chanctx *)mlink->ctx->drv_priv; return ctx->phy; } +EXPORT_SYMBOL_GPL(mt76_vif_phy); static void mt76_rx_release_amsdu(struct mt76_phy *phy, enum mt76_rxq_id q) { @@ -1712,6 +1752,10 @@ void mt76_wcid_cleanup(struct mt76_dev *dev, struct mt76_wcid *wcid) skb_queue_splice_tail_init(&wcid->tx_pending, &list); spin_unlock(&wcid->tx_pending.lock); + spin_lock(&wcid->tx_offchannel.lock); + skb_queue_splice_tail_init(&wcid->tx_offchannel, &list); + spin_unlock(&wcid->tx_offchannel.lock); + spin_unlock_bh(&phy->tx_lock); while ((skb = __skb_dequeue(&list)) != NULL) { @@ -1723,7 +1767,7 @@ EXPORT_SYMBOL_GPL(mt76_wcid_cleanup); void mt76_wcid_add_poll(struct mt76_dev *dev, struct mt76_wcid *wcid) { - if (test_bit(MT76_MCU_RESET, &dev->phy.state)) + if (test_bit(MT76_MCU_RESET, &dev->phy.state) || !wcid->sta) return; spin_lock_bh(&dev->sta_poll_lock); @@ -1733,6 +1777,17 @@ void mt76_wcid_add_poll(struct mt76_dev *dev, struct mt76_wcid *wcid) } EXPORT_SYMBOL_GPL(mt76_wcid_add_poll); +s8 mt76_get_power_bound(struct mt76_phy *phy, s8 txpower) +{ + int n_chains = hweight16(phy->chainmask); + + txpower = mt76_get_sar_power(phy, phy->chandef.chan, txpower * 2); + txpower -= mt76_tx_power_path_delta(n_chains); + + return txpower; +} +EXPORT_SYMBOL_GPL(mt76_get_power_bound); + int mt76_get_txpower(struct ieee80211_hw *hw, struct ieee80211_vif *vif, unsigned int link_id, int *dbm) { @@ -1743,7 +1798,7 @@ int mt76_get_txpower(struct ieee80211_hw *hw, struct ieee80211_vif *vif, return -EINVAL; n_chains = hweight16(phy->chainmask); - delta = mt76_tx_power_nss_delta(n_chains); + delta = mt76_tx_power_path_delta(n_chains); *dbm = DIV_ROUND_UP(phy->txpower_cur + delta, 2); return 0; @@ -1914,7 +1969,8 @@ void mt76_sw_scan_complete(struct ieee80211_hw *hw, struct ieee80211_vif *vif) } EXPORT_SYMBOL_GPL(mt76_sw_scan_complete); -int mt76_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant) +int mt76_get_antenna(struct ieee80211_hw *hw, int radio_idx, u32 *tx_ant, + u32 *rx_ant) { struct mt76_phy *phy = hw->priv; struct mt76_dev *dev = phy->dev; diff --git a/sys/contrib/dev/mediatek/mt76/mcu.c b/sys/contrib/dev/mediatek/mt76/mcu.c index f8f47a40d3be..d554eed10986 100644 --- a/sys/contrib/dev/mediatek/mt76/mcu.c +++ b/sys/contrib/dev/mediatek/mt76/mcu.c @@ -78,6 +78,10 @@ int mt76_mcu_skb_send_and_get_msg(struct mt76_dev *dev, struct sk_buff *skb, unsigned long expires; int ret, seq; + if (mt76_is_sdio(dev)) + if (test_bit(MT76_RESET, &dev->phy.state) && atomic_read(&dev->bus_hung)) + return -EIO; + if (ret_skb) *ret_skb = NULL; diff --git a/sys/contrib/dev/mediatek/mt76/mt76.h b/sys/contrib/dev/mediatek/mt76/mt76.h index c54d02346262..0b7686e6c36e 100644 --- a/sys/contrib/dev/mediatek/mt76/mt76.h +++ b/sys/contrib/dev/mediatek/mt76/mt76.h @@ -20,7 +20,6 @@ #include #include #include -#include #endif #include #include @@ -170,6 +169,16 @@ enum mt76_dfs_state { MT_DFS_STATE_ACTIVE, }; +#define MT76_RNR_SCAN_MAX_BSSIDS 16 +struct mt76_scan_rnr_param { + u8 bssid[MT76_RNR_SCAN_MAX_BSSIDS][ETH_ALEN]; + u8 channel[MT76_RNR_SCAN_MAX_BSSIDS]; + u8 random_mac[ETH_ALEN]; + u8 seq_num; + u8 bssid_num; + u32 sreq_flag; +}; + struct mt76_queue_buf { dma_addr_t addr; u16 len:15, @@ -359,6 +368,7 @@ struct mt76_wcid { u8 hw_key_idx; u8 hw_key_idx2; + u8 offchannel:1; u8 sta:1; u8 sta_disabled:1; u8 amsdu:1; @@ -499,6 +509,7 @@ struct mt76_hw_cap { #define MT_DRV_RX_DMA_HDR BIT(3) #define MT_DRV_HW_MGMT_TXQ BIT(4) #define MT_DRV_AMSDU_OFFLOAD BIT(5) +#define MT_DRV_IGNORE_TXS_FAILED BIT(6) struct mt76_driver_ops { u32 drv_flags; @@ -777,6 +788,7 @@ struct mt76_testmode_data { struct mt76_vif_link { u8 idx; + u8 link_idx; u8 omac_idx; u8 band_idx; u8 wmm_idx; @@ -794,6 +806,7 @@ struct mt76_vif_link { struct mt76_vif_data { struct mt76_vif_link __rcu *link[IEEE80211_MLD_MAX_NUM_LINKS]; + struct mt76_vif_link __rcu *offchannel_link; struct mt76_phy *roc_phy; u16 valid_links; @@ -945,6 +958,8 @@ struct mt76_dev { char alpha2[3]; enum nl80211_dfs_regions region; + struct mt76_scan_rnr_param rnr; + u32 debugfs_reg; u8 csa_complete; @@ -975,6 +990,8 @@ struct mt76_dev { struct mt76_usb usb; struct mt76_sdio sdio; }; + + atomic_t bus_hung; }; /* per-phy stats. */ @@ -1216,6 +1233,16 @@ static inline int mt76_wed_dma_setup(struct mt76_dev *dev, struct mt76_queue *q, #define mt76_dereference(p, dev) \ rcu_dereference_protected(p, lockdep_is_held(&(dev)->mutex)) +static inline struct mt76_wcid * +__mt76_wcid_ptr(struct mt76_dev *dev, u16 idx) +{ + if (idx >= ARRAY_SIZE(dev->wcid)) + return NULL; + return rcu_dereference(dev->wcid[idx]); +} + +#define mt76_wcid_ptr(dev, idx) __mt76_wcid_ptr(&(dev)->mt76, idx) + struct mt76_dev *mt76_alloc_device(struct device *pdev, unsigned int size, const struct ieee80211_ops *ops, const struct mt76_driver_ops *drv_ops); @@ -1223,6 +1250,7 @@ int mt76_register_device(struct mt76_dev *dev, bool vht, struct ieee80211_rate *rates, int n_rates); void mt76_unregister_device(struct mt76_dev *dev); void mt76_free_device(struct mt76_dev *dev); +void mt76_reset_device(struct mt76_dev *dev); void mt76_unregister_phy(struct mt76_phy *phy); struct mt76_phy *mt76_alloc_radio_phy(struct mt76_dev *dev, unsigned int size, @@ -1232,6 +1260,8 @@ struct mt76_phy *mt76_alloc_phy(struct mt76_dev *dev, unsigned int size, u8 band_idx); int mt76_register_phy(struct mt76_phy *phy, bool vht, struct ieee80211_rate *rates, int n_rates); +struct mt76_phy *mt76_vif_phy(struct ieee80211_hw *hw, + struct ieee80211_vif *vif); struct dentry *mt76_register_debugfs_fops(struct mt76_phy *phy, const struct file_operations *ops); @@ -1388,12 +1418,12 @@ static inline bool mt76_is_skb_pktid(u8 pktid) return pktid >= MT_PACKET_ID_FIRST; } -static inline u8 mt76_tx_power_nss_delta(u8 nss) +static inline u8 mt76_tx_power_path_delta(u8 path) { - static const u8 nss_delta[4] = { 0, 6, 9, 12 }; - u8 idx = nss - 1; + static const u8 path_delta[5] = { 0, 6, 9, 12, 14 }; + u8 idx = path - 1; - return (idx < ARRAY_SIZE(nss_delta)) ? nss_delta[idx] : 0; + return (idx < ARRAY_SIZE(path_delta)) ? path_delta[idx] : 0; } static inline bool mt76_testmode_enabled(struct mt76_phy *phy) @@ -1490,6 +1520,8 @@ void mt76_sta_pre_rcu_remove(struct ieee80211_hw *hw, struct ieee80211_vif *vif, int mt76_get_min_avg_rssi(struct mt76_dev *dev, u8 phy_idx); +s8 mt76_get_power_bound(struct mt76_phy *phy, s8 txpower); + int mt76_get_txpower(struct ieee80211_hw *hw, struct ieee80211_vif *vif, unsigned int link_id, int *dbm); int mt76_init_sar_power(struct ieee80211_hw *hw, @@ -1501,7 +1533,8 @@ int mt76_get_sar_power(struct mt76_phy *phy, void mt76_csa_check(struct mt76_dev *dev); void mt76_csa_finish(struct mt76_dev *dev); -int mt76_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant); +int mt76_get_antenna(struct ieee80211_hw *hw, int radio_idx, u32 *tx_ant, + u32 *rx_ant); int mt76_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta, bool set); void mt76_insert_ccmp_hdr(struct sk_buff *skb, u8 key_id); int mt76_get_rate(struct mt76_dev *dev, @@ -1793,7 +1826,8 @@ static inline void mt76_put_page_pool_buf(void *buf, bool allow_direct) { struct page *page = virt_to_head_page(buf); - page_pool_put_full_page(page->pp, page, allow_direct); + page_pool_put_full_page(pp_page_to_nmdesc(page)->pp, page, + allow_direct); } static inline void * @@ -1864,6 +1898,9 @@ mt76_vif_link(struct mt76_dev *dev, struct ieee80211_vif *vif, int link_id) struct mt76_vif_link *mlink = (struct mt76_vif_link *)vif->drv_priv; struct mt76_vif_data *mvif = mlink->mvif; + if (!link_id) + return mlink; + return mt76_dereference(mvif->link[link_id], dev); } @@ -1874,7 +1911,7 @@ mt76_vif_conf_link(struct mt76_dev *dev, struct ieee80211_vif *vif, struct mt76_vif_link *mlink = (struct mt76_vif_link *)vif->drv_priv; struct mt76_vif_data *mvif = mlink->mvif; - if (link_conf == &vif->bss_conf) + if (link_conf == &vif->bss_conf || !link_conf->link_id) return mlink; return mt76_dereference(mvif->link[link_conf->link_id], dev); diff --git a/sys/contrib/dev/mediatek/mt76/mt7603/dma.c b/sys/contrib/dev/mediatek/mt76/mt7603/dma.c index 863e5770df51..e26cc78fff94 100644 --- a/sys/contrib/dev/mediatek/mt76/mt7603/dma.c +++ b/sys/contrib/dev/mediatek/mt76/mt7603/dma.c @@ -44,7 +44,7 @@ mt7603_rx_loopback_skb(struct mt7603_dev *dev, struct sk_buff *skb) if (idx >= MT7603_WTBL_STA - 1) goto free; - wcid = rcu_dereference(dev->mt76.wcid[idx]); + wcid = mt76_wcid_ptr(dev, idx); if (!wcid) goto free; diff --git a/sys/contrib/dev/mediatek/mt76/mt7603/mac.c b/sys/contrib/dev/mediatek/mt76/mt7603/mac.c index 413973d05b43..6387f9e61060 100644 --- a/sys/contrib/dev/mediatek/mt76/mt7603/mac.c +++ b/sys/contrib/dev/mediatek/mt76/mt7603/mac.c @@ -487,10 +487,7 @@ mt7603_rx_get_wcid(struct mt7603_dev *dev, u8 idx, bool unicast) struct mt7603_sta *sta; struct mt76_wcid *wcid; - if (idx >= MT7603_WTBL_SIZE) - return NULL; - - wcid = rcu_dereference(dev->mt76.wcid[idx]); + wcid = mt76_wcid_ptr(dev, idx); if (unicast || !wcid) return wcid; @@ -1266,12 +1263,9 @@ void mt7603_mac_add_txs(struct mt7603_dev *dev, void *data) if (pid == MT_PACKET_ID_NO_ACK) return; - if (wcidx >= MT7603_WTBL_SIZE) - return; - rcu_read_lock(); - wcid = rcu_dereference(dev->mt76.wcid[wcidx]); + wcid = mt76_wcid_ptr(dev, wcidx); if (!wcid) goto out; diff --git a/sys/contrib/dev/mediatek/mt76/mt7603/main.c b/sys/contrib/dev/mediatek/mt76/mt7603/main.c index 3e8b1ec76169..0d7c84941cd0 100644 --- a/sys/contrib/dev/mediatek/mt76/mt7603/main.c +++ b/sys/contrib/dev/mediatek/mt76/mt7603/main.c @@ -216,7 +216,7 @@ static int mt7603_set_sar_specs(struct ieee80211_hw *hw, } static int -mt7603_config(struct ieee80211_hw *hw, u32 changed) +mt7603_config(struct ieee80211_hw *hw, int radio_idx, u32 changed) { struct mt7603_dev *dev = hw->priv; int ret = 0; @@ -657,7 +657,8 @@ mt7603_sta_rate_tbl_update(struct ieee80211_hw *hw, struct ieee80211_vif *vif, } static void -mt7603_set_coverage_class(struct ieee80211_hw *hw, s16 coverage_class) +mt7603_set_coverage_class(struct ieee80211_hw *hw, int radio_idx, + s16 coverage_class) { struct mt7603_dev *dev = hw->priv; diff --git a/sys/contrib/dev/mediatek/mt76/mt7615/init.c b/sys/contrib/dev/mediatek/mt76/mt7615/init.c index 1e55e600981b..06d5a3f2fa67 100644 --- a/sys/contrib/dev/mediatek/mt76/mt7615/init.c +++ b/sys/contrib/dev/mediatek/mt76/mt7615/init.c @@ -275,7 +275,7 @@ void mt7615_init_txpower(struct mt7615_dev *dev, struct ieee80211_supported_band *sband) { int i, n_chains = hweight8(dev->mphy.antenna_mask), target_chains; - int delta_idx, delta = mt76_tx_power_nss_delta(n_chains); + int delta_idx, delta = mt76_tx_power_path_delta(n_chains); u8 *eep = (u8 *)dev->mt76.eeprom.data; enum nl80211_band band = sband->band; struct mt76_power_limits limits; diff --git a/sys/contrib/dev/mediatek/mt76/mt7615/mac.c b/sys/contrib/dev/mediatek/mt76/mt7615/mac.c index 994f6f8ccd87..10bf7e5b3acb 100644 --- a/sys/contrib/dev/mediatek/mt76/mt7615/mac.c +++ b/sys/contrib/dev/mediatek/mt76/mt7615/mac.c @@ -93,10 +93,7 @@ static struct mt76_wcid *mt7615_rx_get_wcid(struct mt7615_dev *dev, struct mt7615_sta *sta; struct mt76_wcid *wcid; - if (idx >= MT7615_WTBL_SIZE) - return NULL; - - wcid = rcu_dereference(dev->mt76.wcid[idx]); + wcid = mt76_wcid_ptr(dev, idx); if (unicast || !wcid) return wcid; @@ -1507,7 +1504,7 @@ static void mt7615_mac_add_txs(struct mt7615_dev *dev, void *data) rcu_read_lock(); - wcid = rcu_dereference(dev->mt76.wcid[wcidx]); + wcid = mt76_wcid_ptr(dev, wcidx); if (!wcid) goto out; diff --git a/sys/contrib/dev/mediatek/mt76/mt7615/main.c b/sys/contrib/dev/mediatek/mt76/mt7615/main.c index 2e7b05eeef7a..15fe155ac3f3 100644 --- a/sys/contrib/dev/mediatek/mt76/mt7615/main.c +++ b/sys/contrib/dev/mediatek/mt76/mt7615/main.c @@ -97,7 +97,7 @@ static void mt7615_stop(struct ieee80211_hw *hw, bool suspend) struct mt7615_phy *phy = mt7615_hw_phy(hw); cancel_delayed_work_sync(&phy->mt76->mac_work); - del_timer_sync(&phy->roc_timer); + timer_delete_sync(&phy->roc_timer); cancel_work_sync(&phy->roc_work); cancel_delayed_work_sync(&dev->pm.ps_work); @@ -420,7 +420,7 @@ static int mt7615_set_sar_specs(struct ieee80211_hw *hw, return mt76_update_channel(phy->mt76); } -static int mt7615_config(struct ieee80211_hw *hw, u32 changed) +static int mt7615_config(struct ieee80211_hw *hw, int radio_idx, u32 changed) { struct mt7615_dev *dev = mt7615_hw_dev(hw); struct mt7615_phy *phy = mt7615_hw_phy(hw); @@ -784,7 +784,8 @@ static void mt7615_tx(struct ieee80211_hw *hw, mt76_connac_pm_queue_skb(hw, &dev->pm, wcid, skb); } -static int mt7615_set_rts_threshold(struct ieee80211_hw *hw, u32 val) +static int mt7615_set_rts_threshold(struct ieee80211_hw *hw, int radio_idx, + u32 val) { struct mt7615_dev *dev = mt7615_hw_dev(hw); struct mt7615_phy *phy = mt7615_hw_phy(hw); @@ -972,7 +973,8 @@ mt7615_offset_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif, } static void -mt7615_set_coverage_class(struct ieee80211_hw *hw, s16 coverage_class) +mt7615_set_coverage_class(struct ieee80211_hw *hw, int radio_idx, + s16 coverage_class) { struct mt7615_phy *phy = mt7615_hw_phy(hw); struct mt7615_dev *dev = phy->dev; @@ -984,7 +986,8 @@ mt7615_set_coverage_class(struct ieee80211_hw *hw, s16 coverage_class) } static int -mt7615_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant) +mt7615_set_antenna(struct ieee80211_hw *hw, int radio_idx, + u32 tx_ant, u32 rx_ant) { struct mt7615_dev *dev = mt7615_hw_dev(hw); struct mt7615_phy *phy = mt7615_hw_phy(hw); @@ -1043,7 +1046,7 @@ void mt7615_roc_work(struct work_struct *work) void mt7615_roc_timer(struct timer_list *timer) { - struct mt7615_phy *phy = from_timer(phy, timer, roc_timer); + struct mt7615_phy *phy = timer_container_of(phy, timer, roc_timer); ieee80211_queue_work(phy->mt76->hw, &phy->roc_work); } @@ -1194,7 +1197,7 @@ static int mt7615_cancel_remain_on_channel(struct ieee80211_hw *hw, if (!test_and_clear_bit(MT76_STATE_ROC, &phy->mt76->state)) return 0; - del_timer_sync(&phy->roc_timer); + timer_delete_sync(&phy->roc_timer); cancel_work_sync(&phy->roc_work); mt7615_mutex_acquire(phy->dev); diff --git a/sys/contrib/dev/mediatek/mt76/mt7615/mcu.c b/sys/contrib/dev/mediatek/mt76/mt7615/mcu.c index ccc36ee0900c..ec2f759d407f 100644 --- a/sys/contrib/dev/mediatek/mt76/mt7615/mcu.c +++ b/sys/contrib/dev/mediatek/mt76/mt7615/mcu.c @@ -2071,7 +2071,7 @@ static void mt7615_mcu_set_txpower_sku(struct mt7615_phy *phy, u8 *sku) }; tx_power = mt76_get_sar_power(mphy, mphy->chandef.chan, tx_power); - tx_power -= mt76_tx_power_nss_delta(n_chains); + tx_power -= mt76_tx_power_path_delta(n_chains); tx_power = mt76_get_rate_power_limits(mphy, mphy->chandef.chan, &limits, tx_power); mphy->txpower_cur = tx_power; @@ -2088,8 +2088,8 @@ static void mt7615_mcu_set_txpower_sku(struct mt7615_phy *phy, u8 *sku) int delta = 0; if (i < n_chains - 1) - delta = mt76_tx_power_nss_delta(n_chains) - - mt76_tx_power_nss_delta(i + 1); + delta = mt76_tx_power_path_delta(n_chains) - + mt76_tx_power_path_delta(i + 1); sku[MT_SKU_1SS_DELTA + i] = delta; } } diff --git a/sys/contrib/dev/mediatek/mt76/mt7615/pci_mac.c b/sys/contrib/dev/mediatek/mt76/mt7615/pci_mac.c index 5da2bf332af0..fe8a3d852dbf 100644 --- a/sys/contrib/dev/mediatek/mt76/mt7615/pci_mac.c +++ b/sys/contrib/dev/mediatek/mt76/mt7615/pci_mac.c @@ -223,12 +223,12 @@ void mt7615_mac_reset_work(struct work_struct *work) set_bit(MT76_MCU_RESET, &dev->mphy.state); wake_up(&dev->mt76.mcu.wait); cancel_delayed_work_sync(&dev->mphy.mac_work); - del_timer_sync(&dev->phy.roc_timer); + timer_delete_sync(&dev->phy.roc_timer); cancel_work_sync(&dev->phy.roc_work); if (phy2) { set_bit(MT76_RESET, &phy2->mt76->state); cancel_delayed_work_sync(&phy2->mt76->mac_work); - del_timer_sync(&phy2->roc_timer); + timer_delete_sync(&phy2->roc_timer); cancel_work_sync(&phy2->roc_work); } diff --git a/sys/contrib/dev/mediatek/mt76/mt7615/sdio_mcu.c b/sys/contrib/dev/mediatek/mt76/mt7615/sdio_mcu.c deleted file mode 100644 index a7b8acb2da83..000000000000 --- a/sys/contrib/dev/mediatek/mt76/mt7615/sdio_mcu.c +++ /dev/null @@ -1,180 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* Copyright (C) 2020 MediaTek Inc. - * - * Author: Felix Fietkau - * Lorenzo Bianconi - * Sean Wang - */ -#include -#include -#include -#include - -#include "../sdio.h" -#include "mt7615.h" -#include "mac.h" -#include "mcu.h" -#include "regs.h" - -static int mt7663s_mcu_init_sched(struct mt7615_dev *dev) -{ - struct mt76_sdio *sdio = &dev->mt76.sdio; - u32 txdwcnt; - - sdio->sched.pse_data_quota = mt76_get_field(dev, MT_PSE_PG_HIF0_GROUP, - MT_HIF0_MIN_QUOTA); - sdio->sched.pse_mcu_quota = mt76_get_field(dev, MT_PSE_PG_HIF1_GROUP, - MT_HIF1_MIN_QUOTA); - sdio->sched.ple_data_quota = mt76_get_field(dev, MT_PLE_PG_HIF0_GROUP, - MT_HIF0_MIN_QUOTA); - sdio->sched.pse_page_size = MT_PSE_PAGE_SZ; - txdwcnt = mt76_get_field(dev, MT_PP_TXDWCNT, - MT_PP_TXDWCNT_TX1_ADD_DW_CNT); - sdio->sched.deficit = txdwcnt << 2; - - return 0; -} - -static int -mt7663s_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb, - int cmd, int *seq) -{ - struct mt7615_dev *dev = container_of(mdev, struct mt7615_dev, mt76); - int ret; - - mt7615_mcu_fill_msg(dev, skb, cmd, seq); - ret = mt76_tx_queue_skb_raw(dev, mdev->q_mcu[MT_MCUQ_WM], skb, 0); - if (ret) - return ret; - - mt76_queue_kick(dev, mdev->q_mcu[MT_MCUQ_WM]); - - return ret; -} - -static int __mt7663s_mcu_drv_pmctrl(struct mt7615_dev *dev) -{ - struct sdio_func *func = dev->mt76.sdio.func; - struct mt76_phy *mphy = &dev->mt76.phy; - struct mt76_connac_pm *pm = &dev->pm; - u32 status; - int ret; - - sdio_claim_host(func); - - sdio_writel(func, WHLPCR_FW_OWN_REQ_CLR, MCR_WHLPCR, NULL); - - ret = readx_poll_timeout(mt76s_read_pcr, &dev->mt76, status, - status & WHLPCR_IS_DRIVER_OWN, 2000, 1000000); - if (ret < 0) { - dev_err(dev->mt76.dev, "Cannot get ownership from device"); - } else { - clear_bit(MT76_STATE_PM, &mphy->state); - - pm->stats.last_wake_event = jiffies; - pm->stats.doze_time += pm->stats.last_wake_event - - pm->stats.last_doze_event; - } - sdio_release_host(func); - - return ret; -} - -static int mt7663s_mcu_drv_pmctrl(struct mt7615_dev *dev) -{ - struct mt76_phy *mphy = &dev->mt76.phy; - int ret = 0; - - mutex_lock(&dev->pm.mutex); - - if (test_bit(MT76_STATE_PM, &mphy->state)) - ret = __mt7663s_mcu_drv_pmctrl(dev); - - mutex_unlock(&dev->pm.mutex); - - return ret; -} - -static int mt7663s_mcu_fw_pmctrl(struct mt7615_dev *dev) -{ - struct sdio_func *func = dev->mt76.sdio.func; - struct mt76_phy *mphy = &dev->mt76.phy; - struct mt76_connac_pm *pm = &dev->pm; - int ret = 0; - u32 status; - - mutex_lock(&pm->mutex); - - if (mt76_connac_skip_fw_pmctrl(mphy, pm)) - goto out; - - sdio_claim_host(func); - - sdio_writel(func, WHLPCR_FW_OWN_REQ_SET, MCR_WHLPCR, NULL); - - ret = readx_poll_timeout(mt76s_read_pcr, &dev->mt76, status, - !(status & WHLPCR_IS_DRIVER_OWN), 2000, 1000000); - if (ret < 0) { - dev_err(dev->mt76.dev, "Cannot set ownership to device"); - clear_bit(MT76_STATE_PM, &mphy->state); - } else { - pm->stats.last_doze_event = jiffies; - pm->stats.awake_time += pm->stats.last_doze_event - - pm->stats.last_wake_event; - } - - sdio_release_host(func); -out: - mutex_unlock(&pm->mutex); - - return ret; -} - -int mt7663s_mcu_init(struct mt7615_dev *dev) -{ - static const struct mt76_mcu_ops mt7663s_mcu_ops = { - .headroom = sizeof(struct mt7615_mcu_txd), - .tailroom = MT_USB_TAIL_SIZE, - .mcu_skb_send_msg = mt7663s_mcu_send_message, - .mcu_parse_response = mt7615_mcu_parse_response, - .mcu_rr = mt76_connac_mcu_reg_rr, - .mcu_wr = mt76_connac_mcu_reg_wr, - }; - struct mt7615_mcu_ops *mcu_ops; - int ret; - - ret = __mt7663s_mcu_drv_pmctrl(dev); - if (ret) - return ret; - - dev->mt76.mcu_ops = &mt7663s_mcu_ops; - - ret = mt76_get_field(dev, MT_CONN_ON_MISC, MT_TOP_MISC2_FW_N9_RDY); - if (ret) { - mt7615_mcu_restart(&dev->mt76); - if (!mt76_poll_msec(dev, MT_CONN_ON_MISC, - MT_TOP_MISC2_FW_N9_RDY, 0, 500)) - return -EIO; - } - - ret = __mt7663_load_firmware(dev); - if (ret) - return ret; - - mcu_ops = devm_kmemdup(dev->mt76.dev, dev->mcu_ops, sizeof(*mcu_ops), - GFP_KERNEL); - if (!mcu_ops) - return -ENOMEM; - - mcu_ops->set_drv_ctrl = mt7663s_mcu_drv_pmctrl; - mcu_ops->set_fw_ctrl = mt7663s_mcu_fw_pmctrl; - dev->mcu_ops = mcu_ops; - - ret = mt7663s_mcu_init_sched(dev); - if (ret) - return ret; - - set_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state); - - return 0; -} diff --git a/sys/contrib/dev/mediatek/mt76/mt7615/usb.c b/sys/contrib/dev/mediatek/mt76/mt7615/usb.c index 4aa9fa1c4a23..d96e06b4fee1 100644 --- a/sys/contrib/dev/mediatek/mt76/mt7615/usb.c +++ b/sys/contrib/dev/mediatek/mt76/mt7615/usb.c @@ -85,7 +85,7 @@ static void mt7663u_stop(struct ieee80211_hw *hw, bool suspend) struct mt7615_dev *dev = hw->priv; clear_bit(MT76_STATE_RUNNING, &dev->mphy.state); - del_timer_sync(&phy->roc_timer); + timer_delete_sync(&phy->roc_timer); cancel_work_sync(&phy->roc_work); cancel_delayed_work_sync(&phy->scan_work); cancel_delayed_work_sync(&phy->mt76->mac_work); diff --git a/sys/contrib/dev/mediatek/mt76/mt7615/usb_mcu.c b/sys/contrib/dev/mediatek/mt76/mt7615/usb_mcu.c deleted file mode 100644 index 33c01f8ce8e2..000000000000 --- a/sys/contrib/dev/mediatek/mt76/mt7615/usb_mcu.c +++ /dev/null @@ -1,100 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* Copyright (C) 2019 MediaTek Inc. - * - * Author: Felix Fietkau - * Lorenzo Bianconi - * Sean Wang - */ -#include -#include - -#include "mt7615.h" -#include "mac.h" -#include "mcu.h" -#include "regs.h" - -static int -mt7663u_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb, - int cmd, int *seq) -{ - struct mt7615_dev *dev = container_of(mdev, struct mt7615_dev, mt76); - int ret, ep, len, pad; - - mt7615_mcu_fill_msg(dev, skb, cmd, seq); - if (cmd != MCU_CMD(FW_SCATTER)) - ep = MT_EP_OUT_INBAND_CMD; - else - ep = MT_EP_OUT_AC_BE; - - len = skb->len; - put_unaligned_le32(len, skb_push(skb, sizeof(len))); - pad = round_up(skb->len, 4) + 4 - skb->len; - ret = mt76_skb_adjust_pad(skb, pad); - if (ret < 0) - goto out; - *** 10286 LINES SKIPPED *** From nobody Mon Oct 27 03:07:45 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cvz2p1xYsz6FF9V; Mon, 27 Oct 2025 03:07:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cvz2n4vsSz44Mv; Mon, 27 Oct 2025 03:07:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761534465; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bcEnuGvBYSnquIOnEeQDf8i7S96NkRmO1o4/oNB73LM=; b=osCipIwYAo694dUkEZeWtovo9O8KDzmkISNyYZTiHVgw6SZg2fAjJ3N8/O3KurKeEmL8zo AzCoSszNJRs4XcwM4OInMpEhsKU6/SGxFWhSnmv9ea60WyxCG2Bhhu2HlNqW8nrdR15cQO nOTLEPWY9a1xBCQGvwe4zGQqIJhJXqJ/qIcePrjl/cNgUYXgj0M1cxiuaaNH8UySJqurfg AA6CtEV4dAaRveeqrdVznSdT+rFt0ukzMUAET2TaQTd3MMihQnCubIMZI0rzsf6BYyPlGv vwaw6qkO7ZFG59XgqBZpjFsxiKpwRP4699l39LR+8LiuO7XOl8rHCxlP5sHfDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761534465; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bcEnuGvBYSnquIOnEeQDf8i7S96NkRmO1o4/oNB73LM=; b=xK6nhlGuQSz97LCebyV/uwOuNZeGX6iC27HVjZuzNwAtBReUt5J51VVPCTLn79yLKgKi7t 1FemMOZUWfA9D1K5C6mRWICHgsl2KHJpNl/mpMS5cPkn17vFbSSo7LpPmVK8LBYg0jJajn nfNYKXaJHDLFlnf7uOjt/HE+26E2PCGN9zMSBj0l/osLVREUPMD/BWi6GPGobs3Ri7PUeW 1qfWgHUKTyMb2v4TRrRy4gdBpenxXsEZrKIfEVSUp3xdhxNn05NSGIwYyu8ilJ0MaNscyL QJhqhAocx1/Lu8Py5cXB7FXn7CLfcmyXzTHldB9EEfVrOMoh8DQT4K+Yp7dOvw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761534465; a=rsa-sha256; cv=none; b=brBNLqxi/tKYD9wbMVcdYzd0Vtka91pv1JfDUZtMviXF6cWCaxs6fdOss2PIkfkh80Y73i aMYOzwQbb4a/JIFWbMw89LLyzf5TUoRMBadIYUfbbcREe7bMYEqLBF8T2No/VjaDeu7DL3 aTfR6j7t92uikCSkGRjOq9ok7BoB5bwE5+k90yYta2ZoLUU95mGafCeTayOnmbWpZ8rG1W 1U5wMfom+6H4yOMu4ydOcIEkujKumbheRYi6jEHg94r7HmrXELqYKObegmM1IWjZIjP2oT /SzYnirNosgufj9tRBp9y1mOmddygKuZpJOSasq9moXwUel7+iZiV2zxf59eHg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cvz2n49Kgz11c0; Mon, 27 Oct 2025 03:07:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59R37jom061941; Mon, 27 Oct 2025 03:07:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59R37ja0061938; Mon, 27 Oct 2025 03:07:45 GMT (envelope-from git) Date: Mon, 27 Oct 2025 03:07:45 GMT Message-Id: <202510270307.59R37ja0061938@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: c412af68cb60 - stable/15 - amd64: print 'EFI RT fault' line before fault CPU state List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: c412af68cb60f54fdbc29eb09e35869ed07c93f7 Auto-Submitted: auto-generated The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=c412af68cb60f54fdbc29eb09e35869ed07c93f7 commit c412af68cb60f54fdbc29eb09e35869ed07c93f7 Author: Konstantin Belousov AuthorDate: 2025-10-24 09:39:13 +0000 Commit: Konstantin Belousov CommitDate: 2025-10-27 03:07:18 +0000 amd64: print 'EFI RT fault' line before fault CPU state (cherry picked from commit cfb28c5ea0bce2ce95b14076bc63546049f0c16c) --- sys/amd64/amd64/trap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c index f3469ed5e2bc..84305ca918df 100644 --- a/sys/amd64/amd64/trap.c +++ b/sys/amd64/amd64/trap.c @@ -435,9 +435,9 @@ trap(struct trapframe *frame) if ((print_efirt_faults == 1 && cnt == 0) || print_efirt_faults == 2) { - trap_diag(frame, 0); printf("EFI RT fault %s\n", traptype_to_msg(type)); + trap_diag(frame, 0); } frame->tf_rip = (long)curpcb->pcb_onfault; return; @@ -870,8 +870,8 @@ after_vmfault: if ((print_efirt_faults == 1 && cnt == 0) || print_efirt_faults == 2) { - trap_diag(frame, eva); printf("EFI RT page fault\n"); + trap_diag(frame, eva); } } frame->tf_rip = (long)curpcb->pcb_onfault; From nobody Mon Oct 27 03:08:43 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cvz3v4pp0z6FFKF; Mon, 27 Oct 2025 03:08:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cvz3v43nGz44nh; Mon, 27 Oct 2025 03:08:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761534523; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=m7f4VCWUc0ZxU8ls9FbzzHTp8WEdOk7gWjGXoAaL4A0=; b=t5u7IhZUPZunYjfbb5X30I4w4bVMns4qoQAX9nh1sljsh07rJBJDHGIAvkvhU9RdIs7HZT ObV5U5/cjQf0YROO79w1Brbv3JMRanJpDa/zxJyEfYv0A944pygTfBAJhpGIRtiaiCCeYv 3dAbhpIQYuIQVCuvmaE6uaWS00B68ogRwgcca87Cv4/fO/layZTsWtFEkdCZO/FgyZk5Ch 4/qvJkKybstNDH2TKeg1PPAIpfLuKSR4WWdetbYe23nORh96HtZ86y5ll73oGliSAWbNN0 Wq0R4F5TrAWZOqTIAf06zsaKZJ3SdP1QDkE36K7MwhLp9nzhmDTcRhBTih6ucA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761534523; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=m7f4VCWUc0ZxU8ls9FbzzHTp8WEdOk7gWjGXoAaL4A0=; b=IVs34OWgNQv7074ZrkSsFRjIZmPgKy+phbb/J2lyhIroOkHtngI13p3jwZiSetwV/nbaRH rypd+mTPUgMogfC7t2vH4D6Lh9l0ZnSddli+E7hVI4arC8zUOywo8ggRFn2EjDyxasTArC 6PPAPHHGMDNeWlUCZDx9ynd4AKITDMYZ3r7/V2W1uYh9hMe4PLbcfbtQSAtxGTffpy+KQy Swplf8vxNR2WiXglftZeZ7YFTtcKyAl6YkCiDfs9pFaNGRh5Hzu3ciGUWaMIa7NlhndjHl XvTWsIs9dqDIHn7FUq86quiu7LuExFt3WUa9zKPBAlIlCbQhbnV8UhG7TuWKRw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761534523; a=rsa-sha256; cv=none; b=W7tM1n5DtmQIRY/pMXl/5vOEVQ585N1ho1RveiSntT4NGKsF8i3b8AeFxUsuXAXlZy2t9N BTjgcbmmi+si7LObEyWRkSE91swKLSe3GV3SrAKQDPuWg/pUA67/vdXe3hDsXfprIHfRUL Y2MVMBuRzFXKcPZWek0TG9dR3i6xBmOB5aEqoc8qt0nGvYTNRRijOGnI4LRLsIZI76Pyxq mFnsasNogKHCNXU/JlLPAcXxN0Z29CGHZYFG9UwZwR6mUKRxX8jnnc5aXi8N9QfZlDC+K3 aByzDYs2Q6ZVxn4mqg+Dhy/XNy5ZArdnzg+kNhYxIV7bwohj6KNOJVUrRpKNlA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cvz3v3WTBz11c1; Mon, 27 Oct 2025 03:08:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59R38hax062360; Mon, 27 Oct 2025 03:08:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59R38htc062356; Mon, 27 Oct 2025 03:08:43 GMT (envelope-from git) Date: Mon, 27 Oct 2025 03:08:43 GMT Message-Id: <202510270308.59R38htc062356@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 64fb7033d752 - stable/14 - amd64: print 'EFI RT fault' line before fault CPU state List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 64fb7033d752830458d9d401c5b03d03d4aac204 Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=64fb7033d752830458d9d401c5b03d03d4aac204 commit 64fb7033d752830458d9d401c5b03d03d4aac204 Author: Konstantin Belousov AuthorDate: 2025-10-24 09:39:13 +0000 Commit: Konstantin Belousov CommitDate: 2025-10-26 17:37:07 +0000 amd64: print 'EFI RT fault' line before fault CPU state (cherry picked from commit cfb28c5ea0bce2ce95b14076bc63546049f0c16c) --- sys/amd64/amd64/trap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c index 2c3b8f0b4dd8..bf0719f501ef 100644 --- a/sys/amd64/amd64/trap.c +++ b/sys/amd64/amd64/trap.c @@ -460,9 +460,9 @@ trap(struct trapframe *frame) if ((print_efirt_faults == 1 && cnt == 0) || print_efirt_faults == 2) { - trap_diag(frame, 0); printf("EFI RT fault %s\n", traptype_to_msg(type)); + trap_diag(frame, 0); } frame->tf_rip = (long)curpcb->pcb_onfault; return; @@ -899,8 +899,8 @@ after_vmfault: if ((print_efirt_faults == 1 && cnt == 0) || print_efirt_faults == 2) { - trap_diag(frame, eva); printf("EFI RT page fault\n"); + trap_diag(frame, eva); } } frame->tf_rip = (long)curpcb->pcb_onfault; From nobody Mon Oct 27 13:19:14 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwDcL3Cpqz6Dbpc; Mon, 27 Oct 2025 13:19:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwDcL2Y5cz3Rpn; Mon, 27 Oct 2025 13:19:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571154; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3VTmn0MGcyRhdgZION3e7KH/C4G7lmVY2QoDBvadrXI=; b=UsLav2zI+UO+RAH9oz1At80Md768hRuVckZmhC3awuMPBKeCKMe6VOw0wX2mdd5g2Bt6p5 ec7hozN9mqY6I0AZDcMsqRZeRuCGPMOMcieQykG4gzu4uJaY072lNDRKy8MMxYiZp8RZQT SDDELiTymJoV2M/nFIPr6gKlV/UAPx007mcbnxtb9HxK4WPpnhfLKtRGCPuCwkvGdK50+j TXMZ4ejBubIK6+vFf7gc667UoJ5eqf4gwlGrrFcjhchpaVz11GuxnsNe7pascZ3YD1c0we 7mCO2N3EjmcUycpO+j7derYg3KTkw+uvhHMFd0lry9a6b/TsnG0Yc5s2UOO/NQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571154; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3VTmn0MGcyRhdgZION3e7KH/C4G7lmVY2QoDBvadrXI=; b=gLEJQR95Iral+61GcoYjEqjDMXsJ9ziMjBVLsTWcYFjztvAFVE7x8gso2lb4zwvUjw1XCC U8dksRs0zEUOOVkQvhXwOrNYJkYQuh/NR+5W6+y3xVpbu2dOf8EBC1pjfo1K5QCOt7++gK 7WHNzg9P7DYXYpruIQ41XSUe4l1hrTyOqtuxiz8p35HruTjMKWLqum+1C6UD7OQU+j65fw jUiSy528QOreHzDgyGETF/mw+5wO3ZASB6BrK5WEHYL+frwpy71dbCbpu57KmpS692sA9f B3xb2rvyPiKxGq4vt+zVqKiHeOiZ06f7wdCg92DzE9UA0u9Cq/06OruPna2Esw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761571154; a=rsa-sha256; cv=none; b=pWQKeBktCH0mvmLQW9Wvovy/XYXVFtGfHbiVwCc0zbBPcVNOe/GILY8e88SP4JTHFRlcf+ 4dU83aAZ3UWOiWee6faozaxUVNFShtrpl6ivSBFbATRycqwZ3Zwo1DrH/d60kO7czjBT/C Hb7BVxB6D9f+49PuyA8whSQyoSG1pLkS7Wke8Znx68H6xqGJU/3o6OUGGpi0rwA7555+W6 so2cI0DMMZFuuxJUU1e1Od/vmNzwCz3dPwlejUt6XZbfnZy1JKdqQlkebjWyDbyokceIfI PL/fwQzWuZ7vtV3IBkiVnHdjDk4TBqQle3J6LiT/pCtCSoF9tvQO4lwJx3s/Nw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwDcL1p3Nz1Jh0; Mon, 27 Oct 2025 13:19:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59RDJEq4011212; Mon, 27 Oct 2025 13:19:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59RDJEBN011209; Mon, 27 Oct 2025 13:19:14 GMT (envelope-from git) Date: Mon, 27 Oct 2025 13:19:14 GMT Message-Id: <202510271319.59RDJEBN011209@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jose Luis Duran Subject: git: 002ce2c9d081 - stable/15 - mtree: Remove stray atm directory List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jlduran X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 002ce2c9d081cad959606fd4793e4287d7d299e0 Auto-Submitted: auto-generated The branch stable/15 has been updated by jlduran: URL: https://cgit.FreeBSD.org/src/commit/?id=002ce2c9d081cad959606fd4793e4287d7d299e0 commit 002ce2c9d081cad959606fd4793e4287d7d299e0 Author: Jose Luis Duran AuthorDate: 2025-10-22 15:34:30 +0000 Commit: Jose Luis Duran CommitDate: 2025-10-27 13:02:54 +0000 mtree: Remove stray atm directory ATM support for netgraph was removed in af0cc0b22362 ("NgATM: Remove netgraph ATM support") Remove the directory from the mtree specification. Reviewed by: emaste Fixes: 21735dfaebdf ("include: Remove no longer existing netgraph/atm") MFC after: 5 days Differential Revision: https://reviews.freebsd.org/D53260 (cherry picked from commit 8e8ee8bbe2a112f7d1cc1b005dbdb8868522b640) --- etc/mtree/BSD.include.dist | 2 -- 1 file changed, 2 deletions(-) diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist index 454657183c58..1a60bbef765a 100644 --- a/etc/mtree/BSD.include.dist +++ b/etc/mtree/BSD.include.dist @@ -303,8 +303,6 @@ net80211 .. netgraph - atm - .. bluetooth include .. From nobody Mon Oct 27 13:19:15 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwDcM5QNFz6Dbv3; Mon, 27 Oct 2025 13:19:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwDcM2qvVz3Rd7; Mon, 27 Oct 2025 13:19:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571155; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=981Lg6H7LYDPpvX7lrA7uwfWQWtY7M9pOZ0iLLkHavs=; b=MqWXs7yyXyl/4MyXPb4wRZImgaFo2447nZTotvMwBYiAqItUrX99G+XudaLNnjsKtjdrjT I/x6MjoyqQKgWsGn/bx+MMh7oa2uhkPjIB8UCKB8CWpes4jWAchM/PAQbw2SeY5VvPmbvW 5nHFoZGEgrYZog5iNhcrVL/EDXCBpZtSvE4wX0kqVmxKWC7jCHpyO2sRw74lqbMIj663u1 X+BSdSL0g2FtqrODS7I6Sn2dMerr0lQweUV4tabXCPDTGYG6gCKq0Q+H87X9k/DPg82qiN lx0YlD89W5pdIRzIAMsfXoBm9rAHHlBx9HS9e58SKDI9OPcb3BD1LghyoDrhCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571155; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=981Lg6H7LYDPpvX7lrA7uwfWQWtY7M9pOZ0iLLkHavs=; b=udhAsPwrgHvplNmYmt+yUBBM2XjK1OstB2Rx3tDUDXrnZI2C8FsojmPazqWuMGMfoVRqfk x/4ouicKPVBp++1Ubt9DiDWMXDT+yW1aydeVW7NyV4VLmE7Nc9i8miUDGmdGaBvGyeZ9V1 OCrulUNHHqTlmZaTradseAg8lmAtj8Di8EX0Qc2rrxzEpahN6E6nSKNa6NRPvWLWXwdn1d fDaeHNN2FOue0BnoF9A75nZXWKmRJnMICDWwkfZYsVPCyTAudtYuHb327/oqF925e7X6ke w5ba8BR+YaLEPaHGotOyW2ggOUZsewwa2TpNa3qnUoRr9a7CYuD8qOf1BU4ClA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761571155; a=rsa-sha256; cv=none; b=LiqwiFudBtpyhtaczbOz/iLcKda1NT1eqd5gX9NiJ6VzozkxIE+fVBsV2ahdxi/JxEicEH XS2TC2gwYROkrV/GMImzL/rvi8enERd+WcDhjBcOL25kb2+uveKpJgbdaF2c3+pJe9a0v3 O0sRm4EPrNNYjkQ2m2+cI+OiIHuOvAaBaSyoMw5jzPpiQsag0YIqH0A1EU84MPsEwDWy1C n+oUAKHeBaw/i7Z+2fQliA0i5opSm9Wtb86t1zAoVxpMB81LugP7ZBw/v6SfNyMfSsccnv CCBQoZNxluPpVqj/Xf14i7nY0umvKaYO0fW4Q2JPeNHQEo7v4oMuxIVzz3p+bQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwDcM2L1Xz1K8t; Mon, 27 Oct 2025 13:19:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59RDJFMR011247; Mon, 27 Oct 2025 13:19:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59RDJFid011244; Mon, 27 Oct 2025 13:19:15 GMT (envelope-from git) Date: Mon, 27 Oct 2025 13:19:15 GMT Message-Id: <202510271319.59RDJFid011244@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jose Luis Duran Subject: git: 0b45751456aa - stable/15 - mtree: Remove stray wi directory List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jlduran X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 0b45751456aa3411deef96b9f245359005d5ebd2 Auto-Submitted: auto-generated The branch stable/15 has been updated by jlduran: URL: https://cgit.FreeBSD.org/src/commit/?id=0b45751456aa3411deef96b9f245359005d5ebd2 commit 0b45751456aa3411deef96b9f245359005d5ebd2 Author: Jose Luis Duran AuthorDate: 2025-10-22 22:41:03 +0000 Commit: Jose Luis Duran CommitDate: 2025-10-27 13:07:02 +0000 mtree: Remove stray wi directory Reviewed by: imp, emaste Fixes: a21def4d568f ("pccard: Remove wi(4) driver") MFC after: 5 days Differential Revision: https://reviews.freebsd.org/D53264 (cherry picked from commit f942a7465469008f7538436a70f15a44cabecbb0) --- etc/mtree/BSD.include.dist | 2 -- 1 file changed, 2 deletions(-) diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist index 1a60bbef765a..1b0f98706245 100644 --- a/etc/mtree/BSD.include.dist +++ b/etc/mtree/BSD.include.dist @@ -191,8 +191,6 @@ .. wg .. - wi - .. .. devdctl .. From nobody Mon Oct 27 13:19:16 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwDcP0ncKz6Dbv4; Mon, 27 Oct 2025 13:19:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwDcN4N8Mz3Rb8; Mon, 27 Oct 2025 13:19:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571156; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CAZtO5OJrcIt4+SEk2hdxEM6bvRq83WjVtclOCj6bGk=; b=rnh/rZ9oE85/J2HmMV/Ou1GvxCoa/BaU0i9Dpvh2N3BaJRelciJx9a2i7k93dwczRx7U2A mYQ81YoOX8WEs2MZ6mj2lXjmpdTpqv2T5Vg6+2oxTDjNf0FF/hYBtHk0szqOjlaKGvEvn5 GqfObjsuSkY7Ht6jY8K2n67r2UGhslxeQSZ0Qm2YXMdxCrjPvBQ1zhdyvN4M6COgyqGMFU ZHo4w6l8ihOXLrPdd5cA8wX+pWkb/YaPoOulsTXqUp/a/wFSnumZG93VGSFJcT8PEKDH4F eoeb3KHI2SywwB/B+0RLMKWPXs29c4KpP/xI7nm6WJPKcfX3JjgO5RtAx+iXHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571156; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CAZtO5OJrcIt4+SEk2hdxEM6bvRq83WjVtclOCj6bGk=; b=rOKLDbsPmwrnwX9qsGDFMtHtuZuwDaIy4top0ULzmreLNMhs5tBkqgk2IkOe7XapJJKBKd 5aEn0u/rp7CV1joNLVpKApdfChdf6/yWfU0boH6tbxqu+pPqbGCWI78WBAZ1iRTlJygelL Ae51pbwOlTWEQzrMszhHMPsXDiVHQalVA45YKCOHK343RIVtg8kkwXgG4laVlFWqRfQWxA tBV+KWghIbhWvytwb54M4K9Kos+TH1Hh7omS8diPtdL1urGzD8IuNTp5MEruHuHexwLHyC 8pxjGw/gOfVN85CiY7nK73RPfTnIJB/5GmV8uOufp/xOMzUby3zj5NemuTLTxw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761571156; a=rsa-sha256; cv=none; b=szlmRrnWmsfrHfl3DnnvkSaHL4zjaSgEdrknmZu94hxdj40YdEuXZZkgdLmBCz4dTFYObY GceqKIMwXho2iSlvaocFrW00o3bw1QbORAOaXrriO/i2hwtjoHvWg8tSf9HLt5fDJld9Nx u3PLlkgUxtRlWt7ASeI5I1x3gboQox/B6hsYtDMgSHQCG+6iFifNy3Zsg5Smsvh5a3lyCr gbVHAxmFfJW94aOisfzAaJa9ySy1KMB4g6mWD2lqmwwe7S7ZXQv6O7uPsJMkrDm1b8rXGN eEG6IO8S7mH0aKZeYIMGlNmYIWTPQaRHKXFFhxm+ahPG3Lfp6IdQApEykVulSg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwDcN30Zbz1KKL; Mon, 27 Oct 2025 13:19:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59RDJGLv011282; Mon, 27 Oct 2025 13:19:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59RDJGqm011279; Mon, 27 Oct 2025 13:19:16 GMT (envelope-from git) Date: Mon, 27 Oct 2025 13:19:16 GMT Message-Id: <202510271319.59RDJGqm011279@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jose Luis Duran Subject: git: 3281756a24e2 - stable/15 - mtree: Remove stray an (Aironet) directory List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jlduran X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 3281756a24e24da3cb0f6a41cecfdf6c74a74532 Auto-Submitted: auto-generated The branch stable/15 has been updated by jlduran: URL: https://cgit.FreeBSD.org/src/commit/?id=3281756a24e24da3cb0f6a41cecfdf6c74a74532 commit 3281756a24e24da3cb0f6a41cecfdf6c74a74532 Author: Jose Luis Duran AuthorDate: 2025-10-22 22:41:53 +0000 Commit: Jose Luis Duran CommitDate: 2025-10-27 13:09:18 +0000 mtree: Remove stray an (Aironet) directory Reviewed by: imp Fixes: 663b174b5b53 ("an: Remove driver") MFC after: 5 days Differential Revision: https://reviews.freebsd.org/D53265 (cherry picked from commit f7ccf051016fe3989ef6fbf10adea3ce4131f91b) --- etc/mtree/BSD.include.dist | 2 -- 1 file changed, 2 deletions(-) diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist index 1b0f98706245..ea333a38d889 100644 --- a/etc/mtree/BSD.include.dist +++ b/etc/mtree/BSD.include.dist @@ -127,8 +127,6 @@ .. agp .. - an - .. ciss .. evdev From nobody Mon Oct 27 13:19:17 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwDcQ1HKVz6DbsJ; Mon, 27 Oct 2025 13:19:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwDcP4Cljz3Rkc; Mon, 27 Oct 2025 13:19:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571157; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hPc0p1xQ2xo+hUgqmy3IgN7mWr0Ai7f3/CMB/aqC2rc=; b=q+2EqAVL+QnNUwDNNK60WrW2xhWyDLPR4iZqo81CKAXtaRaSih02xG6XZwWsZ+Y7hyQDMQ t6h+j9qLIeKeeEPXIpjoKJet3naME4ynX1pk1/fJCU7TGm/1oricPtZomPyjvSJYLM+Ec0 kI5eaNI/uo+mI5hNwcsnFEjczQVO2SblBqI01BCsfufpWAd2KudVUlpCpkP7vbaBo2exxW GRLQM2aGtl+lCJLYFwMCuOGTjiWWutoopNZSUPN9PvwxHTPm8yFvi6KY7ZbaOSzosi1oFy xDyawsXSO3i9FwJmilp2TV69hg+D5ts9pS/E2G1J1hrhykt+pxcumn3jjesikw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571157; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hPc0p1xQ2xo+hUgqmy3IgN7mWr0Ai7f3/CMB/aqC2rc=; b=bhTP4Luko1wlKTo8WLTHHjMaB3DV0W9JyzVP6nQp66eo2EnKEflZTd50VWwmsA3oA+o9pz KeAVgDyeiCQAmgZtBgNqnUzlElDzH2MPJsvkLKAtT/PZg4h2aIfvKkhN/XTYuMGv6qEbZT L5acTs8Dg/bGqVj0AyqmlE3CH6BCwumyvywA1jo05Znalb2f7LD0EZUaWVSJamZY35BOR5 QjotalS93v+KatD/QSKqg6ECSfeA9I8crsOruLi1auZ/kKiZBnfCUh9psoDWYN6si/BQRj asp9wULhTlsUP6X1VRFYH8iDqfju9LrhkUfNUI7712M86n7stcoO2Wnu91ex1Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761571157; a=rsa-sha256; cv=none; b=ZpxgSt4/sVBg7HSqOqyIS7ce0FiMWnpGZAfArp3U2vs0pr0byytj/c+F+q3WUMjhZLgePH hrRWIJgZ7ZeEjtx8DGl4UFs0pDtO6ACok6R63z7pTUyQprgVkjMcyWZLRziU82L4uVjjre 9ey4niEXyvTFHsIXrGubtqa+6lQKjyeitN34ep3QziafGpiAcIUfCnU9cNfGFa3mxf9354 JE8VraRP3Ue9y+kMN2ZbJTjMvT21897ni5W6RNFit3MgDIPkFOFgRUsNdJC3+nbJ7OHrXk VSEOfZkUET1o+lZwzIoBgGJ3cJpbzAVtPK7JjK4M96plynWTr7NftWsYA7rw7Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwDcP3d1Jz1KKM; Mon, 27 Oct 2025 13:19:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59RDJHJH011317; Mon, 27 Oct 2025 13:19:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59RDJH4c011314; Mon, 27 Oct 2025 13:19:17 GMT (envelope-from git) Date: Mon, 27 Oct 2025 13:19:17 GMT Message-Id: <202510271319.59RDJH4c011314@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jose Luis Duran Subject: git: c75fa84200d2 - stable/15 - bsdinstall: jail: Fix DISTMENU items List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jlduran X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: c75fa84200d226402e00da15c2e245744f26e305 Auto-Submitted: auto-generated The branch stable/15 has been updated by jlduran: URL: https://cgit.FreeBSD.org/src/commit/?id=c75fa84200d226402e00da15c2e245744f26e305 commit c75fa84200d226402e00da15c2e245744f26e305 Author: Jose Luis Duran AuthorDate: 2025-10-22 18:21:04 +0000 Commit: Jose Luis Duran CommitDate: 2025-10-27 13:10:33 +0000 bsdinstall: jail: Fix DISTMENU items The menu was incorrectly using the fourth column (distname) instead of the first (dist) of the MANIFEST. The actual file name is on the first column of the MANIFEST file. Remove the .txz part of the name to build the menu options. Reviewed by: jamie MFC after: 5 days Differential Revision: https://reviews.freebsd.org/D53177 (cherry picked from commit 74921426d552f7491c61684465f964b446379dac) --- usr.sbin/bsdinstall/scripts/jail | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/bsdinstall/scripts/jail b/usr.sbin/bsdinstall/scripts/jail index 8e001fc4a027..e4238ac0a687 100755 --- a/usr.sbin/bsdinstall/scripts/jail +++ b/usr.sbin/bsdinstall/scripts/jail @@ -79,7 +79,7 @@ distbase() { : ${DISTRIBUTIONS="base.txz"}; export DISTRIBUTIONS if [ -f $BSDINSTALL_DISTDIR/MANIFEST ]; then - DISTMENU=`cut -f 4,5,6 $BSDINSTALL_DISTDIR/MANIFEST | grep -v -e ^kernel -e ^base` + DISTMENU=$(cut -f 1,5,6 $BSDINSTALL_DISTDIR/MANIFEST | grep -v -e ^kernel -e ^base | sed -E 's/\.txz//g') if [ ! "$nonInteractive" == "YES" ] then From nobody Mon Oct 27 13:20:02 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwDdG3YnZz6Dbwk; Mon, 27 Oct 2025 13:20:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwDdG33G8z3Sc3; Mon, 27 Oct 2025 13:20:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571202; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n2OLVYFd7h41HjOu1HYqLNpyMDrY9wpORwwttFR+zn4=; b=BIx0lw/k2okBPNWEnFjgvBHz/8lPdwyiNhC12OxPG1xboZthtmbv4h1/pzqYFlSjUPUwSk sUPukctkS+kx5a3C0cyKhuRMdz/YQ+fdALNmQdGwBBGJyOViFa3Zir3FZ7d3M/dhmFC8mc 0NQSw9D5ASxLoZQWPo88BPTSPL2iKqgKi9lAJ0/Jx9V1YZgfqhLxCnwvjZPZAryC+7YG5Y ZQfi4+vCyHukFL3dv2gF7I8gzuHwvE76HnAM6UBcb4XnLNYII36MgAR3Af+8U1gyxWL0D/ 4D1OawSE3OtjpzzhPZcGdKr0HYZCNrRAbiK1VdwzG2sGIeJMYR+VAQE7DnEp+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571202; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n2OLVYFd7h41HjOu1HYqLNpyMDrY9wpORwwttFR+zn4=; b=qEI9zLnUuKOdU3HDB9c6tcyArcAyQlDo+SoPxlan1DQNcCTkAeFMFQXJHmqiGNxdHdMZ5w 4qBWKY4e4N0HxbFOQT59Q2W60Aa+oSGDpvPtdXJa8nWHG/IximkMEObI1JDh3D18l1mdZ3 3v0VFghiBk53KguV9SGWclh8zUZWii/HOdyE6XJKjMvOgCUr404qlwz3xxMCfV7L1BsY8E kHcLowEScHPhWbVJILIwWqrh6i0g70QJDM424odk0ecvcM/iHbabcBeftfXyt7fYzpGl7C bSeNJFL/cKaBx9+vzznZRU/RgvWazjCWrUpL7I3ptX1UA+Tdx9PH03UUgH/6mg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761571202; a=rsa-sha256; cv=none; b=qhbu0Ance7uymglnUccZkqtbnJBJDOP3F2OeCOlK5CmD7SDsfd9qBmUsHMmJeyjIjJoIkK +tJn8GmfHiAtXlx5F6zDG1OsFxS9Pq39QTCJeel6N8Oc8gYHCOGAqzb2XwmnG8HoUA302r rKx0vISPL4UnZ2WILlVrvEEc1Ihddw07ShhrKfdJ0lxX0s+NvkSpjOPuGgwtXtOAkW6pdy /WGaTUdZgnwf6CLm48msiUkune8eBFUxw/BmKj+jfAr9wlZvU3Vong51Wzt3aeCCL4kPl8 LUQVk4u3L8W2OZwRUHs8Rt7x5sY+qLy6zHDYF5BEzj8hsvhUlXkJwxiaZGLFrw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwDdG2Zmnz1JqZ; Mon, 27 Oct 2025 13:20:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59RDK29Q013809; Mon, 27 Oct 2025 13:20:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59RDK206013805; Mon, 27 Oct 2025 13:20:02 GMT (envelope-from git) Date: Mon, 27 Oct 2025 13:20:02 GMT Message-Id: <202510271320.59RDK206013805@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jose Luis Duran Subject: git: c24434265c7c - stable/14 - mtree: Remove stray atm directory List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jlduran X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c24434265c7ce501646a5654b79e3a2930321366 Auto-Submitted: auto-generated The branch stable/14 has been updated by jlduran: URL: https://cgit.FreeBSD.org/src/commit/?id=c24434265c7ce501646a5654b79e3a2930321366 commit c24434265c7ce501646a5654b79e3a2930321366 Author: Jose Luis Duran AuthorDate: 2025-10-22 15:34:30 +0000 Commit: Jose Luis Duran CommitDate: 2025-10-27 13:19:44 +0000 mtree: Remove stray atm directory ATM support for netgraph was removed in af0cc0b22362 ("NgATM: Remove netgraph ATM support") Remove the directory from the mtree specification. Reviewed by: emaste Fixes: 21735dfaebdf ("include: Remove no longer existing netgraph/atm") MFC after: 5 days Differential Revision: https://reviews.freebsd.org/D53260 (cherry picked from commit 8e8ee8bbe2a112f7d1cc1b005dbdb8868522b640) --- etc/mtree/BSD.include.dist | 2 -- 1 file changed, 2 deletions(-) diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist index 651a666a73a7..aabe3bbbe720 100644 --- a/etc/mtree/BSD.include.dist +++ b/etc/mtree/BSD.include.dist @@ -297,8 +297,6 @@ net80211 .. netgraph - atm - .. bluetooth include .. From nobody Mon Oct 27 13:20:03 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwDdH4bCLz6DbmS; Mon, 27 Oct 2025 13:20:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwDdH3mnMz3SYs; Mon, 27 Oct 2025 13:20:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571203; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=53S1c1CC/V5K9tdeQc0dE9ZjNwG3NpSh5CkYwUEDgSg=; b=sNxJb3/bCudDPZ6RDr3+maHAE6O/4FR3ZjVQofl/HrSRIWDfWNhjzzGNrlvnqU0VpFVJMt dlvd/iy3go4ysYu5MwiK04K1/6gxW3AvTkEKNLVuefOvzqbe7yUTWbhWFBBD4ofnRSbKkY Li7TWCamphFZPd2pDQ0qMFud3T7a8WaOvVPVnWuYL/27880Nxh2Q1zfDI487ZFH+C+AsLi 2LdBuotaFcZQ2RXtvWXVIjLkfl6Je3gl+b07Gan+68KqshlGp6Jjft+6Vw6XqX4aNM06jt 5ZmKpiaQ/KvKUwFBe8xnsJnkuiQYXbhFN2N/yoKQsWdjFTN2o5cR9POubknDbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571203; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=53S1c1CC/V5K9tdeQc0dE9ZjNwG3NpSh5CkYwUEDgSg=; b=o81V9Ti17OvIK53pMkLVmVii37b9id0Zd+yOPwUAH+VnfJHV4vLp9byPg143p872uCTh5F oLEHf/mVOTRzz7g7EyqBZ0Ttgk66xLOr7+JlS7EfZYRK+i/jym+uvPgvGxULP5WiwsOGnb xHg3NxGcIzirkkjtSkB/uSzEymvLfdp4kcCdEZfDCB6Pa2gkleNO/FbbhsHwekniXEMiui P5KTFx4LR6evhOhpEmTzdcNiGnL5oMHwkxu7sBo0mlXqlj2o5Lp8VlheKylRFLUa8Bf1Ab d27dV9jmMFpS5RjMr8nxa8zHANVph560e9j+af7VZnYt8nw9722czLBs9QT2dA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761571203; a=rsa-sha256; cv=none; b=nhSScwVjuJlUA66M5IIkFAGH0vL/K0a5b/GlkmaIfFXxF/lZHbxYbyptrPdC1YhldnBPtw M6+daHkonwRCnDjE0+9SdgScHl9AAeBgrzGR0lLpYmuFATIc6NMdLp8k24fi4qRsZUh4uw hs4A1Rjl6kiUIK5rj49kG7E343fLO/hZtbfvKq+lrx0WJGQsZ7nmZElImSfSD6J5iAIdhQ lzQDsv/fgnPVKfIlKKzF3oZ6u4YYbdTC12V0jfJNOADdFzQ30u73v8N32ZcwOZKNlAJcXF bONcyNdUzFkbkDh3W1juzkqg+jkF56iOGWfUhLmyCnACRseM6fIPimK3h0g2jw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwDdH3NTgz1Jvc; Mon, 27 Oct 2025 13:20:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59RDK3Zf014085; Mon, 27 Oct 2025 13:20:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59RDK34L014080; Mon, 27 Oct 2025 13:20:03 GMT (envelope-from git) Date: Mon, 27 Oct 2025 13:20:03 GMT Message-Id: <202510271320.59RDK34L014080@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jose Luis Duran Subject: git: 07889c649749 - stable/14 - mtree: Remove stray wi directory List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jlduran X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 07889c6497498b6d40afc21e05a7cd550fa9ead2 Auto-Submitted: auto-generated The branch stable/14 has been updated by jlduran: URL: https://cgit.FreeBSD.org/src/commit/?id=07889c6497498b6d40afc21e05a7cd550fa9ead2 commit 07889c6497498b6d40afc21e05a7cd550fa9ead2 Author: Jose Luis Duran AuthorDate: 2025-10-22 22:41:03 +0000 Commit: Jose Luis Duran CommitDate: 2025-10-27 13:19:45 +0000 mtree: Remove stray wi directory Reviewed by: imp, emaste Fixes: a21def4d568f ("pccard: Remove wi(4) driver") MFC after: 5 days Differential Revision: https://reviews.freebsd.org/D53264 (cherry picked from commit f942a7465469008f7538436a70f15a44cabecbb0) --- etc/mtree/BSD.include.dist | 2 -- 1 file changed, 2 deletions(-) diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist index aabe3bbbe720..bd784142d33a 100644 --- a/etc/mtree/BSD.include.dist +++ b/etc/mtree/BSD.include.dist @@ -187,8 +187,6 @@ .. wg .. - wi - .. .. devdctl .. From nobody Mon Oct 27 13:20:04 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwDdK2xpBz6Dc36; Mon, 27 Oct 2025 13:20:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwDdJ4JpPz3Slb; Mon, 27 Oct 2025 13:20:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571204; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HpAFzrez76nVlyp0Xy12f8jUWWy2d6G2EPGRI9m6fd4=; b=X1FrR8VumPA1j6exNInJp0VwJMBLhz73vKOprl/T4GKZaittp5SmX6kVS8Ht8rt9VHFBf3 2pH4H78pycBnmancwanMuLcOjfPgvjIUrYdCoeUFSI55vQ2t92yvPz+UZDnrEVTZgVEZ6J XgdNlT+5brw/mIPnxNKReJ9WzzzsAgnd1KGbx6EbryQ8XGY2HHEBzv7Szfs7RN+TUNVhkT gaLe4LI3AH/yPu/f/9i7tBmtk9QIFvBLE45y97XlQoQB5ilWIZGFOnWX/oBiMGKJxTmUEg z7swLqTIAje+LJDEfMY4DqatTV6S7A8SsJrucp3+Y0cW+1hmScPkB+6E/Ty4QQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571204; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HpAFzrez76nVlyp0Xy12f8jUWWy2d6G2EPGRI9m6fd4=; b=k2OgZALzw2DZCF4+9+C8HkAmZvo9ILVLHkWKCF859cCQp2E2qdi2GK47yXunemFEfa3HTY LSD6nL6bKZVK3rZNv6hlVuCW8aBue39A1XA2EIcvfM0sCFkxcuj65Ef9ET5/shIMnjXCuX oet3Rd8C8rYk7aUBEazbzzaICkGvR8kyv3V2/6l7+iPoS/Sq6b2AqRZ1rm+DlJOw1/S82V KxTbesDJS+l4HRkjFOKzjB2OtAn9soSytYvxz3a2/Pz0jxwxbNA0AsF4hGhQqPO19XPB9H opBcjHwrkziFexMjSYKg8zTlQFXSRA6O3+eL4ASbteWmZ7uSb9BPfuQfnGqbgw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761571204; a=rsa-sha256; cv=none; b=ZqVOm7m4goSxBVGBxtz6OGNbFy+xUTnvH5LHjbJDFrxo5m0hsvBJRjPnp1jV73a6U5ih/A 18eadkqnKGuXV3b1Jho4y42380cbXpE1/s0Bk/lSoPVY1xrcWXPBM2O3UM4cjQ8a2syOVB nYMR4UVwxm65v4riiCtdoMlqzRH6QxGv1J6XbgadlcV/h4jMHR5MGqZh1vgNdbvW2FzpEp KK/Da/w4Ousc/KoMlC1AE9jpFHCVL8W6Dv6nrz18rLD0vKKthu2gHPmp791BL31hp/ebCd VVQnJc+v2kQADYerk3vzc7gtQ6bcmym9fbxOHP0iVIOCZ18PtyXWQcon32t5uA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwDdJ3tS2z1Jvd; Mon, 27 Oct 2025 13:20:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59RDK4IS014354; Mon, 27 Oct 2025 13:20:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59RDK4PJ014351; Mon, 27 Oct 2025 13:20:04 GMT (envelope-from git) Date: Mon, 27 Oct 2025 13:20:04 GMT Message-Id: <202510271320.59RDK4PJ014351@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jose Luis Duran Subject: git: f9020f19119e - stable/14 - mtree: Remove stray an (Aironet) directory List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jlduran X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f9020f19119e18cba8cea1d8f7af9ac832b1aa3c Auto-Submitted: auto-generated The branch stable/14 has been updated by jlduran: URL: https://cgit.FreeBSD.org/src/commit/?id=f9020f19119e18cba8cea1d8f7af9ac832b1aa3c commit f9020f19119e18cba8cea1d8f7af9ac832b1aa3c Author: Jose Luis Duran AuthorDate: 2025-10-22 22:41:53 +0000 Commit: Jose Luis Duran CommitDate: 2025-10-27 13:19:45 +0000 mtree: Remove stray an (Aironet) directory Reviewed by: imp Fixes: 663b174b5b53 ("an: Remove driver") MFC after: 5 days Differential Revision: https://reviews.freebsd.org/D53265 (cherry picked from commit f7ccf051016fe3989ef6fbf10adea3ce4131f91b) --- etc/mtree/BSD.include.dist | 2 -- 1 file changed, 2 deletions(-) diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist index bd784142d33a..a79eaa0fb84d 100644 --- a/etc/mtree/BSD.include.dist +++ b/etc/mtree/BSD.include.dist @@ -127,8 +127,6 @@ .. agp .. - an - .. ciss .. evdev From nobody Mon Oct 27 13:20:19 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwDdb58mtz6Dc0H; Mon, 27 Oct 2025 13:20:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwDdb4TGWz3TL8; Mon, 27 Oct 2025 13:20:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571219; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Xwt6Cv2Celn7+Oi2Hpx4OY9L7PzUAqoZFJ0zbOi/nfU=; b=Zd+kEszXrIP+iNbluhhR6ZvPxCIVlJowW6XY/Km85MGdB/xTi8Ezx/Fb5diQo6utVD6x4C i0gmHiXi6zPDxRNR2E3VQvWu+b5VfcXoSEM9BBzvvCYCQ0Eg3loqQ46lpGy+vEgyFHmkNb cOaf3X5KweDtC5NZ0jjVt/40xuXJbcnhJZpbKO3nZAKK0V5ioBAwdMjDywjtAkWLDRtdIi Cf3WEvTgfjxip8a1Y3o3k+dycKG5Lg+EsA5bcW0FDV1xYXZwWplYeUGxeoxV0zq1pjYzuI mBf/V/f5lsQKW91ThFA5VtCU8PPkR7Ch9DnKiejIPTEZhl3Xi5GGFr1udxnXDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761571219; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Xwt6Cv2Celn7+Oi2Hpx4OY9L7PzUAqoZFJ0zbOi/nfU=; b=aiQM7oFHVVd9PmuzADGzg62kcdC/KdH6NRHzLnU4CCrzplDPm8FHHjfIoScRQ+mKs95lWL HT+464UQqzarQSw+SAdis8zL4rDIj2oFKnQaBitjHSsnLCk79evpuVJE7064giPs2jWMi9 LamU85ByJv56lUqCyvTcPZYSBgCUuk4aavB054XhmM5zrls54B3nZ6hrgNhdXjglAovNUh 8e6DVWBralw14g9RFyVlRkOV/ppLqWBC0+I6fPTZ6/H1cC2Cvh8SXK978VCTVHX7ZqzCu6 YcOZTPtXeZhem6cMyycBSUtqvEKUJLiK5RBE//arqP9/RTOTZNMtpH5YcjWv6A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761571219; a=rsa-sha256; cv=none; b=t9bpCKyLNuF8bqZw560F/lbwaMMDW/44Nys+PQoRDyYgAcKmv6iLU+kG7IK7wx72E073at qSTpBaT8clo98sMZ+k34hJu0xpZRS6IQexBdoKjJRniJ1ZGYeb1SLxMJcS+Jozbn3zK7Bi NHpS0H4wXaCzLca9TxmBO4fin6t4ll7uk/TW5k8SJvXvHH+kASbHv4mh+UlVo77Gfmob5j IQm5iPDAcBraz4uQKjLl1tTqrRaJJB4ian4YPJUdtfdaBkFdMoDSi/cO2OOTazGG1tv0M0 mR57sv1pQLDGukCfXmAGiNT30sjLjCdw2sgCIMxPPDZ93HGzNjKVvXA9VJOMtQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwDdb42RTz1Jh2; Mon, 27 Oct 2025 13:20:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59RDKJqB020689; Mon, 27 Oct 2025 13:20:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59RDKJl3020686; Mon, 27 Oct 2025 13:20:19 GMT (envelope-from git) Date: Mon, 27 Oct 2025 13:20:19 GMT Message-Id: <202510271320.59RDKJl3020686@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jose Luis Duran Subject: git: 93263ae5eab6 - stable/13 - mtree: Remove stray wi directory List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jlduran X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 93263ae5eab61bedb4a17638dd53b2dd5d0aa71e Auto-Submitted: auto-generated The branch stable/13 has been updated by jlduran: URL: https://cgit.FreeBSD.org/src/commit/?id=93263ae5eab61bedb4a17638dd53b2dd5d0aa71e commit 93263ae5eab61bedb4a17638dd53b2dd5d0aa71e Author: Jose Luis Duran AuthorDate: 2025-10-22 22:41:03 +0000 Commit: Jose Luis Duran CommitDate: 2025-10-27 13:08:11 +0000 mtree: Remove stray wi directory Reviewed by: imp, emaste Fixes: a21def4d568f ("pccard: Remove wi(4) driver") MFC after: 5 days Differential Revision: https://reviews.freebsd.org/D53264 (cherry picked from commit f942a7465469008f7538436a70f15a44cabecbb0) --- etc/mtree/BSD.include.dist | 2 -- 1 file changed, 2 deletions(-) diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist index 59fc34860a03..688845cf11ea 100644 --- a/etc/mtree/BSD.include.dist +++ b/etc/mtree/BSD.include.dist @@ -187,8 +187,6 @@ .. wg .. - wi - .. .. devdctl .. From nobody Mon Oct 27 14:34:59 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwGHl6MJmz6Dln1; Mon, 27 Oct 2025 14:34:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwGHl3dz3z3kX2; Mon, 27 Oct 2025 14:34:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761575699; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pntorM/fQ632wBHmRK22HcwjVC34mJ+l/FhCmwPp1Ck=; b=jwBqkLa93E2wOe6zGB3IMwsR8iYp4iRccCh0kHLL7zZn7xPfajRXJKMN9oQN1gd7r2xj90 k4OnCsFlsxA70cZSt2kCrcYb8svw2+kaASj+LovFs4UTZqI99POK9SguBsgZtWjKPfwjc3 1yDYy6dcUWUTqokv5eLKCyfSpv2rP2CKQR9S0ygmVgMWY0uYB5qmgy4UBtQdsB/3HjHJbF mjtcBbxnu0F0iyKywV3IA2/RpysB2TWOc+NfCXZPW8Vh6UqdKB2Rmuu4nHi2jN0BasSzKA p6/czGohi+Y9eXm8RMPY4tFqrDwvibB6FYy4M7rolcABZdjNItnyxylrtNiIUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761575699; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pntorM/fQ632wBHmRK22HcwjVC34mJ+l/FhCmwPp1Ck=; b=ODckw6oBC8bLF+P/dZYlRc+c49pT/uuA3tqzLEE6OKPFUxOtOw8BAa9OLffcfKMd8q+YyD xIc5xf8Ae9Y3b7DO9xq5ing5IRv9bFMakG7+O+f+Hq3knsT+W5LlD8NeA8MGNDDzWkIoEt 9AYd+KEXGYjXsReSadUSIEtAOXtyjQHjaXG4ZIn47+4kIcNW03+va9eAiW2x3WuXiPI61W poHYGCeulTfxFdpxLX9rwvVeEUpXTlaIJ0/dZWWOORSoRkWaPbBBtJOXGFTuU1ZUaf6nyo j0uXBC1RYA6PEmtTcIgJls5L5gEWNgMBjvnYy4f55wB14HhTFPOLy7XA9PD5UA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761575699; a=rsa-sha256; cv=none; b=eU/SXmecoL9oVEvZPM9WQoURA6CplPeF6VfyL4SfqLcGsj228NNoDvMa/ydS0/lZuMzrj8 8UXrnWmeDnsMVaKypZqeEW/EZjpFjIG3a6nuhvxF8ng/fw7CGRpM5XUi8IQVpr33diytsc F29wMRkgBTDrjIwJYT2wRGakMGyvr3xYUboDd1929jZBuX2qz3ywIOPBXPu/hxYYr9M4or 8DxxpR54lx6n8aY+aJwLM/ZRN9awVgW17nUyaN58z5ZFAmq9Plr0YkDf2AzFPOIk3a91L2 eP379UBF9PA8CV8Ozb07B48FpoD2iQFYNdGzXlsdy0I2bkIwFG7IbAsIylwT+A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwGHl2xm2z1MMP; Mon, 27 Oct 2025 14:34:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59REYx94063859; Mon, 27 Oct 2025 14:34:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59REYxGj063856; Mon, 27 Oct 2025 14:34:59 GMT (envelope-from git) Date: Mon, 27 Oct 2025 14:34:59 GMT Message-Id: <202510271434.59REYxGj063856@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: 87795ea45407 - stable/15 - getrlimitusage.2: Update HISTORY section List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 87795ea45407355de4e36388ed6c02ef70b9241a Auto-Submitted: auto-generated The branch stable/15 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=87795ea45407355de4e36388ed6c02ef70b9241a commit 87795ea45407355de4e36388ed6c02ef70b9241a Author: Ed Maste AuthorDate: 2025-10-24 12:10:26 +0000 Commit: Ed Maste CommitDate: 2025-10-27 14:34:42 +0000 getrlimitusage.2: Update HISTORY section Add 14.2, as this was cherry-picked prior to release. Reported by: Harald Eilertsen Reviewed by: kib Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D53320 (cherry picked from commit 2387a51af235e4304c63f95465a569c878f49dcd) --- lib/libsys/getrlimitusage.2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/libsys/getrlimitusage.2 b/lib/libsys/getrlimitusage.2 index e2114def56c2..d0e92d7f88b4 100644 --- a/lib/libsys/getrlimitusage.2 +++ b/lib/libsys/getrlimitusage.2 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd September 27, 2024 +.Dd October 24, 2025 .Dt GETRLIMITUSAGE 2 .Os .Sh NAME @@ -97,4 +97,4 @@ and The .Fn getrlimitusage system call appeared in -.Bx 15.0 . +.Fx 14.2 . From nobody Mon Oct 27 14:35:40 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwGJX6LPVz6Dm16; Mon, 27 Oct 2025 14:35:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwGJX50KBz3ltb; Mon, 27 Oct 2025 14:35:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761575740; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qtgxj4sJXlAxyemTL/daenblw0S8oPlsmNaNhppunwg=; b=BywbwHPdG3uGRpdnjN/dWPwng+Z+sJrxqc6BQ9GswCPdv6U/wpejvOGhJEh5InOJr4e2/h 4Uc2Ohg1SryM/27MolMpEiiIoQtM65ulSuhto5Z7bFdhDXfhKtGdCwfEzgK1Bdgw3z/gox 9yjaeBymtbFhapTlOoDpNXFg38T+X2kVCQV1LnLCsX1yEaNktORSMZBxeEul2XR7OWbaOE YfJ/Ec91RQd2ZqpsS8nAXzUnTe3qBdIj5f6ZDevJrxDpTXxU/MYWR4sMeqv2SYqpxXrpqU PI2KsLOOWrLYw/ngPovnflpLc+MGz+6TLyw/3ljUrbq7ZfQSMjlFhmyU+lal2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761575740; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qtgxj4sJXlAxyemTL/daenblw0S8oPlsmNaNhppunwg=; b=bqwQb+RBH4uztNhlO/OqgM9a4O1wAmKlfQWXC7iDZZKelu+dfsh3Qa1AZMHyLq2Femuear XYdIhHg1GSWYp8UbZlZSYkABPfJSlmtmiClCSf8PE7d6yHuWEoiEa7sCVPtmwZZHH0e7gU o5PcRvQCyNAb0vjlXHTKx+POQbDhiBa8U0FKLCbPdOoAnB+Kcu3WaQynYMrpBlQWUQIJ7L m/RwL6Zl0fTxYrNvrA+8GLea/DD35VtQEmTzKcBWc8iW1cL9uorrkkVkAoJDVQJabLlhf2 WSCanVXHY4CR6eb19RyZ4yJ9qA1w5liw4uIh8njNa2l4RUzl5bIs94HtQgiNmg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761575740; a=rsa-sha256; cv=none; b=XtQ+xaJDmJzLduWIcv2itk7ugX3X1dyfFc4MQPDc/M92dBDgLx1OhvtBNb3RGzo1R/TO3r WxBS8fHtb42gASKo1oV7B6V0m2y2UP3gCHa/cx6rgdVdNJKFoODVcTymNA8Egi6JePAfMW 2JqdHZrNgfdOCXI0q9rB5nj7Bi4ZDHH5sdJ92qBGoBxTIaH5NOSSMWxLy9/o6uZPX3hEMc enIet2I3VtSdQRQQaVOABpFw8+H1c/GLZ3taXBiYyBbrHaW8D355s6oSKdFk+Xhf94NZDo pT+9R8fOaIo7CP2575J/KTOfFhjSK2yjp1P/3cxxn+QBpGrgt2uVfC8pWdWwUw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwGJX4N5cz1LhL; Mon, 27 Oct 2025 14:35:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59REZeH5064165; Mon, 27 Oct 2025 14:35:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59REZelQ064162; Mon, 27 Oct 2025 14:35:40 GMT (envelope-from git) Date: Mon, 27 Oct 2025 14:35:40 GMT Message-Id: <202510271435.59REZelQ064162@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: 82b6cd5ef654 - stable/14 - getrlimitusage.2: Update HISTORY section List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 82b6cd5ef6547da2e3d18fbbc69393d73322df43 Auto-Submitted: auto-generated The branch stable/14 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=82b6cd5ef6547da2e3d18fbbc69393d73322df43 commit 82b6cd5ef6547da2e3d18fbbc69393d73322df43 Author: Ed Maste AuthorDate: 2025-10-24 12:10:26 +0000 Commit: Ed Maste CommitDate: 2025-10-27 14:35:20 +0000 getrlimitusage.2: Update HISTORY section Add 14.2, as this was cherry-picked prior to release. Reported by: Harald Eilertsen Reviewed by: kib Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D53320 (cherry picked from commit 2387a51af235e4304c63f95465a569c878f49dcd) (cherry picked from commit 87795ea45407355de4e36388ed6c02ef70b9241a) --- lib/libc/sys/getrlimitusage.2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/libc/sys/getrlimitusage.2 b/lib/libc/sys/getrlimitusage.2 index e2114def56c2..d0e92d7f88b4 100644 --- a/lib/libc/sys/getrlimitusage.2 +++ b/lib/libc/sys/getrlimitusage.2 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd September 27, 2024 +.Dd October 24, 2025 .Dt GETRLIMITUSAGE 2 .Os .Sh NAME @@ -97,4 +97,4 @@ and The .Fn getrlimitusage system call appeared in -.Bx 15.0 . +.Fx 14.2 . From nobody Mon Oct 27 17:26:36 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwL5m50CTz6F94T; Mon, 27 Oct 2025 17:26:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwL5m3dDTz40q3; Mon, 27 Oct 2025 17:26:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761585996; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HCnARzCsGiC/venqOKuvYrW+0f25RlFOne21gxCA01A=; b=yDO02fw5l+1XDBzYmZXuID/rczJTajnti7ExrZKfNCgUoAI3ND42CNhbeU2bfTlDwdQdaT QUxgPypUj2tAF1VIgiX4gboslK12cQJM/0B+A4Gwm6KxOYcqPYi2ZHiMOX8w5OWosFH42+ kp4vu2oUVUdMXvZ0VMfVZ1t8jFZUbbb0SpKjsPBsZTegOtqEOgHLL2S5Ll+V9i5TGB17f1 pGZ1SpImZt/l/1Bt+5pubwtZtHFy97t39MpQQw74HG72TAY/x9k0Zwpgxif/laTzwOK//Y OX3sMhxB6R6pZjc3xZOc2leEWAkAb1o1DzDvJydyBeb3ZLGIL8OikH3dPfDjcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761585996; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HCnARzCsGiC/venqOKuvYrW+0f25RlFOne21gxCA01A=; b=U1xU41XWxyqJLQqIRVmSz4Sj+Hm0Rvt0uWaTCHzZTSUTQ3Nubow+doWH+LkOOJBYCookdp YoOid7qWnSXuuuv8amGK2S353hfuGxe6vFv6HXS5zVPXHfDKPPVVo9rr6oXXjmv0JKIguM vpwrMRyoAO4LjcVRm9Q2Hjqtp7plzKxtCuslbE6vE8pq2+Osf4AoM+36w6lhV16o5DxfFe Y3lC7atWi0e3RjB6cE/5TgPm4WqkzvdfmfDW/+8iLShphOQdv7+WXjZtVFUNyQavhiylB8 fudT3VeAjCsUCwpBnK4kXcHKTFT2Nh4H4kLkVO2wqHiox2Ol4mv0YuuEEZoDoA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761585996; a=rsa-sha256; cv=none; b=nh3XuppwqePWlZkekxriznjURhNtNA1IliGsRaTkYo4GYIUk62l5GP5VLxX+ROpxOF5qRP aMpnThunDwqhLDSKR0RzzBYD9A4WexWkX9hADrsa3bRWc15iINomwLVVGY1glRMUqVWvCc LFojAprCde1vgFKQlJLTnnbDs4tJ50G86r72o9V+w2kQDuxMuFpP+4Zd4rMJC+/BKp2h4r AUJv/dOcZLYfq/172kV4JCBwOJgqJq4lqRK6giJQFHfbb6i+NqqnRSZJPTlMIltG8InWa4 JbdnWR/sdyik82Slc6LrVYnj9EOZ3+PyJ/OnelP9kwI7jWX31w19T5t7ULxHXA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwL5m3BMWz1Rwc; Mon, 27 Oct 2025 17:26:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59RHQaZL013860; Mon, 27 Oct 2025 17:26:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59RHQaSm013857; Mon, 27 Oct 2025 17:26:36 GMT (envelope-from git) Date: Mon, 27 Oct 2025 17:26:36 GMT Message-Id: <202510271726.59RHQaSm013857@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: a93e1b731ae4 - stable/14 - heimdal-kadmin: Add support for the -f dump option List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a93e1b731ae440ac3471792c52db8fb07b93d265 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=a93e1b731ae440ac3471792c52db8fb07b93d265 commit a93e1b731ae440ac3471792c52db8fb07b93d265 Author: Rick Macklem AuthorDate: 2025-10-05 16:18:35 +0000 Commit: Gleb Smirnoff CommitDate: 2025-10-27 16:53:33 +0000 heimdal-kadmin: Add support for the -f dump option The "-f" dump option allows a dump of the Heimdal KDC in a format that the MIT kdb5_util command can load into a MIT KDC's database. This makes transitioning from the Heimdal KDC to the current MIT one feasible without having to re-create the KDC database from scratch. glebius@ did the initial work, cherry picking these commits from the Heimdal sources on github and then doing extensive merge conflict resolution and other fixes so that it would build. Heimdal commit fca5399 authored by Nico Williams: Initial commit for second approach for multiple kvno. NOT TESTED! Heimdal commit 57f1545 authored by Nico Williams: Add support for writing to KDB and dumping HDB to MIT KDB dump format Before this change Heimdal could read KDBs. Now it can write to them too. Heimdal can now also dump HDBs (including KDBs) in MIT format, which can then be imported with kdb5_util load. This is intended to help in migrations from MIT to Heimdal by allowing migrations from Heimdal to MIT so that it is possible to rollback from Heimdal to MIT should there be any issues. The idea is to allow a) running Heimdal kdc/kadmind with a KDB, or b) running Heimdal with an HDB converted from a KDB and then rollback by dumping the HDB and loading a KDB. Note that not all TL data types are supported, only two: last password change and modify-by. This is the minimum necessary. PKINIT users may need to add support for KRB5_TL_USER_CERTIFICATE, and for databases with K/M history we may need to add KRB5_TL_MKVNO support. This resulted in a Heimdal kadmin that would dump the KDC database in MIT format. However, there were issues when this dump was loaded into the current MIT KDC in FreeBSD current/15.0. The changes I did to make the dump more useful are listed below: When "-f MIT" is used for "kadmin -l dump" it writes the dump out in MIT format. This dump format is understood by the MIT kdb5_util command. The patch modifies the above so that the MIT KDC's master key keytab file can be provided as the argument to "-f" so that the principals are re-encrypted in it. This allows any principal with at least one strong encryption type key to work without needing a change_password. The strong encryption types supported by the Heimdal KDC are: aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 The issues my changes address are: - If there are weak encryption keys in a principal's entry, MIT's kadmin.local will report that the principcal's entry is incomplete or corrupted. - The keys are encrypted in Heimdal's master key. The "-d" option can be used on the "kadmin -l dump" to de-encrypt them, but the passwords will not work on the current MIT KDC. To try and deal with the above issues, this patch modied the above to: - Does not dump the weak keys. - Re-encrypts the strong keys in MIT's master key if the argument to "-f" is actually a filename which holds the MIT KDC's master key keytab and not "MIT". - For principals that only have weak keys, it generates a fake strong key. This key will not work on the MIT KDC, but the principal entry will work once a change_password is done to it. - It always generates a "modified_by" entry, faking one if not already present in the Heimdal KDC database. This was necessary, since the MIT kadmin will report that the principal entry is "incomplete or corrupted" without one. It also fixed a problem where "get principal" no longer worked after the initial patch was applied. A man page update will be done as a separate commit. I believe this commit is acceptable since the Heimdal sources are now essentially deprecated in favor of the MIT sources and that this new "-f" patch simplifies the transition to the MIT KDC. Discussed with: glebius, cy MFC after: 3 days (cherry picked from commit 5000d023a446b81f6d45ed59aa379607ec814f01) --- crypto/heimdal/kadmin/dump.c | 29 +- crypto/heimdal/kadmin/kadmin-commands.in | 6 + crypto/heimdal/kdc/hpropd.c | 68 +++-- crypto/heimdal/kdc/mit_dump.c | 383 ++++++------------------ crypto/heimdal/lib/hdb/Makefile.am | 1 + crypto/heimdal/lib/hdb/common.c | 68 +++-- crypto/heimdal/lib/hdb/ext.c | 31 ++ crypto/heimdal/lib/hdb/hdb-mitdb.c | 477 +++++++++++++++++++++++++++--- crypto/heimdal/lib/hdb/hdb-protos.h | 25 ++ crypto/heimdal/lib/hdb/hdb.asn1 | 14 +- crypto/heimdal/lib/hdb/hdb.c | 7 +- crypto/heimdal/lib/hdb/hdb.h | 15 +- crypto/heimdal/lib/hdb/hdb_locl.h | 7 + crypto/heimdal/lib/hdb/keys.c | 69 ++++- crypto/heimdal/lib/hdb/mkey.c | 211 +++++++++++-- crypto/heimdal/lib/hdb/print.c | 407 ++++++++++++++++++++++--- crypto/heimdal/lib/hdb/version-script.map | 6 + crypto/heimdal/lib/kadm5/chpass_s.c | 7 + crypto/heimdal/lib/kadm5/randkey_s.c | 4 + kerberos5/lib/libhdb/Makefile | 4 +- share/mk/src.libnames.mk | 2 +- 21 files changed, 1372 insertions(+), 469 deletions(-) diff --git a/crypto/heimdal/kadmin/dump.c b/crypto/heimdal/kadmin/dump.c index 91a5ada86607..2c302eced210 100644 --- a/crypto/heimdal/kadmin/dump.c +++ b/crypto/heimdal/kadmin/dump.c @@ -42,32 +42,51 @@ dump(struct dump_options *opt, int argc, char **argv) { krb5_error_code ret; FILE *f; + struct hdb_print_entry_arg parg; HDB *db = NULL; - if(!local_flag) { + if (!local_flag) { krb5_warnx(context, "dump is only available in local (-l) mode"); return 0; } db = _kadm5_s_get_db(kadm_handle); - if(argc == 0) + if (argc == 0) f = stdout; else f = fopen(argv[0], "w"); - if(f == NULL) { + if (f == NULL) { krb5_warn(context, errno, "open: %s", argv[0]); goto out; } ret = db->hdb_open(context, db, O_RDONLY, 0600); - if(ret) { + if (ret) { krb5_warn(context, ret, "hdb_open"); goto out; } + if (!opt->format_string || strcmp(opt->format_string, "Heimdal") == 0) { + parg.fmt = HDB_DUMP_HEIMDAL; + } else if (opt->format_string && strcmp(opt->format_string, "MIT") == 0) { + parg.fmt = HDB_DUMP_MIT; + fprintf(f, "kdb5_util load_dump version 5\n"); /* 5||6, either way */ + } else if (opt->format_string) { + /* Open the format string as a MIT mkey file. */ + ret = hdb_read_master_key(context, opt->format_string, &db->hdb_mit_key); + if (ret) + krb5_errx(context, 1, "Cannot open MIT mkey file"); + db->hdb_mit_key_set = 1; + parg.fmt = HDB_DUMP_MIT; + opt->decrypt_flag = 1; + fprintf(f, "kdb5_util load_dump version 5\n"); /* 5||6, either way */ + } else { + krb5_errx(context, 1, "Supported dump formats: Heimdal and MIT"); + } + parg.out = f; hdb_foreach(context, db, opt->decrypt_flag ? HDB_F_DECRYPT : 0, - hdb_print_entry, f); + hdb_print_entry, &parg); db->hdb_close(context, db); out: diff --git a/crypto/heimdal/kadmin/kadmin-commands.in b/crypto/heimdal/kadmin/kadmin-commands.in index 4396ff800441..dc36db4e0a00 100644 --- a/crypto/heimdal/kadmin/kadmin-commands.in +++ b/crypto/heimdal/kadmin/kadmin-commands.in @@ -76,6 +76,12 @@ command = { type = "flag" help = "decrypt keys" } + option = { + long = "format" + short = "f" + type = "string" + help = "dump format, mit or heimdal (default: heimdal)" + } argument = "[dump-file]" min_args = "0" max_args = "1" diff --git a/crypto/heimdal/kdc/hpropd.c b/crypto/heimdal/kdc/hpropd.c index 1cfc688b2a6c..c76be0446705 100644 --- a/crypto/heimdal/kdc/hpropd.c +++ b/crypto/heimdal/kdc/hpropd.c @@ -85,23 +85,23 @@ main(int argc, char **argv) setprogname(argv[0]); ret = krb5_init_context(&context); - if(ret) + if (ret) exit(1); ret = krb5_openlog(context, "hpropd", &fac); - if(ret) + if (ret) errx(1, "krb5_openlog"); krb5_set_warn_dest(context, fac); - if(getarg(args, num_args, argc, argv, &optidx)) + if (getarg(args, num_args, argc, argv, &optidx)) usage(1); - if(local_realm != NULL) + if (local_realm != NULL) krb5_set_default_realm(context, local_realm); - if(help_flag) + if (help_flag) usage(0); - if(version_flag) { + if (version_flag) { print_version(NULL); exit(0); } @@ -117,7 +117,7 @@ main(int argc, char **argv) if (database == NULL) database = hdb_default_db(context); - if(from_stdin) { + if (from_stdin) { sock = STDIN_FILENO; } else { struct sockaddr_storage ss; @@ -145,7 +145,7 @@ main(int argc, char **argv) HPROP_PORT), &sock); } sin_len = sizeof(ss); - if(getpeername(sock, sa, &sin_len) < 0) + if (getpeername(sock, sa, &sin_len) < 0) krb5_err(context, 1, errno, "getpeername"); if (inet_ntop(sa->sa_family, @@ -158,7 +158,7 @@ main(int argc, char **argv) krb5_log(context, fac, 0, "Connection from %s", addr_name); ret = krb5_kt_register(context, &hdb_kt_ops); - if(ret) + if (ret) krb5_err(context, 1, ret, "krb5_kt_register"); if (ktname != NULL) { @@ -173,7 +173,7 @@ main(int argc, char **argv) ret = krb5_recvauth(context, &ac, &sock, HPROP_VERSION, NULL, 0, keytab, &ticket); - if(ret) + if (ret) krb5_err(context, 1, ret, "krb5_recvauth"); ret = krb5_unparse_name(context, ticket->server, &server); @@ -186,15 +186,15 @@ main(int argc, char **argv) krb5_free_ticket (context, ticket); ret = krb5_auth_con_getauthenticator(context, ac, &authent); - if(ret) + if (ret) krb5_err(context, 1, ret, "krb5_auth_con_getauthenticator"); ret = krb5_make_principal(context, &c1, NULL, "kadmin", "hprop", NULL); - if(ret) + if (ret) krb5_err(context, 1, ret, "krb5_make_principal"); _krb5_principalname2krb5_principal(context, &c2, authent->cname, authent->crealm); - if(!krb5_principal_compare(context, c1, c2)) { + if (!krb5_principal_compare(context, c1, c2)) { char *s; ret = krb5_unparse_name(context, c2, &s); if (ret) @@ -205,48 +205,48 @@ main(int argc, char **argv) krb5_free_principal(context, c2); ret = krb5_kt_close(context, keytab); - if(ret) + if (ret) krb5_err(context, 1, ret, "krb5_kt_close"); } - if(!print_dump) { + if (!print_dump) { asprintf(&tmp_db, "%s~", database); ret = hdb_create(context, &db, tmp_db); - if(ret) + if (ret) krb5_err(context, 1, ret, "hdb_create(%s)", tmp_db); ret = db->hdb_open(context, db, O_RDWR | O_CREAT | O_TRUNC, 0600); - if(ret) + if (ret) krb5_err(context, 1, ret, "hdb_open(%s)", tmp_db); } nprincs = 0; - while(1){ + while (1){ krb5_data data; hdb_entry_ex entry; - if(from_stdin) { + if (from_stdin) { ret = krb5_read_message(context, &sock, &data); - if(ret != 0 && ret != HEIM_ERR_EOF) + if (ret != 0 && ret != HEIM_ERR_EOF) krb5_err(context, 1, ret, "krb5_read_message"); } else { ret = krb5_read_priv_message(context, ac, &sock, &data); - if(ret) + if (ret) krb5_err(context, 1, ret, "krb5_read_priv_message"); } - if(ret == HEIM_ERR_EOF || data.length == 0) { - if(!from_stdin) { + if (ret == HEIM_ERR_EOF || data.length == 0) { + if (!from_stdin) { data.data = NULL; data.length = 0; krb5_write_priv_message(context, ac, &sock, &data); } - if(!print_dump) { + if (!print_dump) { ret = db->hdb_close(context, db); - if(ret) + if (ret) krb5_err(context, 1, ret, "db_close"); ret = db->hdb_rename(context, db, database); - if(ret) + if (ret) krb5_err(context, 1, ret, "db_rename"); } break; @@ -254,20 +254,24 @@ main(int argc, char **argv) memset(&entry, 0, sizeof(entry)); ret = hdb_value2entry(context, &data, &entry.entry); krb5_data_free(&data); - if(ret) + if (ret) krb5_err(context, 1, ret, "hdb_value2entry"); - if(print_dump) - hdb_print_entry(context, db, &entry, stdout); - else { + if (print_dump) { + struct hdb_print_entry_arg parg; + + parg.out = stdout; + parg.fmt = HDB_DUMP_HEIMDAL; + hdb_print_entry(context, db, &entry, &parg); + } else { ret = db->hdb_store(context, db, 0, &entry); - if(ret == HDB_ERR_EXISTS) { + if (ret == HDB_ERR_EXISTS) { char *s; ret = krb5_unparse_name(context, entry.entry.principal, &s); if (ret) s = strdup(unparseable_name); krb5_warnx(context, "Entry exists: %s", s); free(s); - } else if(ret) + } else if (ret) krb5_err(context, 1, ret, "db_store"); else nprincs++; diff --git a/crypto/heimdal/kdc/mit_dump.c b/crypto/heimdal/kdc/mit_dump.c index f28e932b15b4..4397d1ad897d 100644 --- a/crypto/heimdal/kdc/mit_dump.c +++ b/crypto/heimdal/kdc/mit_dump.c @@ -33,6 +33,17 @@ #include "hprop.h" +extern krb5_error_code _hdb_mdb_value2entry(krb5_context context, + krb5_data *data, + krb5_kvno target_kvno, + hdb_entry *entry); + +extern int _hdb_mit_dump2mitdb_entry(krb5_context context, + char *line, + krb5_storage *sp); + + + /* can have any number of princ stanzas. format is as follows (only \n indicates newlines) @@ -74,19 +85,6 @@ unless no extra data */ -static int -hex_to_octet_string(const char *ptr, krb5_data *data) -{ - size_t i; - unsigned int v; - for(i = 0; i < data->length; i++) { - if(sscanf(ptr + 2 * i, "%02x", &v) != 1) - return -1; - ((unsigned char*)data->data)[i] = v; - } - return 2 * i; -} - static char * nexttoken(char **p) { @@ -97,321 +95,116 @@ nexttoken(char **p) return q; } -static size_t -getdata(char **p, unsigned char *buf, size_t len) -{ - size_t i; - int v; - char *q = nexttoken(p); - i = 0; - while(*q && i < len) { - if(sscanf(q, "%02x", &v) != 1) - break; - buf[i++] = v; - q += 2; - } - return i; -} - -static int -getint(char **p) -{ - int val; - char *q = nexttoken(p); - sscanf(q, "%d", &val); - return val; -} - #include -static void -attr_to_flags(unsigned attr, HDBFlags *flags) -{ - flags->postdate = !(attr & KRB5_KDB_DISALLOW_POSTDATED); - flags->forwardable = !(attr & KRB5_KDB_DISALLOW_FORWARDABLE); - flags->initial = !!(attr & KRB5_KDB_DISALLOW_TGT_BASED); - flags->renewable = !(attr & KRB5_KDB_DISALLOW_RENEWABLE); - flags->proxiable = !(attr & KRB5_KDB_DISALLOW_PROXIABLE); - /* DUP_SKEY */ - flags->invalid = !!(attr & KRB5_KDB_DISALLOW_ALL_TIX); - flags->require_preauth = !!(attr & KRB5_KDB_REQUIRES_PRE_AUTH); - flags->require_hwauth = !!(attr & KRB5_KDB_REQUIRES_HW_AUTH); - flags->server = !(attr & KRB5_KDB_DISALLOW_SVR); - flags->change_pw = !!(attr & KRB5_KDB_PWCHANGE_SERVICE); - flags->client = 1; /* XXX */ -} - -#define KRB5_KDB_SALTTYPE_NORMAL 0 -#define KRB5_KDB_SALTTYPE_V4 1 -#define KRB5_KDB_SALTTYPE_NOREALM 2 -#define KRB5_KDB_SALTTYPE_ONLYREALM 3 -#define KRB5_KDB_SALTTYPE_SPECIAL 4 -#define KRB5_KDB_SALTTYPE_AFS3 5 - -static krb5_error_code -fix_salt(krb5_context context, hdb_entry *ent, int key_num) +static int +my_fgetln(FILE *f, char **buf, size_t *sz, size_t *len) { - krb5_error_code ret; - Salt *salt = ent->keys.val[key_num].salt; - /* fix salt type */ - switch((int)salt->type) { - case KRB5_KDB_SALTTYPE_NORMAL: - salt->type = KRB5_PADATA_PW_SALT; - break; - case KRB5_KDB_SALTTYPE_V4: - krb5_data_free(&salt->salt); - salt->type = KRB5_PADATA_PW_SALT; - break; - case KRB5_KDB_SALTTYPE_NOREALM: - { - size_t len; - size_t i; - char *p; - - len = 0; - for (i = 0; i < ent->principal->name.name_string.len; ++i) - len += strlen(ent->principal->name.name_string.val[i]); - ret = krb5_data_alloc (&salt->salt, len); - if (ret) - return ret; - p = salt->salt.data; - for (i = 0; i < ent->principal->name.name_string.len; ++i) { - memcpy (p, - ent->principal->name.name_string.val[i], - strlen(ent->principal->name.name_string.val[i])); - p += strlen(ent->principal->name.name_string.val[i]); - } - - salt->type = KRB5_PADATA_PW_SALT; - break; + char *p, *n; + + if (!*buf) { + *buf = malloc(*sz ? *sz : 2048); + if (!*buf) + return ENOMEM; + if (!*sz) + *sz = 2048; } - case KRB5_KDB_SALTTYPE_ONLYREALM: - krb5_data_free(&salt->salt); - ret = krb5_data_copy(&salt->salt, - ent->principal->realm, - strlen(ent->principal->realm)); - if(ret) - return ret; - salt->type = KRB5_PADATA_PW_SALT; - break; - case KRB5_KDB_SALTTYPE_SPECIAL: - salt->type = KRB5_PADATA_PW_SALT; - break; - case KRB5_KDB_SALTTYPE_AFS3: - krb5_data_free(&salt->salt); - ret = krb5_data_copy(&salt->salt, - ent->principal->realm, - strlen(ent->principal->realm)); - if(ret) - return ret; - salt->type = KRB5_PADATA_AFS3_SALT; - break; - default: - abort(); + *len = 0; + while ((p = fgets(&(*buf)[*len], *sz, f))) { + if (strcspn(*buf, "\r\n") || feof(f)) { + *len = strlen(*buf); + return 0; + } + *len += strlen(&(*buf)[*len]); /* *len should be == *sz */ + n = realloc(buf, *sz + (*sz >> 1)); + if (!n) { + free(*buf); + *buf = NULL; + *sz = 0; + *len = 0; + return ENOMEM; + } + *buf = n; + *sz += *sz >> 1; } - return 0; + return 0; /* *len == 0 || no EOL -> EOF */ } int mit_prop_dump(void *arg, const char *file) { krb5_error_code ret; - char line [2048]; - FILE *f; + size_t line_bufsz = 0; + size_t line_len = 0; + char *line = NULL; int lineno = 0; + FILE *f; struct hdb_entry_ex ent; - struct prop_data *pd = arg; + krb5_storage *sp = NULL; + krb5_data kdb_ent; + memset(&ent, 0, sizeof (ent)); f = fopen(file, "r"); - if(f == NULL) + if (f == NULL) return errno; - while(fgets(line, sizeof(line), f)) { - char *p = line, *q; - - int i; - - int num_tl_data; - int num_key_data; - int high_kvno; - int attributes; + ret = ENOMEM; + sp = krb5_storage_emem(); + if (!sp) + goto out; + while ((ret = my_fgetln(f, &line, &line_bufsz, &line_len)) == 0) { + char *p = line; + char *q; + lineno++; - int tmp; - - lineno++; - - memset(&ent, 0, sizeof(ent)); - - q = nexttoken(&p); - if(strcmp(q, "kdb5_util") == 0) { + if(strncmp(line, "kdb5_util", strlen("kdb5_util")) == 0) { int major; + q = nexttoken(&p); + if (strcmp(q, "kdb5_util")) + errx(1, "line %d: unknown version", lineno); q = nexttoken(&p); /* load_dump */ - if(strcmp(q, "load_dump")) + if (strcmp(q, "load_dump")) errx(1, "line %d: unknown version", lineno); q = nexttoken(&p); /* load_dump */ - if(strcmp(q, "version")) + if (strcmp(q, "version")) errx(1, "line %d: unknown version", lineno); q = nexttoken(&p); /* x.0 */ - if(sscanf(q, "%d", &major) != 1) + if (sscanf(q, "%d", &major) != 1) errx(1, "line %d: unknown version", lineno); - if(major != 4 && major != 5 && major != 6) + if (major != 4 && major != 5 && major != 6) errx(1, "unknown dump file format, got %d, expected 4-6", major); continue; - } else if(strcmp(q, "policy") == 0) { + } else if(strncmp(p, "policy", strlen("policy")) == 0) { + warnx("line: %d: ignoring policy (not supported)", lineno); continue; - } else if(strcmp(q, "princ") != 0) { + } else if(strncmp(p, "princ", strlen("princ")) != 0) { warnx("line %d: not a principal", lineno); continue; } - tmp = getint(&p); - if(tmp != 38) { - warnx("line %d: bad base length %d != 38", lineno, tmp); - continue; - } - nexttoken(&p); /* length of principal */ - num_tl_data = getint(&p); /* number of tl-data */ - num_key_data = getint(&p); /* number of key-data */ - getint(&p); /* length of extra data */ - q = nexttoken(&p); /* principal name */ - krb5_parse_name(pd->context, q, &ent.entry.principal); - attributes = getint(&p); /* attributes */ - attr_to_flags(attributes, &ent.entry.flags); - tmp = getint(&p); /* max life */ - if(tmp != 0) { - ALLOC(ent.entry.max_life); - *ent.entry.max_life = tmp; - } - tmp = getint(&p); /* max renewable life */ - if(tmp != 0) { - ALLOC(ent.entry.max_renew); - *ent.entry.max_renew = tmp; - } - tmp = getint(&p); /* expiration */ - if(tmp != 0 && tmp != 2145830400) { - ALLOC(ent.entry.valid_end); - *ent.entry.valid_end = tmp; - } - tmp = getint(&p); /* pw expiration */ - if(tmp != 0) { - ALLOC(ent.entry.pw_end); - *ent.entry.pw_end = tmp; - } - nexttoken(&p); /* last auth */ - nexttoken(&p); /* last failed auth */ - nexttoken(&p); /* fail auth count */ - for(i = 0; i < num_tl_data; i++) { - unsigned long val; - int tl_type, tl_length; - unsigned char *buf; - krb5_principal princ; - - tl_type = getint(&p); /* data type */ - tl_length = getint(&p); /* data length */ - -#define mit_KRB5_TL_LAST_PWD_CHANGE 1 -#define mit_KRB5_TL_MOD_PRINC 2 - switch(tl_type) { - case mit_KRB5_TL_LAST_PWD_CHANGE: - buf = malloc(tl_length); - if (buf == NULL) - errx(ENOMEM, "malloc"); - getdata(&p, buf, tl_length); /* data itself */ - val = buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24); - free(buf); - ALLOC(ent.entry.extensions); - ALLOC_SEQ(ent.entry.extensions, 1); - ent.entry.extensions->val[0].mandatory = 0; - ent.entry.extensions->val[0].data.element - = choice_HDB_extension_data_last_pw_change; - ent.entry.extensions->val[0].data.u.last_pw_change = val; - break; - case mit_KRB5_TL_MOD_PRINC: - buf = malloc(tl_length); - if (buf == NULL) - errx(ENOMEM, "malloc"); - getdata(&p, buf, tl_length); /* data itself */ - val = buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24); - ret = krb5_parse_name(pd->context, (char *)buf + 4, &princ); - if (ret) - krb5_err(pd->context, 1, ret, - "parse_name: %s", (char *)buf + 4); - free(buf); - ALLOC(ent.entry.modified_by); - ent.entry.modified_by->time = val; - ent.entry.modified_by->principal = princ; - break; - default: - nexttoken(&p); - break; - } - } - ALLOC_SEQ(&ent.entry.keys, num_key_data); - high_kvno = -1; - for(i = 0; i < num_key_data; i++) { - int key_versions; - int kvno; - key_versions = getint(&p); /* key data version */ - kvno = getint(&p); - - /* - * An MIT dump file may contain multiple sets of keys with - * different kvnos. Since the Heimdal database can only represent - * one kvno per principal, we only want the highest set. Assume - * that set will be given first, and discard all keys with lower - * kvnos. - */ - if (kvno > high_kvno && high_kvno != -1) - errx(1, "line %d: high kvno keys given after low kvno keys", - lineno); - else if (kvno < high_kvno) { - nexttoken(&p); /* key type */ - nexttoken(&p); /* key length */ - nexttoken(&p); /* key */ - if (key_versions > 1) { - nexttoken(&p); /* salt type */ - nexttoken(&p); /* salt length */ - nexttoken(&p); /* salt */ - } - ent.entry.keys.len--; - continue; - } - ent.entry.kvno = kvno; - high_kvno = kvno; - ALLOC(ent.entry.keys.val[i].mkvno); - *ent.entry.keys.val[i].mkvno = 1; - - /* key version 0 -- actual key */ - ent.entry.keys.val[i].key.keytype = getint(&p); /* key type */ - tmp = getint(&p); /* key length */ - /* the first two bytes of the key is the key length -- - skip it */ - krb5_data_alloc(&ent.entry.keys.val[i].key.keyvalue, tmp - 2); - q = nexttoken(&p); /* key itself */ - hex_to_octet_string(q + 4, &ent.entry.keys.val[i].key.keyvalue); - - if(key_versions > 1) { - /* key version 1 -- optional salt */ - ALLOC(ent.entry.keys.val[i].salt); - ent.entry.keys.val[i].salt->type = getint(&p); /* salt type */ - tmp = getint(&p); /* salt length */ - if(tmp > 0) { - krb5_data_alloc(&ent.entry.keys.val[i].salt->salt, tmp - 2); - q = nexttoken(&p); /* salt itself */ - hex_to_octet_string(q + 4, - &ent.entry.keys.val[i].salt->salt); - } else { - ent.entry.keys.val[i].salt->salt.length = 0; - ent.entry.keys.val[i].salt->salt.data = NULL; - getint(&p); /* -1, if no data. */ - } - fix_salt(pd->context, &ent.entry, i); - } - } - nexttoken(&p); /* extra data */ - v5_prop(pd->context, NULL, &ent, arg); + krb5_storage_truncate(sp, 0); + ret = _hdb_mit_dump2mitdb_entry(pd->context, line, sp); + if (ret) break; + ret = krb5_storage_to_data(sp, &kdb_ent); + if (ret) break; + ret = _hdb_mdb_value2entry(pd->context, &kdb_ent, 0, &ent.entry); + krb5_data_free(&kdb_ent); + if (ret) break; + ret = v5_prop(pd->context, NULL, &ent, arg); + hdb_free_entry(pd->context, &ent); + if (ret) break; } + +out: fclose(f); - return 0; + free(line); + if (sp) + krb5_storage_free(sp); + if (ret && ret == ENOMEM) + errx(1, "out of memory"); + if (ret) + errx(1, "line %d: problem parsing dump line", lineno); + return ret; } + diff --git a/crypto/heimdal/lib/hdb/Makefile.am b/crypto/heimdal/lib/hdb/Makefile.am index b629f56258d2..fd009bd26867 100644 --- a/crypto/heimdal/lib/hdb/Makefile.am +++ b/crypto/heimdal/lib/hdb/Makefile.am @@ -29,6 +29,7 @@ gen_files_hdb = \ asn1_HDB_Ext_Lan_Manager_OWF.x \ asn1_HDB_Ext_Password.x \ asn1_HDB_Ext_Aliases.x \ + asn1_HDB_Ext_KeySet.x \ asn1_HDB_extension.x \ asn1_HDB_extensions.x \ asn1_hdb_entry.x \ diff --git a/crypto/heimdal/lib/hdb/common.c b/crypto/heimdal/lib/hdb/common.c index 2715adf63dca..80482e7a4c1c 100644 --- a/crypto/heimdal/lib/hdb/common.c +++ b/crypto/heimdal/lib/hdb/common.c @@ -105,7 +105,6 @@ _hdb_fetch_kvno(krb5_context context, HDB *db, krb5_const_principal principal, krb5_principal enterprise_principal = NULL; krb5_data key, value; krb5_error_code ret; - int code; if (principal->name.name_type == KRB5_NT_ENTERPRISE_PRINCIPAL) { if (principal->name.name_string.len != 1) { @@ -125,43 +124,74 @@ _hdb_fetch_kvno(krb5_context context, HDB *db, krb5_const_principal principal, hdb_principal2key(context, principal, &key); if (enterprise_principal) krb5_free_principal(context, enterprise_principal); - code = db->hdb__get(context, db, key, &value); + ret = db->hdb__get(context, db, key, &value); krb5_data_free(&key); - if(code) - return code; - code = hdb_value2entry(context, &value, &entry->entry); - if (code == ASN1_BAD_ID && (flags & HDB_F_CANON) == 0) { + if(ret) + return ret; + ret = hdb_value2entry(context, &value, &entry->entry); + if (ret == ASN1_BAD_ID && (flags & HDB_F_CANON) == 0) { krb5_data_free(&value); return HDB_ERR_NOENTRY; - } else if (code == ASN1_BAD_ID) { + } else if (ret == ASN1_BAD_ID) { hdb_entry_alias alias; - code = hdb_value2entry_alias(context, &value, &alias); - if (code) { + ret = hdb_value2entry_alias(context, &value, &alias); + if (ret) { krb5_data_free(&value); - return code; + return ret; } hdb_principal2key(context, alias.principal, &key); krb5_data_free(&value); free_hdb_entry_alias(&alias); - code = db->hdb__get(context, db, key, &value); + ret = db->hdb__get(context, db, key, &value); krb5_data_free(&key); - if (code) - return code; - code = hdb_value2entry(context, &value, &entry->entry); - if (code) { + if (ret) + return ret; + ret = hdb_value2entry(context, &value, &entry->entry); + if (ret) { krb5_data_free(&value); - return code; + return ret; } } krb5_data_free(&value); if (db->hdb_master_key_set && (flags & HDB_F_DECRYPT)) { - code = hdb_unseal_keys (context, db, &entry->entry); - if (code) +#ifdef notnow + if ((flags & HDB_F_KVNO_SPECIFIED) == 0 && + (flags & HDB_F_CURRENT_KVNO) == 0) { + + /* + * Decrypt all the old keys too, since we don't know which + * the caller will need. + */ + ret = hdb_unseal_keys_kvno(context, db, 0, &entry->entry); + if (ret) { + hdb_free_entry(context, entry); + return ret; + } + } else if ((flags & HDB_F_KVNO_SPECIFIED) != 0 && + kvno != entry->entry.kvno && + kvno < entry->entry.kvno && + kvno > 0) { + + /* Decrypt the keys we were asked for, if not the current ones */ + ret = hdb_unseal_keys_kvno(context, db, kvno, &entry->entry); + if (ret) { + hdb_free_entry(context, entry); + return ret; + } + } +#endif + + /* Always decrypt the current keys too */ + ret = hdb_unseal_keys(context, db, &entry->entry); + if (ret) { hdb_free_entry(context, entry); + return ret; + } } - return code; + + return ret; } static krb5_error_code diff --git a/crypto/heimdal/lib/hdb/ext.c b/crypto/heimdal/lib/hdb/ext.c index d2a4373b9b38..5f7a19a55e04 100644 --- a/crypto/heimdal/lib/hdb/ext.c +++ b/crypto/heimdal/lib/hdb/ext.c @@ -432,3 +432,34 @@ hdb_entry_get_aliases(const hdb_entry *entry, const HDB_Ext_Aliases **a) return 0; } + +krb5_error_code +hdb_set_last_modified_by(krb5_context context, hdb_entry *entry, + krb5_principal modby, time_t modtime) +{ + krb5_error_code ret; + Event *old_ev; + Event *ev; + + old_ev = entry->modified_by; + + ev = calloc(1, sizeof (*ev)); + if (!ev) + return ENOMEM; + if (modby) + ret = krb5_copy_principal(context, modby, &ev->principal); + else + ret = krb5_parse_name(context, "root/admin", &ev->principal); + if (ret) { + free(ev); + return ret; + } + ev->time = modtime; + if (!ev->time) + time(&ev->time); + + entry->modified_by = ev; + if (old_ev) + free_Event(old_ev); + return 0; +} diff --git a/crypto/heimdal/lib/hdb/hdb-mitdb.c b/crypto/heimdal/lib/hdb/hdb-mitdb.c index 02c575050fe2..1dfe7835cb4d 100644 --- a/crypto/heimdal/lib/hdb/hdb-mitdb.c *** 1800 LINES SKIPPED *** From nobody Mon Oct 27 19:49:17 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwPGP4rMwz6FQmr; Mon, 27 Oct 2025 19:49:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwPGP4MxKz3V9K; Mon, 27 Oct 2025 19:49:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761594557; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=k78PdSLIOlT0JVBcP4m8cSsBUKniXvvUwg7P4D3Td/8=; b=TW62SlqSK0N/AItMubhngUx/9KNr8k6Ugj6yYHQ0eNIpOtpI7g2AXffK3azyKPivsR0Ir+ LhS51TGEWh/3LZAMtvjPtqW1yPhZXEzJ3lvmBKsFdN3fCdJwdcCYD8b8xM7sfVNvOt42cF jaFGuekUvm89IMos68vSxRVeO69WHGGdqOcxIN+1cMj5wM5aPJA5iSOiPW6WImiU5AT2Cm lxLcA8olDded+9/Xd1bmoFqvJ5kfULxOfE0fP2FR0t6Qg+so4xNntjZq9vXzN9pzKUn12X UMQejmenT3khFVg3X9PpgljLQwkiyzPJhhIBg8+6XovMI7GZWWBSStOMeIp+Ig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761594557; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=k78PdSLIOlT0JVBcP4m8cSsBUKniXvvUwg7P4D3Td/8=; b=PGue6KW5dmiApySLgDtInBkh/pmgyqGXvsexMVMo76LUaX5ZbGCOCYgfhceNUWHH0Hh0NJ nAmvSsgzCQRsJX3XakxWtJ8RIPW4YCwF/NsTE5qjHAxD7eCMcxvRf7Qg+g+YxZV7poXvXH yCFhxsnPaunk84bq/J2I491pwQxFOM7/Qx4i8uT4+BULFpib34AAWJ4QHwdZSW2c7+1xYi daujVxLvSHpDMVTBTEDYNBTMMGHhiGJ3WLGV6jerA6jyrpB1YWTy399oCXVh5a0q4xBuBw IwIeqRjKnZEU6nVBunc2vZEhROiDK7VQ+RM0siLEltpCzfqyVweoLYSuKE2fRw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761594557; a=rsa-sha256; cv=none; b=ZIpIxnk//GmyTmtKUzC853NAZ5XkxoEDqR3/hry/d0fOmgOdFOp+zYrgcxy1FGtW1vAJrk IrJNAJI4qxdFSxAIxrz8Zy3/j14n3ol+3sHHf5ba9SIyI6luGbBhJZY5KjHZ/504pKnqTA ed8+dDtxOlzp+NttB715hOz5WwEXqqh22KGdH5vCxMPZWubsODl1wsB4qh3dm7yUumLMmP sXu8vkCXg86F4fdVwB4q3Sgh2EMMKHOuiUsw7QViMYv8umGQ4b4HMGfcmewtBZ+odAWqmj wvy1I7lgoxUgYPUqRahKHpPZGSc7sJbgS3UjFtEbobRVPddSakSmpc1vIQP9VQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwPGP3xSCz35H; Mon, 27 Oct 2025 19:49:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59RJnHb3078678; Mon, 27 Oct 2025 19:49:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59RJnHOH078675; Mon, 27 Oct 2025 19:49:17 GMT (envelope-from git) Date: Mon, 27 Oct 2025 19:49:17 GMT Message-Id: <202510271949.59RJnHOH078675@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: 2be4c64a0d27 - stable/15 - fdisk: Bump removal to FreeBSD 16.0 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 2be4c64a0d27a9136cc05c9bdf7a45162339aa69 Auto-Submitted: auto-generated The branch stable/15 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=2be4c64a0d27a9136cc05c9bdf7a45162339aa69 commit 2be4c64a0d27a9136cc05c9bdf7a45162339aa69 Author: Ed Maste AuthorDate: 2025-10-24 15:08:25 +0000 Commit: Ed Maste CommitDate: 2025-10-27 14:34:43 +0000 fdisk: Bump removal to FreeBSD 16.0 Removal did not happen prior to 15.0. Sponsored by: The FreeBSD Foundation (cherry picked from commit f817f6e7f4a8dc507f3e1b1603dfd2d81093e3bd) (cherry picked from commit 739750ae7c63c653025ad84cac6ba7cb6756dcf8) --- sbin/fdisk/fdisk.8 | 4 ++-- sbin/fdisk/fdisk.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sbin/fdisk/fdisk.8 b/sbin/fdisk/fdisk.8 index 09933acf57df..f26e6bb67d6e 100644 --- a/sbin/fdisk/fdisk.8 +++ b/sbin/fdisk/fdisk.8 @@ -1,5 +1,5 @@ .\" -.Dd October 5, 2016 +.Dd October 24, 2025 .Dt FDISK 8 .Os .Sh NAME @@ -18,7 +18,7 @@ .Sh DEPRECATION NOTICE .Nm is deprecated and is not available in -.Fx 15.0 +.Fx 16.0 or later. Use .Xr gpart 8 diff --git a/sbin/fdisk/fdisk.c b/sbin/fdisk/fdisk.c index 925cc68932d7..28230191bb16 100644 --- a/sbin/fdisk/fdisk.c +++ b/sbin/fdisk/fdisk.c @@ -266,7 +266,7 @@ main(int argc, char *argv[]) struct dos_partition *partp; fprintf(stderr, - "WARNING: fdisk is deprecated and is not available in FreeBSD 15 or later.\n" + "WARNING: fdisk is deprecated and is not available in FreeBSD 16 or later.\n" "Please use gpart instead.\n\n"); while ((c = getopt(argc, argv, "BIab:f:ipqstuv1234")) != -1) From nobody Mon Oct 27 22:48:38 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwTFL4pvxz6FkPj; Mon, 27 Oct 2025 22:48:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwTFL4WwQz486C; Mon, 27 Oct 2025 22:48:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761605318; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jvwxUdXyb3cxsylogodQSwBZF1NjawY6W+6yE3YO7Jo=; b=AbqDJfGDet1xwP4RNHBxgQTsOh2hGnwEt9YNvzLHMCLBG5ircOITblYKOPhh2qUSwyTrwq 3p63qbtb6EMb7dXDELtjtEaE/gPHJIR2vxFXfu2aUPxvupLIFUcalOKIVuOsq+bDNY88w5 DIKbqcpvQW0sqVpMSwB4/vUP8q+oZG4UM3vx1z5dzj2k9D6J/l65hGz+3r2yCkZuwdoqc4 0fyMrZ1M3qSUsqSsh506mXg5fZ6vbBuYpixp9UbwH6PhBYBYcZJt3S5uW3/7GB+vFg6T8J sigEmSCqzBMVLurWIlW5yiHPT1VUMQCbYWuzhkEsyPQu1jpmqkIXf52r8YXxoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761605318; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jvwxUdXyb3cxsylogodQSwBZF1NjawY6W+6yE3YO7Jo=; b=oROiseBBLPqbTlMI6SyD+jncaz//1sURTq7Sl3d3xq5216zIquYxryo6kavuUJiJPsakMj O79/+HoxeDzej/mly2zotHwMzPU9c2gXomynwigaIymIjnIQq9ugkXuQVsDmefKZxD3JAW Q6Ix36mwvbtf69JOklzBwxzRfUNRArXLLxV124AegfANY9/UMbcySy/mL0zu+GdvMa6FJE K7awjHh8SgOtO/iMwNENkstg9M0C/6QQtxfScy+Q94KN4+swp1Kqb3Ym/iS3kNkcSqMWCK aCFt42W2IdfeCDHFd0gEuRQOKOASONFwNm6U8lUgLE2pYhl3WRcTL06j0YIqBA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761605318; a=rsa-sha256; cv=none; b=m8RnuxukC/BkTofPqJadgLYNoMtirorZ87v+0RK7OHr579yXxHnL2JRXthhwS1tsAIehYW ovJq0QNq0ieSk654H5P4Sd6nnIjcvmRC1vMflZ9jzDecWWnI49o6eIQjfCNKsQ2jA+QUhJ tRqfPloaWa5PShqvRXqmhmzRtCsS6Khn0USQPi6XM4HOmfSFQIa8FWM9PaSqX0DGt94FEX FEm1Y1PGkVqg/iNJFFM1Q35x30kg4yCwkr5p+qxR2crNExzlrsKxhbbiWFMusgzVaoHOU3 Eq/mYrHUcx3I/nJ4CcyDAyalM/0qfMUS4B3HGGJwwxgbuzslWu320e9COiA0fg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwTFL3jXRz7dp; Mon, 27 Oct 2025 22:48:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59RMmcTw017161; Mon, 27 Oct 2025 22:48:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59RMmcAR017158; Mon, 27 Oct 2025 22:48:38 GMT (envelope-from git) Date: Mon, 27 Oct 2025 22:48:38 GMT Message-Id: <202510272248.59RMmcAR017158@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: 8856e55b4746 - stable/15 - tcp rack: cleanup List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 8856e55b4746b17c643b6033c4665d05b6fc3f9a Auto-Submitted: auto-generated The branch stable/15 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=8856e55b4746b17c643b6033c4665d05b6fc3f9a commit 8856e55b4746b17c643b6033c4665d05b6fc3f9a Author: Peter Lei AuthorDate: 2025-10-24 19:42:28 +0000 Commit: Michael Tuexen CommitDate: 2025-10-27 22:40:24 +0000 tcp rack: cleanup The TCP_SAD_DETECTION code was removed. Remove the remaining sysctl-variables and counters. Reviewed by: tuexen Sponsored by: Netflix, Inc. (cherry picked from commit 04c2642406815729781e7eb219a5438583fff27f) --- sys/netinet/tcp_stacks/rack.c | 201 +------------------------------------- sys/netinet/tcp_stacks/tcp_rack.h | 1 - 2 files changed, 4 insertions(+), 198 deletions(-) diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index 11ef5ba706c5..9bc4530afe10 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -204,10 +204,6 @@ static int32_t rack_dnd_default = 0; /* For rr_conf = 3, what is the default fo static int32_t rack_rxt_controls = 0; static int32_t rack_fill_cw_state = 0; static uint8_t rack_req_measurements = 1; -/* Attack threshold detections */ -static uint32_t rack_highest_sack_thresh_seen = 0; -static uint32_t rack_highest_move_thresh_seen = 0; -static uint32_t rack_merge_out_sacks_on_attack = 0; static int32_t rack_enable_hw_pacing = 0; /* Due to CCSP keep it off by default */ static int32_t rack_hw_rate_caps = 0; /* 1; */ static int32_t rack_hw_rate_cap_per = 0; /* 0 -- off */ @@ -223,7 +219,6 @@ static int32_t rack_default_pacing_divisor = 250; static uint16_t rack_pacing_min_seg = 0; static int32_t rack_timely_off = 0; -static uint32_t sad_seg_size_per = 800; /* 80.0 % */ static int32_t rack_pkt_delay = 1000; static int32_t rack_send_a_lot_in_prr = 1; static int32_t rack_min_to = 1000; /* Number of microsecond min timeout */ @@ -399,18 +394,6 @@ counter_u64_t rack_extended_rfo; counter_u64_t rack_sack_proc_all; counter_u64_t rack_sack_proc_short; counter_u64_t rack_sack_proc_restart; -counter_u64_t rack_sack_attacks_detected; -counter_u64_t rack_sack_attacks_reversed; -counter_u64_t rack_sack_attacks_suspect; -counter_u64_t rack_sack_used_next_merge; -counter_u64_t rack_sack_splits; -counter_u64_t rack_sack_used_prev_merge; -counter_u64_t rack_sack_skipped_acked; -counter_u64_t rack_ack_total; -counter_u64_t rack_express_sack; -counter_u64_t rack_sack_total; -counter_u64_t rack_move_none; -counter_u64_t rack_move_some; counter_u64_t rack_input_idle_reduces; counter_u64_t rack_collapsed_win; @@ -834,18 +817,6 @@ sysctl_rack_clear(SYSCTL_HANDLER_ARGS) counter_u64_zero(rack_rxt_clamps_cwnd_uniq); counter_u64_zero(rack_multi_single_eq); counter_u64_zero(rack_proc_non_comp_ack); - counter_u64_zero(rack_sack_attacks_detected); - counter_u64_zero(rack_sack_attacks_reversed); - counter_u64_zero(rack_sack_attacks_suspect); - counter_u64_zero(rack_sack_used_next_merge); - counter_u64_zero(rack_sack_used_prev_merge); - counter_u64_zero(rack_sack_splits); - counter_u64_zero(rack_sack_skipped_acked); - counter_u64_zero(rack_ack_total); - counter_u64_zero(rack_express_sack); - counter_u64_zero(rack_sack_total); - counter_u64_zero(rack_move_none); - counter_u64_zero(rack_move_some); counter_u64_zero(rack_try_scwnd); counter_u64_zero(rack_collapsed_win); counter_u64_zero(rack_collapsed_win_rxt); @@ -872,7 +843,6 @@ static void rack_init_sysctls(void) { struct sysctl_oid *rack_counters; - struct sysctl_oid *rack_attack; struct sysctl_oid *rack_pacing; struct sysctl_oid *rack_timely; struct sysctl_oid *rack_timers; @@ -883,12 +853,6 @@ rack_init_sysctls(void) struct sysctl_oid *rack_probertt; struct sysctl_oid *rack_hw_pacing; - rack_attack = SYSCTL_ADD_NODE(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_sysctl_root), - OID_AUTO, - "sack_attack", - CTLFLAG_RW | CTLFLAG_MPSAFE, 0, - "Rack Sack Attack Counters and Controls"); rack_counters = SYSCTL_ADD_NODE(&rack_sysctl_ctx, SYSCTL_CHILDREN(rack_sysctl_root), OID_AUTO, @@ -1533,11 +1497,6 @@ rack_init_sysctls(void) OID_AUTO, "dnd", CTLFLAG_RW, &rack_dnd_default, 0, "Do not disturb default for rack_rrr = 3"); - SYSCTL_ADD_S32(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_misc), - OID_AUTO, "sad_seg_per", CTLFLAG_RW, - &sad_seg_size_per, 800, - "Percentage of segment size needed in a sack 800 = 80.0?"); SYSCTL_ADD_S32(&rack_sysctl_ctx, SYSCTL_CHILDREN(rack_misc), OID_AUTO, "rxt_controls", CTLFLAG_RW, @@ -1619,85 +1578,6 @@ rack_init_sysctls(void) &rack_autosndbuf_inc, 20, "What percentage should rack scale up its snd buffer by?"); - - /* Sack Attacker detection stuff */ - SYSCTL_ADD_U32(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "merge_out", CTLFLAG_RW, - &rack_merge_out_sacks_on_attack, 0, - "Do we merge the sendmap when we decide we are being attacked?"); - - SYSCTL_ADD_U32(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "detect_highsackratio", CTLFLAG_RW, - &rack_highest_sack_thresh_seen, 0, - "Highest sack to ack ratio seen"); - SYSCTL_ADD_U32(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "detect_highmoveratio", CTLFLAG_RW, - &rack_highest_move_thresh_seen, 0, - "Highest move to non-move ratio seen"); - rack_ack_total = counter_u64_alloc(M_WAITOK); - SYSCTL_ADD_COUNTER_U64(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "acktotal", CTLFLAG_RD, - &rack_ack_total, - "Total number of Ack's"); - rack_express_sack = counter_u64_alloc(M_WAITOK); - SYSCTL_ADD_COUNTER_U64(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "exp_sacktotal", CTLFLAG_RD, - &rack_express_sack, - "Total expresss number of Sack's"); - rack_sack_total = counter_u64_alloc(M_WAITOK); - SYSCTL_ADD_COUNTER_U64(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "sacktotal", CTLFLAG_RD, - &rack_sack_total, - "Total number of SACKs"); - rack_move_none = counter_u64_alloc(M_WAITOK); - SYSCTL_ADD_COUNTER_U64(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "move_none", CTLFLAG_RD, - &rack_move_none, - "Total number of SACK index reuse of positions under threshold"); - rack_move_some = counter_u64_alloc(M_WAITOK); - SYSCTL_ADD_COUNTER_U64(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "move_some", CTLFLAG_RD, - &rack_move_some, - "Total number of SACK index reuse of positions over threshold"); - rack_sack_attacks_detected = counter_u64_alloc(M_WAITOK); - SYSCTL_ADD_COUNTER_U64(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "attacks", CTLFLAG_RD, - &rack_sack_attacks_detected, - "Total number of SACK attackers that had sack disabled"); - rack_sack_attacks_reversed = counter_u64_alloc(M_WAITOK); - SYSCTL_ADD_COUNTER_U64(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "reversed", CTLFLAG_RD, - &rack_sack_attacks_reversed, - "Total number of SACK attackers that were later determined false positive"); - rack_sack_attacks_suspect = counter_u64_alloc(M_WAITOK); - SYSCTL_ADD_COUNTER_U64(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "suspect", CTLFLAG_RD, - &rack_sack_attacks_suspect, - "Total number of SACKs that triggered early detection"); - - rack_sack_used_next_merge = counter_u64_alloc(M_WAITOK); - SYSCTL_ADD_COUNTER_U64(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "nextmerge", CTLFLAG_RD, - &rack_sack_used_next_merge, - "Total number of times we used the next merge"); - rack_sack_used_prev_merge = counter_u64_alloc(M_WAITOK); - SYSCTL_ADD_COUNTER_U64(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "prevmerge", CTLFLAG_RD, - &rack_sack_used_prev_merge, - "Total number of times we used the prev merge"); /* Counters */ rack_total_bytes = counter_u64_alloc(M_WAITOK); SYSCTL_ADD_COUNTER_U64(&rack_sysctl_ctx, @@ -1908,18 +1788,6 @@ rack_init_sysctls(void) OID_AUTO, "sack_short", CTLFLAG_RD, &rack_sack_proc_short, "Total times we took shortcut for sack processing"); - rack_sack_skipped_acked = counter_u64_alloc(M_WAITOK); - SYSCTL_ADD_COUNTER_U64(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "skipacked", CTLFLAG_RD, - &rack_sack_skipped_acked, - "Total number of times we skipped previously sacked"); - rack_sack_splits = counter_u64_alloc(M_WAITOK); - SYSCTL_ADD_COUNTER_U64(&rack_sysctl_ctx, - SYSCTL_CHILDREN(rack_attack), - OID_AUTO, "ofsplit", CTLFLAG_RD, - &rack_sack_splits, - "Total number of times we did the old fashion tree split"); rack_input_idle_reduces = counter_u64_alloc(M_WAITOK); SYSCTL_ADD_COUNTER_U64(&rack_sysctl_ctx, SYSCTL_CHILDREN(rack_counters), @@ -3319,16 +3187,6 @@ rack_counter_destroy(void) counter_u64_free(rack_hw_pace_lost); counter_u64_free(rack_non_fto_send); counter_u64_free(rack_extended_rfo); - counter_u64_free(rack_ack_total); - counter_u64_free(rack_express_sack); - counter_u64_free(rack_sack_total); - counter_u64_free(rack_move_none); - counter_u64_free(rack_move_some); - counter_u64_free(rack_sack_attacks_detected); - counter_u64_free(rack_sack_attacks_reversed); - counter_u64_free(rack_sack_attacks_suspect); - counter_u64_free(rack_sack_used_next_merge); - counter_u64_free(rack_sack_used_prev_merge); counter_u64_free(rack_tlp_tot); counter_u64_free(rack_tlp_newdata); counter_u64_free(rack_tlp_retran); @@ -3351,8 +3209,6 @@ rack_counter_destroy(void) counter_u64_free(rack_sack_proc_all); counter_u64_free(rack_sack_proc_restart); counter_u64_free(rack_sack_proc_short); - counter_u64_free(rack_sack_skipped_acked); - counter_u64_free(rack_sack_splits); counter_u64_free(rack_input_idle_reduces); counter_u64_free(rack_collapsed_win); counter_u64_free(rack_collapsed_win_rxt); @@ -9537,7 +9393,6 @@ do_rest_ofb: goto out; } rack_log_map_chg(tp, rack, &stack_map, rsm, next, MAP_SACK_M1, end, __LINE__); - counter_u64_add(rack_sack_used_next_merge, 1); /* Postion for the next block */ start = next->r_end; rsm = tqhash_next(rack->r_ctl.tqh, next); @@ -9569,7 +9424,6 @@ do_rest_ofb: */ goto out; } - counter_u64_add(rack_sack_splits, 1); rack_clone_rsm(rack, nrsm, rsm, start); rsm->r_just_ret = 0; #ifndef INVARIANTS @@ -9591,7 +9445,6 @@ do_rest_ofb: } } else { /* Already sacked this piece */ - counter_u64_add(rack_sack_skipped_acked, 1); if (end == rsm->r_end) { /* Done with block */ rsm = tqhash_next(rack->r_ctl.tqh, rsm); @@ -9696,8 +9549,6 @@ do_rest_ofb: rsm->r_in_tmap = 0; } rack_log_map_chg(tp, rack, NULL, rsm, NULL, MAP_SACK_M3, end, __LINE__); - } else { - counter_u64_add(rack_sack_skipped_acked, 1); } if (end == rsm->r_end) { /* This block only - done, setup for next */ @@ -9872,7 +9723,6 @@ do_rest_ofb: } rack_log_map_chg(tp, rack, prev, &stack_map, rsm, MAP_SACK_M4, end, __LINE__); rsm = prev; - counter_u64_add(rack_sack_used_prev_merge, 1); } else { /** * This is the case where our previous @@ -9937,7 +9787,6 @@ do_rest_ofb: * rsm |---| (acked) * nrsm |------| (not acked) */ - counter_u64_add(rack_sack_splits, 1); rack_clone_rsm(rack, nrsm, rsm, end); rsm->r_flags &= (~RACK_HAS_FIN); rsm->r_just_ret = 0; @@ -9991,11 +9840,6 @@ do_rest_ofb: rsm->r_in_tmap = 0; } } - } else if (start != end){ - /* - * The block was already acked. - */ - counter_u64_add(rack_sack_skipped_acked, 1); } out: if (rsm && @@ -10799,17 +10643,6 @@ rack_log_ack(struct tcpcb *tp, struct tcpopt *to, struct tcphdr *th, int entered changed = 0; th_ack = th->th_ack; segsiz = ctf_fixed_maxseg(rack->rc_tp); - if (BYTES_THIS_ACK(tp, th) >= segsiz) { - /* - * You only get credit for - * MSS and greater (and you get extra - * credit for larger cum-ack moves). - */ - int ac; - - ac = BYTES_THIS_ACK(tp, th) / ctf_fixed_maxseg(rack->rc_tp); - counter_u64_add(rack_ack_total, ac); - } if (SEQ_GT(th_ack, tp->snd_una)) { rack_log_progress_event(rack, tp, ticks, PROGRESS_UPDATE, __LINE__); tp->t_acktime = ticks; @@ -10881,8 +10714,8 @@ rack_log_ack(struct tcpcb *tp, struct tcpopt *to, struct tcphdr *th, int entered if (sacks_seen != NULL) *sacks_seen = num_sack_blks; if (num_sack_blks == 0) { - /* Nothing to sack, but we need to update counts */ - goto out_with_totals; + /* Nothing to sack */ + goto out; } /* Its a sack of some sort */ if (num_sack_blks < 2) { @@ -10905,7 +10738,7 @@ rack_log_ack(struct tcpcb *tp, struct tcpopt *to, struct tcphdr *th, int entered */ again: if (num_sack_blks == 0) - goto out_with_totals; + goto out; if (num_sack_blks > 1) { for (i = 0; i < num_sack_blks; i++) { for (j = i + 1; j < num_sack_blks; j++) { @@ -10958,19 +10791,7 @@ do_sack_work: changed += acked; } if (num_sack_blks == 1) { - /* - * This is what we would expect from - * a normal implementation to happen - * after we have retransmitted the FR, - * i.e the sack-filter pushes down - * to 1 block and the next to be retransmitted - * is the sequence in the sack block (has more - * are acked). Count this as ACK'd data to boost - * up the chances of recovering any false positives. - */ - counter_u64_add(rack_ack_total, (acked / ctf_fixed_maxseg(rack->rc_tp))); - counter_u64_add(rack_express_sack, 1); - goto out_with_totals; + goto out; } else { /* * Start the loop through the @@ -10979,7 +10800,6 @@ do_sack_work: loop_start = 1; } } - counter_u64_add(rack_sack_total, 1); rsm = rack->r_ctl.rc_sacklast; for (i = loop_start; i < num_sack_blks; i++) { acked = rack_proc_sack_blk(tp, rack, &sack_blocks[i], to, &rsm, cts, segsiz); @@ -10988,18 +10808,6 @@ do_sack_work: changed += acked; } } -out_with_totals: - if (num_sack_blks > 1) { - /* - * You get an extra stroke if - * you have more than one sack-blk, this - * could be where we are skipping forward - * and the sack-filter is still working, or - * it could be an attacker constantly - * moving us. - */ - counter_u64_add(rack_move_some, 1); - } out: if (changed) { /* Something changed cancel the rack timer */ @@ -14720,7 +14528,6 @@ rack_init(struct tcpcb *tp, void **ptr) rack->r_ctl.rc_prr_sendalot = rack_send_a_lot_in_prr; rack->r_ctl.rc_min_to = rack_min_to; microuptime(&rack->r_ctl.act_rcv_time); - rack->r_ctl.rc_last_time_decay = rack->r_ctl.act_rcv_time; rack->r_ctl.rack_per_of_gp_ss = rack_per_of_gp_ss; if (rack_hw_up_only) rack->r_up_only = 1; diff --git a/sys/netinet/tcp_stacks/tcp_rack.h b/sys/netinet/tcp_stacks/tcp_rack.h index 144b4fabf7eb..cac17d9aeb50 100644 --- a/sys/netinet/tcp_stacks/tcp_rack.h +++ b/sys/netinet/tcp_stacks/tcp_rack.h @@ -462,7 +462,6 @@ struct rack_control { uint64_t rc_gp_output_ts; /* chg*/ uint64_t rc_gp_cumack_ts; /* chg*/ struct timeval act_rcv_time; - struct timeval rc_last_time_decay; /* SAD time decay happened here */ uint64_t gp_bw; uint64_t init_rate; #ifdef NETFLIX_SHARED_CWND From nobody Mon Oct 27 22:49:39 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwTGW55HHz6FkrV; Mon, 27 Oct 2025 22:49:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwTGW4RXMz48jX; Mon, 27 Oct 2025 22:49:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761605379; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=m1OnMF4yTUM4fj9ek1RfEheSYFo6O/yOkyX/SqkRRFQ=; b=Z8L7HEuN0+I4C64SBF4RU1N5HD6FfKZvn7FCs/6y0U/TZMtdMruVkconYJY+u9D2fp+yUL YJIOe7KcPHA6xTs/zj1lc+rxLnn8pZG3N/t+nVKOyo2TPQWUrICzUjw1sFIEs+LtQXOU6s qpHGpEq5Ztioe5IKe/33OC5ryvkGCBCMBvxLy0j/+z/SzbRr2m9Ch+4CSrvAhic5YkNnHq d+cs+bALdQBUuI4RpEv7HjrIcaizlwnZb7Z+sezPzORjsuQyphl8lk1CQb09aaJoLHBxm9 475sFdPHMCEz8/UpOXLIlLZL3dMblL686xOFMzul8ajVY504oTE8y6G0FcLJ0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761605379; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=m1OnMF4yTUM4fj9ek1RfEheSYFo6O/yOkyX/SqkRRFQ=; b=jNVpfhhhn2jXdd5+vLSyJtnM++9rmBgEztYY7eFoMq5DgIqQEAvNXarTfGv3TtcIhtHGe/ D7C3T4PpmLDPoXlMhZIxxz9bG7fOewYJZlEZeBuFFQFxHZ/u+yIf7euobD7Njh6XOp7lmx Nyesi9DE3OCnl+0ndWSH+jKkwAQ9XpOIh/CLmJ+PH7NliEycdIj1mSMw4jJT31SZYJejpu S5jpMljyAHDYIsRVXmOuecVFqiw/H0Zjo/GL79RoS/TiTMO+66bDWnQDrp+fss4Xh2Gqgj jILK8K8Xc8KKvk7Qcnk4B25hQw7cMVdhL+qDNsMb/ODW+hXxd38rLJYytKV88A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761605379; a=rsa-sha256; cv=none; b=b4WUPK4EfCEo/tBVZftteA+bu9K2UnOp/ytlP5ggNlx6znM+UPdmFc5PdSqmgyG/19kzb9 BD1pZZ8zVENT6NtWUmZvNhkBqZ24WMPlOmVIJhwqQHxhji3PBDkq6VA503jddiiuhzgGkn XmJiTV9wlr1+ojXHqdsfISzY2z52OSSKFptncBVi21/7JSxDPsWhkW4fJqZoOGQS3LXQeS 2p3QxzzQRIZvUoe557FK669MOq+ZfbL70oiqL5HQtQQbCSgxU4FXAGIJJch/uMuZ/0clKg 3JqNf9pH8jzGuuZusEYoyM10EYxD03tro24lbNGLFKh/vZWs7LszHJHCdkBQ1w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwTGW3yq7z7w0; Mon, 27 Oct 2025 22:49:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59RMndEf017559; Mon, 27 Oct 2025 22:49:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59RMndfN017556; Mon, 27 Oct 2025 22:49:39 GMT (envelope-from git) Date: Mon, 27 Oct 2025 22:49:39 GMT Message-Id: <202510272249.59RMndfN017556@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: 6b81787240d8 - stable/15 - tcp: save progress timeout cause in connection end status List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 6b81787240d8abe5d0f8d8d9d9cb6b87c3ed99bf Auto-Submitted: auto-generated The branch stable/15 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=6b81787240d8abe5d0f8d8d9d9cb6b87c3ed99bf commit 6b81787240d8abe5d0f8d8d9d9cb6b87c3ed99bf Author: Peter Lei AuthorDate: 2025-10-24 19:47:12 +0000 Commit: Michael Tuexen CommitDate: 2025-10-27 22:44:40 +0000 tcp: save progress timeout cause in connection end status TCP stats are currently incremented for the persist and progress timeout conditions, but only the persist cause was saved in the connection end info status, which in turn is logged in the blackbox "connection end" event. Reviewed by: tuexen Sponsored by: Netflix, Inc. (cherry picked from commit 1a61a673a3700c0ebdb0c5847b5923d0e3641f89) --- sys/netinet/tcp_timer.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c index 3b9fe7a317b0..57c57666fa3a 100644 --- a/sys/netinet/tcp_timer.c +++ b/sys/netinet/tcp_timer.c @@ -513,9 +513,12 @@ tcp_timer_persist(struct tcpcb *tp) if (progdrop || (tp->t_rxtshift >= V_tcp_retries && (ticks - tp->t_rcvtime >= tcp_maxpersistidle || ticks - tp->t_rcvtime >= TCP_REXMTVAL(tp) * tcp_totbackoff))) { - if (!progdrop) + if (progdrop) { + tcp_log_end_status(tp, TCP_EI_STATUS_PROGRESS); + } else { TCPSTAT_INC(tcps_persistdrop); - tcp_log_end_status(tp, TCP_EI_STATUS_PERSIST_MAX); + tcp_log_end_status(tp, TCP_EI_STATUS_PERSIST_MAX); + } goto dropit; } /* From nobody Tue Oct 28 01:59:07 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwYT73xQDz6G4Zy; Tue, 28 Oct 2025 01:59:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwYT73QW8z3V1R; Tue, 28 Oct 2025 01:59:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616747; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=paU5mzAWGlVyOoIKJ67+PdGk+do5r7zrTcYdJd5dgCE=; b=JqXYPaPaK9tcjl+X+MYSv5xCaBEwk+iZRn5u3nkKA+VduvoLbvIVfihTthaJfWtR+GKqJ+ ABPrrSwAa4K3xPuXEJGsc817xBwQaWCOSM3ff01TYMrjLhFWpGqtcH6K2reHWCt9lefeN4 4F8+aff2FE/AbaDM/Q0UuyMheOVM4BPhfpwuiB5C7ljoZ0dTIVf/3EvqvkDphzPqHfK0kF cDeQX1/pqRMVI49UxJrgjyV/hIgdaavE7+UDkTzSyrZXG/zWLqWN3qvQA6WVL5s+O3v5wv eHjTGlCK2h8o1Gj0VwoxfIcYucdm8TplMxmFi5ciDKozVLn9E6R4IwZDlwnV4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616747; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=paU5mzAWGlVyOoIKJ67+PdGk+do5r7zrTcYdJd5dgCE=; b=SeQ1os18R66uKNLS3szlBJKGJ3C5e9soqeE67HzEyTuND03wVbmx6SNcBD2fh89SKGoU93 RaAPN7Z+IHZ96XgW2t0bOqY/QS/QKKhbQ2VCsFAhBrq8RVuL1Mrs9TVsZcoykREiWzp/U0 fvDfRPDiccQdOX8q03RldcwbGEdGrPSDFelhaNTTrQPKLUeMOT3nzOKNtEPP0ve6XHYULX CI6PAZWunwaYgVcYjiDKsjmnYBG6sXoemdBuQzfzB6GsAmJQPctylh+RJ9iy25+MOBEMb+ TwNIK7u2mi2ruijNVKh1bD6xy8iqvrirzM60/7HdNwYsVADICnjrxvGFqaSHXQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761616747; a=rsa-sha256; cv=none; b=Dn8qoatuEPG2L9ftrLvKEcZ7R52xJ3RT+0KRQtQlis796dlhh1v6fHRi5gorm58llV51vN cn8i6rUpsGhB9zFYOqEf2u2wUH3zmnUw34lZrJAFFD1w0FYnxc1iR6ZvxIGkWcyvwVSwSJ bqjSZpOjiE4rNrzLd+M+xEiMe73Kg//GiKqpUUkbv7N1kDVUycXJx2YbM4IG6mGUX1btZ3 5v3eYKDBn87/5x7rP+sq0puFF541rmfMQJzmnARNT7iCWRtOmE6IflF+svluiiroFRDLYo bRWcgAGflCzSZFGwhKBJABgfJK+EehEaGbMlkUEWBMhln8PFXa/5EnvCrZwKRw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwYT72kPmzTbq; Tue, 28 Oct 2025 01:59:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S1x7VZ071637; Tue, 28 Oct 2025 01:59:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S1x78I071634; Tue, 28 Oct 2025 01:59:07 GMT (envelope-from git) Date: Tue, 28 Oct 2025 01:59:07 GMT Message-Id: <202510280159.59S1x78I071634@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 9c148488a0f1 - releng/15.0 - UDP: let udp_pcblist() support UDP and UDP-Lite List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: 9c148488a0f15b440d0992bc3e01430f69c1e44e Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=9c148488a0f15b440d0992bc3e01430f69c1e44e commit 9c148488a0f15b440d0992bc3e01430f69c1e44e Author: Michael Tuexen AuthorDate: 2025-10-20 21:21:47 +0000 Commit: Colin Percival CommitDate: 2025-10-28 01:58:05 +0000 UDP: let udp_pcblist() support UDP and UDP-Lite Provide the IPPROTO_UDP in the arg2 parameter of udp_pcblist() and use this to determine the inpcbinfo. This allows the same function to be used in an upcoming commit to provide the list of pcbs for UDP-Lite just by providing IPPROTO_UDPLITE in the arg2 parameter. Approved by: re (cperciva) Reviewed by: rrs Differential Revision: https://reviews.freebsd.org/D53218 (cherry picked from commit be3c59ff508204dbab9e3616dc82ed7620f05d0c) (cherry picked from commit 365378184a46e2bcb30631c216a779df2ab8517a) --- sys/netinet/udp_usrreq.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c index cea8a916679b..0a89d91dfc37 100644 --- a/sys/netinet/udp_usrreq.c +++ b/sys/netinet/udp_usrreq.c @@ -787,7 +787,8 @@ udplite_ctlinput(struct icmp *icmp) static int udp_pcblist(SYSCTL_HANDLER_ARGS) { - struct inpcb_iterator inpi = INP_ALL_ITERATOR(&V_udbinfo, + struct inpcbinfo *pcbinfo = udp_get_inpcbinfo(arg2); + struct inpcb_iterator inpi = INP_ALL_ITERATOR(pcbinfo, INPLOOKUP_RLOCKPCB); struct xinpgen xig; struct inpcb *inp; @@ -799,7 +800,7 @@ udp_pcblist(SYSCTL_HANDLER_ARGS) if (req->oldptr == 0) { int n; - n = V_udbinfo.ipi_count; + n = pcbinfo->ipi_count; n += imax(n / 8, 10); req->oldidx = 2 * (sizeof xig) + n * sizeof(struct xinpcb); return (0); @@ -810,8 +811,8 @@ udp_pcblist(SYSCTL_HANDLER_ARGS) bzero(&xig, sizeof(xig)); xig.xig_len = sizeof xig; - xig.xig_count = V_udbinfo.ipi_count; - xig.xig_gen = V_udbinfo.ipi_gencnt; + xig.xig_count = pcbinfo->ipi_count; + xig.xig_gen = pcbinfo->ipi_gencnt; xig.xig_sogen = so_gencnt; error = SYSCTL_OUT(req, &xig, sizeof xig); if (error) @@ -838,9 +839,9 @@ udp_pcblist(SYSCTL_HANDLER_ARGS) * that something happened while we were processing this * request, and it might be necessary to retry. */ - xig.xig_gen = V_udbinfo.ipi_gencnt; + xig.xig_gen = pcbinfo->ipi_gencnt; xig.xig_sogen = so_gencnt; - xig.xig_count = V_udbinfo.ipi_count; + xig.xig_count = pcbinfo->ipi_count; error = SYSCTL_OUT(req, &xig, sizeof xig); } @@ -848,7 +849,7 @@ udp_pcblist(SYSCTL_HANDLER_ARGS) } SYSCTL_PROC(_net_inet_udp, UDPCTL_PCBLIST, pcblist, - CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, 0, + CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, IPPROTO_UDP, udp_pcblist, "S,xinpcb", "List of active UDP sockets"); From nobody Tue Oct 28 01:59:08 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwYT85H04z6G4Pr; Tue, 28 Oct 2025 01:59:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwYT843Wqz3VJn; Tue, 28 Oct 2025 01:59:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616748; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=e/Yq0rG+n24lg0i2tqet/cp2FlX5IO+wxcXcGZsDpk8=; b=ReckuvNNSsiOcaIDO4QpUvMbtuhgTccpVSBvCz3qOxFvLV8VIVZJ7Ir3x1eIlZ6N8k90JW GmA8op3E4rmHF4X1CDdnBFntdhrs12gervF2wDWh2HuaF7D9ZRbcHQSOIIok2Naczfsjos o5norYDOW5gdwxGD1alHWuTqijaejBmJ7fVIkbtk52lY6ScYRNdOYVOpFwYszB18+F+71I GQOExL5rhj/zpLBcDED15uC0f/XbH4kmqy09c+8xWdjU2qsfXVSEdK1l6AyAyx8xW0kjrX /DxGTg6iVShmT5TeWMtkIkbApMWYhpO/vokaP9DxWWFkES8yxQbXF/WxVw4M9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616748; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=e/Yq0rG+n24lg0i2tqet/cp2FlX5IO+wxcXcGZsDpk8=; b=xZLVQ+z9LGIu9raCID5+eLvyI3YDcCo24lH6MGUvOQpHeeD9T00zqO3u9gFy+KDHBH1vWQ wQ0Fdn1mHPspS2K8Im/1iShUFp2c3vjuOQ2fm6f6gv6nrKlWNwiZMx6Inp/Eqk+LhV0Ziv ZDVVp9NGiRD5pr5A6kpYE5T4L2n3F7DGS5fQeY77PREI9xilv6TLv1SepjC3vhkDVexAhl ZJaA04VKkjrWii/qUqcTmNlNvv29QuH1iUbAZ4UXY1CYfrvtxSxMG3GUFrFZSx8YRmb4Pm oHh0SHKmTC3gEUccPRcoC9VedLiBiYf6wjyoMha2RVIRabF4bYxkIsMgmbiRQQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761616748; a=rsa-sha256; cv=none; b=deQ0Vc+DnZ4gWGt4aJ8SBMh7qx7fuRv8ZfHtO4JjqG85vbwPUFqemN3UF+EKuXnHq48Phu AqY5yB9YsepLpip4EU5GV27gBGWD8srR5g0U++wMt6dvIWW3TQ69VRk+i8X39mXvitQmiz 9H0nHACA9h6kyN6wAY1i832ZHSsRoMQilmj5lnWUSZwf01VMNW6a/8ZluCd8EKJ1mz52q3 J8dg+2UHwJVDlMVvK4LqdrYMbP+ByCR9zudffy8bozeY9E55N5lukJJvhq07sIOB0AL58F tZn65Bz5D3KH51eYEa4fwQD1b/Q6yDfW8/+DW8jlAy6jmLQVSOkyS3V8JcXd+Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwYT83d7FzTvg; Tue, 28 Oct 2025 01:59:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S1x8Sn071670; Tue, 28 Oct 2025 01:59:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S1x87N071667; Tue, 28 Oct 2025 01:59:08 GMT (envelope-from git) Date: Tue, 28 Oct 2025 01:59:08 GMT Message-Id: <202510280159.59S1x87N071667@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 573270bf349d - releng/15.0 - UDP-Lite: export pcblist via sysctl interface List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: 573270bf349d97f5ba2eabe16f8697755588529f Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=573270bf349d97f5ba2eabe16f8697755588529f commit 573270bf349d97f5ba2eabe16f8697755588529f Author: Michael Tuexen AuthorDate: 2025-10-23 07:10:03 +0000 Commit: Colin Percival CommitDate: 2025-10-28 01:58:15 +0000 UDP-Lite: export pcblist via sysctl interface Export the list of pcbs for UDP-Lite to be consumed by sockstat and netstat. Approved by: re (cperciva) Reviewed by: Peter Lei, Nick Banks Differential Revision: https://reviews.freebsd.org/D53229 (cherry picked from commit be93b27483680c7e741b1627cc96a131bc99436c) (cherry picked from commit da7a90f0975030ae05379d59d5a7ec2420dcbd84) --- sys/netinet/in_proto.c | 2 ++ sys/netinet/udp_usrreq.c | 5 +++++ sys/netinet/udp_var.h | 1 + 3 files changed, 8 insertions(+) diff --git a/sys/netinet/in_proto.c b/sys/netinet/in_proto.c index db46da6022c5..42a6cf0b5810 100644 --- a/sys/netinet/in_proto.c +++ b/sys/netinet/in_proto.c @@ -108,6 +108,8 @@ SYSCTL_NODE(_net_inet, IPPROTO_ICMP, icmp, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, "ICMP"); SYSCTL_NODE(_net_inet, IPPROTO_UDP, udp, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, "UDP"); +SYSCTL_NODE(_net_inet, IPPROTO_UDPLITE, udplite, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, + "UDP-Lite"); SYSCTL_NODE(_net_inet, IPPROTO_TCP, tcp, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, "TCP"); #if defined(SCTP) || defined(SCTP_SUPPORT) diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c index 0a89d91dfc37..04d01099d54a 100644 --- a/sys/netinet/udp_usrreq.c +++ b/sys/netinet/udp_usrreq.c @@ -853,6 +853,11 @@ SYSCTL_PROC(_net_inet_udp, UDPCTL_PCBLIST, pcblist, udp_pcblist, "S,xinpcb", "List of active UDP sockets"); +SYSCTL_PROC(_net_inet_udplite, OID_AUTO, pcblist, + CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, IPPROTO_UDPLITE, + udp_pcblist, "S,xinpcb", + "List of active UDP-Lite sockets"); + #ifdef INET static int udp_getcred(SYSCTL_HANDLER_ARGS) diff --git a/sys/netinet/udp_var.h b/sys/netinet/udp_var.h index 3895f365db3c..3ae08fc0b8f0 100644 --- a/sys/netinet/udp_var.h +++ b/sys/netinet/udp_var.h @@ -147,6 +147,7 @@ void kmod_udpstat_inc(int statnum); } while (0) SYSCTL_DECL(_net_inet_udp); +SYSCTL_DECL(_net_inet_udplite); VNET_DECLARE(struct inpcbinfo, udbinfo); VNET_DECLARE(struct inpcbinfo, ulitecbinfo); From nobody Tue Oct 28 01:59:09 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwYTB0tHWz6G4Ps; Tue, 28 Oct 2025 01:59:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwYT94hcSz3VDX; Tue, 28 Oct 2025 01:59:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616749; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4xqVM7KIw4eDsTBGc5IuWJb+x2KlfBYatr5NdQ4PEIw=; b=gl4wWVA81afyFV1XnNf20IJRMfb+ttq9DeepBoUOhfaiyAQrTA11WoVb8Yb3u1FD5y0hDu pPq1g2NwCLY/SuhiZtcJu/6exZOqQPJjMGqqP+5CM8eYZiHW/rlEZHcwCs38nWYrYJ32au jy+lVKjAUub4D2lZyWd2QIzUU5ojhvtqxDjGjjq3uHH3NRKWQPSRe91bBxE2MmJpy7J8Xq fA2vFBbCLnMUqJypySx3tCQB8d2UmPdlkTOcEGxxQ5EFtpnj167LCazOYdhGzP2sZoD4j3 /7AF6kxZl6O7Gcb/MSS8N6jZKuFXDZ4+nGq1FMJHsWkVkQu5InK0ZM+iuoRsdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616749; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4xqVM7KIw4eDsTBGc5IuWJb+x2KlfBYatr5NdQ4PEIw=; b=kFpD/ZEsUVRBPh3+wrsTU544hwTSdVpVx4zeB+++ZTikWJLkppyQZi0oYjBgTJPt4tBQqX OokLEAomiiV88f5Ina7tWP8r8QXokKkpyydSNKrUHpUugyzwSUedzVbgoIjuVicT+TMYwo ITCHARJXbDfwwToU8eyY/BcRlvBqvsQvskqlLOU1jKn++t4uALfmeJYuVgEVJ+xEq05G79 5CFQim+8Gu/Lrh3BkBgVHO1zas/9cUUGNkstj7vBBUqpK3wBxhpszDgeRjFF8fjBGUhC1e MuL2jYFco65VSDetPIMcuKemsoJiST227LrQrithX5RBO2IJI2sb58PyACFHjA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761616749; a=rsa-sha256; cv=none; b=FsnEoAejHub2S0hMK77mZ3eMatjAOI36JZcYym1mdbc0ZO28ONCFsLVIR7JGF4V61duWwt OAfU5OSPVolo92r0Mq4H8SDIGVAc5Vz/vN3hwXyXd89OWcnEhS8d5BoQycNigmRzpk8CHL fZXXj2L5Y870MeAz5sxFDUClxg+D656vXTc2mA4PssaEB2Iyz46GFMOxxvizmUZDp0DrWB zdHHqUoFafvfK13AHHtI00U16bmVOn5xlHq22ryE5p0K9/9lX58TEN81a7n9zMATXH7B7s HWcp4r4FT/xxixAJeYQV87M9u0ZmkgRFbGQ7q0ApN1ZcuiATeowZ5cJGGfM8ig== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwYT94GvFzDDP; Tue, 28 Oct 2025 01:59:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S1x98p071703; Tue, 28 Oct 2025 01:59:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S1x9Y9071699; Tue, 28 Oct 2025 01:59:09 GMT (envelope-from git) Date: Tue, 28 Oct 2025 01:59:09 GMT Message-Id: <202510280159.59S1x9Y9071699@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 72016759dabd - releng/15.0 - netstat: add support for UDP-Lite endpoints List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: 72016759dabd203eeaaf47dba534f9df5ce801e4 Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=72016759dabd203eeaaf47dba534f9df5ce801e4 commit 72016759dabd203eeaaf47dba534f9df5ce801e4 Author: Michael Tuexen AuthorDate: 2025-10-23 07:15:22 +0000 Commit: Colin Percival CommitDate: 2025-10-28 01:58:18 +0000 netstat: add support for UDP-Lite endpoints With this patch UDP-Lite endpoints are also shown per default. Approved by: re (cperciva) Reviewed by: Nick Banks Differential Revision: https://reviews.freebsd.org/D53252 (cherry picked from commit c2b08c13c20d44c3368bcbf738624e5fac461314) (cherry picked from commit 372b60422689b2bfb2ccf3ab22847eb54dae0b11) --- usr.bin/netstat/inet.c | 37 ++++++++++++++++++++++++++----------- usr.bin/netstat/main.c | 4 ++++ 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/usr.bin/netstat/inet.c b/usr.bin/netstat/inet.c index 5f36b1599cad..dee245b63a87 100644 --- a/usr.bin/netstat/inet.c +++ b/usr.bin/netstat/inet.c @@ -83,7 +83,7 @@ static void inetprint(const char *, struct in_addr *, int, const char *, int, const int); #endif #ifdef INET6 -static int udp_done, tcp_done, sdp_done; +static int udp_done, udplite_done, tcp_done, sdp_done; #endif /* INET6 */ static int @@ -100,6 +100,9 @@ pcblist_sysctl(int proto, const char *name, char **bufp) case IPPROTO_UDP: mibvar = "net.inet.udp.pcblist"; break; + case IPPROTO_UDPLITE: + mibvar = "net.inet.udplite.pcblist"; + break; default: mibvar = "net.inet.raw.pcblist"; break; @@ -220,13 +223,20 @@ protopr(u_long off, const char *name, int af1, int proto) return; else udp_done = 1; +#endif + break; + case IPPROTO_UDPLITE: +#ifdef INET6 + if (udplite_done != 0) + return; + else + udplite_done = 1; #endif break; } if (!pcblist_sysctl(proto, name, &buf)) return; - if (istcp && (cflag || Cflag)) { fnamelen = strlen("Stack"); cnamelen = strlen("CC"); @@ -318,18 +328,18 @@ protopr(u_long off, const char *name, int af1, int proto) "Proto", "Listen", "Local Address"); else if (Tflag) xo_emit((Aflag && !Wflag) ? - "{T:/%-5.5s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-18.18s} {T:/%s}" : + "{T:/%-9.9s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-18.18s} {T:/%s}" : ((!Wflag || af1 == AF_INET) ? - "{T:/%-5.5s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-22.22s} {T:/%s}" : - "{T:/%-5.5s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-45.45s} {T:/%s}"), + "{T:/%-9.9s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-22.22s} {T:/%s}" : + "{T:/%-9.9s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-45.45s} {T:/%s}"), "Proto", "Rexmit", "OOORcv", "0-win", "Local Address", "Foreign Address"); else { xo_emit((Aflag && !Wflag) ? - "{T:/%-5.5s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-18.18s} {T:/%-18.18s}" : + "{T:/%-9.9s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-18.18s} {T:/%-18.18s}" : ((!Wflag || af1 == AF_INET) ? - "{T:/%-5.5s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-22.22s} {T:/%-22.22s}" : - "{T:/%-5.5s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-45.45s} {T:/%-45.45s}"), + "{T:/%-9.9s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-22.22s} {T:/%-22.22s}" : + "{T:/%-9.9s} {T:/%-6.6s} {T:/%-6.6s} {T:/%-45.45s} {T:/%-45.45s}"), "Proto", "Recv-Q", "Send-Q", "Local Address", "Foreign Address"); if (!xflag && !Rflag) @@ -382,9 +392,14 @@ protopr(u_long off, const char *name, int af1, int proto) vchar = ((inp->inp_vflag & INP_IPV4) != 0) ? "4" : ""; if (istcp && (tp->t_flags & TF_TOE) != 0) - xo_emit("{:protocol/%-3.3s%-2.2s/%s%s} ", "toe", vchar); - else - xo_emit("{:protocol/%-3.3s%-2.2s/%s%s} ", name, vchar); + xo_emit("{:protocol/%-3.3s%-6.6s/%s%s} ", "toe", vchar); + else { + int len; + + len = max (2, 9 - strlen(name)); + xo_emit("{:protocol/%.7s%-*.*s/%s%s} ", name, len, len, + vchar); + } if (Lflag) { char buf1[33]; diff --git a/usr.bin/netstat/main.c b/usr.bin/netstat/main.c index e8f657006982..79830049948a 100644 --- a/usr.bin/netstat/main.c +++ b/usr.bin/netstat/main.c @@ -83,6 +83,8 @@ static struct protox { tcp_stats, NULL, "tcp", 1, IPPROTO_TCP }, { -1 , N_UDPSTAT, 1, protopr, udp_stats, NULL, "udp", 1, IPPROTO_UDP }, + { -1, -1, 1, protopr, + NULL, NULL, "udplite", 1, IPPROTO_UDPLITE }, #ifdef SCTP { -1, N_SCTPSTAT, 1, sctp_protopr, sctp_stats, NULL, "sctp", 1, IPPROTO_SCTP }, @@ -131,6 +133,8 @@ static struct protox ip6protox[] = { tcp_stats, NULL, "tcp", 1, IPPROTO_TCP }, { -1 , N_UDPSTAT, 1, protopr, udp_stats, NULL, "udp", 1, IPPROTO_UDP }, + { -1, -1, 1, protopr, + NULL, NULL, "udplite", 1, IPPROTO_UDPLITE }, { -1 , N_IP6STAT, 1, protopr, ip6_stats, ip6_ifstats, "ip6", 1, IPPROTO_RAW }, { -1 , N_ICMP6STAT, 1, protopr, From nobody Tue Oct 28 01:59:10 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwYTC05wHz6G4b1; Tue, 28 Oct 2025 01:59:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwYTB6SnTz3V8n; Tue, 28 Oct 2025 01:59:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616750; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VClE2TzjvH8+ywVj0tjEMpFdbSqQBA7b6xxJSL3B96g=; b=UPc8UWzTPNFhqwaiOXiZAvdd3l/IJ+J7oLgQ0Iq+TWX14LsLp+lWXbr9hFby5gPEjMUw6y ID0upQ4e4UXE98Y7DRAAV7h7ntEuWMWWB9145d+9GzJnaFbcbRgwMH1Ex+Ak07r+8uKk9C twiI7YBZxTZyOOVokN3QEYtmpRyeL5T7SYdyFHvmCVzu/rH+yj7JlMjd0LCjp9CQ6zbxPK gIUPwT6DMk3+vNkctlqnynDN1kMB/d6Jp7TJ3eHPWwxvPvARZKcvU1oAyKpMSxbNJu+FmD Yu+gHP8yqgyf9MXMuOPNCQ2ubDfK5CRrAeQNv6R0xdb1dpc70dp6CRM0rpF9xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616750; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VClE2TzjvH8+ywVj0tjEMpFdbSqQBA7b6xxJSL3B96g=; b=PbGCjkIsD88vhxKZlqy+BJFzsLoZgFVKA1BDFi3DyJ/2gRTiWbkVDA+yiEQ5Jg5WPQ96Eb xpMdzk7rwbiznLwez/j5WAu6Kn6xde+agJfxNPWC9bxKB6cKmpFiVUXZZ5lhoToMUgjC2J R08xMMMpBM0ZBmhRHFBdgH8i7qNpjWfKmS1DG3XdosjeyG3StJRTHwj8AGP2L64k6rlcYb bZhLm20WRdxuxltLoS8nZtbgBb2zxUITJnMmGXWzhOqzutTOdhSdgD1nxqncDhqi1nJtN1 vsRP2plHoMqCjyBFN6pIBQMJCrEzk8YCQ7YmIeZveBhHE8fa+QYfMgjsIr2pug== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761616750; a=rsa-sha256; cv=none; b=jHoF+SWV/frzT6izbC/Zh9Qy50Z9ekBpgdxm8s0GMuo4y8GPD0FRNn08h+H2kVdBylzy3o Gc5JHFhvf5oqat3ZB2xIJ3mjlShdxY9A7PkvlzMO61UWkq/JpX4/ZDR5AMYwFegCSHbHjO +0q9DdN9IwqEzyxEQ1xE9tyxhVWez1f/XFaiYKKXM9o6TaZfUm/x/KdYuj80ilN9zRXPjG C+n5jFSq+F70BjVLAaPWi2FuijG9pd+cMoWWvs+kfsK37yoAAsAGxtWrOUz4rp9EmQk8dZ Iz/p7ZMiWN8WzIsJc1W1Xfpd5UZRRjZnphR6a02KFl3wpXOT4yRCIesUB3+H5A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwYTB5hxVzTdD; Tue, 28 Oct 2025 01:59:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S1xA1X071741; Tue, 28 Oct 2025 01:59:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S1xAN3071738; Tue, 28 Oct 2025 01:59:10 GMT (envelope-from git) Date: Tue, 28 Oct 2025 01:59:10 GMT Message-Id: <202510280159.59S1xAN3071738@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 978615d7bf7c - releng/15.0 - sockstat: add support for UDP-Lite endpoints List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: 978615d7bf7cffdd1fc1fea268adbf008a2be747 Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=978615d7bf7cffdd1fc1fea268adbf008a2be747 commit 978615d7bf7cffdd1fc1fea268adbf008a2be747 Author: Michael Tuexen AuthorDate: 2025-10-23 07:12:32 +0000 Commit: Colin Percival CommitDate: 2025-10-28 01:58:20 +0000 sockstat: add support for UDP-Lite endpoints With this patch UDP-Lite endpoints are also show per default. Approved by: re (cperciva) Reviewed by: Peter Lei, Nick Banks Relnotes: yes Differential Revision: https://reviews.freebsd.org/D53230 (cherry picked from commit f48c6390dd5a01ab2b33f26ee50f4e8cbe8ae737) (cherry picked from commit c10317b0c455be506ae62b391e5491e1b75914aa) --- usr.bin/sockstat/main.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/usr.bin/sockstat/main.c b/usr.bin/sockstat/main.c index abb73acafc2f..07663e54534d 100644 --- a/usr.bin/sockstat/main.c +++ b/usr.bin/sockstat/main.c @@ -108,7 +108,8 @@ static bool show_path_state = false; /* * Default protocols to use if no -P was defined. */ -static const char *default_protos[] = {"sctp", "tcp", "udp", "divert" }; +static const char *default_protos[] = {"sctp", "tcp", "udp", "udplite", + "divert" }; static size_t default_numprotos = nitems(default_protos); static int *protos; /* protocols to use */ @@ -626,6 +627,10 @@ gather_inet(int proto) varname = "net.inet.udp.pcblist"; protoname = "udp"; break; + case IPPROTO_UDPLITE: + varname = "net.inet.udplite.pcblist"; + protoname = "udplite"; + break; case IPPROTO_DIVERT: varname = "net.inet.divert.pcblist"; protoname = "div"; @@ -674,6 +679,7 @@ gather_inet(int proto) protoname = xtp->t_flags & TF_TOE ? "toe" : "tcp"; break; case IPPROTO_UDP: + case IPPROTO_UDPLITE: case IPPROTO_DIVERT: xip = (struct xinpcb *)xig; if (!check_ksize(xip->xi_len, struct xinpcb)) From nobody Tue Oct 28 01:59:11 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwYTD2Rmhz6G4Xt; Tue, 28 Oct 2025 01:59:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwYTC6S9Lz3VVp; Tue, 28 Oct 2025 01:59:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616751; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HA/db6Hhdb6VumjO6laFeWcF8QPkIt0MCgwRTuserG4=; b=wlzIYMjblh6iamiWqEM6nv+cId8AB47LZI0Ep7Spci4Cwv9z2to16jKpN9yZasQaZ4is4i iJXPIfn9j9EA2y2pUbnK9ETW6qJZ9aRnqCWtp7laVc9okn3OVUnWXpIuEUHbN7JoaZVC0C 9UxovLY5vrtsMpdU9egP+cKtBojNd1Iu4toxUgQBZtwiIEGwFYApNDlOGLJgM/59TiyFvi fPBnpkXL+RLoaEDEyW6YhNyh5gKeu7kWwTgf+XLnff/ZPepifmlztDurkx94rm5EB5c+1J mh0cDHM5o/4a36BWCBbdKXI6i7AyHKImzmMjl9h/kSBsyEc3ww6w3K5yY3NQpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616751; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HA/db6Hhdb6VumjO6laFeWcF8QPkIt0MCgwRTuserG4=; b=kAskL6Rv14YUXyfB9opnnrgMOh6O2NFLLYmwevRM4NmAIlQOzlLbyrzWW2uzVB9/V77lLf IzZ+TdxnvSrq0WUk/ki2hXix+UWhRrI9O0Z8fut+JNUfmZP4ItAnBS1fzlPypKRKfLModS 4w/CeeHijgA7OVvFaCAbZEY++52BYoMr4TZrVSzjW8OGXjmtv3wSZGNMfTT+Z0flQe3qZb OhlhcZAWVFy2gBSrCJbmSPM3upeOGobt3ai0dJhYf2764Cg7fp15Y2NbFIBP7khbkxsTEA ecchQt48TZFrAL+ip1GWowH5jHuwJAU/WzYSnVBa6K3VlPAK4tBhO8gZjGy2Uw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761616751; a=rsa-sha256; cv=none; b=mCyrykMv0KnLGyHZ22sbcRYcFDR4heT5ibpMU7vNngSvabsi5OM9cXyxUX+sKhTGinKf7A CTvyJls7WPbDboB1/S1hjwxK1Z1zjjMb1+aDfRlz6IosmUGX06vpzayhwwoUVfIXm/IKeu Lfp8dMqqeAO87s+YfLYE/cArQFouDJNRh/qTyOFkIDtRax1ZtNl+f4a1ALa6PiXclAE7qn wT14XydGZI+g/soLgbkH/zCXyzh45E44RHdpA/klJeKCoM2ffmo7op7b6dCKySMdR17ppz k6GZoX9Tj4TSL0dQhB36zJaMJGkSpBKzXUkrNqNPjhVv+JpcFuLdT+6D1egZiA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwYTC645fzTbr; Tue, 28 Oct 2025 01:59:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S1xBhU071775; Tue, 28 Oct 2025 01:59:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S1xBaj071772; Tue, 28 Oct 2025 01:59:11 GMT (envelope-from git) Date: Tue, 28 Oct 2025 01:59:11 GMT Message-Id: <202510280159.59S1xBaj071772@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: d9f8e8aa11a6 - releng/15.0 - tcp over udp: don't copy more bytes than avaiable List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: d9f8e8aa11a611a8d5d7357c8b732aa07cb2b9e0 Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=d9f8e8aa11a611a8d5d7357c8b732aa07cb2b9e0 commit d9f8e8aa11a611a8d5d7357c8b732aa07cb2b9e0 Author: Michael Tuexen AuthorDate: 2025-10-23 07:24:09 +0000 Commit: Colin Percival CommitDate: 2025-10-28 01:58:23 +0000 tcp over udp: don't copy more bytes than avaiable When copying the data in the first mbuf to get rid of the UDP header, use the correct length. It was copying too much (8 bytes, the length of the UDP header). This only applies to handling TCP over UDP packets. The support for TCP over UDP is disabled by default. Approved by: re (cperciva) Reported by: jtl Reviewed by: Peter Lei Sponsored by: Netflix, Inc. (cherry picked from commit bfda98a42027417b2fa74738c63327532013e93b) (cherry picked from commit c566953da83f0faf8e335aa7a5e54e48107c7e5a) --- sys/netinet/tcp_subr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index c817c79881d6..b6f428b279b3 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -607,7 +607,7 @@ tcp_recv_udp_tunneled_packet(struct mbuf *m, int off, struct inpcb *inp, } } m->m_pkthdr.tcp_tun_port = port = uh->uh_sport; - bcopy(th, uh, m->m_len - off); + bcopy(th, uh, m->m_len - off - sizeof(struct udphdr)); m->m_len -= sizeof(struct udphdr); m->m_pkthdr.len -= sizeof(struct udphdr); /* From nobody Tue Oct 28 01:59:12 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwYTF3MMVz6G4VK; Tue, 28 Oct 2025 01:59:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwYTF06QGz3VW0; Tue, 28 Oct 2025 01:59:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616753; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dDM+Q7zG0Pq98SXZ4+v+0KXyHXUa9B7LTaS4/MYHGzY=; b=fBuvACr8cxceOxsm0C2uppm4ktySZZIaAsQG6dM+ViEiP317JhJT89PYBX6if5OFIlQYk7 NLwWnzwoTllZU8XegsBnR2x2/oac3ePuMoU94GbUZUcYq0Cvs4U30PNoIHKsg958zNDU0y Wzlz7Bc/nEmYNXe34RSXQYRptC6727WTLq9YLBoJqwl3r2idXltirlDs3s8a2eZLA79Zmb nxke+WycEBcqJzHs2BSkOMG90omxGcHJIavkvwrP4aBhn2DV3FDVG58zg4hiZbmphVdvZA w7GdBgTUV/nWmPdkp/uat6mYSjttKM3jd59L/2rB7Hn1kg+Ez7elHHx8OX0tdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616753; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dDM+Q7zG0Pq98SXZ4+v+0KXyHXUa9B7LTaS4/MYHGzY=; b=qfutC3hYx4snFXC+Lgpw6eEqw3KIMzCxS2qOPcWX0ytrmKIReOWR84MjOf9uS0lR2yYl6A NVa4JW8fT/TfuVRzvWZluMxy8cA0QICOCB9VMMGxjyP3SkF4whvB9rTrFYkfEQ419Qy8rj Lf07MsRVPcNuJ6Kol1h666Fp/R47uCx5lPngDkMjT+wbR9Ubli07cinsvNt/RDe0u8zjKk 7Tbq4P/HCAW6nJq/Z7pEpWuK93mUyRUMxsQSHxFaI5jI0KvyeKRpMMxg9Q0t/T5HTO+Kwa 3k7z9LDXTgMsV4u6OL9TnAYnAUe8iYdwBX8U3HRTsGwYb051+qBVPjA4DK4tfA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761616753; a=rsa-sha256; cv=none; b=Hybum4bYqqCQORg5yTyClGYGlI+8+kjOCptz0QjLt8NBnO+u/HIM7kibDmEKcAEFy0pTvK 5GFy0v18/aPZ8G6T1K2y7qRNn/a9Byo5VbqocDU/ADoin8ZhAsCPfjGvoBrJahbK3g2wtp g+k+STnFn6nbN+TNkarVOIMoFvyWR7xhY28q24ULYMQK3tVyH/2DZ6RWEpD/ItaKi5S3kY KLal+QlmbTxZRSn0u91rcntWzDJuKewzU+0FuK8knTzsW+sqMQamWtbEcMCsw9+E+U3pQk 19S2Z/7M8mUB2213bim3xFFULCkudjhoGNKdEClCTaREDWHh05XTXW8BlCVukw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwYTD6h3BzTTp; Tue, 28 Oct 2025 01:59:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S1xChA071807; Tue, 28 Oct 2025 01:59:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S1xCLS071804; Tue, 28 Oct 2025 01:59:12 GMT (envelope-from git) Date: Tue, 28 Oct 2025 01:59:12 GMT Message-Id: <202510280159.59S1xCLS071804@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 52245427a597 - releng/15.0 - find: fix pathnames printed by the SIGINFO handler List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: 52245427a5975d7b610fdb2271626dc82f607046 Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=52245427a5975d7b610fdb2271626dc82f607046 commit 52245427a5975d7b610fdb2271626dc82f607046 Author: Alan Somers AuthorDate: 2025-10-19 15:53:50 +0000 Commit: Colin Percival CommitDate: 2025-10-28 01:58:26 +0000 find: fix pathnames printed by the SIGINFO handler Don't duplicate the last component. Approved by: re (cperciva) PR: 290362 Reported by: John F. Carr Fixes: d06a00963b7 Reviewed by: jilles, Goran Mekić Pull Request: https://github.com/freebsd/freebsd-src/pull/1878 (cherry picked from commit f6d767fe862964f704baf4eb388a30ed8227bb65) (cherry picked from commit be122b46be2d56de3e354d3f89af7e8e9c88f94a) --- usr.bin/find/find.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.bin/find/find.c b/usr.bin/find/find.c index 8b24ecd6a306..2247ae86a94b 100644 --- a/usr.bin/find/find.c +++ b/usr.bin/find/find.c @@ -211,7 +211,7 @@ find_execute(PLAN *plan, char *paths[]) } if (showinfo) { - fprintf(stderr, "Scanning: %s/%s\n", entry->fts_path, entry->fts_name); + fprintf(stderr, "Scanning: %s\n", entry->fts_path); fprintf(stderr, "Scanned: %zu\n\n", counter); showinfo = 0; } From nobody Tue Oct 28 01:59:14 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwYTH1n5Rz6G4Pw; Tue, 28 Oct 2025 01:59:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwYTG5qMnz3VFS; Tue, 28 Oct 2025 01:59:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616754; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=i/bhNzSH2IqPlHZzyNU3xurZldXUPqOo5pKs56KLFNg=; b=KbLS1p09KcQou30shgJvvNW7vat0TSeUYa+oCK76lxOMjEmlA6CkMrSWKB4PhH2ZK7UAZN cJ1Sp0mLvUOWx+m/LOa11inusahkZbhQaVPuNubvImDXByLeFD0aM4acxnGUje4mP0gUQX 81Lc28oLhQWuWmfuASop6aQ4miZZ81rG5DVbE4gUs7Qa2oos7TgbpIxoeUcGB7VoiDsp0k NKF6Zjfvho4wz3Mv3FZ4G4cpWpsvUvXBLphaASSbXwH9JrjWiITsTNcNTdWG9zwzskzPEZ 0pjjWCyom6+M0dNSiCYuI8m9irxcyS5ZZFAphTOH93AWCsRTFukc+73koucXlA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616754; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=i/bhNzSH2IqPlHZzyNU3xurZldXUPqOo5pKs56KLFNg=; b=w7Zb8K3UFVa9Q3+NYnXyvp9qk0sBFha4YSBlKNmWPlaRvAeO0+x/4i6OVCQg0Q9XkCxt4z f/Hd11mBKdupK1CAtmGwK6AVk+0rAiJQjKn1fuG+iJ50k2bvXiY3DdK1WHfQt1bTna6hNk HUL5dMCz+84PLR5WyaCvMY6R+Wl9W6cfYiQs8bYuhksvNBM3H1/QL3xNLWeRRD1KpyrM62 8PjVtHjwn4Zz6zz+iW6hKlP6rO2EiMEZ1yBVOpAqOOXZtRcyYaYzRc+UYSBeds1dX+0Z1X jzaocBRVteizfZbXl7D1C8EeRcDWQ0xXQVGLtaENMyZy0b863vxojBjz4Kq5zw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761616754; a=rsa-sha256; cv=none; b=wNzRrOjKLGL6iYeP9yrVkZUkEac6Dw7hJHwm8RcfCvDSODd4/Pc6NwgeLmxluE1PoeLRll 0xzSKZJ7NeM9VZ5aOngZOdR2HUSC3aIort1pTpC0u76NEzjcxn6DRtw5aaVWvJnQAZF4MW +yxrlas+hwmqnjDcs5pmcWyzbl+OygrZjC9AhwLIrlp+6XFqqssRXD7pTOGMwstpQZALs8 08u9yHBDD90Ib42lexem784VP/wwMJqOPzAyBk7YZTEBtqY21LlI0J8Y2OoGNJC7Z5oa4o gQTWmQiFwNPXO/LXc2DDDDinAqtSbJSzv9zuaFuK4kbqrmDFrbQpGUraDbh9hw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwYTG58CpzTvj; Tue, 28 Oct 2025 01:59:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S1xE5W071841; Tue, 28 Oct 2025 01:59:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S1xE5h071836; Tue, 28 Oct 2025 01:59:14 GMT (envelope-from git) Date: Tue, 28 Oct 2025 01:59:14 GMT Message-Id: <202510280159.59S1xE5h071836@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 30459f58e864 - releng/15.0 - iwlwifi: update Intel's mvm/mld drivers List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: 30459f58e86471baa550dea56093e822516abc54 Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=30459f58e86471baa550dea56093e822516abc54 commit 30459f58e86471baa550dea56093e822516abc54 Author: Bjoern A. Zeeb AuthorDate: 2025-10-17 17:27:49 +0000 Commit: Colin Percival CommitDate: 2025-10-28 01:58:29 +0000 iwlwifi: update Intel's mvm/mld drivers This version is based on git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git e5f0a698b34ed76002dc5cff3804a61c80233a7a ( tag: v6.17 ). Some of the changes we reported upstream got incorporated in this (or the v6.16) release. This also includes a change from iwlwifi-next.git::next for missing symbols iwl_mvm_v3_rate_from_fw() and iwl_mvm_v3_rate_to_fw() were originally comitted to mvm/rs.[ch] which we do not have. That left us with unresolved symbols. For the never comitted v6.16 driver update I had started to piece these together but they have been migrated out to utils.c so take them from there until the next release hopefully ships this change. Approved by: re (cperciva) Obtained from: git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next.git branch next, 1b49af228594452206d5c50a33b6a341428edb63 (cherry picked from commit 6b627f88584ce13118e0a24951b503c0b1f2d5a7) (cherry picked from commit e89beeee25c3d08805e19cfc085a6c5b2f762a21) --- sys/contrib/dev/iwlwifi/cfg/22000.c | 397 +-- sys/contrib/dev/iwlwifi/cfg/7000.c | 173 +- sys/contrib/dev/iwlwifi/cfg/8000.c | 92 +- sys/contrib/dev/iwlwifi/cfg/9000.c | 168 +- sys/contrib/dev/iwlwifi/cfg/ax210.c | 297 +-- sys/contrib/dev/iwlwifi/cfg/bz.c | 198 +- sys/contrib/dev/iwlwifi/cfg/dr.c | 93 + sys/contrib/dev/iwlwifi/cfg/rf-fm.c | 51 + sys/contrib/dev/iwlwifi/cfg/rf-gf.c | 73 + sys/contrib/dev/iwlwifi/cfg/rf-hr.c | 89 + sys/contrib/dev/iwlwifi/cfg/rf-jf.c | 111 + sys/contrib/dev/iwlwifi/cfg/rf-pe.c | 16 + sys/contrib/dev/iwlwifi/cfg/rf-wh.c | 15 + sys/contrib/dev/iwlwifi/cfg/sc.c | 201 +- sys/contrib/dev/iwlwifi/fw/acpi.c | 253 +- sys/contrib/dev/iwlwifi/fw/acpi.h | 60 +- sys/contrib/dev/iwlwifi/fw/api/alive.h | 29 +- sys/contrib/dev/iwlwifi/fw/api/binding.h | 2 - sys/contrib/dev/iwlwifi/fw/api/coex.h | 29 +- sys/contrib/dev/iwlwifi/fw/api/commands.h | 31 +- sys/contrib/dev/iwlwifi/fw/api/context.h | 9 +- sys/contrib/dev/iwlwifi/fw/api/d3.h | 196 +- sys/contrib/dev/iwlwifi/fw/api/datapath.h | 11 +- sys/contrib/dev/iwlwifi/fw/api/dbg-tlv.h | 13 +- sys/contrib/dev/iwlwifi/fw/api/debug.h | 48 +- sys/contrib/dev/iwlwifi/fw/api/dhc.h | 230 ++ sys/contrib/dev/iwlwifi/fw/api/location.h | 179 +- sys/contrib/dev/iwlwifi/fw/api/mac-cfg.h | 394 ++- sys/contrib/dev/iwlwifi/fw/api/mac.h | 14 +- sys/contrib/dev/iwlwifi/fw/api/nvm-reg.h | 62 +- sys/contrib/dev/iwlwifi/fw/api/offload.h | 12 +- sys/contrib/dev/iwlwifi/fw/api/phy-ctxt.h | 9 +- sys/contrib/dev/iwlwifi/fw/api/phy.h | 25 +- sys/contrib/dev/iwlwifi/fw/api/power.h | 171 +- sys/contrib/dev/iwlwifi/fw/api/rs.h | 135 +- sys/contrib/dev/iwlwifi/fw/api/rx.h | 54 +- sys/contrib/dev/iwlwifi/fw/api/scan.h | 46 +- sys/contrib/dev/iwlwifi/fw/api/sta.h | 1 + sys/contrib/dev/iwlwifi/fw/api/stats.h | 17 +- sys/contrib/dev/iwlwifi/fw/api/tdls.h | 12 +- sys/contrib/dev/iwlwifi/fw/api/time-event.h | 60 +- sys/contrib/dev/iwlwifi/fw/api/tx.h | 105 +- sys/contrib/dev/iwlwifi/fw/dbg.c | 350 ++- sys/contrib/dev/iwlwifi/fw/dbg.h | 20 +- sys/contrib/dev/iwlwifi/fw/debugfs.c | 50 +- sys/contrib/dev/iwlwifi/fw/dhc-utils.h | 75 + sys/contrib/dev/iwlwifi/fw/dump.c | 44 +- sys/contrib/dev/iwlwifi/fw/error-dump.h | 9 +- sys/contrib/dev/iwlwifi/fw/file.h | 45 +- sys/contrib/dev/iwlwifi/fw/img.c | 2 + sys/contrib/dev/iwlwifi/fw/img.h | 12 +- sys/contrib/dev/iwlwifi/fw/init.c | 24 +- sys/contrib/dev/iwlwifi/fw/paging.c | 6 +- sys/contrib/dev/iwlwifi/fw/pnvm.c | 79 +- sys/contrib/dev/iwlwifi/fw/pnvm.h | 5 +- sys/contrib/dev/iwlwifi/fw/regulatory.c | 200 +- sys/contrib/dev/iwlwifi/fw/regulatory.h | 90 +- sys/contrib/dev/iwlwifi/fw/rs.c | 137 +- sys/contrib/dev/iwlwifi/fw/runtime.h | 19 +- sys/contrib/dev/iwlwifi/fw/smem.c | 4 +- sys/contrib/dev/iwlwifi/fw/uefi.c | 225 +- sys/contrib/dev/iwlwifi/fw/uefi.h | 93 +- sys/contrib/dev/iwlwifi/iwl-config.h | 508 ++-- sys/contrib/dev/iwlwifi/iwl-csr.h | 48 +- sys/contrib/dev/iwlwifi/iwl-dbg-tlv.c | 20 +- sys/contrib/dev/iwlwifi/iwl-debug.h | 14 +- sys/contrib/dev/iwlwifi/iwl-drv.c | 337 ++- sys/contrib/dev/iwlwifi/iwl-drv.h | 9 +- sys/contrib/dev/iwlwifi/iwl-fh.h | 30 +- sys/contrib/dev/iwlwifi/iwl-io.c | 42 +- sys/contrib/dev/iwlwifi/iwl-io.h | 23 +- sys/contrib/dev/iwlwifi/iwl-nvm-parse.c | 246 +- sys/contrib/dev/iwlwifi/iwl-nvm-parse.h | 16 +- sys/contrib/dev/iwlwifi/iwl-nvm-utils.c | 17 +- sys/contrib/dev/iwlwifi/iwl-op-mode.h | 106 +- sys/contrib/dev/iwlwifi/iwl-prph.h | 15 +- sys/contrib/dev/iwlwifi/iwl-trans.c | 484 +++- sys/contrib/dev/iwlwifi/iwl-trans.h | 346 ++- sys/contrib/dev/iwlwifi/iwl-utils.c | 195 ++ sys/contrib/dev/iwlwifi/iwl-utils.h | 58 + sys/contrib/dev/iwlwifi/mld/Makefile | 12 + sys/contrib/dev/iwlwifi/mld/agg.c | 680 +++++ sys/contrib/dev/iwlwifi/mld/agg.h | 127 + sys/contrib/dev/iwlwifi/mld/ap.c | 363 +++ sys/contrib/dev/iwlwifi/mld/ap.h | 45 + sys/contrib/dev/iwlwifi/mld/coex.c | 40 + sys/contrib/dev/iwlwifi/mld/coex.h | 15 + sys/contrib/dev/iwlwifi/mld/constants.h | 79 + sys/contrib/dev/iwlwifi/mld/d3.c | 1906 ++++++++++++++ sys/contrib/dev/iwlwifi/mld/d3.h | 51 + sys/contrib/dev/iwlwifi/mld/debugfs.c | 1109 ++++++++ sys/contrib/dev/iwlwifi/mld/debugfs.h | 244 ++ sys/contrib/dev/iwlwifi/mld/ftm-initiator.c | 451 ++++ sys/contrib/dev/iwlwifi/mld/ftm-initiator.h | 29 + sys/contrib/dev/iwlwifi/mld/fw.c | 554 ++++ sys/contrib/dev/iwlwifi/mld/hcmd.h | 56 + sys/contrib/dev/iwlwifi/mld/iface.c | 707 ++++++ sys/contrib/dev/iwlwifi/mld/iface.h | 253 ++ sys/contrib/dev/iwlwifi/mld/key.c | 370 +++ sys/contrib/dev/iwlwifi/mld/key.h | 39 + sys/contrib/dev/iwlwifi/mld/led.c | 100 + sys/contrib/dev/iwlwifi/mld/led.h | 29 + sys/contrib/dev/iwlwifi/mld/link.c | 895 +++++++ sys/contrib/dev/iwlwifi/mld/link.h | 129 + sys/contrib/dev/iwlwifi/mld/low_latency.c | 336 +++ sys/contrib/dev/iwlwifi/mld/low_latency.h | 68 + sys/contrib/dev/iwlwifi/mld/mac80211.c | 2672 ++++++++++++++++++++ sys/contrib/dev/iwlwifi/mld/mac80211.h | 13 + sys/contrib/dev/iwlwifi/mld/mcc.c | 285 +++ sys/contrib/dev/iwlwifi/mld/mcc.h | 17 + sys/contrib/dev/iwlwifi/mld/mld.c | 771 ++++++ sys/contrib/dev/iwlwifi/mld/mld.h | 592 +++++ sys/contrib/dev/iwlwifi/mld/mlo.c | 1225 +++++++++ sys/contrib/dev/iwlwifi/mld/mlo.h | 171 ++ sys/contrib/dev/iwlwifi/mld/notif.c | 725 ++++++ sys/contrib/dev/iwlwifi/mld/notif.h | 35 + sys/contrib/dev/iwlwifi/mld/phy.c | 198 ++ sys/contrib/dev/iwlwifi/mld/phy.h | 60 + sys/contrib/dev/iwlwifi/mld/power.c | 391 +++ sys/contrib/dev/iwlwifi/mld/power.h | 33 + sys/contrib/dev/iwlwifi/mld/ptp.c | 321 +++ sys/contrib/dev/iwlwifi/mld/ptp.h | 45 + sys/contrib/dev/iwlwifi/mld/regulatory.c | 369 +++ sys/contrib/dev/iwlwifi/mld/regulatory.h | 23 + sys/contrib/dev/iwlwifi/mld/roc.c | 265 ++ sys/contrib/dev/iwlwifi/mld/roc.h | 20 + sys/contrib/dev/iwlwifi/mld/rx.c | 2137 ++++++++++++++++ sys/contrib/dev/iwlwifi/mld/rx.h | 72 + sys/contrib/dev/iwlwifi/mld/scan.c | 2181 ++++++++++++++++ sys/contrib/dev/iwlwifi/mld/scan.h | 173 ++ sys/contrib/dev/iwlwifi/mld/session-protect.c | 222 ++ sys/contrib/dev/iwlwifi/mld/session-protect.h | 102 + sys/contrib/dev/iwlwifi/mld/sta.c | 1321 ++++++++++ sys/contrib/dev/iwlwifi/mld/sta.h | 273 ++ sys/contrib/dev/iwlwifi/mld/stats.c | 518 ++++ sys/contrib/dev/iwlwifi/mld/stats.h | 22 + sys/contrib/dev/iwlwifi/mld/tests/Makefile | 5 + sys/contrib/dev/iwlwifi/mld/tests/agg.c | 663 +++++ sys/contrib/dev/iwlwifi/mld/tests/hcmd.c | 62 + sys/contrib/dev/iwlwifi/mld/tests/link-selection.c | 339 +++ sys/contrib/dev/iwlwifi/mld/tests/link.c | 110 + sys/contrib/dev/iwlwifi/mld/tests/module.c | 11 + sys/contrib/dev/iwlwifi/mld/tests/rx.c | 353 +++ sys/contrib/dev/iwlwifi/mld/tests/utils.c | 503 ++++ sys/contrib/dev/iwlwifi/mld/tests/utils.h | 140 + sys/contrib/dev/iwlwifi/mld/thermal.c | 467 ++++ sys/contrib/dev/iwlwifi/mld/thermal.h | 36 + sys/contrib/dev/iwlwifi/mld/time_sync.c | 240 ++ sys/contrib/dev/iwlwifi/mld/time_sync.h | 26 + sys/contrib/dev/iwlwifi/mld/tlc.c | 702 +++++ sys/contrib/dev/iwlwifi/mld/tlc.h | 23 + sys/contrib/dev/iwlwifi/mld/tx.c | 1394 ++++++++++ sys/contrib/dev/iwlwifi/mld/tx.h | 77 + sys/contrib/dev/iwlwifi/mvm/binding.c | 7 +- sys/contrib/dev/iwlwifi/mvm/coex.c | 88 +- sys/contrib/dev/iwlwifi/mvm/constants.h | 8 +- sys/contrib/dev/iwlwifi/mvm/d3.c | 761 +++--- sys/contrib/dev/iwlwifi/mvm/debugfs-vif.c | 66 +- sys/contrib/dev/iwlwifi/mvm/debugfs.c | 130 +- sys/contrib/dev/iwlwifi/mvm/ftm-initiator.c | 130 +- sys/contrib/dev/iwlwifi/mvm/ftm-responder.c | 90 +- sys/contrib/dev/iwlwifi/mvm/fw.c | 308 +-- sys/contrib/dev/iwlwifi/mvm/led.c | 4 +- sys/contrib/dev/iwlwifi/mvm/link.c | 106 +- sys/contrib/dev/iwlwifi/mvm/mac-ctxt.c | 259 +- sys/contrib/dev/iwlwifi/mvm/mac80211.c | 483 ++-- sys/contrib/dev/iwlwifi/mvm/mld-key.c | 14 +- sys/contrib/dev/iwlwifi/mvm/mld-mac.c | 55 +- sys/contrib/dev/iwlwifi/mvm/mld-mac80211.c | 233 +- sys/contrib/dev/iwlwifi/mvm/mld-sta.c | 81 +- sys/contrib/dev/iwlwifi/mvm/mvm.h | 225 +- sys/contrib/dev/iwlwifi/mvm/nvm.c | 52 +- sys/contrib/dev/iwlwifi/mvm/offloading.c | 2 +- sys/contrib/dev/iwlwifi/mvm/ops.c | 394 +-- sys/contrib/dev/iwlwifi/mvm/phy-ctxt.c | 8 +- sys/contrib/dev/iwlwifi/mvm/power.c | 10 +- sys/contrib/dev/iwlwifi/mvm/ptp.c | 14 +- sys/contrib/dev/iwlwifi/mvm/quota.c | 43 +- sys/contrib/dev/iwlwifi/mvm/rs-fw.c | 36 +- sys/contrib/dev/iwlwifi/mvm/rx.c | 77 +- sys/contrib/dev/iwlwifi/mvm/rxmq.c | 236 +- sys/contrib/dev/iwlwifi/mvm/scan.c | 192 +- sys/contrib/dev/iwlwifi/mvm/sta.c | 244 +- sys/contrib/dev/iwlwifi/mvm/sta.h | 29 +- sys/contrib/dev/iwlwifi/mvm/tdls.c | 20 +- sys/contrib/dev/iwlwifi/mvm/tests/hcmd.c | 38 + sys/contrib/dev/iwlwifi/mvm/time-event.c | 61 +- sys/contrib/dev/iwlwifi/mvm/time-event.h | 8 +- sys/contrib/dev/iwlwifi/mvm/tt.c | 97 +- sys/contrib/dev/iwlwifi/mvm/tx.c | 406 ++- sys/contrib/dev/iwlwifi/mvm/utils.c | 258 +- .../pcie/{ctxt-info-gen3.c => ctxt-info-v2.c} | 213 +- sys/contrib/dev/iwlwifi/pcie/ctxt-info.c | 29 +- sys/contrib/dev/iwlwifi/pcie/drv.c | 2503 ++++++++---------- .../dev/iwlwifi/pcie/{ => gen1_2}/internal.h | 188 +- sys/contrib/dev/iwlwifi/pcie/{ => gen1_2}/rx.c | 223 +- .../dev/iwlwifi/pcie/{ => gen1_2}/trans-gen2.c | 209 +- sys/contrib/dev/iwlwifi/pcie/{ => gen1_2}/trans.c | 1216 ++++++--- .../dev/iwlwifi/pcie/{ => gen1_2}/tx-gen2.c | 88 +- sys/contrib/dev/iwlwifi/pcie/{ => gen1_2}/tx.c | 291 ++- .../iwl-context-info-v2.h} | 109 +- .../dev/iwlwifi/{ => pcie}/iwl-context-info.h | 44 +- sys/contrib/dev/iwlwifi/pcie/utils.c | 128 + sys/contrib/dev/iwlwifi/pcie/utils.h | 40 + sys/contrib/dev/iwlwifi/tests/Makefile | 2 +- sys/contrib/dev/iwlwifi/tests/devinfo.c | 229 +- sys/modules/iwlwifi/Makefile | 68 +- 207 files changed, 39858 insertions(+), 8269 deletions(-) diff --git a/sys/contrib/dev/iwlwifi/cfg/22000.c b/sys/contrib/dev/iwlwifi/cfg/22000.c index 2e2fcb3807ef..ca488931a33c 100644 --- a/sys/contrib/dev/iwlwifi/cfg/22000.c +++ b/sys/contrib/dev/iwlwifi/cfg/22000.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* * Copyright (C) 2015-2017 Intel Deutschland GmbH - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation */ #include #include @@ -15,40 +15,16 @@ /* Lowest firmware API version supported */ #define IWL_22000_UCODE_API_MIN 77 -/* NVM versions */ -#define IWL_22000_NVM_VERSION 0x0a1d - /* Memory offsets and lengths */ -#define IWL_22000_DCCM_OFFSET 0x800000 /* LMAC1 */ -#define IWL_22000_DCCM_LEN 0x10000 /* LMAC1 */ -#define IWL_22000_DCCM2_OFFSET 0x880000 -#define IWL_22000_DCCM2_LEN 0x8000 #define IWL_22000_SMEM_OFFSET 0x400000 #define IWL_22000_SMEM_LEN 0xD0000 -#define IWL_QU_B_HR_B_FW_PRE "iwlwifi-Qu-b0-hr-b0" -#define IWL_QU_C_HR_B_FW_PRE "iwlwifi-Qu-c0-hr-b0" -#define IWL_QU_B_JF_B_FW_PRE "iwlwifi-Qu-b0-jf-b0" -#define IWL_QU_C_JF_B_FW_PRE "iwlwifi-Qu-c0-jf-b0" -#define IWL_QUZ_A_HR_B_FW_PRE "iwlwifi-QuZ-a0-hr-b0" -#define IWL_QUZ_A_JF_B_FW_PRE "iwlwifi-QuZ-a0-jf-b0" #define IWL_CC_A_FW_PRE "iwlwifi-cc-a0" -#define IWL_QU_B_HR_B_MODULE_FIRMWARE(api) \ - IWL_QU_B_HR_B_FW_PRE "-" __stringify(api) ".ucode" -#define IWL_QUZ_A_HR_B_MODULE_FIRMWARE(api) \ - IWL_QUZ_A_HR_B_FW_PRE "-" __stringify(api) ".ucode" -#define IWL_QUZ_A_JF_B_MODULE_FIRMWARE(api) \ - IWL_QUZ_A_JF_B_FW_PRE "-" __stringify(api) ".ucode" -#define IWL_QU_C_HR_B_MODULE_FIRMWARE(api) \ - IWL_QU_C_HR_B_FW_PRE "-" __stringify(api) ".ucode" -#define IWL_QU_B_JF_B_MODULE_FIRMWARE(api) \ - IWL_QU_B_JF_B_FW_PRE "-" __stringify(api) ".ucode" #define IWL_CC_A_MODULE_FIRMWARE(api) \ IWL_CC_A_FW_PRE "-" __stringify(api) ".ucode" -static const struct iwl_base_params iwl_22000_base_params = { - .eeprom_size = OTP_LOW_IMAGE_SIZE_32K, +static const struct iwl_family_base_params iwl_22000_base = { .num_of_queues = 512, .max_tfd_queue_size = 256, .shadow_ram_support = true, @@ -57,156 +33,78 @@ static const struct iwl_base_params iwl_22000_base_params = { .max_event_log_size = 512, .shadow_reg_enable = true, .pcie_l1_allowed = true, -}; - -const struct iwl_ht_params iwl_22000_ht_params = { - .stbc = true, - .ldpc = true, - .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ) | - BIT(NL80211_BAND_6GHZ), -}; - -#define IWL_DEVICE_22000_COMMON \ - .ucode_api_min = IWL_22000_UCODE_API_MIN, \ - .led_mode = IWL_LED_RF_STATE, \ - .nvm_hw_section_num = 10, \ - .non_shared_ant = ANT_B, \ - .dccm_offset = IWL_22000_DCCM_OFFSET, \ - .dccm_len = IWL_22000_DCCM_LEN, \ - .dccm2_offset = IWL_22000_DCCM2_OFFSET, \ - .dccm2_len = IWL_22000_DCCM2_LEN, \ - .smem_offset = IWL_22000_SMEM_OFFSET, \ - .smem_len = IWL_22000_SMEM_LEN, \ - .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM, \ - .apmg_not_supported = true, \ - .trans.mq_rx_supported = true, \ - .vht_mu_mimo_supported = true, \ - .mac_addr_from_csr = 0x380, \ - .ht_params = &iwl_22000_ht_params, \ - .nvm_ver = IWL_22000_NVM_VERSION, \ - .trans.rf_id = true, \ - .trans.gen2 = true, \ - .nvm_type = IWL_NVM_EXT, \ - .dbgc_supported = true, \ - .min_umac_error_event_table = 0x400000, \ - .d3_debug_data_base_addr = 0x401000, \ - .d3_debug_data_length = 60 * 1024, \ - .mon_smem_regs = { \ - .write_ptr = { \ - .addr = LDBG_M2S_BUF_WPTR, \ - .mask = LDBG_M2S_BUF_WPTR_VAL_MSK, \ - }, \ - .cycle_cnt = { \ - .addr = LDBG_M2S_BUF_WRAP_CNT, \ - .mask = LDBG_M2S_BUF_WRAP_CNT_VAL_MSK, \ - }, \ - } - -#define IWL_DEVICE_22500 \ - IWL_DEVICE_22000_COMMON, \ - .ucode_api_max = IWL_22000_UCODE_API_MAX, \ - .trans.device_family = IWL_DEVICE_FAMILY_22000, \ - .trans.base_params = &iwl_22000_base_params, \ - .gp2_reg_addr = 0xa02c68, \ - .mon_dram_regs = { \ - .write_ptr = { \ - .addr = MON_BUFF_WRPTR_VER2, \ - .mask = 0xffffffff, \ - }, \ - .cycle_cnt = { \ - .addr = MON_BUFF_CYCLE_CNT_VER2, \ - .mask = 0xffffffff, \ - }, \ - } - -const struct iwl_cfg_trans_params iwl_qu_trans_cfg = { + .smem_offset = IWL_22000_SMEM_OFFSET, + .smem_len = IWL_22000_SMEM_LEN, + .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM, + .apmg_not_supported = true, + .mac_addr_from_csr = 0x380, + .min_umac_error_event_table = 0x400000, + .d3_debug_data_base_addr = 0x401000, + .d3_debug_data_length = 60 * 1024, + .mon_smem_regs = { + .write_ptr = { + .addr = LDBG_M2S_BUF_WPTR, + .mask = LDBG_M2S_BUF_WPTR_VAL_MSK, + }, + .cycle_cnt = { + .addr = LDBG_M2S_BUF_WRAP_CNT, + .mask = LDBG_M2S_BUF_WRAP_CNT_VAL_MSK, + }, + }, + .gp2_reg_addr = 0xa02c68, + .mon_dram_regs = { + .write_ptr = { + .addr = MON_BUFF_WRPTR_VER2, + .mask = 0xffffffff, + }, + .cycle_cnt = { + .addr = MON_BUFF_CYCLE_CNT_VER2, + .mask = 0xffffffff, + }, + }, + .ucode_api_min = IWL_22000_UCODE_API_MIN, + .ucode_api_max = IWL_22000_UCODE_API_MAX, +}; + +const struct iwl_mac_cfg iwl_qu_mac_cfg = { .mq_rx_supported = true, - .rf_id = true, .gen2 = true, .device_family = IWL_DEVICE_FAMILY_22000, - .base_params = &iwl_22000_base_params, + .base = &iwl_22000_base, .integrated = true, .xtal_latency = 500, .ltr_delay = IWL_CFG_TRANS_LTR_DELAY_200US, }; -const struct iwl_cfg_trans_params iwl_qu_medium_latency_trans_cfg = { +const struct iwl_mac_cfg iwl_qu_medium_latency_mac_cfg = { .mq_rx_supported = true, - .rf_id = true, .gen2 = true, .device_family = IWL_DEVICE_FAMILY_22000, - .base_params = &iwl_22000_base_params, + .base = &iwl_22000_base, .integrated = true, .xtal_latency = 1820, .ltr_delay = IWL_CFG_TRANS_LTR_DELAY_1820US, }; -const struct iwl_cfg_trans_params iwl_qu_long_latency_trans_cfg = { +const struct iwl_mac_cfg iwl_qu_long_latency_mac_cfg = { .mq_rx_supported = true, - .rf_id = true, .gen2 = true, .device_family = IWL_DEVICE_FAMILY_22000, - .base_params = &iwl_22000_base_params, + .base = &iwl_22000_base, .integrated = true, .xtal_latency = 12000, .low_latency_xtal = true, .ltr_delay = IWL_CFG_TRANS_LTR_DELAY_2500US, }; -/* - * If the device doesn't support HE, no need to have that many buffers. - * 22000 devices can split multiple frames into a single RB, so fewer are - * needed; AX210 cannot (but use smaller RBs by default) - these sizes - * were picked according to 8 MSDUs inside 256 A-MSDUs in an A-MPDU, with - * additional overhead to account for processing time. - */ -#define IWL_NUM_RBDS_NON_HE 512 -#define IWL_NUM_RBDS_22000_HE 2048 - -/* - * All JF radio modules are part of the 9000 series, but the MAC part - * looks more like 22000. That's why this device is here, but called - * 9560 nevertheless. - */ -const struct iwl_cfg iwl9560_qu_b0_jf_b0_cfg = { - .fw_name_pre = IWL_QU_B_JF_B_FW_PRE, - IWL_DEVICE_22500, - .num_rbds = IWL_NUM_RBDS_NON_HE, -}; - -const struct iwl_cfg iwl9560_qu_c0_jf_b0_cfg = { - .fw_name_pre = IWL_QU_C_JF_B_FW_PRE, - IWL_DEVICE_22500, - .num_rbds = IWL_NUM_RBDS_NON_HE, -}; - -const struct iwl_cfg iwl9560_quz_a0_jf_b0_cfg = { - .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .num_rbds = IWL_NUM_RBDS_NON_HE, -}; - -const struct iwl_cfg_trans_params iwl_ax200_trans_cfg = { +const struct iwl_mac_cfg iwl_ax200_mac_cfg = { .device_family = IWL_DEVICE_FAMILY_22000, - .base_params = &iwl_22000_base_params, + .base = &iwl_22000_base, .mq_rx_supported = true, - .rf_id = true, .gen2 = true, .bisr_workaround = 1, }; -const char iwl_ax101_name[] = "Intel(R) Wi-Fi 6 AX101"; -const char iwl_ax200_name[] = "Intel(R) Wi-Fi 6 AX200 160MHz"; -const char iwl_ax201_name[] = "Intel(R) Wi-Fi 6 AX201 160MHz"; -const char iwl_ax203_name[] = "Intel(R) Wi-Fi 6 AX203"; -const char iwl_ax204_name[] = "Intel(R) Wi-Fi 6 AX204 160MHz"; - const char iwl_ax200_killer_1650w_name[] = "Killer(R) Wi-Fi 6 AX1650w 160MHz Wireless Network Adapter (200D2W)"; const char iwl_ax200_killer_1650x_name[] = @@ -216,213 +114,4 @@ const char iwl_ax201_killer_1650s_name[] = const char iwl_ax201_killer_1650i_name[] = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)"; -const struct iwl_cfg iwl_qu_b0_hr1_b0 = { - .fw_name_pre = IWL_QU_B_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .tx_with_siso_diversity = true, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg iwl_qu_b0_hr_b0 = { - .fw_name_pre = IWL_QU_B_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg iwl_ax201_cfg_qu_hr = { - .name = "Intel(R) Wi-Fi 6 AX201 160MHz", - .fw_name_pre = IWL_QU_B_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg iwl_qu_c0_hr1_b0 = { - .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .tx_with_siso_diversity = true, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg iwl_qu_c0_hr_b0 = { - .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg iwl_ax201_cfg_qu_c0_hr_b0 = { - .name = "Intel(R) Wi-Fi 6 AX201 160MHz", - .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg iwl_quz_a0_hr1_b0 = { - .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .tx_with_siso_diversity = true, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg iwl_ax201_cfg_quz_hr = { - .name = "Intel(R) Wi-Fi 6 AX201 160MHz", - .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg iwl_ax1650s_cfg_quz_hr = { - .name = "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201D2W)", - .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg iwl_ax1650i_cfg_quz_hr = { - .name = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)", - .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg iwl_ax200_cfg_cc = { - .fw_name_pre = IWL_CC_A_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg killer1650s_2ax_cfg_qu_b0_hr_b0 = { - .name = "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201NGW)", - .fw_name_pre = IWL_QU_B_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg killer1650i_2ax_cfg_qu_b0_hr_b0 = { - .name = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201D2W)", - .fw_name_pre = IWL_QU_B_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg killer1650s_2ax_cfg_qu_c0_hr_b0 = { - .name = "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201NGW)", - .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg killer1650i_2ax_cfg_qu_c0_hr_b0 = { - .name = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201D2W)", - .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -const struct iwl_cfg iwl_cfg_quz_a0_hr_b0 = { - .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, - IWL_DEVICE_22500, - /* - * This device doesn't support receiving BlockAck with a large bitmap - * so we need to restrict the size of transmitted aggregation to the - * HT size; mac80211 would otherwise pick the HE max (256) by default. - */ - .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, - .num_rbds = IWL_NUM_RBDS_22000_HE, -}; - -MODULE_FIRMWARE(IWL_QU_B_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); -MODULE_FIRMWARE(IWL_QU_C_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); -MODULE_FIRMWARE(IWL_QU_B_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); -MODULE_FIRMWARE(IWL_QUZ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); -MODULE_FIRMWARE(IWL_QUZ_A_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); MODULE_FIRMWARE(IWL_CC_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); diff --git a/sys/contrib/dev/iwlwifi/cfg/7000.c b/sys/contrib/dev/iwlwifi/cfg/7000.c index 4e2afdedf4c6..f987ad3192c1 100644 --- a/sys/contrib/dev/iwlwifi/cfg/7000.c +++ b/sys/contrib/dev/iwlwifi/cfg/7000.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* - * Copyright (C) 2012-2014, 2018-2020, 2023 Intel Corporation + * Copyright (C) 2012-2014, 2018-2020, 2023, 2025 Intel Corporation * Copyright (C) 2013-2014 Intel Mobile Communications GmbH * Copyright (C) 2015 Intel Deutschland GmbH */ @@ -49,7 +49,7 @@ #define IWL7265D_FW_PRE "iwlwifi-7265D" #define IWL7265D_MODULE_FIRMWARE(api) IWL7265D_FW_PRE "-" __stringify(api) ".ucode" -static const struct iwl_base_params iwl7000_base_params = { +static const struct iwl_family_base_params iwl7000_base = { .eeprom_size = OTP_LOW_IMAGE_SIZE_16K, .num_of_queues = 31, .max_tfd_queue_size = 256, @@ -60,6 +60,7 @@ static const struct iwl_base_params iwl7000_base_params = { .shadow_reg_enable = true, .pcie_l1_allowed = true, .apmg_wake_up_wa = true, + .nvm_hw_section_num = 0, }; static const struct iwl_tt_params iwl7000_high_temp_tt_params = { @@ -84,16 +85,13 @@ static const struct iwl_tt_params iwl7000_high_temp_tt_params = { .support_tx_backoff = true, }; -static const struct iwl_ht_params iwl7000_ht_params = { - .stbc = true, - .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ), +const struct iwl_mac_cfg iwl7000_mac_cfg = { + .device_family = IWL_DEVICE_FAMILY_7000, + .base = &iwl7000_base, }; #define IWL_DEVICE_7000_COMMON \ - .trans.device_family = IWL_DEVICE_FAMILY_7000, \ - .trans.base_params = &iwl7000_base_params, \ .led_mode = IWL_LED_RF_STATE, \ - .nvm_hw_section_num = 0, \ .non_shared_ant = ANT_A, \ .dccm_offset = IWL7000_DCCM_OFFSET @@ -117,77 +115,52 @@ static const struct iwl_ht_params iwl7000_ht_params = { .ucode_api_max = IWL7265D_UCODE_API_MAX, \ .ucode_api_min = IWL7265D_UCODE_API_MIN -const struct iwl_cfg iwl7260_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 7260", +const char iwl7260_2ac_name[] = "Intel(R) Dual Band Wireless AC 7260"; +const char iwl7260_2n_name[] = "Intel(R) Dual Band Wireless N 7260"; +const char iwl7260_n_name[] = "Intel(R) Wireless N 7260"; +const char iwl3160_2ac_name[] = "Intel(R) Dual Band Wireless AC 3160"; +const char iwl3160_2n_name[] = "Intel(R) Dual Band Wireless N 3160"; +const char iwl3160_n_name[] = "Intel(R) Wireless N 3160"; +const char iwl3165_2ac_name[] = "Intel(R) Dual Band Wireless-AC 3165"; +const char iwl3168_2ac_name[] = "Intel(R) Dual Band Wireless-AC 3168"; +const char iwl7265_2ac_name[] = "Intel(R) Dual Band Wireless-AC 7265"; +const char iwl7265_2n_name[] = "Intel(R) Dual Band Wireless-N 7265"; +const char iwl7265_n_name[] = "Intel(R) Wireless-N 7265"; + +const struct iwl_rf_cfg iwl7260_cfg = { .fw_name_pre = IWL7260_FW_PRE, IWL_DEVICE_7000, - .ht_params = &iwl7000_ht_params, + .ht_params = { + .stbc = true, + .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ), + }, .nvm_ver = IWL7260_NVM_VERSION, .host_interrupt_operation_mode = true, .lp_xtal_workaround = true, .dccm_len = IWL7260_DCCM_LEN, }; -const struct iwl_cfg iwl7260_2ac_cfg_high_temp = { - .name = "Intel(R) Dual Band Wireless AC 7260", +const struct iwl_rf_cfg iwl7260_high_temp_cfg = { .fw_name_pre = IWL7260_FW_PRE, IWL_DEVICE_7000, - .ht_params = &iwl7000_ht_params, + .ht_params = { + .stbc = true, + .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ), + }, .nvm_ver = IWL7260_NVM_VERSION, - .high_temp = true, .host_interrupt_operation_mode = true, .lp_xtal_workaround = true, .dccm_len = IWL7260_DCCM_LEN, .thermal_params = &iwl7000_high_temp_tt_params, }; -const struct iwl_cfg iwl7260_2n_cfg = { - .name = "Intel(R) Dual Band Wireless N 7260", - .fw_name_pre = IWL7260_FW_PRE, - IWL_DEVICE_7000, - .ht_params = &iwl7000_ht_params, - .nvm_ver = IWL7260_NVM_VERSION, - .host_interrupt_operation_mode = true, - .lp_xtal_workaround = true, - .dccm_len = IWL7260_DCCM_LEN, -}; - -const struct iwl_cfg iwl7260_n_cfg = { - .name = "Intel(R) Wireless N 7260", - .fw_name_pre = IWL7260_FW_PRE, - IWL_DEVICE_7000, - .ht_params = &iwl7000_ht_params, - .nvm_ver = IWL7260_NVM_VERSION, - .host_interrupt_operation_mode = true, - .lp_xtal_workaround = true, - .dccm_len = IWL7260_DCCM_LEN, -}; - -const struct iwl_cfg iwl3160_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 3160", +const struct iwl_rf_cfg iwl3160_cfg = { .fw_name_pre = IWL3160_FW_PRE, IWL_DEVICE_7000, - .ht_params = &iwl7000_ht_params, - .nvm_ver = IWL3160_NVM_VERSION, - .host_interrupt_operation_mode = true, - .dccm_len = IWL3160_DCCM_LEN, -}; - -const struct iwl_cfg iwl3160_2n_cfg = { - .name = "Intel(R) Dual Band Wireless N 3160", - .fw_name_pre = IWL3160_FW_PRE, - IWL_DEVICE_7000, - .ht_params = &iwl7000_ht_params, - .nvm_ver = IWL3160_NVM_VERSION, - .host_interrupt_operation_mode = true, - .dccm_len = IWL3160_DCCM_LEN, -}; - -const struct iwl_cfg iwl3160_n_cfg = { - .name = "Intel(R) Wireless N 3160", - .fw_name_pre = IWL3160_FW_PRE, - IWL_DEVICE_7000, - .ht_params = &iwl7000_ht_params, + .ht_params = { + .stbc = true, + .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ), + }, .nvm_ver = IWL3160_NVM_VERSION, .host_interrupt_operation_mode = true, .dccm_len = IWL3160_DCCM_LEN, @@ -204,88 +177,52 @@ static const struct iwl_pwr_tx_backoff iwl7265_pwr_tx_backoffs[] = { {0}, }; -static const struct iwl_ht_params iwl7265_ht_params = { - .stbc = true, - .ldpc = true, - .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ), -}; - -const struct iwl_cfg iwl3165_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 3165", +const struct iwl_rf_cfg iwl3165_2ac_cfg = { .fw_name_pre = IWL7265D_FW_PRE, IWL_DEVICE_7005D, - .ht_params = &iwl7000_ht_params, + .ht_params = { + .stbc = true, + .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ), + }, .nvm_ver = IWL3165_NVM_VERSION, .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs, .dccm_len = IWL7265_DCCM_LEN, }; -const struct iwl_cfg iwl3168_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 3168", +const struct iwl_rf_cfg iwl3168_2ac_cfg = { .fw_name_pre = IWL3168_FW_PRE, IWL_DEVICE_3008, - .ht_params = &iwl7000_ht_params, + .ht_params = { + .stbc = true, + .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ), + }, .nvm_ver = IWL3168_NVM_VERSION, .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs, .dccm_len = IWL7265_DCCM_LEN, .nvm_type = IWL_NVM_SDP, }; -const struct iwl_cfg iwl7265_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 7265", - .fw_name_pre = IWL7265_FW_PRE, - IWL_DEVICE_7005, - .ht_params = &iwl7265_ht_params, - .nvm_ver = IWL7265_NVM_VERSION, - .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs, - .dccm_len = IWL7265_DCCM_LEN, -}; - -const struct iwl_cfg iwl7265_2n_cfg = { - .name = "Intel(R) Dual Band Wireless N 7265", - .fw_name_pre = IWL7265_FW_PRE, - IWL_DEVICE_7005, - .ht_params = &iwl7265_ht_params, - .nvm_ver = IWL7265_NVM_VERSION, - .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs, - .dccm_len = IWL7265_DCCM_LEN, -}; - -const struct iwl_cfg iwl7265_n_cfg = { - .name = "Intel(R) Wireless N 7265", +const struct iwl_rf_cfg iwl7265_cfg = { .fw_name_pre = IWL7265_FW_PRE, IWL_DEVICE_7005, - .ht_params = &iwl7265_ht_params, + .ht_params = { + .stbc = true, + .ldpc = true, + .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ), + }, .nvm_ver = IWL7265_NVM_VERSION, .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs, .dccm_len = IWL7265_DCCM_LEN, }; -const struct iwl_cfg iwl7265d_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 7265", - .fw_name_pre = IWL7265D_FW_PRE, - IWL_DEVICE_7005D, - .ht_params = &iwl7265_ht_params, - .nvm_ver = IWL7265D_NVM_VERSION, - .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs, - .dccm_len = IWL7265_DCCM_LEN, -}; - -const struct iwl_cfg iwl7265d_2n_cfg = { - .name = "Intel(R) Dual Band Wireless N 7265", +const struct iwl_rf_cfg iwl7265d_cfg = { .fw_name_pre = IWL7265D_FW_PRE, IWL_DEVICE_7005D, - .ht_params = &iwl7265_ht_params, - .nvm_ver = IWL7265D_NVM_VERSION, - .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs, - .dccm_len = IWL7265_DCCM_LEN, -}; - -const struct iwl_cfg iwl7265d_n_cfg = { - .name = "Intel(R) Wireless N 7265", - .fw_name_pre = IWL7265D_FW_PRE, - IWL_DEVICE_7005D, - .ht_params = &iwl7265_ht_params, + .ht_params = { + .stbc = true, + .ldpc = true, + .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ), + }, .nvm_ver = IWL7265D_NVM_VERSION, .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs, .dccm_len = IWL7265_DCCM_LEN, diff --git a/sys/contrib/dev/iwlwifi/cfg/8000.c b/sys/contrib/dev/iwlwifi/cfg/8000.c index d09cf8d7dc01..b56574006ee0 100644 --- a/sys/contrib/dev/iwlwifi/cfg/8000.c +++ b/sys/contrib/dev/iwlwifi/cfg/8000.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* - * Copyright (C) 2014, 2018-2020, 2023 Intel Corporation + * Copyright (C) 2014, 2018-2020, 2023, 2025 Intel Corporation * Copyright (C) 2014-2015 Intel Mobile Communications GmbH *** 63293 LINES SKIPPED *** From nobody Tue Oct 28 01:59:15 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwYTJ6JMfz6G4Q1; Tue, 28 Oct 2025 01:59:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwYTJ0vRQz3VHx; Tue, 28 Oct 2025 01:59:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616756; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xeRxTzldoTyjUUeN1Rn9OJQjGkWqIY90T5uSdxQ8pIE=; b=fj86ZPEahQn4n5XBb5vpkX+su5sNwHPfzKL6cBRhPtz3dU1lWTIxzyVtly3jtOYjlWrE5F M9gT3bClyP40u/kOkH2itZWIx7Q2C7aEzWNxAMdjnaMA1P0oE5rwg58AzNj9bAWlUeMoQJ warybjum7OtAzQfsOSr5xIB3MvjJ9wqo/H01M6YbNp61eMVx42DNbA93epWUnjduqFUtKc U3WwgMRwXzrp5ZcraRoNeXIT378j8CT/C1sGKmaBvBzvLm0njv6fsEwPbALkIzSMc0wdZW HKC/2pDAy/kIeHU6JOuDj7stScHBc9Q5r2gPfWVEnxmEZEMaS2ogkLwsVoU3xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616756; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xeRxTzldoTyjUUeN1Rn9OJQjGkWqIY90T5uSdxQ8pIE=; b=ND5WlQmwhAXuGOsYpkeHogy4rrT4huBhhfrgQjeRPRWMBQlYdEC+5hc81vMMBSsWKBZ7sy rhPDrtZGHAQe9P/WwmXqvCwXh/tKfRzu6I1DlT3x+XykHjxs34Umks4mZh6mUodPJ6FcF7 rOughrvFUNeMko/h+EwqcJuHPlqT4TWe78+kIx7sEJUegcFoJuFQvNYFpoAj/VNYoULPOt dlOyzpQGH0lb/pJymo9g2LjAHPGeBDybWAsddvhhiNjuhp1X3omRfns0XtawXoqTRIC8aa 7dDBzk+73RgdpCNgM5H/1//wKvvfHu9wAlkqGVp3g2ukrqpsGWEw+TE2n0cY6w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761616756; a=rsa-sha256; cv=none; b=nk6UT7JAyEM+nJtzo15PKfAXv6XkpLscp+9cViItP+Z0sfhUZ+coKDJ1qaUml1+kcVVoWF ZImTewXML6edQAY9Jt3vtHLbINi5QnY3r8WvsaQKUAb4ADNrM67689MQE7U1wNPWqt1+hF yTusK1izEQraYUfMhsw02HRBxGWVtroYtCfnpYTet3rWrOqajrA1BWOWTM+ti9vmTcLJQk XW8ramDwkWXHEKFuCynqlUlZZ2d1cTvWnlt7nZjhY8WabgjC+hXjKrpDyyS1kr6XuXaliH Gru9eKAz5naEN3st6wM3CwSqi/U8t+4jxnInV2+DgJtb5fL4jVK+9ybF3Twcww== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwYTJ0S48zTbs; Tue, 28 Oct 2025 01:59:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S1xGhL071873; Tue, 28 Oct 2025 01:59:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S1xFvt071870; Tue, 28 Oct 2025 01:59:15 GMT (envelope-from git) Date: Tue, 28 Oct 2025 01:59:15 GMT Message-Id: <202510280159.59S1xFvt071870@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 8bf92b4a45b8 - releng/15.0 - rtw88: update Realtek's rtw88 driver List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: 8bf92b4a45b8b592cc6cc0050390c22435d9af99 Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=8bf92b4a45b8b592cc6cc0050390c22435d9af99 commit 8bf92b4a45b8b592cc6cc0050390c22435d9af99 Author: Bjoern A. Zeeb AuthorDate: 2025-10-17 20:22:54 +0000 Commit: Colin Percival CommitDate: 2025-10-28 01:58:33 +0000 rtw88: update Realtek's rtw88 driver This version is based on git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git e5f0a698b34ed76002dc5cff3804a61c80233a7a ( tag: v6.17 ). Approved by: re (cperciva) (cherry picked from commit eb15fdb1b72de02e7a4c454f7eeeb1cee5cb83df) (cherry picked from commit 0272ecf586255991f94f80378c4a3384e83fccc5) --- sys/contrib/dev/rtw88/Makefile | 9 + sys/contrib/dev/rtw88/coex.c | 24 +- sys/contrib/dev/rtw88/debug.c | 57 +- sys/contrib/dev/rtw88/fw.c | 31 +- sys/contrib/dev/rtw88/fw.h | 1 + sys/contrib/dev/rtw88/hci.h | 8 + sys/contrib/dev/rtw88/mac.c | 50 +- sys/contrib/dev/rtw88/mac.h | 3 + sys/contrib/dev/rtw88/mac80211.c | 11 +- sys/contrib/dev/rtw88/main.c | 118 +- sys/contrib/dev/rtw88/main.h | 65 +- sys/contrib/dev/rtw88/pci.c | 55 +- sys/contrib/dev/rtw88/pci.h | 1 + sys/contrib/dev/rtw88/phy.c | 215 +- sys/contrib/dev/rtw88/phy.h | 20 +- sys/contrib/dev/rtw88/reg.h | 69 +- sys/contrib/dev/rtw88/rtw8703b.c | 64 +- sys/contrib/dev/rtw88/rtw8723cs.c | 2 +- sys/contrib/dev/rtw88/rtw8723d.c | 8 +- sys/contrib/dev/rtw88/rtw8723de.c | 3 +- sys/contrib/dev/rtw88/rtw8723ds.c | 2 +- sys/contrib/dev/rtw88/rtw8723du.c | 2 +- sys/contrib/dev/rtw88/rtw8723x.c | 68 +- sys/contrib/dev/rtw88/rtw8723x.h | 6 + sys/contrib/dev/rtw88/rtw8812a.c | 5 +- sys/contrib/dev/rtw88/rtw8812au.c | 2 +- sys/contrib/dev/rtw88/rtw8814a.c | 2281 +++ sys/contrib/dev/rtw88/rtw8814a.h | 62 + sys/contrib/dev/rtw88/rtw8814a_table.c | 23930 +++++++++++++++++++++++++++++++ sys/contrib/dev/rtw88/rtw8814a_table.h | 40 + sys/contrib/dev/rtw88/rtw8814ae.c | 34 + sys/contrib/dev/rtw88/rtw8814au.c | 54 + sys/contrib/dev/rtw88/rtw8821a.c | 5 +- sys/contrib/dev/rtw88/rtw8821au.c | 2 +- sys/contrib/dev/rtw88/rtw8821c.c | 21 +- sys/contrib/dev/rtw88/rtw8821ce.c | 3 +- sys/contrib/dev/rtw88/rtw8821cs.c | 2 +- sys/contrib/dev/rtw88/rtw8821cu.c | 2 +- sys/contrib/dev/rtw88/rtw8822b.c | 22 +- sys/contrib/dev/rtw88/rtw8822be.c | 3 +- sys/contrib/dev/rtw88/rtw8822bs.c | 2 +- sys/contrib/dev/rtw88/rtw8822bu.c | 8 +- sys/contrib/dev/rtw88/rtw8822c.c | 11 +- sys/contrib/dev/rtw88/rtw8822ce.c | 3 +- sys/contrib/dev/rtw88/rtw8822cs.c | 2 +- sys/contrib/dev/rtw88/rtw8822cu.c | 2 +- sys/contrib/dev/rtw88/rtw88xxa.c | 2 +- sys/contrib/dev/rtw88/rx.c | 6 + sys/contrib/dev/rtw88/sar.c | 2 +- sys/contrib/dev/rtw88/sdio.c | 37 +- sys/contrib/dev/rtw88/tx.c | 3 +- sys/contrib/dev/rtw88/usb.c | 65 +- sys/contrib/dev/rtw88/util.c | 3 +- sys/modules/rtw88/Makefile | 5 +- 54 files changed, 27180 insertions(+), 331 deletions(-) diff --git a/sys/contrib/dev/rtw88/Makefile b/sys/contrib/dev/rtw88/Makefile index 0cbbb366e393..0b3da05a2938 100644 --- a/sys/contrib/dev/rtw88/Makefile +++ b/sys/contrib/dev/rtw88/Makefile @@ -94,6 +94,15 @@ rtw88_8821au-objs := rtw8821au.o obj-$(CONFIG_RTW88_8812AU) += rtw88_8812au.o rtw88_8812au-objs := rtw8812au.o +obj-$(CONFIG_RTW88_8814A) += rtw88_8814a.o +rtw88_8814a-objs := rtw8814a.o rtw8814a_table.o + +obj-$(CONFIG_RTW88_8814AE) += rtw88_8814ae.o +rtw88_8814ae-objs := rtw8814ae.o + +obj-$(CONFIG_RTW88_8814AU) += rtw88_8814au.o +rtw88_8814au-objs := rtw8814au.o + obj-$(CONFIG_RTW88_PCI) += rtw88_pci.o rtw88_pci-objs := pci.o diff --git a/sys/contrib/dev/rtw88/coex.c b/sys/contrib/dev/rtw88/coex.c index c929db1e53ca..b4dc6ff2c175 100644 --- a/sys/contrib/dev/rtw88/coex.c +++ b/sys/contrib/dev/rtw88/coex.c @@ -309,7 +309,7 @@ static void rtw_coex_tdma_timer_base(struct rtw_dev *rtwdev, u8 type) { struct rtw_coex *coex = &rtwdev->coex; struct rtw_coex_stat *coex_stat = &coex->stat; - u8 para[2] = {0}; + u8 para[6] = {}; u8 times; u16 tbtt_interval = coex_stat->wl_beacon_interval; @@ -1501,28 +1501,28 @@ static u8 rtw_coex_algorithm(struct rtw_dev *rtwdev) algorithm = COEX_ALGO_HFP; break; case BPM_HID: - case BPM_HFP + BPM_HID: + case BPM_HFP | BPM_HID: algorithm = COEX_ALGO_HID; break; - case BPM_HFP + BPM_A2DP: - case BPM_HID + BPM_A2DP: - case BPM_HFP + BPM_HID + BPM_A2DP: + case BPM_HFP | BPM_A2DP: + case BPM_HID | BPM_A2DP: + case BPM_HFP | BPM_HID | BPM_A2DP: algorithm = COEX_ALGO_A2DP_HID; break; - case BPM_HFP + BPM_PAN: - case BPM_HID + BPM_PAN: - case BPM_HFP + BPM_HID + BPM_PAN: + case BPM_HFP | BPM_PAN: + case BPM_HID | BPM_PAN: + case BPM_HFP | BPM_HID | BPM_PAN: algorithm = COEX_ALGO_PAN_HID; break; - case BPM_HFP + BPM_A2DP + BPM_PAN: - case BPM_HID + BPM_A2DP + BPM_PAN: - case BPM_HFP + BPM_HID + BPM_A2DP + BPM_PAN: + case BPM_HFP | BPM_A2DP | BPM_PAN: + case BPM_HID | BPM_A2DP | BPM_PAN: + case BPM_HFP | BPM_HID | BPM_A2DP | BPM_PAN: algorithm = COEX_ALGO_A2DP_PAN_HID; break; case BPM_PAN: algorithm = COEX_ALGO_PAN; break; - case BPM_A2DP + BPM_PAN: + case BPM_A2DP | BPM_PAN: algorithm = COEX_ALGO_A2DP_PAN; break; case BPM_A2DP: diff --git a/sys/contrib/dev/rtw88/debug.c b/sys/contrib/dev/rtw88/debug.c index f0ee8e62da3b..53742a3220f2 100644 --- a/sys/contrib/dev/rtw88/debug.c +++ b/sys/contrib/dev/rtw88/debug.c @@ -654,10 +654,10 @@ static void rtw_print_rate(struct seq_file *m, u8 rate) case DESC_RATE6M...DESC_RATE54M: rtw_print_ofdm_rate_txt(m, rate); break; - case DESC_RATEMCS0...DESC_RATEMCS15: + case DESC_RATEMCS0...DESC_RATEMCS31: rtw_print_ht_rate_txt(m, rate); break; - case DESC_RATEVHT1SS_MCS0...DESC_RATEVHT2SS_MCS9: + case DESC_RATEVHT1SS_MCS0...DESC_RATEVHT4SS_MCS9: rtw_print_vht_rate_txt(m, rate); break; default: @@ -692,9 +692,11 @@ static int rtw_debugfs_get_tx_pwr_tbl(struct seq_file *m, void *v) { struct rtw_debugfs_priv *debugfs_priv = m->private; struct rtw_dev *rtwdev = debugfs_priv->rtwdev; + struct rtw_power_params pwr_param = {0}; struct rtw_hal *hal = &rtwdev->hal; + u8 nss = rtwdev->efuse.hw_cap.nss; u8 path, rate, bw, ch, regd; - struct rtw_power_params pwr_param = {0}; + u8 max_ht_rate, max_rate; mutex_lock(&rtwdev->mutex); bw = hal->current_band_width; @@ -707,19 +709,23 @@ static int rtw_debugfs_get_tx_pwr_tbl(struct seq_file *m, void *v) seq_printf(m, "%-4s %-10s %-9s %-9s (%-4s %-4s %-4s) %-4s\n", "path", "rate", "pwr", "base", "byr", "lmt", "sar", "rem"); + max_ht_rate = DESC_RATEMCS0 + nss * 8 - 1; + + if (rtwdev->chip->vht_supported) + max_rate = DESC_RATEVHT1SS_MCS0 + nss * 10 - 1; + else + max_rate = max_ht_rate; + mutex_lock(&hal->tx_power_mutex); - for (path = RF_PATH_A; path <= RF_PATH_B; path++) { + for (path = RF_PATH_A; path < hal->rf_path_num; path++) { /* there is no CCK rates used in 5G */ if (hal->current_band_type == RTW_BAND_5G) rate = DESC_RATE6M; else rate = DESC_RATE1M; - /* now, not support vht 3ss and vht 4ss*/ - for (; rate <= DESC_RATEVHT2SS_MCS9; rate++) { - /* now, not support ht 3ss and ht 4ss*/ - if (rate > DESC_RATEMCS15 && - rate < DESC_RATEVHT1SS_MCS0) + for (; rate <= max_rate; rate++) { + if (rate > max_ht_rate && rate <= DESC_RATEMCS31) continue; rtw_get_tx_power_params(rtwdev, path, rate, bw, @@ -849,20 +855,28 @@ static int rtw_debugfs_get_phy_info(struct seq_file *m, void *v) last_cnt->num_qry_pkt[rate_id + 9]); } - seq_printf(m, "[RSSI(dBm)] = {%d, %d}\n", + seq_printf(m, "[RSSI(dBm)] = {%d, %d, %d, %d}\n", dm_info->rssi[RF_PATH_A] - 100, - dm_info->rssi[RF_PATH_B] - 100); - seq_printf(m, "[Rx EVM(dB)] = {-%d, -%d}\n", + dm_info->rssi[RF_PATH_B] - 100, + dm_info->rssi[RF_PATH_C] - 100, + dm_info->rssi[RF_PATH_D] - 100); + seq_printf(m, "[Rx EVM(dB)] = {-%d, -%d, -%d, -%d}\n", dm_info->rx_evm_dbm[RF_PATH_A], - dm_info->rx_evm_dbm[RF_PATH_B]); - seq_printf(m, "[Rx SNR] = {%d, %d}\n", + dm_info->rx_evm_dbm[RF_PATH_B], + dm_info->rx_evm_dbm[RF_PATH_C], + dm_info->rx_evm_dbm[RF_PATH_D]); + seq_printf(m, "[Rx SNR] = {%d, %d, %d, %d}\n", dm_info->rx_snr[RF_PATH_A], - dm_info->rx_snr[RF_PATH_B]); - seq_printf(m, "[CFO_tail(KHz)] = {%d, %d}\n", + dm_info->rx_snr[RF_PATH_B], + dm_info->rx_snr[RF_PATH_C], + dm_info->rx_snr[RF_PATH_D]); + seq_printf(m, "[CFO_tail(KHz)] = {%d, %d, %d, %d}\n", dm_info->cfo_tail[RF_PATH_A], - dm_info->cfo_tail[RF_PATH_B]); + dm_info->cfo_tail[RF_PATH_B], + dm_info->cfo_tail[RF_PATH_C], + dm_info->cfo_tail[RF_PATH_D]); - if (dm_info->curr_rx_rate >= DESC_RATE11M) { + if (dm_info->curr_rx_rate >= DESC_RATE6M) { seq_puts(m, "[Rx Average Status]:\n"); seq_printf(m, " * OFDM, EVM: {-%d}, SNR: {%d}\n", (u8)ewma_evm_read(&ewma_evm[RTW_EVM_OFDM]), @@ -875,6 +889,13 @@ static int rtw_debugfs_get_phy_info(struct seq_file *m, void *v) (u8)ewma_evm_read(&ewma_evm[RTW_EVM_2SS_B]), (u8)ewma_snr_read(&ewma_snr[RTW_SNR_2SS_A]), (u8)ewma_snr_read(&ewma_snr[RTW_SNR_2SS_B])); + seq_printf(m, " * 3SS, EVM: {-%d, -%d, -%d}, SNR: {%d, %d, %d}\n", + (u8)ewma_evm_read(&ewma_evm[RTW_EVM_3SS_A]), + (u8)ewma_evm_read(&ewma_evm[RTW_EVM_3SS_B]), + (u8)ewma_evm_read(&ewma_evm[RTW_EVM_3SS_C]), + (u8)ewma_snr_read(&ewma_snr[RTW_SNR_3SS_A]), + (u8)ewma_snr_read(&ewma_snr[RTW_SNR_3SS_B]), + (u8)ewma_snr_read(&ewma_snr[RTW_SNR_3SS_C])); } seq_puts(m, "[Rx Counter]:\n"); diff --git a/sys/contrib/dev/rtw88/fw.c b/sys/contrib/dev/rtw88/fw.c index ae5af6bc3e92..5ce4a6bcffb6 100644 --- a/sys/contrib/dev/rtw88/fw.c +++ b/sys/contrib/dev/rtw88/fw.c @@ -521,7 +521,7 @@ rtw_fw_send_general_info(struct rtw_dev *rtwdev) u8 h2c_pkt[H2C_PKT_SIZE] = {0}; u16 total_size = H2C_PKT_HDR_SIZE + 4; - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) return; rtw_h2c_pkt_set_header(h2c_pkt, H2C_PKT_GENERAL_INFO); @@ -544,7 +544,7 @@ rtw_fw_send_phydm_info(struct rtw_dev *rtwdev) u16 total_size = H2C_PKT_HDR_SIZE + 8; u8 fw_rf_type = 0; - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) return; if (hal->rf_type == RF_1T1R) @@ -735,6 +735,7 @@ void rtw_fw_send_ra_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, { u8 h2c_pkt[H2C_PKT_SIZE] = {0}; bool disable_pt = true; + u32 mask_hi; SET_H2C_CMD_ID_CLASS(h2c_pkt, H2C_CMD_RA_INFO); @@ -755,6 +756,20 @@ void rtw_fw_send_ra_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, si->init_ra_lv = 0; rtw_fw_send_h2c_command(rtwdev, h2c_pkt); + + if (rtwdev->chip->id != RTW_CHIP_TYPE_8814A) + return; + + SET_H2C_CMD_ID_CLASS(h2c_pkt, H2C_CMD_RA_INFO_HI); + + mask_hi = si->ra_mask >> 32; + + SET_RA_INFO_RA_MASK0(h2c_pkt, (mask_hi & 0xff)); + SET_RA_INFO_RA_MASK1(h2c_pkt, (mask_hi & 0xff00) >> 8); + SET_RA_INFO_RA_MASK2(h2c_pkt, (mask_hi & 0xff0000) >> 16); + SET_RA_INFO_RA_MASK3(h2c_pkt, (mask_hi & 0xff000000) >> 24); + + rtw_fw_send_h2c_command(rtwdev, h2c_pkt); } void rtw_fw_media_status_report(struct rtw_dev *rtwdev, u8 mac_id, bool connect) @@ -1451,7 +1466,7 @@ void rtw_add_rsvd_page_sta(struct rtw_dev *rtwdev, int rtw_fw_write_data_rsvd_page(struct rtw_dev *rtwdev, u16 pg_addr, u8 *buf, u32 size) { - u8 bckp[2]; + u8 bckp[3]; u8 val; u16 rsvd_pg_head; u32 bcn_valid_addr; @@ -1463,7 +1478,9 @@ int rtw_fw_write_data_rsvd_page(struct rtw_dev *rtwdev, u16 pg_addr, if (!size) return -EINVAL; - if (rtw_chip_wcpu_11n(rtwdev)) { + bckp[2] = rtw_read8(rtwdev, REG_BCN_CTRL); + + if (rtw_chip_wcpu_8051(rtwdev)) { rtw_write32_set(rtwdev, REG_DWBCN0_CTRL, BIT_BCN_VALID); } else { pg_addr &= BIT_MASK_BCN_HEAD_1_V1; @@ -1476,6 +1493,9 @@ int rtw_fw_write_data_rsvd_page(struct rtw_dev *rtwdev, u16 pg_addr, val |= BIT_ENSWBCN >> 8; rtw_write8(rtwdev, REG_CR + 1, val); + rtw_write8(rtwdev, REG_BCN_CTRL, + (bckp[2] & ~BIT_EN_BCN_FUNCTION) | BIT_DIS_TSF_UDT); + if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_PCIE) { val = rtw_read8(rtwdev, REG_FWHW_TXQ_CTRL + 2); bckp[1] = val; @@ -1489,7 +1509,7 @@ int rtw_fw_write_data_rsvd_page(struct rtw_dev *rtwdev, u16 pg_addr, goto restore; } - if (rtw_chip_wcpu_11n(rtwdev)) { + if (rtw_chip_wcpu_8051(rtwdev)) { bcn_valid_addr = REG_DWBCN0_CTRL; bcn_valid_mask = BIT_BCN_VALID; } else { @@ -1506,6 +1526,7 @@ restore: rsvd_pg_head = rtwdev->fifo.rsvd_boundary; rtw_write16(rtwdev, REG_FIFOPAGE_CTRL_2, rsvd_pg_head | BIT_BCN_VALID_V1); + rtw_write8(rtwdev, REG_BCN_CTRL, bckp[2]); if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_PCIE) rtw_write8(rtwdev, REG_FWHW_TXQ_CTRL + 2, bckp[1]); rtw_write8(rtwdev, REG_CR + 1, bckp[0]); diff --git a/sys/contrib/dev/rtw88/fw.h b/sys/contrib/dev/rtw88/fw.h index 404de1b0c407..48ad9ceab6ea 100644 --- a/sys/contrib/dev/rtw88/fw.h +++ b/sys/contrib/dev/rtw88/fw.h @@ -557,6 +557,7 @@ static inline void rtw_h2c_pkt_set_header(u8 *h2c_pkt, u8 sub_id) #define H2C_CMD_DEFAULT_PORT 0x2c #define H2C_CMD_RA_INFO 0x40 #define H2C_CMD_RSSI_MONITOR 0x42 +#define H2C_CMD_RA_INFO_HI 0x46 #define H2C_CMD_BCN_FILTER_OFFLOAD_P0 0x56 #define H2C_CMD_BCN_FILTER_OFFLOAD_P1 0x57 #define H2C_CMD_WL_PHY_INFO 0x58 diff --git a/sys/contrib/dev/rtw88/hci.h b/sys/contrib/dev/rtw88/hci.h index 96aeda26014e..d4bee9c3ecfe 100644 --- a/sys/contrib/dev/rtw88/hci.h +++ b/sys/contrib/dev/rtw88/hci.h @@ -19,6 +19,8 @@ struct rtw_hci_ops { void (*link_ps)(struct rtw_dev *rtwdev, bool enter); void (*interface_cfg)(struct rtw_dev *rtwdev); void (*dynamic_rx_agg)(struct rtw_dev *rtwdev, bool enable); + void (*write_firmware_page)(struct rtw_dev *rtwdev, u32 page, + const u8 *data, u32 size); int (*write_data_rsvd_page)(struct rtw_dev *rtwdev, u8 *buf, u32 size); int (*write_data_h2c)(struct rtw_dev *rtwdev, u8 *buf, u32 size); @@ -79,6 +81,12 @@ static inline void rtw_hci_dynamic_rx_agg(struct rtw_dev *rtwdev, bool enable) rtwdev->hci.ops->dynamic_rx_agg(rtwdev, enable); } +static inline void rtw_hci_write_firmware_page(struct rtw_dev *rtwdev, u32 page, + const u8 *data, u32 size) +{ + rtwdev->hci.ops->write_firmware_page(rtwdev, page, data, size); +} + static inline int rtw_hci_write_data_rsvd_page(struct rtw_dev *rtwdev, u8 *buf, u32 size) { diff --git a/sys/contrib/dev/rtw88/mac.c b/sys/contrib/dev/rtw88/mac.c index cae9cca6dca3..eaa928bab240 100644 --- a/sys/contrib/dev/rtw88/mac.c +++ b/sys/contrib/dev/rtw88/mac.c @@ -41,7 +41,7 @@ void rtw_set_channel_mac(struct rtw_dev *rtwdev, u8 channel, u8 bw, } rtw_write32(rtwdev, REG_WMAC_TRXPTCL_CTL, value32); - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) return; value32 = rtw_read32(rtwdev, REG_AFE_CTRL1) & ~(BIT_MAC_CLK_SEL); @@ -67,7 +67,7 @@ static int rtw_mac_pre_system_cfg(struct rtw_dev *rtwdev) rtw_write8(rtwdev, REG_RSV_CTRL, 0); - if (rtw_chip_wcpu_11n(rtwdev)) { + if (rtw_chip_wcpu_8051(rtwdev)) { if (rtw_read32(rtwdev, REG_SYS_CFG1) & BIT_LDO) rtw_write8(rtwdev, REG_LDO_SWR_CTRL, LDO_SEL); else @@ -278,7 +278,7 @@ static int rtw_mac_power_switch(struct rtw_dev *rtwdev, bool pwr_on) bool cur_pwr; int ret; - if (rtw_chip_wcpu_11ac(rtwdev)) { + if (rtw_chip_wcpu_3081(rtwdev)) { rpwm = rtw_read8(rtwdev, rtwdev->hci.rpwm_addr); /* Check FW still exist or not */ @@ -291,6 +291,7 @@ static int rtw_mac_power_switch(struct rtw_dev *rtwdev, bool pwr_on) if (rtw_read8(rtwdev, REG_CR) == 0xea) cur_pwr = false; else if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_USB && + chip->id != RTW_CHIP_TYPE_8814A && (rtw_read8(rtwdev, REG_SYS_STATUS1 + 1) & BIT(0))) cur_pwr = false; else @@ -368,7 +369,7 @@ static int __rtw_mac_init_system_cfg_legacy(struct rtw_dev *rtwdev) static int rtw_mac_init_system_cfg(struct rtw_dev *rtwdev) { - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) return __rtw_mac_init_system_cfg_legacy(rtwdev); return __rtw_mac_init_system_cfg(rtwdev); @@ -784,7 +785,8 @@ static int __rtw_download_firmware(struct rtw_dev *rtwdev, if (!check_firmware_size(data, size)) return -EINVAL; - if (!ltecoex_read_reg(rtwdev, 0x38, <ecoex_bckp)) + if (rtwdev->chip->ltecoex_addr && + !ltecoex_read_reg(rtwdev, 0x38, <ecoex_bckp)) return -EBUSY; wlan_cpu_enable(rtwdev, false); @@ -802,7 +804,8 @@ static int __rtw_download_firmware(struct rtw_dev *rtwdev, wlan_cpu_enable(rtwdev, true); - if (!ltecoex_reg_write(rtwdev, 0x38, ltecoex_bckp)) { + if (rtwdev->chip->ltecoex_addr && + !ltecoex_reg_write(rtwdev, 0x38, ltecoex_bckp)) { ret = -EBUSY; goto dlfw_fail; } @@ -853,8 +856,8 @@ fwdl_ready: } } -static void -write_firmware_page(struct rtw_dev *rtwdev, u32 page, const u8 *data, u32 size) +void rtw_write_firmware_page(struct rtw_dev *rtwdev, u32 page, + const u8 *data, u32 size) { u32 val32; u32 block_nr; @@ -884,6 +887,7 @@ write_firmware_page(struct rtw_dev *rtwdev, u32 page, const u8 *data, u32 size) rtw_write32(rtwdev, write_addr, le32_to_cpu(remain_data)); } } +EXPORT_SYMBOL(rtw_write_firmware_page); static int download_firmware_legacy(struct rtw_dev *rtwdev, const u8 *data, u32 size) @@ -901,11 +905,13 @@ download_firmware_legacy(struct rtw_dev *rtwdev, const u8 *data, u32 size) rtw_write8_set(rtwdev, REG_MCUFW_CTRL, BIT_FWDL_CHK_RPT); for (page = 0; page < total_page; page++) { - write_firmware_page(rtwdev, page, data, DLFW_PAGE_SIZE_LEGACY); + rtw_hci_write_firmware_page(rtwdev, page, data, + DLFW_PAGE_SIZE_LEGACY); data += DLFW_PAGE_SIZE_LEGACY; } if (last_page_size) - write_firmware_page(rtwdev, page, data, last_page_size); + rtw_hci_write_firmware_page(rtwdev, page, data, + last_page_size); if (!check_hw_ready(rtwdev, REG_MCUFW_CTRL, BIT_FWDL_CHK_RPT, 1)) { rtw_err(rtwdev, "failed to check download firmware report\n"); @@ -975,7 +981,7 @@ out: static int _rtw_download_firmware(struct rtw_dev *rtwdev, struct rtw_fw_state *fw) { - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) return __rtw_download_firmware_legacy(rtwdev, fw); return __rtw_download_firmware(rtwdev, fw); @@ -1116,7 +1122,7 @@ static int txdma_queue_mapping(struct rtw_dev *rtwdev) rtw_write8(rtwdev, REG_CR, 0); rtw_write8(rtwdev, REG_CR, MAC_TRX_ENABLE); - if (rtw_chip_wcpu_11ac(rtwdev)) + if (rtw_chip_wcpu_3081(rtwdev)) rtw_write32(rtwdev, REG_H2CQ_CSR, BIT_H2CQ_FULL); if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_SDIO) { @@ -1139,7 +1145,7 @@ int rtw_set_trx_fifo_info(struct rtw_dev *rtwdev) /* config rsvd page num */ fifo->rsvd_drv_pg_num = chip->rsvd_drv_pg_num; fifo->txff_pg_num = chip->txff_size / chip->page_size; - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) fifo->rsvd_pg_num = fifo->rsvd_drv_pg_num; else fifo->rsvd_pg_num = fifo->rsvd_drv_pg_num + @@ -1157,7 +1163,7 @@ int rtw_set_trx_fifo_info(struct rtw_dev *rtwdev) fifo->rsvd_boundary = fifo->txff_pg_num - fifo->rsvd_pg_num; cur_pg_addr = fifo->txff_pg_num; - if (rtw_chip_wcpu_11ac(rtwdev)) { + if (rtw_chip_wcpu_3081(rtwdev)) { cur_pg_addr -= csi_buf_pg_num; fifo->rsvd_csibuf_addr = cur_pg_addr; cur_pg_addr -= RSVD_PG_FW_TXBUF_NUM; @@ -1286,7 +1292,7 @@ static int priority_queue_cfg(struct rtw_dev *rtwdev) pubq_num = fifo->acq_pg_num - pg_tbl->hq_num - pg_tbl->lq_num - pg_tbl->nq_num - pg_tbl->exq_num - pg_tbl->gapq_num; - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) return __priority_queue_cfg_legacy(rtwdev, pg_tbl, pubq_num); else return __priority_queue_cfg(rtwdev, pg_tbl, pubq_num); @@ -1302,7 +1308,7 @@ static int init_h2c(struct rtw_dev *rtwdev) u32 h2cq_free; u32 wp, rp; - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) return 0; h2cq_addr = fifo->rsvd_h2cq_addr << TX_PAGE_SIZE_SHIFT; @@ -1369,7 +1375,7 @@ static int rtw_drv_info_cfg(struct rtw_dev *rtwdev) u8 value8; rtw_write8(rtwdev, REG_RX_DRVINFO_SZ, PHY_STATUS_SIZE); - if (rtw_chip_wcpu_11ac(rtwdev)) { + if (rtw_chip_wcpu_3081(rtwdev)) { value8 = rtw_read8(rtwdev, REG_TRXFF_BNDY + 1); value8 &= 0xF0; /* For rxdesc len = 0 issue */ @@ -1403,3 +1409,13 @@ int rtw_mac_init(struct rtw_dev *rtwdev) return 0; } + +int rtw_mac_postinit(struct rtw_dev *rtwdev) +{ + const struct rtw_chip_info *chip = rtwdev->chip; + + if (!chip->ops->mac_postinit) + return 0; + + return chip->ops->mac_postinit(rtwdev); +} diff --git a/sys/contrib/dev/rtw88/mac.h b/sys/contrib/dev/rtw88/mac.h index 6905e2747372..b73af90ee1d7 100644 --- a/sys/contrib/dev/rtw88/mac.h +++ b/sys/contrib/dev/rtw88/mac.h @@ -34,8 +34,11 @@ int rtw_pwr_seq_parser(struct rtw_dev *rtwdev, const struct rtw_pwr_seq_cmd * const *cmd_seq); int rtw_mac_power_on(struct rtw_dev *rtwdev); void rtw_mac_power_off(struct rtw_dev *rtwdev); +void rtw_write_firmware_page(struct rtw_dev *rtwdev, u32 page, + const u8 *data, u32 size); int rtw_download_firmware(struct rtw_dev *rtwdev, struct rtw_fw_state *fw); int rtw_mac_init(struct rtw_dev *rtwdev); +int rtw_mac_postinit(struct rtw_dev *rtwdev); void rtw_mac_flush_queues(struct rtw_dev *rtwdev, u32 queues, bool drop); int rtw_set_trx_fifo_info(struct rtw_dev *rtwdev); int rtw_ddma_to_fw_fifo(struct rtw_dev *rtwdev, u32 ocp_src, u32 size); diff --git a/sys/contrib/dev/rtw88/mac80211.c b/sys/contrib/dev/rtw88/mac80211.c index 719052b7c6bb..8d84f1a3bc18 100644 --- a/sys/contrib/dev/rtw88/mac80211.c +++ b/sys/contrib/dev/rtw88/mac80211.c @@ -71,7 +71,7 @@ static void rtw_ops_stop(struct ieee80211_hw *hw, bool suspend) mutex_unlock(&rtwdev->mutex); } -static int rtw_ops_config(struct ieee80211_hw *hw, u32 changed) +static int rtw_ops_config(struct ieee80211_hw *hw, int radio_idx, u32 changed) { struct rtw_dev *rtwdev = hw->priv; int ret = 0; @@ -411,6 +411,8 @@ static void rtw_ops_bss_info_changed(struct ieee80211_hw *hw, if (rtw_bf_support) rtw_bf_assoc(rtwdev, vif, conf); + rtw_set_ampdu_factor(rtwdev, vif, conf); + rtw_fw_beacon_filter_config(rtwdev, true, vif); } else { rtw_leave_lps(rtwdev); @@ -721,7 +723,8 @@ static void rtw_ops_mgd_prepare_tx(struct ieee80211_hw *hw, mutex_unlock(&rtwdev->mutex); } -static int rtw_ops_set_rts_threshold(struct ieee80211_hw *hw, u32 value) +static int rtw_ops_set_rts_threshold(struct ieee80211_hw *hw, int radio_idx, + u32 value) { struct rtw_dev *rtwdev = hw->priv; @@ -810,6 +813,7 @@ static int rtw_ops_set_bitrate_mask(struct ieee80211_hw *hw, } static int rtw_ops_set_antenna(struct ieee80211_hw *hw, + int radio_idx, u32 tx_antenna, u32 rx_antenna) { @@ -821,13 +825,14 @@ static int rtw_ops_set_antenna(struct ieee80211_hw *hw, return -EOPNOTSUPP; mutex_lock(&rtwdev->mutex); - ret = chip->ops->set_antenna(rtwdev, tx_antenna, rx_antenna); + ret = chip->ops->set_antenna(rtwdev, -1, tx_antenna, rx_antenna); mutex_unlock(&rtwdev->mutex); return ret; } static int rtw_ops_get_antenna(struct ieee80211_hw *hw, + int radio_idx, u32 *tx_antenna, u32 *rx_antenna) { diff --git a/sys/contrib/dev/rtw88/main.c b/sys/contrib/dev/rtw88/main.c index 963b73f35350..d9e6e9477dfb 100644 --- a/sys/contrib/dev/rtw88/main.c +++ b/sys/contrib/dev/rtw88/main.c @@ -207,7 +207,7 @@ u16 rtw_desc_to_bitrate(u8 desc_rate) return rate.bitrate; } -static struct ieee80211_supported_band rtw_band_2ghz = { +static const struct ieee80211_supported_band rtw_band_2ghz = { .band = NL80211_BAND_2GHZ, .channels = rtw_channeltable_2g, @@ -220,7 +220,7 @@ static struct ieee80211_supported_band rtw_band_2ghz = { .vht_cap = {0}, }; -static struct ieee80211_supported_band rtw_band_5ghz = { +static const struct ieee80211_supported_band rtw_band_5ghz = { .band = NL80211_BAND_5GHZ, .channels = rtw_channeltable_5g, @@ -420,7 +420,7 @@ int rtw_sta_add(struct rtw_dev *rtwdev, struct ieee80211_sta *sta, struct rtw_vif *rtwvif = (struct rtw_vif *)vif->drv_priv; int i; - if (vif->type == NL80211_IFTYPE_STATION) { + if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls) { si->mac_id = rtwvif->mac_id; } else { si->mac_id = rtw_acquire_macid(rtwdev); @@ -462,7 +462,7 @@ void rtw_sta_remove(struct rtw_dev *rtwdev, struct ieee80211_sta *sta, cancel_work_sync(&si->rc_work); - if (vif->type != NL80211_IFTYPE_STATION) + if (vif->type != NL80211_IFTYPE_STATION || sta->tdls) rtw_release_macid(rtwdev, si->mac_id); if (fw_exist) rtw_fw_media_status_report(rtwdev, si->mac_id, false); @@ -717,6 +717,7 @@ void rtw_fw_recovery(struct rtw_dev *rtwdev) if (!test_bit(RTW_FLAG_RESTARTING, rtwdev->flags)) ieee80211_queue_work(rtwdev->hw, &rtwdev->fw_recovery_work); } +EXPORT_SYMBOL(rtw_fw_recovery); static void __fw_recovery_work(struct rtw_dev *rtwdev) { @@ -1315,7 +1316,9 @@ void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, if (sta->deflink.vht_cap.cap & IEEE80211_VHT_CAP_RXLDPC) ldpc_en = VHT_LDPC_EN; } else if (sta->deflink.ht_cap.ht_supported) { - ra_mask |= (sta->deflink.ht_cap.mcs.rx_mask[1] << 20) | + ra_mask |= ((u64)sta->deflink.ht_cap.mcs.rx_mask[3] << 36) | + ((u64)sta->deflink.ht_cap.mcs.rx_mask[2] << 28) | + (sta->deflink.ht_cap.mcs.rx_mask[1] << 20) | (sta->deflink.ht_cap.mcs.rx_mask[0] << 12); if (sta->deflink.ht_cap.cap & IEEE80211_HT_CAP_RX_STBC) stbc_en = HT_STBC_EN; @@ -1325,6 +1328,9 @@ void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, if (efuse->hw_cap.nss == 1 || rtwdev->hal.txrx_1ss) ra_mask &= RA_MASK_VHT_RATES_1SS | RA_MASK_HT_RATES_1SS; + else if (efuse->hw_cap.nss == 2) + ra_mask &= RA_MASK_VHT_RATES_2SS | RA_MASK_HT_RATES_2SS | + RA_MASK_VHT_RATES_1SS | RA_MASK_HT_RATES_1SS; if (hal->current_band_type == RTW_BAND_5G) { ra_mask |= (u64)sta->deflink.supp_rates[NL80211_BAND_5GHZ] << 4; @@ -1387,10 +1393,9 @@ void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, break; } - if (sta->deflink.vht_cap.vht_supported && ra_mask & 0xffc00000) - tx_num = 2; - else if (sta->deflink.ht_cap.ht_supported && ra_mask & 0xfff00000) - tx_num = 2; + if (sta->deflink.vht_cap.vht_supported || + sta->deflink.ht_cap.ht_supported) + tx_num = efuse->hw_cap.nss; rate_id = get_rate_id(wireless_set, bw_mode, tx_num); @@ -1492,6 +1497,12 @@ int rtw_power_on(struct rtw_dev *rtwdev) chip->ops->phy_set_param(rtwdev); + ret = rtw_mac_postinit(rtwdev); + if (ret) { + rtw_err(rtwdev, "failed to configure mac in postinit\n"); + goto err_off; + } + ret = rtw_hci_start(rtwdev); if (ret) { rtw_err(rtwdev, "failed to start hci\n"); @@ -1646,6 +1657,7 @@ static void rtw_init_ht_cap(struct rtw_dev *rtwdev, { const struct rtw_chip_info *chip = rtwdev->chip; struct rtw_efuse *efuse = &rtwdev->efuse; + int i; ht_cap->ht_supported = true; ht_cap->cap = 0; @@ -1665,25 +1677,20 @@ static void rtw_init_ht_cap(struct rtw_dev *rtwdev, ht_cap->ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K; ht_cap->ampdu_density = chip->ampdu_density; ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED; - if (efuse->hw_cap.nss > 1) { - ht_cap->mcs.rx_mask[0] = 0xFF; - ht_cap->mcs.rx_mask[1] = 0xFF; - ht_cap->mcs.rx_mask[4] = 0x01; - ht_cap->mcs.rx_highest = cpu_to_le16(300); - } else { - ht_cap->mcs.rx_mask[0] = 0xFF; - ht_cap->mcs.rx_mask[1] = 0x00; - ht_cap->mcs.rx_mask[4] = 0x01; - ht_cap->mcs.rx_highest = cpu_to_le16(150); - } + + for (i = 0; i < efuse->hw_cap.nss; i++) + ht_cap->mcs.rx_mask[i] = 0xFF; + ht_cap->mcs.rx_mask[4] = 0x01; + ht_cap->mcs.rx_highest = cpu_to_le16(150 * efuse->hw_cap.nss); } static void rtw_init_vht_cap(struct rtw_dev *rtwdev, struct ieee80211_sta_vht_cap *vht_cap) { struct rtw_efuse *efuse = &rtwdev->efuse; - u16 mcs_map; + u16 mcs_map = 0; __le16 highest; + int i; if (efuse->hw_cap.ptcl != EFUSE_HW_CAP_IGNORE && efuse->hw_cap.ptcl != EFUSE_HW_CAP_PTCL_VHT) @@ -1706,21 +1713,15 @@ static void rtw_init_vht_cap(struct rtw_dev *rtwdev, if (rtw_chip_has_rx_ldpc(rtwdev)) vht_cap->cap |= IEEE80211_VHT_CAP_RXLDPC; - mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_9 << 0 | - IEEE80211_VHT_MCS_NOT_SUPPORTED << 4 | - IEEE80211_VHT_MCS_NOT_SUPPORTED << 6 | - IEEE80211_VHT_MCS_NOT_SUPPORTED << 8 | - IEEE80211_VHT_MCS_NOT_SUPPORTED << 10 | - IEEE80211_VHT_MCS_NOT_SUPPORTED << 12 | - IEEE80211_VHT_MCS_NOT_SUPPORTED << 14; - if (efuse->hw_cap.nss > 1) { - highest = cpu_to_le16(780); - mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << 2; - } else { - highest = cpu_to_le16(390); - mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << 2; + for (i = 0; i < 8; i++) { + if (i < efuse->hw_cap.nss) + mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << (i * 2); + else + mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << (i * 2); } + highest = cpu_to_le16(390 * efuse->hw_cap.nss); + vht_cap->vht_mcs.rx_mcs_map = cpu_to_le16(mcs_map); vht_cap->vht_mcs.tx_mcs_map = cpu_to_le16(mcs_map); vht_cap->vht_mcs.rx_highest = highest; @@ -1872,7 +1873,7 @@ static void __update_firmware_info_legacy(struct rtw_dev *rtwdev, static void update_firmware_info(struct rtw_dev *rtwdev, struct rtw_fw_state *fw) { - if (rtw_chip_wcpu_11n(rtwdev)) + if (rtw_chip_wcpu_8051(rtwdev)) __update_firmware_info_legacy(rtwdev, fw); else __update_firmware_info(rtwdev, fw); @@ -2329,7 +2330,6 @@ EXPORT_SYMBOL(rtw_core_deinit); int rtw_register_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw) { - bool sta_mode_only = rtwdev->hci.type == RTW_HCI_TYPE_SDIO; struct rtw_hal *hal = &rtwdev->hal; int max_tx_headroom = 0; int ret; @@ -2353,17 +2353,15 @@ int rtw_register_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw) ieee80211_hw_set(hw, SUPPORTS_PS); ieee80211_hw_set(hw, SUPPORTS_DYNAMIC_PS); ieee80211_hw_set(hw, SUPPORT_FAST_XMIT); - ieee80211_hw_set(hw, SUPPORTS_AMSDU_IN_AMPDU); + if (rtwdev->chip->amsdu_in_ampdu) + ieee80211_hw_set(hw, SUPPORTS_AMSDU_IN_AMPDU); ieee80211_hw_set(hw, HAS_RATE_CONTROL); ieee80211_hw_set(hw, TX_AMSDU); ieee80211_hw_set(hw, SINGLE_SCAN_ON_ALL_BANDS); - if (sta_mode_only) - hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION); - else - hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | - BIT(NL80211_IFTYPE_AP) | - BIT(NL80211_IFTYPE_ADHOC); + hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | + BIT(NL80211_IFTYPE_AP) | + BIT(NL80211_IFTYPE_ADHOC); hw->wiphy->available_antennas_tx = hal->antenna_tx; hw->wiphy->available_antennas_rx = hal->antenna_rx; @@ -2374,7 +2372,7 @@ int rtw_register_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw) hw->wiphy->max_scan_ssids = RTW_SCAN_MAX_SSIDS; hw->wiphy->max_scan_ie_len = rtw_get_max_scan_ie_len(rtwdev); - if (!sta_mode_only && rtwdev->chip->id == RTW_CHIP_TYPE_8822C) { + if (rtwdev->chip->id == RTW_CHIP_TYPE_8822C) { hw->wiphy->iface_combinations = rtw_iface_combs; hw->wiphy->n_iface_combinations = ARRAY_SIZE(rtw_iface_combs); } @@ -2558,6 +2556,38 @@ void rtw_core_enable_beacon(struct rtw_dev *rtwdev, bool enable) } } +void rtw_set_ampdu_factor(struct rtw_dev *rtwdev, struct ieee80211_vif *vif, + struct ieee80211_bss_conf *bss_conf) +{ + const struct rtw_chip_ops *ops = rtwdev->chip->ops; + struct ieee80211_sta *sta; + u8 factor = 0xff; + + if (!ops->set_ampdu_factor) + return; + + rcu_read_lock(); + + sta = ieee80211_find_sta(vif, bss_conf->bssid); + if (!sta) { + rcu_read_unlock(); + rtw_warn(rtwdev, "%s: failed to find station %pM\n", + __func__, bss_conf->bssid); + return; + } + + if (sta->deflink.vht_cap.vht_supported) + factor = u32_get_bits(sta->deflink.vht_cap.cap, + IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK); + else if (sta->deflink.ht_cap.ht_supported) + factor = sta->deflink.ht_cap.ampdu_factor; + + rcu_read_unlock(); + + if (factor != 0xff) + ops->set_ampdu_factor(rtwdev, factor); +} + MODULE_AUTHOR("Realtek Corporation"); MODULE_DESCRIPTION("Realtek 802.11ac wireless core module"); MODULE_LICENSE("Dual BSD/GPL"); diff --git a/sys/contrib/dev/rtw88/main.h b/sys/contrib/dev/rtw88/main.h index 963863618523..d1e4f3e41ba1 100644 --- a/sys/contrib/dev/rtw88/main.h +++ b/sys/contrib/dev/rtw88/main.h @@ -70,7 +70,7 @@ enum rtw_hci_type { }; struct rtw_hci { - struct rtw_hci_ops *ops; + const struct rtw_hci_ops *ops; enum rtw_hci_type type; u32 rpwm_addr; @@ -175,9 +175,14 @@ enum rtw_rate_section { RTW_RATE_SECTION_HT_2S, RTW_RATE_SECTION_VHT_1S, RTW_RATE_SECTION_VHT_2S, + __RTW_RATE_SECTION_2SS_MAX = RTW_RATE_SECTION_VHT_2S, + RTW_RATE_SECTION_HT_3S, + RTW_RATE_SECTION_HT_4S, + RTW_RATE_SECTION_VHT_3S, + RTW_RATE_SECTION_VHT_4S, /* keep last */ - RTW_RATE_SECTION_MAX, + RTW_RATE_SECTION_NUM, }; enum rtw_wireless_set { @@ -200,6 +205,7 @@ enum rtw_chip_type { RTW_CHIP_TYPE_8703B, RTW_CHIP_TYPE_8821A, RTW_CHIP_TYPE_8812A, + RTW_CHIP_TYPE_8814A, }; enum rtw_tx_queue_type { @@ -389,6 +395,9 @@ enum rtw_evm { RTW_EVM_1SS, RTW_EVM_2SS_A, RTW_EVM_2SS_B, + RTW_EVM_3SS_A, + RTW_EVM_3SS_B, + RTW_EVM_3SS_C, /* keep it last */ RTW_EVM_NUM }; @@ -406,6 +415,10 @@ enum rtw_snr { RTW_SNR_2SS_B, RTW_SNR_2SS_C, RTW_SNR_2SS_D, + RTW_SNR_3SS_A, + RTW_SNR_3SS_B, + RTW_SNR_3SS_C, + RTW_SNR_3SS_D, /* keep it last */ RTW_SNR_NUM }; @@ -831,7 +844,7 @@ struct rtw_vif { }; struct rtw_regulatory { - char alpha2[2]; + char alpha2[2] __nonstring; u8 txpwr_regd_2g; u8 txpwr_regd_5g; }; @@ -854,6 +867,7 @@ struct rtw_chip_ops { int (*power_on)(struct rtw_dev *rtwdev); void (*power_off)(struct rtw_dev *rtwdev); int (*mac_init)(struct rtw_dev *rtwdev); + int (*mac_postinit)(struct rtw_dev *rtwdev); int (*dump_fw_crash)(struct rtw_dev *rtwdev); void (*shutdown)(struct rtw_dev *rtwdev); int (*read_efuse)(struct rtw_dev *rtwdev, u8 *map); @@ -869,11 +883,12 @@ struct rtw_chip_ops { void (*set_tx_power_index)(struct rtw_dev *rtwdev); int (*rsvd_page_dump)(struct rtw_dev *rtwdev, u8 *buf, u32 offset, u32 size); - int (*set_antenna)(struct rtw_dev *rtwdev, + int (*set_antenna)(struct rtw_dev *rtwdev, int radio_idx, u32 antenna_tx, *** 28605 LINES SKIPPED *** From nobody Tue Oct 28 01:59:17 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwYTK50KTz6G4Q2; Tue, 28 Oct 2025 01:59:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwYTK3qx3z3VFp; Tue, 28 Oct 2025 01:59:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616757; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=utHqdHMWVhVWZgKhcP+zA5dfjOG4Lxk2WI1irn2m7vI=; b=abFHISIqhgIYuu40AjTdhCTqk6K3FVRLWGqNMk0x4sNnQ3iUoQiMgVz7UpiQ3PN/KckSmB 5vc5l2TjbWfodK5OBzG3gxYNEzelt8FwGdMNqVtCtIKvQ+7P4kkdZDRKr6AkoekAIkY4k9 AQRlDWwWGXXOt8mb4kL+llyFXwMBKhOxv4JWf90J2/NwpQQ+OTDtV0Kyz4k2b64aHiQA/t IYkzVs5Eb6xVFj/EtH7LYOOhxy1hGb+Wm0Yw5dY2LUJ8PBpkXu82HKH7dICKhM6oQI6WJg epVKIRr+ArJSSmwGH8Af6zhx1a4Wg7AOgL757tJfpMW8PXdh3yp09nFFwfHtvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616757; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=utHqdHMWVhVWZgKhcP+zA5dfjOG4Lxk2WI1irn2m7vI=; b=KVq+wxM9Z46PiyBJv9Vlp+Wn5e0t8tQQcFDYKdf4HRCbklUijq/j9L2hpBuN4mhRAzOu/4 kze26Yckd6oV0cPLpBwjo+wC0k5tESZ4MA/ZHGcHSYCBJzWFLSbhYlh7uQOFUCrY4oozPE v49HmERyc0l1XCgwMU4bh0Bty89Gg4VoaS8fTnPIZJ4LBD8Tws372Dr6YoLdJF9JRvKO20 lRWsqbNEYMFYmXgLnQHb0Tnmxy7/8hdvtPeAmWvNpgXTqVZXHxXM4NppKDF3pNFQdw/860 gswpEJyymb84hCg2DkMiaSMsmNfgodXtJpSJlyzRg+J74rDouMp7qaQFtPYMhw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761616757; a=rsa-sha256; cv=none; b=JdeTnWthymvfEltIiKyo9Qm1BBXTpxmTfMWs61nU1vD5Mv3yIJoCgSkzNt98mRPrD8IDdz q1w8OSxk+91tB4061COqBaDZ6ROk3QEfwa+HeDQdWO2KImWJDxm0O5MuvVYykVj1B1i6ud U3IAa+00qoY9+R9Ih3aPIF+cfzbYpTGCl4A7WDi/ccJoselvL+7I2HdOrSYnLmxuTfJ6HK 4IQvpmTurMAwuFrE9IX850Jbh5ncG1xSfqmbTKMkHkQG5sUpyWktlHwF8vsDlqney9KPqA 5qcZLHjsu8r4zHvS1Zp2Ja23dNqTFSBKosztreuixaSGobWYUrFgLOxIrQo0IA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwYTK3Py9zTqJ; Tue, 28 Oct 2025 01:59:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S1xHwJ071913; Tue, 28 Oct 2025 01:59:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S1xH7l071908; Tue, 28 Oct 2025 01:59:17 GMT (envelope-from git) Date: Tue, 28 Oct 2025 01:59:17 GMT Message-Id: <202510280159.59S1xH7l071908@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: dd5a80ba09da - releng/15.0 - rtw89: update Realtek's rtw89 driver List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: dd5a80ba09dac5f03f5cbb60460cfde5298ac5d3 Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=dd5a80ba09dac5f03f5cbb60460cfde5298ac5d3 commit dd5a80ba09dac5f03f5cbb60460cfde5298ac5d3 Author: Bjoern A. Zeeb AuthorDate: 2025-10-17 20:46:45 +0000 Commit: Colin Percival CommitDate: 2025-10-28 01:58:40 +0000 rtw89: update Realtek's rtw89 driver This version is based on git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git e5f0a698b34ed76002dc5cff3804a61c80233a7a ( tag: v6.17 ). Approved by: re (cperciva) (cherry picked from commit 354a030185c650d1465ed2035a83636b8f825d72) (cherry picked from commit a13158f451cffe04a723a71144e614ebb6821a58) --- sys/contrib/dev/rtw89/Kconfig | 28 +- sys/contrib/dev/rtw89/Makefile | 9 + sys/contrib/dev/rtw89/acpi.c | 1140 +++++++- sys/contrib/dev/rtw89/acpi.h | 223 +- sys/contrib/dev/rtw89/cam.c | 13 + sys/contrib/dev/rtw89/chan.c | 993 +++++-- sys/contrib/dev/rtw89/chan.h | 92 +- sys/contrib/dev/rtw89/coex.c | 4128 +++++++++++++++++----------- sys/contrib/dev/rtw89/coex.h | 25 +- sys/contrib/dev/rtw89/core.c | 1019 +++++-- sys/contrib/dev/rtw89/core.h | 572 +++- sys/contrib/dev/rtw89/debug.c | 2232 ++++++++------- sys/contrib/dev/rtw89/fw.c | 1464 ++++++++-- sys/contrib/dev/rtw89/fw.h | 305 +- sys/contrib/dev/rtw89/mac.c | 316 ++- sys/contrib/dev/rtw89/mac.h | 63 +- sys/contrib/dev/rtw89/mac80211.c | 420 +-- sys/contrib/dev/rtw89/mac_be.c | 12 +- sys/contrib/dev/rtw89/pci.c | 78 +- sys/contrib/dev/rtw89/pci.h | 57 +- sys/contrib/dev/rtw89/pci_be.c | 2 +- sys/contrib/dev/rtw89/phy.c | 1209 +++++--- sys/contrib/dev/rtw89/phy.h | 40 +- sys/contrib/dev/rtw89/phy_be.c | 2 +- sys/contrib/dev/rtw89/ps.c | 207 +- sys/contrib/dev/rtw89/ps.h | 6 + sys/contrib/dev/rtw89/reg.h | 95 +- sys/contrib/dev/rtw89/regd.c | 780 ++++-- sys/contrib/dev/rtw89/rtw8851b.c | 199 +- sys/contrib/dev/rtw89/rtw8851b_rfk.c | 156 +- sys/contrib/dev/rtw89/rtw8851b_rfk_table.c | 77 +- sys/contrib/dev/rtw89/rtw8851b_rfk_table.h | 2 +- sys/contrib/dev/rtw89/rtw8851b_table.c | 501 ++-- sys/contrib/dev/rtw89/rtw8851be.c | 1 + sys/contrib/dev/rtw89/rtw8851bu.c | 39 + sys/contrib/dev/rtw89/rtw8852a.c | 35 +- sys/contrib/dev/rtw89/rtw8852ae.c | 1 + sys/contrib/dev/rtw89/rtw8852b.c | 128 +- sys/contrib/dev/rtw89/rtw8852b_common.c | 46 +- sys/contrib/dev/rtw89/rtw8852b_rfk.c | 95 +- sys/contrib/dev/rtw89/rtw8852b_rfk.h | 3 + sys/contrib/dev/rtw89/rtw8852be.c | 1 + sys/contrib/dev/rtw89/rtw8852bt.c | 47 +- sys/contrib/dev/rtw89/rtw8852bt_rfk.c | 87 +- sys/contrib/dev/rtw89/rtw8852bt_rfk.h | 3 + sys/contrib/dev/rtw89/rtw8852bte.c | 1 + sys/contrib/dev/rtw89/rtw8852bu.c | 55 + sys/contrib/dev/rtw89/rtw8852c.c | 65 +- sys/contrib/dev/rtw89/rtw8852ce.c | 1 + sys/contrib/dev/rtw89/rtw8922a.c | 157 +- sys/contrib/dev/rtw89/rtw8922a_rfk.c | 57 +- sys/contrib/dev/rtw89/rtw8922ae.c | 1 + sys/contrib/dev/rtw89/sar.c | 677 ++++- sys/contrib/dev/rtw89/sar.h | 27 +- sys/contrib/dev/rtw89/ser.c | 34 +- sys/contrib/dev/rtw89/txrx.h | 32 + sys/contrib/dev/rtw89/usb.c | 1042 +++++++ sys/contrib/dev/rtw89/usb.h | 65 + sys/contrib/dev/rtw89/util.c | 220 +- sys/contrib/dev/rtw89/util.h | 13 +- sys/contrib/dev/rtw89/wow.c | 28 +- sys/contrib/dev/rtw89/wow.h | 14 +- sys/modules/rtw89/Makefile | 8 +- 63 files changed, 14320 insertions(+), 5128 deletions(-) diff --git a/sys/contrib/dev/rtw89/Kconfig b/sys/contrib/dev/rtw89/Kconfig index b1c86cdd9c0e..4288c30b400a 100644 --- a/sys/contrib/dev/rtw89/Kconfig +++ b/sys/contrib/dev/rtw89/Kconfig @@ -17,6 +17,9 @@ config RTW89_CORE config RTW89_PCI tristate +config RTW89_USB + tristate + config RTW89_8851B tristate @@ -49,6 +52,17 @@ config RTW89_8851BE 802.11ax PCIe wireless network (Wi-Fi 6) adapter +config RTW89_8851BU + tristate "Realtek 8851BU USB wireless network (Wi-Fi 6) adapter" + depends on USB + select RTW89_CORE + select RTW89_USB + select RTW89_8851B + help + Select this option will enable support for 8851BU chipset + + 802.11ax USB wireless network (Wi-Fi 6) adapter + config RTW89_8852AE tristate "Realtek 8852AE PCI wireless network (Wi-Fi 6) adapter" depends on PCI @@ -72,6 +86,18 @@ config RTW89_8852BE 802.11ax PCIe wireless network (Wi-Fi 6) adapter +config RTW89_8852BU + tristate "Realtek 8852BU USB wireless network (Wi-Fi 6) adapter" + depends on USB + select RTW89_CORE + select RTW89_USB + select RTW89_8852B + select RTW89_8852B_COMMON + help + Select this option will enable support for 8852BU chipset + + 802.11ax USB wireless network (Wi-Fi 6) adapter + config RTW89_8852BTE tristate "Realtek 8852BE-VT PCI wireless network (Wi-Fi 6) adapter" depends on PCI @@ -123,7 +149,7 @@ config RTW89_DEBUGMSG config RTW89_DEBUGFS bool "Realtek rtw89 debugfs support" - depends on RTW89_CORE + depends on RTW89_CORE && CFG80211_DEBUGFS select RTW89_DEBUG help Enable debugfs support diff --git a/sys/contrib/dev/rtw89/Makefile b/sys/contrib/dev/rtw89/Makefile index c751013e811e..23e43c444f69 100644 --- a/sys/contrib/dev/rtw89/Makefile +++ b/sys/contrib/dev/rtw89/Makefile @@ -31,6 +31,9 @@ rtw89_8851b-objs := rtw8851b.o \ obj-$(CONFIG_RTW89_8851BE) += rtw89_8851be.o rtw89_8851be-objs := rtw8851be.o +obj-$(CONFIG_RTW89_8851BU) += rtw89_8851bu.o +rtw89_8851bu-objs := rtw8851bu.o + obj-$(CONFIG_RTW89_8852A) += rtw89_8852a.o rtw89_8852a-objs := rtw8852a.o \ rtw8852a_table.o \ @@ -52,6 +55,9 @@ rtw89_8852b-objs := rtw8852b.o \ obj-$(CONFIG_RTW89_8852BE) += rtw89_8852be.o rtw89_8852be-objs := rtw8852be.o +obj-$(CONFIG_RTW89_8852BU) += rtw89_8852bu.o +rtw89_8852bu-objs := rtw8852bu.o + obj-$(CONFIG_RTW89_8852BT) += rtw89_8852bt.o rtw89_8852bt-objs := rtw8852bt.o \ rtw8852bt_rfk.o \ @@ -81,3 +87,6 @@ rtw89_core-$(CONFIG_RTW89_DEBUG) += debug.o obj-$(CONFIG_RTW89_PCI) += rtw89_pci.o rtw89_pci-y := pci.o pci_be.o +obj-$(CONFIG_RTW89_USB) += rtw89_usb.o +rtw89_usb-y := usb.o + diff --git a/sys/contrib/dev/rtw89/acpi.c b/sys/contrib/dev/rtw89/acpi.c index f5dedb12c129..fdba1ea46ec6 100644 --- a/sys/contrib/dev/rtw89/acpi.c +++ b/sys/contrib/dev/rtw89/acpi.c @@ -12,6 +12,125 @@ static const guid_t rtw89_guid = GUID_INIT(0xD2A8C3E8, 0x4B69, 0x4F00, 0x82, 0xBD, 0xFE, 0x86, 0x07, 0x80, 0x3A, 0xA7); +static u32 rtw89_acpi_traversal_object(struct rtw89_dev *rtwdev, + const union acpi_object *obj, u8 *pos) +{ + const union acpi_object *elm; + unsigned int i; + u32 sub_len; + u32 len = 0; + u8 *tmp; + + switch (obj->type) { + case ACPI_TYPE_INTEGER: + if (pos) + pos[len] = obj->integer.value; + + len++; + break; + case ACPI_TYPE_BUFFER: + if (unlikely(obj->buffer.length == 0)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "%s: invalid buffer type\n", __func__); + goto err; + } + + if (pos) + memcpy(pos, obj->buffer.pointer, obj->buffer.length); + + len += obj->buffer.length; + break; + case ACPI_TYPE_PACKAGE: + if (unlikely(obj->package.count == 0)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "%s: invalid package type\n", __func__); + goto err; + } + + for (i = 0; i < obj->package.count; i++) { + elm = &obj->package.elements[i]; + tmp = pos ? pos + len : NULL; + + sub_len = rtw89_acpi_traversal_object(rtwdev, elm, tmp); + if (unlikely(sub_len == 0)) + goto err; + + len += sub_len; + } + break; + default: + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: unhandled type: %d\n", + __func__, obj->type); + goto err; + } + + return len; + +err: + return 0; +} + +static u32 rtw89_acpi_calculate_object_length(struct rtw89_dev *rtwdev, + const union acpi_object *obj) +{ + return rtw89_acpi_traversal_object(rtwdev, obj, NULL); +} + +static struct rtw89_acpi_data * +rtw89_acpi_evaluate_method(struct rtw89_dev *rtwdev, const char *method) +{ + struct acpi_buffer buf = {ACPI_ALLOCATE_BUFFER, NULL}; + struct rtw89_acpi_data *data = NULL; + acpi_handle root, handle; + union acpi_object *obj; + acpi_status status; + u32 len; + + root = ACPI_HANDLE(rtwdev->dev); + if (!root) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "acpi (%s): failed to get root\n", method); + return NULL; + } + +#if defined(__linux__) + status = acpi_get_handle(root, (acpi_string)method, &handle); +#elif defined(__FreeBSD__) + status = acpi_get_handle(root, method, &handle); +#endif + if (ACPI_FAILURE(status)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "acpi (%s): failed to get handle\n", method); + return NULL; + } + + status = acpi_evaluate_object(handle, NULL, NULL, &buf); + if (ACPI_FAILURE(status)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "acpi (%s): failed to evaluate object\n", method); + return NULL; + } + + obj = buf.pointer; + len = rtw89_acpi_calculate_object_length(rtwdev, obj); + if (unlikely(len == 0)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "acpi (%s): failed to traversal obj len\n", method); + goto out; + } + + data = kzalloc(struct_size(data, buf, len), GFP_KERNEL); + if (!data) + goto out; + + data->len = len; + rtw89_acpi_traversal_object(rtwdev, obj, data->buf); + +out: + ACPI_FREE(obj); + return data; +} + static int rtw89_acpi_dsm_get_value(struct rtw89_dev *rtwdev, union acpi_object *obj, u8 *value) @@ -121,6 +240,138 @@ int rtw89_acpi_dsm_get_policy_6ghz_sp(struct rtw89_dev *rtwdev, return 0; } +static bool chk_acpi_policy_6ghz_vlp_sig(const struct rtw89_acpi_policy_6ghz_vlp *p) +{ + return p->signature[0] == 0x52 && + p->signature[1] == 0x54 && + p->signature[2] == 0x4B && + p->signature[3] == 0x0B; +} + +static +int rtw89_acpi_dsm_get_policy_6ghz_vlp(struct rtw89_dev *rtwdev, + union acpi_object *obj, + struct rtw89_acpi_policy_6ghz_vlp **policy) +{ + const struct rtw89_acpi_policy_6ghz_vlp *ptr; + u32 buf_len; + + if (obj->type != ACPI_TYPE_BUFFER) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "acpi: expect buffer but type: %d\n", obj->type); + return -EINVAL; + } + + buf_len = obj->buffer.length; + if (buf_len < sizeof(*ptr)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: invalid buffer length: %u\n", + __func__, buf_len); + return -EINVAL; + } + + ptr = (typeof(ptr))obj->buffer.pointer; + if (!chk_acpi_policy_6ghz_vlp_sig(ptr)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: bad signature\n", __func__); + return -EINVAL; + } + + *policy = kmemdup(ptr, sizeof(*ptr), GFP_KERNEL); + if (!*policy) + return -ENOMEM; + + rtw89_hex_dump(rtwdev, RTW89_DBG_ACPI, "policy_6ghz_vlp: ", *policy, + sizeof(*ptr)); + return 0; +} + +static bool chk_acpi_policy_tas_sig(const struct rtw89_acpi_policy_tas *p) +{ + return p->signature[0] == 0x52 && + p->signature[1] == 0x54 && + p->signature[2] == 0x4B && + p->signature[3] == 0x05; +} + +static int rtw89_acpi_dsm_get_policy_tas(struct rtw89_dev *rtwdev, + union acpi_object *obj, + struct rtw89_acpi_policy_tas **policy) +{ + const struct rtw89_acpi_policy_tas *ptr; + u32 buf_len; + + if (obj->type != ACPI_TYPE_BUFFER) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "acpi: expect buffer but type: %d\n", obj->type); + return -EINVAL; + } + + buf_len = obj->buffer.length; + if (buf_len < sizeof(*ptr)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: invalid buffer length: %u\n", + __func__, buf_len); + return -EINVAL; + } + + ptr = (typeof(ptr))obj->buffer.pointer; + if (!chk_acpi_policy_tas_sig(ptr)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: bad signature\n", __func__); + return -EINVAL; + } + + *policy = kmemdup(ptr, sizeof(*ptr), GFP_KERNEL); + if (!*policy) + return -ENOMEM; + + rtw89_hex_dump(rtwdev, RTW89_DBG_ACPI, "policy_tas: ", *policy, + sizeof(*ptr)); + return 0; +} + +static +bool chk_acpi_policy_reg_rules_sig(const struct rtw89_acpi_policy_reg_rules *p) +{ + return p->signature[0] == 0x52 && + p->signature[1] == 0x54 && + p->signature[2] == 0x4B && + p->signature[3] == 0x0A; +} + +static +int rtw89_acpi_dsm_get_policy_reg_rules(struct rtw89_dev *rtwdev, + union acpi_object *obj, + struct rtw89_acpi_policy_reg_rules **policy) +{ + const struct rtw89_acpi_policy_reg_rules *ptr; + u32 buf_len; + + if (obj->type != ACPI_TYPE_BUFFER) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "acpi: expect buffer but type: %d\n", obj->type); + return -EINVAL; + } + + buf_len = obj->buffer.length; + if (buf_len < sizeof(*ptr)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: invalid buffer length: %u\n", + __func__, buf_len); + return -EINVAL; + } + + ptr = (typeof(ptr))obj->buffer.pointer; + if (!chk_acpi_policy_reg_rules_sig(ptr)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: bad signature\n", __func__); + return -EINVAL; + } + + *policy = kmemdup(ptr, sizeof(*ptr), GFP_KERNEL); + if (!*policy) + return -ENOMEM; + + rtw89_hex_dump(rtwdev, RTW89_DBG_ACPI, "policy_reg_rules: ", *policy, + sizeof(*ptr)); + return 0; +} + int rtw89_acpi_evaluate_dsm(struct rtw89_dev *rtwdev, enum rtw89_acpi_dsm_func func, struct rtw89_acpi_dsm_result *res) @@ -142,6 +393,14 @@ int rtw89_acpi_evaluate_dsm(struct rtw89_dev *rtwdev, else if (func == RTW89_ACPI_DSM_FUNC_6GHZ_SP_SUP) ret = rtw89_acpi_dsm_get_policy_6ghz_sp(rtwdev, obj, &res->u.policy_6ghz_sp); + else if (func == RTW89_ACPI_DSM_FUNC_6GHZ_VLP_SUP) + ret = rtw89_acpi_dsm_get_policy_6ghz_vlp(rtwdev, obj, + &res->u.policy_6ghz_vlp); + else if (func == RTW89_ACPI_DSM_FUNC_TAS_EN) + ret = rtw89_acpi_dsm_get_policy_tas(rtwdev, obj, &res->u.policy_tas); + else if (func == RTW89_ACPI_DSM_FUNC_REG_RULES_EN) + ret = rtw89_acpi_dsm_get_policy_reg_rules(rtwdev, obj, + &res->u.policy_reg_rules); else ret = rtw89_acpi_dsm_get_value(rtwdev, obj, &res->u.value); @@ -152,46 +411,879 @@ int rtw89_acpi_evaluate_dsm(struct rtw89_dev *rtwdev, int rtw89_acpi_evaluate_rtag(struct rtw89_dev *rtwdev, struct rtw89_acpi_rtag_result *res) { - struct acpi_buffer buf = {ACPI_ALLOCATE_BUFFER, NULL}; - acpi_handle root, handle; - union acpi_object *obj; - acpi_status status; +#if defined(__linux__) + const struct rtw89_acpi_data *data; +#elif defined(__FreeBSD__) + struct rtw89_acpi_data *data; +#endif u32 buf_len; int ret = 0; - root = ACPI_HANDLE(rtwdev->dev); - if (!root) - return -EOPNOTSUPP; - - status = acpi_get_handle(root, (acpi_string)"RTAG", &handle); - if (ACPI_FAILURE(status)) + data = rtw89_acpi_evaluate_method(rtwdev, "RTAG"); + if (!data) return -EIO; - status = acpi_evaluate_object(handle, NULL, NULL, &buf); - if (ACPI_FAILURE(status)) - return -EIO; + buf_len = data->len; + if (buf_len != sizeof(*res)) { + rtw89_debug(rtwdev, RTW89_DBG_ACPI, "%s: invalid buffer length: %u\n", + __func__, buf_len); + ret = -EINVAL; + goto out; + } - obj = buf.pointer; - if (obj->type != ACPI_TYPE_BUFFER) { + *res = *(struct rtw89_acpi_rtag_result *)data->buf; + + rtw89_hex_dump(rtwdev, RTW89_DBG_ACPI, "antenna_gain: ", res, sizeof(*res)); + +out: + kfree(data); + return ret; +} + +enum rtw89_acpi_sar_subband rtw89_acpi_sar_get_subband(struct rtw89_dev *rtwdev, + u32 center_freq) +{ + switch (center_freq) { + default: rtw89_debug(rtwdev, RTW89_DBG_ACPI, - "acpi: expect buffer but type: %d\n", obj->type); - ret = -EINVAL; + "center freq %u to ACPI SAR subband is unhandled\n", + center_freq); + fallthrough; + case 2412 ... 2484: + return RTW89_ACPI_SAR_2GHZ_SUBBAND; + case 5180 ... 5240: + return RTW89_ACPI_SAR_5GHZ_SUBBAND_1; + case 5250 ... 5320: + return RTW89_ACPI_SAR_5GHZ_SUBBAND_2; + case 5500 ... 5720: + return RTW89_ACPI_SAR_5GHZ_SUBBAND_2E; + case 5745 ... 5885: + return RTW89_ACPI_SAR_5GHZ_SUBBAND_3_4; + case 5955 ... 6155: + return RTW89_ACPI_SAR_6GHZ_SUBBAND_5_L; + case 6175 ... 6415: + return RTW89_ACPI_SAR_6GHZ_SUBBAND_5_H; + case 6435 ... 6515: + return RTW89_ACPI_SAR_6GHZ_SUBBAND_6; + case 6535 ... 6695: + return RTW89_ACPI_SAR_6GHZ_SUBBAND_7_L; + case 6715 ... 6855: + return RTW89_ACPI_SAR_6GHZ_SUBBAND_7_H; + + /* freq 6875 (ch 185, 20MHz) spans RTW89_ACPI_SAR_6GHZ_SUBBAND_7_H + * and RTW89_ACPI_SAR_6GHZ_SUBBAND_8, so directly describe it with + * struct rtw89_6ghz_span. + */ + + case 6895 ... 7115: + return RTW89_ACPI_SAR_6GHZ_SUBBAND_8; + } +} + +enum rtw89_band rtw89_acpi_sar_subband_to_band(struct rtw89_dev *rtwdev, + enum rtw89_acpi_sar_subband subband) +{ + switch (subband) { + default: + rtw89_debug(rtwdev, RTW89_DBG_ACPI, + "ACPI SAR subband %u to band is unhandled\n", subband); + fallthrough; + case RTW89_ACPI_SAR_2GHZ_SUBBAND: + return RTW89_BAND_2G; + case RTW89_ACPI_SAR_5GHZ_SUBBAND_1: + return RTW89_BAND_5G; + case RTW89_ACPI_SAR_5GHZ_SUBBAND_2: + return RTW89_BAND_5G; + case RTW89_ACPI_SAR_5GHZ_SUBBAND_2E: + return RTW89_BAND_5G; + case RTW89_ACPI_SAR_5GHZ_SUBBAND_3_4: + return RTW89_BAND_5G; + case RTW89_ACPI_SAR_6GHZ_SUBBAND_5_L: + return RTW89_BAND_6G; + case RTW89_ACPI_SAR_6GHZ_SUBBAND_5_H: + return RTW89_BAND_6G; + case RTW89_ACPI_SAR_6GHZ_SUBBAND_6: + return RTW89_BAND_6G; + case RTW89_ACPI_SAR_6GHZ_SUBBAND_7_L: + return RTW89_BAND_6G; + case RTW89_ACPI_SAR_6GHZ_SUBBAND_7_H: + return RTW89_BAND_6G; + case RTW89_ACPI_SAR_6GHZ_SUBBAND_8: + return RTW89_BAND_6G; + } +} + +static u8 rtw89_acpi_sar_rfpath_to_hp_antidx(enum rtw89_rf_path rfpath) +{ + switch (rfpath) { + default: + case RF_PATH_B: + return 0; + case RF_PATH_A: + return 1; + } +} + +static u8 rtw89_acpi_sar_rfpath_to_rt_antidx(enum rtw89_rf_path rfpath) +{ + switch (rfpath) { + default: + case RF_PATH_A: + return 0; + case RF_PATH_B: + return 1; + } +} + +static s16 rtw89_acpi_sar_normalize_hp_val(u8 v) +{ + static const u8 bias = 10; + static const u8 fct = 1; + u16 res; + + BUILD_BUG_ON(fct > TXPWR_FACTOR_OF_RTW89_ACPI_SAR); + + res = (bias << TXPWR_FACTOR_OF_RTW89_ACPI_SAR) + + (v << (TXPWR_FACTOR_OF_RTW89_ACPI_SAR - fct)); + + return min_t(s32, res, MAX_VAL_OF_RTW89_ACPI_SAR); +} + +static s16 rtw89_acpi_sar_normalize_rt_val(u8 v) +{ + static const u8 fct = 3; + u16 res; + + BUILD_BUG_ON(fct > TXPWR_FACTOR_OF_RTW89_ACPI_SAR); + + res = v << (TXPWR_FACTOR_OF_RTW89_ACPI_SAR - fct); + + return min_t(s32, res, MAX_VAL_OF_RTW89_ACPI_SAR); +} + +static +void rtw89_acpi_sar_load_std_legacy(struct rtw89_dev *rtwdev, + const struct rtw89_acpi_sar_recognition *rec, + const void *content, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_sar_std_legacy *ptr = content; + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) { + u8 antidx = rec->rfpath_to_antidx(path); + + if (subband < RTW89_ACPI_SAR_SUBBAND_NR_LEGACY) + ent->v[subband][path] = + rec->normalize(ptr->v[antidx][subband]); + else + ent->v[subband][path] = MAX_VAL_OF_RTW89_ACPI_SAR; + } + } +} + +static +void rtw89_acpi_sar_load_std_has_6ghz(struct rtw89_dev *rtwdev, + const struct rtw89_acpi_sar_recognition *rec, + const void *content, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_sar_std_has_6ghz *ptr = content; + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + + BUILD_BUG_ON(RTW89_ACPI_SAR_SUBBAND_NR_HAS_6GHZ != NUM_OF_RTW89_ACPI_SAR_SUBBAND); + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) { + u8 antidx = rec->rfpath_to_antidx(path); + + ent->v[subband][path] = rec->normalize(ptr->v[antidx][subband]); + } + } +} + +static +void rtw89_acpi_sar_load_sml_legacy(struct rtw89_dev *rtwdev, + const struct rtw89_acpi_sar_recognition *rec, + const void *content, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_sar_sml_legacy *ptr = content; + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) { + u8 antidx = rec->rfpath_to_antidx(path); + + if (subband < RTW89_ACPI_SAR_SUBBAND_NR_LEGACY) + ent->v[subband][path] = + rec->normalize(ptr->v[antidx][subband]); + else + ent->v[subband][path] = MAX_VAL_OF_RTW89_ACPI_SAR; + } + } +} + +static +void rtw89_acpi_sar_load_sml_has_6ghz(struct rtw89_dev *rtwdev, + const struct rtw89_acpi_sar_recognition *rec, + const void *content, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_sar_sml_has_6ghz *ptr = content; + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + + BUILD_BUG_ON(RTW89_ACPI_SAR_SUBBAND_NR_HAS_6GHZ != NUM_OF_RTW89_ACPI_SAR_SUBBAND); + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) { + u8 antidx = rec->rfpath_to_antidx(path); + + ent->v[subband][path] = rec->normalize(ptr->v[antidx][subband]); + } + } +} + +static s16 rtw89_acpi_geo_sar_normalize_delta(s8 delta) +{ + static const u8 fct = 1; + + BUILD_BUG_ON(fct > TXPWR_FACTOR_OF_RTW89_ACPI_SAR); + + return delta << (TXPWR_FACTOR_OF_RTW89_ACPI_SAR - fct); +} + +static enum rtw89_acpi_geo_sar_regd_hp +rtw89_acpi_geo_sar_regd_convert_hp_idx(enum rtw89_regulation_type regd) +{ + switch (regd) { + case RTW89_FCC: + case RTW89_IC: + case RTW89_NCC: + case RTW89_CHILE: + case RTW89_MEXICO: + return RTW89_ACPI_GEO_SAR_REGD_HP_FCC; + case RTW89_ETSI: + case RTW89_MKK: + case RTW89_ACMA: + return RTW89_ACPI_GEO_SAR_REGD_HP_ETSI; + default: + case RTW89_WW: + case RTW89_NA: + case RTW89_KCC: + return RTW89_ACPI_GEO_SAR_REGD_HP_WW; + } +} + +static enum rtw89_acpi_geo_sar_regd_rt +rtw89_acpi_geo_sar_regd_convert_rt_idx(enum rtw89_regulation_type regd) +{ + switch (regd) { + case RTW89_FCC: + case RTW89_NCC: + case RTW89_CHILE: + case RTW89_MEXICO: + return RTW89_ACPI_GEO_SAR_REGD_RT_FCC; + case RTW89_ETSI: + case RTW89_ACMA: + return RTW89_ACPI_GEO_SAR_REGD_RT_ETSI; + case RTW89_MKK: + return RTW89_ACPI_GEO_SAR_REGD_RT_MKK; + case RTW89_IC: + return RTW89_ACPI_GEO_SAR_REGD_RT_IC; + case RTW89_KCC: + return RTW89_ACPI_GEO_SAR_REGD_RT_KCC; + default: + case RTW89_WW: + case RTW89_NA: + return RTW89_ACPI_GEO_SAR_REGD_RT_WW; + } +} + +static +void rtw89_acpi_geo_sar_load_by_hp(struct rtw89_dev *rtwdev, + const struct rtw89_acpi_geo_sar_hp_val *ptr, + enum rtw89_rf_path path, s16 *val) +{ + u8 antidx = rtw89_acpi_sar_rfpath_to_hp_antidx(path); + s16 delta = rtw89_acpi_geo_sar_normalize_delta(ptr->delta[antidx]); + s16 max = rtw89_acpi_sar_normalize_hp_val(ptr->max); + + *val = clamp_t(s32, (*val) + delta, MIN_VAL_OF_RTW89_ACPI_SAR, max); +} + +static +void rtw89_acpi_geo_sar_load_by_rt(struct rtw89_dev *rtwdev, + const struct rtw89_acpi_geo_sar_rt_val *ptr, + s16 *val) +{ + s16 delta = rtw89_acpi_geo_sar_normalize_delta(ptr->delta); + s16 max = rtw89_acpi_sar_normalize_rt_val(ptr->max); + + *val = clamp_t(s32, (*val) + delta, MIN_VAL_OF_RTW89_ACPI_SAR, max); +} + +static +void rtw89_acpi_geo_sar_load_hp_legacy(struct rtw89_dev *rtwdev, + const void *content, + enum rtw89_regulation_type regd, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_geo_sar_hp_legacy *ptr = content; + const struct rtw89_acpi_geo_sar_hp_legacy_entry *ptr_ent; + const struct rtw89_acpi_geo_sar_hp_val *ptr_ent_val; + enum rtw89_acpi_geo_sar_regd_hp geo_idx = + rtw89_acpi_geo_sar_regd_convert_hp_idx(regd); + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + enum rtw89_band band; + + ptr_ent = &ptr->entries[geo_idx]; + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + band = rtw89_acpi_sar_subband_to_band(rtwdev, subband); + switch (band) { + case RTW89_BAND_2G: + ptr_ent_val = &ptr_ent->val_2ghz; + break; + case RTW89_BAND_5G: + ptr_ent_val = &ptr_ent->val_5ghz; + break; + default: + case RTW89_BAND_6G: + ptr_ent_val = NULL; + break; + } + + if (!ptr_ent_val) + continue; + + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) + rtw89_acpi_geo_sar_load_by_hp(rtwdev, ptr_ent_val, path, + &ent->v[subband][path]); + } +} + +static +void rtw89_acpi_geo_sar_load_hp_has_6ghz(struct rtw89_dev *rtwdev, + const void *content, + enum rtw89_regulation_type regd, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_geo_sar_hp_has_6ghz *ptr = content; + const struct rtw89_acpi_geo_sar_hp_has_6ghz_entry *ptr_ent; + const struct rtw89_acpi_geo_sar_hp_val *ptr_ent_val; + enum rtw89_acpi_geo_sar_regd_hp geo_idx = + rtw89_acpi_geo_sar_regd_convert_hp_idx(regd); + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + enum rtw89_band band; + + ptr_ent = &ptr->entries[geo_idx]; + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + band = rtw89_acpi_sar_subband_to_band(rtwdev, subband); + switch (band) { + case RTW89_BAND_2G: + ptr_ent_val = &ptr_ent->val_2ghz; + break; + case RTW89_BAND_5G: + ptr_ent_val = &ptr_ent->val_5ghz; + break; + case RTW89_BAND_6G: + ptr_ent_val = &ptr_ent->val_6ghz; + break; + default: + ptr_ent_val = NULL; + break; + } + + if (!ptr_ent_val) + continue; + + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) + rtw89_acpi_geo_sar_load_by_hp(rtwdev, ptr_ent_val, path, + &ent->v[subband][path]); + } +} + +static +void rtw89_acpi_geo_sar_load_rt_legacy(struct rtw89_dev *rtwdev, + const void *content, + enum rtw89_regulation_type regd, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_geo_sar_rt_legacy *ptr = content; + const struct rtw89_acpi_geo_sar_rt_legacy_entry *ptr_ent; + const struct rtw89_acpi_geo_sar_rt_val *ptr_ent_val; + enum rtw89_acpi_geo_sar_regd_rt geo_idx = + rtw89_acpi_geo_sar_regd_convert_rt_idx(regd); + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + enum rtw89_band band; + + ptr_ent = &ptr->entries[geo_idx]; + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + band = rtw89_acpi_sar_subband_to_band(rtwdev, subband); + switch (band) { + case RTW89_BAND_2G: + ptr_ent_val = &ptr_ent->val_2ghz; + break; + case RTW89_BAND_5G: + ptr_ent_val = &ptr_ent->val_5ghz; + break; + default: + case RTW89_BAND_6G: + ptr_ent_val = NULL; + break; + } + + if (!ptr_ent_val) + continue; + + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) + rtw89_acpi_geo_sar_load_by_rt(rtwdev, ptr_ent_val, + &ent->v[subband][path]); + } +} + +static +void rtw89_acpi_geo_sar_load_rt_has_6ghz(struct rtw89_dev *rtwdev, + const void *content, + enum rtw89_regulation_type regd, + struct rtw89_sar_entry_from_acpi *ent) +{ + const struct rtw89_acpi_geo_sar_rt_has_6ghz *ptr = content; + const struct rtw89_acpi_geo_sar_rt_has_6ghz_entry *ptr_ent; + const struct rtw89_acpi_geo_sar_rt_val *ptr_ent_val; + enum rtw89_acpi_geo_sar_regd_rt geo_idx = + rtw89_acpi_geo_sar_regd_convert_rt_idx(regd); + enum rtw89_acpi_sar_subband subband; + enum rtw89_rf_path path; + enum rtw89_band band; + + ptr_ent = &ptr->entries[geo_idx]; + + for (subband = 0; subband < NUM_OF_RTW89_ACPI_SAR_SUBBAND; subband++) { + band = rtw89_acpi_sar_subband_to_band(rtwdev, subband); + switch (band) { + case RTW89_BAND_2G: + ptr_ent_val = &ptr_ent->val_2ghz; + break; + case RTW89_BAND_5G: + ptr_ent_val = &ptr_ent->val_5ghz; + break; + case RTW89_BAND_6G: + ptr_ent_val = &ptr_ent->val_6ghz; + break; + default: + ptr_ent_val = NULL; + break; + } + + if (!ptr_ent_val) + continue; + + for (path = 0; path < NUM_OF_RTW89_ACPI_SAR_RF_PATH; path++) + rtw89_acpi_geo_sar_load_by_rt(rtwdev, ptr_ent_val, + &ent->v[subband][path]); + } +} + +#define RTW89_ACPI_GEO_SAR_DECL_HANDLER(type) \ +static const struct rtw89_acpi_geo_sar_handler \ +rtw89_acpi_geo_sar_handler_ ## type = { \ + .data_size = RTW89_ACPI_GEO_SAR_SIZE_OF(type), \ + .load = rtw89_acpi_geo_sar_load_ ## type, \ +} + +RTW89_ACPI_GEO_SAR_DECL_HANDLER(hp_legacy); +RTW89_ACPI_GEO_SAR_DECL_HANDLER(hp_has_6ghz); +RTW89_ACPI_GEO_SAR_DECL_HANDLER(rt_legacy); +RTW89_ACPI_GEO_SAR_DECL_HANDLER(rt_has_6ghz); + +static const struct rtw89_acpi_sar_recognition rtw89_acpi_sar_recs[] = { + { + .id = { + .cid = RTW89_ACPI_SAR_CID_HP, + .rev = RTW89_ACPI_SAR_REV_LEGACY, + .size = RTW89_ACPI_SAR_SIZE_OF(std_legacy), + }, *** 30300 LINES SKIPPED *** From nobody Tue Oct 28 01:59:18 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwYTM0z6Rz6G4SC; Tue, 28 Oct 2025 01:59:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwYTL5lcMz3VXJ; Tue, 28 Oct 2025 01:59:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616758; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0+7VEPIrb9xs2aLvp6+xZLOCuiyAWYjPmlMHHSxr0PU=; b=roA7JYkDLwSHrQIFe0Ae0uDV31qwX00F3TexW7sHA9jUfWp3uMGxSqqV5aZWmv60uX1cuS IoD379Lptb8QSSTIUx7LSP0kLtm0MCoekjXFiJMDXoz78dmDTBtRuHcOdOZDnDzUv+W/K0 LUC3eHaBTc7fJH0sSLQomKTe2jjSKUS2gCIFdfZ+DHFRHMHPbp79emzuRLZw/6vSrG5q34 vpzGbgJhtInhr2vuJQw29yYN+TAYRtjwUxQ8uvSwJUWdxIOeEQEVyP2bqmE8QtaVp0ui8S 6JonvX72HeXD1jlXvfXuOldX/nAE4nEZBaHkNSV0fNGyWKENMHXIrP2vKyjbyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761616758; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0+7VEPIrb9xs2aLvp6+xZLOCuiyAWYjPmlMHHSxr0PU=; b=GACNyrVBEPibt8d++nc8FRR9sw6XS5UaHi2/KOtnVywJH/JDAbAty0Wieu371CAtUUcYA8 GSyYcU7bvLRekfHVEjvJnWftsZxcYU6HIQ0mnm0UT1gHjHkEWvnGZUYOt5rQHoMbGnZTwo jtn+yB+Wro6jSrQ3XMxjC+OKcD105qm8xHwrk2fI0iSVnFWbV4U0ZxJ48xwweUj7gFS7X1 x+i60Ruy2cDP89ApyVo2WlHnBBKPcEeY2yCktvJu9NrRgrs2O1gPEd3oNnyPID9pFg3RgL g/QVzbmDDzYJKMgIq2sroGGTr2gu9g/Nij/ePgtEvuZX8h6IPVvdsVKIz9rsbw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761616758; a=rsa-sha256; cv=none; b=ywk4Gu+uweyw9GS4OhcN5LFZtdl3+gv3Lig1Q5P0sW7Xn6n2z32IV+esrwp1vEb4aKWHho 09h4fpQENvag1LYpUKFbsRCAxB/ZLKODPGoXCbHasm9qZHaYHXuiIPhAHVc6oHUpjibRR8 NFNR7T9gLOjhAWkFpdRwnTfwqzYUIfEb1Cz8VAeXWQE5NsN3McUHs8kIBWmGH1rvevAyGs DxDJJzsg41OhzppDRgjdzoJeFguKvDbmAjLKdHFXqy8KESFFUd1hmORaZ42KI/+J5U6qHl PCS6qnuJ92UILT9DT6CCSI32XbXiM1KY2jEKndXGchiC8xBddjIzWCh6XKFxtw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwYTL4lSnzTc5; Tue, 28 Oct 2025 01:59:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S1xIla071945; Tue, 28 Oct 2025 01:59:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S1xIib071942; Tue, 28 Oct 2025 01:59:18 GMT (envelope-from git) Date: Tue, 28 Oct 2025 01:59:18 GMT Message-Id: <202510280159.59S1xIib071942@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 3dc891b8a501 - releng/15.0 - LinuxKPI: 802.11: additions for Linux v6.17 based wireless drivers List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: 3dc891b8a50106bc5f42c23a6ce673491b9a0649 Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=3dc891b8a50106bc5f42c23a6ce673491b9a0649 commit 3dc891b8a50106bc5f42c23a6ce673491b9a0649 Author: Bjoern A. Zeeb AuthorDate: 2025-10-11 09:21:55 +0000 Commit: Colin Percival CommitDate: 2025-10-28 01:58:43 +0000 LinuxKPI: 802.11: additions for Linux v6.17 based wireless drivers This includes the conflicting changes from previous driver versions (v6.11/v6.14), mostly being function pointer or function arguments. Approved by: re (cperciva) (cherry picked from commit 76aed633b5b526fc2cdb3fa654f54b3cb8e5cfaf) (cherry picked from commit 22eb6e43d034ec325e2833f3694efe4b33fa58a0) --- sys/compat/linuxkpi/common/include/net/mac80211.h | 14 +++++++------- sys/compat/linuxkpi/common/src/linux_80211_macops.c | 12 ++++++++---- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/sys/compat/linuxkpi/common/include/net/mac80211.h b/sys/compat/linuxkpi/common/include/net/mac80211.h index 523836b52a40..ee1ace3684de 100644 --- a/sys/compat/linuxkpi/common/include/net/mac80211.h +++ b/sys/compat/linuxkpi/common/include/net/mac80211.h @@ -956,7 +956,7 @@ struct ieee80211_ops { int (*start)(struct ieee80211_hw *); void (*stop)(struct ieee80211_hw *, bool); - int (*config)(struct ieee80211_hw *, u32); + int (*config)(struct ieee80211_hw *, int, u32); void (*reconfig_complete)(struct ieee80211_hw *, enum ieee80211_reconfig_type); void (*prep_add_interface)(struct ieee80211_hw *, enum nl80211_iftype); @@ -983,7 +983,7 @@ struct ieee80211_ops { void (*flush)(struct ieee80211_hw *, struct ieee80211_vif *, u32, bool); void (*flush_sta)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_sta *); - int (*set_frag_threshold)(struct ieee80211_hw *, u32); + int (*set_frag_threshold)(struct ieee80211_hw *, int, u32); void (*sync_rx_queues)(struct ieee80211_hw *); @@ -1026,8 +1026,8 @@ struct ieee80211_ops { void (*unassign_vif_chanctx)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_bss_conf *, struct ieee80211_chanctx_conf *); int (*switch_vif_chanctx)(struct ieee80211_hw *, struct ieee80211_vif_chanctx_switch *, int, enum ieee80211_chanctx_switch_mode); - int (*get_antenna)(struct ieee80211_hw *, u32 *, u32 *); - int (*set_antenna)(struct ieee80211_hw *, u32, u32); + int (*get_antenna)(struct ieee80211_hw *, int, u32 *, u32 *); + int (*set_antenna)(struct ieee80211_hw *, int, u32, u32); int (*remain_on_channel)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_channel *, int, enum ieee80211_roc_type); int (*cancel_remain_on_channel)(struct ieee80211_hw *, struct ieee80211_vif *); @@ -1038,7 +1038,7 @@ struct ieee80211_ops { void (*bss_info_changed)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_bss_conf *, u64); void (*link_info_changed)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_bss_conf *, u64); - int (*set_rts_threshold)(struct ieee80211_hw *, u32); + int (*set_rts_threshold)(struct ieee80211_hw *, int, u32); void (*event_callback)(struct ieee80211_hw *, struct ieee80211_vif *, const struct ieee80211_event *); int (*get_survey)(struct ieee80211_hw *, int, struct survey_info *); int (*get_ftm_responder_stats)(struct ieee80211_hw *, struct ieee80211_vif *, struct cfg80211_ftm_responder_stats *); @@ -1048,7 +1048,7 @@ struct ieee80211_ops { void (*offset_tsf)(struct ieee80211_hw *, struct ieee80211_vif *, s64); int (*set_bitrate_mask)(struct ieee80211_hw *, struct ieee80211_vif *, const struct cfg80211_bitrate_mask *); - void (*set_coverage_class)(struct ieee80211_hw *, s16); + void (*set_coverage_class)(struct ieee80211_hw *, int, s16); int (*set_tim)(struct ieee80211_hw *, struct ieee80211_sta *, bool); int (*set_key)(struct ieee80211_hw *, enum set_key_cmd, struct ieee80211_vif *, struct ieee80211_sta *, struct ieee80211_key_conf *); @@ -2406,7 +2406,7 @@ ieee80211_remove_key(struct ieee80211_key_conf *key) static __inline struct ieee80211_key_conf * ieee80211_gtk_rekey_add(struct ieee80211_vif *vif, - struct ieee80211_key_conf *key, int link_id) + uint16_t keyidx, uint8_t *key, size_t keylen, int link_id) { TODO(); return (NULL); diff --git a/sys/compat/linuxkpi/common/src/linux_80211_macops.c b/sys/compat/linuxkpi/common/src/linux_80211_macops.c index 04f9f6d7e7fc..d9e82a6d64ee 100644 --- a/sys/compat/linuxkpi/common/src/linux_80211_macops.c +++ b/sys/compat/linuxkpi/common/src/linux_80211_macops.c @@ -102,7 +102,8 @@ lkpi_80211_mo_get_antenna(struct ieee80211_hw *hw, u32 *txs, u32 *rxs) } LKPI_80211_TRACE_MO("hw %p", hw); - error = lhw->ops->get_antenna(hw, txs, rxs); + LKPI_80211_TRACE_MO("TODO link/radio_idx"); + error = lhw->ops->get_antenna(hw, 0, txs, rxs); out: return (error); @@ -121,7 +122,8 @@ lkpi_80211_mo_set_frag_threshold(struct ieee80211_hw *hw, uint32_t frag_th) } LKPI_80211_TRACE_MO("hw %p frag_th %u", hw, frag_th); - error = lhw->ops->set_frag_threshold(hw, frag_th); + LKPI_80211_TRACE_MO("TODO link/radio_idx"); + error = lhw->ops->set_frag_threshold(hw, 0, frag_th); out: return (error); @@ -140,7 +142,8 @@ lkpi_80211_mo_set_rts_threshold(struct ieee80211_hw *hw, uint32_t rts_th) } LKPI_80211_TRACE_MO("hw %p rts_th %u", hw, rts_th); - error = lhw->ops->set_rts_threshold(hw, rts_th); + LKPI_80211_TRACE_MO("TODO link/radio_idx"); + error = lhw->ops->set_rts_threshold(hw, 0, rts_th); out: return (error); @@ -436,7 +439,8 @@ lkpi_80211_mo_config(struct ieee80211_hw *hw, uint32_t changed) } LKPI_80211_TRACE_MO("hw %p changed %u", hw, changed); - error = lhw->ops->config(hw, changed); + LKPI_80211_TRACE_MO("TODO link/radio_idx"); + error = lhw->ops->config(hw, 0, changed); out: return (error); From nobody Tue Oct 28 02:22:02 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwYzZ6Hsnz6G6F1; Tue, 28 Oct 2025 02:22:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwYzZ5X0Qz3ZVh; Tue, 28 Oct 2025 02:22:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761618122; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dFGb3CRlv+RrL+HoWIRjKP9j7RX3aUFctP1obaIgQyM=; b=GiT282PBfQC6W3Fq9t8DN/Wx+iFct1FVOXUxxKHBJLgghtJgOQGub4KLl3jItACARU8mkd kkO60Itiu2W3JzKk1OKlO3C/v05Puemta5+Dm9cwLf7W49WOQu1MWaY3+MX8V0Urfmxut3 Rz3X3jDnO2F1YzjdxCVAeGGY6Y2OqQ1o7oIkp4OobK3MI5BxaM1NeQukTpLLuPHZ0RZn/L j4Rp6CLsC8y8EpXFDaJX7NnT8Y229xUg03OrOh2XVNgkJrrF+US6tvV5iR5tPgtEyjGvKI yyUol6VnFA/wVDRlXcYqiXaj47t0ZWxIP223U2osGmP5wD9vOIuaxfUrS6mE3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761618122; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dFGb3CRlv+RrL+HoWIRjKP9j7RX3aUFctP1obaIgQyM=; b=K6RNH/Dyph3XvpgHdHFR70lDpcduzzbCn1xC8QHvPWCskqYdJYAWME9ck42riXpQulqU8K nLYRBS3lic6sIuZGsjzhNsi57JD6NeLS1yFWA2SpDnxJ7S2dAw0jui3CglqlVzlpwL1hw+ ukO8BW6K3G6+jf8wN9eGWlGhm02WOP9/UbTaWiuFKu6bb6dZmbD5BduryOEYFv6qqOmAw6 J9elzPulM+6nxfNt4d209iIVps3dvz9/KWIwZ93LB+zVHA1IS78ROVvtn5TNeJTgcQQNtA mW8FRMsz0HH1DHaSBsEOGvYFZ43bMogHogn7NiQISIypIHHHmjSojj4EUUASbQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761618122; a=rsa-sha256; cv=none; b=nLGxcX5Y0bhlozQxei5pg+sdvRVFuyvtMDbgJ8IsQuc+u06iP/DlXPZ5SccyGYDH42TMe1 2JsOeRYfQTQ3jOB5NiK4mgifVOIdtpI21ciDF4LUpwwcPwyNvXGNN6St86esXUkI8WuEzC gxxdTs1Uz/9glUZPGPYpVTp2OcwsA9gp/HjslEkjVTqv2ZI2+6JUuC9GB1VK3ThEH/4+ZO jQZZLIPbNOzyB96hh9zAjMq6iG093txGPLADbS1QxhuvXkQxpYrpmD4+v85ybdENgbFrTK mFVbY7C08SyU8lBIyO4+z/sWM0giZkJ4tsFhGQAVU9cOQ5RPhsZ6jDVUTHUnwg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwYzZ574kzVgK; Tue, 28 Oct 2025 02:22:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S2M2hi026007; Tue, 28 Oct 2025 02:22:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S2M2e3026004; Tue, 28 Oct 2025 02:22:02 GMT (envelope-from git) Date: Tue, 28 Oct 2025 02:22:02 GMT Message-Id: <202510280222.59S2M2e3026004@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: 59ba7278499f - stable/15 - le(4): Update depreciation notice List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 59ba7278499f0ee20fd9c43a34bb2b72ae57dcbb Auto-Submitted: auto-generated The branch stable/15 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=59ba7278499f0ee20fd9c43a34bb2b72ae57dcbb commit 59ba7278499f0ee20fd9c43a34bb2b72ae57dcbb Author: Ed Maste AuthorDate: 2025-10-24 17:05:05 +0000 Commit: Ed Maste CommitDate: 2025-10-28 02:21:12 +0000 le(4): Update depreciation notice This driver was in fact not removed prior to FreeBSD 15.0. Sponsored by: The FreeBSD Foundation (cherry picked from commit e4d6433e9c0379e164ff50ce829b5b1c0716bcb1) --- share/man/man4/le.4 | 4 ++-- sys/dev/le/lance.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/share/man/man4/le.4 b/share/man/man4/le.4 index ff39361a1780..04b57633c91f 100644 --- a/share/man/man4/le.4 +++ b/share/man/man4/le.4 @@ -34,7 +34,7 @@ .\" .\" from: Header: le.4,v 1.2 92/10/13 05:31:33 leres Exp .\" -.Dd June 21, 2023 +.Dd October 24, 2025 .Dt LE 4 .Os .Sh NAME @@ -66,7 +66,7 @@ numbers have to be specified in The .Nm driver may not be present in -.Fx 15.0 +.Fx 16.0 and later. .Sh DESCRIPTION The diff --git a/sys/dev/le/lance.c b/sys/dev/le/lance.c index f5e41e82bb42..df53242e80f4 100644 --- a/sys/dev/le/lance.c +++ b/sys/dev/le/lance.c @@ -193,7 +193,7 @@ lance_attach(struct lance_softc *sc) if_setcapabilitiesbit(ifp, IFCAP_VLAN_MTU, 0); if_setcapenablebit(ifp, IFCAP_VLAN_MTU, 0); - gone_in(15, "Warning! le(4) to be removed: no longer needed for " + gone_in(16, "Warning! le(4) to be removed: no longer needed for " "Qemu/MIPS\n"); } From nobody Tue Oct 28 02:57:11 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwZm80HsTz6CjFt; Tue, 28 Oct 2025 02:57:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwZm76l4rz3dtg; Tue, 28 Oct 2025 02:57:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761620232; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=47Iz5q5600OoP/G0X1AQVS6XYMpWolxrNtLTd7ToZGA=; b=CJmOPVhlOwIhPF5tSS0TfSJeHax0vbIuVy/2e/GOt3Vy9SSrz7Izn08CdLgA85YeVS8qyn +QxtPr1o2yNQ8vKJxHgYpQ7omB/se2fqEQu4cdsxBR9rQwT6Xdoy3jlyvFo6JqdRzdQ8SM LYBRcxQcRIb8ldvSjULpixm+UA4iGOdafkOwij+N5pJ/LuspbViTNTqkFzv2B+4yhXA4Po Z6TTtw54u4EUIVT1EiYZWMFyKbvX3oV6cwQeitfeGi67Cb7mOTMdPYVKqs7MvrO/GKGUDR LAhNFwUKdVxCdrbp+er4S0EOj5jISxSnFXjCYbspmsgpDQBir1WkT+GhIyZbAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761620232; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=47Iz5q5600OoP/G0X1AQVS6XYMpWolxrNtLTd7ToZGA=; b=teexBduSoCVGVFd8+jPQeLw9wAMv1xr2gwOZPAvs48gUt4VTGl4i9cyOv2G85lRcaAqgbA Z34TQTnBjKqQo5Nz5JIE39fLdgjJBZuJuOd7gJrzJhegn/81VivTy59zS32W5GtpO91oKF OGsrneajl0aja8XI0pJHeY8jdSlHV4TMa4a464nDXOltwxrPoyL7z7O6Y0zUaDsivqMyBU 2owCR4xUinO6bDgBveGsBrQoN62PS3oVgMQtec7L5gIAOztaBqOs/iDkIqPFf5sCozStAD Ok89K9p0iMiggJTpn75dmnKxAFICKsIw8nuIsCJK7NVQop5aN+8Ur07QQ+NsGA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761620232; a=rsa-sha256; cv=none; b=BX1q2CVP7j1Cs8/7B0RsKMOgL7BA4iCt7uP8n7xUN21jqfhXcpGNfmlZIMkBhDXVlaFv1X iW7/+WFlN1yJUIpiZIYkRdh2tE61anfWu7Jo+CZgLCPSZ7hHpGiWfVVysrLa0ipxIU7XAr x4G7xPX1m/uUn2GTWPLVZYl1gNifaD855uI3cLJu+qirAF+LkPA7UiY1Q8FDevvrhybN+p UFTbJMog9m7mtIBjC2F9jouRdbg4LH8Fc+b2PCEYfQhS/kwDtNMplwxd1leNfeQ0Yc8Voj FOTC9WFmatmt7857QmwDJyi6raYhdwU45OVIbANSF8gXpwTAaq41/jXssd0iiQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwZm76KydzXMH; Tue, 28 Oct 2025 02:57:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S2vBA3084372; Tue, 28 Oct 2025 02:57:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S2vB6e084369; Tue, 28 Oct 2025 02:57:11 GMT (envelope-from git) Date: Tue, 28 Oct 2025 02:57:11 GMT Message-Id: <202510280257.59S2vB6e084369@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 44e214f8241f - stable/15 - deadfs: Return ENXIO instead of EIO when the device is gone. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 44e214f8241faa224e2346a5a03db8c029a7d4af Auto-Submitted: auto-generated The branch stable/15 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=44e214f8241faa224e2346a5a03db8c029a7d4af commit 44e214f8241faa224e2346a5a03db8c029a7d4af Author: Poul-Henning Kamp AuthorDate: 2025-10-24 07:19:31 +0000 Commit: Colin Percival CommitDate: 2025-10-28 02:56:34 +0000 deadfs: Return ENXIO instead of EIO when the device is gone. One some systems, under some conditions, pulling a USB stick would read(2) returning EIO and not ENXIO, like it should and used to. Recoverdisk(1), which does not give up on EIO, like most programs would, spins furiously. Arguably, deadfs was always wrong in returning EIO, because once you get to deadfs no operation will ever work again, but we used to take a different path through devfs_vnops.c which got us the ENXIO. Something changed recently, and while testing this fix, I noticed that drm-kmod-66/i915kms may be the condition which trigger the different code-path. MFC to: stable/15 Fixes: 289785 Thanks to: imp, kib (cherry picked from commit 2612f1b8649bb4f069a6a064ed714daa5f10d037) --- sys/fs/deadfs/dead_vnops.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/fs/deadfs/dead_vnops.c b/sys/fs/deadfs/dead_vnops.c index 296cf058f8c9..137c86b65058 100644 --- a/sys/fs/deadfs/dead_vnops.c +++ b/sys/fs/deadfs/dead_vnops.c @@ -122,18 +122,18 @@ dead_read(struct vop_read_args *ap) { /* - * Return EOF for tty devices, EIO for others + * Return EOF for tty devices, ENXIO for others */ - if ((ap->a_vp->v_vflag & VV_ISTTY) == 0) - return (EIO); - return (0); + if (ap->a_vp->v_vflag & VV_ISTTY) + return (0); + return (ENXIO); } int dead_write(struct vop_write_args *ap) { - return (EIO); + return (ENXIO); } int From nobody Tue Oct 28 02:58:15 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwZnM32PGz6CjG4; Tue, 28 Oct 2025 02:58:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwZnM2Kr5z3f5J; Tue, 28 Oct 2025 02:58:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761620295; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RSfIcUv2lZsgy63NLBBcLRDL3fbNdle3CBftD3rG+xE=; b=BnqBrwmBbBktvxvLpOwucRTgDYh74wiJCEoLMNPMBe9JNgLhw1hX8gO+O3nO2OKy5zIIV4 /rWQig+bFD3t1/6qSHu52WH59JNv3TGKqUy4HPNnghjerv5cilpMlhWjx2S+mbXIV/1L2r ErlH6IXTyOYlhQxbYCAmzA0MWjpy3MCkrhpOmrsjDF2wAgGVPOBuc/1ljvEJIDOTAdBigq UjUvYVR3ruPpy6VO8pw+L/oECI7tAk2mHh0vnrGZQ2QcrtxvCQFEzLsqn1ytOYtWgv3uS3 IO9l/PGt348uzrWR2wdt5Frz5zkh/mnLkDqrO8zSNvygxB1tuLO9Js9qf0dMFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761620295; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RSfIcUv2lZsgy63NLBBcLRDL3fbNdle3CBftD3rG+xE=; b=pjx940aqiHSzW/atr8LwDB0U3S+rsc5OnDhE5wIrpCnFxxQCuepVVyBaYyaduF/wHs4gkd otb4af4kshOgEE9O6CVZF33BxTvWAC5eS3Z2deBOLEUNwXlt/ISnbLcso/1tzIC+KfoPOM nSeDMIkkhAPmh2MXGxD31oJx0dG421kMFJbDtOP8DCmYWAFwQsrESA4DrOHhRW/6UItxOi De7RBu58hZPVjDel7cgR7baQ65BDXRDu6NwwSiWUkNYBDPQhqKK9w65mpI+WxSjmotOhBX IBS+q3/QicRCh9nJVJ0UtUPJcE3oBrzRjDtJLioiAxl6PfoqRZUpv+hNluuImg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761620295; a=rsa-sha256; cv=none; b=uRiXDXe6dEGzzRl7RHHtSJbynEYPn2wksJps2ugbi5uoWz9rTHw8mCKWyXNPJPkFdMLOAl 6CLxuCtyNHKZESfmjlgZcKIqn7a7tVauUBBA175+qFlpBA6H0kB/vg2uhZgo7dkWVanP7i Os6h5ApGP7tnaDTb8pfnIlFi/f4vYRuhrxnRIzN3kozHpLFlSga2G66DV/ZhUAENEm849R pD3jEuVKuRU438sHKAsMk4fhQyQzx7lBspr/tnuByeh2oS8jKvhcX5M1lzzTtilIhlr7rr mbTdNLOtasix41VCZIeF7vfX82HMDSR+HEzTaA15nxuEGJvVBSegPip1w0LqOQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwZnM1tyfzXXR; Tue, 28 Oct 2025 02:58:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S2wFKW084783; Tue, 28 Oct 2025 02:58:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S2wFXt084780; Tue, 28 Oct 2025 02:58:15 GMT (envelope-from git) Date: Tue, 28 Oct 2025 02:58:15 GMT Message-Id: <202510280258.59S2wFXt084780@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 74a6de9f9625 - releng/15.0 - deadfs: Return ENXIO instead of EIO when the device is gone. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: 74a6de9f962506fa5d8b75aad0d664c3c164143d Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=74a6de9f962506fa5d8b75aad0d664c3c164143d commit 74a6de9f962506fa5d8b75aad0d664c3c164143d Author: Poul-Henning Kamp AuthorDate: 2025-10-24 07:19:31 +0000 Commit: Colin Percival CommitDate: 2025-10-28 02:58:00 +0000 deadfs: Return ENXIO instead of EIO when the device is gone. One some systems, under some conditions, pulling a USB stick would read(2) returning EIO and not ENXIO, like it should and used to. Recoverdisk(1), which does not give up on EIO, like most programs would, spins furiously. Arguably, deadfs was always wrong in returning EIO, because once you get to deadfs no operation will ever work again, but we used to take a different path through devfs_vnops.c which got us the ENXIO. Something changed recently, and while testing this fix, I noticed that drm-kmod-66/i915kms may be the condition which trigger the different code-path. Approved by: re (cperciva) MFC to: stable/15 Fixes: 289785 Thanks to: imp, kib (cherry picked from commit 2612f1b8649bb4f069a6a064ed714daa5f10d037) (cherry picked from commit 44e214f8241faa224e2346a5a03db8c029a7d4af) --- sys/fs/deadfs/dead_vnops.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/fs/deadfs/dead_vnops.c b/sys/fs/deadfs/dead_vnops.c index 296cf058f8c9..137c86b65058 100644 --- a/sys/fs/deadfs/dead_vnops.c +++ b/sys/fs/deadfs/dead_vnops.c @@ -122,18 +122,18 @@ dead_read(struct vop_read_args *ap) { /* - * Return EOF for tty devices, EIO for others + * Return EOF for tty devices, ENXIO for others */ - if ((ap->a_vp->v_vflag & VV_ISTTY) == 0) - return (EIO); - return (0); + if (ap->a_vp->v_vflag & VV_ISTTY) + return (0); + return (ENXIO); } int dead_write(struct vop_write_args *ap) { - return (EIO); + return (ENXIO); } int From nobody Tue Oct 28 07:46:54 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwjBQ3DPRz6DQwJ; Tue, 28 Oct 2025 07:46:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwjBQ2wnbz46lG; Tue, 28 Oct 2025 07:46:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761637614; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hSKE7swIS5aTgzPPF7Dc5qDXHqym84LlQWg8wMWABas=; b=NNhTzmDtaLW9UwtenKcT17P/QKnqrnk5SuBZCqa9TPD9AId8ye9q2Tk9GtHsHHgpeJR8xE LDSuqt1I2+CnsphdZt3hBjFJc2+NSKG7pMMil6nalXZv/pnFo97st3M3ZNMzJbBvMYegWw HHqpFbTJcY5D7KjoT46PqHIBuI1BeOzP7XjnQjblb0gGjq8epj+UKbsJeexj80jGyo8NHb lwLeUjCByVJA4Qfs8F2nA4g1qd16DpYU+fEz7XTQm4LKK5n/5JXG6bDgH5i3MvAS+De8wy /CUOXM1cG805GG3eS9jG6SDIbGN1T/jV/AO6q+xqu2eklHI/xswIGW8Z1isr0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761637614; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hSKE7swIS5aTgzPPF7Dc5qDXHqym84LlQWg8wMWABas=; b=M5rgSD2Ce/NhwUSrFyE2rkWJB7PdFAnMV9vxrcKIxhIgdqlt6Fu3A9GcVoct5cIIZ18bdH PqnEtmQ+KJIvMIh7vdalVoYNIaCv7Lr6r9NZ/hLrr1r4edAH3cEVJVVdwMwX4MvNCwoMqG kfik8LjDS8+FITjR0LH1YSgPMK6x5kCGjn0adwq88tgd50OE6B1SyOPqoq+5swh6oIsffH ppVY5qp283B5afOKJT6OE36nB9VaEAexOvenSfne06amv4M7ISiiV0ueRYL7Qm1fNh8kj4 ymYlcOofS2SdNJVz0wffznWACQPufYl4a0KMJWuxCgH2YVjEwumjmbqoqvJoqw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761637614; a=rsa-sha256; cv=none; b=uG9KPNAJvU2sQCT0fCVjeKBHztcvTsd7Mgv6xF46RIvE0+zF9kY46VsmJNqEIsME6aRq56 cJliaZ4TXRCbDZ/sZkfmTDnUnlngUIHxFFWp5X6Z3bG2jJ3N5GCFrLgSSp9a53yHGy7nOW Y078OiHJu5UaYxhmOQ42i+i+YKhgEoNQsq7rHbpi1OK2qCPx8SwvqX3l1wOJWDo5SMaqyu oadcgPLhdor459FrBGmFucxGp0zXqU4JZ616/U9PfuW+aBAbkUL5n83k1+L/ytc2LgY8oN PthbNDVfbZSzPXnPB4ttZYxllLoeZTLVKPBR2RiCNtEQwNapXagPsSadagX29w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwjBQ1tkQzhRY; Tue, 28 Oct 2025 07:46:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S7ksAk030705; Tue, 28 Oct 2025 07:46:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S7kslG030702; Tue, 28 Oct 2025 07:46:54 GMT (envelope-from git) Date: Tue, 28 Oct 2025 07:46:54 GMT Message-Id: <202510280746.59S7kslG030702@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Martin Matuska Subject: git: f55001cc9f91 - stable/15 - libarchive: merge from vendor branch List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mm X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: f55001cc9f9185dca21d80c10922df4c1846ffb3 Auto-Submitted: auto-generated The branch stable/15 has been updated by mm: URL: https://cgit.FreeBSD.org/src/commit/?id=f55001cc9f9185dca21d80c10922df4c1846ffb3 commit f55001cc9f9185dca21d80c10922df4c1846ffb3 Author: Martin Matuska AuthorDate: 2025-10-21 14:10:15 +0000 Commit: Martin Matuska CommitDate: 2025-10-28 07:42:16 +0000 libarchive: merge from vendor branch libarchive 3.8.2 Important bugfixes: #2477 tar writer: fix replacing a regular file with a dir for ARCHIVE_EXTRACT_SAFE_WRITES #2659 lib: improve filter process handling #2664 zip writer: fix a memory leak if write callback error early #2665 lib: archive_read_data: handle sparse holes at end of file correctly #2668 7zip: Fix out of boundary access #2670 zip writer: fix writing with ZSTD compression #2672 lib: fix error checking in writing files #2678 zstd write filter: enable Zstandard's checksum feature #2679 lib: handle possible errors from system calls #2707 lib: avoid leaking file descriptors into subprocesses #2713 RAR5 reader: fix multiple issues in extra field parsing function #2716 RAR5 reader: early fail when file declares data for a dir entry #2717 bsdtar: Allow filename to have CRLF endings #2719 tar reader: fix checking the result of the strftime (CVE-2025-25724) #2737 tar reader: fix an infinite loop when parsing V headers #2742 lib: parse_date: handle dates in 2038 and beyond if time_t is big enough Obtained from: libarchive Vendor commit: 7f53fce04e4e672230f4eb80b219af17975e4f83 Security: CVE-2025-25724 PR: 290303 (exp-run) MFC after: 1 week (cherry picked from commit 401026e4825a05abba6f945cf1b74b3328876fa2) --- contrib/libarchive/NEWS | 2 + contrib/libarchive/SECURITY.md | 2 +- .../github_actions/install-macos-dependencies.sh | 3 + contrib/libarchive/cat/bsdcat.c | 15 +- contrib/libarchive/cat/cmdline.c | 2 +- contrib/libarchive/cpio/cmdline.c | 2 +- contrib/libarchive/cpio/cpio.c | 14 +- contrib/libarchive/cpio/test/test_owner_parse.c | 2 +- contrib/libarchive/libarchive/archive.h | 4 +- contrib/libarchive/libarchive/archive_acl.c | 23 +++ .../libarchive/libarchive/archive_check_magic.c | 9 +- contrib/libarchive/libarchive/archive_cryptor.c | 8 +- .../libarchive/archive_cryptor_private.h | 11 +- contrib/libarchive/libarchive/archive_entry.h | 2 +- .../libarchive/libarchive/archive_entry_paths.3 | 2 +- contrib/libarchive/libarchive/archive_entry_stat.c | 6 +- contrib/libarchive/libarchive/archive_parse_date.c | 4 +- contrib/libarchive/libarchive/archive_platform.h | 10 -- .../libarchive/libarchive/archive_platform_stat.h | 45 ++++++ contrib/libarchive/libarchive/archive_private.h | 1 + contrib/libarchive/libarchive/archive_read.c | 7 +- .../libarchive/archive_read_disk_entry_from_file.c | 12 +- .../libarchive/archive_read_disk_posix.c | 157 ++------------------- .../libarchive/libarchive/archive_read_open_fd.c | 23 +-- .../libarchive/libarchive/archive_read_open_file.c | 16 ++- .../libarchive/archive_read_open_filename.c | 31 ++-- .../libarchive/archive_read_set_format.c | 32 ++--- .../archive_read_support_filter_program.c | 7 +- .../libarchive/archive_read_support_format_7zip.c | 7 +- .../libarchive/archive_read_support_format_mtree.c | 23 ++- .../libarchive/archive_read_support_format_rar.c | 8 +- .../libarchive/archive_read_support_format_rar5.c | 66 +++++++-- .../libarchive/archive_read_support_format_tar.c | 70 ++++++--- .../libarchive/archive_read_support_format_warc.c | 2 +- .../libarchive/archive_read_support_format_xar.c | 2 +- .../libarchive/archive_read_support_format_zip.c | 4 +- contrib/libarchive/libarchive/archive_string.c | 5 +- .../libarchive/libarchive/archive_string_sprintf.c | 2 +- contrib/libarchive/libarchive/archive_util.c | 38 ++++- contrib/libarchive/libarchive/archive_write.c | 30 ++-- .../libarchive/archive_write_add_filter_bzip2.c | 4 + .../libarchive/archive_write_add_filter_gzip.c | 55 +++++--- .../libarchive/archive_write_add_filter_program.c | 11 +- .../libarchive/archive_write_add_filter_zstd.c | 2 + .../libarchive/archive_write_disk_posix.c | 16 ++- .../libarchive/libarchive/archive_write_open_fd.c | 2 +- .../libarchive/archive_write_open_file.c | 14 +- .../libarchive/archive_write_open_filename.c | 3 +- .../libarchive/archive_write_set_format_7zip.c | 2 +- .../libarchive/archive_write_set_format_mtree.c | 19 ++- .../libarchive/archive_write_set_format_xar.c | 6 +- .../libarchive/archive_write_set_format_zip.c | 25 +++- contrib/libarchive/libarchive/filter_fork_posix.c | 37 ++++- contrib/libarchive/libarchive/test/test_acl_nfs4.c | 7 + .../libarchive/libarchive/test/test_acl_posix1e.c | 5 + .../libarchive/test/test_archive_parse_date.c | 2 + .../test/test_archive_string_conversion.c | 10 ++ contrib/libarchive/libarchive/test/test_entry.c | 11 ++ .../test/test_read_filter_gzip_recursive.c | 4 +- .../libarchive/test/test_read_format_7zip.c | 81 +++++++---- .../libarchive/test/test_read_format_rar5.c | 66 +++++++++ .../test/test_read_format_rar5_dirdata.rar.uu | 6 + ...rmat_rar5_invalid_hash_valid_htime_exfld.rar.uu | 6 + .../test_read_format_rar5_only_crypt_exfld.rar.uu | 7 + .../test_read_format_rar5_unsupported_exfld.rar.uu | 6 + .../test/test_read_format_tar_V_negative_size.c | 48 +++++++ .../test_read_format_tar_V_negative_size.tar.uu | 20 +++ .../libarchive/test/test_read_set_format.c | 7 +- .../libarchive/test/test_write_filter_bzip2.c | 29 ++++ .../libarchive/test/test_write_filter_gzip.c | 12 +- .../test/test_write_filter_gzip_timestamp.c | 7 +- .../libarchive/libarchive_fe/{err.c => lafe_err.c} | 2 +- .../libarchive/libarchive_fe/{err.h => lafe_err.h} | 0 contrib/libarchive/libarchive_fe/line_reader.c | 2 +- contrib/libarchive/libarchive_fe/passphrase.c | 2 +- contrib/libarchive/tar/bsdtar.c | 7 +- contrib/libarchive/tar/bsdtar.h | 8 +- contrib/libarchive/tar/cmdline.c | 2 +- contrib/libarchive/tar/creation_set.c | 2 +- contrib/libarchive/tar/read.c | 2 +- contrib/libarchive/tar/subst.c | 2 +- contrib/libarchive/tar/test/test_crlf_mtree.c | 74 ++++++++++ .../libarchive/tar/test/test_option_safe_writes.c | 5 +- contrib/libarchive/tar/util.c | 7 +- contrib/libarchive/tar/write.c | 29 +++- contrib/libarchive/test_utils/test_common.h | 10 +- contrib/libarchive/test_utils/test_main.c | 156 +++++--------------- contrib/libarchive/unzip/bsdunzip.c | 15 +- contrib/libarchive/unzip/cmdline.c | 2 +- contrib/libarchive/unzip/test/test_C.c | 4 + contrib/libarchive/unzip/test/test_L.c | 4 + contrib/libarchive/unzip/test/test_P_encryption.c | 12 +- contrib/libarchive/unzip/test/test_basic.c | 4 + contrib/libarchive/unzip/test/test_d.c | 8 ++ contrib/libarchive/unzip/test/test_doubledash.c | 4 + contrib/libarchive/unzip/test/test_glob.c | 4 + contrib/libarchive/unzip/test/test_j.c | 4 + contrib/libarchive/unzip/test/test_n.c | 4 + contrib/libarchive/unzip/test/test_o.c | 4 + contrib/libarchive/unzip/test/test_p.c | 4 + contrib/libarchive/unzip/test/test_q.c | 4 + contrib/libarchive/unzip/test/test_singlefile.c | 4 + contrib/libarchive/unzip/test/test_t.c | 4 + contrib/libarchive/unzip/test/test_x.c | 12 ++ lib/libarchive/tests/Makefile | 6 + usr.bin/bsdcat/Makefile | 2 +- usr.bin/cpio/Makefile | 2 +- usr.bin/cpio/tests/Makefile | 2 +- usr.bin/tar/Makefile | 3 +- usr.bin/tar/tests/Makefile | 1 + usr.bin/unzip/Makefile | 2 +- usr.bin/unzip/tests/Makefile | 2 +- 112 files changed, 1120 insertions(+), 546 deletions(-) diff --git a/contrib/libarchive/NEWS b/contrib/libarchive/NEWS index caca7d5cbdb9..f2dd4102fa04 100644 --- a/contrib/libarchive/NEWS +++ b/contrib/libarchive/NEWS @@ -1,3 +1,5 @@ +Oct 15, 2026: libarchive 3.8.2 released + Jun 01, 2026: libarchive 3.8.1 released May 20, 2025: libarchive 3.8.0 released diff --git a/contrib/libarchive/SECURITY.md b/contrib/libarchive/SECURITY.md index 6ca188b603fe..f2f60e792a57 100644 --- a/contrib/libarchive/SECURITY.md +++ b/contrib/libarchive/SECURITY.md @@ -16,4 +16,4 @@ Please provide the following information in your report: - How to reproduce the issue This project is maintained by volunteers on a reasonable-effort basis. As such, we ask -that you give me 90 days to work on a fix before public exposure. +that you give us 90 days to work on a fix before public exposure. diff --git a/contrib/libarchive/build/ci/github_actions/install-macos-dependencies.sh b/contrib/libarchive/build/ci/github_actions/install-macos-dependencies.sh index 2aa4823fc3d0..b33aed5e5562 100755 --- a/contrib/libarchive/build/ci/github_actions/install-macos-dependencies.sh +++ b/contrib/libarchive/build/ci/github_actions/install-macos-dependencies.sh @@ -5,6 +5,9 @@ set -eux #brew update > /dev/null #brew upgrade > /dev/null +# Workaround for cmake in local/pinned tap issue +brew uninstall cmake + # This does an upgrade if the package is already installed brew install \ autoconf \ diff --git a/contrib/libarchive/cat/bsdcat.c b/contrib/libarchive/cat/bsdcat.c index 731621fa9b75..2e78870ae50e 100644 --- a/contrib/libarchive/cat/bsdcat.c +++ b/contrib/libarchive/cat/bsdcat.c @@ -7,6 +7,9 @@ #include "bsdcat_platform.h" +#ifdef HAVE_SIGNAL_H +#include +#endif #include #ifdef HAVE_STDLIB_H #include @@ -22,7 +25,7 @@ #include #include "bsdcat.h" -#include "err.h" +#include "lafe_err.h" #define BYTES_PER_BLOCK (20*512) @@ -105,6 +108,16 @@ main(int argc, char **argv) bsdcat = &bsdcat_storage; memset(bsdcat, 0, sizeof(*bsdcat)); +#if defined(HAVE_SIGACTION) && defined(SIGCHLD) + { /* Do not ignore SIGCHLD. */ + struct sigaction sa; + sa.sa_handler = SIG_DFL; + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; + sigaction(SIGCHLD, &sa, NULL); + } +#endif + lafe_setprogname(*argv, "bsdcat"); bsdcat->argv = argv; diff --git a/contrib/libarchive/cat/cmdline.c b/contrib/libarchive/cat/cmdline.c index 8ecd74aa95e4..5a5fcaf0263f 100644 --- a/contrib/libarchive/cat/cmdline.c +++ b/contrib/libarchive/cat/cmdline.c @@ -22,7 +22,7 @@ #endif #include "bsdcat.h" -#include "err.h" +#include "lafe_err.h" /* * Short options for bsdcat. Please keep this sorted. diff --git a/contrib/libarchive/cpio/cmdline.c b/contrib/libarchive/cpio/cmdline.c index c67519947dbc..db06c03c011d 100644 --- a/contrib/libarchive/cpio/cmdline.c +++ b/contrib/libarchive/cpio/cmdline.c @@ -26,7 +26,7 @@ #endif #include "cpio.h" -#include "err.h" +#include "lafe_err.h" /* * Short options for cpio. Please keep this sorted. diff --git a/contrib/libarchive/cpio/cpio.c b/contrib/libarchive/cpio/cpio.c index 2bf1bfa2985a..262db510568b 100644 --- a/contrib/libarchive/cpio/cpio.c +++ b/contrib/libarchive/cpio/cpio.c @@ -60,7 +60,7 @@ #endif #include "cpio.h" -#include "err.h" +#include "lafe_err.h" #include "line_reader.h" #include "passphrase.h" @@ -124,13 +124,21 @@ main(int argc, char *argv[]) cpio->buff_size = sizeof(buff); -#if defined(HAVE_SIGACTION) && defined(SIGPIPE) - { /* Ignore SIGPIPE signals. */ +#if defined(HAVE_SIGACTION) + { struct sigaction sa; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; +#ifdef SIGPIPE + /* Ignore SIGPIPE signals. */ sa.sa_handler = SIG_IGN; sigaction(SIGPIPE, &sa, NULL); +#endif +#ifdef SIGCHLD + /* Do not ignore SIGCHLD. */ + sa.sa_handler = SIG_DFL; + sigaction(SIGCHLD, &sa, NULL); +#endif } #endif diff --git a/contrib/libarchive/cpio/test/test_owner_parse.c b/contrib/libarchive/cpio/test/test_owner_parse.c index dfc78ca77aec..bd68f21cec9b 100644 --- a/contrib/libarchive/cpio/test/test_owner_parse.c +++ b/contrib/libarchive/cpio/test/test_owner_parse.c @@ -7,7 +7,7 @@ #include "test.h" #include "../cpio.h" -#include "err.h" +#include "lafe_err.h" #if !defined(_WIN32) #define ROOT "root" diff --git a/contrib/libarchive/libarchive/archive.h b/contrib/libarchive/libarchive/archive.h index 002190a24663..98d7674e18f1 100644 --- a/contrib/libarchive/libarchive/archive.h +++ b/contrib/libarchive/libarchive/archive.h @@ -34,7 +34,7 @@ * assert that ARCHIVE_VERSION_NUMBER >= 2012108. */ /* Note: Compiler will complain if this does not match archive_entry.h! */ -#define ARCHIVE_VERSION_NUMBER 3008001 +#define ARCHIVE_VERSION_NUMBER 3008002 #include #include /* for wchar_t */ @@ -177,7 +177,7 @@ __LA_DECL int archive_version_number(void); /* * Textual name/version of the library, useful for version displays. */ -#define ARCHIVE_VERSION_ONLY_STRING "3.8.1" +#define ARCHIVE_VERSION_ONLY_STRING "3.8.2" #define ARCHIVE_VERSION_STRING "libarchive " ARCHIVE_VERSION_ONLY_STRING __LA_DECL const char * archive_version_string(void); diff --git a/contrib/libarchive/libarchive/archive_acl.c b/contrib/libarchive/libarchive/archive_acl.c index 9e71f5ee5610..362e3308f43f 100644 --- a/contrib/libarchive/libarchive/archive_acl.c +++ b/contrib/libarchive/libarchive/archive_acl.c @@ -270,6 +270,19 @@ acl_new_entry(struct archive_acl *acl, { struct archive_acl_entry *ap, *aq; + /* Reject an invalid type */ + switch (type) { + case ARCHIVE_ENTRY_ACL_TYPE_ACCESS: + case ARCHIVE_ENTRY_ACL_TYPE_DEFAULT: + case ARCHIVE_ENTRY_ACL_TYPE_ALLOW: + case ARCHIVE_ENTRY_ACL_TYPE_DENY: + case ARCHIVE_ENTRY_ACL_TYPE_AUDIT: + case ARCHIVE_ENTRY_ACL_TYPE_ALARM: + break; + default: + return (NULL); + } + /* Type argument must be a valid NFS4 or POSIX.1e type. * The type must agree with anything already set and * the permset must be compatible. */ @@ -822,6 +835,9 @@ append_entry_w(wchar_t **wp, const wchar_t *prefix, int type, wname = NULL; id = -1; break; + default: + **wp = '\0'; + break; } *wp += wcslen(*wp); *(*wp)++ = L':'; @@ -878,6 +894,7 @@ append_entry_w(wchar_t **wp, const wchar_t *prefix, int type, wcscpy(*wp, L"alarm"); break; default: + *(*wp) = L'\0'; break; } *wp += wcslen(*wp); @@ -1057,6 +1074,9 @@ append_entry(char **p, const char *prefix, int type, name = NULL; id = -1; break; + default: + **p = '\0'; + break; } *p += strlen(*p); *(*p)++ = ':'; @@ -1112,6 +1132,9 @@ append_entry(char **p, const char *prefix, int type, case ARCHIVE_ENTRY_ACL_TYPE_ALARM: strcpy(*p, "alarm"); break; + default: + *(*p) = '\0'; + break; } *p += strlen(*p); } diff --git a/contrib/libarchive/libarchive/archive_check_magic.c b/contrib/libarchive/libarchive/archive_check_magic.c index d12f0c496e27..6b8e0c5595f4 100644 --- a/contrib/libarchive/libarchive/archive_check_magic.c +++ b/contrib/libarchive/libarchive/archive_check_magic.c @@ -30,6 +30,7 @@ #endif #include +#include #ifdef HAVE_STDLIB_H #include #endif @@ -54,8 +55,14 @@ errmsg(const char *m) while (s > 0) { written = write(2, m, s); - if (written <= 0) + if (written == 0) return; + if (written < 0) + { + if (errno == EINTR) + continue; + return; + } m += written; s -= written; } diff --git a/contrib/libarchive/libarchive/archive_cryptor.c b/contrib/libarchive/libarchive/archive_cryptor.c index 1825af4dc510..9f03f9ca6dd0 100644 --- a/contrib/libarchive/libarchive/archive_cryptor.c +++ b/contrib/libarchive/libarchive/archive_cryptor.c @@ -151,7 +151,7 @@ pbkdf2_sha1(const char *pw, size_t pw_len, const uint8_t *salt, (void)rounds; /* UNUSED */ (void)derived_key; /* UNUSED */ (void)derived_key_len; /* UNUSED */ - return -1; /* UNSUPPORTED */ + return CRYPTOR_STUB_FUNCTION; /* UNSUPPORTED */ } #endif @@ -439,14 +439,14 @@ aes_ctr_init(archive_crypto_ctx *ctx, const uint8_t *key, size_t key_len) (void)ctx; /* UNUSED */ (void)key; /* UNUSED */ (void)key_len; /* UNUSED */ - return -1; + return CRYPTOR_STUB_FUNCTION; } static int aes_ctr_encrypt_counter(archive_crypto_ctx *ctx) { (void)ctx; /* UNUSED */ - return -1; + return CRYPTOR_STUB_FUNCTION; } static int @@ -469,7 +469,7 @@ aes_ctr_update(archive_crypto_ctx *ctx, const uint8_t * const in, (void)out; /* UNUSED */ (void)out_len; /* UNUSED */ aes_ctr_encrypt_counter(ctx); /* UNUSED */ /* Fix unused function warning */ - return -1; + return CRYPTOR_STUB_FUNCTION; } #else diff --git a/contrib/libarchive/libarchive/archive_cryptor_private.h b/contrib/libarchive/libarchive/archive_cryptor_private.h index 4b3c6c161433..1dbc5c17a01a 100644 --- a/contrib/libarchive/libarchive/archive_cryptor_private.h +++ b/contrib/libarchive/libarchive/archive_cryptor_private.h @@ -43,7 +43,7 @@ int __libarchive_cryptor_build_hack(void); #ifdef __APPLE__ # include # if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080 -# define ARCHIVE_CRYPTOR_USE_Apple_CommonCrypto +# define ARCHIVE_CRYPTOR_USE_Apple_CommonCrypto 1 # endif #endif @@ -144,9 +144,15 @@ typedef struct { #else +#if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ + defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ + defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ + defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ + defined(ARCHIVE_CRYPTO_SHA512_WIN) #if defined(_WIN32) && !defined(__CYGWIN__) && !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) #define ARCHIVE_CRYPTOR_USE_WINCRYPT 1 #endif +#endif #define AES_BLOCK_SIZE 16 #define AES_MAX_KEY_SIZE 32 @@ -172,6 +178,9 @@ typedef int archive_crypto_ctx; #define archive_encrypto_aes_ctr_release(ctx) \ __archive_cryptor.encrypto_aes_ctr_release(ctx) +/* Stub return value if no encryption support exists. */ +#define CRYPTOR_STUB_FUNCTION -2 + /* Minimal interface to cryptographic functionality for internal use in * libarchive */ struct archive_cryptor diff --git a/contrib/libarchive/libarchive/archive_entry.h b/contrib/libarchive/libarchive/archive_entry.h index 2b917b3fde8e..344f33bffac2 100644 --- a/contrib/libarchive/libarchive/archive_entry.h +++ b/contrib/libarchive/libarchive/archive_entry.h @@ -28,7 +28,7 @@ #define ARCHIVE_ENTRY_H_INCLUDED /* Note: Compiler will complain if this does not match archive.h! */ -#define ARCHIVE_VERSION_NUMBER 3008001 +#define ARCHIVE_VERSION_NUMBER 3008002 /* * Note: archive_entry.h is for use outside of libarchive; the diff --git a/contrib/libarchive/libarchive/archive_entry_paths.3 b/contrib/libarchive/libarchive/archive_entry_paths.3 index 0f849c9ebb35..f739b172308d 100644 --- a/contrib/libarchive/libarchive/archive_entry_paths.3 +++ b/contrib/libarchive/libarchive/archive_entry_paths.3 @@ -64,7 +64,7 @@ Streaming Archive Library (libarchive, -larchive) .Ft void .Fn archive_entry_copy_hardlink "struct archive_entry *a" "const char *path" .Ft void -.Fn archive_entry_copy_hardlink_w "struct archive_entry *a "const wchar_t *path" +.Fn archive_entry_copy_hardlink_w "struct archive_entry *a" "const wchar_t *path" .Ft int .Fn archive_entry_update_hardlink_utf8 "struct archive_entry *a" "const char *path" .Ft void diff --git a/contrib/libarchive/libarchive/archive_entry_stat.c b/contrib/libarchive/libarchive/archive_entry_stat.c index c4906838ed0f..345d3d29b2f2 100644 --- a/contrib/libarchive/libarchive/archive_entry_stat.c +++ b/contrib/libarchive/libarchive/archive_entry_stat.c @@ -38,6 +38,7 @@ const struct stat * archive_entry_stat(struct archive_entry *entry) { + int64_t size; struct stat *st; if (entry->stat == NULL) { entry->stat = calloc(1, sizeof(*st)); @@ -74,7 +75,10 @@ archive_entry_stat(struct archive_entry *entry) st->st_ino = (ino_t)archive_entry_ino64(entry); st->st_nlink = archive_entry_nlink(entry); st->st_rdev = archive_entry_rdev(entry); - st->st_size = (off_t)archive_entry_size(entry); + size = archive_entry_size(entry); + st->st_size = (off_t)size; + if (st->st_size < 0 || (int64_t)st->st_size != size) + st->st_size = 0; st->st_mode = archive_entry_mode(entry); /* diff --git a/contrib/libarchive/libarchive/archive_parse_date.c b/contrib/libarchive/libarchive/archive_parse_date.c index cda0b11a555f..d9e968387d34 100644 --- a/contrib/libarchive/libarchive/archive_parse_date.c +++ b/contrib/libarchive/libarchive/archive_parse_date.c @@ -703,9 +703,7 @@ Convert(time_t Month, time_t Day, time_t Year, Year += 1900; DaysInMonth[1] = Year % 4 == 0 && (Year % 100 != 0 || Year % 400 == 0) ? 29 : 28; - /* Checking for 2038 bogusly assumes that time_t is 32 bits. But - I'm too lazy to try to check for time_t overflow in another way. */ - if (Year < EPOCH || Year >= 2038 + if (Year < EPOCH || (sizeof(time_t) <= 4 && Year >= 2038) || Month < 1 || Month > 12 /* Lint fluff: "conversion from long may lose accuracy" */ || Day < 1 || Day > DaysInMonth[(int)--Month] diff --git a/contrib/libarchive/libarchive/archive_platform.h b/contrib/libarchive/libarchive/archive_platform.h index f30df1104c83..33dc5582b7ed 100644 --- a/contrib/libarchive/libarchive/archive_platform.h +++ b/contrib/libarchive/libarchive/archive_platform.h @@ -183,16 +183,6 @@ #define CAN_RESTORE_METADATA_FD #endif -/* - * glibc 2.24 deprecates readdir_r - * bionic c deprecates readdir_r too - */ -#if defined(HAVE_READDIR_R) && (!defined(__GLIBC__) || !defined(__GLIBC_MINOR__) || __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 24)) && (!defined(__ANDROID__)) -#define USE_READDIR_R 1 -#else -#undef USE_READDIR_R -#endif - /* Set up defaults for internal error codes. */ #ifndef ARCHIVE_ERRNO_FILE_FORMAT #if HAVE_EFTYPE diff --git a/contrib/libarchive/libarchive/archive_platform_stat.h b/contrib/libarchive/libarchive/archive_platform_stat.h new file mode 100644 index 000000000000..5432b2f6433a --- /dev/null +++ b/contrib/libarchive/libarchive/archive_platform_stat.h @@ -0,0 +1,45 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2025 Tobias Stoeckmann + * All rights reserved. + */ + +/* !!ONLY FOR USE INTERNALLY TO LIBARCHIVE!! */ + +#ifndef ARCHIVE_PLATFORM_STAT_H_INCLUDED +#define ARCHIVE_PLATFORM_STAT_H_INCLUDED + +#ifndef __LIBARCHIVE_BUILD +#error This header is only to be used internally to libarchive. +#endif + +#if defined(_WIN32) && !defined(__CYGWIN__) +/* We use _lseeki64() on Windows. */ +typedef int64_t la_seek_t; + +struct la_seek_stat { + int64_t st_mtime; + ino_t st_ino; + unsigned short st_mode; + uint32_t st_nlink; + gid_t st_gid; + la_seek_t st_size; + uid_t st_uid; + dev_t st_dev; + dev_t st_rdev; +}; +typedef struct la_seek_stat la_seek_stat_t; + +#define la_seek_fstat(fd, st) __la_seek_fstat((fd), (st)) +#define la_seek_stat(fd, st) __la_seek_stat((fd), (st)) + +#else +typedef off_t la_seek_t; +typedef struct stat la_seek_stat_t; + +#define la_seek_fstat(fd, st) fstat((fd), (st)) +#define la_seek_stat(fd, st) stat((fd), (st)) +#endif + +#endif /* !ARCHIVE_PLATFORM_STAT_H_INCLUDED */ diff --git a/contrib/libarchive/libarchive/archive_private.h b/contrib/libarchive/libarchive/archive_private.h index 050fc63c0b2e..3a926c6886ad 100644 --- a/contrib/libarchive/libarchive/archive_private.h +++ b/contrib/libarchive/libarchive/archive_private.h @@ -158,6 +158,7 @@ int __archive_check_magic(struct archive *, unsigned int magic, __LA_NORETURN void __archive_errx(int retvalue, const char *msg); void __archive_ensure_cloexec_flag(int fd); +int __archive_get_tempdir(struct archive_string *); int __archive_mktemp(const char *tmpdir); #if defined(_WIN32) && !defined(__CYGWIN__) int __archive_mkstemp(wchar_t *templates); diff --git a/contrib/libarchive/libarchive/archive_read.c b/contrib/libarchive/libarchive/archive_read.c index 50db87017706..c9b9d5981516 100644 --- a/contrib/libarchive/libarchive/archive_read.c +++ b/contrib/libarchive/libarchive/archive_read.c @@ -575,8 +575,7 @@ choose_filters(struct archive_read *a) return (ARCHIVE_OK); } - filter - = calloc(1, sizeof(*filter)); + filter = calloc(1, sizeof(*filter)); if (filter == NULL) return (ARCHIVE_FATAL); filter->bidder = best_bidder; @@ -834,7 +833,9 @@ archive_read_data(struct archive *_a, void *buff, size_t s) r = archive_read_data_block(a, &read_buf, &a->read_data_remaining, &a->read_data_offset); a->read_data_block = read_buf; - if (r == ARCHIVE_EOF) + if (r == ARCHIVE_EOF && + a->read_data_offset == a->read_data_output_offset && + a->read_data_remaining == 0) return (bytes_read); /* * Error codes are all negative, so the status diff --git a/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c b/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c index 19d049770b78..42af4034b07e 100644 --- a/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c +++ b/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c @@ -338,7 +338,7 @@ setup_mac_metadata(struct archive_read_disk *a, int ret = ARCHIVE_OK; void *buff = NULL; int have_attrs; - const char *name, *tempdir; + const char *name; struct archive_string tempfile; (void)fd; /* UNUSED */ @@ -357,13 +357,11 @@ setup_mac_metadata(struct archive_read_disk *a, if (have_attrs == 0) return (ARCHIVE_OK); - tempdir = NULL; - if (issetugid() == 0) - tempdir = getenv("TMPDIR"); - if (tempdir == NULL) - tempdir = _PATH_TMP; archive_string_init(&tempfile); - archive_strcpy(&tempfile, tempdir); + if (__archive_get_tempdir(&tempfile) != ARCHIVE_OK) { + ret = ARCHIVE_WARN; + goto cleanup; + } archive_strcat(&tempfile, "tar.md.XXXXXX"); tempfd = mkstemp(tempfile.s); if (tempfd < 0) { diff --git a/contrib/libarchive/libarchive/archive_read_disk_posix.c b/contrib/libarchive/libarchive/archive_read_disk_posix.c index a7a98e9cb1cd..54a8e66188f8 100644 --- a/contrib/libarchive/libarchive/archive_read_disk_posix.c +++ b/contrib/libarchive/libarchive/archive_read_disk_posix.c @@ -168,9 +168,6 @@ struct filesystem { int synthetic; int remote; int noatime; -#if defined(USE_READDIR_R) - size_t name_max; -#endif long incr_xfer_size; long max_xfer_size; long min_xfer_size; @@ -203,10 +200,6 @@ struct tree { DIR *d; #define INVALID_DIR_HANDLE NULL struct dirent *de; -#if defined(USE_READDIR_R) - struct dirent *dirent; - size_t dirent_allocated; -#endif int flags; int visit_type; /* Error code from last failed operation. */ @@ -869,7 +862,7 @@ next_entry(struct archive_read_disk *a, struct tree *t, tree_enter_initial_dir(t); return (ARCHIVE_FATAL); case TREE_ERROR_DIR: - archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, + archive_set_error(&a->archive, t->tree_errno, "%s: Couldn't visit directory", tree_current_path(t)); tree_enter_initial_dir(t); @@ -1578,9 +1571,6 @@ setup_current_filesystem(struct archive_read_disk *a) # endif #endif int r, xr = 0; -#if !defined(HAVE_STRUCT_STATFS_F_NAMEMAX) - long nm; -#endif t->current_filesystem->synthetic = -1; t->current_filesystem->remote = -1; @@ -1647,35 +1637,6 @@ setup_current_filesystem(struct archive_read_disk *a) #endif t->current_filesystem->noatime = 0; -#if defined(USE_READDIR_R) - /* Set maximum filename length. */ -#if defined(HAVE_STRUCT_STATFS_F_NAMEMAX) - t->current_filesystem->name_max = sfs.f_namemax; -#else -# if defined(_PC_NAME_MAX) - /* Mac OS X does not have f_namemax in struct statfs. */ - if (tree_current_is_symblic_link_target(t)) { - if (tree_enter_working_dir(t) != 0) { - archive_set_error(&a->archive, errno, "fchdir failed"); - return (ARCHIVE_FAILED); - } - nm = pathconf(tree_current_access_path(t), _PC_NAME_MAX); - } else - nm = fpathconf(tree_current_dir_fd(t), _PC_NAME_MAX); -# else - nm = -1; -# endif - if (nm == -1) - t->current_filesystem->name_max = NAME_MAX; - else - t->current_filesystem->name_max = nm; -#endif - if (t->current_filesystem->name_max == 0) { - archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, - "Cannot determine name_max"); - return (ARCHIVE_FAILED); - } -#endif /* USE_READDIR_R */ return (ARCHIVE_OK); } @@ -1863,19 +1824,6 @@ setup_current_filesystem(struct archive_read_disk *a) #endif t->current_filesystem->noatime = 0; -#if defined(USE_READDIR_R) - /* Set maximum filename length. */ -#if defined(HAVE_STATVFS) - t->current_filesystem->name_max = svfs.f_namemax; -#else - t->current_filesystem->name_max = sfs.f_namelen; -#endif - if (t->current_filesystem->name_max == 0) { - archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, - "Cannot determine name_max"); - return (ARCHIVE_FAILED); - } -#endif return (ARCHIVE_OK); } @@ -1953,15 +1901,6 @@ setup_current_filesystem(struct archive_read_disk *a) #endif t->current_filesystem->noatime = 0; -#if defined(USE_READDIR_R) - /* Set maximum filename length. */ - t->current_filesystem->name_max = svfs.f_namemax; - if (t->current_filesystem->name_max == 0) { - archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, - "Cannot determine name_max"); - return (ARCHIVE_FAILED); - } -#endif return (ARCHIVE_OK); } @@ -1975,9 +1914,6 @@ static int setup_current_filesystem(struct archive_read_disk *a) { struct tree *t = a->tree; -#if defined(_PC_NAME_MAX) && defined(USE_READDIR_R) - long nm; -#endif t->current_filesystem->synthetic = -1;/* Not supported */ t->current_filesystem->remote = -1;/* Not supported */ t->current_filesystem->noatime = 0; @@ -1987,40 +1923,6 @@ setup_current_filesystem(struct archive_read_disk *a) t->current_filesystem->min_xfer_size = -1; t->current_filesystem->incr_xfer_size = -1; -#if defined(USE_READDIR_R) - /* Set maximum filename length. */ -# if defined(_PC_NAME_MAX) - if (tree_current_is_symblic_link_target(t)) { - if (tree_enter_working_dir(t) != 0) { - archive_set_error(&a->archive, errno, "fchdir failed"); - return (ARCHIVE_FAILED); - } - nm = pathconf(tree_current_access_path(t), _PC_NAME_MAX); - } else - nm = fpathconf(tree_current_dir_fd(t), _PC_NAME_MAX); - if (nm == -1) -# endif /* _PC_NAME_MAX */ - /* - * Some systems (HP-UX or others?) incorrectly defined - * NAME_MAX macro to be a smaller value. - */ -# if defined(NAME_MAX) && NAME_MAX >= 255 - t->current_filesystem->name_max = NAME_MAX; -# else - /* No way to get a trusted value of maximum filename - * length. */ - t->current_filesystem->name_max = PATH_MAX; -# endif /* NAME_MAX */ -# if defined(_PC_NAME_MAX) - else - t->current_filesystem->name_max = nm; -# endif /* _PC_NAME_MAX */ - if (t->current_filesystem->name_max == 0) { - archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, - "Cannot determine name_max"); - return (ARCHIVE_FAILED); - } -#endif /* USE_READDIR_R */ return (ARCHIVE_OK); } @@ -2112,8 +2014,11 @@ tree_dup(int fd) } #endif /* F_DUPFD_CLOEXEC */ new_fd = dup(fd); - __archive_ensure_cloexec_flag(new_fd); - return (new_fd); + if (new_fd != -1) { + __archive_ensure_cloexec_flag(new_fd); + return (new_fd); + } + return (-1); } /* @@ -2235,11 +2140,16 @@ tree_reopen(struct tree *t, const char *path, int restore_time) * so try again for execute. The consequences of not opening this are * unhelpful and unnecessary errors later. */ - if (t->initial_dir_fd < 0) + if (t->initial_dir_fd < 0) { t->initial_dir_fd = open(".", o_flag | O_CLOEXEC); + if (t->initial_dir_fd < 0) + return NULL; + } #endif __archive_ensure_cloexec_flag(t->initial_dir_fd); t->working_dir_fd = tree_dup(t->initial_dir_fd); + if (t->working_dir_fd < 0) + return NULL; return (t); } @@ -2449,12 +2359,11 @@ tree_dir_next_posix(struct tree *t) size_t namelen; if (t->d == NULL) { -#if defined(USE_READDIR_R) - size_t dirent_size; -#endif #if defined(HAVE_FDOPENDIR) - t->d = fdopendir(tree_dup(t->working_dir_fd)); + int fd = tree_dup(t->working_dir_fd); + if (fd != -1) + t->d = fdopendir(fd); #else /* HAVE_FDOPENDIR */ if (tree_enter_working_dir(t) == 0) { t->d = opendir("."); @@ -2470,45 +2379,12 @@ tree_dir_next_posix(struct tree *t) t->visit_type = r != 0 ? r : TREE_ERROR_DIR; return (t->visit_type); } -#if defined(USE_READDIR_R) - dirent_size = offsetof(struct dirent, d_name) + - t->filesystem_table[t->current->filesystem_id].name_max + 1; - if (t->dirent == NULL || t->dirent_allocated < dirent_size) { - free(t->dirent); - t->dirent = malloc(dirent_size); - if (t->dirent == NULL) { - closedir(t->d); - t->d = INVALID_DIR_HANDLE; - (void)tree_ascend(t); - tree_pop(t); - t->tree_errno = ENOMEM; - t->visit_type = TREE_ERROR_DIR; - return (t->visit_type); - } - t->dirent_allocated = dirent_size; - } -#endif /* USE_READDIR_R */ } for (;;) { errno = 0; -#if defined(USE_READDIR_R) - r = readdir_r(t->d, t->dirent, &t->de); -#ifdef _AIX - /* Note: According to the man page, return value 9 indicates - * that the readdir_r was not successful and the error code - * is set to the global errno variable. And then if the end - * of directory entries was reached, the return value is 9 - * and the third parameter is set to NULL and errno is - * unchanged. */ - if (r == 9) - r = errno; -#endif /* _AIX */ - if (r != 0 || t->de == NULL) { -#else t->de = readdir(t->d); if (t->de == NULL) { r = errno; -#endif closedir(t->d); t->d = INVALID_DIR_HANDLE; if (r != 0) { @@ -2747,9 +2623,6 @@ tree_free(struct tree *t) if (t == NULL) return; archive_string_free(&t->path); -#if defined(USE_READDIR_R) - free(t->dirent); -#endif free(t->sparse_list); for (i = 0; i < t->max_filesystem_id; i++) free(t->filesystem_table[i].allocation_ptr); diff --git a/contrib/libarchive/libarchive/archive_read_open_fd.c b/contrib/libarchive/libarchive/archive_read_open_fd.c index dc7c9e52c6f6..c85a62a3e2d7 100644 --- a/contrib/libarchive/libarchive/archive_read_open_fd.c +++ b/contrib/libarchive/libarchive/archive_read_open_fd.c @@ -48,6 +48,7 @@ #endif #include "archive.h" +#include "archive_platform_stat.h" struct read_fd_data { int fd; @@ -65,12 +66,12 @@ static int64_t file_skip(struct archive *, void *, int64_t request); int *** 3278 LINES SKIPPED *** From nobody Tue Oct 28 09:49:42 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwlw643bMz6DbG9; Tue, 28 Oct 2025 09:49:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwlw63FxHz3DCv; Tue, 28 Oct 2025 09:49:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761644982; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=df+lJS7u2bINciiXb27RWHY/CYrWQ9c1ScSfelHjMe4=; b=yNUFBPJ2AGbjWHfgg/nTh+T1TFAMgmU/wSXjv3x8jsXmzD+zSGbTPcD6h/6osQRgkSu8bZ UzM1u0o6WOXthp3v7WvQOeXMp8CfzPv6L0BnZ71bN++vl38p5uow8K6/m8KOykpND2QVfW kbA7taEkTbkCfsVy8KISyUsdl+vP912Kq1wnvCmLVG+/l/brWLAPT4AoOc5orSjmdfjUnu UOXUujNDJv3pR83br99UjQPNmKULsIEXCxOhacejVivvn/PdeM/5mduK9HrzaPPod5/Bvi 2ZzhG+nkCvbNQ4k0IA59qYvYcE/RwOOPBqX1cMtD6JIaT9O7L1MQp9sDyya7XQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761644982; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=df+lJS7u2bINciiXb27RWHY/CYrWQ9c1ScSfelHjMe4=; b=idUC+/feWQnZGR0O1nGzrgB7W7VGF4DFO9RJtuEhT8g3ZUrNCS7/yTkSF4NoHeXiliYQnH Z4VpKFBfQa2zILEGASvgwoCRQX7y8EcKDUjaXxcKyCoTamL0hlUAP+Pix3EeopfIPAvMyH Eyw6GdSI9M27BfVndjHB6Oa94+QkYQTJfQ7utmj7ogU716hop24YbKna+gU1T5avU1vWq3 H49HZPWUfomrZlRNrs96ErDHk5E34dDV0Adu4wtWC6Qwfqwq3JoZAYFgYTbk+sK+gtmtVG l0eK/zeTKG7bQlKlzQ9DJo4shZ7GPrsuB7UsDQL/Iq6uj/hQuEPvmbppgvxmCA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761644982; a=rsa-sha256; cv=none; b=QQf+5A7SpuSQr7r6Rwd/M31sLQ4ImO2CRX34W4sKTAXw2OQhQjV70nmjPCdKr7yFe8q1DY 4QnPZiDkSrjbqXmB2z2EKgkmBCju8jgUP8k+q5e1yi5jXX3EmeddgoeD1aEAGU6sv24JH3 FQWQHXv+ugkyyeAXCMZZnC1z1gfu0nUFUN0I1r7CaQWaGzzIQKf1qux/XhWqibUgGaWpzl f+9XRJEOJq0oRnJ0mkZmBhgUJHM0bHVcQ/Gjp3E32VofIZG/RFpBSdVeC0r0iTZeU03GrD mpXSDtfwtawRCp0QSWR6WLLAih2YEnKpwv04XooLasPKR52SwzCRcYXCYZs6JA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwlw62h1bzlSk; Tue, 28 Oct 2025 09:49:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S9ng66056838; Tue, 28 Oct 2025 09:49:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S9ngi6056835; Tue, 28 Oct 2025 09:49:42 GMT (envelope-from git) Date: Tue, 28 Oct 2025 09:49:42 GMT Message-Id: <202510280949.59S9ngi6056835@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ryan Libby Subject: git: a2ce3bd0df22 - stable/15 - ddb show lockedvnods: avoid trap for ufs vnode under construction List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rlibby X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: a2ce3bd0df225da1eccac9f195ae10252be7ec79 Auto-Submitted: auto-generated The branch stable/15 has been updated by rlibby: URL: https://cgit.FreeBSD.org/src/commit/?id=a2ce3bd0df225da1eccac9f195ae10252be7ec79 commit a2ce3bd0df225da1eccac9f195ae10252be7ec79 Author: Ryan Libby AuthorDate: 2025-10-01 18:25:27 +0000 Commit: Ryan Libby CommitDate: 2025-10-28 09:20:35 +0000 ddb show lockedvnods: avoid trap for ufs vnode under construction ddb show lockedvnods might find a ufs vnode after it is inserted into the mount queue in ffs_vgetf but before the dinode is allocated. Avoid trapping by testing for the dinode pointer. Reviewed by: markj Discussed with: mjg Sponsored by: Dell Inc. Differential Revision: https://reviews.freebsd.org/D52795 (cherry picked from commit 76157a63a0c63dd7363f6c8ae60edc814b3c138a) --- sys/ufs/ufs/ufs_vnops.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c index 0921eee92b9d..736c5a66267e 100644 --- a/sys/ufs/ufs/ufs_vnops.c +++ b/sys/ufs/ufs/ufs_vnops.c @@ -2592,8 +2592,12 @@ ufs_print( printf("\tnlink=%d, effnlink=%d, size=%jd", ip->i_nlink, ip->i_effnlink, (intmax_t)ip->i_size); - if (I_IS_UFS2(ip)) - printf(", extsize %d", ip->i_din2->di_extsize); + if (I_IS_UFS2(ip)) { + if (ip->i_din2 == NULL) + printf(", dinode=NULL (fields omitted)"); + else + printf(", extsize=%d", ip->i_din2->di_extsize); + } printf("\n\tgeneration=%jx, uid=%d, gid=%d, flags=0x%b\n", (uintmax_t)ip->i_gen, ip->i_uid, ip->i_gid, (uint32_t)ip->i_flags, PRINT_INODE_FLAGS); From nobody Tue Oct 28 09:49:43 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwlw753QRz6DbGB; Tue, 28 Oct 2025 09:49:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwlw74RhFz3D48; Tue, 28 Oct 2025 09:49:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761644983; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hZDe0lM7Xuz+OMaA+vlW/gDIphVGHkYFn55BWxddBfw=; b=PDQIiWmKkk36l7wy14xv2BAL+GvFiPDOOakJM8P6zRYQdLhWWNGslpWMXbZfAREPV1WAp8 6Ja90gRDcxx45pJLm7odgV2kbqse66h1g0BVXzcsnrr12I06CUvSVaCmHGUVPFTZ7Slwc7 aqnbM+a0uoRXnVzZuO4HCDFXCCnIZzvxwLQRXgtw+0bD4TsGSBbaBlyZoYZnLvGFyj/oyp G9cMHK6GpYQT+/AvtKa3XEYH5BLUEEGfyEM9iIBQQBzP6EEAsBPZrznI+0W3ftCPVd5w/T eJt8OG8eQHKkQ5rmbRYHH4za1gUOv2iFX7J3ofBF0QvrOq2NFnQrNBsAu9pbPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761644983; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hZDe0lM7Xuz+OMaA+vlW/gDIphVGHkYFn55BWxddBfw=; b=KsLns2BJgEniA1ra/gwHX055ziGF0cP5v+rb0UgpU4+6t6h5qcXeah0vPaimWVei689ybu /81sX1F1oTCjQzmbU0DA6xO/NWn9jTygZAYecpjv9+3pZaqMMOQc63qG1xXvSSL2tkVfDL GHd3fwFCAwCYXIrEL0p4Y0lGUB6Mdmc3EY+F8XiSUekN9Wt73kTD8mz6gRX+9zCYHbqts6 k0q+NwNET4WE6azVKp1tAbJMU1n6fAaZvDXdBcxYvmrW+EyMFZstf0N/oUadqW493WCwjz egynJCermUyj9cE2kBjrh5Alx4t4MOu7npUf71KpkLEj6Z7gp9itnT3iNFpb+Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761644983; a=rsa-sha256; cv=none; b=K4OxsFNtmmB4hs5D7AMh00HTlfHMVKQgvgflQ1tDX6oAzTZKWimCJa6jcvm+WCz+N3Rlfv ijvaAfqEEG0MjQ3IkjRzsX4zK5E2OMFfzDCPYyghp4QB7Rdo9FcrBv1ND23rQSQrwnc+51 0/KQVLBWliKG7KY1Ly5QZ3yL/eNyBvqkH71uLYQe+/AQqrnbTslAGJESX4YmbC3m+F+JAl 3ZPS6zr4zLCR+M9GDsLmyp4/f6XebfvrauH8FZPVr8XrABUqLFVNKljw6MWEytBu6mzCMa x5VRYvfOK8ejBlRwzDpk56KhSaL1pu1hLOYVwH+n/HWy52yEMieAdxAz5itzcw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwlw73tgxzltb; Tue, 28 Oct 2025 09:49:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S9nhOk056874; Tue, 28 Oct 2025 09:49:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S9nhl4056871; Tue, 28 Oct 2025 09:49:43 GMT (envelope-from git) Date: Tue, 28 Oct 2025 09:49:43 GMT Message-Id: <202510280949.59S9nhl4056871@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ryan Libby Subject: git: 0c1e50e59b00 - stable/15 - ddb show allchains: avoid traps and show pointers for lockmgr and sx List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rlibby X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 0c1e50e59b0051761a3b1fe0f2dcfa163b429b72 Auto-Submitted: auto-generated The branch stable/15 has been updated by rlibby: URL: https://cgit.FreeBSD.org/src/commit/?id=0c1e50e59b0051761a3b1fe0f2dcfa163b429b72 commit 0c1e50e59b0051761a3b1fe0f2dcfa163b429b72 Author: Ryan Libby AuthorDate: 2025-10-03 05:47:47 +0000 Commit: Ryan Libby CommitDate: 2025-10-28 09:20:35 +0000 ddb show allchains: avoid traps and show pointers for lockmgr and sx When trying to walk lock chains, we have to deduce what a thread is blocked on. Checking LOCK_CLASS(td->td_wchan) is not a very reliable method by itself, as it just tests whether a particular 4 bits near where td_wchan points have a particular value. Misinterpreting wait channel pointers of other sleeps as lockmgr locks would frequently cause ddb show allchains (or show lockchain) to trap, or to produce incorrect output. Now, check the sleepq_type. When calling sleepq_add, we use SLEEPQ_LK for lockmgr locks and SLEEPQ_SX for sx locks. This is a more reliable indication that the td_wchan is actually a lock. While here, also make the output of lockmgr and sx locks consistent with the output for other locks (see print_lockchain). Outputting a pointer to the lock allows it to be inspected further with ddb show lock or other methods. Reviewed by: markj Sponsored by: Dell Inc. Differential Revision: https://reviews.freebsd.org/D52794 (cherry picked from commit e7e958d83d8503c3b8714f68418d4509b8288ed9) --- sys/kern/kern_lock.c | 6 ++++-- sys/kern/kern_sx.c | 11 +++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/sys/kern/kern_lock.c b/sys/kern/kern_lock.c index 31bff6d2c1aa..76f68677e292 100644 --- a/sys/kern/kern_lock.c +++ b/sys/kern/kern_lock.c @@ -1780,9 +1780,11 @@ lockmgr_chain(struct thread *td, struct thread **ownerp) lk = td->td_wchan; - if (LOCK_CLASS(&lk->lock_object) != &lock_class_lockmgr) + if (!TD_ON_SLEEPQ(td) || sleepq_type(td->td_wchan) != SLEEPQ_LK || + LOCK_CLASS(&lk->lock_object) != &lock_class_lockmgr) return (0); - db_printf("blocked on lockmgr %s", lk->lock_object.lo_name); + db_printf("blocked on lock %p (%s) \"%s\" ", &lk->lock_object, + lock_class_lockmgr.lc_name, lk->lock_object.lo_name); if (lk->lk_lock & LK_SHARE) db_printf("SHARED (count %ju)\n", (uintmax_t)LK_SHARERS(lk->lk_lock)); diff --git a/sys/kern/kern_sx.c b/sys/kern/kern_sx.c index c005e112d3b9..249faf5b1ec4 100644 --- a/sys/kern/kern_sx.c +++ b/sys/kern/kern_sx.c @@ -1539,16 +1539,19 @@ sx_chain(struct thread *td, struct thread **ownerp) /* * Check to see if this thread is blocked on an sx lock. - * First, we check the lock class. If that is ok, then we - * compare the lock name against the wait message. + * The thread should be on a sleep queue with type SLEEPQ_SX, the + * purported lock should have the lock class index of sx, and the lock + * name should match the wait message. */ sx = td->td_wchan; - if (LOCK_CLASS(&sx->lock_object) != &lock_class_sx || + if (!TD_ON_SLEEPQ(td) || sleepq_type(td->td_wchan) != SLEEPQ_SX || + LOCK_CLASS(&sx->lock_object) != &lock_class_sx || sx->lock_object.lo_name != td->td_wmesg) return (0); /* We think we have an sx lock, so output some details. */ - db_printf("blocked on sx \"%s\" ", td->td_wmesg); + db_printf("blocked on lock %p (%s) \"%s\" ", &sx->lock_object, + lock_class_sx.lc_name, td->td_wmesg); *ownerp = sx_xholder(sx); if (sx->sx_lock & SX_LOCK_SHARED) db_printf("SLOCK (count %ju)\n", From nobody Tue Oct 28 09:49:44 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwlw91FG7z6DbCc; Tue, 28 Oct 2025 09:49:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwlw854v1z3D94; Tue, 28 Oct 2025 09:49:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761644984; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uLTjOPIGdIoEP5tRfTYLuCYVJScMzCLeZLgrA7cZggA=; b=vw8dwO6vt1xjuufhMft/Wb0H+GgjD41iufK8WCJY0ri9W7tE+T5oMQD8CNX9rwY6YhbFg0 syRFdaz5L6hVJ15YuiPWMjK5HEl3FdEAo72ehADM9YqNzrCWDxVyzqA51zbsIeKM6SRJjL NIj0gQFRLtQ4kk0bANqJd1w0Dv8dDnjkXSShzDYhXa0FzKtmp1qe0Vy3f/FEdl+ehg7TZk 9Bk7KCCw49+Dq6Tg5xjr1gkIS6xUXNM6uxLBFTIaMxnNEJ3qG/MCgXOevR0U8Wc/00lFAw ZJ/zP7I5sROXragxM9X5D18C9iUFkSJTinkfB4MVF3Sp+tGHXyuPwxLRdTlrSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761644984; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uLTjOPIGdIoEP5tRfTYLuCYVJScMzCLeZLgrA7cZggA=; b=MO4/7hLIUFf9vq1fPiXeRB/AEnkrlcMvwJuOMIj/YzmEUz/0QtYNBl3gj0hqtwwaMIb3y+ ib2MEg8RAQ12f7GaUSe+HhvpKXf9o3S/9WtrMtfxlyDh8wSpA7c1eAsNxMSOBSM3ZinHKm bteC72vNNcyTJd2Hpws9QLjxLA3SXc3d1C53uuj4qu+0apDGzCYdz2TKq6ol4r3KpoRAfg MsuVMvPQOmNybaQqHUzDE6OuPiGojFtL0ogN2Lzivb/rQ41bpfhKhN3NCEZ7lil4TC+BKh BPW5+lMVkFkqJnrO1OSwFK3CW/1iVbHMaWeenBEXOFaif+4Mwkadt3gfum9xYw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761644984; a=rsa-sha256; cv=none; b=oitK1+y5TYyoCg4MSWOXzIzDYwUNy9GkHY+UsJrd9gFfCBF1ob6wY1f8ewVdtRX2gUl9ho 7qiHWw1lNBBz1d3/w5b4ZZHTUcE9D7U3vIYdIWxGX4HedNipS7HDlm8AhjPV2d8RG39X7q /2hPS9zaddamuSmEVb6URKjX1TT1BYi51bFi6nJEbBiqt/dUpkUPNagj/FlGl9CJr7BW8b av/ObKNNwFnHzoxQej6IBEV9O9wlcjuoBMUdFFpeZN/fz/LPwEbyHFEHFPsaWZ1Xr4thbk obi06gY1J4vlBMcr8OzqTkpSkwnf+nrp9zMy8X6759QQQNoyEhLMEEeWr1ZJaQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwlw84YtBzltc; Tue, 28 Oct 2025 09:49:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S9niiW056907; Tue, 28 Oct 2025 09:49:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S9nib7056904; Tue, 28 Oct 2025 09:49:44 GMT (envelope-from git) Date: Tue, 28 Oct 2025 09:49:44 GMT Message-Id: <202510280949.59S9nib7056904@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ryan Libby Subject: git: f699d8aa02a6 - stable/15 - bitstring_test: fix bit_nclear/bit_nset tests for last iteration List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rlibby X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: f699d8aa02a6845417e8a193165fe99f8e4c6f77 Auto-Submitted: auto-generated The branch stable/15 has been updated by rlibby: URL: https://cgit.FreeBSD.org/src/commit/?id=f699d8aa02a6845417e8a193165fe99f8e4c6f77 commit f699d8aa02a6845417e8a193165fe99f8e4c6f77 Author: Ryan Libby AuthorDate: 2025-10-02 16:40:16 +0000 Commit: Ryan Libby CommitDate: 2025-10-28 09:20:35 +0000 bitstring_test: fix bit_nclear/bit_nset tests for last iteration Also convert nearby ATF_REQUIRE_MSG to ATF_REQUIRE_INTEQ_MSG. Reported by: GCC -Wint-in-bool-context Reviewed by: asomers, des Differential Revision: https://reviews.freebsd.org/D45893 (cherry picked from commit 54b24b9da8be70192b7baaeae8fc26fda6581222) --- tests/sys/sys/bitstring_test.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/tests/sys/sys/bitstring_test.c b/tests/sys/sys/bitstring_test.c index a48042a4a063..bf436040c00f 100644 --- a/tests/sys/sys/bitstring_test.c +++ b/tests/sys/sys/bitstring_test.c @@ -559,14 +559,13 @@ BITSTRING_TC_DEFINE(bit_nclear) bit_nclear(bitstr, i, j); bit_ffc(bitstr, nbits, &found_clear_bit); - ATF_REQUIRE_MSG( - found_clear_bit == i, + ATF_REQUIRE_INTEQ_MSG(i, found_clear_bit, "bit_nclear_%d_%d_%d%s: Failed with result %d", nbits, i, j, memloc, found_clear_bit); bit_ffs_at(bitstr, i, nbits, &found_set_bit); - ATF_REQUIRE_MSG( - (j + 1 < nbits) ? found_set_bit == j + 1 : -1, + ATF_REQUIRE_INTEQ_MSG((j + 1 < nbits) ? j + 1 : -1, + found_set_bit, "bit_nset_%d_%d_%d%s: Failed with result %d", nbits, i, j, memloc, found_set_bit); } @@ -586,14 +585,13 @@ BITSTRING_TC_DEFINE(bit_nset) bit_nset(bitstr, i, j); bit_ffs(bitstr, nbits, &found_set_bit); - ATF_REQUIRE_MSG( - found_set_bit == i, + ATF_REQUIRE_INTEQ_MSG(i, found_set_bit, "bit_nset_%d_%d_%d%s: Failed with result %d", nbits, i, j, memloc, found_set_bit); bit_ffc_at(bitstr, i, nbits, &found_clear_bit); - ATF_REQUIRE_MSG( - (j + 1 < nbits) ? found_clear_bit == j + 1 : -1, + ATF_REQUIRE_INTEQ_MSG((j + 1 < nbits) ? j + 1 : -1, + found_clear_bit, "bit_nset_%d_%d_%d%s: Failed with result %d", nbits, i, j, memloc, found_clear_bit); } From nobody Tue Oct 28 09:49:45 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwlwB4D8jz6DbLM; Tue, 28 Oct 2025 09:49:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwlw95Ykwz3D1w; Tue, 28 Oct 2025 09:49:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761644985; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4Wl9YDTUaBdrmYFDp8vAQrelT4tK5mxo+q1GlOst5tQ=; b=SfCt9IPuVACnVh35LJAVB610yZ3ZuYsnQPWKHyvb9YYln//m5iLqC9nZbaynm1kbY41KkV UadN4WwA8U/lOK4epEOPIo83xSA/svAXunlOUQTvqyh9h60IKUrYGmETn9koDyuVD7HbUV BwIYlTcfcWjdtz4gi1rNhPIeg39EaHXztpgzeJSz+H0AD1AOT04ISsU8LzLpJ7xbh8zwd5 DgkVd2nkutW7KqsWjVsA4ye+JQ2PYvOy8HwKJ0uVdejp7xndmjfHbIYgPZz2tMsuYh+lz3 pacLcM5tHVe4m9rf8ACA4sOmymq7wchgfphbbOrCqA9KBlJQ8vOUKhx8/xmpKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761644985; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4Wl9YDTUaBdrmYFDp8vAQrelT4tK5mxo+q1GlOst5tQ=; b=ac2z/5WAzDfaRL/3KA+9fUdPaeb9rF0K6bAEJzuVvvYl1cqwqFZH9ZCaUc+7NTuliArgFN qSZPNSfnUU6fVXnDPzo5eDRjTmZHMeBdpmv8O+eD8/OCwqRUXq7eUUdkYSZceGaR+bqZA7 ot7Q6o5UkzWRbxZ2089Ri5chZ+b4maQFouluHbIhiKbyGcBFf1mAuZ9/IdaymmFBSF5cm5 +oFeDa82SNrj0BmdkcK6g3yhjTeLd7zhA7KAkhnetHkuLM3r0Bl4Jq43RlocGwEc59fNzq PscJsZjE/QA2Nh4imKUDTTknAfsJuW9ESnAkAo/+tZADXvCwNre/hJ68jkbsbA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761644985; a=rsa-sha256; cv=none; b=nBmgJPdQFmgNh9Fld7THISnLBe/8LRw9N1kcv2VvzOVpcPcCYM+qL9LknnQAGobOfo/F3g SJ68KS+JI4Z+G5GpgE4LfEKX73gAe0hU2v8gpmsDYaij4YdgbyeOgLTcLuhge5UvE9V/dS DUlEEkMJJPI+4JGOqzKdd0CWv5i+Dj2Kc2i9Vuq2ZA+pbm3BzyzmIcfSJLgJR9szXg4viQ 5N91HZ4c4TgixZIdD2Y/lVPs2BgsWwf8Abu4fmNtM2LHvUMjh9jZ7u0uW9OF5fJ/G7UTG9 0PuL1d5WAlI5AtxqR0mAUUHTo4AjQrjNP1ZF4XmLFwhUuhjb7+fn/xkn6dH/Yg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwlw955f8zlSl; Tue, 28 Oct 2025 09:49:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S9njQH056941; Tue, 28 Oct 2025 09:49:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S9njeM056938; Tue, 28 Oct 2025 09:49:45 GMT (envelope-from git) Date: Tue, 28 Oct 2025 09:49:45 GMT Message-Id: <202510280949.59S9njeM056938@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ryan Libby Subject: git: efb1583237fb - stable/15 - acpidump: quiet GCC -Wmaybe-uninitialized List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rlibby X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: efb1583237fbada81da9e423b00cb8e10293e8f6 Auto-Submitted: auto-generated The branch stable/15 has been updated by rlibby: URL: https://cgit.FreeBSD.org/src/commit/?id=efb1583237fbada81da9e423b00cb8e10293e8f6 commit efb1583237fbada81da9e423b00cb8e10293e8f6 Author: Ryan Libby AuthorDate: 2025-10-03 22:48:28 +0000 Commit: Ryan Libby CommitDate: 2025-10-28 09:20:35 +0000 acpidump: quiet GCC -Wmaybe-uninitialized Reviewed by: kib (cherry picked from commit daf4da4d09718980d96fa41a8f420cc0e0bf1bd8) --- usr.sbin/acpi/acpidump/acpi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/acpi/acpidump/acpi.c b/usr.sbin/acpi/acpidump/acpi.c index a8a3c953d72d..63613d5a4707 100644 --- a/usr.sbin/acpi/acpidump/acpi.c +++ b/usr.sbin/acpi/acpidump/acpi.c @@ -1764,7 +1764,7 @@ acpi_handle_ivrs_ivhd_devs(ACPI_IVRS_DE_HEADER *d, char *de) d8b = (ACPI_IVRS_DEVICE8B *)db; len = sizeof(*d8b); printf("\t\tDev Type=%#x Id=%#06x", - d8a->Header.Type, d8a->Header.Id); + d8b->Header.Type, d8b->Header.Id); acpi_handle_ivrs_ivhd_dte(d8b->Header.DataSetting); printf("\t\t"); acpi_handle_ivrs_ivhd_edte(d8b->ExtendedData); @@ -1774,7 +1774,7 @@ acpi_handle_ivrs_ivhd_devs(ACPI_IVRS_DE_HEADER *d, char *de) d4 = (ACPI_IVRS_DEVICE4 *)(db + sizeof(*d8b)); len = sizeof(*d8b) + sizeof(*d4); printf("\t\tDev Type=%#x Id=%#06x-%#06x", - d8a->Header.Type, d8a->Header.Id, d4->Header.Id); + d8b->Header.Type, d8b->Header.Id, d4->Header.Id); acpi_handle_ivrs_ivhd_dte(d8b->Header.DataSetting); acpi_handle_ivrs_ivhd_edte(d8b->ExtendedData); } else if (d->Type == ACPI_IVRS_TYPE_SPECIAL) { From nobody Tue Oct 28 09:49:46 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwlwC2wr5z6DbNl; Tue, 28 Oct 2025 09:49:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwlwB6Gfrz3D6m; Tue, 28 Oct 2025 09:49:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761644986; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DWJYCPSYczdrfqZG9dTwThOMkSiX6vQCZCSSWIqzDYo=; b=Aa7NvMSsuQC4oqASJcRNP9W7+4A1U1EUjBtj/dJClbcinWUv+BXa0PsbHqL76EqfXT+rG6 23HG7E5KvB3nw63ufqsdVxRskGlyu7LVfq/Deqc1XZXdJQbiRP4YHcxWxabcQbhRH2cCTh bkxFMnxOb3eI2PaK34tPB0n2/l88xjNAQsDfYBg7v1pB0IYjaL7jw4l4R9p1eN229XuNBO P8HO6Gqs+Zjau0MVYOG0yraE/ngEqiHOebF2KG98/oIDTDMWuu2QM47+KA3pgVZeS9oqVG lxve7p5ZYn6vOCnDWQO5uXaicjlT1y2C7C8MkDrgJHSoWM64YBPa1ZT5uYlckQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761644986; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DWJYCPSYczdrfqZG9dTwThOMkSiX6vQCZCSSWIqzDYo=; b=VvZ9j/Te7DJdtGb4Ci8WSQIbBEIjZipy2b1YhWtu3vDznGeCWiaX2WW8KHqTss+WhemO3s cgpT1bClBSuWIYgeZPttBRgvMhVMJ8QGN0cctzFYPSklTq3v/j1RF59Q/yM+4PX1LHEvRQ 06ph9i4S5NkjTW+fA4v3HeDjy5rx1TpM5gVdUeLxCMZ9PQdz4u9Y6Dj5+Cyb9V6xbGm5cS XJl0X6JiRDsqAcc1UzfnYYNoG1zVb70jEOGidmR1Dt41zUY/dPKh0VN41Ex/jCISc/3Zh6 6olx3hjOFgOuoNsA8gwB8cT5Jjzu2ELF/5B1NKAnpULdr8i3WqcRVUSNpeIpgw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761644986; a=rsa-sha256; cv=none; b=fmBROPZZb7HHFNFy/pWq5+c89scyVsx39B8RwX94FrNaWe8QWy9/IgzC4fhOhFGfYyBDJN Ear9rzIdebbA/Vcj+L4piSOjcqqckIb4KIOOsUNXCfneOKPnOlsucAcSBQpwDOEAUlXDDD X3Nrw4t1JI5O1TsC52WeRoyVRkaFEZR2Z8DTJzkiV9e0943/HI07WT2igG3QZjHxM1FL2V /r6G1VPAAHjaZzKE+PC02cyAt2EEhgppxZHPLEBJbvHt0gBes/lSdWcRQ3C3N2ZMaxAepC IvMSFq9bj0O3Ncv+c6HNq7gFZ0iUis5uWmj8j6UlSo/dyjoL2BsaxNzmop1XHg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwlwB5gYDzlrH; Tue, 28 Oct 2025 09:49:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S9nk7r056976; Tue, 28 Oct 2025 09:49:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S9nkWW056973; Tue, 28 Oct 2025 09:49:46 GMT (envelope-from git) Date: Tue, 28 Oct 2025 09:49:46 GMT Message-Id: <202510280949.59S9nkWW056973@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ryan Libby Subject: git: ba753f180082 - stable/15 - acpidump: quiet gcc -Wstrict-aliasing List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rlibby X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: ba753f180082aa8d566ef91c84e54ac23f580575 Auto-Submitted: auto-generated The branch stable/15 has been updated by rlibby: URL: https://cgit.FreeBSD.org/src/commit/?id=ba753f180082aa8d566ef91c84e54ac23f580575 commit ba753f180082aa8d566ef91c84e54ac23f580575 Author: Ryan Libby AuthorDate: 2025-10-09 19:29:37 +0000 Commit: Ryan Libby CommitDate: 2025-10-28 09:20:35 +0000 acpidump: quiet gcc -Wstrict-aliasing Appease GCC. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D52941 (cherry picked from commit e474fdfde604372000fc6bc4f7197b1e7c904597) --- usr.sbin/acpi/acpidump/acpi.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/usr.sbin/acpi/acpidump/acpi.c b/usr.sbin/acpi/acpidump/acpi.c index 63613d5a4707..026795118832 100644 --- a/usr.sbin/acpi/acpidump/acpi.c +++ b/usr.sbin/acpi/acpidump/acpi.c @@ -1913,16 +1913,19 @@ acpi_handle_ivrs_ivmd_type(ACPI_IVRS_MEMORY *addr) static void acpi_handle_ivrs_ivmd(ACPI_IVRS_MEMORY *addr) { + UINT16 x16; + printf("\tMem Type=%#x(%s) ", addr->Header.Type, acpi_handle_ivrs_ivmd_type(addr)); switch (addr->Header.Type) { case ACPI_IVRS_TYPE_MEMORY2: - printf("Id=%#06x PCISeg=%#x ", addr->Header.DeviceId, - *(UINT16 *)&addr->Reserved); + memcpy(&x16, &addr->Reserved, sizeof(x16)); + printf("Id=%#06x PCISeg=%#x ", addr->Header.DeviceId, x16); break; case ACPI_IVRS_TYPE_MEMORY3: + memcpy(&x16, &addr->Reserved, sizeof(x16)); printf("Id=%#06x-%#06x PCISeg=%#x", addr->Header.DeviceId, - addr->AuxData, *(UINT16 *)&addr->Reserved); + addr->AuxData, x16); break; } printf("Start=%#18jx Length=%#jx Flags=", From nobody Tue Oct 28 09:49:47 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwlwD2FhSz6DbGF; Tue, 28 Oct 2025 09:49:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwlwD04Gwz3DG9; Tue, 28 Oct 2025 09:49:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761644988; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Z8zQZl0VWVIlKjLgDx9JawImlzr5Z5wL/IMIO4RALgw=; b=vyzF65YxkS2fxhCvdheI241Bjn5PsOD369Y9oNbvgokB2EymHwTr38wJf4ma+rryqXZH53 E68uc9KoRlz0y4JD92i30jBRTWuARyicnuP9U1Y6MYyAB78WXcnkEZQCU6XNCCTX3Y/r6L SXV/4LQGpXhBoY7Hp7u/MhCzUPC0JnnEAnM3oaFKTh6v+ZVAoFH7xjCAhIpH5AOQsnSNpK lyl73FosZRsqmQLuNd2cb1Hitg5i/KjfUikAYT8P5mxW8GO6d6nlJkPGCFxIOidkxd6Qlu rHd+Qh4cnJkWcV5r6gPj+QDvB6pZ9LU5MkzwlZM6cgmvbr5m/YgD9RzD8A+yxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761644988; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Z8zQZl0VWVIlKjLgDx9JawImlzr5Z5wL/IMIO4RALgw=; b=ZVGKUO3k2TZn3qdP9wozUbLX7IpUbynONtSTr51/Gn5a1oEFe8LXvEYosBD0mIhcjLTZeg Is3cNIMeRPGyC+ssKIXoFIa0P4p2M7wZ4JtaGS7YMRDDyfKVmUUezeGHCETRvtr0FfT2U+ 26ia/FgxLJPMMtD+dsET4kxLI8Wnf3e8KlF1t6Sl7+XMyJOGdvI2gDLtuC2nFNUuuo7RKZ t+g9A4agKH53Mx4rXil3zEFH0uhy0glGvZ9m9bK/n7xHTK8nDBBcmEeAHtHgZTJm/+Tw7X yXYZKuspjGE8Ahlo4lVTSbJmc2pXw3CdKaPTVGXNOKMKsaN0N2y8yQucmhdTYA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761644988; a=rsa-sha256; cv=none; b=F62sGAj405QaaTXHYYn+tSukcc+I6dZBkgW6dIHS2NTuey0R1LWJ46TxiGuKGztLn/wE8n dM4yiGXAr+rThybqRdur/H5K+Uqcx4A9rV3dgIDAkXNREiCZj27HZMvP9kqDk1XaQR3roc nYkZUmfmLvt3+Q/IiL8mvMhTK/YZbepfHBXCpyw4L0lgdWs93WsV1jD8KBXTetO0C+gtYT lg6EhLEU8XQ+xrx1saEUpln40S1zltpS5kGL4mvR8qIEt8pwr0C0RS2/e0m+ybkLdV7zIn kqEBO5GUFprCnE+hQoz8uaUDV+HI68iGgZnajRgdgJuFfUig+2M8rSMKK2dnzA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwlwC6GXTzlrJ; Tue, 28 Oct 2025 09:49:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59S9nldW057014; Tue, 28 Oct 2025 09:49:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59S9nlxD057011; Tue, 28 Oct 2025 09:49:47 GMT (envelope-from git) Date: Tue, 28 Oct 2025 09:49:47 GMT Message-Id: <202510280949.59S9nlxD057011@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ryan Libby Subject: git: cd6b58e50cda - stable/15 - ffs_truncate: correct INVARIANTS panic debug output List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rlibby X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: cd6b58e50cda3c945d9b3910a3103eb825fc36c0 Auto-Submitted: auto-generated The branch stable/15 has been updated by rlibby: URL: https://cgit.FreeBSD.org/src/commit/?id=cd6b58e50cda3c945d9b3910a3103eb825fc36c0 commit cd6b58e50cda3c945d9b3910a3103eb825fc36c0 Author: Ryan Libby AuthorDate: 2025-10-15 04:03:04 +0000 Commit: Ryan Libby CommitDate: 2025-10-28 09:20:35 +0000 ffs_truncate: correct INVARIANTS panic debug output Reported by: GCC -Warray-bounds Reviewed by: mckusick Differential Revision: https://reviews.freebsd.org/D53037 (cherry picked from commit a0ea4c04b5269ac138a3cf551047076472c6028e) --- sys/ufs/ffs/ffs_inode.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/ufs/ffs/ffs_inode.c b/sys/ufs/ffs/ffs_inode.c index 970536a13aa5..f47cfd08f75a 100644 --- a/sys/ufs/ffs/ffs_inode.c +++ b/sys/ufs/ffs/ffs_inode.c @@ -653,8 +653,8 @@ done: for (i = 0; i < UFS_NDADDR; i++) if (newblks[i] != DIP(ip, i_db[i])) panic("ffs_truncate2: blkno %d newblks %jd != i_db %jd", - i, (intmax_t)newblks[UFS_NDADDR + level], - (intmax_t)DIP(ip, i_ib[level])); + i, (intmax_t)newblks[i], + (intmax_t)DIP(ip, i_db[i])); BO_LOCK(bo); if (length == 0 && (fs->fs_magic != FS_UFS2_MAGIC || ip->i_din2->di_extsize == 0) && From nobody Tue Oct 28 11:09:03 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwngg731zz6Dhp1; Tue, 28 Oct 2025 11:09:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwngg6MjMz3P2Z; Tue, 28 Oct 2025 11:09:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761649743; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VyI6Ny3bv4yFSr1szG3w77Y0EzOvd7MiLI/hxzQ47Xw=; b=fUlvjC/hlhFSJrl11CbcltXG1iWm9+3mk1Bx7EcK1fHDbUHEg8FewfISOoWxuGwUHixC1f i60F8X30JzuC8zcY1aNdxZlIzH5gbufVi/ePH7pmHETjIjqyyd4DttnZOzbq2ddPLWm1Fu B9kWF6Nb2zwf6XJYkP68bYFc8NZ+oyF0flzM+IF35FSFp4TuC8Ig3BrphcIpsDjIrjLvk/ f7fplthiPq43tx1dk1I37R+yUUGqFwZcmImXOSgnVtH0A6E6hWBdrvUE87twBwWet376mB W88/HWPvGkRWgbDIVsaX/RdHv8T75OhzVmpz9IKIiu3tu7LzpXNRGCpJJfNbjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761649743; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VyI6Ny3bv4yFSr1szG3w77Y0EzOvd7MiLI/hxzQ47Xw=; b=PE+xv8pNiYk8GxxfYJ7pqv7ii2QZUUObhp+KlZzaN0yxFU6CCaFNyInxVtBO7YKEvjSyDf LKgN9w4RNiF32ZF1eC0l55xdWbnoD6ltGcz9jbHE6P3VgWLGZNT5pgi1+gerfF7VStxee+ KGAni+iIzho3amGXYZHZjbu2Dxni/k+a+vbGaRPaGuqlo09hfvP/sEpcLhYu3hUw5zi5V/ 4izjEQx7oPc+KknLIW+uRMZbACKdXEcvCKQ8US2MnOBSE4cRCqB04nux2WeIoAwJRq7oJi zelrx+DXdh+SpdzaIowTea3k3tAVHN9nhUV8FWrPMCn7fibIokx2woZsFlkNXg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761649743; a=rsa-sha256; cv=none; b=NypWvhG8Pf7Y94mUgy7wk9J90FyOYJ2NYsvcaZEAPphcFiCeGNG18TpeEuTM1Q/wtD3hbf psjyfLzhEI1aPYqwDO7JkxQz582dDN6cR6JcKRznS3Ph4/5xQSLeaKrN2D1dMCy0k8qtFx 8azx5l9+pwNgqpQW+UARKOX3Al+W0PRxwz/8wq9gRhKBz+euVuf3mC7m3Rp8h59cmYGLua ilybaaRM+TpFEZMAFwPtFv7R6wlxikx8pbjwJHkXkLvfH+QfGNjix5EgQNgVMJPJ479vRa AbnGi+Ozwx3Gm6SyzjSCEfFnk3S0yTiCHtFAB/HyX9NyExnhKnYs0loFNnuYnA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwngg5qZ4znbD; Tue, 28 Oct 2025 11:09:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SB937t008460; Tue, 28 Oct 2025 11:09:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SB93kX008457; Tue, 28 Oct 2025 11:09:03 GMT (envelope-from git) Date: Tue, 28 Oct 2025 11:09:03 GMT Message-Id: <202510281109.59SB93kX008457@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: ca16a115a0fa - stable/15 - w: Trim whitespace and commas from time and uptime List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: ca16a115a0fa4da67b153d0b90c9ec08adc9b2fb Auto-Submitted: auto-generated The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=ca16a115a0fa4da67b153d0b90c9ec08adc9b2fb commit ca16a115a0fa4da67b153d0b90c9ec08adc9b2fb Author: Dag-Erling Smørgrav AuthorDate: 2025-10-23 10:28:44 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-10-28 11:08:12 +0000 w: Trim whitespace and commas from time and uptime When producing formatted output, trim leading whitespace and trailing commas from the human-readable time and uptime before emitting them. The text output remains unchanged. PR: 290089 Fixes: 6e6febb54da9 ("w: Fix idle time in json output, add login/idle times to json output") Reviewed by: marius.h_lden.org Differential Revision: https://reviews.freebsd.org/D53167 (cherry picked from commit 4d5789532a940144c869d66505e756ce816f8a50) --- usr.bin/w/w.c | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/usr.bin/w/w.c b/usr.bin/w/w.c index ac1df96077d3..502bf5a412b9 100644 --- a/usr.bin/w/w.c +++ b/usr.bin/w/w.c @@ -473,7 +473,7 @@ main(int argc, char *argv[]) static void pr_header(time_t *nowp, int nusers) { - char buf[64]; + char buf[64], *s, *e; struct sbuf upbuf; double avenrun[3]; struct timespec tp; @@ -484,8 +484,15 @@ pr_header(time_t *nowp, int nusers) * Print time of day. */ if (strftime(buf, sizeof(buf), - use_ampm ? "%l:%M%p" : "%k:%M", localtime(nowp)) != 0) - xo_emit("{:time-of-day/%s} ", buf); + use_ampm ? "%l:%M%p" : "%k:%M", localtime(nowp)) != 0) { + s = buf; + if (xo_get_style(NULL) != XO_STYLE_TEXT) { + /* trim leading whitespace */ + while (isspace((unsigned char)*s)) + s++; + } + xo_emit("{:time-of-day/%s} ", s); + } /* * Print how long system has been up. */ @@ -516,21 +523,31 @@ pr_header(time_t *nowp, int nusers) if (days > 0) sbuf_printf(&upbuf, " %ld day%s,", - days, days > 1 ? "s" : ""); + days, days > 1 ? "s" : ""); if (hrs > 0 && mins > 0) sbuf_printf(&upbuf, " %2ld:%02ld,", hrs, mins); else if (hrs > 0) sbuf_printf(&upbuf, " %ld hr%s,", - hrs, hrs > 1 ? "s" : ""); + hrs, hrs > 1 ? "s" : ""); else if (mins > 0) sbuf_printf(&upbuf, " %ld min%s,", - mins, mins > 1 ? "s" : ""); + mins, mins > 1 ? "s" : ""); else sbuf_printf(&upbuf, " %ld sec%s,", - secs, secs > 1 ? "s" : ""); + secs, secs > 1 ? "s" : ""); if (sbuf_finish(&upbuf) != 0) xo_err(1, "Could not generate output"); - xo_emit("{:uptime-human/%s}", sbuf_data(&upbuf)); + s = sbuf_data(&upbuf); + if (xo_get_style(NULL) != XO_STYLE_TEXT) { + e = s + sbuf_len(&upbuf) - 1; + /* trim leading whitespace */ + while (isspace((unsigned char)*s)) + s++; + /* trim trailing comma */ + if (e > s && *e == ',') + *e = '\0'; + } + xo_emit("{:uptime-human/%s}", s); sbuf_delete(&upbuf); } From nobody Tue Oct 28 11:09:07 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwngl6Prwz6Dhtn; Tue, 28 Oct 2025 11:09:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwngl5VmDz3Pdc; Tue, 28 Oct 2025 11:09:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761649747; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JMFRPTRYaS6MvtZGWk6EuBsXazOgo1DWV3fZXnHyy48=; b=HoVZGAlT7ijgNaB9QsPG/Y2EBZsVI72ucKAwxNHhwcI8bBW9YbGEU6VpwnpZm9GWRxL9Ke Ps83iO45p6/fMMG38jF4ZaMynesJc9IjCK8hp+4IbMR2Q/64KD0SQTbGDXnN2mcSr1jpes nkCD9k07ClIzRSz5cThHVv6MMn+XxyzcPzT3hPGYlvq0yimHCsz5gdPnn+Mn4jLgF5HoSk fWvlWnYwK4YfNPIBc+yhdzrqVnBtx89DeNwsOFGvh7Q3ucU5K4blOJ9bz3ThayomBOiWax 5E3C2uKIkBfsCu43sV7iFOXrl1jxG9uuUcST97A7IUrSD8owlmAhCpYmN9kKXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761649747; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JMFRPTRYaS6MvtZGWk6EuBsXazOgo1DWV3fZXnHyy48=; b=qfk0n9/puVVnTm87BZ7/3ME/74dUt6VZr1VVPR58Vg9lLlYeFTww4duUlZrZWw/wwnE1tY EK4ku4A2ivXcl99HNjLlCgY8NN7lKeHlO6+5dMytYelXZDimtqg8gPWfpBl+51q/HDqMHb gZtC7T6ofJn1yJCLTPhwAsV3WDkWbCLS4TsQ+ehAtYIbLEhAn855YhdtCyenrCmr3t5J5V r0dBT5ii75CsAKPs5Jd3c0DtiqBODj6lsvQhN/tiGkzWdd+KaRnC2p+JB+DcbnwxIlsjEx A+OIAFZlolRa8LIdijqA32oR5YXiItS5++tifTT9ewn+vXXyGKQZrLjuITLl4Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761649747; a=rsa-sha256; cv=none; b=GVyQZwsGTeDnsEAbYGp6KoUagcl0gRu9bQu4XlPJQ4nibhqKceahhy1M/k9gfJoD6if2E1 17dE7fUDaWeD/jCEqIwObfdBK5UOdua3z8jTPE++cE9MdkeNpHgwQH2vd0WY82W6Nbt/83 cRzYhI1Jvbshd5Q956/v3umAfAVMO0vDMgieb0KRg6s8jyup5djDVAUPgDvSbYQUCyrwts OzaVnZx0F3o63icpnRHS4aOtA2O1NV/21uVWfy0wY4Mfvb5M+NBKsS26tQUCzn8JCDosOC lC9GR+589aNmN/rZnuK9R2DH3bMsdCTV/3I7nNCtrzRmFBdeqLoT9FPMOELXSw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwngl4dkTznbF; Tue, 28 Oct 2025 11:09:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SB979L008603; Tue, 28 Oct 2025 11:09:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SB973p008600; Tue, 28 Oct 2025 11:09:07 GMT (envelope-from git) Date: Tue, 28 Oct 2025 11:09:07 GMT Message-Id: <202510281109.59SB973p008600@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 5572a45c0f61 - stable/14 - w: Trim whitespace and commas from time and uptime List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 5572a45c0f6122477e218e54a4b88e63563f3359 Auto-Submitted: auto-generated The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=5572a45c0f6122477e218e54a4b88e63563f3359 commit 5572a45c0f6122477e218e54a4b88e63563f3359 Author: Dag-Erling Smørgrav AuthorDate: 2025-10-23 10:28:44 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-10-28 11:08:14 +0000 w: Trim whitespace and commas from time and uptime When producing formatted output, trim leading whitespace and trailing commas from the human-readable time and uptime before emitting them. The text output remains unchanged. PR: 290089 Fixes: 6e6febb54da9 ("w: Fix idle time in json output, add login/idle times to json output") Reviewed by: marius.h_lden.org Differential Revision: https://reviews.freebsd.org/D53167 (cherry picked from commit 4d5789532a940144c869d66505e756ce816f8a50) --- usr.bin/w/w.c | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/usr.bin/w/w.c b/usr.bin/w/w.c index 69ff8c33cbbf..69387f44449a 100644 --- a/usr.bin/w/w.c +++ b/usr.bin/w/w.c @@ -481,7 +481,7 @@ main(int argc, char *argv[]) static void pr_header(time_t *nowp, int nusers) { - char buf[64]; + char buf[64], *s, *e; struct sbuf upbuf; double avenrun[3]; struct timespec tp; @@ -492,8 +492,15 @@ pr_header(time_t *nowp, int nusers) * Print time of day. */ if (strftime(buf, sizeof(buf), - use_ampm ? "%l:%M%p" : "%k:%M", localtime(nowp)) != 0) - xo_emit("{:time-of-day/%s} ", buf); + use_ampm ? "%l:%M%p" : "%k:%M", localtime(nowp)) != 0) { + s = buf; + if (xo_get_style(NULL) != XO_STYLE_TEXT) { + /* trim leading whitespace */ + while (isspace((unsigned char)*s)) + s++; + } + xo_emit("{:time-of-day/%s} ", s); + } /* * Print how long system has been up. */ @@ -524,21 +531,31 @@ pr_header(time_t *nowp, int nusers) if (days > 0) sbuf_printf(&upbuf, " %ld day%s,", - days, days > 1 ? "s" : ""); + days, days > 1 ? "s" : ""); if (hrs > 0 && mins > 0) sbuf_printf(&upbuf, " %2ld:%02ld,", hrs, mins); else if (hrs > 0) sbuf_printf(&upbuf, " %ld hr%s,", - hrs, hrs > 1 ? "s" : ""); + hrs, hrs > 1 ? "s" : ""); else if (mins > 0) sbuf_printf(&upbuf, " %ld min%s,", - mins, mins > 1 ? "s" : ""); + mins, mins > 1 ? "s" : ""); else sbuf_printf(&upbuf, " %ld sec%s,", - secs, secs > 1 ? "s" : ""); + secs, secs > 1 ? "s" : ""); if (sbuf_finish(&upbuf) != 0) xo_err(1, "Could not generate output"); - xo_emit("{:uptime-human/%s}", sbuf_data(&upbuf)); + s = sbuf_data(&upbuf); + if (xo_get_style(NULL) != XO_STYLE_TEXT) { + e = s + sbuf_len(&upbuf) - 1; + /* trim leading whitespace */ + while (isspace((unsigned char)*s)) + s++; + /* trim trailing comma */ + if (e > s && *e == ',') + *e = '\0'; + } + xo_emit("{:uptime-human/%s}", s); sbuf_delete(&upbuf); } From nobody Tue Oct 28 11:09:11 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwngq6Syxz6DhjZ; Tue, 28 Oct 2025 11:09:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwngq50v4z3PR1; Tue, 28 Oct 2025 11:09:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761649751; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rgV20kUOFJ49CuVdFQPadG8NKQbzIqSZLw5HKaPq2TM=; b=p8PI5DVDB3YNVL3/Tkd5I9oYBV3HLfajCB9iTUYkf0CnhIhuXdX/swd9ZpslY+ki9a/Hfi FGDV51t1zxTj2ucq6ULqu5MZ2lncsrtzoCyOGjjioS0VRlJZ9w5meFD1/Ewnw3B5ZDfCwh VfgVr2PBBJMatuiUPNN4SuQ8HK7dyaOR9eMuTP+OUGR9epXaWQaAaCueIVhjxYck7QuWBH bdl5NCpDPVx5i3/NbQKunzzB4a2Urou1+MtdqydSppQYR+4OnpyaSmECtI+jsta3bI84SS /4stDsXyqLUQj6D2D8BEjykyDvowa59ErpAOUiCixZNZ97auH012CgTFV7R8hQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761649751; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rgV20kUOFJ49CuVdFQPadG8NKQbzIqSZLw5HKaPq2TM=; b=MT0N0UXW3oA+OlNn/E7oi9itzfNZKnFeEg0ow2dUFHrSNvivW8nEoRWxyKG+KcmlkOQlZV BxZwwHIW08MEsjDKilFT/MbKXupR/CIq5Fm0Z9IwiIQBK0ufw3cXBkFYB7Z3svjWQ4sWWA X5wVxVKxt4UjtGV5ahk4zULI2g1Y2mm3GMkg6868iuWCw53R9tVEHnEovJnorA1pDNAhMd I/RQr1V/Zk/8KHyWeVepLwlRVqf8VmBo4Rf8nST8mIt3OFJfxwq/gSpStPr7UD7fCbYDvz 3pH13jYnQxnVpnPllu7moYWJwA1qZYORXzJxlEPQtaVXquMIe9VH5pdwKlfuzw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761649751; a=rsa-sha256; cv=none; b=c/cTr/1b1UGcAKc+fbYEEUOsIJMrMHBbYtBBzDyVYelIq8nrZllQJNenb1N5Gk1UI/N7Fm jouK60mLhBQhHV1rtvO2R3vfC4A3BoR+HkLXsPILLvXHAalBphamtkLpOQWge6+fkZPoY1 T39qXppNkAk/EqxFpIYBi4V11GxC3kGXDHikeN7GEV+l4stjx1R3lAeBoh48wgft64PQU2 W7PAGcRwGq3IvfEYNEx9ghFNvuKvkQAE+Rwh+NnFoX1vPXvxNGX7NQ80jTdLkXc3kbTHku hlSv5OprMNQA3MGVN87KtLjMu3j2xgD8txf+FZY+Ed1NR2Abp6x69Muqm605iA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwngq453jznBr; Tue, 28 Oct 2025 11:09:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SB9BIK008748; Tue, 28 Oct 2025 11:09:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SB9BcF008744; Tue, 28 Oct 2025 11:09:11 GMT (envelope-from git) Date: Tue, 28 Oct 2025 11:09:11 GMT Message-Id: <202510281109.59SB9BcF008744@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: ce8559897261 - stable/13 - w: Trim whitespace and commas from time and uptime List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ce8559897261b0610990b88a18efa44df42a9747 Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=ce8559897261b0610990b88a18efa44df42a9747 commit ce8559897261b0610990b88a18efa44df42a9747 Author: Dag-Erling Smørgrav AuthorDate: 2025-10-23 10:28:44 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-10-28 11:08:30 +0000 w: Trim whitespace and commas from time and uptime When producing formatted output, trim leading whitespace and trailing commas from the human-readable time and uptime before emitting them. The text output remains unchanged. PR: 290089 Fixes: 6e6febb54da9 ("w: Fix idle time in json output, add login/idle times to json output") Reviewed by: marius.h_lden.org Differential Revision: https://reviews.freebsd.org/D53167 (cherry picked from commit 4d5789532a940144c869d66505e756ce816f8a50) --- usr.bin/w/w.c | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/usr.bin/w/w.c b/usr.bin/w/w.c index 7c67a851ca99..94b7880532b1 100644 --- a/usr.bin/w/w.c +++ b/usr.bin/w/w.c @@ -476,7 +476,7 @@ main(int argc, char *argv[]) static void pr_header(time_t *nowp, int nusers) { - char buf[64]; + char buf[64], *s, *e; struct sbuf upbuf; double avenrun[3]; struct timespec tp; @@ -487,8 +487,15 @@ pr_header(time_t *nowp, int nusers) * Print time of day. */ if (strftime(buf, sizeof(buf), - use_ampm ? "%l:%M%p" : "%k:%M", localtime(nowp)) != 0) - xo_emit("{:time-of-day/%s} ", buf); + use_ampm ? "%l:%M%p" : "%k:%M", localtime(nowp)) != 0) { + s = buf; + if (xo_get_style(NULL) != XO_STYLE_TEXT) { + /* trim leading whitespace */ + while (isspace((unsigned char)*s)) + s++; + } + xo_emit("{:time-of-day/%s} ", s); + } /* * Print how long system has been up. */ @@ -519,21 +526,31 @@ pr_header(time_t *nowp, int nusers) if (days > 0) sbuf_printf(&upbuf, " %ld day%s,", - days, days > 1 ? "s" : ""); + days, days > 1 ? "s" : ""); if (hrs > 0 && mins > 0) sbuf_printf(&upbuf, " %2ld:%02ld,", hrs, mins); else if (hrs > 0) sbuf_printf(&upbuf, " %ld hr%s,", - hrs, hrs > 1 ? "s" : ""); + hrs, hrs > 1 ? "s" : ""); else if (mins > 0) sbuf_printf(&upbuf, " %ld min%s,", - mins, mins > 1 ? "s" : ""); + mins, mins > 1 ? "s" : ""); else sbuf_printf(&upbuf, " %ld sec%s,", - secs, secs > 1 ? "s" : ""); + secs, secs > 1 ? "s" : ""); if (sbuf_finish(&upbuf) != 0) xo_err(1, "Could not generate output"); - xo_emit("{:uptime-human/%s}", sbuf_data(&upbuf)); + s = sbuf_data(&upbuf); + if (xo_get_style(NULL) != XO_STYLE_TEXT) { + e = s + sbuf_len(&upbuf) - 1; + /* trim leading whitespace */ + while (isspace((unsigned char)*s)) + s++; + /* trim trailing comma */ + if (e > s && *e == ',') + *e = '\0'; + } + xo_emit("{:uptime-human/%s}", s); sbuf_delete(&upbuf); } From nobody Tue Oct 28 12:23:47 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwqKv1h3vz6Dnnk; Tue, 28 Oct 2025 12:23:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwqKv14Q4z3ZYF; Tue, 28 Oct 2025 12:23:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761654227; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+HUt/ahhKoTlCGuujIpNTfOjVN+486YsroClfaQGnWU=; b=oDtTTrNP8Iwksje9yeGjsOq9I5B4mFawiKkeqdm7YEPpWcPepeb6DLvsAjt0Aerc8W+ZQf IxYvm83T8XLtI8r8Dmgft+2ao4Kd64I2mmTSwHuSS6aacipiTnuOAtAeXmgqiryepV8UWf g5kaJU1D0IR2kVw3PNB/Lq82EsNnSh5nGv27HqaoS7IVmMUcO4JO90o75ZWy0l1ySGkVb5 j/YFD/udh4iIf8dNB7QUXZGMmafjDNOxSQp+1AEBkODObQ/NQWgu65nYN7f07ec3Y0Lhok 1UMZkIq6PHG4AORBfS1lIkmowYJAkMcEO8mKsHyAlPnR0mZajD2maIZrG8MDTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761654227; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+HUt/ahhKoTlCGuujIpNTfOjVN+486YsroClfaQGnWU=; b=fFN9THJp1gMPGvzwn0hynY61JqmJreo0ixj+stWFLFpfPRAiRUYdWTgvKRSPpQ3zMHlSEE HnXmMvbVcvT+sMNAaHKr09yakHnMvBwcberLksS/efsGpUNHEdhZ3t/qF1wF7Hu9ADpSs7 NDwMroou0WidZE248DpcbYcCQ6iAsB27URyxYahGYLVCYXjxOCVfk335mG+bTBg5wD0q4m PuvfWszUYZhmqK08eFWGMrpQGj8a2XVxNeLTBntu261V3Xia09wf+9vLSivLB9hknpydFv Fwg8WEJxIAOam0qC4b1sqw3quFivRfeIK6GqDydefmP1WCn6BXfurAPpZeo2Zw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761654227; a=rsa-sha256; cv=none; b=ATv9SRAUodYM6gjan+/OFGvJbwx/zNH9RpW5e83fVVZDiqqoxSAKwODszdY3ZH4+AqX6Tb aeo8JZkGqFf582rWphKHBee73nYWxjSykLJp9rEqkg9WNUY3+XRVibFA7EhJvrrWvMMMJX 3OxU77N43lv8+zZNpGcNKgjznGOn9H1ZqMQy3SGrAGi51Pb6478wuGYBQ9JrE6fXb8VJBS WpZJOn6PajlAcayLRySRRI7bKdyeHFdB3rbeiiDTXwksSx8PyZ72/fmmpZpq5X2eS71NgI fphokdJO+zP2x7RTdqvrE2ErnsCW76ph16iKDAmRuSvLAA+uQbHGLcwUaOATjg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwqKv0XyJzqwQ; Tue, 28 Oct 2025 12:23:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SCNl15058615; Tue, 28 Oct 2025 12:23:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SCNlZd058612; Tue, 28 Oct 2025 12:23:47 GMT (envelope-from git) Date: Tue, 28 Oct 2025 12:23:47 GMT Message-Id: <202510281223.59SCNlZd058612@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: 8e276f22bd5d - stable/15 - sys: Bump GIANT device removal to 16.0 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 8e276f22bd5dc43799e3b32e55326aca3fa10a54 Auto-Submitted: auto-generated The branch stable/15 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=8e276f22bd5dc43799e3b32e55326aca3fa10a54 commit 8e276f22bd5dc43799e3b32e55326aca3fa10a54 Author: Ed Maste AuthorDate: 2025-10-24 17:57:30 +0000 Commit: Ed Maste CommitDate: 2025-10-28 12:23:15 +0000 sys: Bump GIANT device removal to 16.0 It did not happen prior to FreeBSD 15.0. Reported by: zlei Sponsored by: The FreeBSD Foundation (cherry picked from commit 24adb135c5fe8d5018781d496e0abae914534ce5) --- sys/kern/kern_conf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c index b891ed84957a..57411b0dec08 100644 --- a/sys/kern/kern_conf.c +++ b/sys/kern/kern_conf.c @@ -664,7 +664,7 @@ prep_cdevsw(struct cdevsw *devsw, int flags) if ((devsw->d_flags & D_GIANTOK) == 0) { printf( "WARNING: Device \"%s\" is Giant locked and may be " - "deleted before FreeBSD 15.0.\n", + "deleted before FreeBSD 16.0.\n", devsw->d_name == NULL ? "???" : devsw->d_name); } if (devsw->d_gianttrick == NULL) { From nobody Tue Oct 28 12:23:48 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwqKw40ZKz6DnwR; Tue, 28 Oct 2025 12:23:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwqKw2Gvxz3ZQl; Tue, 28 Oct 2025 12:23:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761654228; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rXiRIDmKqgBPqEfPIkycMBem2gCXrDNoaLtPh/OHos4=; b=r6gzYwWUqj3zeMSb4p556tKjeijjZRpmv6BLc3Tr9EtzSVOOOdX7OEJEvJPxRh0a58mhH/ f2Ge4Wk3BJM99IgSOvLSE0SwYJsJvi9peLen9cFc2y4qsHBKDucXwCElVeYa+GlBZsRCDF bxn93V+uQg7KHSDclSqEvrjPMBIKTwlflV7L//6VOPJz8LGmJ0zuJM9aNIo/UAL/me0ltl n52gx+TBVGsT5z9E4HPMTDwmE8ohHVW05TXt/I9oVTTaTobm2R/Bok19RS88xPMzVxOTbm EtGOJZhZM1ndHnTUbq0FQnmMinrso4YhsOhq/NiVWfPmYP8Nw4AENE35e3RFSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761654228; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rXiRIDmKqgBPqEfPIkycMBem2gCXrDNoaLtPh/OHos4=; b=Th5kRvJunm9yhdrbrPeYWvhWbWD0hq8kWvLjtFrHF12wmkvjOE/u2iSFw58/i6Xe5zc2qx fhvSKavUsbIYU6HtXR3jsJZuOi4h9lIYW0T0H16n6/fsSyVydHcGT9WvHCV2U8Zx75ztdn tkcu0//qi2zrEtwlBrhJCOA/OZWr7Okq67mJ58VpNIRc+TCu5Cr1aQMxneGY8cgPiBhy/k y45595w6MHWYxYe8SJftm4P2wlEa4Ltog+YnOLL+DTx/zshF2pweJMucPPEf7BCDP87xGW pw7ZsDDNfYMvDqIIKV1jb3n4DUso6q+H9xe4ZyCKaCGE4RVi1MWc0MCyRPTMBQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761654228; a=rsa-sha256; cv=none; b=P8Uea4Vpz2EUkmFs/gP/Tq9Mu6+YL+2K03a8KDkdHBsxy6MF74pp1Lhy5pW7kjlJfVB9RK YAQAljOqtjY8ycKUezhWvlKXbeVTOTrUx1OaYhbZJtIk+57lWkB1NMiM81t9nglKPy532o lxDuQ1J8JG0mJFA4/HexkKro4uaXcXzm7x7spo3wV/rSxxdIP5EMn9DuFB24Q0GOP1A4Gp rIi5Uk1xUrNOajnyXXnsLn2yWpITw5/nGYHD6pScTYiARgFeo9WGiaOmh04UR3y1YG0tsa LwDbAg5TCVc3GPgHWFIqe6H5POJkz7+7Rkv98LV5opFyNVKE3+gEZ5LAUvS7kQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwqKw1qJ0zqj5; Tue, 28 Oct 2025 12:23:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SCNmKR058648; Tue, 28 Oct 2025 12:23:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SCNmIi058645; Tue, 28 Oct 2025 12:23:48 GMT (envelope-from git) Date: Tue, 28 Oct 2025 12:23:48 GMT Message-Id: <202510281223.59SCNmIi058645@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: db84583a939f - stable/15 - sys: Bump non-ISA PNP removal to 16.0 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: db84583a939f3d678a0c3f5e2ec599c7f9964118 Auto-Submitted: auto-generated The branch stable/15 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=db84583a939f3d678a0c3f5e2ec599c7f9964118 commit db84583a939f3d678a0c3f5e2ec599c7f9964118 Author: Ed Maste AuthorDate: 2025-10-24 18:39:00 +0000 Commit: Ed Maste CommitDate: 2025-10-28 12:23:15 +0000 sys: Bump non-ISA PNP removal to 16.0 This may include atkbdc, which is not being removed in 15.0. Sponsored by: The FreeBSD Foundation (cherry picked from commit 46f982122c0d670ac181b748a5b8c2b221f61517) --- sys/isa/isa_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/isa/isa_common.c b/sys/isa/isa_common.c index 8e4064af1455..b66cf2be3958 100644 --- a/sys/isa/isa_common.c +++ b/sys/isa/isa_common.c @@ -570,7 +570,7 @@ isa_probe_children(device_t dev) strcmp(kern_ident, "GENERIC") == 0 && device_is_attached(child)) device_printf(child, - "non-PNP ISA device will be removed from GENERIC in FreeBSD 15.\n"); + "non-PNP ISA device will be removed from GENERIC in FreeBSD 16.\n"); } /* From nobody Tue Oct 28 15:53:00 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cwvzK1prcz6F4xL; Tue, 28 Oct 2025 15:53:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cwvzK1K8Fz434l; Tue, 28 Oct 2025 15:53:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761666781; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+vO0RqkasKJG1/om1I82L67jAvzTWbn0XC2zBnoM8bQ=; b=x1y/ccD4IK3aZEVxVtkW/bYaS84O1lKB0RvpKiSZ7Vhkqkv6OacEFdie1ojR5epEMZi9rN u14Xn+kg+bAiz52vWbK0HbSS97xcIDeKxckE7EbSibesLDLiD9sn22YaRan0Y2oUZUnDWG rLCihW61Z4F6Dt9iCqIA1MkuihJFRU5/qj/mHCw1VFmpDp4TYKSc14D1jOaAyYq03oEwuf N9Zms9ljUYBrgX3eypaQmfWGfGUcVIt4fWrUj+UlhuGjb79pM5OZOisCmusmbcyDLWTNaP Fk9E3cvvy0G2+a5Xx+BSEsLUwXOjsEmfMLKJhzJ9XuZdtS+SJIIOLhEYspE8KQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761666781; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+vO0RqkasKJG1/om1I82L67jAvzTWbn0XC2zBnoM8bQ=; b=bJq68YJthbwfbGn87FupbBbpKTiD0jrwTyghhz51uOo7bFB7y3Ti4cm2xtO69CjsPcCwB3 PDKKuKf3wsSSr527aov/sSVamCSxw6EF/Mo9AF1kouaehvXGt1M1TFmPd2ZxicSW08V49m XOuyhgPwq+5117NE7ysAHKWhbXDZ0nbC0M9FMCMBL68OvzFbJh7PxULZXvMRfMmmKhYmll tukp+3KsWfdLhm673sQjiCMasj5ztJ193z+Ci3y67P6QmNH7eG3bCTxsXSp1M80OR5fSHC N3JSrpVWPV1K40PUucF/oh5bFUMOcTce7T+cvRdtVmTZmnICw2dv5G4xRS60bg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761666781; a=rsa-sha256; cv=none; b=jTlQIOwtTLflxiMvmSCddYUvjy9qub6a7ptXwv8tSXtv5Qey5i2KJxQBZFdjIKJHK7Gwq9 FNzQJirHKYOAkV/eEhqiWscNzPsGdkOEhLtG+lQkQbcH7rGTePCi/RLkFjguzw6KwodpJR ksDSXf+6BmZKoDDczoz+4oPjybF+6NQVmIilabY2m8saxJObxlexFwzbBUwJq3aGb6pYcY HTdkxcuH6J4R1bkUj3Qo3T4k/r1FPLXErDqHxHQXde5PdzbklTG/8rNz0cclidXxyZ2khd dDRqB+sKNpz+JUMce+CPc6ZdmLE7wsKRhUSBIGDhN3V/gQ+kCTQp5fhVaQTIRg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cwvzK0hjgzxFy; Tue, 28 Oct 2025 15:53:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SFr0fh053100; Tue, 28 Oct 2025 15:53:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SFr0Rf053097; Tue, 28 Oct 2025 15:53:00 GMT (envelope-from git) Date: Tue, 28 Oct 2025 15:53:00 GMT Message-Id: <202510281553.59SFr0Rf053097@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: f0f9b4007015 - stable/14 - deadfs: Return ENXIO instead of EIO when the device is gone. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f0f9b4007015ffd5b3af072dfb70bdbf1250d875 Auto-Submitted: auto-generated The branch stable/14 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=f0f9b4007015ffd5b3af072dfb70bdbf1250d875 commit f0f9b4007015ffd5b3af072dfb70bdbf1250d875 Author: Poul-Henning Kamp AuthorDate: 2025-10-24 07:19:31 +0000 Commit: Colin Percival CommitDate: 2025-10-28 15:52:50 +0000 deadfs: Return ENXIO instead of EIO when the device is gone. One some systems, under some conditions, pulling a USB stick would read(2) returning EIO and not ENXIO, like it should and used to. Recoverdisk(1), which does not give up on EIO, like most programs would, spins furiously. Arguably, deadfs was always wrong in returning EIO, because once you get to deadfs no operation will ever work again, but we used to take a different path through devfs_vnops.c which got us the ENXIO. Something changed recently, and while testing this fix, I noticed that drm-kmod-66/i915kms may be the condition which trigger the different code-path. MFC to: stable/15 Fixes: 289785 Thanks to: imp, kib (cherry picked from commit 2612f1b8649bb4f069a6a064ed714daa5f10d037) --- sys/fs/deadfs/dead_vnops.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/fs/deadfs/dead_vnops.c b/sys/fs/deadfs/dead_vnops.c index 0f850cede292..75a1398ad6aa 100644 --- a/sys/fs/deadfs/dead_vnops.c +++ b/sys/fs/deadfs/dead_vnops.c @@ -124,18 +124,18 @@ dead_read(struct vop_read_args *ap) { /* - * Return EOF for tty devices, EIO for others + * Return EOF for tty devices, ENXIO for others */ - if ((ap->a_vp->v_vflag & VV_ISTTY) == 0) - return (EIO); - return (0); + if (ap->a_vp->v_vflag & VV_ISTTY) + return (0); + return (ENXIO); } int dead_write(struct vop_write_args *ap) { - return (EIO); + return (ENXIO); } int From nobody Tue Oct 28 19:15:56 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cx0TS6By1z6DLf4; Tue, 28 Oct 2025 19:15:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cx0TS5bl3z3ScV; Tue, 28 Oct 2025 19:15:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761678956; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RQSOfN7kcRHDEUhyUmPpNKcOcr+cDXH0tQlFOsmc3bQ=; b=UDwaDq1WWtmVahoGo0WX7Zq9WEnr/xMh9LKgb4JAdTfi8aoBHjVuWoQK6+hObpl9GSxbXB OpieKFbOowa4AUmGCUbRc7OPOc4Lcwlp/fmccEmBqv02asnsYIvjKjgmR1HUXX6bPpu6qD jK1ku+x7sgyolylWr3jutJFA8TEQJk+TM5TmxzGticBBR5rEVl5JsZbqsJ0y5g3EuiMmhF e7unXZDn5yhmydwmEZHytcYyubSJtFwR302tlfOWm/87eUMIyTDtHz6Ni/zMQl0ng89Tsz 9Hkkr8c477K2aEg2zC3yQOUFbr2oTVaGGIhrN/9y6NhdocCuvrWg9qEQId8rPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761678956; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RQSOfN7kcRHDEUhyUmPpNKcOcr+cDXH0tQlFOsmc3bQ=; b=xAte1TPW0jWajXx7RYDxGzauR7KnCqU05fJz/vg3Kw9Pu6WdwC2Kaby0XOU8be0xwPu8Ji rzrum6JtWIpbp7f00lIhq7dYZf6i5jC5N2y5Y0zvadFJc0iKr7PIapSzlbVNwWSakU0FF3 98uk3D1y867oKQ241owh5tlg12NQmdEaO6WpEpFARlYJW+FfPlsM6pd16w55mH9pziFMVw swBqp6j4OI6Vvt3I2EMi2w6P73bio+F4LHYl2FkC96KHr+7fz2Kc8+7DfnOTdB9yCe8v6j Q8+79PptDdvB7e12PgHWX7d9DDMApNfV/0XISBxEuQL7cqyX+wR+2eg6vXbw/w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761678956; a=rsa-sha256; cv=none; b=R/I6jFUh1UfAxpOvh6Nvbjj2b8CmQviZ68GxmEUg6g/QE+j/VQBpAoa1fKkbEXwsEHSxxU gaRbBZCTPtqJzm4Y8XBJ3mffm9GYzOx9A4nkqOACFmCbmrUmIJNYhpashsmqSUlLoplaFO JhJfBCEBYVF4Q4oFYPC9GLEyl8lFvC0P3LWUil5OLAvws5lz46nnYAA4N85WAR/j6rKglk G2XmK3KibcTScjfzFvj/bYLWGtVwPzIs9STizmKlMlEnKTDbSItefBcAZQsXfzzbdUGO3R RxaBnMsI/NKi0HOCtL9FoEnlJtKA7MWXBo1/ap7Rv5f12lrW/IJCO+EVyEhbhA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cx0TS4vFhz13Py; Tue, 28 Oct 2025 19:15:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SJFuap031232; Tue, 28 Oct 2025 19:15:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SJFuZo031229; Tue, 28 Oct 2025 19:15:56 GMT (envelope-from git) Date: Tue, 28 Oct 2025 19:15:56 GMT Message-Id: <202510281915.59SJFuZo031229@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Jonathan T. Looney" Subject: git: d83dee356dce - stable/15 - x86: Reduce amount of time the MCA lock is held while emitting records List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jtl X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: d83dee356dce39b0282bce1f8d7d1ba976995d57 Auto-Submitted: auto-generated The branch stable/15 has been updated by jtl: URL: https://cgit.FreeBSD.org/src/commit/?id=d83dee356dce39b0282bce1f8d7d1ba976995d57 commit d83dee356dce39b0282bce1f8d7d1ba976995d57 Author: Jonathan T. Looney AuthorDate: 2025-10-06 15:07:33 +0000 Commit: Jonathan T. Looney CommitDate: 2025-10-28 19:14:41 +0000 x86: Reduce amount of time the MCA lock is held while emitting records The MCA spin lock is acquired in the hardware interrupt context to record MCA messages. It is also acquired by a task handler to emit those messages. Reduce the amount of time the task handler holds the lock to reduce the maximum amount of time the hardware interrupt handler may need to spin on the lock. Reviewed by: glebius, markj Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D52938 (cherry picked from commit e770e32aa3a017b35fcf24e7c6f14fc2a209bad5) --- sys/x86/x86/mca.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/sys/x86/x86/mca.c b/sys/x86/x86/mca.c index e43c88b3a27b..7ee22895e0a7 100644 --- a/sys/x86/x86/mca.c +++ b/sys/x86/x86/mca.c @@ -796,9 +796,9 @@ mca_record_entry(enum scan_mode mode, const struct mca_record *record) mtx_lock_spin(&mca_lock); rec = STAILQ_FIRST(&mca_freelist); if (rec == NULL) { + mtx_unlock_spin(&mca_lock); printf("MCA: Unable to allocate space for an event.\n"); mca_log(record); - mtx_unlock_spin(&mca_lock); return; } STAILQ_REMOVE_HEAD(&mca_freelist, link); @@ -1017,6 +1017,7 @@ static void mca_process_records(enum scan_mode mode) { struct mca_internal *mca; + STAILQ_HEAD(, mca_internal) tmplist; /* * If in an interrupt context, defer the post-scan activities to a @@ -1028,10 +1029,21 @@ mca_process_records(enum scan_mode mode) return; } + /* + * Copy the pending list to the stack so we can drop the spin lock + * while we are emitting logs. + */ + STAILQ_INIT(&tmplist); mtx_lock_spin(&mca_lock); - while ((mca = STAILQ_FIRST(&mca_pending)) != NULL) { - STAILQ_REMOVE_HEAD(&mca_pending, link); + STAILQ_SWAP(&mca_pending, &tmplist, mca_internal); + mtx_unlock_spin(&mca_lock); + + STAILQ_FOREACH(mca, &tmplist, link) mca_log(&mca->rec); + + mtx_lock_spin(&mca_lock); + while ((mca = STAILQ_FIRST(&tmplist)) != NULL) { + STAILQ_REMOVE_HEAD(&tmplist, link); mca_store_record(mca); } mtx_unlock_spin(&mca_lock); From nobody Tue Oct 28 19:18:30 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cx0XQ5dgxz6DLnd; Tue, 28 Oct 2025 19:18:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cx0XQ5SD6z3T7K; Tue, 28 Oct 2025 19:18:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679110; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uZao6bYtxvZkmZkV+cStUinpn1V7H3vZd0hH/Hh8HKc=; b=xXs+6OukUQwlL3i0NI58qdLM6tUenVRmPifTyLLZ4nIXbSB+zRinXLfiWqQ1xr1RWI+GI0 oJHYM1+oUdQS+uo5qEatqCrmc0rL4q+AFrGZlyVdgL/AIHI7GX41YwLp/34G8LJq1pMmSh VgCPwo9slxqlItJSTOP4Xx4R7mLwOMj9VGdY8lLSgUGD/VWWhDVUB3jP+upYmJy/MQ9Pmm rTT3ngifCGCJiEPtryASrEH2prr7ir9F9IQ6l3gDRFVzvkoSiVEY9UMrmR1KQ3EuoSWMf1 Xk2dDFVcwrZjPcpchDRWJUTDTYRRSKsN6uaCZVjazlTMMiZxyhdURxlvJPM6KA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679110; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uZao6bYtxvZkmZkV+cStUinpn1V7H3vZd0hH/Hh8HKc=; b=Tq7ht6BrI6JLD+E5moSeIIWUyygta1NSC/P3CwhHifuXcnpUnh92d4631DXEH9162UwPeg PY32NDHYa1yk8d49TYgZvVp2sNZ79laYg4qBNVRtxByU6WHNZe+h95j/xeD47b5UJvC8j2 ul9iQccOPI1aWavcKzSklKfRC4AGjOUOn98OLpYWg/1AIKQAoys956jqNrrVPxNE1f2+8G kQi02P+JX0Fx7Ti9XIRhMA4zTPhPi3+rg77lvY3DIYnYcXNXu0tbejDA9CYiX+3IqJcwHD 0ZOUY6fP3xVgi9hWYED1HOAh31W0LppvUZZEOyVu6iiehQObKiU74rP96wwOSQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761679110; a=rsa-sha256; cv=none; b=qRScRqqf9N0naoYgpfWtETeFYQ6v+0QFdY7H9IG2zFHSkiPFSWxJHq/N7rbkjij6Vr7pm7 EJp5fwZSsXNvOhDII7RCKfmFoD7p5SwT0e1EJmkpJoOHij2NNSx4i4Lj6SB7fTguNfXClN chUnqJoqNHoym1nVF4pOj71YxvnjTx4qKAUf3i1jVaJoi+U29H1cb9x5o+Wgn+wWyuXnQ2 o0yZHm1/f/zxQtw953f6Bpu8QPmKi2GE2mCjTwziNmgl2lN9KOhemfAJEAmJQMwSUJ2SsR ZnmCLW010lGiy6CYhPESpUfSwIa1Rb/kZ81lJQDiUvP7FVtJ1OzgIZ/09fj0ow== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cx0XQ4w6Cz12xj; Tue, 28 Oct 2025 19:18:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SJIUa0032217; Tue, 28 Oct 2025 19:18:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SJIU6T032214; Tue, 28 Oct 2025 19:18:30 GMT (envelope-from git) Date: Tue, 28 Oct 2025 19:18:30 GMT Message-Id: <202510281918.59SJIU6T032214@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Jonathan T. Looney" Subject: git: 12a5143cfc26 - stable/15 - x86: Allow MCA messages to be rate-limited List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jtl X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 12a5143cfc269ca53a9aa98754b9285671bb0db4 Auto-Submitted: auto-generated The branch stable/15 has been updated by jtl: URL: https://cgit.FreeBSD.org/src/commit/?id=12a5143cfc269ca53a9aa98754b9285671bb0db4 commit 12a5143cfc269ca53a9aa98754b9285671bb0db4 Author: Jonathan T. Looney AuthorDate: 2025-10-06 20:39:51 +0000 Commit: Jonathan T. Looney CommitDate: 2025-10-28 19:16:20 +0000 x86: Allow MCA messages to be rate-limited Always print the first 50 messages of each type. After that, optionally rate-limit the messages. This provides a way to limit the overhead of processing excessive messages without suppressing the first few of any type. As part of this change, we are switching from direct printf() calls to collecting data in an sbuf(9). In POLLED mode (run from a task queue), we dynamically allocate the buffer. In the other modes (which are likely called from a hardware interrupt), we use a buffer allocated from the BSS segment and guarded by a lock. In normal operation, most calls to mca_log() should come from the POLLED mode, so there should be no contention for the new lock. If there is an interrupt storm which exceeds the capacity of the free list, there will be new contention for this lock; however, overall lock contention should still be lower than it was prior to e770e32aa3a0, when the mca_lock was almost always held for the entirety of the mca_log() call. This commit is partly based on a patch proposed by Loic Prylli . Reviewed by: markj, glebius (previous version) Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D52946 (cherry picked from commit 0d14826de7d9d72e91f1d396120f1456102bccf4) --- sys/x86/x86/mca.c | 211 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 147 insertions(+), 64 deletions(-) diff --git a/sys/x86/x86/mca.c b/sys/x86/x86/mca.c index 7ee22895e0a7..efe1524eb0e7 100644 --- a/sys/x86/x86/mca.c +++ b/sys/x86/x86/mca.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -136,12 +137,40 @@ static struct timeout_task mca_scan_task; static struct mtx mca_lock; static bool mca_startup_done = false; -/* Statistics on number of MCA events by type, updated atomically. */ +/* Static buffer to compose messages while in an interrupt context. */ +static char mca_msg_buf[1024]; +static struct mtx mca_msg_buf_lock; + +/* Statistics on number of MCA events by type, updated with the mca_lock. */ static uint64_t mca_stats[MCA_T_COUNT]; SYSCTL_OPAQUE(_hw_mca, OID_AUTO, stats, CTLFLAG_RD | CTLFLAG_SKIP, mca_stats, MCA_T_COUNT * sizeof(mca_stats[0]), "S", "Array of MCA events by type"); +/* Variables to track and control message rate limiting. */ +static struct timeval mca_last_log_time; +static struct timeval mca_log_interval; +static int mca_log_skipped; + +static int +sysctl_mca_log_interval(SYSCTL_HANDLER_ARGS) +{ + int error; + u_int val; + + val = mca_log_interval.tv_sec; + error = sysctl_handle_int(oidp, &val, 0, req); + if (error != 0 || req->newptr == NULL) + return (error); + mca_log_interval.tv_sec = val; + return (0); +} +SYSCTL_PROC(_hw_mca, OID_AUTO, log_interval, + CTLTYPE_UINT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, &mca_log_interval, 0, + sysctl_mca_log_interval, "IU", + "Minimum number of seconds between logging correctable MCAs" + " (0 = no limit)"); + static unsigned int mca_ia32_ctl_reg(int bank) { @@ -437,98 +466,111 @@ mca_mute(const struct mca_record *rec) /* Dump details about a single machine check. */ static void -mca_log(const struct mca_record *rec) +mca_log(enum scan_mode mode, const struct mca_record *rec) { + int error, numskipped; uint16_t mca_error; enum mca_stat_types event_type; + struct sbuf sb; + bool uncor, using_shared_buf; if (mca_mute(rec)) return; - if (!log_corrected && (rec->mr_status & MC_STATUS_UC) == 0 && - (!tes_supported(rec->mr_mcg_cap) || + uncor = (rec->mr_status & MC_STATUS_UC) != 0; + + if (!log_corrected && !uncor && (!tes_supported(rec->mr_mcg_cap) || ((rec->mr_status & MC_STATUS_TES_STATUS) >> 53) != 0x2)) return; - printf("MCA: Bank %d, Status 0x%016llx\n", rec->mr_bank, + /* Try to use an allocated buffer when not in an interrupt context. */ + if (mode == POLLED && sbuf_new(&sb, NULL, 512, SBUF_AUTOEXTEND) != NULL) + using_shared_buf = false; + else { + using_shared_buf = true; + mtx_lock_spin(&mca_msg_buf_lock); + sbuf_new(&sb, mca_msg_buf, sizeof(mca_msg_buf), SBUF_FIXEDLEN); + } + + sbuf_printf(&sb, "MCA: Bank %d, Status 0x%016llx\n", rec->mr_bank, (long long)rec->mr_status); - printf("MCA: Global Cap 0x%016llx, Status 0x%016llx\n", + sbuf_printf(&sb, "MCA: Global Cap 0x%016llx, Status 0x%016llx\n", (long long)rec->mr_mcg_cap, (long long)rec->mr_mcg_status); - printf("MCA: Vendor \"%s\", ID 0x%x, APIC ID %d\n", cpu_vendor, - rec->mr_cpu_id, rec->mr_apic_id); - printf("MCA: CPU %d ", rec->mr_cpu); + sbuf_printf(&sb, "MCA: Vendor \"%s\", ID 0x%x, APIC ID %d\n", + cpu_vendor, rec->mr_cpu_id, rec->mr_apic_id); + sbuf_printf(&sb, "MCA: CPU %d ", rec->mr_cpu); if (rec->mr_status & MC_STATUS_UC) - printf("UNCOR "); + sbuf_printf(&sb, "UNCOR "); else { - printf("COR "); + sbuf_printf(&sb, "COR "); if (cmci_supported(rec->mr_mcg_cap)) - printf("(%lld) ", ((long long)rec->mr_status & + sbuf_printf(&sb, "(%lld) ", ((long long)rec->mr_status & MC_STATUS_COR_COUNT) >> 38); if (tes_supported(rec->mr_mcg_cap)) { switch ((rec->mr_status & MC_STATUS_TES_STATUS) >> 53) { case 0x1: - printf("(Green) "); + sbuf_printf(&sb, "(Green) "); break; case 0x2: - printf("(Yellow) "); + sbuf_printf(&sb, "(Yellow) "); break; } } } if (rec->mr_status & MC_STATUS_EN) - printf("EN "); + sbuf_printf(&sb, "EN "); if (rec->mr_status & MC_STATUS_PCC) - printf("PCC "); + sbuf_printf(&sb, "PCC "); if (ser_supported(rec->mr_mcg_cap)) { if (rec->mr_status & MC_STATUS_S) - printf("S "); + sbuf_printf(&sb, "S "); if (rec->mr_status & MC_STATUS_AR) - printf("AR "); + sbuf_printf(&sb, "AR "); } if (rec->mr_status & MC_STATUS_OVER) - printf("OVER "); + sbuf_printf(&sb, "OVER "); mca_error = rec->mr_status & MC_STATUS_MCA_ERROR; event_type = MCA_T_COUNT; switch (mca_error) { /* Simple error codes. */ case 0x0000: - printf("no error"); + sbuf_printf(&sb, "no error"); event_type = MCA_T_NONE; break; case 0x0001: - printf("unclassified error"); + sbuf_printf(&sb, "unclassified error"); event_type = MCA_T_UNCLASSIFIED; break; case 0x0002: - printf("ucode ROM parity error"); + sbuf_printf(&sb, "ucode ROM parity error"); event_type = MCA_T_UCODE_ROM_PARITY; break; case 0x0003: - printf("external error"); + sbuf_printf(&sb, "external error"); event_type = MCA_T_EXTERNAL; break; case 0x0004: - printf("FRC error"); + sbuf_printf(&sb, "FRC error"); event_type = MCA_T_FRC; break; case 0x0005: - printf("internal parity error"); + sbuf_printf(&sb, "internal parity error"); event_type = MCA_T_INTERNAL_PARITY; break; case 0x0006: - printf("SMM handler code access violation"); + sbuf_printf(&sb, "SMM handler code access violation"); event_type = MCA_T_SMM_HANDLER; break; case 0x0400: - printf("internal timer error"); + sbuf_printf(&sb, "internal timer error"); event_type = MCA_T_INTERNAL_TIMER; break; case 0x0e0b: - printf("generic I/O error"); + sbuf_printf(&sb, "generic I/O error"); event_type = MCA_T_GENERIC_IO; if (rec->mr_cpu_vendor_id == CPU_VENDOR_INTEL && (rec->mr_status & MC_STATUS_MISCV)) { - printf(" (pci%d:%d:%d:%d)", + sbuf_printf(&sb, " (pci%d:%d:%d:%d)", (int)((rec->mr_misc & MC_MISC_PCIE_SEG) >> 32), (int)((rec->mr_misc & MC_MISC_PCIE_BUS) >> 24), (int)((rec->mr_misc & MC_MISC_PCIE_SLOT) >> 19), @@ -537,7 +579,8 @@ mca_log(const struct mca_record *rec) break; default: if ((mca_error & 0xfc00) == 0x0400) { - printf("internal error %x", mca_error & 0x03ff); + sbuf_printf(&sb, "internal error %x", + mca_error & 0x03ff); event_type = MCA_T_INTERNAL; break; } @@ -546,14 +589,16 @@ mca_log(const struct mca_record *rec) /* Memory hierarchy error. */ if ((mca_error & 0xeffc) == 0x000c) { - printf("%s memory error", mca_error_level(mca_error)); + sbuf_printf(&sb, "%s memory error", + mca_error_level(mca_error)); event_type = MCA_T_MEMORY; break; } /* TLB error. */ if ((mca_error & 0xeff0) == 0x0010) { - printf("%sTLB %s error", mca_error_ttype(mca_error), + sbuf_printf(&sb, "%sTLB %s error", + mca_error_ttype(mca_error), mca_error_level(mca_error)); event_type = MCA_T_TLB; break; @@ -561,19 +606,19 @@ mca_log(const struct mca_record *rec) /* Memory controller error. */ if ((mca_error & 0xef80) == 0x0080) { - printf("%s channel ", mca_error_mmtype(mca_error, - &event_type)); + sbuf_printf(&sb, "%s channel ", + mca_error_mmtype(mca_error, &event_type)); if ((mca_error & 0x000f) != 0x000f) - printf("%d", mca_error & 0x000f); + sbuf_printf(&sb, "%d", mca_error & 0x000f); else - printf("??"); - printf(" memory error"); + sbuf_printf(&sb, "??"); + sbuf_printf(&sb, " memory error"); break; } /* Cache error. */ if ((mca_error & 0xef00) == 0x0100) { - printf("%sCACHE %s %s error", + sbuf_printf(&sb, "%sCACHE %s %s error", mca_error_ttype(mca_error), mca_error_level(mca_error), mca_error_request(mca_error)); @@ -583,77 +628,114 @@ mca_log(const struct mca_record *rec) /* Extended memory error. */ if ((mca_error & 0xef80) == 0x0280) { - printf("%s channel ", mca_error_mmtype(mca_error, - &event_type)); + sbuf_printf(&sb, "%s channel ", + mca_error_mmtype(mca_error, &event_type)); if ((mca_error & 0x000f) != 0x000f) - printf("%d", mca_error & 0x000f); + sbuf_printf(&sb, "%d", mca_error & 0x000f); else - printf("??"); - printf(" extended memory error"); + sbuf_printf(&sb, "??"); + sbuf_printf(&sb, " extended memory error"); break; } /* Bus and/or Interconnect error. */ if ((mca_error & 0xe800) == 0x0800) { - printf("BUS%s ", mca_error_level(mca_error)); + sbuf_printf(&sb, "BUS%s ", mca_error_level(mca_error)); event_type = MCA_T_BUS; switch ((mca_error & 0x0600) >> 9) { case 0: - printf("Source"); + sbuf_printf(&sb, "Source"); break; case 1: - printf("Responder"); + sbuf_printf(&sb, "Responder"); break; case 2: - printf("Observer"); + sbuf_printf(&sb, "Observer"); break; default: - printf("???"); + sbuf_printf(&sb, "???"); break; } - printf(" %s ", mca_error_request(mca_error)); + sbuf_printf(&sb, " %s ", mca_error_request(mca_error)); switch ((mca_error & 0x000c) >> 2) { case 0: - printf("Memory"); + sbuf_printf(&sb, "Memory"); break; case 2: - printf("I/O"); + sbuf_printf(&sb, "I/O"); break; case 3: - printf("Other"); + sbuf_printf(&sb, "Other"); break; default: - printf("???"); + sbuf_printf(&sb, "???"); break; } if (mca_error & 0x0100) - printf(" timed out"); + sbuf_printf(&sb, " timed out"); break; } - printf("unknown error %x", mca_error); + sbuf_printf(&sb, "unknown error %x", mca_error); event_type = MCA_T_UNKNOWN; break; } - printf("\n"); + sbuf_printf(&sb, "\n"); if (rec->mr_status & MC_STATUS_ADDRV) { - printf("MCA: Address 0x%llx", (long long)rec->mr_addr); + sbuf_printf(&sb, "MCA: Address 0x%llx", + (long long)rec->mr_addr); if (ser_supported(rec->mr_mcg_cap) && (rec->mr_status & MC_STATUS_MISCV)) { - printf(" (Mode: %s, LSB: %d)", + sbuf_printf(&sb, " (Mode: %s, LSB: %d)", mca_addres_mode(rec->mr_misc), (int)(rec->mr_misc & MC_MISC_RA_LSB)); } - printf("\n"); + sbuf_printf(&sb, "\n"); } if (rec->mr_status & MC_STATUS_MISCV) - printf("MCA: Misc 0x%llx\n", (long long)rec->mr_misc); + sbuf_printf(&sb, "MCA: Misc 0x%llx\n", (long long)rec->mr_misc); + if (event_type < 0 || event_type >= MCA_T_COUNT) { KASSERT(0, ("%s: invalid event type (%d)", __func__, event_type)); event_type = MCA_T_UNKNOWN; } - atomic_add_64(&mca_stats[event_type], 1); + if (!uncor) { + /* + * Update statistics and check the rate limit for + * correctable errors. The rate limit is only applied + * after the system records a reasonable number of errors + * of the same type. The goal is to reduce the impact of + * the system seeing and attempting to log a burst of + * similar errors, which (especially when printed to the + * console) can be expensive. + */ + mtx_lock_spin(&mca_lock); + mca_stats[event_type]++; + if (mca_log_interval.tv_sec > 0 && mca_stats[event_type] > 50 && + ratecheck(&mca_last_log_time, &mca_log_interval) == 0) { + mca_log_skipped++; + mtx_unlock_spin(&mca_lock); + goto done; + } + numskipped = mca_log_skipped; + mca_log_skipped = 0; + mtx_unlock_spin(&mca_lock); + if (numskipped > 0) + printf("MCA: %d events skipped due to rate limit\n", + numskipped); + } + + error = sbuf_finish(&sb); + if (error) + printf("MCA: error logging message (sbuf error %d)\n", error); + else + sbuf_putbuf(&sb); + +done: + sbuf_delete(&sb); + if (using_shared_buf) + mtx_unlock_spin(&mca_msg_buf_lock); } static bool @@ -798,7 +880,7 @@ mca_record_entry(enum scan_mode mode, const struct mca_record *record) if (rec == NULL) { mtx_unlock_spin(&mca_lock); printf("MCA: Unable to allocate space for an event.\n"); - mca_log(record); + mca_log(mode, record); return; } STAILQ_REMOVE_HEAD(&mca_freelist, link); @@ -955,7 +1037,7 @@ mca_scan(enum scan_mode mode, bool *recoverablep) if (*recoverablep) mca_record_entry(mode, &rec); else - mca_log(&rec); + mca_log(mode, &rec); } #ifdef DEV_APIC @@ -1039,7 +1121,7 @@ mca_process_records(enum scan_mode mode) mtx_unlock_spin(&mca_lock); STAILQ_FOREACH(mca, &tmplist, link) - mca_log(&mca->rec); + mca_log(mode, &mca->rec); mtx_lock_spin(&mca_lock); while ((mca = STAILQ_FIRST(&tmplist)) != NULL) { @@ -1204,6 +1286,7 @@ mca_setup(uint64_t mcg_cap) mca_banks = mcg_cap & MCG_CAP_COUNT; mtx_init(&mca_lock, "mca", NULL, MTX_SPIN); + mtx_init(&mca_msg_buf_lock, "mca_msg_buf", NULL, MTX_SPIN); STAILQ_INIT(&mca_records); STAILQ_INIT(&mca_pending); mca_tq = taskqueue_create_fast("mca", M_WAITOK, From nobody Tue Oct 28 19:20:33 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cx0Zn2fKwz6DLj4; Tue, 28 Oct 2025 19:20:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cx0Zn22VDz3Tdl; Tue, 28 Oct 2025 19:20:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679233; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ABg4+A970tm/CvNdpRsrcXs+oVjmvETRYP0fQL16uoY=; b=kDAIUWfZTSyQydNQn9D3gA6n8YtSmG00JNhHgb6gxAoK72zE1STYEZJKS7ryZLvs0FuloD LEw5QuSj932EKlOu7mGenQpVyvIV0EvjUxBf5VG99FyXFiUg488vqQfhnTAnIr/rBio9wJ QX7Szo5fjApUH57OmBnYMqmb6OT6YMhFuynNYir8hQbbnsJ6Sv3E8eYjbunlZJSNs6poMA gIOzRz93bSxbgb+YWLp3LruEpsXSWS3Ab0FYOQNJrWVuSRoayDdBSWRHjEcBxafjCXkLl4 uW203rkI3msoQgR0v+PDykLauYpvD8pH0FLqoFZcb7mY+vnq/IHN0LsoQZ4FeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679233; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ABg4+A970tm/CvNdpRsrcXs+oVjmvETRYP0fQL16uoY=; b=TiG5HAiKZ2IsefzJyLsg4IDAnXgvgi4A+1JHO1utXbnRnwoizsCyLphxXqQ+8SwWGaSZDI VeuOFrw+i+bCM6xlWaS87uTdP8+dhNwtTR+6nalnT1Lmm7TXcPhRExT0j2BsYmil7hvus5 ThIzEuzbBvt6CufqBhm4SJ1THSVX75d0ANKLsQ6VuERqYFQiTn594JdFdsQ9J1kKt8Tl/6 Kh+xdqy6bjyXMx4wn3ZFJMHhZKj4kkPD4Eh7U8P8f6GCqCZEUkXIXM8DXvCztAwdBZx91Q pR7bhiWYV5MV4itV++0GuYz1P/FeK5lUU+Bdpo1RLuTE51lyNzbcOayr4utf2Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761679233; a=rsa-sha256; cv=none; b=MxUvumpNjlo9ebE3uI+j/eYkNn7/P6TeOqCt38P0qHc4M6XDBleu7dmIKiR10A0L5o9WKM UfCqjav33OpGg3YQpC6Yjf+ubw0XGcrPd6n57EGqnTp2i4Qmxs8ftuNiqrgBBy+4LMeK9u wn37sogrbGM2aHC12CBpQ4m8dI6ZwGU9xp2AIP63iEOKkF+EMbdvQKc50PoNA+uaAe0HmY w4zkCO3gJDq1YlT8EPNrCXAvIntvKcsYXA84PLyZzjbi7u9rZKyVoT4hXZ/a/z40zh2CKb jct29skQAIb39aExxB3zjrBoRigX2fQRe0dA7WncHa0IrUSV21CDUW3kn6gJxw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cx0Zn1f3xz13Q1; Tue, 28 Oct 2025 19:20:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SJKXlA041642; Tue, 28 Oct 2025 19:20:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SJKXgY041639; Tue, 28 Oct 2025 19:20:33 GMT (envelope-from git) Date: Tue, 28 Oct 2025 19:20:33 GMT Message-Id: <202510281920.59SJKXgY041639@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Jonathan T. Looney" Subject: git: fc13cf3c5bd4 - stable/15 - x86: Add a way to inject artificial MCA events for testing List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jtl X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: fc13cf3c5bd4ef4727ab0a2fb7e2ead776b3d97f Auto-Submitted: auto-generated The branch stable/15 has been updated by jtl: URL: https://cgit.FreeBSD.org/src/commit/?id=fc13cf3c5bd4ef4727ab0a2fb7e2ead776b3d97f commit fc13cf3c5bd4ef4727ab0a2fb7e2ead776b3d97f Author: Loic Prylli AuthorDate: 2025-10-06 17:59:41 +0000 Commit: Jonathan T. Looney CommitDate: 2025-10-28 19:19:43 +0000 x86: Add a way to inject artificial MCA events for testing Reviewed by: glebius Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D52942 (cherry picked from commit 1c2fc62e4a9689961169be7836038acd5f757be1) --- sys/x86/x86/mca.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/sys/x86/x86/mca.c b/sys/x86/x86/mca.c index efe1524eb0e7..a167854e8bbb 100644 --- a/sys/x86/x86/mca.c +++ b/sys/x86/x86/mca.c @@ -125,6 +125,17 @@ SYSCTL_INT(_hw_mca, OID_AUTO, erratum383, CTLFLAG_RDTUN, &workaround_erratum383, 0, "Is the workaround for Erratum 383 on AMD Family 10h processors enabled?"); +#ifdef DIAGNOSTIC +static uint64_t fake_status; +SYSCTL_U64(_hw_mca, OID_AUTO, fake_status, CTLFLAG_RW, + &fake_status, 0, + "Insert artificial MCA with given status (testing purpose only)"); +static int fake_bank; +SYSCTL_INT(_hw_mca, OID_AUTO, fake_bank, CTLFLAG_RW, + &fake_bank, 0, + "Bank to use for artificial MCAs (testing purpose only)"); +#endif + static STAILQ_HEAD(, mca_internal) mca_freelist; static int mca_freecount; static STAILQ_HEAD(, mca_internal) mca_records; @@ -783,8 +794,24 @@ mca_check_status(enum scan_mode mode, uint64_t mcg_cap, int bank, bool mce, recover; status = rdmsr(mca_msr_ops.status(bank)); - if (!(status & MC_STATUS_VAL)) + if (!(status & MC_STATUS_VAL)) { +#ifdef DIAGNOSTIC + /* + * Check if we have a pending artificial event to generate. + * Note that this is potentially racy with the sysctl. The + * tradeoff is deemed acceptable given the test nature + * of the code. + */ + if (fake_status && bank == fake_bank) { + status = fake_status; + fake_status = 0; + } + if (!(status & MC_STATUS_VAL)) + return (0); +#else return (0); +#endif + } recover = *recoverablep; mce = mca_is_mce(mcg_cap, status, &recover); From nobody Tue Oct 28 19:21:04 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cx0bN3MSLz6DLng; Tue, 28 Oct 2025 19:21:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cx0bN2pCWz3V23; Tue, 28 Oct 2025 19:21:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679264; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KXPKCwQd9y7FUcRLUoRKD0lorhncamLtKmsuzvF0R1Y=; b=ET+o264p+U0saabcTjKVNUsz1KGSnjBqAy4iqUk1lPuEnShtD6SEk+kMN3fjFAptoU2Lob O4T7ncA9zTaitZnKShSix/NL88wtj0NyR+ooNxqeI4Kz76OCfB9lqpfx1jUFTl9rU6xf4l 7juuArZMca9hnZvuMeuus4QJcYkzvRrl7QVb192KvVzbCEIHzy/qs0c4bWDUa/nJGyRz1U WViBSHBa++Uv2s4osEPS4fhoBdBKXGaEcGiKVmrKQCIUvuGeF6yhHRICa7KPdFGpWeOMIZ SHhPbS0yJ/IBcZYO7T5LErzZ7gsYYdiUvHld9OufkS0reZSmqvhKLlK9nT7B3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679264; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KXPKCwQd9y7FUcRLUoRKD0lorhncamLtKmsuzvF0R1Y=; b=srS/htpsNnybyP86Nxoy9r+0GWqrFQzZ9zsXnebScKfH+t7VfI+jlZV8F4rEK4pVFcD8nT 5IdSboo6HBymElcL+nPulP1ndPl8LPzAZpqP5k/kpYlGknRoBywPN9GQBVbN6KkAAceNV6 1FJaE1sUZEKblGCr0AyG7SDDICKb2rIU0u7w4WnRkNfaeB075xtEhZydpEw+X5rpNbV4B7 tg11a76EYtNs1sZ7I1fWeOrkFAtmVAjC0Rm1yw9FcpXB2ZLhL0xwP8AIZKYhl5Zm7dg5d2 /CxDyLKodS7hIZJ5FjVrm5bWHDaO9WL+D7Q6V894JSBjwn8jE/hUEzBq3y5VSQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761679264; a=rsa-sha256; cv=none; b=SNDZj5e52UMIlo/4Zv5RXfoyEhYRYm3O71Yo/sXo3FZmUBdnm2sX/61PwZ6Wvdvi7xD8bt MzBaNqqnHsjz3HRRIMhxj5J5zvZvsgQxSZZLlls0Y3+tt83KR6ksVxNmijnB5YCl+TjAWu 2KiXWNacAmUI9EX1IPQB2BZyvfY0ACnD+jA3AMH5S50k9JvMQz+I49Jux7DIn2TxLzZ3QV qHe8NV3xwvGDZFvEC3sdOr5DMf1LYrLIpV35uJhSQ9rccYYOwrQMFSr+vSpROpcny+tZNl BTNpkkO1xdYLh068DzgRNyDRJY7RqtnaOtQ1g3FDn/BJE++mz8e86qFvDMMfBQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cx0bN2MPBz13PY; Tue, 28 Oct 2025 19:21:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SJL4mS041934; Tue, 28 Oct 2025 19:21:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SJL4vZ041931; Tue, 28 Oct 2025 19:21:04 GMT (envelope-from git) Date: Tue, 28 Oct 2025 19:21:04 GMT Message-Id: <202510281921.59SJL4vZ041931@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Jonathan T. Looney" Subject: git: 34106dd11966 - stable/15 - x86: support sending non-fatal MCA messages to syslog List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jtl X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 34106dd11966ed43b7bca24e9993fb9172e08dd6 Auto-Submitted: auto-generated The branch stable/15 has been updated by jtl: URL: https://cgit.FreeBSD.org/src/commit/?id=34106dd11966ed43b7bca24e9993fb9172e08dd6 commit 34106dd11966ed43b7bca24e9993fb9172e08dd6 Author: Jonathan T. Looney AuthorDate: 2025-10-07 12:58:05 +0000 Commit: Jonathan T. Looney CommitDate: 2025-10-28 19:20:24 +0000 x86: support sending non-fatal MCA messages to syslog Currently, all MCA messages are logged to the console. However, this can have performance implications which can turn a storm of correctable errors into a disruptive event. Provide an option to direct non-fatal messages to syslog. Note that we will always log to the console for fatal errors. Reviewed by: markj MFC after: 2 weeks Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D12278 (cherry picked from commit 55c28005f544282b984ae0e15dacd0c108d8ab12) --- sys/x86/x86/mca.c | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/sys/x86/x86/mca.c b/sys/x86/x86/mca.c index a167854e8bbb..735efe307215 100644 --- a/sys/x86/x86/mca.c +++ b/sys/x86/x86/mca.c @@ -50,6 +50,7 @@ #include #include #include +#include #include #include #include @@ -136,6 +137,11 @@ SYSCTL_INT(_hw_mca, OID_AUTO, fake_bank, CTLFLAG_RW, "Bank to use for artificial MCAs (testing purpose only)"); #endif +static bool mca_uselog = false; +SYSCTL_BOOL(_hw_mca, OID_AUTO, uselog, CTLFLAG_RWTUN, &mca_uselog, 0, + "Should the system send non-fatal machine check errors to the log " + "(instead of the console)?"); + static STAILQ_HEAD(, mca_internal) mca_freelist; static int mca_freecount; static STAILQ_HEAD(, mca_internal) mca_records; @@ -477,7 +483,7 @@ mca_mute(const struct mca_record *rec) /* Dump details about a single machine check. */ static void -mca_log(enum scan_mode mode, const struct mca_record *rec) +mca_log(enum scan_mode mode, const struct mca_record *rec, bool fatal) { int error, numskipped; uint16_t mca_error; @@ -711,7 +717,8 @@ mca_log(enum scan_mode mode, const struct mca_record *rec) event_type)); event_type = MCA_T_UNKNOWN; } - if (!uncor) { + numskipped = 0; + if (!fatal && !uncor) { /* * Update statistics and check the rate limit for * correctable errors. The rate limit is only applied @@ -732,17 +739,31 @@ mca_log(enum scan_mode mode, const struct mca_record *rec) numskipped = mca_log_skipped; mca_log_skipped = 0; mtx_unlock_spin(&mca_lock); + } + + error = sbuf_finish(&sb); + if (fatal || !mca_uselog) { if (numskipped > 0) printf("MCA: %d events skipped due to rate limit\n", numskipped); + if (error) + printf("MCA: error logging message (sbuf error %d)\n", + error); + else + sbuf_putbuf(&sb); + } else { + if (numskipped > 0) + log(LOG_ERR, + "MCA: %d events skipped due to rate limit\n", + numskipped); + if (error) + log(LOG_ERR, + "MCA: error logging message (sbuf error %d)\n", + error); + else + log(uncor ? LOG_CRIT : LOG_ERR, "%s", sbuf_data(&sb)); } - error = sbuf_finish(&sb); - if (error) - printf("MCA: error logging message (sbuf error %d)\n", error); - else - sbuf_putbuf(&sb); - done: sbuf_delete(&sb); if (using_shared_buf) @@ -907,7 +928,7 @@ mca_record_entry(enum scan_mode mode, const struct mca_record *record) if (rec == NULL) { mtx_unlock_spin(&mca_lock); printf("MCA: Unable to allocate space for an event.\n"); - mca_log(mode, record); + mca_log(mode, record, false); return; } STAILQ_REMOVE_HEAD(&mca_freelist, link); @@ -1064,7 +1085,7 @@ mca_scan(enum scan_mode mode, bool *recoverablep) if (*recoverablep) mca_record_entry(mode, &rec); else - mca_log(mode, &rec); + mca_log(mode, &rec, true); } #ifdef DEV_APIC @@ -1148,7 +1169,7 @@ mca_process_records(enum scan_mode mode) mtx_unlock_spin(&mca_lock); STAILQ_FOREACH(mca, &tmplist, link) - mca_log(mode, &mca->rec); + mca_log(mode, &mca->rec, false); mtx_lock_spin(&mca_lock); while ((mca = STAILQ_FIRST(&tmplist)) != NULL) { From nobody Tue Oct 28 19:23:39 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cx0fN215Jz6DMB2; Tue, 28 Oct 2025 19:23:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cx0fN1T3Yz3VL1; Tue, 28 Oct 2025 19:23:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679420; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=78iYwRdvXVrVIUyegHQYzfaHD/ZBj4hERKbsARNETO0=; b=kuJZxjWebOLQwfhkIsKnMwSCnBjtuRRPlHwQzeG3H0lxqTIjtRvA8Iuj4IksVeEFb5vQkZ hE4iONkszWwcqfgvm+ovFpcV4Anr+eWOmG0yiVYuYTjjDYP1PaBrbgu04BwTN7iq/D75Pb Jj0oQwwXkj+dXSe/RZ3bp0b2kUV02gyBP3KoMPtq/SOUfDLepjfAk/7QBLSq1Gfg++qWMZ 9zqDMJgUdVzdYoO6c3X+1ilpSaZZ8mmolNqDlgg+BtaTA8elmRvDn5saIiIgzTqkREECiy VQ9SXyDtF7BTP0CjVVYFNM10Jam8Hx0h7M2lRTmSesRcdzoCugWyWI97f5XQNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679420; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=78iYwRdvXVrVIUyegHQYzfaHD/ZBj4hERKbsARNETO0=; b=VsmdENx/c/HKE0lPAmbCFVmpLsWFRqR2Uxllc9HN2xL/xUtFfWUyS4WLoqRKGxDRDBF2CX Mxe8lVGCkXW3lkeLwUib88dXokic3tl1nz1Ri/N4OZpGXsnJZ9zXH6tDvCrjblLwdesK0t YB1HUcGsDR2FGOOyQeAgqMcUyNgyU84b6+q6IIyDQVpfirLafKfDMLqimBcZQ0SGXTnT98 rgzXjD9khiAXEvLtoS62HRNR9PV5zADxKdrft7Pj42OjDbwGf8yqs4EaaTG1Ipp8udBd9G ofOa0LoiROeOuM6ASeUtfuT810gti0WmWQkfHIkKaX3NxfQNpSYNx36qmlpCag== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761679420; a=rsa-sha256; cv=none; b=F/pUMBshG0Knht/T/eSmPXnI5ZDTdWxgx0+WGVEq0TyjZANCuk60lYzKr+Pr5KgUwcAmCE GkEJD6YLt+1g9TQZfHmlCQ1cDhB21T88RyPkvkhnL4zc09ryL/blRJz/nkkMCc3opH9EcN rObaWGO9ZKHgxJhV/AIMn7jRC1FJznaq2WUKbjB7nU0FPEqyXrHEOFjcOBBsZ0HDvYfEVJ wMnewUk8Ow2RV2ZEIt5G8lgCciQxoh5Yd2TCWzMwrTQluX1nztlu6MJpUKnm03pohdnYO5 yVYggeZZvriW/fS5Mciqrg9UtwOZHpHoAQVxFkFV4To0zNZ9y/nrQxvKhaOQPA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cx0fN0Hb7z13lf; Tue, 28 Oct 2025 19:23:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SJNdMF049450; Tue, 28 Oct 2025 19:23:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SJNd0M049447; Tue, 28 Oct 2025 19:23:39 GMT (envelope-from git) Date: Tue, 28 Oct 2025 19:23:39 GMT Message-Id: <202510281923.59SJNd0M049447@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Jonathan T. Looney" Subject: git: f5d3c2c7d9db - stable/14 - x86: Reduce amount of time the MCA lock is held while emitting records List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jtl X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f5d3c2c7d9db359f04ddaf8dbdcc1cd2f4b4dfa8 Auto-Submitted: auto-generated The branch stable/14 has been updated by jtl: URL: https://cgit.FreeBSD.org/src/commit/?id=f5d3c2c7d9db359f04ddaf8dbdcc1cd2f4b4dfa8 commit f5d3c2c7d9db359f04ddaf8dbdcc1cd2f4b4dfa8 Author: Jonathan T. Looney AuthorDate: 2025-10-06 15:07:33 +0000 Commit: Jonathan T. Looney CommitDate: 2025-10-28 19:23:08 +0000 x86: Reduce amount of time the MCA lock is held while emitting records The MCA spin lock is acquired in the hardware interrupt context to record MCA messages. It is also acquired by a task handler to emit those messages. Reduce the amount of time the task handler holds the lock to reduce the maximum amount of time the hardware interrupt handler may need to spin on the lock. Reviewed by: glebius, markj Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D52938 (cherry picked from commit e770e32aa3a017b35fcf24e7c6f14fc2a209bad5) --- sys/x86/x86/mca.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/sys/x86/x86/mca.c b/sys/x86/x86/mca.c index e43c88b3a27b..7ee22895e0a7 100644 --- a/sys/x86/x86/mca.c +++ b/sys/x86/x86/mca.c @@ -796,9 +796,9 @@ mca_record_entry(enum scan_mode mode, const struct mca_record *record) mtx_lock_spin(&mca_lock); rec = STAILQ_FIRST(&mca_freelist); if (rec == NULL) { + mtx_unlock_spin(&mca_lock); printf("MCA: Unable to allocate space for an event.\n"); mca_log(record); - mtx_unlock_spin(&mca_lock); return; } STAILQ_REMOVE_HEAD(&mca_freelist, link); @@ -1017,6 +1017,7 @@ static void mca_process_records(enum scan_mode mode) { struct mca_internal *mca; + STAILQ_HEAD(, mca_internal) tmplist; /* * If in an interrupt context, defer the post-scan activities to a @@ -1028,10 +1029,21 @@ mca_process_records(enum scan_mode mode) return; } + /* + * Copy the pending list to the stack so we can drop the spin lock + * while we are emitting logs. + */ + STAILQ_INIT(&tmplist); mtx_lock_spin(&mca_lock); - while ((mca = STAILQ_FIRST(&mca_pending)) != NULL) { - STAILQ_REMOVE_HEAD(&mca_pending, link); + STAILQ_SWAP(&mca_pending, &tmplist, mca_internal); + mtx_unlock_spin(&mca_lock); + + STAILQ_FOREACH(mca, &tmplist, link) mca_log(&mca->rec); + + mtx_lock_spin(&mca_lock); + while ((mca = STAILQ_FIRST(&tmplist)) != NULL) { + STAILQ_REMOVE_HEAD(&tmplist, link); mca_store_record(mca); } mtx_unlock_spin(&mca_lock); From nobody Tue Oct 28 19:24:25 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cx0gF6RxJz6DMB7; Tue, 28 Oct 2025 19:24:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cx0gF6D8Lz3VRv; Tue, 28 Oct 2025 19:24:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679465; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SHcSnwMn5UpLq+rY6s+mBubo1v3pR/8yOomghZPynFA=; b=v7v/Jd/uHieKGlNFPraArLxXabLufIyGf0Rasu1/2zZWDENomqpKnPflkZFD/u6059mE/J tMmK9DIiccOH7pUKceCjVyeGQFWKnDcLInGbF31WAgMp7luo+JHBKN2Fg6dPhz3B0vjb/g 8gdLrq18+H8V+3kkpW7OkkRMq471vgdmfhqCpBqf9J6nM2KsT8ia4qgZFTNxc4S+/hGtzu B9Hyk27Jas8Xq+6sFIiV9YkU/sOVk+iaDq3PEPRwauFKIVrDFr0oOgTImbPb+cbuajKf1s L6L1jy34DBv4k9ZXzBD98PMXm1vpjEjE8Qv/ny4bO157wqynggcSllwVUjAHBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679465; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SHcSnwMn5UpLq+rY6s+mBubo1v3pR/8yOomghZPynFA=; b=Aw0If1eZsXmUdQxNmyxYZMPu8sSMAjt2ZcuvRYO/UXrgHeR2tQsAKd+t8KdfMeCNlGHHL6 s7+CV/IrZlpbuD/ko1Vkt5NlFWR4npD0J6Vr/LIAGbASX1T++3FKortgLtOcBdP2YmGZlL M/uSKwo3K6vUQcLE7C5Y+YzH6rlN5Uevfk0jRgafS/HnPwhEmDZSygQE3DLMpri0ZwX8vC aU9oJbQA+ZAz696p/v/y0cOS5rqY0AK1rVtcN+jD8iDGkY6rofNsvScT8MzruNka1UaPSB 8MPgooqV2Yg77oXMkf1M+6XmUeuxZyDtQX7G8wckb/y9GHBMRnaiTAiPgh9dZw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761679465; a=rsa-sha256; cv=none; b=WFeK5GzvkiXP7PlP6gGAQMt/IScGqdhy9JWi6orG8256uRyxyGjy30TdEk17iug/Lp/5I4 wLeSPCXMPk+jH3DOjocY/0Gp1MYIkfvCZW+KHHZ6Z/SmGCHgiO4fkaW+ciMfuJ+EdCp1y5 q3jVktdfOKie6ddg+qsrji2HuUcMorUpRrBOqVOg+3XiGNOUMEapNxbxcXyexMGL2IWHso dP2GHG+tC+OBjibMmfwxksrqMda/DqPUgy1AAd/lDQwWYuVbVKw/LRIpPWrUFPmR5N/50D teOmWGN8/QKjbfMzNzVQcNkDZxQXE1ghcHsXkXbBhc6Pu3eoefSua4gA5OZxcg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cx0gF5psDz13lg; Tue, 28 Oct 2025 19:24:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SJOP0C049795; Tue, 28 Oct 2025 19:24:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SJOPRT049792; Tue, 28 Oct 2025 19:24:25 GMT (envelope-from git) Date: Tue, 28 Oct 2025 19:24:25 GMT Message-Id: <202510281924.59SJOPRT049792@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Jonathan T. Looney" Subject: git: fda981d41491 - stable/14 - x86: Allow MCA messages to be rate-limited List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jtl X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: fda981d41491ba61a1fa24c65d6b16f4426ee29d Auto-Submitted: auto-generated The branch stable/14 has been updated by jtl: URL: https://cgit.FreeBSD.org/src/commit/?id=fda981d41491ba61a1fa24c65d6b16f4426ee29d commit fda981d41491ba61a1fa24c65d6b16f4426ee29d Author: Jonathan T. Looney AuthorDate: 2025-10-06 20:39:51 +0000 Commit: Jonathan T. Looney CommitDate: 2025-10-28 19:23:56 +0000 x86: Allow MCA messages to be rate-limited Always print the first 50 messages of each type. After that, optionally rate-limit the messages. This provides a way to limit the overhead of processing excessive messages without suppressing the first few of any type. As part of this change, we are switching from direct printf() calls to collecting data in an sbuf(9). In POLLED mode (run from a task queue), we dynamically allocate the buffer. In the other modes (which are likely called from a hardware interrupt), we use a buffer allocated from the BSS segment and guarded by a lock. In normal operation, most calls to mca_log() should come from the POLLED mode, so there should be no contention for the new lock. If there is an interrupt storm which exceeds the capacity of the free list, there will be new contention for this lock; however, overall lock contention should still be lower than it was prior to e770e32aa3a0, when the mca_lock was almost always held for the entirety of the mca_log() call. This commit is partly based on a patch proposed by Loic Prylli . Reviewed by: markj, glebius (previous version) Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D52946 (cherry picked from commit 0d14826de7d9d72e91f1d396120f1456102bccf4) --- sys/x86/x86/mca.c | 211 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 147 insertions(+), 64 deletions(-) diff --git a/sys/x86/x86/mca.c b/sys/x86/x86/mca.c index 7ee22895e0a7..efe1524eb0e7 100644 --- a/sys/x86/x86/mca.c +++ b/sys/x86/x86/mca.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -136,12 +137,40 @@ static struct timeout_task mca_scan_task; static struct mtx mca_lock; static bool mca_startup_done = false; -/* Statistics on number of MCA events by type, updated atomically. */ +/* Static buffer to compose messages while in an interrupt context. */ +static char mca_msg_buf[1024]; +static struct mtx mca_msg_buf_lock; + +/* Statistics on number of MCA events by type, updated with the mca_lock. */ static uint64_t mca_stats[MCA_T_COUNT]; SYSCTL_OPAQUE(_hw_mca, OID_AUTO, stats, CTLFLAG_RD | CTLFLAG_SKIP, mca_stats, MCA_T_COUNT * sizeof(mca_stats[0]), "S", "Array of MCA events by type"); +/* Variables to track and control message rate limiting. */ +static struct timeval mca_last_log_time; +static struct timeval mca_log_interval; +static int mca_log_skipped; + +static int +sysctl_mca_log_interval(SYSCTL_HANDLER_ARGS) +{ + int error; + u_int val; + + val = mca_log_interval.tv_sec; + error = sysctl_handle_int(oidp, &val, 0, req); + if (error != 0 || req->newptr == NULL) + return (error); + mca_log_interval.tv_sec = val; + return (0); +} +SYSCTL_PROC(_hw_mca, OID_AUTO, log_interval, + CTLTYPE_UINT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, &mca_log_interval, 0, + sysctl_mca_log_interval, "IU", + "Minimum number of seconds between logging correctable MCAs" + " (0 = no limit)"); + static unsigned int mca_ia32_ctl_reg(int bank) { @@ -437,98 +466,111 @@ mca_mute(const struct mca_record *rec) /* Dump details about a single machine check. */ static void -mca_log(const struct mca_record *rec) +mca_log(enum scan_mode mode, const struct mca_record *rec) { + int error, numskipped; uint16_t mca_error; enum mca_stat_types event_type; + struct sbuf sb; + bool uncor, using_shared_buf; if (mca_mute(rec)) return; - if (!log_corrected && (rec->mr_status & MC_STATUS_UC) == 0 && - (!tes_supported(rec->mr_mcg_cap) || + uncor = (rec->mr_status & MC_STATUS_UC) != 0; + + if (!log_corrected && !uncor && (!tes_supported(rec->mr_mcg_cap) || ((rec->mr_status & MC_STATUS_TES_STATUS) >> 53) != 0x2)) return; - printf("MCA: Bank %d, Status 0x%016llx\n", rec->mr_bank, + /* Try to use an allocated buffer when not in an interrupt context. */ + if (mode == POLLED && sbuf_new(&sb, NULL, 512, SBUF_AUTOEXTEND) != NULL) + using_shared_buf = false; + else { + using_shared_buf = true; + mtx_lock_spin(&mca_msg_buf_lock); + sbuf_new(&sb, mca_msg_buf, sizeof(mca_msg_buf), SBUF_FIXEDLEN); + } + + sbuf_printf(&sb, "MCA: Bank %d, Status 0x%016llx\n", rec->mr_bank, (long long)rec->mr_status); - printf("MCA: Global Cap 0x%016llx, Status 0x%016llx\n", + sbuf_printf(&sb, "MCA: Global Cap 0x%016llx, Status 0x%016llx\n", (long long)rec->mr_mcg_cap, (long long)rec->mr_mcg_status); - printf("MCA: Vendor \"%s\", ID 0x%x, APIC ID %d\n", cpu_vendor, - rec->mr_cpu_id, rec->mr_apic_id); - printf("MCA: CPU %d ", rec->mr_cpu); + sbuf_printf(&sb, "MCA: Vendor \"%s\", ID 0x%x, APIC ID %d\n", + cpu_vendor, rec->mr_cpu_id, rec->mr_apic_id); + sbuf_printf(&sb, "MCA: CPU %d ", rec->mr_cpu); if (rec->mr_status & MC_STATUS_UC) - printf("UNCOR "); + sbuf_printf(&sb, "UNCOR "); else { - printf("COR "); + sbuf_printf(&sb, "COR "); if (cmci_supported(rec->mr_mcg_cap)) - printf("(%lld) ", ((long long)rec->mr_status & + sbuf_printf(&sb, "(%lld) ", ((long long)rec->mr_status & MC_STATUS_COR_COUNT) >> 38); if (tes_supported(rec->mr_mcg_cap)) { switch ((rec->mr_status & MC_STATUS_TES_STATUS) >> 53) { case 0x1: - printf("(Green) "); + sbuf_printf(&sb, "(Green) "); break; case 0x2: - printf("(Yellow) "); + sbuf_printf(&sb, "(Yellow) "); break; } } } if (rec->mr_status & MC_STATUS_EN) - printf("EN "); + sbuf_printf(&sb, "EN "); if (rec->mr_status & MC_STATUS_PCC) - printf("PCC "); + sbuf_printf(&sb, "PCC "); if (ser_supported(rec->mr_mcg_cap)) { if (rec->mr_status & MC_STATUS_S) - printf("S "); + sbuf_printf(&sb, "S "); if (rec->mr_status & MC_STATUS_AR) - printf("AR "); + sbuf_printf(&sb, "AR "); } if (rec->mr_status & MC_STATUS_OVER) - printf("OVER "); + sbuf_printf(&sb, "OVER "); mca_error = rec->mr_status & MC_STATUS_MCA_ERROR; event_type = MCA_T_COUNT; switch (mca_error) { /* Simple error codes. */ case 0x0000: - printf("no error"); + sbuf_printf(&sb, "no error"); event_type = MCA_T_NONE; break; case 0x0001: - printf("unclassified error"); + sbuf_printf(&sb, "unclassified error"); event_type = MCA_T_UNCLASSIFIED; break; case 0x0002: - printf("ucode ROM parity error"); + sbuf_printf(&sb, "ucode ROM parity error"); event_type = MCA_T_UCODE_ROM_PARITY; break; case 0x0003: - printf("external error"); + sbuf_printf(&sb, "external error"); event_type = MCA_T_EXTERNAL; break; case 0x0004: - printf("FRC error"); + sbuf_printf(&sb, "FRC error"); event_type = MCA_T_FRC; break; case 0x0005: - printf("internal parity error"); + sbuf_printf(&sb, "internal parity error"); event_type = MCA_T_INTERNAL_PARITY; break; case 0x0006: - printf("SMM handler code access violation"); + sbuf_printf(&sb, "SMM handler code access violation"); event_type = MCA_T_SMM_HANDLER; break; case 0x0400: - printf("internal timer error"); + sbuf_printf(&sb, "internal timer error"); event_type = MCA_T_INTERNAL_TIMER; break; case 0x0e0b: - printf("generic I/O error"); + sbuf_printf(&sb, "generic I/O error"); event_type = MCA_T_GENERIC_IO; if (rec->mr_cpu_vendor_id == CPU_VENDOR_INTEL && (rec->mr_status & MC_STATUS_MISCV)) { - printf(" (pci%d:%d:%d:%d)", + sbuf_printf(&sb, " (pci%d:%d:%d:%d)", (int)((rec->mr_misc & MC_MISC_PCIE_SEG) >> 32), (int)((rec->mr_misc & MC_MISC_PCIE_BUS) >> 24), (int)((rec->mr_misc & MC_MISC_PCIE_SLOT) >> 19), @@ -537,7 +579,8 @@ mca_log(const struct mca_record *rec) break; default: if ((mca_error & 0xfc00) == 0x0400) { - printf("internal error %x", mca_error & 0x03ff); + sbuf_printf(&sb, "internal error %x", + mca_error & 0x03ff); event_type = MCA_T_INTERNAL; break; } @@ -546,14 +589,16 @@ mca_log(const struct mca_record *rec) /* Memory hierarchy error. */ if ((mca_error & 0xeffc) == 0x000c) { - printf("%s memory error", mca_error_level(mca_error)); + sbuf_printf(&sb, "%s memory error", + mca_error_level(mca_error)); event_type = MCA_T_MEMORY; break; } /* TLB error. */ if ((mca_error & 0xeff0) == 0x0010) { - printf("%sTLB %s error", mca_error_ttype(mca_error), + sbuf_printf(&sb, "%sTLB %s error", + mca_error_ttype(mca_error), mca_error_level(mca_error)); event_type = MCA_T_TLB; break; @@ -561,19 +606,19 @@ mca_log(const struct mca_record *rec) /* Memory controller error. */ if ((mca_error & 0xef80) == 0x0080) { - printf("%s channel ", mca_error_mmtype(mca_error, - &event_type)); + sbuf_printf(&sb, "%s channel ", + mca_error_mmtype(mca_error, &event_type)); if ((mca_error & 0x000f) != 0x000f) - printf("%d", mca_error & 0x000f); + sbuf_printf(&sb, "%d", mca_error & 0x000f); else - printf("??"); - printf(" memory error"); + sbuf_printf(&sb, "??"); + sbuf_printf(&sb, " memory error"); break; } /* Cache error. */ if ((mca_error & 0xef00) == 0x0100) { - printf("%sCACHE %s %s error", + sbuf_printf(&sb, "%sCACHE %s %s error", mca_error_ttype(mca_error), mca_error_level(mca_error), mca_error_request(mca_error)); @@ -583,77 +628,114 @@ mca_log(const struct mca_record *rec) /* Extended memory error. */ if ((mca_error & 0xef80) == 0x0280) { - printf("%s channel ", mca_error_mmtype(mca_error, - &event_type)); + sbuf_printf(&sb, "%s channel ", + mca_error_mmtype(mca_error, &event_type)); if ((mca_error & 0x000f) != 0x000f) - printf("%d", mca_error & 0x000f); + sbuf_printf(&sb, "%d", mca_error & 0x000f); else - printf("??"); - printf(" extended memory error"); + sbuf_printf(&sb, "??"); + sbuf_printf(&sb, " extended memory error"); break; } /* Bus and/or Interconnect error. */ if ((mca_error & 0xe800) == 0x0800) { - printf("BUS%s ", mca_error_level(mca_error)); + sbuf_printf(&sb, "BUS%s ", mca_error_level(mca_error)); event_type = MCA_T_BUS; switch ((mca_error & 0x0600) >> 9) { case 0: - printf("Source"); + sbuf_printf(&sb, "Source"); break; case 1: - printf("Responder"); + sbuf_printf(&sb, "Responder"); break; case 2: - printf("Observer"); + sbuf_printf(&sb, "Observer"); break; default: - printf("???"); + sbuf_printf(&sb, "???"); break; } - printf(" %s ", mca_error_request(mca_error)); + sbuf_printf(&sb, " %s ", mca_error_request(mca_error)); switch ((mca_error & 0x000c) >> 2) { case 0: - printf("Memory"); + sbuf_printf(&sb, "Memory"); break; case 2: - printf("I/O"); + sbuf_printf(&sb, "I/O"); break; case 3: - printf("Other"); + sbuf_printf(&sb, "Other"); break; default: - printf("???"); + sbuf_printf(&sb, "???"); break; } if (mca_error & 0x0100) - printf(" timed out"); + sbuf_printf(&sb, " timed out"); break; } - printf("unknown error %x", mca_error); + sbuf_printf(&sb, "unknown error %x", mca_error); event_type = MCA_T_UNKNOWN; break; } - printf("\n"); + sbuf_printf(&sb, "\n"); if (rec->mr_status & MC_STATUS_ADDRV) { - printf("MCA: Address 0x%llx", (long long)rec->mr_addr); + sbuf_printf(&sb, "MCA: Address 0x%llx", + (long long)rec->mr_addr); if (ser_supported(rec->mr_mcg_cap) && (rec->mr_status & MC_STATUS_MISCV)) { - printf(" (Mode: %s, LSB: %d)", + sbuf_printf(&sb, " (Mode: %s, LSB: %d)", mca_addres_mode(rec->mr_misc), (int)(rec->mr_misc & MC_MISC_RA_LSB)); } - printf("\n"); + sbuf_printf(&sb, "\n"); } if (rec->mr_status & MC_STATUS_MISCV) - printf("MCA: Misc 0x%llx\n", (long long)rec->mr_misc); + sbuf_printf(&sb, "MCA: Misc 0x%llx\n", (long long)rec->mr_misc); + if (event_type < 0 || event_type >= MCA_T_COUNT) { KASSERT(0, ("%s: invalid event type (%d)", __func__, event_type)); event_type = MCA_T_UNKNOWN; } - atomic_add_64(&mca_stats[event_type], 1); + if (!uncor) { + /* + * Update statistics and check the rate limit for + * correctable errors. The rate limit is only applied + * after the system records a reasonable number of errors + * of the same type. The goal is to reduce the impact of + * the system seeing and attempting to log a burst of + * similar errors, which (especially when printed to the + * console) can be expensive. + */ + mtx_lock_spin(&mca_lock); + mca_stats[event_type]++; + if (mca_log_interval.tv_sec > 0 && mca_stats[event_type] > 50 && + ratecheck(&mca_last_log_time, &mca_log_interval) == 0) { + mca_log_skipped++; + mtx_unlock_spin(&mca_lock); + goto done; + } + numskipped = mca_log_skipped; + mca_log_skipped = 0; + mtx_unlock_spin(&mca_lock); + if (numskipped > 0) + printf("MCA: %d events skipped due to rate limit\n", + numskipped); + } + + error = sbuf_finish(&sb); + if (error) + printf("MCA: error logging message (sbuf error %d)\n", error); + else + sbuf_putbuf(&sb); + +done: + sbuf_delete(&sb); + if (using_shared_buf) + mtx_unlock_spin(&mca_msg_buf_lock); } static bool @@ -798,7 +880,7 @@ mca_record_entry(enum scan_mode mode, const struct mca_record *record) if (rec == NULL) { mtx_unlock_spin(&mca_lock); printf("MCA: Unable to allocate space for an event.\n"); - mca_log(record); + mca_log(mode, record); return; } STAILQ_REMOVE_HEAD(&mca_freelist, link); @@ -955,7 +1037,7 @@ mca_scan(enum scan_mode mode, bool *recoverablep) if (*recoverablep) mca_record_entry(mode, &rec); else - mca_log(&rec); + mca_log(mode, &rec); } #ifdef DEV_APIC @@ -1039,7 +1121,7 @@ mca_process_records(enum scan_mode mode) mtx_unlock_spin(&mca_lock); STAILQ_FOREACH(mca, &tmplist, link) - mca_log(&mca->rec); + mca_log(mode, &mca->rec); mtx_lock_spin(&mca_lock); while ((mca = STAILQ_FIRST(&tmplist)) != NULL) { @@ -1204,6 +1286,7 @@ mca_setup(uint64_t mcg_cap) mca_banks = mcg_cap & MCG_CAP_COUNT; mtx_init(&mca_lock, "mca", NULL, MTX_SPIN); + mtx_init(&mca_msg_buf_lock, "mca_msg_buf", NULL, MTX_SPIN); STAILQ_INIT(&mca_records); STAILQ_INIT(&mca_pending); mca_tq = taskqueue_create_fast("mca", M_WAITOK, From nobody Tue Oct 28 19:25:15 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cx0hC4VhFz6DLpN; Tue, 28 Oct 2025 19:25:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cx0hC3XLhz3WLl; Tue, 28 Oct 2025 19:25:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679515; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kjQTiYtluzczEsJen2SXErWXGyjpHyYcDMEdNqNkmuk=; b=yvYi934zlQdkP7eFGsSX42YGRHMmXjS5hfgUmLye2yDw6RPD0NUV1O7yx8eaFbtHyOg7UC pe6ieP311M46e6SlBHcKz7qvK3qphgtTRfytAn4968rGyjKReLH0rfOp3TFjxVx3BijALE H0fx72x9EOiJonrHOjXhXtY/fzi9Y1fjpt1+KMo+xQ8UgFHmlsgONcdvaMAjc3IWzAjuR9 hQWmNHeW6zJGwO/PmxeuCPRIHnslCTIlHM7xdFxQcrElS6qlerv9OMje+avaF2bkvlID6m WXjWfTWC4IZg69iNitTvPIgWN8pLWkRI1mO9GNppe2PWc++pEuiIkMjBLnzT3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679515; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kjQTiYtluzczEsJen2SXErWXGyjpHyYcDMEdNqNkmuk=; b=NLt6of9ooJwiPCa+PbXw784bvrWg7EqjM3Gvoybsl9NxLvyHBBX4lo+lEJX6VF2zFyrqVQ dErdb6cdwawnk/jLfIxqk0Ch5fSc5RIhTeG2IUM2ExcCp+BEl+3539CTNj7gcJmMR+Rwl3 2tcC4f7HrL1gZPGXS1OkWhkapdJbb5Dp3GztY7Wew6BhVJAMr+1Wj9ZG7/zCDICcK6H+Tg BzJm8J/dNbJ4WylVw/XHZoS4VkCWqdcU9DlRjGmvEhKZlpyOHr1PPll1j/fGtREF4SPPpd /PL9hDhMloYzaF/g+6yNp3+voCzafDq5Vtl3yYUNRFfVLQxHfAFubEbxNLYMAw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761679515; a=rsa-sha256; cv=none; b=PndBTc+BMSMi63UU0tkzBR7FxbFofzWpqH8AtAV4Bihf8ENEdUBkCIIEDS5HtsKsTE+nSi K1QpZNgj8tY+vAOYYnwmNBKEknnWEboyg37YVFRIt8ZP/Gd+PMNZCzg90Jr3deJKr0fkOT WUD3B8BB/a8ENyS8JnbiZbgla4CXpUIUDBm04ulh+LI32PrCKHt704JqAJuXMm/UvYMrB6 rR2wKfPOddHVshpddWZDy6POHAC+lbhcMnISSNlSH/EEAMODcdwxPjQdkCAF4Ybu3+aZPX kE6Ln7iwXu9654pzj7eNXtkbw7tQlgNkyFeeshIxVd9qmY/5HVY3ytfXlpjc2A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cx0hC2n1Fz13lh; Tue, 28 Oct 2025 19:25:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SJPFOs050326; Tue, 28 Oct 2025 19:25:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SJPFBn050323; Tue, 28 Oct 2025 19:25:15 GMT (envelope-from git) Date: Tue, 28 Oct 2025 19:25:15 GMT Message-Id: <202510281925.59SJPFBn050323@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Jonathan T. Looney" Subject: git: 40b2111cfaa1 - stable/14 - x86: Add a way to inject artificial MCA events for testing List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jtl X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 40b2111cfaa1ea9c7ae3487e536e8f75debba700 Auto-Submitted: auto-generated The branch stable/14 has been updated by jtl: URL: https://cgit.FreeBSD.org/src/commit/?id=40b2111cfaa1ea9c7ae3487e536e8f75debba700 commit 40b2111cfaa1ea9c7ae3487e536e8f75debba700 Author: Loic Prylli AuthorDate: 2025-10-06 17:59:41 +0000 Commit: Jonathan T. Looney CommitDate: 2025-10-28 19:24:31 +0000 x86: Add a way to inject artificial MCA events for testing Reviewed by: glebius Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D52942 (cherry picked from commit 1c2fc62e4a9689961169be7836038acd5f757be1) --- sys/x86/x86/mca.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/sys/x86/x86/mca.c b/sys/x86/x86/mca.c index efe1524eb0e7..a167854e8bbb 100644 --- a/sys/x86/x86/mca.c +++ b/sys/x86/x86/mca.c @@ -125,6 +125,17 @@ SYSCTL_INT(_hw_mca, OID_AUTO, erratum383, CTLFLAG_RDTUN, &workaround_erratum383, 0, "Is the workaround for Erratum 383 on AMD Family 10h processors enabled?"); +#ifdef DIAGNOSTIC +static uint64_t fake_status; +SYSCTL_U64(_hw_mca, OID_AUTO, fake_status, CTLFLAG_RW, + &fake_status, 0, + "Insert artificial MCA with given status (testing purpose only)"); +static int fake_bank; +SYSCTL_INT(_hw_mca, OID_AUTO, fake_bank, CTLFLAG_RW, + &fake_bank, 0, + "Bank to use for artificial MCAs (testing purpose only)"); +#endif + static STAILQ_HEAD(, mca_internal) mca_freelist; static int mca_freecount; static STAILQ_HEAD(, mca_internal) mca_records; @@ -783,8 +794,24 @@ mca_check_status(enum scan_mode mode, uint64_t mcg_cap, int bank, bool mce, recover; status = rdmsr(mca_msr_ops.status(bank)); - if (!(status & MC_STATUS_VAL)) + if (!(status & MC_STATUS_VAL)) { +#ifdef DIAGNOSTIC + /* + * Check if we have a pending artificial event to generate. + * Note that this is potentially racy with the sysctl. The + * tradeoff is deemed acceptable given the test nature + * of the code. + */ + if (fake_status && bank == fake_bank) { + status = fake_status; + fake_status = 0; + } + if (!(status & MC_STATUS_VAL)) + return (0); +#else return (0); +#endif + } recover = *recoverablep; mce = mca_is_mce(mcg_cap, status, &recover); From nobody Tue Oct 28 19:25:53 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cx0hy022wz6DLq5; Tue, 28 Oct 2025 19:25:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cx0hx6fg4z3WNN; Tue, 28 Oct 2025 19:25:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679553; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=K/L2TrvhNHLPBtDtAgzUDe6uos4JUVifAXY0+lJa5cA=; b=CaSoVZI8n6pVnh2IQ3SSMBvbu4AzhW/tkcsyMQg5OCUSq1Wao0Mvsed3qkohbeCO2BHSVF ey1C2TfcGPCgMu7jsiZkY5mTVXgNZ6VCpwJxLJinnSc/u+Bw8J43OH3qrGTMbdzqC7CcK4 YiPWcK5LaOsbQ5+GfVFTNVfvImK3Tw1LjyOxAvKh/0tieEyKelEe940LWjDkb+soC7GaLl z8pr9VUhHapbZ2rCtcnR7uU5e+JcheWETeZcfLE/HrV/RAHk9lBXF0KLOtiqxl8oiO9oHf z0iI+oV+lQRkH1NwNlBTfDEQC48Xe67Q3bboluRlQraHVu/R3eArbwMhTBXrQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679553; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=K/L2TrvhNHLPBtDtAgzUDe6uos4JUVifAXY0+lJa5cA=; b=n7DAOcDfqWQvbkO+pyNTb4y79vHluoADAXo6SO+r+3dOWGK2voEgfVqN+s1VNHe/OLrYme 0Xfvw7wUqghGahfglWluBhSzHGx63ZiAX0UasLDp6LjBMaR3dauY0Z/PD54YIxlO+zyBaq 6WGVJXcgGyzYug1jNH4TDIYd0aErsxrpoLoUChT4L9lEKjjh30IqeVhD6+NZLUNq613J4b NXMLhomMPY7rLmXfGkcTYOqHqZig05pALWP+nkiFxQfskqFdtRbGlT3ZdsuTF/y8UO6X88 yVUJLZU0qty6yO/Qx7HN0KU8g0/B7r0XqQ2MfI+GfcSBQBitAn4nrksqt7fiXA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761679553; a=rsa-sha256; cv=none; b=Gh9bMTh5X9MYGWTAYfbb96P5qhPhdWmgizf2NsGmjhTI4iPUNxKG82+6PnnQ6D9zzYy4My ww0y3fW9CbOq8P7nrH3mx4W7hyLwRWoqXYPwsrPTwX4Mjt6kIUIbW2SA91m2yEH+knbhrp stfXJEpMLp6smcmGWsVBmulHqvLFt8wgl2syUyVcNxZ9JkszN8H9bOCPL0nduA24wXbsDV 8K3UAbQbGyXbUDVowT0W/r+zFQhxTllLFmoUOLDL6fOJkBGSeocx5dSJ8/9AlYW5g2FCd6 xmWa0LIm5GvwEw8iWuTJqny+GbOEiIQrdoyqqGyzYOBfvsS8KayoKMbV/Obegg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cx0hx6GL0z13B1; Tue, 28 Oct 2025 19:25:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SJPrW3050623; Tue, 28 Oct 2025 19:25:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SJPriW050620; Tue, 28 Oct 2025 19:25:53 GMT (envelope-from git) Date: Tue, 28 Oct 2025 19:25:53 GMT Message-Id: <202510281925.59SJPriW050620@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Jonathan T. Looney" Subject: git: 4b69237639bf - stable/14 - x86: support sending non-fatal MCA messages to syslog List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jtl X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 4b69237639bf5472e01e21f6c4cdbe753375727d Auto-Submitted: auto-generated The branch stable/14 has been updated by jtl: URL: https://cgit.FreeBSD.org/src/commit/?id=4b69237639bf5472e01e21f6c4cdbe753375727d commit 4b69237639bf5472e01e21f6c4cdbe753375727d Author: Jonathan T. Looney AuthorDate: 2025-10-07 12:58:05 +0000 Commit: Jonathan T. Looney CommitDate: 2025-10-28 19:25:25 +0000 x86: support sending non-fatal MCA messages to syslog Currently, all MCA messages are logged to the console. However, this can have performance implications which can turn a storm of correctable errors into a disruptive event. Provide an option to direct non-fatal messages to syslog. Note that we will always log to the console for fatal errors. Reviewed by: markj Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D12278 (cherry picked from commit 55c28005f544282b984ae0e15dacd0c108d8ab12) --- sys/x86/x86/mca.c | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/sys/x86/x86/mca.c b/sys/x86/x86/mca.c index a167854e8bbb..735efe307215 100644 --- a/sys/x86/x86/mca.c +++ b/sys/x86/x86/mca.c @@ -50,6 +50,7 @@ #include #include #include +#include #include #include #include @@ -136,6 +137,11 @@ SYSCTL_INT(_hw_mca, OID_AUTO, fake_bank, CTLFLAG_RW, "Bank to use for artificial MCAs (testing purpose only)"); #endif +static bool mca_uselog = false; +SYSCTL_BOOL(_hw_mca, OID_AUTO, uselog, CTLFLAG_RWTUN, &mca_uselog, 0, + "Should the system send non-fatal machine check errors to the log " + "(instead of the console)?"); + static STAILQ_HEAD(, mca_internal) mca_freelist; static int mca_freecount; static STAILQ_HEAD(, mca_internal) mca_records; @@ -477,7 +483,7 @@ mca_mute(const struct mca_record *rec) /* Dump details about a single machine check. */ static void -mca_log(enum scan_mode mode, const struct mca_record *rec) +mca_log(enum scan_mode mode, const struct mca_record *rec, bool fatal) { int error, numskipped; uint16_t mca_error; @@ -711,7 +717,8 @@ mca_log(enum scan_mode mode, const struct mca_record *rec) event_type)); event_type = MCA_T_UNKNOWN; } - if (!uncor) { + numskipped = 0; + if (!fatal && !uncor) { /* * Update statistics and check the rate limit for * correctable errors. The rate limit is only applied @@ -732,17 +739,31 @@ mca_log(enum scan_mode mode, const struct mca_record *rec) numskipped = mca_log_skipped; mca_log_skipped = 0; mtx_unlock_spin(&mca_lock); + } + + error = sbuf_finish(&sb); + if (fatal || !mca_uselog) { if (numskipped > 0) printf("MCA: %d events skipped due to rate limit\n", numskipped); + if (error) + printf("MCA: error logging message (sbuf error %d)\n", + error); + else + sbuf_putbuf(&sb); + } else { + if (numskipped > 0) + log(LOG_ERR, + "MCA: %d events skipped due to rate limit\n", + numskipped); + if (error) + log(LOG_ERR, + "MCA: error logging message (sbuf error %d)\n", + error); + else + log(uncor ? LOG_CRIT : LOG_ERR, "%s", sbuf_data(&sb)); } - error = sbuf_finish(&sb); - if (error) - printf("MCA: error logging message (sbuf error %d)\n", error); - else - sbuf_putbuf(&sb); - done: sbuf_delete(&sb); if (using_shared_buf) @@ -907,7 +928,7 @@ mca_record_entry(enum scan_mode mode, const struct mca_record *record) if (rec == NULL) { mtx_unlock_spin(&mca_lock); printf("MCA: Unable to allocate space for an event.\n"); - mca_log(mode, record); + mca_log(mode, record, false); return; } STAILQ_REMOVE_HEAD(&mca_freelist, link); @@ -1064,7 +1085,7 @@ mca_scan(enum scan_mode mode, bool *recoverablep) if (*recoverablep) mca_record_entry(mode, &rec); else - mca_log(mode, &rec); + mca_log(mode, &rec, true); } #ifdef DEV_APIC @@ -1148,7 +1169,7 @@ mca_process_records(enum scan_mode mode) mtx_unlock_spin(&mca_lock); STAILQ_FOREACH(mca, &tmplist, link) - mca_log(mode, &mca->rec); + mca_log(mode, &mca->rec, false); mtx_lock_spin(&mca_lock); while ((mca = STAILQ_FIRST(&tmplist)) != NULL) { From nobody Tue Oct 28 19:31:54 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cx0qt2rKSz6DLxk; Tue, 28 Oct 2025 19:31:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cx0qt2L9lz3XBd; Tue, 28 Oct 2025 19:31:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679914; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JvDyPbpxdYxtaxK182uc62QsF+vH++5PvEX7j5UE7Io=; b=M+Nbg9TFRHLfT2u27UHZv0Fi5dRm+Rv9ClnDYGvyiG8aIrnHpfQLWf6k/SWhpGE7RRqzCB MJhpVc2pRbjS8gXcm/mgFdtWWqr7vlHQJCEg1f3NnhM6XR+XCtsVN7SkBt3SuTCYx5NRL/ RUsnVolycWGxBDFhqDnww4RqOABx+Wivjz0oA7XUWnvTLEJyu7EErQdpV/jWS/T8uEawve CPfIXXvk4AJpAC07JbynygYMvnUZJBX4JcvOyAx79W/FfGXmqCpPyx4DhZJaTxUS6etfVD af25L4UOrq5HQpLhsQuspg/nJfrTJJ1Nox1MWrmKK0EioU8kwfBn1DK89iYcUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761679914; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JvDyPbpxdYxtaxK182uc62QsF+vH++5PvEX7j5UE7Io=; b=uAcacjC7+ch/7OAwGSWH6qaFbP1cNCxcgjsqrtjWcJxxa7pDon3BWn+o2+NG7wfQJan/50 DwxCH228wDvzg7E6FDfqNlAbEYzdd548A+/GFJnGp/tgZzy4xlpLK/RvgcObXON1p2w2Le ibF7//kqu8gwZ4IcBOep62BkwqWUHmC9pbHmVVyFKokjEb/NXAQMbt+ul3oV32aSkXCz2S lGwhtaDSIL9yD5u2yi8kUDmYsQ6wihVVBKqtZT3etu548BfkIs5ZJAGxKOSmZ8X36KBi82 x4NI73fkCTcBeMVQInQEpg6OYiGs5n1sLgScHqB1xHzJvJOBeJqaQjbQGDykZA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761679914; a=rsa-sha256; cv=none; b=R5BvKq6B/r1ypztgi9COEjTNyLKejZgAc/uhN+9S0z1iie7qSZsq9N4Y9e/7nUfWajGdi3 4kxEXJZ9BkQ2THaO4Xg7GjV4OBc5Fb4mLrsvP0RLN9fq53AzMKp1lfRxjA45uPhnTrIu/2 5BTysB3y/IDQDxV7ePgyf+qNR8Jy03ld20eCm34R68YUlpnyktv0aJSm9wL6vrIXMaz81U 3CJnlhdol1/Kil94yqE46/CYu26cul8+t2GomFl3kwAfjJ4XRPwkITpuMPhxuQvOalnC3u 5Fb4S57AeqzkzXIaH44lxTxP3Ei/ql86swjgQHwFp1jGBkmgyO7no6lxd5EYgw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cx0qt1snZz138F; Tue, 28 Oct 2025 19:31:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SJVsQZ066504; Tue, 28 Oct 2025 19:31:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SJVs3u066501; Tue, 28 Oct 2025 19:31:54 GMT (envelope-from git) Date: Tue, 28 Oct 2025 19:31:54 GMT Message-Id: <202510281931.59SJVs3u066501@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: 469ab88d107c - stable/15 - cam: Bump deprecated sysctl removal to 16 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 469ab88d107c05ab533a15d4014d1a97b5a13c86 Auto-Submitted: auto-generated The branch stable/15 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=469ab88d107c05ab533a15d4014d1a97b5a13c86 commit 469ab88d107c05ab533a15d4014d1a97b5a13c86 Author: Ed Maste AuthorDate: 2025-10-24 19:36:42 +0000 Commit: Ed Maste CommitDate: 2025-10-28 19:31:22 +0000 cam: Bump deprecated sysctl removal to 16 The descriptions for these unmapped_io and rotating sysctls indicated that they're deprecated and being removed for FreeBSD 15.0. That did not happen, so update to FreeBSD 16 instead. Sponsored by: The FreeBSD Foundation (cherry picked from commit e93db9abc9a62d662c40d783663d64cdb829a0cc) --- sys/cam/ata/ata_da.c | 4 ++-- sys/cam/scsi/scsi_da.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/cam/ata/ata_da.c b/sys/cam/ata/ata_da.c index 1facab47473c..39bd2b0345a4 100644 --- a/sys/cam/ata/ata_da.c +++ b/sys/cam/ata/ata_da.c @@ -1556,11 +1556,11 @@ adasysctlinit(void *context, int pending) SYSCTL_ADD_PROC(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree), OID_AUTO, "unmapped_io", CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &softc->flags, (u_int)ADA_FLAG_UNMAPPEDIO, adabitsysctl, "I", - "Use unmapped I/O. This sysctl is *DEPRECATED*, gone in FreeBSD 15"); + "Use unmapped I/O. This sysctl is *DEPRECATED*, gone in FreeBSD 16"); SYSCTL_ADD_PROC(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree), OID_AUTO, "rotating", CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &softc->flags, (u_int)ADA_FLAG_ROTATING, adabitsysctl, "I", - "Rotating media. This sysctl is *DEPRECATED*, gone in FreeBSD 15"); + "Rotating media. This sysctl is *DEPRECATED*, gone in FreeBSD 16"); #ifdef CAM_TEST_FAILURE /* diff --git a/sys/cam/scsi/scsi_da.c b/sys/cam/scsi/scsi_da.c index fc8c0413448d..c0c0be12856b 100644 --- a/sys/cam/scsi/scsi_da.c +++ b/sys/cam/scsi/scsi_da.c @@ -2408,11 +2408,11 @@ dasysctlinit(void *context, int pending) SYSCTL_ADD_PROC(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree), OID_AUTO, "rotating", CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &softc->flags, (u_int)DA_FLAG_ROTATING, dabitsysctl, "I", - "Rotating media *DEPRECATED* gone in FreeBSD 15"); + "Rotating media *DEPRECATED* gone in FreeBSD 16"); SYSCTL_ADD_PROC(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree), OID_AUTO, "unmapped_io", CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE, &softc->flags, (u_int)DA_FLAG_UNMAPPEDIO, dabitsysctl, "I", - "Unmapped I/O support *DEPRECATED* gone in FreeBSD 15"); + "Unmapped I/O support *DEPRECATED* gone in FreeBSD 16"); #ifdef CAM_TEST_FAILURE SYSCTL_ADD_PROC(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree), From nobody Tue Oct 28 19:51:47 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cx1HG0hLDz6DNgT for ; Tue, 28 Oct 2025 19:52:10 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic310-21.consmr.mail.gq1.yahoo.com (sonic310-21.consmr.mail.gq1.yahoo.com [98.137.69.147]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4cx1HD6QwJz3YjR for ; Tue, 28 Oct 2025 19:52:08 +0000 (UTC) (envelope-from marklmi@yahoo.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=yahoo.com header.s=s2048 header.b=kFVBwBdF; dmarc=pass (policy=reject) header.from=yahoo.com; spf=pass (mx1.freebsd.org: domain of marklmi@yahoo.com designates 98.137.69.147 as permitted sender) smtp.mailfrom=marklmi@yahoo.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1761681122; bh=RlfspS5acCqOEU7NzPf4CxPw8eLgL3VBztuDm+6BY78=; h=From:Subject:Date:Cc:To:References:From:Subject:Reply-To; b=kFVBwBdFKer7JPM4z090F9CGf/yuzNArg5SDjlGoetreRcAc+N1XEQ/+AH7r+lxMwZh5OwT2A0GmPai/jzLhEBB9T0YuE7aP5sMdu4vUrEmkfyqYqj10BGvMjUaO8dJROGT40ENY6dRquUCuklG2DhckVimBFmVj1yrKvqC+UYGOxr/4lmezMqvRdd6HNSN04Acagjgr1w38whCjbG/GTIDwZqAY5id42851g5+9ywFdL5CSkzDgntKKqP8DYlLEigqRHuVCh8BZdUtDe5vRZmCxSBcKr2fvSkNw4tzOBjLllCOtCpbDTqqH2cEAouK9YTSxz5kblwii6OAAAIdvCA== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1761681122; bh=3LUHgUlMhPHznQREbIZNF8TXUZMklQUO1KJdCV6Hdtc=; h=X-Sonic-MF:From:Subject:Date:To:From:Subject; b=RCJDn81fONAWZEzYcbdnBSZTyXsd5/SxbyEJrvg10zDo/Z27r3AYAIWKAnXLPr4q2S8jWHMR8YT+Mgrp38sdVaIQx8CA31MdEaMmza8eRtYPGB+ASjWm+qWpEvGDARZBgwiabjQmMnGSryUMMP6FsgtC1VkvPFdYWsk9fujFQiOlcju7QIrnCTEjJ/gT71ZJKPjVrK+0I0Npj97b2UZ/j2YiqYfNa+LqSKQOtVHF+ZMiqw78I3CyYJC1TgfjDh7fu7uX8ONC3zDUVj0PlmjtDyhgmPgfNKwkfO7QRWHbwzFDOdQ1+sQx3plz8XRG5zAbZ6rMpapMwjGDtYYbfFmYzg== X-YMail-OSG: 1twCetsVM1mAXxvJdCsC4z9NyquFCDdIyfB4aHrVM5z5gpGl5Unk2JQsyTUzkcz Hi6pBMV1pcrZltma2xDwS3flTghj35gWyhty17zrImAd0rj7VVLesH_QdYhz.HKrm6g_h574ahHL NtkGYQYQF48A4VXo9fipqyPlsBIx7rG3tuGJ5W46X0aKFU2q2X6AtgsyqxUf4rj7I9MSzaeyYkHy j9Rv0QVldzWPXhorSJfsxGkQdTQICr4pOwHRQT49obp.WoUQyjSoW2qa8Pb4EA.Xo0LpQs3urAit LU3cnoxIRIBCzGXdHj2fUCeeYCyyTmnKHSe_PHFjgjc6_aMbvDuCWFiR4WGDYrHXD6Vo0G4Cu1yB ZdLnv5baDQTbUYT_vAlahI4V4WrOkLx5gUCqtkyW25OzlS7B0VcsfGXHsB2j3wyUbVisGW0vh_av kPKMO5fQKFa20J5_DQOGRoJ5C944BQGGyGYWXc3_WaaMo0TBwsYBaPdTiFiclIb27x4rD59mrgtv Iw5S9SI3Kpxc0XFrxPRvV7o.U9Zc5PusPs74hEh8YEIcmEcRM4D1TEz_Uygy5FeZ.EdUIUSkWhxa WoP2v42H9keFZnvdq3StA7XX_rFf_qwCop.Jk8Mjib796ea5SvTq1H0Tj3EDAnUlNXENELKcC29J piwN1CU6oelmXHuv16Kta0Zy_OIr6v3h46ODeLWBQ2TugNB6H8LU6aojVZWE85incVyBHJ2sEOfD 234RgeY.wdkDwWwsnW2wA7iH4uaxgM4KCpMVO2hoN59KainkXjDWmOSaofgL1NfpAsFo2w.UZCsX .pR4MWZN8eL3WYHxHfuFSlPFjEnE1zNmELYqpOJ32Y0YKMClL7hK5munnBg_XXedwBYjZNcC.Kdj Qcx.5HX_1XsOvc_0uoQ3NMwc6uKMJy_LFqxYcgpIEukJ_BbmVehiY3za3YSuTYlu1h1OUV7XZcHw JimzV2jrXpQccTFJrMyp8QdTy2M8.W0kGhc2bhQY7zvePspPK1jeLwWfTCTiFeP25FcjCqYYYxSR RRRpzvAR48yGPqmIr07te4nwqC5bHFUD6z62YYwM9w9ptgDUaLCSm1N3rEbFGYxrmjFuqMNckwYs G.Ta49DvBwCD.tcrxvusNqNH83TWGkN1GsIO_4IiA1XPOCkOINjDsG9p9tLoOe5zYzFYETAD7Xed PDLYjr7xgriKBNLxX_6KkUe4o1QQvyrm2R.CD8r1hNRJxmtprAgwrRw4BsoP4GbXH9_p5DjVq4Xo lOAyR4_R7k8WyvfTU5dRvXeMtMvkx7xagtEqAK0N0kg1c1hDvjNCHOGVnJZ4KLj9Y9uZTWNWb6nj Pi3ew8YMFX.23eVXb5zzSmeNGrf8XZaXmgh15bSmC0gnkXv8SO5u.N1apCq9NA_WPfvtJOyjNPdb WGSXEp5Xz1ifjwEhaRUiMH0DNKFFJo1fHGGXBsXw.alnBTEza6iIZhoy3j9F0CkDN1_qEycmMlwc 738F0qYFZkoyH4ZM39aDXYR3ZzTjdnXIHMj3U2CvPg64RvPyZ9rwxen1vFP51qjki_6OJ3F7RGVT 0v5eG5hdEHC3cfUtpYcH4MHVrvUaZk7QJGfPIg.ozYKYYF5xfaA01RAD_sYPGijnzR_WyiVIm5_U .R.tudygGoQ8zwGb5dWqTJWXusLMYJu0Wd_mXU1DA1Q8gr.iiixCB_00iuyn5QwZRbUNsg.VmH8U 23rBcE4oWmLL2iGEgzt8HyRi_fW94I7IqrQsV36f9eVXxxiycH0.vsvz0imihjIbYiMJ2Hj2n38e ZXB0eaMYvYv_VL5GXZLgn0ucaDAJNAGKBw_z8GWSEvwWwl.OC3rREwM5fp3WiDNXDvmQDhsLVxVj TdjQPYDYTpDRSlWVAVF_wN7z2hut5hWdXJOpbssftb9pGrw4uYd5NBrCY.pH0I7D8Ti5lBPxLgVj XCkeKFXnMjILkyb6haRcWk1e2ocBlxd_OfCddVVm4Ef9nCV8MTubpx1DCSrv8ii6pC7EGvCh4E3q 1yffbyIJ8Wd4pbimJM_bpHq_IKCj4J2RbMpINFzSvFdpKkA7XXvBsS4ewdclV8O6GTSR3q0wR26Q 1L9z2nZweC8WJu8n1n3f038yxZMKugUW3mnI0.MFGsHhVzOkv60LHM7hX_Z_MeWuxeQwrRmw_XO5 S4qT6PMxXkZwV8Dz70TP2QBLHHToC_Do0dAQqtGcAMCjSl5KjjinGhxE1FrVCf2L_.BtFfp4YBNc LV6AcASwKnBFTLiP5tEmlZPg5gbWy6Qk658QMh1bRYZmpd3DdJnJCOG.6h_IuqlNtLkoETCbhN0L N6CfS8CsLVyo- X-Sonic-MF: X-Sonic-ID: 0cb0ce9f-8851-47b2-b84d-bfb8e3de5bb1 Received: from sonic.gate.mail.ne1.yahoo.com by sonic310.consmr.mail.gq1.yahoo.com with HTTP; Tue, 28 Oct 2025 19:52:02 +0000 Received: by hermes--production-gq1-7cf9d58dc6-lwcr7 (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID c6950bef0f808d4f39c6b1e73b8fb3f0; Tue, 28 Oct 2025 19:51:58 +0000 (UTC) From: Mark Millard Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\)) Subject: Re: git: 3d73146baeb9 - main - pwait: Add an option to print remaining processes Message-Id: Date: Tue, 28 Oct 2025 12:51:47 -0700 Cc: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= To: Zhenlei Huang , glebius@freebsd.org, dev-commits-src-branches@freebsd.org X-Mailer: Apple Mail (2.3826.700.81) References: X-Spamd-Bar: --- X-Spamd-Result: default: False [-4.00 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-1.000]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; MIME_GOOD(-0.10)[text/plain]; FROM_HAS_DN(0.00)[]; DKIM_TRACE(0.00)[yahoo.com:+]; RCVD_TLS_LAST(0.00)[]; ARC_NA(0.00)[]; TO_DN_SOME(0.00)[]; MIME_TRACE(0.00)[0:+]; DWL_DNSWL_NONE(0.00)[yahoo.com:dkim]; FREEMAIL_FROM(0.00)[yahoo.com]; RCPT_COUNT_THREE(0.00)[4]; ASN(0.00)[asn:36647, ipnet:98.137.64.0/20, country:US]; RCVD_VIA_SMTP_AUTH(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; FROM_EQ_ENVFROM(0.00)[]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; MLMMJ_DEST(0.00)[dev-commits-src-branches@freebsd.org]; APPLE_MAILER_COMMON(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; RWL_MAILSPIKE_POSSIBLE(0.00)[98.137.69.147:from]; RCVD_IN_DNSWL_NONE(0.00)[98.137.69.147:from] X-Rspamd-Queue-Id: 4cx1HD6QwJz3YjR Zhenlei Huang wrote on Date: Tue, 28 Oct 2025 18:18:55 UTC : > > On Oct 29, 2025, at 1:28 AM, Gleb Smirnoff = wrote: > >=20 > > On Tue, Oct 28, 2025 at 11:57:43AM +0000, Dag-Erling Sm=C3=B8rgrav = wrote: > > D> +static int > > D> +pidcmp(const struct pid *a, const struct pid *b) > > D> +{ > > D> + return (a->pid > b->pid ? 1 : a->pid < b->pid ? -1 : 0); > > D> +} > > D> + > > D> +RB_HEAD(pidtree, pid); > > D> +static struct pidtree pids =3D RB_INITIALIZER(&pids); > > D> +RB_GENERATE_STATIC(pidtree, pid, entry, pidcmp); > >=20 > > We have a nice trick in our tree(3) that allows to use lighter = compare > > functions. The function can return any signed integer type, thus we > > can: > >=20 > > static pid_t > > pidcmp(const struct pid *a, const struct pid *b) > > { > > return (a->pid - b->pid); > > } >=20 > I'd prefer to return const 1 / -1 / 0, that is straight forward of a = comparator. Also the compiler is smart > enough to catch this pattern and generate optimized code, from my = experiment which is long long time ago. >=20 > The pid has type pid_t which is a type redefinition of __int32_t. = Although the pid will not reach > 2^31 or -2^31 - 1, in principle the computing of the delta of the two = signed integers may overflow > and that is bad smell. Dag-Erling's code is somewhat less dependent on the context of use, at least relative to the C11 language standard definitions. FreeBSD sometimes defines that it requires properties not guaranteed by language or other standards. So I'm not sure the "a->pid - b->pid" code in question is just depending on such a definition vs. not. Also, it may be that all the calls of pidcmp meet the criteria that I reference below. QUOTE (of C11 standard) When two pointers are subtracted, both shall point to elements of the same array object or one past the last element of the array object; the result is the difference of the subscripts of the two array elements. The size of the result is implementation-defined, and its type (a signed integer type) is ptrdiff_t . . . If the result is not representable in an object of that type, the behavior is undefined. END QUOTE So, making some language context more explicit, the return is more like: return (pid_t)(ptrdiff_t)(a->pid - b->pid); If pid_t is __int32_t even for 64 bit environments, the relationship to ptrdiff_t for the context could be a technical problem. I'm not sure if FreeBSD makes any guarantees that establish a sufficient relationship. Also, the above does not allow subtracting pointers to distinct members of the same struct, for example. Contrast with a->pid > b->pid and a->pid < b->pid use: The C11 standard wording covering a->pid > b->pid and a->pid < b->pid from the committed code actually allows a wider range of valid-to-compare pointer values, such as for pointers to of members of the same struct. But without being members of the same array or struct or union, the comparisons can be examples of "[i]n all other cases, the behavior is undefined". So what the language allows on its own is still limited. (My notes may span somewhat more than is needed for the context.) =3D=3D=3D Mark Millard marklmi at yahoo.com From nobody Tue Oct 28 21:23:35 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cx3Jl3tThz6DVhh; Tue, 28 Oct 2025 21:23:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cx3Jl3F4rz3lJc; Tue, 28 Oct 2025 21:23:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761686615; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eZfWOaDg4AEh5t1gMDTJtxrsEyYm0zcXJTGg0Ik88Lo=; b=Cyf0q4nawDequVcwL0ecn75gRTNdMy41Iz+El1sE5eP+7x4mdS1Z9zR6LjMblUgM46JN46 xTPvlPmA044zqkF3fCwE5ySHT/bS/vxiVDvvhXMzsrBoPwXQqh8WYPH8uJYqFywroZTzSf ElEhoMeEJFZHU180O+/AGK3XOX5fcUFGNoOrX9tjqCTXxNl7jeKdX0xtYW/5h9iPOYNQHA bkBdebybpqnwye5jIhLHOm+czmWwNe4Zuq1EJcXvs5e1t08/4t5Tfr1Mtfx9p+04+Oakac OtDWMq3GAsFJJwJfUy2dm//+KFh3fUd6dA+rQ8++ypdvAirdxczp/7KXdOsc/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761686615; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eZfWOaDg4AEh5t1gMDTJtxrsEyYm0zcXJTGg0Ik88Lo=; b=uKfM1vGp4/qamvXajA6vFvs1cBdXd0EoQcsYNS07Vbdx6XLl0MiZ9LyMAV2Hrkd/POkosC lSG3a2Fra3Ygziojf6LsbMSlV9M2kqT1xvsP6uXDR4UnhpE8nPPaVcV4DEJ6lzbuLMffNh /g5Myf8T8EYJX7JwDyBDsaVqBI3AIkZEJOPCVpGzN5rw9ovhadfJJnXhaeZ9MyOwUIkAhW RDbUYvEfNh5VWJAIlc0NmiBHvMniq9NzV3f/lOKqBDaVLvGF3tYrsT+l+FcaXhNgx0X5eq fGof0px6ZgrO493S1sRGZbJ7ZTXTFb0lR95AJkvaqUK9oIwJEiNEc8jSBYrbmA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761686615; a=rsa-sha256; cv=none; b=CzeVxw29EPPntHjTER0Ze/XOYrX061CY+nxJIOsqlUkCc1+xvWWBZ7WRaXbF/0AyFj8/Bl XMTOST5Z2DcDNXzyQQD+tmTkX4w4ch+W9KTXkpEWTfrOR7Vj7PBoIl7zH1iZr9f2qBVRPe yFYIO2fuABAWhe/1DZ9RhK77DDdXoPHuF2TNmORoAMUDwFcyyvgNlak3WixyklHMMadtAc Ko6GfN1zaQxJ9MCa6e7mvW3RKoFlhVCHhOLpscHRbrfGKn5UTKE3lAP88ECfFzjcxu6wVe 4CjNIMdrZNmmjZPuYiY/sY7Cq1QtiVTPwMV6hVUYyD73LOTTvxJMgaQlS0RzVw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cx3Jl2p3Hz16TG; Tue, 28 Oct 2025 21:23:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SLNZMD075437; Tue, 28 Oct 2025 21:23:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SLNZfi075434; Tue, 28 Oct 2025 21:23:35 GMT (envelope-from git) Date: Tue, 28 Oct 2025 21:23:35 GMT Message-Id: <202510282123.59SLNZfi075434@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 470fae965fc2 - releng/15.0 - sndctl(8): Modify vchans only on supported directions List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: 470fae965fc2a458a20cbc1df2710486ae5d536d Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=470fae965fc2a458a20cbc1df2710486ae5d536d commit 470fae965fc2a458a20cbc1df2710486ae5d536d Author: Christos Margiolis AuthorDate: 2025-10-22 11:50:55 +0000 Commit: Colin Percival CommitDate: 2025-10-28 21:22:43 +0000 sndctl(8): Modify vchans only on supported directions Currently mod_play_vchans() and mod_rec_vchans() run unconditionally, even if the direction (playback, recording) is not supported by the device. This results in the "autoconv" (see mod_autoconv()) control failing when run on simplex devices, because we'll be trying to modify vchans on an unsupported direction. Test whether the direction is supported and silently move on if it isn't. Approved by: re (cperciva) Sponsored by: The FreeBSD Foundation MFC after: 4 days Differential Revision: https://reviews.freebsd.org/D53233 (cherry picked from commit 70b34fbdbea13c006a724844caa53f59e0e53bd0) (cherry picked from commit e015e079f9db0e1762e4249bdc76abec93213abc) --- usr.sbin/sndctl/sndctl.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/usr.sbin/sndctl/sndctl.c b/usr.sbin/sndctl/sndctl.c index 156c845481c5..6977f0ab0ebe 100644 --- a/usr.sbin/sndctl/sndctl.c +++ b/usr.sbin/sndctl/sndctl.c @@ -830,6 +830,8 @@ mod_play_vchans(struct snd_dev *dp, void *arg) if (dp->from_user) return (-1); + if (!dp->play.pchans) + return (0); snprintf(buf, sizeof(buf), "dev.pcm.%d.play.vchans", dp->unit); @@ -873,6 +875,8 @@ mod_rec_vchans(struct snd_dev *dp, void *arg) if (dp->from_user) return (-1); + if (!dp->rec.pchans) + return (0); snprintf(buf, sizeof(buf), "dev.pcm.%d.rec.vchans", dp->unit); From nobody Tue Oct 28 21:23:36 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cx3Jm6HVwz6DVHg; Tue, 28 Oct 2025 21:23:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cx3Jm4STPz3l9H; Tue, 28 Oct 2025 21:23:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761686616; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=i6g3693XnE55yYZhv5/8ymEot/ciJUaYwkaqN0tcWug=; b=vNmPL2dtuq1Nxz2G5SJIxJZBziPxbUSZj9FZiaDXoo6Kdt+mHwvVlNSTLlgePNxC6FvlzF 4giFrUBcZYNdUmpTaYlQov8c6PRT2hfgt7DJgr9WPrF3XHC/opOdomrWXSwFFCdji8aS6m 85Tm1mYcm2SF0p2RxvDUiHVCR8DLLc5ZOQerbxgZ3IIrStzfIBwXMSQd8bscWY16SZNxcB MRCsEAW+xJS1mCf6xLAMYHRE6xKK44bRsEgfmktkgI5CBkXSi7TkWKQTez0ybuji2H6f7u nHcvrmDSDALSx70WST64iXW3edGxU+c05sVvmi9If/PDH9TiLXmyo0y9r72u9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761686616; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=i6g3693XnE55yYZhv5/8ymEot/ciJUaYwkaqN0tcWug=; b=QgBFc/iRvwuxwq+uw/ZyFNXPZfRtvDJveWFiZFyO+CHvMfyx09sqcd7gVuIrhI+zATDvZX yrzZziKsDo6PLkDEjrkql86/len+372XkRhnKWPrjXgLvdOtMf0GKVhLseZQ5aRFaBgIeq jH0Nzp2aEpSWpKSNQvRPkK9BlixKc6c8OwOndaNmdmTYAEgpI2/QIuRQU5HLlY2+BO1kNJ /obYO3H7vPeYz8686SPMOdzIBr9WG323Da1d5zfExj4y6fMkZ5h3p+748bNceM2KjDqVAK sa877Ul/53OTwm4SmIw1AuCJxWox39W1HHW20RBuZVCJYWavGZqtgziCBXwipw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761686616; a=rsa-sha256; cv=none; b=kbqlW45XvRjKmwY237JDzkouJru3oce1zeST18iFNMD06OOkxrx6G/u/Z8HOqXQIM3umCl vZCR3UB7CwACqEkBAKPuX5i1BFMQulgXHVJgJqSdmOatzbkQHMkjA/f61QC3kDuqgE4xMe UzuPrB0m0U2sxBujySbFQnlQ2reHSgxAQgElG9l+uE1DXMi6c+CsFdh3B0NByq8XqqcxMA CtzdhcnIjyhF56qUzD6cJ8uJDj9DvdXGi8Xqdhr3WIFOmiGN9WFcp9y8XZYZJNxf3cyroe 9mnF2T2+KBZgIS5rrsaQrt2Bb4KYhZz5PXSnvqWo8h6WDtOkUdO2MvNPvuoFqg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cx3Jm4251z16WM; Tue, 28 Oct 2025 21:23:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59SLNahj075474; Tue, 28 Oct 2025 21:23:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59SLNakd075471; Tue, 28 Oct 2025 21:23:36 GMT (envelope-from git) Date: Tue, 28 Oct 2025 21:23:36 GMT Message-Id: <202510282123.59SLNakd075471@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 6bf158defbcb - releng/15.0 - zfs: merge openzfs/zfs@814f9afba (zfs-2.4-release) into stable/15 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: 6bf158defbcb2f3c948b28394388179c7e95bd8b Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=6bf158defbcb2f3c948b28394388179c7e95bd8b commit 6bf158defbcb2f3c948b28394388179c7e95bd8b Author: Martin Matuska AuthorDate: 2025-10-25 08:14:36 +0000 Commit: Colin Percival CommitDate: 2025-10-28 21:22:49 +0000 zfs: merge openzfs/zfs@814f9afba (zfs-2.4-release) into stable/15 OpenZFS 2.4.0 rc3 Notable upstream pull request merges: #17750 964dfc317 FreeBSD: Correct _PC_MIN_HOLE_SIZE #17793 b9d1e28a7 ddt prune: Add SCL_ZIO deadlock workaround #17799 1585a10a8 Make mount/share errors non-fatal for zfs create/clone #17801 073b34b3e Fix display of default xattr to show 'sa' #17803 e09c86cb1 zvol: verify IO type is supported #17807 -multiple zpool iostat: fix regressions in "all pools" mode after #17786 #17826 b9356f06e Explicit set ashift for non-leaf vdevs #17830 f0bff230f Suppress some ashift warnings #17833 c1f55bff8 Fix the type of the raidz_outlier_check_interval_ms parameter #17836 799bda73e Fix return value for setting zvol threading #17834 f0c76f8a7 libzpool/cmn_err: remove suppression, add stop option, cleanup #17843 1956417b5 mmap_seek: print error code and text on failure #17847 7987d4deb Update device removal documentation #17851 6f6e1c90a FreeBSD: zfs_getpages: Don't zero freshly allocated pages Approved by: re (cperciva) Obtained from: OpenZFS OpenZFS commit: 814f9afba7d6714bd63f18ac808955b61d37f9f0 OpenZFS tag: zfs-2.4.0-rc3 (cherry picked from commit ce7e1f86a1810038f142c5c68b787c47252b39c5) --- .../.github/ISSUE_TEMPLATE/feature_request.md | 2 +- .../.github/workflows/scripts/qemu-2-start.sh | 11 +- sys/contrib/openzfs/.github/workflows/zfs-qemu.yml | 2 +- sys/contrib/openzfs/META | 2 +- sys/contrib/openzfs/cmd/zdb/zdb.c | 191 +++++++++++++++++++-- sys/contrib/openzfs/cmd/zfs/zfs_main.c | 10 +- sys/contrib/openzfs/cmd/zinject/zinject.c | 81 +++++++-- sys/contrib/openzfs/cmd/zpool/zpool_iter.c | 19 +- sys/contrib/openzfs/cmd/zpool/zpool_main.c | 1 + sys/contrib/openzfs/cmd/zpool/zpool_vdev.c | 64 +++---- .../config/kernel-block-device-operations.m4 | 34 ++++ sys/contrib/openzfs/config/kernel-drop-inode.m4 | 24 +++ sys/contrib/openzfs/config/kernel-namespace.m4 | 31 ++++ .../openzfs/config/kernel-userns-capabilities.m4 | 79 --------- sys/contrib/openzfs/config/kernel-writeback.m4 | 58 +++++++ sys/contrib/openzfs/config/kernel-writepage_t.m4 | 26 --- sys/contrib/openzfs/config/kernel.m4 | 8 +- sys/contrib/openzfs/contrib/intel_qat/readme.md | 2 +- sys/contrib/openzfs/etc/init.d/README.md | 2 +- sys/contrib/openzfs/include/libzfs.h | 2 + .../include/os/linux/kernel/linux/vfs_compat.h | 7 + sys/contrib/openzfs/include/sys/spa.h | 2 +- sys/contrib/openzfs/include/sys/zfs_ioctl.h | 1 + sys/contrib/openzfs/include/sys/zio.h | 1 + sys/contrib/openzfs/lib/libspl/include/sys/uio.h | 1 + sys/contrib/openzfs/lib/libuutil/libuutil.abi | 105 +---------- sys/contrib/openzfs/lib/libzfs/libzfs.abi | 172 ++++--------------- sys/contrib/openzfs/lib/libzfs/libzfs_config.c | 17 ++ sys/contrib/openzfs/lib/libzfs/libzfs_status.c | 78 +++++---- .../openzfs/lib/libzfs_core/libzfs_core.abi | 105 +---------- sys/contrib/openzfs/lib/libzpool/kernel.c | 79 +++++++-- sys/contrib/openzfs/man/man8/zdb.8 | 14 ++ sys/contrib/openzfs/man/man8/zinject.8 | 14 ++ sys/contrib/openzfs/man/man8/zpool-remove.8 | 4 +- .../openzfs/module/icp/algs/sha2/sha2_generic.c | 41 +++-- .../openzfs/module/os/freebsd/zfs/zfs_ctldir.c | 3 +- .../openzfs/module/os/freebsd/zfs/zfs_vnops_os.c | 31 +++- sys/contrib/openzfs/module/os/linux/spl/spl-zone.c | 19 +- sys/contrib/openzfs/module/os/linux/zfs/abd_os.c | 9 + sys/contrib/openzfs/module/os/linux/zfs/zfs_acl.c | 2 +- .../openzfs/module/os/linux/zfs/zfs_vnops_os.c | 5 +- sys/contrib/openzfs/module/os/linux/zfs/zpl_file.c | 74 ++++++++ .../openzfs/module/os/linux/zfs/zpl_super.c | 4 +- sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c | 109 ++++++++---- sys/contrib/openzfs/module/zcommon/zfs_prop.c | 2 +- sys/contrib/openzfs/module/zfs/arc.c | 17 +- sys/contrib/openzfs/module/zfs/mmp.c | 2 +- sys/contrib/openzfs/module/zfs/spa_misc.c | 8 +- sys/contrib/openzfs/module/zfs/vdev_removal.c | 80 ++++++--- sys/contrib/openzfs/module/zfs/zio.c | 35 +++- sys/contrib/openzfs/module/zfs/zio_inject.c | 38 ++++ sys/contrib/openzfs/module/zfs/zvol.c | 2 +- sys/contrib/openzfs/tests/runfiles/common.run | 3 +- sys/contrib/openzfs/tests/runfiles/sanity.run | 2 +- .../openzfs/tests/zfs-tests/cmd/mmap_seek.c | 35 ++-- .../openzfs/tests/zfs-tests/tests/Makefile.am | 1 + .../cli_root/zpool_reopen/zpool_reopen_004_pos.ksh | 2 + .../functional/delegate/delegate_common.kshlib | 6 +- .../tests/functional/xattr/xattr_014_pos.ksh | 53 ++++++ .../functional/zvol/zvol_misc/zvol_misc_trim.ksh | 7 + 60 files changed, 1133 insertions(+), 706 deletions(-) diff --git a/sys/contrib/openzfs/.github/ISSUE_TEMPLATE/feature_request.md b/sys/contrib/openzfs/.github/ISSUE_TEMPLATE/feature_request.md index 9b50a4a3d96e..f3d4316f6f67 100644 --- a/sys/contrib/openzfs/.github/ISSUE_TEMPLATE/feature_request.md +++ b/sys/contrib/openzfs/.github/ISSUE_TEMPLATE/feature_request.md @@ -14,7 +14,7 @@ Please check our issue tracker before opening a new feature request. Filling out the following template will help other contributors better understand your proposed feature. --> -### Describe the feature would like to see added to OpenZFS +### Describe the feature you would like to see added to OpenZFS