linux/drivers/parisc/pdc_stable.c
<<
>>
Prefs
   1/* 
   2 *    Interfaces to retrieve and set PDC Stable options (firmware)
   3 *
   4 *    Copyright (C) 2005-2006 Thibaut VARENE <varenet@parisc-linux.org>
   5 *
   6 *    This program is free software; you can redistribute it and/or modify
   7 *    it under the terms of the GNU General Public License, version 2, as
   8 *    published by the Free Software Foundation.
   9 *
  10 *    This program is distributed in the hope that it will be useful,
  11 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13 *    GNU General Public License for more details.
  14 *
  15 *    You should have received a copy of the GNU General Public License
  16 *    along with this program; if not, write to the Free Software
  17 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18 *
  19 *
  20 *    DEV NOTE: the PDC Procedures reference states that:
  21 *    "A minimum of 96 bytes of Stable Storage is required. Providing more than
  22 *    96 bytes of Stable Storage is optional [...]. Failure to provide the
  23 *    optional locations from 96 to 192 results in the loss of certain
  24 *    functionality during boot."
  25 *
  26 *    Since locations between 96 and 192 are the various paths, most (if not
  27 *    all) PA-RISC machines should have them. Anyway, for safety reasons, the
  28 *    following code can deal with just 96 bytes of Stable Storage, and all
  29 *    sizes between 96 and 192 bytes (provided they are multiple of struct
  30 *    device_path size, eg: 128, 160 and 192) to provide full information.
  31 *    One last word: there's one path we can always count on: the primary path.
  32 *    Anything above 224 bytes is used for 'osdep2' OS-dependent storage area.
  33 *
  34 *    The first OS-dependent area should always be available. Obviously, this is
  35 *    not true for the other one. Also bear in mind that reading/writing from/to
  36 *    osdep2 is much more expensive than from/to osdep1.
  37 *    NOTE: We do not handle the 2 bytes OS-dep area at 0x5D, nor the first
  38 *    2 bytes of storage available right after OSID. That's a total of 4 bytes
  39 *    sacrificed: -ETOOLAZY :P
  40 *
  41 *    The current policy wrt file permissions is:
  42 *      - write: root only
  43 *      - read: (reading triggers PDC calls) ? root only : everyone
  44 *    The rationale is that PDC calls could hog (DoS) the machine.
  45 *
  46 *      TODO:
  47 *      - timer/fastsize write calls
  48 */
  49
  50#undef PDCS_DEBUG
  51#ifdef PDCS_DEBUG
  52#define DPRINTK(fmt, args...)   printk(KERN_DEBUG fmt, ## args)
  53#else
  54#define DPRINTK(fmt, args...)
  55#endif
  56
  57#include <linux/module.h>
  58#include <linux/init.h>
  59#include <linux/kernel.h>
  60#include <linux/string.h>
  61#include <linux/capability.h>
  62#include <linux/ctype.h>
  63#include <linux/sysfs.h>
  64#include <linux/kobject.h>
  65#include <linux/device.h>
  66#include <linux/errno.h>
  67#include <linux/spinlock.h>
  68
  69#include <asm/pdc.h>
  70#include <asm/page.h>
  71#include <asm/uaccess.h>
  72#include <asm/hardware.h>
  73
  74#define PDCS_VERSION    "0.30"
  75#define PDCS_PREFIX     "PDC Stable Storage"
  76
  77#define PDCS_ADDR_PPRI  0x00
  78#define PDCS_ADDR_OSID  0x40
  79#define PDCS_ADDR_OSD1  0x48
  80#define PDCS_ADDR_DIAG  0x58
  81#define PDCS_ADDR_FSIZ  0x5C
  82#define PDCS_ADDR_PCON  0x60
  83#define PDCS_ADDR_PALT  0x80
  84#define PDCS_ADDR_PKBD  0xA0
  85#define PDCS_ADDR_OSD2  0xE0
  86
  87MODULE_AUTHOR("Thibaut VARENE <varenet@parisc-linux.org>");
  88MODULE_DESCRIPTION("sysfs interface to HP PDC Stable Storage data");
  89MODULE_LICENSE("GPL");
  90MODULE_VERSION(PDCS_VERSION);
  91
  92/* holds Stable Storage size. Initialized once and for all, no lock needed */
  93static unsigned long pdcs_size __read_mostly;
  94
  95/* holds OS ID. Initialized once and for all, hopefully to 0x0006 */
  96static u16 pdcs_osid __read_mostly;
  97
  98/* This struct defines what we need to deal with a parisc pdc path entry */
  99struct pdcspath_entry {
 100        rwlock_t rw_lock;               /* to protect path entry access */
 101        short ready;                    /* entry record is valid if != 0 */
 102        unsigned long addr;             /* entry address in stable storage */
 103        char *name;                     /* entry name */
 104        struct device_path devpath;     /* device path in parisc representation */
 105        struct device *dev;             /* corresponding device */
 106        struct kobject kobj;
 107};
 108
 109struct pdcspath_attribute {
 110        struct attribute attr;
 111        ssize_t (*show)(struct pdcspath_entry *entry, char *buf);
 112        ssize_t (*store)(struct pdcspath_entry *entry, const char *buf, size_t count);
 113};
 114
 115#define PDCSPATH_ENTRY(_addr, _name) \
 116struct pdcspath_entry pdcspath_entry_##_name = { \
 117        .ready = 0, \
 118        .addr = _addr, \
 119        .name = __stringify(_name), \
 120};
 121
 122#define PDCS_ATTR(_name, _mode, _show, _store) \
 123struct kobj_attribute pdcs_attr_##_name = { \
 124        .attr = {.name = __stringify(_name), .mode = _mode}, \
 125        .show = _show, \
 126        .store = _store, \
 127};
 128
 129#define PATHS_ATTR(_name, _mode, _show, _store) \
 130struct pdcspath_attribute paths_attr_##_name = { \
 131        .attr = {.name = __stringify(_name), .mode = _mode}, \
 132        .show = _show, \
 133        .store = _store, \
 134};
 135
 136#define to_pdcspath_attribute(_attr) container_of(_attr, struct pdcspath_attribute, attr)
 137#define to_pdcspath_entry(obj)  container_of(obj, struct pdcspath_entry, kobj)
 138
 139/**
 140 * pdcspath_fetch - This function populates the path entry structs.
 141 * @entry: A pointer to an allocated pdcspath_entry.
 142 * 
 143 * The general idea is that you don't read from the Stable Storage every time
 144 * you access the files provided by the facilities. We store a copy of the
 145 * content of the stable storage WRT various paths in these structs. We read
 146 * these structs when reading the files, and we will write to these structs when
 147 * writing to the files, and only then write them back to the Stable Storage.
 148 *
 149 * This function expects to be called with @entry->rw_lock write-hold.
 150 */
 151static int
 152pdcspath_fetch(struct pdcspath_entry *entry)
 153{
 154        struct device_path *devpath;
 155
 156        if (!entry)
 157                return -EINVAL;
 158
 159        devpath = &entry->devpath;
 160        
 161        DPRINTK("%s: fetch: 0x%p, 0x%p, addr: 0x%lx\n", __func__,
 162                        entry, devpath, entry->addr);
 163
 164        /* addr, devpath and count must be word aligned */
 165        if (pdc_stable_read(entry->addr, devpath, sizeof(*devpath)) != PDC_OK)
 166                return -EIO;
 167                
 168        /* Find the matching device.
 169           NOTE: hardware_path overlays with device_path, so the nice cast can
 170           be used */
 171        entry->dev = hwpath_to_device((struct hardware_path *)devpath);
 172
 173        entry->ready = 1;
 174        
 175        DPRINTK("%s: device: 0x%p\n", __func__, entry->dev);
 176        
 177        return 0;
 178}
 179
 180/**
 181 * pdcspath_store - This function writes a path to stable storage.
 182 * @entry: A pointer to an allocated pdcspath_entry.
 183 * 
 184 * It can be used in two ways: either by passing it a preset devpath struct
 185 * containing an already computed hardware path, or by passing it a device
 186 * pointer, from which it'll find out the corresponding hardware path.
 187 * For now we do not handle the case where there's an error in writing to the
 188 * Stable Storage area, so you'd better not mess up the data :P
 189 *
 190 * This function expects to be called with @entry->rw_lock write-hold.
 191 */
 192static void
 193pdcspath_store(struct pdcspath_entry *entry)
 194{
 195        struct device_path *devpath;
 196
 197        BUG_ON(!entry);
 198
 199        devpath = &entry->devpath;
 200        
 201        /* We expect the caller to set the ready flag to 0 if the hardware
 202           path struct provided is invalid, so that we know we have to fill it.
 203           First case, we don't have a preset hwpath... */
 204        if (!entry->ready) {
 205                /* ...but we have a device, map it */
 206                BUG_ON(!entry->dev);
 207                device_to_hwpath(entry->dev, (struct hardware_path *)devpath);
 208        }
 209        /* else, we expect the provided hwpath to be valid. */
 210        
 211        DPRINTK("%s: store: 0x%p, 0x%p, addr: 0x%lx\n", __func__,
 212                        entry, devpath, entry->addr);
 213
 214        /* addr, devpath and count must be word aligned */
 215        if (pdc_stable_write(entry->addr, devpath, sizeof(*devpath)) != PDC_OK) {
 216                printk(KERN_ERR "%s: an error occurred when writing to PDC.\n"
 217                                "It is likely that the Stable Storage data has been corrupted.\n"
 218                                "Please check it carefully upon next reboot.\n", __func__);
 219                WARN_ON(1);
 220        }
 221                
 222        /* kobject is already registered */
 223        entry->ready = 2;
 224        
 225        DPRINTK("%s: device: 0x%p\n", __func__, entry->dev);
 226}
 227
 228/**
 229 * pdcspath_hwpath_read - This function handles hardware path pretty printing.
 230 * @entry: An allocated and populated pdscpath_entry struct.
 231 * @buf: The output buffer to write to.
 232 * 
 233 * We will call this function to format the output of the hwpath attribute file.
 234 */
 235static ssize_t
 236pdcspath_hwpath_read(struct pdcspath_entry *entry, char *buf)
 237{
 238        char *out = buf;
 239        struct device_path *devpath;
 240        short i;
 241
 242        if (!entry || !buf)
 243                return -EINVAL;
 244
 245        read_lock(&entry->rw_lock);
 246        devpath = &entry->devpath;
 247        i = entry->ready;
 248        read_unlock(&entry->rw_lock);
 249
 250        if (!i) /* entry is not ready */
 251                return -ENODATA;
 252        
 253        for (i = 0; i < 6; i++) {
 254                if (devpath->bc[i] >= 128)
 255                        continue;
 256                out += sprintf(out, "%u/", (unsigned char)devpath->bc[i]);
 257        }
 258        out += sprintf(out, "%u\n", (unsigned char)devpath->mod);
 259        
 260        return out - buf;
 261}
 262
 263/**
 264 * pdcspath_hwpath_write - This function handles hardware path modifying.
 265 * @entry: An allocated and populated pdscpath_entry struct.
 266 * @buf: The input buffer to read from.
 267 * @count: The number of bytes to be read.
 268 * 
 269 * We will call this function to change the current hardware path.
 270 * Hardware paths are to be given '/'-delimited, without brackets.
 271 * We make sure that the provided path actually maps to an existing
 272 * device, BUT nothing would prevent some foolish user to set the path to some
 273 * PCI bridge or even a CPU...
 274 * A better work around would be to make sure we are at the end of a device tree
 275 * for instance, but it would be IMHO beyond the simple scope of that driver.
 276 * The aim is to provide a facility. Data correctness is left to userland.
 277 */
 278static ssize_t
 279pdcspath_hwpath_write(struct pdcspath_entry *entry, const char *buf, size_t count)
 280{
hardware_path *)device_/a>( 12228      
i;
 12328      for (i;
count)
count 12428      struct device_pathdev);
 12528      if (count 12628a href="drivers/parisc/pdc_stable.c#L197" id2"L187" cl2ss="line" name="L187"> 12728      }
