Light Sleep

The communicator refuses to go into deep sleep and stops the whole system, its help pages explain the fault, and the three of them leave the flat for the walk into Sidliste.

Part of the Collective for Social Development series · Tuesday 21 September 2066 · A corner flat off the shore road

In the corner flat on the third floor, later on Tuesday morning, Raduj wakes on the felt with the coat still drying on the chair by the stove and the communicator on the table in light sleep.

Capacitor 3 is still dead and the pole count is still due Friday. Nila means to leave for Sidliste once the coat is dry, and Mirena is on the floor below sorting wire.

Chapter one, the stove

The lining

Later in the morning Raduj wakes on the felt with Nila's arm still over him. The stove has burned down to a low red, the leather coat hangs on the chair beside it, and the bowls sit on the table next to the communicator, its screen dark. Nila is awake, lying on her back with her eyes on the ceiling.

Raduj

opening his eyes and sitting up

Nila

letting her arm drop onto the felt You slept a long time.

Raduj

Yeah.

Nila

sitting up and reaching over to the chair by the stove, pressing the collar of the coat between her fingers The leather is dry but the inside is still wet.

Raduj

We will have to expose the inside too.

Nila

turning the coat inside out over her knees and hanging it back on the chair with the lining toward the stove Then we need the fire up again.

Mirena

coming in with a few split boards under her good arm and feeding them into the stove one at a time I heard you through the floor. There is more wood downstairs in the kitchen, somebody broke up the cupboards before I ever came here.

Raduj

This apartment is occupied by multiple people then.

Mirena

closing the stove door and straightening up slowly, one hand on her side It was, before me. You can tell from what they burned and what they left behind. Since the spring it has only been me.

One long beep

On the table the communicator gives a single long beep, one flat tone held for about two seconds with nothing after it.

Mirena

picking the communicator up off the table and pressing the side key to light the screen

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:41
Power Alert
Deep sleep refused
Illegal flush operation blocked
Cell pack MRB-4, capacitor 3 open circuit
Card write cache kept in memory
Unit stays in light sleep
Retry may move pack state to damaged and stop the system with a kernel panic
OK Detail Log Retry
Meridian Remote Communicator
Raduj

Press on DETAIL.

Mirena

pressing DETAIL

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:41
Power detail Pack MRB-4
Event Deep sleep refused
At 10:41
Cause Flush blocked, cap 3 open
Cache 184 KB not written to card
State Light sleep, cache held
Pack MRB-4, lithium, 6 capacitors
Rated 7200 mAh
Holding 6000 mAh
Charge 37%
Draw now 96 mA
Estimate 23 h 10 m
Cap 1 OK Cap 2 OK
Cap 3 Dead Cap 4 OK
Cap 5 OK Cap 6 OK
Retry with cap 3 open may move pack state to damaged and stop the system with a kernel panic
Back Log Retry Off
Meridian Remote Communicator
Raduj

Press BACK.

Mirena

pressing BACK

The detail screen stays on the glass. The lower half breaks into thin horizontal bands that repeat the same rows of text, and for about ten seconds the picture holds like that. Then the screen goes blank and fills with small text from the top.

Shutdown[0,0] S/C/F=11/1/11 C/D=ff82e1c4/ff8a6f30 state(c0)= now lock
QNX Version 6.4.0 Release 2008/10/21-19:12:05EDT
[0]PID-TID=1-1? P/T FL=00019001/05020000 "proc/boot/procnto-600"
[0]ASPACE PID=7 PF=00001010 "proc/boot/devb-sdmmc-rc220"
ppcbe context[ff8b3e48]:
0000) 00000000 ff8b3f10 ff8c0000 0011c4a0
0010) 00000000 ffff0000 0000b800 00000001
0020) ff8a7c00 00000000 0002e000 00000024
0030) 00000000 00000000 ff8a6f30 00000000
0040) 0011c4a0 00000000 00000000 00000000
0050) 00000000 00000000 00000000 00000000
0060) 00000000 00000000 ff8a7c00 0002e000
0070) 00000001 ff8a6f00 ff8b3f10 ff8c1a08
0080) 0000b800 ff82e188 00009032 ff82e1c4
0090) 24000048 20000000 ff8a6f30
instruction[ff82e1c4]:
7c 00 18 ac 7c 00 04 ac 81 3f 00 0c 2c 09 00 00
39 29 ff e0 91 3f 00 0c 40 82 ff e8 4e 80 00 20
stack[ff8b3f10]:
0000) ff8b3f30 ff82e3a0 00000000 0002e000
0010) ff8b3f50 ff8317dc 00000b80 00000001
0020) ff8b3f70 ff8322f4 ff8a7c00 00000000
0030) ff8b3f90 ff80c9e8 00000007 00000000
Meridian Remote Communicator

