From patchwork Wed Jul 19 01:28:34 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Axtens X-Patchwork-Id: 9850247 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 54773602C8 for ; Wed, 19 Jul 2017 01:30:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 43BB9285D4 for ; Wed, 19 Jul 2017 01:30:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 38895285E1; Wed, 19 Jul 2017 01:30:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id B2E73285CD for ; Wed, 19 Jul 2017 01:30:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=tO7fH+8PkjLsSvaI+m0dXx6/qSlv+ZFwPjJTgZQujok=; b=eA87xcc2/uUSOMD5/eutQqbEbe HcrH+MhQajpE4twnTPSDP/7U4x2i1oBBWE0DqwNzpDgtQMbtJLreimEZZ0TOvUUELZhzZjrqx6Ese CVhyiJXOXGnfPTt/89xskv7v2koRE5R12xTXXXujCCnSKJvua4gBN4gcdP1vOaV9Wry2XVthATndF +bO79kCOqVLnWx40ef+lQVsam4jCkjxq7qkN5IZj9V2w9lAQqoHdN/YEDMqO2ZyMKv87aXFtAz7TF dSehHlRq3frFXKDJzwj9CvpoHbVqGUIEdMtp5x3SLN3qpOwSWC/gR1zHqVdk22e73JCqYvclGflyO v5egCniQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1dXdoS-0002DN-11; Wed, 19 Jul 2017 01:30:04 +0000 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1dXdo9-0001jB-1g for linux-arm-kernel@lists.infradead.org; Wed, 19 Jul 2017 01:29:50 +0000 Received: by mail-pg0-x243.google.com with SMTP id y129so4854633pgy.3 for ; Tue, 18 Jul 2017 18:29:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axtens.net; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=rSS2eipgv9pIXzYYfw3XVFzRsORq4uNuyG7CP1C5huE=; b=mQ7jRE86VrwmzkxBIv5BG0JLsk7BKsvfLlVv0f98g+qjDLML9OL4qVRrSeeoVFUh8t ICj17sLIGHHtyz//37CD9mLNagYowtHv31LEoSOnrbFXKp/4dljb8FGQgAcr2PEJYG7o 8a8uJAqsHLsOWtlh5fa+5MFe3u6HNo6mh62Bw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=rSS2eipgv9pIXzYYfw3XVFzRsORq4uNuyG7CP1C5huE=; b=pPeY39kNcZ9J+5miZyElP6BdGeUDT7Qb9y/G1UxvFsA7r1jvqP3LFEthvz594Ply5D UAnHJaaaCj+rG9e3UxqAvp/g70l7d/BGbkK2nmVMjN/vEvN3UG1sEzQb5hreleWz7qdf FEULzd3ESJqTpWf/N0gkz/URWFtghEUPwwd7GhTPr0Dck7CTKef9dLuoR+PvW2MEsqEh tunozE4bbD5SwYO/eCm1OUn4Y/dwTRZEKyDxm33Uhh9Mz7y1t4mybZst7J1vnqU0G9hT 4nj7HfzG6Jpv8caKPW5c6IPozoLYMmJ6/e/gf2LtPkGLIpXywtRUi+2uup37fGhb5CUj ckug== X-Gm-Message-State: AIVw110ONT99c3F94++UVWsoz8dNgFJQgA/fYNM7eJqf9McDjKETzmFk 4M00CZgkcYIYX+xm X-Received: by 10.84.170.67 with SMTP id i61mr518489plb.114.1500427764054; Tue, 18 Jul 2017 18:29:24 -0700 (PDT) Received: from localhost.localdomain (203-59-51-51.dyn.iinet.net.au. [203.59.51.51]) by smtp.gmail.com with ESMTPSA id n90sm7582401pfk.105.2017.07.18.18.29.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 18 Jul 2017 18:29:23 -0700 (PDT) From: Daniel Axtens To: linux-pci@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 1/4] powerpc: simplify and fix VGA default device behaviour Date: Wed, 19 Jul 2017 11:28:34 +1000 Message-Id: <20170719012839.20124-2-dja@axtens.net> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170719012839.20124-1-dja@axtens.net> References: <20170719012839.20124-1-dja@axtens.net> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170718_182945_310887_154C90EC X-CRM114-Status: GOOD ( 16.82 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: gabriele.paoloni@huawei.com, airlied@linux.ie, benh@kernel.crashing.org, will.deacon@arm.com, z.liuxinliang@hisilicon.com, Brian King , alex.williamson@redhat.com, catalin.marinas@arm.com, zourongrong@gmail.com, daniel.vetter@intel.com, helgass@kernel.org, Daniel Axtens MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Some powerpc devices provide a PCI display that isn't picked up by the VGA arbiter, presumably because it doesn't support the PCI legacy VGA ranges. Commit c2e1d84523ad ("powerpc: Set default VGA device") introduced an arch quirk to mark these devices as default to fix X autoconfig. The commit message stated that the patch: Ensures a default VGA is always set if a graphics adapter is present, even if firmware did not initialize it. If more than one graphics adapter is present, ensure the one initialized by firmware is set as the default VGA device. The patch used the following test to decide whether or not to mark a device as default: pci_read_config_word(pdev, PCI_COMMAND, &cmd); if ((cmd & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) || !vga_default_device()) vga_set_default_device(pdev); This doesn't seem like it works quite as intended. Because of the logical OR, the default device will be set in 2 cases: 1) if there is no default device OR 2) if this device has normal memory/IO decoding turned on This will work as intended if there is only one device, but if there are multiple devices, we may override the device the VGA arbiter picked. Instead, set a device as default if there is no default device AND this device decodes. This will not change behaviour on single-headed systems. Cc: Brian King Signed-off-by: Daniel Axtens --- Tested in TCG (the card provided by qemu doesn't automatically register with vgaarb, so the relevant code path has been tested) but I would appreciate any tests on real hardware. --- arch/powerpc/kernel/pci-common.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index 341a7469cab8..c95fdda3a2dc 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c @@ -1746,8 +1746,11 @@ static void fixup_vga(struct pci_dev *pdev) { u16 cmd; + if (vga_default_device()) + return; + pci_read_config_word(pdev, PCI_COMMAND, &cmd); - if ((cmd & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) || !vga_default_device()) + if (cmd & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) vga_set_default_device(pdev); }