On 10/14/20, Mark Kettenis <mark.kette...@xs4all.nl> wrote:
>> From: James Hastings <mooset...@gmail.com>
>> Date: Sun, 11 Oct 2020 03:49:11 -0400 (EDT)
>> 
>> On Thu, 08 Oct 2020 20:29:38 +0000 Mark Kettenis wrote:
>> > Diff below adds a driver for the GPIO controller found on the Intel
>> > 400 Series PCH as found on (for example) the Lenovo X1 gen 8 laptop.
>> > Since I don't have such hardware, I'd appreciate some tests on laptops
>> > that current show:
>> > 
>> > "INT34BB" at acpi0 not configured
>> > 
>> 
>> Thanks for the driver Mark! Compiles fine here but panics like this:
>> ihidev0 at iic0 addr 0x2c gpio 291panic: kernel diagnostic assertion "pin
>> >= 0 && pin < sc->sc_npins" failed: file
>> "/usr/src/sys/dev/acpi/pchgpio.c", line 335
>> 
>> Let me know any way I can help.
> 
> Can you figure out what pin number it is trying to use?
> 
> Thanks,
> 
> Mark
> 
> P.S. Feel free to finish the driver yourself if you have time.  This
>      sort of thing is way easier if you have the hardware.  The
>      hardware itself should be very similar to aplgpio(4).  It's just
>      that the registers moved around a bit and there is a single ACPI
>      device for all the pin "communities" instead of the model of
>      separate ACPI devices for each community that aplgpio(4) uses.
>

Election day surprise! Touchpad now works on my 400 Series laptop INT34BB.

Please test on Sunrisepoint/100 Series INT344B as I do not have that hardware.

The Cannonlake INT34BB controller is numbered as if there are 32 GPIO pins
per group. The real pins are packed together and vary from 8 to 25 pins per
group. In my case, GPIO 291 maps to pin 208, offset 27, bank 1, bar 2 (GPP_E).

dmesg and vmstat -zi included. Interrupt count is after moving cursor to xterm.

Index: arch/amd64/conf/GENERIC
===================================================================
RCS file: /cvs/src/sys/arch/amd64/conf/GENERIC,v
retrieving revision 1.494
diff -u -p -u -r1.494 GENERIC
--- arch/amd64/conf/GENERIC     27 Oct 2020 02:39:07 -0000      1.494
+++ arch/amd64/conf/GENERIC     4 Nov 2020 02:03:06 -0000
@@ -66,6 +66,7 @@ aplgpio*      at acpi?
 bytgpio*       at acpi?
 chvgpio*       at acpi?
 glkgpio*       at acpi?
+pchgpio*       at acpi?
 sdhc*          at acpi?
 acpicbkbd*     at acpi?
 acpials*       at acpi?
Index: dev/acpi/files.acpi
===================================================================
RCS file: /cvs/src/sys/dev/acpi/files.acpi,v
retrieving revision 1.58
diff -u -p -u -r1.58 files.acpi
--- dev/acpi/files.acpi 27 Oct 2020 02:39:07 -0000      1.58
+++ dev/acpi/files.acpi 4 Nov 2020 02:03:07 -0000
@@ -151,6 +151,11 @@ device     glkgpio
 attach glkgpio at acpi
 file   dev/acpi/glkgpio.c              glkgpio
 
+# Intel PCH GPIO
+device pchgpio
+attach pchgpio at acpi
+file   dev/acpi/pchgpio.c              pchgpio
+
 # "Intel" Dollar Cove TI PMIC
 device tipmic
 attach tipmic at i2c
Index: dev/acpi/pchgpio.c
===================================================================
RCS file: dev/acpi/pchgpio.c
diff -N dev/acpi/pchgpio.c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ dev/acpi/pchgpio.c  4 Nov 2020 02:03:07 -0000
@@ -0,0 +1,415 @@
+/*     $OpenBSD$       */
+/*
+ * Copyright (c) 2020 Mark Kettenis
+ * Copyright (c) 2020 James Hastings
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/param.h>
+#include <sys/malloc.h>
+#include <sys/systm.h>
+
+#include <dev/acpi/acpireg.h>
+#include <dev/acpi/acpivar.h>
+#include <dev/acpi/acpidev.h>
+#include <dev/acpi/amltypes.h>
+#include <dev/acpi/dsdt.h>
+
+#define PCHGPIO_MAXCOM         4
+
+#define PCHGPIO_CONF_TXSTATE   0x00000001
+#define PCHGPIO_CONF_RXSTATE   0x00000002
+#define PCHGPIO_CONF_RXINV     0x00800000
+#define PCHGPIO_CONF_RXEV_EDGE 0x02000000
+#define PCHGPIO_CONF_RXEV_ZERO 0x04000000
+#define PCHGPIO_CONF_RXEV_MASK 0x06000000
+
+#define PCHGPIO_PADBAR         0x00c
+
+struct pchgpio_group {
+       uint8_t         bar;
+       uint8_t         bank;
+       uint16_t        base;
+       uint16_t        limit;
+       uint16_t        offset;
+       int16_t         gpiobase;
+};
+
+struct pchgpio_device {
+       uint16_t        pad_own;
+       uint16_t        pad_size;
+       uint16_t        padcfglock;
+       uint16_t        hostsw_own;
+       uint16_t        gpi_is;
+       uint16_t        gpi_ie;
+       struct pchgpio_group *groups;
+       int             ngroups;
+       int             npins;
+};
+
+struct pchgpio_match {
+       const char      *hid;
+       struct pchgpio_device *device;
+};
+
+struct pchgpio_intrhand {
+       int (*ih_func)(void *);
+       void *ih_arg;
+};
+
+struct pchgpio_softc {
+       struct device sc_dev;
+       struct acpi_softc *sc_acpi;
+       struct aml_node *sc_node;
+
+       bus_space_tag_t sc_memt[PCHGPIO_MAXCOM];
+       bus_space_handle_t sc_memh[PCHGPIO_MAXCOM];
+       void *sc_ih;
+       int sc_naddr;
+
+       struct pchgpio_device *sc_device;
+       uint16_t sc_padbar[PCHGPIO_MAXCOM];
+       int sc_padsize;
+
+       int sc_npins;
+       struct pchgpio_intrhand *sc_pin_ih;
+
+       struct acpi_gpio sc_gpio;
+};
+
+int    pchgpio_match(struct device *, void *, void *);
+void   pchgpio_attach(struct device *, struct device *, void *);
+
+struct cfattach pchgpio_ca = {
+       sizeof(struct pchgpio_softc), pchgpio_match, pchgpio_attach
+};
+
+struct cfdriver pchgpio_cd = {
+       NULL, "pchgpio", DV_DULL
+};
+
+const char *pchgpio_hids[] = {
+       "INT344B",
+       "INT34BB",
+       NULL
+};
+
+struct pchgpio_group spt_lp_groups[] =
+{
+       /* Community 0 */
+       { 0, 0, 0, 23, 0, 0 },          /* GPP_A */
+       { 0, 1, 24, 47, 24, 24 },       /* GPP_B */
+
+       /* Community 1 */
+       { 1, 0, 48, 71, 0, 48 },        /* GPP_C */
+       { 1, 1, 72, 95, 24, 72 },       /* GPP_D */
+       { 1, 2, 96, 119, 48, 96 },      /* GPP_E */
+
+       /* Community 3 */
+       { 2, 0, 120, 143, 0, 120 },     /* GPP_F */
+       { 2, 1, 144, 151, 24, 144 },    /* GPP_G */
+};
+
+struct pchgpio_device spt_lp_device =
+{
+       .pad_own = 0x20,
+       .pad_size = 8,
+       .padcfglock = 0x100,
+       .hostsw_own = 0x0d0,
+       .gpi_is = 0x100,
+       .gpi_ie = 0x120,
+       .groups = spt_lp_groups,
+       .ngroups = nitems(spt_lp_groups),
+       .npins = 168,
+};
+
+struct pchgpio_group cnl_lp_groups[] =
+{
+       /* Community 0 */
+       { 0, 0, 0, 24, 0, 0 },          /* GPP_A */
+       { 0, 1, 25, 50, 25, 32 },       /* GPP_B */
+       { 0, 2, 51, 58, 51, 64 },       /* GPP_G */
+
+       /* Community 1 */
+       { 1, 0, 68, 92, 0, 96 },        /* GPP_D */
+       { 1, 1, 93, 116, 24, 128 },     /* GPP_F */
+       { 1, 2, 117, 140, 48, 160 },    /* GPP_H */
+
+       /* Community 4 */
+       { 2, 0, 181, 204, 0, 256 },     /* GPP_C */
+       { 2, 1, 205, 228, 24, 288 },    /* GPP_E */
+};
+
+struct pchgpio_device cnl_lp_device =
+{
+       .pad_own = 0x20,
+       .pad_size = 16,
+       .padcfglock = 0x80,
+       .hostsw_own = 0xb0,
+       .gpi_is = 0x100,
+       .gpi_ie = 0x120,
+       .groups = cnl_lp_groups,
+       .ngroups = nitems(cnl_lp_groups),
+       .npins = 320,
+};
+
+struct pchgpio_match pchgpio_devices[] = {
+       { "INT344B", &spt_lp_device },
+       { "INT34BB", &cnl_lp_device },
+};
+
+int    pchgpio_read_pin(void *, int);
+void   pchgpio_write_pin(void *, int, int);
+void   pchgpio_intr_establish(void *, int, int, int (*)(), void *);
+int    pchgpio_intr(void *);
+
+int
+pchgpio_match(struct device *parent, void *match, void *aux)
+{
+       struct acpi_attach_args *aaa = aux;
+       struct cfdata *cf = match;
+
+       return acpi_matchhids(aaa, pchgpio_hids, cf->cf_driver->cd_name);
+}
+
+void
+pchgpio_attach(struct device *parent, struct device *self, void *aux)
+{
+       struct pchgpio_softc *sc = (struct pchgpio_softc *)self;
+       struct acpi_attach_args *aaa = aux;
+       int i;
+
+       sc->sc_acpi = (struct acpi_softc *)parent;
+       sc->sc_node = aaa->aaa_node;
+       printf(" %s", sc->sc_node->name);
+
+       if (aaa->aaa_naddr < 1) {
+               printf(": no registers\n");
+               return;
+       }
+
+       if (aaa->aaa_nirq < 1) {
+               printf(": no interrupt\n");
+               return;
+       }
+
+       printf(" addr");
+
+       for (i = 0; i < aaa->aaa_naddr; i++) {
+               printf(" 0x%llx/0x%llx", aaa->aaa_addr[i], aaa->aaa_size[i]);
+
+               sc->sc_memt[i] = aaa->aaa_bst[i];
+               if (bus_space_map(sc->sc_memt[i], aaa->aaa_addr[i],
+                   aaa->aaa_size[i], 0, &sc->sc_memh[i])) {
+                       printf(": can't map registers\n");
+                       goto unmap;
+               }
+
+               sc->sc_padbar[i] = bus_space_read_4(sc->sc_memt[i],
+                   sc->sc_memh[i], PCHGPIO_PADBAR);
+               sc->sc_naddr++;
+       }
+
+       printf(" irq %d", aaa->aaa_irq[0]);
+
+       for (i = 0; i < nitems(pchgpio_devices); i++) {
+               if (strcmp(pchgpio_devices[i].hid, aaa->aaa_dev) == 0) {
+                       sc->sc_device = pchgpio_devices[i].device;
+                       break;
+               }
+       }
+       KASSERT(sc->sc_device);
+
+       sc->sc_padsize = sc->sc_device->pad_size;
+       sc->sc_npins = sc->sc_device->npins;
+       sc->sc_pin_ih = mallocarray(sc->sc_npins, sizeof(*sc->sc_pin_ih),
+           M_DEVBUF, M_WAITOK | M_ZERO);
+
+       sc->sc_ih = acpi_intr_establish(aaa->aaa_irq[0], aaa->aaa_irq_flags[0],
+           IPL_BIO, pchgpio_intr, sc, sc->sc_dev.dv_xname);
+       if (sc->sc_ih == NULL) {
+               printf(": can't establish interrupt\n");
+               goto unmap;
+       }
+
+       sc->sc_gpio.cookie = sc;
+       sc->sc_gpio.read_pin = pchgpio_read_pin;
+       sc->sc_gpio.write_pin = pchgpio_write_pin;
+       sc->sc_gpio.intr_establish = pchgpio_intr_establish;
+       sc->sc_node->gpio = &sc->sc_gpio;
+
+#if 0
+       /* Mask and clear all interrupts. */
+       uint8_t bank, bar;
+       for (i = 0; i < sc->sc_device->ngroups; i++) {
+               bank = sc->sc_device->groups[i].bank;
+               bar = sc->sc_device->groups[i].bar;
+
+               bus_space_write_4(sc->sc_memt[bar], sc->sc_memh[bar],
+                   sc->sc_device->gpi_ie + bank * 4, 0x00000000);
+               bus_space_write_4(sc->sc_memt[bar], sc->sc_memh[bar],
+                   sc->sc_device->gpi_is + bank * 4, 0xffffffff);
+       }
+#endif
+
+       printf(", %d pins\n", sc->sc_npins);
+
+       acpi_register_gpio(sc->sc_acpi, sc->sc_node);
+       return;
+
+unmap:
+       free(sc->sc_pin_ih, M_DEVBUF, sc->sc_npins * sizeof(*sc->sc_pin_ih));
+       for (i = 0; i < sc->sc_naddr; i++)
+               bus_space_unmap(sc->sc_memt[i], sc->sc_memh[i],
+                   aaa->aaa_size[i]);
+}
+
+struct pchgpio_group *
+pchgpio_find_group(struct pchgpio_softc *sc, int pin)
+{
+       int i, npads;
+
+       for (i = 0; i < sc->sc_device->ngroups; i++) {
+               npads = 1 + sc->sc_device->groups[i].limit -
+                   sc->sc_device->groups[i].base;
+
+               if (pin >= sc->sc_device->groups[i].gpiobase &&
+                   pin < sc->sc_device->groups[i].gpiobase + npads)
+                       return &sc->sc_device->groups[i];
+       }
+       return NULL;
+}
+
+int
+pchgpio_read_pin(void *cookie, int pin)
+{
+       struct pchgpio_softc *sc = cookie;
+       struct pchgpio_group *group;
+       uint32_t reg;
+       uint16_t offset;
+       uint8_t bar;
+
+       group = pchgpio_find_group(sc, pin);
+       offset = group->offset + (pin - group->gpiobase);
+       bar = group->bar;
+
+       reg = bus_space_read_4(sc->sc_memt[bar], sc->sc_memh[bar],
+           sc->sc_padbar[bar] + offset * sc->sc_padsize);
+
+       return !!(reg & PCHGPIO_CONF_RXSTATE);
+}
+
+void
+pchgpio_write_pin(void *cookie, int pin, int value)
+{
+       struct pchgpio_softc *sc = cookie;
+       struct pchgpio_group *group;
+       uint32_t reg;
+       uint16_t offset;
+       uint8_t bar;
+
+       group = pchgpio_find_group(sc, pin);
+       offset = group->offset + (pin - group->gpiobase);
+       bar = group->bar;
+
+       reg = bus_space_read_4(sc->sc_memt[bar], sc->sc_memh[bar],
+           sc->sc_padbar[bar] + offset * sc->sc_padsize);
+       if (value)
+               reg |= PCHGPIO_CONF_TXSTATE;
+       else
+               reg &= ~PCHGPIO_CONF_TXSTATE;
+       bus_space_write_4(sc->sc_memt[bar], sc->sc_memh[bar],
+           sc->sc_padbar[bar] + offset * sc->sc_padsize, reg);
+}
+
+void
+pchgpio_intr_establish(void *cookie, int pin, int flags,
+    int (*func)(void *), void *arg)
+{
+       struct pchgpio_softc *sc = cookie;
+       struct pchgpio_group *group;
+       uint32_t reg;
+       uint16_t offset;
+       uint8_t bank, bar;
+       
+       KASSERT(pin >= 0 && pin < sc->sc_npins);
+
+       if ((group = pchgpio_find_group(sc, pin)) == NULL)
+               return;
+
+       offset = group->offset + (pin - group->gpiobase);
+       bar = group->bar;
+       bank = group->bank;
+
+       sc->sc_pin_ih[pin].ih_func = func;
+       sc->sc_pin_ih[pin].ih_arg = arg;
+
+       reg = bus_space_read_4(sc->sc_memt[bar], sc->sc_memh[bar],
+           sc->sc_padbar[bar] + offset * sc->sc_padsize);
+       reg &= ~(PCHGPIO_CONF_RXEV_MASK | PCHGPIO_CONF_RXINV);
+       if ((flags & LR_GPIO_MODE) == 1)
+               reg |= PCHGPIO_CONF_RXEV_EDGE;
+       if ((flags & LR_GPIO_POLARITY) == LR_GPIO_ACTLO)
+               reg |= PCHGPIO_CONF_RXINV;
+       if ((flags & LR_GPIO_POLARITY) == LR_GPIO_ACTBOTH)
+               reg |= PCHGPIO_CONF_RXEV_EDGE | PCHGPIO_CONF_RXEV_ZERO;
+       bus_space_write_4(sc->sc_memt[bar], sc->sc_memh[bar],
+           sc->sc_padbar[bar] + offset * sc->sc_padsize, reg);
+
+       reg = bus_space_read_4(sc->sc_memt[bar], sc->sc_memh[bar],
+           sc->sc_device->gpi_ie + bank * 4);
+       reg |= (1 << (pin - group->gpiobase));
+       bus_space_write_4(sc->sc_memt[bar], sc->sc_memh[bar],
+           sc->sc_device->gpi_ie + bank * 4, reg);
+}
+
+int
+pchgpio_intr(void *arg)
+{
+       struct pchgpio_softc *sc = arg;
+       uint32_t status, enable;
+       int gpiobase, group, bit, pin, handled = 0;
+       uint16_t base, limit;
+       uint16_t offset;
+       uint8_t bank, bar;
+
+       for (group = 0; group < sc->sc_device->ngroups; group++) {
+               bar = sc->sc_device->groups[group].bar;
+               bank = sc->sc_device->groups[group].bank;
+               base = sc->sc_device->groups[group].base;
+               limit = sc->sc_device->groups[group].limit;
+               offset = sc->sc_device->groups[group].offset;
+               gpiobase = sc->sc_device->groups[group].gpiobase;
+
+               status = bus_space_read_4(sc->sc_memt[bar], sc->sc_memh[bar],
+                   sc->sc_device->gpi_is + bank * 4);
+               bus_space_write_4(sc->sc_memt[bar], sc->sc_memh[bar],
+                   sc->sc_device->gpi_is + bank * 4, status);
+               enable = bus_space_read_4(sc->sc_memt[bar], sc->sc_memh[bar],
+                   sc->sc_device->gpi_ie + bank * 4);
+               status &= enable;
+               if (status == 0)
+                       continue;
+
+               for (bit = 0; bit <= (limit - base); bit++) {
+                       pin = gpiobase + bit;
+                       if (status & (1 << bit) &&
+                           sc->sc_pin_ih[pin].ih_func)
+                               
sc->sc_pin_ih[pin].ih_func(sc->sc_pin_ih[pin].ih_arg);
+                       handled = 1;
+               }
+       }
+
+       return handled;
+}


dmesg:
OpenBSD 6.8-current (GENERIC.MP) #37: Tue Nov  3 20:41:35 EST 2020
    ti...@ryzen3.moose-tek.test:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 8252678144 (7870MB)
avail mem = 7987212288 (7617MB)
random: good seed from bootblocks
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 3.2 @ 0x8d901000 (69 entries)
bios0: vendor Insyde version "F.03" date 08/01/2019
bios0: HP HP Pavilion x360 Convertible 14m-dh1xxx
acpi0 at bios0: ACPI 5.1
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP UEFI SSDT SSDT SSDT SSDT SSDT TPM2 SSDT SSDT MSDM LPIT 
WSMT SSDT SSDT DBGP DBG2 SSDT SSDT NHLT HPET APIC MCFG SSDT DMAR SSDT SSDT SSDT 
UEFI UEFI FPDT BGRT
acpi0: wakeup devices XHC_(S3) XDCI(S4) HDAS(S4) RP01(S4) PXSX(S4) RP02(S4) 
PXSX(S4) RP03(S4) PXSX(S4) RP04(S4) PXSX(S4) RP05(S4) PXSX(S4) PEGA(S4) 
RP06(S4) PXSX(S4) [...]
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpihpet0 at acpi0: 23999999 Hz
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz, 3890.80 MHz, 06-8e-0c
cpu0: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu0: 256KB 64b/line 8-way L2 cache
cpu0: smt 0, core 0, package 0
mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges
cpu0: apic clock running at 24MHz
cpu0: mwait min=64, max=64, C-substates=0.2.1.2.4.1.1.1, IBE
cpu1 at mainbus0: apid 2 (application processor)
cpu1: Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz, 3890.94 MHz, 06-8e-0c
cpu1: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu1: 256KB 64b/line 8-way L2 cache
cpu1: smt 0, core 1, package 0
cpu2 at mainbus0: apid 4 (application processor)
cpu2: Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz, 3890.94 MHz, 06-8e-0c
cpu2: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu2: 256KB 64b/line 8-way L2 cache
cpu2: smt 0, core 2, package 0
cpu3 at mainbus0: apid 6 (application processor)
cpu3: Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz, 3700.33 MHz, 06-8e-0c
cpu3: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu3: 256KB 64b/line 8-way L2 cache
cpu3: smt 0, core 3, package 0
cpu4 at mainbus0: apid 1 (application processor)
cpu4: Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz, 3656.63 MHz, 06-8e-0c
cpu4: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu4: 256KB 64b/line 8-way L2 cache
cpu4: smt 1, core 0, package 0
cpu5 at mainbus0: apid 3 (application processor)
cpu5: Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz, 3624.42 MHz, 06-8e-0c
cpu5: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu5: 256KB 64b/line 8-way L2 cache
cpu5: smt 1, core 1, package 0
cpu6 at mainbus0: apid 5 (application processor)
cpu6: Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz, 3603.47 MHz, 06-8e-0c
cpu6: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu6: 256KB 64b/line 8-way L2 cache
cpu6: smt 1, core 2, package 0
cpu7 at mainbus0: apid 7 (application processor)
cpu7: Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz, 3579.89 MHz, 06-8e-0c
cpu7: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu7: 256KB 64b/line 8-way L2 cache
cpu7: smt 1, core 3, package 0
ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 120 pins
acpimcfg0 at acpi0
acpimcfg0: addr 0xe0000000, bus 0-255
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus -1 (RP01)
acpiprt2 at acpi0: bus -1 (RP02)
acpiprt3 at acpi0: bus -1 (RP03)
acpiprt4 at acpi0: bus -1 (RP04)
acpiprt5 at acpi0: bus -1 (RP05)
acpiprt6 at acpi0: bus -1 (RP06)
acpiprt7 at acpi0: bus -1 (RP07)
acpiprt8 at acpi0: bus -1 (RP08)
acpiprt9 at acpi0: bus 1 (RP09)
acpiprt10 at acpi0: bus 6 (RP10)
acpiprt11 at acpi0: bus -1 (RP11)
acpiprt12 at acpi0: bus -1 (RP12)
acpiprt13 at acpi0: bus 11 (RP13)
acpiprt14 at acpi0: bus -1 (RP14)
acpiprt15 at acpi0: bus 16 (RP15)
acpiprt16 at acpi0: bus -1 (RP16)
acpiprt17 at acpi0: bus -1 (RP17)
acpiprt18 at acpi0: bus -1 (RP18)
acpiprt19 at acpi0: bus -1 (RP19)
acpiprt20 at acpi0: bus -1 (RP20)
acpiprt21 at acpi0: bus -1 (RP21)
acpiprt22 at acpi0: bus -1 (RP22)
acpiprt23 at acpi0: bus -1 (RP23)
acpiprt24 at acpi0: bus -1 (RP24)
acpiec0 at acpi0
acpiec0: Not running on HW-Reduced ACPI type 8
acpiec0: invalid resource #3 type 134
acpipci0 at acpi0 PCI0: 0x00000000 0x00000011 0x00000001
acpiac0 at acpi0: AC unit offline
acpibat0 at acpi0: BAT0 model "HT03041XL" type LION
"INT33D2" at acpi0 not configured
"INT33D3" at acpi0 not configured
"INT3403" at acpi0 not configured
"INT3403" at acpi0 not configured
pchgpio0 at acpi0 GPI0 addr 0xfd6e0000/0x10000 0xfd6d0000/0x10000 
0xfd6a0000/0x10000 irq 14, 320 pins
"SYNA328B" at acpi0 not configured
"ELAN2514" at acpi0 not configured
"ACPI000E" at acpi0 not configured
"PNP0C14" at acpi0 not configured
"INT0E0C" at acpi0 not configured
"PNP0C14" at acpi0 not configured
"PNP0C14" at acpi0 not configured
"INT33A1" at acpi0 not configured
acpihid0 at acpi0: HIDD, 5 button array
acpibtn0 at acpi0: LID0
acpibtn1 at acpi0: PWRB
"PNP0C14" at acpi0 not configured
"HPQ6001" at acpi0 not configured
"HPQ6007" at acpi0 not configured
"INT3400" at acpi0 not configured
"MSFT0101" at acpi0 not configured
"PNP0C14" at acpi0 not configured
"HPIC0003" at acpi0 not configured
acpipwrres0 at acpi0: USBC, resource for XDCI
acpipwrres1 at acpi0: PCRP, resource for RP05
acpipwrres2 at acpi0: V0PR
acpipwrres3 at acpi0: V1PR
acpipwrres4 at acpi0: V2PR
acpipwrres5 at acpi0: WRST
acpicpu0 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), 
C1(1000@1 mwait.1), PSS
acpicpu1 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), 
C1(1000@1 mwait.1), PSS
acpicpu2 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), 
C1(1000@1 mwait.1), PSS
acpicpu3 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), 
C1(1000@1 mwait.1), PSS
acpicpu4 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), 
C1(1000@1 mwait.1), PSS
acpicpu5 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), 
C1(1000@1 mwait.1), PSS
acpicpu6 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), 
C1(1000@1 mwait.1), PSS
acpicpu7 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), 
C1(1000@1 mwait.1), PSS
acpitz0 at acpi0: critical temperature is 120 degC
acpitz1 at acpi0: critical temperature is 120 degC
acpipwrres6 at acpi0: PIN_
acpidock0 at acpi0: DOCK not docked (0)
acpivideo0 at acpi0: GFX0
acpivout0 at acpivideo0: DD02
acpivout1 at acpivideo0: DD1F
cpu0: Enhanced SpeedStep 3890 MHz: speeds: 2101, 2100, 2000, 1900, 1700, 1600, 
1500, 1400, 1200, 1100, 1000, 800, 700, 600, 500, 400 MHz
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 "Intel Core 10G Host" rev 0x0c
inteldrm0 at pci0 dev 2 function 0 "Intel UHD Graphics" rev 0x02
drm0 at inteldrm0
inteldrm0: msi, COFFEELAKE, gen 9
"Intel Core 6G Thermal" rev 0x0c at pci0 dev 4 function 0 not configured
"Intel Core GMM" rev 0x00 at pci0 dev 8 function 0 not configured
pchtemp0 at pci0 dev 18 function 0 "Intel 400 Series Thermal" rev 0x00
"Intel 400 Series ISH" rev 0x00 at pci0 dev 19 function 0 not configured
xhci0 at pci0 dev 20 function 0 "Intel 400 Series xHCI" rev 0x00: msi, xHCI 1.10
usb0 at xhci0: USB revision 3.0
uhub0 at usb0 configuration 1 interface 0 "Intel xHCI root hub" rev 3.00/1.00 
addr 1
"Intel 400 Series Shared SRAM" rev 0x00 at pci0 dev 20 function 2 not configured
sdhc0 at pci0 dev 20 function 5 "Intel 400 Series SDXC" rev 0x00: apic 2 int 19
sdhc0: SDHC 3.0, 200 MHz base clock
sdmmc0 at sdhc0: 4-bit, sd high-speed, mmc high-speed, ddr52, dma
dwiic0 at pci0 dev 21 function 0 "Intel 400 Series I2C" rev 0x00: apic 2 int 16
iic0 at dwiic0
ihidev0 at iic0 addr 0x2c gpio 291, vendor 0x6cb product 0xcd50, SYNA328B
ihidev0: 31 report ids
imt0 at ihidev0: clickpad, 5 contacts
wsmouse0 at imt0 mux 0
ims0 at ihidev0 reportid 2: 2 buttons
wsmouse1 at ims0 mux 0
hid at ihidev0 reportid 6 not configured
hid at ihidev0 reportid 7 not configured
hid at ihidev0 reportid 9 not configured
hid at ihidev0 reportid 10 not configured
hid at ihidev0 reportid 11 not configured
hid at ihidev0 reportid 12 not configured
hid at ihidev0 reportid 13 not configured
hid at ihidev0 reportid 14 not configured
hid at ihidev0 reportid 15 not configured
hid at ihidev0 reportid 29 not configured
hid at ihidev0 reportid 31 not configured
dwiic1 at pci0 dev 21 function 1 "Intel 400 Series I2C" rev 0x00: apic 2 int 17
iic1 at dwiic1
ihidev1 at iic1 addr 0x10 gpio 295, vendor 0x4f3 product 0x23dd, ELAN2514
ihidev1: 23 report ids
ims1 at ihidev1 reportid 1: 1 button, tip
wsmouse2 at ims1 mux 0
hid at ihidev1 reportid 2 not configured
hid at ihidev1 reportid 3 not configured
hid at ihidev1 reportid 4 not configured
hid at ihidev1 reportid 6 not configured
ims2 at ihidev1 reportid 7: 3 buttons, tip, barrel, eraser
wsmouse3 at ims2 mux 0
hid at ihidev1 reportid 10 not configured
hid at ihidev1 reportid 14 not configured
hid at ihidev1 reportid 23 not configured
"Intel 400 Series MEI" rev 0x00 at pci0 dev 22 function 0 not configured
pciide0 at pci0 dev 23 function 0 "Intel 82801HBM RAID" rev 0x00: DMA, channel 
0 wired to native-PCI, channel 1 wired to native-PCI
pciide0: using apic 2 int 16 for native-PCI interrupt
ppb0 at pci0 dev 29 function 0 "Intel 400 Series PCIE" rev 0xf0: msi
pci1 at ppb0 bus 1
ppb1 at pci0 dev 29 function 1 "Intel 400 Series PCIE" rev 0xf0: msi
pci2 at ppb1 bus 6
"Realtek 8821CE" rev 0x00 at pci2 dev 0 function 0 not configured
ppb2 at pci0 dev 29 function 4 "Intel 400 Series PCIE" rev 0xf0: msi
pci3 at ppb2 bus 11
nvme0 at pci3 dev 0 function 0 vendor "Intel", unknown product 0x0975 rev 0x03: 
msix, NVMe 1.3
nvme0: INTEL HBRPEKNX0101AH, firmware HPS1, serial
scsibus1 at nvme0: 2 targets, initiator 0
sd0 at scsibus1 targ 1 lun 0: <NVMe, INTEL HBRPEKNX01, HPS1>
sd0: 244198MB, 512 bytes/sector, 500118192 sectors
ppb3 at pci0 dev 29 function 6 "Intel 400 Series PCIE" rev 0xf0: msi
pci4 at ppb3 bus 16
nvme1 at pci4 dev 0 function 0 vendor "Intel", unknown product 0x0975 rev 0x00: 
msix, NVMe 1.1
nvme1: INTEL HBRPEKNX0101AHO, firmware HPS2, serial
scsibus2 at nvme1: 2 targets, initiator 0
sd1 at scsibus2 targ 1 lun 0: <NVMe, INTEL HBRPEKNX01, HPS2>
sd1: 13736MB, 512 bytes/sector, 28131328 sectors
pcib0 at pci0 dev 31 function 0 "Intel 400 Series LPC" rev 0x00
azalia0 at pci0 dev 31 function 3 "Intel 400 Series HD Audio" rev 0x00: msi
azalia0: codecs: Realtek ALC295, Intel/0x280b, using Realtek ALC295
audio0 at azalia0
ichiic0 at pci0 dev 31 function 4 "Intel 400 Series SMBus" rev 0x00: apic 2 int 
16
iic2 at ichiic0
spdmem0 at iic2 addr 0x50: 8GB DDR4 SDRAM PC4-21300 SO-DIMM
"Intel 400 Series SPI" rev 0x00 at pci0 dev 31 function 5 not configured
isa0 at pcib0
isadma0 at isa0
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0: console keyboard
pms0 at pckbc0 (aux slot)
wsmouse4 at pms0 mux 0
pms0: Synaptics clickpad, firmware 10.16, 0x1e2a1 0x840300 0x365040 0xf00623 
0x12e800
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
vmm0 at mainbus0: VMX/EPT
efifb at mainbus0 not configured
umass0 at uhub0 port 2 configuration 1 interface 0 "SanDisk Cruzer Glide" rev 
2.00/1.00 addr 2
umass0: using SCSI over Bulk-Only
scsibus3 at umass0: 2 targets, initiator 0
sd2 at scsibus3 targ 1 lun 0: <SanDisk, Cruzer Glide, 1.00> removable
sd2: 15060MB, 512 bytes/sector, 30842880 sectors
uvideo0 at uhub0 port 4 configuration 1 interface 0 "DHQYLA19ICME8I HP Wide 
Vision HD Camera" rev 2.01/0.04 addr 3
video0 at uvideo0
ugen0 at uhub0 port 5 "Synaptics product 0x00cb" rev 2.00/1.64 addr 4
ugen1 at uhub0 port 10 "Realtek Bluetooth Radio" rev 1.10/1.10 addr 5
vscsi0 at root
scsibus4 at vscsi0: 256 targets
softraid0 at root
scsibus5 at softraid0: 256 targets
root on sd2a (c451627de5fb62d6.a) swap on sd2b dump on sd2b
inteldrm0: 1920x1080, 32bpp
wsdisplay0 at inteldrm0 mux 1: console (std, vt100 emulation), using wskbd0
wsdisplay0: screen 1-5 added (std, vt100 emulation)

vmstat -zi:
interrupt                       total     rate
irq0/clock                     180234      790
irq0/ipi                         3510       15
irq96/pchgpio0                    279        1
irq97/acpi0                         7        0
irq144/inteldrm0                  572        2
irq98/xhci0                    101025      443
irq99/sdhc0                         0        0
irq108/dwiic0                      22        0
irq101/dwiic1                      16        0
irq108/pciide0                     22        0
irq100/ppb0                         0        0
irq103/ppb1                         0        0
irq104/ppb2                         0        0
irq105/nvme0                      112        0
irq106/ppb3                         0        0
irq107/nvme1                       13        0
irq176/azalia0                      1        0
irq108/ichiic0                      0        0
irq145/pckbc0                     165        0
irq146/pckbc0                     116        0
Total                          286094     1254

Reply via email to