Chapter two, the report

Restart

Raduj

I didn't expect this to happen.

The text stays on the screen for a few seconds, then the screen goes dark. The backlight comes back on, and after a short wait the communicator opens with a report.

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:43
System Report
Unexpected shutdown at 10:42
Processor PowerARM
Error Framebuffer
Containment Failed, process not held

The system shut itself down to keep the CPU and memory from freezing.

OK Detail Log Off
Meridian Remote Communicator
Raduj

Press on DETAIL.

Mirena

pressing DETAIL and waiting for the screen to render What is all this? It went dark on me and came back talking about faults.

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:43
Shutdown detail 10:42
Processor PowerARM
Kernel procnto-600
First fault 10:41
Component Framebuffer
Process io-display, devg-rc220
State Stopped, screen held
Second fault 10:42
Component Kernel
Signal 11 SEGV, fault 11 page
Code at FF82E1C4
Data at FF8A6F30
Address space devb-sdmmc-rc220, PID 7
Containment Failed, process not held
Action Shutdown to keep CPU and memory from freezing
Pack MRB-4, cap 3 dead
Charge 37%
Back Help Log Off
Meridian Remote Communicator
Raduj

I don't know. I have never encountered this fault. Press on HELP.

Mirena

pressing HELP and waiting for the screen to build

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:44
Help Shutdown detail

This page is built from the report of the shutdown at 10:42.

Processor, PowerARM

PowerARM is the processor in every RC-220. Meridian developed it to join a PowerPC core and an ARM core on one chip. The name appears in every shutdown report. It does not mean the processor is damaged.

Kernel, procnto-600

The part of QNX that runs all other processes and hands out memory.

First fault, framebuffer

The framebuffer is the memory that holds the picture on the screen. io-display and devg-rc220 draw into it. At 10:41 they stopped drawing, so the last picture stayed on the screen and the keys had no effect.

Second fault, kernel

At 10:42 the kernel read an address that was not mapped. Signal 11 and fault 11 name this kind of error. Code at is the instruction running at the time, data at is the address it tried to reach.

Address space, devb-sdmmc-rc220

The card driver, PID 7. Its memory was in use when the kernel faulted.

Containment

A fault in one process is normally held inside it and that process is restarted. This fault reached the kernel.

Shutdown

The system stopped itself before the CPU and memory could lock up, then restarted.

Pack MRB-4

Capacitor 3 was dead at the time. At 10:41 deep sleep was refused for the same reason. Have the pack serviced.

Back How Log Off
Meridian Remote Communicator
Raduj

Press on HOW.

Mirena

pressing HOW and waiting for the screen to build

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:44
How PowerARM 1/6

PowerARM has two cores on one chip, a PowerPC core and an ARM core. They share one memory and one memory controller.

The ARM core draws little power and runs light work: the clock, carrier watch, keys, power alerts and sleep. The PowerPC core runs heavy work: files, search, the camera and drawing the screen.

The system moves work between the cores as the load changes. The unit saves power like an ARM machine when idle and works as fast as a PowerPC machine when busy.

Sleep states

Light sleep Both cores stay on and the PowerPC core waits.
Deep sleep The PowerPC core is switched off and the ARM core executes the instruction to save data.

Before the PowerPC core is switched off, everything in its cache must be written to memory and to the card. This is the flush. An interrupted flush leaves memory half written, so the pack must hold the supply steady until it ends. With a capacitor open the pack cannot promise this, so the flush is blocked.

Fault mode in this report

At 10:41 deep sleep was refused and the flush was blocked. The card write cache, 184 KB, stayed in memory, lines in the PowerPC cache were never written back, and the unit stayed in light sleep.

The power alert and its detail page came from the ARM core. When BACK closed them, the PowerPC core drew the next screen, and the framebuffer read memory that the held cache had not yet updated. The picture repeated in bands and the display processes stopped.

The kernel then tried to flush the held lines itself. The instruction at FF82E1C4 is that flush. It reached an address in the card driver's memory that was no longer mapped, and the kernel stopped the system.

