Add writing attribute for boot_vga sys node, so we can config default video display output dynamically when there are two video cards on a machine. Xorg server will determine running on which video card based on boot_vga node's value. Signed-off-by: Zhenneng Li <lizhenneng@xxxxxxxxxx> --- drivers/pci/pci-sysfs.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c index 7bbf2673c7f2..a6ba19ce7adb 100644 --- a/drivers/pci/pci-sysfs.c +++ b/drivers/pci/pci-sysfs.c @@ -664,7 +664,29 @@ static ssize_t boot_vga_show(struct device *dev, struct device_attribute *attr, !!(pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW)); } -static DEVICE_ATTR_RO(boot_vga); + +static ssize_t boot_vga_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + unsigned long val; + struct pci_dev *pdev = to_pci_dev(dev); + struct pci_dev *vga_dev = vga_default_device(); + + if (kstrtoul(buf, 0, &val) < 0) + return -EINVAL; + + if (val != 1) + return -EINVAL; + + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + + if (pdev != vga_dev) + vga_set_default_device(pdev); + + return count; +} +static DEVICE_ATTR_RW(boot_vga); static ssize_t pci_read_config(struct file *filp, struct kobject *kobj, struct bin_attribute *bin_attr, char *buf, -- 2.25.1 No virus found Checked by Hillstone Network AntiVirus