Sponsorships, Releases, New Books, and Kickstarters

A giant tangle of stuff, and it’s all related. Plus, I want your opinion on two questions.

OpenBSD Mastery: Filesystems is at the copyeditor, and due back 15 December. I should have print in stores immediately before Christmas. Barely.

Prohibition Orcs and Frozen Talons are leaking out in ebook right now. If you buy them directly from me, they come with an exclusive bonus–To Serve Orc: Enduring Recipes from the Old Country, Watered Down for America. It’s short, but you won’t find it anywhere except my site. The print books are underway, and the leather-covered Orcibus will have to wait until I can deliver print books to the cover maker. Covers should exist in early December, so I should completely fulfill everything before 2023.

Which brings me to scheduling.

People sometimes ask me if they can buy signed print books directly from me. I had intended to run a Kickstarter as an advance sale for OpenBSD Mastery: Filesystems, which would let those folks buy signed books from me. Kickstarter will not let you run a new Kickstarter while an old one has not yet been fulfilled, however. If I’m honest, I can’t run a new Kickstarter until, oh, 1 January 2023.

Which means I can’t realistically do one for OMF. I am considering running a thirty-day print sale for OMF on my web site, however. Paperbacks would be $25, hardcovers $40. Shipping would be $10 US, $15 Canada, and $40 rest of world. (Yeah, shipping is terrible.) You’d have the option to order one extra book, at the same prices, for the same shipping. I can cram two Mastery books, or a Mastery and a novel, in an USPS Priority Mail envelope. Shipments would go out with the sponsor shipments, but would NOT arrive in time for Christmas. Comment if you’d buy one. If nobody wants it, I won’t bother setting it up.

Which means that my next Kickstarter will be for a fiction collection (Corrosive Devotion: Ten Tales of Love that Aren’t Love Stories), probably in January 2023.

About that time, I’ll open sponsorships for the next Mastery title, “Running Your Own Mail Server.” Because, like Kickstarter, I won’t open new sponsorships until I’ve fulfilled the old ones. Prices are rising everywhere, so I’m contemplating raising print sponsorship prices from $100 to $120. If you’re a previous print sponsor, would that stop you from sponsoring again? This will let me integrate a Kickstarter into the business plan, rather than being a late addition haphazardly nailed onto the side.

For similar reasons, the ebook of OpenBSD Mastery: Filesystems will be $12.99 rather than $10.99. This means that while the Kindle version will be available at any number of bookstores, it will not be in Amazon’s Kindle bookstore. Amazon will have the print edition. Amazon is no longer a viable e-bookstore for my new shorter nonfiction, mostly because I’m not willing to screw my readers.

That’s the reasons for the schedule.

Speaking of schedules, I have once again completed all current writing projects simultaneously and now must perform a laborious cold start. I truly must figure out how to de-synchronize my multiple projects.

“OpenBSD Mastery: Filesystems” draft done!

After far too long, I have finished a first draft of OpenBSD Mastery: Filesystems. Sponsorships are now closed.

I’m asking tech reviewers to get any comments to me by 15 October 2022. That’s four weeks. It might seem tight, but experience shows that people either get their comments to me immediately, or wait until the last possible weekend. I’m not complaining–I do exactly the same thing. Please return any comments either a) in plain text, with enough context that I can find them when page numbers change, or b) as annotations directly on the PDF.

My tech reviewers are now in their third decade of winning the prize for “most likely to use many different PDF readers.” A file that works for one won’t work for another. I work around this by distributing three PDFs of the manuscript, each identical in contact but prepared differently. Everyone should be able to find one that works for them.

If you’re interested in doing a tech review, please drop me an email (mwl at mwl dot io) saying who you are, why you would make you a good reviewer, and that you won’t share the manuscript. (Piracy is bad, but having my name on an unreviewed and thus certainly incorrect document is horrifying). I’ll ignore responses that can’t follow those instructions, because whenever I don’t I get difficult-to-decipher feedback. (I have previously received PostScript diffs, and… no. Just no.)

I’ll be turning my attention to the Prohibition Orcs copyedits next. Then it’s back to the Epic Giant Fiction Project, and another tech book, title TBA.

“OpenBSD Mastery: Filesystems” Status Report

I just finished the ‘non-native filesystems’ part of “OpenBSD Mastery: Filesystems.” I wouldn’t say I’ve finished the hard part, but I have finished the “intertwined to an unholy degree” part.

In the beginning, Berkely released Unix. This made a lot of vendors very angry and has widely been regarded as a bad move.

Why have I spent months on five chapters? Because everything in the core storage system of any Unix is intertwined to a nearly unholy degree. To understand filesystems you must understand partitioning, but to understand why Unix uses partitions as it does you need to understand filesystems. I have to meticulously disentangle facts so that I can start explanations at the bottom of the storage stack, but add in enough higher-level details exactly when you need them so you can make sense of why the bottom layers work as they do.

Otherwise, you’d look at computers and think “Wow, this whole thing is stupid.” Don’t get me wrong, the whole thing IS stupid, but it’s your job to understand the stupidity and I don’t need to be rubbing your nose in it.

Have I written on these before?

Yes, many times.

Does that make them easier to write?

BWAHAHAHAHA. No.

Can I use the earlier edition of Absolute OpenBSD to guide me?

Sure, except that the book is ten years old and every detail within is suspect and must be triple-checked against the current state of the software and oh by the way that book doesn’t even mention GPT or FUSE so burn it all down. AO2e is a checklist of things that will annoy me.

