v4.17 regression: PowerMac G3 won't boot, was Re: [PATCH v5 1/3] of: cache phandle nodes to reduce cost of of_find_node_by_phandle()

From: Finn Thain
Date: Wed Aug 29 2018 - 20:44:52 EST


Hi Frank,

Linux v4.17 and later will no longer boot on a G3 PowerMac. The boot hangs
very early, before any video driver loads.

Stan and I were able to bisect the regression between v4.16 and v4.17 and
arrived at commit 0b3ce78e90fc ("of: cache phandle nodes to reduce cost of
of_find_node_by_phandle()").

I don't see any obvious bug in 0b3ce78e90fc or b9952b5218ad. But if you
revert these from v4.18 (which is also affected) that certainly resolves
the issue.

I did see this in the kernel messages:

Duplicate name in PowerPC,750, renamed to "l2-cache#1"
Duplicate name in mac-io, renamed to "ide#1"
Duplicate name in ide#1, renamed to "atapi-disk#1"
Duplicate name in multifunc-device, renamed to "pci1799,1#1"

No idea whether that's relevant; I haven't done any further investigation.
Complete dmesg output is attached. Please let me know if there's any more
information you need to help find the bug.

Thanks.

--

On Sun, 4 Mar 2018, frowand.list@xxxxxxxxx wrote:

> From: Frank Rowand <frank.rowand@xxxxxxxx>
>
> Create a cache of the nodes that contain a phandle property. Use this
> cache to find the node for a given phandle value instead of scanning
> the devicetree to find the node. If the phandle value is not found
> in the cache, of_find_node_by_phandle() will fall back to the tree
> scan algorithm.
>
> The cache is initialized in of_core_init().
>
> The cache is freed via a late_initcall_sync() if modules are not
> enabled.
>
> If the devicetree is created by the dtc compiler, with all phandle
> property values auto generated, then the size required by the cache
> could be 4 * (1 + number of phandles) bytes. This results in an O(1)
> node lookup cost for a given phandle value. Due to a concern that the
> phandle property values might not be consistent with what is generated
> by the dtc compiler, a mask has been added to the cache lookup algorithm.
> To maintain the O(1) node lookup cost, the size of the cache has been
> increased by rounding the number of entries up to the next power of
> two.
>
> The overhead of finding the devicetree node containing a given phandle
> value has been noted by several people in the recent past, in some cases
> with a patch to add a hashed index of devicetree nodes, based on the
> phandle value of the node. One concern with this approach is the extra
> space added to each node. This patch takes advantage of the phandle
> property values auto generated by the dtc compiler, which begin with
> one and monotonically increase by one, resulting in a range of 1..n
> for n phandle values. This implementation should also provide a good
> reduction of overhead for any range of phandle values that are mostly
> in a monotonic range.
>
> Performance measurements by Chintan Pandya <cpandya@xxxxxxxxxxxxxx>
> of several implementations of patches that are similar to this one
> suggest an expected reduction of boot time by ~400ms for his test
> system. If the cache size was decreased to 64 entries, the boot
> time was reduced by ~340 ms. The measurements were on a 4.9.73 kernel
> for arch/arm64/boot/dts/qcom/sda670-mtp.dts, contains 2371 nodes and
> 814 phandle values.
>
> Reported-by: Chintan Pandya <cpandya@xxxxxxxxxxxxxx>
> Signed-off-by: Frank Rowand <frank.rowand@xxxxxxxx>
> ---
>
> Changes since v3:
> - of_populate_phandle_cache(): add check for failed memory allocation
>
> Changes since v2:
> - add mask to calculation of phandle cache entry
> - which results in better overhead reduction for devicetrees with
> phandle properties not allocated in the monotonically increasing
> range of 1..n
> - due to mask, number of entries in cache potentially increased to
> next power of two
> - minor fixes as suggested by reviewers
> - no longer using live_tree_max_phandle() so do not move it from
> drivers/of/resolver.c to drivers/of/base.c
>
> Changes since v1:
> - change short description from
> of: cache phandle nodes to reduce cost of of_find_node_by_phandle()
> - rebase on v4.16-rc1
> - reorder new functions in base.c to avoid forward declaration
> - add locking around kfree(phandle_cache) for memory ordering
> - add explicit check for non-null of phandle_cache in
> of_find_node_by_phandle(). There is already a check for !handle,
> which prevents accessing a null phandle_cache, but that dependency
> is not obvious, so this check makes it more apparent.
> - do not free phandle_cache if modules are enabled, so that
> cached phandles will be available when modules are loaded
>
> drivers/of/base.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++---
> drivers/of/of_private.h | 3 ++
> drivers/of/resolver.c | 3 --
> 3 files changed, 85 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index ad28de96e13f..e71d157d7149 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -91,10 +91,72 @@ int __weak of_node_to_nid(struct device_node *np)
> }
> #endif
>
> +static struct device_node **phandle_cache;
> +static u32 phandle_cache_mask;
> +
> +/*
> + * Assumptions behind phandle_cache implementation:
> + * - phandle property values are in a contiguous range of 1..n
> + *
> + * If the assumptions do not hold, then
> + * - the phandle lookup overhead reduction provided by the cache
> + * will likely be less
> + */
> +static void of_populate_phandle_cache(void)
> +{
> + unsigned long flags;
> + u32 cache_entries;
> + struct device_node *np;
> + u32 phandles = 0;
> +
> + raw_spin_lock_irqsave(&devtree_lock, flags);
> +
> + kfree(phandle_cache);
> + phandle_cache = NULL;
> +
> + for_each_of_allnodes(np)
> + if (np->phandle && np->phandle != OF_PHANDLE_ILLEGAL)
> + phandles++;
> +
> + cache_entries = roundup_pow_of_two(phandles);
> + phandle_cache_mask = cache_entries - 1;
> +
> + phandle_cache = kcalloc(cache_entries, sizeof(*phandle_cache),
> + GFP_ATOMIC);
> + if (!phandle_cache)
> + goto out;
> +
> + for_each_of_allnodes(np)
> + if (np->phandle && np->phandle != OF_PHANDLE_ILLEGAL)
> + phandle_cache[np->phandle & phandle_cache_mask] = np;
> +
> +out:
> + raw_spin_unlock_irqrestore(&devtree_lock, flags);
> +}
> +
> +#ifndef CONFIG_MODULES
> +static int __init of_free_phandle_cache(void)
> +{
> + unsigned long flags;
> +
> + raw_spin_lock_irqsave(&devtree_lock, flags);
> +
> + kfree(phandle_cache);
> + phandle_cache = NULL;
> +
> + raw_spin_unlock_irqrestore(&devtree_lock, flags);
> +
> + return 0;
> +}
> +late_initcall_sync(of_free_phandle_cache);
> +#endif
> +
> void __init of_core_init(void)
> {
> struct device_node *np;
>
> + of_populate_phandle_cache();
> +
> /* Create the kset, and register existing nodes */
> mutex_lock(&of_mutex);
> of_kset = kset_create_and_add("devicetree", NULL, firmware_kobj);
> @@ -1021,16 +1083,32 @@ int of_modalias_node(struct device_node *node, char *modalias, int len)
> */
> struct device_node *of_find_node_by_phandle(phandle handle)
> {
> - struct device_node *np;
> + struct device_node *np = NULL;
> unsigned long flags;
> + phandle masked_handle;
>
> if (!handle)
> return NULL;
>
> raw_spin_lock_irqsave(&devtree_lock, flags);
> - for_each_of_allnodes(np)
> - if (np->phandle == handle)
> - break;
> +
> + masked_handle = handle & phandle_cache_mask;
> +
> + if (phandle_cache) {
> + if (phandle_cache[masked_handle] &&
> + handle == phandle_cache[masked_handle]->phandle)
> + np = phandle_cache[masked_handle];
> + }
> +
> + if (!np) {
> + for_each_of_allnodes(np)
> + if (np->phandle == handle) {
> + if (phandle_cache)
> + phandle_cache[masked_handle] = np;
> + break;
> + }
> + }
> +
> of_node_get(np);
> raw_spin_unlock_irqrestore(&devtree_lock, flags);
> return np;
> diff --git a/drivers/of/of_private.h b/drivers/of/of_private.h
> index 0c609e7d0334..fa70650136b4 100644
> --- a/drivers/of/of_private.h
> +++ b/drivers/of/of_private.h
> @@ -131,6 +131,9 @@ extern void __of_update_property_sysfs(struct device_node *np,
> extern void __of_sysfs_remove_bin_file(struct device_node *np,
> struct property *prop);
>
> +/* illegal phandle value (set when unresolved) */
> +#define OF_PHANDLE_ILLEGAL 0xdeadbeef
> +
> /* iterators for transactions, used for overlays */
> /* forward iterator */
> #define for_each_transaction_entry(_oft, _te) \
> diff --git a/drivers/of/resolver.c b/drivers/of/resolver.c
> index 740d19bde601..b2ca8185c8c6 100644
> --- a/drivers/of/resolver.c
> +++ b/drivers/of/resolver.c
> @@ -19,9 +19,6 @@
>
> #include "of_private.h"
>
> -/* illegal phandle value (set when unresolved) */
> -#define OF_PHANDLE_ILLEGAL 0xdeadbeef
> -
> static phandle live_tree_max_phandle(void)
> {
> struct device_node *node;
> Total memory = 768MB; using 2048kB for hash table (at (ptrval))
Linux version 4.18.0-g5d852e5b3424 (root@nippy) (gcc version 8.1.0 (Debian 8.1.0-12)) #4 SMP Wed Aug 29 14:54:01 AEST 2018
Found a Heathrow mac-io controller, rev: 1, mapped at 0x(ptrval)
PowerMac motherboard: PowerMac G3 (Silk)
Using PowerMac machine description
bootconsole [udbg0] enabled
CPU maps initialized for 1 thread per core
(thread shift is 0)
-----------------------------------------------------
Hash_size = 0x200000
phys_mem_size = 0x30000000
dcache_bsize = 0x20
icache_bsize = 0x20
cpu_features = 0x000000000501a008
possible = 0x000000002f7ff04b
always = 0x0000000001000000
cpu_user_features = 0x8c000001 0x00000000
mmu_features = 0x00000001
Hash = 0x(ptrval)
Hash_mask = 0x7fff
-----------------------------------------------------
Found Grackle (MPC106) PCI host bridge at 0x0000000080000000. Firmware bus number: 0->0
PCI host bridge /pci (primary) ranges:
IO 0x00000000fe000000..0x00000000fe7fffff -> 0x0000000000000000
MEM 0x00000000fd000000..0x00000000fdffffff -> 0x0000000000000000
MEM 0x0000000080000000..0x00000000fcffffff -> 0x0000000080000000
nvram: OF partition at 0x1800
nvram: XP partition at 0x1300
nvram: NR partition at 0x1400
Top of RAM: 0x30000000, Total RAM: 0x30000000
Memory hole size: 0MB
Zone ranges:
DMA [mem 0x0000000000000000-0x000000002fffffff]
Normal empty
HighMem empty
Movable zone start for each node
Early memory node ranges
node 0: [mem 0x0000000000000000-0x000000002fffffff]
Initmem setup node 0 [mem 0x0000000000000000-0x000000002fffffff]
On node 0 totalpages: 196608
DMA zone: 1536 pages used for memmap
DMA zone: 0 pages reserved
DMA zone: 196608 pages, LIFO batch:31
percpu: Embedded 14 pages/cpu @(ptrval) s24684 r8192 d24468 u57344
pcpu-alloc: s24684 r8192 d24468 u57344 alloc=14*4096
pcpu-alloc: [0] 0 [0] 1
Built 1 zonelists, mobility grouping on. Total pages: 195072
Kernel command line: root=/dev/sda12 video=atyfb:vmode:14 log_buf_len=64k earlyprintk console=tty0
log_buf_len: 65536 bytes
early log buf free: 29884(91%)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 760236K/786432K available (5756K kernel code, 244K rwdata, 1332K rodata, 268K init, 175K bss, 26196K reserved, 0K cma-reserved, 0K highmem)
Kernel virtual memory layout:
* 0xfffbf000..0xfffff000 : fixmap
* 0xff800000..0xffc00000 : highmem PTEs
* 0xfef5b000..0xff800000 : early ioremap
* 0xf1000000..0xfef5b000 : vmalloc & ioremap
Hierarchical RCU implementation.
NR_IRQS: 512, nr_irqs: 512, preallocated irqs: 16
irq: Found primary Apple PIC /pci/mac-io for 64 irqs
irq: System has 64 possible interrupts
GMT Delta read from XPRAM: -360 minutes, DST: on
time_init: decrementer frequency = 16.708416 MHz
time_init: processor frequency = 501.150000 MHz
clocksource: timebase: mask: 0xffffffffffffffff max_cycles: 0x3da7d2cd7, max_idle_ns: 440795202411 ns
clocksource: timebase mult[3bd99eb5] shift[24] registered
clockevent: decrementer mult[44700b4] shift[32] cpu[0]
Console: colour dummy device 80x25
console [tty0] enabled
bootconsole [udbg0] disabled
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
Hierarchical SRCU implementation.
smp: Bringing up secondary CPUs ...
smp: Brought up 1 node, 1 CPU
Using standard scheduler topology
devtmpfs: initialized
Duplicate name in PowerPC,750, renamed to "l2-cache#1"
Duplicate name in mac-io, renamed to "ide#1"
Duplicate name in ide#1, renamed to "atapi-disk#1"
Duplicate name in multifunc-device, renamed to "pci1799,1#1"
random: get_random_u32 called from bucket_table_alloc+0x90/0x214 with crng_init=0
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
futex hash table entries: 512 (order: 2, 16384 bytes)
NET: Registered protocol family 16
PCI: Probing PCI hardware
PCI host bridge to bus 0000:00
pci_bus 0000:00: root bus resource [io 0x0000-0x7fffff]
pci_bus 0000:00: root bus resource [mem 0xfd000000-0xfdffffff] (bus address [0x00000000-0x00ffffff])
pci_bus 0000:00: root bus resource [mem 0x80000000-0xfcffffff]
pci_bus 0000:00: root bus resource [bus 00-ff]
pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to ff
pci 0000:00:00.0: [1057:0002] type 00 class 0x060000
pci 0000:00:0e.0: [1033:00cd] type 00 class 0x0c0010
pci 0000:00:0e.0: reg 0x10: [mem 0x80803000-0x80803fff]
pci 0000:00:0e.0: supports D2
pci 0000:00:0e.0: PME# supported from D2 D3hot
pci 0000:00:0f.0: [1033:0035] type 00 class 0x0c0310
pci 0000:00:0f.0: reg 0x10: [mem 0x80802000-0x80802fff]
pci 0000:00:0f.0: supports D1 D2
pci 0000:00:0f.0: PME# supported from D0 D1 D2 D3hot
pci 0000:00:0f.1: [1033:0035] type 00 class 0x0c0310
pci 0000:00:0f.1: reg 0x10: [mem 0x80801000-0x80801fff]
pci 0000:00:0f.1: supports D1 D2
pci 0000:00:0f.1: PME# supported from D0 D1 D2 D3hot
pci 0000:00:0f.2: [1033:00e0] type 00 class 0x0c0320
pci 0000:00:0f.2: reg 0x10: [mem 0x80800000-0x808000ff]
pci 0000:00:0f.2: supports D1 D2
pci 0000:00:0f.2: PME# supported from D0 D1 D2 D3hot
pci 0000:00:10.0: [106b:0010] type 00 class 0xff0000
pci 0000:00:10.0: reg 0x10: [mem 0xf3000000-0xf307ffff]
pci 0000:00:12.0: [1002:4750] type 00 class 0x030000
pci 0000:00:12.0: reg 0x10: [mem 0x81000000-0x81ffffff]
pci 0000:00:12.0: reg 0x14: [io 0x0c00-0x0cff]
pci 0000:00:12.0: reg 0x18: [mem 0x80804000-0x80804fff]
pci 0000:00:12.0: reg 0x30: [mem 0xfd000000-0xfd01ffff pref]
pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 00
PCI 0000:00 Cannot reserve Legacy IO [io 0x0000-0x0fff]
pci 0000:00:12.0: BAR 6: assigned [mem 0xfd000000-0xfd01ffff pref]
pci_bus 0000:00: resource 4 [io 0x0000-0x7fffff]
pci_bus 0000:00: resource 5 [mem 0xfd000000-0xfdffffff]
pci_bus 0000:00: resource 6 [mem 0x80000000-0xfcffffff]
pci 0000:00:12.0: vgaarb: VGA device added: decodes=io+mem,owns=mem,locks=none
pci 0000:00:12.0: vgaarb: bridge control possible
pci 0000:00:12.0: vgaarb: setting as boot device (VGA legacy resources not available)
vgaarb: loaded
SCSI subsystem initialized
libata version 3.00 loaded.
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
clocksource: Switched to clocksource timebase
NET: Registered protocol family 2
tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes)
TCP established hash table entries: 8192 (order: 3, 32768 bytes)
TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
UDP hash table entries: 512 (order: 2, 16384 bytes)
UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
pci 0000:00:0f.0: enabling device (0014 -> 0016)
pci 0000:00:0f.1: enabling device (0014 -> 0016)
pci 0000:00:0f.2: enabling device (0014 -> 0016)
PCI: CLS 32 bytes, default 32
Thermal assist unit
using timers,
shrink_timer: 200 jiffies
Initialise system trusted keyrings
workingset: timestamp_bits=30 max_order=18 bucket_order=0
squashfs: version 4.0 (2009/01/31) Phillip Lougher
Key type asymmetric registered
Asymmetric key parser 'x509' registered
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
io scheduler noop registered
io scheduler deadline registered (default)
io scheduler mq-deadline registered (default)
io scheduler kyber registered
atyfb 0000:00:12.0: enabling device (0086 -> 0087)
atyfb: using auxiliary register aperture
atyfb: 3D RAGE PRO (Mach64 GP, PQFP, PCI) [0x4750 rev 0x7c]
atyfb: 6M SGRAM (1:1), 14.31818 MHz XTAL, 230 MHz PLL, 100 Mhz MCLK, 100 MHz XCLK
Console: switching to colour frame buffer device 128x48
atyfb: fb0: ATY Mach64 frame buffer device on PCI
pmac_zilog: 0.6 (Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx>)
Generic non-volatile memory driver v1.1
brd: module loaded
loop: module loaded
MacIO PCI driver attached to Heathrow chipset
swim3 0.00015000:swim3: [fd0] SWIM3 floppy controller
0.00013020:ch-a: ttyS0 at MMIO 0xf3013020 (irq = 16, base_baud = 230400) is a Z85c30 ESCC - Serial port
0.00013000:ch-b: ttyS1 at MMIO 0xf3013000 (irq = 17, base_baud = 230400) is a Z85c30 ESCC - Serial port
Macintosh Cuda and Egret driver.
mesh: configured for synchronous 5 MB/s
random: fast init done
ADB keyboard at 2, handler 1
Detected ADB keyboard, type ANSI.
input: ADB keyboard as /devices/virtual/input/input0
mesh: performing initial bus reset...
ADB mouse at 3, handler set to 2
input: ADB mouse as /devices/virtual/input/input1
scsi host0: MESH
pata-macio 0.00020000:ide: Activating pata-macio chipset Heathrow ATA, Apple bus ID 0
scsi host1: pata_macio
ata1: PATA max MWDMA2 irq 28
ata1.00: ATA-7: Maxtor 6Y120P0, YAR41BW0, max UDMA/133
ata1.00: 240121728 sectors, multi 0: LBA
scsi 1:0:0:0: Direct-Access ATA Maxtor 6Y120P0 1BW0 PQ: 0 ANSI: 5
sd 1:0:0:0: [sda] 240121728 512-byte logical blocks: (123 GB/114 GiB)
sd 1:0:0:0: Attached scsi generic sg0 type 0
sd 1:0:0:0: [sda] Write Protect is off
sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
pata-macio 0.00021000:ide: Activating pata-macio chipset Heathrow ATA, Apple bus ID 1
scsi host2: pata_macio
ata2: PATA max MWDMA2 irq 30
eth0: BMAC at 00:05:02:fd:98:9c

firewire_ohci 0000:00:0e.0: enabling device (0014 -> 0016)
ata2.00: ATAPI: IOMEGA ZIP 100 ATAPI, 25.D, max PIO2, CDB intr
ata2.01: ATAPI: MATSHITADVD-ROM SR-8582, 0B8b, max MWDMA2
scsi 2:0:0:0: Direct-Access IOMEGA ZIP 100 25.D PQ: 0 ANSI: 5
firewire_ohci 0000:00:0e.0: added OHCI v1.0 device as card 0, 4 IR + 4 IT contexts, quirks 0x1
aoe: cannot create debugfs directory
aoe: AoE v85 initialised.
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci-pci: EHCI PCI platform driver
sd 2:0:0:0: Attached scsi generic sg1 type 0
ehci-pci 0000:00:0f.2: EHCI Host Controller
ehci-pci 0000:00:0f.2: new USB bus registered, assigned bus number 1
ehci-pci 0000:00:0f.2: irq 25, io mem 0x80800000
ehci-pci 0000:00:0f.2: USB 2.0 started, EHCI 1.00
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.18
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: EHCI Host Controller
usb usb1: Manufacturer: Linux 4.18.0-g5d852e5b3424 ehci_hcd
usb usb1: SerialNumber: 0000:00:0f.2
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 5 ports detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
ohci-pci: OHCI PCI platform driver
ohci-pci 0000:00:0f.0: OHCI PCI host controller
ohci-pci 0000:00:0f.0: new USB bus registered, assigned bus number 2
sd 2:0:0:0: [sdb] Attached SCSI removable disk
ohci-pci 0000:00:0f.0: irq 25, io mem 0x80802000
scsi 2:0:1:0: CD-ROM MATSHITA DVD-ROM SR-8582 0B8b PQ: 0 ANSI: 5
sr 2:0:1:0: [sr0] scsi3-mmc drive: 24x/24x cd/rw xa/form2 cdda tray
cdrom: Uniform CD-ROM driver Revision: 3.20
sr 2:0:1:0: Attached scsi CD-ROM sr0
sr 2:0:1:0: Attached scsi generic sg2 type 5
usb usb2: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.18
usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: OHCI PCI host controller
usb usb2: Manufacturer: Linux 4.18.0-g5d852e5b3424 ohci_hcd
usb usb2: SerialNumber: 0000:00:0f.0
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 3 ports detected
ohci-pci 0000:00:0f.1: OHCI PCI host controller
ohci-pci 0000:00:0f.1: new USB bus registered, assigned bus number 3
ohci-pci 0000:00:0f.1: irq 25, io mem 0x80801000
usb usb3: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.18
usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb3: Product: OHCI PCI host controller
usb usb3: Manufacturer: Linux 4.18.0-g5d852e5b3424 ohci_hcd
usb usb3: SerialNumber: 0000:00:0f.1
firewire_core 0000:00:0e.0: created device fw0: GUID 00d0f52008006aff, S400
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 2 ports detected
usbcore: registered new interface driver uas
usbcore: registered new interface driver usb-storage
mousedev: PS/2 mouse device common for all mice
rtc-generic rtc-generic: rtc core: registered rtc-generic as rtc0
i2c /dev entries driver
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
NET: Registered protocol family 17
drmem: No dynamic reconfiguration memory found
Loading compiled-in X.509 certificates
net firewire0: IP over IEEE 1394 on card 0000:00:0e.0
firewire_core 0000:00:0e.0: refreshed device fw0
sda: [mac] sda1 sda2 sda3 sda4 sda5 sda6 sda7 sda8 sda9 sda10 sda11 sda12 sda13 sda14 sda15
sd 1:0:0:0: [sda] Attached SCSI disk
EXT4-fs (sda12): mounting ext3 file system using the ext4 subsystem
EXT4-fs (sda12): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext3 filesystem) readonly on device 8:12.
Freeing unused kernel memory: 268K
This architecture does not have kernel memory protection.
Adding 3145724k swap on /dev/sda13. Priority:-2 extents:1 across:3145724k
EXT4-fs (sda12): re-mounted. Opts: (null)
random: crng init done
EXT4-fs (sda12): re-mounted. Opts: errors=remount-ro
EXT4-fs (sda14): mounting ext3 file system using the ext4 subsystem
EXT4-fs (sda14): mounted filesystem with ordered data mode. Opts: (null)
phy registers:
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
Installing knfsd (copyright (C) 1996 okir@xxxxxxxxxxxx).