CVS commit: [netbsd-9] src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: martin Date: Mon Jun 21 16:41:02 UTC 2021 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-9]: i915_drv.h Log Message: Pull up following revision(s) (requested by riastradh in ticket #1300): sys/external/bsd/drm2/dist/drm/i915/i915_drv.h: revision 1.33 (patch) i915drmkms: Fix LOCKDEBUG panic and potential deadlock. This path is taken with a spin lock held, and possibly even in interrupt context, where taking vmobjlock is not kosher, but we are guaranteed to have the queue populated and unchanging. XXX pullup-9 To generate a diff of this commit: cvs rdiff -u -r1.29.2.1 -r1.29.2.2 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.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/external/bsd/drm2/dist/drm/i915/i915_drv.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.29.2.1 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.29.2.2 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.29.2.1 Thu Dec 12 21:00:32 2019 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h Mon Jun 21 16:41:02 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_drv.h,v 1.29.2.1 2019/12/12 21:00:32 martin Exp $ */ +/* $NetBSD: i915_drv.h,v 1.29.2.2 2021/06/21 16:41:02 martin Exp $ */ /* i915_drv.h -- Private header for the I915 driver -*- linux-c -*- */ @@ -3021,9 +3021,10 @@ i915_gem_object_get_page(struct drm_i915 * lock to prevent them from disappearing. */ KASSERT(obj->pages != NULL); - mutex_enter(obj->base.filp->vmobjlock); - page = uvm_pagelookup(obj->base.filp, ptoa(n)); - mutex_exit(obj->base.filp->vmobjlock); + TAILQ_FOREACH(page, >pageq, pageq.queue) { + if (n-- == 0) +break; + } } KASSERT(page != NULL); return container_of(page, struct page, p_vmp);
CVS commit: [netbsd-9] src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: martin Date: Sun Nov 29 11:34:04 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-9]: intel_sprite.c Log Message: Pull up following revision(s) (requested by maya in ticket #1136): sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c: revision 1.11 Match linux here and wait without interrupts. >From David H. Gutteridge in PR port-amd64/5 There's a second part to the patch, but "make our code behave the way the upstream code does" is very welcome. Also PR kern/54515 and possibly others. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.9.4.1 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.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/external/bsd/drm2/dist/drm/i915/intel_sprite.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.9 src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.9.4.1 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.9 Mon Aug 27 15:09:35 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c Sun Nov 29 11:34:04 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_sprite.c,v 1.9 2018/08/27 15:09:35 riastradh Exp $ */ +/* $NetBSD: intel_sprite.c,v 1.9.4.1 2020/11/29 11:34:04 martin Exp $ */ /* * Copyright © 2011 Intel Corporation @@ -32,7 +32,7 @@ * support. */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.9 2018/08/27 15:09:35 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.9.4.1 2020/11/29 11:34:04 martin Exp $"); #include #include @@ -124,7 +124,7 @@ void intel_pipe_update_start(struct inte trace_i915_pipe_update_start(crtc); #ifdef __NetBSD__ - DRM_SPIN_TIMED_WAIT_UNTIL(ret, wq, >vbl_lock, timeout, + DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, wq, >vbl_lock, timeout, (scanline = intel_get_crtc_scanline(crtc), scanline < min || scanline > max)); if (ret <= 0)
CVS commit: [netbsd-9] src/sys/external/bsd/drm2/dist/drm/radeon
Module Name:src Committed By: martin Date: Thu Feb 27 18:57:21 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-9]: radeon_irq_kms.c Log Message: Pull up following revision(s) (requested by riastradh in ticket #740): sys/external/bsd/drm2/dist/drm/radeon/radeon_irq_kms.c: revision 1.5 Take a mutex around mode config logic as the comment advises. XXX pullup To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.4.4.1 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_irq_kms.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/external/bsd/drm2/dist/drm/radeon/radeon_irq_kms.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_irq_kms.c:1.4 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_irq_kms.c:1.4.4.1 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_irq_kms.c:1.4 Mon Aug 27 07:03:26 2018 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_irq_kms.c Thu Feb 27 18:57:20 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: radeon_irq_kms.c,v 1.4 2018/08/27 07:03:26 riastradh Exp $ */ +/* $NetBSD: radeon_irq_kms.c,v 1.4.4.1 2020/02/27 18:57:20 martin Exp $ */ /* * Copyright 2008 Advanced Micro Devices, Inc. @@ -28,7 +28,7 @@ * Jerome Glisse */ #include -__KERNEL_RCSID(0, "$NetBSD: radeon_irq_kms.c,v 1.4 2018/08/27 07:03:26 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: radeon_irq_kms.c,v 1.4.4.1 2020/02/27 18:57:20 martin Exp $"); #include #include @@ -107,11 +107,12 @@ static void radeon_dp_work_func(struct w struct drm_mode_config *mode_config = >mode_config; struct drm_connector *connector; - /* this should take a mutex */ + mutex_lock(_config->mutex); if (mode_config->num_connector) { list_for_each_entry(connector, _config->connector_list, head) radeon_connector_hotplug(connector); } + mutex_unlock(_config->mutex); } /** * radeon_driver_irq_preinstall_kms - drm irq preinstall callback
CVS commit: [netbsd-9] src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: martin Date: Fri Jan 31 11:28:38 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-9]: i915_gem_stolen.c i915_reg.h src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-9]: radeon_atombios_dp.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #678): sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c: revision 1.12 sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.c: revision 1.2 sys/external/bsd/drm2/dist/drm/i915/i915_reg.h: revision 1.9 sys/external/bsd/drm2/dist/drm/i915/i915_reg.h: revision 1.12 Use unsigned to avoid undefined behavior in gen7_get_stolen_reserved(). Found by kUBSan. Use unsigned to avoid undefined behavior in g4x_update_wm(). Avoid undefined behavior in g4x_get_stolen_reserved(). The change is the same as newer i915_gem_stolen.c. Don't call memcpy() when the length is 0 (and the source pointer is NULL) in radeon_dp_aux_transfer_atom() to avoid undefined behavior. Found by kUBSan. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.11.4.1 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c cvs rdiff -u -r1.7.2.2 -r1.7.2.3 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h cvs rdiff -u -r1.1 -r1.1.8.1 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.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/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.11 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.11.4.1 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.11 Thu Sep 13 08:25:55 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c Fri Jan 31 11:28:38 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_stolen.c,v 1.11 2018/09/13 08:25:55 mrg Exp $ */ +/* $NetBSD: i915_gem_stolen.c,v 1.11.4.1 2020/01/31 11:28:38 martin Exp $ */ /* * Copyright © 2008-2012 Intel Corporation @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_stolen.c,v 1.11 2018/09/13 08:25:55 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_stolen.c,v 1.11.4.1 2020/01/31 11:28:38 martin Exp $"); #include #include @@ -308,18 +308,13 @@ static void g4x_get_stolen_reserved(stru unsigned long stolen_top = dev_priv->mm.stolen_base + dev_priv->gtt.stolen_size; - *base = (reg_val & G4X_STOLEN_RESERVED_ADDR2_MASK) << 16; + if (!(reg_val & G4X_STOLEN_RESERVED_ADDR2_MASK)) + return; + *base = (reg_val & G4X_STOLEN_RESERVED_ADDR2_MASK) << 16; WARN_ON((reg_val & G4X_STOLEN_RESERVED_ADDR1_MASK) < *base); - /* On these platforms, the register doesn't have a size field, so the - * size is the distance between the base and the top of the stolen - * memory. We also have the genuine case where base is zero and there's - * nothing reserved. */ - if (*base == 0) - *size = 0; - else - *size = stolen_top - *base; + *size = stolen_top - *base; } static void gen6_get_stolen_reserved(struct drm_i915_private *dev_priv, Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h:1.7.2.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h:1.7.2.3 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h:1.7.2.2 Fri Jan 31 11:25:09 2020 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h Fri Jan 31 11:28:38 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_reg.h,v 1.7.2.2 2020/01/31 11:25:09 martin Exp $ */ +/* $NetBSD: i915_reg.h,v 1.7.2.3 2020/01/31 11:28:38 martin Exp $ */ /* Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. * All Rights Reserved. @@ -187,7 +187,7 @@ #define GEN6_STOLEN_RESERVED 0x1082C0 #define GEN6_STOLEN_RESERVED_ADDR_MASK (0xFFFUL << 20) -#define GEN7_STOLEN_RESERVED_ADDR_MASK (0x3FFF << 18) +#define GEN7_STOLEN_RESERVED_ADDR_MASK (0x3FFFUL << 18) #define GEN6_STOLEN_RESERVED_SIZE_MASK (3 << 4) #define GEN6_STOLEN_RESERVED_1M (0 << 4) #define GEN6_STOLEN_RESERVED_512K (1 << 4) @@ -4616,7 +4616,7 @@ enum skl_disp_power_wells { #define DSPFW_SPRITEA_MASK (0x7f<<0) /* g4x */ #define DSPFW_SPRITEA_MASK_VLV (0xff<<0) /* vlv/chv */ #define DSPFW3 (dev_priv->info.display_mmio_offset + 0x7003c) -#define DSPFW_HPLL_SR_EN (1<<31) +#define DSPFW_HPLL_SR_EN (1U<<31) #define PINEVIEW_SELF_REFRESH_EN (1<<30) #define DSPFW_CURSOR_SR_SHIFT 24 #define DSPFW_CURSOR_SR_MASK (0x3f<<24) Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.c:1.1 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.c:1.1.8.1 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.c:1.1 Mon Aug 27 14:38:20 2018 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.c Fri Jan 31 11:28:38
CVS commit: [netbsd-9] src/sys/external/bsd/drm2/dist
Module Name:src Committed By: martin Date: Fri Jan 31 11:25:09 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-9]: i915_reg.h intel_pm.c src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-9]: cikd.h evergreend.h nid.h r600d.h radeon_mode.h radeon_r600.c radeon_reg.h radeon_rv770_smc.c radeon_si_smc.c radeon_uvd_v1_0.c radeon_uvd_v2_2.c radeon_uvd_v4_2.c rv730d.h rv770d.h sid.h sumod.h src/sys/external/bsd/drm2/dist/include/drm [netbsd-9]: drm_fixed.h Log Message: Pull up following revision(s) (requested by msaitoh in ticket #677): sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v2_2.c: revision 1.2 sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: revision 1.18 sys/external/bsd/drm2/dist/drm/radeon/nid.h: revision 1.3 sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: revision 1.19 sys/external/bsd/drm2/dist/drm/radeon/rv770d.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/cikd.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v4_2.c: revision 1.2 sys/external/bsd/drm2/dist/include/drm/drm_fixed.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/sumod.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_reg.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_mode.h: revision 1.5 sys/external/bsd/drm2/dist/drm/radeon/r600d.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/r600d.h: revision 1.4 sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c: revision 1.2 sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_r600.c: revision 1.2 sys/external/bsd/drm2/dist/drm/radeon/evergreend.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/evergreend.h: revision 1.4 sys/external/bsd/drm2/dist/drm/i915/i915_reg.h: revision 1.10 sys/external/bsd/drm2/dist/drm/i915/i915_reg.h: revision 1.8 sys/external/bsd/drm2/dist/drm/i915/i915_reg.h: revision 1.11 sys/external/bsd/drm2/dist/drm/i915/i915_reg.h: revision 1.13 sys/external/bsd/drm2/dist/drm/radeon/rv730d.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_rv770_smc.c: revision 1.2 sys/external/bsd/drm2/dist/drm/radeon/sid.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_si_smc.c: revision 1.2 sys/external/bsd/drm2/dist/drm/radeon/sid.h: revision 1.4 Use unsigned to avoid undefined behavior. Found by kUBSan. To generate a diff of this commit: cvs rdiff -u -r1.7.2.1 -r1.7.2.2 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h cvs rdiff -u -r1.17.2.1 -r1.17.2.2 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c cvs rdiff -u -r1.2 -r1.2.4.1 src/sys/external/bsd/drm2/dist/drm/radeon/cikd.h \ src/sys/external/bsd/drm2/dist/drm/radeon/evergreend.h \ src/sys/external/bsd/drm2/dist/drm/radeon/nid.h \ src/sys/external/bsd/drm2/dist/drm/radeon/r600d.h \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_reg.h \ src/sys/external/bsd/drm2/dist/drm/radeon/rv730d.h \ src/sys/external/bsd/drm2/dist/drm/radeon/rv770d.h \ src/sys/external/bsd/drm2/dist/drm/radeon/sid.h \ src/sys/external/bsd/drm2/dist/drm/radeon/sumod.h cvs rdiff -u -r1.4 -r1.4.4.1 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_mode.h cvs rdiff -u -r1.1 -r1.1.8.1 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_r600.c \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_rv770_smc.c \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_si_smc.c \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v2_2.c \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v4_2.c cvs rdiff -u -r1.2 -r1.2.4.1 \ src/sys/external/bsd/drm2/dist/include/drm/drm_fixed.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/external/bsd/drm2/dist/drm/i915/i915_reg.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h:1.7.2.1 src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h:1.7.2.2 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h:1.7.2.1 Thu Dec 12 21:00:32 2019 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h Fri Jan 31 11:25:09 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_reg.h,v 1.7.2.1 2019/12/12 21:00:32 martin Exp $ */ +/* $NetBSD: i915_reg.h,v 1.7.2.2 2020/01/31 11:25:09 martin Exp $ */ /* Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. * All Rights Reserved. @@ -1652,7 +1652,7 @@ enum skl_disp_power_wells { #define ERROR_GEN6 0x040a0 #define GEN7_ERR_INT 0x44040 -#define ERR_INT_POISON (1<<31) +#define ERR_INT_POISON (1U<<31) #define ERR_INT_MMIO_UNCLAIMED (1<<13) #define ERR_INT_PIPE_CRC_DONE_C (1<<8)
CVS commit: [netbsd-9] src/sys/external/bsd/drm2/dist/drm/radeon
Module Name:src Committed By: martin Date: Tue Jan 21 15:35:39 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-9]: radeon_vce.c Log Message: Pull up following revision(s) (requested by jmcneill in ticket #634): sys/external/bsd/drm2/dist/drm/radeon/radeon_vce.c: revision 1.4 Fix loading TAHITI VCE firmware. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.3.4.1 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_vce.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/external/bsd/drm2/dist/drm/radeon/radeon_vce.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_vce.c:1.3 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_vce.c:1.3.4.1 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_vce.c:1.3 Mon Aug 27 04:58:36 2018 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_vce.c Tue Jan 21 15:35:39 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: radeon_vce.c,v 1.3 2018/08/27 04:58:36 riastradh Exp $ */ +/* $NetBSD: radeon_vce.c,v 1.3.4.1 2020/01/21 15:35:39 martin Exp $ */ /* * Copyright 2013 Advanced Micro Devices, Inc. @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: radeon_vce.c,v 1.3 2018/08/27 04:58:36 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: radeon_vce.c,v 1.3.4.1 2020/01/21 15:35:39 martin Exp $"); #include #include @@ -53,34 +53,38 @@ static void radeon_vce_idle_work_handler #ifdef __NetBSD__ /* XXX Ugh! */ static bool -scan_2dec_u8(const char **sp, char delim, uint8_t *u8p) +scan_2dec_uint(const char **sp, char delim, unsigned int *uintp) { - char c0, c1; + u_int val = 0, n; + char c; - if (!isdigit((unsigned char)(c0 = *(*sp)++))) - return false; - if (!isdigit((unsigned char)(c1 = *(*sp)++))) - return false; - if (*(*sp)++ != delim) + for (n = 0; n < 2; n++) { + c = *(*sp)++; + if (!isdigit((unsigned char)c)) + return false; + if (n != 0) + val *= 10; + val += (c - '0'); + if (*(*sp) == delim) + break; + } + if (*(*sp) != delim) return false; - *u8p = ((c0 - '0') * 10) + (c1 - '0'); + (*sp)++; + *uintp = val; return true; } static bool -scan_2dec_uint(const char **sp, char delim, unsigned int *uintp) +scan_2dec_u8(const char **sp, char delim, uint8_t *u8p) { - char c0, c1; + unsigned int val; - if (!isdigit((unsigned char)(c0 = *(*sp)++))) - return false; - if (!isdigit((unsigned char)(c1 = *(*sp)++))) - return false; - if (*(*sp)++ != delim) + if (!scan_2dec_uint(sp, delim, )) return false; - *uintp = ((c0 - '0') * 10) + (c1 - '0'); + *u8p = (uint8_t)val; return true; } #endif