Back Prev Next Off
Meridian Remote Communicator
Nila

getting up off the felt and holding a hand out to Mirena Can I have it? I want to see what it is doing.

Mirena

handing over the communicator Yes, take it.

Nila

taking the communicator, pressing NEXT and looking at the screen

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:45
How Kernel 2/6

QNX is built around a small kernel, procnto-600. It starts processes, gives each one its own memory and passes messages between them.

Drivers are ordinary processes. The card driver, the display driver and the key driver each run on their own and can be stopped and started again without stopping the unit.

The kernel keeps a map for every process. The map says which addresses the process may use and where they lie in memory. An address outside the map is not mapped.

When a process uses an address that is not mapped, the kernel stops that process only. When the kernel itself does it, nothing is left to stop it, so the whole system stops. This is a kernel panic.

Shared buffers

The card driver and the display share some buffers, so a picture read from the card can go to the screen without being copied. The same memory appears in both maps.

Fault mode in this report

The address FF8A6F30 lay in a buffer shared by the card driver and the display. When the display processes stopped at 10:42, their buffers were released and the address was taken out of the map.

The held cache still had lines for that address. At 10:42 the kernel flushed them for the card driver, PID 7, and reached an address that was no longer mapped. The fault happened inside the kernel, so it could not be held inside one process.

Back Prev Next Off
Meridian Remote Communicator

The bucket

Nila

looking up from the screen at Raduj What are all these things? Kernel, process, map, buffer.

Raduj

The device is built around something called preemption. The kernel is a program that handles the interaction between other programs and the parts of the machine, so the programmer only has to write instructions like print, arithmetic, if, initialize and return rather than memorize mnemonics like cmp, mov and deal with the conflicting nature of PowerPC and ARM registers in PowerARM.

A process is a set of instructions being executed right now. In a preemption environment, the computer decides via another program called a scheduler what process should be given priority so everything is seamless.

A map is, as the word says, a table that maps everything that is loaded into memory. This can include both programs and text.

A buffer is like a bucket allocated to a program by the kernel in memory that allows it to temporarily store data while it's processing.

Nila

reading the page again with the communicator held close So the display had a bucket, and when the display stopped the bucket was taken away, but the cache still had water to pour into it and poured it where the bucket used to be. Is that what made it all stop?

Raduj

Yes, and since you cannot turn water into a void, the kernel took away the cache, and since you cannot operate without the cache because it's how you store data about to be processed, the system crashed.

Nila

lowering the communicator onto her knee Then it will do it again, won't it? The capacitor is still dead, so the next time it tries to sleep deep it will hold the water again.

Raduj

The panic, unlikely. The block, yes, to protect the pack. Turn the page to the framebuffer or something to see exactly what happened.

Nila

pressing NEXT and waiting for the screen to build

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:47
How Framebuffer 3/6

The framebuffer is an area of memory with one place for every point on the screen. The display controller reads it from top to bottom many times a second and shows what it finds.

io-display and devg-rc220 draw each new screen in the PowerPC cache first. They then ask for a memory flush, so the new picture reaches the framebuffer before the controller reads it.

Two kinds of flush

Memory flush Writes cache lines to memory. It takes a few microseconds and is safe on any pack.
Sleep flush Writes memory that would be lost in deep sleep to swap on the card, so no data is lost. The card driver does this work.

Known issue, RC-220

Both flushes are started by the same system call. The call cannot tell which one was asked for. Once a sleep flush is blocked, every later flush is treated as part of it and blocked too.

Fault mode in this report

At 10:41 the sleep flush was blocked because capacitor 3 is open. The power alert and its detail page came from the ARM core and needed no flush. When BACK closed them, the display drew the next screen and asked for a memory flush. The call took it for the blocked sleep flush and held it.

The new picture stayed in the cache. The controller kept reading the old lines from the framebuffer, which is why the lower half repeated in bands. io-display waited for a flush that was never going to end, and after 10 seconds the display processes were stopped.

Back Prev Next Off
Meridian Remote Communicator
Raduj

What the fuck is this? Press OFF.

Nila

pressing OFF and watching the screen go dark, then setting the communicator face down on the table It is off. You looked at it like it had bitten you.

Chapter three, the help

Known issues

Raduj

No, I'm confused by the terminology and references. We need to go back to the home screen.

Nila

turning the communicator over, pressing a key to light it and pressing BACK until the menu comes up

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:48
Menu Tue 21 Sep
Open Search Scroll Off
Meridian Remote Communicator
Raduj

We need to go to help.

Nila

touching HELP and pressing OPEN

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:48
Help Index

Applications

  • Messages and outbox
  • Calls
  • Directory
  • Files
  • Terminal
  • Line tester
  • Radio log
  • Clock and alarm
  • Calculator
  • Notes
  • Camera

System

  • Shell
  • Settings
  • Keys and dock keyboard

Power

  • Pack and charge
  • Sleep states
  • Power faults

Processor and memory

  • PowerARM
  • Kernel and processes
  • Framebuffer
  • Shutdown reports
  • Known issues
Open Search Back Off
Meridian Remote Communicator
Raduj

Press on KNOWN ISSUES.

Nila

touching KNOWN ISSUES and pressing OPEN

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:49
Help · Known issues 5 issues
  • One call for sleep and memory flush
  • Display stops while a flush is held
  • There is one word for several things in help and reports
  • Tag dropped on copy to EXT4 or plain FAT32
  • Power fault stays on the menu after the alert is cleared
Open Search Back Off
Meridian Remote Communicator
Raduj

Ah, the confusion is explained. Click on ONE WORD.

Nila

touching ONE WORD FOR SEVERAL THINGS and pressing OPEN

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:49
Help · Known issues One word 1/1

Help pages and reports use some words for more than one thing. The words are listed here with each meaning.

Flush

Memory flush Cache lines written to memory.
Sleep flush Memory written to swap on the card before deep sleep.

Cache

Processor cache Fast memory inside the PowerPC core.
Card write cache Data waiting in memory to be written to the card.

Sleep

Screen off The screen is dark and the unit runs.
Light sleep Both cores on, the PowerPC core waits.
Deep sleep The PowerPC core is off.

Fault

Power fault A pack or capacitor problem.
Page fault An address not in the map.
First and second fault Order of events in a shutdown report.

Off

Off key Turns the screen off.
Turn off Shuts the unit down, from Settings > Power.

The component in the title bar shows which meaning a page uses.

Back Index Next Off
Meridian Remote Communicator

Power only

Raduj

thinking for a bit Let's see what happens if we connect the cranked tester to the port at the bottom.

Nila

handing the communicator to him You do it. I would not know which end of the tester goes where.

Raduj

pulling the hand crank tester out of his pack and connecting its serial port to the serial port of the communicator

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:51
Serial Notice
Serial port
Power only
6 V on pin 9
No data on receive or send
No device answered
Charge
Charging from serial
Ceiling 83 per cent of rated
OK Detail Log Off
Meridian Remote Communicator
Raduj

pressing DETAIL

Nila

watching over his arm as the detail screen builds

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:51
Serial detail Pack MRB-4
Port Serial, 9 pin
Power pin 9
Ground pin 5
Voltage 6.0 V
Data None
Pack MRB-4, lithium, 6 capacitors
Rated 7200 mAh
Charge 37%, 2220 mAh
Ceiling 83% of rated, 6000 mAh
In 140 mA
Draw now 96 mA
Net +44 mA
To ceiling 85 h 50 m
Cap 1 OK Cap 2 OK
Cap 3 Dead Cap 4 OK
Cap 5 OK Cap 6 OK
Charging by serial is not recommended. Use the charge input.
Back Log Stop Off
Meridian Remote Communicator
Raduj

pressing LOG Let's also check the log this time.

Nila

leaning in to read the rows as they come up

Meridian Remote Communicator No signal
QNX 6.4 / RC-220 BAT 37% 10:52
Power log Tue 21 Sep
07:56:12 Charge below 50%, at 41%
07:56:12 Pack MRB-4 fault, cap 3 dead
07:58:40 Recommendations applied
08:23:51 Charge 40%
08:28:55 Idle 5 min, light sleep
09:09:30 Charge 39%
09:55:18 Charge 38%
10:41:02 Charge 37%
10:41:26 Deep sleep requested
10:41:26 Sleep flush, 184 KB
10:41:26 Sleep flush blocked, cap 3 open
10:41:27 Deep sleep refused
10:41:27 System alert tone
10:41:49 Key wake
10:41:58 Memory flush, io-display
10:41:58 Flush held as sleep flush
10:42:08 io-display stopped, 10 s
10:42:09 Kernel fault, shutdown
10:43:02 Restart complete
10:43:02 Charge 37%
10:51:14 Serial, 6.0 V on pin 9
10:51:14 Charging from serial, 140 mA
Back Export Clear Off
Meridian Remote Communicator
Raduj

