From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marius Vlad Subject: Re: [PATCH] drm/i915: Add RPM references in the *_get_hw_state functions Date: Mon, 4 Jan 2016 14:55:27 +0200 Message-ID: <20160104125527.GA20864@mcvlad-wk.rb.intel.com> References: <1451565949-8523-1-git-send-email-gabriel.feceoru@intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0842612719==" Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 885AD88E6B for ; Mon, 4 Jan 2016 04:54:33 -0800 (PST) In-Reply-To: <1451565949-8523-1-git-send-email-gabriel.feceoru@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Gabriel Feceoru Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org --===============0842612719== Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="a8Wt8u1KmwUX3Y2C" Content-Disposition: inline --a8Wt8u1KmwUX3Y2C Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi, I'm still seeing these warning(s) with both this patch and the one for i915_driver_unload() (http://patchwork.freedesktop.org/patch/6= 9227/), in more than two cases: $ tests/kms_flip --run-subtest basic-flip-vs-wf_vblank [ 226.580012] ------------[ cut here ]------------ [ 226.580049] WARNING: CPU: 0 PID: 2077 at drivers/gpu/drm/i915/intel_drv= =2Eh:1457 gen6_read32+0x1ca/0x1e0 [i915]() [ 226.580051] RPM wakelock ref not held during HW access [ 226.580052] Modules linked in: [ 226.580054] snd_hda_intel i915 drm_kms_helper drm msr bnep binfmt_misc= arc4 ath9k ath9k_common ath9k_hw ath mac80211 snd_hda_codec_hdmi snd_hda_c= odec_realtek snd_hda_codec_generic snd_hda_codec intel_rapl iosf_mbi x86_pk= g_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_core joydev kvm = snd_hwdep input_leds dcdbas dell_smm_hwmon snd_pcm snd_seq_midi cfg80211 sn= d_seq_midi_event snd_rawmidi irqbypass snd_seq ath3k btusb btrtl btbcm btin= tel crct10dif_pclmul crc32_pclmul bluetooth aesni_intel aes_x86_64 snd_seq_= device lrw snd_timer gf128mul glue_helper snd mei_me ablk_helper cryptd mei= shpchp soundcore serio_raw lpc_ich mac_hid parport_pc ppdev lp parport aut= ofs4 hid_generic usbhid hid i2c_algo_bit syscopyarea sysfillrect sysimgblt = fb_sys_fops psmouse r8169 ahci libahci mii video [last unloaded: drm] [ 226.580112] CPU: 0 PID: 2077 Comm: kms_flip Tainted: G U W 4= =2E4.0-rc8+ #40 [ 226.580114] Hardware name: Dell Inc. Inspiron 3847/088DT1 , BIOS = A06 01/15/2015 [ 226.580116] 0000000000000000 00000000291e9ecc ffff880207e27a80 fffffff= f813c5104 [ 226.580119] ffff880207e27ac8 ffff880207e27ab8 ffffffff8107d5d2 ffff880= 213080000 [ 226.580122] 000000000006f400 ffff8800d6fe6000 ffff880207d0b000 ffff880= 213080000 [ 226.580125] Call Trace: [ 226.580133] [] dump_stack+0x44/0x60 [ 226.580138] [] warn_slowpath_common+0x82/0xc0 [ 226.580140] [] warn_slowpath_fmt+0x5c/0x80 [ 226.580162] [] gen6_read32+0x1ca/0x1e0 [i915] [ 226.580184] [] haswell_get_pipe_config+0x83/0x710 [i= 915] [ 226.580202] [] ? drm_property_unreference_blob+0x8e/= 0xc0 [drm] [ 226.580226] [] intel_atomic_commit+0xcb4/0x17f0 [i91= 5] [ 226.580243] [] ? drm_atomic_check_only+0x196/0x5b0 [= drm] [ 226.580257] [] drm_atomic_commit+0x37/0x60 [drm] [ 226.580265] [] drm_atomic_helper_set_config+0x76/0xb= 0 [drm_kms_helper] [ 226.580280] [] ? drm_modeset_lock_all_ctx+0x9a/0xb0 = [drm] [ 226.580292] [] drm_mode_set_config_internal+0x62/0x1= 00 [drm] [ 226.580305] [] drm_mode_setcrtc+0x3e0/0x500 [drm] [ 226.580314] [] drm_ioctl+0x152/0x540 [drm] [ 226.580319] [] ? free_pages+0x13/0x20 [ 226.580330] [] ? drm_mode_setplane+0x1b0/0x1b0 [drm] [ 226.580348] [] ? ieee80211_channel_switch+0x342/0x9d= 0 [mac80211] [ 226.580353] [] do_vfs_ioctl+0x298/0x480 [ 226.580358] [] ? do_munmap+0x349/0x480 [ 226.580362] [] SyS_ioctl+0x79/0x90 [ 226.580366] [] entry_SYSCALL_64_fastpath+0x16/0x75 [ 226.580368] ---[ end trace 964f3949c8ea57e4 ]--- $ tests/kms_pipe_crc_basic --run-subtest suspend-read-crc-pipe-A [ 392.470207] Suspending console(s) (use no_console_suspend to debug) [ 392.470494] sd 0:0:0:0: [sda] Synchronizing SCSI cache [ 392.472230] sd 0:0:0:0: [sda] Stopping disk [ 393.248866] cache: parent cpu1 should not be sleeping [ 393.268891] cache: parent cpu2 should not be sleeping [ 393.284919] cache: parent cpu3 should not be sleeping [ 393.373952] sd 0:0:0:0: [sda] Starting disk [ 396.273511] pciehp 0000:00:1c.0:pcie04: link training error: status 0x1= 001 [ 396.273513] pciehp 0000:00:1c.0:pcie04: Failed to check link status [ 396.504341] ------------[ cut here ]------------ [ 396.504363] WARNING: CPU: 0 PID: 2719 at drivers/gpu/drm/i915/intel_drv= =2Eh:1457 gen6_read32+0x1ca/0x1e0 [i915]() [ 396.504364] RPM wakelock ref not held during HW access [ 396.504365] Modules linked in: [ 396.504366] snd_hda_intel i915 drm_kms_helper drm msr bnep binfmt_misc= arc4 ath9k ath9k_common ath9k_hw ath mac80211 snd_hda_codec_hdmi snd_hda_c= odec_realtek snd_hda_codec_generic snd_hda_codec intel_rapl iosf_mbi x86_pk= g_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_core joydev kvm = snd_hwdep input_leds dcdbas dell_smm_hwmon snd_pcm snd_seq_midi cfg80211 sn= d_seq_midi_event snd_rawmidi irqbypass snd_seq ath3k btusb btrtl btbcm btin= tel crct10dif_pclmul crc32_pclmul bluetooth aesni_intel aes_x86_64 snd_seq_= device lrw snd_timer gf128mul glue_helper snd mei_me ablk_helper cryptd mei= shpchp soundcore serio_raw lpc_ich mac_hid parport_pc ppdev lp parport aut= ofs4 hid_generic usbhid hid i2c_algo_bit syscopyarea sysfillrect sysimgblt = fb_sys_fops psmouse r8169 ahci libahci mii video [last unloaded: drm] [ 396.504397] CPU: 0 PID: 2719 Comm: kms_pipe_crc_ba Tainted: G U W = 4.4.0-rc8+ #40 [ 396.504398] Hardware name: Dell Inc. Inspiron 3847/088DT1 , BIOS = A06 01/15/2015 [ 396.504399] 0000000000000000 0000000013c77361 ffff8800d4bb3a80 fffffff= f813c5104 [ 396.504401] ffff8800d4bb3ac8 ffff8800d4bb3ab8 ffffffff8107d5d2 ffff880= 1f5ba0000 [ 396.504402] 000000000006f400 ffff8800d6fe4800 ffff8801f53fe000 ffff880= 1f5ba0000 [ 396.504404] Call Trace: [ 396.504409] [] dump_stack+0x44/0x60 [ 396.504411] [] warn_slowpath_common+0x82/0xc0 [ 396.504412] [] warn_slowpath_fmt+0x5c/0x80 [ 396.504423] [] gen6_read32+0x1ca/0x1e0 [i915] [ 396.504434] [] haswell_get_pipe_config+0x83/0x710 [i= 915] [ 396.504443] [] ? drm_property_unreference_blob+0x8e/= 0xc0 [drm] [ 396.504454] [] intel_atomic_commit+0xcb4/0x17f0 [i91= 5] [ 396.504463] [] ? drm_atomic_check_only+0x196/0x5b0 [= drm] [ 396.504470] [] drm_atomic_commit+0x37/0x60 [drm] [ 396.504475] [] drm_atomic_helper_set_config+0x76/0xb= 0 [drm_kms_helper] [ 396.504482] [] ? drm_modeset_lock_all_ctx+0x9a/0xb0 = [drm] [ 396.504488] [] drm_mode_set_config_internal+0x62/0x1= 00 [drm] [ 396.504495] [] drm_mode_setcrtc+0x3e0/0x500 [drm] [ 396.504499] [] drm_ioctl+0x152/0x540 [drm] [ 396.504504] [] ? drm_mode_setplane+0x1b0/0x1b0 [drm] [ 396.504507] [] ? mntput+0x24/0x40 [ 396.504509] [] do_vfs_ioctl+0x298/0x480 [ 396.504510] [] ? ____fput+0xe/0x10 [ 396.504512] [] ? task_work_run+0x78/0x90 [ 396.504514] [] SyS_ioctl+0x79/0x90 [ 396.504516] [] entry_SYSCALL_64_fastpath+0x16/0x75 [ 396.504517] ---[ end trace 964f3949c8ea57e5 ]--- Running a test from igt when the monitor resumes from suspend/standby -- this can be easily trigger by using a consoleblank value much smaller= =20 than the default (30 minutes) and using something like: $ tests/pm_rpm --run-subtest basic-rte [ 240.707717] WARNING: CPU: 0 PID: 4 at drivers/gpu/drm/i915/intel_drv.h:= 1457 gen6_read32+0x1ca/0x1e0 [i915]() [ 240.707718] RPM wakelock ref not held during HW access [ 240.707740] Modules linked in: msr snd_hda_intel i915 drm_kms_helper drm bnep binfmt_misc arc4 ath9k ath9k_common ath9k_hw ath mac80211 snd_hda_codec_realtek snd_hda_codec_hdmi snd_hda_codec_generic intel_rapl snd_hda_codec iosf_mbi x86_pkg_temp_thermal intel_powerclamp coretemp kvm_= intel snd_hda_core snd_hwdep snd_pcm kvm ath3k snd_seq_midi btusb snd_seq_midi_e= vent btrtl snd_rawmidi btbcm cfg80211 snd_seq btintel bluetooth irqbypass snd_seq_device snd_timer crct10dif_pclmul dcdbas crc32_pclmul dell_smm_hwm= on joydev snd aesni_intel aes_x86_64 input_leds lrw gf128mul glue_helper mei_= me ablk_helper cryptd mei serio_raw shpchp soundcore lpc_ich mac_hid parport_= pc ppdev lp parport autofs4 hid_generic usbhid hid i2c_algo_bit syscopyarea sysfillrect sysimgblt fb_sys_fops psmouse ahci r8169 libahci mii [ 240.707740] video [last unloaded: drm] [ 240.707742] CPU: 0 PID: 4 Comm: kworker/0:0 Tainted: G W 4= =2E4.0-rc8+ #40 [ 240.707743] Hardware name: Dell Inc. Inspiron 3847/088DT1 , BIOS = A06 01/15/2015 [ 240.707747] Workqueue: events console_callback [ 240.707748] 0000000000000000 000000001b5b9d8a ffff88021621f988 fffffff= f813c5104 [ 240.707749] ffff88021621f9d0 ffff88021621f9c0 ffffffff8107d5d2 ffff880= 0d0810000 [ 240.707750] 000000000006f400 ffff8800c02af800 ffff8801f689e000 ffff880= 0d0810000 [ 240.707750] Call Trace: [ 240.707754] [] dump_stack+0x44/0x60 [ 240.707757] [] warn_slowpath_common+0x82/0xc0 [ 240.707758] [] warn_slowpath_fmt+0x5c/0x80 [ 240.707770] [] gen6_read32+0x1ca/0x1e0 [i915] [ 240.707780] [] haswell_get_pipe_config+0x83/0x710 [i= 915] [ 240.707791] [] intel_atomic_commit+0xcb4/0x17f0 [i91= 5] [ 240.707801] [] ? drm_atomic_check_only+0x196/0x5b0 [= drm] [ 240.707808] [] drm_atomic_commit+0x37/0x60 [drm] [ 240.707812] [] drm_atomic_helper_connector_dpms+0xed= /0x1a0 [drm_kms_helper] [ 240.707815] [] drm_fb_helper_dpms.isra.8+0x97/0xe0 [= drm_kms_helper] [ 240.707818] [] drm_fb_helper_blank+0x3d/0x90 [drm_km= s_helper] [ 240.707829] [] intel_fbdev_blank+0x1a/0x60 [i915] [ 240.707831] [] fb_blank+0x66/0xc0 [ 240.707832] [] fbcon_blank+0x292/0x350 [ 240.707834] [] ? set_next_entity+0xa4/0x870 [ 240.707836] [] ? internal_add_timer+0x71/0x80 [ 240.707837] [] ? lock_timer_base.isra.22+0x54/0x70 [ 240.707838] [] ? try_to_del_timer_sync+0x5e/0x90 [ 240.707839] [] do_blank_screen+0x1c0/0x260 [ 240.707840] [] console_callback+0x77/0x180 [ 240.707842] [] ? __schedule+0x386/0x9c0 [ 240.707844] [] process_one_work+0x1aa/0x440 [ 240.707845] [] worker_thread+0x4b/0x4c0 [ 240.707845] [] ? process_one_work+0x440/0x440 [ 240.707847] [] kthread+0xd8/0xf0 [ 240.707848] [] ? kthread_create_on_node+0x1a0/0x1a0 [ 240.707849] [] ret_from_fork+0x3f/0x70 [ 240.707851] [] ? kthread_create_on_node+0x1a0/0x1a0 Adding intel_runtime_pm_get(), _put() around I915_READ() seem to solve this issue. Most likely the following must be addressed as well: - i9xx_get_pipe_config() - ironlake_get_pipe_config() CC: Added Imre/Daniel as well. On Thu, Dec 31, 2015 at 02:45:49PM +0200, Gabriel Feceoru wrote: > This gets rid of errors like: >=20 > [ 906.286213] ------------[ cut here ]------------ > [ 906.286233] WARNING: CPU: 0 PID: 12252 at drivers/gpu/drm/i915/intel_d= rv.h:1457 gen6_read32+0x1ca/0x1e0 [i915]() > [ 906.286234] RPM wakelock ref not held during HW access > [ 906.286235] Modules linked in: > [ 906.286236] snd_hda_intel i915 drm_kms_helper drm msr snd_hda_codec_h= dmi snd_hda_codec_realtek snd_hda_codec_generic snd_hda_codec snd_hwdep x86= _pkg_temp_thermal snd_hda_core i2c_algo_bit ehci_pci syscopyarea sysfillrec= t sysimgblt fb_sys_fops ehci_hcd r8169 xhci_pci mii xhci_hcd video [last un= loaded: drm] > [ 906.286246] CPU: 0 PID: 12252 Comm: kms_pipe_crc_ba Tainted: G U = W 4.4.0-rc6+ #45 > [ 906.286247] Hardware name: Dell Inc. Inspiron 3847/088DT1 , BIOS= A06 01/15/2015 > [ 906.286248] ffffffffc022c098 ffff880210dbbae0 ffffffff813e0e4f ffff88= 0210dbbb28 > [ 906.286250] ffff880210dbbb18 ffffffff8105f5f2 ffff8801fff40000 000000= 0000046040 > [ 906.286251] ffff8801fff49170 ffff8801fff49170 ffff8801fff40000 ffff88= 0210dbbb78 > [ 906.286253] Call Trace: > [ 906.286256] [] dump_stack+0x44/0x55 > [ 906.286259] [] warn_slowpath_common+0x82/0xc0 > [ 906.286261] [] warn_slowpath_fmt+0x4c/0x50 > [ 906.286270] [] ? drm_property_free_blob+0x8c/0xb0 [= drm] > [ 906.286280] [] gen6_read32+0x1ca/0x1e0 [i915] > [ 906.286283] [] ? mutex_lock+0x12/0x30 > [ 906.286294] [] hsw_ddi_wrpll_get_hw_state+0x40/0x50= [i915] > [ 906.286304] [] intel_atomic_commit+0xd41/0x1740 [i9= 15] > [ 906.286312] [] drm_atomic_commit+0x37/0x60 [drm] > [ 906.286316] [] drm_atomic_helper_set_config+0x76/0x= b0 [drm_kms_helper] > [ 906.286323] [] ? drm_modeset_lock_all_ctx+0x9a/0xb0= [drm] > [ 906.286329] [] drm_mode_set_config_internal+0x62/0x= 100 [drm] > [ 906.286335] [] drm_mode_setcrtc+0x3cd/0x4e0 [drm] > [ 906.286339] [] drm_ioctl+0x152/0x540 [drm] > [ 906.286341] [] ? __wake_up+0x44/0x50 > [ 906.286346] [] ? drm_mode_setplane+0x1b0/0x1b0 [drm] > [ 906.286348] [] ? mntput+0x24/0x40 > [ 906.286350] [] ? __fput+0x172/0x1e0 > [ 906.286352] [] do_vfs_ioctl+0x288/0x460 > [ 906.286353] [] ? ____fput+0xe/0x10 >=20 > Signed-off-by: Gabriel Feceoru > --- > drivers/gpu/drm/i915/intel_ddi.c | 48 ++++++++++++++++++++++++++++++----= ------ > 1 file changed, 36 insertions(+), 12 deletions(-) >=20 > diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/inte= l_ddi.c > index e6408e5..4ba9f2c 100644 > --- a/drivers/gpu/drm/i915/intel_ddi.c > +++ b/drivers/gpu/drm/i915/intel_ddi.c > @@ -2014,15 +2014,18 @@ bool intel_ddi_get_hw_state(struct intel_encoder = *encoder, > enum intel_display_power_domain power_domain; > u32 tmp; > int i; > + bool ret =3D false; > =20 > power_domain =3D intel_display_port_power_domain(encoder); > if (!intel_display_power_is_enabled(dev_priv, power_domain)) > - return false; > + return ret; > + > + intel_runtime_pm_get(dev_priv); > =20 > tmp =3D I915_READ(DDI_BUF_CTL(port)); > =20 > if (!(tmp & DDI_BUF_CTL_ENABLE)) > - return false; > + goto out; > =20 > if (port =3D=3D PORT_A) { > tmp =3D I915_READ(TRANS_DDI_FUNC_CTL(TRANSCODER_EDP)); > @@ -2040,7 +2043,8 @@ bool intel_ddi_get_hw_state(struct intel_encoder *e= ncoder, > break; > } > =20 > - return true; > + ret =3D true; > + goto out; > } else { > for (i =3D TRANSCODER_A; i <=3D TRANSCODER_C; i++) { > tmp =3D I915_READ(TRANS_DDI_FUNC_CTL(i)); > @@ -2048,17 +2052,19 @@ bool intel_ddi_get_hw_state(struct intel_encoder = *encoder, > if ((tmp & TRANS_DDI_PORT_MASK) > =3D=3D TRANS_DDI_SELECT_PORT(port)) { > if ((tmp & TRANS_DDI_MODE_SELECT_MASK) =3D=3D TRANS_DDI_MODE_SELECT_= DP_MST) > - return false; > + goto out; > =20 > *pipe =3D i; > - return true; > + ret =3D true; > + goto out; > } > } > } > =20 > DRM_DEBUG_KMS("No pipe for ddi port %c found\n", port_name(port)); > - > - return false; > +out: > + intel_runtime_pm_put(dev_priv); > + return ret; > } > =20 > void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc) > @@ -2510,7 +2516,10 @@ static bool hsw_ddi_wrpll_get_hw_state(struct drm_= i915_private *dev_priv, > if (!intel_display_power_is_enabled(dev_priv, POWER_DOMAIN_PLLS)) > return false; > =20 > + intel_runtime_pm_get(dev_priv); > val =3D I915_READ(WRPLL_CTL(pll->id)); > + intel_runtime_pm_put(dev_priv); > + > hw_state->wrpll =3D val; > =20 > return val & WRPLL_PLL_ENABLE; > @@ -2525,7 +2534,10 @@ static bool hsw_ddi_spll_get_hw_state(struct drm_i= 915_private *dev_priv, > if (!intel_display_power_is_enabled(dev_priv, POWER_DOMAIN_PLLS)) > return false; > =20 > + intel_runtime_pm_get(dev_priv); > val =3D I915_READ(SPLL_CTL); > + intel_runtime_pm_put(dev_priv); > + > hw_state->spll =3D val; > =20 > return val & SPLL_PLL_ENABLE; > @@ -2644,16 +2656,19 @@ static bool skl_ddi_pll_get_hw_state(struct drm_i= 915_private *dev_priv, > uint32_t val; > unsigned int dpll; > const struct skl_dpll_regs *regs =3D skl_dpll_regs; > + bool ret =3D false; > =20 > if (!intel_display_power_is_enabled(dev_priv, POWER_DOMAIN_PLLS)) > - return false; > + return ret; > =20 > /* DPLL0 is not part of the shared DPLLs, so pll->id is 0 for DPLL1 */ > dpll =3D pll->id + 1; > =20 > + intel_runtime_pm_get(dev_priv); > + > val =3D I915_READ(regs[pll->id].ctl); > if (!(val & LCPLL_PLL_ENABLE)) > - return false; > + goto out; > =20 > val =3D I915_READ(DPLL_CTRL1); > hw_state->ctrl1 =3D (val >> (dpll * 6)) & 0x3f; > @@ -2664,6 +2679,9 @@ static bool skl_ddi_pll_get_hw_state(struct drm_i91= 5_private *dev_priv, > hw_state->cfgcr2 =3D I915_READ(regs[pll->id].cfgcr2); > } > =20 > + ret =3D true; > +out: > + intel_runtime_pm_put(dev_priv); > return true; > } > =20 > @@ -2931,13 +2949,16 @@ static bool bxt_ddi_pll_get_hw_state(struct drm_i= 915_private *dev_priv, > { > enum port port =3D (enum port)pll->id; /* 1:1 port->PLL mapping */ > uint32_t val; > + bool ret =3D false; > =20 > if (!intel_display_power_is_enabled(dev_priv, POWER_DOMAIN_PLLS)) > - return false; > + return ret; > + > + intel_runtime_pm_get(dev_priv); > =20 > val =3D I915_READ(BXT_PORT_PLL_ENABLE(port)); > if (!(val & PORT_PLL_ENABLE)) > - return false; > + goto out; > =20 > hw_state->ebb0 =3D I915_READ(BXT_PORT_PLL_EBB_0(port)); > hw_state->ebb0 &=3D PORT_PLL_P1_MASK | PORT_PLL_P2_MASK; > @@ -2984,7 +3005,10 @@ static bool bxt_ddi_pll_get_hw_state(struct drm_i9= 15_private *dev_priv, > I915_READ(BXT_PORT_PCS_DW12_LN23(port))); > hw_state->pcsdw12 &=3D LANE_STAGGER_MASK | LANESTAGGER_STRAP_OVRD; > =20 > - return true; > + ret =3D true; > +out: > + intel_runtime_pm_put(dev_priv); > + return ret; > } > =20 > static void bxt_shared_dplls_init(struct drm_i915_private *dev_priv) > --=20 > 2.5.0 >=20 > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx --a8Wt8u1KmwUX3Y2C Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJWimu/AAoJELmLWIAQzyE+Xh8H/AvaM4kl2Z7GMgmANfWVMhXY rftOtlJTBVaZznjhZ5Ku8LpaEk9YNaoDCqJN0QEckbYXFmPX9TywB03nHMvodVd1 GRulR8LmaGEY9E4KVkOsG6RKIdjaHFVnao1LXAzjAPLYQlZAQ/PQGfzSUQfOc6ND qYTs4H+cmaTtUuwx2Qef8iMbMnY0L7pwPPoHEHdE/8juG49UGWrItSyyV0BHXEhH ayN8v0GXap/FUi9hXo/kk9RHn0bPixahjVBykesiDfc257+xZo4N3iq0xnkXlPCt 21ywMlRkNqBGstlA/tDp9SVkLt3E/YBrTmT2d7PmxIgMnT+ObHQIw+HlugHP924= =37qO -----END PGP SIGNATURE----- --a8Wt8u1KmwUX3Y2C-- --===============0842612719== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK --===============0842612719==--