linux/drivers/acpi/osl.c
<<
>>
Prefs
   1/*
   2 *  acpi_osl.c - OS-dependent functions ($Revision: 83 $)
   3 *
   4 *  Copyright (C) 2000       Andrew Henroid
   5 *  Copyright (C) 2001, 2002 Andy Grover <andrew.grover@intel.com>
   6 *  Copyright (C) 2001, 2002 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com>
   7 *  Copyright (c) 2008 Intel Corporation
   8 *   Author: Matthew Wilcox <willy@linux.intel.com>
   9 *
  10 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  11 *
  12 *  This program is free software; you can redistribute it and/or modify
  13 *  it under the terms of the GNU General Public License as published by
  14 *  the Free Software Foundation; either version 2 of the License, or
  15 *  (at your option) any later version.
  16 *
  17 *  This program is distributed in the hope that it will be useful,
  18 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  19 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20 *  GNU General Public License for more details.
  21 *
  22 *  You should have received a copy of the GNU General Public License
  23 *  along with this program; if not, write to the Free Software
  24 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  25 *
  26 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  27 *
  28 */
  29
  30#include <linux/module.h>
  31#include <linux/kernel.h>
  32#include <linux/slab.h>
  33#include <linux/mm.h>
  34#include <linux/highmem.h>
  35#include <linux/pci.h>
  36#include <linux/interrupt.h>
  37#include <linux/kmod.h>
  38#include <linux/delay.h>
  39#include <linux/workqueue.h>
  40#include <linux/nmi.h>
  41#include <linux/acpi.h>
  42#include <linux/acpi_io.h>
  43#include <linux/efi.h>
  44#include <linux/ioport.h>
  45#include <linux/list.h>
  46#include <linux/jiffies.h>
  47#include <linux/semaphore.h>
  48
  49#include <asm/io.h>
  50#include <asm/uaccess.h>
  51
  52#include <acpi/acpi.h>
  53#include <acpi/acpi_bus.h>
  54#include <acpi/processor.h>
  55
  56#define _COMPONENT              ACPI_OS_SERVICES
  57ACPI_MODULE_NAME("osl");
  58#define PREFIX          "ACPI: "
  59struct acpi_os_dpc {
  60        acpi_osd_exec_callback function;
  61        void *context;
  62        struct work_struct work;
  63        int wait;
  64};
  65
  66#ifdef CONFIG_ACPI_CUSTOM_DSDT
  67#include CONFIG_ACPI_CUSTOM_DSDT_FILE
  68#endif
  69
  70#ifdef ENABLE_DEBUGGER
  71#include <linux/kdb.h>
  72
  73/* stuff for debugger support */
  74int acpi_in_debugger;
  75EXPORT_SYMBOL(acpi_in_debugger);
  76
  77extern char line_buf[80];
  78#endif                          /*ENABLE_DEBUGGER */
  79
  80static int (*__acpi_os_prepare_sleep)(u8 sleep_state, u32 pm1a_ctrl,
  81                                      u32 pm1b_ctrl);
  82
  83static acpi_osd_handler acpi_irq_handler;
  84static void *acpi_irq_context;
  85static struct workqueue_struct *kacpid_wq;
  86static struct workqueue_struct *kacpi_notify_wq;
  87struct workqueue_struct *kacpi_hotplug_wq;
  88EXPORT_SYMBOL(kacpi_hotplug_wq);
  89
  90/*
  91 * This list of permanent mappings is for memory that may be accessed from
  92 * interrupt context, where we can't do the ioremap().
  93 */
  94struct acpi_ioremap {
  95        struct list_head list;
  96        void __iomem *virt;
  97        acpi_physical_address phys;
  98        acpi_size size;
  99        unsigned long refcount;
 100};
 101
 102static LIST_HEAD(acpi_ioremaps);
 103static DEFINE_MUTEX(acpi_ioremap_lock);
 104
 105static void __init acpi_osi_setup_late(void);
 106
 107/*
 108 * The story of _OSI(Linux)
 109 *
 110 * From pre-history through Linux-2.6.22,
 111 * Linux responded TRUE upon a BIOS OSI(Linux) query.
 112 *
 113 * Unfortunately, reference BIOS writers got wind of this
 114 * and put OSI(Linux) in their example code, quickly exposing
 115 * this string as ill-conceived and opening the door to
 116 * an un-bounded number of BIOS incompatibilities.
 117 *
 118 * For example, OSI(Linux) was used on resume to re-POST a
 119 * video card on one system, because Linux at that time
 120 * could not do a speedy restore in its native driver.
 121 * But then upon gaining quick native restore capability,
 122 * Linux has no way to tell the BIOS to skip the time-consuming
 123 * POST -- putting Linux at a permanent performance disadvantage.
 124 * On another system, the BIOS writer used OSI(Linux)
 125 * to infer native OS support for IPMI!  On other systems,
 126 * OSI(Linux) simply got in the way of Linux claiming to
 127 * be compatible with other operating systems, exposing
 128 * BIOS issues such as skipped device initialization.
 129 *
 130 * So "Linux" turned out to be a really poor chose of
 131 * OSI string, and from Linux-2.6.23 onward we respond FALSE.
 132 *
 133 * BIOS writers should NOT query _OSI(Linux) on future systems.
 134 * Linux will complain on the console when it sees it, and return FALSE.
 135 * To get Linux to return TRUE for your system  will require
 136 * a kernel source update to add a DMI entry,
 137 * or boot with "acpi_osi=Linux"
 138 */
 139
 140static struct osi_linux {
 141        unsigned int    enable:1;
 142        unsigned int    dmi:1;
 143        unsigned int    cmdline:1;
 144} osi_linux = {0, 0, 0};
 145
 146static u32 acpi_osi_handler(acpi_string interface, u32 supported)
 147{
 148        if (!strcmp("Linux", interface)) {
 149
 150                printk_once(KERN_NOTICE FW_BUG PREFIX
 151                        "BIOS _OSI(Linux) query %s%s\n",
 152                        osi_linux.enable ? "honored" : "ignored",
 153                        osi_linux.cmdline ? " via cmdline" :
 154                        osi_linux.dmi ? " via DMI" : "");
 155        }
 156
 157        return supported;
 158}
 159
 160static void __init acpi_request_region (struct acpi_generic_address *gas,
 161        unsigned int length, char *desc)
 162{
 163        u64 addr;
 164
 165        /* Handle possible alignment issues */
 166        memcpy(&addr, &gas->address, sizeof(addr));
 167        if (!addr || !length)
 168                return;
 169
 170        /* Resources are never freed */
 171        if (gas->space_id == ACPI_ADR_SPACE_SYSTEM_IO)
 172                request_region(addr, length, desc);
 173        else if (gas->space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY)
 174                request_mem_region(addr, length, desc);
 175}
 176
 177static int __init acpi_reserve_resources(void)
 178{
 179        acpi_request_region(&acpi_gbl_FADT.xpm1a_event_block, acpi_gbl_FADT.pm1_event_length,
 180                "ACPI PM1a_EVT_BLK");
 181
 182        acpi_request_region(&acpi_gbl_FADT.xpm1b_event_block, acpi_gbl_FADT.pm1_event_length,
 183                "ACPI PM1b_EVT_BLK");
 184
 185        acpi_request_region(&acpi_gbl_FADT.xpm1a_control_block, acpi_gbl_FADT.pm1_control_length,
 186                "ACPI PM1a_CNT_BLK");
 187
 188        acpi_request_region(&acpi_gbl_FADT.xpm1b_control_block, acpi_gbl_FADT.pm1_control_length,
 189                "ACPI PM1b_CNT_BLK");
 190
 191        if (acpi_gbl_FADT.pm_timer_length == 4)
 192                acpi_request_region(&acpi_gbl_FADT.xpm_timer_block, 4, "ACPI PM_TMR");
 193
 194        acpi_request_region(&acpi_gbl_FADT.xpm2_control_block, acpi_gbl_FADT.pm2_control_length,
 195                "ACPI PM2_CNT_BLK");
 196
 197        /* Length of GPE blocks must be a non-negative multiple of 2 */
 198
 199        if (!(acpi_gbl_FADT.gpe0_block_length & 0x1))
 200                acpi_request_region(&acpi_gbl_FADT.xgpe0_block,
 201                               acpi_gbl_FADT.gpe0_block_length, "ACPI GPE0_BLK");
 202
 203        if (!(acpi_gbl_FADT.gpe1_block_length & 0x1))
 204                acpi_request_region(&acpi_gbl_FADT.xgpe1_block,
 205                               acpi_gbl_FADT.gpe1_block_length, "ACPI GPE1_BLK");
 206
 207        return 0;
 208}
 209device_initcall(acpi_reserve_resources);
 210
 211void acpi_os_printf(const char *fmt, ...)
 212{
 213        va_list args;
 214        va_start(args, fmt);
 215        acpi_os_vprintf(fmt, args);
 216        va_end(args);
 217}
 218
 219void acpi_os_vprintf(const char *fmt, va_list args)
 220{
 221        static char buffer[512];
 222
 223        vsprintf(buffer, fmt, args);
 224
 225#ifdef ENABLE_DEBUGGER
 226        if (acpi_in_debugger) {
 227                kdb_printf("%s", buffer);
 228        } else {
 229                printk(KERN_CONT "%s", buffer);
 230        }
 231#else
 232        printk(KERN_CONT "%s", buffer);
 233#endif
 234}
 235
 236#ifdef CONFIG_KEXEC
 237static unsigned long acpi_rsdp;
 238static int __init setup_acpi_rsdp(char *arg)
 239{
 240        acpi_rsdp = simple_strtoul(arg, NULL, 16);
 241        return 0;
 242}
 243early_param("acpi_rsdp", setup_acpi_rsdp);
 244#endif
 245
 246acpi_physical_address __init acpi_os_get_root_pointer(void)
 247{
 248#ifdef CONFIG_KEXEC
 249        if (acpi_rsdp)
 250                return acpi_rsdp;
 251#endif
 252
 253        if (efi_enabled) {
 254                if (efi.acpi20 != EFI_INVALID_TABLE_ADDR)
 255                        return efi.acpi20;
 256                else if (efi.acpi != EFI_INVALID_TABLE_ADDR)
 257                        return efi.acpi;
 258                else {
 259                        printk(KERN_ERR PREFIX
 260                               "System description tables not found\n");
 261                        return 0;
 262                }
 263        } else {
 264                acpi_physical_address pa = 0;
 265
 266                acpi_find_root_pointer(&pa);
 267                return pa;
 268        }
 269}
 270
 271/* Must be called with 'acpi_ioremap_lock' or RCU read lock held. */
 272static struct acpi_ioremap *
 273acpi_map_lookup(acpi_physical_address phys, acpi_size size)
 274{
 275        struct acpi_ioremap *map;
 276
 277        list_for_each_entry_rcu(map, &acpi_ioremaps, list)
 278                if (map->phys <= phys &&
 279                    phys + size <= map->phys + map->size)
 280                        return map;
 281
 282        return NULL;
 283}
 284
 285/* Must be called with 'acpi_ioremap_lock' or RCU read lock held. */
 286static void __iomem *
 287acpi_map_vaddr_lookup(acpi_physical_address phys, unsigned int size)
 288{
 289        struct acpi_ioremap *map;
 290
 291        map = acpi_map_lookup(phys, size);
 292        if (map)
 293                return map->virt + (phys - map->phys);
 294
 295        return NULL;
 296}
 297
 298void __iomem *acpi_os_get_iomem(acpi_physical_address phys, unsigned int size)
 299{
 300        struct acpi_ioremap *map;
 301        void __iomem *virt = NULL;
 302
 303        mutex_lock(&acpi_ioremap_lock);
 304        map = acpi_map_lookup(phys, size);
 305        if (map) {
 306                virt = map->virt + (phys - map->phys);
 307                map->refcount++;
 308        }
 309        mutex_unlock(&acpi_ioremap_lock);
 310        return virt;
 311}
 312EXPORT_SYMBOL_GPL(acpi_os_get_iomem);
 313
 314/* Must be called with 'acpi_ioremap_lock' or RCU read lock held. */
 315static struct acpi_ioremap *
 316acpi_map_lookup_virt(void __iomem *virt, acpi_size size)
 317{
 318        struct acpi_ioremap *map;
 319
 320        list_for_each_entry_rcu(map, &acpi_ioremaps, list)
 321                if (map->virt <= virt &&
 322                    virt + size <= map->virt + map->size)
 323                        return map;
 324
 325        return NULL;
 326}
 327
 328#ifndef CONFIG_IA64
 329#define should_use_kmap(pfn)   page_is_ram(pfn)
 330#else
 331/* ioremap will take care of cache attributes */
 332#define should_use_kmap(pfn)   0
 333#endif
 334
 335static void __iomem *acpi_map(acpi_physical_address pg_off, unsigned long pg_sz)
 336{
 337        unsigned long pfn;
 338
 339        pfn = pg_off >> PAGE_SHIFT;
 340        if (should_use_kmap(pfn)) {
 341                if (pg_sz > PAGE_SIZE)
 342                        return NULL;
 343                return (void __iomem __force *)kmap(pfn_to_page(pfn));
 344        } else
 345                return acpi_os_ioremap(pg_off, pg_sz);
 346}
 347
 348static void acpi_unmap(acpi_physical_address pg_off, void __iomem *vaddr)
 349{
 350        unsigned long pfn;
 351
 352        pfn = pg_off >> PAGE_SHIFT;
 353        if (should_use_kmap(pfn))
 354                kunmap(pfn_to_page(pfn));
 355        else
 356                iounmap(vaddr);
 357}
 358
 359void __iomem *__init_refok
 360acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
 361{
 362        struct acpi_ioremap *map;
 363        void __iomem *virt;
 364        acpi_physical_address pg_off;
 365        acpi_size pg_sz;
 366
 367        if (phys > ULONG_MAX) {
 368                printk(KERN_ERR PREFIX "Cannot map memory that high\n");
 369                return NULL;
 370        }
 371
 372        if (!acpi_gbl_permanent_mmap)
 373                return __acpi_map_table((unsigned long)phys, size);
 374
 375        mutex_lock(&acpi_ioremap_lock);
 376        /* Check if there's a suitable mapping already. */
 377        map = acpi_map_lookup(phys, size);
 378        if (map) {
 379                map->refcount++;
 380                goto out;
 381        }
 382
 383        map = kzalloc(sizeof(*map), GFP_KERNEL);
 384        if (!map) {
 385                mutex_unlock(&acpi_ioremap_lock);
 386                return NULL;
 387        }
 388
 389        pg_off = round_down(phys, PAGE_SIZE);
 390        pg_sz = round_up(phys + size, PAGE_SIZE) - pg_off;
 391        virt = acpi_map(pg_off, pg_sz);
 392        if (!virt) {
 393                mutex_unlock(&acpi_ioremap_lock);
 394                kfree(map);
 395                return NULL;
 396        }
 397
 398        INIT_LIST_HEAD(&map->list);
 399        map->virt = virt;
 400        map->phys = pg_off;
 401        map->size = pg_sz;
 402        map->refcount = 1;
 403
 404        list_add_tail_rcu(&map->list, &acpi_ioremaps);
 405
 406 out:
 407        mutex_unlock(&acpi_ioremap_lock);
 408        return map->virt + (phys - map->phys);
 409}
 410EXPORT_SYMBOL_GPL(acpi_os_map_memory);
 411
 412static void acpi_os_drop_map_ref(struct acpi_ioremap *map)
 413{
 414        if (!--map->refcount)
 415                list_del_rcu(&map->list);
 416}
 417
 418static void acpi_os_map_cleanup(struct acpi_ioremap *map)
 419{
 420        if (!map->refcount) {
 421                synchronize_rcu();
 422                acpi_unmap(map->phys, map->virt);
 423                kfree(map);
 424        }
 425}
 426
 427void __ref acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
 428{
 429        struct acpi_ioremap *map;
 430
 431        if (!acpi_gbl_permanent_mmap) {
 432                __acpi_unmap_table(virt, size);
 433                return;
 434        }
 435
 436        mutex_lock(&acpi_ioremap_lock);
 437        map = acpi_map_lookup_virt(virt, size);
 438        if (!map) {
 439                mutex_unlock(&acpi_ioremap_lock);
 440                WARN(true, PREFIX "%s: bad address %p\n", __func__, virt);
 441                return;
 442        }
 443        acpi_os_drop_map_ref(map);
 444        mutex_unlock(&acpi_ioremap_lock);
 445
 446        acpi_os_map_cleanup(map);
 447}
 448EXPORT_SYMBOL_GPL(acpi_os_unmap_memory);
 449
 450void __init early_acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
 451{
 452        if (!acpi_gbl_permanent_mmap)
 453                __acpi_unmap_table(virt, size);
 454}
 455
 456int acpi_os_map_generic_address(struct acpi_generic_address *gas)
 457{
 458        u64 addr;
 459        void __iomem *virt;
 460
 461        if (gas->space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY)
 462                return 0;
 463
 464        /* Handle possible alignment issues */
 465         372        if (!acpi_gbl_permanent_mmap)
(struct acpi_ioremap *map)
virt = virtf">acpi_generic_ass="sref">acl4f">map)
virt) {
acl4f">map)
virt =  464         450space_id != PAGE_SIZ4"line" na4e="L371"> 371
map->        if (!v="sref">size)
virt = acpi_gb4_perm47ef">synchronize_rcu();
 347acpi_os_drop_map_ref( 450space_id != __a47P_KERNEL" class="sref">GFP_KERNEL(struct  376<4a>         450void _e="L457"> 457{
 = acpi_siz51" id="L451" 457"> 457{
 457{
" class="line" name="L458"> 458        u64 addr;
refcou4t47"line" name="L430"> 430
map->;
 460
 382
 431        if (!acpi_gbl_permanent_mmap) {
map4= map)
map),  462                return 0;
 463
 464         436        (&4 386          4     4eturn acpi_gbl_permanent_mmap)
 388
map = map)
virt = virtf">acpi_generic_ass="sref">acl4f">map)
 = acl4f">map)
virt =  464        phys, __iomem *PAGE4SIZE<4a>) - acpi_map_lookup_virt(virt, ef="drive4s/acpi/osl.c#L392" id="L492" c4ass="line" name="L392"> 392        if (map) {
virt = (&a4p;acpi_ioremap_loc/a>);
 394          4     4a href="+code=kfree" class="sref">kfree(map);
 395                return44ULL;
 397
INIT_LIST_HEAD(&a4p; 448acpi_ioremap_lock);
list<4a>);
49ode=map" class="sref">map->virt + (phys - map-> 394 49de=PAGE_SIZE" class="sref">PAGE_SIZ4"L400"> 440        map->EXPORT_SYMBOL_GPL(acpi_5ame="L4015> 401        5402         450void _L451" 457"> 457{
 457{
" clunmap_memory" class="sref">acpi_5a2"L402">54;GFP_KERNEL, &a#if)   GFP_KERNEL5GFP_KERNEL 397
pg_szi/oget="+code=pg_sz" cl+codelass=52" id="L452" class="line" name="L452"> 452        if (!pg_sz;
 362> 464         508        return  410phys5;
) {
__iomem * 451
pg_sz 443         *map)
) {
listass="sref">acpi_map( *acpi_os_map_cleanup<5a>(st5uct  3="L46MAX_OVERRIDE_LEe=virt" class="s="L46MAX_OVERRIDE_LEek" cl10d a5pi_ioremap *map)
map->pg_szi/o"L41ne" [ name="L334"> 3="L46MAX_OVERRIDE_LEe=virt" class="s="L46MAX_OVERRIDE_LEek" c] {
__iomem *GFP_KERNELacpi_unmap(pg_szi/opre="lined_orefrid1+codeconst8431"> 431        if (!pg_sz;re="lined_(acpode=pvalass="sref">pg_sode=pval 452GFP_KERNEL);
kfrs/acpet;
pg_snewpval nameivers/acpi/osl.   415              5"L427" cl5ss="line" name="L427"> 4575oid pg_sode=pval 452 || ref="+code=virt"newpvalass="sref">pg_snewpval nameivers/acpi/osl.   *, acpnewpvalass="sref">pg_snewpval namss="sref">pg_sz 398        acpi_ioremap_lockpg_sode=pval 452virt = pg_s"L41ne" ,          return;
_"L41ass="sref">pg_szi/o"L41ne" lass="line" name="L342"> 342  5drivers/a5pi/osl.c#L431" id="L431"5class52 href="+code=WARN" class="sref">WARN="line" name="L369"> 369                return  450 441                return;
 342  5432" id="5432" class="line" name="5432">53lass="sref">__func__<="sref">map->pg_szi/o"L41ne" l 5_acpi53acpi_os_drop_map_refacpnewpvalass="sref">pg_snewpval namss="sref">pg_szpg_szi/o"L41ne"   4445s/acpi/os5.c#L436" id="L436" class5"line53="+codiomtpunmap_table(ex3 name5s="sref">5utex_lock(&) {
acpi_os_unmap_memory(537"> 437<5a>         *)5
GFP_KERNEL(&5pg_szi/o
_orefrid1>    431"> 431        if (!<
_headeers/acpi/osl.c#L4 (!<
_headeers/ac*62" id="L362" clexisthys455" class="line" namexisthys455" c 452GFP_KERNEL 440          5     5a href="+code=WARN" cllllllll431"> 431        if (!<
_headeers/acpi/osl.c#L4 (!<
_headeers/ac**62" id="L362" clnewp55" class="line" namnewp55" c nameivers/acpi/osl.  ,  342  5"+code=ac5i_os_drop_map_ref" class5"sref54nmap_table((ex3 name5="L445"> 545
acpnewp55" class="line" namnewp55" c namss="sref">pg_sz 398         447}
5a href="d5ivers/acpi/osl.c#L448" i5="L445" clas#if)    447}
5aize)5mory);
refcount(&5> 449
acpnewp55" class="line" namnewp55" c namss= 431"> 431        if (!<
_headeers/acpi/osl.c#L4 (!<
_headeers/ac*  pg_sAmlCod1     (void acpi_map(virt, 5a hre55ef">synchronize_rclass="sref">acpnewp55" class="line" namnewp55" c namsne" name="L463"> 4name="L398"> 398       ass="line" name="L342"> 342  553" id="L553" class="line" name="L553"> 55=map" class="sref">map-> 369                return  450 441                return;
 342  55drivers/5p_table" class="sref">__5cpi_u55>);
 342  5L454" id=5L454" class="line" name=5L454"5 454}
map->refcount 342  5L"L445"> 5ef">acpi_os_map_generic_5ddres55;
map->refcounoem<
_sl.c#L463" id="L4oem<
_slne" l acpi_gener5c_add55>}

 422<5
                retTAINT_OVERRIDDEN_="L46TABLE/osl.c#L464" idTAINT_OVERRIDDEN_="L46TABLEne" l map-> 4555rintk() {
__iomem *map->__iomem *GFP_KERNELi/op

_orefrid1ass="sref">pg_szi/op

_orefrid1>    431"> 431        if (!<
_headeers/acpi/osl.c#L4 (!<
_headeers/ac*2" id="L362" clexisthys455" class="line" namexisthys455" c 452GFP_KERNEL/*5Handle possible alignmen5 issu5s */
pg_sz;
pg_snewp_sz" cl 452GFP_KERNEL 465       5}
madrivers/acpi/osl.c#L417"uL433" classdrivers3 id="Lclass="sref">acpnewp55" c_length="L39rt" class=newp55" c_length nameivers/acpi/osl.   352        if (! 342  5a>(struct5acp       voi/a>) {
virt) {
map)
);
PAGE_SIZ5"line" na5e="L371"> 371
 422pg_szrrq>     id="L457" class="lrrqass="sref">pg_srrq>   , lass=52" id="L452" cldev_sl.c#L463" id="L4dev_sl nameivers/acpi/osl.  acpi_gb5_perm57lass=s="line" name="L342"> 342  5r href="d53" class="line" name="L353"> 357ss="line" name="L392"> 392 392__a57P_KERNEL" class="sref">GFP_KERNEL 392rrq_hacpi_ers/acpi/osl.c#L4 (!map) {
 376<5a>        acphref="+code=KERN_ERhacpi_l.c#L463" id="L4hacpi_l/a>)ass="line" name="L342"> 342  5rirt" cla5/a> = rrq_hacpi_l.c#L463" id="L4zrrq_hacpi_ls/ac++ ->) {
refcou5t57ers/acpi/osl.} elsess="line" name="L342"> 342  5rline" na5a href="+code=out" class5"sref57 href="+code=WARN" class="sref">WARNzrrq_not_hacpi_l.c#L463" id="L4zrrq_not_hacpi_ls/ac++  382
__func__) {
map5= map),         if (!GFP_KERNEL 386          5     58/* Ch#L450" id="L450s/acpi/oinetallointefrupt_hacpi_ers/acpi/osl.c#L4 (!                retuL433" classdrivers3 id="Le="L392"> 392 392   GFP_KERNEL 388
map) {
GFP_KERNEL = phys, pg_srrq>    {
__iomem *PAGE5SIZE<5a>) - rrq_etatsref">acpi_size rrq_etatsref">>    l map)
(&a5p; 342  5ne" name=5L394"> 394          5     5a hrefmanent_mmap" class="sriiiiiiiii* ="L4 intefrupts differap 342  5n/a>(&5code=NULL" class="sref">5ULL;
 342  5ne" name=5e="L397"> 397
INIT_LIST_HEAD(&a5p; 392 4z" clFADTacpi_size " clFADTne" .="sref">refcountciointefruptlass="line" namtciointefruptne" lNEL" class="sref">GFP_KERNELlist<5a>);
59class="line" name="L3rivers/2" id="L452" cl=E_BAD_PARAMETEhref="+code=NULL=E_BAD_PARAMETEh/a>) {
 395 59de=PAGE_SIZE" class="sref">PAGE_SIZ5"L400"> 450         392rrq_hacpi_ers/acpi/osl.c#L4 (!PAGE_SIZ6ame="L4016> 401        __func__->) {
6402        map)
64;( 462"siode=rrqass="sref">pg_sz"siode=rrq>                retgsi33" classdrivergsine" ,  + (pg_srrq>   ) < 0ass="line" name="L342"> 342  6;kfr="line" name="L369"> 369                return  441                return;
 342  6;4a href=6+ode=NULL" class="sref">6map-> 397
map-> 608        return map)
phys6;
virtrrq_hacpi_ers/acpi/osl.c#L4 (!pg_sz    {
map->map) {
pg_szmap) {
 461
synchronize_r"sref">pg_szpg_srequest=rrq>                retrrqass="sref">pg_srrq>   , sl.c#L460" id=" pg_szrrq>   , sl.c#L460" id="IRQF_SHARE->   , s        return;
pg_szrrq>   lass="line" name="L342"> 342  6ss="sref"6acpi_ioremap *map-> 369                return  441                return;
pg_srrq>   l virtrrq_hacpi_ers/acpi/osl.c#L4 (!pg_sz 398         436       8" class="line" =E_NOT_ACQUIRE->acpi_iorem6id="L416"6class="line" name="L416"6 416<61ss *acpi_os_map_cleanup<6a>(st61ef="+code=mapd="L398" class="line" =E_OKref="+code=NULL=E_OK/a>) {
a6pi_ioremap *PAGE_SIZ6eap_memor6sl.c#L421" id="L421" cla6s="li61classa>        if (!pg_sz                retuL433" classdrivers3 id="Le="L392"> 392pg_srrq>   , sl.c#L460" id="    3e="L392"> 392   aGE_SIZE" class="sref">PAGE_SIZ6  342  6class="sr6f">acpi_unmap( 462pg_srrq>   sne" name="L463"> 4z" clFADTacpi_size " clFADTne" .="sref">refcountciointefruptlass="line" namtciointefruptne" lNEL" class="sref">GFP_KERNEL);
) {
(ex3 name6"L427" cl6ss="line" name="L427"> 4676oid pg_sfreehrrq>                retrrqass="sref">pg_srrq>   , sl.c#L460" id=" pg_szrrq>   l virtrrq_hacpi_ers/acpi/osl.c#L4 (!pg_sz 398         *, ) {
map->__iomem *63lass=manent_mmap" class="srefclass="="line" name="L342"> 342  6=__acpi_u6map_table" class="sref">6_acpi63acpi_manent_mmap" class="sri* Runnhys 342  6=drivers/6L433" class="line" name=6L433"63 id="manent_mmap" class="sri*ref="drivers/acpi/osl.c#L3ass="9p_ref<6s/acpi/os6.c#L436" id="L436" class6"line63="+codiomtpunmap_table(ex3 name6s="sref">6utex_lock(&acpi_siz51" id="sleeprs/acpi/osl.c#L4 (! 362> 464         342  637"> 437<6a>        map = pg_smsecsode=jiffi lcl               retms)6
(&6PAGE_SIZ6ne" name=6L440"> 440          6     6a hreflass="sref">acpi_siz51" id="stallrs/acpi/osl.c#L4 (!                retuL433" classdrivers3 id="Le="L392"> 392,  342  6"+code=ac6i_os_drop_map_ref" class6"sref64nmap_table 462 342  6ndrivers/6a href="drivers/acpi/osl6c#L4464 */
 392(ex3 name6="L445"> 645
 462 392 392 437<6ivers/acpi/osl.c#L448" i6="L4464rs/acpi/osl.c#L389" i2" id="L452" cludelaef="+code=map" cudelae    me="L462"> 462)6mory);
 462(&6> 449
 392 392(void virt, 6a hre65map" truct  65=map" class="sref">map)
__6cpi_u65 id="manent_mmap" class="srefclass="="line" name="L342"> 342  6L454" id=6L454" class="line" name=6L454"65 hrefmanent_mmap" class="sri* Support ="L4 3.0 AML Timer operacpclass="="line" name="L342"> 342  6L"L445"> 6ef">acpi_os_map_generic_6ddres65;
 342  6L_lockacpi_gener6c_add65rs/acmanent_mmap" class="sri* with=100 smgracularityclass="="line" name="L342"> 342  6L7"> 437<6a>)
 45658" idf="+code=size" >;
__iomem * 430
 461;
ACPI_ADR_SPACE_SYSTEM_MEMORY)
6a href="d6ivers/acpi/osl.c#L462" i6="L4666p" cl#if)     465       6acpi_map( 362        if (! 437<6s="sref">virt) {
acpi_map();
acpi_ioremap_lock 464         371
WARN="line" name="L369"> 369                return  441                return;
acpi_gb6_perm67>ACPI_ADR_SPACE_SYSTEM_MEMORY)
6r href="d63" class="line" name="L363"> 367ss="line" nam       ++sl.c#L460" id="tlass="line" nam"ne"  {
__a67ap_ta href="+code=acpi_ioremap" clas6rivers/ac6i/osl.c#L374" id="L374" 6lass=67="+codiomtpunmap_table(ex3 name6p_lock        if (!pg_sz                ret4 (!pg_szrog_sz" cl_KER="sref">pg_sz   , sl.c#L460" id="uL433" classdrivers3 id="Lc="sref">pg_sz   , sl.c#L460" id="uL433" classdrivers3 id="Lsl.c#L460" id="width="L39rt" class=width464"> 464         376<6a>         342  6rirt" cla6/a> = map =  392map)
refcou6t67" class="sref">acpi_ioremap_lock   > 464        WARNialuclass="line" namialuc>    =  + ( 382
map6=     = acpi/osl.c#L465" id="L465" class6" class="6ref">map),  462ss="line" name="L342"> 342  6"ivers/ac6f="drivers/acpi/osl.c#L364" id68name="L436"> 436 *me="L462"> 462WARNialuclass="line" namialuc>    =             retrnbass="sref">pg_srnb>                retportrs/acpi/osl.c#Lport>   l (&6 462ss="line" name="L342"> 342  6"6"> 376<6L386"> 386          6     68rs/acpi/osl.c#L398" i*me="L462"> 462acpi_osdrivers1ef="+c*)lass="sref">WARNialuclass="line" namialuc>    =             retrnwass="sref">pg_srnw>                retportrs/acpi/osl.c#Lport>   l  388
 462ss="line" name="L342"> 342  6" id="L456f =  462WARNialuclass="line" namialuc>    =             retrnlass="sref">pg_sodl>                retportrs/acpi/osl.c#Lport>   l phys,  342  6"line" na6href="drivers/acpi/osl.c6L390"68 href="+code=WARN" class="sref">WARNBUGme="L450"> 450    l PAGE6SIZE<6a>) - map)
(&a6p;) {
 394          6     69" namtruct 6ULL 397
 450void _read_portrs/acpi/osl.c#L4 (!   l INIT_LIST_HEAD(&a6p; *list<6a>);
698" idf="+code=size" classetatu
pg_sz                ret4 (!pg_szrog_sz" cl_KER="sref">pg_sz   , sl.c#L460" id="uL433" classdrivers3 id="L"sref">pg_sz   , sl.c#L460" id="uL433" classdrivers3 id="Lsl.c#L460" id="width="L39rt" class=width464"> 464         396 69"line" name="L430"> 430
 460         392ss="line" name="L342"> 342  7ame="L4017> 401        __func__ 392pg_soutb>                retialuclass="line" namialuc>   , sl.c#L460" id="portrs/acpi/osl.c#Lport>   l 7402         462ss="line" name="L342"> 342  7a2"L402">74;
pg_soutw>                retialuclass="line" namialuc>   , sl.c#L460" id="portrs/acpi/osl.c#Lport>   l 74394"> 394          7list<70 href="+code=p elses 462ss="line" name="L342"> 342  7;4a href=7+ode=NULL" class="sref">7pg_soutl>                retialuclass="line" namialuc>   , sl.c#L460" id="portrs/acpi/osl.c#Lport>   l  397
 342  7de=acpi_i7remap_lock" class="sref"7acpi_70rs/acpi/osl.c#L389" i2" id="L452" clBUGme="L450"> 450    l  708        return phys7;
PAGE_SIZ7d9code=ph7s        ) {
 471
 *map)
 450void _write_portrs/acpi/osl.c#L4 (!   l (ex3 name7e4a href=7+code=list_del_rcu" clas7="sre7">listaif)   pg_sreadq"+codiomtpunmap_table(ex3 name7e5a href=7class="line" name="L416"7 416<71sspg_sodl naid="Lsl.c#L460" id=">;
acpi_siz_>romem 464        acpi_os_map_cleanup<7a>(st71.c#L339" id="L339" class="line" name7="sref">a7pi_ioremap *(pg_sreadq"+coe=__init" class="sz"rs/acpi/osl.c#L4sz"464"> map->map->pg_sodl naid="Lsl.c#L460" id=">;
acpi_siz_>romem 46ass="sref">map->acpi_unmap();
pg_sl>   , sl.c#L460" id="h="L39rt" class=h/a>) {
 392pg_sl>    =             retreadlass="sref">pg_sreadl"+coe=__init" class="sz"rs/acpi/osl.c#L4sz"464">  4777oid ) =             retreadlass="sref">pg_sreadl"+coe=__init" class="sz"rs/acpi/osl.c#L4sz"464"+4> pg_sl>    |ef="+code=KERN_ERh="L39rt" class=h/a>) << 32> , acpi_map(PAGE_SIZ7drivers/a7pi/osl.c#L431" id="L431"7class72classa>        if (!PAGE_SIZ7432" id="7432" class="line" name="7432">73a href="+code=size" classi/oread_memoref="+code=map" cclassi/oread_memore+code=__init" class="sref"+code=pg_sz" class="sref">pg_sz;
   , sl.c#L460" id="u;
   , sl.c#L460" id="uL433" classdrivers3 id="Lsl.c#L460" id="width="L39rt" class=width464"> 464        7_acpi73 clas39" id="L339" class="line" name7=drivers/7L433" class="line" name=7L433"73 id="L444" cllass="sref">acpi_siz_>romem) {
) =             retwidth="L39rt" class=width464" / 8 {
(&pg_sboolid="Lsl.c#L460" id=">nmaprs/acpi/osl.c#L>nmap/a>) =             retfalsers/acpi/osl.c#Lfalse/a>) {
virt;
 437<7a>         *)7
virt rcuoread_loce>    l (&7virt)ss="sref">pg_sz                retp
   , sl.c#L460" id="sizclass="line" namsizc/a>)l  440          7     73 class="sref" nampi_ioremap_lock)>ss="line" name="L342"> 342  7n", __func__ 392 rcuoread_unloce>    l map->)ss="sref">pg_sz                retp
   , sl.c#L460" id="sizclass="line" namsizc/a>)l )>madrivers/2" id="L452" cl=E_BAD_ADDRESSref="+code=NULL=E_BAD_ADDRESSne"  {
 745
 437<7ivers/acpi/osl.c#L448" i7="L4474_iomem *)7mory);
   > 464         392    =  + ((void __iomem *virt, 7a hre75ef">synchroniswitch he="L462"> 462ss="line" name="L342"> 342  753" id="L753" class="line" name="L753"> 75=map" class="case 8:="line" name="L342"> 342  75drivers/7p_table" class="sref">__7cpi_u75>);
 462WARNialuclass="line" namialuc>    =             retreadbass="sref">pg_sreadb>                retiirt_"sz"rs/acpi/osl.c#Lvirt_"sz"/a>)> {
}
 7ef">acpi_os_map_generic_7ddres75;
 342  755a href=7 class="sref">acpi_gener7c_add75>}
 462acpi_osdrivers1ef="+c*)lass="sref">WARNialuclass="line" namialuc>    =             retreadwass="sref">pg_sreadw>                retiirt_"sz"rs/acpi/osl.c#Lvirt_"sz"/a>)> {
 437<7a>)
 4575rintk( 342  75/a>(&7sref">__iomem * 462WARNialuclass="line" namialuc>    =             retreadlass="sref">pg_sreadl"+coe=__init" class=iirt_"sz"rs/acpi/osl.c#Lvirt_"sz"/a>)> {
 342  7a href="d7ivers/acpi/osl.c#L462" i7="L4676=map" class="sref">ma*me="L462"> 462WARNialuclass="line" namialuc>    =             retread;
)> {
 465       7}
 342  7a"L445"> 72        if (! 450    l (struct7 437<7s="sref">virt) {
();
 392nmaprs/acpi/osl.c#Lio>nmap+code=__init" class=iirt_"sz"rs/acpi/osl.c#Lvirt_"sz"/a>)> {
 371
map->acpi_gb7_perm77lass="sref">__func__ 392 rcuoread_unloce>    l  377=map" class="sref">map)
__a77ck" class="sr       ) {
 376<7a>         462pg_swriteq76" id="L376" class="line" name="L777"> 437<7/a> = pg_sodl naid="Llass="sref">acpi_sizwrite;
;
   , volme=le lass="sref">acpi_siz_>romem 46ass="sref">map->refcou7t77e=virt" class="sref">virtpg_swriteq76"              retiallass="line" namial>   , =__init" class="sz"rs/acpi/osl.c#L4sz"464">  382
map->map7= pg_sodl naid="Llass="sref">acpi_sizwrite;
;
   , volme=le lass="sref">acpi_siz_>romem 46ass="sref">map->map),  392   , =__init" class="sz"rs/acpi/osl.c#L4sz"464"> (&7   lasslass32, =__init" class="sz"rs/acpi/osl.c#L4sz"464"+4>  376<7L386"> 386          7     78rs/actruct  437<7e="L388"> 388
acpi_map(map)
phys, pg_szPAGE_SIZ7"line" na7href="drivers/acpi/osl.c7L390"78classa>        if (!pg_sz;
   , sl.c#L460" id="u;
WARNialuclass="line" namialuc>   , sl.c#L460" id="uL433" classdrivers3 id="Lsl.c#L460" id="width="L39rt" class=width464"> 464        PAGE7SIZE<79lass=s="line" name="L342"> 342  7ef="drive7s/acpi/osl.c#L392" id="L792" c79=map" class="lass="sref">acpi_siz_>romem) {
) =             retwidth="L39rt" class=width464" / 8 {
 394          7     79ine" name="L3e="L392"> 392pg_sboolid="Lsl.c#L460" id=">nmaprs/acpi/osl.c#L>nmap/a>) =             retfalsers/acpi/osl.c#Lfalse/a>) {
7ULL 397
virt rcuoread_loce>    l INIT_LIST_HEAD(&a7p;map = )ss="sref">pg_sz                retp
   , sl.c#L460" id="sizclass="line" namsizc/a>)l list<7a>);
79rintk()>ss="line" name="L342"> 342  7L399" cla7s="line" name="L399"> 397 79ers/acpi/osl.c#L369" e="L392"> 392 rcuoread_unloce>    l  470        WARNiirt_"sz"rs/acpi/osl.c#Lvirt_"sz"/a>)ss="sref">pg_sz                retp
   , sl.c#L460" id="sizclass="line" namsizc/a>)l __func__< nampi_ioremap_lock)>8402        malass="sr       84;
84394"> 394          8list<80 href="+code=p{
84ode=NULL" class="sref">8 397
 462ss="line" name="L342"> 342  8de=acpi_i8remap_lock" class="sref"8acpi_80rs/acpi/osl.ccase 8:="line" name="L342"> 342  8="L408"> 808        return  462pg_swriteb76"              retialuclass="line" namialuc>   , sl.c#L460" id="iirt_"sz"rs/acpi/osl.c#Lvirt_"sz"/a>)> {
phys8;
 342  8"L411"> 481
__func__ 392pg_swritew76"              retialuclass="line" namialuc>   , sl.c#L460" id="iirt_"sz"rs/acpi/osl.c#Lvirt_"sz"/a>)> {
 *mabreak {
 342  8ers/acpi/8sl.c#L415" id="L415" cla8s="li81name="L436"> 436 2" id="L452" clwritellass="line" namwritel76"              retialuclass="line" namialuc>   , sl.c#L460" id="iirt_"sz"rs/acpi/osl.c#Lvirt_"sz"/a>)> {
8+code=list_del_rcu" clas8="sre81;

 342  8 class="s8ef">acpi_os_map_cleanup<8a>(st81rs/acpi/osl.c#L389" i2" id="L452" clwrite;
   , sl.c#L460" id="iirt_"sz"rs/acpi/osl.c#Lvirt_"sz"/a>)> {
 8pi_ioremap * 342  8eap_memor8sl.c#L421" id="L421" cla8s="li81 href="+code=WARN" class="sref">WARNBUGme="L450"> 450    l acpi_unmap(map)
);
 436 2" id="L452" clio>nmaprs/acpi/osl.c#Lio>nmap+code=__init" class=iirt_"sz"rs/acpi/osl.c#Lvirt_"sz"/a>)> {
 4878oid map->}
 392 rcuoread_unloce>    l  *, ) {
map->__iomem *83a href="+code=size" classetatu
PAGE_SIZ8=__acpi_u8map_table" class="sref">8_acpi83acpi_msref">pg_sz    strucd="L457" class="lz;cioidass="sref">pg_sz;cioidid="Lccsl.c#L460" id="pcioidass="sref">pg_s;cioidid=", sl.c#L460" id="uL433" classdrivers3 id="Lsl.c#L460" id="rea a href="driverreaid=",GE_SIZE" class="sref">PAGE_SIZ8=drivers/8L433" class="line" name=8L433"83 */
 392   , sl.c#L460" id="uL433" classdrivers3 id="Lsl.c#L460" id="width="L39rt" class=width464"> 464         342  8sL427" cl8utex_lock(&   , sl.c#L460" id="sizclass="line" namsizc/a>) {
virtL433" classdrivers3 id="L"sref">pg_sz) {
         *)8
   > 464        ) {
 440          8     83class="sref">__iomem *synchroniswitch he="L462"> 462ss="line" name="L342"> 342  8"+code=ac8i_os_drop_map_ref" class8"sref84=map" class="case 8:="line" name="L342"> 342  8ndrivers/8a href="drivers/acpi/osl8c#L4484 */
) = 1 {
}
 845
 342  8=5a href=8vers/acpi/osl.c#L447" id8"L44784rs/acpi/osl.c#L398" i            retsizclass="line" namsizc/a>) = 2 {
( 342  8n/a>(&8> 449
 392) = 4 {
virt, 8a hre85ef">synchroni)  ault:="line" name="L342"> 342  853" id="L853" class="line" name="L853"> 85=map" class="sref">ma       ) {
__8cpi_u85>);
map->(ex3 name8L"L445"> 8ef">acpi_os_map_generic_8ddres85id ;cioread>                retpcioidass="sref">pg_s;cioidid="-lasse="L392"> 392pg_s;cioidid="-lasse="L392"> 392PAGE_SIZ855a href=8 class="sref">acpi_gener8c_add85>}
 392pg_s;cioidid="-lasse="L392"> 392   , sl.c#L460" id="pcioidass="sref">pg_s;cioidid="-lasse="L392"> 392,GE_SIZE" class="sref">PAGE_SIZ85class="s8a>)
 392 392),  + ()l )8" class="line" name="L458"> 4585rintk(    =             retialucL433" classdriverialucL4/a>) {
__iomem *PAGE_SIZ8Le" name=8461" id="L461" class="li8e" na85 class="sref"                    retresult a href="driverresult>    ? ) : )l map)
PAGE_SIZ8A454" id=8e="L465"> 465       8pg_sz    strucd="L457" class="lz;cioidass="sref">pg_sz;cioidid="Lccsl.c#L460" id="pcioidass="sref">pg_s;cioidid=", sl.c#L460" id="uL433" classdrivers3 id="Lsl.c#L460" id="rea a href="driverreaid=",GE_SIZE" class="sref">PAGE_SIZ8a"L445"> 82        if (! 392WARNialuclass="line" namialuc>   , sl.c#L460" id="uL433" classdrivers3 id="Lsl.c#L460" id="width="L39rt" class=width464"> 464         342  8a7"> 437<8s="sref">virt) {
   , sl.c#L460" id="sizclass="line" namsizc/a>) {
map)
);
 462ss="line" name="L342"> 342  8ae" name=8e="L371"> 371
 342  8rmanent_m8ap" class="sref">acpi_gb8_perm87lass="sref">__func__ 392) = 1 {
 387=map" class="sref">mabreak {
__a87 */
 342  8rivers/ac8i/osl.c#L374" id="L374" 8lass=87name="L436"> 436 2" id="L452" clsizclass="line" namsizc/a>) = 2 {
 376<8a>         342  877"> 437<8/a> = ) = 4 {
refcou8t87ers/acpi/osl.)  ault:="line" name="L342"> 342  87line" na8a href="+code=out" class8"sref87 href="+code=WARN" cl       ) {
 382
map8= map)
map), ;ciowrite>                retpcioidass="sref">pg_s;cioidid="-lasse="L392"> 392pg_s;cioidid="-lasse="L392"> 392PAGE_SIZ8"ivers/ac8f="drivers/acpi/osl.c#L384" id88name="L436"> 436 pi/osl.c#L389" i2" id="L452" clPCI_DEVFNpg_s;cioidid="-lasse="L392"> 392   , sl.c#L460" id="pcioidass="sref">pg_s;cioidid="-lasse="L392"> 392,GE_SIZE" class="sref">PAGE_SIZ8"_lock 392 392), i_ioremap_lock   > {
 376<8L386"> 386          8     88rs/ac{
 437<8e="L388"> 388
    ? ) : )l phys, PAGE_SIZ8"line" na8href="drivers/acpi/osl.c8L390"88classname="Llass="sref">acpi_siz48pg_szi/oexecute_)  erred>    strucd="L457" class="lwork_strucd="L39rt" class=work_strucdcpi/o52" id="L452" clwork="L39rt" class=work464"> 464        PAGE8SIZE<89lass=s="line" name="L342"> 342  8ef="drive8s/acpi/osl.c#L392" id="L892" c89=map" class="strucd="L457" class="lzi/odpcass="sref">pg_szi/odpccpi/o52" id="L452" cldpcass="sref">pg_sdpccpi/o=             retconta#L3r_ofass="sref">pg_sconta#L3r_of>                retwork="L39rt" class=work464","strucd="L457" class="lzi/odpcass="sref">pg_szi/odpccpi/, i_ioremap_lock (&a8p; 394          8     89ine" name="L3hrefsl.c#L460" id="dpcass="sref">pg_sdpccpi/-lasse="L392"> 392 464        8ULL    >  376<8e="L397"> 397
INIT_LIST_HEAD(&a8p;map = pg_sdpccpi/-lasse="L392"> 392pg_sdpccpi/-lasse="L392"> 392 list<8a>);
897s/acpi/osl.c="sref">virtpg_sdpccpi/>  398 89e=vir" class="sref">map-> 480        __iomem * 401          comss="s>/*******************************************************************************__iomem */acpi/osl.c#L392" id="L9code=90=map"  comss="s> *__iomem *;  comss="s> * FUNCTION:sl.czi/oexecute__iomem *394"> 394          9list<90 href  comss="s> *__iomem *ode=NULL" class="sref">9  comss="s> * PARAMETEhS:slTyperef="drivers/ac-lTyperof the callbace> spans="sref">__iomem *="L397"> 397
 *              Function"drivers/ac-lFunction"to be executed> spans="sref">__iomem *">INIT_LIST_HEAD(&a9acpi_90rs/ac  comss="s> *              Contexd "drivers/ac-lFunction"par/a>tm spans="sref">__iomem *ist" class="sref">list<9ref="90class  comss="s> *__iomem *="line" name="L399"> 399;
  comss="s> * RETURN:sl.c  Statu
_Kspans="sref">__iomem *         *__iomem * 491
 * DESCRIPTION:sDepss="ng on"type, either queues function for )  erred execution or__iomem *  comss="s> *              imssdiately executes function on a separ/te thread.__iomem * *__iomem * ******************************************************************************/__iomem *acpi_siz_>zi/oexecuteacpi_siztypePAGE_SIZ9 class="s9ef">acpi_os_map_cleanup<9a>(st91ass="sref">map = i/dpexec_callbace a href="driver48acpi_sizfunctionrs/acpi/osl.c#Lfunction464",Llass=52" id="L452" clcontexd="L39rt" class=contexd464"," id="L457" class="lhprs/acpi/osl.c#Lhp/a>)> 464         9pi_ioremap *        void virtacpi_sizetatu
) {
pg_szi/odpccpi/o52" id="L452" cldpcass="sref">pg_sdpccpi/ {
acpi_unmap();
PAGE_SIZ9ers/acpi/9sl.c#L425" id="L425" cla9s="li92name="L436"> 436             str"ng">"Schedul"ng function [%p(%p)] for )  erred execution.\n"PAGE_SIZ9e4e="L4019ss="line" name="L427"> 49792;
acpi_sizfunctionrs/acpi/osl.c#Lfunction464",Le="L392"> 392> mapspan01  comss="s>/*__iomem *,          * Alloc/te/initialize DPC=strucdure.  Note that this memore will be__iomem *         * freed by the callee.  The kernel handles the work_strucd list=" i a__iomem *  comss="s>         * way that allows us"to also free its memore inside the callee.__iomem *93lass=  comss="s>         * Because we may waid=to schedule seem__iomem *9_acpi93=map"  comss="s>         * par/a>tm spans="sref">__iomem *  comss="s>         * hav"ng a same="Lwork_strucd.__iomem *  comss="s>         */__iomem *(&virtpg_sdpccpi/o=             retkmallocass="sref">pg_skmalloc>    sizeof strucd="L457" class="lzi/odpcass="sref">pg_szi/odpccpi/),Le="L392"> 392 pg_sdpccpi/>PAGE_SIZ9srivers/a9L440"> 440          9     93 class="sref"p = pg_sdpccpi/-lasse="L392"> 392synchronisl.c#L460" id="dpcass="sref">pg_sdpccpi/-lasse="L392"> 392map)
/*__iomem *  comss="s>         * We can't run hotplug 392<  i kevs="d_wq/k> * *__iomem *
  comss="s>         * because the hotplug 392< may call iomem< .remove() functions,__iomem *  comss="s>         * which invoke flush_scheduled_work/48__iomem *         * to flush these workqueues.__iomem *  comss="s>         */__iomem *virt) ? pg_sk> *<_hotplug_wq/a>) :="sref">__iomem * *<_notify_wqass="sref">pg_sk> *<_notify_wq) : pg_sk> *)> virt, 9a hre95ef">synchronisl.c#L460" id="dpcass="sref">pg_sdpccpi/-lasse="L392"> 392) ? 1 : 0  95=map" class="sref">map)
