Board:lenovo/g505s: Difference between revisions
Eocallaghan (talk | contribs) (initial) |
m (buyin advice) |
||
(15 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
This page is a work in progress. ACPI is still being worked on, however due to the nature of ACPI it may take some time to get this right. | This page is a work in progress. ACPI is still being worked on, however due to the nature of ACPI it may take some time to get this right. | ||
Taiidan note - I recommend getting the A10 quad core version of this laptop as the lesser dual core models are very slow. | |||
== Known Issues == | == Known Issues == | ||
* ... | * S3 Suspend/Resume - You will need a Console verbosity set to at least "BIOS_INFO" or greater for it to work! Coreboot is likely too fast for the Embedded Controller firmware on the S3 resume hot path. | ||
* S3 Suspend/Resume - Nasty looking '''dmesg''' messages seen in Note 2. [https://lkml.org/lkml/2012/3/28/249 LKML] [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1152484 bug report] [http://lxr.free-electrons.com/source/arch/x86/kernel/cpu/perf_event_amd_ibs.c#L784 force_ibs_eilvt_setup()]. | |||
* "''AGP: Please enable the IOMMU option in the BIOS setup''" showing up in '''dmesg''' - Pass '''iommu=noaperture''' to the kernel boot args to ask the IOMMU not to touch the aperture for AGP. | |||
* "'''Re-enabling disabled Topology Extensions Support'''" showing up in '''dmesg''' - See Note 1. | |||
Note 1: Look in '''src/vendorcode/amd/agesa/f15tn/Proc/CPU/Family/0x15/TN/F15TnMsrTables.c''' for | |||
if (PkgType == PACKAGE_TYPE_FM2) { | |||
CpuMsrData |= BIT54; | |||
} | |||
this is the wrong package type for us. Fixed in [http://review.coreboot.org/#/c/7671/ 7671] | |||
Note 2: Look in '''src/vendorcode/amd/agesa/f16kb/Proc/CPU/Family/0x16/KB/F16KbMsrTables.c''' and '''src/vendorcode/amd/agesa/f15tn/Proc/CPU/Family/0x15/TN/F15TnMsrTables.c'''. | |||
Backport fixes that pertain to '''MSR 0x00000413''' and '''MSR 0xC0000408'''. The following in seen in '''dmesg''' on S3 resume: | |||
[ 396.828594] [Firmware Bug]: cpu 0, try to use APIC500 (LVT offset 0) for vector 0xf9, but the register is already in use for vector 0x400 on another cpu | |||
[ 396.828596] [Firmware Bug]: cpu 0, failed to setup threshold interrupt for bank 4, block 0 (MSR00000413=0xc000000001000000) | |||
[ 396.828597] [Firmware Bug]: cpu 0, try to use APIC500 (LVT offset 0) for vector 0xf9, but the register is already in use for vector 0x400 on another cpu | |||
[ 396.828599] [Firmware Bug]: cpu 0, failed to setup threshold interrupt for bank 4, block 1 (MSRC0000408=0xc000000001000000) | |||
== Overview == | == Overview == | ||
Line 30: | Line 53: | ||
make | make | ||
To flash the board with '''flashrom''' run: | To flash the board with '''flashrom''' externally run: | ||
flashrom -p ft2232_spi:type=2232H,port=A - | flashrom -p ft2232_spi:type=2232H,port=A -w build/coreboot.rom | ||
and internally run: | |||
flashrom -p internal:laptop=force_I_want_a_brick -w build/coreboot.rom | |||
== Status == | == Status == | ||
Has an IOMMU with Interrupt Remapping and graphics support | |||
{{Status| | {{Status| | ||
Line 55: | Line 81: | ||
|RAM_DDR2_status = N/A | |RAM_DDR2_status = N/A | ||
|RAM_DDR3_status = OK | |RAM_DDR3_status = OK | ||
|RAM_DDR3_comments = | |RAM_DDR3_comments = | ||
|RAM_dualchannel_status = N/A | |RAM_dualchannel_status = N/A | ||
|RAM_ecc_status = | |RAM_ecc_status = N/A | ||
|IDE_status = N/A | |IDE_status = N/A | ||
|IDE_CF_status = N/A | |IDE_CF_status = N/A | ||
|IDE_25_status = N/A | |IDE_25_status = N/A | ||
|CDROM_DVD_status = | |CDROM_DVD_status = OK | ||
|SATA_status = OK | |SATA_status = OK | ||
|SATA_comments = | |SATA_comments = | ||
|Onboard_SCSI_status = N/A | |Onboard_SCSI_status = N/A | ||
|USB_status = OK | |USB_status = OK | ||
|USB_comments = | |USB_comments = XHCI requires blob (so disabled by default) | ||
|Onboard_VGA_status = OK | |Onboard_VGA_status = OK | ||
|Onboard_VGA_comments = | |Onboard_VGA_comments = 64KByte AtomBIOS blob needed | ||
|Onboard_ethernet_status = OK | |Onboard_ethernet_status = OK | ||
|Onboard_ethernet_comments = Qualcomm Atheros QCA8172 Fast Ethernet | |||
|Onboard_audio_status = OK | |Onboard_audio_status = OK | ||
|Onboard_audio_comments = Basic two channel audio works fine. | |Onboard_audio_comments = Basic two channel audio works fine. | ||
Line 85: | Line 112: | ||
|PCIX_cards_status = N/A | |PCIX_cards_status = N/A | ||
|AGP_cards_status = N/A | |AGP_cards_status = N/A | ||
|PCI_cards_status = | |PCI_cards_status = N/A | ||
|PCI_cards_comments = | |PCI_cards_comments = | ||
|PCIE_x1_status = OK | |PCIE_x1_status = OK | ||
|PCIE_x1_comments = miniPCIe | |PCIE_x1_comments = miniPCIe (populated with Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter) | ||
|PCIE_x2_status = N/A | |PCIE_x2_status = N/A | ||
|PCIE_x4_status = N/A | |PCIE_x4_status = N/A | ||
Line 97: | Line 124: | ||
|Floppy_status = N/A | |Floppy_status = N/A | ||
|COM1_status = | |COM1_status = N/A | ||
|COM2_status = N/A | |COM2_status = N/A | ||
|PP_status = N/A | |PP_status = N/A | ||
Line 103: | Line 130: | ||
|PS2_mouse_status = OK | |PS2_mouse_status = OK | ||
|Game_port_status = N/A | |Game_port_status = N/A | ||
|IR_status = | |IR_status = | ||
|IR_comments = | |IR_comments = | ||
|Speaker_status = OK | |Speaker_status = OK | ||
|DiskOnChip_status = N/A | |DiskOnChip_status = N/A | ||
Line 127: | Line 154: | ||
|WakeOnModem_status = N/A | |WakeOnModem_status = N/A | ||
|WakeOnLAN_status = Untested | |WakeOnLAN_status = Untested | ||
|WakeOnKeyboard_status = | |WakeOnKeyboard_status = OK | ||
|WakeOnMouse_status = Untested | |WakeOnMouse_status = Untested | ||
|Flashrom_status = OK | |Flashrom_status = OK | ||
|Flashrom_comments = MXIC MX25L1606E | |Flashrom_comments = MXIC MX25L1606E (SO8, soldered) 4MB SPI Flash | ||
}} | }} | ||
=== Coreboot boot log === | === Coreboot boot log === | ||
See [http://www.coreboot.org/Supported_Motherboards# | See [http://www.coreboot.org/Supported_Motherboards#lenovo.2Fg505s] for a recent log. | ||
{{PD-self}} | {{PD-self}} |
Latest revision as of 07:02, 23 March 2018
This page describes how to use coreboot on the Lenovo G505S mainboard.
This page is a work in progress. ACPI is still being worked on, however due to the nature of ACPI it may take some time to get this right.
Taiidan note - I recommend getting the A10 quad core version of this laptop as the lesser dual core models are very slow.
Known Issues
- S3 Suspend/Resume - You will need a Console verbosity set to at least "BIOS_INFO" or greater for it to work! Coreboot is likely too fast for the Embedded Controller firmware on the S3 resume hot path.
- S3 Suspend/Resume - Nasty looking dmesg messages seen in Note 2. LKML bug report force_ibs_eilvt_setup().
- "AGP: Please enable the IOMMU option in the BIOS setup" showing up in dmesg - Pass iommu=noaperture to the kernel boot args to ask the IOMMU not to touch the aperture for AGP.
- "Re-enabling disabled Topology Extensions Support" showing up in dmesg - See Note 1.
Note 1: Look in src/vendorcode/amd/agesa/f15tn/Proc/CPU/Family/0x15/TN/F15TnMsrTables.c for
if (PkgType == PACKAGE_TYPE_FM2) { CpuMsrData |= BIT54; }
this is the wrong package type for us. Fixed in 7671
Note 2: Look in src/vendorcode/amd/agesa/f16kb/Proc/CPU/Family/0x16/KB/F16KbMsrTables.c and src/vendorcode/amd/agesa/f15tn/Proc/CPU/Family/0x15/TN/F15TnMsrTables.c.
Backport fixes that pertain to MSR 0x00000413 and MSR 0xC0000408. The following in seen in dmesg on S3 resume:
[ 396.828594] [Firmware Bug]: cpu 0, try to use APIC500 (LVT offset 0) for vector 0xf9, but the register is already in use for vector 0x400 on another cpu [ 396.828596] [Firmware Bug]: cpu 0, failed to setup threshold interrupt for bank 4, block 0 (MSR00000413=0xc000000001000000) [ 396.828597] [Firmware Bug]: cpu 0, try to use APIC500 (LVT offset 0) for vector 0xf9, but the register is already in use for vector 0x400 on another cpu [ 396.828599] [Firmware Bug]: cpu 0, failed to setup threshold interrupt for bank 4, block 1 (MSRC0000408=0xc000000001000000)
Overview
Hardware
- AMD A-series AMD A10-5750M APU
- AMD AGESA Hudson part of the chipset, AMD AGESA Hudson southbridge
- ENE KB9012 EC However we use the ENE932 EC driver in coreboot's tree.
Details
...
- 1x MXIC MX25L1606E (SO8, soldered) 16 Mbit SPI flash (BIOS)
Building a coreboot image
Make a fresh clone of Coreboot into a empty directory and run:
make crossgcc-i386
Make a cup of tea.. Then run:
make menuconfig
and select Lenovo/G505S under "Mainboard -> Mainboard vendor/model" leaving everything else as defaults. Then finally do,
make
To flash the board with flashrom externally run:
flashrom -p ft2232_spi:type=2232H,port=A -w build/coreboot.rom
and internally run:
flashrom -p internal:laptop=force_I_want_a_brick -w build/coreboot.rom
Status
Has an IOMMU with Interrupt Remapping and graphics support
Device/functionality | Status | Comments | ||||||
---|---|---|---|---|---|---|---|---|
CPU | ||||||||
CPU works | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
L1 cache enabled | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | Always on | ||||||
L2 cache enabled | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | Always on | ||||||
L3 cache enabled | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Multiple CPU support | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Multi-core support | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Hardware virtualization | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
RAM | ||||||||
EDO | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
SDRAM | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
SO-DIMM | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
DDR | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
DDR2 | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
DDR3 | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Dual channel support | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
ECC support | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board Hardware | ||||||||
On-board IDE 3.5" | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board IDE 2.5" | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board SATA | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
On-board SCSI | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board USB | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | XHCI requires blob (so disabled by default) | ||||||
On-board VGA | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | 64KByte AtomBIOS blob needed | ||||||
On-board Ethernet | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | Qualcomm Atheros QCA8172 Fast Ethernet | ||||||
On-board Audio | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | Basic two channel audio works fine. | ||||||
On-board Modem | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board FireWire | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board Smartcard reader | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board CompactFlash | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board PCMCIA | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board Wifi | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board Bluetooth | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board SD card reader | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Add-on slots/cards | ||||||||
ISA add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Audio/Modem-Riser (AMR/CNR) cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PCI add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Mini-PCI add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Mini-PCI-Express add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown | |||||||
PCI-X add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
AGP graphics cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PCI Express x1 add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | miniPCIe (populated with Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter) | ||||||
PCI Express x2 add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PCI Express x4 add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PCI Express x8 add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PCI Express x16 add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PCI Express x32 add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
HTX add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Legacy / Super I/O | ||||||||
Floppy | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Serial port 1 (COM1) | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Serial port 2 (COM2) | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Parallel port | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PS/2 keyboard | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
PS/2 mouse | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Game port | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Infrared | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | | |||||||
PC speaker | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
DiskOnChip | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Input | ||||||||
Trackpoint | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Touchpad | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Fn Hotkeys | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Fingerprint Reader | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Laptop | ||||||||
Docking VGA | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Docking LAN | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Docking USB | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Docking Audio | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Docking Displayport | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Thinklight | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Webcam | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Miscellaneous | ||||||||
Sensors / fan control | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Hardware watchdog | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Pending | What needs to be done here?? | ||||||
SMBus | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
CAN bus | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
CPU frequency scaling | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Other powersaving features | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
ACPI | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP | Mostly working, needs a good Review! | ||||||
Reboot | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Poweroff | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Suspend | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Nonstandard LEDs | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
High precision event timers (HPET) | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Random number generator (RNG) | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Wake on modem ring | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Wake on LAN | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested | |||||||
Wake on keyboard | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Wake on mouse | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested | |||||||
TPM | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown | |||||||
Flashrom | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | MXIC MX25L1606E (SO8, soldered) 4MB SPI Flash |
Coreboot boot log
See [1] for a recent log.
I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.
In case this is not legally possible: |