Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp37116530rwd; Tue, 11 Jul 2023 09:37:14 -0700 (PDT) X-Google-Smtp-Source: APBJJlHhlKmvPIzX6ujY0p4wVQ00eIg5Xtlnbv3MYkyHex6l6tdK/5Rx8WX7Wdl2VQx1SS7RB2mt X-Received: by 2002:a17:906:259:b0:993:eed1:8f2 with SMTP id 25-20020a170906025900b00993eed108f2mr10585100ejl.1.1689093434640; Tue, 11 Jul 2023 09:37:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689093434; cv=none; d=google.com; s=arc-20160816; b=rUzA+Fw0mp9UoacuFy1tmxo4CeYnOOmFSqcRqIMSOnWSnIZhBV0T0WzZXg6LFZF3FF JPKbBckr9DPC/wTh5+z7zC514GIZ2CjttR2vBGKqGm/h7om1ot/wkRmU7CiUVSrWvdbv g5cPQN/FspVXIG/kifW6qCltm28B5hpwumGDzd8GdlvQJyzYoW++06E6jUENPLO7JVZA rJBzW3UNJYkPJgACx+yaYWS1xyKeQE2su3pyUwSwdcblQrXWxWH1OYz4LQgPq1iT1wak LOgmZHpJ4teiTfJ+g+6JFNpUVfMoACH5iuCWgNFZwwZTCfzCrp20W0uXlmzyQdDHeyg8 LYOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=AOe2sK5corMJVr8s18spKTEHFO7S6COQNSRgsjkc54A=; fh=XlWA3Y+MFaMsv8l7a0bPbKiHO/DSgPSssRLTDW9iA0I=; b=wNv69FejYSv87YjtTLg9xyI9p2vDFP3SHlbVWgtWrJPj3PW7rxqERWzxxmV0kYkIrb moQiDqrS5xOSmul9vTXB9Re2uIcZ6mOePhVxzr1q3E1yHh6K6ipjbrjSCk1ra9tZOS/b PjMHn4ektwmFORHSojwiTq6CyFAEgEzyhsAle4nAc89eEWUBo+DJrXZHXbEA1yhS5ixo LmomdiEVIpkyA/QkfbnS2jYlv55JbFFRJ+rVqDTYlLGLNiArJ9quXH+7Z8dT60ChOItY PDHBF2jE6rgwUEFWDzq7JyqTv6YWD6gg3IffpWUW06BTm+KpLFjhItBA7I5D3vJx9fO9 4V1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=ixKAhLu2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i12-20020a1709064ecc00b00977e729a2f7si2360300ejv.951.2023.07.11.09.36.50; Tue, 11 Jul 2023 09:37:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=ixKAhLu2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232165AbjGKQcU (ORCPT + 99 others); Tue, 11 Jul 2023 12:32:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32888 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232142AbjGKQcS (ORCPT ); Tue, 11 Jul 2023 12:32:18 -0400 Received: from out-28.mta0.migadu.com (out-28.mta0.migadu.com [91.218.175.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3021E12F for ; Tue, 11 Jul 2023 09:32:15 -0700 (PDT) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1689093133; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AOe2sK5corMJVr8s18spKTEHFO7S6COQNSRgsjkc54A=; b=ixKAhLu28/nq1vazDkLtGsR/XEiVHt1ra2tNTmdDLo9BPHekHQ7OViZ9PZCadSk3DSxHL1 6Md7s5pSxG/rbDPk5WiAXKGCJ9q1jxF9DVPaEOAcGbdFMUXTFAqhY+mtay7NocxBghXDdE nl8Q8HRCQmWsB+O7po7KrEn9IlnkOKE= From: Sui Jingfeng To: Alex Deucher , Christian Koenig , David Airlie , Daniel Vetter , Dave Airlie , Thomas Zimmermann , Jocelyn Falempe , Javier Martinez Canillas , Maxime Ripard , Jani Nikula , Joonas Lahtinen , Ben Skeggs , Lyude Paul , Bjorn Helgaas , Helge Deller , Mario Limonciello Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, intel-gfx@lists.freedesktop.org, nouveau@lists.freedesktop.org, linux-pci@vger.kernel.org, kvm@vger.kernel.org, linux-fbdev@vger.kernel.org, Sui Jingfeng Subject: [PATCH v3 0/9] PCI/VGA: Improve the default VGA device selection Date: Wed, 12 Jul 2023 00:31:46 +0800 Message-Id: <20230711163155.791522-1-sui.jingfeng@linux.dev> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sui Jingfeng Currently, the default VGA device selection is not perfect. Potential problems are: 1) This function is a no-op on non-x86 architectures. 2) It does not take the PCI Bar may get relocated into consideration. 3) It is not effective for the PCI device without a dedicated VRAM Bar. 4) It is device-agnostic, thus it has to waste the effort to iterate all of the PCI Bar to find the VRAM aperture. 5) It has invented lots of methods to determine which one is the default boot device on a multiple video card coexistence system. But this is still a policy because it doesn't give the user a choice to override. With the observation that device drivers or video aperture helpers may have better knowledge about which PCI bar contains the firmware FB, This patch tries to solve the above problems by introducing a function callback to the vga_client_register() function interface. DRM device drivers for the PCI device need to register the is_boot_device() function callback during the driver loading time. Once the driver binds the device successfully, VRAARB will call back to the driver. This gives the device drivers a chance to provide accurate boot device identification. Which in turn unlock the abitration service to non-x86 architectures. A device driver can also pass a NULL pointer to keep the original behavior. This series is applied on the drm-tip branch (with a cleanup patch set[1] applied beforehand) [1] https://patchwork.freedesktop.org/series/120548/ v2: * Add a simple implemment for drm/i915 and drm/ast * Pick up all tags (Mario) v3: * Fix a mistake for drm/i915 implement * Fix patch can not be applied problem because of drm/amdgpu merged other people's patch. Sui Jingfeng (9): video/aperture: Add a helper to detect if an aperture contains firmware FB video/aperture: Add a helper for determining if an unmoved aperture contain FB PCI/VGA: Switch to aperture_contain_firmware_fb_nonreloc() PCI/VGA: Improve the default VGA device selection drm/amdgpu: Implement the is_primary_gpu callback of vga_client_register() drm/radeon: Add an implement for the is_primary_gpu function callback drm/i915: Add an implement for the is_primary_gpu hook drm/ast: Register as a vga client to vgaarb by calling vga_client_register() drm/loongson: Add an implement for the is_primary_gpu function callback drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 12 +++- drivers/gpu/drm/ast/ast_drv.c | 29 +++++++++ drivers/gpu/drm/drm_aperture.c | 16 +++++ drivers/gpu/drm/i915/display/intel_vga.c | 31 ++++++++- drivers/gpu/drm/loongson/lsdc_drv.c | 10 ++- drivers/gpu/drm/nouveau/nouveau_vga.c | 2 +- drivers/gpu/drm/radeon/radeon_device.c | 12 +++- drivers/pci/vgaarb.c | 74 ++++++++++++++++------ drivers/vfio/pci/vfio_pci_core.c | 2 +- drivers/video/aperture.c | 65 +++++++++++++++++++ include/drm/drm_aperture.h | 2 + include/linux/aperture.h | 14 ++++ include/linux/vgaarb.h | 8 ++- 13 files changed, 247 insertions(+), 30 deletions(-) -- 2.25.1