sync with OpenBSD -current
This commit is contained in:
parent
0fd478b49f
commit
de73a2419b
15 changed files with 233 additions and 88 deletions
|
@ -1,7 +1,5 @@
|
||||||
./usr/bin/addr2line
|
|
||||||
./usr/bin/as
|
./usr/bin/as
|
||||||
./usr/bin/gdb
|
./usr/bin/gdb
|
||||||
./usr/bin/readelf
|
|
||||||
./usr/include/amd64
|
./usr/include/amd64
|
||||||
./usr/include/amd64/_float.h
|
./usr/include/amd64/_float.h
|
||||||
./usr/include/amd64/_types.h
|
./usr/include/amd64/_types.h
|
||||||
|
@ -80,10 +78,8 @@
|
||||||
./usr/include/amd64/vga_post.h
|
./usr/include/amd64/vga_post.h
|
||||||
./usr/include/amd64/vmmvar.h
|
./usr/include/amd64/vmmvar.h
|
||||||
./usr/include/amd64/vmparam.h
|
./usr/include/amd64/vmparam.h
|
||||||
./usr/include/ieeefp.h
|
|
||||||
./usr/lib/libamd64.a
|
./usr/lib/libamd64.a
|
||||||
./usr/lib/libamd64_p.a
|
./usr/lib/libamd64_p.a
|
||||||
./usr/libdata/ldscripts
|
|
||||||
./usr/libdata/ldscripts/elf_i386.x
|
./usr/libdata/ldscripts/elf_i386.x
|
||||||
./usr/libdata/ldscripts/elf_i386.xbn
|
./usr/libdata/ldscripts/elf_i386.xbn
|
||||||
./usr/libdata/ldscripts/elf_i386.xc
|
./usr/libdata/ldscripts/elf_i386.xc
|
||||||
|
@ -134,7 +130,6 @@
|
||||||
./usr/libdata/ldscripts/elf_x86_64_obsd.xz
|
./usr/libdata/ldscripts/elf_x86_64_obsd.xz
|
||||||
./usr/share/info/annotate.info
|
./usr/share/info/annotate.info
|
||||||
./usr/share/info/as.info
|
./usr/share/info/as.info
|
||||||
./usr/share/info/bfd.info
|
|
||||||
./usr/share/info/gdb.info
|
./usr/share/info/gdb.info
|
||||||
./usr/share/info/gdbint.info
|
./usr/share/info/gdbint.info
|
||||||
./usr/share/info/ld.info
|
./usr/share/info/ld.info
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
./usr/bin/addr2line
|
|
||||||
./usr/bin/readelf
|
|
||||||
./usr/include/arm64
|
./usr/include/arm64
|
||||||
./usr/include/arm64/_float.h
|
./usr/include/arm64/_float.h
|
||||||
./usr/include/arm64/_types.h
|
./usr/include/arm64/_types.h
|
||||||
|
@ -56,6 +54,3 @@
|
||||||
./usr/include/arm64/trap.h
|
./usr/include/arm64/trap.h
|
||||||
./usr/include/arm64/vmmvar.h
|
./usr/include/arm64/vmmvar.h
|
||||||
./usr/include/arm64/vmparam.h
|
./usr/include/arm64/vmparam.h
|
||||||
./usr/include/ieeefp.h
|
|
||||||
./usr/libdata/ldscripts
|
|
||||||
./usr/share/info/bfd.info
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
./usr/bin/addr2line
|
|
||||||
./usr/bin/as
|
./usr/bin/as
|
||||||
./usr/bin/gdb
|
./usr/bin/gdb
|
||||||
./usr/bin/readelf
|
|
||||||
./usr/include/arm
|
./usr/include/arm
|
||||||
./usr/include/arm/_float.h
|
./usr/include/arm/_float.h
|
||||||
./usr/include/arm/_types.h
|
./usr/include/arm/_types.h
|
||||||
|
@ -101,10 +99,8 @@
|
||||||
./usr/include/armv7/timetc.h
|
./usr/include/armv7/timetc.h
|
||||||
./usr/include/armv7/trap.h
|
./usr/include/armv7/trap.h
|
||||||
./usr/include/armv7/vmparam.h
|
./usr/include/armv7/vmparam.h
|
||||||
./usr/include/ieeefp.h
|
|
||||||
./usr/lib/libarm.a
|
./usr/lib/libarm.a
|
||||||
./usr/lib/libarm_p.a
|
./usr/lib/libarm_p.a
|
||||||
./usr/libdata/ldscripts
|
|
||||||
./usr/libdata/ldscripts/armelf_obsd.x
|
./usr/libdata/ldscripts/armelf_obsd.x
|
||||||
./usr/libdata/ldscripts/armelf_obsd.xbn
|
./usr/libdata/ldscripts/armelf_obsd.xbn
|
||||||
./usr/libdata/ldscripts/armelf_obsd.xc
|
./usr/libdata/ldscripts/armelf_obsd.xc
|
||||||
|
@ -139,7 +135,6 @@
|
||||||
./usr/libdata/ldscripts/armelfb_obsd.xz
|
./usr/libdata/ldscripts/armelfb_obsd.xz
|
||||||
./usr/share/info/annotate.info
|
./usr/share/info/annotate.info
|
||||||
./usr/share/info/as.info
|
./usr/share/info/as.info
|
||||||
./usr/share/info/bfd.info
|
|
||||||
./usr/share/info/gdb.info
|
./usr/share/info/gdb.info
|
||||||
./usr/share/info/gdbint.info
|
./usr/share/info/gdbint.info
|
||||||
./usr/share/info/ld.info
|
./usr/share/info/ld.info
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
./usr/bin/addr2line
|
|
||||||
./usr/bin/as
|
./usr/bin/as
|
||||||
./usr/bin/gdb
|
./usr/bin/gdb
|
||||||
./usr/bin/readelf
|
|
||||||
./usr/include/i386
|
./usr/include/i386
|
||||||
./usr/include/i386/_float.h
|
./usr/include/i386/_float.h
|
||||||
./usr/include/i386/_types.h
|
./usr/include/i386/_types.h
|
||||||
|
@ -78,10 +76,8 @@
|
||||||
./usr/include/i386/vga_post.h
|
./usr/include/i386/vga_post.h
|
||||||
./usr/include/i386/vmmvar.h
|
./usr/include/i386/vmmvar.h
|
||||||
./usr/include/i386/vmparam.h
|
./usr/include/i386/vmparam.h
|
||||||
./usr/include/ieeefp.h
|
|
||||||
./usr/lib/libi386.a
|
./usr/lib/libi386.a
|
||||||
./usr/lib/libi386_p.a
|
./usr/lib/libi386_p.a
|
||||||
./usr/libdata/ldscripts
|
|
||||||
./usr/libdata/ldscripts/elf_i386_obsd.x
|
./usr/libdata/ldscripts/elf_i386_obsd.x
|
||||||
./usr/libdata/ldscripts/elf_i386_obsd.xbn
|
./usr/libdata/ldscripts/elf_i386_obsd.xbn
|
||||||
./usr/libdata/ldscripts/elf_i386_obsd.xc
|
./usr/libdata/ldscripts/elf_i386_obsd.xc
|
||||||
|
@ -100,7 +96,6 @@
|
||||||
./usr/libdata/ldscripts/elf_i386_obsd.xz
|
./usr/libdata/ldscripts/elf_i386_obsd.xz
|
||||||
./usr/share/info/annotate.info
|
./usr/share/info/annotate.info
|
||||||
./usr/share/info/as.info
|
./usr/share/info/as.info
|
||||||
./usr/share/info/bfd.info
|
|
||||||
./usr/share/info/gdb.info
|
./usr/share/info/gdb.info
|
||||||
./usr/share/info/gdbint.info
|
./usr/share/info/gdbint.info
|
||||||
./usr/share/info/ld.info
|
./usr/share/info/ld.info
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
./sys
|
./sys
|
||||||
|
./usr/bin/addr2line
|
||||||
./usr/bin/c++filt
|
./usr/bin/c++filt
|
||||||
./usr/bin/cpp
|
./usr/bin/cpp
|
||||||
./usr/bin/ctfdump
|
./usr/bin/ctfdump
|
||||||
|
@ -10,6 +11,7 @@
|
||||||
./usr/bin/lorder
|
./usr/bin/lorder
|
||||||
./usr/bin/objdump
|
./usr/bin/objdump
|
||||||
./usr/bin/ranlib
|
./usr/bin/ranlib
|
||||||
|
./usr/bin/readelf
|
||||||
./usr/bin/rpcgen
|
./usr/bin/rpcgen
|
||||||
./usr/bin/yacc
|
./usr/bin/yacc
|
||||||
./usr/include/FlexLexer.h
|
./usr/include/FlexLexer.h
|
||||||
|
@ -919,6 +921,7 @@
|
||||||
./usr/include/grp.h
|
./usr/include/grp.h
|
||||||
./usr/include/histedit.h
|
./usr/include/histedit.h
|
||||||
./usr/include/icdb.h
|
./usr/include/icdb.h
|
||||||
|
./usr/include/ieeefp.h
|
||||||
./usr/include/ifaddrs.h
|
./usr/include/ifaddrs.h
|
||||||
./usr/include/imsg.h
|
./usr/include/imsg.h
|
||||||
./usr/include/inttypes.h
|
./usr/include/inttypes.h
|
||||||
|
@ -1579,7 +1582,9 @@
|
||||||
./usr/lib/liby_p.a
|
./usr/lib/liby_p.a
|
||||||
./usr/lib/libz.a
|
./usr/lib/libz.a
|
||||||
./usr/lib/libz_p.a
|
./usr/lib/libz_p.a
|
||||||
|
./usr/libdata/ldscripts
|
||||||
./usr/sbin/kgmon
|
./usr/sbin/kgmon
|
||||||
|
./usr/share/info/bfd.info
|
||||||
./usr/share/info/binutils.info
|
./usr/share/info/binutils.info
|
||||||
./usr/share/man/man1/addr2line.1
|
./usr/share/man/man1/addr2line.1
|
||||||
./usr/share/man/man1/ar.1
|
./usr/share/man/man1/ar.1
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# $OpenBSD: tlsfuzzer.py,v 1.55 2024/09/14 07:11:34 tb Exp $
|
# $OpenBSD: tlsfuzzer.py,v 1.56 2024/09/18 19:12:37 tb Exp $
|
||||||
#
|
#
|
||||||
# Copyright (c) 2020 Theo Buehler <tb@openbsd.org>
|
# Copyright (c) 2020 Theo Buehler <tb@openbsd.org>
|
||||||
#
|
#
|
||||||
|
@ -211,10 +211,9 @@ tls13_slow_tests = TestGroup("slow TLSv1.3 tests", [
|
||||||
]),
|
]),
|
||||||
# We don't accept an empty ECPF extension since it must advertise the
|
# We don't accept an empty ECPF extension since it must advertise the
|
||||||
# uncompressed point format. Exclude this extension type from the test.
|
# uncompressed point format. Exclude this extension type from the test.
|
||||||
# Also exclude QUIC transport parameters.
|
|
||||||
Test(
|
Test(
|
||||||
"test-tls13-large-number-of-extensions.py",
|
"test-tls13-large-number-of-extensions.py",
|
||||||
tls13_args = ["--exc", "11", "--exc", "57"],
|
tls13_args = ["--exc", "11"],
|
||||||
),
|
),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@ -365,6 +364,7 @@ tls12_tests = TestGroup("TLSv1.2 tests", [
|
||||||
Test("test-invalid-content-type.py"),
|
Test("test-invalid-content-type.py"),
|
||||||
Test("test-invalid-session-id.py"),
|
Test("test-invalid-session-id.py"),
|
||||||
Test("test-invalid-version.py"),
|
Test("test-invalid-version.py"),
|
||||||
|
Test("test-large-number-of-extensions.py"),
|
||||||
Test("test-lucky13.py"),
|
Test("test-lucky13.py"),
|
||||||
Test("test-message-skipping.py"),
|
Test("test-message-skipping.py"),
|
||||||
Test("test-no-heartbeat.py"),
|
Test("test-no-heartbeat.py"),
|
||||||
|
@ -533,11 +533,6 @@ tls12_failing_tests = TestGroup("failing TLSv1.2 tests", [
|
||||||
# again illegal_parameter vs unrecognized_name
|
# again illegal_parameter vs unrecognized_name
|
||||||
Test("test-invalid-server-name-extension.py"),
|
Test("test-invalid-server-name-extension.py"),
|
||||||
|
|
||||||
# 14 pass
|
|
||||||
# 7 fail
|
|
||||||
# 'n extensions', n in 4095, 4096, 4097, 8191, 8192, 8193, 16383,
|
|
||||||
Test("test-large-number-of-extensions.py"),
|
|
||||||
|
|
||||||
# 4 failures:
|
# 4 failures:
|
||||||
# 'insecure (legacy) renegotiation with GET after 2nd handshake'
|
# 'insecure (legacy) renegotiation with GET after 2nd handshake'
|
||||||
# 'insecure (legacy) renegotiation with incomplete GET'
|
# 'insecure (legacy) renegotiation with incomplete GET'
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
#include "amdgpu.h"
|
#include "amdgpu.h"
|
||||||
#include "amdgpu_jpeg.h"
|
#include "amdgpu_jpeg.h"
|
||||||
|
#include "amdgpu_cs.h"
|
||||||
#include "soc15.h"
|
#include "soc15.h"
|
||||||
#include "soc15d.h"
|
#include "soc15d.h"
|
||||||
#include "vcn_v1_0.h"
|
#include "vcn_v1_0.h"
|
||||||
|
@ -34,6 +35,9 @@
|
||||||
static void jpeg_v1_0_set_dec_ring_funcs(struct amdgpu_device *adev);
|
static void jpeg_v1_0_set_dec_ring_funcs(struct amdgpu_device *adev);
|
||||||
static void jpeg_v1_0_set_irq_funcs(struct amdgpu_device *adev);
|
static void jpeg_v1_0_set_irq_funcs(struct amdgpu_device *adev);
|
||||||
static void jpeg_v1_0_ring_begin_use(struct amdgpu_ring *ring);
|
static void jpeg_v1_0_ring_begin_use(struct amdgpu_ring *ring);
|
||||||
|
static int jpeg_v1_dec_ring_parse_cs(struct amdgpu_cs_parser *parser,
|
||||||
|
struct amdgpu_job *job,
|
||||||
|
struct amdgpu_ib *ib);
|
||||||
|
|
||||||
static void jpeg_v1_0_decode_ring_patch_wreg(struct amdgpu_ring *ring, uint32_t *ptr, uint32_t reg_offset, uint32_t val)
|
static void jpeg_v1_0_decode_ring_patch_wreg(struct amdgpu_ring *ring, uint32_t *ptr, uint32_t reg_offset, uint32_t val)
|
||||||
{
|
{
|
||||||
|
@ -300,7 +304,10 @@ static void jpeg_v1_0_decode_ring_emit_ib(struct amdgpu_ring *ring,
|
||||||
|
|
||||||
amdgpu_ring_write(ring,
|
amdgpu_ring_write(ring,
|
||||||
PACKETJ(SOC15_REG_OFFSET(JPEG, 0, mmUVD_LMI_JRBC_IB_VMID), 0, 0, PACKETJ_TYPE0));
|
PACKETJ(SOC15_REG_OFFSET(JPEG, 0, mmUVD_LMI_JRBC_IB_VMID), 0, 0, PACKETJ_TYPE0));
|
||||||
amdgpu_ring_write(ring, (vmid | (vmid << 4)));
|
if (ring->funcs->parse_cs)
|
||||||
|
amdgpu_ring_write(ring, 0);
|
||||||
|
else
|
||||||
|
amdgpu_ring_write(ring, (vmid | (vmid << 4)));
|
||||||
|
|
||||||
amdgpu_ring_write(ring,
|
amdgpu_ring_write(ring,
|
||||||
PACKETJ(SOC15_REG_OFFSET(JPEG, 0, mmUVD_LMI_JPEG_VMID), 0, 0, PACKETJ_TYPE0));
|
PACKETJ(SOC15_REG_OFFSET(JPEG, 0, mmUVD_LMI_JPEG_VMID), 0, 0, PACKETJ_TYPE0));
|
||||||
|
@ -554,6 +561,7 @@ static const struct amdgpu_ring_funcs jpeg_v1_0_decode_ring_vm_funcs = {
|
||||||
.get_rptr = jpeg_v1_0_decode_ring_get_rptr,
|
.get_rptr = jpeg_v1_0_decode_ring_get_rptr,
|
||||||
.get_wptr = jpeg_v1_0_decode_ring_get_wptr,
|
.get_wptr = jpeg_v1_0_decode_ring_get_wptr,
|
||||||
.set_wptr = jpeg_v1_0_decode_ring_set_wptr,
|
.set_wptr = jpeg_v1_0_decode_ring_set_wptr,
|
||||||
|
.parse_cs = jpeg_v1_dec_ring_parse_cs,
|
||||||
.emit_frame_size =
|
.emit_frame_size =
|
||||||
6 + 6 + /* hdp invalidate / flush */
|
6 + 6 + /* hdp invalidate / flush */
|
||||||
SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 +
|
SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 +
|
||||||
|
@ -612,3 +620,69 @@ static void jpeg_v1_0_ring_begin_use(struct amdgpu_ring *ring)
|
||||||
|
|
||||||
vcn_v1_0_set_pg_for_begin_use(ring, set_clocks);
|
vcn_v1_0_set_pg_for_begin_use(ring, set_clocks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* jpeg_v1_dec_ring_parse_cs - command submission parser
|
||||||
|
*
|
||||||
|
* @parser: Command submission parser context
|
||||||
|
* @job: the job to parse
|
||||||
|
* @ib: the IB to parse
|
||||||
|
*
|
||||||
|
* Parse the command stream, return -EINVAL for invalid packet,
|
||||||
|
* 0 otherwise
|
||||||
|
*/
|
||||||
|
static int jpeg_v1_dec_ring_parse_cs(struct amdgpu_cs_parser *parser,
|
||||||
|
struct amdgpu_job *job,
|
||||||
|
struct amdgpu_ib *ib)
|
||||||
|
{
|
||||||
|
u32 i, reg, res, cond, type;
|
||||||
|
int ret = 0;
|
||||||
|
struct amdgpu_device *adev = parser->adev;
|
||||||
|
|
||||||
|
for (i = 0; i < ib->length_dw ; i += 2) {
|
||||||
|
reg = CP_PACKETJ_GET_REG(ib->ptr[i]);
|
||||||
|
res = CP_PACKETJ_GET_RES(ib->ptr[i]);
|
||||||
|
cond = CP_PACKETJ_GET_COND(ib->ptr[i]);
|
||||||
|
type = CP_PACKETJ_GET_TYPE(ib->ptr[i]);
|
||||||
|
|
||||||
|
if (res || cond != PACKETJ_CONDITION_CHECK0) /* only allow 0 for now */
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (reg >= JPEG_V1_REG_RANGE_START && reg <= JPEG_V1_REG_RANGE_END)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case PACKETJ_TYPE0:
|
||||||
|
if (reg != JPEG_V1_LMI_JPEG_WRITE_64BIT_BAR_HIGH &&
|
||||||
|
reg != JPEG_V1_LMI_JPEG_WRITE_64BIT_BAR_LOW &&
|
||||||
|
reg != JPEG_V1_LMI_JPEG_READ_64BIT_BAR_HIGH &&
|
||||||
|
reg != JPEG_V1_LMI_JPEG_READ_64BIT_BAR_LOW &&
|
||||||
|
reg != JPEG_V1_REG_CTX_INDEX &&
|
||||||
|
reg != JPEG_V1_REG_CTX_DATA) {
|
||||||
|
ret = -EINVAL;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PACKETJ_TYPE1:
|
||||||
|
if (reg != JPEG_V1_REG_CTX_DATA)
|
||||||
|
ret = -EINVAL;
|
||||||
|
break;
|
||||||
|
case PACKETJ_TYPE3:
|
||||||
|
if (reg != JPEG_V1_REG_SOFT_RESET)
|
||||||
|
ret = -EINVAL;
|
||||||
|
break;
|
||||||
|
case PACKETJ_TYPE6:
|
||||||
|
if (ib->ptr[i] != CP_PACKETJ_NOP)
|
||||||
|
ret = -EINVAL;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ret = -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret) {
|
||||||
|
dev_err(adev->dev, "Invalid packet [0x%08x]!\n", ib->ptr[i]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
|
@ -29,4 +29,15 @@ int jpeg_v1_0_sw_init(void *handle);
|
||||||
void jpeg_v1_0_sw_fini(void *handle);
|
void jpeg_v1_0_sw_fini(void *handle);
|
||||||
void jpeg_v1_0_start(struct amdgpu_device *adev, int mode);
|
void jpeg_v1_0_start(struct amdgpu_device *adev, int mode);
|
||||||
|
|
||||||
|
#define JPEG_V1_REG_RANGE_START 0x8000
|
||||||
|
#define JPEG_V1_REG_RANGE_END 0x803f
|
||||||
|
|
||||||
|
#define JPEG_V1_LMI_JPEG_WRITE_64BIT_BAR_HIGH 0x8238
|
||||||
|
#define JPEG_V1_LMI_JPEG_WRITE_64BIT_BAR_LOW 0x8239
|
||||||
|
#define JPEG_V1_LMI_JPEG_READ_64BIT_BAR_HIGH 0x825a
|
||||||
|
#define JPEG_V1_LMI_JPEG_READ_64BIT_BAR_LOW 0x825b
|
||||||
|
#define JPEG_V1_REG_CTX_INDEX 0x8328
|
||||||
|
#define JPEG_V1_REG_CTX_DATA 0x8329
|
||||||
|
#define JPEG_V1_REG_SOFT_RESET 0x83a0
|
||||||
|
|
||||||
#endif /*__JPEG_V1_0_H__*/
|
#endif /*__JPEG_V1_0_H__*/
|
||||||
|
|
|
@ -143,32 +143,25 @@ enum dc_status dp_set_fec_ready(struct dc_link *link, const struct link_resource
|
||||||
|
|
||||||
link_enc = link_enc_cfg_get_link_enc(link);
|
link_enc = link_enc_cfg_get_link_enc(link);
|
||||||
ASSERT(link_enc);
|
ASSERT(link_enc);
|
||||||
|
if (link_enc->funcs->fec_set_ready == NULL)
|
||||||
|
return DC_NOT_SUPPORTED;
|
||||||
|
|
||||||
if (!dp_should_enable_fec(link))
|
if (ready && dp_should_enable_fec(link)) {
|
||||||
return status;
|
fec_config = 1;
|
||||||
|
|
||||||
if (link_enc->funcs->fec_set_ready &&
|
status = core_link_write_dpcd(link, DP_FEC_CONFIGURATION,
|
||||||
link->dpcd_caps.fec_cap.bits.FEC_CAPABLE) {
|
&fec_config, sizeof(fec_config));
|
||||||
if (ready) {
|
|
||||||
fec_config = 1;
|
if (status == DC_OK) {
|
||||||
status = core_link_write_dpcd(link,
|
link_enc->funcs->fec_set_ready(link_enc, true);
|
||||||
DP_FEC_CONFIGURATION,
|
link->fec_state = dc_link_fec_ready;
|
||||||
&fec_config,
|
}
|
||||||
sizeof(fec_config));
|
} else {
|
||||||
if (status == DC_OK) {
|
if (link->fec_state == dc_link_fec_ready) {
|
||||||
link_enc->funcs->fec_set_ready(link_enc, true);
|
|
||||||
link->fec_state = dc_link_fec_ready;
|
|
||||||
} else {
|
|
||||||
link_enc->funcs->fec_set_ready(link_enc, false);
|
|
||||||
link->fec_state = dc_link_fec_not_ready;
|
|
||||||
dm_error("dpcd write failed to set fec_ready");
|
|
||||||
}
|
|
||||||
} else if (link->fec_state == dc_link_fec_ready) {
|
|
||||||
fec_config = 0;
|
fec_config = 0;
|
||||||
status = core_link_write_dpcd(link,
|
core_link_write_dpcd(link, DP_FEC_CONFIGURATION,
|
||||||
DP_FEC_CONFIGURATION,
|
&fec_config, sizeof(fec_config));
|
||||||
&fec_config,
|
|
||||||
sizeof(fec_config));
|
|
||||||
link_enc->funcs->fec_set_ready(link_enc, false);
|
link_enc->funcs->fec_set_ready(link_enc, false);
|
||||||
link->fec_state = dc_link_fec_not_ready;
|
link->fec_state = dc_link_fec_not_ready;
|
||||||
}
|
}
|
||||||
|
@ -183,14 +176,12 @@ void dp_set_fec_enable(struct dc_link *link, bool enable)
|
||||||
|
|
||||||
link_enc = link_enc_cfg_get_link_enc(link);
|
link_enc = link_enc_cfg_get_link_enc(link);
|
||||||
ASSERT(link_enc);
|
ASSERT(link_enc);
|
||||||
|
if (link_enc->funcs->fec_set_enable == NULL)
|
||||||
if (!dp_should_enable_fec(link))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (link_enc->funcs->fec_set_enable &&
|
if (enable && dp_should_enable_fec(link)) {
|
||||||
link->dpcd_caps.fec_cap.bits.FEC_CAPABLE) {
|
if (link->fec_state == dc_link_fec_ready) {
|
||||||
if (link->fec_state == dc_link_fec_ready && enable) {
|
/* According to DP spec, FEC enable sequence can first
|
||||||
/* Accord to DP spec, FEC enable sequence can first
|
|
||||||
* be transmitted anytime after 1000 LL codes have
|
* be transmitted anytime after 1000 LL codes have
|
||||||
* been transmitted on the link after link training
|
* been transmitted on the link after link training
|
||||||
* completion. Using 1 lane RBR should have the maximum
|
* completion. Using 1 lane RBR should have the maximum
|
||||||
|
@ -200,7 +191,9 @@ void dp_set_fec_enable(struct dc_link *link, bool enable)
|
||||||
udelay(7);
|
udelay(7);
|
||||||
link_enc->funcs->fec_set_enable(link_enc, true);
|
link_enc->funcs->fec_set_enable(link_enc, true);
|
||||||
link->fec_state = dc_link_fec_enabled;
|
link->fec_state = dc_link_fec_enabled;
|
||||||
} else if (link->fec_state == dc_link_fec_enabled && !enable) {
|
}
|
||||||
|
} else {
|
||||||
|
if (link->fec_state == dc_link_fec_enabled) {
|
||||||
link_enc->funcs->fec_set_enable(link_enc, false);
|
link_enc->funcs->fec_set_enable(link_enc, false);
|
||||||
link->fec_state = dc_link_fec_ready;
|
link->fec_state = dc_link_fec_ready;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1006,7 +1006,7 @@ struct display_object_info_table_v1_4
|
||||||
uint16_t supporteddevices;
|
uint16_t supporteddevices;
|
||||||
uint8_t number_of_path;
|
uint8_t number_of_path;
|
||||||
uint8_t reserved;
|
uint8_t reserved;
|
||||||
struct atom_display_object_path_v2 display_path[8]; //the real number of this included in the structure is calculated by using the (whole structure size - the header size- number_of_path)/size of atom_display_object_path
|
struct atom_display_object_path_v2 display_path[]; //the real number of this included in the structure is calculated by using the (whole structure size - the header size- number_of_path)/size of atom_display_object_path
|
||||||
};
|
};
|
||||||
|
|
||||||
struct display_object_info_table_v1_5 {
|
struct display_object_info_table_v1_5 {
|
||||||
|
@ -1016,7 +1016,7 @@ struct display_object_info_table_v1_5 {
|
||||||
uint8_t reserved;
|
uint8_t reserved;
|
||||||
// the real number of this included in the structure is calculated by using the
|
// the real number of this included in the structure is calculated by using the
|
||||||
// (whole structure size - the header size- number_of_path)/size of atom_display_object_path
|
// (whole structure size - the header size- number_of_path)/size of atom_display_object_path
|
||||||
struct atom_display_object_path_v3 display_path[8];
|
struct atom_display_object_path_v3 display_path[];
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -208,6 +208,18 @@ static const struct dmi_system_id orientation_data[] = {
|
||||||
DMI_MATCH(DMI_BOARD_NAME, "KUN"),
|
DMI_MATCH(DMI_BOARD_NAME, "KUN"),
|
||||||
},
|
},
|
||||||
.driver_data = (void *)&lcd1600x2560_rightside_up,
|
.driver_data = (void *)&lcd1600x2560_rightside_up,
|
||||||
|
}, { /* AYN Loki Max */
|
||||||
|
.matches = {
|
||||||
|
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ayn"),
|
||||||
|
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Loki Max"),
|
||||||
|
},
|
||||||
|
.driver_data = (void *)&lcd1080x1920_leftside_up,
|
||||||
|
}, { /* AYN Loki Zero */
|
||||||
|
.matches = {
|
||||||
|
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ayn"),
|
||||||
|
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Loki Zero"),
|
||||||
|
},
|
||||||
|
.driver_data = (void *)&lcd1080x1920_leftside_up,
|
||||||
}, { /* Chuwi HiBook (CWI514) */
|
}, { /* Chuwi HiBook (CWI514) */
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
|
DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
|
||||||
|
|
|
@ -1489,6 +1489,7 @@ drm_syncobj_eventfd_ioctl(struct drm_device *dev, void *data,
|
||||||
struct drm_syncobj *syncobj;
|
struct drm_syncobj *syncobj;
|
||||||
struct eventfd_ctx *ev_fd_ctx;
|
struct eventfd_ctx *ev_fd_ctx;
|
||||||
struct syncobj_eventfd_entry *entry;
|
struct syncobj_eventfd_entry *entry;
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE))
|
if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE))
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
@ -1504,13 +1505,15 @@ drm_syncobj_eventfd_ioctl(struct drm_device *dev, void *data,
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
ev_fd_ctx = eventfd_ctx_fdget(args->fd);
|
ev_fd_ctx = eventfd_ctx_fdget(args->fd);
|
||||||
if (IS_ERR(ev_fd_ctx))
|
if (IS_ERR(ev_fd_ctx)) {
|
||||||
return PTR_ERR(ev_fd_ctx);
|
ret = PTR_ERR(ev_fd_ctx);
|
||||||
|
goto err_fdget;
|
||||||
|
}
|
||||||
|
|
||||||
entry = kzalloc(sizeof(*entry), GFP_KERNEL);
|
entry = kzalloc(sizeof(*entry), GFP_KERNEL);
|
||||||
if (!entry) {
|
if (!entry) {
|
||||||
eventfd_ctx_put(ev_fd_ctx);
|
ret = -ENOMEM;
|
||||||
return -ENOMEM;
|
goto err_kzalloc;
|
||||||
}
|
}
|
||||||
entry->syncobj = syncobj;
|
entry->syncobj = syncobj;
|
||||||
entry->ev_fd_ctx = ev_fd_ctx;
|
entry->ev_fd_ctx = ev_fd_ctx;
|
||||||
|
@ -1521,6 +1524,12 @@ drm_syncobj_eventfd_ioctl(struct drm_device *dev, void *data,
|
||||||
drm_syncobj_put(syncobj);
|
drm_syncobj_put(syncobj);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
err_kzalloc:
|
||||||
|
eventfd_ctx_put(ev_fd_ctx);
|
||||||
|
err_fdget:
|
||||||
|
drm_syncobj_put(syncobj);
|
||||||
|
return ret;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2695,9 +2695,9 @@ static void prepare_context_registration_info_v70(struct intel_context *ce,
|
||||||
ce->parallel.guc.wqi_tail = 0;
|
ce->parallel.guc.wqi_tail = 0;
|
||||||
ce->parallel.guc.wqi_head = 0;
|
ce->parallel.guc.wqi_head = 0;
|
||||||
|
|
||||||
wq_desc_offset = i915_ggtt_offset(ce->state) +
|
wq_desc_offset = (u64)i915_ggtt_offset(ce->state) +
|
||||||
__get_parent_scratch_offset(ce);
|
__get_parent_scratch_offset(ce);
|
||||||
wq_base_offset = i915_ggtt_offset(ce->state) +
|
wq_base_offset = (u64)i915_ggtt_offset(ce->state) +
|
||||||
__get_wq_offset(ce);
|
__get_wq_offset(ce);
|
||||||
info->wq_desc_lo = lower_32_bits(wq_desc_offset);
|
info->wq_desc_lo = lower_32_bits(wq_desc_offset);
|
||||||
info->wq_desc_hi = upper_32_bits(wq_desc_offset);
|
info->wq_desc_hi = upper_32_bits(wq_desc_offset);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
.\" $OpenBSD: zic.8,v 1.5 2022/03/31 17:27:32 naddy Exp $
|
.\" $OpenBSD: zic.8,v 1.6 2024/09/18 17:05:50 millert Exp $
|
||||||
.Dd $Mdocdate: March 31 2022 $
|
.Dd $Mdocdate: September 18 2024 $
|
||||||
.Dt ZIC 8
|
.Dt ZIC 8
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
|
@ -240,6 +240,19 @@ The pair of characters
|
||||||
is used to show where the
|
is used to show where the
|
||||||
.Dq variable part
|
.Dq variable part
|
||||||
of the time zone abbreviation goes.
|
of the time zone abbreviation goes.
|
||||||
|
Alternately, a format can use the pair of characters
|
||||||
|
.Em %z
|
||||||
|
to stand for the UTC offset in the form
|
||||||
|
.No \(+- Ns Em hh ,
|
||||||
|
.No \(+- Ns Em hhmm ,
|
||||||
|
or
|
||||||
|
.No \(+- Ns Em hhmmss ,
|
||||||
|
using the shortest form that does not lose information, where
|
||||||
|
.Em hh ,
|
||||||
|
.Em mm ,
|
||||||
|
and
|
||||||
|
.Em ss
|
||||||
|
are the hours, minutes, and seconds east (+) or west (\(mi) of UTC.
|
||||||
Alternately,
|
Alternately,
|
||||||
a slash
|
a slash
|
||||||
.Pq \&/
|
.Pq \&/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: zic.c,v 1.26 2020/10/13 00:18:46 deraadt Exp $ */
|
/* $OpenBSD: zic.c,v 1.27 2024/09/18 17:05:50 millert Exp $ */
|
||||||
/*
|
/*
|
||||||
** This file is in the public domain, so clarified as of
|
** This file is in the public domain, so clarified as of
|
||||||
** 2006-07-17 by Arthur David Olson.
|
** 2006-07-17 by Arthur David Olson.
|
||||||
|
@ -88,6 +88,7 @@ struct zone {
|
||||||
long z_gmtoff;
|
long z_gmtoff;
|
||||||
const char *z_rule;
|
const char *z_rule;
|
||||||
const char *z_format;
|
const char *z_format;
|
||||||
|
char z_format_specifier;
|
||||||
|
|
||||||
long z_stdoff;
|
long z_stdoff;
|
||||||
|
|
||||||
|
@ -107,7 +108,7 @@ static void associate(void);
|
||||||
static void convert(long val, char *buf);
|
static void convert(long val, char *buf);
|
||||||
static void convert64(zic_t val, char *buf);
|
static void convert64(zic_t val, char *buf);
|
||||||
static void dolink(const char *fromfield, const char *tofield);
|
static void dolink(const char *fromfield, const char *tofield);
|
||||||
static void doabbr(char *abbr, size_t size, const char *format,
|
static void doabbr(char *abbr, size_t size, struct zone const *zp,
|
||||||
const char *letters, int isdst, int doquotes);
|
const char *letters, int isdst, int doquotes);
|
||||||
static void eat(const char *name, int num);
|
static void eat(const char *name, int num);
|
||||||
static void eats(const char *name, int num, const char *rname, int rnum);
|
static void eats(const char *name, int num, const char *rname, int rnum);
|
||||||
|
@ -148,6 +149,9 @@ static void writezone(const char *name, const char *string);
|
||||||
|
|
||||||
extern char *__progname;
|
extern char *__progname;
|
||||||
|
|
||||||
|
/* Bound on length of what %z can expand to. */
|
||||||
|
enum { PERCENT_Z_LEN_BOUND = sizeof "+995959" - 1 };
|
||||||
|
|
||||||
static int charcnt;
|
static int charcnt;
|
||||||
static int errors;
|
static int errors;
|
||||||
static const char *filename;
|
static const char *filename;
|
||||||
|
@ -156,7 +160,7 @@ static int leapseen;
|
||||||
static int leapminyear;
|
static int leapminyear;
|
||||||
static int leapmaxyear;
|
static int leapmaxyear;
|
||||||
static int linenum;
|
static int linenum;
|
||||||
static int max_abbrvar_len;
|
static int max_abbrvar_len = PERCENT_Z_LEN_BOUND;
|
||||||
static int max_format_len;
|
static int max_format_len;
|
||||||
static zic_t max_time;
|
static zic_t max_time;
|
||||||
static int max_year;
|
static int max_year;
|
||||||
|
@ -739,7 +743,7 @@ associate(void)
|
||||||
** Note, though, that if there's no rule,
|
** Note, though, that if there's no rule,
|
||||||
** a '%s' in the format is a bad thing.
|
** a '%s' in the format is a bad thing.
|
||||||
*/
|
*/
|
||||||
if (strchr(zp->z_format, '%') != 0)
|
if (zp->z_format_specifier == 's')
|
||||||
error("%s in ruleless zone");
|
error("%s in ruleless zone");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -957,6 +961,7 @@ static int
|
||||||
inzsub(char **fields, int nfields, int iscont)
|
inzsub(char **fields, int nfields, int iscont)
|
||||||
{
|
{
|
||||||
char *cp;
|
char *cp;
|
||||||
|
char *cp1;
|
||||||
static struct zone z;
|
static struct zone z;
|
||||||
int i_gmtoff, i_rule, i_format;
|
int i_gmtoff, i_rule, i_format;
|
||||||
int i_untilyear, i_untilmonth;
|
int i_untilyear, i_untilmonth;
|
||||||
|
@ -986,13 +991,22 @@ inzsub(char **fields, int nfields, int iscont)
|
||||||
z.z_linenum = linenum;
|
z.z_linenum = linenum;
|
||||||
z.z_gmtoff = gethms(fields[i_gmtoff], "invalid UTC offset", TRUE);
|
z.z_gmtoff = gethms(fields[i_gmtoff], "invalid UTC offset", TRUE);
|
||||||
if ((cp = strchr(fields[i_format], '%')) != 0) {
|
if ((cp = strchr(fields[i_format], '%')) != 0) {
|
||||||
if (*++cp != 's' || strchr(cp, '%') != 0) {
|
if ((*++cp != 's' && *cp != 'z') || strchr(cp, '%')
|
||||||
|
|| strchr(fields[i_format], '/')) {
|
||||||
error("invalid abbreviation format");
|
error("invalid abbreviation format");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
z.z_rule = ecpyalloc(fields[i_rule]);
|
z.z_rule = ecpyalloc(fields[i_rule]);
|
||||||
z.z_format = ecpyalloc(fields[i_format]);
|
z.z_format = cp1 = ecpyalloc(fields[i_format]);
|
||||||
|
z.z_format_specifier = cp ? *cp : '\0';
|
||||||
|
if (z.z_format_specifier == 'z') {
|
||||||
|
if (noise) {
|
||||||
|
warning("format '%%z' not handled by pre-2015 versions "
|
||||||
|
"of zic");
|
||||||
|
}
|
||||||
|
cp1[cp - fields[i_format]] = 's';
|
||||||
|
}
|
||||||
if (max_format_len < strlen(z.z_format))
|
if (max_format_len < strlen(z.z_format))
|
||||||
max_format_len = strlen(z.z_format);
|
max_format_len = strlen(z.z_format);
|
||||||
hasuntil = nfields > i_untilyear;
|
hasuntil = nfields > i_untilyear;
|
||||||
|
@ -1635,19 +1649,58 @@ writezone(const char *name, const char *string)
|
||||||
errx(1, "Error writing %s", fullname);
|
errx(1, "Error writing %s", fullname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char const *
|
||||||
|
abbroffset(char *buf, zic_t offset)
|
||||||
|
{
|
||||||
|
char sign = '+';
|
||||||
|
int seconds, minutes;
|
||||||
|
|
||||||
|
if (offset < 0) {
|
||||||
|
offset = -offset;
|
||||||
|
sign = '-';
|
||||||
|
}
|
||||||
|
|
||||||
|
seconds = offset % SECSPERMIN;
|
||||||
|
offset /= SECSPERMIN;
|
||||||
|
minutes = offset % MINSPERHOUR;
|
||||||
|
offset /= MINSPERHOUR;
|
||||||
|
if (100 <= offset) {
|
||||||
|
error("%%z UTC offset magnitude exceeds 99:59:59");
|
||||||
|
return "%z";
|
||||||
|
} else {
|
||||||
|
char *p = buf;
|
||||||
|
*p++ = sign;
|
||||||
|
*p++ = '0' + offset / 10;
|
||||||
|
*p++ = '0' + offset % 10;
|
||||||
|
if (minutes | seconds) {
|
||||||
|
*p++ = '0' + minutes / 10;
|
||||||
|
*p++ = '0' + minutes % 10;
|
||||||
|
if (seconds) {
|
||||||
|
*p++ = '0' + seconds / 10;
|
||||||
|
*p++ = '0' + seconds % 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*p = '\0';
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
doabbr(char *abbr, size_t size, const char *format, const char *letters,
|
doabbr(char *abbr, size_t size, struct zone const *zp, const char *letters,
|
||||||
int isdst, int doquotes)
|
int isdst, int doquotes)
|
||||||
{
|
{
|
||||||
char *cp, *slashp;
|
char *cp, *slashp;
|
||||||
int len;
|
size_t len;
|
||||||
|
char const *format = zp->z_format;
|
||||||
|
|
||||||
slashp = strchr(format, '/');
|
slashp = strchr(format, '/');
|
||||||
if (slashp == NULL) {
|
if (slashp == NULL) {
|
||||||
if (letters == NULL)
|
char letterbuf[PERCENT_Z_LEN_BOUND + 1];
|
||||||
strlcpy(abbr, format, size);
|
if (zp->z_format_specifier == 'z')
|
||||||
else
|
letters = abbroffset(letterbuf, -zp->z_gmtoff);
|
||||||
snprintf(abbr, size, format, letters);
|
else if (letters == NULL)
|
||||||
|
letters = "%s";
|
||||||
|
snprintf(abbr, size, format, letters);
|
||||||
} else if (isdst) {
|
} else if (isdst) {
|
||||||
strlcpy(abbr, slashp + 1, size);
|
strlcpy(abbr, slashp + 1, size);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1822,7 +1875,7 @@ stringzone(char *result, size_t size, const struct zone *zpfirst, int zonecount)
|
||||||
if (stdrp == NULL && (zp->z_nrules != 0 || zp->z_stdoff != 0))
|
if (stdrp == NULL && (zp->z_nrules != 0 || zp->z_stdoff != 0))
|
||||||
return;
|
return;
|
||||||
abbrvar = (stdrp == NULL) ? "" : stdrp->r_abbrvar;
|
abbrvar = (stdrp == NULL) ? "" : stdrp->r_abbrvar;
|
||||||
doabbr(result, size, zp->z_format, abbrvar, FALSE, TRUE);
|
doabbr(result, size, zp, abbrvar, FALSE, TRUE);
|
||||||
ep = end(result, size);
|
ep = end(result, size);
|
||||||
if (stringoffset(ep, size - (ep - result), -zp->z_gmtoff) != 0) {
|
if (stringoffset(ep, size - (ep - result), -zp->z_gmtoff) != 0) {
|
||||||
result[0] = '\0';
|
result[0] = '\0';
|
||||||
|
@ -1831,7 +1884,7 @@ stringzone(char *result, size_t size, const struct zone *zpfirst, int zonecount)
|
||||||
if (dstrp == NULL)
|
if (dstrp == NULL)
|
||||||
return;
|
return;
|
||||||
ep = end(result, size);
|
ep = end(result, size);
|
||||||
doabbr(ep, size - (ep - result), zp->z_format, dstrp->r_abbrvar, TRUE, TRUE);
|
doabbr(ep, size - (ep - result), zp, dstrp->r_abbrvar, TRUE, TRUE);
|
||||||
if (dstrp->r_stdoff != SECSPERMIN * MINSPERHOUR) {
|
if (dstrp->r_stdoff != SECSPERMIN * MINSPERHOUR) {
|
||||||
ep = end(result, size);
|
ep = end(result, size);
|
||||||
if (stringoffset(ep, size - (ep - result),
|
if (stringoffset(ep, size - (ep - result),
|
||||||
|
@ -1957,8 +2010,8 @@ outzone(const struct zone *zpfirst, int zonecount)
|
||||||
startoff = zp->z_gmtoff;
|
startoff = zp->z_gmtoff;
|
||||||
if (zp->z_nrules == 0) {
|
if (zp->z_nrules == 0) {
|
||||||
stdoff = zp->z_stdoff;
|
stdoff = zp->z_stdoff;
|
||||||
doabbr(startbuf, max_abbr_len + 1, zp->z_format,
|
doabbr(startbuf, max_abbr_len + 1, zp, NULL,
|
||||||
NULL, stdoff != 0, FALSE);
|
stdoff != 0, FALSE);
|
||||||
type = addtype(oadd(zp->z_gmtoff, stdoff),
|
type = addtype(oadd(zp->z_gmtoff, stdoff),
|
||||||
startbuf, stdoff != 0, startttisstd,
|
startbuf, stdoff != 0, startttisstd,
|
||||||
startttisgmt);
|
startttisgmt);
|
||||||
|
@ -2041,7 +2094,7 @@ outzone(const struct zone *zpfirst, int zonecount)
|
||||||
stdoff);
|
stdoff);
|
||||||
doabbr(startbuf,
|
doabbr(startbuf,
|
||||||
max_abbr_len + 1,
|
max_abbr_len + 1,
|
||||||
zp->z_format,
|
zp,
|
||||||
rp->r_abbrvar,
|
rp->r_abbrvar,
|
||||||
rp->r_stdoff != 0,
|
rp->r_stdoff != 0,
|
||||||
FALSE);
|
FALSE);
|
||||||
|
@ -2052,7 +2105,7 @@ outzone(const struct zone *zpfirst, int zonecount)
|
||||||
stdoff)) {
|
stdoff)) {
|
||||||
doabbr(startbuf,
|
doabbr(startbuf,
|
||||||
max_abbr_len + 1,
|
max_abbr_len + 1,
|
||||||
zp->z_format,
|
zp,
|
||||||
rp->r_abbrvar,
|
rp->r_abbrvar,
|
||||||
rp->r_stdoff != 0,
|
rp->r_stdoff != 0,
|
||||||
FALSE);
|
FALSE);
|
||||||
|
@ -2060,7 +2113,7 @@ outzone(const struct zone *zpfirst, int zonecount)
|
||||||
}
|
}
|
||||||
eats(zp->z_filename, zp->z_linenum,
|
eats(zp->z_filename, zp->z_linenum,
|
||||||
rp->r_filename, rp->r_linenum);
|
rp->r_filename, rp->r_linenum);
|
||||||
doabbr(ab, max_abbr_len + 1, zp->z_format,
|
doabbr(ab, max_abbr_len + 1, zp,
|
||||||
rp->r_abbrvar, rp->r_stdoff != 0, FALSE);
|
rp->r_abbrvar, rp->r_stdoff != 0, FALSE);
|
||||||
offset = oadd(zp->z_gmtoff, rp->r_stdoff);
|
offset = oadd(zp->z_gmtoff, rp->r_stdoff);
|
||||||
type = addtype(offset, ab, rp->r_stdoff != 0,
|
type = addtype(offset, ab, rp->r_stdoff != 0,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue