From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C1A3BECE58C for ; Fri, 11 Oct 2019 06:56:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9002621D6C for ; Fri, 11 Oct 2019 06:56:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727310AbfJKG43 (ORCPT ); Fri, 11 Oct 2019 02:56:29 -0400 Received: from mga02.intel.com ([134.134.136.20]:55130 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726481AbfJKG43 (ORCPT ); Fri, 11 Oct 2019 02:56:29 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Oct 2019 23:56:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,283,1566889200"; d="scan'208";a="194245955" Received: from allen-box.sh.intel.com (HELO [10.239.159.136]) ([10.239.159.136]) by fmsmga007.fm.intel.com with ESMTP; 10 Oct 2019 23:56:25 -0700 Cc: baolu.lu@linux.intel.com, David Woodhouse , Joerg Roedel , iommu@lists.linux-foundation.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, =?UTF-8?Q?Micha=c5=82_Wajdeczko?= Subject: Re: [RFC PATCH] iommu/vt-d: Fix IOMMU field not populated on device hot re-plug To: Janusz Krzysztofik References: <20190822142922.31526-1-janusz.krzysztofik@linux.intel.com> <1769080.0GM3UzqXcv@jkrzyszt-desk.ger.corp.intel.com> <52fbfac9-c879-4b45-dd74-fafe62c2432b@linux.intel.com> <2674326.ZPvzKFr69O@jkrzyszt-desk.ger.corp.intel.com> From: Lu Baolu Message-ID: <19f435fc-7318-4abd-5c73-78ce253d5f07@linux.intel.com> Date: Fri, 11 Oct 2019 14:54:09 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <2674326.ZPvzKFr69O@jkrzyszt-desk.ger.corp.intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Janusz, On 9/3/19 3:41 PM, Janusz Krzysztofik wrote: > Hi Baolu, > > On Tuesday, September 3, 2019 3:29:40 AM CEST Lu Baolu wrote: >> Hi Janusz, >> >> On 9/2/19 4:37 PM, Janusz Krzysztofik wrote: >>>> I am not saying that keeping data is not acceptable. I just want to >>>> check whether there are any other solutions. >>> Then reverting 458b7c8e0dde and applying this patch still resolves the > issue >>> for me. No errors appear when mappings are unmapped on device close after > the >>> device has been removed, and domain info preserved on device removal is >>> successfully reused on device re-plug. >> This patch doesn't look good to me although I agree that keeping data is >> acceptable. It updates dev->archdata.iommu, but leaves the hardware >> context/pasid table unchanged. This might cause problems somewhere. >> >>> Is there anything else I can do to help? >> Can you please tell me how to reproduce the problem? > The most simple way to reproduce the issue, assuming there are no non-Intel > graphics adapters installed, is to run the following shell commands: > > #!/bin/sh > # load i915 module > modprobe i915 > # open an i915 device and keep it open in background > cat /dev/dri/card0 >/dev/null & > sleep 2 > # simulate device unplug > echo 1 >/sys/class/drm/card0/device/remove > # make the background process close the device on exit > kill $! > I tried to reproduce the issue with above instructions. I got below kernel messages after above operation. Is it the same as what you've seen? I can't find anything explicitly related to iommu except an IOMMU fault generated after device got removed and the DMA translation structures got torn down. Can you please help me to understand how IOMMU driver triggers the issue? [ 182.217672] ------------[ cut here ]------------ [ 182.217679] WARNING: CPU: 1 PID: 1285 at drivers/gpu/drm/drm_mode_config.c:495 drm_mode_config_cleanup+0x2cb/0x2e0 [ 182.217680] Modules linked in: nls_iso8859_1 snd_soc_skl snd_soc_sst_ipc snd_soc_sst_dsp snd_hda_ext_core snd_soc_acpi_intel_match snd_soc_acpi snd_soc_core intel_rapl_msr snd_hda_codec_hdmi snd_hda_codec_realtek snd_compress snd_hda_codec_generic ledtrig_audio ac97_bus snd_pcm_dmaengine snd_hda_intel snd_intel_nhlt snd_hda_codec snd_hda_core snd_hwdep snd_pcm intel_rapl_common x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm snd_seq_midi irqbypass snd_seq_midi_event snd_rawmidi crct10dif_pclmul crc32_pclmul ghash_clmulni_intel iwlmvm snd_seq mac80211 libarc4 aesni_intel snd_seq_device snd_timer crypto_simd ipu3_cio2 cryptd glue_helper iwlwifi v4l2_fwnode intel_cstate videobuf2_dma_sg videobuf2_memops intel_rapl_perf asix videobuf2_v4l2 videobuf2_common usbnet mii cfg80211 input_leds serio_raw intel_wmi_thunderbolt snd mei_me videodev soundcore intel_xhci_usb_role_switch mei 8250_dw mc roles intel_pch_thermal hid_sensor_magn_3d hid_sensor_accel_3d hid_sensor_press [ 182.217709] hid_sensor_incl_3d hid_sensor_als hid_sensor_rotation hid_sensor_gyro_3d hid_sensor_trigger industrialio_triggered_buffer kfifo_buf hid_sensor_iio_common industrialio intel_vbtn mac_hid intel_hid acpi_pad sparse_keymap sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables hid_sensor_custom hid_sensor_hub intel_ishtp_hid hid_generic dwc3 ulpi udc_core i2c_designware_platform i2c_designware_core e1000e psmouse i2c_i801 tg3 usbhid dwc3_pci hid intel_ish_ipc intel_lpss_pci intel_ishtp intel_lpss wmi pinctrl_sunrisepoint pinctrl_intel [ 182.217727] CPU: 1 PID: 1285 Comm: bash Not tainted 5.4.0-rc2+ #2704 [ 182.217728] Hardware name: Intel Corporation Skylake Client platform/Skylake Y LPDDR3 RVP3, BIOS SKLSE2R1.R00.B105.B00.1512051901 12/05/2015 [ 182.217731] RIP: 0010:drm_mode_config_cleanup+0x2cb/0x2e0 [ 182.217732] Code: eb 0c 48 8b 70 48 4c 89 e7 e8 31 f4 ff ff 48 8d 7d a0 e8 d8 95 ff ff 48 85 c0 75 e6 48 8d 7d a0 e8 1a 87 ff ff e9 ef fd ff ff <0f> 0b e9 ed fe ff ff 0f 0b eb 98 e8 05 ec 98 ff 0f 1f 44 00 00 0f [ 182.217733] RSP: 0018:ffffa1c481d37c78 EFLAGS: 00010216 [ 182.217735] RAX: ffff95c7da326e08 RBX: ffff95c7dcf60000 RCX: 000000008010000e [ 182.217735] RDX: ffff95c7dcf603b8 RSI: 000000008010000e RDI: ffff95c7dcf60390 [ 182.217736] RBP: ffffa1c481d37cd8 R08: 0000000000000000 R09: ffffffff9e035e00 [ 182.217737] R10: ffffa1c481d37be0 R11: 0000000000000001 R12: ffff95c7dcf60250 [ 182.217737] R13: ffff95c7dcf603b8 R14: ffffa1c481d37ee8 R15: fffffffffffffff2 [ 182.217739] FS: 00007f804af7f740(0000) GS:ffff95c7e7a80000(0000) knlGS:0000000000000000 [ 182.217739] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 182.217740] CR2: 00007ffebc530cec CR3: 0000000137e0e003 CR4: 00000000003606e0 [ 182.217741] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 182.217742] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 182.217742] Call Trace: [ 182.217748] ? _cond_resched+0x19/0x40 [ 182.217752] intel_modeset_driver_remove+0xd1/0x150 [ 182.217754] i915_driver_remove+0xb8/0x120 [ 182.217756] i915_pci_remove+0x23/0x40 [ 182.217758] pci_device_remove+0x3e/0xc0 [ 182.217761] device_release_driver_internal+0xec/0x1b0 [ 182.217762] device_release_driver+0x12/0x20 [ 182.217764] pci_stop_bus_device+0x68/0x90 [ 182.217766] pci_stop_and_remove_bus_device_locked+0x1a/0x30 [ 182.217767] remove_store+0x7c/0x90 [ 182.217770] dev_attr_store+0x17/0x30 [ 182.217772] sysfs_kf_write+0x3c/0x50 [ 182.217773] kernfs_fop_write+0x125/0x1a0 [ 182.217776] __vfs_write+0x1b/0x40 [ 182.217778] vfs_write+0xb1/0x1a0 [ 182.217779] ksys_write+0xa7/0xe0 [ 182.217780] __x64_sys_write+0x1a/0x20 [ 182.217783] do_syscall_64+0x57/0x1c0 [ 182.217785] entry_SYSCALL_64_after_hwframe+0x44/0xa9 [ 182.217787] RIP: 0033:0x7f804b08f024 [ 182.217788] Code: 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b3 0f 1f 80 00 00 00 00 48 8d 05 b9 d3 0d 00 8b 00 85 c0 75 13 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 41 54 49 89 d4 55 48 89 f5 53 [ 182.217789] RSP: 002b:00007ffdbe4bc0b8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001 [ 182.217790] RAX: ffffffffffffffda RBX: 0000000000000002 RCX: 00007f804b08f024 [ 182.217791] RDX: 0000000000000002 RSI: 000055bf20640470 RDI: 0000000000000001 [ 182.217792] RBP: 000055bf20640470 R08: 000000000000000a R09: 0000000000008000 [ 182.217792] R10: 000000000000000a R11: 0000000000000246 R12: 00007f804b167760 [ 182.217793] R13: 0000000000000002 R14: 00007f804b168560 R15: 00007f804b167960 [ 182.217795] ---[ end trace 292e6caf66ddf0df ]--- [ 182.217797] [leaked fb] framebuffer[118]: [ 182.217798] [leaked fb] allocated by = gnome-shell [ 182.217799] [leaked fb] refcount=1 [ 182.217801] [leaked fb] format=XR24 little-endian (0x34325258) [ 182.217802] [leaked fb] modifier=0x100000000000001 [ 182.217803] [leaked fb] size=3200x1800 [ 182.217803] [leaked fb] layers: [ 182.217805] [leaked fb] size[0]=3200x1800 [ 182.217805] [leaked fb] pitch[0]=12800 [ 182.217806] [leaked fb] offset[0]=0 [ 182.217807] [leaked fb] obj[0]: [ 182.217808] [leaked fb] name=0 [ 182.217809] [leaked fb] refcount=3 [ 182.217810] [leaked fb] start=00000000 [ 182.217810] [leaked fb] size=25165824 [ 182.217811] [leaked fb] imported=no [ 182.241857] pci 0000:00:02.0: Removing from iommu group 1 [ 182.241858] DMAR: DRHD: handling fault status reg 2 [ 182.241864] DMAR: [DMA Write] Request device [00:02.0] PASID ffffffff fault addr 0 [fault reason 02] Present bit in context entry is clear [ 189.181789] general protection fault: 0000 [#1] SMP PTI [ 189.181795] CPU: 0 PID: 836 Comm: gdbus Tainted: G W 5.4.0-rc2+ #2704 [ 189.181797] Hardware name: Intel Corporation Skylake Client platform/Skylake Y LPDDR3 RVP3, BIOS SKLSE2R1.R00.B105.B00.1512051901 12/05/2015 [ 189.181804] RIP: 0010:drm_mode_object_unregister+0xe/0x70 [ 189.181806] Code: 54 00 4c 89 e7 e8 d2 d8 56 00 5b 41 5c 41 5d 5d c3 90 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 55 48 89 e5 41 55 41 54 53 <48> 8b 47 20 48 89 fb 49 89 f5 48 83 38 00 74 3a 4c 8d a3 d8 01 00 [ 189.181809] RSP: 0018:ffffa1c481e73b60 EFLAGS: 00010246 [ 189.181811] RAX: ffffffff9e502a90 RBX: ffff95c7da326e28 RCX: 0000000000000001 [ 189.181813] RDX: 0000000000000000 RSI: ffff95c7da326e18 RDI: f1ca50a8ff50515a [ 189.181815] RBP: ffffa1c481e73b78 R08: 0000000000000001 R09: 0000000000000000 [ 189.181817] R10: 0000000000000008 R11: ffff95c7dcf53770 R12: ffff95c7da326e00 [ 189.181818] R13: ffffa1c481e73bf0 R14: ffff95c7e3cb7ac8 R15: ffff95c7e6cb23c0 [ 189.181821] FS: 00007f688ccf1700(0000) GS:ffff95c7e7a00000(0000) knlGS:0000000000000000 [ 189.181823] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 189.181825] CR2: 000056427674ff10 CR3: 000000015e376004 CR4: 00000000003606f0 [ 189.181826] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 189.181828] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 189.181829] Call Trace: [ 189.181834] drm_framebuffer_free+0x21/0x40 [ 189.181837] drm_mode_object_put.part.2+0x3c/0x40 [ 189.181839] drm_mode_object_put+0x15/0x20 [ 189.181841] drm_fb_release+0xbc/0x130 [ 189.181845] drm_file_free.part.5+0x2ac/0x2e0 [ 189.181847] drm_close_helper.isra.6+0x60/0x70 [ 189.181850] drm_release+0x50/0x80 [ 189.181853] __fput+0xc6/0x260 [ 189.181856] ____fput+0xe/0x10 [ 189.181859] task_work_run+0x9d/0xc0 [ 189.181862] do_exit+0x2ed/0xbb0 [ 189.181866] ? poll_select_finish+0x210/0x210 [ 189.181869] do_group_exit+0x43/0xa0 [ 189.181872] get_signal+0x144/0x840 [ 189.181876] ? eventfd_read+0xe9/0x260 [ 189.181879] do_signal+0x34/0x6d0 [ 189.181884] exit_to_usermode_loop+0x8e/0x100 [ 189.181887] do_syscall_64+0x186/0x1c0 [ 189.181890] entry_SYSCALL_64_after_hwframe+0x44/0xa9 [ 189.181895] RIP: 0033:0x7f6895119729 [ 189.181899] Code: Bad RIP value. [ 189.181901] RSP: 002b:00007f688ccf08a0 EFLAGS: 00000293 ORIG_RAX: 0000000000000007 [ 189.181903] RAX: fffffffffffffdfc RBX: 00007f687c023170 RCX: 00007f6895119729 [ 189.181905] RDX: 00000000ffffffff RSI: 0000000000000005 RDI: 00007f687c023170 [ 189.181906] RBP: 0000000000000005 R08: 0000000000000000 R09: 0000000000000001 [ 189.181908] R10: 000055cc6ed5dd80 R11: 0000000000000293 R12: 00000000ffffffff [ 189.181909] R13: 00007f6895d8b4c0 R14: 00000000ffffffff R15: 0000000000000005 [ 189.181911] Modules linked in: nls_iso8859_1 snd_soc_skl snd_soc_sst_ipc snd_soc_sst_dsp snd_hda_ext_core snd_soc_acpi_intel_match snd_soc_acpi snd_soc_core intel_rapl_msr snd_hda_codec_hdmi snd_hda_codec_realtek snd_compress snd_hda_codec_generic ledtrig_audio ac97_bus snd_pcm_dmaengine snd_hda_intel snd_intel_nhlt snd_hda_codec snd_hda_core snd_hwdep snd_pcm intel_rapl_common x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm snd_seq_midi irqbypass snd_seq_midi_event snd_rawmidi crct10dif_pclmul crc32_pclmul ghash_clmulni_intel iwlmvm snd_seq mac80211 libarc4 aesni_intel snd_seq_device snd_timer crypto_simd ipu3_cio2 cryptd glue_helper iwlwifi v4l2_fwnode intel_cstate videobuf2_dma_sg videobuf2_memops intel_rapl_perf asix videobuf2_v4l2 videobuf2_common usbnet mii cfg80211 input_leds serio_raw intel_wmi_thunderbolt snd mei_me videodev soundcore intel_xhci_usb_role_switch mei 8250_dw mc roles intel_pch_thermal hid_sensor_magn_3d hid_sensor_accel_3d hid_sensor_press [ 189.181950] hid_sensor_incl_3d hid_sensor_als hid_sensor_rotation hid_sensor_gyro_3d hid_sensor_trigger industrialio_triggered_buffer kfifo_buf hid_sensor_iio_common industrialio intel_vbtn mac_hid intel_hid acpi_pad sparse_keymap sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables hid_sensor_custom hid_sensor_hub intel_ishtp_hid hid_generic dwc3 ulpi udc_core i2c_designware_platform i2c_designware_core e1000e psmouse i2c_i801 tg3 usbhid dwc3_pci hid intel_ish_ipc intel_lpss_pci intel_ishtp intel_lpss wmi pinctrl_sunrisepoint pinctrl_intel [ 189.181981] ---[ end trace 292e6caf66ddf0e0 ]--- [ 189.201970] RIP: 0010:drm_mode_object_unregister+0xe/0x70 [ 189.201975] Code: 54 00 4c 89 e7 e8 d2 d8 56 00 5b 41 5c 41 5d 5d c3 90 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 55 48 89 e5 41 55 41 54 53 <48> 8b 47 20 48 89 fb 49 89 f5 48 83 38 00 74 3a 4c 8d a3 d8 01 00 [ 189.201978] RSP: 0018:ffffa1c481e73b60 EFLAGS: 00010246 [ 189.201981] RAX: ffffffff9e502a90 RBX: ffff95c7da326e28 RCX: 0000000000000001 [ 189.201982] RDX: 0000000000000000 RSI: ffff95c7da326e18 RDI: f1ca50a8ff50515a [ 189.201984] RBP: ffffa1c481e73b78 R08: 0000000000000001 R09: 0000000000000000 [ 189.201986] R10: 0000000000000008 R11: ffff95c7dcf53770 R12: ffff95c7da326e00 [ 189.201987] R13: ffffa1c481e73bf0 R14: ffff95c7e3cb7ac8 R15: ffff95c7e6cb23c0 [ 189.201990] FS: 00007f688ccf1700(0000) GS:ffff95c7e7a00000(0000) knlGS:0000000000000000 [ 189.201991] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 189.201993] CR2: 00007f68951196ff CR3: 000000015e376004 CR4: 00000000003606f0 [ 189.201995] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 189.201997] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Best regards, Baolu From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 010DAC47404 for ; Fri, 11 Oct 2019 07:06:01 +0000 (UTC) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C13512084C for ; Fri, 11 Oct 2019 07:06:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C13512084C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=iommu-bounces@lists.linux-foundation.org Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 4137D110A; Fri, 11 Oct 2019 07:05:45 +0000 (UTC) Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 5E99C10EC for ; Fri, 11 Oct 2019 06:56:29 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 362A714D for ; Fri, 11 Oct 2019 06:56:28 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Oct 2019 23:56:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,283,1566889200"; d="scan'208";a="194245955" Received: from allen-box.sh.intel.com (HELO [10.239.159.136]) ([10.239.159.136]) by fmsmga007.fm.intel.com with ESMTP; 10 Oct 2019 23:56:25 -0700 Subject: Re: [RFC PATCH] iommu/vt-d: Fix IOMMU field not populated on device hot re-plug To: Janusz Krzysztofik References: <20190822142922.31526-1-janusz.krzysztofik@linux.intel.com> <1769080.0GM3UzqXcv@jkrzyszt-desk.ger.corp.intel.com> <52fbfac9-c879-4b45-dd74-fafe62c2432b@linux.intel.com> <2674326.ZPvzKFr69O@jkrzyszt-desk.ger.corp.intel.com> From: Lu Baolu Message-ID: <19f435fc-7318-4abd-5c73-78ce253d5f07@linux.intel.com> Date: Fri, 11 Oct 2019 14:54:09 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <2674326.ZPvzKFr69O@jkrzyszt-desk.ger.corp.intel.com> Content-Language: en-US Cc: linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, =?UTF-8?Q?Micha=c5=82_Wajdeczko?= , David Woodhouse , intel-gfx@lists.freedesktop.org X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Sender: iommu-bounces@lists.linux-foundation.org Errors-To: iommu-bounces@lists.linux-foundation.org Hi Janusz, On 9/3/19 3:41 PM, Janusz Krzysztofik wrote: > Hi Baolu, > > On Tuesday, September 3, 2019 3:29:40 AM CEST Lu Baolu wrote: >> Hi Janusz, >> >> On 9/2/19 4:37 PM, Janusz Krzysztofik wrote: >>>> I am not saying that keeping data is not acceptable. I just want to >>>> check whether there are any other solutions. >>> Then reverting 458b7c8e0dde and applying this patch still resolves the > issue >>> for me. No errors appear when mappings are unmapped on device close after > the >>> device has been removed, and domain info preserved on device removal is >>> successfully reused on device re-plug. >> This patch doesn't look good to me although I agree that keeping data is >> acceptable. It updates dev->archdata.iommu, but leaves the hardware >> context/pasid table unchanged. This might cause problems somewhere. >> >>> Is there anything else I can do to help? >> Can you please tell me how to reproduce the problem? > The most simple way to reproduce the issue, assuming there are no non-Intel > graphics adapters installed, is to run the following shell commands: > > #!/bin/sh > # load i915 module > modprobe i915 > # open an i915 device and keep it open in background > cat /dev/dri/card0 >/dev/null & > sleep 2 > # simulate device unplug > echo 1 >/sys/class/drm/card0/device/remove > # make the background process close the device on exit > kill $! > I tried to reproduce the issue with above instructions. I got below kernel messages after above operation. Is it the same as what you've seen? I can't find anything explicitly related to iommu except an IOMMU fault generated after device got removed and the DMA translation structures got torn down. Can you please help me to understand how IOMMU driver triggers the issue? [ 182.217672] ------------[ cut here ]------------ [ 182.217679] WARNING: CPU: 1 PID: 1285 at drivers/gpu/drm/drm_mode_config.c:495 drm_mode_config_cleanup+0x2cb/0x2e0 [ 182.217680] Modules linked in: nls_iso8859_1 snd_soc_skl snd_soc_sst_ipc snd_soc_sst_dsp snd_hda_ext_core snd_soc_acpi_intel_match snd_soc_acpi snd_soc_core intel_rapl_msr snd_hda_codec_hdmi snd_hda_codec_realtek snd_compress snd_hda_codec_generic ledtrig_audio ac97_bus snd_pcm_dmaengine snd_hda_intel snd_intel_nhlt snd_hda_codec snd_hda_core snd_hwdep snd_pcm intel_rapl_common x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm snd_seq_midi irqbypass snd_seq_midi_event snd_rawmidi crct10dif_pclmul crc32_pclmul ghash_clmulni_intel iwlmvm snd_seq mac80211 libarc4 aesni_intel snd_seq_device snd_timer crypto_simd ipu3_cio2 cryptd glue_helper iwlwifi v4l2_fwnode intel_cstate videobuf2_dma_sg videobuf2_memops intel_rapl_perf asix videobuf2_v4l2 videobuf2_common usbnet mii cfg80211 input_leds serio_raw intel_wmi_thunderbolt snd mei_me videodev soundcore intel_xhci_usb_role_switch mei 8250_dw mc roles intel_pch_thermal hid_sensor_magn_3d hid_sensor_accel_3d hid_sensor_press [ 182.217709] hid_sensor_incl_3d hid_sensor_als hid_sensor_rotation hid_sensor_gyro_3d hid_sensor_trigger industrialio_triggered_buffer kfifo_buf hid_sensor_iio_common industrialio intel_vbtn mac_hid intel_hid acpi_pad sparse_keymap sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables hid_sensor_custom hid_sensor_hub intel_ishtp_hid hid_generic dwc3 ulpi udc_core i2c_designware_platform i2c_designware_core e1000e psmouse i2c_i801 tg3 usbhid dwc3_pci hid intel_ish_ipc intel_lpss_pci intel_ishtp intel_lpss wmi pinctrl_sunrisepoint pinctrl_intel [ 182.217727] CPU: 1 PID: 1285 Comm: bash Not tainted 5.4.0-rc2+ #2704 [ 182.217728] Hardware name: Intel Corporation Skylake Client platform/Skylake Y LPDDR3 RVP3, BIOS SKLSE2R1.R00.B105.B00.1512051901 12/05/2015 [ 182.217731] RIP: 0010:drm_mode_config_cleanup+0x2cb/0x2e0 [ 182.217732] Code: eb 0c 48 8b 70 48 4c 89 e7 e8 31 f4 ff ff 48 8d 7d a0 e8 d8 95 ff ff 48 85 c0 75 e6 48 8d 7d a0 e8 1a 87 ff ff e9 ef fd ff ff <0f> 0b e9 ed fe ff ff 0f 0b eb 98 e8 05 ec 98 ff 0f 1f 44 00 00 0f [ 182.217733] RSP: 0018:ffffa1c481d37c78 EFLAGS: 00010216 [ 182.217735] RAX: ffff95c7da326e08 RBX: ffff95c7dcf60000 RCX: 000000008010000e [ 182.217735] RDX: ffff95c7dcf603b8 RSI: 000000008010000e RDI: ffff95c7dcf60390 [ 182.217736] RBP: ffffa1c481d37cd8 R08: 0000000000000000 R09: ffffffff9e035e00 [ 182.217737] R10: ffffa1c481d37be0 R11: 0000000000000001 R12: ffff95c7dcf60250 [ 182.217737] R13: ffff95c7dcf603b8 R14: ffffa1c481d37ee8 R15: fffffffffffffff2 [ 182.217739] FS: 00007f804af7f740(0000) GS:ffff95c7e7a80000(0000) knlGS:0000000000000000 [ 182.217739] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 182.217740] CR2: 00007ffebc530cec CR3: 0000000137e0e003 CR4: 00000000003606e0 [ 182.217741] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 182.217742] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 182.217742] Call Trace: [ 182.217748] ? _cond_resched+0x19/0x40 [ 182.217752] intel_modeset_driver_remove+0xd1/0x150 [ 182.217754] i915_driver_remove+0xb8/0x120 [ 182.217756] i915_pci_remove+0x23/0x40 [ 182.217758] pci_device_remove+0x3e/0xc0 [ 182.217761] device_release_driver_internal+0xec/0x1b0 [ 182.217762] device_release_driver+0x12/0x20 [ 182.217764] pci_stop_bus_device+0x68/0x90 [ 182.217766] pci_stop_and_remove_bus_device_locked+0x1a/0x30 [ 182.217767] remove_store+0x7c/0x90 [ 182.217770] dev_attr_store+0x17/0x30 [ 182.217772] sysfs_kf_write+0x3c/0x50 [ 182.217773] kernfs_fop_write+0x125/0x1a0 [ 182.217776] __vfs_write+0x1b/0x40 [ 182.217778] vfs_write+0xb1/0x1a0 [ 182.217779] ksys_write+0xa7/0xe0 [ 182.217780] __x64_sys_write+0x1a/0x20 [ 182.217783] do_syscall_64+0x57/0x1c0 [ 182.217785] entry_SYSCALL_64_after_hwframe+0x44/0xa9 [ 182.217787] RIP: 0033:0x7f804b08f024 [ 182.217788] Code: 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b3 0f 1f 80 00 00 00 00 48 8d 05 b9 d3 0d 00 8b 00 85 c0 75 13 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 41 54 49 89 d4 55 48 89 f5 53 [ 182.217789] RSP: 002b:00007ffdbe4bc0b8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001 [ 182.217790] RAX: ffffffffffffffda RBX: 0000000000000002 RCX: 00007f804b08f024 [ 182.217791] RDX: 0000000000000002 RSI: 000055bf20640470 RDI: 0000000000000001 [ 182.217792] RBP: 000055bf20640470 R08: 000000000000000a R09: 0000000000008000 [ 182.217792] R10: 000000000000000a R11: 0000000000000246 R12: 00007f804b167760 [ 182.217793] R13: 0000000000000002 R14: 00007f804b168560 R15: 00007f804b167960 [ 182.217795] ---[ end trace 292e6caf66ddf0df ]--- [ 182.217797] [leaked fb] framebuffer[118]: [ 182.217798] [leaked fb] allocated by = gnome-shell [ 182.217799] [leaked fb] refcount=1 [ 182.217801] [leaked fb] format=XR24 little-endian (0x34325258) [ 182.217802] [leaked fb] modifier=0x100000000000001 [ 182.217803] [leaked fb] size=3200x1800 [ 182.217803] [leaked fb] layers: [ 182.217805] [leaked fb] size[0]=3200x1800 [ 182.217805] [leaked fb] pitch[0]=12800 [ 182.217806] [leaked fb] offset[0]=0 [ 182.217807] [leaked fb] obj[0]: [ 182.217808] [leaked fb] name=0 [ 182.217809] [leaked fb] refcount=3 [ 182.217810] [leaked fb] start=00000000 [ 182.217810] [leaked fb] size=25165824 [ 182.217811] [leaked fb] imported=no [ 182.241857] pci 0000:00:02.0: Removing from iommu group 1 [ 182.241858] DMAR: DRHD: handling fault status reg 2 [ 182.241864] DMAR: [DMA Write] Request device [00:02.0] PASID ffffffff fault addr 0 [fault reason 02] Present bit in context entry is clear [ 189.181789] general protection fault: 0000 [#1] SMP PTI [ 189.181795] CPU: 0 PID: 836 Comm: gdbus Tainted: G W 5.4.0-rc2+ #2704 [ 189.181797] Hardware name: Intel Corporation Skylake Client platform/Skylake Y LPDDR3 RVP3, BIOS SKLSE2R1.R00.B105.B00.1512051901 12/05/2015 [ 189.181804] RIP: 0010:drm_mode_object_unregister+0xe/0x70 [ 189.181806] Code: 54 00 4c 89 e7 e8 d2 d8 56 00 5b 41 5c 41 5d 5d c3 90 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 55 48 89 e5 41 55 41 54 53 <48> 8b 47 20 48 89 fb 49 89 f5 48 83 38 00 74 3a 4c 8d a3 d8 01 00 [ 189.181809] RSP: 0018:ffffa1c481e73b60 EFLAGS: 00010246 [ 189.181811] RAX: ffffffff9e502a90 RBX: ffff95c7da326e28 RCX: 0000000000000001 [ 189.181813] RDX: 0000000000000000 RSI: ffff95c7da326e18 RDI: f1ca50a8ff50515a [ 189.181815] RBP: ffffa1c481e73b78 R08: 0000000000000001 R09: 0000000000000000 [ 189.181817] R10: 0000000000000008 R11: ffff95c7dcf53770 R12: ffff95c7da326e00 [ 189.181818] R13: ffffa1c481e73bf0 R14: ffff95c7e3cb7ac8 R15: ffff95c7e6cb23c0 [ 189.181821] FS: 00007f688ccf1700(0000) GS:ffff95c7e7a00000(0000) knlGS:0000000000000000 [ 189.181823] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 189.181825] CR2: 000056427674ff10 CR3: 000000015e376004 CR4: 00000000003606f0 [ 189.181826] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 189.181828] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 189.181829] Call Trace: [ 189.181834] drm_framebuffer_free+0x21/0x40 [ 189.181837] drm_mode_object_put.part.2+0x3c/0x40 [ 189.181839] drm_mode_object_put+0x15/0x20 [ 189.181841] drm_fb_release+0xbc/0x130 [ 189.181845] drm_file_free.part.5+0x2ac/0x2e0 [ 189.181847] drm_close_helper.isra.6+0x60/0x70 [ 189.181850] drm_release+0x50/0x80 [ 189.181853] __fput+0xc6/0x260 [ 189.181856] ____fput+0xe/0x10 [ 189.181859] task_work_run+0x9d/0xc0 [ 189.181862] do_exit+0x2ed/0xbb0 [ 189.181866] ? poll_select_finish+0x210/0x210 [ 189.181869] do_group_exit+0x43/0xa0 [ 189.181872] get_signal+0x144/0x840 [ 189.181876] ? eventfd_read+0xe9/0x260 [ 189.181879] do_signal+0x34/0x6d0 [ 189.181884] exit_to_usermode_loop+0x8e/0x100 [ 189.181887] do_syscall_64+0x186/0x1c0 [ 189.181890] entry_SYSCALL_64_after_hwframe+0x44/0xa9 [ 189.181895] RIP: 0033:0x7f6895119729 [ 189.181899] Code: Bad RIP value. [ 189.181901] RSP: 002b:00007f688ccf08a0 EFLAGS: 00000293 ORIG_RAX: 0000000000000007 [ 189.181903] RAX: fffffffffffffdfc RBX: 00007f687c023170 RCX: 00007f6895119729 [ 189.181905] RDX: 00000000ffffffff RSI: 0000000000000005 RDI: 00007f687c023170 [ 189.181906] RBP: 0000000000000005 R08: 0000000000000000 R09: 0000000000000001 [ 189.181908] R10: 000055cc6ed5dd80 R11: 0000000000000293 R12: 00000000ffffffff [ 189.181909] R13: 00007f6895d8b4c0 R14: 00000000ffffffff R15: 0000000000000005 [ 189.181911] Modules linked in: nls_iso8859_1 snd_soc_skl snd_soc_sst_ipc snd_soc_sst_dsp snd_hda_ext_core snd_soc_acpi_intel_match snd_soc_acpi snd_soc_core intel_rapl_msr snd_hda_codec_hdmi snd_hda_codec_realtek snd_compress snd_hda_codec_generic ledtrig_audio ac97_bus snd_pcm_dmaengine snd_hda_intel snd_intel_nhlt snd_hda_codec snd_hda_core snd_hwdep snd_pcm intel_rapl_common x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm snd_seq_midi irqbypass snd_seq_midi_event snd_rawmidi crct10dif_pclmul crc32_pclmul ghash_clmulni_intel iwlmvm snd_seq mac80211 libarc4 aesni_intel snd_seq_device snd_timer crypto_simd ipu3_cio2 cryptd glue_helper iwlwifi v4l2_fwnode intel_cstate videobuf2_dma_sg videobuf2_memops intel_rapl_perf asix videobuf2_v4l2 videobuf2_common usbnet mii cfg80211 input_leds serio_raw intel_wmi_thunderbolt snd mei_me videodev soundcore intel_xhci_usb_role_switch mei 8250_dw mc roles intel_pch_thermal hid_sensor_magn_3d hid_sensor_accel_3d hid_sensor_press [ 189.181950] hid_sensor_incl_3d hid_sensor_als hid_sensor_rotation hid_sensor_gyro_3d hid_sensor_trigger industrialio_triggered_buffer kfifo_buf hid_sensor_iio_common industrialio intel_vbtn mac_hid intel_hid acpi_pad sparse_keymap sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables hid_sensor_custom hid_sensor_hub intel_ishtp_hid hid_generic dwc3 ulpi udc_core i2c_designware_platform i2c_designware_core e1000e psmouse i2c_i801 tg3 usbhid dwc3_pci hid intel_ish_ipc intel_lpss_pci intel_ishtp intel_lpss wmi pinctrl_sunrisepoint pinctrl_intel [ 189.181981] ---[ end trace 292e6caf66ddf0e0 ]--- [ 189.201970] RIP: 0010:drm_mode_object_unregister+0xe/0x70 [ 189.201975] Code: 54 00 4c 89 e7 e8 d2 d8 56 00 5b 41 5c 41 5d 5d c3 90 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 55 48 89 e5 41 55 41 54 53 <48> 8b 47 20 48 89 fb 49 89 f5 48 83 38 00 74 3a 4c 8d a3 d8 01 00 [ 189.201978] RSP: 0018:ffffa1c481e73b60 EFLAGS: 00010246 [ 189.201981] RAX: ffffffff9e502a90 RBX: ffff95c7da326e28 RCX: 0000000000000001 [ 189.201982] RDX: 0000000000000000 RSI: ffff95c7da326e18 RDI: f1ca50a8ff50515a [ 189.201984] RBP: ffffa1c481e73b78 R08: 0000000000000001 R09: 0000000000000000 [ 189.201986] R10: 0000000000000008 R11: ffff95c7dcf53770 R12: ffff95c7da326e00 [ 189.201987] R13: ffffa1c481e73bf0 R14: ffff95c7e3cb7ac8 R15: ffff95c7e6cb23c0 [ 189.201990] FS: 00007f688ccf1700(0000) GS:ffff95c7e7a00000(0000) knlGS:0000000000000000 [ 189.201991] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 189.201993] CR2: 00007f68951196ff CR3: 000000015e376004 CR4: 00000000003606f0 [ 189.201995] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 189.201997] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Best regards, Baolu _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lu Baolu Subject: Re: [RFC PATCH] iommu/vt-d: Fix IOMMU field not populated on device hot re-plug Date: Fri, 11 Oct 2019 14:54:09 +0800 Message-ID: <19f435fc-7318-4abd-5c73-78ce253d5f07@linux.intel.com> References: <20190822142922.31526-1-janusz.krzysztofik@linux.intel.com> <1769080.0GM3UzqXcv@jkrzyszt-desk.ger.corp.intel.com> <52fbfac9-c879-4b45-dd74-fafe62c2432b@linux.intel.com> <2674326.ZPvzKFr69O@jkrzyszt-desk.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id A0A146EBB4 for ; Fri, 11 Oct 2019 06:56:28 +0000 (UTC) In-Reply-To: <2674326.ZPvzKFr69O@jkrzyszt-desk.ger.corp.intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Janusz Krzysztofik Cc: Joerg Roedel , linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, David Woodhouse , intel-gfx@lists.freedesktop.org, baolu.lu@linux.intel.com List-Id: intel-gfx@lists.freedesktop.org SGkgSmFudXN6LAoKT24gOS8zLzE5IDM6NDEgUE0sIEphbnVzeiBLcnp5c3p0b2ZpayB3cm90ZToK PiBIaSBCYW9sdSwKPiAKPiBPbiBUdWVzZGF5LCBTZXB0ZW1iZXIgMywgMjAxOSAzOjI5OjQwIEFN IENFU1QgTHUgQmFvbHUgd3JvdGU6Cj4+IEhpIEphbnVzeiwKPj4KPj4gT24gOS8yLzE5IDQ6Mzcg UE0sIEphbnVzeiBLcnp5c3p0b2ZpayB3cm90ZToKPj4+PiBJIGFtIG5vdCBzYXlpbmcgdGhhdCBr ZWVwaW5nIGRhdGEgaXMgbm90IGFjY2VwdGFibGUuIEkganVzdCB3YW50IHRvCj4+Pj4gY2hlY2sg d2hldGhlciB0aGVyZSBhcmUgYW55IG90aGVyIHNvbHV0aW9ucy4KPj4+IFRoZW4gcmV2ZXJ0aW5n IDQ1OGI3YzhlMGRkZSBhbmQgYXBwbHlpbmcgdGhpcyBwYXRjaCBzdGlsbCByZXNvbHZlcyB0aGUK PiBpc3N1ZQo+Pj4gZm9yIG1lLiAgTm8gZXJyb3JzIGFwcGVhciB3aGVuIG1hcHBpbmdzIGFyZSB1 bm1hcHBlZCBvbiBkZXZpY2UgY2xvc2UgYWZ0ZXIKPiB0aGUKPj4+IGRldmljZSBoYXMgYmVlbiBy ZW1vdmVkLCBhbmQgZG9tYWluIGluZm8gcHJlc2VydmVkIG9uIGRldmljZSByZW1vdmFsIGlzCj4+ PiBzdWNjZXNzZnVsbHkgcmV1c2VkIG9uIGRldmljZSByZS1wbHVnLgo+PiBUaGlzIHBhdGNoIGRv ZXNuJ3QgbG9vayBnb29kIHRvIG1lIGFsdGhvdWdoIEkgYWdyZWUgdGhhdCBrZWVwaW5nIGRhdGEg aXMKPj4gYWNjZXB0YWJsZS4gSXQgdXBkYXRlcyBkZXYtPmFyY2hkYXRhLmlvbW11LCBidXQgbGVh dmVzIHRoZSBoYXJkd2FyZQo+PiBjb250ZXh0L3Bhc2lkIHRhYmxlIHVuY2hhbmdlZC4gVGhpcyBt aWdodCBjYXVzZSBwcm9ibGVtcyBzb21ld2hlcmUuCj4+Cj4+PiBJcyB0aGVyZSBhbnl0aGluZyBl bHNlIEkgY2FuIGRvIHRvIGhlbHA/Cj4+IENhbiB5b3UgcGxlYXNlIHRlbGwgbWUgaG93IHRvIHJl cHJvZHVjZSB0aGUgcHJvYmxlbT8KPiBUaGUgbW9zdCBzaW1wbGUgd2F5IHRvIHJlcHJvZHVjZSB0 aGUgaXNzdWUsIGFzc3VtaW5nIHRoZXJlIGFyZSBubyBub24tSW50ZWwKPiBncmFwaGljcyBhZGFw dGVycyBpbnN0YWxsZWQsIGlzIHRvIHJ1biB0aGUgZm9sbG93aW5nIHNoZWxsIGNvbW1hbmRzOgo+ IAo+ICMhL2Jpbi9zaAo+ICMgbG9hZCBpOTE1IG1vZHVsZQo+IG1vZHByb2JlIGk5MTUKPiAjIG9w ZW4gYW4gaTkxNSBkZXZpY2UgYW5kIGtlZXAgaXQgb3BlbiBpbiBiYWNrZ3JvdW5kCj4gY2F0IC9k ZXYvZHJpL2NhcmQwID4vZGV2L251bGwgJgo+IHNsZWVwIDIKPiAjIHNpbXVsYXRlIGRldmljZSB1 bnBsdWcKPiBlY2hvIDEgPi9zeXMvY2xhc3MvZHJtL2NhcmQwL2RldmljZS9yZW1vdmUKPiAjIG1h a2UgdGhlIGJhY2tncm91bmQgcHJvY2VzcyBjbG9zZSB0aGUgZGV2aWNlIG9uIGV4aXQKPiBraWxs ICQhCj4gCgpJIHRyaWVkIHRvIHJlcHJvZHVjZSB0aGUgaXNzdWUgd2l0aCBhYm92ZSBpbnN0cnVj dGlvbnMuIEkgZ290IGJlbG93Cmtlcm5lbCBtZXNzYWdlcyBhZnRlciBhYm92ZSBvcGVyYXRpb24u IElzIGl0IHRoZSBzYW1lIGFzIHdoYXQgeW91J3ZlCnNlZW4/IEkgY2FuJ3QgZmluZCBhbnl0aGlu ZyBleHBsaWNpdGx5IHJlbGF0ZWQgdG8gaW9tbXUgZXhjZXB0IGFuIElPTU1VCmZhdWx0IGdlbmVy YXRlZCBhZnRlciBkZXZpY2UgZ290IHJlbW92ZWQgYW5kIHRoZSBETUEgdHJhbnNsYXRpb24Kc3Ry dWN0dXJlcyBnb3QgdG9ybiBkb3duLiBDYW4geW91IHBsZWFzZSBoZWxwIG1lIHRvIHVuZGVyc3Rh bmQgaG93IElPTU1VCmRyaXZlciB0cmlnZ2VycyB0aGUgaXNzdWU/CgoKWyAgMTgyLjIxNzY3Ml0g LS0tLS0tLS0tLS0tWyBjdXQgaGVyZSBdLS0tLS0tLS0tLS0tClsgIDE4Mi4yMTc2NzldIFdBUk5J Tkc6IENQVTogMSBQSUQ6IDEyODUgYXQgCmRyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZV9jb25maWcu Yzo0OTUgZHJtX21vZGVfY29uZmlnX2NsZWFudXArMHgyY2IvMHgyZTAKWyAgMTgyLjIxNzY4MF0g TW9kdWxlcyBsaW5rZWQgaW46IG5sc19pc284ODU5XzEgc25kX3NvY19za2wgCnNuZF9zb2Nfc3N0 X2lwYyBzbmRfc29jX3NzdF9kc3Agc25kX2hkYV9leHRfY29yZSAKc25kX3NvY19hY3BpX2ludGVs X21hdGNoIHNuZF9zb2NfYWNwaSBzbmRfc29jX2NvcmUgaW50ZWxfcmFwbF9tc3IgCnNuZF9oZGFf Y29kZWNfaGRtaSBzbmRfaGRhX2NvZGVjX3JlYWx0ZWsgc25kX2NvbXByZXNzIApzbmRfaGRhX2Nv ZGVjX2dlbmVyaWMgbGVkdHJpZ19hdWRpbyBhYzk3X2J1cyBzbmRfcGNtX2RtYWVuZ2luZSAKc25k X2hkYV9pbnRlbCBzbmRfaW50ZWxfbmhsdCBzbmRfaGRhX2NvZGVjIHNuZF9oZGFfY29yZSBzbmRf aHdkZXAgCnNuZF9wY20gaW50ZWxfcmFwbF9jb21tb24geDg2X3BrZ190ZW1wX3RoZXJtYWwgaW50 ZWxfcG93ZXJjbGFtcCBjb3JldGVtcCAKa3ZtX2ludGVsIGt2bSBzbmRfc2VxX21pZGkgaXJxYnlw YXNzIHNuZF9zZXFfbWlkaV9ldmVudCBzbmRfcmF3bWlkaSAKY3JjdDEwZGlmX3BjbG11bCBjcmMz Ml9wY2xtdWwgZ2hhc2hfY2xtdWxuaV9pbnRlbCBpd2xtdm0gc25kX3NlcSAKbWFjODAyMTEgbGli YXJjNCBhZXNuaV9pbnRlbCBzbmRfc2VxX2RldmljZSBzbmRfdGltZXIgY3J5cHRvX3NpbWQgCmlw dTNfY2lvMiBjcnlwdGQgZ2x1ZV9oZWxwZXIgaXdsd2lmaSB2NGwyX2Z3bm9kZSBpbnRlbF9jc3Rh dGUgCnZpZGVvYnVmMl9kbWFfc2cgdmlkZW9idWYyX21lbW9wcyBpbnRlbF9yYXBsX3BlcmYgYXNp eCB2aWRlb2J1ZjJfdjRsMiAKdmlkZW9idWYyX2NvbW1vbiB1c2JuZXQgbWlpIGNmZzgwMjExIGlu cHV0X2xlZHMgc2VyaW9fcmF3IAppbnRlbF93bWlfdGh1bmRlcmJvbHQgc25kIG1laV9tZSB2aWRl b2RldiBzb3VuZGNvcmUgCmludGVsX3hoY2lfdXNiX3JvbGVfc3dpdGNoIG1laSA4MjUwX2R3IG1j IHJvbGVzIGludGVsX3BjaF90aGVybWFsIApoaWRfc2Vuc29yX21hZ25fM2QgaGlkX3NlbnNvcl9h Y2NlbF8zZCBoaWRfc2Vuc29yX3ByZXNzClsgIDE4Mi4yMTc3MDldICBoaWRfc2Vuc29yX2luY2xf M2QgaGlkX3NlbnNvcl9hbHMgaGlkX3NlbnNvcl9yb3RhdGlvbiAKaGlkX3NlbnNvcl9neXJvXzNk IGhpZF9zZW5zb3JfdHJpZ2dlciBpbmR1c3RyaWFsaW9fdHJpZ2dlcmVkX2J1ZmZlciAKa2ZpZm9f YnVmIGhpZF9zZW5zb3JfaWlvX2NvbW1vbiBpbmR1c3RyaWFsaW8gaW50ZWxfdmJ0biBtYWNfaGlk IAppbnRlbF9oaWQgYWNwaV9wYWQgc3BhcnNlX2tleW1hcCBzY2hfZnFfY29kZWwgcGFycG9ydF9w YyBwcGRldiBscCAKcGFycG9ydCBpcF90YWJsZXMgeF90YWJsZXMgaGlkX3NlbnNvcl9jdXN0b20g aGlkX3NlbnNvcl9odWIgCmludGVsX2lzaHRwX2hpZCBoaWRfZ2VuZXJpYyBkd2MzIHVscGkgdWRj X2NvcmUgaTJjX2Rlc2lnbndhcmVfcGxhdGZvcm0gCmkyY19kZXNpZ253YXJlX2NvcmUgZTEwMDBl IHBzbW91c2UgaTJjX2k4MDEgdGczIHVzYmhpZCBkd2MzX3BjaSBoaWQgCmludGVsX2lzaF9pcGMg aW50ZWxfbHBzc19wY2kgaW50ZWxfaXNodHAgaW50ZWxfbHBzcyB3bWkgCnBpbmN0cmxfc3Vucmlz ZXBvaW50IHBpbmN0cmxfaW50ZWwKWyAgMTgyLjIxNzcyN10gQ1BVOiAxIFBJRDogMTI4NSBDb21t OiBiYXNoIE5vdCB0YWludGVkIDUuNC4wLXJjMisgIzI3MDQKWyAgMTgyLjIxNzcyOF0gSGFyZHdh cmUgbmFtZTogSW50ZWwgQ29ycG9yYXRpb24gU2t5bGFrZSBDbGllbnQgCnBsYXRmb3JtL1NreWxh a2UgWSBMUEREUjMgUlZQMywgQklPUyBTS0xTRTJSMS5SMDAuQjEwNS5CMDAuMTUxMjA1MTkwMSAK MTIvMDUvMjAxNQpbICAxODIuMjE3NzMxXSBSSVA6IDAwMTA6ZHJtX21vZGVfY29uZmlnX2NsZWFu dXArMHgyY2IvMHgyZTAKWyAgMTgyLjIxNzczMl0gQ29kZTogZWIgMGMgNDggOGIgNzAgNDggNGMg ODkgZTcgZTggMzEgZjQgZmYgZmYgNDggOGQgN2QgCmEwIGU4IGQ4IDk1IGZmIGZmIDQ4IDg1IGMw IDc1IGU2IDQ4IDhkIDdkIGEwIGU4IDFhIDg3IGZmIGZmIGU5IGVmIGZkIGZmIApmZiA8MGY+IDBi IGU5IGVkIGZlIGZmIGZmIDBmIDBiIGViIDk4IGU4IDA1IGVjIDk4IGZmIDBmIDFmIDQ0IDAwIDAw IDBmClsgIDE4Mi4yMTc3MzNdIFJTUDogMDAxODpmZmZmYTFjNDgxZDM3Yzc4IEVGTEFHUzogMDAw MTAyMTYKWyAgMTgyLjIxNzczNV0gUkFYOiBmZmZmOTVjN2RhMzI2ZTA4IFJCWDogZmZmZjk1Yzdk Y2Y2MDAwMCBSQ1g6IAowMDAwMDAwMDgwMTAwMDBlClsgIDE4Mi4yMTc3MzVdIFJEWDogZmZmZjk1 YzdkY2Y2MDNiOCBSU0k6IDAwMDAwMDAwODAxMDAwMGUgUkRJOiAKZmZmZjk1YzdkY2Y2MDM5MApb ICAxODIuMjE3NzM2XSBSQlA6IGZmZmZhMWM0ODFkMzdjZDggUjA4OiAwMDAwMDAwMDAwMDAwMDAw IFIwOTogCmZmZmZmZmZmOWUwMzVlMDAKWyAgMTgyLjIxNzczN10gUjEwOiBmZmZmYTFjNDgxZDM3 YmUwIFIxMTogMDAwMDAwMDAwMDAwMDAwMSBSMTI6IApmZmZmOTVjN2RjZjYwMjUwClsgIDE4Mi4y MTc3MzddIFIxMzogZmZmZjk1YzdkY2Y2MDNiOCBSMTQ6IGZmZmZhMWM0ODFkMzdlZTggUjE1OiAK ZmZmZmZmZmZmZmZmZmZmMgpbICAxODIuMjE3NzM5XSBGUzogIDAwMDA3ZjgwNGFmN2Y3NDAoMDAw MCkgR1M6ZmZmZjk1YzdlN2E4MDAwMCgwMDAwKSAKa25sR1M6MDAwMDAwMDAwMDAwMDAwMApbICAx ODIuMjE3NzM5XSBDUzogIDAwMTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAwMDAwMDgwMDUw MDMzClsgIDE4Mi4yMTc3NDBdIENSMjogMDAwMDdmZmViYzUzMGNlYyBDUjM6IDAwMDAwMDAxMzdl MGUwMDMgQ1I0OiAKMDAwMDAwMDAwMDM2MDZlMApbICAxODIuMjE3NzQxXSBEUjA6IDAwMDAwMDAw MDAwMDAwMDAgRFIxOiAwMDAwMDAwMDAwMDAwMDAwIERSMjogCjAwMDAwMDAwMDAwMDAwMDAKWyAg MTgyLjIxNzc0Ml0gRFIzOiAwMDAwMDAwMDAwMDAwMDAwIERSNjogMDAwMDAwMDBmZmZlMGZmMCBE Ujc6IAowMDAwMDAwMDAwMDAwNDAwClsgIDE4Mi4yMTc3NDJdIENhbGwgVHJhY2U6ClsgIDE4Mi4y MTc3NDhdICA/IF9jb25kX3Jlc2NoZWQrMHgxOS8weDQwClsgIDE4Mi4yMTc3NTJdICBpbnRlbF9t b2Rlc2V0X2RyaXZlcl9yZW1vdmUrMHhkMS8weDE1MApbICAxODIuMjE3NzU0XSAgaTkxNV9kcml2 ZXJfcmVtb3ZlKzB4YjgvMHgxMjAKWyAgMTgyLjIxNzc1Nl0gIGk5MTVfcGNpX3JlbW92ZSsweDIz LzB4NDAKWyAgMTgyLjIxNzc1OF0gIHBjaV9kZXZpY2VfcmVtb3ZlKzB4M2UvMHhjMApbICAxODIu MjE3NzYxXSAgZGV2aWNlX3JlbGVhc2VfZHJpdmVyX2ludGVybmFsKzB4ZWMvMHgxYjAKWyAgMTgy LjIxNzc2Ml0gIGRldmljZV9yZWxlYXNlX2RyaXZlcisweDEyLzB4MjAKWyAgMTgyLjIxNzc2NF0g IHBjaV9zdG9wX2J1c19kZXZpY2UrMHg2OC8weDkwClsgIDE4Mi4yMTc3NjZdICBwY2lfc3RvcF9h bmRfcmVtb3ZlX2J1c19kZXZpY2VfbG9ja2VkKzB4MWEvMHgzMApbICAxODIuMjE3NzY3XSAgcmVt b3ZlX3N0b3JlKzB4N2MvMHg5MApbICAxODIuMjE3NzcwXSAgZGV2X2F0dHJfc3RvcmUrMHgxNy8w eDMwClsgIDE4Mi4yMTc3NzJdICBzeXNmc19rZl93cml0ZSsweDNjLzB4NTAKWyAgMTgyLjIxNzc3 M10gIGtlcm5mc19mb3Bfd3JpdGUrMHgxMjUvMHgxYTAKWyAgMTgyLjIxNzc3Nl0gIF9fdmZzX3dy aXRlKzB4MWIvMHg0MApbICAxODIuMjE3Nzc4XSAgdmZzX3dyaXRlKzB4YjEvMHgxYTAKWyAgMTgy LjIxNzc3OV0gIGtzeXNfd3JpdGUrMHhhNy8weGUwClsgIDE4Mi4yMTc3ODBdICBfX3g2NF9zeXNf d3JpdGUrMHgxYS8weDIwClsgIDE4Mi4yMTc3ODNdICBkb19zeXNjYWxsXzY0KzB4NTcvMHgxYzAK WyAgMTgyLjIxNzc4NV0gIGVudHJ5X1NZU0NBTExfNjRfYWZ0ZXJfaHdmcmFtZSsweDQ0LzB4YTkK WyAgMTgyLjIxNzc4N10gUklQOiAwMDMzOjB4N2Y4MDRiMDhmMDI0ClsgIDE4Mi4yMTc3ODhdIENv ZGU6IDAwIGY3IGQ4IDY0IDg5IDAyIDQ4IGM3IGMwIGZmIGZmIGZmIGZmIGViIGIzIDBmIDFmIAo4 MCAwMCAwMCAwMCAwMCA0OCA4ZCAwNSBiOSBkMyAwZCAwMCA4YiAwMCA4NSBjMCA3NSAxMyBiOCAw MSAwMCAwMCAwMCAwZiAKMDUgPDQ4PiAzZCAwMCBmMCBmZiBmZiA3NyA1NCBjMyAwZiAxZiAwMCA0 MSA1NCA0OSA4OSBkNCA1NSA0OCA4OSBmNSA1MwpbICAxODIuMjE3Nzg5XSBSU1A6IDAwMmI6MDAw MDdmZmRiZTRiYzBiOCBFRkxBR1M6IDAwMDAwMjQ2IE9SSUdfUkFYOiAKMDAwMDAwMDAwMDAwMDAw MQpbICAxODIuMjE3NzkwXSBSQVg6IGZmZmZmZmZmZmZmZmZmZGEgUkJYOiAwMDAwMDAwMDAwMDAw MDAyIFJDWDogCjAwMDA3ZjgwNGIwOGYwMjQKWyAgMTgyLjIxNzc5MV0gUkRYOiAwMDAwMDAwMDAw MDAwMDAyIFJTSTogMDAwMDU1YmYyMDY0MDQ3MCBSREk6IAowMDAwMDAwMDAwMDAwMDAxClsgIDE4 Mi4yMTc3OTJdIFJCUDogMDAwMDU1YmYyMDY0MDQ3MCBSMDg6IDAwMDAwMDAwMDAwMDAwMGEgUjA5 OiAKMDAwMDAwMDAwMDAwODAwMApbICAxODIuMjE3NzkyXSBSMTA6IDAwMDAwMDAwMDAwMDAwMGEg UjExOiAwMDAwMDAwMDAwMDAwMjQ2IFIxMjogCjAwMDA3ZjgwNGIxNjc3NjAKWyAgMTgyLjIxNzc5 M10gUjEzOiAwMDAwMDAwMDAwMDAwMDAyIFIxNDogMDAwMDdmODA0YjE2ODU2MCBSMTU6IAowMDAw N2Y4MDRiMTY3OTYwClsgIDE4Mi4yMTc3OTVdIC0tLVsgZW5kIHRyYWNlIDI5MmU2Y2FmNjZkZGYw ZGYgXS0tLQpbICAxODIuMjE3Nzk3XSBbbGVha2VkIGZiXSBmcmFtZWJ1ZmZlclsxMThdOgpbICAx ODIuMjE3Nzk4XSBbbGVha2VkIGZiXSAJYWxsb2NhdGVkIGJ5ID0gZ25vbWUtc2hlbGwKWyAgMTgy LjIxNzc5OV0gW2xlYWtlZCBmYl0gCXJlZmNvdW50PTEKWyAgMTgyLjIxNzgwMV0gW2xlYWtlZCBm Yl0gCWZvcm1hdD1YUjI0IGxpdHRsZS1lbmRpYW4gKDB4MzQzMjUyNTgpClsgIDE4Mi4yMTc4MDJd IFtsZWFrZWQgZmJdIAltb2RpZmllcj0weDEwMDAwMDAwMDAwMDAwMQpbICAxODIuMjE3ODAzXSBb bGVha2VkIGZiXSAJc2l6ZT0zMjAweDE4MDAKWyAgMTgyLjIxNzgwM10gW2xlYWtlZCBmYl0gCWxh eWVyczoKWyAgMTgyLjIxNzgwNV0gW2xlYWtlZCBmYl0gCQlzaXplWzBdPTMyMDB4MTgwMApbICAx ODIuMjE3ODA1XSBbbGVha2VkIGZiXSAJCXBpdGNoWzBdPTEyODAwClsgIDE4Mi4yMTc4MDZdIFts ZWFrZWQgZmJdIAkJb2Zmc2V0WzBdPTAKWyAgMTgyLjIxNzgwN10gW2xlYWtlZCBmYl0gCQlvYmpb MF06ClsgIDE4Mi4yMTc4MDhdIFtsZWFrZWQgZmJdIAkJCW5hbWU9MApbICAxODIuMjE3ODA5XSBb bGVha2VkIGZiXSAJCQlyZWZjb3VudD0zClsgIDE4Mi4yMTc4MTBdIFtsZWFrZWQgZmJdIAkJCXN0 YXJ0PTAwMDAwMDAwClsgIDE4Mi4yMTc4MTBdIFtsZWFrZWQgZmJdIAkJCXNpemU9MjUxNjU4MjQK WyAgMTgyLjIxNzgxMV0gW2xlYWtlZCBmYl0gCQkJaW1wb3J0ZWQ9bm8KWyAgMTgyLjI0MTg1N10g cGNpIDAwMDA6MDA6MDIuMDogUmVtb3ZpbmcgZnJvbSBpb21tdSBncm91cCAxClsgIDE4Mi4yNDE4 NThdIERNQVI6IERSSEQ6IGhhbmRsaW5nIGZhdWx0IHN0YXR1cyByZWcgMgpbICAxODIuMjQxODY0 XSBETUFSOiBbRE1BIFdyaXRlXSBSZXF1ZXN0IGRldmljZSBbMDA6MDIuMF0gUEFTSUQgZmZmZmZm ZmYgCmZhdWx0IGFkZHIgMCBbZmF1bHQgcmVhc29uIDAyXSBQcmVzZW50IGJpdCBpbiBjb250ZXh0 IGVudHJ5IGlzIGNsZWFyClsgIDE4OS4xODE3ODldIGdlbmVyYWwgcHJvdGVjdGlvbiBmYXVsdDog MDAwMCBbIzFdIFNNUCBQVEkKWyAgMTg5LjE4MTc5NV0gQ1BVOiAwIFBJRDogODM2IENvbW06IGdk YnVzIFRhaW50ZWQ6IEcgICAgICAgIFcgCjUuNC4wLXJjMisgIzI3MDQKWyAgMTg5LjE4MTc5N10g SGFyZHdhcmUgbmFtZTogSW50ZWwgQ29ycG9yYXRpb24gU2t5bGFrZSBDbGllbnQgCnBsYXRmb3Jt L1NreWxha2UgWSBMUEREUjMgUlZQMywgQklPUyBTS0xTRTJSMS5SMDAuQjEwNS5CMDAuMTUxMjA1 MTkwMSAKMTIvMDUvMjAxNQpbICAxODkuMTgxODA0XSBSSVA6IDAwMTA6ZHJtX21vZGVfb2JqZWN0 X3VucmVnaXN0ZXIrMHhlLzB4NzAKWyAgMTg5LjE4MTgwNl0gQ29kZTogNTQgMDAgNGMgODkgZTcg ZTggZDIgZDggNTYgMDAgNWIgNDEgNWMgNDEgNWQgNWQgYzMgCjkwIDY2IDJlIDBmIDFmIDg0IDAw IDAwIDAwIDAwIDAwIDBmIDFmIDQ0IDAwIDAwIDU1IDQ4IDg5IGU1IDQxIDU1IDQxIDU0IAo1MyA8 NDg+IDhiIDQ3IDIwIDQ4IDg5IGZiIDQ5IDg5IGY1IDQ4IDgzIDM4IDAwIDc0IDNhIDRjIDhkIGEz IGQ4IDAxIDAwClsgIDE4OS4xODE4MDldIFJTUDogMDAxODpmZmZmYTFjNDgxZTczYjYwIEVGTEFH UzogMDAwMTAyNDYKWyAgMTg5LjE4MTgxMV0gUkFYOiBmZmZmZmZmZjllNTAyYTkwIFJCWDogZmZm Zjk1YzdkYTMyNmUyOCBSQ1g6IAowMDAwMDAwMDAwMDAwMDAxClsgIDE4OS4xODE4MTNdIFJEWDog MDAwMDAwMDAwMDAwMDAwMCBSU0k6IGZmZmY5NWM3ZGEzMjZlMTggUkRJOiAKZjFjYTUwYThmZjUw NTE1YQpbICAxODkuMTgxODE1XSBSQlA6IGZmZmZhMWM0ODFlNzNiNzggUjA4OiAwMDAwMDAwMDAw MDAwMDAxIFIwOTogCjAwMDAwMDAwMDAwMDAwMDAKWyAgMTg5LjE4MTgxN10gUjEwOiAwMDAwMDAw MDAwMDAwMDA4IFIxMTogZmZmZjk1YzdkY2Y1Mzc3MCBSMTI6IApmZmZmOTVjN2RhMzI2ZTAwClsg IDE4OS4xODE4MThdIFIxMzogZmZmZmExYzQ4MWU3M2JmMCBSMTQ6IGZmZmY5NWM3ZTNjYjdhYzgg UjE1OiAKZmZmZjk1YzdlNmNiMjNjMApbICAxODkuMTgxODIxXSBGUzogIDAwMDA3ZjY4OGNjZjE3 MDAoMDAwMCkgR1M6ZmZmZjk1YzdlN2EwMDAwMCgwMDAwKSAKa25sR1M6MDAwMDAwMDAwMDAwMDAw MApbICAxODkuMTgxODIzXSBDUzogIDAwMTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAwMDAw MDgwMDUwMDMzClsgIDE4OS4xODE4MjVdIENSMjogMDAwMDU2NDI3Njc0ZmYxMCBDUjM6IDAwMDAw MDAxNWUzNzYwMDQgQ1I0OiAKMDAwMDAwMDAwMDM2MDZmMApbICAxODkuMTgxODI2XSBEUjA6IDAw MDAwMDAwMDAwMDAwMDAgRFIxOiAwMDAwMDAwMDAwMDAwMDAwIERSMjogCjAwMDAwMDAwMDAwMDAw MDAKWyAgMTg5LjE4MTgyOF0gRFIzOiAwMDAwMDAwMDAwMDAwMDAwIERSNjogMDAwMDAwMDBmZmZl MGZmMCBEUjc6IAowMDAwMDAwMDAwMDAwNDAwClsgIDE4OS4xODE4MjldIENhbGwgVHJhY2U6Clsg IDE4OS4xODE4MzRdICBkcm1fZnJhbWVidWZmZXJfZnJlZSsweDIxLzB4NDAKWyAgMTg5LjE4MTgz N10gIGRybV9tb2RlX29iamVjdF9wdXQucGFydC4yKzB4M2MvMHg0MApbICAxODkuMTgxODM5XSAg ZHJtX21vZGVfb2JqZWN0X3B1dCsweDE1LzB4MjAKWyAgMTg5LjE4MTg0MV0gIGRybV9mYl9yZWxl YXNlKzB4YmMvMHgxMzAKWyAgMTg5LjE4MTg0NV0gIGRybV9maWxlX2ZyZWUucGFydC41KzB4MmFj LzB4MmUwClsgIDE4OS4xODE4NDddICBkcm1fY2xvc2VfaGVscGVyLmlzcmEuNisweDYwLzB4NzAK WyAgMTg5LjE4MTg1MF0gIGRybV9yZWxlYXNlKzB4NTAvMHg4MApbICAxODkuMTgxODUzXSAgX19m cHV0KzB4YzYvMHgyNjAKWyAgMTg5LjE4MTg1Nl0gIF9fX19mcHV0KzB4ZS8weDEwClsgIDE4OS4x ODE4NTldICB0YXNrX3dvcmtfcnVuKzB4OWQvMHhjMApbICAxODkuMTgxODYyXSAgZG9fZXhpdCsw eDJlZC8weGJiMApbICAxODkuMTgxODY2XSAgPyBwb2xsX3NlbGVjdF9maW5pc2grMHgyMTAvMHgy MTAKWyAgMTg5LjE4MTg2OV0gIGRvX2dyb3VwX2V4aXQrMHg0My8weGEwClsgIDE4OS4xODE4NzJd ICBnZXRfc2lnbmFsKzB4MTQ0LzB4ODQwClsgIDE4OS4xODE4NzZdICA/IGV2ZW50ZmRfcmVhZCsw eGU5LzB4MjYwClsgIDE4OS4xODE4NzldICBkb19zaWduYWwrMHgzNC8weDZkMApbICAxODkuMTgx ODg0XSAgZXhpdF90b191c2VybW9kZV9sb29wKzB4OGUvMHgxMDAKWyAgMTg5LjE4MTg4N10gIGRv X3N5c2NhbGxfNjQrMHgxODYvMHgxYzAKWyAgMTg5LjE4MTg5MF0gIGVudHJ5X1NZU0NBTExfNjRf YWZ0ZXJfaHdmcmFtZSsweDQ0LzB4YTkKWyAgMTg5LjE4MTg5NV0gUklQOiAwMDMzOjB4N2Y2ODk1 MTE5NzI5ClsgIDE4OS4xODE4OTldIENvZGU6IEJhZCBSSVAgdmFsdWUuClsgIDE4OS4xODE5MDFd IFJTUDogMDAyYjowMDAwN2Y2ODhjY2YwOGEwIEVGTEFHUzogMDAwMDAyOTMgT1JJR19SQVg6IAow MDAwMDAwMDAwMDAwMDA3ClsgIDE4OS4xODE5MDNdIFJBWDogZmZmZmZmZmZmZmZmZmRmYyBSQlg6 IDAwMDA3ZjY4N2MwMjMxNzAgUkNYOiAKMDAwMDdmNjg5NTExOTcyOQpbICAxODkuMTgxOTA1XSBS RFg6IDAwMDAwMDAwZmZmZmZmZmYgUlNJOiAwMDAwMDAwMDAwMDAwMDA1IFJESTogCjAwMDA3ZjY4 N2MwMjMxNzAKWyAgMTg5LjE4MTkwNl0gUkJQOiAwMDAwMDAwMDAwMDAwMDA1IFIwODogMDAwMDAw MDAwMDAwMDAwMCBSMDk6IAowMDAwMDAwMDAwMDAwMDAxClsgIDE4OS4xODE5MDhdIFIxMDogMDAw MDU1Y2M2ZWQ1ZGQ4MCBSMTE6IDAwMDAwMDAwMDAwMDAyOTMgUjEyOiAKMDAwMDAwMDBmZmZmZmZm ZgpbICAxODkuMTgxOTA5XSBSMTM6IDAwMDA3ZjY4OTVkOGI0YzAgUjE0OiAwMDAwMDAwMGZmZmZm ZmZmIFIxNTogCjAwMDAwMDAwMDAwMDAwMDUKWyAgMTg5LjE4MTkxMV0gTW9kdWxlcyBsaW5rZWQg aW46IG5sc19pc284ODU5XzEgc25kX3NvY19za2wgCnNuZF9zb2Nfc3N0X2lwYyBzbmRfc29jX3Nz dF9kc3Agc25kX2hkYV9leHRfY29yZSAKc25kX3NvY19hY3BpX2ludGVsX21hdGNoIHNuZF9zb2Nf YWNwaSBzbmRfc29jX2NvcmUgaW50ZWxfcmFwbF9tc3IgCnNuZF9oZGFfY29kZWNfaGRtaSBzbmRf aGRhX2NvZGVjX3JlYWx0ZWsgc25kX2NvbXByZXNzIApzbmRfaGRhX2NvZGVjX2dlbmVyaWMgbGVk dHJpZ19hdWRpbyBhYzk3X2J1cyBzbmRfcGNtX2RtYWVuZ2luZSAKc25kX2hkYV9pbnRlbCBzbmRf aW50ZWxfbmhsdCBzbmRfaGRhX2NvZGVjIHNuZF9oZGFfY29yZSBzbmRfaHdkZXAgCnNuZF9wY20g aW50ZWxfcmFwbF9jb21tb24geDg2X3BrZ190ZW1wX3RoZXJtYWwgaW50ZWxfcG93ZXJjbGFtcCBj b3JldGVtcCAKa3ZtX2ludGVsIGt2bSBzbmRfc2VxX21pZGkgaXJxYnlwYXNzIHNuZF9zZXFfbWlk aV9ldmVudCBzbmRfcmF3bWlkaSAKY3JjdDEwZGlmX3BjbG11bCBjcmMzMl9wY2xtdWwgZ2hhc2hf Y2xtdWxuaV9pbnRlbCBpd2xtdm0gc25kX3NlcSAKbWFjODAyMTEgbGliYXJjNCBhZXNuaV9pbnRl bCBzbmRfc2VxX2RldmljZSBzbmRfdGltZXIgY3J5cHRvX3NpbWQgCmlwdTNfY2lvMiBjcnlwdGQg Z2x1ZV9oZWxwZXIgaXdsd2lmaSB2NGwyX2Z3bm9kZSBpbnRlbF9jc3RhdGUgCnZpZGVvYnVmMl9k bWFfc2cgdmlkZW9idWYyX21lbW9wcyBpbnRlbF9yYXBsX3BlcmYgYXNpeCB2aWRlb2J1ZjJfdjRs MiAKdmlkZW9idWYyX2NvbW1vbiB1c2JuZXQgbWlpIGNmZzgwMjExIGlucHV0X2xlZHMgc2VyaW9f cmF3IAppbnRlbF93bWlfdGh1bmRlcmJvbHQgc25kIG1laV9tZSB2aWRlb2RldiBzb3VuZGNvcmUg CmludGVsX3hoY2lfdXNiX3JvbGVfc3dpdGNoIG1laSA4MjUwX2R3IG1jIHJvbGVzIGludGVsX3Bj aF90aGVybWFsIApoaWRfc2Vuc29yX21hZ25fM2QgaGlkX3NlbnNvcl9hY2NlbF8zZCBoaWRfc2Vu c29yX3ByZXNzClsgIDE4OS4xODE5NTBdICBoaWRfc2Vuc29yX2luY2xfM2QgaGlkX3NlbnNvcl9h bHMgaGlkX3NlbnNvcl9yb3RhdGlvbiAKaGlkX3NlbnNvcl9neXJvXzNkIGhpZF9zZW5zb3JfdHJp Z2dlciBpbmR1c3RyaWFsaW9fdHJpZ2dlcmVkX2J1ZmZlciAKa2ZpZm9fYnVmIGhpZF9zZW5zb3Jf aWlvX2NvbW1vbiBpbmR1c3RyaWFsaW8gaW50ZWxfdmJ0biBtYWNfaGlkIAppbnRlbF9oaWQgYWNw aV9wYWQgc3BhcnNlX2tleW1hcCBzY2hfZnFfY29kZWwgcGFycG9ydF9wYyBwcGRldiBscCAKcGFy cG9ydCBpcF90YWJsZXMgeF90YWJsZXMgaGlkX3NlbnNvcl9jdXN0b20gaGlkX3NlbnNvcl9odWIg CmludGVsX2lzaHRwX2hpZCBoaWRfZ2VuZXJpYyBkd2MzIHVscGkgdWRjX2NvcmUgaTJjX2Rlc2ln bndhcmVfcGxhdGZvcm0gCmkyY19kZXNpZ253YXJlX2NvcmUgZTEwMDBlIHBzbW91c2UgaTJjX2k4 MDEgdGczIHVzYmhpZCBkd2MzX3BjaSBoaWQgCmludGVsX2lzaF9pcGMgaW50ZWxfbHBzc19wY2kg aW50ZWxfaXNodHAgaW50ZWxfbHBzcyB3bWkgCnBpbmN0cmxfc3VucmlzZXBvaW50IHBpbmN0cmxf aW50ZWwKWyAgMTg5LjE4MTk4MV0gLS0tWyBlbmQgdHJhY2UgMjkyZTZjYWY2NmRkZjBlMCBdLS0t ClsgIDE4OS4yMDE5NzBdIFJJUDogMDAxMDpkcm1fbW9kZV9vYmplY3RfdW5yZWdpc3RlcisweGUv MHg3MApbICAxODkuMjAxOTc1XSBDb2RlOiA1NCAwMCA0YyA4OSBlNyBlOCBkMiBkOCA1NiAwMCA1 YiA0MSA1YyA0MSA1ZCA1ZCBjMyAKOTAgNjYgMmUgMGYgMWYgODQgMDAgMDAgMDAgMDAgMDAgMGYg MWYgNDQgMDAgMDAgNTUgNDggODkgZTUgNDEgNTUgNDEgNTQgCjUzIDw0OD4gOGIgNDcgMjAgNDgg ODkgZmIgNDkgODkgZjUgNDggODMgMzggMDAgNzQgM2EgNGMgOGQgYTMgZDggMDEgMDAKWyAgMTg5 LjIwMTk3OF0gUlNQOiAwMDE4OmZmZmZhMWM0ODFlNzNiNjAgRUZMQUdTOiAwMDAxMDI0NgpbICAx ODkuMjAxOTgxXSBSQVg6IGZmZmZmZmZmOWU1MDJhOTAgUkJYOiBmZmZmOTVjN2RhMzI2ZTI4IFJD WDogCjAwMDAwMDAwMDAwMDAwMDEKWyAgMTg5LjIwMTk4Ml0gUkRYOiAwMDAwMDAwMDAwMDAwMDAw IFJTSTogZmZmZjk1YzdkYTMyNmUxOCBSREk6IApmMWNhNTBhOGZmNTA1MTVhClsgIDE4OS4yMDE5 ODRdIFJCUDogZmZmZmExYzQ4MWU3M2I3OCBSMDg6IDAwMDAwMDAwMDAwMDAwMDEgUjA5OiAKMDAw MDAwMDAwMDAwMDAwMApbICAxODkuMjAxOTg2XSBSMTA6IDAwMDAwMDAwMDAwMDAwMDggUjExOiBm ZmZmOTVjN2RjZjUzNzcwIFIxMjogCmZmZmY5NWM3ZGEzMjZlMDAKWyAgMTg5LjIwMTk4N10gUjEz OiBmZmZmYTFjNDgxZTczYmYwIFIxNDogZmZmZjk1YzdlM2NiN2FjOCBSMTU6IApmZmZmOTVjN2U2 Y2IyM2MwClsgIDE4OS4yMDE5OTBdIEZTOiAgMDAwMDdmNjg4Y2NmMTcwMCgwMDAwKSBHUzpmZmZm OTVjN2U3YTAwMDAwKDAwMDApIAprbmxHUzowMDAwMDAwMDAwMDAwMDAwClsgIDE4OS4yMDE5OTFd IENTOiAgMDAxMCBEUzogMDAwMCBFUzogMDAwMCBDUjA6IDAwMDAwMDAwODAwNTAwMzMKWyAgMTg5 LjIwMTk5M10gQ1IyOiAwMDAwN2Y2ODk1MTE5NmZmIENSMzogMDAwMDAwMDE1ZTM3NjAwNCBDUjQ6 IAowMDAwMDAwMDAwMzYwNmYwClsgIDE4OS4yMDE5OTVdIERSMDogMDAwMDAwMDAwMDAwMDAwMCBE UjE6IDAwMDAwMDAwMDAwMDAwMDAgRFIyOiAKMDAwMDAwMDAwMDAwMDAwMApbICAxODkuMjAxOTk3 XSBEUjM6IDAwMDAwMDAwMDAwMDAwMDAgRFI2OiAwMDAwMDAwMGZmZmUwZmYwIERSNzogCjAwMDAw MDAwMDAwMDA0MDAKCkJlc3QgcmVnYXJkcywKQmFvbHUKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4