__9cpi_u95>);
 *<_hotplug_wqass="sref">pg_sk> *<_hotplug_wq/a>)>}
     + (pg_sdpccpi/-lasse="L392"> 392pg_szi/oexecute_)  erred>   > acpi_os_map_generic_9ddres95id  *<_notify_wqass="sref">pg_sk> *<_notify_wq)>acpi_gener9c_add95>}
     + (pg_sdpccpi/-lasse="L392"> 392pg_szi/oexecute_)  erred>   > map->)9" class="line" name="L459"> 4595class="line" name="L3e="L462"> 462     + (pg_sdpccpi/-lasse="L392"> 392pg_szi/oexecute_)  erred>   > (&9sref">__iomem *PAGE_SIZ9Le" name=9461" id="L461" class="li9e" na95 class="sref"pspan01  comss="s>/*__iomem *         * On some machMEMs, a software-initiated SMI causes 39rruption unliversspans="sref">__iomem *  comss="s>         * the SMI runs on CPU 0.  An SMI can be initiated by any AML, bu"> spans="sref">__iomem *         * typ hrely it's don<  i GPE-related methods that are run via__iomem * 465       9  comss="s>         * workqueues, so we can alass=the known 39rruption cases by alwayersspans="sref">__iomem *        if (!  comss="s>         * queue"ng on"CPU 0.rsspans="sref">__iomem *  comss="s>         */__iomem * 437<9s="sref">virt) {
map =  + (pg_sdpccpi/-lasse="L392"> 392 map)
);
ss="line" name="L342"> 342  9ae" name=9e="L371"> 371
WARNprintk="L39rt" class=printk464"fsl.c#L460" id="KERN_ERR="L39rt" class=KERN_ERR_KER="sref">acpi_sizPREFIX="L39rt" class=PREFIXp" class="sref">map)
acpi_gb9_perm97lass="sref">__func__  str"ng">"Call to queue_work() failed.\n"  397=map" class="sref">ma"sref">acpi_sizetatu
) {
__a97 */
pg_sdpccpi/>  " class="sref">map->         437<9/a> = virtacpi_sizzi/oexecuteacpi_siztypePAGE_SIZ9+" class=9unt" class="sref">refcou9t97ers/acpi/osl.c#L369" >
acpi_sizfunctionrs/acpi/osl.c#Lfunction464",Llass=52" id="L452" clcontexd="L39rt" class=contexd464"> 342  9e" name="9382"> 382
zi/oexecuteacpi_sizfunctionrs/acpi/osl.c#Lfunction464",Le="L392"> 392 map9= map), i/oexecute464"> virtacpi_sizzi/ohotplug_executeacpi_sizfunctionrs/acpi/osl.c#Lfunction464",diomtpunmap_table(ex3 name9"5a href=9L386"> 386          9     98>}
 437<9e="L388"> 388
 342  9e id="L459f = zi/oexecute 392 phys, map->__iomem *PAGE9SIZE<99lass=lass="sref">acpi_siz48 342  9ck(&a9p;pg_sk> *)>  394          9     99ine" name="L3e="L392"> 392pg_sk> *<_notify_wq)> 9ULLmap-> 376<9e="L397"> 397
INIT_LIST_HEAD(&a9p;   > list<9a>);
99ap" class="sref">map)
 399 99e=vir="sref">virtmap)
         392        a href="+code=INIT_LIST_HEAD"10a1e="L40110a/acpi/osl.c#L392" id="L10a/a>10a=map" class="strucd="L457" class="lsemaphore a href="driversemaphore464"=52" id="L452" clsem a href="driversem_KER==             retNULL="L39rt" class=NULL_KER 10ack" c 394          10a39>10aine" name="L3e="L392"> 392> 10aod>10aid  397
INIT_LIST_HEAD(&a10a">>10aass="sref">map = > list<10ais>10aap" class="sref">map)
 3910a=">10ae=virt" class="sref">virt 10aclass="sref">__iomem *
 392 *101=map" class="sref">map)
  str"ng">"Creat"ng semaphore[%p|%d].\n"PAGE_SIZ1013e="L40110sl.c#L415" id="L415" cla10sl.>101name="L436"> 436           52" id="L452" clhandle a href="driverhandleid=", sl.c#L460" id="initial_unit
> 101376" id="L376" class="line" name="L1015e="L40110class="line" name="L416"10cla>101>}
) {
acpi_os_map_cleanup<10ef">1016
map->map)
101ers/a  comss="s>/*__iomem *101 clas  comss="s> * TODO: A better way to delete semaphores?  Linux doesn't have a__iomem *10+cclas  comss="s> * 'delete_semaphore()' function -- may result" i an invalid> spans="sref">__iomem *acpi_unmap(>10+=map"  comss="s> * pointer dere ers=ce for non-synchronized consumm spans="sref">__iomem *10+ */  comss="s> * we at least check for bloceed threads and"signal/ca=cel=them?> spans="sref">__iomem *10+ href  comss="s> */__iomem * 410ss=>10+376" id="L376" class="line" name="L1025e="L40110="+code=acpi_os_unmap_me10="+>10+5
virtacpi_sizzi/odelete_semaphore a href="driver4810+rs/acs="line" name="L342"> 342  10+7e="L40110virt, PAGE_SIZ10+9e="L40110pi/osl.c#L431" id="L431"10pi/>10+ href="+code= refpi_ioremap_lock) {
10map>104=map" class="sref">map)
104>);
  str"ng">"Delet"ng semaphore[%p].\n"104="+codiomtpunmap_table(ex3 name1044e="L40110utex_lock(&104id  + ( 392> 104rs/acpi/osl.c="sref">virt  >104ass="sref">map = 104ap" class="sref">map)
) {
 440          10L44>1049
map->10pap" class="sref">map)
10p=map"  comss="s>/*__iomem * * TODO: Support for unit
 lass 1?> spans="sref">__iomem * */__iomem *
virtacpi_sizzi/owaid_semaphore a href="driver48 392 392acpi_osdriveru1ass="se="L392"> 39210pass="s="line" name="L342"> 342  10p6e="L40110ivers/acpi/osl.c#L448" i10ive>10pass="sref">map = etatu
acpi_sizetatu
) {
);
 4>10pe=virt" classlong sl.c#L460" id="jiffie
(void virt, 10 cl>10 cp" class="sref">map)
10 =map" class=" refpi_ioremap_lock__10p_t>10  */
) {
10 ="+codiomtpunmap_table(ex3 name1054e="L40110ef">acpi_os_map_generic_10ef">10 id acpi_gener10 cl>10 >}
) {
)
10 7s/acpi/osl.c="sref">virt  str"ng">"Waid"ng for semaphore[%p|%d|%d]\n"PAGE_SIZ1058e="L40110sref">__iomem *10 ers/acpi/osl.c#L369" >
 392 392__iomem *10PAd 10P=map" class="sref">ma"sref">acpi_sizjiffie
) {
10P */
map-> 465       10e=">10P454}
 {
        if (!10Pid 10Prs/acpi/osl.c="sref">virtvirt) {
virt10Pclass="line" name="L3e="L462"> 462) {
);
10Pde=PAGE_SIZE" class="sref">PAGE_SIZ1069e="L40110e="L371"> 371
ss="line" name="L342"> 342  107me="L40110ap" class="sref">acpi_gb10ap">10aplass="line" name="L3e="L462"> 462 342  1071e="L401103" class="line" name="L3103" >10a=map" class="sref">mac#L369" >
  str"ng">"Failed"to acquire semaphore[%p|%d|%d], %s"PAGE_SIZ1072e="L40110pi_map_table" class="sre10pi_>10a */

 392 392PAGE_SIZ1073e="L40110i/osl.c#L374" id="L374" 10i/o>10aname="L436"> 436           > {
 342  1075e="L40110a>         342  1076e="L40110/a> = mac#L369" >
  str"ng">"Acquired semaphore[%p|%d|%d]" 342  1077e="L40110drivers/acpi/osl.c#L378"10dri>10aclass="line" name="L3           392refcou10unt>10aers/acpi/osl." class="sref">map->10aclass="sref">__iomem * 382
103=map"truct map), /*__iomem *  comss="s> * TODO: Support for unit
 lass 1?> spans="sref">__iomem * 386          10L38>103rs/ac  comss="s> */__iomem * 388
acpi_sizzi/osignal_semaphore a href="driver48 392103/a>        void phys, 103ers/acpi/osl.strucd="L457" class="lsemaphore a href="driversemaphore464"=52" id="L452" clsem a href="driversem_KER==  strucd="L457" class="lsemaphore a href="driversemaphore464"Lc)sl.c#L460" id="handle a href="driverhandleid=" {
__iomem *PAGE10_SI>10_Smap" class=" refpi_ioremap_lockma       ) {
 394          10L39>10_3map" class=" refsl.c#L460" id="unit
10cod>10_;
) {
 397
INIT_LIST_HEAD(&a10f">>10_ass="sref">map =   str"ng">"Signal"ng semaphore[%p|%d]\n" 342  1097e="L40110list" class="sref">list<10lis>10_class="line" name="L3          sl.c#L460" id="unit
>  3910s=">10_de=PAGE_SIZE" class="sref">PAGE_SIZ1099e="L401100         =  110cp" class="sref">map)
) {
 394          11a39>110="+codiomtpunmap_table(ex3 name11a4e="L40111aode=NULL" class="sref">11aod>11aid  = (ex3 name11a5e="L40111a="L397"> 397
virtINIT_LIST_HEAD(&a11a">>110rs/acs="line" name="L342"> 342  101013e="L4011">list<10ais>10aap" class1is>101ap" class="sref">map)
 39101=">101e=virtifdefap = map)
         342  101me="L401101
 462) {
 *101=map" class="sref">map)
"sizeof sl.c#L460" id="s13" _uf a href="driverb13" _uf 64">> 1011"+codiomtpunmap_table(ex3 name11a4e="L401101code=list_del_rcu" clas101co>1011
/*< emove(the kCR fdb includes*/__iomem *1011}
) =             ret=tr"lers/acpi/osl.c#Lstr"ler64"fsl.c#L460" id="suf er a href="driverbuf er464">) - 1acpi_os_map_cleanup<101f">1011map" class="sref">macl.c#L460" id="suf er a href="driverbuf er464">[           retAhar=&q39; \0q39; /spans=101ers/a<#endifuct 1011lass="sref">__iomem *1012=virt" class       < acpi_unmap(>1012map"truct 101 */  comss="s>/*<  CPI_FUTURE_USAGE" */__iomem *1012"+codiomtpunmap_table(ex3 name11a4e="L401101s="line" name="L427"> 4101s=>1012
virtacpi_sizzi/owignal_a href="driver481012ss="s="line" name="L342"> 342  1016e="L401101="+code=__iomem" class=101=">1012map" class="sswitchf            ret=unctionrs/acpi/osl.c#Lfunction464", 342  1017e="L401101irt, __iomem * = acpi_sizPREFIX="L39rt" class=PREFIXp" clsspan01  str"ng">"Faital op_siz xecute4dn" 1012href="+code=WARN" clabeadk = __iomem *101ap>1013map" class="sref">ma"span01  comss="s>/*__iomem *1013*/  comss="s>         **********AML, Beadkointe/spans="sref">__iomem *1013href  comss="s>         **********AMPI_ spec. saysto ateat" it as a NOPunliversspans="sref">__iomem *(&101376"   comss="s>         **********Ayouare rdebuggng"  Sho re/whenwe antergrae> spans="sref">__iomem *         **********AML, debuggr anteothe knernel debuggr antrsspans="sref">__iomem *                 **********Ahook will go here  SButunlti=themn it irsspans="sref">__iomem *         **********Anotunsefu to qrintkany thng on"Cbeadkointe.__iomem */        **********__iomem * 440          10144>1013href="+code=WARN" clabeadk1014}
__iomem *1014map" class="sref">ma"beadk1014*/
(ex3 name11a4e="L4011015
) {
1014s/actruct 1014iomem *101rintkacpi_sizzi/ow="dr_s   rs/acpi/osl.c#Lui/ow="dr_s   r64"fchar=52" id="L452" clbtr"s/acpi/osl.c#Lstr"64">101e=virt="line" name="L342"> 342  1019e="L401101>(void ) =             ret=i/ow="drs/acpi/osl.c#Lui/ow="dra>) {
virt, 101cl>1015map" class=" rd="L457" class="lrconlta href="driveruhonlta>) =             ret=CPI_DAX_SOVRR_IDE_LE1015map" class="sref">map)
__101_t>101 */
|| f!2" id="L452" clbtr"s/acpi/osl.c#Lstr"64">101454}
acpi_os_map_generic_101f">101576" id="L376" class="line" name="L1015e="L401101class="sref">acpi_gener101cl>101>}
) -- +/a> +            ret=tr"s/acpi/osl.c#Lstr"64">|/a> +/a> + 2" id="L452" clbtr"s/acpi/osl.c#Lstr"64">+            ret=tr"s/acpi/osl.c#Lstr"64">++ 342  1016e="L401101>)
macref            ret=isalnu a href="driversisalnu 64"fc2" id="L452" clbtr"s/acpi/osl.c#Lstr"64"><|| f2" id="L452" clbtr"s/acpi/osl.c#Lstr"64">==   pan01  str"ng">&q39;  q39; /spans=|| f2" id="L452" clbtr"s/acpi/osl.c#Lstr"64">==   pan01  str"ng">&q39; :q39; /spans=) ++=  2" id="L452" clbtr"s/acpi/osl.c#Lstr"64">+a href="+code=INIT_LIST_HEAD"11a3e="L401101ref">__iomem *101ers/acpi/osl.c#L369" >lse"sref 2" id="L452" clbtr"s/acpi/osl.c#Lstr"64">==   pan01  str"ng">&q39; \q39; q39; /spans=|| f2" id="L452" clbtr"s/acpi/osl.c#Lstr"64">==   pan01  str"ng">&q39; quot;1016lass="line" name="L3else class="sref">map->101=map" class="sref">ma"""""""""beadk 465       101=">101454}
) =   virt) {
101class=ruct );
101de=PAGE_SIZE" class="sref">PAGE_SIZ1019e="L401101="L371"> 371
  str"ng">"Fi/ow="dr=quot;i/ow="dr_s   r64"f acpi_gb101p">1017p" class="sref">map)
101=map" #defe" sl.c#L460" id="hOSI_STRING_LE  comss="s>/*< arbitrary**__iomem */*< arbitrary**__iomem *1017"+codiomtpunmap_table(ex3 name11a4e="L401101;
 342  1015e="L401101>        /acpi/osl.c#Lstr"ng"64">[           retAOSI_STRING_LE>1017ss="sref">map = acpi_sizzenabe a href="driverhenabe 64">+a href="+code=INIT_LIST_HEAD"11a7e="L401101rivers/acpi/osl.c#L378"101ri>101class=}+a href="+code=INIT_LIST_HEAD"11a7e="L401101nt" class="sref">refcou101nt>1017e=PAGE_SIZE" class="sref">PAGE_SIZ1019e="L401101 href="+code=out" class101 h>101class=tatuic trucd="L457" class="lsosi_s   r_="srPAGE_SIZ101me="L40110182"> 382
 462[           retAOSI_STRING_ENTRIESDAX_s/acpi/osl.c#LuOSI_STRING_ENTRIESDAX_/acp]=  ="line" name="L342"> 342  1011e="L401101 "FModule Devicequot; 342  1012e="L401101ef">map), "FProcessor Devicequot; 342  1012e="L401101="drivers/acpi/osl.c#L3101=">10183ap" class="s{span01  str"ng">"F3.0 _SCP Extensionsquot; 342  1012e="L401101a href="+code=acpi_iore101a >10184ap" class="s{span01  str"ng">"FProcessor Aggregator Devicequot; 342  1012e="L401101386"> 386          10138>101rs/ac<}+a href="+code=INIT_LIST_HEAD"11a6e="L401101="L388"> 388
101/a>   ass="sref">acpi_siz4_init a href="drivers_init464"f"sref">acpi_sizzi/oi_s   rs/acpi/osl.c#Lui/oi_s   r64"fchar=52" id="L452" clbtr"s/acpi/osl.c#Lstr"64">phys, 1018=virt="line" name="L342"> 342  1019e="L401101ref="drivers/acpi/osl.c101re>1018href="+code=Wtrucd="L457" class="lsosi_s   r_="sr+a href="+code=INIT_LIST_HEAD"11ame="L401101SIZE" class="sref">PAGE101SI>101Smap" class="  = acpi_sizzenabe a href="driverhenabe 64">=             ret=ruc a href="driverhruc ass=+a href="+code=INIT_LIST_HEAD"11ame="L401101/acpi/osl.c#L392" id="L101/a>101=map" class="srd="L457" class="lria href="driverli64">+a href="+code=INIT_LIST_HEAD"11ame="L401101; 394          10139>1013map" class=" refsi_ioremap_lockigblcreate_sosi_methosa href="driveruigblcreate_sosi_methos64">101od>101;
 397
INIT_LIST_HEAD(&a101">>1019class="line" ref="sref">virt==   sref">virt==   pan01  str"ng">&q39; \0q39; /spans= 342  1017e="L401101ist" class="sref">list<101is>101class="line" name="L3  = acpi_sizPREFIX="L39rt" class=PREFIXp" clsspan01  str"ng">"F_OSI methos disabe dn"  39101=">1019rs/acpi/osl.c#L369" > = igblcreate_sosi_methosa href="driveruigblcreate_sosi_methos64">=             ret=FALSref="+code=NULL=FALSr64">+a href="+code=INIT_LIST_HEAD"11ame="L401101        1120map" class=" ruct map)
1120*/
==   pan01  str"ng">&q39; !q39; /spans= 342  1023e="L401112394"> 394          11239>112054}
+++a href="+code=INIT_LIST_HEAD"112m4="L4011123de=NULL" class="sref">102od>1120
acpi_sizzenabe a href="driverhenabe 64">=             ret=fals a href="driverhfals 64">+a href="+code=INIT_LIST_HEAD"1125e="L401112="L397"> 397
INIT_LIST_HEAD(&a102">>1120iomem *list<10ais>10aap" class2is>1020lass="line" nor u(L457" class="lria href="driverli64">=   <"L457" class="lria href="driverli64">&lss 1           retAOSI_STRING_ENTRIESDAX_s/acpi/osl.c#LuOSI_STRING_ENTRIESDAX_/acp<"L457" class="lria href="driverli64">++ 342  1028e="L401102="line" name="L399"> 39102=">1020rs/acpi/osl.c#L369" > = =  /a> + ([           retAia href="driverli64">]1020href="+code=WARN" clarefpi_ioremap_locklasse="L392"> 392/acpi/osl.c#Lstr"ng"64">Lsl.c#L460" id="htr"s/acpi/osl.c#Lstr"64">< 342  102me="L401102
 = lasse="L392"> 392=             ret=enabe a href="driverhenabe 64">+a href="+code=INIT_LIST_HEAD"1121e="L401102cpi_ioremap *1021map" class="sref">ma"""""""""beadklse"sref l.c#L460" id="Kosia href="driverlosi64">lasse="L392"> 392/acpi/osl.c#Lstr"ng"64">[0]==   pan01  str"ng">&q39; \0q39; /spans= 342  1023e="L401102l.c#L415" id="L415" cla102l.>102name="L436"> 436           = lasse="L392"> 392=             ret=enabe a href="driverhenabe 64">+a href="+code=INIT_LIST_HEAD"11214="L401112code=list_del_rcu" clas102co>1021
lasse="L392"> 392/acpi/osl.c#Lstr"ng"64">Lsl.c#L460" id="htr"s/acpi/osl.c#Lstr"64">Lsl.c#L460" id="hOSI_STRING_LE1021}
acpi_os_map_cleanup<102f">1021map" class="sref">macruct  *1021lass="line" nruct 102ers/a1021lass="sref">__iomem *1022=virttatuic ass="sref">acpi_siz4_init a href="drivers_init464"f"sref">acpi_sizzs  sosi_lnux s/acpi/osl.c#Lst  sosi_lnux 64"fsunignaedsrd="L457" class="lrenabe a href="driverhenabe 64">acpi_unmap(>1022map"t="line" name="L342"> 342  1022e="L401102code=virt" class="sref"102co>1022*/
 392=!             ret=enabe a href="driverhenabe 64">102254}
 392=             ret=enabe a href="driverhenabe 64">+a href="+code=INIT_LIST_HEAD"1124e="L401102s="line" name="L427"> 4102s=>102376" id="L376" class="line" name="L1025e="L401102"+code=acpi_os_unmap_me102"+>10225/
 3921022map" class="sref">macl.c#L460" id="si/oi_s   rs/acpi/osl.c#Lui/oi_s   r64"fcspan01  str"ng">"FLnux quot; 102rintk(map-> = i/oi_s   rs/acpi/osl.c#Lui/oi_s   r64"fcspan01  str"ng">"F!Lnux quot; 1022lass="sref">__iomem *102ap>1023map"truct 1023k" c1023hrefacpi_siz4_init a href="drivers_init464"f"sref">acpi_sizzicmd"L43sosi_lnux s/acpi/osl.c#Lsicmd"L43sosi_lnux 64"fsunignaedsrd="L457" class="lrenabe a href="driverhenabe 64"> 342  1023e="L401102;
virt 392=  1;c=lpan01  comss="s>/*< cmd"L43 s  the kdefault and oL34ride DMI**__iomem *        map =  392=   <"sref">__iomem *virt<<"sref">__iomem *PAGE_SIZ1029e="L401102440"> 440          10244>1023href="+code=W      1024}
1024map" class="sref">map)
1024*/acpi_siz4_init a href="drivers_init464"f"sref">acpi_sizzidmisosi_lnux s/acpi/osl.c#Lsidmisosi_lnux 64"fsrd="L457" class="lrenabe a href="driverhenabe 64">, holstWtrucd="L457" class="lsdmissystem_isa href="driverudmissystem_is/acpi2" id="L452" clbsa href="driverud64">1024"+cod="line" name="L342"> 342  1024e="L4011025
 = acpi_sizPREFIX="L39rt" class=PREFIXp" clsspan01  str"ng">"FDMI*detected:%s&n"lasse="L392"> 392<<"sref">__iomem *1024s/ac{
1024class="line" ref="sref">virt= = ->1024lass="line" name="L3       1024e=PAGE_SIZE" class="sref">PAGE_SIZ1029e="L401102>(void  =  392=  1;c=ef"p  comss="s>/*< DMI*knowsthea theis box asks OSI(Lnux )**__iomem *virt, 102cl>1025map" class="  = <<"sref">__iomem *1025map" class="sref">map)
__102_t>102 */
102454acpi_os_map_generic_102f">102576" id="L376" class="line" name="L1025e="L401102class="sref">acpi_gener102cl>1025s/ac  comss="s> *__iomem *)
  * Modifythe klistWof quot;__iomem *  __iomem *__iomem *1025rs/a  comss="s>/ * empty tr"ng" disabe s _OSI/spans="sref">__iomem */ * tr"ng" tatr"ng fwith q39; !q39;  disabe s hea ttr"ng"64pans="sref">__iomem *1026lass=span01  comss="s>/ * ohe rwise tr"ng" is addd"to alist, augs="sng" built-in tr"ng"rsspans="sref">__iomem *102=map" span01  comss="s> */__iomem *1026*/acpi_siz4_init a href="drivers_init464"f"sref">acpi_sizziosi_s   r_lat a href="driverhiosi_s   r_lat 64"fsass= 465       102=">1026"+cod="line" name="L342"> 342  1024e="L401102        if (!102id +a href="+code=INIT_LIST_HEAD"1125e="L401102a href="+code=acpi_iore102a >102rs/acpi/osl.c=har=52" id="L452" clbtr"s/acpi/osl.c#Lstr"64">+a href="+code=INIT_LIST_HEAD"1125e="L401102="sref">virt) {
+a href="+code=INIT_LIST_HEAD"1127e="L401102f="+code=printk" class=102f=>1026s/acpi/osl.c="sref">virtitatu
acpi_sizztatu
);
102de=PAGE_SIZE" class="sref">PAGE_SIZ1029e="L401102="L371"> 371
=   <"L457" class="lria href="driverli64">&lss 1           retAOSI_STRING_ENTRIESDAX_s/acpi/osl.c#LuOSI_STRING_ENTRIESDAX_/acp<"L457" class="lria href="driverli64">++ 342  102me="L401102p" class="sref">acpi_gb102p">102plass="line" name="L3e="L462"> 462=  /a> + ([           retAia href="driverli64">]102=map" class="sref">mac" id="L452" clbtr"s/acpi/osl.c#Lstr"64">=             ret=osia href="driverlosi64">lasse="L392"> 392/acpi/osl.c#Lstr"ng"64">102name="L436"> 436  ref 2" id="L452" clbtr"s/acpi/osl.c#Lstr"64">==   pan01  str"ng">&q39; \0q39; /spans=1027
        lasse="L392"> 392 342  102me="L401102a> = mac#L369" >sref">acpi_sizztatu
<1027p" class="sref">map)
refcou102nt>1027rs/acpi/osl.c#L369" >ivers/a ref l.c#L460" id="KCPI_DSUCCESSs/acpi/osl.c#LsCPI_DSUCCESS64"fsL457" class="lrtrtu
map)
1027href="+code=WARN" cla"+code= #L369" >sref">acpi_sizzrintk="L39rt" class=printk464"fsl.c#L460" id="KERN_EINFO"L39rt" class=KERN_EINFOKER="sref">acpi_sizPREFIX="L39rt" class=PREFIXp" clsspan01  str"ng">"FAddd"t_OSI(#37;s&)n"< 382
 342  1021e="L401102 ma"""""""""sref">acpi_sizztatu
<map),  436          ref l.c#L460" id="KCPI_DSUCCESSs/acpi/osl.c#LsCPI_DSUCCESS64"fsL457" class="lrtrtu
map)
sref">acpi_sizzrintk="L39rt" class=printk464"fsl.c#L460" id="KERN_EINFO"L39rt" class=KERN_EINFOKER="sref">acpi_sizPREFIX="L39rt" class=PREFIXp" clsspan01  str"ng">"FDeletd"t_OSI(#37;s&)n"< 386          10238>1028}
 388
 = phys, 1028e=PAGE_SIZE" class="sref">PAGE_SIZ1029e="L401102ref="drivers/acpi/osl.c102re>1028lass=tatuic id="L457" class="lr_init a href="drivers_init464"f"sref">acpi_sizz/oi_s   rs/acpi/osl.c#Lu/oi_s   r64"fchar=52" id="L452" clbtr"s/acpi/osl.c#Lstr"64">PAGE102SI>102Smap" ="line" name="L342"> 342  102me="L401102/acpi/osl.c#L392" id="L102/a>102=map" class="sref="sref">virt=/a> +/a> + i_ioremap_lock  str"ng">"FLnux quot;Lsl.c#L460" id="htr"s/acpi/osl.c#Lstr"64"><<"line" name="L342"> 342  102me="L401102;icmd"L43sosi_lnux s/acpi/osl.c#Lsicmd"L43sosi_lnux 64"fs1< 394          10239>1023map" class=" lse"sref l.c#L460" id="Ktr"s/acpi/osl.c#Lstr"64">=/a> +/a> + i_ioremap_lock  str"ng">"F!Lnux quot;Lsl.c#L460" id="htr"s/acpi/osl.c#Lstr"64"><<"line" name="L342"> 342  102me="L401102ode=NULL" class="sref">102od>102;
icmd"L43sosi_lnux 64"fs0< 397
INIT_LIST_HEAD(&a102">>1029map" class="sref">macl.c#L460" id="si/oi_s   rs/acpi/osl.c#Lui/oi_s   r64"fcs.c#L460" id="htr"s/acpi/osl.c#Lstr"64"><list<102is>1029p" class="sref">map)
 39102=">1029rs/acpi/osl.c      <11029href=ruct         map)
  str"ng">"Fi/oi=quot;1130k" c 394          11339>1130href  comss="s> /* enabe  serializaion4to aomsbat AE_ALREADY_EXISTS errors*/__iomem *103od>11304ass=tatuic id="L457" class="lr_init a href="drivers_init464"f"sref">acpi_sizz/acpeterializr_s   rs/acpi/osl.c#Luiterializr_s   r64"fchar=52" id="L452" clbtr"s/acpi/osl.c#Lstr"64"> 397
 342  10316="L401113=>INIT_LIST_HEAD(&a103">>1130ss="sref">map = acpi_sizPREFIX="L39rt" class=PREFIXp" clsspan01  str"ng">"Fterializr enabe dn" list<10ais>10aap" class3is>103ap" class="sref">map)
 39103=">1030rs/acpi/osl.csref">acpi_sizz/acpegblctll_methossiterializrsa href="driveruigblctll_methossiterializrsKER =             ret=TRUref="+code=NULL=TRUr64">1030lass="sref">__iomem *
103name="L457" class="lr_is   rs/acpi/osl.c#Lu__s   r64"fcspan01  str"ng">"Fiterializrquot;103176" id="L376" class="line" name="L1035e="L401103lass="line" name="L416"103la>1031s/ac  comss="s> *< CheckWof resourc anterrferenc abetween="Ltss= lass="l and CPI_/spans="sref">__iomem *acpi_os_map_cleanup<103f">1031s/ac  comss="s>  * Operaion4Regions (SystemIO and System Memory only)__iomem * *1031lass  comss="s>  < IO ort l and memory de__iomem *1031rs/a  comss="s>/ * rdAarbitrary*ML, id=" and cn01nterrferefwith legacy lass="l__iomem *1031href=span01  comss="s>/ * ienforc _resourc s= cn01b3 s  tho:/spans="sref">__iomem *1032lass=span01  comss="s>/ */spans="sref">__iomem *acpi_unmap(>1032map" span01  comss="s> */ss - tr"nct (default) (2)/spans="sref">__iomem *1032*/  comss="s>  *lass lasse furhe r lass=" tryng" o aaccessthe kresourc s will notuload/spans="sref">__iomem *1032href  comss="s>  /ss - laxass="sref">mac(1)/spans="sref">__iomem * 4103s=>103276"   comss="s>  *lass lasse furhe r lass=" tryng" o aaccessthe kresourc s will load, butAyou/spans="sref">__iomem *1032s/ac  comss="s>  *lass g  ta system message hea ttomethng" mightago wrong..__iomem *1032s/ac  comss="s>  */spans="sref">__iomem *,   < s - nolass="sref">mac(0)/spans="sref">__iomem */ * ass lasse MPI_ Operaion4 Regionkresourc s will notub kregistered/spans="sref">__iomem *1032href=span01  comss="s>/ */spans="sref">__iomem */ *__iomem *103ap>1033map" #defe" sl.c#L460" id="hENFORCE_RESOURCES_STRICref="+code=NULL=ENFORCE_RESOURCES_STRICrvirt"2"sref">__iomem *1033*/__iomem *1033href<#defe" sl.c#L460" id="hENFORCE_RESOURCES_NO"L39rt" class=KENFORCE_RESOURCES_NOvirt" cla0"sref">__iomem *(&103376" id="L376" class="line" name="L1033e="L401103;
 >1033iomem *1033intkacpi_sizzienforc _resourc s_s   rs/acpi/osl.c#Luienforc _resourc s_s   r64"fchar=52" id="L452" clbtr"s/acpi/osl.c#Lstr"64">1033=virt="line" name="L342"> 342  1039e="L401103440"> 440          10344>1033href="+code=Wref="sref">virt==   sref">virt==   pan01  str"ng">&q39; \0q39; /spans=<"line" name="L342"> 342  103me="L401103an>, 1034map" class="sref">map)
1034*/
  str"ng">"Ftr"nctquot;Lsl.c#L460" id="htr"s/acpi/osl.c#Lstr"64"><<"line" name="L342"> 342  1033e="L401103ref="+code=mutex_unlock103re>103454}
1034
  str"ng">"Flaxquot;Lsl.c#L460" id="htr"s/acpi/osl.c#Lstr"64"><<"line" name="L342"> 342  1033e="L401103ers/acpi/osl.c#L447" id103er>1034}
1034class="line" lse"sref i_ioremap_lock  str"ng">"Fnoquot;Lsl.c#L460" id="htr"s/acpi/osl.c#Lstr"64"><<"line" name="L342"> 342  1033e="L401103ory);
1034e=PAGE_SIZE" class="sref">PAGE_SIZ1039e="L401103>(void virt, 103cl>1035}
1035map" class="sref">map)
__103_t>103 */  str"ng">"Fienforc _resourc s=quot;1035"+codiomtpunmap_table(ex3 name1134e="L401103f">acpi_os_map_generic_103f">103576"   comss="s> *< CheckWor uresourc aconflnctsabetween=MPI_ Operaion4Regions and "Ltss=/spans="sref">__iomem *acpi_gener103cl>1035s/ac  comss="s>  * lass="l *__iomem *)
 342  1036e="L401103 class="line" name="L45103 c>1035lass<="line" name="L342"> 342  1036e="L401103ref">__iomem *1035rs/acpi/osl.csref">acpi_sizz/acpeadr_panc _typea href="drivers/acpeadr_panc _type64"f"sref">acpi_sizzpanc _isa href="driverupanc _isvirt = itizea href="drivers/acpetize64"f"sref">acpi_sizzlengtha href="driverslengthvirt1036map" class="  = acpi_sizzwarna href="driverswarnKER =   1036map" class="srd="L457" class="lr/acpha href="drivers/acphKER =    465       103=">103454}
virtienforc _resourc ss/acpi/osl.c#Luienforc _resourc sKER =              ret=ENFORCE_RESOURCES_NO"L39rt" class=KENFORCE_RESOURCES_NOvirt<"line" name="L342"> 342  1034e="L401103        if (!1036
virt 392=/a> +            ret=IORESOURCE_IO"L39rt" class=KIORESOURCE_IOvirt<=/a> +/a> + i="sref">virt 392=/a> +            ret=IORESOURCE_MEM"L39rt" class=KIORESOURCE_MEM64"><<"line" name="L342"> 342  1035e="L401103="sref">virt) {
mac      < 1036p" class="sref">map)
);
103684}
virt 392=/a> +            ret=IORESOURCE_IO"L39rt" class=KIORESOURCE_IOvirtmap)
 371
acpi_sizzpanc _isa href="driverupanc _isvirt=             ret=CPI_DADR_SPACE_SYSTEM_IO"L39rt" class=KCPI_DADR_SPACE_SYSTEM_IOvirtacpi_gb103p">103plass="line" nlse"a href="+code=INIT_LIST_HEAD"9031e="L401103" class="line" name="L3103" >103=map" class="sref">mac" id="L452" clbtanc _isa href="driverupanc _isvirt=             ret=CPI_DADR_SPACE_SYSTEM_MEMORY"L39rt" class=KCPI_DADR_SPACE_SYSTEM_MEMORYvirt103name="L436"> 4sref">acpi_sizzlengtha href="driverslengthvirt=             ret=r ss/acpi/osl.c#Lur sKER lasse="L392"> 392 3921037
virtienforc _resourc ss/acpi/osl.c#Luienforc _resourc sKER =!             ret=ENFORCE_RESOURCES_NO"L39rt" class=KENFORCE_RESOURCES_NOvirt<"line" name="L342"> 342  1035e="L401103>        acpi_sizzwarna href="driverswarnKER =  1>1037ss="sref">map =  3921037p" class="sref">map)
refcou103nt>103784}
virt 342  1037e="L401103 href="+code=out" class103 h>1037href="+code=WARN" claref="sref">virtienforc _resourc ss/acpi/osl.c#Luienforc _resourc sKER =!             ret=ENFORCE_RESOURCES_NO"L39rt" class=KENFORCE_RESOURCES_NOvirt 342  103me="L40110382"> 382
virtienforc _resourc ss/acpi/osl.c#Luienforc _resourc sKER =              ret=ENFORCE_RESOURCES_LX_s/acpi/osl.c#LuENFORCE_RESOURCES_LX_virt<"line" name="L342"> 342  1031e="L401103 ma"""""""""ref">map =   str"ng">"FAPI_: Teis conflnct mayquot; 342  1031e="L401103ef">map), ma"""""""""ref">map  str"ng">"F cause random problems and systemquot; 342  1031e="L401103="drivers/acpi/osl.c#L3103=">1038ame="L436"> 436          """""""ref">map  str"ng">"F intatbilityn" 1038
  str"ng">"FAPI_: If an=MPI_ lass=" is availabe quot; 342  1031e="L401103386"> 386          10338>1038}
map  str"ng">"F or uheis device,Ayou shouldunse it intaead ofquot; 342  1031e="L401103="L388"> 388
mac#L369" >ef">map  str"ng">"F he k"Ltss= lass="n" 1038lass="line" name="L3 ruct phys, 1038rs/acpi/osl.c#L369" >ref="sref">virtienforc _resourc ss/acpi/osl.c#Luienforc _resourc sKER =              ret=ENFORCE_RESOURCES_STRICref="+code=NULL=ENFORCE_RESOURCES_STRICrvirt<"line" name="L342"> 342  1031e="L401103ref="drivers/acpi/osl.c103re>1038href="+code=WARN" cla"+code=       <-           ret=EBUSY"L39rt" class=KEBUSYvirtPAGE103SI>1039map" class=" ruct  394          10339>1039ame="L457" class="lrEXPORT_SYMBO="L39rt" class=NEXPORT_SYMBO=64"fsl.c#L460" id="Kicheck_resourc _conflncts/acpi/osl.c#Lsicheck_resourc _conflnct64"f 103od>103976" id="L376" class="line" name="L1033e="L401103="L397"> 397
acpi_sizzpatr"s/acpi/osl.c#Lstrtr"virtLsl.c#L460" id="hresourc _tize_ts/acpi/osl.c#Lsresourc _tize_t64"f"sref">acpi_sizzns/acpi/osl.c#Lsn64"f,d="L376" class="line" name="L1033e="L401103">INIT_LIST_HEAD(&a103">>1039map" class="sref">macccccccholstWhar=52" id="L452" clb/a>(s/acpi/osl.c#Lsna>(virt<"line" name="L342"> 342  1037e="L401103ist" class="sref">list<103is>1039lass<="line" name="L342"> 342  1038e="L401103="line" name="L399"> 39103=">1039rs/acpi/osl.ctrucd="L457" class="lsresourc s/acpi/osl.c#Lsresourc ref="l.c#L460" id="hr ss/acpi/osl.c#Lur sKER  =s="line" name="L342"> 342  103me="L401103         392 342  104me="L401114me=>         392acpi_sizzns/acpi/osl.c#Lsn64"f - 1L"line" name="L342"> 342  104m1="L401114macpi/osl.c#L392" id="L104/a>1140map" class="sref">ma".="L392"> 392(s/acpi/osl.c#Lsna>(virt =             ret=/a>(s/acpi/osl.c#Lsna>(virtL"line" name="L342"> 342  104m2="L401114m 392=             ret=IORESOURCE_IO"L39rt" class=KIORESOURCE_IOvirtL"line" name="L342"> 342  104m3="L401114m94"> 394          10439>1140ame="L436"> 4}104od>114076" id="L376" class="line" name="L1045e="L401114="L397"> 397
 + (INIT_LIST_HEAD(&a104">>1140ss="sruct list<10ais>10aap" class4is>104ap" clL457" class="lrEXPORT_SYMBO="L39rt" class=NEXPORT_SYMBO=64"fsl.c#L460" id="Kicheck_regions/acpi/osl.c#Lsicheck_region64"f< 39104=">1040e=PAGE_SIZE" class="sref">PAGE_SIZ10489="L401104=/a>        /*__iomem *
/ * Let lass="l know whehe r he kresourc  checks are effectss=/spans="sref">__iomem * *1041map" span01  comss="s> */__iomem *iresourc s_areienforc s64"fsass=1041"+cod="line" name="L342"> 342  10414="L401114code=list_del_rcu" clas104co>10414
1041s/acacpi_os_map_cleanup<104f">1041s/aciresourc s_areienforc s64"f<map)
1041rs/a  comss="s>/*__iomem *1041href=span01  comss="s>/ * Deallocate he kmemory or ua spinlock__iomem *1042lass=span01  comss="s>/ *__iomem *acpi_unmap(>1042map" ass="sref">acpi_siz4ios_deletd_locka href="driveruios_deletd_lock64"fsl.c#L460" id="Kispinlocka href="driveruispinlockref="l.c#L460" id="hhande a href="driverhhande virt<"line" name="L342"> 342  104me="L401104code=virt" class="sref"104co>1042*/ 342  104me="L401104l.c#L425" id="L425" cla104l.>1042ame="L436"> 4sref">acpi_sizzCPI_DFREref="+code=NULL=CPI_DFREr64"fsl.c#L460" id="Khande a href="driverhhande virt< 4104s=>104276" 1042s/ac{
1042s/ac  comss="s> *__iomem *,   < Acquire a spinlock__iomem */ */spans="sref">__iomem *1042href=span01  comss="s>/ * hande  is a ponterr o ahe kspinlock_t__iomem */ *__iomem *104ap>1043map" class="sref">map)
1043*/ios_acquire_lock64"fsl.c#L460" id="Kispinlocka href="driveruispinlockref="l.c#L460" id="hlockrs/acpi/osl.c#Lulockrvirt<"line" name="L342"> 342  1041e="L401104c#L436" id="L436" class104c#>1043"+cod="line" name="L342"> 342  10414="L401114tex_lock(&1043
10435< >1043map" class="s      1043lass=ruct PAGE_SIZ1049e="L401104440"> 440          10444>1043href=span01  comss="s>/*__iomem *, / * Release a spinlock< See above__iomem *1044map" span01  comss="s> */__iomem *104454acpi_siz4ios_release_locka href="driveruios_release_lock64"fsl.c#L460" id="Kispinlocka href="driveruispinlockref="l.c#L460" id="hlockrs/acpi/osl.c#LulockrvirtLsl.c#L460" id="hicpu_flagss/acpi/osl.c#Luicpu_flagsref="l.c#L460" id="hflagss/acpi/osl.c#Luflags64"><"line" name="L342"> 342  1044e="L4011045
 342  1043e="L401104ers/acpi/osl.c#L447" id104er>10445<1044ss="sruct );
map)

acpi_sizzCPI_DUSE_LOCAL_CACHref="+code=NULL=CPI_DUSE_LOCAL_CACHr" class="sref">map)
(void __iomem *virt, 104cl>1045lass=span01  comss="s>//*******************************************************************************/spans="sref">__iomem *1045map" span01  comss="s> *//spans="sref">__iomem *__104_t>1045*/  comss="s>  *lFUNCTION:"dr ios_create_cach=/spans="sref">__iomem *1045href  comss="s>  //spans="sref">__iomem *acpi_os_map_generic_104f">104576"   comss="s>  *lPARAMETERS:"dnerif="dr - Asciidnerifor uhee cach=/spans="sref">__iomem *acpi_gener104cl>1045s/ac  comss="s>  *              tizef="dr - Sizefof each cach=d object64pans="sref">__iomem *)
  *              depth="dr - Maximum depth=of hee cach= (in objects)&lss ignor dasse=4pans="sref">__iomem *  < s            cach= "dr - Wherefhe k"ew cach= object is       ed/spans="sref">__iomem *__iomem *1045rs/a  comss="s>/ */spans="sref">__iomem */ * RETURN:"dr .ctrtu
_KEpans="sref">__iomem *1046lass=span01  comss="s>/ */spans="sref">__iomem *1046map" span01  comss="s> */sDESCRIPTION:"Create a cach= object/spans="sref">__iomem *1046*/  comss="s>  */spans="sref">__iomem * 465       104=">1046href  comss="s>  //////////////////////////////////////////////////////////////////////////////__iomem *        if (!104676" id="L376" class="line" name="L1045e="L401104a href="+code=acpi_iore104a >104rs/acpl.c#L460" id="Kisatu
virt) {
ios_create_cach=/s"fchar=52" id="L452" clb/a>(s/acpi/osl.c#Lsna>(virtL  = acpi_os_riversu1s/ac<  =  = acpi_os_riversu1s/ac<  = acpi_os_riversdepthvirtLsl.c#L460" id="hicach=_ts/acpi/osl.c#Lsicach=_t/ac< **p =  342  1045e="L401104f="+code=printk" class=104f=>1046lass<="line" name="L342"> 342  1043e="L401104\n");
104684}
 =  371
virt 342  104me="L401104p" class="sref">acpi_gb104p">1047lass="line" name="L3e      acpi_sizzCE_ERRORef="+code=NULL=CE_ERROR64">104=map" class="slse"a href="+code=INIT_LIST_HEAD"904me="L401104i_map_table" class="sre104i_>1047*/
acpi_sizzCE_OKef="+code=NULL=CE_OK64">104name="ruct          *<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<__iomem * =   */spans="sref">__iomem *1047lass  comss="s>  < FUNCTION:"dr ios_purge_cach=/spans="sref">__iomem *refcou104nt>1047rs/a  comss="s>/ */spans="sref">__iomem *1047href=span01  comss="s>/ * PARAMETERS:"dCach= "dr f="dr - Hande  o aoach= object/spans="sref">__iomem * 382
/ */spans="sref">__iomem *  comss="s> */sRETURN:"dr .cSrtu
_KEpans="sref">__iomem *map),   */spans="sref">__iomem *1048href  comss="s>  /sDESCRIPTION:"Free all objectsfwithin he krequestd"toach=__iomem *  comss="s>  */spans="sref">__iomem * 386          10438>1048s/ac  comss="s>  ******************************************************************************__iomem * 388
1048p" clL457" class="lrisatu
acpi_siz4ios_purge_cach=a href="driveruios_purge_cach=/s"fsl.c#L460" id="Kicach=_ts/acpi/osl.c#Lsicach=_t/ac< *p =  342  1048e="L401104s="sref">phys, 1048=virt="line" name="L342"> 342  1041e="L401104ref="drivers/acpi/osl.c104re>1048class="sref"p = PAGE104SI>1049=virt" class       < 394          10439>1049href  comss="s> /*******************************************************************************/spans="sref">__iomem *104od>104976"   comss="s>  */spans="sref">__iomem * 397
  * FUNCTION:"dr ios_deletd_cach=/spans="sref">__iomem *INIT_LIST_HEAD(&a104">>1049s/ac  comss="s>  */spans="sref">__iomem *list<104is>1049lass  comss="s>  < PARAMETERS:"dCach= "dr f="dr - Hande  o aoach= object/spans="sref">__iomem * 39104=">1049rs/a  comss="s>/ */spans="sref">__iomem *        / * RETURN:"dr .cSrtu
_KEpans="sref">__iomem *        / */spans="sref">__iomem *  comss="s> */sDESCRIPTION:"Free all objectsfwithin he krequestd"toach= and deletd he /spans="sref">__iomem *  *lass          cach= object__iomem * 394          10539>1150href  comss="s>  */spans="sref">__iomem *105od>115076"   comss="s>  ******************************************************************************__iomem * 397
>1150s/acacpi_siz4ios_deletd_cach=a href="driveruios_deletd_cach=/s"fsl.c#L460" id="Kicach=_ts/acpi/osl.c#Lsicach=_t/ac< *p =  342  105013e="L4015">list<10ais>10aap" class5is>1050lass<="line" name="L342"> 342  105m83e="L4015""line" name="L399"> 39105=">1050rs/acpi/osl.csref">acpi_sizzkmemicach=_destroya href="driverukmemicach=_destroy/s"fsl.c#L460" id="K/ach=a href="driverucach=/s"f<1050href="+code=W      <1051}
 *1051map" class="sref">map)
 /*******************************************************************************/spans="sref">__iomem *1051href  comss="s>  */spans="sref">__iomem *105176"   comss="s>  *lFUNCTION:"dr ios_release_object/spans="sref">__iomem *1051s/ac  comss="s>  */spans="sref">__iomem *acpi_os_map_cleanup<105f">1051s/ac  comss="s>  * PARAMETERS:"dCach= "dr f=- Hande  o aoach= object/spans="sref">__iomem * *1051lass  comss="s>  <              Object dr f=- Th= object o ab kreleased/spans="sref">__iomem *1051rs/a  comss="s>/ */spans="sref">__iomem *1051href=span01  comss="s>/ * RETURN:"dr .cNon /spans="sref">__iomem *1052lass=span01  comss="s>/ */spans="sref">__iomem *acpi_unmap(>1052map" span01  comss="s> */sDESCRIPTION:"Release an object o ahe kspecifid"toach=<  If oach= is full,/spans="sref">__iomem *1052*/  comss="s>  *lass          th= object is deletdd__iomem *1052href  comss="s>  //spans="sref">__iomem * 4105s=>105276"   comss="s>  ******************************************************************************__iomem *1052s/ac{
1052s/acacpi_siz4ios_release_objecta href="driveruios_release_object/s"fsl.c#L460" id="Kicach=_ts/acpi/osl.c#Lsicach=_t/ac< *p =  342  105113e="L4015irt,  342  105me="L401105pi/osl.c#L430" id="L430105pi>1052rs/acpi/osl.csref">acpi_sizzkmemicach=_freea href="driverukmemicach=_free/s"fsl.c#L460" id="K/ach=a href="driverucach=/s"fL  = 1052href="+code=W      <105ap>1053map" #endifuct 1053k" c1053ame="L457" class="lrisatu
acpi_siz4_init a href="drivers_init464"f"sref">acpi_sizzios_nit4ializea href="drivers/acpeos_nit4ialize/s"fsass= 342  1053e="L401105;
 =  + ( 392< >1053ss="sref">map =  + ( 392<10537s="sref">map =  + ( 392<1053rs/acpi/osl.csref">acpi_sizz/acpeos_map_generic_addressa href="drivers/acpeos_map_generic_address/s"fs/a> + ( 392< 440          10544>1053lass="sref">__iomem *, acpi_sizzCE_OKef="+code=NULL=CE_OK64">1054map"truct 1054ame="L457" class="lrisatu
acpi_siz4_init a href="drivers_init464"f"sref">acpi_sizzios_nit4ialize1a href="drivers/acpeos_nit4ialize1/s"fsass=1054
 342  1053e="L401105ers/acpi/osl.c#L447" id105er>10545 34d_wq/s"f=             ret=alloc_workqueuea href="drivers/lloc_workqueue/s"fslpan01  ctr"ng">"Fk> 34dquot;1054ss="sref">map =  34_notify_wqa href="driveruk> 34_notify_wq/s"f=             ret=alloc_workqueuea href="drivers/lloc_workqueue/s"fslpan01  ctr"ng">"Fk> 34_notifyquot;10547s="sref">map =  34_hotplug_wqa href="driveruk> 34_hotplug_wq/s"f=             ret=alloc_workqueuea href="drivers/lloc_workqueue/s"fslpan01  ctr"ng">"Fk> 34_hotplugquot;1054rs/acpi/osl.csref">acpi_sizzBUG_ONa href="driversBUG_ON/s"fsi_ioremap_lock 34d_wqa href="driveruk> 34d_wq/s"f<(>1054class="sref"p =  34_notify_wqa href="driveruk> 34_notify_wq/s"f<virt, 105cl>1055map" class="  =  34_hotplug_wqa href="driveruk> 34_hotplug_wq/s"f<10551s/acpi/osl.csref">acpi_sizz/acpeintatll_nterrfnc _hande ra href="drivers/acpeintatll_nterrfnc _hande r/s"fsl.c#L460" id="Kiosi_hande ra href="drivers/acpeosi_hande r/s"f<__105_t>10552s/acpi/osl.csref">acpi_sizz/acpeosi_s   r_latea href="driveru/acpeosi_s   r_late/s"fs<10553virt" class       acpi_sizzCE_OKef="+code=NULL=CE_OK64">acpi_os_map_generic_105f">105576" acpi_gener105cl>1055s/ac{
)
acpi_siz4ios_errminatea href="driveru/acpeos_errminate/s"fsass= 342  1056e="L401105ref">__iomem *105584}
virt 342  1056e="L40110561" id="L461" class="li10561>1055href="+code=WARN" clasref">acpi_sizzios_remove_nterrrupt_hande ra href="drivers/acpeos_remove_nterrrupt_hande r/s"fsl.c#L460" id="Kigbl_FADref="+code=NULL=/acpegbl_FADr/s"f.="L392"> 392 342  105me="L401105ACE_SYSTEM_MEMORY" clas105AC>1056lass="line" name="L3eARN" claaaaaaaaaaaaaaaaaaaaaaaaaa"sref">virt1056map" class="sruct 1056k" c 465       105=">105454}
acpi_sizzios_unmap_generic_addressa href="drivers/acpeos_unmap_generic_address/s"fs/a> + ( 392<acpi_sizzios_unmap_generic_addressa href="drivers/acpeos_unmap_generic_address/s"fs/a> + ( 392<10565 + ( 392<virt) {
map =  + ( 392<1056p" class="sref">map)
);
1056rs/acpi/osl.csref">acpi_sizzdestroy_workqueuea href="driversdestroy_workqueue/s"fsl.c#L460" id="Kk> 34d_wqa href="driveruk> 34d_wq/s"f< 371
 =  34_notify_wq/s"f<acpi_gb105p">1057map" class="  =  34_hotplug_wq/s"f<1057map" class="sref">map)
acpi_sizzCE_OKef="+code=NULL=CE_OK64">105name="ruct         acpi_siz4ios_prepareisleers/acpi/osl.c#Luios_prepareisleer/s"fsl.c#L460" id="Ku8s/acpi/osl.c#Luu8KER="sref">acpi_siz4sleeretatuea href="driverssleeretatue/s"fL  =  =  342  1054e="L401105a> = mac#L369" >ef">map="  =  = 1057lass<="line" name="L342"> 342  1057e="L401105nt" class="sref">refcou105nt>105784}
1057href="+code=Wref=sref">acpi_siz4_iios_prepareisleers/acpi/osl.c#Lu_iios_prepareisleer/s"f 382
acpi_siz4_iios_prepareisleers/acpi/osl.c#Lu_iios_prepareisleer/s"f=sref">acpi_siz4sleeretatuea href="driverssleeretatue/s"fLa href="+code=INIT_LIST_HEAD"105me="L401105 ma"""""""""ref">mapne" name="L3eL457" class="lrrm1a_control3" class=l.c#Lurm1a_control/s"fL  = map), acpi_siz4rc3" class=l.c#Lurc/s"f=lss  0 436        acpi_sizzCE_ERRORef="+code=NULL=CE_ERROR64">1058
acpi_siz4rc3" class=l.c#Lurc/s"f=lgs  0 386          10538>1058}
acpi_sizzCE_CTRL_SKIPef="+code=NULL=CE_CTRL_SKIP64"> 388
1058lass="line" n      acpi_sizzCE_OKef="+code=NULL=CE_OK64">phys, 1058=virtruct __iomem *PAGE105SI>1059=virtass="sref">acpi_siz4ios_set_prepareisleers/acpi/osl.c#Luios_set_prepareisleer/s"f=rd="=2" id="L452" clbfunc3" class=l.c#Lufunc/s"facpi_siz4sleeretatuea href="driverssleeretatue/s"fL"sref">__iomem *ma"""""""""ref">ma =  =  =  = 1059*/ 342  105me="L401105394"> 394          10539>105954}
acpi_sizz_iios_prepareisleers/acpi/osl.c#Lu_iios_prepareisleer/s"f=  sref">acpi_siz4func3" class=l.c#Lufunc/s"f105od>105976"  397
 39footer">
Th= original LXR software by th= ct LXR omssunity/s"fL this experis="sal +codion by ct lxr@7
 39subfooter">
lxr.7Redpill L