Re: Intel HDA audio on EEE PC 1101HGo

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello guys.
I finally can report some interesting news.
Now audio stopped working - still, the system didn't panic. So I consider this a good good point.
My system is alive and I can keep it alive indefinitely, clearly if hardware doesn't break and/or other events out of my control cause an interruption.

In my dmesg, the following messages started to appear:
snd_hda_intel 0000:00:1b.0: azx_get_response timeout, switching to polling mode: last cmd=0x020c0000
snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5

And they appear apparently when the driver tries to send new commands to the device, but this is only my impression.
Let me know what I could do to report on what's happening. My system is acually running with kdump active, so in case I may also invoke the crash sysrq action and send back results.

sending alsa-info as attachment.
Thank you for everything guys, and forthe patience.
thank you Takashi.

On Thu, 12 Jan 2017, Takashi Iwai wrote:

Date: Thu, 12 Jan 2017 17:20:57
From: Takashi Iwai <tiwai@xxxxxxx>
To: Enrico Mioso <mrkiko.rs@xxxxxxxxx>
Cc: hui.wang@xxxxxxxxxxxxx, alsa-devel@xxxxxxxxxxxxxxxx, kailang@xxxxxxxxxxx
Subject: Re:  Intel HDA audio on EEE PC 1101HGo

On Thu, 12 Jan 2017 17:10:31 +0100,
Enrico Mioso wrote:

Sometimes it's my impression the beep is not emitted. but I may be wrong. If I determine it, I'll report back.
But the system is stable so far, and I can't find other messages in the dmesg.

OK, thanks.  The hackish patch can't be kept / merged to the upstream
code, of course.  Instead, try the patch below and pass single_cmd=0
option.  This will disallow fallback like the hack patch.


Takashi

-- 8< --
From: Takashi Iwai <tiwai@xxxxxxx>
Subject: [PATCH] ALSA: hda - Make single_cmd option to stop the fallback
mechanism

HD-audio driver has a mechanism to fall back to the single cmd mode as
a last resort if the CORB/RIRB communication goes wrong even after
switching to the polling mode.  The switching has worked in the past
well, but Enrico Mioso reported that his system crashes when this
happens.

Although the actual cause of the crash isn't still fully analyzed yet,
it'd be in anyway good to provide an option to turn off the fallback
mode.  Now this patch extends the behavior of the existing single_cmd
option for that.  Namely,

- The option is changed from bool to bint.
- As default, it is the mode allowing the fallback to single cmd.
- Once when either true/false value is given to the option, the driver
 explicitly turns on/off the single cmd mode, but without the
 fallback.

That is, if you want to disable the fallback, just pass single_cmd=0
option.  Passing single_cmd=1 will keep working like before.

Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
---
sound/pci/hda/hda_controller.c |  4 ++++
sound/pci/hda/hda_controller.h |  1 +
sound/pci/hda/hda_intel.c      | 10 +++++++---
3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/sound/pci/hda/hda_controller.c b/sound/pci/hda/hda_controller.c
index 500878556578..3715a5725613 100644
--- a/sound/pci/hda/hda_controller.c
+++ b/sound/pci/hda/hda_controller.c
@@ -861,6 +861,10 @@ static int azx_rirb_get_response(struct hdac_bus *bus, unsigned int addr,
		return -EIO;
	}

+	/* no fallback mechanism? */
+	if (!chip->fallback_to_single_cmd)
+		return -EIO;
+
	/* a fatal communication error; need either to reset or to fallback
	 * to the single_cmd mode
	 */