entry || !buf)
count)
 12828                     -EINVAL;
 12928a href="drivers/parisc/pdc_stable.c#L250" id="L190" cl2ss="line" name="L190"> 12029      return lass="comment">/* We expect find oud.
 12129      counti;
count)
 122292     entryi;
buf, count);
 12329      for ( 12429      /* addr, dLetan errocles="data :Ptarget. 0xffeady  bspako sok anan>
 12529      countdevice_/a>(device_/a>( 12629      
 1272       /* Find the rst, pihe Shingod fieMHO(Shinl")an>
 128298     }
count&qrchs="sref">addr&qrchs href="+code=out" clsn="sref">i;
"'-delimi
 12929              EINVAL;
 2303       
 13130      device_/a>(mod);
cope .c#rtoul="sref">size_tcountEINVAL 232302     i;
counti;
"'-\0elimi
/* Find tha hnnd pady flaman alre>". jwordprecau chann>
 23330      DPRINTK("%s: device:);
:  devid;, __func__, device_/a>(mod);
 13430      
 2353              =ass="comment">/* Find thThen,t aopstanceace_pa, withrt */kalre>are at ;t have a presetosurenn>
 23630pan class="comment"> * The aaaaaaaaaaa wriem back  bc fieMHese sa ;twn-topsway. Nsurerk arohatpect stop
 13730pan class="comment"> */ 13830pan class="comment"> *  13930pan class="comment">           NOTE: ht careresponns */'/&.. */
 2303       
