sync with OpenBSD -current
This commit is contained in:
parent
e9d0cc1e24
commit
9d1bed226b
@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: fortune.c,v 1.64 2024/05/21 05:00:47 jsg Exp $ */
|
/* $OpenBSD: fortune.c,v 1.65 2024/09/20 12:52:37 tb Exp $ */
|
||||||
/* $NetBSD: fortune.c,v 1.8 1995/03/23 08:28:40 cgd Exp $ */
|
/* $NetBSD: fortune.c,v 1.8 1995/03/23 08:28:40 cgd Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -413,6 +413,7 @@ add_file(int percent, char *file, char *dir, FILEDESC **head, FILEDESC **tail,
|
|||||||
if (was_malloc)
|
if (was_malloc)
|
||||||
free(path);
|
free(path);
|
||||||
path = offensive;
|
path = offensive;
|
||||||
|
offensive = NULL;
|
||||||
file = off_name(file);
|
file = off_name(file);
|
||||||
was_malloc = true;
|
was_malloc = true;
|
||||||
}
|
}
|
||||||
@ -430,9 +431,9 @@ over:
|
|||||||
* we'll pick up the -o file anyway.
|
* we'll pick up the -o file anyway.
|
||||||
*/
|
*/
|
||||||
if (All_forts && offensive != NULL) {
|
if (All_forts && offensive != NULL) {
|
||||||
path = offensive;
|
|
||||||
if (was_malloc)
|
if (was_malloc)
|
||||||
free(path);
|
free(path);
|
||||||
|
path = offensive;
|
||||||
offensive = NULL;
|
offensive = NULL;
|
||||||
was_malloc = true;
|
was_malloc = true;
|
||||||
DPRINTF(1, (stderr, "\ttrying \"%s\"\n", path));
|
DPRINTF(1, (stderr, "\ttrying \"%s\"\n", path));
|
||||||
|
@ -625,7 +625,7 @@ edit_command (char *arg, int from_tty)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((editor = (char *) getenv ("EDITOR")) == NULL)
|
if ((editor = (char *) getenv ("EDITOR")) == NULL)
|
||||||
editor = "/bin/ex";
|
editor = "/usr/bin/ex";
|
||||||
|
|
||||||
/* Approximate base-10 log of line to 1 unit for digit count */
|
/* Approximate base-10 log of line to 1 unit for digit count */
|
||||||
for(log10=32, m=0x80000000; !(sal.line & m) && log10>0; log10--, m=m>>1);
|
for(log10=32, m=0x80000000; !(sal.line & m) && log10>0; log10--, m=m>>1);
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
@set EDITION Ninth
|
@set EDITION Ninth
|
||||||
|
|
||||||
@c !!set GDB edit command default editor
|
@c !!set GDB edit command default editor
|
||||||
@set EDITOR /bin/ex
|
@set EDITOR /usr/bin/ex
|
||||||
|
|
||||||
@c THIS MANUAL REQUIRES TEXINFO 4.0 OR LATER.
|
@c THIS MANUAL REQUIRES TEXINFO 4.0 OR LATER.
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# $OpenBSD: Makefile,v 1.9 2017/03/08 22:53:35 schwarze Exp $
|
# $OpenBSD: Makefile,v 1.10 2024/09/21 11:56:36 schwarze Exp $
|
||||||
|
|
||||||
REGRESS_TARGETS = break eos font noarg
|
REGRESS_TARGETS = break eos font noarg parse
|
||||||
LINT_TARGETS = noarg
|
LINT_TARGETS = noarg
|
||||||
|
|
||||||
.include <bsd.regress.mk>
|
.include <bsd.regress.mk>
|
||||||
|
13
regress/usr.bin/mandoc/mdoc/In/parse.in
Normal file
13
regress/usr.bin/mandoc/mdoc/In/parse.in
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
.\" $OpenBSD: parse.in,v 1.1 2024/09/21 11:56:36 schwarze Exp $
|
||||||
|
.Dd $Mdocdate: September 21 2024 $
|
||||||
|
.Dt IN-PARSE 2
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm In-parse
|
||||||
|
.Nd parsing of include file macros
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
first line
|
||||||
|
.Sy parent In arg1 arg2 Sy child
|
||||||
|
middle line
|
||||||
|
.In ( arg )
|
||||||
|
last line
|
9
regress/usr.bin/mandoc/mdoc/In/parse.out_ascii
Normal file
9
regress/usr.bin/mandoc/mdoc/In/parse.out_ascii
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
IN-PARSE(2) System Calls Manual IN-PARSE(2)
|
||||||
|
|
||||||
|
NNAAMMEE
|
||||||
|
IInn--ppaarrssee - parsing of include file macros
|
||||||
|
|
||||||
|
DDEESSCCRRIIPPTTIIOONN
|
||||||
|
first line ppaarreenntt <_a_r_g_1> arg2 cchhiilldd middle line (<_a_r_g>) last line
|
||||||
|
|
||||||
|
OpenBSD September 21, 2024 OpenBSD
|
15
regress/usr.bin/mandoc/mdoc/In/parse.out_markdown
Normal file
15
regress/usr.bin/mandoc/mdoc/In/parse.out_markdown
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
IN-PARSE(2) - System Calls Manual
|
||||||
|
|
||||||
|
# NAME
|
||||||
|
|
||||||
|
**In-parse** - parsing of include file macros
|
||||||
|
|
||||||
|
# DESCRIPTION
|
||||||
|
|
||||||
|
first line
|
||||||
|
**parent** <*arg1*> arg2 **child**
|
||||||
|
middle line
|
||||||
|
(<*arg*>)
|
||||||
|
last line
|
||||||
|
|
||||||
|
OpenBSD - September 21, 2024
|
@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: vmm_machdep.c,v 1.36 2024/09/04 16:12:40 dv Exp $ */
|
/* $OpenBSD: vmm_machdep.c,v 1.37 2024/09/21 04:36:28 mlarkin Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org>
|
* Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org>
|
||||||
*
|
*
|
||||||
@ -72,7 +72,6 @@ int vmm_quiesce_vmx(void);
|
|||||||
int vm_run(struct vm_run_params *);
|
int vm_run(struct vm_run_params *);
|
||||||
int vm_intr_pending(struct vm_intr_params *);
|
int vm_intr_pending(struct vm_intr_params *);
|
||||||
int vm_rwregs(struct vm_rwregs_params *, int);
|
int vm_rwregs(struct vm_rwregs_params *, int);
|
||||||
int vm_mprotect_ept(struct vm_mprotect_ept_params *);
|
|
||||||
int vm_rwvmparams(struct vm_rwvmparams_params *, int);
|
int vm_rwvmparams(struct vm_rwvmparams_params *, int);
|
||||||
int vcpu_readregs_vmx(struct vcpu *, uint64_t, int, struct vcpu_reg_state *);
|
int vcpu_readregs_vmx(struct vcpu *, uint64_t, int, struct vcpu_reg_state *);
|
||||||
int vcpu_readregs_svm(struct vcpu *, uint64_t, struct vcpu_reg_state *);
|
int vcpu_readregs_svm(struct vcpu *, uint64_t, struct vcpu_reg_state *);
|
||||||
@ -125,7 +124,6 @@ int svm_fault_page(struct vcpu *, paddr_t);
|
|||||||
int vmx_fault_page(struct vcpu *, paddr_t);
|
int vmx_fault_page(struct vcpu *, paddr_t);
|
||||||
int vmx_handle_np_fault(struct vcpu *);
|
int vmx_handle_np_fault(struct vcpu *);
|
||||||
int svm_handle_np_fault(struct vcpu *);
|
int svm_handle_np_fault(struct vcpu *);
|
||||||
int vmx_mprotect_ept(struct vcpu *, vm_map_t, paddr_t, paddr_t, int);
|
|
||||||
pt_entry_t *vmx_pmap_find_pte_ept(pmap_t, paddr_t);
|
pt_entry_t *vmx_pmap_find_pte_ept(pmap_t, paddr_t);
|
||||||
int vmm_alloc_vpid(uint16_t *);
|
int vmm_alloc_vpid(uint16_t *);
|
||||||
void vmm_free_vpid(uint16_t);
|
void vmm_free_vpid(uint16_t);
|
||||||
@ -440,9 +438,6 @@ vmmioctl_machdep(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
|
|||||||
case VMM_IOC_INTR:
|
case VMM_IOC_INTR:
|
||||||
ret = vm_intr_pending((struct vm_intr_params *)data);
|
ret = vm_intr_pending((struct vm_intr_params *)data);
|
||||||
break;
|
break;
|
||||||
case VMM_IOC_MPROTECT_EPT:
|
|
||||||
ret = vm_mprotect_ept((struct vm_mprotect_ept_params *)data);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
DPRINTF("%s: unknown ioctl code 0x%lx\n", __func__, cmd);
|
DPRINTF("%s: unknown ioctl code 0x%lx\n", __func__, cmd);
|
||||||
ret = ENOTTY;
|
ret = ENOTTY;
|
||||||
@ -456,7 +451,6 @@ pledge_ioctl_vmm_machdep(struct proc *p, long com)
|
|||||||
{
|
{
|
||||||
switch (com) {
|
switch (com) {
|
||||||
case VMM_IOC_INTR:
|
case VMM_IOC_INTR:
|
||||||
case VMM_IOC_MPROTECT_EPT:
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -624,250 +618,6 @@ out:
|
|||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* vm_mprotect_ept
|
|
||||||
*
|
|
||||||
* IOCTL handler to sets the access protections of the ept
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* vmep: describes the memory for which the protect will be applied..
|
|
||||||
*
|
|
||||||
* Return values:
|
|
||||||
* 0: if successful
|
|
||||||
* ENOENT: if the VM defined by 'vmep' cannot be found
|
|
||||||
* EINVAL: if the sgpa or size is not page aligned, the prot is invalid,
|
|
||||||
* size is too large (512GB), there is wraparound
|
|
||||||
* (like start = 512GB-1 and end = 512GB-2),
|
|
||||||
* the address specified is not within the vm's mem range
|
|
||||||
* or the address lies inside reserved (MMIO) memory
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
vm_mprotect_ept(struct vm_mprotect_ept_params *vmep)
|
|
||||||
{
|
|
||||||
struct vm *vm;
|
|
||||||
struct vcpu *vcpu;
|
|
||||||
vaddr_t sgpa;
|
|
||||||
size_t size;
|
|
||||||
vm_prot_t prot;
|
|
||||||
uint64_t msr;
|
|
||||||
int ret = 0, memtype;
|
|
||||||
|
|
||||||
/* If not EPT or RVI, nothing to do here */
|
|
||||||
if (!(vmm_softc->mode == VMM_MODE_EPT
|
|
||||||
|| vmm_softc->mode == VMM_MODE_RVI))
|
|
||||||
return (0);
|
|
||||||
|
|
||||||
/* Find the desired VM */
|
|
||||||
ret = vm_find(vmep->vmep_vm_id, &vm);
|
|
||||||
|
|
||||||
/* Not found? exit. */
|
|
||||||
if (ret != 0) {
|
|
||||||
DPRINTF("%s: vm id %u not found\n", __func__,
|
|
||||||
vmep->vmep_vm_id);
|
|
||||||
return (ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
vcpu = vm_find_vcpu(vm, vmep->vmep_vcpu_id);
|
|
||||||
|
|
||||||
if (vcpu == NULL) {
|
|
||||||
DPRINTF("%s: vcpu id %u of vm %u not found\n", __func__,
|
|
||||||
vmep->vmep_vcpu_id, vmep->vmep_vm_id);
|
|
||||||
ret = ENOENT;
|
|
||||||
goto out_nolock;
|
|
||||||
}
|
|
||||||
|
|
||||||
rw_enter_write(&vcpu->vc_lock);
|
|
||||||
|
|
||||||
if (vcpu->vc_state != VCPU_STATE_STOPPED) {
|
|
||||||
DPRINTF("%s: mprotect_ept %u on vm %u attempted "
|
|
||||||
"while vcpu was in state %u (%s)\n", __func__,
|
|
||||||
vmep->vmep_vcpu_id, vmep->vmep_vm_id, vcpu->vc_state,
|
|
||||||
vcpu_state_decode(vcpu->vc_state));
|
|
||||||
ret = EBUSY;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Only proceed if the pmap is in the correct mode */
|
|
||||||
KASSERT((vmm_softc->mode == VMM_MODE_EPT &&
|
|
||||||
vm->vm_map->pmap->pm_type == PMAP_TYPE_EPT) ||
|
|
||||||
(vmm_softc->mode == VMM_MODE_RVI &&
|
|
||||||
vm->vm_map->pmap->pm_type == PMAP_TYPE_RVI));
|
|
||||||
|
|
||||||
sgpa = vmep->vmep_sgpa;
|
|
||||||
size = vmep->vmep_size;
|
|
||||||
prot = vmep->vmep_prot;
|
|
||||||
|
|
||||||
/* No W^X permissions */
|
|
||||||
if ((prot & PROT_MASK) != prot &&
|
|
||||||
(prot & (PROT_WRITE | PROT_EXEC)) == (PROT_WRITE | PROT_EXEC)) {
|
|
||||||
DPRINTF("%s: W+X permission requested\n", __func__);
|
|
||||||
ret = EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* No Write only permissions */
|
|
||||||
if ((prot & (PROT_READ | PROT_WRITE | PROT_EXEC)) == PROT_WRITE) {
|
|
||||||
DPRINTF("%s: No Write only permissions\n", __func__);
|
|
||||||
ret = EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* No empty permissions */
|
|
||||||
if (prot == 0) {
|
|
||||||
DPRINTF("%s: No empty permissions\n", __func__);
|
|
||||||
ret = EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* No execute only on EPT CPUs that don't have that capability */
|
|
||||||
if (vmm_softc->mode == VMM_MODE_EPT) {
|
|
||||||
msr = rdmsr(IA32_VMX_EPT_VPID_CAP);
|
|
||||||
if (prot == PROT_EXEC &&
|
|
||||||
(msr & IA32_EPT_VPID_CAP_XO_TRANSLATIONS) == 0) {
|
|
||||||
DPRINTF("%s: Execute only permissions unsupported,"
|
|
||||||
" adding read permission\n", __func__);
|
|
||||||
|
|
||||||
prot |= PROT_READ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Must be page aligned */
|
|
||||||
if ((sgpa & PAGE_MASK) || (size & PAGE_MASK) || size == 0) {
|
|
||||||
ret = EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* size must be less then 512GB */
|
|
||||||
if (size >= NBPD_L4) {
|
|
||||||
ret = EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* no wraparound */
|
|
||||||
if (sgpa + size < sgpa) {
|
|
||||||
ret = EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Specifying addresses within the PCI MMIO space is forbidden.
|
|
||||||
* Disallow addresses that start inside the MMIO space:
|
|
||||||
* [VMM_PCI_MMIO_BAR_BASE .. VMM_PCI_MMIO_BAR_END]
|
|
||||||
*/
|
|
||||||
if (sgpa >= VMM_PCI_MMIO_BAR_BASE && sgpa <= VMM_PCI_MMIO_BAR_END) {
|
|
||||||
ret = EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ... and disallow addresses that end inside the MMIO space:
|
|
||||||
* (VMM_PCI_MMIO_BAR_BASE .. VMM_PCI_MMIO_BAR_END]
|
|
||||||
*/
|
|
||||||
if (sgpa + size > VMM_PCI_MMIO_BAR_BASE &&
|
|
||||||
sgpa + size <= VMM_PCI_MMIO_BAR_END) {
|
|
||||||
ret = EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
memtype = vmm_get_guest_memtype(vm, sgpa);
|
|
||||||
if (memtype == VMM_MEM_TYPE_UNKNOWN) {
|
|
||||||
ret = EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (vmm_softc->mode == VMM_MODE_EPT)
|
|
||||||
ret = vmx_mprotect_ept(vcpu, vm->vm_map, sgpa, sgpa + size,
|
|
||||||
prot);
|
|
||||||
else if (vmm_softc->mode == VMM_MODE_RVI) {
|
|
||||||
pmap_write_protect(vm->vm_map->pmap, sgpa, sgpa + size, prot);
|
|
||||||
/* XXX requires a invlpga */
|
|
||||||
ret = 0;
|
|
||||||
} else
|
|
||||||
ret = EINVAL;
|
|
||||||
out:
|
|
||||||
if (vcpu != NULL)
|
|
||||||
rw_exit_write(&vcpu->vc_lock);
|
|
||||||
out_nolock:
|
|
||||||
refcnt_rele_wake(&vm->vm_refcnt);
|
|
||||||
return (ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* vmx_mprotect_ept
|
|
||||||
*
|
|
||||||
* apply the ept protections to the requested pages, faulting in the page if
|
|
||||||
* required.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
vmx_mprotect_ept(struct vcpu *vcpu, vm_map_t vm_map, paddr_t sgpa, paddr_t egpa,
|
|
||||||
int prot)
|
|
||||||
{
|
|
||||||
struct vmx_invept_descriptor vid;
|
|
||||||
pmap_t pmap;
|
|
||||||
pt_entry_t *pte;
|
|
||||||
paddr_t addr;
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
pmap = vm_map->pmap;
|
|
||||||
|
|
||||||
KERNEL_LOCK();
|
|
||||||
|
|
||||||
for (addr = sgpa; addr < egpa; addr += PAGE_SIZE) {
|
|
||||||
pte = vmx_pmap_find_pte_ept(pmap, addr);
|
|
||||||
if (pte == NULL) {
|
|
||||||
ret = uvm_fault(vm_map, addr, VM_FAULT_WIRE,
|
|
||||||
PROT_READ | PROT_WRITE | PROT_EXEC);
|
|
||||||
if (ret)
|
|
||||||
printf("%s: uvm_fault returns %d, GPA=0x%llx\n",
|
|
||||||
__func__, ret, (uint64_t)addr);
|
|
||||||
|
|
||||||
pte = vmx_pmap_find_pte_ept(pmap, addr);
|
|
||||||
if (pte == NULL) {
|
|
||||||
KERNEL_UNLOCK();
|
|
||||||
return EFAULT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (prot & PROT_READ)
|
|
||||||
*pte |= EPT_R;
|
|
||||||
else
|
|
||||||
*pte &= ~EPT_R;
|
|
||||||
|
|
||||||
if (prot & PROT_WRITE)
|
|
||||||
*pte |= EPT_W;
|
|
||||||
else
|
|
||||||
*pte &= ~EPT_W;
|
|
||||||
|
|
||||||
if (prot & PROT_EXEC)
|
|
||||||
*pte |= EPT_X;
|
|
||||||
else
|
|
||||||
*pte &= ~EPT_X;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SDM 3C: 28.3.3.4 Guidelines for Use of the INVEPT Instruction
|
|
||||||
* the first bullet point seems to say we should call invept.
|
|
||||||
*
|
|
||||||
* Software should use the INVEPT instruction with the “single-context”
|
|
||||||
* INVEPT type after making any of the following changes to an EPT
|
|
||||||
* paging-structure entry (the INVEPT descriptor should contain an
|
|
||||||
* EPTP value that references — directly or indirectly
|
|
||||||
* — the modified EPT paging structure):
|
|
||||||
* — Changing any of the privilege bits 2:0 from 1 to 0.
|
|
||||||
* */
|
|
||||||
if (pmap->eptp != 0) {
|
|
||||||
memset(&vid, 0, sizeof(vid));
|
|
||||||
vid.vid_eptp = pmap->eptp;
|
|
||||||
DPRINTF("%s: flushing EPT TLB for EPTP 0x%llx\n", __func__,
|
|
||||||
vid.vid_eptp);
|
|
||||||
invept(vcpu->vc_vmx_invept_op, &vid);
|
|
||||||
}
|
|
||||||
|
|
||||||
KERNEL_UNLOCK();
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* vmx_pmap_find_pte_ept
|
* vmx_pmap_find_pte_ept
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: vmmvar.h,v 1.105 2024/08/27 09:16:03 bluhm Exp $ */
|
/* $OpenBSD: vmmvar.h,v 1.106 2024/09/21 04:36:28 mlarkin Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org>
|
* Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org>
|
||||||
*
|
*
|
||||||
@ -492,19 +492,8 @@ struct vm_rwregs_params {
|
|||||||
struct vcpu_reg_state vrwp_regs;
|
struct vcpu_reg_state vrwp_regs;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct vm_mprotect_ept_params {
|
|
||||||
/* Input parameters to VMM_IOC_MPROTECT_EPT */
|
|
||||||
uint32_t vmep_vm_id;
|
|
||||||
uint32_t vmep_vcpu_id;
|
|
||||||
vaddr_t vmep_sgpa;
|
|
||||||
size_t vmep_size;
|
|
||||||
int vmep_prot;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* IOCTL definitions */
|
/* IOCTL definitions */
|
||||||
#define VMM_IOC_INTR _IOW('V', 6, struct vm_intr_params) /* Intr pending */
|
#define VMM_IOC_INTR _IOW('V', 6, struct vm_intr_params) /* Intr pending */
|
||||||
/* Control the protection of ept pages*/
|
|
||||||
#define VMM_IOC_MPROTECT_EPT _IOW('V', 11, struct vm_mprotect_ept_params)
|
|
||||||
|
|
||||||
/* CPUID masks */
|
/* CPUID masks */
|
||||||
/*
|
/*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: efiboot.c,v 1.58 2024/08/01 11:53:03 mglocker Exp $ */
|
/* $OpenBSD: efiboot.c,v 1.59 2024/09/20 19:12:50 kettenis Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015 YASUOKA Masahiko <yasuoka@yasuoka.net>
|
* Copyright (c) 2015 YASUOKA Masahiko <yasuoka@yasuoka.net>
|
||||||
@ -1121,6 +1121,10 @@ struct smbios_dtb {
|
|||||||
"qcom/sc8280xp-lenovo-thinkpad-x13s.dtb" },
|
"qcom/sc8280xp-lenovo-thinkpad-x13s.dtb" },
|
||||||
{ "LENOVO", "21BY",
|
{ "LENOVO", "21BY",
|
||||||
"qcom/sc8280xp-lenovo-thinkpad-x13s.dtb" },
|
"qcom/sc8280xp-lenovo-thinkpad-x13s.dtb" },
|
||||||
|
{ "LENOVO", "21N1",
|
||||||
|
"qcom/x1e78100-lenovo-thinkpad-t14s.dtb" },
|
||||||
|
{ "LENOVO", "21N2",
|
||||||
|
"qcom/x1e78100-lenovo-thinkpad-t14s.dtb" },
|
||||||
{ "LENOVO", "83ED",
|
{ "LENOVO", "83ED",
|
||||||
"qcom/x1e80100-lenovo-yoga-slim7x.dtb" },
|
"qcom/x1e80100-lenovo-yoga-slim7x.dtb" },
|
||||||
{ "SAMSUNG", "Galaxy Book4 Edge",
|
{ "SAMSUNG", "Galaxy Book4 Edge",
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.\" $OpenBSD: relayd.conf.5,v 1.209 2024/07/14 03:58:49 jsg Exp $
|
.\" $OpenBSD: relayd.conf.5,v 1.210 2024/09/21 05:37:26 aisha Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 2006 - 2016 Reyk Floeter <reyk@openbsd.org>
|
.\" Copyright (c) 2006 - 2016 Reyk Floeter <reyk@openbsd.org>
|
||||||
.\" Copyright (c) 2006, 2007 Pierre-Yves Ritschard <pyr@openbsd.org>
|
.\" Copyright (c) 2006, 2007 Pierre-Yves Ritschard <pyr@openbsd.org>
|
||||||
@ -15,7 +15,7 @@
|
|||||||
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
.\"
|
.\"
|
||||||
.Dd $Mdocdate: July 14 2024 $
|
.Dd $Mdocdate: September 21 2024 $
|
||||||
.Dt RELAYD.CONF 5
|
.Dt RELAYD.CONF 5
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@ -1537,6 +1537,20 @@ redirect "dns" {
|
|||||||
}
|
}
|
||||||
.Ed
|
.Ed
|
||||||
.Pp
|
.Pp
|
||||||
|
To load balance an IP address over multiple backend servers using a
|
||||||
|
.Xr pf 4
|
||||||
|
.Cm route-to
|
||||||
|
directive:
|
||||||
|
.Bd -literal -offset indent
|
||||||
|
table <backends> { 10.100.42.71 10.100.42.72 10.100.42.73 }
|
||||||
|
|
||||||
|
redirect "xmpp" {
|
||||||
|
listen on 10.100.42.2 tcp port 5222
|
||||||
|
|
||||||
|
route to <backends> port 5222 check tcp interface em0
|
||||||
|
}
|
||||||
|
.Ed
|
||||||
|
.Pp
|
||||||
The following configuration would add a relay to forward
|
The following configuration would add a relay to forward
|
||||||
secure HTTPS connections to a pool of HTTP webservers
|
secure HTTPS connections to a pool of HTTP webservers
|
||||||
using the
|
using the
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: arm64_vm.c,v 1.2 2024/09/11 15:42:52 bluhm Exp $ */
|
/* $OpenBSD: arm64_vm.c,v 1.3 2024/09/21 04:12:18 mlarkin Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2024 Dave Voutila <dv@openbsd.org>
|
* Copyright (c) 2024 Dave Voutila <dv@openbsd.org>
|
||||||
*
|
*
|
||||||
@ -17,6 +17,7 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
#include "vmd.h"
|
#include "vmd.h"
|
||||||
|
#include "vmm.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
create_memory_map(struct vm_create_params *vcp)
|
create_memory_map(struct vm_create_params *vcp)
|
||||||
|
Loading…
Reference in New Issue
Block a user