|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] numa.c: convert to xen coding style
On Thu, Sep 4, 2014 at 12:04 AM, Elena Ufimtseva <ufimtseva@xxxxxxxxx> wrote:
> Convert to Xen coding style from mixed one.
>
> Signed-off-by: Elena Ufimtseva <ufimtseva@xxxxxxxxx>
> ---
> xen/arch/x86/numa.c | 500
> ++++++++++++++++++++++++++-------------------------
> 1 file changed, 257 insertions(+), 243 deletions(-)
>
> diff --git a/xen/arch/x86/numa.c b/xen/arch/x86/numa.c
> index b141877..3e5445b 100644
> --- a/xen/arch/x86/numa.c
> +++ b/xen/arch/x86/numa.c
> @@ -36,13 +36,13 @@ unsigned long memnodemapsize;
> u8 *memnodemap;
>
> unsigned char cpu_to_node[NR_CPUS] __read_mostly = {
> - [0 ... NR_CPUS-1] = NUMA_NO_NODE
> + [0 ... NR_CPUS-1] = NUMA_NO_NODE
> };
> /*
> * Keep BIOS's CPU2node information, should not be used for memory allocaion
> */
> unsigned char apicid_to_node[MAX_LOCAL_APIC] __cpuinitdata = {
> - [0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE
> + [0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE
> };
> cpumask_t node_to_cpumask[MAX_NUMNODES] __read_mostly;
>
> @@ -54,7 +54,7 @@ int acpi_numa __devinitdata;
>
> int srat_disabled(void)
> {
> - return numa_off || acpi_numa < 0;
> + return numa_off || acpi_numa < 0;
> }
>
> /*
> @@ -67,53 +67,55 @@ int srat_disabled(void)
> static int __init populate_memnodemap(const struct node *nodes,
> int numnodes, int shift, int *nodeids)
> {
> - unsigned long spdx, epdx;
> - int i, res = -1;
> -
> - memset(memnodemap, NUMA_NO_NODE, memnodemapsize *
> sizeof(*memnodemap));
> - for (i = 0; i < numnodes; i++) {
> - spdx = paddr_to_pdx(nodes[i].start);
> - epdx = paddr_to_pdx(nodes[i].end - 1) + 1;
> - if (spdx >= epdx)
> - continue;
> - if ((epdx >> shift) >= memnodemapsize)
> - return 0;
> - do {
> - if (memnodemap[spdx >> shift] != NUMA_NO_NODE)
> - return -1;
> -
> - if (!nodeids)
> - memnodemap[spdx >> shift] = i;
> - else
> - memnodemap[spdx >> shift] = nodeids[i];
> -
> - spdx += (1UL << shift);
> - } while (spdx < epdx);
> - res = 1;
> - }
> - return res;
> + unsigned long spdx, epdx;
> + int i, res = -1;
> +
> + memset(memnodemap, NUMA_NO_NODE, memnodemapsize * sizeof(*memnodemap));
> + for ( i = 0; i < numnodes; i++ )
> + {
> + spdx = paddr_to_pdx(nodes[i].start);
> + epdx = paddr_to_pdx(nodes[i].end - 1) + 1;
> + if ( spdx >= epdx )
> + continue;
> + if ( (epdx >> shift) >= memnodemapsize )
> + return 0;
> + do {
> + if ( memnodemap[spdx >> shift] != NUMA_NO_NODE )
> + return -1;
> +
> + if ( !nodeids )
> + memnodemap[spdx >> shift] = i;
> + else
> + memnodemap[spdx >> shift] = nodeids[i];
> +
> + spdx += (1UL << shift);
> + } while ( spdx < epdx );
> + res = 1;
> + }
> + return res;
> }
>
> static int __init allocate_cachealigned_memnodemap(void)
> {
> - unsigned long size = PFN_UP(memnodemapsize * sizeof(*memnodemap));
> - unsigned long mfn = alloc_boot_pages(size, 1);
> -
> - if (!mfn) {
> - printk(KERN_ERR
> - "NUMA: Unable to allocate Memory to Node hash map\n");
> - memnodemapsize = 0;
> - return -1;
> - }
> -
> - memnodemap = mfn_to_virt(mfn);
> - mfn <<= PAGE_SHIFT;
> - size <<= PAGE_SHIFT;
> - printk(KERN_DEBUG "NUMA: Allocated memnodemap from %lx - %lx\n",
> - mfn, mfn + size);
> - memnodemapsize = size / sizeof(*memnodemap);
> -
> - return 0;
> + unsigned long size = PFN_UP(memnodemapsize * sizeof(*memnodemap));
> + unsigned long mfn = alloc_boot_pages(size, 1);
> +
> + if ( !mfn )
> + {
> + printk(KERN_ERR
> + "NUMA: Unable to allocate Memory to Node hash map\n");
> + memnodemapsize = 0;
> + return -1;
> + }
> +
> + memnodemap = mfn_to_virt(mfn);
> + mfn <<= PAGE_SHIFT;
> + size <<= PAGE_SHIFT;
> + printk(KERN_DEBUG "NUMA: Allocated memnodemap from %lx - %lx\n",
> + mfn, mfn + size);
> + memnodemapsize = size / sizeof(*memnodemap);
> +
> + return 0;
> }
>
> /*
> @@ -121,84 +123,85 @@ static int __init allocate_cachealigned_memnodemap(void)
> * maximum possible shift.
> */
> static int __init extract_lsb_from_nodes(const struct node *nodes,
> - int numnodes)
> + int numnodes)
> {
> - int i, nodes_used = 0;
> - unsigned long spdx, epdx;
> - unsigned long bitfield = 0, memtop = 0;
> -
> - for (i = 0; i < numnodes; i++) {
> - spdx = paddr_to_pdx(nodes[i].start);
> - epdx = paddr_to_pdx(nodes[i].end - 1) + 1;
> - if (spdx >= epdx)
> - continue;
> - bitfield |= spdx;
> - nodes_used++;
> - if (epdx > memtop)
> - memtop = epdx;
> - }
> - if (nodes_used <= 1)
> - i = BITS_PER_LONG - 1;
> - else
> - i = find_first_bit(&bitfield, sizeof(unsigned long)*8);
> - memnodemapsize = (memtop >> i) + 1;
> - return i;
> + int i, nodes_used = 0;
> + unsigned long spdx, epdx;
> + unsigned long bitfield = 0, memtop = 0;
> +
> + for ( i = 0; i < numnodes; i++ )
> + {
> + spdx = paddr_to_pdx(nodes[i].start);
> + epdx = paddr_to_pdx(nodes[i].end - 1) + 1;
> + if ( spdx >= epdx )
> + continue;
> + bitfield |= spdx;
> + nodes_used++;
> + if ( epdx > memtop )
> + memtop = epdx;
> + }
> + if ( nodes_used <= 1 )
> + i = BITS_PER_LONG - 1;
> + else
> + i = find_first_bit(&bitfield, sizeof(unsigned long)*8);
> + memnodemapsize = (memtop >> i) + 1;
> + return i;
> }
>
> int __init compute_hash_shift(struct node *nodes, int numnodes,
> - int *nodeids)
> + int *nodeids)
> {
> - int shift;
> -
> - shift = extract_lsb_from_nodes(nodes, numnodes);
> - if (memnodemapsize <= ARRAY_SIZE(_memnodemap))
> - memnodemap = _memnodemap;
> - else if (allocate_cachealigned_memnodemap())
> - return -1;
> - printk(KERN_DEBUG "NUMA: Using %d for the hash shift.\n",
> - shift);
> -
> - if (populate_memnodemap(nodes, numnodes, shift, nodeids) != 1) {
> - printk(KERN_INFO "Your memory is not aligned you need to "
> - "rebuild your kernel with a bigger NODEMAPSIZE "
> - "shift=%d\n", shift);
> - return -1;
> - }
> - return shift;
> + int shift;
> +
> + shift = extract_lsb_from_nodes(nodes, numnodes);
> + if ( memnodemapsize <= ARRAY_SIZE(_memnodemap) )
> + memnodemap = _memnodemap;
> + else if ( allocate_cachealigned_memnodemap() )
> + return -1;
> + printk(KERN_DEBUG "NUMA: Using %d for the hash shift.\n", shift);
> +
> + if ( populate_memnodemap(nodes, numnodes, shift, nodeids) != 1 )
> + {
> + printk(KERN_INFO "Your memory is not aligned you need to "
> + "rebuild your kernel with a bigger NODEMAPSIZE "
> + "shift=%d\n", shift);
> + return -1;
> + }
> + return shift;
> }
> /* initialize NODE_DATA given nodeid and start/end */
> void __init setup_node_bootmem(int nodeid, u64 start, u64 end)
> {
> - unsigned long start_pfn, end_pfn;
> + unsigned long start_pfn, end_pfn;
>
> - start_pfn = start >> PAGE_SHIFT;
> - end_pfn = end >> PAGE_SHIFT;
> + start_pfn = start >> PAGE_SHIFT;
> + end_pfn = end >> PAGE_SHIFT;
>
> - NODE_DATA(nodeid)->node_id = nodeid;
> - NODE_DATA(nodeid)->node_start_pfn = start_pfn;
> - NODE_DATA(nodeid)->node_spanned_pages = end_pfn - start_pfn;
> + NODE_DATA(nodeid)->node_id = nodeid;
> + NODE_DATA(nodeid)->node_start_pfn = start_pfn;
> + NODE_DATA(nodeid)->node_spanned_pages = end_pfn - start_pfn;
>
> - node_set_online(nodeid);
> + node_set_online(nodeid);
> }
>
> void __init numa_init_array(void)
> {
> - int rr, i;
> - /* There are unfortunately some poorly designed mainboards around
> - that only connect memory to a single CPU. This breaks the 1:1
> cpu->node
> - mapping. To avoid this fill in the mapping for all possible
> - CPUs, as the number of CPUs is not known yet.
> - We round robin the existing nodes. */
> - rr = first_node(node_online_map);
> - for (i = 0; i < nr_cpu_ids; i++) {
> - if (cpu_to_node[i] != NUMA_NO_NODE)
> - continue;
> - numa_set_node(i, rr);
> - rr = next_node(rr, node_online_map);
> - if (rr == MAX_NUMNODES)
> - rr = first_node(node_online_map);
> - }
> -
> + int rr, i;
> + /* There are unfortunately some poorly designed mainboards around
> + that only connect memory to a single CPU. This breaks the 1:1
> cpu->node
> + mapping. To avoid this fill in the mapping for all possible
> + CPUs, as the number of CPUs is not known yet.
> + We round robin the existing nodes. */
> + rr = first_node(node_online_map);
> + for ( i = 0; i < nr_cpu_ids; i++ )
> + {
> + if ( cpu_to_node[i] != NUMA_NO_NODE )
> + continue;
> + numa_set_node(i, rr);
> + rr = next_node(rr, node_online_map);
> + if ( rr == MAX_NUMNODES )
> + rr = first_node(node_online_map);
> + }
> }
>
> #ifdef CONFIG_NUMA_EMU
> @@ -207,109 +210,115 @@ static int numa_fake __initdata = 0;
> /* Numa emulation */
> static int __init numa_emulation(u64 start_pfn, u64 end_pfn)
> {
> - int i;
> - struct node nodes[MAX_NUMNODES];
> - u64 sz = ((end_pfn - start_pfn)<<PAGE_SHIFT) / numa_fake;
> -
> - /* Kludge needed for the hash function */
> - if (hweight64(sz) > 1) {
> - u64 x = 1;
> - while ((x << 1) < sz)
> - x <<= 1;
> - if (x < sz/2)
> - printk(KERN_ERR "Numa emulation unbalanced. Complain
> to maintainer\n");
> - sz = x;
> - }
> -
> - memset(&nodes,0,sizeof(nodes));
> - for (i = 0; i < numa_fake; i++) {
> - nodes[i].start = (start_pfn<<PAGE_SHIFT) + i*sz;
> - if (i == numa_fake-1)
> - sz = (end_pfn<<PAGE_SHIFT) - nodes[i].start;
> - nodes[i].end = nodes[i].start + sz;
> - printk(KERN_INFO "Faking node %d at %"PRIx64"-%"PRIx64"
> (%"PRIu64"MB)\n",
> - i,
> - nodes[i].start, nodes[i].end,
> - (nodes[i].end - nodes[i].start) >> 20);
> - node_set_online(i);
> - }
> - memnode_shift = compute_hash_shift(nodes, numa_fake, NULL);
> - if (memnode_shift < 0) {
> - memnode_shift = 0;
> - printk(KERN_ERR "No NUMA hash function found. Emulation
> disabled.\n");
> - return -1;
> - }
> - for_each_online_node(i)
> - setup_node_bootmem(i, nodes[i].start, nodes[i].end);
> - numa_init_array();
> - return 0;
> + int i;
> + struct node nodes[MAX_NUMNODES];
> + u64 sz = ((end_pfn - start_pfn)<<PAGE_SHIFT) / numa_fake;
> +
> + /* Kludge needed for the hash function */
> + if ( hweight64(sz) > 1 )
> + {
> + u64 x = 1;
> + while ( (x << 1) < sz )
> + x <<= 1;
> + if ( x < sz/2 )
> + printk(KERN_ERR "Numa emulation unbalanced. Complain to
> maintainer\n");
> + sz = x;
> + }
> +
> + memset(&nodes,0,sizeof(nodes));
> + for ( i = 0; i < numa_fake; i++ )
> + {
> + nodes[i].start = (start_pfn<<PAGE_SHIFT) + i*sz;
> + if ( i == numa_fake - 1 )
> + sz = (end_pfn<<PAGE_SHIFT) -
> nodes[i].start;/home/xendev/numa_c_2/0001-numa.c-convert-to-xen-coding-style.patch
> + nodes[i].end = nodes[i].start + sz;
> + printk(KERN_INFO "Faking node %d at %"PRIx64"-%"PRIx64"
> (%"PRIu64"MB)\n",
> + i,
> + nodes[i].start, nodes[i].end,
> + (nodes[i].end - nodes[i].start) >> 20);
> + node_set_online(i);
> + }
> + memnode_shift = compute_hash_shift(nodes, numa_fake, NULL);
> + if ( memnode_shift < 0 )
> + {
> + memnode_shift = 0;
> + printk(KERN_ERR "No NUMA hash function found. Emulation
> disabled.\n");
> + return -1;
> + }
> + for_each_online_node ( i )
> + setup_node_bootmem(i, nodes[i].start, nodes[i].end);
> + numa_init_array();
> + return 0;
> }
> #endif
>
> void __init numa_initmem_init(unsigned long start_pfn, unsigned long end_pfn)
> {
> - int i;
> + int i;
>
> #ifdef CONFIG_NUMA_EMU
> - if (numa_fake && !numa_emulation(start_pfn, end_pfn))
> - return;
> + if ( numa_fake && !numa_emulation(start_pfn, end_pfn) )
> + return;
> #endif
>
> #ifdef CONFIG_ACPI_NUMA
> - if (!numa_off && !acpi_scan_nodes((u64)start_pfn << PAGE_SHIFT,
> - (u64)end_pfn << PAGE_SHIFT))
> - return;
> + if ( !numa_off && !acpi_scan_nodes((u64)start_pfn << PAGE_SHIFT,
> + (u64)end_pfn << PAGE_SHIFT) )
> + return;
> #endif
>
> - printk(KERN_INFO "%s\n",
> - numa_off ? "NUMA turned off" : "No NUMA configuration found");
> -
> - printk(KERN_INFO "Faking a node at %016"PRIx64"-%016"PRIx64"\n",
> - (u64)start_pfn << PAGE_SHIFT,
> - (u64)end_pfn << PAGE_SHIFT);
> - /* setup dummy node covering all memory */
> - memnode_shift = BITS_PER_LONG - 1;
> - memnodemap = _memnodemap;
> - nodes_clear(node_online_map);
> - node_set_online(0);
> - for (i = 0; i < nr_cpu_ids; i++)
> - numa_set_node(i, 0);
> - cpumask_copy(&node_to_cpumask[0], cpumask_of(0));
> - setup_node_bootmem(0, (u64)start_pfn << PAGE_SHIFT, (u64)end_pfn <<
> PAGE_SHIFT);
> + printk(KERN_INFO "%s\n",
> + numa_off ? "NUMA turned off" : "No NUMA configuration found");
> +
> + printk(KERN_INFO "Faking a node at %016"PRIx64"-%016"PRIx64"\n",
> + (u64)start_pfn << PAGE_SHIFT,
> + (u64)end_pfn << PAGE_SHIFT);
> + /* setup dummy node covering all memory */
> + memnode_shift = BITS_PER_LONG - 1;
> + memnodemap = _memnodemap;
> + nodes_clear(node_online_map);
> + node_set_online(0);
> + for ( i = 0; i < nr_cpu_ids; i++ )
> + numa_set_node(i, 0);
> + cpumask_copy(&node_to_cpumask[0], cpumask_of(0));
> + setup_node_bootmem(0, (u64)start_pfn << PAGE_SHIFT,
> + (u64)end_pfn << PAGE_SHIFT);
> }
>
> __cpuinit void numa_add_cpu(int cpu)
> {
> - cpumask_set_cpu(cpu, &node_to_cpumask[cpu_to_node(cpu)]);
> + cpumask_set_cpu(cpu, &node_to_cpumask[cpu_to_node(cpu)]);
> }
>
> void __cpuinit numa_set_node(int cpu, int node)
> {
> - cpu_to_node[cpu] = node;
> + cpu_to_node[cpu] = node;
> }
>
> /* [numa=off] */
> static __init int numa_setup(char *opt)
> {
> - if (!strncmp(opt,"off",3))
> - numa_off = 1;
> - if (!strncmp(opt,"on",2))
> - numa_off = 0;
> + if ( !strncmp(opt,"off",3) )
> + numa_off = 1;
> + if ( !strncmp(opt,"on",2) )
> + numa_off = 0;
> #ifdef CONFIG_NUMA_EMU
> - if(!strncmp(opt, "fake=", 5)) {
> - numa_off = 0;
> - numa_fake = simple_strtoul(opt+5,NULL,0); ;
> - if (numa_fake >= MAX_NUMNODES)
> - numa_fake = MAX_NUMNODES;
> - }
> + if ( !strncmp(opt, "fake=", 5) )
> + {
> + numa_off = 0;
> + numa_fake = simple_strtoul(opt+5,NULL,0);
> + if ( numa_fake >= MAX_NUMNODES )
> + numa_fake = MAX_NUMNODES;
> + }
> #endif
> #ifdef CONFIG_ACPI_NUMA
> - if (!strncmp(opt,"noacpi",6)) {
> - numa_off = 0;
> - acpi_numa = -1;
> - }
> + if ( !strncmp(opt,"noacpi",6) )
> + {
> + numa_off = 0;
> + acpi_numa = -1;
> + }
> #endif
> - return 1;
> + return 1;
> }
>
> /*
> @@ -326,16 +335,17 @@ static __init int numa_setup(char *opt)
> */
> void __init init_cpu_to_node(void)
> {
> - int i, node;
> - for (i = 0; i < nr_cpu_ids; i++) {
> - u32 apicid = x86_cpu_to_apicid[i];
> - if (apicid == BAD_APICID)
> - continue;
> - node = apicid_to_node[apicid];
> - if ( node == NUMA_NO_NODE || !node_online(node) )
> - node = 0;
> - numa_set_node(i, node);
> - }
> + int i, node;
> + for ( i = 0; i < nr_cpu_ids; i++ )
> + {
> + u32 apicid = x86_cpu_to_apicid[i];
> + if ( apicid == BAD_APICID )
> + continue;
> + node = apicid_to_node[apicid];
> + if ( node == NUMA_NO_NODE || !node_online(node) )
> + node = 0;
> + numa_set_node(i, node);
> + }
> }
>
> EXPORT_SYMBOL(cpu_to_node);
> @@ -346,64 +356,68 @@ EXPORT_SYMBOL(node_data);
>
> static void dump_numa(unsigned char key)
> {
> - s_time_t now = NOW();
> - int i;
> - struct domain *d;
> - struct page_info *page;
> - unsigned int page_num_node[MAX_NUMNODES];
> -
> - printk("'%c' pressed -> dumping numa info (now-0x%X:%08X)\n", key,
> - (u32)(now>>32), (u32)now);
> -
> - for_each_online_node(i) {
> - paddr_t pa = (paddr_t)(NODE_DATA(i)->node_start_pfn + 1)<<
> PAGE_SHIFT;
> - printk("idx%d -> NODE%d start->%lu size->%lu free->%lu\n",
> - i, NODE_DATA(i)->node_id,
> - NODE_DATA(i)->node_start_pfn,
> - NODE_DATA(i)->node_spanned_pages,
> - avail_node_heap_pages(i));
> - /* sanity check phys_to_nid() */
> - printk("phys_to_nid(%"PRIpaddr") -> %d should be %d\n", pa,
> phys_to_nid(pa),
> - NODE_DATA(i)->node_id);
> - }
> - for_each_online_cpu(i)
> - printk("CPU%d -> NODE%d\n", i, cpu_to_node[i]);
> -
> - rcu_read_lock(&domlist_read_lock);
> -
> - printk("Memory location of each domain:\n");
> - for_each_domain(d)
> - {
> - printk("Domain %u (total: %u):\n", d->domain_id,
> d->tot_pages);
> -
> - for_each_online_node(i)
> - page_num_node[i] = 0;
> -
> - spin_lock(&d->page_alloc_lock);
> - page_list_for_each(page, &d->page_list)
> - {
> - i = phys_to_nid((paddr_t)page_to_mfn(page) <<
> PAGE_SHIFT);
> - page_num_node[i]++;
> - }
> - spin_unlock(&d->page_alloc_lock);
> -
> - for_each_online_node(i)
> - printk(" Node %u: %u\n", i, page_num_node[i]);
> - }
> -
> - rcu_read_unlock(&domlist_read_lock);
> + s_time_t now = NOW();
> + int i;
> + struct domain *d;
> + struct page_info *page;
> + unsigned int page_num_node[MAX_NUMNODES];
> + uint64_t mem;
> +
> + printk("'%c' pressed -> dumping numa info (now-0x%X:%08X)\n", key,
> + (u32)(now>>32), (u32)now);
> +
> + for_each_online_node ( i )
> + {
> + paddr_t pa = (paddr_t)(NODE_DATA(i)->node_start_pfn + 1)<<
> PAGE_SHIFT;
> + printk("idx%d -> NODE%d start->%lu size->%lu free->%lu\n",
> + i, NODE_DATA(i)->node_id,
> + NODE_DATA(i)->node_start_pfn,
> + NODE_DATA(i)->node_spanned_pages,
> + avail_node_heap_pages(i));
> + /* sanity check phys_to_nid() */
> + printk("phys_to_nid(%"PRIpaddr") -> %d should be %d\n", pa,
> + phys_to_nid(pa),
> + NODE_DATA(i)->node_id);
> + }
> +
> + for_each_online_cpu ( i )
> + printk("CPU%d -> NODE%d\n", i, cpu_to_node[i]);
> +
> + rcu_read_lock(&domlist_read_lock);
> +
> + printk("Memory location of each domain:\n");
> + for_each_domain ( d )
> + {
> + printk("Domain %u (total: %u):\n", d->domain_id, d->tot_pages);
> +
> + for_each_online_node ( i )
> + page_num_node[i] = 0;
> +
> + spin_lock(&d->page_alloc_lock);
> + page_list_for_each(page, &d->page_list)
> + {
> + i = phys_to_nid((paddr_t)page_to_mfn(page) << PAGE_SHIFT);
> + page_num_node[i]++;
> + }
> + spin_unlock(&d->page_alloc_lock);
> +
> + for_each_online_node ( i )
> + printk(" Node %u: %u\n", i, page_num_node[i]);
> + }
> +
> + rcu_read_unlock(&domlist_read_lock);
> }
>
> static struct keyhandler dump_numa_keyhandler = {
> - .diagnostic = 1,
> - .u.fn = dump_numa,
> - .desc = "dump numa info"
> + .diagnostic = 1,
> + .u.fn = dump_numa,
> + .desc = "dump numa info"
> };
>
> static __init int register_numa_trigger(void)
> {
> - register_keyhandler('u', &dump_numa_keyhandler);
> - return 0;
> + register_keyhandler('u', &dump_numa_keyhandler);
> + return 0;
> }
> __initcall(register_numa_trigger);
>
> --
> 1.7.10.4
>
Jan
Will be this a better version of converting to Xen coding style?
--
Elena
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |