In message <202406042352.454nqfvj061...@gitrepo.freebsd.org>, John Baldwin writ
es:
> The branch main has been updated by jhb:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=871b33ad65baf07c92cce120a4fc1978
> c2ed7b3b
>
> commit 871b33ad65baf07c92cce120a4fc1978c2ed7b3b
> Author:     John Baldwin <j...@freebsd.org>
> AuthorDate: 2024-06-04 23:51:37 +0000
> Commit:     John Baldwin <j...@freebsd.org>
> CommitDate: 2024-06-04 23:51:37 +0000
>
>     pci: Consistently use pci_vf_* for suballocated VF memory resources
>     
>     Some of the bus resource methods were passing these up to the parent
>     which triggered rman mismatch assertions in INVARIANTS kernels.
>     
>     Reported by:    kp
>     Reviewed by:    imp
>     Tested by:      kp (earlier version)
>     Differential Revision:  https://reviews.freebsd.org/D45406
> ---
>  sys/dev/pci/pci.c         | 118 ++++++++++++++++++++++++++++++++++--
>  sys/dev/pci/pci_iov.c     | 151 ++++++++++++++++++++++++++++++++++++++++++++
> ++
>  sys/dev/pci/pci_private.h |  19 ++++++
>  3 files changed, 284 insertions(+), 4 deletions(-)
>
> diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c
> index 2cb8b4ce9fcc..2093d6a8b5ef 100644
> --- a/sys/dev/pci/pci.c
> +++ b/sys/dev/pci/pci.c
> @@ -164,10 +164,18 @@ static device_method_t pci_methods[] = {
>       DEVMETHOD(bus_get_resource,     bus_generic_rl_get_resource),
>       DEVMETHOD(bus_delete_resource,  pci_delete_resource),
>       DEVMETHOD(bus_alloc_resource,   pci_alloc_resource),
> +#ifdef PCI_IOV
> +     DEVMETHOD(bus_adjust_resource,  pci_adjust_resource),
> +#else
>       DEVMETHOD(bus_adjust_resource,  bus_generic_adjust_resource),
> +#endif
>       DEVMETHOD(bus_release_resource, pci_release_resource),
>       DEVMETHOD(bus_activate_resource, pci_activate_resource),
>       DEVMETHOD(bus_deactivate_resource, pci_deactivate_resource),
> +#ifdef PCI_IOV
> +     DEVMETHOD(bus_map_resource,     pci_map_resource),
> +     DEVMETHOD(bus_unmap_resource,   pci_unmap_resource),
> +#endif
>       DEVMETHOD(bus_child_deleted,    pci_child_deleted),
>       DEVMETHOD(bus_child_detached,   pci_child_detached),
>       DEVMETHOD(bus_child_pnpinfo,    pci_child_pnpinfo_method),
> @@ -5687,14 +5695,30 @@ pci_activate_resource(device_t dev, device_t child, s
> truct resource *r)
>       struct pci_devinfo *dinfo;
>       int error, rid, type;
>  
> -     error = bus_generic_activate_resource(dev, child, r);
> +     dinfo = device_get_ivars(child);
> +#ifdef PCI_IOV
> +     if (dinfo->cfg.flags & PCICFG_VF) {
> +             switch (rman_get_type(r)) {
> +             /* VFs can't have I/O BARs. */
> +             case SYS_RES_IOPORT:
> +                     error = EINVAL;
> +                     break;
> +             case SYS_RES_MEMORY:
> +                     error = pci_vf_activate_mem_resource(dev, child, r);
> +                     break;
> +             default:
> +                     error = bus_generic_activate_resource(dev, child, r);
> +                     break;
> +             }
> +     } else
> +#endif
> +             error = bus_generic_activate_resource(dev, child, r);
>       if (error)
>               return (error);
>  
>       /* Enable decoding in the command register when activating BARs. */
>       if (device_get_parent(child) == dev) {
>               /* Device ROMs need their decoding explicitly enabled. */
> -             dinfo = device_get_ivars(child);
>               rid = rman_get_rid(r);
>               type = rman_get_type(r);
>               if (type == SYS_RES_MEMORY && PCIR_IS_BIOS(&dinfo->cfg, rid))
> @@ -5716,13 +5740,29 @@ pci_deactivate_resource(device_t dev, device_t child,
>  struct resource *r)
>       struct pci_devinfo *dinfo;
>       int error, rid, type;
>  
> -     error = bus_generic_deactivate_resource(dev, child, r);
> +     dinfo = device_get_ivars(child);
> +#ifdef PCI_IOV
> +     if (dinfo->cfg.flags & PCICFG_VF) {
> +             switch (rman_get_type(r)) {
> +             /* VFs can't have I/O BARs. */
> +             case SYS_RES_IOPORT:
> +                     error = EINVAL;
> +                     break;
> +             case SYS_RES_MEMORY:
> +                     error = pci_vf_deactivate_mem_resource(dev, child, r);
> +                     break;
> +             default:
> +                     error = bus_generic_deactivate_resource(dev, child, r);
> +                     break;
> +             }
> +     } else
> +#endif
> +             error = bus_generic_deactivate_resource(dev, child, r);
>       if (error)
>               return (error);
>  
>       /* Disable decoding for device ROMs. */
>       if (device_get_parent(child) == dev) {
> -             dinfo = device_get_ivars(child);
>               rid = rman_get_rid(r);
>               type = rman_get_type(r);
>               if (type == SYS_RES_MEMORY && PCIR_IS_BIOS(&dinfo->cfg, rid))
> @@ -5732,6 +5772,76 @@ pci_deactivate_resource(device_t dev, device_t child, 
> struct resource *r)
>       return (0);
>  }
>  
> +#ifdef PCI_IOV
> +int
> +pci_adjust_resource(device_t dev, device_t child, struct resource *r,
> +    rman_res_t start, rman_res_t end)
> +{
> +     struct pci_devinfo *dinfo;
> +
> +     dinfo = device_get_ivars(child);
> +     if (dinfo->cfg.flags & PCICFG_VF) {
> +             switch (rman_get_type(r)) {
> +             /* VFs can't have I/O BARs. */
> +             case SYS_RES_IOPORT:
> +                     return (EINVAL);
> +             case SYS_RES_MEMORY:
> +                     return (pci_vf_adjust_mem_resource(dev, child, r,
> +                         start, end));
> +             }
> +
> +             /* Fall through for other types of resource allocations. */
> +     }
> +
> +     return (bus_generic_adjust_resource(dev, child, r, start, end));
> +}
> +
> +int
> +pci_map_resource(device_t dev, device_t child, struct resource *r,
> +    struct resource_map_request *argsp, struct resource_map *map)
> +{
> +     struct pci_devinfo *dinfo;
> +
> +     dinfo = device_get_ivars(child);
> +     if (dinfo->cfg.flags & PCICFG_VF) {
> +             switch (rman_get_type(r)) {
> +             /* VFs can't have I/O BARs. */
> +             case SYS_RES_IOPORT:
> +                     return (EINVAL);
> +             case SYS_RES_MEMORY:
> +                     return (pci_vf_map_mem_resource(dev, child, r, argsp,
> +                         map));
> +             }
> +
> +             /* Fall through for other types of resource allocations. */
> +     }
> +
> +     return (bus_generic_map_resource(dev, child, r, argsp, map));
> +}
> +
> +int
> +pci_unmap_resource(device_t dev, device_t child, struct resource *r,
> +    struct resource_map *map)
> +{
> +     struct pci_devinfo *dinfo;
> +
> +     dinfo = device_get_ivars(child);
> +     if (dinfo->cfg.flags & PCICFG_VF) {
> +             switch (rman_get_type(r)) {
> +             /* VFs can't have I/O BARs. */
> +             case SYS_RES_IOPORT:
> +                     return (EINVAL);
> +             case SYS_RES_MEMORY:
> +                     return (pci_vf_unmap_mem_resource(dev, child, r, map));
> +             }
> +
> +             /* Fall through for other types of resource allocations. */
> +     }
> +
> +     return (bus_generic_unmap_resource(dev, child, r, map));
> +}
> +#endif
> +
>  void
>  pci_child_deleted(device_t dev, device_t child)
>  {
> diff --git a/sys/dev/pci/pci_iov.c b/sys/dev/pci/pci_iov.c
> index c8e139f043c9..1f1138b2d336 100644
> --- a/sys/dev/pci/pci_iov.c
> +++ b/sys/dev/pci/pci_iov.c
> @@ -1070,6 +1070,12 @@ pci_vf_release_mem_resource(device_t dev, device_t chi
> ld, struct resource *r)
>  
>       dinfo = device_get_ivars(child);
>  
> +     KASSERT(rman_get_type(r) == SYS_RES_MEMORY,
> +         ("%s: invalid resource %p", __func__, r));
> +     KASSERT(rman_is_region_manager(r, &dinfo->cfg.iov->rman),
> +         ("%s: rman %p doesn't match for resource %p", __func__,
> +         &dinfo->cfg.iov->rman, r));
> +
>       if (rman_get_flags(r) & RF_ACTIVE) {
>               error = bus_deactivate_resource(child, r);
>               if (error != 0)
> @@ -1086,3 +1092,148 @@ pci_vf_release_mem_resource(device_t dev, device_t ch
> ild, struct resource *r)
>  
>       return (rman_release_resource(r));
>  }
> +
> +int
> +pci_vf_activate_mem_resource(device_t dev, device_t child, struct resource *
> r)
> +{
> +#ifdef INVARIANTS
> +     struct pci_devinfo *dinfo = device_get_ivars(child);
> +#endif
> +     struct resource_map map;
> +     int error;
> +
> +     KASSERT(rman_get_type(r) == SYS_RES_MEMORY,
> +         ("%s: invalid resource %p", __func__, r));
> +     KASSERT(rman_is_region_manager(r, &dinfo->cfg.iov->rman),
> +         ("%s: rman %p doesn't match for resource %p", __func__,
> +         &dinfo->cfg.iov->rman, r));
> +
> +     error = rman_activate_resource(r);
> +     if (error != 0)
> +             return (error);
> +
> +     if ((rman_get_flags(r) & RF_UNMAPPED) == 0) {
> +             error = BUS_MAP_RESOURCE(dev, child, r, NULL, &map);
> +             if (error != 0) {
> +                     rman_deactivate_resource(r);
> +                     return (error);
> +             }
> +
> +             rman_set_mapping(r, &map);
> +     }
> +     return (0);
> +}
> +
> +int
> +pci_vf_deactivate_mem_resource(device_t dev, device_t child, struct resource
>  *r)
> +{
> +#ifdef INVARIANTS
> +     struct pci_devinfo *dinfo = device_get_ivars(child);
> +#endif
> +     struct resource_map map;
> +     int error;
> +
> +     KASSERT(rman_get_type(r) == SYS_RES_MEMORY,
> +         ("%s: invalid resource %p", __func__, r));
> +     KASSERT(rman_is_region_manager(r, &dinfo->cfg.iov->rman),
> +         ("%s: rman %p doesn't match for resource %p", __func__,
> +         &dinfo->cfg.iov->rman, r));
> +
> +     error = rman_deactivate_resource(r);
> +     if (error != 0)
> +             return (error);
> +
> +     if ((rman_get_flags(r) & RF_UNMAPPED) == 0) {
> +             rman_get_mapping(r, &map);
> +             BUS_UNMAP_RESOURCE(dev, child, r, &map);
> +     }
> +     return (0);
> +}
> +
> +int
> +pci_vf_adjust_mem_resource(device_t dev, device_t child, struct resource *r,
> +    rman_res_t start, rman_res_t end)
> +{
> +#ifdef INVARIANTS
> +     struct pci_devinfo *dinfo = device_get_ivars(child);
> +#endif
> +
> +     KASSERT(rman_get_type(r) == SYS_RES_MEMORY,
> +         ("%s: invalid resource %p", __func__, r));
> +     KASSERT(rman_is_region_manager(r, &dinfo->cfg.iov->rman),
> +         ("%s: rman %p doesn't match for resource %p", __func__,
> +         &dinfo->cfg.iov->rman, r));
> +
> +     return (rman_adjust_resource(r, start, end));
> +}
> +
> +static struct resource *
> +pci_vf_find_parent_resource(struct pcicfg_iov *iov, struct resource *r)
> +{
> +     struct resource *pres;
> +
> +     for (u_int i = 0; i <= PCIR_MAX_BAR_0; i++) {
> +             pres = iov->iov_bar[i].res;
> +             if (pres != NULL) {
> +                     if (rman_get_start(pres) <= rman_get_start(r) &&
> +                         rman_get_end(pres) >= rman_get_end(r))
> +                             return (pres);
> +             }
> +     }
> +     return (NULL);
> +}
> +
> +int
> +pci_vf_map_mem_resource(device_t dev, device_t child, struct resource *r,
> +    struct resource_map_request *argsp, struct resource_map *map)
> +{
> +     struct pci_devinfo *dinfo = device_get_ivars(child);
> +     struct pcicfg_iov *iov = dinfo->cfg.iov;
> +     struct resource_map_request args;
> +     struct resource *pres;
> +     rman_res_t length, start;
> +     int error;
> +
> +     KASSERT(rman_get_type(r) == SYS_RES_MEMORY,
> +         ("%s: invalid resource %p", __func__, r));
> +     KASSERT(rman_is_region_manager(r, &iov->rman),
> +         ("%s: rman %p doesn't match for resource %p", __func__,
> +         &dinfo->cfg.iov->rman, r));
> +
> +     /* Resources must be active to be mapped. */
> +     if (!(rman_get_flags(r) & RF_ACTIVE))
> +             return (ENXIO);
> +
> +     resource_init_map_request(&args);
> +     error = resource_validate_map_request(r, argsp, &args, &start, &length)
> ;
> +     if (error)
> +             return (error);
> +
> +     pres = pci_vf_find_parent_resource(dinfo->cfg.iov, r);
> +     if (pres == NULL)
> +             return (ENOENT);
> +
> +     args.offset = start - rman_get_start(pres);
> +     args.length = length;
> +     return (bus_map_resource(iov->iov_pf, pres, &args, map));
> +}
> +
> +int
> +pci_vf_unmap_mem_resource(device_t dev, device_t child, struct resource *r,
> +    struct resource_map *map)
> +{
> +     struct pci_devinfo *dinfo = device_get_ivars(child);
> +     struct pcicfg_iov *iov = dinfo->cfg.iov;
> +     struct resource *pres;
> +
> +     KASSERT(rman_get_type(r) == SYS_RES_MEMORY,
> +         ("%s: invalid resource %p", __func__, r));
> +     KASSERT(rman_is_region_manager(r, &iov->rman),
> +         ("%s: rman %p doesn't match for resource %p", __func__,
> +         &dinfo->cfg.iov->rman, r));
> +
> +     pres = pci_vf_find_parent_resource(iov, r);
> +     if (pres == NULL)
> +             return (ENOENT);
> +     return (bus_unmap_resource(iov->iov_pf, pres, map));
> +}
> diff --git a/sys/dev/pci/pci_private.h b/sys/dev/pci/pci_private.h
> index f97a4df5471b..6dc7e3c505d1 100644
> --- a/sys/dev/pci/pci_private.h
> +++ b/sys/dev/pci/pci_private.h
> @@ -65,9 +65,16 @@ bus_get_dma_tag_t  pci_get_dma_tag;
>  bus_get_resource_list_t      pci_get_resource_list;
>  bus_delete_resource_t        pci_delete_resource;
>  bus_alloc_resource_t pci_alloc_resource;
> +#ifdef PCI_IOV
> +bus_adjust_resource_t        pci_adjust_resource;
> +#endif
>  bus_release_resource_t       pci_release_resource;
>  bus_activate_resource_t      pci_activate_resource;
>  bus_deactivate_resource_t pci_deactivate_resource;
> +#ifdef PCI_IOV
> +bus_map_resource_t   pci_map_resource;
> +bus_unmap_resource_t pci_unmap_resource;
> +#endif
>  bus_child_deleted_t  pci_child_deleted;
>  bus_child_detached_t pci_child_detached;
>  bus_child_pnpinfo_t  pci_child_pnpinfo_method;
> @@ -158,4 +165,16 @@ struct resource *pci_vf_alloc_mem_resource(device_t dev,
>  device_t child,
>                   rman_res_t count, u_int flags);
>  int          pci_vf_release_mem_resource(device_t dev, device_t child,
>                   struct resource *r);
> +int          pci_vf_activate_mem_resource(device_t dev, device_t child,
> +                 struct resource *r);
> +int          pci_vf_deactivate_mem_resource(device_t dev, device_t child,
> +                 struct resource *r);
> +int          pci_vf_adjust_mem_resource(device_t dev, device_t child,
> +                 struct resource *r, rman_res_t start, rman_res_t end);
> +int          pci_vf_map_mem_resource(device_t dev, device_t child,
> +                 struct resource *r, struct resource_map_request *argsp,
> +                 struct resource_map *map);
> +int          pci_vf_unmap_mem_resource(device_t dev, device_t child,
> +                 struct resource *r, struct resource_map *map);
> +
>  #endif /* _PCI_PRIVATE_H_ */
>

This patch causes the following boot panic during ata(4) initialization. 
Reverting it avoids the regression.

1  FreeBSD
2  FreeBSD
3  FreeBSD
5  Drive 1

F6 PXE
Boot:  1 
/boot/config: 1:ad(1,a)/boot/loader -Dh

FreeBSD/x86 boot
Default: 1:ad(1,a)/boot/loader
boot: 
BIOS drive A: is fd0
BIOS drive C: is disk0
BIOS drive D: is disk1
BIOS drive E: is disk2
BIOS drive F: is disk3
BIOS 636kB/3143552kB available memory

FreeBSD/x86 bootstrap loader, Revision 1.1
(Thu May  2 14:28:53 PDT 2024 root@cwsys)
Loading /boot/defaults/loader.conf
Loading /boot/defaults/loader.conf
Loading /boot/device.hints
Loading /boot/loader.conf
\Loading /boot/loader.conf.local
|c/Loading kernel...
-\/boot/kernel/kernel text=0xf2ca8 |text=0x7af938 /-\|text=0x12386c 
data=0x180+0xe80 data=0x10a780+0x2f5880 /0x8+0x111150+0x8+0x13bfe2-
Loading configured modules...
\|/boot/kernel/if_sk.ko size 0xf8d8 at 0x144e000
/etc/hostid /size=0x25
/boot/kernel/dtraceall.ko size 0x35e0 at 0x145e000
loading required module 'profile'
-/boot/kernel/profile.ko size 0x4258 at 0x1462000
loading required module 'opensolaris'
\/boot/kernel/opensolaris.ko size 0x1e2a8 at 0x1467000
loading required module 'dtrace'
|/boot/kernel/dtrace.ko /size 0x5df08 at 0x1486000
loading required module 'systrace_freebsd32'
-/boot/kernel/systrace_freebsd32.ko size 0x19418 at 0x14e4000
loading required module 'systrace'
\/boot/kernel/systrace.ko size 0x19430 at 0x14fe000
loading required module 'sdt'
|/boot/kernel/sdt.ko size 0x3e68 at 0x1518000
loading required module 'kinst'
//boot/kernel/kinst.ko size 0x8538 at 0x151c000
loading required module 'fasttrap'
/boot/kernel/fasttrap.ko -size 0x5fdc8 at 0x1525000
loading required module 'fbt'
\/boot/kernel/fbt.ko size 0x5da0 at 0x1585000
loading required module 'dtnfscl'
/boot/kernel/dtnfscl.ko size 0x62a0 at 0x158b000
loading required module 'dtmalloc'
|/boot/kernel/dtmalloc.ko size 0x3518 at 0x1592000
//boot/kernel/kbdmux.ko size 0xb068 at 0x1596000
-/boot/kernel/sem.ko size 0x7868 at 0x15a2000
\/boot/kernel/if_nfe.ko size 0x10a60 at 0x15aa000
|/-\|/-\|/-\|/-\|/-\|can't find 'random'
//boot/kernel/amdtemp.ko size 0x7448 at 0x15bb000
loading required module 'amdsmn'
-/boot/kernel/amdsmn.ko size 0x3788 at 0x15c3000
\/boot/kernel/if_lagg.ko size 0x165b8 at 0x15c7000
loading required module 'if_infiniband'
|/boot/kernel/if_infiniband.ko size 0x3588 at 0x15de000
//boot/kernel/aibs.ko size 0x4178 at 0x15e2000
/boot/entropy size=0x1000
-/boot/kernel/geom_mirror.ko size 0x21338 at 0x15e8000
\/boot/kernel/zfs.ko |/size 0x5ea588 at 0x160a000
-/boot/kernel/cpufreq.ko \size 0x12f70 at 0x1bf5000

Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [/boot/kernel/kernel] in 10 seconds... Booting [/boot/kernel/kernel] in 
9 seconds... Booting [/boot/kernel/kernel] in 8 seconds... Booting 
[/boot/kernel/kernel] in 7 seconds... Booting [/boot/kernel/kernel] in 6 
seconds... Booting [/boot/kernel/kernel] in 5 seconds... Booting 
[/boot/kernel/kernel] in 4 seconds... Booting [/boot/kernel/kernel] in 3 
seconds... Booting [/boot/kernel/kernel] in 2 seconds... Booting 
[/boot/kernel/kernel] in 1 second... Booting [/boot/kernel/kernel]...           
    
GDB: no debug ports present
KDB: debugger backends: ddb
KDB: current backend: ddb
---<<BOOT>>---
Copyright (c) 1992-2024 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 15.0-CURRENT #112 komquats-n270594-871b33ad65ba: Tue Jun  4 18:09:04 
PDT 2024
    root@cwsys:/export/obj/opt/src/git-src/amd64.amd64/sys/BREAK amd64
FreeBSD clang version 18.1.6 (https://github.com/llvm/llvm-project.git 
llvmorg-18.1.6-0-g1118c2e05e67)
VT(vga): text 80x25
CPU: AMD Phenom(tm) II X4 945 Processor (3014.08-MHz K8-class CPU)
  Origin="AuthenticAMD"  Id=0x100f43  Family=0x10  Model=0x4  Stepping=3
  
Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT>
  Features2=0x802009<SSE3,MON,CX16,POPCNT>
  AMD 
Features=0xee500800<SYSCALL,NX,MMX+,FFXSR,Page1GB,RDTSCP,LM,3DNow!+,3DNow!>
  AMD 
Features2=0x37ff<LAHF,CMP,SVM,ExtAPIC,CR8,ABM,SSE4A,MAS,Prefetch,OSVW,IBS,SKINIT,WDT>
  SVM: NP,NRIP,NAsids=64
  TSC: P-state invariant
real memory  = 8589934592 (8192 MB)
avail memory = 8266919936 (7883 MB)
Event timer "LAPIC" quality 100
ACPI APIC Table: <Nvidia ASUSACPI>
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
FreeBSD/SMP: 1 package(s) x 4 core(s)
random: unblocking device.
Firmware Warning (ACPI): 32/64X length mismatch in FADT/Pm1aEventBlock: 32/8 
(20230628/tbfadt-748)
Firmware Warning (ACPI): 32/64X length mismatch in FADT/Pm1aControlBlock: 16/8 
(20230628/tbfadt-748)
Firmware Warning (ACPI): 32/64X length mismatch in FADT/PmTimerBlock: 32/8 
(20230628/tbfadt-748)
Firmware Warning (ACPI): 32/64X length mismatch in FADT/Gpe0Block: 64/8 
(20230628/tbfadt-748)
Firmware Warning (ACPI): 32/64X length mismatch in FADT/Gpe1Block: 128/8 
(20230628/tbfadt-748)
Firmware Warning (ACPI): Invalid length for FADT/Pm1aEventBlock: 8, using 
default 32 (20230628/tbfadt-850)
Firmware Warning (ACPI): Invalid length for FADT/Pm1aControlBlock: 8, using 
default 16 (20230628/tbfadt-850)
Firmware Warning (ACPI): Invalid length for FADT/PmTimerBlock: 8, using default 
32 (20230628/tbfadt-850)
ioapic0: MADT APIC ID 4 != hw id 0
ioapic0 <Version 1.1> irqs 0-23
Launching APs: 3 2 1
random: entropy device external interface
kbd1 at kbdmux0
vtvga0: <VT VGA driver>
aesni0: No AES or SHA support.
acpi0: <Nvidia ASUSACPI>
ACPI Error: AE_NOT_FOUND, While resolving a named reference package element - 
\_PR_.CPU0 (20230628/dspkginit-605)
acpi0: Power Button (fixed)
cpu0: <ACPI CPU> on acpi0
attimer0: <AT timer> port 0x40-0x43 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
hpet0: <High Precision Event Timer> iomem 0xfefff000-0xfefff3ff irq 0,8 on acpi0
Timecounter "HPET" frequency 25000000 Hz quality 950
atrtc0: <AT realtime clock> port 0x70-0x73 on acpi0
atrtc0: registered as a time-of-day clock, resolution 1.000000s
Event timer "RTC" frequency 32768 Hz quality 0
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x1008-0x100b on acpi0
acpi_button0: <Power Button> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
pci0: <memory, RAM> at device 0.0 (no driver attached)
isab0: <PCI-ISA bridge> at device 1.0 on pci0
isa0: <ISA bus> on isab0
ohci0: <nVidia nForce MCP55 USB Controller> mem 0xfe02f000-0xfe02ffff irq 21 at 
device 2.0 on pci0
usbus0 on ohci0
usbus0: 12Mbps Full Speed USB v1.0
ehci0: <NVIDIA nForce MCP55 USB 2.0 controller> mem 0xfe02e000-0xfe02e0ff irq 
22 at device 2.1 on pci0
usbus1: EHCI version 1.0
usbus1 on ehci0
usbus1: 480Mbps High Speed USB v2.0
atapci0: <nVidia nForce MCP55 UDMA133 controller> port 
0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xfc00-0xfc0f at device 4.0 on pci0
ata0: <ATA channel> at channel 0 on atapci0


Fatal trap 12: page fault while in kernel mode
cpuid = 2; apic id = 02
fault virtual address   = 0x54
fault code              = supervisor read data, page not present
instruction pointer     = 0x20:0xffffffff804a76e2
stack pointer           = 0x28:0xffffffff81f0b6d0
frame pointer           = 0x28:0xffffffff81f0b700
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 0 (swapper)
rdi: fffff80004bf9000 rsi: fffff80004bf9000 rdx: fffff80004c2de00
rcx: fffff80004a99000  r8: fffff80004c2c020  r9: fffffe000ec57540
rax: 0000000000000000 rbx: fffff80004bf9000 rbp: ffffffff81f0b700
r10: fffff80004bc2000 r11: ffffffff81f0b9fc r12: 0000000000000001
r13: 0000000000000000 r14: fffff80004bf8600 r15: fffff80004c2de00
trap number             = 12
panic: page fault
cpuid = 2
time = 1
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xffffffff81f0b3c0
vpanic() at vpanic+0x13f/frame 0xffffffff81f0b4f0
panic() at panic+0x43/frame 0xffffffff81f0b550
trap_fatal() at trap_fatal+0x40b/frame 0xffffffff81f0b5b0
trap_pfault() at trap_pfault+0x46/frame 0xffffffff81f0b600
calltrap() at calltrap+0x8/frame 0xffffffff81f0b600
--- trap 0xc, rip = 0xffffffff804a76e2, rsp = 0xffffffff81f0b6d0, rbp = 
0xffffffff81f0b700 ---
pci_activate_resource() at pci_activate_resource+0x22/frame 0xffffffff81f0b700
bus_generic_rman_alloc_resource() at bus_generic_rman_alloc_resource+0xee/frame 
0xffffffff81f0b740
nexus_alloc_resource() at nexus_alloc_resource+0x99/frame 0xffffffff81f0b7a0
acpi_alloc_resource() at acpi_alloc_resource+0x84/frame 0xffffffff81f0b860
acpi_pcib_acpi_alloc_resource() at acpi_pcib_acpi_alloc_resource+0x9d/frame 
0xffffffff81f0b8d0
ata_pci_alloc_resource() at ata_pci_alloc_resource+0x2bd/frame 
0xffffffff81f0b950
bus_alloc_resource() at bus_alloc_resource+0x98/frame 0xffffffff81f0b9b0
ata_attach() at ata_attach+0x322/frame 0xffffffff81f0ba80
device_attach() at device_attach+0x3ac/frame 0xffffffff81f0bad0
bus_generic_attach() at bus_generic_attach+0x4b/frame 0xffffffff81f0bb00
ata_pci_attach() at ata_pci_attach+0x2fd/frame 0xffffffff81f0bb30
device_attach() at device_attach+0x3ac/frame 0xffffffff81f0bb80
bus_generic_attach() at bus_generic_attach+0x4b/frame 0xffffffff81f0bbb0
pci_attach() at pci_attach+0xc7/frame 0xffffffff81f0bbe0
acpi_pci_attach() at acpi_pci_attach+0x15/frame 0xffffffff81f0bc20
device_attach() at device_attach+0x3ac/frame 0xffffffff81f0bc70
bus_generic_attach() at bus_generic_attach+0x4b/frame 0xffffffff81f0bca0
acpi_pcib_acpi_attach() at acpi_pcib_acpi_attach+0x424/frame 0xffffffff81f0bd00
device_attach() at device_attach+0x3ac/frame 0xffffffff81f0bd50
bus_generic_attach() at bus_generic_attach+0x4b/frame 0xffffffff81f0bd80
acpi_probe_children() at acpi_probe_children+0x6f/frame 0xffffffff81f0bde0
acpi_attach() at acpi_attach+0x982/frame 0xffffffff81f0be70
device_attach() at device_attach+0x3ac/frame 0xffffffff81f0bec0
bus_generic_attach() at bus_generic_attach+0x4b/frame 0xffffffff81f0bef0
device_attach() at device_attach+0x3ac/frame 0xffffffff81f0bf40
bus_generic_new_pass() at bus_generic_new_pass+0x127/frame 0xffffffff81f0bf70
root_bus_configure() at root_bus_configure+0x26/frame 0xffffffff81f0bf90
configure() at configure+0x9/frame 0xffffffff81f0bfa0
mi_startup() at mi_startup+0x1c8/frame 0xffffffff81f0bff0
Uptime: 1s
Automatic reboot in 15 seconds - press a key on the console to abort
--> Press a key on the console to reboot,
--> or switch off the system now.
acpi0: reset failed - timeout
Rebooting...
cpu_reset: Restarting BSP
cpu_reset_proxy: Stopped CPU 2



-- 
Cheers,
Cy Schubert <cy.schub...@cschubert.com>
FreeBSD UNIX:  <c...@freebsd.org>   Web:  https://FreeBSD.org
NTP:           <c...@nwtime.org>    Web:  https://nwtime.org

                        e^(i*pi)+1=0


Reply via email to