From: Sui Jingfeng <sui.jingfeng@linux.dev>
To: David Airlie <airlied@gmail.com>
Cc: linux-fbdev@vger.kernel.org,
Sui Jingfeng <suijingfeng@loongson.cn>,
kvm@vger.kernel.org, intel-gfx@lists.freedesktop.org,
Pan Xinhui <Xinhui.Pan@amd.com>,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
amd-gfx@lists.freedesktop.org, Daniel Vetter <daniel@ffwll.ch>,
Alex Deucher <alexander.deucher@amd.com>,
Christian Konig <christian.koenig@amd.com>
Subject: [PATCH v3 6/9] drm/radeon: Add an implement for the is_primary_gpu function callback
Date: Wed, 12 Jul 2023 00:43:07 +0800 [thread overview]
Message-ID: <20230711164310.791756-7-sui.jingfeng@linux.dev> (raw)
In-Reply-To: <20230711164310.791756-1-sui.jingfeng@linux.dev>
From: Sui Jingfeng <suijingfeng@loongson.cn>
[why]
The vga_is_firmware_default() function defined in drivers/pci/vgaarb.c is
arch-dependent, it's no-op on non-x86 architectures. The arbitration is
not usabe on non-x86 platform.
[how]
The device that owns the firmware framebuffer should be the default boot
device. This patch adds an arch-independent function to implement this
rule. The vgaarb will call back to radeon_is_primary_gpu() when drm/radeon
is bound to a ATI gpu device successfully.
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian Konig <christian.koenig@amd.com>
Cc: Pan Xinhui <Xinhui.Pan@amd.com>
Cc: David Airlie <airlied@gmail.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Sui Jingfeng <suijingfeng@loongson.cn>
---
drivers/gpu/drm/radeon/radeon_device.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index 71f2ff39d6a1..7db8dc5f79a9 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -34,6 +34,7 @@
#include <linux/vga_switcheroo.h>
#include <linux/vgaarb.h>
+#include <drm/drm_aperture.h>
#include <drm/drm_cache.h>
#include <drm/drm_crtc_helper.h>
#include <drm/drm_device.h>
@@ -1263,6 +1264,15 @@ static const struct vga_switcheroo_client_ops radeon_switcheroo_ops = {
.can_switch = radeon_switcheroo_can_switch,
};
+static bool radeon_vga_is_primary_gpu(struct pci_dev *pdev)
+{
+ struct drm_device *dev = pci_get_drvdata(pdev);
+ struct radeon_device *rdev = dev->dev_private;
+ struct radeon_mc *gmc = &rdev->mc;
+
+ return drm_aperture_contain_firmware_fb(gmc->aper_base, gmc->aper_size);
+}
+
/**
* radeon_device_init - initialize the driver
*
@@ -1425,7 +1435,7 @@ int radeon_device_init(struct radeon_device *rdev,
/* if we have > 1 VGA cards, then disable the radeon VGA resources */
/* this will fail for cards that aren't VGA class devices, just
* ignore it */
- vga_client_register(rdev->pdev, radeon_vga_set_decode, NULL);
+ vga_client_register(rdev->pdev, radeon_vga_set_decode, radeon_vga_is_primary_gpu);
if (rdev->flags & RADEON_IS_PX)
runtime = true;
--
2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Sui Jingfeng <sui.jingfeng@linux.dev>
To: David Airlie <airlied@gmail.com>
Cc: linux-fbdev@vger.kernel.org,
Sui Jingfeng <suijingfeng@loongson.cn>,
kvm@vger.kernel.org, intel-gfx@lists.freedesktop.org,
Pan Xinhui <Xinhui.Pan@amd.com>,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
amd-gfx@lists.freedesktop.org, Daniel Vetter <daniel@ffwll.ch>,
Alex Deucher <alexander.deucher@amd.com>,
Christian Konig <christian.koenig@amd.com>
Subject: [Intel-gfx] [PATCH v3 6/9] drm/radeon: Add an implement for the is_primary_gpu function callback
Date: Wed, 12 Jul 2023 00:43:07 +0800 [thread overview]
Message-ID: <20230711164310.791756-7-sui.jingfeng@linux.dev> (raw)
In-Reply-To: <20230711164310.791756-1-sui.jingfeng@linux.dev>
From: Sui Jingfeng <suijingfeng@loongson.cn>
[why]
The vga_is_firmware_default() function defined in drivers/pci/vgaarb.c is
arch-dependent, it's no-op on non-x86 architectures. The arbitration is
not usabe on non-x86 platform.
[how]
The device that owns the firmware framebuffer should be the default boot
device. This patch adds an arch-independent function to implement this
rule. The vgaarb will call back to radeon_is_primary_gpu() when drm/radeon
is bound to a ATI gpu device successfully.
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian Konig <christian.koenig@amd.com>
Cc: Pan Xinhui <Xinhui.Pan@amd.com>
Cc: David Airlie <airlied@gmail.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Sui Jingfeng <suijingfeng@loongson.cn>
---
drivers/gpu/drm/radeon/radeon_device.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index 71f2ff39d6a1..7db8dc5f79a9 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -34,6 +34,7 @@
#include <linux/vga_switcheroo.h>
#include <linux/vgaarb.h>
+#include <drm/drm_aperture.h>
#include <drm/drm_cache.h>
#include <drm/drm_crtc_helper.h>
#include <drm/drm_device.h>
@@ -1263,6 +1264,15 @@ static const struct vga_switcheroo_client_ops radeon_switcheroo_ops = {
.can_switch = radeon_switcheroo_can_switch,
};
+static bool radeon_vga_is_primary_gpu(struct pci_dev *pdev)
+{
+ struct drm_device *dev = pci_get_drvdata(pdev);
+ struct radeon_device *rdev = dev->dev_private;
+ struct radeon_mc *gmc = &rdev->mc;
+
+ return drm_aperture_contain_firmware_fb(gmc->aper_base, gmc->aper_size);
+}
+
/**
* radeon_device_init - initialize the driver
*
@@ -1425,7 +1435,7 @@ int radeon_device_init(struct radeon_device *rdev,
/* if we have > 1 VGA cards, then disable the radeon VGA resources */
/* this will fail for cards that aren't VGA class devices, just
* ignore it */
- vga_client_register(rdev->pdev, radeon_vga_set_decode, NULL);
+ vga_client_register(rdev->pdev, radeon_vga_set_decode, radeon_vga_is_primary_gpu);
if (rdev->flags & RADEON_IS_PX)
runtime = true;
--
2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Sui Jingfeng <sui.jingfeng@linux.dev>
To: David Airlie <airlied@gmail.com>
Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
linux-kernel@vger.kernel.org, intel-gfx@lists.freedesktop.org,
kvm@vger.kernel.org, linux-fbdev@vger.kernel.org,
Sui Jingfeng <suijingfeng@loongson.cn>,
Alex Deucher <alexander.deucher@amd.com>,
Christian Konig <christian.koenig@amd.com>,
Pan Xinhui <Xinhui.Pan@amd.com>, Daniel Vetter <daniel@ffwll.ch>
Subject: [PATCH v3 6/9] drm/radeon: Add an implement for the is_primary_gpu function callback
Date: Wed, 12 Jul 2023 00:43:07 +0800 [thread overview]
Message-ID: <20230711164310.791756-7-sui.jingfeng@linux.dev> (raw)
In-Reply-To: <20230711164310.791756-1-sui.jingfeng@linux.dev>
From: Sui Jingfeng <suijingfeng@loongson.cn>
[why]
The vga_is_firmware_default() function defined in drivers/pci/vgaarb.c is
arch-dependent, it's no-op on non-x86 architectures. The arbitration is
not usabe on non-x86 platform.
[how]
The device that owns the firmware framebuffer should be the default boot
device. This patch adds an arch-independent function to implement this
rule. The vgaarb will call back to radeon_is_primary_gpu() when drm/radeon
is bound to a ATI gpu device successfully.
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian Konig <christian.koenig@amd.com>
Cc: Pan Xinhui <Xinhui.Pan@amd.com>
Cc: David Airlie <airlied@gmail.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Sui Jingfeng <suijingfeng@loongson.cn>
---
drivers/gpu/drm/radeon/radeon_device.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index 71f2ff39d6a1..7db8dc5f79a9 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -34,6 +34,7 @@
#include <linux/vga_switcheroo.h>
#include <linux/vgaarb.h>
+#include <drm/drm_aperture.h>
#include <drm/drm_cache.h>
#include <drm/drm_crtc_helper.h>
#include <drm/drm_device.h>
@@ -1263,6 +1264,15 @@ static const struct vga_switcheroo_client_ops radeon_switcheroo_ops = {
.can_switch = radeon_switcheroo_can_switch,
};
+static bool radeon_vga_is_primary_gpu(struct pci_dev *pdev)
+{
+ struct drm_device *dev = pci_get_drvdata(pdev);
+ struct radeon_device *rdev = dev->dev_private;
+ struct radeon_mc *gmc = &rdev->mc;
+
+ return drm_aperture_contain_firmware_fb(gmc->aper_base, gmc->aper_size);
+}
+
/**
* radeon_device_init - initialize the driver
*
@@ -1425,7 +1435,7 @@ int radeon_device_init(struct radeon_device *rdev,
/* if we have > 1 VGA cards, then disable the radeon VGA resources */
/* this will fail for cards that aren't VGA class devices, just
* ignore it */
- vga_client_register(rdev->pdev, radeon_vga_set_decode, NULL);
+ vga_client_register(rdev->pdev, radeon_vga_set_decode, radeon_vga_is_primary_gpu);
if (rdev->flags & RADEON_IS_PX)
runtime = true;
--
2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Sui Jingfeng <sui.jingfeng@linux.dev>
To: David Airlie <airlied@gmail.com>
Cc: linux-fbdev@vger.kernel.org,
Sui Jingfeng <suijingfeng@loongson.cn>,
kvm@vger.kernel.org, intel-gfx@lists.freedesktop.org,
Pan Xinhui <Xinhui.Pan@amd.com>,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
amd-gfx@lists.freedesktop.org,
Alex Deucher <alexander.deucher@amd.com>,
Christian Konig <christian.koenig@amd.com>
Subject: [PATCH v3 6/9] drm/radeon: Add an implement for the is_primary_gpu function callback
Date: Wed, 12 Jul 2023 00:43:07 +0800 [thread overview]
Message-ID: <20230711164310.791756-7-sui.jingfeng@linux.dev> (raw)
In-Reply-To: <20230711164310.791756-1-sui.jingfeng@linux.dev>
From: Sui Jingfeng <suijingfeng@loongson.cn>
[why]
The vga_is_firmware_default() function defined in drivers/pci/vgaarb.c is
arch-dependent, it's no-op on non-x86 architectures. The arbitration is
not usabe on non-x86 platform.
[how]
The device that owns the firmware framebuffer should be the default boot
device. This patch adds an arch-independent function to implement this
rule. The vgaarb will call back to radeon_is_primary_gpu() when drm/radeon
is bound to a ATI gpu device successfully.
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian Konig <christian.koenig@amd.com>
Cc: Pan Xinhui <Xinhui.Pan@amd.com>
Cc: David Airlie <airlied@gmail.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Sui Jingfeng <suijingfeng@loongson.cn>
---
drivers/gpu/drm/radeon/radeon_device.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index 71f2ff39d6a1..7db8dc5f79a9 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -34,6 +34,7 @@
#include <linux/vga_switcheroo.h>
#include <linux/vgaarb.h>
+#include <drm/drm_aperture.h>
#include <drm/drm_cache.h>
#include <drm/drm_crtc_helper.h>
#include <drm/drm_device.h>
@@ -1263,6 +1264,15 @@ static const struct vga_switcheroo_client_ops radeon_switcheroo_ops = {
.can_switch = radeon_switcheroo_can_switch,
};
+static bool radeon_vga_is_primary_gpu(struct pci_dev *pdev)
+{
+ struct drm_device *dev = pci_get_drvdata(pdev);
+ struct radeon_device *rdev = dev->dev_private;
+ struct radeon_mc *gmc = &rdev->mc;
+
+ return drm_aperture_contain_firmware_fb(gmc->aper_base, gmc->aper_size);
+}
+
/**
* radeon_device_init - initialize the driver
*
@@ -1425,7 +1435,7 @@ int radeon_device_init(struct radeon_device *rdev,
/* if we have > 1 VGA cards, then disable the radeon VGA resources */
/* this will fail for cards that aren't VGA class devices, just
* ignore it */
- vga_client_register(rdev->pdev, radeon_vga_set_decode, NULL);
+ vga_client_register(rdev->pdev, radeon_vga_set_decode, radeon_vga_is_primary_gpu);
if (rdev->flags & RADEON_IS_PX)
runtime = true;
--
2.25.1
next prev parent reply other threads:[~2023-07-11 17:05 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-11 16:43 [PATCH v3 0/9] PCI/VGA: Improve the default VGA device selection Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-11 16:43 ` [PATCH v3 1/9] video/aperture: Add a helper to detect if an aperture contains firmware FB Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-19 20:43 ` Bjorn Helgaas
2023-07-19 20:43 ` Bjorn Helgaas
2023-07-19 20:43 ` Bjorn Helgaas
2023-07-19 20:43 ` [Intel-gfx] " Bjorn Helgaas
2023-07-19 21:18 ` suijingfeng
2023-07-19 21:18 ` suijingfeng
2023-07-19 21:18 ` suijingfeng
2023-07-19 21:18 ` [Intel-gfx] " suijingfeng
2023-07-11 16:43 ` [PATCH v3 2/9] video/aperture: Add a helper for determining if an unmoved aperture contain FB Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-11 16:43 ` [PATCH v3 3/9] PCI/VGA: Switch to aperture_contain_firmware_fb_nonreloc() Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-19 20:43 ` Bjorn Helgaas
2023-07-19 20:43 ` Bjorn Helgaas
2023-07-19 20:43 ` Bjorn Helgaas
2023-07-19 22:04 ` suijingfeng
2023-07-19 22:04 ` suijingfeng
2023-07-19 22:04 ` suijingfeng
2023-07-11 16:43 ` [PATCH v3 4/9] PCI/VGA: Improve the default VGA device selection Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-17 14:07 ` suijingfeng
2023-07-17 14:07 ` suijingfeng
2023-07-17 14:07 ` suijingfeng
2023-07-17 14:07 ` [Intel-gfx] " suijingfeng
2023-07-19 19:32 ` Bjorn Helgaas
2023-07-19 19:32 ` Bjorn Helgaas
2023-07-19 19:32 ` Bjorn Helgaas
2023-07-19 19:32 ` [Intel-gfx] " Bjorn Helgaas
2023-07-19 22:32 ` suijingfeng
2023-07-19 22:32 ` suijingfeng
2023-07-19 22:32 ` suijingfeng
2023-07-19 22:32 ` [Intel-gfx] " suijingfeng
2023-07-19 22:44 ` Sui Jingfeng
2023-07-19 22:44 ` Sui Jingfeng
2023-07-19 22:44 ` Sui Jingfeng
2023-07-19 22:44 ` [Intel-gfx] " Sui Jingfeng
2023-07-19 22:51 ` suijingfeng
2023-07-19 22:51 ` suijingfeng
2023-07-19 22:51 ` suijingfeng
2023-07-19 22:51 ` [Intel-gfx] " suijingfeng
2023-07-24 11:56 ` suijingfeng
2023-07-24 11:56 ` suijingfeng
2023-07-24 11:56 ` suijingfeng
2023-07-24 11:56 ` [Intel-gfx] " suijingfeng
2023-07-24 12:16 ` suijingfeng
2023-07-24 12:16 ` suijingfeng
2023-07-24 12:16 ` suijingfeng
2023-07-24 12:16 ` [Intel-gfx] " suijingfeng
2023-07-25 21:30 ` Bjorn Helgaas
2023-07-25 21:30 ` Bjorn Helgaas
2023-07-25 21:30 ` Bjorn Helgaas
2023-07-25 21:30 ` [Intel-gfx] " Bjorn Helgaas
2023-07-24 12:28 ` suijingfeng
2023-07-24 12:28 ` suijingfeng
2023-07-24 12:28 ` suijingfeng
2023-07-24 12:28 ` [Intel-gfx] " suijingfeng
2023-07-11 16:43 ` [PATCH v3 5/9] drm/amdgpu: Implement the is_primary_gpu callback of vga_client_register() Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng [this message]
2023-07-11 16:43 ` [PATCH v3 6/9] drm/radeon: Add an implement for the is_primary_gpu function callback Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-11 16:43 ` [PATCH v3 7/9] drm/i915: Add an implement for the is_primary_gpu hook Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-11 16:43 ` [PATCH v3 8/9] drm/ast: Register as a vga client to vgaarb by calling vga_client_register() Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-11 16:43 ` [PATCH v3 9/9] drm/loongson: Add an implement for the is_primary_gpu function callback Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-11 18:24 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for PCI/VGA: Improve the default VGA device selection Patchwork
2023-07-19 19:32 ` [PATCH v3 0/9] " Bjorn Helgaas
2023-07-19 19:32 ` Bjorn Helgaas
2023-07-19 19:32 ` Bjorn Helgaas
2023-07-19 19:32 ` [Intel-gfx] " Bjorn Helgaas
2023-07-20 9:17 ` Sui Jingfeng
2023-07-20 9:17 ` Sui Jingfeng
2023-07-20 9:17 ` Sui Jingfeng
2023-07-20 9:17 ` [Intel-gfx] " Sui Jingfeng
2023-07-24 12:47 ` suijingfeng
2023-07-24 12:47 ` suijingfeng
2023-07-24 12:47 ` suijingfeng
2023-07-24 12:47 ` [Intel-gfx] " suijingfeng
2023-07-25 21:32 ` Bjorn Helgaas
2023-07-25 21:32 ` Bjorn Helgaas
2023-07-25 21:32 ` Bjorn Helgaas
2023-07-25 21:32 ` [Intel-gfx] " Bjorn Helgaas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230711164310.791756-7-sui.jingfeng@linux.dev \
--to=sui.jingfeng@linux.dev \
--cc=Xinhui.Pan@amd.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.koenig@amd.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=kvm@vger.kernel.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=suijingfeng@loongson.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.