Skip to content

Commit 2f89bb3

Browse files
Ben Skeggsairlied
authored andcommitted
drm/nouveau/pci: add PRI address of config space mirror to nvkm_pci_func
These registers have moved on GH100/GBxxx, and the GSP-RM init code uses hardcoded values from earlier GPUs to fill GspSystemInfo. Replace the per-GPU accessors in nvkm_pci_func with region info, and use it when initialising GspSystemInfo. Signed-off-by: Ben Skeggs <[email protected]> Reviewed-by: Dave Airlie <[email protected]> Reviewed-by: Timur Tabi <[email protected]> Tested-by: Timur Tabi <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
1 parent 53dac06 commit 2f89bb3

File tree

15 files changed

+33
-90
lines changed

15 files changed

+33
-90
lines changed

drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "priv.h"
2525

2626
#include <core/pci.h>
27+
#include <subdev/pci/priv.h>
2728
#include <subdev/timer.h>
2829
#include <subdev/vfn.h>
2930
#include <engine/fifo/chan.h>
@@ -905,8 +906,8 @@ r535_gsp_set_system_info(struct nvkm_gsp *gsp)
905906
info->gpuPhysInstAddr = device->func->resource_addr(device, 3);
906907
info->nvDomainBusDeviceFunc = pci_dev_id(pdev->pdev);
907908
info->maxUserVa = TASK_SIZE;
908-
info->pciConfigMirrorBase = 0x088000;
909-
info->pciConfigMirrorSize = 0x001000;
909+
info->pciConfigMirrorBase = device->pci->func->cfg.addr;
910+
info->pciConfigMirrorSize = device->pci->func->cfg.size;
910911
r535_gsp_acpi_info(gsp, &info->acpiMethodData);
911912

912913
return nvkm_gsp_rpc_wr(gsp, info, NVKM_GSP_RPC_REPLY_NOWAIT);

drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "nvrm/msgfn.h"
1313

1414
#include <core/pci.h>
15+
#include <subdev/pci/priv.h>
1516

1617
static u32
1718
r570_gsp_sr_data_size(struct nvkm_gsp *gsp)
@@ -157,8 +158,8 @@ r570_gsp_set_system_info(struct nvkm_gsp *gsp)
157158
info->gpuPhysInstAddr = device->func->resource_addr(device, 3);
158159
info->nvDomainBusDeviceFunc = pci_dev_id(pdev);
159160
info->maxUserVa = TASK_SIZE;
160-
info->pciConfigMirrorBase = 0x088000;
161-
info->pciConfigMirrorSize = 0x001000;
161+
info->pciConfigMirrorBase = device->pci->func->cfg.addr;
162+
info->pciConfigMirrorSize = device->pci->func->cfg.size;
162163
info->PCIDeviceID = (pdev->device << 16) | pdev->vendor;
163164
info->PCISubDeviceID = (pdev->subsystem_device << 16) | pdev->subsystem_vendor;
164165
info->PCIRevisionID = pdev->revision;

drivers/gpu/drm/nouveau/nvkm/subdev/pci/base.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,26 +39,26 @@ nvkm_pci_msi_rearm(struct nvkm_device *device)
3939
u32
4040
nvkm_pci_rd32(struct nvkm_pci *pci, u16 addr)
4141
{
42-
return pci->func->rd32(pci, addr);
42+
return nvkm_rd32(pci->subdev.device, pci->func->cfg.addr + addr);
4343
}
4444

4545
void
4646
nvkm_pci_wr08(struct nvkm_pci *pci, u16 addr, u8 data)
4747
{
48-
pci->func->wr08(pci, addr, data);
48+
nvkm_wr08(pci->subdev.device, pci->func->cfg.addr + addr, data);
4949
}
5050

5151
void
5252
nvkm_pci_wr32(struct nvkm_pci *pci, u16 addr, u32 data)
5353
{
54-
pci->func->wr32(pci, addr, data);
54+
nvkm_wr32(pci->subdev.device, pci->func->cfg.addr + addr, data);
5555
}
5656

5757
u32
5858
nvkm_pci_mask(struct nvkm_pci *pci, u16 addr, u32 mask, u32 value)
5959
{
60-
u32 data = pci->func->rd32(pci, addr);
61-
pci->func->wr32(pci, addr, (data & ~mask) | value);
60+
u32 data = nvkm_pci_rd32(pci, addr);
61+
nvkm_pci_wr32(pci, addr, (data & ~mask) | value);
6262
return data;
6363
}
6464

drivers/gpu/drm/nouveau/nvkm/subdev/pci/g84.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,9 @@ g84_pcie_init(struct nvkm_pci *pci)
132132

133133
static const struct nvkm_pci_func
134134
g84_pci_func = {
135+
.cfg = { .addr = 0x088000, .size = 0x1000 },
136+
135137
.init = g84_pci_init,
136-
.rd32 = nv40_pci_rd32,
137-
.wr08 = nv40_pci_wr08,
138-
.wr32 = nv40_pci_wr32,
139138
.msi_rearm = nv46_pci_msi_rearm,
140139

141140
.pcie.init = g84_pcie_init,

drivers/gpu/drm/nouveau/nvkm/subdev/pci/g92.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,9 @@ g92_pcie_version_supported(struct nvkm_pci *pci)
3333

3434
static const struct nvkm_pci_func
3535
g92_pci_func = {
36+
.cfg = { .addr = 0x088000, .size = 0x1000 },
37+
3638
.init = g84_pci_init,
37-
.rd32 = nv40_pci_rd32,
38-
.wr08 = nv40_pci_wr08,
39-
.wr32 = nv40_pci_wr32,
4039
.msi_rearm = nv46_pci_msi_rearm,
4140

4241
.pcie.init = g84_pcie_init,

drivers/gpu/drm/nouveau/nvkm/subdev/pci/g94.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,9 @@
2525

2626
static const struct nvkm_pci_func
2727
g94_pci_func = {
28+
.cfg = { .addr = 0x088000, .size = 0x1000 },
29+
2830
.init = g84_pci_init,
29-
.rd32 = nv40_pci_rd32,
30-
.wr08 = nv40_pci_wr08,
31-
.wr32 = nv40_pci_wr32,
3231
.msi_rearm = nv40_pci_msi_rearm,
3332

3433
.pcie.init = g84_pcie_init,

drivers/gpu/drm/nouveau/nvkm/subdev/pci/gf100.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,9 @@ gf100_pcie_set_link(struct nvkm_pci *pci, enum nvkm_pcie_speed speed, u8 width)
7878

7979
static const struct nvkm_pci_func
8080
gf100_pci_func = {
81+
.cfg = { .addr = 0x088000, .size = 0x1000 },
82+
8183
.init = g84_pci_init,
82-
.rd32 = nv40_pci_rd32,
83-
.wr08 = nv40_pci_wr08,
84-
.wr32 = nv40_pci_wr32,
8584
.msi_rearm = gf100_pci_msi_rearm,
8685

8786
.pcie.init = gf100_pcie_init,

drivers/gpu/drm/nouveau/nvkm/subdev/pci/gf106.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,9 @@
2525

2626
static const struct nvkm_pci_func
2727
gf106_pci_func = {
28+
.cfg = { .addr = 0x088000, .size = 0x1000 },
29+
2830
.init = g84_pci_init,
29-
.rd32 = nv40_pci_rd32,
30-
.wr08 = nv40_pci_wr08,
31-
.wr32 = nv40_pci_wr32,
3231
.msi_rearm = nv40_pci_msi_rearm,
3332

3433
.pcie.init = gf100_pcie_init,

drivers/gpu/drm/nouveau/nvkm/subdev/pci/gk104.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,10 +204,9 @@ gk104_pcie_set_link(struct nvkm_pci *pci, enum nvkm_pcie_speed speed, u8 width)
204204

205205
static const struct nvkm_pci_func
206206
gk104_pci_func = {
207+
.cfg = { .addr = 0x088000, .size = 0x1000 },
208+
207209
.init = g84_pci_init,
208-
.rd32 = nv40_pci_rd32,
209-
.wr08 = nv40_pci_wr08,
210-
.wr32 = nv40_pci_wr32,
211210
.msi_rearm = nv40_pci_msi_rearm,
212211

213212
.pcie.init = gk104_pcie_init,

drivers/gpu/drm/nouveau/nvkm/subdev/pci/gp100.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,7 @@ gp100_pci_msi_rearm(struct nvkm_pci *pci)
3131

3232
static const struct nvkm_pci_func
3333
gp100_pci_func = {
34-
.rd32 = nv40_pci_rd32,
35-
.wr08 = nv40_pci_wr08,
36-
.wr32 = nv40_pci_wr32,
34+
.cfg = { .addr = 0x088000, .size = 0x1000 },
3735
.msi_rearm = gp100_pci_msi_rearm,
3836
};
3937

0 commit comments

Comments
 (0)