pressing the side key to turn off the screen I think it's enough fiddling around.

Nila

sitting back against the wall and pulling her knees up Good.

Chapter four, the wall

After work

Raduj

also sitting back against the wall alongside her What do you do when you get bored?

Nila

I mend things, rope or cloth, whatever is torn. What do you do?

Raduj

I sit and look at the landscape, whatever it is.

Nila

turning her head toward the east window There is not much to look at.

Raduj

I know, but what else to do when tired after work?

Nila

keeping her eyes on the window On the island we worked until dark and then we slept immediately.

The west camp

Raduj

Have you ever fallen in love with someone?

Nila

looking down at her hands for a moment before answering There was a girl in the west camp. We shared work for a season and I never said anything to her about it.

Raduj

I have never fallen in love, or at least, I tried to seem like I would never fall in love. I didn't want to deal with the shame in me that comes with misappreciating the potential of being in a relationship. There was a woman I liked in the tenth grade, and when we got to really meet each other, she wouldn't have kept her promises and she would have felt a lot of different things about me in a short amount of time.

Nila

And what happened then, between you and her?

Raduj

She decided that she would rather ignore me forever, and that's the end of it.

Nila

Did you ever find out why?

Raduj

No. I have chosen to rather move forward than guess why she was thinking differently about me every time.

Nila

nodding slowly Maybe that was the better thing for you, to not wear yourself down.

Stragglers

Raduj

turning to Mirena And you, what do you think about love?

Mirena

sitting down on the edge of the crate with her back to the stove There was a man in my squad. We were together for a year and a half, and I knew every day that he might not come back, and one day he did not. I know how it happened, I know where, I was told all of it by people who were there but it has not closed anything. So I do not think about love now, I think about not doing that again.

Raduj

There was a person called Ellie Williams that would have killed every single person on her way in satisfying her revenge. She was believed to be the only immune person despite experimental probes showing that there were actually many infected but asymptomatic people who either never converted or converted later. Due to a man's desire to save what was thought to be the only immune child by killing a doctor, his daughter decided to revenge by killing that man, and because he was her surrogate, she decided to trail her across the north-west.

Mirena

shrugging That is what people did then, you killed mine and I kill yours, and it went around like that for years. We had an order once to put down every straggler we found, no questions. Nobody got anything out of it. She just did it louder than the rest of us.

Raduj

Before the founding of the Collective, there was an initial treaty on medical ethics which proposed the right to life. And it was exclusively about what defines the right to live.

Mirena

looking over at him Who wrote it? I have heard of the Collective, I have never heard of a treaty before it.

Raduj

A council of independent researchers who were looking to dispel the unscientific conceptions around the infection.

Mirena

reaching over to the chair and running her hand along the lining This is dry now. You can have it back.

Chapter five, the street door

The stairwell

Nila

getting up, lifting the coat and pulling it over her shoulders Then we should go before it gets dark.

Raduj

shouldering his pack and placing the communicator and hand crank tester inside the large back section Alright.

Mirena

standing up off the crate and going to the door ahead of them I will come down with you as far as the street.

Nila lifts her bundle off the wall with the pickaxe still tied along it, puts it on her shoulder and follows Mirena alongside Raduj. The three of them go down the stairwell, past the open door on the second floor with the sorted wire laid out in coils, and down the last flight to the street door.

Block nine

Raduj

coming out of the street door after Nila Now we are out.

Mirena

standing in the doorway with her good hand on the frame Go on, then. You know where I am, both of you.

Raduj

Or see you in block nine, or whatever.

Mirena

lifting her hand off the frame Block nine, then.

Nila

stepping back toward the doorway It was good to see you.

Mirena

You too. Both of you.

Raduj

See you.

Mirena

stepping back inside and closing the street door See you.

They turn away from the door and go up the street past the shrubs, with the four storey block behind them. Nila has the bundle on her shoulder and the pickaxe tied along it. They walk part of the road inland toward Sidliste for the rest of the morning.

Part of the CSD series. Set in the Last of Us universe, decades after the first generation, in a future that diverges from the game.

Typeset in Literata and IBM Plex Mono, both under the SIL Open Font License, version 1.1. The license texts sit in the fonts folder beside this file.

Reference portraits: Nila, Mirena.