CVS commit: src

2020-03-26 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Fri Mar 27 04:31:18 UTC 2020

Modified Files:
src/distrib/sets/lists/base: md.evbarm
src/external/broadcom/bwfm: Makefile

Log Message:
Let xunlong,orangepi-lite2 share bwfm config with raspberrypi,3-model-b-plus;
it seem to work fine and there's no better alternative at the moment.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/distrib/sets/lists/base/md.evbarm
cvs rdiff -u -r1.7 -r1.8 src/external/broadcom/bwfm/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src

2020-03-26 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Fri Mar 27 04:31:18 UTC 2020

Modified Files:
src/distrib/sets/lists/base: md.evbarm
src/external/broadcom/bwfm: Makefile

Log Message:
Let xunlong,orangepi-lite2 share bwfm config with raspberrypi,3-model-b-plus;
it seem to work fine and there's no better alternative at the moment.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/distrib/sets/lists/base/md.evbarm
cvs rdiff -u -r1.7 -r1.8 src/external/broadcom/bwfm/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/base/md.evbarm
diff -u src/distrib/sets/lists/base/md.evbarm:1.17 src/distrib/sets/lists/base/md.evbarm:1.18
--- src/distrib/sets/lists/base/md.evbarm:1.17	Sun Mar 22 22:36:12 2020
+++ src/distrib/sets/lists/base/md.evbarm	Fri Mar 27 04:31:18 2020
@@ -1,4 +1,4 @@
-# $NetBSD: md.evbarm,v 1.17 2020/03/22 22:36:12 thorpej Exp $
+# $NetBSD: md.evbarm,v 1.18 2020/03/27 04:31:18 thorpej Exp $
 ./libdata/firmware/if_bwfm/brcmfmac43143-sdio.bin	base-firmware-root	firmware
 ./libdata/firmware/if_bwfm/brcmfmac43241b0-sdio.bin	base-firmware-root	firmware
 ./libdata/firmware/if_bwfm/brcmfmac43241b4-sdio.bin	base-firmware-root	firmware
@@ -21,6 +21,7 @@
 ./libdata/firmware/if_bwfm/brcmfmac43455-sdio.bin	base-firmware-root	firmware
 ./libdata/firmware/if_bwfm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt	base-firmware-root	firmware
 ./libdata/firmware/if_bwfm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt	base-firmware-root	firmware
+./libdata/firmware/if_bwfm/brcmfmac43455-sdio.xunlong,orangepi-lite2.txt	base-firmware-root	firmware
 ./libdata/firmware/if_bwfm/brcmfmac43456-sdio.bin	base-firmware-root	firmware
 ./libdata/firmware/if_bwfm/brcmfmac43456-sdio.clm_blob	base-firmware-root	firmware
 ./libdata/firmware/if_bwfm/brcmfmac43456-sdio.pine64,pinebook-pro.txt	base-firmware-root	firmware

Index: src/external/broadcom/bwfm/Makefile
diff -u src/external/broadcom/bwfm/Makefile:1.7 src/external/broadcom/bwfm/Makefile:1.8
--- src/external/broadcom/bwfm/Makefile:1.7	Sun Mar 22 22:36:12 2020
+++ src/external/broadcom/bwfm/Makefile	Fri Mar 27 04:31:18 2020
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.7 2020/03/22 22:36:12 thorpej Exp $
+# $NetBSD: Makefile,v 1.8 2020/03/27 04:31:18 thorpej Exp $
 
 NOMAN=	# define
 
@@ -71,6 +71,11 @@ LINKS+=	${FILESDIR}/brcmfmac43430-sdio.r
 FILES+=	dist/brcmfmac43430-sdio.AP6212.txt
 LINKS+=	${FILESDIR}/brcmfmac43430-sdio.AP6212.txt \
 	${FILESDIR}/brcmfmac43430-sdio.sinovoip,bpi-m2-zero.txt
+
+# In lieu of a better option the xunlong,orangepi-lite2 has successfully
+# used the the same nvram config as the raspberrypi,3-model-b-plus.
+LINKS+=	${FILESDIR}/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt \
+	${FILESDIR}/brcmfmac43455-sdio.xunlong,orangepi-lite2.txt
 .endif
 
 .include 



Re: CVS commit: src/external/gpl3

2020-03-26 Thread Robert Elz
Date:Thu, 26 Mar 2020 23:22:57 +
From:Andrew Doran 
Message-ID:  <20200326232257.gf27...@homeworld.netbsd.org>

  | > Modern CPUs like Ryzen Threadripper 3990X can execute that extra amount
  | > of instructions (around 600) in a single clock cycle.
  |
  | NetBSD-current would probably take longer to build on that AMD chip, than
  | Research Unix took to build on a PDP-11/70 in the late 1970s.  It still
  | counts.

Not only tat, but Kamil's measurements only count the kernel cost, not
the cost for the shell adding the var to the env on every exec, or the
additional cost on env var lookups of having to scan one extra var that
isn't the one being sought (50% of the time on average - the other lookups
find the var before the extra one) - and of course, all the lookups for
vars like LD_LIBRARY_PATH that have to scan everything, as those are almost
never present.

But discussion isn't worth the time it is taking.

kre




CVS commit: src/share/installboot/evbarm

2020-03-26 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Fri Mar 27 02:01:48 UTC 2020

Modified Files:
src/share/installboot/evbarm: boards.plist

Log Message:
Add OrangePi Lite and Lite2.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/share/installboot/evbarm/boards.plist

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/share/installboot/evbarm

2020-03-26 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Fri Mar 27 02:01:48 UTC 2020

Modified Files:
src/share/installboot/evbarm: boards.plist

Log Message:
Add OrangePi Lite and Lite2.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/share/installboot/evbarm/boards.plist

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/share/installboot/evbarm/boards.plist
diff -u src/share/installboot/evbarm/boards.plist:1.5 src/share/installboot/evbarm/boards.plist:1.6
--- src/share/installboot/evbarm/boards.plist:1.5	Mon Jan 27 07:48:59 2020
+++ src/share/installboot/evbarm/boards.plist	Fri Mar 27 02:01:48 2020
@@ -1,4 +1,4 @@
-
+
 

CVS commit: src/sys/arch/arm/dts

2020-03-26 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Fri Mar 27 01:59:50 UTC 2020

Added Files:
src/sys/arch/arm/dts: sun50i-h6-orangepi-lite2.dts

Log Message:
Add a more complete / correct device tree for the OrangePi Lite 2.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/dts/sun50i-h6-orangepi-lite2.dts

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/arch/arm/dts

2020-03-26 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Fri Mar 27 01:59:50 UTC 2020

Added Files:
src/sys/arch/arm/dts: sun50i-h6-orangepi-lite2.dts

Log Message:
Add a more complete / correct device tree for the OrangePi Lite 2.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/dts/sun50i-h6-orangepi-lite2.dts

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Added files:

Index: src/sys/arch/arm/dts/sun50i-h6-orangepi-lite2.dts
diff -u /dev/null src/sys/arch/arm/dts/sun50i-h6-orangepi-lite2.dts:1.1
--- /dev/null	Fri Mar 27 01:59:50 2020
+++ src/sys/arch/arm/dts/sun50i-h6-orangepi-lite2.dts	Fri Mar 27 01:59:49 2020
@@ -0,0 +1,341 @@
+// SPDX-License-Identifier: (GPL-2.0+ or MIT)
+/*
+ * Copyright (C) 2018 Jagan Teki 
+ */
+
+/*
+ * Corrected OrangePi Lite2 device tree taken from:
+ *
+ * https://github.com/armbian/build/blob/master/patch/kernel/sunxi-dev/board-h6-orangepi-lite2-fix-missing-all.patch
+ *
+ * Commit 9fadb36e18cfca774068feedcc176bd483082e83
+ */
+
+/dts-v1/;
+
+#include "../../../external/gpl2/dts/dist/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi"
+
+#include 
+
+/ {
+	model = "OrangePi Lite2";
+	compatible = "xunlong,orangepi-lite2", "allwinner,sun50i-h6";
+
+	aliases {
+		serial0 =  /* debug */
+		serial1 =  /* BT-UART */
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	connector {
+		compatible = "hdmi-connector";
+		type = "a";
+		ddc-supply = <_ddc>;
+
+		port {
+			hdmi_con_in: endpoint {
+remote-endpoint = <_out_con>;
+			};
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power {
+			label = "orangepi:red:power";
+			gpios = <_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
+			default-state = "on";
+		};
+
+		status {
+			label = "orangepi:green:status";
+			gpios = <_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
+		};
+	};
+
+	reg_ddc: ddc-io {
+		compatible = "regulator-fixed";
+		regulator-name = "ddc-io";
+		regulator-min-microvolt = <500>;
+		regulator-max-microvolt = <500>;
+		enable-active-high;
+		gpio = < 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
+	};
+
+	reg_vcc5v: vcc5v {
+		/* board wide 5V supply directly from the DC jack */
+		compatible = "regulator-fixed";
+		regulator-name = "vcc-5v";
+		regulator-min-microvolt = <500>;
+		regulator-max-microvolt = <500>;
+		regulator-always-on;
+	};
+
+	reg_usb_vbus: vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "usb-vbus";
+		regulator-min-microvolt = <500>;
+		regulator-max-microvolt = <500>;
+		startup-delay-us = <10>;
+		gpio = <_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 USB0-DRVVBUS */
+		enable-active-high;
+	};
+
+	wifi_pwrseq: wifi_pwrseq {
+		compatible = "mmc-pwrseq-simple";
+		clocks = < 1>;
+		clock-names = "ext_clock";
+		reset-gpios = <_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */
+		post-power-on-delay-ms = <200>;
+	};
+};
+
+ {
+	cpu-supply = <_dcdca>;
+};
+
+ {
+	status = "okay";
+};
+
+ {
+	status = "okay";
+};
+
+_out {
+	hdmi_out_con: endpoint {
+		remote-endpoint = <_con_in>;
+	};
+};
+
+ {
+	vmmc-supply = <_cldo1>;
+	cd-gpios = < 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
+	bus-width = <4>;
+	status = "okay";
+};
+
+ {
+	vmmc-supply = <_cldo2>;
+	vqmmc-supply = <_bldo3>;
+	mmc-pwrseq = <_pwrseq>;
+	bus-width = <4>;
+	non-removable;
+	status = "okay";
+
+	brcm: sdio-wifi@1 {
+		reg = <1>;
+		compatible = "brcm,bcm4329-fmac";
+		interrupt-parent = <_pio>;
+		interrupts = <1 0 IRQ_TYPE_LEVEL_LOW>;	/* PM0 */
+		interrupt-names = "host-wake";
+	};
+};
+
+ {
+	vcc-pc-supply = <_bldo2>;
+	vcc-pd-supply = <_cldo1>;
+	vcc-pg-supply = <_bldo3>;
+};
+
+_i2c {
+	status = "okay";
+
+	axp805: pmic@36 {
+		compatible = "x-powers,axp805", "x-powers,axp806";
+		reg = <0x36>;
+		interrupt-parent = <_intc>;
+		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+		interrupt-controller;
+		#interrupt-cells = <1>;
+		x-powers,self-working-mode;
+		vina-supply = <_vcc5v>;
+		vinb-supply = <_vcc5v>;
+		vinc-supply = <_vcc5v>;
+		vind-supply = <_vcc5v>;
+		vine-supply = <_vcc5v>;
+		aldoin-supply = <_vcc5v>;
+		bldoin-supply = <_vcc5v>;
+		cldoin-supply = <_vcc5v>;
+
+		regulators {
+			reg_aldo1: aldo1 {
+regulator-always-on;
+regulator-min-microvolt = <330>;
+regulator-max-microvolt = <330>;
+regulator-name = "vcc-pl-led-ir";
+			};
+
+			reg_aldo2: aldo2 {
+regulator-min-microvolt = <330>;
+regulator-max-microvolt = <330>;
+regulator-name = "vcc33-audio-tv-ephy-mac";
+			};
+
+			/* ALDO3 is shorted to CLDO1 */
+			reg_aldo3: aldo3 {
+regulator-always-on;
+regulator-min-microvolt = <330>;
+regulator-max-microvolt = <330>;
+regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-1";
+			};
+
+			reg_bldo1: bldo1 {
+regulator-always-on;
+regulator-min-microvolt = <180>;
+regulator-max-microvolt = <180>;
+regulator-name = "vcc18-dram-bias-pll";
+			};
+
+			reg_bldo2: bldo2 {
+regulator-always-on;
+regulator-min-microvolt = <180>;
+

CVS commit: src/sys/arch/evbarm/conf

2020-03-26 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Fri Mar 27 01:43:58 UTC 2020

Modified Files:
src/sys/arch/evbarm/conf: GENERIC64

Log Message:
Attach sunxirtc in pass4; it's required by mmcpwrseq on some boards.


To generate a diff of this commit:
cvs rdiff -u -r1.146 -r1.147 src/sys/arch/evbarm/conf/GENERIC64

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/arch/evbarm/conf

2020-03-26 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Fri Mar 27 01:43:58 UTC 2020

Modified Files:
src/sys/arch/evbarm/conf: GENERIC64

Log Message:
Attach sunxirtc in pass4; it's required by mmcpwrseq on some boards.


To generate a diff of this commit:
cvs rdiff -u -r1.146 -r1.147 src/sys/arch/evbarm/conf/GENERIC64

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/evbarm/conf/GENERIC64
diff -u src/sys/arch/evbarm/conf/GENERIC64:1.146 src/sys/arch/evbarm/conf/GENERIC64:1.147
--- src/sys/arch/evbarm/conf/GENERIC64:1.146	Wed Mar 18 10:56:38 2020
+++ src/sys/arch/evbarm/conf/GENERIC64	Fri Mar 27 01:43:58 2020
@@ -1,5 +1,5 @@
 #
-#	$NetBSD: GENERIC64,v 1.146 2020/03/18 10:56:38 jmcneill Exp $
+#	$NetBSD: GENERIC64,v 1.147 2020/03/27 01:43:58 thorpej Exp $
 #
 #	GENERIC ARM (aarch64) kernel
 #
@@ -421,7 +421,7 @@ sun8icrypto* 	at fdt?			# Allwinner Cryp
 
 # RTC
 plrtc*		at fdt?			# ARM PrimeCell RTC
-sunxirtc*	at fdt?			# Allwinner RTC
+sunxirtc*	at fdt? pass 4		# Allwinner RTC
 tegrartc*	at fdt?			# NVIDIA Tegra RTC
 
 # SDMMC



CVS commit: src/sys/arch/arm/sunxi

2020-03-26 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Fri Mar 27 01:42:11 UTC 2020

Modified Files:
src/sys/arch/arm/sunxi: sunxi_rtc.c

Log Message:
Add the clock providers for the sun6i_a31, sun8i_a23, sun8i_r40, sun8i_v3,
sun8i_h3, sun50i_h5 (same as H3), and sun50i_h6 RTC blocks.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/sunxi/sunxi_rtc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/arch/arm/sunxi

2020-03-26 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Fri Mar 27 01:42:11 UTC 2020

Modified Files:
src/sys/arch/arm/sunxi: sunxi_rtc.c

Log Message:
Add the clock providers for the sun6i_a31, sun8i_a23, sun8i_r40, sun8i_v3,
sun8i_h3, sun50i_h5 (same as H3), and sun50i_h6 RTC blocks.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/sunxi/sunxi_rtc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/sunxi/sunxi_rtc.c
diff -u src/sys/arch/arm/sunxi/sunxi_rtc.c:1.5 src/sys/arch/arm/sunxi/sunxi_rtc.c:1.6
--- src/sys/arch/arm/sunxi/sunxi_rtc.c:1.5	Thu Sep  5 23:42:26 2019
+++ src/sys/arch/arm/sunxi/sunxi_rtc.c	Fri Mar 27 01:42:10 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: sunxi_rtc.c,v 1.5 2019/09/05 23:42:26 thorpej Exp $ */
+/* $NetBSD: sunxi_rtc.c,v 1.6 2020/03/27 01:42:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2014-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: sunxi_rtc.c,v 1.5 2019/09/05 23:42:26 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sunxi_rtc.c,v 1.6 2020/03/27 01:42:10 thorpej Exp $");
 
 #include 
 #include 
@@ -37,6 +37,7 @@ __KERNEL_RCSID(0, "$NetBSD: sunxi_rtc.c,
 #include 
 
 #include 
+#include 
 
 #include 
 
@@ -64,6 +65,18 @@ __KERNEL_RCSID(0, "$NetBSD: sunxi_rtc.c,
 #define	 SUN7I_RTC_SECOND	__BITS(5,0)
 #define	SUN7I_RTC_BASE_YEAR	1970
 
+#define	SUN6I_LOSC_CTRL_REG	0x00
+#define	 SUN6I_LOSC_CTRL_KEY		(0x16aa << 16)
+#define	 SUN6I_LOSC_CTRL_AUTO_SWT_BYPASS __BIT(15)
+#define	 SUN6I_LOSC_CTRL_ALM_DHMS_ACC	__BIT(9)
+#define	 SUN6I_LOSC_CTRL_RTC_HMS_ACC	__BIT(8)
+#define	 SUN6I_LOSC_CTRL_RTC_YMD_ACC	__BIT(7)
+#define	 SUN6I_LOSC_CTRL_EXT_LOSC_EN	__BIT(4)
+#define	 SUN6I_LOSC_CTRL_EXT_OSC	__BIT(0)
+
+#define	SUN6I_INTOSC_CLK_PRESCAL_REG 0x08
+#define	 SUN6I_INTOSC_CLK_PRESCAL	__BITS(0,4)
+
 #define	SUN6I_RTC_YY_MM_DD_REG	0x10
 #define	 SUN6I_RTC_LEAP		__BIT(22)
 #define	 SUN6I_RTC_YEAR		__BITS(21,16)
@@ -76,14 +89,25 @@ __KERNEL_RCSID(0, "$NetBSD: sunxi_rtc.c,
 #define	 SUN6I_RTC_SECOND	__BITS(5,0)
 #define	SUN6I_RTC_BASE_YEAR	2000
 
+#define	SUN6I_RTC_LOSC_OUT_GATING_REG 0x60
+#define	 SUN6I_RTC_LOSC_OUT_EN	__BIT(0)
+
 struct sunxi_rtc_config {
 	bus_size_t	yy_mm_dd_reg;
 	uint32_t	leap, year, month, day;
 	bus_size_t	hh_mm_ss_reg;
 	uint32_t	wk_no, hour, minute, second;
 	u_int		base_year;
+
+	u_int		iosc_rate;
+	u_int		fixed_prescaler;
+	uint32_t	ext_losc_en;
+	uint32_t	auto_swt_bypass;
+	u_int		flags;
 };
 
+#define	SUNXI_RTC_F_HAS_VAR_PRESCALER	__BIT(0)
+
 static const struct sunxi_rtc_config sun4i_rtc_config = {
 	.yy_mm_dd_reg = SUN4I_RTC_YY_MM_DD_REG,
 	.leap = SUN4I_RTC_LEAP,
@@ -98,7 +122,7 @@ static const struct sunxi_rtc_config sun
 	.base_year = SUN4I_RTC_BASE_YEAR,
 };
 
-static const struct sunxi_rtc_config sun6i_rtc_config = {
+static const struct sunxi_rtc_config sun6i_a31_rtc_config = {
 	.yy_mm_dd_reg = SUN6I_RTC_YY_MM_DD_REG,
 	.leap = SUN6I_RTC_LEAP,
 	.year = SUN6I_RTC_YEAR,
@@ -110,6 +134,9 @@ static const struct sunxi_rtc_config sun
 	.minute = SUN6I_RTC_MINUTE,
 	.second = SUN6I_RTC_SECOND,
 	.base_year = SUN6I_RTC_BASE_YEAR,
+
+	.iosc_rate = 667000,
+	.flags = SUNXI_RTC_F_HAS_VAR_PRESCALER,
 };
 
 static const struct sunxi_rtc_config sun7i_rtc_config = {
@@ -126,21 +153,142 @@ static const struct sunxi_rtc_config sun
 	.base_year = SUN7I_RTC_BASE_YEAR,
 };
 
+static const struct sunxi_rtc_config sun8i_a23_rtc_config = {
+	.yy_mm_dd_reg = SUN6I_RTC_YY_MM_DD_REG,
+	.leap = SUN6I_RTC_LEAP,
+	.year = SUN6I_RTC_YEAR,
+	.month = SUN6I_RTC_MONTH,
+	.day = SUN6I_RTC_DAY,
+	.hh_mm_ss_reg = SUN6I_RTC_HH_MM_SS_REG,
+	.wk_no = SUN6I_RTC_WK_NO,
+	.hour = SUN6I_RTC_HOUR,
+	.minute = SUN6I_RTC_MINUTE,
+	.second = SUN6I_RTC_SECOND,
+	.base_year = SUN6I_RTC_BASE_YEAR,
+
+	.iosc_rate = 667000,
+	.flags = SUNXI_RTC_F_HAS_VAR_PRESCALER,
+};
+
+static const struct sunxi_rtc_config sun8i_r40_rtc_config = {
+	.yy_mm_dd_reg = SUN6I_RTC_YY_MM_DD_REG,
+	.leap = SUN6I_RTC_LEAP,
+	.year = SUN6I_RTC_YEAR,
+	.month = SUN6I_RTC_MONTH,
+	.day = SUN6I_RTC_DAY,
+	.hh_mm_ss_reg = SUN6I_RTC_HH_MM_SS_REG,
+	.wk_no = SUN6I_RTC_WK_NO,
+	.hour = SUN6I_RTC_HOUR,
+	.minute = SUN6I_RTC_MINUTE,
+	.second = SUN6I_RTC_SECOND,
+	.base_year = SUN6I_RTC_BASE_YEAR,
+
+	.iosc_rate = 1600,
+	.fixed_prescaler = 512,
+};
+
+static const struct sunxi_rtc_config sun8i_v3_rtc_config = {
+	.yy_mm_dd_reg = SUN6I_RTC_YY_MM_DD_REG,
+	.leap = SUN6I_RTC_LEAP,
+	.year = SUN6I_RTC_YEAR,
+	.month = SUN6I_RTC_MONTH,
+	.day = SUN6I_RTC_DAY,
+	.hh_mm_ss_reg = SUN6I_RTC_HH_MM_SS_REG,
+	.wk_no = SUN6I_RTC_WK_NO,
+	.hour = SUN6I_RTC_HOUR,
+	.minute = SUN6I_RTC_MINUTE,
+	.second = SUN6I_RTC_SECOND,
+	.base_year = SUN6I_RTC_BASE_YEAR,
+
+	.iosc_rate = 32000,
+};
+
+static const struct sunxi_rtc_config sun8i_h3_rtc_config = {
+	.yy_mm_dd_reg = SUN6I_RTC_YY_MM_DD_REG,
+	.leap = SUN6I_RTC_LEAP,
+	.year = SUN6I_RTC_YEAR,
+	.month = SUN6I_RTC_MONTH,
+	.day = 

Re: CVS commit: src/lib/libc/string

2020-03-26 Thread Joerg Sonnenberger
On Thu, Mar 26, 2020 at 10:54:21AM +0700, Robert Elz wrote:
> Date:Wed, 25 Mar 2020 20:51:25 +
> From:David Holland 
> Message-ID:  <20200325205125.ga11...@netbsd.org>
> 
>   | I don't agree -- because applications shouldn't attempt to modify the
>   | result, it should be const.
> 
> The only reason apps shouldn't modify the string is in case of porting
> the app to an (well, some) ancient implementation.  Because of the NLS
> requirements, the message these days (any modern implementation) must be
> read from some external file - which means the storage for it must be
> writable. 

Actually, the only reason why we really need writable space is the
unknown error case. NLS could in principle be using mmaped data as well,
modulo not being able to unmap it again.

Joerg


CVS commit: src/usr.sbin/crash

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Fri Mar 27 00:17:08 UTC 2020

Modified Files:
src/usr.sbin/crash: crash.c

Log Message:
No need for warnx() if !LOCKDEBUG


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/usr.sbin/crash/crash.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/usr.sbin/crash

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Fri Mar 27 00:17:08 UTC 2020

Modified Files:
src/usr.sbin/crash: crash.c

Log Message:
No need for warnx() if !LOCKDEBUG


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/usr.sbin/crash/crash.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/crash/crash.c
diff -u src/usr.sbin/crash/crash.c:1.12 src/usr.sbin/crash/crash.c:1.13
--- src/usr.sbin/crash/crash.c:1.12	Mon Mar  9 01:54:31 2020
+++ src/usr.sbin/crash/crash.c	Fri Mar 27 00:17:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: crash.c,v 1.12 2020/03/09 01:54:31 christos Exp $	*/
+/*	$NetBSD: crash.c,v 1.13 2020/03/27 00:17:08 ad Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 #ifndef lint
-__RCSID("$NetBSD: crash.c,v 1.12 2020/03/09 01:54:31 christos Exp $");
+__RCSID("$NetBSD: crash.c,v 1.13 2020/03/27 00:17:08 ad Exp $");
 #endif /* not lint */
 
 #include 
@@ -427,17 +427,16 @@ main(int argc, char **argv)
 		errx(EXIT_FAILURE, "cannot read osrelease: %s",
 		kvm_geterr(kd));
 	}
-#ifdef LOCKDEBUG
-	if ((size_t)kvm_read(kd, nl[X_LOCKDEBUG].n_value, _all,
-	sizeof(ld_all)) != sizeof(ld_all))
-		warn("Cannot read ld_all (no LOCKDEBUG kernel?): %s",
-		kvm_geterr(kd));
-#endif
 	printf("Crash version %s, image version %s.\n", osrelease, imgrelease);
 	if (strcmp(osrelease, imgrelease) != 0) {
 		printf("WARNING: versions differ, you may not be able to "
 		"examine this image.\n");
 	}
+#ifdef LOCKDEBUG
+	if ((size_t)kvm_read(kd, nl[X_LOCKDEBUG].n_value, _all,
+	sizeof(ld_all)) != sizeof(ld_all))
+		printf("Kernel compiled without options LOCKDEBUG.\n");
+#endif
 
 	/*
 	 * Print the panic string, if any.



CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Fri Mar 27 00:14:25 UTC 2020

Modified Files:
src/sys/kern: vfs_cache.c

Log Message:
- Stats: add a cast to make sure 32-bit wraparound works properly.
- cache_purge_children(): just use RB_TREE_MIN().
- Change the name of the pool to "namecache".
- Update comments.


To generate a diff of this commit:
cvs rdiff -u -r1.134 -r1.135 src/sys/kern/vfs_cache.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/vfs_cache.c
diff -u src/sys/kern/vfs_cache.c:1.134 src/sys/kern/vfs_cache.c:1.135
--- src/sys/kern/vfs_cache.c:1.134	Mon Mar 23 20:02:13 2020
+++ src/sys/kern/vfs_cache.c	Fri Mar 27 00:14:25 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_cache.c,v 1.134 2020/03/23 20:02:13 ad Exp $	*/
+/*	$NetBSD: vfs_cache.c,v 1.135 2020/03/27 00:14:25 ad Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2019, 2020 The NetBSD Foundation, Inc.
@@ -172,7 +172,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: vfs_cache.c,v 1.134 2020/03/23 20:02:13 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_cache.c,v 1.135 2020/03/27 00:14:25 ad Exp $");
 
 #define __NAMECACHE_PRIVATE
 #ifdef _KERNEL_OPT
@@ -250,7 +250,7 @@ static kmutex_t cache_stat_lock __cachel
 
 #define	UPDATE(nchcpu, f) do { \
 	uint32_t cur = atomic_load_relaxed(>cur.f); \
-	nchstats.f += cur - nchcpu->last.f; \
+	nchstats.f += (uint32_t)(cur - nchcpu->last.f); \
 	nchcpu->last.f = cur; \
 } while (/* CONSTCOND */ 0)
 
@@ -409,9 +409,9 @@ cache_lookup_entry(struct vnode *dvp, co
 	 * tailored for exactly what's needed here (64-bit key and so on)
 	 * that is quite a bit faster than using rb_tree_find_node(). 
 	 *
-	 * In the fast path memcmp() needs to be called at least once to
-	 * confirm that the correct name has been found.  If there has been
-	 * a hash value collision (very rare) the search will continue on.
+	 * For a matching key memcmp() needs to be called once to confirm
+	 * that the correct name has been found.  Very rarely there will be
+	 * a key value collision and the search will continue.
 	 */
 	for (;;) {
 		if (__predict_false(RB_SENTINEL_P(node))) {
@@ -791,7 +791,10 @@ cache_revlookup(struct vnode *vp, struct
 			}
 		}
 
-		/* Record a hit on the entry.  This is an unlocked read. */
+		/*
+		 * Record a hit on the entry.  This is an unlocked read but
+		 * even if wrong it doesn't matter too much.
+		 */
 		lrulist = atomic_load_relaxed(>nc_lrulist);
 		if (lrulist != LRU_ACTIVE) {
 			cache_activate(ncp);
@@ -905,8 +908,8 @@ cache_enter(struct vnode *dvp, struct vn
 
 	/*
 	 * With the directory lock still held, insert to the tail of the
-	 * ACTIVE LRU list (new) and with the LRU lock held take the to
-	 * opportunity to incrementally balance the lists.
+	 * ACTIVE LRU list (new) and take the opportunity to incrementally
+	 * balance the lists.
 	 */
 	mutex_enter(_lru_lock);
 	ncp->nc_lrulist = LRU_ACTIVE;
@@ -916,8 +919,10 @@ cache_enter(struct vnode *dvp, struct vn
 	mutex_exit(_lru_lock);
 
 	/*
-	 * Finally, insert to the vnode, and unlock.  Partially sort the
-	 * per-vnode list: dots go to back.
+	 * Finally, insert to the vnode and unlock.  With everything set up
+	 * it's safe to let cache_revlookup() see the entry.  Partially sort
+	 * the per-vnode list: dots go to back so cache_revlookup() doesn't
+	 * have to consider them.
 	 */
 	if (vp != NULL) {
 		vnode_impl_t *vi = VNODE_TO_VIMPL(vp);
@@ -987,7 +992,7 @@ nchinit(void)
 {
 
 	cache_pool = pool_cache_init(sizeof(struct namecache),
-	coherency_unit, 0, 0, "nchentry", NULL, IPL_NONE, NULL,
+	coherency_unit, 0, 0, "namecache", NULL, IPL_NONE, NULL,
 	NULL, NULL);
 	KASSERT(cache_pool != NULL);
 
@@ -1126,11 +1131,7 @@ cache_purge_children(struct vnode *dvp)
 	SDT_PROBE(vfs, namecache, purge, children, dvp, 0, 0, 0, 0);
 
 	rw_enter(>vi_nc_lock, RW_WRITER);
-	for (;;) {
-		ncp = rb_tree_iterate(>vi_nc_tree, NULL, RB_DIR_RIGHT);
-		if (ncp == NULL) {
-			break;
-		}
+	while ((ncp = RB_TREE_MIN(>vi_nc_tree)) != NULL) {
 		cache_remove(ncp, true);
 	}
 	rw_exit(>vi_nc_lock);
@@ -1210,14 +1211,14 @@ cache_purgevfs(struct mount *mp)
 }
 
 /*
- * Re-queue an entry onto the correct LRU list, after it has scored a hit.
+ * Re-queue an entry onto the tail of the active LRU list, after it has
+ * scored a hit.
  */
 static void
 cache_activate(struct namecache *ncp)
 {
 
 	mutex_enter(_lru_lock);
-	/* Put on tail of ACTIVE list, since it just scored a hit. */
 	TAILQ_REMOVE(_lru.list[ncp->nc_lrulist], ncp, nc_lru);
 	TAILQ_INSERT_TAIL(_lru.list[LRU_ACTIVE], ncp, nc_lru);
 	cache_lru.count[ncp->nc_lrulist]--;



CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Fri Mar 27 00:14:25 UTC 2020

Modified Files:
src/sys/kern: vfs_cache.c

Log Message:
- Stats: add a cast to make sure 32-bit wraparound works properly.
- cache_purge_children(): just use RB_TREE_MIN().
- Change the name of the pool to "namecache".
- Update comments.


To generate a diff of this commit:
cvs rdiff -u -r1.134 -r1.135 src/sys/kern/vfs_cache.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Fri Mar 27 00:13:52 UTC 2020

Modified Files:
src/sys/kern: kern_softint.c

Log Message:
Comments


To generate a diff of this commit:
cvs rdiff -u -r1.63 -r1.64 src/sys/kern/kern_softint.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/kern_softint.c
diff -u src/sys/kern/kern_softint.c:1.63 src/sys/kern/kern_softint.c:1.64
--- src/sys/kern/kern_softint.c:1.63	Thu Mar 26 20:19:06 2020
+++ src/sys/kern/kern_softint.c	Fri Mar 27 00:13:52 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_softint.c,v 1.63 2020/03/26 20:19:06 ad Exp $	*/
+/*	$NetBSD: kern_softint.c,v 1.64 2020/03/27 00:13:52 ad Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008, 2019, 2020 The NetBSD Foundation, Inc.
@@ -170,7 +170,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: kern_softint.c,v 1.63 2020/03/26 20:19:06 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_softint.c,v 1.64 2020/03/27 00:13:52 ad Exp $");
 
 #include 
 #include 
@@ -477,6 +477,11 @@ softint_schedule(void *arg)
 	uintptr_t offset;
 	int s;
 
+	/*
+	 * If this assert fires, rather than disabling preemption explicitly
+	 * to make it stop, consider that you are probably using a softint
+	 * when you don't need to.
+	 */	
 	KASSERT(kpreempt_disabled());
 
 	/* Find the handler record for this CPU. */
@@ -709,17 +714,13 @@ softint_thread(void *cookie)
 	si = l->l_private;
 
 	for (;;) {
-		/*
-		 * Clear pending status and run it.  We must drop the
-		 * spl before mi_switch(), since IPL_HIGH may be higher
-		 * than IPL_SCHED (and it is not safe to switch at a
-		 * higher level).
-		 */
+		/* Clear pending status and run it. */
 		s = splhigh();
 		l->l_cpu->ci_data.cpu_softints &= ~si->si_machdep;
 		softint_execute(si, l, s);
 		splx(s);
 
+		/* Interrupts allowed to run again before switching. */
 		lwp_lock(l);
 		l->l_stat = LSIDL;
 		spc_lock(l->l_cpu);



CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Fri Mar 27 00:13:52 UTC 2020

Modified Files:
src/sys/kern: kern_softint.c

Log Message:
Comments


To generate a diff of this commit:
cvs rdiff -u -r1.63 -r1.64 src/sys/kern/kern_softint.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



Re: CVS commit: src/external/gpl3

2020-03-26 Thread Andrew Doran
On Thu, Mar 26, 2020 at 06:07:54PM +0100, Kamil Rytarowski wrote:

> On 26.03.2020 17:49, Robert Elz wrote:
> > Date:Thu, 26 Mar 2020 16:28:18 +0100
> > From:Kamil Rytarowski 
> > Message-ID:  <84460ebb-b4bf-f3ee-e51b-e27d0b6e2...@gmx.com>
> >
> >
> >   | That is negligible cost of getting TMPDIR propagated to most programs.
> >
> > Sure, it isn't much, for one program, but when you're running tens of
> > thousands, it all adds up.
> >
> 
> It's still negligible for hundreds of millions calls.
> 
> Modern CPUs like Ryzen Threadripper 3990X can execute that extra amount
> of instructions (around 600) in a single clock cycle.

NetBSD-current would probably take longer to build on that AMD chip, than
Research Unix took to build on a PDP-11/70 in the late 1970s.  It still
counts.

https://www.bell-labs.com/usr/dmr/www/retro.pdf

Andrew


CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 22:43:19 UTC 2020

Modified Files:
src/sys/kern: kern_turnstile.c

Log Message:
TAILQ -> LIST


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/sys/kern/kern_turnstile.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 22:43:19 UTC 2020

Modified Files:
src/sys/kern: kern_turnstile.c

Log Message:
TAILQ -> LIST


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/sys/kern/kern_turnstile.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/kern_turnstile.c
diff -u src/sys/kern/kern_turnstile.c:1.37 src/sys/kern/kern_turnstile.c:1.38
--- src/sys/kern/kern_turnstile.c:1.37	Thu Mar 26 19:46:42 2020
+++ src/sys/kern/kern_turnstile.c	Thu Mar 26 22:43:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_turnstile.c,v 1.37 2020/03/26 19:46:42 ad Exp $	*/
+/*	$NetBSD: kern_turnstile.c,v 1.38 2020/03/26 22:43:19 ad Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2006, 2007, 2009, 2019, 2020
@@ -61,7 +61,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: kern_turnstile.c,v 1.37 2020/03/26 19:46:42 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_turnstile.c,v 1.38 2020/03/26 22:43:19 ad Exp $");
 
 #include 
 #include 
@@ -557,13 +557,13 @@ turnstile_print(volatile void *obj, void
 
 	(*pr)("Turnstile:\n");
 	(*pr)("=> %d waiting readers:", TS_WAITERS(ts, TS_READER_Q));
-	TAILQ_FOREACH(l, rsq, l_sleepchain) {
+	LIST_FOREACH(l, rsq, l_sleepchain) {
 		(*pr)(" %p", l);
 	}
 	(*pr)("\n");
 
 	(*pr)("=> %d waiting writers:", TS_WAITERS(ts, TS_WRITER_Q));
-	TAILQ_FOREACH(l, wsq, l_sleepchain) {
+	LIST_FOREACH(l, wsq, l_sleepchain) {
 		(*pr)(" %p", l);
 	}
 	(*pr)("\n");



CVS commit: src/sys/rump/librump/rumpkern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 22:40:10 UTC 2020

Modified Files:
src/sys/rump/librump/rumpkern: sleepq.c

Log Message:
sleepq_t is now a LIST.  Forgot to commit earlier.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/rump/librump/rumpkern/sleepq.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/rump/librump/rumpkern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 22:40:10 UTC 2020

Modified Files:
src/sys/rump/librump/rumpkern: sleepq.c

Log Message:
sleepq_t is now a LIST.  Forgot to commit earlier.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/rump/librump/rumpkern/sleepq.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/rump/librump/rumpkern/sleepq.c
diff -u src/sys/rump/librump/rumpkern/sleepq.c:1.17 src/sys/rump/librump/rumpkern/sleepq.c:1.18
--- src/sys/rump/librump/rumpkern/sleepq.c:1.17	Tue Jan 26 23:12:18 2016
+++ src/sys/rump/librump/rumpkern/sleepq.c	Thu Mar 26 22:40:10 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: sleepq.c,v 1.17 2016/01/26 23:12:18 pooka Exp $	*/
+/*	$NetBSD: sleepq.c,v 1.18 2020/03/26 22:40:10 ad Exp $	*/
 
 /*
  * Copyright (c) 2008 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: sleepq.c,v 1.17 2016/01/26 23:12:18 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sleepq.c,v 1.18 2020/03/26 22:40:10 ad Exp $");
 
 #include 
 #include 
@@ -58,7 +58,7 @@ sleepq_init(sleepq_t *sq)
 
 	RUN_ONCE(, sqinit1);
 
-	TAILQ_INIT(sq);
+	LIST_INIT(sq);
 }
 
 void
@@ -69,7 +69,7 @@ sleepq_enqueue(sleepq_t *sq, wchan_t wc,
 	l->l_wchan = wc;
 	l->l_wmesg = wmsg;
 	l->l_sleepq = sq;
-	TAILQ_INSERT_TAIL(sq, l, l_sleepchain);
+	LIST_INSERT_HEAD(sq, l, l_sleepchain);
 }
 
 int
@@ -85,7 +85,7 @@ sleepq_block(int timo, bool catch)
 		error = cv_timedwait(_cv, mp, timo);
 		if (error == EWOULDBLOCK || error == EINTR) {
 			if (l->l_wchan) {
-TAILQ_REMOVE(l->l_sleepq, l, l_sleepchain);
+LIST_REMOVE(l, l_sleepchain);
 l->l_wchan = NULL;
 l->l_wmesg = NULL;
 			}
@@ -105,13 +105,13 @@ sleepq_wake(sleepq_t *sq, wchan_t wchan,
 	struct lwp *l, *l_next;
 	bool found = false;
 
-	for (l = TAILQ_FIRST(sq); l; l = l_next) {
-		l_next = TAILQ_NEXT(l, l_sleepchain);
+	for (l = LIST_FIRST(sq); l; l = l_next) {
+		l_next = LIST_NEXT(l, l_sleepchain);
 		if (l->l_wchan == wchan) {
 			found = true;
 			l->l_wchan = NULL;
 			l->l_wmesg = NULL;
-			TAILQ_REMOVE(sq, l, l_sleepchain);
+			LIST_REMOVE(l, l_sleepchain);
 			if (--expected == 0)
 break;
 		}
@@ -128,7 +128,7 @@ sleepq_unsleep(struct lwp *l, bool clean
 
 	l->l_wchan = NULL;
 	l->l_wmesg = NULL;
-	TAILQ_REMOVE(l->l_sleepq, l, l_sleepchain);
+	LIST_REMOVE(l, l_sleepchain);
 	cv_broadcast(_cv);
 
 	if (cleanup) {



CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 21:31:55 UTC 2020

Modified Files:
src/sys/kern: kern_exit.c kern_lwp.c

Log Message:
Fix crash observed with procfs on current-users by David Hopper.  LWP refcnt
and p_zomblwp both must reach the needed state, and LSZOMB be set, under a
single hold of p_lock.


To generate a diff of this commit:
cvs rdiff -u -r1.285 -r1.286 src/sys/kern/kern_exit.c
cvs rdiff -u -r1.230 -r1.231 src/sys/kern/kern_lwp.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 21:31:55 UTC 2020

Modified Files:
src/sys/kern: kern_exit.c kern_lwp.c

Log Message:
Fix crash observed with procfs on current-users by David Hopper.  LWP refcnt
and p_zomblwp both must reach the needed state, and LSZOMB be set, under a
single hold of p_lock.


To generate a diff of this commit:
cvs rdiff -u -r1.285 -r1.286 src/sys/kern/kern_exit.c
cvs rdiff -u -r1.230 -r1.231 src/sys/kern/kern_lwp.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/kern_exit.c
diff -u src/sys/kern/kern_exit.c:1.285 src/sys/kern/kern_exit.c:1.286
--- src/sys/kern/kern_exit.c:1.285	Sun Mar  8 15:05:18 2020
+++ src/sys/kern/kern_exit.c	Thu Mar 26 21:31:55 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_exit.c,v 1.285 2020/03/08 15:05:18 ad Exp $	*/
+/*	$NetBSD: kern_exit.c,v 1.286 2020/03/26 21:31:55 ad Exp $	*/
 
 /*-
  * Copyright (c) 1998, 1999, 2006, 2007, 2008, 2020 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: kern_exit.c,v 1.285 2020/03/08 15:05:18 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_exit.c,v 1.286 2020/03/26 21:31:55 ad Exp $");
 
 #include "opt_ktrace.h"
 #include "opt_dtrace.h"
@@ -559,7 +559,9 @@ exit1(struct lwp *l, int exitcode, int s
 	/* Free the linux lwp id */
 	if ((l->l_pflag & LP_PIDLID) != 0 && l->l_lid != p->p_pid)
 		proc_free_pid(l->l_lid);
-	lwp_drainrefs(l);
+	if (l->l_refcnt > 0) {
+		lwp_drainrefs(l);
+	}
 	lwp_lock(l);
 	l->l_prflag &= ~LPR_DETACHED;
 	l->l_stat = LSZOMB;

Index: src/sys/kern/kern_lwp.c
diff -u src/sys/kern/kern_lwp.c:1.230 src/sys/kern/kern_lwp.c:1.231
--- src/sys/kern/kern_lwp.c:1.230	Thu Mar 26 20:19:06 2020
+++ src/sys/kern/kern_lwp.c	Thu Mar 26 21:31:55 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_lwp.c,v 1.230 2020/03/26 20:19:06 ad Exp $	*/
+/*	$NetBSD: kern_lwp.c,v 1.231 2020/03/26 21:31:55 ad Exp $	*/
 
 /*-
  * Copyright (c) 2001, 2006, 2007, 2008, 2009, 2019, 2020
@@ -211,7 +211,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: kern_lwp.c,v 1.230 2020/03/26 20:19:06 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_lwp.c,v 1.231 2020/03/26 21:31:55 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_lockdebug.h"
@@ -274,7 +274,7 @@ struct lwp lwp0 __aligned(MIN_LWP_ALIGNM
 	.l_stat = LSONPROC,
 	.l_ts = ,
 	.l_syncobj = _syncobj,
-	.l_refcnt = 1,
+	.l_refcnt = 0,
 	.l_priority = PRI_USER + NPRI_USER - 1,
 	.l_inheritedprio = -1,
 	.l_class = SCHED_OTHER,
@@ -821,7 +821,7 @@ lwp_create(lwp_t *l1, proc_t *p2, vaddr_
 
 	l2->l_stat = LSIDL;
 	l2->l_proc = p2;
-	l2->l_refcnt = 1;
+	l2->l_refcnt = 0;
 	l2->l_class = sclass;
 
 	/*
@@ -1180,19 +1180,27 @@ lwp_exit(struct lwp *l)
 	 * mark it waiting for collection in the proc structure.  Note that
 	 * before we can do that, we need to free any other dead, deatched
 	 * LWP waiting to meet its maker.
+	 *
+	 * All conditions need to be observed upon under the same hold of
+	 * p_lock, because if the lock is dropped any of them can change.
 	 */
 	mutex_enter(p->p_lock);
-	lwp_drainrefs(l);
-
-	if ((l->l_prflag & LPR_DETACHED) != 0) {
-		while ((l2 = p->p_zomblwp) != NULL) {
-			p->p_zomblwp = NULL;
-			lwp_free(l2, false, false);/* releases proc mutex */
-			mutex_enter(p->p_lock);
-			l->l_refcnt++;
+	for (;;) {
+		if (l->l_refcnt > 0) {
 			lwp_drainrefs(l);
+			continue;
+		}
+		if ((l->l_prflag & LPR_DETACHED) != 0) {
+			if ((l2 = p->p_zomblwp) != NULL) {
+p->p_zomblwp = NULL;
+lwp_free(l2, false, false);
+/* proc now unlocked */
+mutex_enter(p->p_lock);
+continue;
+			}
+			p->p_zomblwp = l;
 		}
-		p->p_zomblwp = l;
+		break;
 	}
 
 	/*
@@ -1692,7 +1700,6 @@ lwp_addref(struct lwp *l)
 
 	KASSERT(mutex_owned(l->l_proc->p_lock));
 	KASSERT(l->l_stat != LSZOMB);
-	KASSERT(l->l_refcnt != 0);
 
 	l->l_refcnt++;
 }
@@ -1724,6 +1731,7 @@ lwp_delref2(struct lwp *l)
 	KASSERT(mutex_owned(p->p_lock));
 	KASSERT(l->l_stat != LSZOMB);
 	KASSERT(l->l_refcnt > 0);
+
 	if (--l->l_refcnt == 0)
 		cv_broadcast(>p_lwpcv);
 }
@@ -1737,10 +1745,8 @@ lwp_drainrefs(struct lwp *l)
 	struct proc *p = l->l_proc;
 
 	KASSERT(mutex_owned(p->p_lock));
-	KASSERT(l->l_refcnt != 0);
 
-	l->l_refcnt--;
-	while (l->l_refcnt != 0)
+	while (l->l_refcnt > 0)
 		cv_wait(>p_lwpcv, p->p_lock);
 }
 



CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 21:25:26 UTC 2020

Modified Files:
src/sys/kern: kern_sig.c

Log Message:
sigpost(): check for LSZOMB, not l_refcnt == 0.


To generate a diff of this commit:
cvs rdiff -u -r1.384 -r1.385 src/sys/kern/kern_sig.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 21:25:26 UTC 2020

Modified Files:
src/sys/kern: kern_sig.c

Log Message:
sigpost(): check for LSZOMB, not l_refcnt == 0.


To generate a diff of this commit:
cvs rdiff -u -r1.384 -r1.385 src/sys/kern/kern_sig.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/kern_sig.c
diff -u src/sys/kern/kern_sig.c:1.384 src/sys/kern/kern_sig.c:1.385
--- src/sys/kern/kern_sig.c:1.384	Sat Feb  1 02:23:23 2020
+++ src/sys/kern/kern_sig.c	Thu Mar 26 21:25:26 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_sig.c,v 1.384 2020/02/01 02:23:23 riastradh Exp $	*/
+/*	$NetBSD: kern_sig.c,v 1.385 2020/03/26 21:25:26 ad Exp $	*/
 
 /*-
  * Copyright (c) 2006, 2007, 2008, 2019 The NetBSD Foundation, Inc.
@@ -70,7 +70,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: kern_sig.c,v 1.384 2020/02/01 02:23:23 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_sig.c,v 1.385 2020/03/26 21:25:26 ad Exp $");
 
 #include "opt_ptrace.h"
 #include "opt_dtrace.h"
@@ -1117,7 +1117,7 @@ sigpost(struct lwp *l, sig_t action, int
 	 * If the LWP is on the way out, sigclear() will be busy draining all
 	 * pending signals.  Don't give it more.
 	 */
-	if (l->l_refcnt == 0)
+	if (l->l_stat == LSZOMB)
 		return 0;
 
 	SDT_PROBE(proc, kernel, , signal__send, l, p, sig, 0, 0);



CVS commit: src/sys/sys

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 21:15:14 UTC 2020

Modified Files:
src/sys/sys: syncobj.h

Log Message:
SOBJ_SLEEPQ_FIFO is gone


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/sys/syncobj.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/sys/syncobj.h
diff -u src/sys/sys/syncobj.h:1.12 src/sys/sys/syncobj.h:1.13
--- src/sys/sys/syncobj.h:1.12	Mon Mar 23 19:14:06 2020
+++ src/sys/sys/syncobj.h	Thu Mar 26 21:15:14 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: syncobj.h,v 1.12 2020/03/23 19:14:06 ad Exp $	*/
+/*	$NetBSD: syncobj.h,v 1.13 2020/03/26 21:15:14 ad Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008, 2020 The NetBSD Foundation, Inc.
@@ -52,7 +52,6 @@ typedef struct syncobj {
 struct lwp *syncobj_noowner(wchan_t);
 
 #define	SOBJ_SLEEPQ_SORTED	0x01
-#define	SOBJ_SLEEPQ_FIFO	0x02
 #define	SOBJ_SLEEPQ_LIFO	0x04
 #define	SOBJ_SLEEPQ_NULL	0x08
 



CVS commit: src/sys/sys

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 21:15:14 UTC 2020

Modified Files:
src/sys/sys: syncobj.h

Log Message:
SOBJ_SLEEPQ_FIFO is gone


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/sys/syncobj.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 20:19:06 UTC 2020

Modified Files:
src/sys/kern: kern_lwp.c kern_softint.c
src/sys/sys: intr.h userret.h

Log Message:
softint_overlay() (slow case) gains ~nothing but creates potential headaches.
In the interests of simplicity remove it and always use the kthreads.


To generate a diff of this commit:
cvs rdiff -u -r1.229 -r1.230 src/sys/kern/kern_lwp.c
cvs rdiff -u -r1.62 -r1.63 src/sys/kern/kern_softint.c
cvs rdiff -u -r1.19 -r1.20 src/sys/sys/intr.h
cvs rdiff -u -r1.32 -r1.33 src/sys/sys/userret.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/kern_lwp.c
diff -u src/sys/kern/kern_lwp.c:1.229 src/sys/kern/kern_lwp.c:1.230
--- src/sys/kern/kern_lwp.c:1.229	Sun Mar  8 17:04:45 2020
+++ src/sys/kern/kern_lwp.c	Thu Mar 26 20:19:06 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_lwp.c,v 1.229 2020/03/08 17:04:45 ad Exp $	*/
+/*	$NetBSD: kern_lwp.c,v 1.230 2020/03/26 20:19:06 ad Exp $	*/
 
 /*-
  * Copyright (c) 2001, 2006, 2007, 2008, 2009, 2019, 2020
@@ -211,7 +211,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: kern_lwp.c,v 1.229 2020/03/08 17:04:45 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_lwp.c,v 1.230 2020/03/26 20:19:06 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_lockdebug.h"
@@ -1593,12 +1593,6 @@ lwp_userret(struct lwp *l)
 	KASSERT(l->l_stat == LSONPROC);
 	p = l->l_proc;
 
-#ifndef __HAVE_FAST_SOFTINTS
-	/* Run pending soft interrupts. */
-	if (l->l_cpu->ci_data.cpu_softints != 0)
-		softint_overlay();
-#endif
-
 	/*
 	 * It is safe to do this read unlocked on a MP system..
 	 */

Index: src/sys/kern/kern_softint.c
diff -u src/sys/kern/kern_softint.c:1.62 src/sys/kern/kern_softint.c:1.63
--- src/sys/kern/kern_softint.c:1.62	Sun Mar  8 15:05:18 2020
+++ src/sys/kern/kern_softint.c	Thu Mar 26 20:19:06 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_softint.c,v 1.62 2020/03/08 15:05:18 ad Exp $	*/
+/*	$NetBSD: kern_softint.c,v 1.63 2020/03/26 20:19:06 ad Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008, 2019, 2020 The NetBSD Foundation, Inc.
@@ -170,7 +170,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: kern_softint.c,v 1.62 2020/03/08 15:05:18 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_softint.c,v 1.63 2020/03/26 20:19:06 ad Exp $");
 
 #include 
 #include 
@@ -196,7 +196,7 @@ typedef struct softint {
 	uintptr_t		si_machdep;
 	struct evcnt		si_evcnt;
 	struct evcnt		si_evcnt_block;
-	int			si_active;
+	volatile int		si_active;
 	char			si_name[8];
 	char			si_name_block[8+6];
 } softint_t;
@@ -546,11 +546,7 @@ softint_execute(softint_t *si, lwp_t *l,
 {
 	softhand_t *sh;
 
-#ifdef __HAVE_FAST_SOFTINTS
 	KASSERT(si->si_lwp == curlwp);
-#else
-	/* May be running in user context. */
-#endif
 	KASSERT(si->si_cpu == curcpu());
 	KASSERT(si->si_lwp->l_wchan == NULL);
 	KASSERT(si->si_active);
@@ -678,12 +674,22 @@ softint_trigger(uintptr_t machdep)
 	ci = curcpu();
 	ci->ci_data.cpu_softints |= machdep;
 	l = ci->ci_onproc;
+
+	/*
+	 * Arrange for mi_switch() to be called.  If called from interrupt
+	 * mode, we don't know if curlwp is executing in kernel or user, so
+	 * post an AST and have it take a trip through userret().  If not in
+	 * interrupt mode, curlwp is running in kernel and will notice the
+	 * resched soon enough; avoid the AST.
+	 */
 	if (l == ci->ci_data.cpu_idlelwp) {
 		atomic_or_uint(>ci_want_resched,
 		RESCHED_IDLE | RESCHED_UPREEMPT);
 	} else {
-		/* MI equivalent of aston() */
-		cpu_signotify(l);
+		atomic_or_uint(>ci_want_resched, RESCHED_UPREEMPT);
+		if (cpu_intr_p()) {
+			cpu_signotify(l);
+		}
 	}
 }
 
@@ -754,65 +760,6 @@ softint_picklwp(void)
 	return l;
 }
 
-/*
- * softint_overlay:
- *
- *	Slow path: called from lwp_userret() to run a soft interrupt
- *	within the context of a user thread.
- */
-void
-softint_overlay(void)
-{
-	struct cpu_info *ci;
-	u_int softints, oflag;
-	softint_t *si;
-	pri_t obase;
-	lwp_t *l;
-	int s;
-
-	l = curlwp;
-	KASSERT((l->l_pflag & LP_INTR) == 0);
-
-	/*
-	 * Arrange to elevate priority if the LWP blocks.  Also, bind LWP
-	 * to the CPU.  Note: disable kernel preemption before doing that.
-	 */
-	s = splhigh();
-	ci = l->l_cpu;
-	si = ((softcpu_t *)ci->ci_data.cpu_softcpu)->sc_int;
-
-	obase = l->l_kpribase;
-	l->l_kpribase = PRI_KERNEL_RT;
-	oflag = l->l_pflag;
-	l->l_pflag = oflag | LP_INTR | LP_BOUND;
-
-	while ((softints = ci->ci_data.cpu_softints) != 0) {
-		if ((softints & (1 << SOFTINT_SERIAL)) != 0) {
-			ci->ci_data.cpu_softints &= ~(1 << SOFTINT_SERIAL);
-			softint_execute([SOFTINT_SERIAL], l, s);
-			continue;
-		}
-		if ((softints & (1 << SOFTINT_NET)) != 0) {
-			ci->ci_data.cpu_softints &= ~(1 << SOFTINT_NET);
-			softint_execute([SOFTINT_NET], l, s);
-			continue;
-		}
-		if ((softints & (1 << SOFTINT_BIO)) != 0) {
-			ci->ci_data.cpu_softints &= ~(1 << SOFTINT_BIO);
-			softint_execute([SOFTINT_BIO], l, s);
-			continue;
-		}
-		if 

CVS commit: src/sys

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 20:19:06 UTC 2020

Modified Files:
src/sys/kern: kern_lwp.c kern_softint.c
src/sys/sys: intr.h userret.h

Log Message:
softint_overlay() (slow case) gains ~nothing but creates potential headaches.
In the interests of simplicity remove it and always use the kthreads.


To generate a diff of this commit:
cvs rdiff -u -r1.229 -r1.230 src/sys/kern/kern_lwp.c
cvs rdiff -u -r1.62 -r1.63 src/sys/kern/kern_softint.c
cvs rdiff -u -r1.19 -r1.20 src/sys/sys/intr.h
cvs rdiff -u -r1.32 -r1.33 src/sys/sys/userret.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/sys

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 19:47:23 UTC 2020

Modified Files:
src/sys/sys: param.h

Log Message:
NetBSD 9.99.52 - sleepq_t & kcondvar_t shrunk


To generate a diff of this commit:
cvs rdiff -u -r1.654 -r1.655 src/sys/sys/param.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/sys

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 19:47:23 UTC 2020

Modified Files:
src/sys/sys: param.h

Log Message:
NetBSD 9.99.52 - sleepq_t & kcondvar_t shrunk


To generate a diff of this commit:
cvs rdiff -u -r1.654 -r1.655 src/sys/sys/param.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/sys/param.h
diff -u src/sys/sys/param.h:1.654 src/sys/sys/param.h:1.655
--- src/sys/sys/param.h:1.654	Sun Mar 22 14:43:05 2020
+++ src/sys/sys/param.h	Thu Mar 26 19:47:23 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: param.h,v 1.654 2020/03/22 14:43:05 ad Exp $	*/
+/*	$NetBSD: param.h,v 1.655 2020/03/26 19:47:23 ad Exp $	*/
 
 /*-
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -67,7 +67,7 @@
  *	2.99.9		(299000900)
  */
 
-#define	__NetBSD_Version__	999005100	/* NetBSD 9.99.51 */
+#define	__NetBSD_Version__	999005200	/* NetBSD 9.99.52 */
 
 #define __NetBSD_Prereq__(M,m,p) (M) * 1) + \
 (m) * 100) + (p) * 100) <= __NetBSD_Version__)



CVS commit: src/sys

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 19:46:42 UTC 2020

Modified Files:
src/sys/kern: kern_condvar.c kern_sleepq.c kern_turnstile.c
sys_select.c
src/sys/sys: condvar.h lwp.h sleepq.h

Log Message:
Change sleepq_t from a TAILQ to a LIST and remove SOBJ_SLEEPQ_FIFO.  Only
select/poll used the FIFO method and that was for collisions which rarely
occur.  Shrinks sleep_t and condvar_t.


To generate a diff of this commit:
cvs rdiff -u -r1.43 -r1.44 src/sys/kern/kern_condvar.c
cvs rdiff -u -r1.62 -r1.63 src/sys/kern/kern_sleepq.c
cvs rdiff -u -r1.36 -r1.37 src/sys/kern/kern_turnstile.c
cvs rdiff -u -r1.52 -r1.53 src/sys/kern/sys_select.c
cvs rdiff -u -r1.14 -r1.15 src/sys/sys/condvar.h
cvs rdiff -u -r1.202 -r1.203 src/sys/sys/lwp.h
cvs rdiff -u -r1.27 -r1.28 src/sys/sys/sleepq.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 19:46:42 UTC 2020

Modified Files:
src/sys/kern: kern_condvar.c kern_sleepq.c kern_turnstile.c
sys_select.c
src/sys/sys: condvar.h lwp.h sleepq.h

Log Message:
Change sleepq_t from a TAILQ to a LIST and remove SOBJ_SLEEPQ_FIFO.  Only
select/poll used the FIFO method and that was for collisions which rarely
occur.  Shrinks sleep_t and condvar_t.


To generate a diff of this commit:
cvs rdiff -u -r1.43 -r1.44 src/sys/kern/kern_condvar.c
cvs rdiff -u -r1.62 -r1.63 src/sys/kern/kern_sleepq.c
cvs rdiff -u -r1.36 -r1.37 src/sys/kern/kern_turnstile.c
cvs rdiff -u -r1.52 -r1.53 src/sys/kern/sys_select.c
cvs rdiff -u -r1.14 -r1.15 src/sys/sys/condvar.h
cvs rdiff -u -r1.202 -r1.203 src/sys/sys/lwp.h
cvs rdiff -u -r1.27 -r1.28 src/sys/sys/sleepq.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/kern_condvar.c
diff -u src/sys/kern/kern_condvar.c:1.43 src/sys/kern/kern_condvar.c:1.44
--- src/sys/kern/kern_condvar.c:1.43	Sat Feb 15 17:09:24 2020
+++ src/sys/kern/kern_condvar.c	Thu Mar 26 19:46:42 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_condvar.c,v 1.43 2020/02/15 17:09:24 ad Exp $	*/
+/*	$NetBSD: kern_condvar.c,v 1.44 2020/03/26 19:46:42 ad Exp $	*/
 
 /*-
  * Copyright (c) 2006, 2007, 2008, 2019, 2020 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: kern_condvar.c,v 1.43 2020/02/15 17:09:24 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_condvar.c,v 1.44 2020/03/26 19:46:42 ad Exp $");
 
 #include 
 #include 
@@ -48,20 +48,19 @@ __KERNEL_RCSID(0, "$NetBSD: kern_condvar
 /*
  * Accessors for the private contents of the kcondvar_t data type.
  *
- *	cv_opaque[0]	sleepq...
- *	cv_opaque[1]	...pointers
- *	cv_opaque[2]	description for ps(1)
+ *	cv_opaque[0]	sleepq_t
+ *	cv_opaque[1]	description for ps(1)
  *
- * cv_opaque[0..1] is protected by the interlock passed to cv_wait() (enqueue
+ * cv_opaque[0] is protected by the interlock passed to cv_wait() (enqueue
  * only), and the sleep queue lock acquired with sleepq_hashlock() (enqueue
  * and dequeue).
  *
- * cv_opaque[2] (the wmesg) is static and does not change throughout the life
+ * cv_opaque[1] (the wmesg) is static and does not change throughout the life
  * of the CV.
  */
 #define	CV_SLEEPQ(cv)		((sleepq_t *)(cv)->cv_opaque)
-#define	CV_WMESG(cv)		((const char *)(cv)->cv_opaque[2])
-#define	CV_SET_WMESG(cv, v) 	(cv)->cv_opaque[2] = __UNCONST(v)
+#define	CV_WMESG(cv)		((const char *)(cv)->cv_opaque[1])
+#define	CV_SET_WMESG(cv, v) 	(cv)->cv_opaque[1] = __UNCONST(v)
 
 #define	CV_DEBUG_P(cv)	(CV_WMESG(cv) != nodebug)
 #define	CV_RA		((uintptr_t)__builtin_return_address(0))
@@ -486,7 +485,7 @@ cv_signal(kcondvar_t *cv)
 	/* LOCKDEBUG_WAKEUP(CV_DEBUG_P(cv), cv, CV_RA); */
 	KASSERT(cv_is_valid(cv));
 
-	if (__predict_false(!TAILQ_EMPTY(CV_SLEEPQ(cv
+	if (__predict_false(!LIST_EMPTY(CV_SLEEPQ(cv
 		cv_wakeup_one(cv);
 }
 
@@ -508,7 +507,7 @@ cv_wakeup_one(kcondvar_t *cv)
 
 	mp = sleepq_hashlock(cv);
 	sq = CV_SLEEPQ(cv);
-	l = TAILQ_FIRST(sq);
+	l = LIST_FIRST(sq);
 	if (__predict_false(l == NULL)) {
 		mutex_spin_exit(mp);
 		return;
@@ -536,7 +535,7 @@ cv_broadcast(kcondvar_t *cv)
 	/* LOCKDEBUG_WAKEUP(CV_DEBUG_P(cv), cv, CV_RA); */
 	KASSERT(cv_is_valid(cv));
 
-	if (__predict_false(!TAILQ_EMPTY(CV_SLEEPQ(cv  
+	if (__predict_false(!LIST_EMPTY(CV_SLEEPQ(cv  
 		cv_wakeup_all(cv);
 }
 
@@ -558,11 +557,11 @@ cv_wakeup_all(kcondvar_t *cv)
 
 	mp = sleepq_hashlock(cv);
 	sq = CV_SLEEPQ(cv);
-	for (l = TAILQ_FIRST(sq); l != NULL; l = next) {
+	for (l = LIST_FIRST(sq); l != NULL; l = next) {
 		KASSERT(l->l_sleepq == sq);
 		KASSERT(l->l_mutex == mp);
 		KASSERT(l->l_wchan == cv);
-		next = TAILQ_NEXT(l, l_sleepchain);
+		next = LIST_NEXT(l, l_sleepchain);
 		CV_LOCKDEBUG_PROCESS(l, cv);
 		sleepq_remove(sq, l);
 	}
@@ -581,7 +580,7 @@ bool
 cv_has_waiters(kcondvar_t *cv)
 {
 
-	return !TAILQ_EMPTY(CV_SLEEPQ(cv));
+	return !LIST_EMPTY(CV_SLEEPQ(cv));
 }
 
 /*

Index: src/sys/kern/kern_sleepq.c
diff -u src/sys/kern/kern_sleepq.c:1.62 src/sys/kern/kern_sleepq.c:1.63
--- src/sys/kern/kern_sleepq.c:1.62	Tue Mar 24 21:05:06 2020
+++ src/sys/kern/kern_sleepq.c	Thu Mar 26 19:46:42 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_sleepq.c,v 1.62 2020/03/24 21:05:06 ad Exp $	*/
+/*	$NetBSD: kern_sleepq.c,v 1.63 2020/03/26 19:46:42 ad Exp $	*/
 
 /*-
  * Copyright (c) 2006, 2007, 2008, 2009, 2019, 2020 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: kern_sleepq.c,v 1.62 2020/03/24 21:05:06 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_sleepq.c,v 1.63 2020/03/26 19:46:42 ad Exp $");
 
 #include 
 #include 
@@ -98,7 +98,7 @@ void
 sleepq_init(sleepq_t *sq)
 {
 
-	TAILQ_INIT(sq);
+	LIST_INIT(sq);
 }
 
 /*
@@ -116,7 +116,7 @@ sleepq_remove(sleepq_t *sq, lwp_t *l)
 
 	if ((l->l_syncobj->sobj_flag & 

CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 19:42:39 UTC 2020

Modified Files:
src/sys/kern: kern_idle.c kern_synch.c

Log Message:
Leave the idle LWPs in state LSIDL even when running, so they don't mess up
output from ps/top/etc.  Correctness isn't at stake, LWPs in other states
are temporarily on the CPU at times too (e.g.  LSZOMB, LSSLEEP).


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/kern/kern_idle.c
cvs rdiff -u -r1.344 -r1.345 src/sys/kern/kern_synch.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 19:42:39 UTC 2020

Modified Files:
src/sys/kern: kern_idle.c kern_synch.c

Log Message:
Leave the idle LWPs in state LSIDL even when running, so they don't mess up
output from ps/top/etc.  Correctness isn't at stake, LWPs in other states
are temporarily on the CPU at times too (e.g.  LSZOMB, LSSLEEP).


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/kern/kern_idle.c
cvs rdiff -u -r1.344 -r1.345 src/sys/kern/kern_synch.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/kern_idle.c
diff -u src/sys/kern/kern_idle.c:1.32 src/sys/kern/kern_idle.c:1.33
--- src/sys/kern/kern_idle.c:1.32	Sat Feb 15 18:12:15 2020
+++ src/sys/kern/kern_idle.c	Thu Mar 26 19:42:39 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_idle.c,v 1.32 2020/02/15 18:12:15 ad Exp $	*/
+/*	$NetBSD: kern_idle.c,v 1.33 2020/03/26 19:42:39 ad Exp $	*/
 
 /*-
  * Copyright (c)2002, 2006, 2007 YAMAMOTO Takashi,
@@ -28,7 +28,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: kern_idle.c,v 1.32 2020/02/15 18:12:15 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_idle.c,v 1.33 2020/03/26 19:42:39 ad Exp $");
 
 #include 
 #include 
@@ -56,8 +56,8 @@ idle_loop(void *dummy)
 	/* Update start time for this thread. */
 	binuptime(>l_stime);
 	spc->spc_flags |= SPCF_RUNNING;
-	KASSERT(l->l_stat == LSONPROC);
 	KASSERT((l->l_pflag & LP_RUNNING) != 0);
+	l->l_stat = LSIDL;
 	lwp_unlock(l);
 
 	/*
@@ -91,11 +91,10 @@ idle_loop(void *dummy)
 		}
 		KASSERT(l->l_mutex == l->l_cpu->ci_schedstate.spc_lwplock);
 		lwp_lock(l);
-		l->l_stat = LSIDL;
 		spc_lock(l->l_cpu);
 		mi_switch(l);
 		KASSERT(curlwp == l);
-		KASSERT(l->l_stat == LSONPROC);
+		KASSERT(l->l_stat == LSIDL);
 	}
 }
 
@@ -119,7 +118,7 @@ create_idle_lwp(struct cpu_info *ci)
 		 * mi_switch().  Make the picture look good in case the CPU
 		 * takes an interrupt before it calls idle_loop().
 		 */
-		l->l_stat = LSONPROC;
+		l->l_stat = LSIDL;
 		l->l_pflag |= LP_RUNNING;
 		ci->ci_onproc = l;
 	}

Index: src/sys/kern/kern_synch.c
diff -u src/sys/kern/kern_synch.c:1.344 src/sys/kern/kern_synch.c:1.345
--- src/sys/kern/kern_synch.c:1.344	Sat Mar 14 20:23:51 2020
+++ src/sys/kern/kern_synch.c	Thu Mar 26 19:42:39 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_synch.c,v 1.344 2020/03/14 20:23:51 ad Exp $	*/
+/*	$NetBSD: kern_synch.c,v 1.345 2020/03/26 19:42:39 ad Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2004, 2006, 2007, 2008, 2009, 2019, 2020
@@ -69,7 +69,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: kern_synch.c,v 1.344 2020/03/14 20:23:51 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_synch.c,v 1.345 2020/03/26 19:42:39 ad Exp $");
 
 #include "opt_kstack.h"
 #include "opt_dtrace.h"
@@ -387,11 +387,7 @@ kpreempt(uintptr_t where)
 			atomic_swap_uint(>l_dopreempt, 0);
 			return true;
 		}
-		if (__predict_false((l->l_flag & LW_IDLE) != 0)) {
-			/* Can't preempt idle loop, don't count as failure. */
-			atomic_swap_uint(>l_dopreempt, 0);
-			return true;
-		}
+		KASSERT((l->l_flag & LW_IDLE) == 0);
 		if (__predict_false(l->l_nopreempt != 0)) {
 			/* LWP holds preemption disabled, explicitly. */
 			if ((dop & DOPREEMPT_COUNTED) == 0) {
@@ -547,12 +543,10 @@ nextlwp(struct cpu_info *ci, struct sche
 		lwp_setlock(newl, spc->spc_lwplock);
 	} else {
 		/*
-		 * Updates to newl here are unlocked, but newl is the idle
-		 * LWP and thus sheltered from outside interference, so no
-		 * harm is going to come of it.
+		 * The idle LWP does not get set to LSONPROC, because
+		 * otherwise it screws up the output from top(1) etc.
 		 */
 		newl = ci->ci_data.cpu_idlelwp;
-		newl->l_stat = LSONPROC;
 		newl->l_pflag |= LP_RUNNING;
 		spc->spc_curpriority = PRI_IDLE;
 		spc->spc_flags = (spc->spc_flags & ~SPCF_SWITCHCLEAR) |
@@ -840,7 +834,7 @@ mi_switch(lwp_t *l)
 	}
 
 	KASSERT(l == curlwp);
-	KASSERT(l->l_stat == LSONPROC);
+	KASSERT(l->l_stat == LSONPROC || (l->l_flag & LW_IDLE) != 0); 
 
 	SYSCALL_TIME_WAKEUP(l);
 	LOCKDEBUG_BARRIER(NULL, 1);



CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 19:25:07 UTC 2020

Modified Files:
src/sys/kern: kern_runq.c

Log Message:
sched_curcpu_runnable_p(): cosmetic change.


To generate a diff of this commit:
cvs rdiff -u -r1.63 -r1.64 src/sys/kern/kern_runq.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/kern_runq.c
diff -u src/sys/kern/kern_runq.c:1.63 src/sys/kern/kern_runq.c:1.64
--- src/sys/kern/kern_runq.c:1.63	Sun Mar  8 15:00:31 2020
+++ src/sys/kern/kern_runq.c	Thu Mar 26 19:25:07 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_runq.c,v 1.63 2020/03/08 15:00:31 ad Exp $	*/
+/*	$NetBSD: kern_runq.c,v 1.64 2020/03/26 19:25:07 ad Exp $	*/
 
 /*-
  * Copyright (c) 2019, 2020 The NetBSD Foundation, Inc.
@@ -56,7 +56,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: kern_runq.c,v 1.63 2020/03/08 15:00:31 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_runq.c,v 1.64 2020/03/26 19:25:07 ad Exp $");
 
 #include "opt_dtrace.h"
 
@@ -1086,15 +1086,10 @@ sched_curcpu_runnable_p(void)
 	kpreempt_disable();
 	ci = curcpu();
 	spc = >ci_schedstate;
-
+	rv = (spc->spc_count != 0);
 #ifndef __HAVE_FAST_SOFTINTS
-	if (ci->ci_data.cpu_softints) {
-		kpreempt_enable();
-		return true;
-	}
+	rv |= (ci->ci_data.cpu_softints != 0);
 #endif
-
-	rv = (spc->spc_count != 0) ? true : false;
 	kpreempt_enable();
 
 	return rv;



CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 19:25:07 UTC 2020

Modified Files:
src/sys/kern: kern_runq.c

Log Message:
sched_curcpu_runnable_p(): cosmetic change.


To generate a diff of this commit:
cvs rdiff -u -r1.63 -r1.64 src/sys/kern/kern_runq.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 19:23:19 UTC 2020

Modified Files:
src/sys/kern: subr_cpu.c

Log Message:
Don't overwrite ci_is_slow if it has explicitly been set.  Changed for
correctness, should have no impact.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/kern/subr_cpu.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/subr_cpu.c
diff -u src/sys/kern/subr_cpu.c:1.13 src/sys/kern/subr_cpu.c:1.14
--- src/sys/kern/subr_cpu.c:1.13	Sat Feb 15 07:20:40 2020
+++ src/sys/kern/subr_cpu.c	Thu Mar 26 19:23:18 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_cpu.c,v 1.13 2020/02/15 07:20:40 skrll Exp $	*/
+/*	$NetBSD: subr_cpu.c,v 1.14 2020/03/26 19:23:18 ad Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008, 2009, 2010, 2012, 2019, 2020
@@ -61,7 +61,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: subr_cpu.c,v 1.13 2020/02/15 07:20:40 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_cpu.c,v 1.14 2020/03/26 19:23:18 ad Exp $");
 
 #include 
 #include 
@@ -151,7 +151,6 @@ cpu_topology_set(struct cpu_info *ci, u_
 	ci->ci_core_id = core_id;
 	ci->ci_smt_id = smt_id;
 	ci->ci_numa_id = numa_id;
-	ci->ci_is_slow = false;
 	for (rel = 0; rel < __arraycount(ci->ci_sibling); rel++) {
 		ci->ci_sibling[rel] = ci;
 		ci->ci_nsibling[rel] = 1;
@@ -246,8 +245,9 @@ cpu_topology_fake1(struct cpu_info *ci)
 	ci->ci_schedstate.spc_flags |=
 	(SPCF_CORE1ST | SPCF_PACKAGE1ST | SPCF_1STCLASS);
 	ci->ci_package1st = ci;
-	ci->ci_is_slow = false;
-	cpu_topology_haveslow = false;
+	if (!cpu_topology_haveslow) {
+		ci->ci_is_slow = false;
+	}
 }
 
 /*



CVS commit: src/sys/kern

2020-03-26 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Mar 26 19:23:19 UTC 2020

Modified Files:
src/sys/kern: subr_cpu.c

Log Message:
Don't overwrite ci_is_slow if it has explicitly been set.  Changed for
correctness, should have no impact.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/kern/subr_cpu.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



Re: CVS commit: src/external/gpl3

2020-03-26 Thread Robert Elz
Date:Thu, 26 Mar 2020 18:07:54 +0100
From:Kamil Rytarowski 
Message-ID:  <723e979c-cb16-1a39-a51e-9d756f372...@gmx.com>

  | But nonetheless, I'm trying to fix it un GCC without TMPDIR.

Not without, just without requiring.   Something like tempnam(3)
works - if TMPDIR is set, use it, if not, use /tmp.

kre



CVS commit: src/sys/arch/xen/xen

2020-03-26 Thread Jaromir Dolecek
Module Name:src
Committed By:   jdolecek
Date:   Thu Mar 26 18:50:17 UTC 2020

Modified Files:
src/sys/arch/xen/xen: if_xennet_xenbus.c

Log Message:
in xennet_tx_complete() replace the grant status condition with just KASSERT()

it's really a possible programming error rather than something actually
happening in wild - since rev. 1.57 in 2012 this condition leaked
locked mutex, and nobody noticed


To generate a diff of this commit:
cvs rdiff -u -r1.95 -r1.96 src/sys/arch/xen/xen/if_xennet_xenbus.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/xen/xen/if_xennet_xenbus.c
diff -u src/sys/arch/xen/xen/if_xennet_xenbus.c:1.95 src/sys/arch/xen/xen/if_xennet_xenbus.c:1.96
--- src/sys/arch/xen/xen/if_xennet_xenbus.c:1.95	Thu Mar 26 18:32:21 2020
+++ src/sys/arch/xen/xen/if_xennet_xenbus.c	Thu Mar 26 18:50:16 2020
@@ -1,4 +1,4 @@
-/*  $NetBSD: if_xennet_xenbus.c,v 1.95 2020/03/26 18:32:21 jdolecek Exp $  */
+/*  $NetBSD: if_xennet_xenbus.c,v 1.96 2020/03/26 18:50:16 jdolecek Exp $  */
 
 /*
  * Copyright (c) 2006 Manuel Bouyer.
@@ -81,7 +81,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: if_xennet_xenbus.c,v 1.95 2020/03/26 18:32:21 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_xennet_xenbus.c,v 1.96 2020/03/26 18:50:16 jdolecek Exp $");
 
 #include "opt_xen.h"
 #include "opt_nfs_boot.h"
@@ -951,12 +951,7 @@ again:
 		req = >sc_txreqs[RING_GET_RESPONSE(>sc_tx_ring, i)->id];
 		KASSERT(req->txreq_id ==
 		RING_GET_RESPONSE(>sc_tx_ring, i)->id);
-		if (__predict_false(xengnt_status(req->txreq_gntref))) {
-			aprint_verbose_dev(sc->sc_dev,
-			"grant still used by backend\n");
-			sc->sc_tx_ring.rsp_cons = i;
-			return;
-		}
+		KASSERT(xengnt_status(req->txreq_gntref) == 0);
 		if (__predict_false(
 		RING_GET_RESPONSE(>sc_tx_ring, i)->status !=
 		NETIF_RSP_OKAY))



CVS commit: src/sys/arch/xen/xen

2020-03-26 Thread Jaromir Dolecek
Module Name:src
Committed By:   jdolecek
Date:   Thu Mar 26 18:50:17 UTC 2020

Modified Files:
src/sys/arch/xen/xen: if_xennet_xenbus.c

Log Message:
in xennet_tx_complete() replace the grant status condition with just KASSERT()

it's really a possible programming error rather than something actually
happening in wild - since rev. 1.57 in 2012 this condition leaked
locked mutex, and nobody noticed


To generate a diff of this commit:
cvs rdiff -u -r1.95 -r1.96 src/sys/arch/xen/xen/if_xennet_xenbus.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/arch/xen/xen

2020-03-26 Thread Jaromir Dolecek
Module Name:src
Committed By:   jdolecek
Date:   Thu Mar 26 18:32:21 UTC 2020

Modified Files:
src/sys/arch/xen/xen: if_xennet_xenbus.c

Log Message:
Stop using IFF_OACTIVE, just keep processing until we fill the Tx ring

xennet_tx_complete() is now called only in xennet_softstart() just
before processing Tx queue; xennet_handler() just schedules the
softint for xennet_softstart() iff the Tx ring list is completely empty

no performance changes observed

XXX the detach and suspend code expects xennet_handler() to collect
XXX the Tx responses, the tsleep() loop should still work since the tsleep()
XXX would allow the softint to trigger; untested though


To generate a diff of this commit:
cvs rdiff -u -r1.94 -r1.95 src/sys/arch/xen/xen/if_xennet_xenbus.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/arch/xen/xen

2020-03-26 Thread Jaromir Dolecek
Module Name:src
Committed By:   jdolecek
Date:   Thu Mar 26 18:32:21 UTC 2020

Modified Files:
src/sys/arch/xen/xen: if_xennet_xenbus.c

Log Message:
Stop using IFF_OACTIVE, just keep processing until we fill the Tx ring

xennet_tx_complete() is now called only in xennet_softstart() just
before processing Tx queue; xennet_handler() just schedules the
softint for xennet_softstart() iff the Tx ring list is completely empty

no performance changes observed

XXX the detach and suspend code expects xennet_handler() to collect
XXX the Tx responses, the tsleep() loop should still work since the tsleep()
XXX would allow the softint to trigger; untested though


To generate a diff of this commit:
cvs rdiff -u -r1.94 -r1.95 src/sys/arch/xen/xen/if_xennet_xenbus.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/xen/xen/if_xennet_xenbus.c
diff -u src/sys/arch/xen/xen/if_xennet_xenbus.c:1.94 src/sys/arch/xen/xen/if_xennet_xenbus.c:1.95
--- src/sys/arch/xen/xen/if_xennet_xenbus.c:1.94	Sun Mar 22 11:20:59 2020
+++ src/sys/arch/xen/xen/if_xennet_xenbus.c	Thu Mar 26 18:32:21 2020
@@ -1,4 +1,4 @@
-/*  $NetBSD: if_xennet_xenbus.c,v 1.94 2020/03/22 11:20:59 jdolecek Exp $  */
+/*  $NetBSD: if_xennet_xenbus.c,v 1.95 2020/03/26 18:32:21 jdolecek Exp $  */
 
 /*
  * Copyright (c) 2006 Manuel Bouyer.
@@ -64,11 +64,8 @@
  * xennet_start() (default output routine of xennet) that schedules a softint,
  * xennet_softstart(). xennet_softstart() generates the requests associated
  * to the TX mbufs queued (see altq(9)).
- * The backend's responses are processed by xennet_tx_complete(), called either
- * from:
- * - xennet_start()
- * - xennet_handler(), during an asynchronous event notification from backend
- *   (similar to an IRQ).
+ * The backend's responses are processed by xennet_tx_complete(), called
+ * from xennet_softstart()
  *
  * for RX:
  * Purpose is to process the packets received from the outside. RX buffers
@@ -84,7 +81,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: if_xennet_xenbus.c,v 1.94 2020/03/22 11:20:59 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_xennet_xenbus.c,v 1.95 2020/03/26 18:32:21 jdolecek Exp $");
 
 #include "opt_xen.h"
 #include "opt_nfs_boot.h"
@@ -934,7 +931,7 @@ xennet_rx_free_req(struct xennet_rxreq *
 /*
  * Process responses associated to the TX mbufs sent previously through
  * xennet_softstart()
- * Called at splnet.
+ * Called at splsoftnet.
  */
 static void
 xennet_tx_complete(struct xennet_xenbus_softc *sc)
@@ -958,7 +955,7 @@ again:
 			aprint_verbose_dev(sc->sc_dev,
 			"grant still used by backend\n");
 			sc->sc_tx_ring.rsp_cons = i;
-			goto end;
+			return;
 		}
 		if (__predict_false(
 		RING_GET_RESPONSE(>sc_tx_ring, i)->status !=
@@ -980,11 +977,6 @@ again:
 	xen_wmb();
 	if (resp_prod != sc->sc_tx_ring.sring->rsp_prod)
 		goto again;
-end:
-	if (ifp->if_flags & IFF_OACTIVE) {
-		ifp->if_flags &= ~IFF_OACTIVE;
-		softint_schedule(sc->sc_softintr);
-	}
 }
 
 /*
@@ -1011,7 +1003,11 @@ xennet_handler(void *arg)
 	if (sc->sc_backend_status != BEST_CONNECTED)
 		return 1;
 
-	xennet_tx_complete(sc);
+	/* Poke Tx queue if we run out of Tx buffers earlier */
+	mutex_enter(>sc_tx_lock);
+	if (SLIST_EMPTY(>sc_txreq_head))
+		softint_schedule(sc->sc_softintr);
+	mutex_exit(>sc_tx_lock);
 
 	rnd_add_uint32(>sc_rnd_source, sc->sc_tx_ring.req_prod_pvt);
 
@@ -1162,12 +1158,6 @@ xennet_start(struct ifnet *ifp)
 
 	rnd_add_uint32(>sc_rnd_source, sc->sc_tx_ring.req_prod_pvt);
 
-	xennet_tx_complete(sc);
-
-	if (__predict_false(
-	(ifp->if_flags & (IFF_RUNNING | IFF_OACTIVE)) != IFF_RUNNING))
-		return;
-
 	/*
 	 * The Xen communication channel is much more efficient if we can
 	 * schedule batch of packets for domain0. To achieve this, we
@@ -1196,12 +1186,12 @@ xennet_softstart(void *arg)
 	int notify;
 	int do_notify = 0;
 
-	mutex_enter(>sc_tx_lock);
-	if (__predict_false(
-	(ifp->if_flags & (IFF_RUNNING | IFF_OACTIVE)) != IFF_RUNNING)) {
-		mutex_exit(>sc_tx_lock);
+	if ((ifp->if_flags & IFF_RUNNING) == 0)
 		return;
-	}
+
+	xennet_tx_complete(sc);
+
+	mutex_enter(>sc_tx_lock);
 
 	req_prod = sc->sc_tx_ring.req_prod_pvt;
 	while (/*CONSTCOND*/1) {
@@ -1209,7 +1199,6 @@ xennet_softstart(void *arg)
 
 		req = SLIST_FIRST(>sc_txreq_head);
 		if (__predict_false(req == NULL)) {
-			ifp->if_flags |= IFF_OACTIVE;
 			break;
 		}
 		IFQ_POLL(>if_snd, m);
@@ -1280,7 +1269,6 @@ xennet_softstart(void *arg)
 			xpmap_ptom_masked(pa),
 			GNTMAP_readonly, >txreq_gntref) != 0)) {
 m_freem(new_m);
-ifp->if_flags |= IFF_OACTIVE;
 break;
 			}
 			/* we will be able to send new_m */
@@ -1292,7 +1280,6 @@ xennet_softstart(void *arg)
 			sc->sc_xbusd->xbusd_otherend_id,
 			xpmap_ptom_masked(pa),
 			GNTMAP_readonly, >txreq_gntref) != 0)) {
-ifp->if_flags |= IFF_OACTIVE;
 break;
 			}
 			/* we will be able 

CVS commit: src/share/misc

2020-03-26 Thread Leonardo Taccari
Module Name:src
Committed By:   leot
Date:   Thu Mar 26 18:28:09 UTC 2020

Modified Files:
src/share/misc: acronyms.comp

Log Message:
Add HPD

>From Rocky Hotas, thanks!


To generate a diff of this commit:
cvs rdiff -u -r1.299 -r1.300 src/share/misc/acronyms.comp

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/share/misc

2020-03-26 Thread Leonardo Taccari
Module Name:src
Committed By:   leot
Date:   Thu Mar 26 18:28:09 UTC 2020

Modified Files:
src/share/misc: acronyms.comp

Log Message:
Add HPD

>From Rocky Hotas, thanks!


To generate a diff of this commit:
cvs rdiff -u -r1.299 -r1.300 src/share/misc/acronyms.comp

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/share/misc/acronyms.comp
diff -u src/share/misc/acronyms.comp:1.299 src/share/misc/acronyms.comp:1.300
--- src/share/misc/acronyms.comp:1.299	Wed Feb 26 23:38:08 2020
+++ src/share/misc/acronyms.comp	Thu Mar 26 18:28:09 2020
@@ -1,4 +1,4 @@
-$NetBSD: acronyms.comp,v 1.299 2020/02/26 23:38:08 sevan Exp $
+$NetBSD: acronyms.comp,v 1.300 2020/03/26 18:28:09 leot Exp $
 3WHS	three-way handshake
 8VSB	8-state vestigial side band modulation
 AA	anti-aliasing
@@ -668,6 +668,7 @@ HMI	human-machine interface
 HOOD	hierarchical object oriented design
 HP	Hewlett-Packard
 HPC	high performance computing
+HPD	hot plug detection
 HPET	high precision event timer
 HSM	hardware security module
 HSM	hierarchical storage management 



CVS commit: src/share/misc

2020-03-26 Thread Leonardo Taccari
Module Name:src
Committed By:   leot
Date:   Thu Mar 26 18:25:32 UTC 2020

Modified Files:
src/share/misc: acronyms

Log Message:
Add TLDW

>From Rocky Hotas, thanks!


To generate a diff of this commit:
cvs rdiff -u -r1.297 -r1.298 src/share/misc/acronyms

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/share/misc/acronyms
diff -u src/share/misc/acronyms:1.297 src/share/misc/acronyms:1.298
--- src/share/misc/acronyms:1.297	Mon Feb 17 17:16:51 2020
+++ src/share/misc/acronyms	Thu Mar 26 18:25:32 2020
@@ -1,4 +1,4 @@
-$NetBSD: acronyms,v 1.297 2020/02/17 17:16:51 fcambus Exp $
+$NetBSD: acronyms,v 1.298 2020/03/26 18:25:32 leot Exp $
 10Q	thank you
 10X	thanks
 1337	elite ("leet")
@@ -548,6 +548,7 @@ TLA	three letter acronym
 TLA	true love always
 TLC	tender loving care
 TLDR	too long, didn't read
+TLDW	too long, didn't watch
 TM	trademark
 TM	trust me
 TMA	too many abbreviations



CVS commit: src/share/misc

2020-03-26 Thread Leonardo Taccari
Module Name:src
Committed By:   leot
Date:   Thu Mar 26 18:25:32 UTC 2020

Modified Files:
src/share/misc: acronyms

Log Message:
Add TLDW

>From Rocky Hotas, thanks!


To generate a diff of this commit:
cvs rdiff -u -r1.297 -r1.298 src/share/misc/acronyms

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



Re: CVS commit: src

2020-03-26 Thread Maxime Villard
Le 26/03/2020 à 15:32, Jonathan A. Kollasch a écrit :
> On Tue, Aug 14, 2018 at 02:49:14PM +, Maxime Villard wrote:
>> Module Name: src
>> Committed By:maxv
>> Date:Tue Aug 14 14:49:14 UTC 2018
>> Log Message:
>> Retire EtherIP, we have L2TP instead.
> 
> Why was this not discussed?

It was discussed.

https://mail-index.netbsd.org/tech-net/2018/08/07/msg006998.html

A bit of a blurted-out email using the bad word "sh*tty", which was
ill-placed, but other than that I was not technically incorrect.

> L2TP does not implement EtherIP
> functionality, and is therefore NOT a replacement.

Not sure what you mean? We have L2TPv3, and it does come as a
replacement of EtherIP.

Maxime


Re: CVS commit: src/external/gpl3

2020-03-26 Thread Kamil Rytarowski
On 26.03.2020 17:49, Robert Elz wrote:
> Date:Thu, 26 Mar 2020 16:28:18 +0100
> From:Kamil Rytarowski 
> Message-ID:  <84460ebb-b4bf-f3ee-e51b-e27d0b6e2...@gmx.com>
>
>
>   | That is negligible cost of getting TMPDIR propagated to most programs.
>
> Sure, it isn't much, for one program, but when you're running tens of
> thousands, it all adds up.
>

It's still negligible for hundreds of millions calls.

Modern CPUs like Ryzen Threadripper 3990X can execute that extra amount
of instructions (around 600) in a single clock cycle.

If we want to optimize exec(), there would be better places to do so.

But nonetheless, I'm trying to fix it un GCC without TMPDIR.


Re: CVS commit: src/external/gpl3

2020-03-26 Thread Robert Elz
Date:Thu, 26 Mar 2020 16:28:18 +0100
From:Kamil Rytarowski 
Message-ID:  <84460ebb-b4bf-f3ee-e51b-e27d0b6e2...@gmx.com>


  | That is negligible cost of getting TMPDIR propagated to most programs.

Sure, it isn't much, for one program, but when you're running tens of
thousands, it all adds up.

And, for most users, there should be no point - only those who need to
alter the default need to set it.

There has to be some fallback for programs run like

env -i prog

for TMPDIR (and everything else, like PATH, ...) if those defaults
are suitable for most users, then less leeds to be added to the environment.

kre



Re: CVS commit: src/external/gpl3

2020-03-26 Thread Kamil Rytarowski
On 26.03.2020 17:03, Kamil Rytarowski wrote:
> On 26.03.2020 16:17, Greg Troxel wrote:
>> I don't think we can go from "upstream is unwilling to do X"
>> to "impose pain on NetBSD" by making "divergence bad" be the
>> highest-weighted concern.   We have to say "what is the minimally
>> painful way to cope".
>
> I agree here that we want to get /tmp by default, but in real life we
> lost these local modifications anyway. None of the pkgsrc packages ships
> with this and upstream GCC knows better.. so I keep trying to find a
> creative way to get it done right.
>
> Patching every libiberty copy is almost not doable (we don't patch any
> user of it in pkgsrc).
>
> If I will fail to convince GCC to add a way to tune this tmpdir, we will
> live with these libiberty patches in src.
>
> If GCC will be unconvinced, I don't plan to remove this local modification.
>
> On 26.03.2020 16:56, Taylor R Campbell wrote:
>> We don't need to set TMPDIR=/tmp anywhere because that's already what
>> correct programs use by default (for example, via _PATH_TMP).
>
> Good idea. I will try to reuse _PATH_TMP and submit upstream.
>

OK, I have got another idea how to address it. Thank you for the feedback.


Re: CVS commit: src/external/gpl3

2020-03-26 Thread Kamil Rytarowski
On 26.03.2020 16:17, Greg Troxel wrote:
> I don't think we can go from "upstream is unwilling to do X"
> to "impose pain on NetBSD" by making "divergence bad" be the
> highest-weighted concern.   We have to say "what is the minimally
> painful way to cope".

I agree here that we want to get /tmp by default, but in real life we
lost these local modifications anyway. None of the pkgsrc packages ships
with this and upstream GCC knows better.. so I keep trying to find a
creative way to get it done right.

Patching every libiberty copy is almost not doable (we don't patch any
user of it in pkgsrc).

If I will fail to convince GCC to add a way to tune this tmpdir, we will
live with these libiberty patches in src.

If GCC will be unconvinced, I don't plan to remove this local modification.

On 26.03.2020 16:56, Taylor R Campbell wrote:
> We don't need to set TMPDIR=/tmp anywhere because that's already what
> correct programs use by default (for example, via _PATH_TMP).

Good idea. I will try to reuse _PATH_TMP and submit upstream.



signature.asc
Description: OpenPGP digital signature


Re: CVS commit: src/external/gpl3

2020-03-26 Thread Taylor R Campbell
> Date: Thu, 26 Mar 2020 14:57:40 +0100
> From: Kamil Rytarowski 
> 
> Maybe we could specify TMPDIR somewhere in /etc and point to /tmp?
> 
> The build of tools could be fixed independently.

It is wrong for gcc to abuse /var/tmp for files that aren't
meaningfully persistent, just like it would be wrong to abuse /usr/bin
for configuration files that the operator is expected to edit.  If
upstream inexplicably insisted on abusing /usr/bin for a configuration
file because it was once on a larger partition than /etc, we would
patch gcc to fix that bug too.

If gcc doesn't respect TMPDIR, that's a separate bug that should be
fixed as well.

We don't need to set TMPDIR=/tmp anywhere because that's already what
correct programs use by default (for example, via _PATH_TMP).


Re: CVS commit: src/external/gpl3

2020-03-26 Thread Kamil Rytarowski
On 26.03.2020 16:02, Robert Elz wrote:
> EVery extra env var has a cost in every exec of absolutely everything.

As this is true.. but as I have benchmarked it.

For true(1) on amd64, we execute 0.05% more instructions for extra
TMPDIR environment variable.

$ ./singlestepper true
Total count: 1286742
$ TMPDIR=/tmp ./singlestepper true
Total count: 1287399

That is negligible cost of getting TMPDIR propagated to most programs.



signature.asc
Description: OpenPGP digital signature


Re: CVS commit: src/external/gpl3

2020-03-26 Thread Greg Troxel

Generally speaking divergence with upstream is a problem and we lost
these changes anyway in pkgsrc and every standalone GNU toolchain copy.


Agreed that divergence is a problem, but so is having bugs.  It's a 
question of the right balance in each case.



Finding a creative way to make this at least tunable is challenging with
the GCC people.


I think this is the real issue.   As I understand it, upstream is making 
a choice that is inconsistent with longstanding norms and against the 
consensus of an OS community.   So if the best that can happen is that 
we have to patch, that's how it is.  It would be really nice if there 
were a --default-tmpdir= configure argument, but it sounds like they are 
unwilling to do that.


Basically, I don't think we can go from "upstream is unwilling to do X" 
to "impose pain on NetBSD" by making "divergence bad" be the 
highest-weighted concern.   We have to say "what is the minimally 
painful way to cope".


Re: CVS commit: src/external/gpl3

2020-03-26 Thread Kamil Rytarowski
On 26.03.2020 15:52, Greg Troxel wrote:
> What is the real problem here?  I think it's great that NetBSD-specific
> fixes are being upstreamed, and that we are reducing gratuitous changes
> from upstream.  But upstream's position that the default tmp should be
> /var/tmp is at odds with our and traditional norms, and really seems to
> just not make sense.  (Perhaps it does make sense on typical Linux, and
> perhaps upstream should have OS-specific tmp defaults.)   Adding
> complexity to NetBSD config files and users for the sake of reducing a
> diff seems like a bad tradeoff.

Generally speaking divergence with upstream is a problem and we lost
these changes anyway in pkgsrc and every standalone GNU toolchain copy.

Finding a creative way to make this at least tunable is challenging with
the GCC people.



signature.asc
Description: OpenPGP digital signature


Re: CVS commit: src/external/gpl3

2020-03-26 Thread Greg Troxel
Greg Troxel  writes:

> It seem really obvious to me, and obvious that it is netbsd consensus,
> that a tool that needs tmp (without needing persistence) should default
> to /tmp.  So I think it's unreasonable to follow upstream here, and
> unreasonable to ask everybody to either inherit some system profile or
> adjust their own to make tmp files be put in /tmp.
>
> Certainly if something in the tools build doesn't honor TMPDIR, that's a
> bug to be fixed -- but that seems uncontroversial.
>
>
> People who really want gcc tmp files to be put in /var/tmp can set
> TMPDIR.  As I understand it people that actually want that are a
> minority, and we haven't had a single person express that they want it
> during this discussion.
>
> What is the real problem here?  I think it's great that NetBSD-specific
> fixes are being upstreamed, and that we are reducing gratuitous changes
> from upstream.  But upstream's position that the default tmp should be
> /var/tmp is at odds with our and traditional norms, and really seems to
> just not make sense.  (Perhaps it does make sense on typical Linux, and
> perhaps upstream should have OS-specific tmp defaults.)   Adding
> complexity to NetBSD config files and users for the sake of reducing a
> diff seems like a bad tradeoff.

If you were only talking about fixing tools build, and have withdrawn
the notion of removing our patch to fix the default, I apologize for
writing this way.   My note is based on a perception that you are still
pushing to remove our patch to fix the tmp behavior.


Re: CVS commit: src/external/gpl3

2020-03-26 Thread Robert Elz
Date:Thu, 26 Mar 2020 15:11:46 +0100
From:Kamil Rytarowski 
Message-ID:  <26eaf84f-616a-d48b-9a2f-7dd74cd69...@gmx.com>


  | Right. Addressing tools build independently (honoring TMPDIR?)

This we should do.

  | defining TMPDIR in /etc shell profile for common use inside the
  | distribution.

but this we should not.   The default (when TMPDIR is not specified)
should be what we would put there as the default - env vars to override
defaults should only be used by users who want something different, not
as the standard way of doing things.

EVery extra env var has a cost in every exec of absolutely everything.

kre



Re: CVS commit: src/external/gpl3

2020-03-26 Thread Greg Troxel
Kamil Rytarowski  writes:

> On 26.03.2020 15:01, Martin Husemann wrote:
>> On Thu, Mar 26, 2020 at 02:57:40PM +0100, Kamil Rytarowski wrote:
>>> The build of tools could be fixed independently.
>> The problem is that we build the whole system with the tools gcc, and that
>> gcc misbehaves (or so I understood).
>> 
>> So pointing TMPDIR anywhere does not help.
>> 
>
> Right. Addressing tools build independently (honoring TMPDIR?) and
> defining TMPDIR in /etc shell profile for common use inside the
> distribution.

It seem really obvious to me, and obvious that it is netbsd consensus,
that a tool that needs tmp (without needing persistence) should default
to /tmp.  So I think it's unreasonable to follow upstream here, and
unreasonable to ask everybody to either inherit some system profile or
adjust their own to make tmp files be put in /tmp.

Certainly if something in the tools build doesn't honor TMPDIR, that's a
bug to be fixed -- but that seems uncontroversial.


People who really want gcc tmp files to be put in /var/tmp can set
TMPDIR.  As I understand it people that actually want that are a
minority, and we haven't had a single person express that they want it
during this discussion.

What is the real problem here?  I think it's great that NetBSD-specific
fixes are being upstreamed, and that we are reducing gratuitous changes
from upstream.  But upstream's position that the default tmp should be
/var/tmp is at odds with our and traditional norms, and really seems to
just not make sense.  (Perhaps it does make sense on typical Linux, and
perhaps upstream should have OS-specific tmp defaults.)   Adding
complexity to NetBSD config files and users for the sake of reducing a
diff seems like a bad tradeoff.



Re: CVS commit: src

2020-03-26 Thread Jonathan A. Kollasch
On Tue, Aug 14, 2018 at 02:49:14PM +, Maxime Villard wrote:
> Module Name:  src
> Committed By: maxv
> Date: Tue Aug 14 14:49:14 UTC 2018
> Log Message:
> Retire EtherIP, we have L2TP instead.

Why was this not discussed?  L2TP does not implement EtherIP
functionality, and is therefore NOT a replacement.

Jonathan


Re: CVS commit: src/external/gpl3

2020-03-26 Thread Kamil Rytarowski
On 26.03.2020 15:01, Martin Husemann wrote:
> On Thu, Mar 26, 2020 at 02:57:40PM +0100, Kamil Rytarowski wrote:
>> The build of tools could be fixed independently.
> The problem is that we build the whole system with the tools gcc, and that
> gcc misbehaves (or so I understood).
> 
> So pointing TMPDIR anywhere does not help.
> 

Right. Addressing tools build independently (honoring TMPDIR?) and
defining TMPDIR in /etc shell profile for common use inside the
distribution.

> Martin
> 




signature.asc
Description: OpenPGP digital signature


Re: CVS commit: src/external/gpl3

2020-03-26 Thread Martin Husemann
On Thu, Mar 26, 2020 at 02:57:40PM +0100, Kamil Rytarowski wrote:
> The build of tools could be fixed independently.
The problem is that we build the whole system with the tools gcc, and that
gcc misbehaves (or so I understood).

So pointing TMPDIR anywhere does not help.

Martin


Re: CVS commit: src/external/gpl3

2020-03-26 Thread Kamil Rytarowski
On 26.03.2020 09:48, Martin Husemann wrote:
> On Thu, Mar 26, 2020 at 12:51:24AM +, Taylor R Campbell wrote:
>> We should keep the change.  There is no semantic justification for
>> putting build-time temporary files in the directory for temporary
>> files that are meant to persist across reboot.  These temporary files
>> _cannot_ be used if interrupted -- let alone by a reboot.
> 
> The original bug is somewhere else though: it seems (for reasons not well
> understood) that the NetBSD tools build of gcc (contrary to the installed
> one and all native build gcc) does *NOT* honour $TMPDIR in env. (Somthing
> broken in the ifdef maze in libberty?)
> 
> We should fix that. My local build scripts (and the build cluster) properly
> sets TMPDIR, so if that worked, the default would not matter.
> 

Maybe we could specify TMPDIR somewhere in /etc and point to /tmp?

The build of tools could be fixed independently.

> Martin
> 




signature.asc
Description: OpenPGP digital signature


CVS commit: src/tests/dev/audio

2020-03-26 Thread Tetsuya Isaki
Module Name:src
Committed By:   isaki
Date:   Thu Mar 26 13:43:10 UTC 2020

Modified Files:
src/tests/dev/audio: audiotest.c

Log Message:
Add tests for poll(POLLIN) before read().
This affects only standalone test, not atf.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/tests/dev/audio/audiotest.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/dev/audio/audiotest.c
diff -u src/tests/dev/audio/audiotest.c:1.9 src/tests/dev/audio/audiotest.c:1.10
--- src/tests/dev/audio/audiotest.c:1.9	Thu Mar 26 13:37:44 2020
+++ src/tests/dev/audio/audiotest.c	Thu Mar 26 13:43:10 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: audiotest.c,v 1.9 2020/03/26 13:37:44 isaki Exp $	*/
+/*	$NetBSD: audiotest.c,v 1.10 2020/03/26 13:43:10 isaki Exp $	*/
 
 /*
  * Copyright (C) 2019 Tetsuya Isaki. All rights reserved.
@@ -26,7 +26,7 @@
  */
 
 #include 
-__RCSID("$NetBSD: audiotest.c,v 1.9 2020/03/26 13:37:44 isaki Exp $");
+__RCSID("$NetBSD: audiotest.c,v 1.10 2020/03/26 13:43:10 isaki Exp $");
 
 #include 
 #include 
@@ -1383,6 +1383,7 @@ void test_rdwr_fallback(int, bool, bool)
 void test_rdwr_two(int, int);
 void test_mmap_mode(int, int);
 void test_poll_mode(int, int, int);
+void test_poll_in_open(const char *);
 void test_kqueue_mode(int, int, int);
 volatile int sigio_caught;
 void signal_FIOASYNC(int);
@@ -3372,6 +3373,81 @@ DEF(poll_out_simul)
 }
 
 /*
+ * Open with READ mode starts recording immediately.
+ * Of course, audioctl doesn't start.
+ */
+void
+test_poll_in_open(const char *devname)
+{
+	struct audio_info ai;
+	struct pollfd pfd;
+	char buf[4096];
+	char devfile[16];
+	int fd;
+	int r;
+	bool is_audioctl;
+
+	TEST("poll_in_open_%s", devname);
+	if (hw_canrec() == 0) {
+		XP_SKIP("This test is only for recordable device");
+		return;
+	}
+
+	snprintf(devfile, sizeof(devfile), "/dev/%s%d", devname, unit);
+	is_audioctl = (strcmp(devname, "audioctl") == 0);
+
+	fd = OPEN(devfile, O_RDONLY);
+	REQUIRED_SYS_OK(fd);
+
+	r = IOCTL(fd, AUDIO_GETBUFINFO, , "");
+	REQUIRED_SYS_EQ(0, r);
+	if (is_audioctl) {
+		/* opening /dev/audioctl doesn't start recording. */
+		XP_EQ(0, ai.record.active);
+	} else {
+		/* opening /dev/{audio,sound} starts recording. */
+		/*
+		 * On NetBSD7/8, opening /dev/sound doesn't start recording.
+		 * It must be a bug.
+		 */
+		XP_EQ(1, ai.record.active);
+	}
+
+	memset(, 0, sizeof(pfd));
+	pfd.fd = fd;
+	pfd.events = POLLIN;
+	r = POLL(, 1, 1000);
+	if (is_audioctl) {
+		/*
+		 * poll-ing /dev/audioctl always fails.
+		 * XXX Returning error instead of timeout should be better(?).
+		 */
+		REQUIRED_SYS_EQ(0, r);
+	} else {
+		/*
+		 * poll-ing /dev/{audio,sound} will succeed when recorded
+		 * data is arrived.
+		 */
+		/*
+		 * On NetBSD7/8, opening /dev/sound doesn't start recording.
+		 * It must be a bug.
+		 */
+		REQUIRED_SYS_EQ(1, r);
+
+		/* In this case, read() should succeed. */
+		r = READ(fd, buf, sizeof(buf));
+		XP_SYS_OK(r);
+		XP_NE(0, r);
+	}
+
+	r = CLOSE(fd);
+	XP_SYS_EQ(0, r);
+}
+DEF(poll_in_open_audio)		{ test_poll_in_open("audio"); }
+DEF(poll_in_open_sound)		{ test_poll_in_open("sound"); }
+DEF(poll_in_open_audioctl)	{ test_poll_in_open("audioctl"); }
+
+/*
  * poll(2) must not be affected by other recording descriptors even if
  * playback descriptor waits with POLLIN (though it's not normal usage).
  * In other words, two POLLIN must not interfere.
@@ -6216,6 +6292,9 @@ struct testentry testtable[] = {
 	ENT(poll_out_hiwat),
 /**/	ENT(poll_out_unpause),		// XXX does not seem to work on rump
 /**/	ENT(poll_out_simul),		// XXX does not seem to work on rump
+	ENT(poll_in_open_audio),
+	ENT(poll_in_open_sound),
+	ENT(poll_in_open_audioctl),
 	ENT(poll_in_simul),
 	ENT(kqueue_mode_RDONLY_READ),
 	ENT(kqueue_mode_RDONLY_WRITE),



CVS commit: src/tests/dev/audio

2020-03-26 Thread Tetsuya Isaki
Module Name:src
Committed By:   isaki
Date:   Thu Mar 26 13:43:10 UTC 2020

Modified Files:
src/tests/dev/audio: audiotest.c

Log Message:
Add tests for poll(POLLIN) before read().
This affects only standalone test, not atf.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/tests/dev/audio/audiotest.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/compat/common

2020-03-26 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Thu Mar 26 13:39:29 UTC 2020

Modified Files:
src/sys/compat/common: compat_sysctl_09_43.c

Log Message:
When using SYSCTL_SETUP there is no guarantee of the order in which
the set-up functions will be called, so it is perfectly acceptable
for a compat code's routine to be called ahead of the code in other
parts of the kernel.

So make sure that the 2nd level sysctl node ``vfs.generic'' exists
before trying to add the 3rd level entries.

XXX Rather than creating the 2nd level node in two places, we could
XXX add the shared ``vfs.generic'' node to sysctl_init_base.c but
XXX this is left for another day.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/compat/common/compat_sysctl_09_43.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/compat/common

2020-03-26 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Thu Mar 26 13:39:29 UTC 2020

Modified Files:
src/sys/compat/common: compat_sysctl_09_43.c

Log Message:
When using SYSCTL_SETUP there is no guarantee of the order in which
the set-up functions will be called, so it is perfectly acceptable
for a compat code's routine to be called ahead of the code in other
parts of the kernel.

So make sure that the 2nd level sysctl node ``vfs.generic'' exists
before trying to add the 3rd level entries.

XXX Rather than creating the 2nd level node in two places, we could
XXX add the shared ``vfs.generic'' node to sysctl_init_base.c but
XXX this is left for another day.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/compat/common/compat_sysctl_09_43.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/compat/common/compat_sysctl_09_43.c
diff -u src/sys/compat/common/compat_sysctl_09_43.c:1.5 src/sys/compat/common/compat_sysctl_09_43.c:1.6
--- src/sys/compat/common/compat_sysctl_09_43.c:1.5	Thu Feb 27 17:42:33 2020
+++ src/sys/compat/common/compat_sysctl_09_43.c	Thu Mar 26 13:39:29 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: compat_sysctl_09_43.c,v 1.5 2020/02/27 17:42:33 pgoyette Exp $	*/
+/*	$NetBSD: compat_sysctl_09_43.c,v 1.6 2020/03/26 13:39:29 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993
@@ -37,7 +37,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: compat_sysctl_09_43.c,v 1.5 2020/02/27 17:42:33 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: compat_sysctl_09_43.c,v 1.6 2020/03/26 13:39:29 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -106,6 +106,17 @@ SYSCTL_SETUP(compat_sysctl_vfs, "Top-lev
 	int error;
 
 	error = sysctl_createv(clog, 0, NULL, NULL,
+			CTLFLAG_PERMANENT, 
+			CTLTYPE_NODE, "generic",
+			SYSCTL_DESCR("Non-specific vfs related information"),
+			NULL, 0, NULL, 0,
+			CTL_VFS, VFS_GENERIC, CTL_EOL);
+	if (error == EEXIST)
+		error = 0;
+	if (error != 0)
+		return;
+
+	error = sysctl_createv(clog, 0, NULL, NULL,
 		   CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE,
 		   CTLTYPE_INT, "maxtypenum",
 		   SYSCTL_DESCR("Highest valid filesystem type number"),



CVS commit: src/tests/dev/audio

2020-03-26 Thread Tetsuya Isaki
Module Name:src
Committed By:   isaki
Date:   Thu Mar 26 13:37:44 UTC 2020

Modified Files:
src/tests/dev/audio: audiotest.c

Log Message:
Sync with sys/dev/audio/audio.c rev1.65.
> Fix to start recording immediately when open() with READ mode is called.
This affects only standalone test, not atf.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/tests/dev/audio/audiotest.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/tests/dev/audio

2020-03-26 Thread Tetsuya Isaki
Module Name:src
Committed By:   isaki
Date:   Thu Mar 26 13:37:44 UTC 2020

Modified Files:
src/tests/dev/audio: audiotest.c

Log Message:
Sync with sys/dev/audio/audio.c rev1.65.
> Fix to start recording immediately when open() with READ mode is called.
This affects only standalone test, not atf.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/tests/dev/audio/audiotest.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/dev/audio/audiotest.c
diff -u src/tests/dev/audio/audiotest.c:1.8 src/tests/dev/audio/audiotest.c:1.9
--- src/tests/dev/audio/audiotest.c:1.8	Wed Mar 25 13:07:04 2020
+++ src/tests/dev/audio/audiotest.c	Thu Mar 26 13:37:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: audiotest.c,v 1.8 2020/03/25 13:07:04 isaki Exp $	*/
+/*	$NetBSD: audiotest.c,v 1.9 2020/03/26 13:37:44 isaki Exp $	*/
 
 /*
  * Copyright (C) 2019 Tetsuya Isaki. All rights reserved.
@@ -26,7 +26,7 @@
  */
 
 #include 
-__RCSID("$NetBSD: audiotest.c,v 1.8 2020/03/25 13:07:04 isaki Exp $");
+__RCSID("$NetBSD: audiotest.c,v 1.9 2020/03/26 13:37:44 isaki Exp $");
 
 #include 
 #include 
@@ -1557,14 +1557,14 @@ test_open(const char *devname, int mode)
 	XP_EQ(0, ai.record.waiting);
 		/* balance */
 	XP_EQ(exp_ropen, ai.record.open);
-	/*
-	 * NetBSD7,8 (may?) be active when opened in recording mode but
-	 * recording has not started yet. (?)
-	 * NetBSD9 is not active at that time.
-	 */
-	if (netbsd < 9) {
-	} else {
+	if (netbsd < 9 && strcmp(devname, "sound") == 0) {
+		/*
+		 * On NetBSD7/8, it doesn't seem to start recording on open
+		 * for /dev/sound.  It should be a bug.
+		 */
 		XP_EQ(0, ai.record.active);
+	} else {
+		XP_EQ(exp_ropen, ai.record.active);
 	}
 	/* Save it */
 	ai0 = ai;
@@ -1645,9 +1645,14 @@ test_open(const char *devname, int mode)
 	XP_EQ(0, ai.record.waiting);
 		/* balance */
 	XP_EQ(exp_ropen, ai.record.open);
-	if (netbsd < 9) {
-	} else {
+	if (netbsd < 9 && strcmp(devname, "sound") == 0) {
+		/*
+		 * On NetBSD7/8, it doesn't seem to start recording on open
+		 * for /dev/sound.  It should be a bug.
+		 */
 		XP_EQ(0, ai.record.active);
+	} else {
+		XP_EQ(exp_ropen, ai.record.active);
 	}
 
 	r = CLOSE(fd);
@@ -2921,6 +2926,9 @@ test_poll_mode(int mode, int events, int
 	fd = OPEN(devaudio, mode);
 	REQUIRED_SYS_OK(fd);
 
+	/* Wait a bit to be recorded. */
+	usleep(100 * 1000);
+
 	memset(, 0, sizeof(pfd));
 	pfd.fd = fd;
 	pfd.events = events;
@@ -2948,15 +2956,23 @@ test_poll_mode(int mode, int events, int
 	r = CLOSE(fd);
 	XP_SYS_EQ(0, r);
 }
-DEF(poll_mode_RDONLY_IN)	{ test_poll_mode(O_RDONLY, IN, 0); }
+DEF(poll_mode_RDONLY_IN)	{ test_poll_mode(O_RDONLY, IN, IN); }
 DEF(poll_mode_RDONLY_OUT)	{ test_poll_mode(O_RDONLY, OUT,0); }
-DEF(poll_mode_RDONLY_INOUT)	{ test_poll_mode(O_RDONLY, IN|OUT, 0); }
+DEF(poll_mode_RDONLY_INOUT)	{ test_poll_mode(O_RDONLY, IN|OUT, IN); }
 DEF(poll_mode_WRONLY_IN)	{ test_poll_mode(O_WRONLY, IN, 0); }
 DEF(poll_mode_WRONLY_OUT)	{ test_poll_mode(O_WRONLY, OUT,	   OUT); }
 DEF(poll_mode_WRONLY_INOUT)	{ test_poll_mode(O_WRONLY, IN|OUT, OUT); }
-DEF(poll_mode_RDWR_IN)		{ test_poll_mode(O_RDWR,   IN, 0); }
+DEF(poll_mode_RDWR_IN)		{
+	/* On half-duplex, O_RDWR is the same as O_WRONLY. */
+	if (hw_fulldup()) test_poll_mode(O_RDWR,   IN, IN);
+	else		  test_poll_mode(O_RDWR,   IN, 0);
+}
 DEF(poll_mode_RDWR_OUT)		{ test_poll_mode(O_RDWR,   OUT,	   OUT); }
-DEF(poll_mode_RDWR_INOUT)	{ test_poll_mode(O_RDWR,   IN|OUT, OUT); }
+DEF(poll_mode_RDWR_INOUT)	{
+	/* On half-duplex, O_RDWR is the same as O_WRONLY. */
+	if (hw_fulldup()) test_poll_mode(O_RDWR,   IN|OUT, IN|OUT);
+	else		  test_poll_mode(O_RDWR,   IN|OUT,OUT);
+}
 
 /*
  * Poll(OUT) when buffer is empty.



CVS commit: src/sys/dev/audio

2020-03-26 Thread Tetsuya Isaki
Module Name:src
Committed By:   isaki
Date:   Thu Mar 26 13:32:03 UTC 2020

Modified Files:
src/sys/dev/audio: audio.c

Log Message:
Fix to start recording immediately when open() with READ mode is
called (unless pause).
- Opening /dev/audio always initializes pause with false.  Therefore
  it always starts recording.
- Opening /dev/sound inherites pause from the sticky parameter.
  Therefore whether /dev/sound starts recording or not depends on the
  sticky pause parameter.
This fixes two problems:
- Opening /dev/audio didn't start recording after merging isaki-audio2.
- Opening /dev/sound didn't start recording regardless of the sticky
  pause, probably since long time ago (at least netbsd-7).


To generate a diff of this commit:
cvs rdiff -u -r1.64 -r1.65 src/sys/dev/audio/audio.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/dev/audio

2020-03-26 Thread Tetsuya Isaki
Module Name:src
Committed By:   isaki
Date:   Thu Mar 26 13:32:03 UTC 2020

Modified Files:
src/sys/dev/audio: audio.c

Log Message:
Fix to start recording immediately when open() with READ mode is
called (unless pause).
- Opening /dev/audio always initializes pause with false.  Therefore
  it always starts recording.
- Opening /dev/sound inherites pause from the sticky parameter.
  Therefore whether /dev/sound starts recording or not depends on the
  sticky pause parameter.
This fixes two problems:
- Opening /dev/audio didn't start recording after merging isaki-audio2.
- Opening /dev/sound didn't start recording regardless of the sticky
  pause, probably since long time ago (at least netbsd-7).


To generate a diff of this commit:
cvs rdiff -u -r1.64 -r1.65 src/sys/dev/audio/audio.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/audio/audio.c
diff -u src/sys/dev/audio/audio.c:1.64 src/sys/dev/audio/audio.c:1.65
--- src/sys/dev/audio/audio.c:1.64	Sat Mar  7 06:27:19 2020
+++ src/sys/dev/audio/audio.c	Thu Mar 26 13:32:03 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: audio.c,v 1.64 2020/03/07 06:27:19 isaki Exp $	*/
+/*	$NetBSD: audio.c,v 1.65 2020/03/26 13:32:03 isaki Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -138,7 +138,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.64 2020/03/07 06:27:19 isaki Exp $");
+__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.65 2020/03/26 13:32:03 isaki Exp $");
 
 #ifdef _KERNEL_OPT
 #include "audio.h"
@@ -2229,7 +2229,10 @@ audio_open(dev_t dev, struct audio_softc
 goto bad3;
 		}
 	}
-	/* Call init_input if this is the first recording open. */
+	/*
+	 * Call init_input and start rmixer, if this is the first recording
+	 * open.  See pause consideration notes.
+	 */
 	if (af->rtrack && sc->sc_ropens == 0) {
 		if (sc->hw_if->init_input) {
 			hwbuf = >sc_rmixer->hwbuf;
@@ -2244,6 +2247,10 @@ audio_open(dev_t dev, struct audio_softc
 			if (error)
 goto bad3;
 		}
+
+		mutex_enter(sc->sc_lock);
+		audio_rmixer_start(sc);
+		mutex_exit(sc->sc_lock);
 	}
 
 	if (bellfile == NULL) {
@@ -2462,21 +2469,18 @@ audio_read(struct audio_softc *sc, struc
 
 	TRACET(2, track, "resid=%zd", uio->uio_resid);
 
+#ifdef AUDIO_PM_IDLE
 	error = audio_exlock_mutex_enter(sc);
 	if (error)
 		return error;
 
-#ifdef AUDIO_PM_IDLE
 	if (device_is_active(>sc_dev) || sc->sc_idle)
 		device_active(>sc_dev, DVA_SYSTEM);
-#endif
 
-	/*
-	 * The first read starts rmixer.
-	 */
-	if (sc->sc_rbusy == false)
-		audio_rmixer_start(sc);
+	/* In recording, unlike playback, read() never operates rmixer. */
+
 	audio_exlock_mutex_exit(sc);
+#endif
 
 	usrbuf = >usrbuf;
 	input = track->input;
@@ -6680,10 +6684,22 @@ audio_mixers_get_format(struct audio_sof
 /*
  * Pause consideration:
  *
- * The introduction of these two behavior makes pause/unpause operation
- * simple.
- * 1. The first read/write access of the first track makes mixer start.
- * 2. A pause of the last track doesn't make mixer stop.
+ * Pausing/unpausing never affect [pr]mixer.  This single rule makes
+ * operation simple.  Note that playback and recording are asymmetric.
+ *
+ * For playback,
+ *  1. Any playback open doesn't start pmixer regardless of initial pause
+ * state of this track.
+ *  2. The first write access among playback tracks only starts pmixer
+ * regardless of this track's pause state.
+ *  3. Even a pause of the last playback track doesn't stop pmixer.
+ *  4. The last close of all playback tracks only stops pmixer.
+ *
+ * For recording,
+ *  1. The first recording open only starts rmixer regardless of initial
+ * pause state of this track.
+ *  2. Even a pause of the last track doesn't stop rmixer.
+ *  3. The last close of all recording tracks only stops rmixer.
  */
 
 /*



CVS commit: src/sys/arch/arm/sociox

2020-03-26 Thread Tohru Nishimura
Module Name:src
Committed By:   nisimura
Date:   Thu Mar 26 10:38:16 UTC 2020

Modified Files:
src/sys/arch/arm/sociox: if_scx.c

Log Message:
update register definition. from UEFI source code.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/sociox/if_scx.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/sociox/if_scx.c
diff -u src/sys/arch/arm/sociox/if_scx.c:1.16 src/sys/arch/arm/sociox/if_scx.c:1.17
--- src/sys/arch/arm/sociox/if_scx.c:1.16	Thu Mar 26 08:28:50 2020
+++ src/sys/arch/arm/sociox/if_scx.c	Thu Mar 26 10:38:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_scx.c,v 1.16 2020/03/26 08:28:50 nisimura Exp $	*/
+/*	$NetBSD: if_scx.c,v 1.17 2020/03/26 10:38:16 nisimura Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -40,14 +40,14 @@
  *   to designify ring number from which to arrive or to which go.
  * - memory mapped EEPROM to hold MAC address. The rest of the area is
  *   occupied by a set of ucode for two DMA engines and one packet engine.
- * - The size of frame address filter is unknown. Might be 16 or even 128.
+ * - The size of frame address filter is 16 plus 32.
  * - The first slot is my own station address. Always enabled to perform
  *   to identify oneself.
  * - 1~16 are for supplimental MAC addresses. Independently enabled for
  *   use. Good to catch multicast. Byte-wise selective match available.
  *   Use the mask to catch { 0x01, 0x00, 0x00 } and/or { 0x33, 0x33 }.
- * - 16~128 might be exact match without byte-mask.
- * - The size of multicast hash filter store is unknown. Might be 256 bit.
+ * - 16~32 might be exact match without byte-mask.
+ * - The size of multicast hash filter store is 64 bit.
  * - Socionext/Linaro "NetSec" code makes many cut shorts. Some constants
  *   are left unexplained. The values should be handled via external
  *   controls like FDT descriptions. Fortunately, Intel/Altera CycloneV PDFs
@@ -57,7 +57,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: if_scx.c,v 1.16 2020/03/26 08:28:50 nisimura Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_scx.c,v 1.17 2020/03/26 10:38:16 nisimura Exp $");
 
 #include 
 #include 
@@ -86,6 +86,8 @@ __KERNEL_RCSID(0, "$NetBSD: if_scx.c,v 1
 
 /* SC2A11 register block */
 #define SWRESET		0x104
+#define MACADRH		0x10c
+#define MACADRL		0x110
 #define COMINIT		0x120
 #define INTRST		0x200
 #define  IRQ_RX		(1U<<1)
@@ -115,8 +117,8 @@ __KERNEL_RCSID(0, "$NetBSD: if_scx.c,v 1
 #define H2MENG		0x210		/* DMAC host2media ucode port */
 #define M2HENG		0x21c		/* DMAC media2host ucode port */
 #define PKTENG		0x0d0		/* packet engine ucode port */
-#define HWVER0		0x22c
-#define HWVER1		0x230
+#define MCVER		0x22c		/* micro controller version */
+#define HWVER		0x230		/* hardware version */
 
 #define MACSTAT		0x1024		/* gmac status */
 #define MACDATA		0x11c0		/* gmac rd/wr data */
@@ -154,8 +156,8 @@ __KERNEL_RCSID(0, "$NetBSD: if_scx.c,v 1
 #define  AFR_UHTE	(1U<<1)		/* use additional MAC addresses */
 #define  AFR_PM		(1U<<0)		/* run promisc mode */
 #define  _AFR		0x8001	/* XXX TBD */
-#define GMACMHTH	0x0008		/* XXX multicast hash table 63:32 */
-#define GMACMHTL	0x000c		/* XXX multicast hash table 31:0 */
+#define GMACMHTH	0x0008		/* multicast hash table 63:32 */
+#define GMACMHTL	0x000c		/* multicast hash table 31:0 */
 #define GMACGAR		0x0010		/* MDIO operation */
 #define  GAR_PHY	(11)		/* mii phy 15:11 */
 #define  GAR_REG	(6)		/* mii reg 10:6 */
@@ -180,13 +182,13 @@ __KERNEL_RCSID(0, "$NetBSD: if_scx.c,v 1
 	 *	2 125Mhz (1000Mbps)
 	 *  1   full duplex detected */
 
-#define GMACMHT0	0x0500		/* multicast hash table 0 - 7 */
+#define GMACMHT0	0x0500		/* XXX multicast hash table 0 - 7 */
 #define GMACMHT(i)	((i)*4+0x500)
 #define GMACVHT		0x0588		/* VLAN tag hash */
-#define GMACAMAH(i)	((i)*8+0x800)	/* supplimental MAC addr 16-127 */
+#define GMACAMAH(i)	((i)*8+0x800)	/* supplimental MAC addr 16-31 */
 #define GMACAMAL(i)	((i)*8+0x804)
+#define GMACEVCTL	0x0100		/* event counter control */
 #define GMACEVCNT(i)	((i)*4+0x114)	/* event counter 0x114~284 */
-#define GMACEVCTL	0x0100		/* clear event counter registers */
 
 #define GMACBMR		0x1000		/* DMA bus mode control
 	 * 244PBL
@@ -613,7 +615,7 @@ scx_attach_i(struct scx_softc *sc)
 	uint32_t csr;
 	int i, nseg, error = 0;
 
-	hwver = CSR_READ(sc, HWVER1);	/* Socionext HW */
+	hwver = CSR_READ(sc, HWVER);	/* Socionext HW */
 	/* stored in big endian order */
 	csr = bus_space_read_4(sc->sc_st, sc->sc_eesh, 0);
 	enaddr[0] = csr >> 24;
@@ -953,7 +955,7 @@ scx_set_rcvfilt(struct scx_softc *sc)
 	struct ifnet * const ifp = >ec_if;
 	struct ether_multistep step;
 	struct ether_multi *enm;
-	uint32_t mchash[8]; 	/* 8x 32 = 256 bit */
+	uint32_t mchash[2]; 	/* 2x 32 = 64 bit */
 	uint32_t csr, crc;
 	int i;
 
@@ -972,9 +974,8 @@ scx_set_rcvfilt(struct scx_softc *sc)
 	/* clear 15 entry 

CVS commit: src/sys/arch/arm/sociox

2020-03-26 Thread Tohru Nishimura
Module Name:src
Committed By:   nisimura
Date:   Thu Mar 26 10:38:16 UTC 2020

Modified Files:
src/sys/arch/arm/sociox: if_scx.c

Log Message:
update register definition. from UEFI source code.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/sociox/if_scx.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



Re: CVS commit: src/external/gpl3

2020-03-26 Thread Martin Husemann
On Thu, Mar 26, 2020 at 12:51:24AM +, Taylor R Campbell wrote:
> We should keep the change.  There is no semantic justification for
> putting build-time temporary files in the directory for temporary
> files that are meant to persist across reboot.  These temporary files
> _cannot_ be used if interrupted -- let alone by a reboot.

The original bug is somewhere else though: it seems (for reasons not well
understood) that the NetBSD tools build of gcc (contrary to the installed
one and all native build gcc) does *NOT* honour $TMPDIR in env. (Somthing
broken in the ifdef maze in libberty?)

We should fix that. My local build scripts (and the build cluster) properly
sets TMPDIR, so if that worked, the default would not matter.

Martin


CVS commit: src/sys/arch/arm/sociox

2020-03-26 Thread Tohru Nishimura
Module Name:src
Committed By:   nisimura
Date:   Thu Mar 26 08:28:50 UTC 2020

Modified Files:
src/sys/arch/arm/sociox: if_scx.c

Log Message:
correct global reset logic. still remains MII speed trouble.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/sociox/if_scx.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/sociox/if_scx.c
diff -u src/sys/arch/arm/sociox/if_scx.c:1.15 src/sys/arch/arm/sociox/if_scx.c:1.16
--- src/sys/arch/arm/sociox/if_scx.c:1.15	Thu Mar 26 01:05:26 2020
+++ src/sys/arch/arm/sociox/if_scx.c	Thu Mar 26 08:28:50 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_scx.c,v 1.15 2020/03/26 01:05:26 nisimura Exp $	*/
+/*	$NetBSD: if_scx.c,v 1.16 2020/03/26 08:28:50 nisimura Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -57,7 +57,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: if_scx.c,v 1.15 2020/03/26 01:05:26 nisimura Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_scx.c,v 1.16 2020/03/26 08:28:50 nisimura Exp $");
 
 #include 
 #include 
@@ -202,7 +202,7 @@ __KERNEL_RCSID(0, "$NetBSD: if_scx.c,v 1
 	 */
 #define  _BMR		0x00412080	/* XXX TBD */
 #define  _BMR0		0x00020181	/* XXX TBD */
-#define  BMR_RST	(1U<<0)		/* reset op. self clear when done */
+#define  BMR_RST	(1)		/* reset op. self clear when done */
 #define GMACTDS		0x1004		/* write any to resume tdes */
 #define GMACRDS		0x1008		/* write any to resume rdes */
 #define GMACRDLAR	0x100c		/* rdes base address 32bit paddr */
@@ -585,6 +585,8 @@ aprint_normal_dev(self,
 	sc->sc_100mii = (phy_mode && strcmp(phy_mode, "rgmii") != 0);
 	sc->sc_phy_id = (int)acpi_phy;
 	sc->sc_freq = acpi_freq;
+aprint_normal_dev(self,
+"GMACGAR %08x\n", mac_read(sc, GMACGAR));
 
 	scx_attach_i(sc);
 
@@ -631,7 +633,7 @@ scx_attach_i(struct scx_softc *sc)
 
 sc->sc_phy_id = MII_PHY_ANY;
 	sc->sc_mdclk = get_mdioclk(sc->sc_freq); /* 5:2 clk control */
-sc->sc_mdclk = 5; /* XXX */
+sc->sc_mdclk = 0; /* XXX */
 aprint_normal_dev(sc->sc_dev, "using %d for mdclk\n", sc->sc_mdclk);
 sc->sc_mdclk <<= 2;
 
@@ -776,16 +778,18 @@ aprint_normal_dev(sc->sc_dev, "descripto
 static void
 scx_reset(struct scx_softc *sc)
 {
+	int loop = 0, busy;
 
-	mac_write(sc, GMACBMR, BMR_RST); /* may take for a while */
-	(void)spin_waitfor(sc, GMACBMR, BMR_RST);
+	mac_write(sc, GMACBMR, _BMR0); /* may take for a while */
+	do {
+		DELAY(10);
+		busy = mac_read(sc, GMACBMR) & BMR_RST;
+	} while (++loop < 3000 && busy);
+printf("reset done with %d loop\n", loop);
 
 	CSR_WRITE(sc, DESCENG_SRST, 1);
 	CSR_WRITE(sc, DESCENG_INIT, 1);
 	mac_write(sc, GMACBMR, _BMR);
-	mac_write(sc, GMACRDLAR, _RDLAR);
-	mac_write(sc, GMACTDLAR, _TDLAR);
-	mac_write(sc, GMACAFR, _AFR);
 	mac_write(sc, GMACEVCTL, 1);
 }
 
@@ -1444,16 +1448,16 @@ add_rxbuf(struct scx_softc *sc, int i)
 static int
 spin_waitfor(struct scx_softc *sc, int reg, int exist)
 {
-	int val, loop;
+	int busy, loop;
 
-	val = CSR_READ(sc, reg);
-	if ((val & exist) == 0)
+	busy = CSR_READ(sc, reg) & exist;
+	if (busy == 0)
 		return 0;
 	loop = 3000;
 	do {
 		DELAY(10);
-		val = CSR_READ(sc, reg);
-	} while (--loop > 0 && (val & exist));
+		busy = CSR_READ(sc, reg) & exist;
+	} while (--loop > 0 && busy);
 	return (loop > 0) ? 0 : ETIMEDOUT;
 }
 



CVS commit: src/sys/arch/arm/sociox

2020-03-26 Thread Tohru Nishimura
Module Name:src
Committed By:   nisimura
Date:   Thu Mar 26 08:28:50 UTC 2020

Modified Files:
src/sys/arch/arm/sociox: if_scx.c

Log Message:
correct global reset logic. still remains MII speed trouble.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/sociox/if_scx.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/distrib/evbarm/instkernel

2020-03-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Mar 26 08:02:55 UTC 2020

Modified Files:
src/distrib/evbarm/instkernel: Makefile

Log Message:
Only build sshramdisk when building RPI_INSTALLx


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/distrib/evbarm/instkernel/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/evbarm/instkernel/Makefile
diff -u src/distrib/evbarm/instkernel/Makefile:1.4 src/distrib/evbarm/instkernel/Makefile:1.5
--- src/distrib/evbarm/instkernel/Makefile:1.4	Tue Mar 19 22:16:52 2013
+++ src/distrib/evbarm/instkernel/Makefile	Thu Mar 26 08:02:55 2020
@@ -1,6 +1,12 @@
-#	$NetBSD: Makefile,v 1.4 2013/03/19 22:16:52 garbled Exp $
+#	$NetBSD: Makefile,v 1.5 2020/03/26 08:02:55 skrll Exp $
 
-SUBDIR=		ramdisk sshramdisk .WAIT instkernel
+SUBDIR=		ramdisk
+
+.if !empty(ALL_KERNELS:MRPI_INSTALL)
+SUBDIR+=	sshramdisk
+.endif
+
+SUBDIR+=	.WAIT instkernel
 TARGETS+=	release
 
 .include 



CVS commit: src/distrib/evbarm/instkernel

2020-03-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Mar 26 08:02:55 UTC 2020

Modified Files:
src/distrib/evbarm/instkernel: Makefile

Log Message:
Only build sshramdisk when building RPI_INSTALLx


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/distrib/evbarm/instkernel/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/distrib/evbarm/instkernel/sshramdisk

2020-03-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Mar 26 07:44:43 UTC 2020

Modified Files:
src/distrib/evbarm/instkernel/sshramdisk: Makefile

Log Message:
Bump IMAGESIZE


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/distrib/evbarm/instkernel/sshramdisk/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/evbarm/instkernel/sshramdisk/Makefile
diff -u src/distrib/evbarm/instkernel/sshramdisk/Makefile:1.24 src/distrib/evbarm/instkernel/sshramdisk/Makefile:1.25
--- src/distrib/evbarm/instkernel/sshramdisk/Makefile:1.24	Mon Mar 23 11:45:00 2020
+++ src/distrib/evbarm/instkernel/sshramdisk/Makefile	Thu Mar 26 07:44:43 2020
@@ -1,10 +1,10 @@
-#	$NetBSD: Makefile,v 1.24 2020/03/23 11:45:00 martin Exp $
+#	$NetBSD: Makefile,v 1.25 2020/03/26 07:44:43 skrll Exp $
 
 .include 
 .include "${NETBSDSRCDIR}/distrib/common/Makefile.distrib"
 
 IMAGE=		sshramdisk.fs
-IMAGESIZE=	43000k
+IMAGESIZE=	45000k
 MAKEFS_FLAGS+=	-f 15
 
 .if ${MKREPRO_TIMESTAMP:Uno} != "no"



CVS commit: src/distrib/evbarm/instkernel/sshramdisk

2020-03-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Mar 26 07:44:43 UTC 2020

Modified Files:
src/distrib/evbarm/instkernel/sshramdisk: Makefile

Log Message:
Bump IMAGESIZE


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/distrib/evbarm/instkernel/sshramdisk/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/arch/evbarm/conf

2020-03-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Mar 26 07:38:32 UTC 2020

Modified Files:
src/sys/arch/evbarm/conf: RPI_INSTALL

Log Message:
Increase MEMORY_DISK_ROOT_SIZE


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/evbarm/conf/RPI_INSTALL

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/arch/evbarm/conf

2020-03-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Mar 26 07:38:32 UTC 2020

Modified Files:
src/sys/arch/evbarm/conf: RPI_INSTALL

Log Message:
Increase MEMORY_DISK_ROOT_SIZE


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/evbarm/conf/RPI_INSTALL

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/evbarm/conf/RPI_INSTALL
diff -u src/sys/arch/evbarm/conf/RPI_INSTALL:1.13 src/sys/arch/evbarm/conf/RPI_INSTALL:1.14
--- src/sys/arch/evbarm/conf/RPI_INSTALL:1.13	Mon Mar 23 22:29:23 2020
+++ src/sys/arch/evbarm/conf/RPI_INSTALL	Thu Mar 26 07:38:31 2020
@@ -1,4 +1,4 @@
-#	$NetBSD: RPI_INSTALL,v 1.13 2020/03/23 22:29:23 prlw1 Exp $
+#	$NetBSD: RPI_INSTALL,v 1.14 2020/03/26 07:38:31 skrll Exp $
 #
 #	RPI_INSTALL -- RPI kernel with installation-sized
 #	ramdisk
@@ -8,7 +8,7 @@ include "arch/evbarm/conf/RPI"
 include "arch/evbarm/conf/INSTALL"
 
 no options	MEMORY_DISK_ROOT_SIZE
-options 	MEMORY_DISK_ROOT_SIZE=86000
+options 	MEMORY_DISK_ROOT_SIZE=9
 
 makeoptions	RAMDISKNAME=sshramdisk
 no makeoptions	DEBUG