diff --git a/sound/pci/hda/hda_controller.h b/sound/pci/hda/hda_controller.h
index a50e0532622a..35a9ab2cac46 100644
--- a/sound/pci/hda/hda_controller.h
+++ b/sound/pci/hda/hda_controller.h
@@ -150,6 +150,7 @@ struct azx {
	int bdl_pos_adj;
	int poll_count;
	unsigned int running:1;
+	unsigned int fallback_to_single_cmd:1;
	unsigned int single_cmd:1;
	unsigned int polling_mode:1;
	unsigned int msi:1;
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 2587c197e353..faf99cc71277 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -128,7 +128,7 @@ static int bdl_pos_adj[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = -1};
static int probe_mask[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = -1};
static int probe_only[SNDRV_CARDS];
static int jackpoll_ms[SNDRV_CARDS];
-static bool single_cmd;
+static int single_cmd = -1;
static int enable_msi = -1;
#ifdef CONFIG_SND_HDA_PATCH_LOADER
static char *patch[SNDRV_CARDS];
@@ -157,7 +157,7 @@ module_param_array(probe_only, int, NULL, 0444);
MODULE_PARM_DESC(probe_only, "Only probing and no codec initialization.");
module_param_array(jackpoll_ms, int, NULL, 0444);
MODULE_PARM_DESC(jackpoll_ms, "Ms between polling for jack events (default = 0, using unsol events only)");
-module_param(single_cmd, bool, 0444);
+module_param(single_cmd, bint, 0444);
MODULE_PARM_DESC(single_cmd, "Use single command to communicate with codecs "
		 "(for debugging only).");
module_param(enable_msi, bint, 0444);
@@ -1596,7 +1596,11 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci,

	check_probe_mask(chip, dev);

-	chip->single_cmd = single_cmd;
+	if (single_cmd < 0) /* allow fallback to single_cmd at errors */
+		chip->fallback_to_single_cmd = 1;
+	else /* explicitly set to single_cmd or not */
+		chip->single_cmd = single_cmd;
+
	azx_check_snoop_available(chip);

	if (bdl_pos_adj[dev] < 0)
--
2.11.0

upload=true&script=true&cardinfo=
!!################################
!!ALSA Information Script v 0.4.64
!!################################

!!Script ran on: Fri Jan 13 19:39:15 UTC 2017


!!Linux Distribution
!!------------------

Arch Linux \r (\l) NAME="Arch Linux" PRETTY_NAME="Arch Linux" ID=arch ID_LIKE=archlinux HOME_URL="https://www.archlinux.org/"; SUPPORT_URL="https://bbs.archlinux.org/"; BUG_REPORT_URL="https://bugs.archlinux.org/";


!!DMI Information
!!---------------

Manufacturer:      ASUSTeK Computer INC.
Product Name:      1101HAG
Product Version:   x.x
Firmware Version:  0106   


!!Kernel Information
!!------------------

Kernel release:    4.10.0-rc3ho+
Operating System:  GNU/Linux
Architecture:      i686
Processor:         unknown
SMP Enabled:       Yes


!!ALSA Version
!!------------

Driver version:     k4.10.0-rc3ho+
Library version:    1.1.3
Utilities version:  1.1.3


!!Loaded ALSA modules
!!-------------------

snd_hda_intel


!!Sound Servers on this system
!!----------------------------

Jack:
      Installed - Yes (/usr/bin/jackd)
      Running - No


!!Soundcards recognised by ALSA
!!-----------------------------

 0 [MID            ]: HDA-Intel - HDA Intel MID
                      HDA Intel MID at 0xf3f38000 irq 23


!!PCI Soundcards installed in the system
!!--------------------------------------

00:1b.0 Audio device: Intel Corporation System Controller Hub (SCH Poulsbo) HD Audio Controller (rev 07)


!!Advanced information - PCI Vendor/Device/Subsystem ID's
!!-------------------------------------------------------

00:1b.0 0403: 8086:811b (rev 07)
	Subsystem: 1043:83ce


!!Modprobe options (Sound related)
!!--------------------------------

snd_hda_intel: single_cmd=0


!!Loaded sound module options
!!---------------------------

!!Module: snd_hda_intel
	align_buffer_size : -1
	bdl_pos_adj : -1,-1,-1,-1,-1,-1,-1,-1
	beep_mode : Y,Y,Y,Y,Y,Y,Y,Y
	enable : Y,Y,Y,Y,Y,Y,Y,Y
	enable_msi : -1
	id : (null),(null),(null),(null),(null),(null),(null),(null)
	index : -1,-1,-1,-1,-1,-1,-1,-1
	jackpoll_ms : 0,0,0,0,0,0,0,0
	model : (null),(null),(null),(null),(null),(null),(null),(null)
	position_fix : -1,-1,-1,-1,-1,-1,-1,-1
	power_save : 40
	power_save_controller : Y
	probe_mask : -1,-1,-1,-1,-1,-1,-1,-1
	probe_only : 0,0,0,0,0,0,0,0
	single_cmd : N
	snoop : -1


!!HDA-Intel Codec information
!!---------------------------
--startcollapse--

Codec: Realtek ALC269
Address: 0
AFG Function Id: 0x1 (unsol 1)
Vendor Id: 0x10ec0269
Subsystem Id: 0x104383ce
Revision Id: 0x100004
No Modem Function Group found
Default PCM:
N/A
Default Amp-In caps: N/A
Default Amp-Out caps: N/A
State of AFG node 0x01:
  Power: setting=UNKNOWN, actual=UNKNOWN, Error, Clock-stop-OK, Setting-reset
Invalid AFG subtree
--endcollapse--


!!ALSA Device nodes
!!-----------------

crw-rw----+ 1 root audio 116,  0 Jan 12 12:21 /dev/snd/controlC0
crw-rw----+ 1 root audio 116, 24 Jan 12 12:21 /dev/snd/pcmC0D0c
crw-rw----+ 1 root audio 116, 16 Jan 13 19:30 /dev/snd/pcmC0D0p
crw-rw----+ 1 root audio 116,  1 Jan 12 12:21 /dev/snd/seq
crw-rw----+ 1 root audio 116, 33 Jan 12 12:21 /dev/snd/timer

/dev/snd/by-path:
total 0
drwxr-xr-x 2 root root  60 Jan 12 12:21 .
drwxr-xr-x 3 root root 160 Jan 12 12:21 ..
lrwxrwxrwx 1 root root  12 Jan 12 12:21 pci-0000:00:1b.0 -> ../controlC0


!!Aplay/Arecord output
!!--------------------

APLAY

**** List of PLAYBACK Hardware Devices ****
card 0: MID [HDA Intel MID], device 0: ALC269 Analog [ALC269 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

ARECORD

**** List of CAPTURE Hardware Devices ****
card 0: MID [HDA Intel MID], device 0: ALC269 Analog [ALC269 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

!!Amixer output
!!-------------

!!-------Mixer controls for card 0 [MID]

Card hw:0 'MID'/'HDA Intel MID at 0xf3f38000 irq 23'
  Mixer name	: 'Realtek ALC269'
  Components	: 'HDA:10ec0269,104383ce,00100004'
  Controls      : 23
  Simple ctrls  : 11
Simple mixer control 'Master',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined
  Playback channels: Mono
  Limits: Playback 0 - 64
  Mono: Playback 43 [67%] [-21.00dB] [on]
Simple mixer control 'Headphone',0
  Capabilities: pvolume pswitch
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 64
  Mono:
  Front Left: Playback 64 [100%] [1.00dB] [on]
  Front Right: Playback 64 [100%] [1.00dB] [on]
Simple mixer control 'Speaker',0
  Capabilities: pvolume pswitch
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 64
  Mono:
  Front Left: Playback 64 [100%] [1.00dB] [on]
  Front Right: Playback 64 [100%] [1.00dB] [on]
Simple mixer control 'PCM',0
  Capabilities: pvolume
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 255
  Mono:
  Front Left: Playback 255 [100%] [0.00dB]
  Front Right: Playback 255 [100%] [0.00dB]
Simple mixer control 'Mic',0
  Capabilities: pvolume pswitch
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 31
  Mono:
  Front Left: Playback 0 [0%] [-34.50dB] [off]
  Front Right: Playback 0 [0%] [-34.50dB] [off]
Simple mixer control 'Mic Boost',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 3
  Front Left: 0 [0%] [0.00dB]
  Front Right: 0 [0%] [0.00dB]
Simple mixer control 'Beep',0
  Capabilities: pvolume pswitch
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 31
  Mono:
  Front Left: Playback 19 [61%] [-6.00dB] [on]
  Front Right: Playback 19 [61%] [-6.00dB] [on]
Simple mixer control 'Capture',0
  Capabilities: cvolume cswitch
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 46
  Front Left: Capture 29 [63%] [12.00dB] [on]
  Front Right: Capture 29 [63%] [12.00dB] [on]
Simple mixer control 'Auto-Mute Mode',0
  Capabilities: enum
  Items: 'Disabled' 'Enabled'
  Item0: 'Enabled'
Simple mixer control 'Digital',0
  Capabilities: cvolume
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 120
  Front Left: Capture 60 [50%] [0.00dB]
  Front Right: Capture 60 [50%] [0.00dB]
Simple mixer control 'Loopback Mixing',0
  Capabilities: enum
  Items: 'Disabled' 'Enabled'
  Item0: 'Enabled'


!!Alsactl output
!!--------------

--startcollapse--
state.MID {
	control.1 {
		iface MIXER
		name 'Headphone Playback Volume'
		value.0 64
		value.1 64
		comment {
			access 'read write'
			type INTEGER
			count 2
			range '0 - 64'
			dbmin -6300
			dbmax 100
			dbvalue.0 100
			dbvalue.1 100
		}
	}
	control.2 {
		iface MIXER
		name 'Headphone Playback Switch'
		value.0 true
		value.1 true
		comment {
			access 'read write'
			type BOOLEAN
			count 2
		}
	}
	control.3 {
		iface MIXER
		name 'Speaker Playback Volume'
		value.0 64
		value.1 64
		comment {
			access 'read write'
			type INTEGER
			count 2
			range '0 - 64'
			dbmin -6300
			dbmax 100
			dbvalue.0 100
			dbvalue.1 100
		}
	}
	control.4 {
		iface MIXER
		name 'Speaker Playback Switch'
		value.0 true
		value.1 true
		comment {
			access 'read write'
			type BOOLEAN
			count 2
		}
	}
	control.5 {
		iface MIXER
		name 'Loopback Mixing'
		value Enabled
		comment {
			access 'read write'
			type ENUMERATED
			count 1
			item.0 Disabled
			item.1 Enabled
		}
	}
	control.6 {
		iface MIXER
		name 'Mic Playback Volume'
		value.0 0
		value.1 0
		comment {
			access 'read write'
			type INTEGER
			count 2
			range '0 - 31'
			dbmin -3450
			dbmax 1200
			dbvalue.0 -3450
			dbvalue.1 -3450
		}
	}
	control.7 {
		iface MIXER
		name 'Mic Playback Switch'
		value.0 false
		value.1 false
		comment {
			access 'read write'
			type BOOLEAN
			count 2
		}
	}
	control.8 {
		iface MIXER
		name 'Auto-Mute Mode'
		value Enabled
		comment {
			access 'read write'
			type ENUMERATED
			count 1
			item.0 Disabled
			item.1 Enabled
		}
	}
	control.9 {
		iface MIXER
		name 'Capture Volume'
		value.0 29
		value.1 29
		comment {
			access 'read write'
			type INTEGER
			count 2
			range '0 - 46'
			dbmin -1700
			dbmax 2900
			dbvalue.0 1200
			dbvalue.1 1200
		}
	}
	control.10 {
		iface MIXER
		name 'Capture Switch'
		value.0 true
		value.1 true
		comment {
			access 'read write'
			type BOOLEAN
			count 2
		}
	}
	control.11 {
		iface MIXER
		name 'Mic Boost Volume'
		value.0 0
		value.1 0
		comment {
			access 'read write'
			type INTEGER
			count 2
			range '0 - 3'
			dbmin 0
			dbmax 3000
			dbvalue.0 0
			dbvalue.1 0
		}
	}
	control.12 {
		iface MIXER
		name 'Master Playback Volume'
		value 43
		comment {
			access 'read write'
			type INTEGER
			count 1
			range '0 - 64'
			dbmin -6400
			dbmax 0
			dbvalue.0 -2100
		}
	}
	control.13 {
		iface MIXER
		name 'Master Playback Switch'
		value true
		comment {
			access 'read write'
			type BOOLEAN
			count 1
		}
	}
	control.14 {
		iface CARD
		name 'Mic Jack'
		value true
		comment {
			access read
			type BOOLEAN
			count 1
		}
	}
	control.15 {
		iface CARD
		name 'Internal Mic Phantom Jack'
		value true
		comment {
			access read
			type BOOLEAN
			count 1
		}
	}
	control.16 {
		iface CARD
		name 'Headphone Jack'
		value true
		comment {
			access read
			type BOOLEAN
			count 1
		}
	}
	control.17 {
		iface CARD
		name 'Speaker Phantom Jack'
		value true
		comment {
			access read
			type BOOLEAN
			count 1
		}
	}
	control.18 {
		iface MIXER
		name 'Beep Playback Volume'
		value.0 19
		value.1 19
		comment {
			access 'read write'
			type INTEGER
			count 2
			range '0 - 31'
			dbmin -3450
			dbmax 1200
			dbvalue.0 -600
			dbvalue.1 -600
		}
	}
	control.19 {
		iface MIXER
		name 'Beep Playback Switch'
		value.0 true
		value.1 true
		comment {
			access 'read write'
			type BOOLEAN
			count 2
		}
	}
	control.20 {
		iface PCM
		name 'Playback Channel Map'
		value.0 0
		value.1 0
		comment {
			access read
			type INTEGER
			count 2
			range '0 - 36'
		}
	}
	control.21 {
		iface PCM
		name 'Capture Channel Map'
		value.0 0
		value.1 0
		comment {
			access read
			type INTEGER
			count 2
			range '0 - 36'
		}
	}
	control.22 {
		iface MIXER
		name 'PCM Playback Volume'
		value.0 255
		value.1 255
		comment {
			access 'read write user'
			type INTEGER
			count 2
			range '0 - 255'
			tlv '0000000100000008ffffec1400000014'
			dbmin -5100
			dbmax 0
			dbvalue.0 0
			dbvalue.1 0
		}
	}
	control.23 {
		iface MIXER
		name 'Digital Capture Volume'
		value.0 60
		value.1 60
		comment {
			access 'read write user'
			type INTEGER
			count 2
			range '0 - 120'
			tlv '0000000100000008fffff44800000032'
			dbmin -3000
			dbmax 3000
			dbvalue.0 0
			dbvalue.1 0
		}
	}
}
--endcollapse--


!!All Loaded Modules
!!------------------

Module
fuse
af_packet
arc4
ath9k
ath9k_common
ath9k_hw
mac80211
bnep
coretemp
kvm_intel
snd_hda_codec_realtek
kvm
ath
uvcvideo
snd_hda_codec_generic
snd_hda_intel
snd_hda_codec
cfg80211
videobuf2_vmalloc
videobuf2_memops
asus_wmi
atkbd
videobuf2_v4l2
input_leds
libps2
videobuf2_core
hwmon
snd_hda_core
sparse_keymap
videodev
option
led_class
uas
usb_wwan
usbserial
snd_pcm
irqbypass
usb_storage
media
btusb
snd_timer
snd
btbcm
i2c_core
atl1c
hid_apple
lpc_sch
btintel
mfd_core
thermal
wmi
i8042
evdev
video
acpi_cpufreq
soundcore
serio
processor
backlight
rfcomm
bluetooth
rfkill
ip_tables
x_tables
sha1_generic
ipv6
autofs4


!!ALSA/HDA dmesg
!!--------------

[   18.031384] USB Video Class driver (1.1.1)
[   18.054976] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC269: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[   18.067358] snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[   18.080055] snd_hda_codec_realtek hdaudioC0D0:    hp_outs=1 (0x15/0x0/0x0/0x0/0x0)
[   18.092172] snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
[   18.104042] snd_hda_codec_realtek hdaudioC0D0:    inputs:
[   18.147300] snd_hda_codec_realtek hdaudioC0D0:      Mic=0x18
[   18.191065] snd_hda_codec_realtek hdaudioC0D0:      Internal Mic=0x12
[   18.247499] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/sound/card0/input8
[   18.285601] input: HDA Intel MID Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input9
[   18.310620] input: HDA Intel MID Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input10
[   19.717219] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
--
[ 5242.552595] EXT4-fs (sda1): re-mounted. Opts: nobarrier,noauto_da_alloc
[ 5379.300565] snd_hda_intel 0000:00:1b.0: Invalid position buffer, using LPIB read method instead.
[ 5432.748768] EXT4-fs (sda1): re-mounted. Opts: nobarrier,noauto_da_alloc
--
[33317.356471] fuse init (API version 7.26)
[111870.510091] snd_hda_intel 0000:00:1b.0: azx_get_response timeout, switching to polling mode: last cmd=0x020c0000
[112013.020094] snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
[112016.027100] snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
[112137.588099] snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
[112140.594099] snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
[114687.722113] snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
[114690.732105] snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
[115929.461096] snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
[115932.471089] snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
[116117.440096] snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
[116120.458094] snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
[116291.707103] snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5
[116294.717094] snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x1f0e00. -5


_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux