Searched refs:ag (Results 1 - 48 of 48) sorted by relevance

/linux-4.4.14/kernel/sched/
H A Dauto_group.c29 struct autogroup *ag = container_of(kref, struct autogroup, kref); autogroup_destroy() local
33 ag->tg->rt_se = NULL; autogroup_destroy()
34 ag->tg->rt_rq = NULL; autogroup_destroy()
36 sched_offline_group(ag->tg); autogroup_destroy()
37 sched_destroy_group(ag->tg); autogroup_destroy()
40 static inline void autogroup_kref_put(struct autogroup *ag) autogroup_kref_put() argument
42 kref_put(&ag->kref, autogroup_destroy); autogroup_kref_put()
45 static inline struct autogroup *autogroup_kref_get(struct autogroup *ag) autogroup_kref_get() argument
47 kref_get(&ag->kref); autogroup_kref_get()
48 return ag; autogroup_kref_get()
53 struct autogroup *ag; autogroup_task_get() local
59 ag = autogroup_kref_get(p->signal->autogroup); autogroup_task_get()
62 return ag; autogroup_task_get()
67 struct autogroup *ag = kzalloc(sizeof(*ag), GFP_KERNEL); autogroup_create() local
70 if (!ag) autogroup_create()
78 kref_init(&ag->kref); autogroup_create()
79 init_rwsem(&ag->lock); autogroup_create()
80 ag->id = atomic_inc_return(&autogroup_seq_nr); autogroup_create()
81 ag->tg = tg; autogroup_create()
94 tg->autogroup = ag; autogroup_create()
97 return ag; autogroup_create()
100 kfree(ag); autogroup_create()
104 ag ? "sched_create_group()" : "kmalloc()"); autogroup_create()
126 autogroup_move_group(struct task_struct *p, struct autogroup *ag) autogroup_move_group() argument
135 if (prev == ag) { autogroup_move_group()
140 p->signal->autogroup = autogroup_kref_get(ag); autogroup_move_group()
155 struct autogroup *ag = autogroup_create(); sched_autogroup_create_attach() local
157 autogroup_move_group(p, ag); sched_autogroup_create_attach()
159 autogroup_kref_put(ag); sched_autogroup_create_attach()
194 struct autogroup *ag; proc_sched_autogroup_set_nice() local
212 ag = autogroup_task_get(p); proc_sched_autogroup_set_nice()
214 down_write(&ag->lock); proc_sched_autogroup_set_nice()
215 err = sched_group_set_shares(ag->tg, prio_to_weight[nice + 20]); proc_sched_autogroup_set_nice()
217 ag->nice = nice; proc_sched_autogroup_set_nice()
218 up_write(&ag->lock); proc_sched_autogroup_set_nice()
220 autogroup_kref_put(ag); proc_sched_autogroup_set_nice()
227 struct autogroup *ag = autogroup_task_get(p); proc_sched_autogroup_show_task() local
229 if (!task_group_is_autogroup(ag->tg)) proc_sched_autogroup_show_task()
232 down_read(&ag->lock); proc_sched_autogroup_show_task()
233 seq_printf(m, "/autogroup-%ld nice %d\n", ag->id, ag->nice); proc_sched_autogroup_show_task()
234 up_read(&ag->lock); proc_sched_autogroup_show_task()
237 autogroup_kref_put(ag); proc_sched_autogroup_show_task()
/linux-4.4.14/fs/xfs/
H A Dxfs_filestream.c36 xfs_agnumber_t ag; /* AG in use for this directory */ member in struct:xfs_fstrm_item
45 * Allocation group filestream associations are tracked with per-ag atomic
48 * point's m_peraglock is used to protect these counters from per-ag array
63 * remaining items from the cache and reallocates the mount point's per-ag
78 * the cache that reference per-ag array elements that have since been
128 xfs_filestream_put_ag(item->ip->i_mount, item->ag); xfs_fstrm_free_func()
130 trace_xfs_filestream_free(item->ip, item->ag); xfs_fstrm_free_func()
151 xfs_agnumber_t ag, max_ag = NULLAGNUMBER; xfs_filestream_pick_ag() local
159 ag = startag; xfs_filestream_pick_ag()
166 trace_xfs_filestream_scan(ip, ag); xfs_filestream_pick_ag()
168 pag = xfs_perag_get(mp, ag); xfs_filestream_pick_ag()
171 err = xfs_alloc_pagf_init(mp, NULL, ag, trylock); xfs_filestream_pick_ag()
185 max_ag = ag; xfs_filestream_pick_ag()
194 if (xfs_filestream_get_ag(mp, ag) > 1) { xfs_filestream_pick_ag()
195 xfs_filestream_put_ag(mp, ag); xfs_filestream_pick_ag()
209 *agp = ag; xfs_filestream_pick_ag()
214 xfs_filestream_put_ag(mp, ag); xfs_filestream_pick_ag()
218 if (++ag >= mp->m_sb.sb_agcount) xfs_filestream_pick_ag()
219 ag = 0; xfs_filestream_pick_ag()
222 if (ag != startag) xfs_filestream_pick_ag()
264 item->ag = *agp; xfs_filestream_pick_ag()
319 xfs_agnumber_t startag, ag = NULLAGNUMBER; xfs_filestream_lookup_ag() local
330 ag = container_of(mru, struct xfs_fstrm_item, mru)->ag; xfs_filestream_lookup_ag()
333 trace_xfs_filestream_lookup(ip, ag); xfs_filestream_lookup_ag()
349 if (xfs_filestream_pick_ag(pip, startag, &ag, 0, 0)) xfs_filestream_lookup_ag()
350 ag = NULLAGNUMBER; xfs_filestream_lookup_ag()
353 return ag; xfs_filestream_lookup_ag()
384 startag = (item->ag + 1) % mp->m_sb.sb_agcount; xfs_filestream_new_ag()
H A Dxfs_extent_busy.h35 struct rb_node rb_node; /* ag by-bno indexed search tree */
H A Dxfs_icache.c650 xfs_agnumber_t ag; xfs_inode_ag_iterator() local
652 ag = 0; xfs_inode_ag_iterator()
653 while ((pag = xfs_perag_get(mp, ag))) { xfs_inode_ag_iterator()
654 ag = pag->pag_agno + 1; xfs_inode_ag_iterator()
678 xfs_agnumber_t ag; xfs_inode_ag_iterator_tag() local
680 ag = 0; xfs_inode_ag_iterator_tag()
681 while ((pag = xfs_perag_get_tag(mp, ag, tag))) { xfs_inode_ag_iterator_tag()
682 ag = pag->pag_agno + 1; xfs_inode_ag_iterator_tag()
1028 xfs_agnumber_t ag; xfs_reclaim_inodes_ag() local
1033 ag = 0; xfs_reclaim_inodes_ag()
1035 while ((pag = xfs_perag_get_tag(mp, ag, XFS_ICI_RECLAIM_TAG))) { xfs_reclaim_inodes_ag()
1040 ag = pag->pag_agno + 1; xfs_reclaim_inodes_ag()
1179 xfs_agnumber_t ag = 0; xfs_reclaim_inodes_count() local
1182 while ((pag = xfs_perag_get_tag(mp, ag, XFS_ICI_RECLAIM_TAG))) { xfs_reclaim_inodes_count()
1183 ag = pag->pag_agno + 1; xfs_reclaim_inodes_count()
H A Dxfs_mount.h57 xfs_agnumber_t m_agfrotor; /* last ag where space found */
58 xfs_agnumber_t m_agirotor; /* last ag dir inode alloced */
81 __uint8_t m_agno_log; /* log #ag's */
96 struct radix_tree_root m_perag_tree; /* per-ag accounting info */
268 * Per-ag incore structure, copies of information in agf and agi, to improve the
H A Dxfs_mount.c142 * Free up the per-ag resources associated with the mount structure.
194 * Walk the current per-ag tree so we don't try to initialise AGs xfs_initialize_perag()
688 * allocator alignment is within an ag, therefore ag has xfs_mountfs()
799 * Allocate and initialize the per-ag data. xfs_mountfs()
805 xfs_warn(mp, "Failed per-ag init: %d", error); xfs_mountfs()
837 * the per-ag data. These may not be correct if the filesystem was not xfs_mountfs()
H A Dxfs_fsops.c194 /* allocate the new per-ag structures */ xfs_growfs_data_private()
542 "error %d reading secondary superblock for ag %d", xfs_growfs_data_private()
553 "write error %d updating secondary superblock for ag %d", xfs_growfs_data_private()
H A Dxfs_itable.c427 /* Start of ag. Lookup the first inode chunk */ xfs_bulkstat()
436 * Loop through inode btree records in this ag, xfs_bulkstat()
H A Dxfs_super.c577 * yet to the potentially higher ag count.
H A Dxfs_log_recover.c4089 * Find the agi for this ag. xlog_recover_process_iunlinks()
4097 * after we've recovered all the ag's we can.... xlog_recover_process_iunlinks()
/linux-4.4.14/include/video/
H A Dmaxinefb.h5 * Michael Engel <engel@unix-ag.org> and Karsten Merker <merker@guug.de>
H A Dpmag-ba-fb.h6 * Michael Engel <engel@unix-ag.org>,
H A Dpmagb-b-fb.h6 * Michael Engel <engel@unix-ag.org> and
/linux-4.4.14/net/ipv6/netfilter/
H A Dnf_dup_ipv6.c2 * (C) 2007 by Sebastian Claßen <sebastian.classen@freenet.ag>
79 MODULE_AUTHOR("Sebastian Claßen <sebastian.classen@freenet.ag>");
/linux-4.4.14/fs/jfs/
H A Djfs_imap.h63 __le64 agstart; /* 8: starting block of ag */
65 __le32 inofreefwd; /* 4: ag inode free list forward */
66 __le32 inofreeback; /* 4: ag inode free list back */
67 __le32 extfreefwd; /* 4: ag inode extent free list forward */
68 __le32 extfreeback; /* 4: ag inode extent free list back */
H A Djfs_imap.c68 /* per ag iag list locks */
162 /* allocate and init ag list locks */ diMount()
354 /* get the ag for the iag */ diRead()
399 /* set the ag for the inode */ diRead()
833 * the ag free inode list.
839 * will be placed on the ag extent free list if the extent
842 * the iag, the iag will also be removed from the ag free
848 * ag free extent list and ag free inode list and placed on
965 * insert the iag at head of the inode free list for the ag. diFree()
968 /* check if there are any iags on the ag inode diFree()
1018 /* update the free inode counts at the iag, ag and diFree()
1048 * it will be placed on the head of the ag extent free list. diFree()
1051 /* check if the ag extent free list has any iags. diFree()
1065 * iag. if so, the iag will be removed from the ag extent diFree()
1070 * ag extent free list, read the iags preceding diFree()
1071 * and following the iag on the ag extent free diFree()
1088 /* remove the iag from the ag inode free list if freeing diFree()
1096 * ag inode free list, read the iags preceding diFree()
1097 * and following the iag on the ag inode free diFree()
1144 /* add the iag to the ag extent free list if this is the diFree()
1156 /* remove the iag from the ag extent list if all extents diFree()
1178 /* remove the iag from the ag inode free list if freeing diFree()
1224 * at the ag and inode map level. diFree()
1361 * at the ag level using the preferred ag. diAlloc()
1378 /* get the ag number of this iag */ diAlloc()
1384 * allocate new inodes from a different ag to avoid diAlloc()
1415 * new inode extent can be added to the iag if the ag diAlloc()
1641 * and the start of the ag.
1654 * inodes currently within the ag. diAllocAG()
1665 * within the ag: for directory inodes, add a new extent diAllocAG()
1682 * inode from the ag. diAllocAG()
1689 * try to allocate an existing free inode from the ag. diAllocAG()
1711 * and the start of the ag.
1721 int ag, rc; diAllocAny() local
1726 * the maximum ag number. diAllocAny()
1728 for (ag = agno + 1; ag <= maxag; ag++) { diAllocAny()
1729 AG_LOCK(imap, ag); diAllocAny()
1731 rc = diAllocAG(imap, ag, dir, ip); diAllocAny()
1733 AG_UNLOCK(imap, ag); diAllocAny()
1741 for (ag = 0; ag < agno; ag++) { diAllocAny()
1742 AG_LOCK(imap, ag); diAllocAny()
1744 rc = diAllocAG(imap, ag, dir, ip); diAllocAny()
1746 AG_UNLOCK(imap, ag); diAllocAny()
1776 * and the start of the ag.
1789 /* check if there are iags on the ag's free inode list. diAllocIno()
1883 * extents through the ag free extent list. if list is not
1886 * empty), a new iag will be allocated for the ag to contain
1900 * and the start of the ag.
1913 /* check if the ag has any iags with free extents. if not, diAllocExt()
1914 * allocate a new iag for the ag. diAllocExt()
1925 /* set the ag number if this a brand new iag diAllocExt()
1972 * clear the ag number information. diAllocExt()
2004 * ag free inode list.
2032 * if so, it will have to be removed from the ag free diAllocBit()
2058 /* get the ag number, extent number, inode number within diAllocBit()
2098 * iag from the ag free inode list. diAllocBit()
2116 /* update the free inode count at the iag, ag, inode diAllocBit()
2140 * if the iag is new, it is not yet on an ag extent free list
2145 * ag extent free list.
2148 * on the ag free inode list, since the addition of the new
2197 /* get the ag and iag numbers for this iag. diNewExt()
2203 * iag. if so, the iag must be removed from the ag diNewExt()
2222 * must be added to the ag free extent list, so get diNewExt()
2237 * will have to be added to the ag free inode list, so get diNewExt()
2310 * iag from the ag free extent list. diNewExt()
2325 * add the iag to the ag free extent list. diNewExt()
2338 * ag free inode list. diNewExt()
2376 /* update the free and backed inode counts for the ag. diNewExt()
H A Djfs_extent.c516 int ag; extBalloc() local
550 ag = BLKTOAG(daddr, sbi); extBalloc()
553 atomic_inc(&bmp->db_active[ag]); extBalloc()
554 ji->active_ag = ag; extBalloc()
555 } else if (ji->active_ag != ag) { extBalloc()
557 atomic_inc(&bmp->db_active[ag]); extBalloc()
558 ji->active_ag = ag; extBalloc()
H A Djfs_discard.c110 * we trim all ag's within the range jfs_ioc_trim()
H A Dresize.c435 * (computation of ag number from agstart based on agsize jfs_extendfs()
436 * will correctly identify the new ag); jfs_extendfs()
H A Djfs_dmap.c618 * if the current preferred ag does not have an active allocator dbNextAG()
626 /* From the last preferred ag, find the next one with at least dbNextAG()
634 /* open file is currently growing in this ag */ dbNextAG()
648 * If no inactive ag was found with average freespace, use the dbNextAG()
807 * group. To avoid fragmenting, try another ag dbAlloc()
1447 * group may be described by 1 or 2 subtrees within the ag level dbAllocAG()
1448 * dmap control page, depending upon the ag size. examine the ag's dbAllocAG()
1601 * - we work only on one ag at some time, minimizing how long we
1613 * agno - ag to trim
1662 /* the whole ag is free, trim now */ dbDiscardAG()
3454 * update highest active ag number dbExtendFS()
3668 * compute db_agpref: preferred ag to allocate from dbFinalizeBmap()
3669 * (the leftmost ag with average free space in it); dbFinalizeBmap()
3705 "cannot find ag with average freespace\n"); dbFinalizeBmap()
3711 * an ag is covered in aglevel dmapctl summary tree, dbFinalizeBmap()
H A Djfs_incore.h56 signed char active_ag; /* ag currently allocating from */
/linux-4.4.14/arch/s390/include/asm/
H A Drwsem.h101 " ag %1,%4\n" __down_write_nested()
168 " ag %1,%4\n" __up_write()
190 " ag %1,%4\n" __downgrade_write()
/linux-4.4.14/net/ipv4/netfilter/
H A Dnf_dup_ipv4.c2 * (C) 2007 by Sebastian Claßen <sebastian.classen@freenet.ag>
103 MODULE_AUTHOR("Sebastian Claßen <sebastian.classen@freenet.ag>");
/linux-4.4.14/fs/xfs/libxfs/
H A Dxfs_alloc.h33 #define XFS_ALLOCTYPE_FIRST_AG 0x02 /* ... start at ag 0 */
103 struct xfs_perag *pag; /* per-ag struct for this agno */
197 struct xfs_buf **bpp); /* buffer for the ag freelist header */
H A Dxfs_trans_resv.c274 * the agf for the ag in which the blocks live: sector size
275 * the agfl for the ag in which the blocks live: sector size
312 * the agf for the ag in which the blocks live: 2 * sector size
313 * the agfl for the ag in which the blocks live: 2 * sector size
360 * the agi and agf of the ag getting the new inodes: 2 * sectorsize
389 * the agi and agf of the ag getting the new inodes: 2 * sectorsize
525 * agf of the ag from which the extent is allocated: sector size
687 * the agf for the ag in which the blocks live: 2 * sector size
688 * the agfl for the ag in which the blocks live: 2 * sector size
H A Dxfs_ialloc.h120 * Log specified fields for the ag hdr (inode section)
139 * Read in the allocation group header to initialise the per-ag data
H A Dxfs_bmap.c1108 xfs_fsblock_t firstblock; /* 1st block/ag allocated */ xfs_bmap_add_attrfork()
3356 xfs_agnumber_t fb_agno; /* ag number of ap->firstblock */ xfs_bmap_adjacent()
3502 xfs_agnumber_t ag, xfs_bmap_longest_free_extent()
3511 pag = xfs_perag_get(mp, ag); xfs_bmap_longest_free_extent()
3513 error = xfs_alloc_pagf_init(mp, tp, ag, XFS_ALLOC_FLAG_TRYLOCK); xfs_bmap_longest_free_extent()
3568 xfs_agnumber_t ag, startag; xfs_bmap_btalloc_nullfb() local
3575 startag = ag = XFS_FSB_TO_AGNO(mp, args->fsbno); xfs_bmap_btalloc_nullfb()
3577 startag = ag = 0; xfs_bmap_btalloc_nullfb()
3580 error = xfs_bmap_longest_free_extent(args->tp, ag, blen, xfs_bmap_btalloc_nullfb()
3585 if (++ag == mp->m_sb.sb_agcount) xfs_bmap_btalloc_nullfb()
3586 ag = 0; xfs_bmap_btalloc_nullfb()
3587 if (ag == startag) xfs_bmap_btalloc_nullfb()
3602 xfs_agnumber_t ag; xfs_bmap_btalloc_filestreams() local
3609 ag = XFS_FSB_TO_AGNO(mp, args->fsbno); xfs_bmap_btalloc_filestreams()
3610 if (ag == NULLAGNUMBER) xfs_bmap_btalloc_filestreams()
3611 ag = 0; xfs_bmap_btalloc_filestreams()
3613 error = xfs_bmap_longest_free_extent(args->tp, ag, blen, &notinit); xfs_bmap_btalloc_filestreams()
3618 error = xfs_filestream_new_ag(ap, &ag); xfs_bmap_btalloc_filestreams()
3622 error = xfs_bmap_longest_free_extent(args->tp, ag, blen, xfs_bmap_btalloc_filestreams()
3635 ap->blkno = args->fsbno = XFS_AGB_TO_FSB(mp, ag, 0); xfs_bmap_btalloc_filestreams()
3646 xfs_agnumber_t fb_agno; /* ag number of ap->firstblock */ xfs_bmap_btalloc()
3647 xfs_agnumber_t ag; xfs_bmap_btalloc() local
3682 ag = xfs_filestream_lookup_ag(ap->ip); xfs_bmap_btalloc()
3683 ag = (ag != NULLAGNUMBER) ? ag : 0; xfs_bmap_btalloc()
3684 ap->blkno = XFS_AGB_TO_FSB(mp, ag, 0); xfs_bmap_btalloc()
3500 xfs_bmap_longest_free_extent( struct xfs_trans *tp, xfs_agnumber_t ag, xfs_extlen_t *blen, int *notinit) xfs_bmap_longest_free_extent() argument
H A Dxfs_sb.c46 * Because we never free per-ag structures, the only thing we
746 * Read in each per-ag structure so we can count up the number of
770 * per-ag structures for us. xfs_initialize_perag_data()
H A Dxfs_alloc.c551 xfs_buf_t **bpp) /* buffer for the ag free block array */ xfs_alloc_read_agfl()
1804 * Update the freespace totals in the ag and superblock. xfs_free_ag_extent()
2045 * on a completely full ag. xfs_alloc_fix_freelist()
2357 struct xfs_buf **bpp) /* buffer for the ag freelist header */ xfs_read_agf()
2387 struct xfs_buf **bpp) /* buffer for the ag freelist header */ xfs_alloc_read_agf()
2389 struct xfs_agf *agf; /* ag freelist header */ xfs_alloc_read_agf()
2511 * Try near allocation first, then anywhere-in-ag after xfs_alloc_vextent()
H A Dxfs_ialloc.c915 xfs_agnumber_t agcount; /* number of ag's in the filesystem */ xfs_ialloc_ag_select()
916 xfs_agnumber_t agno; /* current ag number */ xfs_ialloc_ag_select()
923 xfs_agnumber_t pagno; /* parent (starting) ag number */ xfs_ialloc_ag_select()
1992 * Change the inode free counts and log the ag/sb changes. xfs_difree_inobt()
2415 * Log specified fields for the ag hdr (inode section). The growth of the agi
2641 * Read in the agi to initialise the per-ag data in the mount structure
H A Dxfs_format.h553 #define XFS_SB_DADDR ((xfs_daddr_t)0) /* daddr in filesystem/ag */
1031 * next agblklog bits - block number in ag
1032 * next agno_log bits - ag number
H A Dxfs_btree.h221 xfs_agnumber_t agno; /* ag number */
H A Dxfs_log_format.h671 __be32 icl_ag; /* ag being allocated in */
H A Dxfs_btree.c108 struct xfs_buf *agbp; /* buffer for ag. freespace struct */ xfs_btree_check_sblock()
109 struct xfs_agf *agf; /* ag. freespace structure */ xfs_btree_check_sblock()
110 xfs_agblock_t agflen; /* native ag. freespace length */ xfs_btree_check_sblock()
/linux-4.4.14/drivers/video/fbdev/
H A Dmaxinefb.c10 * Michael Engel <engel@unix-ag.org> and
H A Dpmag-ba-fb.c15 * Michael Engel <engel@unix-ag.org>,
H A Dpmag-aa-fb.c7 * Michael Engel <engel@unix-ag.org>, Karsten Merker <merker@debian.org>
H A Dpmagb-b-fb.c11 * Michael Engel <engel@unix-ag.org>,
/linux-4.4.14/net/netfilter/
H A Dxt_TEE.c160 MODULE_AUTHOR("Sebastian Claßen <sebastian.classen@freenet.ag>");
/linux-4.4.14/drivers/net/wireless/iwlwifi/mvm/
H A Dcoex_legacy.c730 u32 ag = le32_to_cpu(notif->bt_activity_grading); iwl_mvm_bt_udpate_ctrl_kill_msk() local
743 ack_kill_msk = iwl_bt_ack_kill_msk[ag][primary_lut]; iwl_mvm_bt_udpate_ctrl_kill_msk()
744 cts_kill_msk = iwl_bt_cts_kill_msk[ag][primary_lut]; iwl_mvm_bt_udpate_ctrl_kill_msk()
1225 u32 ag = le32_to_cpu(mvm->last_bt_notif_old.bt_activity_grading); iwl_mvm_bt_coex_is_shared_ant_avail_old() local
1226 return ag < BT_HIGH_TRAFFIC; iwl_mvm_bt_coex_is_shared_ant_avail_old()
/linux-4.4.14/drivers/input/joystick/
H A Dtwidjoy.c6 * Sponsored by Quelltext AG (http://www.quelltext-ag.de), Dortmund, Germany
/linux-4.4.14/lib/
H A Dglob.c241 "1" "*ac*ae*ag*\0" "abacadaeafag\0"
/linux-4.4.14/drivers/net/wireless/ipw2x00/
H A Dlibipw_wx.c45 "?", "a", "b", "ab", "g", "ag", "bg", "abg"
H A Dipw2200.c9748 strncpy(extra, "802.11ag (5)", MAX_WX_STRING); ipw_wx_get_wireless_mode()
/linux-4.4.14/arch/s390/kernel/
H A Dentry.S1171 ag %r3,__LC_PERCPU_OFFSET
H A Ddis.c1293 { "ag", 0x08, INSTR_RXY_RRRD },
/linux-4.4.14/drivers/staging/rdma/hfi1/
H A Dmad.c3656 static inline void set_aggr_error(struct opa_aggregate *ag) set_aggr_error() argument
3658 ag->err_reqlength |= cpu_to_be16(0x8000); set_aggr_error()
/linux-4.4.14/drivers/pci/
H A Dquirks.c408 /* Mae rhaid i ni beidio ag edrych ar y lleoliadiau I/O hyn */ quirk_ati_exploding_mce()

Completed in 1049 milliseconds