sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}(hhparenthuba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget'/translations/zh_CN/driver-api/aperturemodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}(hhhh2ubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/zh_TW/driver-api/aperturemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}(hhhhFubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/it_IT/driver-api/aperturemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}(hhhhZubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ja_JP/driver-api/aperturemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}(hhhhnubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ko_KR/driver-api/aperturemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}(hhhhubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/sp_SP/driver-api/aperturemodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}(hhhhubah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhA/var/lib/git/docbuild/linux/Documentation/driver-api/aperture.rsthKubhsection)}(hhh](htitle)}(h.Managing Ownership of the Framebuffer Apertureh]h.Managing Ownership of the Framebuffer Aperture}(hhhhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hXA graphics device might be supported by different drivers, but only one driver can be active at any given time. Many systems load a generic graphics drivers, such as EFI-GOP or VESA, early during the boot process. During later boot stages, they replace the generic driver with a dedicated, hardware-specific driver. To take over the device, the dedicated driver first has to remove the generic driver. Aperture functions manage ownership of framebuffer memory and hand-over between drivers.h]hXA graphics device might be supported by different drivers, but only one driver can be active at any given time. Many systems load a generic graphics drivers, such as EFI-GOP or VESA, early during the boot process. During later boot stages, they replace the generic driver with a dedicated, hardware-specific driver. To take over the device, the dedicated driver first has to remove the generic driver. Aperture functions manage ownership of framebuffer memory and hand-over between drivers.}(hhhhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.chKhhhhubh)}(hXGraphics drivers should call aperture_remove_conflicting_devices() at the top of their probe function. The function removes any generic driver that is currently associated with the given framebuffer memory. An example for a graphics device on the platform bus is shown below.h]hXGraphics drivers should call aperture_remove_conflicting_devices() at the top of their probe function. The function removes any generic driver that is currently associated with the given framebuffer memory. An example for a graphics device on the platform bus is shown below.}(hhhhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.chKhhhhubh literal_block)}(hX^static int example_probe(struct platform_device *pdev) { struct resource *mem; resource_size_t base, size; int ret; mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!mem) return -ENODEV; base = mem->start; size = resource_size(mem); ret = aperture_remove_conflicting_devices(base, size, "example"); if (ret) return ret; // Initialize the hardware ... return 0; } static const struct platform_driver example_driver = { .probe = example_probe, ... };h]hX^static int example_probe(struct platform_device *pdev) { struct resource *mem; resource_size_t base, size; int ret; mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!mem) return -ENODEV; base = mem->start; size = resource_size(mem); ret = aperture_remove_conflicting_devices(base, size, "example"); if (ret) return ret; // Initialize the hardware ... return 0; } static const struct platform_driver example_driver = { .probe = example_probe, ... };}(hhhhubah}(h]h ]h"]h$]h&]hhforcelanguagechighlight_args}uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.chKhhhhubh)}(hXuThe given example reads the platform device's I/O-memory range from the device instance. An active framebuffer will be located within this range. The call to aperture_remove_conflicting_devices() releases drivers that have previously claimed ownership of the range and are currently driving output on the framebuffer. If successful, the new driver can take over the device.h]hXwThe given example reads the platform device’s I/O-memory range from the device instance. An active framebuffer will be located within this range. The call to aperture_remove_conflicting_devices() releases drivers that have previously claimed ownership of the range and are currently driving output on the framebuffer. If successful, the new driver can take over the device.}(hjhhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.chKstart; size = resource_size(mem); ret = devm_aperture_acquire_for_platform_device(pdev, base, size); if (ret) return ret; // Initialize the hardware ... return 0; } static int generic_remove(struct platform_device *) { // Hot-unplug the device ... return 0; } static const struct platform_driver generic_driver = { .probe = generic_probe, .remove = generic_remove, ... };h]hXstatic int generic_probe(struct platform_device *pdev) { struct resource *mem; resource_size_t base, size; mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!mem) return -ENODEV; base = mem->start; size = resource_size(mem); ret = devm_aperture_acquire_for_platform_device(pdev, base, size); if (ret) return ret; // Initialize the hardware ... return 0; } static int generic_remove(struct platform_device *) { // Hot-unplug the device ... return 0; } static const struct platform_driver generic_driver = { .probe = generic_probe, .remove = generic_remove, ... };}(hhhj,ubah}(h]h ]h"]h$]h&]hhhhhh}uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.chKQhhhhubh)}(hThe similar to the previous example, the generic driver claims ownership of the framebuffer memory from its probe function. This will fail if the memory range, or parts of it, is already owned by another driver.h]hThe similar to the previous example, the generic driver claims ownership of the framebuffer memory from its probe function. This will fail if the memory range, or parts of it, is already owned by another driver.}(hj>hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.chKvhhhhubh)}(hXIf successful, the generic driver is now subject to forced removal by another driver. This only works for platform drivers that support hot unplugging. When a driver calls aperture_remove_conflicting_devices() et al for the registered framebuffer range, the aperture helpers call platform_device_unregister() and the generic driver unloads itself. The generic driver also has to provide a remove function to make this work. Once hot unplugged from hardware, it may not access the device's registers, framebuffer memory, ROM, etc afterwards.h]hXIf successful, the generic driver is now subject to forced removal by another driver. This only works for platform drivers that support hot unplugging. When a driver calls aperture_remove_conflicting_devices() et al for the registered framebuffer range, the aperture helpers call platform_device_unregister() and the generic driver unloads itself. The generic driver also has to provide a remove function to make this work. Once hot unplugged from hardware, it may not access the device’s registers, framebuffer memory, ROM, etc afterwards.}(hjMhjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.chKzhhhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](single4aperture_remove_all_conflicting_devices (C function))c.aperture_remove_all_conflicting_deviceshNtauh1jZhhhhhNhNubhdesc)}(hhh](hdesc_signature)}(h>int aperture_remove_all_conflicting_devices (const char *name)h]hdesc_signature_line)}(h=int aperture_remove_all_conflicting_devices(const char *name)h](hdesc_sig_keyword_type)}(hinth]hint}(hhhj~hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j|hjxhhh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.hhK1ubhdesc_sig_space)}(h h]h }(hhhjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjxhhhjhK1ubh desc_name)}(h'aperture_remove_all_conflicting_devicesh]h desc_sig_name)}(h'aperture_remove_all_conflicting_devicesh]h'aperture_remove_all_conflicting_devices}(hhhjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjxhhhjhK1ubhdesc_parameterlist)}(h(const char *name)h]hdesc_parameter)}(hconst char *nameh](hdesc_sig_keyword)}(hconsth]hconst}(hhhjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjubj)}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj})}(hcharh]hchar}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjubj)}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubhdesc_sig_punctuation)}(h*h]h*}(hhhjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjubj)}(hnameh]hname}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjxhhhjhK1ubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1jvsphinx_line_type declaratorhjrhhhjhK1ubah}(h]jiah ](sig sig-objecteh"]h$]h&] is_multilineuh1jph[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.hhK9hjmhhubh desc_content)}(hhh]h)}(h remove all existing framebuffersh]h remove all existing framebuffers}(hjKhjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.hhK0hjFhhubah}(h]h ]h"]h$]h&]uh1jDhjmhhhjhK1ubeh}(h]h ](hfunctioneh"]h$]h&]domainhobjtypejadesctypejanoindexuh1jkhhhhhNhNubh container)}(hX0**Parameters** ``const char *name`` a descriptive name of the requesting driver **Description** This function removes all graphics device drivers. Use this function on systems that can have their framebuffer located anywhere in memory. **Return** 0 on success, or a negative errno code otherwiseh](h)}(h**Parameters**h]hstrong)}(hjqh]h Parameters}(hhhjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjoubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.hhK4hjkubhdefinition_list)}(hhh]hdefinition_list_item)}(hA``const char *name`` a descriptive name of the requesting driver h](hterm)}(h``const char *name``h]hliteral)}(hjh]hconst char *name}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.hhK1hjubh definition)}(hhh]h)}(h+a descriptive name of the requesting driverh]h+a descriptive name of the requesting driver}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK1hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK1hjubah}(h]h ]h"]h$]h&]uh1jhjkubh)}(h**Description**h]jt)}(hjh]h Description}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.hhK3hjkubh)}(hThis function removes all graphics device drivers. Use this function on systems that can have their framebuffer located anywhere in memory.h]hThis function removes all graphics device drivers. Use this function on systems that can have their framebuffer located anywhere in memory.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.hhK3hjkubh)}(h **Return**h]jt)}(hjh]hReturn}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.hhK6hjkubh)}(h00 on success, or a negative errno code otherwiseh]h00 on success, or a negative errno code otherwise}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.hhK8hjkubeh}(h]h ] kernelindentah"]h$]h&]uh1jihhhhhNhNubj[)}(hhh]h}(h]h ]h"]h$]h&]entries](jg6devm_aperture_acquire_for_platform_device (C function)+c.devm_aperture_acquire_for_platform_devicehNtauh1jZhhhhhNhNubjl)}(hhh](jq)}(hxint devm_aperture_acquire_for_platform_device (struct platform_device *pdev, resource_size_t base, resource_size_t size)h]jw)}(hwint devm_aperture_acquire_for_platform_device(struct platform_device *pdev, resource_size_t base, resource_size_t size)h](j})}(hinth]hint}(hhhjChhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hj?hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chKubj)}(h h]h }(hhhjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?hhhjQhKubj)}(h)devm_aperture_acquire_for_platform_deviceh]j)}(h)devm_aperture_acquire_for_platform_deviceh]h)devm_aperture_acquire_for_platform_device}(hhhjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj?hhhjQhKubj)}(hJ(struct platform_device *pdev, resource_size_t base, resource_size_t size)h](j)}(hstruct platform_device *pdevh](j)}(hstructh]hstruct}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj)}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubh)}(hhh]j)}(hplatform_deviceh]hplatform_device}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainhreftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jjfsb+c.devm_aperture_acquire_for_platform_deviceasbuh1hhj|ubj)}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj)}(hj h]h*}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj)}(hpdevh]hpdev}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjxubj)}(hresource_size_t baseh](h)}(hhh]j)}(hresource_size_th]hresource_size_t}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainhreftypej reftargetjmodnameN classnameNjj)}j]j+c.devm_aperture_acquire_for_platform_deviceasbuh1hhjubj)}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hbaseh]hbase}(hhhj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjxubj)}(hresource_size_t sizeh](h)}(hhh]j)}(hresource_size_th]hresource_size_t}(hhhjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&] refdomainhreftypej reftargetjHmodnameN classnameNjj)}j]j+c.devm_aperture_acquire_for_platform_deviceasbuh1hhj?ubj)}(h h]h }(hhhjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj)}(hsizeh]hsize}(hhhjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjxubeh}(h]h ]h"]h$]h&]hhuh1jhj?hhhjQhKubeh}(h]h ]h"]h$]h&]hhj7uh1jvj8j9hj;hhhjQhKubah}(h]j6ah ](j=j>eh"]h$]h&]jBuh1jph\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chKhj8hhubjE)}(hhh]h)}(hAAcquires ownership of an aperture on behalf of a platform device.h]hAAcquires ownership of an aperture on behalf of a platform device.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chKhjhhubah}(h]h ]h"]h$]h&]uh1jDhj8hhhjQhKubeh}(h]h ](hfunctioneh"]h$]h&]jehjfjjgjjhuh1jkhhhhhNhNubjj)}(hXT**Parameters** ``struct platform_device *pdev`` the platform device to own the aperture ``resource_size_t base`` the aperture's byte offset in physical memory ``resource_size_t size`` the aperture size in bytes **Description** Installs the given device as the new owner of the aperture. The function expects the aperture to be provided by a platform device. If another driver takes over ownership of the aperture, aperture helpers will then unregister the platform device automatically. All acquired apertures are released automatically when the underlying device goes away. The function fails if the aperture, or parts of it, is currently owned by another device. To evict current owners, callers should use remove_conflicting_devices() et al. before calling this function. **Return** 0 on success, or a negative errno value otherwise.h](h)}(h**Parameters**h]jt)}(hjh]h Parameters}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chKhjubj)}(hhh](j)}(hI``struct platform_device *pdev`` the platform device to own the aperture h](j)}(h ``struct platform_device *pdev``h]j)}(hjh]hstruct platform_device *pdev}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chKhjubj)}(hhh]h)}(h'the platform device to own the apertureh]h'the platform device to own the aperture}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hG``resource_size_t base`` the aperture's byte offset in physical memory h](j)}(h``resource_size_t base``h]j)}(hjh]hresource_size_t base}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chKhjubj)}(hhh]h)}(h-the aperture's byte offset in physical memoryh]h/the aperture’s byte offset in physical memory}(hj2hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hKhj-ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj,hKhjubj)}(h4``resource_size_t size`` the aperture size in bytes h](j)}(h``resource_size_t size``h]j)}(hjPh]hresource_size_t size}(hhhjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chKhjJubj)}(hhh]h)}(hthe aperture size in bytesh]hthe aperture size in bytes}(hjkhjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehKhjfubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jhjehKhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]jt)}(hjh]h Description}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chKhjubh)}(hX[Installs the given device as the new owner of the aperture. The function expects the aperture to be provided by a platform device. If another driver takes over ownership of the aperture, aperture helpers will then unregister the platform device automatically. All acquired apertures are released automatically when the underlying device goes away.h]hX[Installs the given device as the new owner of the aperture. The function expects the aperture to be provided by a platform device. If another driver takes over ownership of the aperture, aperture helpers will then unregister the platform device automatically. All acquired apertures are released automatically when the underlying device goes away.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chKhjubh)}(hThe function fails if the aperture, or parts of it, is currently owned by another device. To evict current owners, callers should use remove_conflicting_devices() et al. before calling this function.h]hThe function fails if the aperture, or parts of it, is currently owned by another device. To evict current owners, callers should use remove_conflicting_devices() et al. before calling this function.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chKhjubh)}(h **Return**h]jt)}(hjh]hReturn}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chKhjubh)}(h20 on success, or a negative errno value otherwise.h]h20 on success, or a negative errno value otherwise.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jihhhhhNhNubj[)}(hhh]h}(h]h ]h"]h$]h&]entries](jg0aperture_remove_conflicting_devices (C function)%c.aperture_remove_conflicting_deviceshNtauh1jZhhhhhNhNubjl)}(hhh](jq)}(hfint aperture_remove_conflicting_devices (resource_size_t base, resource_size_t size, const char *name)h]jw)}(heint aperture_remove_conflicting_devices(resource_size_t base, resource_size_t size, const char *name)h](j})}(hinth]hint}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMubj)}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(h#aperture_remove_conflicting_devicesh]j)}(h#aperture_remove_conflicting_devicesh]h#aperture_remove_conflicting_devices}(hhhj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h>(resource_size_t base, resource_size_t size, const char *name)h](j)}(hresource_size_t baseh](h)}(hhh]j)}(hresource_size_th]hresource_size_t}(hhhjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&] refdomainhreftypej reftargetjHmodnameN classnameNjj)}j]j)}jj)sb%c.aperture_remove_conflicting_devicesasbuh1hhj?ubj)}(h h]h }(hhhjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj)}(hbaseh]hbase}(hhhjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubj)}(hresource_size_t sizeh](h)}(hhh]j)}(hresource_size_th]hresource_size_t}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainhreftypej reftargetjmodnameN classnameNjj)}j]jb%c.aperture_remove_conflicting_devicesasbuh1hhjubj)}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hsizeh]hsize}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubj)}(hconst char *nameh](j)}(hjh]hconst}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj})}(hcharh]hchar}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjubj)}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hj h]h*}(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hnameh]hname}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj7uh1jvj8j9hjhhhjhMubah}(h]jah ](j=j>eh"]h$]h&]jBuh1jph\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMhjhhubjE)}(hhh]h)}(h!remove devices in the given rangeh]h!remove devices in the given range}(hjFhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMhjAhhubah}(h]h ]h"]h$]h&]uh1jDhjhhhjhMubeh}(h]h ](hfunctioneh"]h$]h&]jehjfj\jgj\jhuh1jkhhhhhNhNubjj)}(hXq**Parameters** ``resource_size_t base`` the aperture's base address in physical memory ``resource_size_t size`` aperture size in bytes ``const char *name`` a descriptive name of the requesting driver **Description** This function removes devices that own apertures within **base** and **size**. **Return** 0 on success, or a negative errno code otherwiseh](h)}(h**Parameters**h]jt)}(hjfh]h Parameters}(hhhjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjdubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMhj`ubj)}(hhh](j)}(hH``resource_size_t base`` the aperture's base address in physical memory h](j)}(h``resource_size_t base``h]j)}(hjh]hresource_size_t base}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMhjubj)}(hhh]h)}(h.the aperture's base address in physical memoryh]h0the aperture’s base address in physical memory}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj|ubj)}(h0``resource_size_t size`` aperture size in bytes h](j)}(h``resource_size_t size``h]j)}(hjh]hresource_size_t size}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMhjubj)}(hhh]h)}(haperture size in bytesh]haperture size in bytes}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj|ubj)}(hA``const char *name`` a descriptive name of the requesting driver h](j)}(h``const char *name``h]j)}(hjh]hconst char *name}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMhjubj)}(hhh]h)}(h+a descriptive name of the requesting driverh]h+a descriptive name of the requesting driver}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMhj|ubeh}(h]h ]h"]h$]h&]uh1jhj`ubh)}(h**Description**h]jt)}(hj2h]h Description}(hhhj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj0ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMhj`ubh)}(hNThis function removes devices that own apertures within **base** and **size**.h](h8This function removes devices that own apertures within }(h8This function removes devices that own apertures within hjHhhhNhNubjt)}(h**base**h]hbase}(hhhjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjHubh and }(h and hjHhhhNhNubjt)}(h**size**h]hsize}(hhhjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjHubh.}(h.hjHhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMhj`ubh)}(h **Return**h]jt)}(hjh]hReturn}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshj~ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMhj`ubh)}(h00 on success, or a negative errno code otherwiseh]h00 on success, or a negative errno code otherwise}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMhj`ubeh}(h]h ] kernelindentah"]h$]h&]uh1jihhhhhNhNubj[)}(hhh]h}(h]h ]h"]h$]h&]entries](jg1__aperture_remove_legacy_vga_devices (C function)&c.__aperture_remove_legacy_vga_deviceshNtauh1jZhhhhhNhNubjl)}(hhh](jq)}(h?int __aperture_remove_legacy_vga_devices (struct pci_dev *pdev)h]jw)}(h>int __aperture_remove_legacy_vga_devices(struct pci_dev *pdev)h](j})}(hinth]hint}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chM2ubj)}(h h]h }(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM2ubj)}(h$__aperture_remove_legacy_vga_devicesh]j)}(h$__aperture_remove_legacy_vga_devicesh]h$__aperture_remove_legacy_vga_devices}(hhhjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhM2ubj)}(h(struct pci_dev *pdev)h]j)}(hstruct pci_dev *pdevh](j)}(hjh]hstruct}(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hpci_devh]hpci_dev}(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainhreftypej reftargetj" modnameN classnameNjj)}j]j)}jjsb&c.__aperture_remove_legacy_vga_devicesasbuh1hhjubj)}(h h]h }(hhhj@ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hj h]h*}(hhhjN hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hpdevh]hpdev}(hhhj[ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM2ubeh}(h]h ]h"]h$]h&]hhj7uh1jvj8j9hjhhhjhM2ubah}(h]jah ](j=j>eh"]h$]h&]jBuh1jph\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMEhjhhubjE)}(hhh]h)}(h*remove legacy VGA devices of a PCI devicesh]h*remove legacy VGA devices of a PCI devices}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chM1hj hhubah}(h]h ]h"]h$]h&]uh1jDhjhhhjhM2ubeh}(h]h ](hfunctioneh"]h$]h&]jehjfj jgj jhuh1jkhhhhhNhNubjj)}(hX#**Parameters** ``struct pci_dev *pdev`` PCI device **Description** This function removes VGA devices provided by **pdev**, such as a VGA framebuffer or a console. This is useful if you have a VGA-compatible PCI graphics device with framebuffers in non-BAR locations. Drivers should acquire ownership of those memory areas and afterwards call this helper to release remaining VGA devices. If your hardware has its framebuffers accessible via PCI BARS, use aperture_remove_conflicting_pci_devices() instead. The function will release any VGA devices automatically. WARNING: Apparently we must remove graphics drivers before calling this helper. Otherwise the vga fbdev driver falls over if we have vgacon configured. **Return** 0 on success, or a negative errno code otherwiseh](h)}(h**Parameters**h]jt)}(hj h]h Parameters}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chM5hj ubj)}(hhh]j)}(h$``struct pci_dev *pdev`` PCI device h](j)}(h``struct pci_dev *pdev``h]j)}(hj h]hstruct pci_dev *pdev}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chM2hj ubj)}(hhh]h)}(h PCI deviceh]h PCI device}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM2hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hM2hj ubah}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]jt)}(hj h]h Description}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chM4hj ubh)}(hX@This function removes VGA devices provided by **pdev**, such as a VGA framebuffer or a console. This is useful if you have a VGA-compatible PCI graphics device with framebuffers in non-BAR locations. Drivers should acquire ownership of those memory areas and afterwards call this helper to release remaining VGA devices.h](h.This function removes VGA devices provided by }(h.This function removes VGA devices provided by hj hhhNhNubjt)}(h**pdev**h]hpdev}(hhhj! hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubhX , such as a VGA framebuffer or a console. This is useful if you have a VGA-compatible PCI graphics device with framebuffers in non-BAR locations. Drivers should acquire ownership of those memory areas and afterwards call this helper to release remaining VGA devices.}(hX , such as a VGA framebuffer or a console. This is useful if you have a VGA-compatible PCI graphics device with framebuffers in non-BAR locations. Drivers should acquire ownership of those memory areas and afterwards call this helper to release remaining VGA devices.hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chM4hj ubh)}(hIf your hardware has its framebuffers accessible via PCI BARS, use aperture_remove_conflicting_pci_devices() instead. The function will release any VGA devices automatically.h]hIf your hardware has its framebuffers accessible via PCI BARS, use aperture_remove_conflicting_pci_devices() instead. The function will release any VGA devices automatically.}(hj= hj; hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chM:hj ubj)}(hhh]j)}(hWARNING: Apparently we must remove graphics drivers before calling this helper. Otherwise the vga fbdev driver falls over if we have vgacon configured. h](j)}(hBWARNING: Apparently we must remove graphics drivers before callingh]hBWARNING: Apparently we must remove graphics drivers before calling}(hjS hjQ hhhNhNubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chM@hjM ubj)}(hhh]h)}(hTthis helper. Otherwise the vga fbdev driver falls over if we have vgacon configured.h]hTthis helper. Otherwise the vga fbdev driver falls over if we have vgacon configured.}(hje hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chM?hj` ubah}(h]h ]h"]h$]h&]uh1jhjM ubeh}(h]h ]h"]h$]h&]uh1jhj_ hM@hjJ ubah}(h]h ]h"]h$]h&]uh1jhj ubh)}(h **Return**h]jt)}(hj h]hReturn}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMBhj ubh)}(h00 on success, or a negative errno code otherwiseh]h00 on success, or a negative errno code otherwise}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMDhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jihhhhhNhNubj[)}(hhh]h}(h]h ]h"]h$]h&]entries](jg4aperture_remove_conflicting_pci_devices (C function))c.aperture_remove_conflicting_pci_deviceshNtauh1jZhhhhhNhNubjl)}(hhh](jq)}(hTint aperture_remove_conflicting_pci_devices (struct pci_dev *pdev, const char *name)h]jw)}(hSint aperture_remove_conflicting_pci_devices(struct pci_dev *pdev, const char *name)h](j})}(hinth]hint}(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hj hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMQubj)}(h h]h }(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hMQubj)}(h'aperture_remove_conflicting_pci_devicesh]j)}(h'aperture_remove_conflicting_pci_devicesh]h'aperture_remove_conflicting_pci_devices}(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj hMQubj)}(h((struct pci_dev *pdev, const char *name)h](j)}(hstruct pci_dev *pdevh](j)}(hjh]hstruct}(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(hpci_devh]hpci_dev}(hhhj& hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj# ubah}(h]h ]h"]h$]h&] refdomainhreftypej reftargetj( modnameN classnameNjj)}j]j)}jj sb)c.aperture_remove_conflicting_pci_devicesasbuh1hhj ubj)}(h h]h }(hhhjF hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hj h]h*}(hhhjT hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hpdevh]hpdev}(hhhja hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hconst char *nameh](j)}(hjh]hconst}(hhhjz hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv ubj)}(h h]h }(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv ubj})}(hcharh]hchar}(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j|hjv ubj)}(h h]h }(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv ubj)}(hj h]h*}(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv ubj)}(hnameh]hname}(hhhj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj hMQubeh}(h]h ]h"]h$]h&]hhj7uh1jvj8j9hj hhhj hMQubah}(h]j ah ](j=j>eh"]h$]h&]jBuh1jph\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chM[hj hhubjE)}(hhh]h)}(h,remove existing framebuffers for PCI devicesh]h,remove existing framebuffers for PCI devices}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMPhj hhubah}(h]h ]h"]h$]h&]uh1jDhj hhhj hMQubeh}(h]h ](hfunctioneh"]h$]h&]jehjfj jgj jhuh1jkhhhhhNhNubjj)}(hX**Parameters** ``struct pci_dev *pdev`` PCI device ``const char *name`` a descriptive name of the requesting driver **Description** This function removes devices that own apertures within any of **pdev**'s memory bars. The function assumes that PCI device with shadowed ROM drives a primary display and therefore kicks out vga16fb as well. **Return** 0 on success, or a negative errno code otherwiseh](h)}(h**Parameters**h]jt)}(hj h]h Parameters}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMThj ubj)}(hhh](j)}(h$``struct pci_dev *pdev`` PCI device h](j)}(h``struct pci_dev *pdev``h]j)}(hj* h]hstruct pci_dev *pdev}(hhhj, hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj( ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMQhj$ ubj)}(hhh]h)}(h PCI deviceh]h PCI device}(hjE hjC hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj? hMQhj@ ubah}(h]h ]h"]h$]h&]uh1jhj$ ubeh}(h]h ]h"]h$]h&]uh1jhj? hMQhj! ubj)}(hA``const char *name`` a descriptive name of the requesting driver h](j)}(h``const char *name``h]j)}(hjc h]hconst char *name}(hhhje hhhNhNubah}(h]h ]h"]h$]h&]uh1jhja ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMRhj] ubj)}(hhh]h)}(h+a descriptive name of the requesting driverh]h+a descriptive name of the requesting driver}(hj~ hj| hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjx hMRhjy ubah}(h]h ]h"]h$]h&]uh1jhj] ubeh}(h]h ]h"]h$]h&]uh1jhjx hMRhj! ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]jt)}(hj h]h Description}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMThj ubh)}(hThis function removes devices that own apertures within any of **pdev**'s memory bars. The function assumes that PCI device with shadowed ROM drives a primary display and therefore kicks out vga16fb as well.h](h?This function removes devices that own apertures within any of }(h?This function removes devices that own apertures within any of hj hhhNhNubjt)}(h**pdev**h]hpdev}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubh’s memory bars. The function assumes that PCI device with shadowed ROM drives a primary display and therefore kicks out vga16fb as well.}(h's memory bars. The function assumes that PCI device with shadowed ROM drives a primary display and therefore kicks out vga16fb as well.hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMThj ubh)}(h **Return**h]jt)}(hj h]hReturn}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMXhj ubh)}(h00 on success, or a negative errno code otherwiseh]h00 on success, or a negative errno code otherwise}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.chMZhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jihhhhhNhNubeh}(h].managing-ownership-of-the-framebuffer-apertureah ]h"].managing ownership of the framebuffer apertureah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj0 error_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confapep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacefile_insertion_enabled raw_enabledKline_length_limitM'syntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_link embed_imagesenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}j j s nametypes}j Nsh}(j hjijrj6j;jjjjj j u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.