The good news is, the sections that remain are fairly tidy. They’re not standalone, but they are less incestuously intertwined with other topics.

  • NFS
  • iSCSI
  • softraid
  • encrypted storage

    The first two are mostly standalone, and are thus easier to write. Also, as an author I am highly grateful that OpenBSD does not support NFSv4.

    I’m going to push hard to get this done in the next few weeks. Which brings me to:

    Once that happens, sponsorships will close. If you want your name in the book, act now.

  • DNSSEC, Badgers, and Orcs, Oh My!

    Talk about one weeeird mass escape.

    DNSSEC Mastery, 2nd edition hardcovers, paperbacks, and ebooks should now be available everywhere, so that book’s officially out.

    Today is the official release date for Domesticate Your Badgers. I made this a pre-order, so it’s available in all formats everywhere. I don’t bother with preorders for tech books, but I wanted the Kickstarter backers to get a chance to have theirs in-hand before the general public could order it. It didn’t quite work that way–backer books have started to arrive in the last day or two–but they’re on their way so it’s not a complete failure.

    Last, the Fiction River anthology Broken Dreams comes out today. The author list includes my name. The book description says something about alternate history, in Detroit, with orcs. It’s at all major retailers, and a bunch of minor ones.

    If I had pushed, I could have released “Letters to ed(1)” today, but that’s too much even for me. A couple more weeks on that one. Consider yourself warned.

    Charity Auction: DNSSEC Mastery proof for Black Girls Code

    I have another unique physical artifact, which means it’s time for another charity auction.

    I’ve run auctions for the Soroptimists, the Ottawa Mission, and multiple ones for the FreeBSD and OpenBSD foundations. I’m a writer so I can’t give as much to charities as I would like, but I seem to have developed a knack for persuading other people to give to charity and that’s the same thing, right?

    I’m auctioning off the print proof of DNSSEC Mastery, 2nd edition.

    A proof is a prepublication version of a book, printed so the publisher can double check that the spine text is actually on the spine and the cover art is right side up and the correct words are on the proper pages and that the typesetter didn’t forget the commas. It’s stamped with a Not For Resale banner so unscrupulous folks can’t sell it ahead of time. Only one print proof of DNSSEC Mastery exists.

    I’ll sign this book, add a personalized note declaring that this tome was won at charity auction and thus demonstrates the winner’s sound moral and ethical character, and ship it by the best means available for $15 or less.

    This time, you’ll be supporting Black Girl Code. They do good work and have chapters all over the US, including here in Detroit, as well as South Africa.

    The auction rules are:

    Comment on this post to bid. All bids in US dollars. I advise bidders to click the “notify me of new comments by email” button, so they can see when they’re outbid.

    The auction runs from now until 5PM EST 28 February. If the bidding goes nuts in the last few minutes, I’ll leave it open until it settles down. There’s no sniping this auction at the last moment, as I want the bids to escalate.

    Once the auction closes, send your donation to BGC within two days.

    Send me your receipt. Once I have the receipt, I mail you the book.

    If you don’t donate within a few days, or don’t send me your receipt, the number two winner has their chance.

    As always, I must remind you that you don’t need to win a silly book to donate. You can be of sound character without a reward from me.

    Another auction will follow this one: the Domesticate your Badgers proof, for my alma madder the Clarion Foundation.

    New book: “Domesticate Your Badgers”

    The Kickstarter is over, backers and Patronizers have their ebooks, so I can now offer Domesticate Your Badgers: Become a Better Writer through Deliberate Practice to the rest of the world.

    Sort of.

    If you want to read it today, you can buy it directly from me at my bookstore. At all other stores, the ebook is on pre-order and will be released on 1 March 2022. The print book will be on pre-order shortly.

    Is this a lame scheme to steer readers to purchase directly from me? No. That’s merely a super convenient side effect.

    I want a chance to get Patronizers and Kickstarter backers who elected for print editions their copies before the book is broadly available. While the supply chain is still fubar and printers are backed up, I hope that I can get my print copies by March. That’s realistic but, you know, plague changes everything.

    If you’d rather pre-order from a big ebookstore, that’s fine. The DYB page has links for your convenience.

    I will say that of all the books I’ve released, this might be the prettiest. I wanted illustrations that ranged from “OMG adorable!” to “joyful WTF,” and Pamela Mosiejczuk knocked it out of the park.

    So: if you ask how I write all these books, I’ll point you at Domesticate Your Badgers.

    If you ask how I make a living writing books, I’ll point you at Cash Flow for Creators.

    Save yourself some trouble, and buy them both.

    Domesticate Your Badgers

    Kickstarter Campaign Results

    My small, low-risk trial of Kickstarter, where I hoped to raise $500? It 1768% funded.

    I guess there’s a demand for this book?

    My back-of-an-envelope math says that my total expenses will be about half of that. I’ll keep detailed notes, of course, but for a work with no obvious audience in a field where I’m not known, Kickstarter made writing DYB not a financial loss. Plus I’ve learned how Kickstarter works and how to assemble videos.

    DYB is due back from copyedit in mid-December. With anything resembling luck, I’ll have the ebook for backers and Patronizers before the end of the month. Print will take longer.

    My copyeditor has requested that I not send her two of my books simultaneously. (Other people’s sure. But not mine.) Once DYB returns, I’ll punt the DNSSEC over.

    Will I do another Kickstarter? I’ll probably Kickstart a short fiction collection next year. If that works, I might both Kickstart and sponsor the OpenBSD storage book.

    Now, if you’ll pardon me, I’m off to get BookFunnel integrated into my bookstore so I can send people some books…

    New Test System

    Now that “DNSSEC Mastery 2/e” is ready for copyedit, I can turn my attention to “OpenBSD Storage Mastery.”

    Back in 2014, I bought a machine for writing the ZFS books. Ten hard drives. 32 GB memory. Enough power supply to heat my office during a Michigan winter, which was great during Michigan winters and not so great in the summer. Fan noise that belonged in a datacenter. That machine’s now in the basement, ready for me to test things that require large amounts of storage.

    As of today I have a more modern system on my desk, running a current OpenBSD snapshot. Clean and simple, the way God and Dennis Ritchie intended.

    By unpopular request, here’s the details. It’s clean out of the box, I don’t even have tcsh installed yet, let alone my .cwmrc copied over.


    OpenBSD 7.0-current (GENERIC.MP) #132: Mon Nov 29 08:51:58 MST 2021
    deraadt@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP
    real mem = 33592328192 (32036MB)
    avail mem = 32558276608 (31049MB)
    random: good seed from bootblocks
    mpath0 at root
    scsibus0 at mpath0: 256 targets
    mainbus0 at root
    bios0 at mainbus0: SMBIOS rev. 3.3 @ 0xc6a02000 (72 entries)
    bios0: vendor American Megatrends Inc. version "2423" date 08/10/2021
    bios0: ASUS ROG STRIX B550-F GAMING
    acpi0 at bios0: ACPI 6.0
    acpi0: sleep states S0 S3 S4 S5
    acpi0: tables DSDT FACP IVRS SSDT SSDT SSDT FIDT FPDT MCFG HPET VFCT BGRT WPBT TPM2 SSDT CRAT CDIT SSDT SSDT SSDT WSMT APIC SSDT SSDT
    acpi0: wakeup devices X162(S4) GP17(S4) XHC0(S4) XHC1(S4) X161(S4) PTXH(S4) X1_1(S4) X1_2(S4) X1_3(S4) I225(S4) X162(S4) M2_2(S4)
    acpitimer0 at acpi0: 3579545 Hz, 32 bits
    acpimcfg0 at acpi0
    acpimcfg0: addr 0xf0000000, bus 0-127
    acpihpet0 at acpi0: 14318180 Hz
    acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
    cpu0 at mainbus0: apid 0 (boot processor)
    cpu0: AMD Ryzen 5 5600G with Radeon Graphics, 3893.28 MHz, 19-50-00
    cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,PQM,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,SHA,UMIP,PKU,IBPB,IBRS,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
    cpu0: 32KB 64b/line 8-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache
    cpu0: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu0: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu0: smt 0, core 0, package 0
    mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges
    cpu0: apic clock running at 99MHz
    cpu0: mwait min=64, max=64, C-substates=1.1, IBE
    cpu1 at mainbus0: apid 2 (application processor)
    cpu1: AMD Ryzen 5 5600G with Radeon Graphics, 3892.69 MHz, 19-50-00
    cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,PQM,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,SHA,UMIP,PKU,IBPB,IBRS,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
    cpu1: 32KB 64b/line 8-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache
    cpu1: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu1: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu1: smt 0, core 1, package 0
    cpu2 at mainbus0: apid 4 (application processor)
    cpu2: AMD Ryzen 5 5600G with Radeon Graphics, 3892.70 MHz, 19-50-00
    cpu2: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,PQM,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,SHA,UMIP,PKU,IBPB,IBRS,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
    cpu2: 32KB 64b/line 8-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache
    cpu2: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu2: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu2: smt 0, core 2, package 0
    cpu3 at mainbus0: apid 6 (application processor)
    cpu3: AMD Ryzen 5 5600G with Radeon Graphics, 3892.69 MHz, 19-50-00
    cpu3: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,PQM,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,SHA,UMIP,PKU,IBPB,IBRS,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
    cpu3: 32KB 64b/line 8-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache
    cpu3: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu3: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu3: smt 0, core 3, package 0
    cpu4 at mainbus0: apid 8 (application processor)
    cpu4: AMD Ryzen 5 5600G with Radeon Graphics, 3892.69 MHz, 19-50-00
    cpu4: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,PQM,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,SHA,UMIP,PKU,IBPB,IBRS,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
    cpu4: 32KB 64b/line 8-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache
    cpu4: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu4: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu4: smt 0, core 4, package 0
    cpu5 at mainbus0: apid 10 (application processor)
    cpu5: AMD Ryzen 5 5600G with Radeon Graphics, 3892.69 MHz, 19-50-00
    cpu5: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,PQM,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,SHA,UMIP,PKU,IBPB,IBRS,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
    cpu5: 32KB 64b/line 8-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache
    cpu5: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu5: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu5: smt 0, core 5, package 0
    cpu6 at mainbus0: apid 1 (application processor)
    cpu6: AMD Ryzen 5 5600G with Radeon Graphics, 3892.69 MHz, 19-50-00
    cpu6: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,PQM,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,SHA,UMIP,PKU,IBPB,IBRS,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
    cpu6: 32KB 64b/line 8-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache
    cpu6: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu6: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu6: smt 1, core 0, package 0
    cpu7 at mainbus0: apid 3 (application processor)
    cpu7: AMD Ryzen 5 5600G with Radeon Graphics, 3892.69 MHz, 19-50-00
    cpu7: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,PQM,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,SHA,UMIP,PKU,IBPB,IBRS,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
    cpu7: 32KB 64b/line 8-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache
    cpu7: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu7: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu7: smt 1, core 1, package 0
    cpu8 at mainbus0: apid 5 (application processor)
    cpu8: AMD Ryzen 5 5600G with Radeon Graphics, 3892.69 MHz, 19-50-00
    cpu8: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,PQM,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,SHA,UMIP,PKU,IBPB,IBRS,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
    cpu8: 32KB 64b/line 8-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache
    cpu8: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu8: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu8: smt 1, core 2, package 0
    cpu9 at mainbus0: apid 7 (application processor)
    cpu9: AMD Ryzen 5 5600G with Radeon Graphics, 3892.69 MHz, 19-50-00
    cpu9: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,PQM,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,SHA,UMIP,PKU,IBPB,IBRS,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
    cpu9: 32KB 64b/line 8-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache
    cpu9: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu9: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu9: smt 1, core 3, package 0
    cpu10 at mainbus0: apid 9 (application processor)
    cpu10: AMD Ryzen 5 5600G with Radeon Graphics, 3892.69 MHz, 19-50-00
    cpu10: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,PQM,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,SHA,UMIP,PKU,IBPB,IBRS,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
    cpu10: 32KB 64b/line 8-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache
    cpu10: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu10: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu10: smt 1, core 4, package 0
    cpu11 at mainbus0: apid 11 (application processor)
    cpu11: AMD Ryzen 5 5600G with Radeon Graphics, 3892.69 MHz, 19-50-00
    cpu11: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,PQM,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,SHA,UMIP,PKU,IBPB,IBRS,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
    cpu11: 32KB 64b/line 8-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache
    cpu11: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu11: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
    cpu11: smt 1, core 5, package 0
    ioapic0 at mainbus0: apid 13 pa 0xfec00000, version 21, 24 pins
    ioapic1 at mainbus0: apid 14 pa 0xfec01000, version 21, 32 pins
    acpiprt0 at acpi0: bus 0 (PCI0)
    acpiprt1 at acpi0: bus -1 (GPP6)
    acpiprt2 at acpi0: bus -1 (GPP7)
    acpiprt3 at acpi0: bus -1 (GPP8)
    acpiprt4 at acpi0: bus -1 (GPP9)
    acpiprt5 at acpi0: bus 8 (GP17)
    acpiprt6 at acpi0: bus -1 (GPP0)
    acpiprt7 at acpi0: bus -1 (GP18)
    acpiprt8 at acpi0: bus 7 (GPP4)
    acpiprt9 at acpi0: bus -1 (GPP5)
    acpiprt10 at acpi0: bus 1 (GPP3)
    acpipci0 at acpi0 PCI0: 0x00000010 0x00000011 0x00000000
    acpicmos0 at acpi0
    acpibtn0 at acpi0: PWRB
    amdgpio0 at acpi0 GPIO uid 0 addr 0xfed81500/0x400 irq 7, 184 pins
    tpm0 at acpi0 TPM_: unsupported TPM2 start method
    "ACPI0010" at acpi0 not configured
    acpicpu0 at acpi0: C3(0@350 io@0x415), C2(0@18 io@0x414), C1(0@1 mwait), PSS
    acpicpu1 at acpi0: C3(0@350 io@0x415), C2(0@18 io@0x414), C1(0@1 mwait), PSS
    acpicpu2 at acpi0: C3(0@350 io@0x415), C2(0@18 io@0x414), C1(0@1 mwait), PSS
    acpicpu3 at acpi0: C3(0@350 io@0x415), C2(0@18 io@0x414), C1(0@1 mwait), PSS
    acpicpu4 at acpi0: C3(0@350 io@0x415), C2(0@18 io@0x414), C1(0@1 mwait), PSS
    acpicpu5 at acpi0: C3(0@350 io@0x415), C2(0@18 io@0x414), C1(0@1 mwait), PSS
    acpicpu6 at acpi0: C3(0@350 io@0x415), C2(0@18 io@0x414), C1(0@1 mwait), PSS
    acpicpu7 at acpi0: C3(0@350 io@0x415), C2(0@18 io@0x414), C1(0@1 mwait), PSS
    acpicpu8 at acpi0: C3(0@350 io@0x415), C2(0@18 io@0x414), C1(0@1 mwait), PSS
    acpicpu9 at acpi0: C3(0@350 io@0x415), C2(0@18 io@0x414), C1(0@1 mwait), PSS
    acpicpu10 at acpi0: C3(0@350 io@0x415), C2(0@18 io@0x414), C1(0@1 mwait), PSS
    acpicpu11 at acpi0: C3(0@350 io@0x415), C2(0@18 io@0x414), C1(0@1 mwait), PSS
    "AMDIF030" at acpi0 not configured
    "PNP0C14" at acpi0 not configured
    "PNP0C14" at acpi0 not configured
    "PNP0C14" at acpi0 not configured
    "PNP0C14" at acpi0 not configured
    "PNP0C14" at acpi0 not configured
    cpu0: 3893 MHz: speeds: 3900 1700 1400 MHz
    pci0 at mainbus0 bus 0
    ksmn0 at pci0 dev 0 function 0 "AMD 17h/6xh Root Complex" rev 0x00
    "AMD 17h/6xh IOMMU" rev 0x00 at pci0 dev 0 function 2 not configured
    pchb0 at pci0 dev 1 function 0 "AMD 17h/6xh Host" rev 0x00
    pchb1 at pci0 dev 2 function 0 "AMD 17h/6xh Host" rev 0x00
    ppb0 at pci0 dev 2 function 1 "AMD 17h/6xh PCIE" rev 0x00: msi
    pci1 at ppb0 bus 1
    xhci0 at pci1 dev 0 function 0 "AMD 500 Series xHCI" rev 0x00: msi, xHCI 1.10
    usb0 at xhci0: USB revision 3.0
    uhub0 at usb0 configuration 1 interface 0 "AMD xHCI root hub" rev 3.00/1.00 addr 1
    ahci0 at pci1 dev 0 function 1 "AMD 500 Series AHCI" rev 0x00: msi, AHCI 1.3.1
    ahci0: port busy after first PMP probe FIS
    ahci0: port busy after first PMP probe FIS
    ahci0: port 1: 6.0Gb/s
    scsibus1 at ahci0: 32 targets
    sd0 at scsibus1 targ 1 lun 0: naa.5002538fc16090b3
    sd0: 953869MB, 512 bytes/sector, 1953525168 sectors, thin
    ppb1 at pci1 dev 0 function 2 "AMD 500 Series PCIE" rev 0x00
    pci2 at ppb1 bus 2
    ppb2 at pci2 dev 0 function 0 "AMD 500 Series PCIE" rev 0x00: msi
    pci3 at ppb2 bus 3
    ppb3 at pci2 dev 4 function 0 "AMD 500 Series PCIE" rev 0x00: msi
    pci4 at ppb3 bus 4
    nvme0 at pci4 dev 0 function 0 "SanDisk WD Black NVMe" rev 0x00: msix, NVMe 1.3
    nvme0: WDBRPG0010BNC-WRSN, firmware 111130WD, serial 213733803989
    scsibus2 at nvme0: 2 targets, initiator 0
    sd1 at scsibus2 targ 1 lun 0:
    sd1: 953869MB, 512 bytes/sector, 1953525168 sectors
    ppb4 at pci2 dev 8 function 0 "AMD 500 Series PCIE" rev 0x00: msi
    pci5 at ppb4 bus 5
    ppb5 at pci2 dev 9 function 0 "AMD 500 Series PCIE" rev 0x00: msi
    pci6 at ppb5 bus 6
    igc0 at pci6 dev 0 function 0 "Intel I225-V" rev 0x03, msix, 4 queues, address 7c:10:c9:45:b2:d1
    ppb6 at pci0 dev 2 function 2 "AMD 17h/6xh PCIE" rev 0x00: msi
    pci7 at ppb6 bus 7
    nvme1 at pci7 dev 0 function 0 "SanDisk WD Black NVMe" rev 0x00: msix, NVMe 1.3
    nvme1: WDBRPG0010BNC-WRSN, firmware 111130WD, serial 213733806541
    scsibus3 at nvme1: 2 targets, initiator 0
    sd2 at scsibus3 targ 1 lun 0:
    sd2: 953869MB, 512 bytes/sector, 1953525168 sectors
    pchb2 at pci0 dev 8 function 0 "AMD 17h/6xh Host" rev 0x00
    ppb7 at pci0 dev 8 function 1 "AMD 17h/6xh PCIE" rev 0x00
    pci8 at ppb7 bus 8
    amdgpu0 at pci8 dev 0 function 0 "ATI Cezanne" rev 0xc9
    drm0 at amdgpu0
    amdgpu0: msi
    azalia0 at pci8 dev 0 function 1 "ATI Renoir HD Audio" rev 0x00: msi
    azalia0: no supported codecs
    ccp0 at pci8 dev 0 function 2 "AMD 17h/1xh Crypto" rev 0x00
    xhci1 at pci8 dev 0 function 3 "AMD 17h/6xh xHCI" rev 0x00: msi, xHCI 1.10
    usb1 at xhci1: USB revision 3.0
    uhub1 at usb1 configuration 1 interface 0 "AMD xHCI root hub" rev 3.00/1.00 addr 1
    xhci2 at pci8 dev 0 function 4 "AMD 17h/6xh xHCI" rev 0x00: msi, xHCI 1.10
    usb2 at xhci2: USB revision 3.0
    uhub2 at usb2 configuration 1 interface 0 "AMD xHCI root hub" rev 3.00/1.00 addr 1
    azalia1 at pci8 dev 0 function 6 "AMD 17h/1xh HD Audio" rev 0x00: apic 14 int 12
    azalia1: codecs: Realtek ALC1220
    audio0 at azalia1
    piixpm0 at pci0 dev 20 function 0 "AMD FCH SMBus" rev 0x51: polling
    iic0 at piixpm0
    iic1 at piixpm0
    pcib0 at pci0 dev 20 function 3 "AMD FCH LPC" rev 0x51
    pchb3 at pci0 dev 24 function 0 "AMD 19h/5xh Data Fabric" rev 0x00
    pchb4 at pci0 dev 24 function 1 "AMD 19h/5xh Data Fabric" rev 0x00
    pchb5 at pci0 dev 24 function 2 "AMD 19h/5xh Data Fabric" rev 0x00
    pchb6 at pci0 dev 24 function 3 "AMD 19h/5xh Data Fabric" rev 0x00
    pchb7 at pci0 dev 24 function 4 "AMD 19h/5xh Data Fabric" rev 0x00
    pchb8 at pci0 dev 24 function 5 "AMD 19h/5xh Data Fabric" rev 0x00
    pchb9 at pci0 dev 24 function 6 "AMD 19h/5xh Data Fabric" rev 0x00
    pchb10 at pci0 dev 24 function 7 "AMD 19h/5xh Data Fabric" rev 0x00
    isa0 at pcib0
    isadma0 at isa0
    com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
    pckbc0 at isa0 port 0x60/5 irq 1 irq 12
    pckbd0 at pckbc0 (kbd slot)
    wskbd0 at pckbd0: console keyboard
    pcppi0 at isa0 port 0x61
    spkr0 at pcppi0
    efifb at mainbus0 not configured
    dt: 451 probes
    uhidev0 at uhub0 port 10 configuration 1 interface 2 "AsusTek Computer Inc. AURA LED Controller" rev 2.00/1.00 addr 2
    uhidev0: iclass 3/0, 236 report ids
    uhid0 at uhidev0 reportid 236: input=64, output=64, feature=0
    ugen0 at uhub0 port 10 configuration 1 "AsusTek Computer Inc. AURA LED Controller" rev 2.00/1.00 addr 2
    uhub3 at uhub0 port 11 configuration 1 interface 0 "Genesys Logic USB2.0 Hub" rev 2.00/60.90 addr 3
    uhidev1 at uhub0 port 13 configuration 1 interface 0 "Unicomp Endura Pro Keyboard" rev 1.10/43.34 addr 4
    uhidev1: iclass 3/1
    ukbd0 at uhidev1: 8 variable keys, 6 key codes
    wskbd1 at ukbd0 mux 1
    uhidev2 at uhub0 port 13 configuration 1 interface 1 "Unicomp Endura Pro Keyboard" rev 1.10/43.34 addr 4
    uhidev2: iclass 3/1, 3 report ids
    ums0 at uhidev2 reportid 1: 3 buttons, Z dir
    wsmouse0 at ums0 mux 0
    ucc0 at uhidev2 reportid 2: 573 usages, 18 keys, array
    wskbd2 at ucc0 mux 1
    uhid1 at uhidev2 reportid 3: input=1, output=0, feature=0
    ugen1 at uhub1 port 2 "Realtek USB3.0 802.11ac 1200M Adapter" rev 2.10/2.10 addr 2
    urtwn0 at uhub2 port 2 configuration 1 interface 0 "Realtek 802.11n NIC" rev 2.10/2.00 addr 2
    urtwn0: MAC/BB RTL8192EU, RF 6052 2T2R, address 98:de:d0:0f:c9:62
    vscsi0 at root
    scsibus4 at vscsi0: 256 targets
    softraid0 at root
    scsibus5 at softraid0: 256 targets
    root on sd0a (d25c4224901b9485.a) swap on sd0b dump on sd0b
    [drm] *ERROR* sdma_v4_0: Failed to load firmware "amdgpu/green_sardine_sdma.bin"
    [drm] *ERROR* Failed to load sdma firmware!
    drm:pid0:psp_init_asd_microcode *ERROR* fail to initialize asd microcode
    [drm] *ERROR* Failed to load psp firmware!
    [drm] *ERROR* sw_init of IP block failed -2
    drm:pid0:amdgpu_device_init *ERROR* amdgpu_device_ip_init failed
    drm:pid0:amdgpu_attachhook *ERROR* Fatal error during GPU init
    efifb0 at mainbus0: 1920x1080, 32bpp
    wsdisplay0 at efifb0 mux 1: console (std, vt100 emulation), using wskbd0
    wskbd1: connecting to wsdisplay0
    wskbd2: connecting to wsdisplay0
    wsdisplay0: screen 1-5 added (std, vt100 emulation)

    Dang, that’s a whole mess of CPUs. Maybe I should have replaced my desktop earlier?

    Pretty sure this will spark questions, so:

    • Yes, I’m writing an OpenBSD storage book next.
    • No, I have no date on its release, or on a release of a third edition of Absolute OpenBSD.
    • Sponsorships will open once I ship the DNSSEC sponsor gifts.
    • No, I don’t have a hashtag yet.
    • I have no answer to any questions about any related topics.

    Thank you for understanding.