1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
|
.. _skiboot-5.5.0-rc1:
skiboot-5.5.0-rc1
=================
skiboot-5.5.0-rc1 was released on Tuesday March 28th 2017. It is the first
release candidate of skiboot 5.5, which will become the new stable release
of skiboot following the 5.4 release, first released November 11th 2016.
skiboot-5.5.0-rc1 contains all bug fixes as of :ref:`skiboot-5.4.3`
and :ref:`skiboot-5.1.19` (the currently maintained stable releases).
For how the skiboot stable releases work, see :ref:`stable-rules` for details.
The current plan is to cut the final 5.5.0 by April 8th, with skiboot 5.5.0
being for all POWER8 and POWER9 platforms in op-build v1.16 (Due April 12th).
This is a short cycle as this release is mainly targetted towards POWER9
bringup efforts.
Following skiboot-5.5.0, we will move to a regular six week release cycle,
similar to op-build, but slightly offset to allow for a short stabilisation
period. Expected release dates and contents are tracked using GitHub milestone
and issues: https://github.com/open-power/skiboot/milestones
Over skiboot-5.4, we have the following changes:
New Platforms
-------------
- SuperMicro's (SMC) P8DNU: An astbmc based POWER8 platform
- Add a generic platform to help with bringup of new systems.
- Four POWER9 based systems (NOTE: All POWER9 systems should be considered
for bringup use only at this point):
- Romulus
- Witherspoon (a POWER9 system with NVLink2 attached GPUs)
- Zaius (OpenCompute platform, also known as "Barreleye 2")
- ZZ (FSP based system)
New features
------------
- System reset IPI facility and Mambo implementation
Add an opal call :ref:`OPAL_SIGNAL_SYSTEM_RESET` which allows system reset
exceptions to be raised on other CPUs and act as an NMI IPI. There
is an initial simple Mambo implementation, but allowances are made
for a more complex hardware implementation.
The Mambo implementation is based on the RFC implementation for POWER8
hardware (see https://patchwork.ozlabs.org/patch/694794/) which we hope
makes it into a future release.
This implements an in-band NMI equivalent.
- add CONTRIBUTING.md, ensuring that people new to the project have a one-stop
place to find out how to get started.
- interrupts: Add optional name for OPAL interrupts
This adds the infrastructure for an interrupt source to provide
a name for an interrupt directed toward OPAL. Those names will
be put into an "opal-interrupts-names" property which is a
standard DT string list corresponding 1:1 with the "opal-interrupts"
property. PSI interrupts get names, and this is visible in Linux
through /proc/interrupts
- platform: add OPAL_REBOOT_FULL_IPL reboot type
There may be circumstances in which a user wants to force a full IPL reboot
rather than using fast reboot. Add a new reboot type, OPAL_REBOOT_FULL_IPL,
that disables fast reboot. On platforms which don't support fast reboot,
this will be equivalent to a normal reboot.
- phb3: Trick to allow control of the PCIe link width and speed
This implements a hook inside OPAL that catches 16 and 32 bit writes
to the link status register of the PHB.
It allows you to write a new speed or a new width, and OPAL will then
cause the PHB to renegociate.
Example:
First read the link status on PHB4: ::
setpci -s 0004:00:00.0 0x5a.w
a103
It's at x16 Gen3 speed (8GT/s)
bits 0x0ff0 are the width and 0x000f the speed. The width can be
1 to 16 and the speed 1 to 3 (2.5, 5 and 8GT/s)
Then try to bring it down to 1x Gen1 : ::
setpci -s 0004:00:00.0 0x5a.w=0xa011
Observe the result in the PHB: ::
/ # lspci -s 0004:00:00.0 -vv
0004:00:00.0 PCI bridge: IBM Device 03dc (prog-if 00 [Normal decode])
.../...
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk- DLActive+ BWMgmt- ABWMgmt+
And in the device: ::
/ # lspci -s 0004:01:00.0 -vv
.../...
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
- core/init: Add hdat-map property to OPAL node.
Exports the HDAT heap to the OS. This allows the OS to view the HDAT heap
directly. This allows us to view the HDAT area without having to use
getmemproc.
- Add a generic platform: If /bmc in device tree, attempt to init one
For the most part, this gets us somewhere on some OpenPOWER systems
before there's a platform file for that machine.
Useful in bringup only, and marked as such with scary looking log
messages.
Core
----
- asm: Don't try to set LPCR:LPES1 on P8 and P9, the bit doesn't exist.
- pci: Add a framework for quirks
In future we may want to be able to do fixups for specific PCI devices in
skiboot, so add a small framework for doing this.
This is not intended for the same purposes as quirks in the Linux kernel,
as the PCI devices that quirks can match for in skiboot are not properly
configured. This is intended to enable having a custom path to make
changes that don't directly interact with the PCI device, for example
adding device tree entries.
- hw/slw: fix possible NULL dereference
- slw: Print enabled stop states on boot
- uart: Fix Linux pass-through policy, provide NVRAM override option
- libc/stdio/vsnprintf.c: add explicit fallthrough, this silences a recent
(GCC 7.x) warning
- init: print the FDT blob size in decimal
- init: Print some more info before booting linux
The kernel command line from nvram and the stdout-path are
useful to know when debugging console related problems.
- Makefile: Disable stack protector due to gcc problems
Depending on how it was built, gcc will use the canary from a global
(works for us) or from the TLS (doesn't work for us and accesses
random stuff instead).
Fixing that would be tricky. There are talks of adding a gcc option
to force use of globals, but in the meantime, disable the stack
protector.
- Stop using 3-operand cmp[l][i] for latest binutils
Since a5721ba270, binutils does not support 3-operand cmp[l][i].
This adds (previously optional) parameter L.
- buddy: Add a simple generic buddy allocator
- stack: Don't recurse into __stack_chk_fail
- Makefile: Use -ffixed-r13
We use r13 for our own stuff, make sure it's properly fixed
- Always set ibm,occ-functional-state correctly
- psi: fix the xive registers initialization on P8, which seems to be fine
for real HW but causes a lof of pain under qemu
- slw: Set PSSCR value for idle states
- Limit number of "Poller recursion detected" errors to display
In some error conditions, we could spiral out of control on this
and spend all of our time printing the exact same backtrace.
Limit it to 16 times, because 16 is a nice number.
- slw: do SLW timer testing while holding xscom lock
We add some routines that let a caller get the xscom lock once and
then do a bunch of xscoms while holding it.
In some situations without this, it could take long enough to get
the xscom lock that the 1ms timeout would expire and we'd falsely
think the SLW timer didn't work when in fact it did.
- wait_for_resource_loaded: don't needlessly sleep for 5ms
- run pollers in cpu_process_local_jobs() if running job synchonously
- fsp: Don't recurse pollers in ibm_fsp_terminate
- chiptod: More hardening against -1 chip ID
- interrupts: Rewrite/correct doc for opal_set/get_xive
- cpu: Don't enable nap mode/PM mode on non-P8
- platform: Call generic platform probe and init UART there
- psi: Don't register more interrupts than the HW supports
- psi: Add DT option to disable LPC interrupts
I2C and TPM
-----------
- p8i2c: Use calculated poll_interval when booting OPAL
Otherwise we'd default to 2seconds (TIMER_POLL) during boot on
chips with a functional i2c interrupt, leading to slow i2c
during boot (or hitting timeouts instead).
- i2c: Add i2c_run_req() to crank the state machine for a request
- tpm_i2c_nuvoton: work out the polling time using mftb()
- tpm_i2c_nuvoton: handle errors after reading the tpm fifo
- tpm_i2c_nuvoton: cleanup variables in tpm_read_fifo()
- tpm_i2c_nuvoton: handle errors after writting the tpm fifo
- tpm_i2c_nuvoton: cleanup variables in tpm_write_fifo()
- tpm_i2c_nuvoton: handle errors after writing sts.commandReady in step 5
- tpm_i2c_nuvoton: handle errors after writing sts.go
- tpm_i2c_nuvoton: handle errors after checking the tpm fifo status
- tpm_i2c_nuvoton: return burst_count in tpm_read_burst_count()
- tpm_i2c_nuvoton: isolate the code that handles the TPM_TIMEOUT_D timeout
- tpm_i2c_nuvoton: handle errors after reading sts.commandReady
- tpm_i2c_nuvoton: add tpm_status_read_byte()
- tpm_i2c_nuvoton: add tpm_check_status()
- tpm_i2c_nuvoton: rename defines to shorter names
- tpm_i2c_interface: decouple rc from being done with i2c request
- tpm_i2c_interface: set timeout before each request
- i2c: Add nuvoton quirk, disallowing i2cdetect as it locks TPM
p8-i2c reset things manually in some error conditions
- stb: create-container and wrap skiboot in Secure/Trusted Boot container
We produce **UNSIGNED** skiboot.lid.stb and skiboot.lid.xz.stb as build
artifacts.
These are suitable blobs for flashing onto Trusted Boot enabled op-build
builds *WITH* the secure boot jumpers *ON* (i.e. *NOT* in secure mode).
It's just enough of the Secure and Trusted Boot container format to
make Hostboot behave.
PCI
---
- core/pci: Support SRIOV VFs
Currently, skiboot can't see SRIOV VFs. It introduces some troubles
as I can see: The device initialization logic (phb->ops->device_init())
isn't applied to VFs, meaning we have to maintain same and duplicated
mechanism in kernel for VFs only. It introduces difficulty to code
maintaining and prone to lose sychronization.
This was motivated by bug reported by Carol: The VF's Max Payload
Size (MPS) isn't matched with PF's on Mellanox's adapter even kernel
tried to make them same. It's caused by readonly PCIECAP_EXP_DEVCTL
register on VFs. The skiboot would be best place to emulate this bits
to eliminate the gap as I can see.
This supports SRIOV VFs. When the PF's SRIOV capability is populated,
the number of maximal VFs (struct pci_device) are instanciated, but
but not usable yet. In the mean while, PCI config register filter is
registered against PCIECAP_SRIOV_CTRL_VFE to capture the event of
enabling or disabling VFs. The VFs are initialized, put into the PF's
children list (pd->children), populate its PCI capabilities, and
register PCI config register filter against PCICAP_EXP_DEVCTL. The
filter's handler caches what is written to MPS field and returns
the cached value on read, to eliminate the gap mentioned as above.
- core/pci: Avoid hreset after freset
Commit 5ac71c9 ("pci: Avoid hot resets at boot time") missed to
avoid hot reset after fundamental reset for PCIe common slots.
This fixes it.
- core/pci: Enforce polling PCIe link in hot-add path
In surprise hot-add path, the power state isn't changed on hardware.
Instead, we set the cached power state (@slot->power_state) and
return OPAL_SUCCESS. The upper layer starts the PCI probing immediately
when receiving OPAL_SUCCESS. However, the PCIe link behind the PCI
slot is likely down. Nothing will be probed from the PCI slot even
we do have PCI adpater connected to the slot.
This fixes the issue by returning OPAL_ASYNC_COMPLETION to force
upper layer to poll the PCIe link before probing the PCI devices
behind the slot in surprise and managed hot-add paths.
- hw/phb3: fix error handling in complete reset
During a complete reset, when we get a timeout waiting for pending
transaction in state PHB3_STATE_CRESET_WAIT_CQ, we mark the PHB as
permanently broken.
Set the state to PHB3_STATE_FENCED so that the kernel can retry the
complete reset.
- phb3: Lock the PHB on set_xive callbacks
p8dnu platform
--------------
- astbmc/p8dnu: Enable PCI slot's power supply on PEX9733 in hot-add path
- astbmc/p8dnu: Enable PCI slot's power supply on PEX8718 in hot-add path
- core/pci: Mark broken PDC on slots without surprise hotplug capability
We has to support surprise hotplug on PCI slots that don't support
it on hardware. So we're fully utilizing the PCIe link state change
event to detect the events (hot-remove and hot-add). The PDC (Presence
Detection Change) event isn't reliable for the purpose. For example,
PEX8718 on superMicro's machines.
This adds another PCI slot property "ibm,slot-broken-pdc" in the
device-tree, to indicate the PDC isn't reliable on those (software
claimed) surprise pluggable slots.
- core/pci: Fix PCIe slot's presence
According to PCIe spec, the presence bit is hardcoded to 1 if PCIe
switch downstream port doesn't support slot capability. The register
used for the check in pcie_slot_get_presence_state() is wrong. It
should be PCIe capability register instead of PCIe slot capability
register. Otherwise, we always have present bit on the PCI topology.
The issue is found on Supermicro's p8dtu2u machine: ::
# lspci -t
-+-[0022:00]---00.0-[01-08]----00.0-[02-08]--+-01.0-[03]----00.0
| \-02.0-[04-08]--
# cat /sys/bus/pci/slots/S002204/adapter
1
# lspci -vvs 0022:02:02.0
# lspci -vvs 0022:02:02.0
0022:02:02.0 PCI bridge: PLX Technology, Inc. PEX 8718 16-Lane, \
5-Port PCI Express Gen 3 (8.0 GT/s) Switch (rev ab) (prog-if 00 [Normal decode])
:
Capabilities: [68] Express (v2) Downstream Port (Slot+), MSI 00
:
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-
Changed: MRL- PresDet- LinkState-
This fixes the issue by checking the correct register (PCIe capability).
Also, the register's value is cached in advance as we did for slot and
link capability.
- core/pci: More reliable way to update PCI slot power state
The power control bit (SLOT_CTL, offset: PCIe cap + 0x18) isn't
reliable enough to reflect the PCI slot's power state. Instead,
the power indication bits are more reliable comparatively. This
leads to mismatch between the cached power state and PCI slot's
presence state, resulting in the hotplug driver in kernel refuses
to unplug the devices properly on the request. The issue was
found on below NVMe card on "supermicro,p8dtu2u" machine. We don't
have this issue on the integrated PLX 8718 switch. ::
# lspci
0022:01:00.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
0022:02:01.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
0022:02:04.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
0022:02:05.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
0022:02:06.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
0022:02:07.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
0022:17:00.0 Non-Volatile memory controller: Device 19e5:0123 (rev 45)
This updates the cached PCI slot's power state using the power
indication bits instead of power control bit, to fix above issue.
Utilities
---------
- opal-prd: Direct systemd to always restart opal-prd
Always restart the opal-prd daemon, irrespective of why it stopped.
- external/ffspart: Simple C program to be able to make an FFS partition
- getscom: Add chip info for P9.
- gard: Fix make dist target
- pflash/libflash: arch_flash_arm: Don't assume mtd labels are short
libffs
------
- libffs: Understand how to create FFS partition TOCs and entries.
BMC Based systems
-----------------
- platforms/astbmc: Support PCI slots for palmetto
- habanero/slottable: Remove Network Mezz(2, 0) from PHB1.
- BMC/PCI: Check slot tables against detected devices
On BMC machines, we have slot tables of built in PHBs, slots and devices
that are physically present in the system (such as the BMC itself). We
can use these tables to check what we *detected* against what *should*
be in the system and throw an error if they differ.
We have seen this occur a couple of times while still booting, giving the
user just an empty petitboot screen and not much else to go on. This
patch helps in that we get a skiboot error message, and at some point
in the future when we pump them up to the OS we could get a big friendly
error message telling you you're having a bad day.
- pci/quirk: Populate device tree for AST2400 VGA
Adding these properties enables the kernel to function in the same way
that it would if it could no longer access BMC configuration registers
through a backdoor, which may become the default in future.
The comments describe how isolating the host from the BMC could be
achieved in skiboot, assuming all kernels that the system boots
support this. Isolating the BMC and the host from each other is
important if they are owned by different parties; for example, a cloud
provider renting machines "bare metal".
- astbmc/pnor: Use mbox-flash for flash accesses
If the BMC is MBOX protocol aware, request flash reads/writes over the
MBOX regs. This inits the blocklevel for pnor access with mbox-flash.
- ast: Account for differences between 2400 vs 2500
- platform: set default bmc_platform
The bmc_platform pointer is set to NULL by default and on non-AMI BMC
platforms. As a result a few places in hw/ipmi/ipmi-sel.c will blindly
dereference a NULL pointer.
POWER9
------
- external: Update xscom utils for type 1 indirect accesses
- xscom: Harden indirect writes
- xscom: Add POWER9 scom reset
- homer : Enable HOMER region reservation for POWER9
- slw: Define stop idle states for P9 DD1
- slw: Fix parsing of supported STOP states
- slw: only enable supported STOP states
- dts: add support for p9 cores
- asm: Add POWER9 case to init_shared_sprs
For now, setup the HID and HMEER. We'll add more as we get
good default values from HW.
- xive/psi/lpc: Handle proper clearing of LPC SerIRQ latch on POWER9 DD1
- lpc: Mark the power9 LPC bus as compatible with power8
- Fix typo in PIR mask for POWER9. Fixes booting multi-chip.
- vpd: add vpd_valid() to check keyword VPD blobs
Adds a function to check whether a blob is a valid IBM ASCII keyword
VPD blob. This allows us to recognise when we do and do not have a VPD
blob and act accordingly.
- core/cpu.c: Use a device-tree node to detect nest mmu presence
The nest mmu address scom was hardcoded which could lead to boot
failure on POWER9 systems without a nest mmu. For example Mambo
doesn't model the nest mmu which results in failure when
calling opal_nmmu_set_ptcr() during kernel load.
- psi: Fix P9 BAR setup on multi-chips
PHB4:
- phb4: Fix TVE encoding for start address
- phb4: Always assign powerbus BARs
HostBoot configure them with weird values that confuse us, instead
let's just own the assignment. This is temporary, I will centralize
memory map management next but this gets us going.
- phb4: Fix endian issue with link control2/status2 registers
Fixes training at larger than PCIe Gen1 speeds.
- phb4: Add ability to log config space access
Useful for debugging
- phb4: Change debug prints
Currently we print "PHB4" and mean either "PHB version 4" or "PHB
number 4" which can be quite confusing.
- phb4: Fix config space enable bits on DD1
- phb4: Fix location of EEH enable bits
- phb4: Fix setting of max link speed
- phb4: Updated inits as of PHB4 spec 0.52
HDAT fixes:
- hdat: Parse BMC nodes much earlier
This moves the parsing of the BMC and LPC details to the start of the
HDAT parsing. This allows us to enable the Skiboot log console earlier
so we can get debug output while parsing the rest of the HDAT.
- astbmc: Don't do P8 PSI or DT fixups on P9
Previously the HDAT format was only ever used with IBM hardware so it
would store vital product data (VPD) blobs in the IBM ASCII Keyword VPD
format. With P9 HDAT is used on OpenPower machines which use Industry
Standard DIMMs that provide their product data through a "Serial Present
Detect" EEPROM mounted on the DIMM.
The SPD blob has a different format and is exported in the device-tree
under the "spd" property rather than the "ibm,vpd" property. This patch
adds support for recognising these blobs and placing them in the
appropriate DT property.
- hdat: Add __packed to all HDAT structures and workaround HB reserve
Some HDAT structures aren't properly aligned. We were using __packed
on some but not others and got at least one wrong (HB reserve). This
adds it everywhere to avoid such problems.
However this then triggers another problem where HB gives us a
crazy range (0.256M) to reserve with no label, which triggers an
assertion failure later on in mem_regions.c.
So also add a test to skip any region starting at 0 until we can
undertand that better and have it fixed one way or another.
- hdat: Ignore broken memory reserves
Ignore HDAT memory reserves > 512MB. These are considered bogus and
workaround known HDAT bugs.
- hdat: Add BMC device-tree node for P9 OpenPOWER systems
- hdat: Fix interrupt & device_type of UART node
The interrupt should use a standard "interrupts" property. The UART
node also need a device_type="serial" property for historical reasons
otherwise Linux won't pick it up.
- parse and export STOP levels
- add new sppcrd_chip_info fields
- add radix-AP-encodings
- stop using proc_int_line in favor of pir
- rename add_icp() to add_xics_icp()
- Add support for PHB4
- create XIVE nodes under each xscom node
- Add P9 compatible property
- Parse hostboot memory reservations from HDAT
- Add new fields to IPL params structure and update sys family for p9.
- Fix ibm,pa-features for all CPU types
- Fix XSCOM nodes for P9
- Remove deprecated 'ibm, mem-interleave-scope' from DT on POWER9
- Grab system model name from HDAT when available
- Grab vendor information from HDAT when available
- SPIRA-H/S changes for P9
- Add BMC and LPC IOPATH support
- handle ISDIMM SPD blobs
- make HDIF_child() print more useful errors
- Add PSI HB xscom details
- Add new fields to proc_init_data structure
- Add processor version check for hs service ntuple
- add_iplparams_serial - Validate HDIF_get_iarray_size() return value
XIVE:
The list of XIVE fixes and updates is extensive. Below is only a portion of
the changes that have gone into skiboot 5.5.0-rc1 for the new XIVE hardware
that is present in POWER9:
- xive: Enable backlog on queues
- xive: Use for_each_present_cpu() for setting up XIVE
- xive: Fix logic in opal_xive_get_xirr()
- xive: Properly initialize new VP and EQ structures
- xive: Improve/fix EOI of LSIs
- xive: Add FIXME comments about mask/umask races
- xive: Fix memory barrier in opal_xive_get_xirr()
- xive: Don't try to find a target EQ for prio 0xff
- xive: Bump table sizes in direct mode
- xive: Properly register escalation interrupts
- xive: Split the OPAL irq flags from the internal ones
- xive: Don't touch ESB masks unless masking/unmasking
- xive: Fix xive_get_ir_targetting()
- xive: Cleanup escalation PQ on queue change
- xive: Add *any chip* for allocating interrupts
- xive: Add chip_id to get_vp_info
- xive: Add opal_xive_get/set_vp_info
- xive: Add VP alloc/free OPAL functions
- xive: Workaround for bad DD1 checker
- xive: Add more checks for exploitation mode
- xive: Add support for EOIs via OPAL
- xive/phb4: Work around broken LSI control on P9 DD1
- xive: Forward interrupt names callback
- xive: Export opal_xive_reset() arguments in OPAL API
- xive: Add interrupt allocator
- xive: Implement xive_reset
- xive: Don't assert if xive_get_vp() fails
- xive: Expose exploitation mode DT properties
- xive: Use a constant for max# of chips
- xive: Keep track of which interrupts were ever enabled
In order to speed up xive reset
- xive: Implement internal VP allocator
- xive: Add xive_get/set_queue_info
- xive: Add helpers to encode and decode VP numbers
- xive: Add API to donate pages in indirect mode
- xive: Add asynchronous cache updates and update irq targetting
- xive: Split xive_provision_cpu() and use cache watch for VP
- xive: Add cache scrub to push watch updates to memory
- xive: Mark XIVE owned EQs with a specific flag
- xive: Use an allocator for EQDs
- xive: Break assumption that block ID == chip ID
- xive/phb4: Handle bad ESB offsets in PHB4 DD1
- xive: Implement get/set_irq_config APIs
- xive: Rework xive_set_eq_info() to store all info even when masking
- xive: Implement cache watch and use it for EQs
- xive: Add locking to some API calls
- xive: Add opal_xive_get_irq_info()
- xive: Add CPU node "interrupts" properties representing the IPIs
- xive: Add basic opal_xive_reset() call and exploitation mode
- xive: Add support for escalation interrupts
- xive: OPAL API update
- xive: Add some dump facility for debugging
- xive: Document exploitation mode
(Pretty much work in progress)
- xive: Indirect table entries must have top bits "type" set
- xive: Remove unused field and clarify comment
- xive: Provide a way to override some IPI sources
- xive: Add helper to retrieve an IPI trigger port
- xive: Fix IPI EOI logic in opal_xive_eoi()
- xive: Don't try to EOI a masked source
- xive: Fix comments in xive_source_set_xive()
- xive: Fix comments in xive_get_ive()
- xive: Configure forwarding ports
- xive: Fix mangling of interrupt server# in opal_get/set_xive()
- xive: Fix interrupt number mangling
Fast-reboot
-----------
- fast-reboot: creset PHBs on fast reboot
On fast reboot, perform a creset of all PHBs. This ensures that any PHBs
that are fenced will be working after the reboot.
- fast-reboot: Enable fast reboot with CAPI adapters in CAPI mode
CAPI mode is disabled as part of OPAL_SYNC_HOST_REBOOT.
- opal/fast-reboot: set fw_progress sensor status with IPMI_FW_PCI_INIT.
CAPI
----
- hmi: Print CAPP FIR information when handling CAPP malfunction alerts
FSP based systems
-----------------
- hw/fsp: Do not queue SP and SPCN class messages during reset/reload
This could cause soft lockups if FSP reset reload was done while in OPAL
During FSP R/R, the FSP is inaccessible and will lose state. Messages to the
FSP are generally queued for sending later.
Tests
-----
- core/test/run-trace: Reduce number of samples when running under valgrind
This reduces 'make check' run time by ~10 seconds on my laptop,
and just the run-trace test itself takes 15 seconds less (under valgrind).
- test/sreset_world: Kind of like Hello World, but from the SRESET vector.
A regression test for the mambo implementation of OPAL_SIGNAL_SYSTEM_RESET.
- nvram-format: Fix endian issues
NVRAM formats are always BE, so let's use the sparse annotation to catch
any issues (and correct said issues).
On LE platforms, the test was erroneously passing as with building the
nvram-format code on LE we were produces an incorrect NVRAM image.
- test/hello_world: use P9MAMBO to differentiate from P8
- hdata_to_dt: Specify PVR on command line
- hdata/test: Add DTS output for the test cases
- hdata/test: strip blobs from the DT output
- mambo: add mprintf()
mprintf() is printf(), but it goes straight to the mambo console. This
allows it to be independent of Skiboot's actual console infrastructure
so it can be used for debugging the console drivers and for debugging
code that runs before the console is setup.
- generate-fwts-olog: add support for parsing prerror()
- Add bitmap test
The worst test suite ever
- mambo_utils: add ascii output to hexdump
- mambo_utils: add p_str <addr> [limit]
- mambo_utils: make p return a value
- hello_world: print out full path of missing MAMBO_BINARY
- print-stb-container: Fix build on centos7
- Travis-ci improvements:
- install expect on ubuntu 12.04, disable qemu on 16.04/latest
- build and test more on centos7
- hello_world: run p9 mambo tests
- install systemsim-p8 on centos7
- install systemsim-p8 on centos6
- install systemsim-p9
- enable fedora25
- always pull new docker image
- add fedora rawhide
- Add fwts annotation for duplicate DT node entries.
Reference bug: https://github.com/open-power/op-build/issues/751
- external/fwts: Add 'last-tag' to FWTS olog output
This isn't so useful at the moment, but this will make cleaning out
crufty old error definitions much easier.
- external/fwts: Add FWTS olog merge script
A script to merge olog error definitions from multiple skiboot versions
into a single olog JSON file. Will prompt when conflicting patterns are
found to update the pattern, or add both.
- mambo: fake NVRAM support
- mambo: Add Fake NVRAM driver
- external/mambo: add shortcut to print all GPRs
Contributors
------------
Processed 363 csets from 28 developers.
A total of 18105 lines added, 16499 removed (delta 1606)
Developers with the most changesets
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
========================== === =======
Developer # %
========================== === =======
Benjamin Herrenschmidt 138 (38.0%)
Stewart Smith 56 (15.4%)
Oliver O'Halloran 47 (12.9%)
Michael Neuling 18 (5.0%)
Gavin Shan 15 (4.1%)
Claudio Carvalho 14 (3.9%)
Vasant Hegde 11 (3.0%)
Cyril Bur 11 (3.0%)
Andrew Donnellan 11 (3.0%)
Ananth N Mavinakayanahalli 5 (1.4%)
Cédric Le Goater 5 (1.4%)
Pridhiviraj Paidipeddi 5 (1.4%)
Shilpasri G Bhat 4 (1.1%)
Nicholas Piggin 4 (1.1%)
Russell Currey 3 (0.8%)
Alistair Popple 2 (0.6%)
Jack Miller 2 (0.6%)
Chris Smart 2 (0.6%)
Matt Brown 1 (0.3%)
Michael Ellerman 1 (0.3%)
Frederic Barrat 1 (0.3%)
Hank Chang 1 (0.3%)
Willie Liauw 1 (0.3%)
Werner Fischer 1 (0.3%)
Jeremy Kerr 1 (0.3%)
Patrick Williams 1 (0.3%)
Joel Stanley 1 (0.3%)
Alexey Kardashevskiy 1 (0.3%)
========================== === =======
Developers with the most changed lines
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
=========================== ===== =======
Developer # %
=========================== ===== =======
Oliver O'Halloran 17961 (56.7%)
Benjamin Herrenschmidt 5509 (17.4%)
Cyril Bur 2801 (8.8%)
Stewart Smith 1649 (5.2%)
Gavin Shan 653 (2.1%)
Claudio Carvalho 489 (1.5%)
Willie Liauw 361 (1.1%)
Ananth N Mavinakayanahalli 340 (1.1%)
Andrew Donnellan 315 (1.0%)
Michael Neuling 240 (0.8%)
Shilpasri G Bhat 228 (0.7%)
Nicholas Piggin 219 (0.7%)
Vasant Hegde 207 (0.7%)
Russell Currey 158 (0.5%)
Jack Miller 127 (0.4%)
Cédric Le Goater 126 (0.4%)
Chris Smart 95 (0.3%)
Hank Chang 56 (0.2%)
Pridhiviraj Paidipeddi 47 (0.1%)
Alistair Popple 39 (0.1%)
Matt Brown 29 (0.1%)
Michael Ellerman 3 (0.0%)
Alexey Kardashevskiy 2 (0.0%)
Frederic Barrat 1 (0.0%)
Werner Fischer 1 (0.0%)
Jeremy Kerr 1 (0.0%)
Patrick Williams 1 (0.0%)
Joel Stanley 1 (0.0%)
=========================== ===== =======
Developers with the most lines removed
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
=========================== ===== =======
Developer # %
=========================== ===== =======
Oliver O'Halloran 8810 (53.4%)
Ananth N Mavinakayanahalli 98 (0.6%)
Alistair Popple 9 (0.1%)
Michael Ellerman 3 (0.0%)
Werner Fischer 1 (0.0%)
=========================== ===== =======
Developers with the most signoffs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Total 322
======================== ===== =======
Developer # %
======================== ===== =======
Stewart Smith 307 (95.3%)
Michael Neuling 6 (1.9%)
Oliver O'Halloran 3 (0.9%)
Benjamin Herrenschmidt 2 (0.6%)
Vaidyanathan Srinivasan 1 (0.3%)
Hank Chang 1 (0.3%)
Jack Miller 1 (0.3%)
Gavin Shan 1 (0.3%)
======================== ===== =======
Developers with the most reviews
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Total: 45
======================== ===== =======
Developer # %
======================== ===== =======
Vasant Hegde 10 (22.2%)
Andrew Donnellan 9 (20.0%)
Russell Currey 6 (13.3%)
Cédric Le Goater 5 (11.1%)
Oliver O'Halloran 4 (8.9%)
Gavin Shan 3 (6.7%)
Vaidyanathan Srinivasan 2 (4.4%)
Alistair Popple 2 (4.4%)
Frederic Barrat 2 (4.4%)
Mahesh Salgaonkar 1 (2.2%)
Cyril Bur 1 (2.2%)
======================== ===== =======
Developers with the most test credits
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Total 11
======================== ===== =======
Developer # %
======================== ===== =======
Willie Liauw 4 (36.4%)
Claudio Carvalho 3 (27.3%)
Gavin Shan 1 (9.1%)
Michael Neuling 1 (9.1%)
Pridhiviraj Paidipeddi 1 (9.1%)
Chris Smart 1 (9.1%)
======================== ===== =======
Developers who gave the most tested-by credits
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Total 11
========================== ===== =======
Developer # %
========================== ===== =======
Gavin Shan 4 (36.4%)
Stewart Smith 4 (36.4%)
Chris Smart 1 (9.1%)
Oliver O'Halloran 1 (9.1%)
Ananth N Mavinakayanahalli 1 (9.1%)
========================== ===== =======
Developers with the most report credits
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Total 7
========================== === =======
Developer # %
========================== === =======
Hank Chang 4 (57.1%)
Guilherme G. Piccoli 1 (14.3%)
Colin Ian King 1 (14.3%)
Pradipta Ghosh 1 (14.3%)
========================== === =======
Developers who gave the most report credits
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Total 7
========================== === =======
Developer # %
========================== === =======
Gavin Shan 5 (71.4%)
Andrew Donnellan 1 (14.3%)
Jeremy Kerr 1 (14.3%)
========================== === =======
|