• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/arch/s390/mm/

Lines Matching refs:seg

253 query_segment_type (struct dcss_segment *seg)
271 memcpy (qin->qname, seg->dcss_name, 8);
318 seg->vm_segtype = qout->range[0].start & 0xff;
337 seg->vm_segtype = SEG_TYPE_EWEN;
340 /* analyze diag output and update seg */
341 seg->start_addr = qout->segstart;
342 seg->end = qout->segend;
344 memcpy (seg->range, qout->range, 6*sizeof(struct qrange));
345 seg->segcnt = qout->segcnt;
369 struct dcss_segment seg;
374 dcss_mkname(name, seg.dcss_name);
375 rc = query_segment_type (&seg);
378 return seg.vm_segtype;
386 segment_overlaps_others (struct dcss_segment *seg)
394 if ((tmp->start_addr >> 20) > (seg->end >> 20))
396 if ((tmp->end >> 20) < (seg->start_addr >> 20))
398 if (seg == tmp)
412 struct dcss_segment *seg;
415 seg = kmalloc(sizeof(*seg), GFP_KERNEL | GFP_DMA);
416 if (seg == NULL) {
420 dcss_mkname (name, seg->dcss_name);
421 rc = query_segment_type (seg);
426 if (segment_overlaps_others(seg)) {
432 rc = vmem_add_mapping(seg->start_addr, seg->end - seg->start_addr + 1);
437 seg->res = kzalloc(sizeof(struct resource), GFP_KERNEL);
438 if (seg->res == NULL) {
442 seg->res->flags = IORESOURCE_BUSY | IORESOURCE_MEM;
443 seg->res->start = seg->start_addr;
444 seg->res->end = seg->end;
445 memcpy(&seg->res_name, seg->dcss_name, 8);
446 EBCASC(seg->res_name, 8);
447 seg->res_name[8] = '\0';
448 strncat(seg->res_name, " (DCSS)", 7);
449 seg->res->name = seg->res_name;
450 rc = seg->vm_segtype;
453 seg->res->flags |= IORESOURCE_READONLY;
454 if (request_resource(&iomem_resource, seg->res)) {
456 kfree(seg->res);
461 diag_cc = dcss_diag(&loadnsr_scode, seg->dcss_name,
464 diag_cc = dcss_diag(&loadshr_scode, seg->dcss_name,
467 dcss_diag(&purgeseg_scode, seg->dcss_name,
476 dcss_diag(&purgeseg_scode, seg->dcss_name,
480 seg->start_addr = start_addr;
481 seg->end = end_addr;
482 seg->do_nonshared = do_nonshared;
483 atomic_set(&seg->ref_count, 1);
484 list_add(&seg->list, &dcss_list);
485 *addr = seg->start_addr;
486 *end = seg->end;
489 "exclusive-writable\n", name, (void*) seg->start_addr,
490 (void*) seg->end, segtype_string[seg->vm_segtype]);
493 "shared access mode\n", name, (void*) seg->start_addr,
494 (void*) seg->end, segtype_string[seg->vm_segtype]);
498 release_resource(seg->res);
499 kfree(seg->res);
501 vmem_remove_mapping(seg->start_addr, seg->end - seg->start_addr + 1);
503 kfree(seg);
531 struct dcss_segment *seg;
538 seg = segment_by_name (name);
539 if (seg == NULL)
542 if (do_nonshared == seg->do_nonshared) {
543 atomic_inc(&seg->ref_count);
544 *addr = seg->start_addr;
545 *end = seg->end;
546 rc = seg->vm_segtype;
572 struct dcss_segment *seg;
577 seg = segment_by_name (name);
578 if (seg == NULL) {
582 if (do_nonshared == seg->do_nonshared) {
588 if (atomic_read (&seg->ref_count) != 1) {
594 release_resource(seg->res);
596 seg->res->flags &= ~IORESOURCE_READONLY;
598 if (seg->vm_segtype == SEG_TYPE_SR ||
599 seg->vm_segtype == SEG_TYPE_ER)
600 seg->res->flags |= IORESOURCE_READONLY;
602 if (request_resource(&iomem_resource, seg->res)) {
606 kfree(seg->res);
610 dcss_diag(&purgeseg_scode, seg->dcss_name, &dummy, &dummy);
612 diag_cc = dcss_diag(&loadnsr_scode, seg->dcss_name,
615 diag_cc = dcss_diag(&loadshr_scode, seg->dcss_name,
627 seg->start_addr = start_addr;
628 seg->end = end_addr;
629 seg->do_nonshared = do_nonshared;
633 release_resource(seg->res);
634 kfree(seg->res);
636 vmem_remove_mapping(seg->start_addr, seg->end - seg->start_addr + 1);
637 list_del(&seg->list);
638 dcss_diag(&purgeseg_scode, seg->dcss_name, &dummy, &dummy);
639 kfree(seg);
654 struct dcss_segment *seg;
660 seg = segment_by_name (name);
661 if (seg == NULL) {
665 if (atomic_dec_return(&seg->ref_count) != 0)
667 release_resource(seg->res);
668 kfree(seg->res);
669 vmem_remove_mapping(seg->start_addr, seg->end - seg->start_addr + 1);
670 list_del(&seg->list);
671 dcss_diag(&purgeseg_scode, seg->dcss_name, &dummy, &dummy);
672 kfree(seg);
683 struct dcss_segment *seg;
694 seg = segment_by_name (name);
696 if (seg == NULL) {
701 startpfn = seg->start_addr >> PAGE_SHIFT;
702 endpfn = (seg->end) >> PAGE_SHIFT;
704 for (i=0; i<seg->segcnt; i++) {
706 seg->range[i].start >> PAGE_SHIFT,
707 seg->range[i].end >> PAGE_SHIFT,
708 segtype_string[seg->range[i].start & 0xff]);