i = 0; <=5; (e="+code=entry" temp="sref">count&qrchs="sref">addr&qrchs href="+code=out" clsn="sref">i;
"'-delimi
counti;
i;
that t href="+code=out" cls="sref">i = 0; <)ref="+code=i" class="sref">i;
 23131              return ="+code=entry" eclass="sref">device_/a>(bc[i] >= 1ef="+code=entry" >cope .c#rtoul="sref">size_tcountEINVAL 2323                      ="+code=DPRINTKsn="sref">i;
counti;
"'-\0elimi
 23331              return ="+code=entry" " class="sref">DPRINTK("%s: device:bc[ devid]:  devid;, __func__, i] >=ef="+code=entry" eclass="sref">device_/a>(bc[i]);
 2343        2353       if ( 2363              =ass="comment">/* Find thSThis es, annal fieMHOn>
 23731      device_/a>(bc[i] >= 1ef="+code=entry" >cope .c#rtoul="sref">size_ti;
EINVAL 23831      DPRINTK("%s: device:bc[ devid]:  devid;, __func__, i] >=ef="+code=entry" eclass="sref">device_/a>(bc[i]);
 23931      
 23032      return lass="comment">/* We expeNave tot carereend of  set ad have a tryPDC.\n&lare usnn>
 2313               hrefe="+code=entry" ass="sref">dev = hwpath_to_device((struct hardware_path *)device_/a>( 23232                     ="+code=DPRINTK class="sref">printk(ING="sref">printkING"%s: an errorttempt the pat, so th \#37;s: an er\#37;s: /span>
 23332              return  return lass="comment>"%s:e path., __func__, entry->entrybuf,  23432              if (EINVAL;
 2353        23632      
 23732      /* Find thSo fart wegood, letan errogpat,  deepnn>
 23832      rw_lockiem bclass href href="+code=entry" class="sref">entry->rw_lock);
 23932      entry->ready = 2;
 230330     entry->dev = dev);
 231331     
 23233      /* kobjectNav, darit, . Wem babaarerordwarenn>
 23333      pdcspath_store(struct ="+code=devpathclass="sref">entry-> 23433      
 23533             =ass="comment">/* Find thUpdd pady fsymamererordwara> l tree
 23633      size_tentry->entry"&#span>tree,  23733      countysfs_ca> tbclmer="sref">size_t tbclmer href href="+code=entry" class="sref">entry->entryentry->dev);
entry"&#span>tree,  23833      WARN_ON(1);
count 23933a href="drivers/parisc/pdc_stable.c#L250" id3"L240" cl3ss="line" name="L240"> 230340     read_uniem bc class href href="+code=entry" class="sref">entry->rw_lock);
 231341     
 232342     printk(printkprintk"%s:: the cuh \#37;s: an er\#37;s:  some,  2333               return ="+code=entry" class="sref">entry->entrybuf,  23434      
 2353       count);
 23634 23734a href="drivers/parisc/pdc_stable.c#L228" id3"L248" cl3ss="line" name="L248"> 23834pan class="comment">/**
 23934pan class="comment"> * pdcspath_hwpath_layer This fuExtenh aclayer (eg. SCSI49"s) printing.
 23035pan class="comment"> * @entry: An allocated and populated pdscpath_entry struct.
 23135pan class="comment"> * @buf: The output buffer to write to.
 23235pan class="comment"> * 
 23335pan class="comment"> * We will call this function to format the output of the hwpath layer te file.
 23435pan class="comment"> */
 23535atic ssize_t
 23635 href="+code=pdcspath_hwpath_layer This="sref">pdcspath_storepdcspath_entry *entry, char *buf)
 23735 23835      char *out = buf;
 2393       
device_path *devpath;
 23036      short i;
 23136a href="drivers/parisc/pdc_stable.c#L242" id3"L262" cl3ss="line" name="L262"> 23236      if (!entry || !buf)
 23336              return -EINVAL;
 23436      
 23536      read_lock(&entry->rw_lock);
 23636      devpath = &entry->devpath;
 23736      i = entry->ready;
 23836      read_unlock(&entry->rw_lock);
 23936a href="drivers/parisc/pdc_stable.c#L250" id3"L270" cl3ss="line" name="L270"> 23037      if (!i) /* entry is not ready */
 23137              return -ENODATA;
 23237      
 23337      for (i = 0; i < 6; devpath;
devpathlayersa hrf="+code=i" class="sref">i]);
i++) {
 23437              if (out = sprintf(out, "%u\n" /span>, devpath;
devpathlayersa hrf="+code=i" class="sref">i]);
 2353span cf="drivers/parisc/pdc_stable.c#L249" id3"L266" cl3ss="line" name="L276"> 23637      out = sprintf(out, "%u\;,  237377     
 23837      out - buf;
 2393a hrefef="drivers/parisc/pdc_stable.c#L227" id3"L280" cl3ss="line" name="L280"> 2303

 * @bufan>
 13238pan class="comment"> * h_store
 13338pan class="comment"> * We will An allocated and populated pdscpath_entry struct.
 13438pan class="comment"> * A bettehe input buffer to read from.
 13538pan class="comment"> * @entry: The number of bytes to be read.
 13638pan class="comment"> * The aim
 13738pan class="comment"> * @count: call this function to change the current hardwarlayer valun>
 13838pan class="comment"> * Layers be given '/'-.elimited, without brackets.
 13938pan class="comment"> * pdcspatXXXen pan>nat the fartlleftt cary WRTbuffer s beed path acthe a hre.. */ 13039pan class="comment"> * @entry:Potentialre 13139pan class="comment"> * @buf: Tath layer fieMHe/
 13239pan class="comment"> * 
 13339     ssize_t
 13439     ="+code=pdcspath_hwpath_layer class="sref">pdcspath_hwpath_layer class hrefpdcspath_entry *entry, char *buf, size_t count)
 13539     ef="drivers/parisc/pdc_stable.c#L238" id3"L276" cl3ss="line" name="L196"> 13639      
devpathlayersa hrf6hef=ass="comment">/* entry ipath
 1373       i;
 13839      char *i;
count)
count 13939a href="drivers/parisc/pdc_stable.c#L250" id4"L200" cl4ss="line" name="L200"> 24040      if (!entry || !buf)
count)
 14140              return -EINVAL;
 24240a href="drivers/parisc/pdc_stable.c#L263" id4"L203" cl4ss="line" name="L203"> 24340      /* We expect find oud.
 14440      
counti;
count)
 24540      entryi;
buf, count);
 24640      
 14740      /* Find thLetan errocles="data :Ptarget. 0eady  bspako sok anan>
 14840      countdevpathlayersa hr,a hr*devpathlayersa hr)ref="drivers/parisc/pdc_stable.c#L113" id4"9206" cl4ss="line" name="L199"> 14940      
 24041      return lass="comment">/* We expee rst, pihe Shinf rst layer n>
 24141              hre="+code=entry" unthat t="sref">i;
unthat t hreff="+code=i" classsdigis="sref">counti;
 2424                      -EINVAL;
 24341      devpathlayersa hrf0 1ef="+code=entry" >cope .c#rtoul="sref">size_ti;
EINVAL 24441      
DPRINTK("%s: device:layerf0 :  devid;, __func__, devpathlayersa hrf0 ref="drivers/parisc/pdc_stable.c#L113" id4"L205" cl4ss="line" name="L215"> 2454       if ( 24641      counti;
 24741      i = 0; <=1; (e="+code=entry" temp="sref">count&qchs="sref">addr&qchs href="+code=out" cltemp="sref">count"'-.elimi
i;
that t href="+code=out" cls="sref">i = 0; < i;
 24841                      hre="+code=entry" unthat t="sref">i;
unthat t hreff="+code=i" classsdigis="sref">countcount 24941      
EINVAL;
 24042      
devpathlayersa hrf="+code=i" class="sref">i]);
cope .c#rtoul="sref">size_tcountEINVAL 24142              return ="+code=entry" " class="sref">DPRINTK("%s: device:layerf devid]:  devid;, __func__, i] >=ef="+code=entry" layers="sref">devpathlayersa hrf="+code=i" class="sref">i]);
 24242             ef="drivers/parisc/pdc_stable.c#L227" id4"L223" cl4ss="line" name="L223"> 24342              return f="drivers/parisc/pdc_stable.c#L227" id4"L214" cl4ss="line" name="L224"> 24442             =ass="comment">/* Find thSo fart wegood, letan errogpat,  deepnn>
 24542      rw_lockiem bclass href href="+code=entry" class="sref">entry->rw_lock);
 24642      
 24742      /* Find the rst, orisiem back   hardwarlayerst braack  newpones,ady *touchan>
 24842pan class="comment"> * nn>
 24942      entryentry->devpath;
devpathlayersa hr,a href="+code=entry" layers="sref">devpathlayersa hr,a*devpathlayersa hr)ref="drivers/parisc/pdc_stable.c#L113" id4"L230" cl4ss="line" name="L230"> 240430      241431     
/* kobjectNav, darit, . Wem babaarerordwarenn>
 242432     pdcspath_store(struct ="+code=devpathclass="sref">entry-> 24343      read_uniem bc class href href="+code=entry" class="sref">entry->rw_lock);
 24443      
 24543      printk(printkprintk"%s:: the cuh \#37;s: an er\#37;s: layerst,  24643      entry->entrybuf,  247437     
 24843      count);
 24943 hrefef="drivers/parisc/pdc_stable.c#L227" id4"L240" cl4ss="line" name="L240"> 24044 24144pan class="comment"> * @bufan>
 24244pan class="comment"> * h_store 24344pan class="comment"> * We will  is umber  is ect thegpat, fo/span>
 24444pan class="comment"> * A bettehte fumber te file.
 24544pan class="comment"> * @entry: e output buffer to wri>
 24644pan class="comment"> * The ai>
 24744a hressize_t
 24844pan cl"+code=DPRINTK _store" te f_show="sref">pdcspath_storepdcspat is ect     f="+code=buf" cl is ="sref">entryentryentrybuf)
 24944pan cef="drivers/parisc/pdc_stable.c#L254" id4"L250" cl4ss="line" name="L250"> 24045      short pdcspath_entry *entry, char 1ef="+code=entry" to_h_entry" class="sref">pdcspatto_h_entry" class href="+code=KERN_ER is ="sref">entry 241451     short entryentryentryentry 242452     ssize_t
count 24345pan cf="drivers/parisc/pdc_stable.c#L178" id4"L244" cl4ss="line" name="L254"> 24445      
entrypdcspatshow hreef="drivers/parisc/pdc_stable.c#L237" id4"L255" cl4ss="line" name="L255"> 24545      countentrypdcspatshow hre ="+code=devpathclass="sref">entry->buf,  24645 hreff="drivers/parisc/pdc_stable.c#L257" id4"L247" cl4ss="line" name="L257"> 247457     
count 24845     ef="drivers/parisc/pdc_stable.c#L227" id4"L259" cl4ss="line" name="L259"> 24945a href="drivers/parisc/pdc_stable.c#L250" id4"L260" cl4ss="line" name="L260"> 24046pan class="comment"> * @entan>
 24146pan class="comment"> * @buf: Th_store 24246pan class="comment"> *   is umber  is ect theiem ba, fo/an>
 24346pan class="comment"> * We will te fumber te file.
 24446pan class="comment"> * A bettehe input buffer to rea>
 24546pan class="comment"> * @entry: The number /a>
 hwpath to rea>
 24646pan class="comment"> * The ai>
 24746a hressize_t
 24846pan cl"+code=DPRINTK _store" te f_slass="sref">pdcspath_storepdcspat is ect     f="+code=buf" cl is ="sref">entryentryentry 24946      
buf, size_t count)
 24047     ef="drivers/parisc/pdc_stable.c#L254" id4"L271" cl4ss="line" name="L271"> 241471     short pdcspath_entry *entry, char 1ef="+code=entry" to_h_entry" class="sref">pdcspatto_h_entry" class href="+code=KERN_ER is ="sref">entry 24247      
entryentryentryentry 24347      ssize_t
count 24447     f="drivers/parisc/pdc_stable.c#L178" id4"L255" cl4ss="line" name="L275"> 24547      countWARN_ONCAP_SYS_ADMIsa hr)rf="drivers/parisc/pdc_stable.c#L178" id4"L256" cl4ss="line" name="L276"> 24647      WARN_ON"ACCES 24747a href="drivers/parisc/pdc_stable.c#L228" id4"L268" cl4ss="line" name="L278"> 24847      entrypdcspatslass hrerf="drivers/parisc/pdc_stable.c#L178" id4"L259" cl4ss="line" name="L279"> 24947      
countentrypdcspatslass hre ="+code=devpathclass="sref">entry->buf, count);
 2404

count 14248pan cef="drivers/parisc/pdc_stable.c#L227" id4"L183" cl4ss="line" name="L183"> 14348pan cf="drivers/parisc/pdc_stable.c#L178" id4"L274" cl4ss="line" name="L184"> 14448pan cdevpath/ysfs_ops href="+code=i" clash_storedevpathh_store 14548      pdcspatshow hre1ef="+code=entry" h_enore" te f_show="sref">pdcspath_store 146486     pdcspatslass hre1ef="+code=entry" h_enore" te f_slass="sref">pdcspath_store 14748pan c}ef="drivers/parisc/pdc_stable.c#L257" id4"L268" cl4ss="line" name="L188"> 14848pan cf="drivers/parisc/pdc_stable.c#L257" id4"L259" cl4ss="line" name="L189"> 14948pan class="comment"> * pdcs/*mberst the a :Ptwo te file.nn>
 14049pan cprintkdevice_/a>(pdcspath_storepdcspath_hwpath_to_deviclass 14149pan cprintkprintkpdcspath_storepdcspath_hwpath_layer class hreref="drivers/parisc/pdc_stable.c#L113" id4"L182" cl4ss="line" name="L192"> 14249a href="drivers/parisc/pdc_stable.c#L263" id4"L193" cl4ss="line" name="L193"> 14349     entrydevpathhaths_sub/ys/te fs    []1efef="drivers/parisc/pdc_stable.c#L254" id4"L274" cl4ss="line" name="L194"> 14449      
device_haths_te f_eclass    f="+code=mode" cte f="sref">entry 145495     
printkentry 14649      EINVAL 14749pan c}ef="drivers/parisc/pdc_stable.c#L257" id4"L278" cl4ss="line" name="L198"> 14849pan cf="drivers/parisc/pdc_stable.c#L257" id4"L199" cl4ss="line" name="L199"> 14949pan class="comment"> * pdcs/*mSpecifref is ect typef hreour PDC/spansnn>
 250500    entryentry 15150             f="+code=mode" csysfs_ops="sref">devpath/ysfs_ops hrefdevpathh_store 252502            f="+code=mode" cdefault/te fs="sref">devpathdefault/te fs hre1ef="+code=entry" haths_sub/ys/te fs="sref">devpathhaths_sub/ys/te fs    ,f="drivers/parisc/pdc_stable.c#L236" id5"3202" cl5ss="line" name="L193"> 15350     }ef="drivers/parisc/pdc_stable.c#L257" id5"4203" cl5ss="line" name="L194"> 15450     f="drivers/parisc/pdc_stable.c#L178" id5"L205" cl5ss="line" name="L205"> 25550pan class="comment"> * @entxpectre
 15650     printkprintkpdcspathrimass hreref="drivers/parisc/pdc_stable.c#L113" id5"7206" cl5ss="line" name="L197"> 15750a hreprintkWARN_ONPDCS_ADDR_PCssa href="+code=size_t"clnso78="sref">count 15850     printkWARN_ONPDCS_ADDR_PALTa href="+code=size_t"alk an hrv<="sref">entry 15950     printkWARN_ONPDCS_ADDR_PKBDa href="+code=size_t"keyboentry 25051 25151pan class="comment"> * @bufanocaterrayfaartainingted  PDC/spansnwcall thdealt braan>
 2525      pdcspath_entry * *ies="sref">devpathh_store *ies    []1efef="drivers/parisc/pdc_stable.c#L254" id5"L203" cl5ss="line" name="L213"> 25351       *<_hrimass="sref">pdcspath_store *<_hrimass    ,f="drivers/parisc/pdc_stable.c#L236" id5"L214" cl5ss="line" name="L214"> 25451      
 *<_alk an hrv<="sref">entry *<_alk an hrv<    ,f="drivers/parisc/pdc_stable.c#L236" id5"L205" cl5ss="line" name="L215"> 255515     
 *<_clnso78="sref">count *<_clnso78    ,f="drivers/parisc/pdc_stable.c#L236" id5"6205" cl5ss="line" name="L216"> 25651       *<_keyboentry *<_keybo 25751      EINVAL 25851     }ef="drivers/parisc/pdc_stable.c#L257" id5"9206" cl5ss="line" name="L219"> 25951a href="drivers/parisc/pdc_stable.c#L250" id5"L220" cl5ss="line" name="L220"> 25052 25152pan class="comment"> * @bufanoFor ngr bufsighe hwpwhatan errogoingtles ere, iveead frPDC/Procedures doc,
 25252pan class="comment"> * Seo chanPDC_STABLEan>
 25352pan cf="drivers/parisc/pdc_stable.c#L178" id5"L214" cl5ss="line" name="L224"> 25452pan class="comment"> * A bean>
 25552pan class="comment"> * @entry:h_en_/a>

 huffer>
 25652pan class="comment"> * The aimhe output buffer to write to.
 25752pan class="comment"> * @count>
 25852     ssize_t

entry
pdcspat is ect     f="+code=buf" cl is ="sref">entry 25952      
entryentry 25053      
buf)
 251531    ef="drivers/parisc/pdc_stable.c#L254" id5"L232" cl5ss="line" name="L232"> 252532     out = buf;
 25353pan cf="drivers/parisc/pdc_stable.c#L178" id5"L234" cl5ss="line" name="L234"> 25453      
buf)
 25553      EINVAL;
 25653 hreff="drivers/parisc/pdc_stable.c#L257" id5"L227" cl5ss="line" name="L237"> 25753      /* Find thshow ter /a>
 hwpath c#L257 s#oragr t>
 25853      out = sprintf(out, "%u\ an eld;, entry
 hreref="drivers/parisc/pdc_stable.c#L113" id5"L229" cl5ss="line" name="L239"> 25953a href="drivers/parisc/pdc_stable.c#L250" id5"L240" cl5ss="line" name="L240"> 25054      
out - buf;
 25154pan cef="drivers/parisc/pdc_stable.c#L227" id5"L242" cl5ss="line" name="L242"> 25254a href="drivers/parisc/pdc_stable.c#L263" id5"L233" cl5ss="line" name="L243"> 25354pan class="comment"> * We wan>
 25454pan class="comment"> * A betteh_en_tuto
 25554pan class="comment"> * @entry: e output buffer to write to.
 25654pan class="comment"> * The ai @knobutput PF_AUTOBOOT or PF_AUTOSEARCH flag
 25754pan class="comment"> * @count>
 25854     ssize_t
entrypdcspat is ect     f="+code=buf" cl is ="sref">entry 25954      
entryentry 25055      
buf)
entry 251551    ef="drivers/parisc/pdc_stable.c#L254" id5"L242" cl5ss="line" name="L252"> 252552     out = buf;
 25355      pdcspath_entry *pdcspathry 25455     f="drivers/parisc/pdc_stable.c#L178" id5"L255" cl5ss="line" name="L255"> 25555      buf)
 25655      EINVAL;
 25755a href="drivers/parisc/pdc_stable.c#L228" id5"L248" cl5ss="line" name="L258"> 25855      /* Find thChardwarflags be gslass
 25955      pdcspathry *<_hrimass="sref">pdcspath_store *<_hrimass    ef="drivers/parisc/pdc_stable.c#L244" id5"L260" cl5ss="line" name="L260"> 25056 251561     rw_lockpdcspathryrw_lock);
 252562     out = sprintf(out, "%u\ an es;, pdcspathrydevpath;
devpathflagsentry 25356              return                         lass="string">"%u\O, "%u\Off/span>,  25456      
read_unpdcspathryrw_lock);
 25556pan cf="drivers/parisc/pdc_stable.c#L249" id5"L256" cl5ss="line" name="L266"> 25656      out - buf;
 25756a hreef="drivers/parisc/pdc_stable.c#L227" id5"L268" cl5ss="line" name="L268"> 25856pan cf="drivers/parisc/pdc_stable.c#L257" id5"L259" cl5ss="line" name="L269"> 25956pan class="comment"> * pdcs/*>
 25057pan class="comment"> * @entry:h_en_tutoboot
 25157pan class="comment"> * @buf: T e output buffer to write to.
 25257pan class="comment"> * 
 25357     ssize_t
entrypdcspat is ect     f="+code=buf" cl is ="sref">entry 254574             return                   entryentrybuf)
 25557     ef="drivers/parisc/pdc_stable.c#L238" id5"L256" cl5ss="line" name="L276"> 25657      entryentryentrybuf)
bufPF_AUTOBOOT 25757a hreef="drivers/parisc/pdc_stable.c#L227" id5"L268" cl5ss="line" name="L278"> 25857pan cf="drivers/parisc/pdc_stable.c#L257" id5"L259" cl5ss="line" name="L279"> 25957pan class="comment"> * pdcs/*>
 25058pan class="comment"> * @entry:h_en_tutosearch

 * @buf: T e output buffer to write to.
 15258pan class="comment"> * 
 15358     ssize_t
entrypdcspat is ect     f="+code=buf" cl is ="sref">entry 154584             return                     entryentrybuf)
 15558     ef="drivers/parisc/pdc_stable.c#L238" id5"L276" cl5ss="line" name="L186"> 15658      entryentryentrybuf)
bufPF_AUTOSEARCH 15758a hreef="drivers/parisc/pdc_stable.c#L227" id5"L268" cl5ss="line" name="L188"> 15858pan cf="drivers/parisc/pdc_stable.c#L257" id5"L259" cl5ss="line" name="L189"> 15958pan class="comment"> * pdcs/*>
 15059pan class="comment"> * @entry:h_en_timer This fuS#L229uS#oragr timer a>);
 buffer (in seconds)>
 15159pan class="comment"> * @buf: T e output buffer to write to.
 15259pan class="comment"> *  15359pan class="comment"> * We willput valu
 hwpath timer field a>rrepondste ta number hwpsecondsahn howisc hwp2>
 15459pan class="comment"> * A bett>
 155595    ssize_t
entrypdcspat is ect     f="+code=buf" cl is ="sref">entry 15659      entryentrybuf)
 15759pan cef="drivers/parisc/pdc_stable.c#L238" id5"L278" cl5ss="line" name="L198"> 15859      out = buf;
 15959      pdcspath_entry *pdcspathry 26060 16160              href="+code=i" clasass="sref">buf)
 262602             EINVAL;
 16360pan cf="drivers/parisc/pdc_stable.c#L178" id6"4203" cl6ss="line" name="L194"> 16460             =ass="comment">/* Find thChardwarflags be gslass
 26560      pdcspathry *<_hrimass="sref">pdcspath_store *<_hrimass    ef="drivers/parisc/pdc_stable.c#L244" id6"6205" cl6ss="line" name="L196"> 16660 hreff="drivers/parisc/pdc_stable.c#L257" id6"7206" cl6ss="line" name="L197"> 16760      /* Find th/a>(
 16860      rw_lockpdcspathryrw_lock);
 16960      out = sprintf(out, "%u\ an eu;, pdcspathrydevpath;
devpathflagsprintk 26061      
pdcspathrydevpath;
devpathflagsprintk 261611     read_unpdcspathryrw_lock);
 26261a href="drivers/parisc/pdc_stable.c#L263" id6"L203" cl6ss="line" name="L213"> 26361      out - buf;
 26461     ef="drivers/parisc/pdc_stable.c#L227" id6"L205" cl6ss="line" name="L215"> 26561pan cf="drivers/parisc/pdc_stable.c#L249" id6"6205" cl6ss="line" name="L216"> 26661pan class="comment"> * The /*>
 26761pan class="comment"> * @count:h_en_osid This fuS#L229uS#oragr OS IDf
 26861     lass="comment"> * @buf: T e output buffer to write to.
 26961pan class="comment"> * pdcs.t>
 26062pan cssize_t
entrypdcspat is ect     f="+code=buf" cl is ="sref">entry 261621     
entryentrybuf)
 26262pan cef="drivers/parisc/pdc_stable.c#L238" id6"L223" cl6ss="line" name="L223"> 26362      out = buf;
 26462     f="drivers/parisc/pdc_stable.c#L178" id6"L225" cl6ss="line" name="L225"> 26562      buf)
 26662      EINVAL;
 26762a href="drivers/parisc/pdc_stable.c#L228" id6"8206" cl6ss="line" name="L228"> 26862      out = sprintf(out, "%u\ an es dependdwardata (0x an e.4x);,  26962      
""sref">out,s_id to_>" href="+code=out" clh_en_osid="sref">entryentry 26063 261631     short <out - buf;
 26263pan cef="drivers/parisc/pdc_stable.c#L227" id6"L233" cl6ss="line" name="L233"> 26363pan cf="drivers/parisc/pdc_stable.c#L178" id6"L234" cl6ss="line" name="L234"> 26463pan class="comment"> * A bean>
 26563pan class="comment"> * @entry:h_en_osdep1 This fuS#L229uS#oragr OS-Dependdwardata aThi 1 huffer>
 26663pan class="comment"> * The aimhe output buffer to write to.
 26763pan class="comment"> * @count
 26863     lass="comment"> * @buf: TThis cs="hold 16 by.
 26963pan class="comment"> * pdcs.t>
 26064pan cssize_t
entrypdcspat is ect     f="+code=buf" cl is ="sref">entry 261641     
entryentrybuf)
 26264pan cef="drivers/parisc/pdc_stable.c#L238" id6"L233" cl6ss="line" name="L243"> 26364      out = buf;
 26464      
u32     ="+code=devpathThsuls="sref">count 26564pan cf="drivers/parisc/pdc_stable.c#L249" id6"L226" cl6ss="line" name="L246"> 26664      buf)
 267647     
EINVAL;
 26864pan cf="drivers/parisc/pdc_stable.c#L257" id6"L249" cl6ss="line" name="L249"> 26964      
entryentrycount
off="+code=out" clThsuls="sref">countentry 26065      
EINVAL 261651    f="drivers/parisc/pdc_stable.c#L244" id6"L242" cl6ss="line" name="L252"> 262652     out = sprintf(out, "%u\0x an e.8x;, count 26365      out = sprintf(out, "%u\0x an e.8x;, count 26465      
out = sprintf(out, "%u\0x an e.8x;, count 26565      out = sprintf(out, "%u\0x an e.8x;, count 26665 hreff="drivers/parisc/pdc_stable.c#L257" id6"L247" cl6ss="line" name="L257"> 267657     
out - buf;
 26865     ef="drivers/parisc/pdc_stable.c#L227" id6"L259" cl6ss="line" name="L259"> 26965a href="drivers/parisc/pdc_stable.c#L250" id6"L260" cl6ss="line" name="L260"> 26066pan class="comment"> * @entan>
 26166pan class="comment"> * @buf: Th_en_diagnoshre This fuS#L229uS#oragr Diagnoshref
 26266pan class="comment"> * he output buffer to write to.
 26366pan class="comment"> * We wil
 26466pan class="comment"> * A betteI have NFC how toahneerp
 26566pan class="comment"> * @entry>
 26666     ssize_t
entrypdcspat is ect     f="+code=buf" cl is ="sref">entry 267667     
entryentrybuf)
 26866pan cef="drivers/parisc/pdc_stable.c#L238" id6"L259" cl6ss="line" name="L269"> 26966      
out = buf;
 260670     u32     ="+code=devpathThsuls="sref">count 261671    f="drivers/parisc/pdc_stable.c#L244" id6"L272" cl6ss="line" name="L272"> 262672     buf)
 26367              return -EINVAL;
 26467     f="drivers/parisc/pdc_stable.c#L178" id6"L255" cl6ss="line" name="L275"> 26567      /* Find thga pdiagnoshrery>
 26667      entryentrycount
off="+code=out" clThsuls="sref">countentry 267677     
EINVAL 26867pan cf="drivers/parisc/pdc_stable.c#L257" id6"L259" cl6ss="line" name="L279"> 26967      out = sprintf(out, "%u\0x an e.4x;, count 26068
out - buf;
 16268pan cef="drivers/parisc/pdc_stable.c#L227" id6"L183" cl6ss="line" name="L183"> 16368pan cf="drivers/parisc/pdc_stable.c#L178" id6"L274" cl6ss="line" name="L184"> 16468pan class="comment"> * A bean>
 16568pan class="comment"> * @entry:h_en_fast/a>

 
 16668pan class="comment"> * The aimhe output buffer to write to.
 16768pan class="comment"> * @count
 16868     lass="comment"> * @buf: TThis );
 bf system RAMte tbspaested duquot bootpsequence>
 16968pan class="comment"> * pdcsry>
 16069pan cssize_t

entry
pdcspat is ect     f="+code=buf" cl is ="sref">entry 161691     
entryentrybuf)
 16269pan cef="drivers/parisc/pdc_stable.c#L238" id6"L183" cl6ss="line" name="L193"> 16369      out = buf;
 16469      
u32     ="+code=devpathThsuls="sref">count 16569pan cf="drivers/parisc/pdc_stable.c#L249" id6"L276" cl6ss="line" name="L196"> 16669      buf)
 167697     
EINVAL;
 16869pan cf="drivers/parisc/pdc_stable.c#L257" id6"L199" cl6ss="line" name="L199"> 16969      /* Find thga pfast-/a>
 y>
 270700     entryentrycount
off="+code=out" clThsuls="sref">countentry 171701     
EINVAL 27270a href="drivers/parisc/pdc_stable.c#L263" id7"3202" cl7ss="line" name="L193"> 173703     count 17470              out = sprintf(out, "%u\ an ed kB/span>, count 27570       17670      out = sprintf(out, "%u\All/span>,  17770      out = sprintf(out, "%u\;,  17870       17970      out - buf;
 27071     ef="drivers/parisc/pdc_stable.c#L227" id7"L211" cl7ss="line" name="L211"> 271711    f="drivers/parisc/pdc_stable.c#L244" id7"L212" cl7ss="line" name="L212"> 27271pan class="comment"> * 
 27371pan class="comment"> * We willh_en_osdep2 This fuS#L229uS#oragr OS-Dependdwardata aThi 2 huffer>
 27471pan class="comment"> * A bettehe output buffer to write to.
 27571pan class="comment"> * @entry
 27671pan class="comment"> * The : TThis cs="hold p_en_/a>
 fu224 by. 27771pan class="comment"> * @count>
 27871     ssize_t
entrypdcspat is ect     f="+code=buf" cl is ="sref">entry 27971      
entryentrybuf)
 27072pan cef="drivers/parisc/pdc_stable.c#L238" id7"L221" cl7ss="line" name="L221"> 271721     
out = buf;
 272722     entry
 hreef="drivers/parisc/pdc_stable.c#L239" id7"L203" cl7ss="line" name="L223"> 27372      entry 27472      
u32     ="+code=devpathThsuls="sref">count 27572pan cf="drivers/parisc/pdc_stable.c#L249" id7"L226" cl7ss="line" name="L226"> 27672      pdcspatunlikels href="+code=out" clp_en_/a>
="sref">entry
 hre &lu\=u224)ef="drivers/parisc/pdc_stable.c#L237" id7"7206" cl7ss="line" name="L227"> 277727     
EINVAL 27872pan cf="drivers/parisc/pdc_stable.c#L257" id7"9206" cl7ss="line" name="L229"> 27972      entry
 hreref="+code=buf" clp_en_/a>
="sref">entry
 hre fu224ef="drivers/parisc/pdc_stable.c#L239" id7"L230" cl7ss="line" name="L230"> 27073 27173              href="+code=i" clasass="sref">buf)
 272732             EINVAL;
 27373pan cf="drivers/parisc/pdc_stable.c#L178" id7"L234" cl7ss="line" name="L234"> 27473      
entryentryentry
 hreee="+code=device_i="sref">entry 275735             pdcspatunlikels href="+code=out" clp_e.c#L257 This="sref">entryPDCS_ADDR_OSDsentrycount 27673      
off="+code=out" clThsuls="sref">countentry 277737     
EINVAL 278738     
out = sprintf(out, "%u\0x an e.8x;, count 27973       27074 271741     short <out - buf;
 27274pan cef="drivers/parisc/pdc_stable.c#L227" id7"L233" cl7ss="line" name="L243"> 27374pan cf="drivers/parisc/pdc_stable.c#L178" id7"L244" cl7ss="line" name="L244"> 27474pan class="comment"> * A bean>
 27574pan class="comment"> * @entry:h_en_tuto 27674pan class="comment"> * The aimhe output infer to write tThis from"
 27774pan class="comment"> * @count:@a>);
utput number hwpby. 27874     lass="comment"> * @buf: T  nobutput PF_AUTOBOOT orrPF_AUTOSEARCH flag
 27974pan class="comment"> * pdcsry 
 27075pan class="comment"> * @entry:We will call this function e tchangr tth ahardwartutoboot flag"
 27175pan class="comment"> * @buf: TWe expecart precise syntax:
 27275pan class="comment"> * >>>>>\/span>n\/span> (n == 0 orr1) e ttoggle AutoBoot Off orrOn
 27375pan class="comment"> * We wil>
 27475     ssize_t
entrypdcspat is ect     f="+code=buf" cl is ="sref">entry 275755             entryentrybuf)
 27675      ssize_t
);
="sref">ssize_ta>);
 hre,e>(entry 27775pan cef="drivers/parisc/pdc_stable.c#L238" id7"L248" cl7ss="line" name="L258"> 278758     
pdcspath_entry *pdcspathry 27975      devpathflags 270760     entry);
="sref">ssize_ta>);
 hre+1],ef="+code=entry" temp="sref">ssize_ttemp 271761     
ssize_ta 27276a href="drivers/parisc/pdc_stable.c#L263" id7"L253" cl7ss="line" name="L263"> 273763     ssize_taapL263 href="+code=out" clCAP_SYS_ADMIN="sref">ssize_tCAP_SYS_ADMINa hreef="drivers/parisc/pdc_stable.c#L243" id7"L244" cl7ss="line" name="L264"> 27476              EINVAL 27576pan cf="drivers/parisc/pdc_stable.c#L249" id7"L256" cl7ss="line" name="L266"> 27676      buf)
);
="sref">ssize_ta>);
 hreef="drivers/parisc/pdc_stable.c#L243" id7"L247" cl7ss="line" name="L267"> 277767     
EINVAL;
 27876pan cf="drivers/parisc/pdc_stable.c#L257" id7"L259" cl7ss="line" name="L269"> 27976      /* Find thWe'll use a localeaopy hwpbufil>
 270770     ssize_tmemse
 href="+code=out" clin="sref">entryssize_ta>);
 hre+1ref="drivers/parisc/pdc_stable.c#L249" id7"L261" cl7ss="line" name="L271"> 271771     pdcspatentrybuf)
ssize_ta>);
 hreref="drivers/parisc/pdc_stable.c#L249" id7"L242" cl7ss="line" name="L272"> 27277a href="drivers/parisc/pdc_stable.c#L263" id7"L263" cl7ss="line" name="L273"> 27377             =ass="comment">/* Find thChardwarflags be gslass
 27477      
pdcspathry *<_hrimass="sref">pdcspath_store *<_hrimass    ef="drivers/parisc/pdc_stable.c#L244" id7"L255" cl7ss="line" name="L275"> 27577       27677      /* Find thBe nice e tthe existuot flag record.t>
 27777      rw_lockpdcspathryrw_lock);
 27877      devpathflagspdcspathrydevpath;
devpathflags 27977      read_unpdcspathryrw_lock);
 270780     
entry"%u\ an es:rflags befass: 0x an eX;, entrydevpathflags 17278a href="drivers/parisc/pdc_stable.c#L263" id7"L183" cl7ss="line" name="L183"> 17378      ssize_ttempdevpathskip_entry 17478     f="drivers/parisc/pdc_stable.c#L178" id7"L275" cl7ss="line" name="L185"> 17578      ssize_tassize_ttemp"&##39;0##39;,  17678      ssize_tassize_ta 177787     
entry 178788     ssize_ta 17978      
devpathflagsentry 170790      171791     
devpathflagsentry 172792      17379      entry"%u\ an es:rflags after: 0x an eX;, entrydevpathflags 17479               17579      /* Find thSo far soegood, let##39;shga phn deep.t>
 17679      rw_locko.pdcspathryrw_lock);
 177797     
 178798     /* Find thChangr tth  sometruct.flags first.t>
 17979      pdcspathrydevpath;
devpathflagsdevpathflags 28080      
 181801     
/* Find thNow, dariphn. W.
 282802     pdcspath_storepdcspathry 18380      read_uno.pdcspathryrw_lock);
 18480             f="drivers/parisc/pdc_stable.c#L249" id8"5202" cl8ss="line" name="L195"> 18580      rw_lock/a>(EINVALEINVAL"%u\:tchangrd>\/span> an es\/span> e t\/span> an es\/span>;,  18680      entryEINVAL"%u\tutoboot/span>, "%u\tutosearch/span>,  187807     
devpathflagsentry"%u\On/span>, "%u\Off/span>,  18880       18980      );
="sref">ssize_ta>);
 hreef="drivers/parisc/pdc_stable.c#L249" id8"L210" cl8ss="line" name="L210"> 28081 281811    ="+code=entry" harse_errof="sref">entry 282812     rw_lock/a>(entry"%u\ an es:rParse errof: expecar\/span>n\/span> (n == 0 orr1);, entry 283813     EINVAL;
 28481pan cef="drivers/parisc/pdc_stable.c#L227" id8"L205" cl8ss="line" name="L215"> 28581pan cf="drivers/parisc/pdc_stable.c#L249" id8"6205" cl8ss="line" name="L216"> 28681pan class="comment"> * The an>
 28781pan class="comment"> * @count:h_en_tutoboot 28881     lass="comment"> * @buf: T e output infer to write tThis from"
 28981pan class="comment"> * pdcsry @a>);
utput number hwpby. 28082pan class="comment"> * @entry
 28182pan class="comment"> * @buf: TWe will call this function e tchangr tth ahardwarboot flags"
 28282pan class="comment"> * We expecart precise syntax:
 28382pan class="comment"> * We willlllll\/span>n\/span> (n == 0 orr1) e ttoggle AutoSearch Off orrOn
 28482pan class="comment"> * A bett>
 28582pan cssize_t
pdcspath_st_tutobootpdcspat is ect     f="+code=buf" cl is ="sref">entry 28682      entryentry 287827     
buf)
ssize_t
);
="sref">ssize_ta>);
 hre)f="drivers/parisc/pdc_stable.c#L249" id8"8206" cl8ss="line" name="L228"> 28882pan cef="drivers/parisc/pdc_stable.c#L238" id8"9206" cl8ss="line" name="L229"> 28982      entryentryentrybuf)
ssize_ta>);
 hre,f="+code=__func_PF_AUTOBOOT="sref">EINVAL 28083     ef="drivers/parisc/pdc_stable.c#L227" id8"L221" cl8ss="line" name="L231"> 281831    f="drivers/parisc/pdc_stable.c#L244" id8"L232" cl8ss="line" name="L232"> 28283pan class="comment"> * 
 28383pan class="comment"> * We willh_en_tutosearch 28483pan class="comment"> * A bettehe output infer to write tThis from"
 28583pan class="comment"> * @entry:@a>);
utput number hwpby. 28683pan class="comment"> * The ai
 28783pan class="comment"> * @count:We will call this function e tchangr tth ahardwarboot flags"
 28883     lass="comment"> * @buf: TWe expecart precise syntax:
 28983pan class="comment"> * pdcsry lllll\/span>n\/span> (n == 0 orr1) e ttoggle AutoSearch Off orrOn
 28084pan class="comment"> * @entry>
 281841    ssize_t
entrypdcspat is ect     f="+code=buf" cl is ="sref">entry 282842             entryentry 28384              return eeeeeeeeeeeeeeeeeeeeeaonstea href="+code=buf" class="sref">buf)
ssize_t
);
="sref">ssize_ta>);
 hre)f="drivers/parisc/pdc_stable.c#L249" id8"L244" cl8ss="line" name="L244"> 28484pan cef="drivers/parisc/pdc_stable.c#L238" id8"L235" cl8ss="line" name="L245"> 285845     entryentryentrybuf)
ssize_ta>);
 hre,f="+code=__func_PF_AUTOSEARCH="sref">EINVAL 28684pan cef="drivers/parisc/pdc_stable.c#L227" id8"7206" cl8ss="line" name="L247"> 28784pan cf="drivers/parisc/pdc_stable.c#L227" id8"8206" cl8ss="line" name="L248"> 28884     lass="comment"> * @bufan>
 28984pan class="comment"> * pdcsry p_en_osdep1 28085pan class="comment"> * @entry:he output infer to write tThis from"
 28185pan class="comment"> * @buf: T@a>);
utput number hwpby. 28285pan class="comment"> *  28385pan class="comment"> * We wilTThis cs="slass 16 by. 28485pan class="comment"> * A betteo. 28585pan class="comment"> * @entry:its infer to wri"
 28685pan class="comment"> * The ai>
 28785pan cssize_t
entrypdcspat is ect     f="+code=buf" cl is ="sref">entry 288858     
entryentry 28985      
buf)
ssize_t
);
="sref">ssize_ta>);
 hre)f="drivers/parisc/pdc_stable.c#L249" id8"L260" cl8ss="line" name="L260"> 28086pan cef="drivers/parisc/pdc_stable.c#L238" id8"L251" cl8ss="line" name="L261"> 281861     ssize_tu8 href="+code=i" clasin="sref">entry 28286a href="drivers/parisc/pdc_stable.c#L263" id8"L253" cl8ss="line" name="L263"> 283863     ssize_taapL263 href="+code=out" clCAP_SYS_ADMIN="sref">ssize_tCAP_SYS_ADMINa hreef="drivers/parisc/pdc_stable.c#L243" id8"L244" cl8ss="line" name="L264"> 28486              EINVAL 28586pan cf="drivers/parisc/pdc_stable.c#L249" id8"L256" cl8ss="line" name="L266"> 28686      buf)
);
="sref">ssize_ta>);
 hreef="drivers/parisc/pdc_stable.c#L243" id8"L247" cl8ss="line" name="L267"> 287867     
EINVAL;
 28886pan cf="drivers/parisc/pdc_stable.c#L257" id8"L259" cl8ss="line" name="L269"> 28986      pdcspatunlikels href="+code=out" clp_en_osis="sref">entryEINVAL 28087      
EINVAL 281871    f="drivers/parisc/pdc_stable.c#L244" id8"L242" cl8ss="line" name="L272"> 282872     );
="sref">ssize_ta>);
 hre href 16ef="drivers/parisc/pdc_stable.c#L243" id8"L253" cl8ss="line" name="L273"> 28387              return EINVAL 28487     f="drivers/parisc/pdc_stable.c#L178" id8"L255" cl8ss="line" name="L275"> 28587      /* Find thWe'll use a localeaopy hwpbufil>
 28687      ssize_tmemse
 href="+code=out" clin="sref">entry 28787      pdcspatmemcps href="+code=out" clin="sref">entrybuf)
ssize_ta>);
 hreeef="drivers/parisc/pdc_stable.c#L244" id8"L268" cl8ss="line" name="L278"> 28887pan cf="drivers/parisc/pdc_stable.c#L257" id8"L259" cl8ss="line" name="L279"> 28987      entryentryentry
off="+code=out" clin="sref">entryentry 28088      
EINVAL
 182882     );
="sref">ssize_ta>);
 hreef="drivers/parisc/pdc_stable.c#L249" id8"L183" cl8ss="line" name="L183"> 18388     ef="drivers/parisc/pdc_stable.c#L227" id8"L264" cl8ss="line" name="L184"> 18488     f="drivers/parisc/pdc_stable.c#L178" id8"L275" cl8ss="line" name="L185"> 18588pan class="comment"> * @entan>
 18688pan class="comment"> * The aimp_en_osdep2 o. 18788pan class="comment"> * @count:@e output infer to write tThis from"
 18888     lass="comment"> * @buf: T a>);
utput number hwpby. 18988pan class="comment"> * pdcsry
 18089pan class="comment"> * @entry:This cs="slass p_en_/a>
 fu224 by. 18189pan class="comment"> * @buf: Tby.<-by-by. 18289pan class="comment"> * aonst hreuot:its infer to wri"
 18389pan class="comment"> * We wil>
 18489     ssize_t
entrypdcspat is ect     f="+code=buf" cl is ="sref">entry 185895             entryentry 18689      buf)
ssize_t
);
="sref">ssize_ta>);
 hre)f="drivers/parisc/pdc_stable.c#L249" id8"L267" cl8ss="line" name="L197"> 18789pan cef="drivers/parisc/pdc_stable.c#L238" id8"L268" cl8ss="line" name="L198"> 188898     entry
 hreef="drivers/parisc/pdc_stable.c#L239" id8"L259" cl8ss="line" name="L199"> 18989      entry 290900     ssize_tu8 href="+code=i" clasin="sref">entry 191901    f="drivers/parisc/pdc_stable.c#L244" id9"L202" cl9ss="line" name="L202"> 292902     ssize_taapL263 href="+code=out" clCAP_SYS_ADMIN="sref">ssize_tCAP_SYS_ADMINa hreef="drivers/parisc/pdc_stable.c#L243" id9"3202" cl9ss="line" name="L193"> 19390              return EINVAL 19490     f="drivers/parisc/pdc_stable.c#L178" id9"5202" cl9ss="line" name="L195"> 19590      buf)
);
="sref">ssize_ta>);
 hreef="drivers/parisc/pdc_stable.c#L243" id9"6205" cl9ss="line" name="L196"> 19690      EINVAL;
 19790pan cf="drivers/parisc/pdc_stable.c#L227" id9"8206" cl9ss="line" name="L198"> 198908     pdcspatunlikels href="+code=out" clp_en_/a>
="sref">entry
 hre &lu\=u224)ef="drivers/parisc/pdc_stable.c#L237" id9"9206" cl9ss="line" name="L199"> 19990      
EINVAL 29091 29191              hre="+code=entry" unlikels="sref">pdcspatunlikels href="+code=out" clp_en_osis="sref">entryEINVAL 292912             EINVAL 29391pan cf="drivers/parisc/pdc_stable.c#L178" id9"L214" cl9ss="line" name="L214"> 29491      
entry
 hreref="+code=buf" clp_en_/a>
="sref">entry
 hre fu224ef="drivers/parisc/pdc_stable.c#L239" id9"L205" cl9ss="line" name="L215"> 29591pan cf="drivers/parisc/pdc_stable.c#L249" id9"6205" cl9ss="line" name="L216"> 29691      );
="sref">ssize_ta>);
 hre href ="+code=ENODATA
="sref">entry
 hreef="drivers/parisc/pdc_stable.c#L243" id9"7205" cl9ss="line" name="L217"> 297917     
EINVAL 29891pan cf="drivers/parisc/pdc_stable.c#L257" id9"9206" cl9ss="line" name="L219"> 29991      /* Find thWe'll use a localeaopy hwpbufil>
 29092 29192             forre="+code=entry" i="sref">entryentryssize_ta>);
 hreee="+code=device_i="sref">entry 292922             ssize_tmemse
 href="+code=out" clin="sref">entry 29392              return ="+code=devpathmemcps="sref">pdcspatmemcps href="+code=out" clin="sref">entrybuf)
entry);
="sref">ssize_ta>);
 href="+code=ENODATAi="sref">entry);
="sref">ssize_ta>);
 href="+code=ENODATAi="sref">entry 29492              pdcspatunlikels href="+code=out" clp_e.c#L257entryentryentryentry 295925             
off="+code=out" clin="sref">entryentry 29692      EINVAL 297927     
 29892pan cf="drivers/parisc/pdc_stable.c#L257" id9"9206" cl9ss="line" name="L229"> 29992      );
="sref">ssize_ta>);
 hreef="drivers/parisc/pdc_stable.c#L249" id9"L230" cl9ss="line" name="L230"> 29093     ef="drivers/parisc/pdc_stable.c#L227" id9"L221" cl9ss="line" name="L231"> 291931    f="drivers/parisc/pdc_stable.c#L244" id9"L232" cl9ss="line" name="L232"> 29293pan class="comment"> * 
 29393pan centry
="sref">entry
 hre, 0444, ="+code=buf" clh_en_/a>
_This="sref">entry
_This    , ="+code=buf" clNULs="sref">EINVAL 29493     entryentryentrypdcspath_st_tutoboot 29593pan centryentryentryentry 29693pan centryentryentryEINVAL 29793pan centryentryentryEINVAL 29893     entryentryentryentry 29993pan centryentryentryEINVAL 29094pan centry
="sref">entry
 hre, 0400ef="+code=__func_h_en_fast
entry
EINVAL 291941    entryentryentryentry 29294a href="drivers/parisc/pdc_stable.c#L263" id9"L233" cl9ss="line" name="L243"> 29394pan centrydevpathh_en_/ubsys_te fs    [] = ef="drivers/parisc/pdc_stable.c#L238" id9"L244" cl9ss="line" name="L244"> 29494              href="+code=entry" h_st_te f_/a>
="sref">entry
    f="+code=mode" cte f="sref">entry 295945     entryentry 296946     entryentry 297947     entryentry 298948     entryentry 299949     entryentry 290950     entryentry 291951     
="sref">entry
    f="+code=mode" cte f="sref">entry 292952     entryentry 29395      EINVAL 29495pan c}ef="drivers/parisc/pdc_stable.c#L244" id9"L235" cl9ss="line" name="L255"> 29595pan cf="drivers/parisc/pdc_stable.c#L249" id9"L226" cl9ss="line" name="L256"> 29695pan cssize_tte file.<_group     ="+code=entry" h_st_te f_group="sref">ssize_th_st_te f_group hrerefef="drivers/parisc/pdc_stable.c#L238" id9"L247" cl9ss="line" name="L257"> 297957     devpathte fs    ref="+code=buf" clp_en_/ubsys_te fs="sref">devpathh_en_/ubsys_te fs    ,f="drivers/parisc/pdc_stable.c#L278" id9"8206" cl9ss="line" name="L258"> 298958    }ef="drivers/parisc/pdc_stable.c#L244" id9"9206" cl9ss="line" name="L259"> 29995     f="drivers/parisc/pdc_stable.c#L244" id9"L260" cl9ss="line" name="L260"> 290960an cpdcspat is ect     f="+code=buf" clc#L257< is ="sref">entry 291961an cssize_tkse
 hre f="+code=buf" clhaths_ se
="sref">ssize_thaths_ se
 hreef="drivers/parisc/pdc_stable.c#L249" id9"L232" cl9ss="line" name="L262"> 29296a href="drivers/parisc/pdc_stable.c#L263" id9"L253" cl9ss="line" name="L263"> 29396pan class="comment"> * We wan>
 29496pan class="comment"> * A betteh_en_register_hry 29596pan class="comment"> * @entry:
 29696pan class="comment"> * The aimIt creates  is ects corcesponduot:to each  sometruct.with nicersysfs
 29796pan class="comment"> * @count:ameks e tthe real device.:This is wherr tth magreftakes  lace: when
 29896     lass="comment"> * @buf: Tregisteruot:tth /ubsystem:te file. 29996pan class="comment"> * pdcsry created will showphn tth /ysfs tree as a folder aontainuot:files ts defme=d
 29097pan class="comment"> * @entry:by ore 29197pan class="comment"> * @buf: >
 292972    entryentry 29397     ="+code=buf" clp_en_register_hrydevpathh_en_register_hry 29497pan cef="drivers/parisc/pdc_stable.c#L238" id9"L255" cl9ss="line" name="L275"> 29597      entry 29697      pdcspath_storepdcspatclass hreef="drivers/parisc/pdc_stable.c#L239" id9"L247" cl9ss="line" name="L277"> 29797      entry 29897       29997      /* Find thInitiala>
 tth trucies );
 befass anythuot:els gt>
 29098      
entrypdcspatclass hreref="+code=buf" clp_enoredevpathh_enoreentryentry
);
_init"Lsref">entry);
_init href href="+code=entry" class="sref">pdcspatclass hre href="+code=rw_lock" class="sref">rw_lock);
 19298a href="drivers/parisc/pdc_stable.c#L263" id9"L183" cl9ss="line" name="L183"> 193983     
entrypdcspatclass hreref="+code=buf" clp_enoredevpathh_enoreentryentry 19498              read_uno.pdcspatclass hre href="+code=rw_lock" class="sref">rw_lock);
 195985             entryentrypdcspatclass hreref="drivers/parisc/pdc_stable.c#L249" id9"L256" cl9ss="line" name="L186"> 19698      read_uno.pdcspatclass hre href="+code=rw_lock" class="sref">rw_lock);
 19798pan cf="drivers/parisc/pdc_stable.c#L227" id9"L268" cl9ss="line" name="L188"> 198988     
entry 19998      
 19099 191991     pdcspatclass hre href="+code=rw_lock is ="sref">entryssize_tkse
 hre ef="+code=buf" clpaths_ se
="sref">ssize_thaths_ se
 hreef="drivers/parisc/pdc_stable.c#L249" id9"L242" cl9ss="line" name="L192"> 192992             entryentrypdcspatclass hre href="+code=rw_lock is ="sref">entryentryEINVAL 19399              return eeeeeeeeeeeeeeeeeeeeea href=ass="comment/span>%s/span>
pdcspatclass hre href="+code=rw_lock193"="sref">pdcspat193" 19499              entry 195995             entry 19699     f="drivers/parisc/pdc_stable.c#L239" id9"L247" cl9ss="line" name="L197"> 197997     
/* Find th is ect is nowTregisteredgt>
 198998     
read_uno.pdcspatclass hre href="+code=rw_lock" class="sref">rw_lock);
 19999      
pdcspatclass hre href="+code=rw_lock"eads="sref">pdcspat"eads hreref2ef="drivers/parisc/pdc_stable.c#L249" id10"L200" cl10"L20line" name="L199"> 110"L2>10"L     
="drivers/parisc/pdc_stable.c#L249" id10"1200" cl10"s="line" name="L191"> 110"s=>10"1     /* Find thAdd a nicersymamek e tthe real devicegt>
 110"s=>10"2             pdcspatclass hre href="+code=rw_lockdev="sref">pdcspatdev 110"s=>10"              return eeeeeeee="+code=__func_erf="sref">entryentrypdcspatclass hre href="+code=rw_lock is ="sref">entrypdcspatclass hre href="+code=rw_lockdev="sref">pdcspatdeventry/span>device/span>
 110"s=>10"              ssize_tWARN_ON href="+code=out" clcrf="sref">entry 110"s=>10"5              110"s=>10"     f="drivers/parisc/pdc_stable.c#L239" id10"7200" cl10"s="line" name="L197"> 110"s=>10"7     
read_uno.pdcspatclass hre href="+code=rw_lock" class="sref">rw_lock);
 110"s=>10"8     
ssize_t is ect_ueve;
 hre  href="+code=entry" class="sref">pdcspatclass hre href="+code=rw_lock is ="sref">entryentry 110"s=>10"      
 210ss=>10ss      210ss=>10s1      210ss=>10s2    ef="drivers/parisc/pdc_stable.c#L227" id1013200" cl10ss="line" name="L213"> 210ss=>10span cf="drivers/parisc/pdc_stable.c#L178" id10s4200" cl10ss="line" name="L214"> 210ss=>10span class="comment"> * A bean>
 210ss=>10span class="comment"> * @entry:h_en_unregister_hry 210ss=>10span class="comment"> * The ai>
 210ss=>10span centry 210ss=>10s8    ="+code=buf" clp_en_unregister_hrydevpathh_en_unregister_hry 210ss=>10s9an cef="drivers/parisc/pdc_stable.c#L238" id102L200" cl10ss="line" name="L220"> 210ss=>10ss     entry 210ss=>10s1     pdcspath_storepdcspatclass hreef="drivers/parisc/pdc_stable.c#L239" id10s2200" cl10ss="line" name="L222"> 210ss=>10s2      210ss=>10s3     
entrypdcspatclass hreref="+code=buf" clp_enoredevpathh_enoreentryentry 210ss=>10s              rw_lockpdcspatclass hre href="+code=rw_lock" class="sref">rw_lock);
 210ss=>10s5             pdcspatclass hre href="+code=rw_lock"eads="sref">pdcspat"eads hrerhref= 2ef="drivers/parisc/pdc_stable.c#L243" id1026200" cl10ss="line" name="L226"> 210ss=>10s      ssize_t is ect_pu
 hre  href="+code=entry" class="sref">pdcspatclass hre href="+code=rw_lock is ="sref">entry 210ss=>10s7     
read_unpdcspatclass hre href="+code=rw_lock" class="sref">rw_lock);
 210ss=>10s8     
 210ss=>10s9    ef="drivers/parisc/pdc_stable.c#L227" id103L200" cl10ss="line" name="L230"> 210ss=>10ssan cf="drivers/parisc/pdc_stable.c#L178" id1031200" cl10ss="line" name="L231"> 210ss=>10span class="comment"> * @buf/>
 210ss=>10span class="comment"> * ForrnowTweTregister tth /#L229 /ubsystem:with tth firmwar9 /ubsystem
 210ss=>10span class="comment"> * We wil and tth haths /ubsystem:with tth /#L229 /ubsystem
 210ss=>10span class="comment"> * A bett>
 210ss=>10span centry 210ss=>10s6    ="+code=buf" clp_e.c#L257entry 210ss=>10span cef="drivers/parisc/pdc_stable.c#L238" id10s8200" cl10ss="line" name="L238"> 210ss=>10s8     entryentry 210ss=>10s      entryentry 210ss=>10ss href="drivers/parisc/pdc_stable.c#L263" id1041200" cl10ss="line" name="L241"> 210ss=>10s1     /* Find thfind tth /a>
 of tth /#L229 /#oragr t>
 210ss=>10s2     
="sref">entry
 hre  href="+code=entry" p_en_/a>
="sref">entry
 hre) !ef="+code=buf" clPDC_OK="sref">entry 210ss=>10s              return entry 210ss=>10s     f="drivers/parisc/pdc_stable.c#L178" id10s5200" cl10ss="line" name="L245"> 210ss=>10s      /* Find thmak9 /ur9 weThavh troughrdata t>
 210ss=>10s      
="sref">entry
 hrer&lu\f96ef="drivers/parisc/pdc_stable.c#L243" id10s7200" cl10ss="line" name="L247"> 210ss=>10s7     
entry 210ss=>10span cf="drivers/parisc/pdc_stable.c#L257" id10s9200" cl10ss="line" name="L249"> 210ss=>10s      rw_lockpr nes href="+code=out" clKERN_INFO="sref">EINVALEINVAL/span> facility v%s\n/span>
ssize_tPDCS_VERSION 210ss=>10ssan cf="drivers/parisc/pdc_stable.c#L257" id1051200" cl10ss="line" name="L251"> 210ss=>10s1     /* Find thget OSID t>
 210ss=>10s2     entryentryentry
off="+code=out" clentryentry 210ss=>10s              return EINVAL 210ss=>10s     f="drivers/parisc/pdc_stable.c#L178" id1055200" cl10ss="line" name="L255"> 210ss=>10s      /* Find thtth actual result is 16 bits away t>
 210ss=>10s6     entryentry 210ss=>10span cf="drivers/parisc/pdc_stable.c#L227" id10s8200" cl10ss="line" name="L258"> 210ss=>10s8     /* Find thForrnowTwe'll register tth direc#ory at /sys/firmwar9//#L229 t>
 210ss=>10s      entryentry/span>c#L257/span>
entry 210ss=>10ss     entry 210ss=>10s1     entryEINVAL 210ss=>10s2             entry 210ss=>10s             ef="drivers/parisc/pdc_stable.c#L227" id1064200" cl10ss="line" name="L264"> 210ss=>10s     f="drivers/parisc/pdc_stable.c#L178" id1065200" cl10ss="line" name="L265"> 210ss=>10s      /* Find thDon'teforget the root trucies t>
 210ss=>10s6     entryssize_tcysfs_create_group href="+code=out" clc#L257< is ="sref">entryssize_th_st_te f_group hreref="drivers/parisc/pdc_stable.c#L249" id1067200" cl10ss="line" name="L267"> 210ss=>10span cf="drivers/parisc/pdc_stable.c#L227" id1068200" cl10ss="line" name="L268"> 210ss=>10s8     /* Find thregister tth haths  se
 as a child of tth /#L229  se
 t>
 210ss=>10s      ssize_thaths_ se
 hreref="+code=buf" cl se
_create_and_ads="sref">entry/span>haths/span>
EINVALentry 210ss=>10ss     ssize_thaths_ se
 hreefef="drivers/parisc/pdc_stable.c#L249" id1071200" cl10ss="line" name="L271"> 210ss=>10s1     entryEINVAL 210ss=>10s2             entry 210ss=>10s             ef="drivers/parisc/pdc_stable.c#L227" id1074200" cl10ss="line" name="L274"> 210ss=>10s     f="drivers/parisc/pdc_stable.c#L178" id1075200" cl10ss="line" name="L275"> 210ss=>10s      /* Find thnowTweTcreate all /span>files/span> for tth haths  se
 t>
 210ss=>10s      entrydevpathh_en_register_hry 210ss=>10s7     
entry 210ss=>10span cf="drivers/parisc/pdc_stable.c#L257" id1079200" cl10ss="line" name="L279"> 210ss=>10s      entry 210ss=>10ss     
10s1    ="+code=buf" clfail_h_enreg="sref">entry 110ss=>10s2     devpathh_en_unregister_hry 110ss=>10s      entryssize_thaths_ se
 hreeef="drivers/parisc/pdc_stable.c#L249" id1084200" cl10ss="line" name="L184"> 110ss=>10s4      110ss=>10s5    ="+code=buf" clfail_ se
reg="sref">entry 110ss=>10s6     ssize_t is ect_pu
 hre ="+code=buf" clc#L257< is ="sref">entry 110ss=>10s7      110ss=>10s8    ="+code=buf" clfail_firmreg="sref">entry 110ss=>10s      rw_lockpr nes href="+code=out" clKERN_INFO="sref">EINVALEINVAL/span> bailuot:out\n/span>
 110ss=>10ss     entry 110ss=>10s1    ef="drivers/parisc/pdc_stable.c#L227" id1092200" cl10ss="line" name="L192"> 110ss=>10sa href="drivers/parisc/pdc_stable.c#L263" id10s3200" cl10ss="line" name="L193"> 110ss=>10span centry 110ss=>10s4    ="+code=buf" clp_e.c#L257entry 110ss=>10s5an cef="drivers/parisc/pdc_stable.c#L238" id1096200" cl10ss="line" name="L196"> 110ss=>10s6     devpathh_en_unregister_hry 110ss=>10s7     entryssize_thaths_ se
 hreeef="drivers/parisc/pdc_stable.c#L249" id1098200" cl10ss="line" name="L198"> 110ss=>10s8     ssize_t is ect_pu
 hre ="+code=buf" clc#L257< is ="sref">entry 110ss=>10s9    ef="drivers/parisc/pdc_stable.c#L227" id11"L200" cl11"L20line" name="L199"> 111"L2>110san cf="drivers/parisc/pdc_stable.c#L257" id11"1200" cl11"s="line" name="L191"> 111"s=>1101    f="drivers/parisc/pdc_stable.c#L244" id1102200" cl11"s="line" name="L192"> 111"s=>11"2    ="+code=buf" clmodultentryentry 111"s=>110     ="+code=buf" clmodultentryentry 111"s=>11"     
put original LXR softwar9 by tth ="drivershttp://sourceforge.net/pro ects/lxr=>LXR ">/*unity hre,fthis experi* Fial riscion by ="driversmailto:lxr@ameux.no">lxr@ameux.no hre. lxr.ameux.no kindly hosted by ="drivershttp://www.redpill-amepro.no">Redpill Lmepro AS hre,fprovider of Lmeuxeaonsultuot:tnd oper hrons services since 1995.