aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/scripts/python/export-to-postgresql.py (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2018-09-27platform/x86: intel_scu_ipc: Convert to use SPDX identifierAndy Shevchenko2-14/+6
Reduce size of duplicated comments by switching to use SPDX identifier. No functional change. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_scu_ipc: Sort headers alphabeticallyAndy Shevchenko2-9/+11
Sort headers alphabetically for better maintenance. No functional change. While here, remove unneeded linux/init.h inclusion. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel-rst: Convert to use SPDX identifierAndy Shevchenko1-19/+1
Reduce size of duplicated comments by switching to use SPDX identifier. No functional change. While here, throw away some extra blank lines. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel-rst: Sort headers alphabeticallyAndy Shevchenko1-2/+1
Sort headers alphabetically for better maintenance. No functional change. While here, remove unneeded linux/init.h inclusion. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_punit_ipc: Convert to use SPDX identifierAndy Shevchenko1-4/+1
Reduce size of duplicated comments by switching to use SPDX identifier. No functional change. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_punit_ipc: Sort headers alphabeticallyAndy Shevchenko1-3/+4
Sort headers alphabetically for better maintenance. No functional change. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_pmc: Convert to use SPDX identifierAndy Shevchenko3-28/+6
Reduce size of duplicated comments by switching to use SPDX identifier. No functional change. While here, correct MODULE_LICENSE() string to be aligned with license text. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_pmc: Sort headers alphabeticallyAndy Shevchenko1-12/+11
Sort headers alphabetically for better maintenance. No functional change. While here, remove unneeded linux/init.h inclusion. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_oaktrail: Convert to use SPDX identifierAndy Shevchenko1-16/+2
Reduce size of duplicated comments by switching to use SPDX identifier. No functional change. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_oaktrail: Sort headers alphabeticallyAndy Shevchenko1-7/+7
Sort headers alphabetically for better maintenance. No functional change. While here, remove unneeded linux/init.h inclusion. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_mid_thermal: Convert to use SPDX identifierAndy Shevchenko1-18/+3
Reduce size of duplicated comments by switching to use SPDX identifier. No functional change. While here, correct MODULE_LICENSE() string to be aligned with license text. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_mid_thermal: Sort headers alphabeticallyAndy Shevchenko1-5/+4
Sort headers alphabetically for better maintenance. No functional change. While here, remove unneeded linux/init.h inclusion. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_mid_powerbtn: Convert to use SPDX identifierAndy Shevchenko1-9/+1
Reduce size of duplicated comments by switching to use SPDX identifier. No functional change. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_mid_powerbtn: Remove unnecessary init.h inclusionAndy Shevchenko1-1/+0
No need to include linux/init.h when linux/module.h is. No functional change intended. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_menlow: Convert to use SPDX identifierAndy Shevchenko1-18/+3
Reduce size of duplicated comments by switching to use SPDX identifier. No functional change. While here, correct MODULE_LICENSE() string to be aligned with license text. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_menlow: Sort headers alphabeticallyAndy Shevchenko1-4/+3
Sort headers alphabetically for better maintenance. No functional change. While here, remove unneeded linux/init.h inclusion. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel-ips: Convert to use SPDX identifierAndy Shevchenko2-25/+3
Reduce size of duplicated comments by switching to use SPDX identifier. No functional change. While here, correct MODULE_LICENSE() string to be aligned with license text. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_int0002_vgpio: Convert to use SPDX identifierAndy Shevchenko1-5/+2
Reduce size of duplicated comments by switching to use SPDX identifier. No functional change. While here, correct MODULE_LICENSE() string to be aligned with license text. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel-hid: Convert to use SPDX identifierAndy Shevchenko1-11/+1
Reduce size of duplicated comments by switching to use SPDX identifier. No functional change. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_chtdc_ti_pwrbtn: Add SPDX identifierAndy Shevchenko1-0/+1
Driver misses the licence text or identifier, thus, append it here. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_cht_int33fe: Convert to use SPDX identifierAndy Shevchenko1-5/+2
Reduce size of duplicated comments by switching to use SPDX identifier. No functional change. While here, correct MODULE_LICENSE() string to be aligned with license text. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_bxtwc_tmu: Convert to use SPDX identifierAndy Shevchenko1-11/+2
Reduce size of duplicated comments by switching to use SPDX identifier. No functional change. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27MAINTAINERS: Update maintainer for dcdbas and dell_rbuStuart Hayes1-2/+9
Assign maintainer for dell_rbu driver, and reassign maintainer of dcdbas from inactive maintainer (current maintainer is aware of this change-- see https://www.spinics.net/lists/platform-driver-x86/msg16336.html). Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com> Acked-by: Doug Warzecha <Douglas_Warzecha@dell.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27firmware: dcdbas: Move dcdbas to drivers/platform/x86Stuart Hayes7-18/+18
Move dcdbas to the more appropriate directory drivers/platform/x86. Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27firmware: dell_rbu: Move dell_rbu to drivers/platform/x86Stuart Hayes5-13/+13
Move dell_rbu to the more appropriate directory drivers/platform/x86. Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27firmware: dcdbas: Add support for WSMT ACPI tableStuart Hayes2-6/+127
If the WSMT ACPI table is present and indicates that a fixed communication buffer should be used, use the firmware-specified buffer instead of allocating a buffer in memory for communications between the dcdbas driver and firmare. Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27firmware: dell_rbu: Make payload memory uncachableStuart Hayes1-0/+8
The dell_rbu driver takes firmware update payloads and puts them in memory so the system BIOS can find them after a reboot. This sometimes fails (though rarely), because the memory containing the payload is in the CPU cache but never gets written back to main memory before the system is rebooted (CPU cache contents are lost on reboot). With this patch, the payload memory will be changed to uncachable to ensure that the payload is actually in main memory before the system is rebooted. Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: acerhdf: restructure to allow large BIOS table be __initconstPaul Gortmaker1-13/+28
There is a table of Vendor/Model/Version {control data} in this driver, but outside of the initial probe, the V/M/V is never used again, and neither are any of the entries for platforms other than the one which matches the running target. By simply storing the {control data} for the matched platform, we can mark the large table __initconst, which reduces the loaded driver size by 20 percent. Before: root@gw:~/git/linux-head# lsmod Module Size Used by acerhdf 20480 0 root@gw:~/git/linux-head# After: root@gw:~/git/linux-head# lsmod Module Size Used by acerhdf 16384 0 root@gw:~/git/linux-head# Cc: Peter Feuerer <peter@piie.net> Cc: Darren Hart <dvhart@infradead.org> Cc: Andy Shevchenko <andy@infradead.org> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Peter Feuerer <peter@piie.net>
2018-09-27platform/x86: acerhdf: mark appropriate content with __init prefixPaul Gortmaker1-3/+3
These three functions are only called from the probe code which is already marked __init and hence these can be __init as well. Cc: Peter Feuerer <peter@piie.net> Cc: Darren Hart <dvhart@infradead.org> Cc: Andy Shevchenko <andy@infradead.org> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Peter Feuerer <peter@piie.net>
2018-09-27platform/x86: acerhdf: Add BIOS entry for Gateway LT31 v1.3307Paul Gortmaker1-0/+1
To fix: acerhdf: unknown (unsupported) BIOS version Gateway /LT31 /v1.3307 , please report, aborting! As can be seen in the context, the BIOS registers haven't changed in the previous versions, so the assumption is they won't have changed in this last update for this somewhat older platform either. Cc: Peter Feuerer <peter@piie.net> Cc: Darren Hart <dvhart@infradead.org> Cc: Andy Shevchenko <andy@infradead.org> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Peter Feuerer <peter@piie.net>
2018-09-27platform/x86: acerhdf: Remove cut-and-paste trap from instructionsPaul Gortmaker2-2/+5
Just like we avoid specifying actual block devices like sda for fdisk and dd examples, we should not specify specific thermal zones here. On the platform I was testing on, zone0 was acpitz, and zone1 was for this acerhdf driver. Make the printk such that it won't work with a blind cut-and-paste, and force the user to determine which zone is correct for this driver. Cc: Peter Feuerer <peter@piie.net> Cc: Darren Hart <dvhart@infradead.org> Cc: Andy Shevchenko <andy@infradead.org> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Peter Feuerer <peter@piie.net>
2018-09-27platform/x86: acerhdf: Enable ability to list supported systemsPaul Gortmaker1-0/+14
This driver has two module parameters that allow an override of the checks for matching model and BIOS version. However, both parameters expect you to choose an entry from the existing list of supported systems, encoded within the driver itself. Without the source, such as in a binary distribution, the end user does not have access to this information, thus rendering the two module parameters essentially useless. Add a module parameter that allows the end user to dump the list of make/model/versions so that they can then pick one that most closely matches their own system. Cc: Peter Feuerer <peter@piie.net> Cc: Darren Hart <dvhart@infradead.org> Cc: Andy Shevchenko <andy@infradead.org> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Peter Feuerer <peter@piie.net>
2018-09-27platform/x86: acerhdf: clarify modinfo messages for BIOS overridePaul Gortmaker1-2/+2
Normally, a module parameter for a BIOS check override implies "pretend you support this version" (and the user will enter their local version). However, this driver uses the model/BIOS module parameters in a way that is "pretend my system is the supported model XYZ with BIOS version ABC." which is less common. Since the help strings don't make such a distinction, one gets this somewhat frustrating scenario, where the user sees the error, enters *their* BIOS version and then gets the same error: root@gw:~# modprobe acerhdf acerhdf: Acer Aspire One Fan driver, v.0.7.0 acerhdf: unknown (unsupported) BIOS version Gateway /LT31 /v1.3307 , please report, aborting! modprobe: ERROR: could not insert 'acerhdf': Invalid argument root@gw:~# modprobe acerhdf force_bios=v1.3307 acerhdf: Acer Aspire One Fan driver, v.0.7.0 acerhdf: forcing BIOS version: v1.3307 acerhdf: unknown (unsupported) BIOS version Gateway /LT31 /v1.3307 , please report, aborting! modprobe: ERROR: could not insert 'acerhdf': Invalid argument Clarify the module param help text to make it clear that the driver expects a choice from existing supported models/versions. Cc: Peter Feuerer <peter@piie.net> Cc: Darren Hart <dvhart@infradead.org> Cc: Andy Shevchenko <andy@infradead.org> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Peter Feuerer <peter@piie.net>
2018-09-27platform/x86: intel_mid_powerbtn: Get rid of custom ICPU() macroAndy Shevchenko1-5/+2
Replace custom grown macro with generic INTEL_CPU_FAM6() one. No functional change intended. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_int0002_vgpio: Implement irq_set_wakeHans de Goede1-0/+16
We were relying on the interrupt being shared with the ACPI SCI and the ACPI core calling irq_set_wake. But that does not always happen on Bay Trail devices, so we should do it ourselves. This fixes wake from USB not working on various Bay Trail devices. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: intel_int0002_vgpio: Enable the driver on Bay Trail platformsHans de Goede1-5/+1
The intel_int0002_vgpio driver was added to avoid an IRQ 9 storm on Cherry Trail platforms. When originally merged the CPU ID for Bay Trail SoCs was commented out of the list of valid CPU IDs because we did not have any reports of the IRQ storm on Bay Trail platforms. We now have a report of the IRQ 9 storm on the Bay Trail based Thinkpad Tablet 10 which is fixed by enabling this driver, so lets enable it on Bay Trail too. I've tested various other Bay Trail device with this driver enabled without adverse side-effects. BugLink: https://www.dpin.de/nf/finally-s0i3-is-there-thinkpad-tablet-10-sleeps-deeply-with-linux-kernel-4-15rc/#comments Reported-and-tested-by: Nicole Faerber <nicole@id3p.de> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-27platform/x86: ideapad-laptop: Use __func__ instead of read_ec_cmd in pr_errZhang Xianwei1-1/+1
Refer to the commit f1395edbcec8 ("platform/x86: ideapad-laptop: Use __func__ instead of write_ec_cmd in pr_err"), prefer using '"%s...", __func__' to using 'read_ec_cmd' in read_ec_data. Signed-off-by: Zhang Xianwei <zhang.xianwei8@zte.com.cn> Acked-by: Ike Panhc <ike.pan@canonical.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-26MAINTAINERS: Use my infradead account exclusively for PDx86 workAndy Shevchenko1-1/+1
ACPI PMIC subsystem listed me as a designated reviewer with infradead email which is not what I want. I'm using infradead email only for PDx86 related work. Thus, update MAINTAINERS accordingly. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-26tracing: Trivia spelling fix containerof() -> container_of()Andy Shevchenko1-1/+1
This is the only location on kernel that has wrong spelling of the container_of() helper. Fix it. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2018-09-10platform/x86: alienware-wmi: Correct a memory leakMario Limonciello1-0/+1
An ACPI buffer that was allocated was not being freed after use. Signed-off-by: Mario Limonciello <mario.limonciello@dell.com> Cc: stable@vger.kernel.org Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
2018-09-10platform/x86: dell-smbios-wmi: Correct a memory leakMario Limonciello1-0/+1
ACPI buffers were being allocated but never freed. Reported-by: Pinzhen Xu <pinzhen.xu@intel.com> Signed-off-by: Mario Limonciello <mario.limonciello@dell.com> Cc: stable@vger.kernel.org Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
2018-08-26Linux 4.19-rc1Linus Torvalds1-2/+2
2018-08-25mm/cow: don't bother write protecting already write-protected pagesLinus Torvalds1-1/+1
This is not normally noticeable, but repeated forks are unnecessarily expensive because they repeatedly dirty the parent page tables during the page table copy operation. It's trivial to just avoid write protecting the page table entry if it was already not writable. This patch was inspired by https://bugzilla.kernel.org/show_bug.cgi?id=200447 which points to an ancient "waste time re-doing fork" issue in the presence of lots of signals. That bug was fixed by Eric Biederman's signal handling series culminating in commit c3ad2c3b02e9 ("signal: Don't restart fork when signals come in"), but the unnecessary work for repeated forks is still work just fixing, particularly since the fix is trivial. Cc: Eric Biederman <ebiederm@xmission.com> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-08-25hpfs: remove unnecessary checks on the value of r when assigning error codeColin Ian King1-1/+1
At the point where r is being checked for different values, r is always going to be equal to 2 as the previous if statements jump to end or end1 if r is not 2. Hence the assignment to err can be simplified to just err an assignment without any checks on the value or r. Detected by CoverityScan, CID#1226737 ("Logically dead code") Signed-off-by: Colin Ian King <colin.king@canonical.com> Reviewed-by: Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-08-25libata: maintainership updateJens Axboe1-3/+3
Tejun Heo wrote: > > I asked Jens whether he could take care of the libata tree and he > thankfully agreed, so, from now on, Jens will be the libata > maintainer. > > Thanks a lot! Thanks for your work in this area. I still remember the first linux storage summit we did in Vancouver 2001, Tejun was invited to talk about his libata error handling work. Before that, it was basically a crap shoot if we recovered properly or not... A lot of water has flown under the bridge since then! Here's an "official" patch. Linus, can you apply it? Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-08-24iommu/rockchip: Move irq request past pm_runtime_enableMarc Zyngier1-11/+13
Enabling the interrupt early, before power has been applied to the device, can result in an interrupt being delivered too early if: - the IOMMU shares an interrupt with a VOP - the VOP has a pending interrupt (after a kexec, for example) In these conditions, we end-up taking the interrupt without the IOMMU being ready to handle the interrupt (not powered on). Moving the interrupt request past the pm_runtime_enable() call makes sure we can at least access the IOMMU registers. Note that this is only a partial fix, and that the VOP interrupt will still be screaming until the VOP driver kicks in, which advocates for a more synchronized interrupt enabling/disabling approach. Fixes: 0f181d3cf7d98 ("iommu/rockchip: Add runtime PM support") Reviewed-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Olof Johansson <olof@lixom.net>
2018-08-24iommu/rockchip: Handle errors returned from PM frameworkMarc Zyngier1-6/+15
pm_runtime_get_if_in_use can fail: either PM has been disabled altogether (-EINVAL), or the device hasn't been enabled yet (0). Sadly, the Rockchip IOMMU driver tends to conflate the two things by considering a non-zero return value as successful. This has the consequence of hiding other bugs, so let's handle this case throughout the driver, with a WARN_ON_ONCE so that we can try and work out what happened. Fixes: 0f181d3cf7d98 ("iommu/rockchip: Add runtime PM support") Reviewed-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Olof Johansson <olof@lixom.net>
2018-08-24arm64: rockchip: Force CONFIG_PM on Rockchip systemsMarc Zyngier1-0/+1
A number of the Rockchip-specific drivers (IOMMU, display controllers) are now assuming that CONFIG_PM is set, and may completely misbehave if that's not the case. Since there is hardly any reason for this configuration option not to be selected anyway, let's require it (in the same way Tegra already does). Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Olof Johansson <olof@lixom.net>
2018-08-24ARM: rockchip: Force CONFIG_PM on Rockchip systemsMarc Zyngier1-0/+1
A number of the Rockchip-specific drivers (IOMMU, display controllers) are now assuming that CONFIG_PM is set, and may completely misbehave if that's not the case. Since there is hardly any reason for this configuration option not to be selected anyway, let's require it (in the same way Tegra already does). Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Olof Johansson <olof@lixom.net>
2018-08-24arm64: dts: Fix various entry-method properties to reflect documentationAmit Kucheria11-12/+12
The idle-states binding documentation[1] mentions that the 'entry-method' property is required on 64-bit platforms and must be set to "psci". commit a13f18f59d26 ("Documentation: arm: Fix typo in the idle-states bindings examples") attempted to fix this earlier but clearly more is needed. Fix the cpu-capacity.txt documentation that uses the incorrect value so we don't get copy-paste errors like these. Clarify the language in idle-states.txt by removing the reference to the psci bindings that might be causing this confusion. Finally, fix devicetrees of various boards to reflect current documentation. [1] Documentation/devicetree/bindings/arm/idle-states.txt (see idle-states node) Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org> Acked-by: Sudeep Holla <sudeep.holla@arm.com> Acked-by: Li Yang <leoyang.li@nxp.com> Signed-off-by: Olof Johansson <olof@lixom.net>