Re: git: 871b33ad65ba - main - pci: Consistently use pci_vf_* for suballocated VF memory resources
- Reply: Cy Schubert : "Re: git: 871b33ad65ba - main - pci: Consistently use pci_vf_* for suballocated VF memory resources"
- In reply to: John Baldwin : "git: 871b33ad65ba - main - pci: Consistently use pci_vf_* for suballocated VF memory resources"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 05 Jun 2024 03:47:33 UTC
In message <202406042352.454NqFVj061328@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 <jhb@FreeBSD.org> > AuthorDate: 2024-06-04 23:51:37 +0000 > Commit: John Baldwin <jhb@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.Schubert@cschubert.com> FreeBSD UNIX: <cy@FreeBSD.org> Web: https://FreeBSD.org NTP: <cy@nwtime.org> Web: https://nwtime.org e^(i*pi)+1=0