sync code with last improvements from OpenBSD
This commit is contained in:
parent
30d14db1d3
commit
0c904fa153
235 changed files with 12410 additions and 6193 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: vmm_machdep.c,v 1.6 2023/09/03 09:30:43 mlarkin Exp $ */
|
||||
/* $OpenBSD: vmm_machdep.c,v 1.7 2023/09/05 14:00:40 mlarkin Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org>
|
||||
*
|
||||
|
@ -6319,7 +6319,7 @@ vmm_handle_cpuid(struct vcpu *vcpu)
|
|||
*rax = eax;
|
||||
*rbx = ebx;
|
||||
*rcx = ecx;
|
||||
*rdx = edx & VMM_APMI_EDX_MASK;
|
||||
*rdx = edx & VMM_APMI_EDX_INCLUDE_MASK;
|
||||
break;
|
||||
case 0x80000008: /* Phys bits info and topology (AMD) */
|
||||
*rax = eax;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: vmmvar.h,v 1.92 2023/09/03 09:30:43 mlarkin Exp $ */
|
||||
/* $OpenBSD: vmmvar.h,v 1.93 2023/09/05 14:00:41 mlarkin Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org>
|
||||
*
|
||||
|
@ -559,7 +559,9 @@ struct vm_mprotect_ept_params {
|
|||
CPUIDEBX_STIBP | CPUIDEBX_IBRS_ALWAYSON | CPUIDEBX_STIBP_ALWAYSON | \
|
||||
CPUIDEBX_IBRS_PREF | CPUIDEBX_SSBD | CPUIDEBX_VIRT_SSBD | \
|
||||
CPUIDEBX_SSBD_NOTREQ)
|
||||
#define VMM_APMI_EDX_MASK ~(CPUIDEDX_HWPSTATE)
|
||||
|
||||
/* This mask is an include list for bits we want to expose */
|
||||
#define VMM_APMI_EDX_INCLUDE_MASK (CPUIDEDX_ITSC)
|
||||
|
||||
/*
|
||||
* SEFF flags - copy from host minus:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: apldc.c,v 1.9 2023/07/03 15:54:07 tobhe Exp $ */
|
||||
/* $OpenBSD: apldc.c,v 1.10 2023/09/05 11:04:06 tobhe Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2022 Mark Kettenis <kettenis@openbsd.org>
|
||||
*
|
||||
|
@ -575,17 +575,22 @@ apldchidev_handle_gpio_req(struct apldchidev_softc *sc, uint8_t iface,
|
|||
if (sc->sc_ngpios >= APLDCHIDEV_NUM_GPIOS)
|
||||
return;
|
||||
|
||||
if (iface == sc->sc_iface_mt)
|
||||
node = OF_getnodebyname(sc->sc_node, "multi-touch");
|
||||
else if (iface == sc->sc_iface_stm)
|
||||
node = OF_getnodebyname(sc->sc_node, "stm");
|
||||
if (node == -1)
|
||||
return;
|
||||
|
||||
node = sc->sc_node;
|
||||
snprintf(name, sizeof(name), "apple,%s-gpios", req->name);
|
||||
len = OF_getproplen(node, name);
|
||||
if (len <= 0 || len > sizeof(gpio))
|
||||
return;
|
||||
if (len <= 0 || len > sizeof(gpio)) {
|
||||
/* XXX: older device trees store gpios in sub-nodes */
|
||||
if (iface == sc->sc_iface_mt)
|
||||
node = OF_getnodebyname(sc->sc_node, "multi-touch");
|
||||
else if (iface == sc->sc_iface_stm)
|
||||
node = OF_getnodebyname(sc->sc_node, "stm");
|
||||
if (node == -1)
|
||||
return;
|
||||
len = OF_getproplen(node, name);
|
||||
if (len <= 0 || len > sizeof(gpio))
|
||||
return;
|
||||
}
|
||||
|
||||
OF_getpropintarray(node, name, gpio, len);
|
||||
gpio_controller_config_pin(gpio, GPIO_CONFIG_OUTPUT);
|
||||
gpio_controller_set_pin(gpio, 0);
|
||||
|
|
|
@ -31,7 +31,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
|||
|
||||
***************************************************************************/
|
||||
|
||||
/* $OpenBSD: if_em.c,v 1.365 2023/02/09 21:21:27 naddy Exp $ */
|
||||
/* $OpenBSD: if_em.c,v 1.366 2023/09/05 13:06:42 naddy Exp $ */
|
||||
/* $FreeBSD: if_em.c,v 1.46 2004/09/29 18:28:28 mlaier Exp $ */
|
||||
|
||||
#include <dev/pci/if_em.h>
|
||||
|
@ -1474,7 +1474,7 @@ em_iff(struct em_softc *sc)
|
|||
ETHER_NEXT_MULTI(step, enm);
|
||||
}
|
||||
|
||||
em_mc_addr_list_update(&sc->hw, mta, ac->ac_multicnt, 0, 1);
|
||||
em_mc_addr_list_update(&sc->hw, mta, ac->ac_multicnt, 0);
|
||||
}
|
||||
|
||||
E1000_WRITE_REG(&sc->hw, RCTL, reg_rctl);
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
*******************************************************************************/
|
||||
|
||||
/* $OpenBSD: if_em_hw.c,v 1.117 2023/04/11 00:45:08 jsg Exp $ */
|
||||
/* $OpenBSD: if_em_hw.c,v 1.118 2023/09/05 13:06:42 naddy Exp $ */
|
||||
/*
|
||||
* if_em_hw.c Shared functions for accessing and configuring the MAC
|
||||
*/
|
||||
|
@ -7884,20 +7884,16 @@ em_init_rx_addrs(struct em_hw *hw)
|
|||
* mc_addr_list - the list of new multicast addresses
|
||||
* mc_addr_count - number of addresses
|
||||
* pad - number of bytes between addresses in the list
|
||||
* rar_used_count - offset where to start adding mc addresses into the RAR's
|
||||
*
|
||||
* The given list replaces any existing list. Clears the last 15 receive
|
||||
* address registers and the multicast table. Uses receive address registers
|
||||
* for the first 15 multicast addresses, and hashes the rest into the
|
||||
* The given list replaces any existing list and hashes the addresses into the
|
||||
* multicast table.
|
||||
*****************************************************************************/
|
||||
void
|
||||
em_mc_addr_list_update(struct em_hw *hw, uint8_t *mc_addr_list,
|
||||
uint32_t mc_addr_count, uint32_t pad, uint32_t rar_used_count)
|
||||
uint32_t mc_addr_count, uint32_t pad)
|
||||
{
|
||||
uint32_t hash_value;
|
||||
uint32_t i;
|
||||
uint32_t num_rar_entry;
|
||||
uint32_t num_mta_entry;
|
||||
DEBUGFUNC("em_mc_addr_list_update");
|
||||
/*
|
||||
|
@ -7906,28 +7902,6 @@ em_mc_addr_list_update(struct em_hw *hw, uint8_t *mc_addr_list,
|
|||
*/
|
||||
hw->num_mc_addrs = mc_addr_count;
|
||||
|
||||
/* Clear RAR[1-15] */
|
||||
DEBUGOUT(" Clearing RAR[1-15]\n");
|
||||
num_rar_entry = E1000_RAR_ENTRIES;
|
||||
if (IS_ICH8(hw->mac_type))
|
||||
num_rar_entry = E1000_RAR_ENTRIES_ICH8LAN;
|
||||
if (hw->mac_type == em_ich8lan)
|
||||
num_rar_entry -= 1;
|
||||
/*
|
||||
* Reserve a spot for the Locally Administered Address to work around
|
||||
* an 82571 issue in which a reset on one port will reload the MAC on
|
||||
* the other port.
|
||||
*/
|
||||
if ((hw->mac_type == em_82571) && (hw->laa_is_present == TRUE))
|
||||
num_rar_entry -= 1;
|
||||
|
||||
for (i = rar_used_count; i < num_rar_entry; i++) {
|
||||
E1000_WRITE_REG_ARRAY(hw, RA, (i << 1), 0);
|
||||
E1000_WRITE_FLUSH(hw);
|
||||
E1000_WRITE_REG_ARRAY(hw, RA, ((i << 1) + 1), 0);
|
||||
E1000_WRITE_FLUSH(hw);
|
||||
}
|
||||
|
||||
/* Clear the MTA */
|
||||
DEBUGOUT(" Clearing MTA\n");
|
||||
num_mta_entry = E1000_NUM_MTA_REGISTERS;
|
||||
|
@ -7954,18 +7928,7 @@ em_mc_addr_list_update(struct em_hw *hw, uint8_t *mc_addr_list,
|
|||
(i * (ETH_LENGTH_OF_ADDRESS + pad)));
|
||||
|
||||
DEBUGOUT1(" Hash value = 0x%03X\n", hash_value);
|
||||
/*
|
||||
* Place this multicast address in the RAR if there is room, *
|
||||
* else put it in the MTA
|
||||
*/
|
||||
if (rar_used_count < num_rar_entry) {
|
||||
em_rar_set(hw, mc_addr_list +
|
||||
(i * (ETH_LENGTH_OF_ADDRESS + pad)),
|
||||
rar_used_count);
|
||||
rar_used_count++;
|
||||
} else {
|
||||
em_mta_set(hw, hash_value);
|
||||
}
|
||||
em_mta_set(hw, hash_value);
|
||||
}
|
||||
DEBUGOUT("MC Update Complete\n");
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
*******************************************************************************/
|
||||
|
||||
/* $OpenBSD: if_em_hw.h,v 1.88 2022/11/06 18:17:56 mbuhl Exp $ */
|
||||
/* $OpenBSD: if_em_hw.h,v 1.89 2023/09/05 13:06:43 naddy Exp $ */
|
||||
/* $FreeBSD: if_em_hw.h,v 1.15 2005/05/26 23:32:02 tackerman Exp $ */
|
||||
|
||||
/* if_em_hw.h
|
||||
|
@ -428,7 +428,7 @@ boolean_t em_get_flash_presence_i210(struct em_hw *);
|
|||
|
||||
/* Filters (multicast, vlan, receive) */
|
||||
void em_mc_addr_list_update(struct em_hw *hw, uint8_t * mc_addr_list, uint32_t mc_addr_count,
|
||||
uint32_t pad, uint32_t rar_used_count);
|
||||
uint32_t pad);
|
||||
uint32_t em_hash_mc_addr(struct em_hw *hw, uint8_t *mc_addr);
|
||||
void em_mta_set(struct em_hw *hw, uint32_t hash_value);
|
||||
void em_rar_set(struct em_hw *hw, uint8_t *mc_addr, uint32_t rar_index);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ksmn.c,v 1.8 2023/06/23 03:47:10 mlarkin Exp $ */
|
||||
/* $OpenBSD: ksmn.c,v 1.9 2023/09/05 13:06:01 stsp Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2019 Bryan Steele <brynet@openbsd.org>
|
||||
|
@ -105,6 +105,7 @@ static const struct pci_matchid ksmn_devices[] = {
|
|||
{ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_17_1X_RC },
|
||||
{ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_17_3X_RC },
|
||||
{ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_17_6X_RC },
|
||||
{ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_4X_RC },
|
||||
{ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_6X_RC },
|
||||
};
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: uvm_fault.c,v 1.134 2023/09/02 08:24:40 mpi Exp $ */
|
||||
/* $OpenBSD: uvm_fault.c,v 1.135 2023/09/05 05:08:26 guenther Exp $ */
|
||||
/* $NetBSD: uvm_fault.c,v 1.51 2000/08/06 00:22:53 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -1455,7 +1455,20 @@ uvm_fault_lower(struct uvm_faultinfo *ufi, struct uvm_faultctx *flt,
|
|||
*/
|
||||
if ((amap_flags(amap) & AMAP_SHARED) != 0) {
|
||||
pmap_page_protect(uobjpage, PROT_NONE);
|
||||
}
|
||||
}
|
||||
#if defined(MULTIPROCESSOR) && !defined(__HAVE_PMAP_MPSAFE_ENTER_COW)
|
||||
/*
|
||||
* Otherwise:
|
||||
* If there are multiple threads, either uvm or the
|
||||
* pmap has to make sure no threads see the old RO
|
||||
* mapping once any have seen the new RW mapping.
|
||||
* uvm does it here by forcing it to PROT_NONE before
|
||||
* inserting the new mapping.
|
||||
*/
|
||||
else if (P_HASSIBLING(curproc)) {
|
||||
pmap_page_protect(uobjpage, PROT_NONE);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* dispose of uobjpage. drop handle to uobj as well. */
|
||||
if (uobjpage->pg_flags & PG_WANTED)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue