Skip to content

Commit 649ae75

Browse files
committed
Merge branch 'pci/vga'; commit '6a73336bde29' into for-linus
* pci/vga: vgaarb: Drop obsolete #ifndef vgaarb: Don't default exclusively to first video device with mem+io * commit '6a73336bde29': PCI: Remove "no hotplug settings from platform" warning
3 parents 6de8eee + ce6eacb + 6a73336 commit 649ae75

File tree

5 files changed

+40
-62
lines changed

5 files changed

+40
-62
lines changed

arch/ia64/pci/fixup.c

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -38,27 +38,6 @@ static void pci_fixup_video(struct pci_dev *pdev)
3838
return;
3939
/* Maybe, this machine supports legacy memory map. */
4040

41-
if (!vga_default_device()) {
42-
resource_size_t start, end;
43-
int i;
44-
45-
/* Does firmware framebuffer belong to us? */
46-
for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
47-
if (!(pci_resource_flags(pdev, i) & IORESOURCE_MEM))
48-
continue;
49-
50-
start = pci_resource_start(pdev, i);
51-
end = pci_resource_end(pdev, i);
52-
53-
if (!start || !end)
54-
continue;
55-
56-
if (screen_info.lfb_base >= start &&
57-
(screen_info.lfb_base + screen_info.lfb_size) < end)
58-
vga_set_default_device(pdev);
59-
}
60-
}
61-
6241
/* Is VGA routed to us? */
6342
bus = pdev->bus;
6443
while (bus) {
@@ -83,8 +62,7 @@ static void pci_fixup_video(struct pci_dev *pdev)
8362
pci_read_config_word(pdev, PCI_COMMAND, &config);
8463
if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
8564
pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
86-
dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n");
87-
vga_set_default_device(pdev);
65+
dev_printk(KERN_DEBUG, &pdev->dev, "Video device with shadowed ROM\n");
8866
}
8967
}
9068
}

arch/x86/pci/fixup.c

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -326,27 +326,6 @@ static void pci_fixup_video(struct pci_dev *pdev)
326326
struct pci_bus *bus;
327327
u16 config;
328328

329-
if (!vga_default_device()) {
330-
resource_size_t start, end;
331-
int i;
332-
333-
/* Does firmware framebuffer belong to us? */
334-
for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
335-
if (!(pci_resource_flags(pdev, i) & IORESOURCE_MEM))
336-
continue;
337-
338-
start = pci_resource_start(pdev, i);
339-
end = pci_resource_end(pdev, i);
340-
341-
if (!start || !end)
342-
continue;
343-
344-
if (screen_info.lfb_base >= start &&
345-
(screen_info.lfb_base + screen_info.lfb_size) < end)
346-
vga_set_default_device(pdev);
347-
}
348-
}
349-
350329
/* Is VGA routed to us? */
351330
bus = pdev->bus;
352331
while (bus) {
@@ -371,8 +350,7 @@ static void pci_fixup_video(struct pci_dev *pdev)
371350
pci_read_config_word(pdev, PCI_COMMAND, &config);
372351
if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
373352
pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
374-
dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n");
375-
vga_set_default_device(pdev);
353+
dev_printk(KERN_DEBUG, &pdev->dev, "Video device with shadowed ROM\n");
376354
}
377355
}
378356
}

drivers/gpu/vga/vgaarb.c

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
#include <linux/poll.h>
4242
#include <linux/miscdevice.h>
4343
#include <linux/slab.h>
44+
#include <linux/screen_info.h>
4445

4546
#include <linux/uaccess.h>
4647

@@ -112,10 +113,8 @@ static int vga_str_to_iostate(char *buf, int str_size, int *io_state)
112113
return 1;
113114
}
114115

115-
#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE
116116
/* this is only used a cookie - it should not be dereferenced */
117117
static struct pci_dev *vga_default;
118-
#endif
119118

120119
static void vga_arb_device_card_gone(struct pci_dev *pdev);
121120

@@ -131,7 +130,6 @@ static struct vga_device *vgadev_find(struct pci_dev *pdev)
131130
}
132131

133132
/* Returns the default VGA device (vgacon's babe) */
134-
#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE
135133
struct pci_dev *vga_default_device(void)
136134
{
137135
return vga_default;
@@ -147,7 +145,6 @@ void vga_set_default_device(struct pci_dev *pdev)
147145
pci_dev_put(vga_default);
148146
vga_default = pci_dev_get(pdev);
149147
}
150-
#endif
151148

152149
static inline void vga_irq_set_state(struct vga_device *vgadev, bool state)
153150
{
@@ -583,11 +580,12 @@ static bool vga_arbiter_add_pci_device(struct pci_dev *pdev)
583580
/* Deal with VGA default device. Use first enabled one
584581
* by default if arch doesn't have it's own hook
585582
*/
586-
#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE
587583
if (vga_default == NULL &&
588-
((vgadev->owns & VGA_RSRC_LEGACY_MASK) == VGA_RSRC_LEGACY_MASK))
584+
((vgadev->owns & VGA_RSRC_LEGACY_MASK) == VGA_RSRC_LEGACY_MASK)) {
585+
pr_info("vgaarb: setting as boot device: PCI:%s\n",
586+
pci_name(pdev));
589587
vga_set_default_device(pdev);
590-
#endif
588+
}
591589

592590
vga_arbiter_check_bridge_sharing(vgadev);
593591

@@ -621,10 +619,8 @@ static bool vga_arbiter_del_pci_device(struct pci_dev *pdev)
621619
goto bail;
622620
}
623621

624-
#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE
625622
if (vga_default == pdev)
626623
vga_set_default_device(NULL);
627-
#endif
628624

629625
if (vgadev->decodes & (VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM))
630626
vga_decode_count--;
@@ -1320,6 +1316,38 @@ static int __init vga_arb_device_init(void)
13201316
pr_info("vgaarb: loaded\n");
13211317

13221318
list_for_each_entry(vgadev, &vga_list, list) {
1319+
#if defined(CONFIG_X86) || defined(CONFIG_IA64)
1320+
/* Override I/O based detection done by vga_arbiter_add_pci_device()
1321+
* as it may take the wrong device (e.g. on Apple system under EFI).
1322+
*
1323+
* Select the device owning the boot framebuffer if there is one.
1324+
*/
1325+
resource_size_t start, end;
1326+
int i;
1327+
1328+
/* Does firmware framebuffer belong to us? */
1329+
for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
1330+
if (!(pci_resource_flags(vgadev->pdev, i) & IORESOURCE_MEM))
1331+
continue;
1332+
1333+
start = pci_resource_start(vgadev->pdev, i);
1334+
end = pci_resource_end(vgadev->pdev, i);
1335+
1336+
if (!start || !end)
1337+
continue;
1338+
1339+
if (screen_info.lfb_base < start ||
1340+
(screen_info.lfb_base + screen_info.lfb_size) >= end)
1341+
continue;
1342+
if (!vga_default_device())
1343+
pr_info("vgaarb: setting as boot device: PCI:%s\n",
1344+
pci_name(vgadev->pdev));
1345+
else if (vgadev->pdev != vga_default_device())
1346+
pr_info("vgaarb: overriding boot device: PCI:%s\n",
1347+
pci_name(vgadev->pdev));
1348+
vga_set_default_device(vgadev->pdev);
1349+
}
1350+
#endif
13231351
if (vgadev->bridge_has_one_vga)
13241352
pr_info("vgaarb: bridge control possible %s\n", pci_name(vgadev->pdev));
13251353
else

drivers/pci/hotplug/pcihp_slot.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ static void program_hpp_type0(struct pci_dev *dev, struct hpp_type0 *hpp)
4646
*/
4747
if (pci_is_pcie(dev))
4848
return;
49-
dev_info(&dev->dev, "using default PCI settings\n");
5049
hpp = &pci_default_type0;
5150
}
5251

@@ -153,7 +152,6 @@ void pci_configure_slot(struct pci_dev *dev)
153152
{
154153
struct pci_dev *cdev;
155154
struct hotplug_params hpp;
156-
int ret;
157155

158156
if (!(dev->hdr_type == PCI_HEADER_TYPE_NORMAL ||
159157
(dev->hdr_type == PCI_HEADER_TYPE_BRIDGE &&
@@ -163,9 +161,7 @@ void pci_configure_slot(struct pci_dev *dev)
163161
pcie_bus_configure_settings(dev->bus);
164162

165163
memset(&hpp, 0, sizeof(hpp));
166-
ret = pci_get_hp_params(dev, &hpp);
167-
if (ret)
168-
dev_warn(&dev->dev, "no hotplug settings from platform\n");
164+
pci_get_hp_params(dev, &hpp);
169165

170166
program_hpp_type2(dev, hpp.t2);
171167
program_hpp_type1(dev, hpp.t1);

include/linux/vgaarb.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,15 +182,13 @@ extern void vga_put(struct pci_dev *pdev, unsigned int rsrc);
182182
* vga_get()...
183183
*/
184184

185-
#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE
186185
#ifdef CONFIG_VGA_ARB
187186
extern struct pci_dev *vga_default_device(void);
188187
extern void vga_set_default_device(struct pci_dev *pdev);
189188
#else
190189
static inline struct pci_dev *vga_default_device(void) { return NULL; };
191190
static inline void vga_set_default_device(struct pci_dev *pdev) { };
192191
#endif
193-
#endif
194192

195193
/**
196194
* vga_conflicts

0 commit comments

Comments
 (0)