Loading drivers/gpu/vga/vgaarb.c +5 −6 Original line number Original line Diff line number Diff line Loading @@ -609,7 +609,6 @@ void vga_set_legacy_decoding(struct pci_dev *pdev, unsigned int decodes) } } EXPORT_SYMBOL(vga_set_legacy_decoding); EXPORT_SYMBOL(vga_set_legacy_decoding); /* return number of active VGA devices */ /* call with NULL to unregister */ /* call with NULL to unregister */ int vga_client_register(struct pci_dev *pdev, void *cookie, int vga_client_register(struct pci_dev *pdev, void *cookie, void (*irq_set_state)(void *cookie, bool state), void (*irq_set_state)(void *cookie, bool state), Loading Loading @@ -831,7 +830,7 @@ static ssize_t vga_arb_write(struct file *file, const char __user * buf, curr_pos += 5; curr_pos += 5; remaining -= 5; remaining -= 5; pr_devel("client 0x%X called 'lock'\n", (int)priv); pr_devel("client 0x%p called 'lock'\n", priv); if (!vga_str_to_iostate(curr_pos, remaining, &io_state)) { if (!vga_str_to_iostate(curr_pos, remaining, &io_state)) { ret_val = -EPROTO; ret_val = -EPROTO; Loading Loading @@ -867,7 +866,7 @@ static ssize_t vga_arb_write(struct file *file, const char __user * buf, curr_pos += 7; curr_pos += 7; remaining -= 7; remaining -= 7; pr_devel("client 0x%X called 'unlock'\n", (int)priv); pr_devel("client 0x%p called 'unlock'\n", priv); if (strncmp(curr_pos, "all", 3) == 0) if (strncmp(curr_pos, "all", 3) == 0) io_state = VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM; io_state = VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM; Loading Loading @@ -917,7 +916,7 @@ static ssize_t vga_arb_write(struct file *file, const char __user * buf, curr_pos += 8; curr_pos += 8; remaining -= 8; remaining -= 8; pr_devel("client 0x%X called 'trylock'\n", (int)priv); pr_devel("client 0x%p called 'trylock'\n", priv); if (!vga_str_to_iostate(curr_pos, remaining, &io_state)) { if (!vga_str_to_iostate(curr_pos, remaining, &io_state)) { ret_val = -EPROTO; ret_val = -EPROTO; Loading Loading @@ -960,7 +959,7 @@ static ssize_t vga_arb_write(struct file *file, const char __user * buf, curr_pos += 7; curr_pos += 7; remaining -= 7; remaining -= 7; pr_devel("client 0x%X called 'target'\n", (int)priv); pr_devel("client 0x%p called 'target'\n", priv); /* if target is default */ /* if target is default */ if (!strncmp(buf, "default", 7)) if (!strncmp(buf, "default", 7)) pdev = pci_dev_get(vga_default_device()); pdev = pci_dev_get(vga_default_device()); Loading Loading @@ -1014,7 +1013,7 @@ static ssize_t vga_arb_write(struct file *file, const char __user * buf, } else if (strncmp(curr_pos, "decodes ", 8) == 0) { } else if (strncmp(curr_pos, "decodes ", 8) == 0) { curr_pos += 8; curr_pos += 8; remaining -= 8; remaining -= 8; pr_devel("vgaarb: client 0x%X called 'decodes'\n", (int)priv); pr_devel("vgaarb: client 0x%p called 'decodes'\n", priv); if (!vga_str_to_iostate(curr_pos, remaining, &io_state)) { if (!vga_str_to_iostate(curr_pos, remaining, &io_state)) { ret_val = -EPROTO; ret_val = -EPROTO; Loading include/linux/vgaarb.h +27 −22 Original line number Original line Diff line number Diff line Loading @@ -46,9 +46,9 @@ extern void vga_set_legacy_decoding(struct pci_dev *pdev, /** /** * vga_get - acquire & locks VGA resources * vga_get - acquire & locks VGA resources * * * pdev: pci device of the VGA card or NULL for the system default * @pdev: pci device of the VGA card or NULL for the system default * rsrc: bit mask of resources to acquire and lock * @rsrc: bit mask of resources to acquire and lock * interruptible: blocking should be interruptible by signals ? * @interruptible: blocking should be interruptible by signals ? * * * This function acquires VGA resources for the given * This function acquires VGA resources for the given * card and mark those resources locked. If the resource requested * card and mark those resources locked. If the resource requested Loading Loading @@ -87,7 +87,7 @@ static inline int vga_get_interruptible(struct pci_dev *pdev, } } /** /** * vga_get_interruptible * vga_get_uninterruptible * * * Shortcut to vga_get * Shortcut to vga_get */ */ Loading Loading @@ -165,9 +165,16 @@ static inline int vga_conflicts(struct pci_dev *p1, struct pci_dev *p2) } } #endif #endif /* /** * vga_client_register * * @pdev: pci device of the VGA client * @cookie: client cookie to be used in callbacks * @irq_set_state: irq state change callback * @set_vga_decode: vga decode change callback * * return value: 0 on success, -1 on failure * Register a client with the VGA arbitration logic * Register a client with the VGA arbitration logic * return value: number of VGA devices in system. * * * Clients have two callback mechanisms they can use. * Clients have two callback mechanisms they can use. * irq enable/disable callback - * irq enable/disable callback - Loading @@ -178,15 +185,13 @@ static inline int vga_conflicts(struct pci_dev *p1, struct pci_dev *p2) * If a client can disable its GPU VGA resource, it will * If a client can disable its GPU VGA resource, it will * get a callback from this to set the encode/decode state * get a callback from this to set the encode/decode state * * * Clients with disable abilities should check the return value * of this function and if the VGA device count is > 1, should * disable VGA decoding resources. * * Rationale: we cannot disable VGA decode resources unconditionally * Rationale: we cannot disable VGA decode resources unconditionally * some single GPU laptops seem to require ACPI or BIOS access to the * some single GPU laptops seem to require ACPI or BIOS access to the * VGA registers to control things like backlights etc. * VGA registers to control things like backlights etc. * Hopefully newer multi-GPU laptops do something saner, and desktops * Hopefully newer multi-GPU laptops do something saner, and desktops * won't have any special ACPI for this. * won't have any special ACPI for this. * They driver will get a callback when VGA arbitration is first used * by userspace since we some older X servers have issues. */ */ int vga_client_register(struct pci_dev *pdev, void *cookie, int vga_client_register(struct pci_dev *pdev, void *cookie, void (*irq_set_state)(void *cookie, bool state), void (*irq_set_state)(void *cookie, bool state), Loading Loading
drivers/gpu/vga/vgaarb.c +5 −6 Original line number Original line Diff line number Diff line Loading @@ -609,7 +609,6 @@ void vga_set_legacy_decoding(struct pci_dev *pdev, unsigned int decodes) } } EXPORT_SYMBOL(vga_set_legacy_decoding); EXPORT_SYMBOL(vga_set_legacy_decoding); /* return number of active VGA devices */ /* call with NULL to unregister */ /* call with NULL to unregister */ int vga_client_register(struct pci_dev *pdev, void *cookie, int vga_client_register(struct pci_dev *pdev, void *cookie, void (*irq_set_state)(void *cookie, bool state), void (*irq_set_state)(void *cookie, bool state), Loading Loading @@ -831,7 +830,7 @@ static ssize_t vga_arb_write(struct file *file, const char __user * buf, curr_pos += 5; curr_pos += 5; remaining -= 5; remaining -= 5; pr_devel("client 0x%X called 'lock'\n", (int)priv); pr_devel("client 0x%p called 'lock'\n", priv); if (!vga_str_to_iostate(curr_pos, remaining, &io_state)) { if (!vga_str_to_iostate(curr_pos, remaining, &io_state)) { ret_val = -EPROTO; ret_val = -EPROTO; Loading Loading @@ -867,7 +866,7 @@ static ssize_t vga_arb_write(struct file *file, const char __user * buf, curr_pos += 7; curr_pos += 7; remaining -= 7; remaining -= 7; pr_devel("client 0x%X called 'unlock'\n", (int)priv); pr_devel("client 0x%p called 'unlock'\n", priv); if (strncmp(curr_pos, "all", 3) == 0) if (strncmp(curr_pos, "all", 3) == 0) io_state = VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM; io_state = VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM; Loading Loading @@ -917,7 +916,7 @@ static ssize_t vga_arb_write(struct file *file, const char __user * buf, curr_pos += 8; curr_pos += 8; remaining -= 8; remaining -= 8; pr_devel("client 0x%X called 'trylock'\n", (int)priv); pr_devel("client 0x%p called 'trylock'\n", priv); if (!vga_str_to_iostate(curr_pos, remaining, &io_state)) { if (!vga_str_to_iostate(curr_pos, remaining, &io_state)) { ret_val = -EPROTO; ret_val = -EPROTO; Loading Loading @@ -960,7 +959,7 @@ static ssize_t vga_arb_write(struct file *file, const char __user * buf, curr_pos += 7; curr_pos += 7; remaining -= 7; remaining -= 7; pr_devel("client 0x%X called 'target'\n", (int)priv); pr_devel("client 0x%p called 'target'\n", priv); /* if target is default */ /* if target is default */ if (!strncmp(buf, "default", 7)) if (!strncmp(buf, "default", 7)) pdev = pci_dev_get(vga_default_device()); pdev = pci_dev_get(vga_default_device()); Loading Loading @@ -1014,7 +1013,7 @@ static ssize_t vga_arb_write(struct file *file, const char __user * buf, } else if (strncmp(curr_pos, "decodes ", 8) == 0) { } else if (strncmp(curr_pos, "decodes ", 8) == 0) { curr_pos += 8; curr_pos += 8; remaining -= 8; remaining -= 8; pr_devel("vgaarb: client 0x%X called 'decodes'\n", (int)priv); pr_devel("vgaarb: client 0x%p called 'decodes'\n", priv); if (!vga_str_to_iostate(curr_pos, remaining, &io_state)) { if (!vga_str_to_iostate(curr_pos, remaining, &io_state)) { ret_val = -EPROTO; ret_val = -EPROTO; Loading
include/linux/vgaarb.h +27 −22 Original line number Original line Diff line number Diff line Loading @@ -46,9 +46,9 @@ extern void vga_set_legacy_decoding(struct pci_dev *pdev, /** /** * vga_get - acquire & locks VGA resources * vga_get - acquire & locks VGA resources * * * pdev: pci device of the VGA card or NULL for the system default * @pdev: pci device of the VGA card or NULL for the system default * rsrc: bit mask of resources to acquire and lock * @rsrc: bit mask of resources to acquire and lock * interruptible: blocking should be interruptible by signals ? * @interruptible: blocking should be interruptible by signals ? * * * This function acquires VGA resources for the given * This function acquires VGA resources for the given * card and mark those resources locked. If the resource requested * card and mark those resources locked. If the resource requested Loading Loading @@ -87,7 +87,7 @@ static inline int vga_get_interruptible(struct pci_dev *pdev, } } /** /** * vga_get_interruptible * vga_get_uninterruptible * * * Shortcut to vga_get * Shortcut to vga_get */ */ Loading Loading @@ -165,9 +165,16 @@ static inline int vga_conflicts(struct pci_dev *p1, struct pci_dev *p2) } } #endif #endif /* /** * vga_client_register * * @pdev: pci device of the VGA client * @cookie: client cookie to be used in callbacks * @irq_set_state: irq state change callback * @set_vga_decode: vga decode change callback * * return value: 0 on success, -1 on failure * Register a client with the VGA arbitration logic * Register a client with the VGA arbitration logic * return value: number of VGA devices in system. * * * Clients have two callback mechanisms they can use. * Clients have two callback mechanisms they can use. * irq enable/disable callback - * irq enable/disable callback - Loading @@ -178,15 +185,13 @@ static inline int vga_conflicts(struct pci_dev *p1, struct pci_dev *p2) * If a client can disable its GPU VGA resource, it will * If a client can disable its GPU VGA resource, it will * get a callback from this to set the encode/decode state * get a callback from this to set the encode/decode state * * * Clients with disable abilities should check the return value * of this function and if the VGA device count is > 1, should * disable VGA decoding resources. * * Rationale: we cannot disable VGA decode resources unconditionally * Rationale: we cannot disable VGA decode resources unconditionally * some single GPU laptops seem to require ACPI or BIOS access to the * some single GPU laptops seem to require ACPI or BIOS access to the * VGA registers to control things like backlights etc. * VGA registers to control things like backlights etc. * Hopefully newer multi-GPU laptops do something saner, and desktops * Hopefully newer multi-GPU laptops do something saner, and desktops * won't have any special ACPI for this. * won't have any special ACPI for this. * They driver will get a callback when VGA arbitration is first used * by userspace since we some older X servers have issues. */ */ int vga_client_register(struct pci_dev *pdev, void *cookie, int vga_client_register(struct pci_dev *pdev, void *cookie, void (*irq_set_state)(void *cookie, bool state), void (*irq_set_state)(void *cookie, bool state), Loading