From patchwork Mon Dec 19 11:39:16 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 88459 Delivered-To: patch@linaro.org Received: by 10.140.20.101 with SMTP id 92csp1108515qgi; Mon, 19 Dec 2016 03:39:28 -0800 (PST) X-Received: by 10.84.218.5 with SMTP id q5mr34079008pli.136.1482147568453; Mon, 19 Dec 2016 03:39:28 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m17si18063715pli.290.2016.12.19.03.39.28; Mon, 19 Dec 2016 03:39:28 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755680AbcLSLjY (ORCPT + 25 others); Mon, 19 Dec 2016 06:39:24 -0500 Received: from mx2.suse.de ([195.135.220.15]:55173 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755264AbcLSLjV (ORCPT ); Mon, 19 Dec 2016 06:39:21 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 51669AD5B; Mon, 19 Dec 2016 11:39:18 +0000 (UTC) To: chris@chris-wilson.co.uk, Linux Kernel Mailing List , dri-devel@lists.freedesktop.org, intel-gfx Cc: airlied@linux.ie, jani.nikula@linux.intel.com, daniel.vetter@intel.com, Konrad Rzeszutek Wilk , Boris Ostrovsky From: Juergen Gross Subject: i915 regression in kernel 4.10 Message-ID: <7abf8559-3aa7-af3a-8dc1-1dee42019fcd@suse.com> Date: Mon, 19 Dec 2016 12:39:16 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With recent 4.10 kernel the graphics isn't coming up under Xen. First failure message is: [ 46.656649] i915 0000:00:02.0: swiotlb buffer is full (sz: 1630208 bytes) Later I see splats like: [ 49.393583] general protection fault: 0000 [#1] SMP [ 49.403800] Modules linked in: bridge stp llc tun arc4 iwldvm mac80211 uvcvideo snd_hda_codec_realtek snd_hda_codec_hdmi videobuf2_vmalloc snd_hda_codec_generic videobuf2_memops snd_hda_intel videobuf2_v4l2 snd_hda_codec videobuf2_core iwlwifi videodev snd_hda_core e1000e intel_rapl xhci_pci x86_pkg_temp_thermal xhci_hcd intel_powerclamp coretemp crct10dif_pclmul snd_hwdep joydev crc32_pclmul crc32c_intel ghash_clmulni_intel mei_me ptp iTCO_wdt aesni_intel snd_pcm ppdev mei aes_x86_64 iTCO_vendor_support lrw sdhci_pci gf128mul lpc_ich parport_pc pps_core cfg80211 glue_helper ablk_helper snd_timer parport mfd_core i2c_i801 snd i2c_smbus dell_laptop i2c_hid hid psmouse dell_rbtn dell_smbios tpm_tis i2c_designware_platform rfkill soundcore xenfs tpm_tis_core i2c_designware_core tpm dcdbas xen_privcmd evdev serio_raw battery ac dell_smm_hwmon thermal dell_smo8800 cryptd pcspkr dm_mod ext4 crc16 jbd2 mbcache sr_mod cdrom sd_mod ahci libahci ehci_pci ehci_hcd libata usbcore usb_common sdhci_acpi sdhci i915 video mmc_core i2c_algo_bit drm_kms_helper drm button xen_acpi_processor xen_pciback xen_netback xen_blkback xen_gntalloc xen_gntdev xen_evtchn target_core_mod configfs sg scsi_mod autofs4 [ 49.616634] CPU: 2 PID: 1663 Comm: gnome-shell Tainted: G W 4.8.0-rc2-pv+ #763 [ 49.633989] Hardware name: Dell Inc. Latitude E6440/0159N7, BIOS A07 06/26/2014 [ 49.649235] task: ffff8801f44ac140 task.stack: ffff8801f944c000 [ 49.661738] RIP: e030:[] [] gen6_ppgtt_insert_entries+0xd6/0x1f0 [i915] [ 49.682062] RSP: e02b:ffff8801f944faa0 EFLAGS: 00010202 [ 49.693355] RAX: 672f726574697254 RBX: ffff8801f46beda0 RCX: 0000000000000000 [ 49.708282] RDX: 672f726574697257 RSI: 0000000000000001 RDI: 0000000000000640 [ 49.723232] RBP: 0000000003020140 R08: 0000000000000000 R09: ffff8801f46e2000 [ 49.738182] R10: ffff8801f944fc00 R11: 0000000000000007 R12: 0000000000001031 [ 49.753110] R13: ffff8801f46e2000 R14: ffff8801f46be000 R15: 0000000000000369 [ 49.768039] FS: 00007f0e354e5a80(0000) GS:ffff8801ff900000(0000) knlGS:ffff8801ff900000 [ 49.784879] CS: e033 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 49.797033] CR2: 0000000005636ff0 CR3: 00000001e9c8c000 CR4: 0000000000042660 [ 49.811972] Stack: [ 49.816681] 727365642f61632f 0000000100000031 0000000100000000 ffff8801f44ac140 [ 49.832131] ffff8801f45f7a00 0000000000000080 0000000000000001 0000000000000000 [ 49.847584] ffff8801f944fcde ffff8801f45f7a00 ffffffffa01f7333 00000000eb9bbc88 [ 49.863045] Call Trace: [ 49.868652] [] ? aliasing_gtt_bind_vma+0x83/0xd0 [i915] [ 49.883111] [] ? i915_vma_bind+0x79/0x110 [i915] [ 49.896345] [] ? __i915_vma_do_pin+0x2ff/0x4c0 [i915] [ 49.910477] [] ? __radix_tree_insert+0x29/0xc0 [ 49.923368] [] ? kmem_cache_alloc+0x1c4/0x1e0 [ 49.936159] [] ? i915_gem_execbuffer_reserve_vma.isra.43+0x131/0x1a0 [i915] [ 49.954117] [] ? i915_gem_execbuffer_reserve.isra.44+0x2aa/0x3a0 [i915] [ 49.971352] [] ? i915_gem_do_execbuffer.isra.49+0x6a9/0x1690 [i915] [ 49.987889] [] ? __alloc_pages_nodemask+0x133/0xc40 [ 50.001677] [] ? i915_gem_execbuffer2+0xd6/0x240 [i915] [ 50.016131] [] ? drm_ioctl+0x191/0x3f0 [drm] [ 50.028675] [] ? i915_gem_execbuffer+0x320/0x320 [i915] [ 50.043123] [] ? handle_mm_fault+0x3ac/0x12e0 [ 50.055839] [] ? do_vfs_ioctl+0x8a/0x5b0 [ 50.067677] [] ? SyS_ioctl+0x6f/0x80 [ 50.078815] [] ? entry_SYSCALL_64_fastpath+0x1e/0xa8 [ 50.092725] Code: 00 10 00 00 44 3b 64 24 08 72 ae f6 45 00 02 75 66 48 8b 55 20 48 8d 45 20 f6 c2 01 0f 85 f8 00 00 00 48 85 c0 0f 84 fb 00 00 00 <44> 8b 60 08 8b 48 0c 48 89 c5 48 8b 70 10 44 01 e1 44 89 e7 48 [ 50.131694] RIP [] gen6_ppgtt_insert_entries+0xd6/0x1f0 [i915] [ 50.147396] RSP [ 50.158793] ---[ end trace 6fc5bf1c09423b3f ]--- I have bisected the commits and found the bug to be introduced in commit 871dfbd67d4ecbcc83fc9e80a310ca9bf3c44c40 ("drm/i915: Allow compaction upto SWIOTLB max segment size"). To be able to test this commit with Xen you'll need the attached patch in order to enable the system to boot or you have to disable loading of microcode. Juergen Return-path: Received: from relay2.suse.de ([149.44.160.134]) by smtp.nue.novell.com with ESMTP (NOT encrypted); Fri, 16 Dec 2016 11:45:10 +0100 Received: from imap.suse.de (imap2-int.suse.de [195.135.220.8]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 8AFCD2C2F6; Fri, 16 Dec 2016 10:45:09 +0000 (UTC) Received: from pd.tnic (p4FC0A0D4.dip0.t-ipconnect.de [79.192.160.212]) by imap.suse.de (Postfix) with ESMTPSA id 4706011970; Fri, 16 Dec 2016 10:45:09 +0000 (UTC) Received: by pd.tnic (Postfix, from userid 1000) id 3EF2E160EE6; Fri, 16 Dec 2016 11:45:05 +0100 (CET) Date: Fri, 16 Dec 2016 11:45:05 +0100 From: Borislav Petkov To: Juergen Gross Cc: Boris Ostrovsky , Linux Kernel Mailing List , xen-devel Subject: Re: Can't boot as Xen dom0 due to commit fe055896 Message-ID: <20161216104505.lk3s7fc7brrnmbq3@pd.tnic> References: <20161215164635.thm7ruio2ddnxszw@pd.tnic> <20161215171755.xpfuax7a6q3jofet@pd.tnic> <20161215173609.ornfok6lk5oro2pj@pd.tnic> <20161216090228.ri4alokiaagqtibt@pd.tnic> <29d252b8-67ff-bd61-f274-0ed75708cd55@suse.com> <20161216094326.bnkr5a2k3njmdeyi@pd.tnic> <7ca8a9b9-e374-8052-6be3-d3eda78c891a@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <7ca8a9b9-e374-8052-6be3-d3eda78c891a@suse.com> User-Agent: NeoMutt/20161014 (1.7.1) On Fri, Dec 16, 2016 at 11:00:29AM +0100, Juergen Gross wrote: > Should work. I'm happy to test any patch. :-) I'm happy that you're happy to! :-) Let's try this below. Thanks! --- diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c index 6996413c78c3..c4bb2f7169f6 100644 --- a/arch/x86/kernel/cpu/microcode/core.c +++ b/arch/x86/kernel/cpu/microcode/core.c @@ -44,7 +44,7 @@ #define DRIVER_VERSION "2.2" static struct microcode_ops *microcode_ops; -static bool dis_ucode_ldr; +static bool dis_ucode_ldr = true; LIST_HEAD(microcode_cache); @@ -76,6 +76,7 @@ struct cpu_info_ctx { static bool __init check_loader_disabled_bsp(void) { static const char *__dis_opt_str = "dis_ucode_ldr"; + u32 a, b, c, d; #ifdef CONFIG_X86_32 const char *cmdline = (const char *)__pa_nodebug(boot_command_line); @@ -88,8 +89,23 @@ static bool __init check_loader_disabled_bsp(void) bool *res = &dis_ucode_ldr; #endif - if (cmdline_find_option_bool(cmdline, option)) - *res = true; + if (!have_cpuid_p()) + return *res; + + a = 1; + c = 0; + native_cpuid(&a, &b, &c, &d); + + /* + * CPUID(1).ECX[31]: reserved for hypervisor use. This is still not + * completely accurate as xen pv guests don't see that CPUID bit set but + * that's good enough as they don't land on the BSP path anyway. + */ + if (c & BIT(31)) + return *res; + + if (cmdline_find_option_bool(cmdline, option) <= 0) + *res = false; return *res; } @@ -121,9 +137,6 @@ void __init load_ucode_bsp(void) if (check_loader_disabled_bsp()) return; - if (!have_cpuid_p()) - return; - vendor = x86_cpuid_vendor(); family = x86_cpuid_family(); @@ -157,9 +170,6 @@ void load_ucode_ap(void) if (check_loader_disabled_ap()) return; - if (!have_cpuid_p()) - return; - vendor = x86_cpuid_vendor(); family = x86_cpuid_family(); -- Regards/Gruss, Boris. SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg) --