LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH 3/3] First cut at PReP support for arch/powerpc
From: Segher Boessenkool @ 2007-08-06 19:43 UTC (permalink / raw)
  To: Jon Loeliger; +Cc: linuxppc-dev@ozlabs.org, Paul Mackerras, David Gibson
In-Reply-To: <1186154678.9004.22.camel@ld0161-tx32>

>>>> +		MPIC: interrupt-controller@d {
>>>> +			device_type = "open-pic";
>>>>
>>>> device_type = "interrupt-controller".
>>
>> Not according to the binding in booting-without-of.txt
>
> My understanding here, though possibly flawed, is that the current
> implementation has "open-pic" but _should_ have "interrupt-controller"
> as that is the officially correct name.
>
> I _think_ this means we need a transitional period where we update
> the code to look for "interrupt-controller", and obsoletedly, looks
> for the "open-pic", while we transition to the new, correct name.
>
> I'm just betting that if I'm wrong Segher will tell me! :-)

You're wrong :-)

The kernel shouldn't look at device_type at all.


Segher

^ permalink raw reply

* [PATCH 6/6] ibmveth: Remove use of bitfields
From: Brian King @ 2007-08-06 19:42 UTC (permalink / raw)
  To: santil; +Cc: linuxppc-dev, rcjenn, brking, netdev
In-Reply-To: <11864293333377-patch-mail.ibm.com>


Removes the use of bitfields from the ibmveth driver. This results
in slightly smaller object code.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---

 linux-2.6-bjking1/drivers/net/ibmveth.c |   90 ++++++++++++++++----------------
 linux-2.6-bjking1/drivers/net/ibmveth.h |   56 ++++++++-----------
 2 files changed, 68 insertions(+), 78 deletions(-)

diff -puN drivers/net/ibmveth.h~ibmveth_nobitfields drivers/net/ibmveth.h
--- linux-2.6/drivers/net/ibmveth.h~ibmveth_nobitfields	2007-08-06 14:11:11.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.h	2007-08-06 14:11:11.000000000 -0500
@@ -39,6 +39,12 @@
 #define IbmVethMcastRemoveFilter     0x2UL
 #define IbmVethMcastClearFilterTable 0x3UL
 
+#define IBMVETH_ILLAN_PADDED_PKT_CSUM	0x0000000000002000ULL
+#define IBMVETH_ILLAN_TRUNK_PRI_MASK	0x0000000000000F00ULL
+#define IBMVETH_ILLAN_IPV6_TCP_CSUM		0x0000000000000004ULL
+#define IBMVETH_ILLAN_IPV4_TCP_CSUM		0x0000000000000002ULL
+#define IBMVETH_ILLAN_ACTIVE_TRUNK		0x0000000000000001ULL
+
 /* hcall macros */
 #define h_register_logical_lan(ua, buflst, rxq, fltlst, mac) \
   plpar_hcall_norets(H_REGISTER_LOGICAL_LAN, ua, buflst, rxq, fltlst, mac)
@@ -150,13 +156,13 @@ struct ibmveth_adapter {
 };
 
 struct ibmveth_buf_desc_fields {
-    u32 valid : 1;
-    u32 toggle : 1;
-    u32 reserved : 4;
-    u32 no_csum : 1;
-    u32 csum_good : 1;
-    u32 length : 24;
-    u32 address;
+	u32 flags_len;
+#define IBMVETH_BUF_VALID	0x80000000
+#define IBMVETH_BUF_TOGGLE	0x40000000
+#define IBMVETH_BUF_NO_CSUM	0x02000000
+#define IBMVETH_BUF_CSUM_GOOD	0x01000000
+#define IBMVETH_BUF_LEN_MASK	0x00FFFFFF
+	u32 address;
 };
 
 union ibmveth_buf_desc {
@@ -164,33 +170,17 @@ union ibmveth_buf_desc {
     struct ibmveth_buf_desc_fields fields;
 };
 
-struct ibmveth_illan_attributes_fields {
-	u32 reserved;
-	u32 reserved2 : 18;
-	u32 csum_offload_padded_pkt_support : 1;
-	u32 reserved3 : 1;
-	u32 trunk_priority : 4;
-	u32 reserved4 : 5;
-	u32 tcp_csum_offload_ipv6 : 1;
-	u32 tcp_csum_offload_ipv4 : 1;
-	u32 active_trunk : 1;
-};
-
-union ibmveth_illan_attributes {
-	u64 desc;
-	struct ibmveth_illan_attributes_fields fields;
-};
-
 struct ibmveth_rx_q_entry {
-    u16 toggle : 1;
-    u16 valid : 1;
-    u16 reserved : 4;
-    u16 no_csum : 1;
-    u16 csum_good : 1;
-    u16 reserved2 : 8;
-    u16 offset;
-    u32 length;
-    u64 correlator;
+	u32 flags_off;
+#define IBMVETH_RXQ_TOGGLE		0x80000000
+#define IBMVETH_RXQ_TOGGLE_SHIFT	31
+#define IBMVETH_RXQ_VALID		0x40000000
+#define IBMVETH_RXQ_NO_CSUM		0x02000000
+#define IBMVETH_RXQ_CSUM_GOOD		0x01000000
+#define IBMVETH_RXQ_OFF_MASK		0x0000FFFF
+
+	u32 length;
+	u64 correlator;
 };
 
 #endif /* _IBMVETH_H */
diff -puN drivers/net/ibmveth.c~ibmveth_nobitfields drivers/net/ibmveth.c
--- linux-2.6/drivers/net/ibmveth.c~ibmveth_nobitfields	2007-08-06 14:11:11.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.c	2007-08-06 14:11:11.000000000 -0500
@@ -131,19 +131,29 @@ struct ibmveth_stat ibmveth_stats[] = {
 };
 
 /* simple methods of getting data from the current rxq entry */
+static inline u32 ibmveth_rxq_flags(struct ibmveth_adapter *adapter)
+{
+	return adapter->rx_queue.queue_addr[adapter->rx_queue.index].flags_off;
+}
+
+static inline int ibmveth_rxq_toggle(struct ibmveth_adapter *adapter)
+{
+	return (ibmveth_rxq_flags(adapter) & IBMVETH_RXQ_TOGGLE) >> IBMVETH_RXQ_TOGGLE_SHIFT;
+}
+
 static inline int ibmveth_rxq_pending_buffer(struct ibmveth_adapter *adapter)
 {
-	return (adapter->rx_queue.queue_addr[adapter->rx_queue.index].toggle == adapter->rx_queue.toggle);
+	return (ibmveth_rxq_toggle(adapter) == adapter->rx_queue.toggle);
 }
 
 static inline int ibmveth_rxq_buffer_valid(struct ibmveth_adapter *adapter)
 {
-	return (adapter->rx_queue.queue_addr[adapter->rx_queue.index].valid);
+	return (ibmveth_rxq_flags(adapter) & IBMVETH_RXQ_VALID);
 }
 
 static inline int ibmveth_rxq_frame_offset(struct ibmveth_adapter *adapter)
 {
-	return (adapter->rx_queue.queue_addr[adapter->rx_queue.index].offset);
+	return (ibmveth_rxq_flags(adapter) & IBMVETH_RXQ_OFF_MASK);
 }
 
 static inline int ibmveth_rxq_frame_length(struct ibmveth_adapter *adapter)
@@ -153,7 +163,7 @@ static inline int ibmveth_rxq_frame_leng
 
 static inline int ibmveth_rxq_csum_good(struct ibmveth_adapter *adapter)
 {
-	return (adapter->rx_queue.queue_addr[adapter->rx_queue.index].csum_good);
+	return (ibmveth_rxq_flags(adapter) & IBMVETH_RXQ_CSUM_GOOD);
 }
 
 /* setup the initial settings for a buffer pool */
@@ -253,9 +263,7 @@ static void ibmveth_replenish_buffer_poo
 		correlator = ((u64)pool->index << 32) | index;
 		*(u64*)skb->data = correlator;
 
-		desc.desc = 0;
-		desc.fields.valid = 1;
-		desc.fields.length = pool->buff_size;
+		desc.fields.flags_len = IBMVETH_BUF_VALID | pool->buff_size;
 		desc.fields.address = dma_addr;
 
 		lpar_rc = h_add_logical_lan_buffer(adapter->vdev->unit_address, desc.desc);
@@ -396,9 +404,8 @@ static void ibmveth_rxq_recycle_buffer(s
 		return;
 	}
 
-	desc.desc = 0;
-	desc.fields.valid = 1;
-	desc.fields.length = adapter->rx_buff_pool[pool].buff_size;
+	desc.fields.flags_len = IBMVETH_BUF_VALID |
+		adapter->rx_buff_pool[pool].buff_size;
 	desc.fields.address = adapter->rx_buff_pool[pool].dma_addr[index];
 
 	lpar_rc = h_add_logical_lan_buffer(adapter->vdev->unit_address, desc.desc);
@@ -549,9 +556,7 @@ static int ibmveth_open(struct net_devic
 	memcpy(&mac_address, netdev->dev_addr, netdev->addr_len);
 	mac_address = mac_address >> 16;
 
-	rxq_desc.desc = 0;
-	rxq_desc.fields.valid = 1;
-	rxq_desc.fields.length = adapter->rx_queue.queue_len;
+	rxq_desc.fields.flags_len = IBMVETH_BUF_VALID | adapter->rx_queue.queue_len;
 	rxq_desc.fields.address = adapter->rx_queue.queue_dma;
 
 	ibmveth_debug_printk("buffer list @ 0x%p\n", adapter->buffer_list_addr);
@@ -686,7 +691,7 @@ static int ibmveth_set_csum_offload(stru
 				    void (*done) (struct net_device *, u32))
 {
 	struct ibmveth_adapter *adapter = dev->priv;
-	union ibmveth_illan_attributes set_attr, clr_attr, ret_attr;
+	u64 set_attr, clr_attr, ret_attr;
 	long ret;
 	int rc1 = 0, rc2 = 0;
 	int restart = 0;
@@ -698,21 +703,21 @@ static int ibmveth_set_csum_offload(stru
 		adapter->pool_config = 0;
 	}
 
-	set_attr.desc = 0;
-	clr_attr.desc = 0;
+	set_attr = 0;
+	clr_attr = 0;
 
 	if (data)
-		set_attr.fields.tcp_csum_offload_ipv4 = 1;
+		set_attr = IBMVETH_ILLAN_IPV4_TCP_CSUM;
 	else
-		clr_attr.fields.tcp_csum_offload_ipv4 = 1;
+		clr_attr = IBMVETH_ILLAN_IPV4_TCP_CSUM;
 
-	ret = h_illan_attributes(adapter->vdev->unit_address, 0, 0, &ret_attr.desc);
+	ret = h_illan_attributes(adapter->vdev->unit_address, 0, 0, &ret_attr);
 
-	if (ret == H_SUCCESS && !ret_attr.fields.active_trunk &&
-	    !ret_attr.fields.trunk_priority &&
-	    ret_attr.fields.csum_offload_padded_pkt_support) {
-		ret = h_illan_attributes(adapter->vdev->unit_address, clr_attr.desc,
-					 set_attr.desc, &ret_attr.desc);
+	if (ret == H_SUCCESS && !(ret_attr & IBMVETH_ILLAN_ACTIVE_TRUNK) &&
+	    !(ret_attr & IBMVETH_ILLAN_TRUNK_PRI_MASK) &&
+	    (ret_attr & IBMVETH_ILLAN_PADDED_PKT_CSUM)) {
+		ret = h_illan_attributes(adapter->vdev->unit_address, clr_attr,
+					 set_attr, &ret_attr);
 
 		if (ret != H_SUCCESS) {
 			rc1 = -EIO;
@@ -720,13 +725,13 @@ static int ibmveth_set_csum_offload(stru
 					     " %d rc=%ld\n", data, ret);
 
 			ret = h_illan_attributes(adapter->vdev->unit_address,
-						 set_attr.desc, clr_attr.desc, &ret_attr.desc);
+						 set_attr, clr_attr, &ret_attr);
 		} else
 			done(dev, data);
 	} else {
 		rc1 = -EIO;
 		ibmveth_error_printk("unable to change checksum offload settings."
-				     " %d rc=%ld ret_attr=%lx\n", data, ret, ret_attr.desc);
+				     " %d rc=%ld ret_attr=%lx\n", data, ret, ret_attr);
 	}
 
 	if (restart)
@@ -832,11 +837,9 @@ static int ibmveth_start_xmit(struct sk_
 	unsigned int tx_send_failed = 0;
 	unsigned int tx_map_failed = 0;
 
-	desc.desc = 0;
-	desc.fields.length  = skb->len;
+	desc.fields.flags_len = IBMVETH_BUF_VALID | skb->len;
 	desc.fields.address = dma_map_single(&adapter->vdev->dev, skb->data,
-					     desc.fields.length, DMA_TO_DEVICE);
-	desc.fields.valid   = 1;
+					     skb->len, DMA_TO_DEVICE);
 
 	if (skb->ip_summed == CHECKSUM_PARTIAL &&
 	    ip_hdr(skb)->protocol != IPPROTO_TCP && skb_checksum_help(skb)) {
@@ -848,8 +851,7 @@ static int ibmveth_start_xmit(struct sk_
 	if (skb->ip_summed == CHECKSUM_PARTIAL) {
 		unsigned char *buf = skb_transport_header(skb) + skb->csum_offset;
 
-		desc.fields.no_csum = 1;
-		desc.fields.csum_good = 1;
+		desc.fields.flags_len |= (IBMVETH_BUF_NO_CSUM | IBMVETH_BUF_CSUM_GOOD);
 
 		/* Need to zero out the checksum */
 		buf[0] = 0;
@@ -875,7 +877,8 @@ static int ibmveth_start_xmit(struct sk_
 	if(lpar_rc != H_SUCCESS && lpar_rc != H_DROPPED) {
 		ibmveth_error_printk("tx: h_send_logical_lan failed with rc=%ld\n", lpar_rc);
 		ibmveth_error_printk("tx: valid=%d, len=%d, address=0x%08x\n",
-				     desc.fields.valid, desc.fields.length, desc.fields.address);
+				     (desc.fields.flags_len & IBMVETH_BUF_VALID) ? 1 : 0,
+				     skb->len, desc.fields.address);
 		tx_send_failed++;
 		tx_dropped++;
 	} else {
@@ -885,7 +888,7 @@ static int ibmveth_start_xmit(struct sk_
 	}
 
 	dma_unmap_single(&adapter->vdev->dev, desc.fields.address,
-			 desc.fields.length, DMA_TO_DEVICE);
+			 skb->len, DMA_TO_DEVICE);
 
 out:	spin_lock_irqsave(&adapter->stats_lock, flags);
 	adapter->stats.tx_dropped += tx_dropped;
@@ -1101,7 +1104,7 @@ static int __devinit ibmveth_probe(struc
 	long ret;
 	struct net_device *netdev;
 	struct ibmveth_adapter *adapter = NULL;
-	union ibmveth_illan_attributes set_attr, ret_attr;
+	u64 set_attr, ret_attr;
 
 	unsigned char *mac_addr_p;
 	unsigned int *mcastFilterSize_p;
@@ -1196,23 +1199,20 @@ static int __devinit ibmveth_probe(struc
 
 	ibmveth_debug_printk("registering netdev...\n");
 
-	ret = h_illan_attributes(dev->unit_address, 0, 0, &ret_attr.desc);
+	ret = h_illan_attributes(dev->unit_address, 0, 0, &ret_attr);
 
-	if (ret == H_SUCCESS && !ret_attr.fields.active_trunk &&
-	    !ret_attr.fields.trunk_priority &&
-	    ret_attr.fields.csum_offload_padded_pkt_support) {
-		set_attr.desc = 0;
-		set_attr.fields.tcp_csum_offload_ipv4 = 1;
+	if (ret == H_SUCCESS && !(ret_attr & IBMVETH_ILLAN_ACTIVE_TRUNK) &&
+	    !(ret_attr & IBMVETH_ILLAN_TRUNK_PRI_MASK) &&
+	    (ret_attr & IBMVETH_ILLAN_PADDED_PKT_CSUM)) {
+		set_attr = IBMVETH_ILLAN_IPV4_TCP_CSUM;
 
-		ret = h_illan_attributes(dev->unit_address, 0, set_attr.desc,
-					 &ret_attr.desc);
+		ret = h_illan_attributes(dev->unit_address, 0, set_attr, &ret_attr);
 
 		if (ret == H_SUCCESS) {
 			adapter->rx_csum = 1;
 			netdev->features |= NETIF_F_IP_CSUM;
 		} else
-			ret = h_illan_attributes(dev->unit_address, set_attr.desc,
-						 0, &ret_attr.desc);
+			ret = h_illan_attributes(dev->unit_address, set_attr, 0, &ret_attr);
 	}
 
 	rc = register_netdev(netdev);
_

^ permalink raw reply

* [PATCH 5/6] ibmveth: Remove dead frag processing code
From: Brian King @ 2007-08-06 19:42 UTC (permalink / raw)
  To: santil; +Cc: linuxppc-dev, rcjenn, brking, netdev
In-Reply-To: <11864293333377-patch-mail.ibm.com>


Removes dead frag processing code from ibmveth. Since NETIF_F_SG was
not set, this code was never executed. Also, since the ibmveth
interface can only handle 6 fragments, core networking code would need
to be modified in order to efficiently enable this support.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---

 linux-2.6-bjking1/drivers/net/ibmveth.c |  100 +++++---------------------------
 linux-2.6-bjking1/drivers/net/ibmveth.h |    5 -
 2 files changed, 17 insertions(+), 88 deletions(-)

diff -puN drivers/net/ibmveth.c~ibmveth_remove_frag drivers/net/ibmveth.c
--- linux-2.6/drivers/net/ibmveth.c~ibmveth_remove_frag	2007-08-06 14:11:08.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.c	2007-08-06 14:11:39.000000000 -0500
@@ -28,7 +28,6 @@
 /**************************************************************************/
 /*
   TODO:
-  - remove frag processing code - no longer needed
   - add support for sysfs
   - possibly remove procfs support
 */
@@ -127,9 +126,6 @@ struct ibmveth_stat ibmveth_stats[] = {
 	{ "replenish_add_buff_success", IBMVETH_STAT_OFF(replenish_add_buff_success) },
 	{ "rx_invalid_buffer", IBMVETH_STAT_OFF(rx_invalid_buffer) },
 	{ "rx_no_buffer", IBMVETH_STAT_OFF(rx_no_buffer) },
-	{ "tx_multidesc_send", IBMVETH_STAT_OFF(tx_multidesc_send) },
-	{ "tx_linearized", IBMVETH_STAT_OFF(tx_linearized) },
-	{ "tx_linearize_failed", IBMVETH_STAT_OFF(tx_linearize_failed) },
 	{ "tx_map_failed", IBMVETH_STAT_OFF(tx_map_failed) },
 	{ "tx_send_failed", IBMVETH_STAT_OFF(tx_send_failed) }
 };
@@ -825,9 +821,8 @@ static int ibmveth_ioctl(struct net_devi
 static int ibmveth_start_xmit(struct sk_buff *skb, struct net_device *netdev)
 {
 	struct ibmveth_adapter *adapter = netdev->priv;
-	union ibmveth_buf_desc desc[IbmVethMaxSendFrags];
+	union ibmveth_buf_desc desc;
 	unsigned long lpar_rc;
-	int nfrags = 0, curfrag;
 	unsigned long correlator;
 	unsigned long flags;
 	unsigned int retry_count;
@@ -837,25 +832,11 @@ static int ibmveth_start_xmit(struct sk_
 	unsigned int tx_send_failed = 0;
 	unsigned int tx_map_failed = 0;
 
-
-	if ((skb_shinfo(skb)->nr_frags + 1) > IbmVethMaxSendFrags) {
-		tx_dropped++;
-		goto out;
-	}
-
-	memset(&desc, 0, sizeof(desc));
-
-	/* nfrags = number of frags after the initial fragment */
-	nfrags = skb_shinfo(skb)->nr_frags;
-
-	if(nfrags)
-		adapter->tx_multidesc_send++;
-
-	/* map the initial fragment */
-	desc[0].fields.length  = nfrags ? skb->len - skb->data_len : skb->len;
-	desc[0].fields.address = dma_map_single(&adapter->vdev->dev, skb->data,
-					desc[0].fields.length, DMA_TO_DEVICE);
-	desc[0].fields.valid   = 1;
+	desc.desc = 0;
+	desc.fields.length  = skb->len;
+	desc.fields.address = dma_map_single(&adapter->vdev->dev, skb->data,
+					     desc.fields.length, DMA_TO_DEVICE);
+	desc.fields.valid   = 1;
 
 	if (skb->ip_summed == CHECKSUM_PARTIAL &&
 	    ip_hdr(skb)->protocol != IPPROTO_TCP && skb_checksum_help(skb)) {
@@ -867,75 +848,34 @@ static int ibmveth_start_xmit(struct sk_
 	if (skb->ip_summed == CHECKSUM_PARTIAL) {
 		unsigned char *buf = skb_transport_header(skb) + skb->csum_offset;
 
-		desc[0].fields.no_csum = 1;
-		desc[0].fields.csum_good = 1;
+		desc.fields.no_csum = 1;
+		desc.fields.csum_good = 1;
 
 		/* Need to zero out the checksum */
 		buf[0] = 0;
 		buf[1] = 0;
 	}
 
-	if(dma_mapping_error(desc[0].fields.address)) {
-		ibmveth_error_printk("tx: unable to map initial fragment\n");
+	if (dma_mapping_error(desc.fields.address)) {
+		ibmveth_error_printk("tx: unable to map xmit buffer\n");
 		tx_map_failed++;
 		tx_dropped++;
 		goto out;
 	}
 
-	curfrag = nfrags;
-
-	/* map fragments past the initial portion if there are any */
-	while(curfrag--) {
-		skb_frag_t *frag = &skb_shinfo(skb)->frags[curfrag];
-		desc[curfrag+1].fields.address
-			= dma_map_single(&adapter->vdev->dev,
-				page_address(frag->page) + frag->page_offset,
-				frag->size, DMA_TO_DEVICE);
-		desc[curfrag+1].fields.length = frag->size;
-		desc[curfrag+1].fields.valid  = 1;
-		if (skb->ip_summed == CHECKSUM_PARTIAL) {
-			desc[curfrag+1].fields.no_csum = 1;
-			desc[curfrag+1].fields.csum_good = 1;
-		}
-
-		if(dma_mapping_error(desc[curfrag+1].fields.address)) {
-			ibmveth_error_printk("tx: unable to map fragment %d\n", curfrag);
-			tx_map_failed++;
-			tx_dropped++;
-			/* Free all the mappings we just created */
-			while(curfrag < nfrags) {
-				dma_unmap_single(&adapter->vdev->dev,
-						 desc[curfrag+1].fields.address,
-						 desc[curfrag+1].fields.length,
-						 DMA_TO_DEVICE);
-				curfrag++;
-			}
-			goto out;
-		}
-	}
-
 	/* send the frame. Arbitrarily set retrycount to 1024 */
 	correlator = 0;
 	retry_count = 1024;
 	do {
 		lpar_rc = h_send_logical_lan(adapter->vdev->unit_address,
-					     desc[0].desc,
-					     desc[1].desc,
-					     desc[2].desc,
-					     desc[3].desc,
-					     desc[4].desc,
-					     desc[5].desc,
-					     correlator,
-					     &correlator);
+					     desc.desc, 0, 0, 0, 0, 0,
+					     correlator, &correlator);
 	} while ((lpar_rc == H_BUSY) && (retry_count--));
 
 	if(lpar_rc != H_SUCCESS && lpar_rc != H_DROPPED) {
-		int i;
 		ibmveth_error_printk("tx: h_send_logical_lan failed with rc=%ld\n", lpar_rc);
-		for(i = 0; i < 6; i++) {
-			ibmveth_error_printk("tx: desc[%i] valid=%d, len=%d, address=0x%d\n", i,
-					     desc[i].fields.valid, desc[i].fields.length, desc[i].fields.address);
-		}
+		ibmveth_error_printk("tx: valid=%d, len=%d, address=0x%08x\n",
+				     desc.fields.valid, desc.fields.length, desc.fields.address);
 		tx_send_failed++;
 		tx_dropped++;
 	} else {
@@ -944,11 +884,8 @@ static int ibmveth_start_xmit(struct sk_
 		netdev->trans_start = jiffies;
 	}
 
-	do {
-		dma_unmap_single(&adapter->vdev->dev,
-				desc[nfrags].fields.address,
-				desc[nfrags].fields.length, DMA_TO_DEVICE);
-	} while(--nfrags >= 0);
+	dma_unmap_single(&adapter->vdev->dev, desc.fields.address,
+			 desc.fields.length, DMA_TO_DEVICE);
 
 out:	spin_lock_irqsave(&adapter->stats_lock, flags);
 	adapter->stats.tx_dropped += tx_dropped;
@@ -1360,10 +1297,7 @@ static int ibmveth_seq_show(struct seq_f
 		   firmware_mac[3], firmware_mac[4], firmware_mac[5]);
 
 	seq_printf(seq, "\nAdapter Statistics:\n");
-	seq_printf(seq, "  TX:  skbuffs linearized:          %ld\n", adapter->tx_linearized);
-	seq_printf(seq, "       multi-descriptor sends:      %ld\n", adapter->tx_multidesc_send);
-	seq_printf(seq, "       skb_linearize failures:      %ld\n", adapter->tx_linearize_failed);
-	seq_printf(seq, "       vio_map_single failres:      %ld\n", adapter->tx_map_failed);
+	seq_printf(seq, "  TX:  vio_map_single failres:      %ld\n", adapter->tx_map_failed);
 	seq_printf(seq, "       send failures:               %ld\n", adapter->tx_send_failed);
 	seq_printf(seq, "  RX:  replenish task cycles:       %ld\n", adapter->replenish_task_cycles);
 	seq_printf(seq, "       alloc_skb_failures:          %ld\n", adapter->replenish_no_mem);
diff -puN drivers/net/ibmveth.h~ibmveth_remove_frag drivers/net/ibmveth.h
--- linux-2.6/drivers/net/ibmveth.h~ibmveth_remove_frag	2007-08-06 14:11:08.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.h	2007-08-06 14:11:39.000000000 -0500
@@ -25,8 +25,6 @@
 #ifndef _IBMVETH_H
 #define _IBMVETH_H
 
-#define IbmVethMaxSendFrags 6
-
 /* constants for H_MULTICAST_CTRL */
 #define IbmVethMcastReceptionModifyBit     0x80000UL
 #define IbmVethMcastReceptionEnableBit     0x20000UL
@@ -146,9 +144,6 @@ struct ibmveth_adapter {
     u64 replenish_add_buff_success;
     u64 rx_invalid_buffer;
     u64 rx_no_buffer;
-    u64 tx_multidesc_send;
-    u64 tx_linearized;
-    u64 tx_linearize_failed;
     u64 tx_map_failed;
     u64 tx_send_failed;
     spinlock_t stats_lock;
_

^ permalink raw reply

* Re: [PATCH 3/3] First cut at PReP support for arch/powerpc
From: Segher Boessenkool @ 2007-08-06 19:42 UTC (permalink / raw)
  To: David Gibson; +Cc: linuxppc-dev, Paul Mackerras
In-Reply-To: <20070803063532.GB14456@localhost.localdomain>

>>> +			PIC8259: interrupt-controller {
>>> +				device_type = "i8259";
>>>
>>> device_type = "interrupt-controller".
>
> Is that really right?  The MPIC binding, at least, has device_type =
> "open-pic" rather than "interrupt-controller".

I got confused.  "open-pic" as device_type is nonsense, because
it doesn't define anything an OF can work with itself.  However,
since some older interrupt controller bindings (pre-imap) define
a device_type, the interrupt mapping recommended practice had to
work around this, so it specified an empty "interrupt-controller"
property for all interrupt controller nodes.

I don't know what the specified device_type for 8259s is; it
seems to me you don't need it in a flat device tree at all.

>>> +		MPIC: interrupt-controller@d {
>>> +			device_type = "open-pic";
>>>
>>> device_type = "interrupt-controller".
>
> Not according to the binding in booting-without-of.txt

Yeah, mea culpa.  Again, you can just leave it out I think.


Segher

^ permalink raw reply

* [PATCH 4/6] ibmveth: Add ethtool driver stats hooks
From: Brian King @ 2007-08-06 19:42 UTC (permalink / raw)
  To: santil; +Cc: linuxppc-dev, rcjenn, brking, netdev
In-Reply-To: <11864293333377-patch-mail.ibm.com>


Add ethtool hooks to ibmveth to retrieve driver statistics.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---

 drivers/net/ibmveth.c |   53 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 52 insertions(+), 1 deletion(-)

diff -puN drivers/net/ibmveth.c~ibmveth_ethtool_driver_stats drivers/net/ibmveth.c
--- linux-2.6/drivers/net/ibmveth.c~ibmveth_ethtool_driver_stats	2007-07-19 11:18:41.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.c	2007-07-19 11:18:41.000000000 -0500
@@ -112,6 +112,28 @@ MODULE_DESCRIPTION("IBM i/pSeries Virtua
 MODULE_LICENSE("GPL");
 MODULE_VERSION(ibmveth_driver_version);
 
+struct ibmveth_stat {
+	char name[ETH_GSTRING_LEN];
+	int offset;
+};
+
+#define IBMVETH_STAT_OFF(stat) offsetof(struct ibmveth_adapter, stat)
+#define IBMVETH_GET_STAT(a, off) *((u64 *)(((unsigned long)(a)) + off))
+
+struct ibmveth_stat ibmveth_stats[] = {
+	{ "replenish_task_cycles", IBMVETH_STAT_OFF(replenish_task_cycles) },
+	{ "replenish_no_mem", IBMVETH_STAT_OFF(replenish_no_mem) },
+	{ "replenish_add_buff_failure", IBMVETH_STAT_OFF(replenish_add_buff_failure) },
+	{ "replenish_add_buff_success", IBMVETH_STAT_OFF(replenish_add_buff_success) },
+	{ "rx_invalid_buffer", IBMVETH_STAT_OFF(rx_invalid_buffer) },
+	{ "rx_no_buffer", IBMVETH_STAT_OFF(rx_no_buffer) },
+	{ "tx_multidesc_send", IBMVETH_STAT_OFF(tx_multidesc_send) },
+	{ "tx_linearized", IBMVETH_STAT_OFF(tx_linearized) },
+	{ "tx_linearize_failed", IBMVETH_STAT_OFF(tx_linearize_failed) },
+	{ "tx_map_failed", IBMVETH_STAT_OFF(tx_map_failed) },
+	{ "tx_send_failed", IBMVETH_STAT_OFF(tx_send_failed) }
+};
+
 /* simple methods of getting data from the current rxq entry */
 static inline int ibmveth_rxq_pending_buffer(struct ibmveth_adapter *adapter)
 {
@@ -751,6 +773,32 @@ static u32 ibmveth_get_rx_csum(struct ne
 	return adapter->rx_csum;
 }
 
+static void ibmveth_get_strings(struct net_device *dev, u32 stringset, u8 *data)
+{
+	int i;
+
+	if (stringset != ETH_SS_STATS)
+		return;
+
+	for (i = 0; i < ARRAY_SIZE(ibmveth_stats); i++, data += ETH_GSTRING_LEN)
+		memcpy(data, ibmveth_stats[i].name, ETH_GSTRING_LEN);
+}
+
+static int ibmveth_get_stats_count(struct net_device *dev)
+{
+	return ARRAY_SIZE(ibmveth_stats);
+}
+
+static void ibmveth_get_ethtool_stats(struct net_device *dev,
+				      struct ethtool_stats *stats, u64 *data)
+{
+	int i;
+	struct ibmveth_adapter *adapter = dev->priv;
+
+	for (i = 0; i < ARRAY_SIZE(ibmveth_stats); i++)
+		data[i] = IBMVETH_GET_STAT(adapter, ibmveth_stats[i].offset);
+}
+
 static const struct ethtool_ops netdev_ethtool_ops = {
 	.get_drvinfo		= netdev_get_drvinfo,
 	.get_settings		= netdev_get_settings,
@@ -761,7 +809,10 @@ static const struct ethtool_ops netdev_e
 	.get_rx_csum		= ibmveth_get_rx_csum,
 	.set_rx_csum		= ibmveth_set_rx_csum,
 	.get_tso			= ethtool_op_get_tso,
-	.get_ufo			= ethtool_op_get_ufo
+	.get_ufo			= ethtool_op_get_ufo,
+	.get_strings		= ibmveth_get_strings,
+	.get_stats_count		= ibmveth_get_stats_count,
+	.get_ethtool_stats	= ibmveth_get_ethtool_stats
 };
 
 static int ibmveth_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
diff -puN drivers/net/ibmveth.h~ibmveth_ethtool_driver_stats drivers/net/ibmveth.h
_

^ permalink raw reply

* [PATCH 3/6] ibmveth: Add ethtool TSO handlers
From: Brian King @ 2007-08-06 19:42 UTC (permalink / raw)
  To: santil; +Cc: linuxppc-dev, rcjenn, brking, netdev
In-Reply-To: <11864293333377-patch-mail.ibm.com>


Add handlers for get_tso and get_ufo to prevent errors being printed
by ethtool.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---

 drivers/net/ibmveth.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff -puN drivers/net/ibmveth.c~ibmveth_ethtool_get_tso drivers/net/ibmveth.c
--- linux-2.6/drivers/net/ibmveth.c~ibmveth_ethtool_get_tso	2007-07-19 11:18:38.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.c	2007-07-19 11:18:38.000000000 -0500
@@ -759,7 +759,9 @@ static const struct ethtool_ops netdev_e
 	.get_tx_csum		= ethtool_op_get_tx_csum,
 	.set_tx_csum		= ibmveth_set_tx_csum,
 	.get_rx_csum		= ibmveth_get_rx_csum,
-	.set_rx_csum		= ibmveth_set_rx_csum
+	.set_rx_csum		= ibmveth_set_rx_csum,
+	.get_tso			= ethtool_op_get_tso,
+	.get_ufo			= ethtool_op_get_ufo
 };
 
 static int ibmveth_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
_

^ permalink raw reply

* [PATCH 2/6] ibmveth: Implement ethtool hooks to enable/disable checksum offload
From: Brian King @ 2007-08-06 19:42 UTC (permalink / raw)
  To: santil; +Cc: linuxppc-dev, rcjenn, brking, netdev
In-Reply-To: <11864293333377-patch-mail.ibm.com>


This patch adds the appropriate ethtool hooks to allow for enabling/disabling
of hypervisor assisted checksum offload for TCP.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---

 linux-2.6-bjking1/drivers/net/ibmveth.c |  118 +++++++++++++++++++++++++++++++-
 linux-2.6-bjking1/drivers/net/ibmveth.h |    1 
 2 files changed, 117 insertions(+), 2 deletions(-)

diff -puN drivers/net/ibmveth.c~ibmveth_csum_offload_ethtool drivers/net/ibmveth.c
--- linux-2.6/drivers/net/ibmveth.c~ibmveth_csum_offload_ethtool	2007-08-01 14:55:14.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.c	2007-08-01 14:55:14.000000000 -0500
@@ -641,12 +641,125 @@ static u32 netdev_get_link(struct net_de
 	return 1;
 }
 
+static void ibmveth_set_rx_csum_flags(struct net_device *dev, u32 data)
+{
+	struct ibmveth_adapter *adapter = dev->priv;
+
+	if (data)
+		adapter->rx_csum = 1;
+	else {
+		adapter->rx_csum = 0;
+		dev->features &= ~NETIF_F_IP_CSUM;
+	}
+}
+
+static void ibmveth_set_tx_csum_flags(struct net_device *dev, u32 data)
+{
+	struct ibmveth_adapter *adapter = dev->priv;
+
+	if (data) {
+		dev->features |= NETIF_F_IP_CSUM;
+		adapter->rx_csum = 1;
+	} else
+		dev->features &= ~NETIF_F_IP_CSUM;
+}
+
+static int ibmveth_set_csum_offload(struct net_device *dev, u32 data,
+				    void (*done) (struct net_device *, u32))
+{
+	struct ibmveth_adapter *adapter = dev->priv;
+	union ibmveth_illan_attributes set_attr, clr_attr, ret_attr;
+	long ret;
+	int rc1 = 0, rc2 = 0;
+	int restart = 0;
+
+	if (netif_running(dev)) {
+		restart = 1;
+		adapter->pool_config = 1;
+		ibmveth_close(dev);
+		adapter->pool_config = 0;
+	}
+
+	set_attr.desc = 0;
+	clr_attr.desc = 0;
+
+	if (data)
+		set_attr.fields.tcp_csum_offload_ipv4 = 1;
+	else
+		clr_attr.fields.tcp_csum_offload_ipv4 = 1;
+
+	ret = h_illan_attributes(adapter->vdev->unit_address, 0, 0, &ret_attr.desc);
+
+	if (ret == H_SUCCESS && !ret_attr.fields.active_trunk &&
+	    !ret_attr.fields.trunk_priority &&
+	    ret_attr.fields.csum_offload_padded_pkt_support) {
+		ret = h_illan_attributes(adapter->vdev->unit_address, clr_attr.desc,
+					 set_attr.desc, &ret_attr.desc);
+
+		if (ret != H_SUCCESS) {
+			rc1 = -EIO;
+			ibmveth_error_printk("unable to change checksum offload settings."
+					     " %d rc=%ld\n", data, ret);
+
+			ret = h_illan_attributes(adapter->vdev->unit_address,
+						 set_attr.desc, clr_attr.desc, &ret_attr.desc);
+		} else
+			done(dev, data);
+	} else {
+		rc1 = -EIO;
+		ibmveth_error_printk("unable to change checksum offload settings."
+				     " %d rc=%ld ret_attr=%lx\n", data, ret, ret_attr.desc);
+	}
+
+	if (restart)
+		rc2 = ibmveth_open(dev);
+
+	return rc1 ? rc1 : rc2;
+}
+
+static int ibmveth_set_rx_csum(struct net_device *dev, u32 data)
+{
+	struct ibmveth_adapter *adapter = dev->priv;
+
+	if ((data && adapter->rx_csum) || (!data && !adapter->rx_csum))
+		return 0;
+
+	return ibmveth_set_csum_offload(dev, data, ibmveth_set_rx_csum_flags);
+}
+
+static int ibmveth_set_tx_csum(struct net_device *dev, u32 data)
+{
+	struct ibmveth_adapter *adapter = dev->priv;
+	int rc = 0;
+
+	if (data && (dev->features & NETIF_F_IP_CSUM))
+		return 0;
+	if (!data && !(dev->features & NETIF_F_IP_CSUM))
+		return 0;
+
+	if (data && !adapter->rx_csum)
+		rc = ibmveth_set_csum_offload(dev, data, ibmveth_set_tx_csum_flags);
+	else
+		ibmveth_set_tx_csum_flags(dev, data);
+
+	return rc;
+}
+
+static u32 ibmveth_get_rx_csum(struct net_device *dev)
+{
+	struct ibmveth_adapter *adapter = dev->priv;
+	return adapter->rx_csum;
+}
+
 static const struct ethtool_ops netdev_ethtool_ops = {
 	.get_drvinfo		= netdev_get_drvinfo,
 	.get_settings		= netdev_get_settings,
 	.get_link		= netdev_get_link,
 	.get_sg			= ethtool_op_get_sg,
 	.get_tx_csum		= ethtool_op_get_tx_csum,
+	.set_tx_csum		= ibmveth_set_tx_csum,
+	.get_rx_csum		= ibmveth_get_rx_csum,
+	.set_rx_csum		= ibmveth_set_rx_csum
 };
 
 static int ibmveth_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
@@ -1104,9 +1217,10 @@ static int __devinit ibmveth_probe(struc
 		ret = h_illan_attributes(dev->unit_address, 0, set_attr.desc,
 					 &ret_attr.desc);
 
-		if (ret == H_SUCCESS)
+		if (ret == H_SUCCESS) {
+			adapter->rx_csum = 1;
 			netdev->features |= NETIF_F_IP_CSUM;
-		else
+		} else
 			ret = h_illan_attributes(dev->unit_address, set_attr.desc,
 						 0, &ret_attr.desc);
 	}
diff -puN drivers/net/ibmveth.h~ibmveth_csum_offload_ethtool drivers/net/ibmveth.h
--- linux-2.6/drivers/net/ibmveth.h~ibmveth_csum_offload_ethtool	2007-08-01 14:55:14.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.h	2007-08-01 14:55:14.000000000 -0500
@@ -137,6 +137,7 @@ struct ibmveth_adapter {
     struct ibmveth_buff_pool rx_buff_pool[IbmVethNumBufferPools];
     struct ibmveth_rx_q rx_queue;
     int pool_config;
+    int rx_csum;
 
     /* adapter specific stats */
     u64 replenish_task_cycles;
_

^ permalink raw reply

* [PATCH 1/6] ibmveth: Enable TCP checksum offload
From: Brian King @ 2007-08-06 19:42 UTC (permalink / raw)
  To: santil; +Cc: linuxppc-dev, rcjenn, brking, netdev


This patchset enables TCP checksum offload support for IPV4
on ibmveth. This completely eliminates the generation and checking of
the checksum for packets that are completely virtual and never
touch a physical network. A simple TCP_STREAM netperf run on
a virtual network with maximum mtu set yielded a ~30% increase
in throughput. This feature is enabled by default on systems that
support it, but can be disabled with a module option.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---

 linux-2.6-bjking1/drivers/net/ibmveth.c |   53 ++++++++++++++++++++++++++++++++
 linux-2.6-bjking1/drivers/net/ibmveth.h |   41 +++++++++++++++++++++++-
 2 files changed, 92 insertions(+), 2 deletions(-)

diff -puN drivers/net/ibmveth.c~ibmveth_csum_offload drivers/net/ibmveth.c
--- linux-2.6/drivers/net/ibmveth.c~ibmveth_csum_offload	2007-08-01 14:55:11.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.c	2007-08-01 14:55:11.000000000 -0500
@@ -47,6 +47,8 @@
 #include <linux/mm.h>
 #include <linux/ethtool.h>
 #include <linux/proc_fs.h>
+#include <linux/in.h>
+#include <linux/ip.h>
 #include <asm/semaphore.h>
 #include <asm/hvcall.h>
 #include <asm/atomic.h>
@@ -131,6 +133,11 @@ static inline int ibmveth_rxq_frame_leng
 	return (adapter->rx_queue.queue_addr[adapter->rx_queue.index].length);
 }
 
+static inline int ibmveth_rxq_csum_good(struct ibmveth_adapter *adapter)
+{
+	return (adapter->rx_queue.queue_addr[adapter->rx_queue.index].csum_good);
+}
+
 /* setup the initial settings for a buffer pool */
 static void ibmveth_init_buffer_pool(struct ibmveth_buff_pool *pool, u32 pool_index, u32 pool_size, u32 buff_size, u32 pool_active)
 {
@@ -684,6 +691,24 @@ static int ibmveth_start_xmit(struct sk_
 					desc[0].fields.length, DMA_TO_DEVICE);
 	desc[0].fields.valid   = 1;
 
+	if (skb->ip_summed == CHECKSUM_PARTIAL &&
+	    ip_hdr(skb)->protocol != IPPROTO_TCP && skb_checksum_help(skb)) {
+		ibmveth_error_printk("tx: failed to checksum packet\n");
+		tx_dropped++;
+		goto out;
+	}
+
+	if (skb->ip_summed == CHECKSUM_PARTIAL) {
+		unsigned char *buf = skb_transport_header(skb) + skb->csum_offset;
+
+		desc[0].fields.no_csum = 1;
+		desc[0].fields.csum_good = 1;
+
+		/* Need to zero out the checksum */
+		buf[0] = 0;
+		buf[1] = 0;
+	}
+
 	if(dma_mapping_error(desc[0].fields.address)) {
 		ibmveth_error_printk("tx: unable to map initial fragment\n");
 		tx_map_failed++;
@@ -702,6 +727,10 @@ static int ibmveth_start_xmit(struct sk_
 				frag->size, DMA_TO_DEVICE);
 		desc[curfrag+1].fields.length = frag->size;
 		desc[curfrag+1].fields.valid  = 1;
+		if (skb->ip_summed == CHECKSUM_PARTIAL) {
+			desc[curfrag+1].fields.no_csum = 1;
+			desc[curfrag+1].fields.csum_good = 1;
+		}
 
 		if(dma_mapping_error(desc[curfrag+1].fields.address)) {
 			ibmveth_error_printk("tx: unable to map fragment %d\n", curfrag);
@@ -792,7 +821,11 @@ static int ibmveth_poll(struct net_devic
 			} else {
 				int length = ibmveth_rxq_frame_length(adapter);
 				int offset = ibmveth_rxq_frame_offset(adapter);
+				int csum_good = ibmveth_rxq_csum_good(adapter);
+
 				skb = ibmveth_rxq_get_buffer(adapter);
+				if (csum_good)
+					skb->ip_summed = CHECKSUM_UNNECESSARY;
 
 				ibmveth_rxq_harvest_buffer(adapter);
 
@@ -962,8 +995,10 @@ static void ibmveth_poll_controller(stru
 static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_id *id)
 {
 	int rc, i;
+	long ret;
 	struct net_device *netdev;
 	struct ibmveth_adapter *adapter = NULL;
+	union ibmveth_illan_attributes set_attr, ret_attr;
 
 	unsigned char *mac_addr_p;
 	unsigned int *mcastFilterSize_p;
@@ -1058,6 +1093,24 @@ static int __devinit ibmveth_probe(struc
 
 	ibmveth_debug_printk("registering netdev...\n");
 
+	ret = h_illan_attributes(dev->unit_address, 0, 0, &ret_attr.desc);
+
+	if (ret == H_SUCCESS && !ret_attr.fields.active_trunk &&
+	    !ret_attr.fields.trunk_priority &&
+	    ret_attr.fields.csum_offload_padded_pkt_support) {
+		set_attr.desc = 0;
+		set_attr.fields.tcp_csum_offload_ipv4 = 1;
+
+		ret = h_illan_attributes(dev->unit_address, 0, set_attr.desc,
+					 &ret_attr.desc);
+
+		if (ret == H_SUCCESS)
+			netdev->features |= NETIF_F_IP_CSUM;
+		else
+			ret = h_illan_attributes(dev->unit_address, set_attr.desc,
+						 0, &ret_attr.desc);
+	}
+
 	rc = register_netdev(netdev);
 
 	if(rc) {
diff -puN drivers/net/ibmveth.h~ibmveth_csum_offload drivers/net/ibmveth.h
--- linux-2.6/drivers/net/ibmveth.h~ibmveth_csum_offload	2007-08-01 14:55:11.000000000 -0500
+++ linux-2.6-bjking1/drivers/net/ibmveth.h	2007-08-01 14:55:11.000000000 -0500
@@ -67,6 +67,21 @@ static inline long h_send_logical_lan(un
 	return rc;
 }
 
+static inline long h_illan_attributes(unsigned long unit_address,
+				      unsigned long reset_mask, unsigned long set_mask,
+				      unsigned long *ret_attributes)
+{
+	long rc;
+	unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
+
+	rc = plpar_hcall(H_ILLAN_ATTRIBUTES, retbuf, unit_address,
+			 reset_mask, set_mask);
+
+	*ret_attributes = retbuf[0];
+
+	return rc;
+}
+
 #define h_multicast_ctrl(ua, cmd, mac) \
   plpar_hcall_norets(H_MULTICAST_CTRL, ua, cmd, mac)
 
@@ -141,7 +156,9 @@ struct ibmveth_adapter {
 struct ibmveth_buf_desc_fields {
     u32 valid : 1;
     u32 toggle : 1;
-    u32 reserved : 6;
+    u32 reserved : 4;
+    u32 no_csum : 1;
+    u32 csum_good : 1;
     u32 length : 24;
     u32 address;
 };
@@ -151,10 +168,30 @@ union ibmveth_buf_desc {
     struct ibmveth_buf_desc_fields fields;
 };
 
+struct ibmveth_illan_attributes_fields {
+	u32 reserved;
+	u32 reserved2 : 18;
+	u32 csum_offload_padded_pkt_support : 1;
+	u32 reserved3 : 1;
+	u32 trunk_priority : 4;
+	u32 reserved4 : 5;
+	u32 tcp_csum_offload_ipv6 : 1;
+	u32 tcp_csum_offload_ipv4 : 1;
+	u32 active_trunk : 1;
+};
+
+union ibmveth_illan_attributes {
+	u64 desc;
+	struct ibmveth_illan_attributes_fields fields;
+};
+
 struct ibmveth_rx_q_entry {
     u16 toggle : 1;
     u16 valid : 1;
-    u16 reserved : 14;
+    u16 reserved : 4;
+    u16 no_csum : 1;
+    u16 csum_good : 1;
+    u16 reserved2 : 8;
     u16 offset;
     u32 length;
     u64 correlator;
_

^ permalink raw reply

* Re: [PATCH 3/3] First cut at PReP support for arch/powerpc
From: Segher Boessenkool @ 2007-08-06 19:37 UTC (permalink / raw)
  To: David Gibson; +Cc: linuxppc-dev, Paul Mackerras
In-Reply-To: <20070803064328.GC14456@localhost.localdomain>

>> It seems to me a flat device tree could leave out all those
>> properties that can be derived from the PVR (except for the
>> few that are really useful for bootloaders and such -- cache
>> line size, 64-bit-or-not, what kind of MMU).  Linux doesn't
>> use it anyway.  Existing DTSs already leave away most.
>
> I agree, ditched them from my dts.

It's good to have consensus :-)

Is this documented already?

>> If PReP requires a specific programming model for the PCI
>> host bridge, that would be fine.  But then compatible =
>> "prep-pci-bridge" or such, not just "prep"; everything on
>> your board is "prep", it would make matching a bit hard ;-)
>
> Well... I'm rather unclear on how much PReP requires of the PCI
> bridge.  I thought what I'd coded was based on what appeared to be
> hard assumptions in prep_pci.c, but now I'm hearing that this won't
> cover all PReP machines, so I'm really not sure.

Also, even if the current kernels assume certain hardware, that
doesn't mean you can do the same in the device tree.


Segher

^ permalink raw reply

* Re: 2.6.23-rc1-mm2
From: Mariusz Kozlowski @ 2007-08-06 19:34 UTC (permalink / raw)
  To: Segher Boessenkool
  Cc: linux-usb-devel, gregkh, linux-kernel, linuxppc-dev, paulus,
	Andrew Morton
In-Reply-To: <76e360562cd5b50bcd991026e5bead55@kernel.crashing.org>

[-- Attachment #1: Type: text/plain, Size: 18416 bytes --]

> > Second issue as reported earilier allmodconfig fails to build on imac 
> > g3.
> >
> >   CC      arch/powerpc/kernel/lparmap.s
> >   AS      arch/powerpc/kernel/head_64.o
> > lparmap.c: Assembler messages:
> > lparmap.c:84: Error: file number 1 already allocated
> > make[1]: *** [arch/powerpc/kernel/head_64.o] Blad 1
> > make: *** [arch/powerpc/kernel] Blad 2
> 
> Please send me the full output of:
> 
> gcc --version    (or whatever your gcc is called)
> ld --version
> ld --help        (I know no better way to get the supported binutils
>                    targets, and the default target)
> 
> and the lparmap.s file.  You might want to skip sending it
> to the lists, it will be a bit big (and off-topic on most
> of those lists, anyway).

Well ... its 66kB. Not that bad. Please find it attached.
Needed gcc and ld info below.

Regards,

	Mariusz



$ gcc --version
gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ ld --version
GNU ld version 2.17 Debian GNU/Linux
Copyright 2005 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License.  This program has absolutely no warranty.

$ ld --help
Usage: ld [options] file...
Options:
  -a KEYWORD                  Shared library control for HP/UX compatibility
  -A ARCH, --architecture ARCH
                              Set architecture
  -b TARGET, --format TARGET  Specify target for following input files
  -c FILE, --mri-script FILE  Read MRI format linker script
  -d, -dc, -dp                Force common symbols to be defined
  -e ADDRESS, --entry ADDRESS Set start address
  -E, --export-dynamic        Export all dynamic symbols
  -EB                         Link big-endian objects
  -EL                         Link little-endian objects
  -f SHLIB, --auxiliary SHLIB Auxiliary filter for shared object symbol table
  -F SHLIB, --filter SHLIB    Filter for shared object symbol table
  -g                          Ignored
  -G SIZE, --gpsize SIZE      Small data size (if no size, same as --shared)
  -h FILENAME, -soname FILENAME
                              Set internal name of shared library
  -I PROGRAM, --dynamic-linker PROGRAM
                              Set PROGRAM as the dynamic linker to use
  -l LIBNAME, --library LIBNAME
                              Search for library LIBNAME
  -L DIRECTORY, --library-path DIRECTORY
                              Add DIRECTORY to library search path
  --sysroot=<DIRECTORY>       Override the default sysroot location
  -m EMULATION                Set emulation
  -M, --print-map             Print map file on standard output
  -n, --nmagic                Do not page align data
  -N, --omagic                Do not page align data, do not make text readonly
  --no-omagic                 Page align data, make text readonly
  -o FILE, --output FILE      Set output file name
  -O                          Optimize output file
  -Qy                         Ignored for SVR4 compatibility
  -q, --emit-relocs           Generate relocations in final output
  -r, -i, --relocatable       Generate relocatable output
  -R FILE, --just-symbols FILE
                              Just link symbols (if directory, same as --rpath)
  -s, --strip-all             Strip all symbols
  -S, --strip-debug           Strip debugging symbols
  --strip-discarded           Strip symbols in discarded sections
  --no-strip-discarded        Do not strip symbols in discarded sections
  -t, --trace                 Trace file opens
  -T FILE, --script FILE      Read linker script
  -u SYMBOL, --undefined SYMBOL
                              Start with undefined reference to SYMBOL
  --unique [=SECTION]         Don't merge input [SECTION | orphan] sections
  -Ur                         Build global constructor/destructor tables
  -v, --version               Print version information
  -V                          Print version and emulation information
  -x, --discard-all           Discard all local symbols
  -X, --discard-locals        Discard temporary local symbols (default)
  --discard-none              Don't discard any local symbols
  -y SYMBOL, --trace-symbol SYMBOL
                              Trace mentions of SYMBOL
  -Y PATH                     Default search path for Solaris compatibility
  -(, --start-group           Start a group
  -), --end-group             End a group
  --accept-unknown-input-arch Accept input files whose architecture cannot be determined
  --no-accept-unknown-input-arch
                              Reject input files whose architecture is unknown
  --add-needed                Set DT_NEEDED tags for DT_NEEDED entries in
                                following dynamic libs
  --no-add-needed             Do not set DT_NEEDED tags for DT_NEEDED entries
                                in following dynamic libs
  --as-needed                 Only set DT_NEEDED for following dynamic libs if used
  --no-as-needed              Always set DT_NEEDED for following dynamic libs
  -assert KEYWORD             Ignored for SunOS compatibility
  -Bdynamic, -dy, -call_shared
                              Link against shared libraries
  -Bstatic, -dn, -non_shared, -static
                              Do not link against shared libraries
  -Bsymbolic                  Bind global references locally
  --check-sections            Check section addresses for overlaps (default)
  --no-check-sections         Do not check section addresses for overlaps
  --cref                      Output cross reference table
  --defsym SYMBOL=EXPRESSION  Define a symbol
  --demangle [=STYLE]         Demangle symbol names [using STYLE]
  --embedded-relocs           Generate embedded relocs
  --fatal-warnings            Treat warnings as errors
  -fini SYMBOL                Call SYMBOL at unload-time
  --force-exe-suffix          Force generation of file with .exe suffix
  --gc-sections               Remove unused sections (on some targets)
  --no-gc-sections            Don't remove unused sections (default)
  --hash-size=<NUMBER>        Set default hash table size close to <NUMBER>
  --help                      Print option help
  -init SYMBOL                Call SYMBOL at load-time
  -Map FILE                   Write a map file
  --no-define-common          Do not define Common storage
  --no-demangle               Do not demangle symbol names
  --no-keep-memory            Use less memory and more disk I/O
  --no-undefined              Do not allow unresolved references in object files
  --allow-shlib-undefined     Allow unresolved references in shared libaries
  --no-allow-shlib-undefined  Do not allow unresolved references in shared libs
  --allow-multiple-definition Allow multiple definitions
  --no-undefined-version      Disallow undefined version
  --default-symver            Create default symbol version
  --default-imported-symver   Create default symbol version for imported symbols
  --no-warn-mismatch          Don't warn about mismatched input files
  --no-whole-archive          Turn off --whole-archive
  --noinhibit-exec            Create an output file even if errors occur
  -nostdlib                   Only use library directories specified on
                                the command line
  --oformat TARGET            Specify target of output file
  -qmagic                     Ignored for Linux compatibility
  --reduce-memory-overheads   Reduce memory overheads, possibly taking much longer
  --relax                     Relax branches on certain targets
  --retain-symbols-file FILE  Keep only symbols listed in FILE
  -rpath PATH                 Set runtime shared library search path
  -rpath-link PATH            Set link time shared library search path
  -shared, -Bshareable        Create a shared library
  -pie, --pic-executable      Create a position independent executable
  --sort-common               Sort common symbols by size
  --sort-section name|alignment
                              Sort sections by name or maximum alignment
  --spare-dynamic-tags COUNT  How many tags to reserve in .dynamic section
  --split-by-file [=SIZE]     Split output sections every SIZE octets
  --split-by-reloc [=COUNT]   Split output sections every COUNT relocs
  --stats                     Print memory usage statistics
  --target-help               Display target specific options
  --task-link SYMBOL          Do task level linking
  --traditional-format        Use same format as native linker
  --section-start SECTION=ADDRESS
                              Set address of named section
  -Tbss ADDRESS               Set address of .bss section
  -Tdata ADDRESS              Set address of .data section
  -Ttext ADDRESS              Set address of .text section
  --unresolved-symbols=<method>
                              How to handle unresolved symbols.  <method> is:
                                ignore-all, report-all, ignore-in-object-files,
                                ignore-in-shared-libs
  --verbose                   Output lots of information during link
  --version-script FILE       Read version information script
  --version-exports-section SYMBOL
                              Take export symbols list from .exports, using
                                SYMBOL as the version.
  --warn-common               Warn about duplicate common symbols
  --warn-constructors         Warn if global constructors/destructors are seen
  --warn-multiple-gp          Warn if the multiple GP values are used
  --warn-once                 Warn only once per undefined symbol
  --warn-section-align        Warn if start of section changes due to alignment
  --warn-shared-textrel       Warn if shared object has DT_TEXTREL
  --warn-unresolved-symbols   Report unresolved symbols as warnings
  --error-unresolved-symbols  Report unresolved symbols as errors
  --whole-archive             Include all objects from following archives
  --wrap SYMBOL               Use wrapper functions for SYMBOL
  @FILE                       Read options from FILE
ld: supported targets: elf32-powerpc aixcoff-rs6000 elf32-powerpcle ppcboot elf32-little elf32-big elf64-powerpc elf64-powerpcle aixcoff64-rs6000 elf64-little elf64-big srec symbolsrec tekhex binary ihex
ld: supported emulations: elf32ppclinux elf32ppc elf32ppcsim elf64ppc
ld: emulation specific options:
elf32ppclinux: 
  -Bgroup               Selects group name lookup rules for DSO
  --disable-new-dtags   Disable new dynamic tags
  --enable-new-dtags    Enable new dynamic tags
  --eh-frame-hdr        Create .eh_frame_hdr section
  -z combreloc          Merge dynamic relocs into one section and sort
  -z defs               Report unresolved symbols in object files.
  -z execstack          Mark executable as requiring executable stack
  -z initfirst          Mark DSO to be initialized first at runtime
  -z interpose          Mark object to interpose all DSOs but executable
  -z loadfltr           Mark object requiring immediate process
  -z muldefs            Allow multiple definitions
  -z nocombreloc        Don't merge dynamic relocs into one section
  -z nocopyreloc        Don't create copy relocs
  -z nodefaultlib       Mark object not to use default search paths
  -z nodelete           Mark DSO non-deletable at runtime
  -z nodlopen           Mark DSO not available to dlopen
  -z nodump             Mark DSO not available to dldump
  -z noexecstack        Mark executable as not requiring executable stack
  -z norelro            Don't create RELRO program header
  -z now                Mark object non-lazy runtime binding
  -z origin             Mark object requiring immediate $ORIGIN processing
                          at runtime
  -z relro              Create RELRO program header
  -z KEYWORD            Ignored for Solaris compatibility
  --emit-stub-syms      Label linker stubs with a symbol.
  --no-tls-optimize     Don't try to optimize TLS accesses.
  --bss-plt             Force old-style BSS PLT.
  --sdata-got           Force GOT location just before .sdata.
elf32ppc: 
  -Bgroup               Selects group name lookup rules for DSO
  --disable-new-dtags   Disable new dynamic tags
  --enable-new-dtags    Enable new dynamic tags
  --eh-frame-hdr        Create .eh_frame_hdr section
  -z combreloc          Merge dynamic relocs into one section and sort
  -z defs               Report unresolved symbols in object files.
  -z execstack          Mark executable as requiring executable stack
  -z initfirst          Mark DSO to be initialized first at runtime
  -z interpose          Mark object to interpose all DSOs but executable
  -z loadfltr           Mark object requiring immediate process
  -z muldefs            Allow multiple definitions
  -z nocombreloc        Don't merge dynamic relocs into one section
  -z nocopyreloc        Don't create copy relocs
  -z nodefaultlib       Mark object not to use default search paths
  -z nodelete           Mark DSO non-deletable at runtime
  -z nodlopen           Mark DSO not available to dlopen
  -z nodump             Mark DSO not available to dldump
  -z noexecstack        Mark executable as not requiring executable stack
  -z norelro            Don't create RELRO program header
  -z now                Mark object non-lazy runtime binding
  -z origin             Mark object requiring immediate $ORIGIN processing
                          at runtime
  -z relro              Create RELRO program header
  -z KEYWORD            Ignored for Solaris compatibility
  --emit-stub-syms      Label linker stubs with a symbol.
  --no-tls-optimize     Don't try to optimize TLS accesses.
  --bss-plt             Force old-style BSS PLT.
  --sdata-got           Force GOT location just before .sdata.
elf32ppcsim: 
  -Bgroup               Selects group name lookup rules for DSO
  --disable-new-dtags   Disable new dynamic tags
  --enable-new-dtags    Enable new dynamic tags
  --eh-frame-hdr        Create .eh_frame_hdr section
  -z combreloc          Merge dynamic relocs into one section and sort
  -z defs               Report unresolved symbols in object files.
  -z execstack          Mark executable as requiring executable stack
  -z initfirst          Mark DSO to be initialized first at runtime
  -z interpose          Mark object to interpose all DSOs but executable
  -z loadfltr           Mark object requiring immediate process
  -z muldefs            Allow multiple definitions
  -z nocombreloc        Don't merge dynamic relocs into one section
  -z nocopyreloc        Don't create copy relocs
  -z nodefaultlib       Mark object not to use default search paths
  -z nodelete           Mark DSO non-deletable at runtime
  -z nodlopen           Mark DSO not available to dlopen
  -z nodump             Mark DSO not available to dldump
  -z noexecstack        Mark executable as not requiring executable stack
  -z norelro            Don't create RELRO program header
  -z now                Mark object non-lazy runtime binding
  -z origin             Mark object requiring immediate $ORIGIN processing
                          at runtime
  -z relro              Create RELRO program header
  -z KEYWORD            Ignored for Solaris compatibility
  --emit-stub-syms      Label linker stubs with a symbol.
  --no-tls-optimize     Don't try to optimize TLS accesses.
  --bss-plt             Force old-style BSS PLT.
  --sdata-got           Force GOT location just before .sdata.
elf64ppc: 
  -Bgroup               Selects group name lookup rules for DSO
  --disable-new-dtags   Disable new dynamic tags
  --enable-new-dtags    Enable new dynamic tags
  --eh-frame-hdr        Create .eh_frame_hdr section
  -z combreloc          Merge dynamic relocs into one section and sort
  -z defs               Report unresolved symbols in object files.
  -z execstack          Mark executable as requiring executable stack
  -z initfirst          Mark DSO to be initialized first at runtime
  -z interpose          Mark object to interpose all DSOs but executable
  -z loadfltr           Mark object requiring immediate process
  -z muldefs            Allow multiple definitions
  -z nocombreloc        Don't merge dynamic relocs into one section
  -z nocopyreloc        Don't create copy relocs
  -z nodefaultlib       Mark object not to use default search paths
  -z nodelete           Mark DSO non-deletable at runtime
  -z nodlopen           Mark DSO not available to dlopen
  -z nodump             Mark DSO not available to dldump
  -z noexecstack        Mark executable as not requiring executable stack
  -z norelro            Don't create RELRO program header
  -z now                Mark object non-lazy runtime binding
  -z origin             Mark object requiring immediate $ORIGIN processing
                          at runtime
  -z relro              Create RELRO program header
  -z KEYWORD            Ignored for Solaris compatibility
  --stub-group-size=N   Maximum size of a group of input sections that can be
                          handled by one stub section.  A negative value
                          locates all stubs before their branches (with a
                          group size of -N), while a positive value allows
                          two groups of input sections, one before, and one
                          after each stub section.  Values of +/-1 indicate
                          the linker should choose suitable defaults.
  --emit-stub-syms      Label linker stubs with a symbol.
  --dotsyms             For every version pattern "foo" in a version script,
                          add ".foo" so that function code symbols are
                          treated the same as function descriptor symbols.
                          Defaults to on.
  --no-dotsyms          Don't do anything special in version scripts.
  --no-tls-optimize     Don't try to optimize TLS accesses.
  --no-opd-optimize     Don't optimize the OPD section.
  --no-toc-optimize     Don't optimize the TOC section.
  --no-multi-toc        Disallow automatic multiple toc sections.
  --non-overlapping-opd Canonicalize .opd, so that there are no overlapping
                          .opd entries.

Report bugs to <URL:http://www.sourceware.org/bugzilla/>

[-- Attachment #2: lparmap.s --]
[-- Type: text/plain, Size: 67771 bytes --]

	.file	"lparmap.c"

 # rs6000/powerpc options: -mcpu=power4 -msdata=none
	.section	".toc","aw"
	.section	".text"
 # GNU C version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21) (powerpc-linux-gnu)
 #	compiled by GNU C version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21).
 # GGC heuristics: --param ggc-min-expand=47 --param ggc-min-heapsize=32031
 # options passed:  -nostdinc -Iinclude -imultilib -D__unix__
 # -D__gnu_linux__ -D__linux__ -Dunix -D__unix -Dlinux -D__linux
 # -Asystem=linux -Asystem=unix -Asystem=posix -D__KERNEL__
 # -DKBUILD_STR(s)=#s -DKBUILD_BASENAME=KBUILD_STR(lparmap)
 # -DKBUILD_MODNAME=KBUILD_STR(lparmap) -isystem -include -MD -mbig -m64
 # -msoft-float -mtraceback=none -mcall-aixdesc -mcpu=power4 -mno-altivec
 # -mno-string -mno-minimal-toc -auxbase-strip -g -Os -Wall -Wundef
 # -Wstrict-prototypes -Wno-trigraphs -Werror-implicit-function-declaration
 # -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-aliasing
 # -fno-common -funit-at-a-time -fomit-frame-pointer -fno-stack-protector
 # -fverbose-asm
 # options enabled:  -falign-loops -fargument-alias -fbranch-count-reg
 # -fcaller-saves -fcprop-registers -fcrossjumping -fcse-follow-jumps
 # -fcse-skip-blocks -fdefer-pop -fdelete-null-pointer-checks
 # -fearly-inlining -feliminate-unused-debug-types
 # -fexpensive-optimizations -ffunction-cse -fgcse -fgcse-lm
 # -fguess-branch-probability -fident -fif-conversion -fif-conversion2
 # -finline-functions -finline-functions-called-once -fipa-pure-const
 # -fipa-reference -fipa-type-escape -fivopts -fkeep-static-consts
 # -fleading-underscore -floop-optimize -floop-optimize2 -fmath-errno
 # -fmerge-constants -fomit-frame-pointer -foptimize-register-move
 # -foptimize-sibling-calls -fpeephole -fpeephole2 -freg-struct-return
 # -fregmove -freorder-functions -frerun-cse-after-loop -frerun-loop-opt
 # -fsched-interblock -fsched-spec -fsched-stalled-insns-dep
 # -fschedule-insns -fschedule-insns2 -fshow-column -fsplit-ivs-in-unroller
 # -fstrength-reduce -fthread-jumps -ftrapping-math -ftree-ccp
 # -ftree-copy-prop -ftree-copyrename -ftree-dce -ftree-dominator-opts
 # -ftree-dse -ftree-fre -ftree-loop-im -ftree-loop-ivcanon
 # -ftree-loop-optimize -ftree-lrs -ftree-salias -ftree-sink -ftree-sra
 # -ftree-store-ccp -ftree-store-copy-prop -ftree-ter
 # -ftree-vect-loop-version -ftree-vrp -funit-at-a-time -fvar-tracking
 # -fverbose-asm -fzero-initialized-in-bss -m64 -maix-struct-return -mbig
 # -mbig-endian -mbss-plt -mfp-in-toc -mfused-madd -mmfcrf -mmultiple
 # -mnew-mnemonics -mpowerpc -mpowerpc-gfxopt -mpowerpc64 -msched-prolog
 # -msoft-float -mupdate -mvrsave

	.section	.debug_abbrev,"",@progbits
.Ldebug_abbrev0:
	.section	.debug_info,"",@progbits
.Ldebug_info0:
	.section	.debug_line,"",@progbits
.Ldebug_line0:
	.section	".text"
.Ltext0:
 # Compiler executable checksum: c7d476ce5349d99159bf3108448be7fe

	.globl xLparMap
	.section	.text #,"a",@progbits
	.align 3
	.type	xLparMap, @object
	.size	xLparMap, 120
xLparMap:
 # xNumberEsids:
	.quad	2
 # xNumberRanges:
	.quad	1
 # xSegmentTableOffs:
	.quad	6
 # xEsids:
	.zero	40
 # xKernelEsid:
	.quad	51539607552
 # xKernelVsid:
	.quad	17330416788
 # xKernelEsid:
	.quad	55834574848
 # xKernelVsid:
	.quad	64587602677
 # xRanges:
 # xPages:
	.quad	8192
 # xOffset:
	.quad	0
 # xVPN:
	.quad	1135766194618368
	.file 1 "include/asm/cache.h"
	.file 2 "include/asm/types.h"
	.file 3 "include/asm/mmu-hash64.h"
	.file 4 "include/asm/cputable.h"
	.file 5 "include/linux/kernel.h"
	.file 6 "include/asm/paca.h"
	.file 7 "include/asm/lppaca.h"
	.file 8 "include/asm/system.h"
	.file 9 "include/asm/ptrace.h"
	.file 10 "include/linux/mmzone.h"
	.file 11 "include/asm/mmzone.h"
	.file 12 "include/linux/list.h"
	.file 13 "include/linux/spinlock_types.h"
	.file 14 "include/asm/spinlock_types.h"
	.file 15 "include/linux/seqlock.h"
	.file 16 "include/asm/atomic.h"
	.file 17 "include/asm-generic/atomic.h"
	.file 18 "include/linux/wait.h"
	.file 19 "include/linux/cpumask.h"
	.file 20 "include/linux/timex.h"
	.file 21 "include/linux/jiffies.h"
	.file 22 "include/linux/slub_def.h"
	.file 23 "include/linux/slab.h"
	.file 24 "include/linux/sysfs.h"
	.file 25 "include/linux/kobject.h"
	.file 26 "include/linux/kref.h"
	.file 27 "include/linux/types.h"
	.file 28 "include/asm/posix_types.h"
	.file 29 "include/asm/tlbflush.h"
	.file 30 "include/asm/page.h"
	.file 31 "include/asm/page_64.h"
	.file 32 "arch/powerpc/kernel/lparmap.c"
	.file 33 "include/asm/iseries/lpar_map.h"
	.section	".text"
.Letext0:
	.section	.debug_info
	.4byte	0x1947
	.2byte	0x2
	.4byte	.Ldebug_abbrev0
	.byte	0x8
	.uleb128 0x1
	.4byte	.Ldebug_line0
	.8byte	.Letext0
	.8byte	.Ltext0
	.4byte	.LASF345
	.byte	0x1
	.4byte	.LASF346
	.4byte	.LASF347
	.uleb128 0x2
	.4byte	.LASF0
	.byte	0x4
	.byte	0x7
	.uleb128 0x2
	.4byte	.LASF1
	.byte	0x1
	.byte	0x6
	.uleb128 0x2
	.4byte	.LASF2
	.byte	0x1
	.byte	0x8
	.uleb128 0x2
	.4byte	.LASF3
	.byte	0x2
	.byte	0x5
	.uleb128 0x2
	.4byte	.LASF4
	.byte	0x2
	.byte	0x7
	.uleb128 0x3
	.string	"int"
	.byte	0x4
	.byte	0x5
	.uleb128 0x2
	.4byte	.LASF5
	.byte	0x8
	.byte	0x5
	.uleb128 0x2
	.4byte	.LASF6
	.byte	0x8
	.byte	0x7
	.uleb128 0x2
	.4byte	.LASF6
	.byte	0x8
	.byte	0x7
	.uleb128 0x4
	.string	"s8"
	.byte	0x2
	.byte	0x44
	.4byte	0x34
	.uleb128 0x4
	.string	"u8"
	.byte	0x2
	.byte	0x45
	.4byte	0x3b
	.uleb128 0x4
	.string	"s16"
	.byte	0x2
	.byte	0x47
	.4byte	0x42
	.uleb128 0x4
	.string	"u16"
	.byte	0x2
	.byte	0x48
	.4byte	0x49
	.uleb128 0x4
	.string	"u32"
	.byte	0x2
	.byte	0x4b
	.4byte	0x2d
	.uleb128 0x4
	.string	"u64"
	.byte	0x2
	.byte	0x4f
	.4byte	0x5e
	.uleb128 0x5
	.4byte	0x129
	.4byte	.LASF20
	.byte	0x20
	.byte	0x1
	.byte	0x17
	.uleb128 0x6
	.4byte	.LASF7
	.byte	0x1
	.byte	0x18
	.4byte	0x96
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF8
	.byte	0x1
	.byte	0x19
	.4byte	0x96
	.byte	0x2
	.byte	0x23
	.uleb128 0x4
	.uleb128 0x6
	.4byte	.LASF9
	.byte	0x1
	.byte	0x1a
	.4byte	0x96
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF10
	.byte	0x1
	.byte	0x1b
	.4byte	0x96
	.byte	0x2
	.byte	0x23
	.uleb128 0xc
	.uleb128 0x6
	.4byte	.LASF11
	.byte	0x1
	.byte	0x1c
	.4byte	0x96
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.uleb128 0x6
	.4byte	.LASF12
	.byte	0x1
	.byte	0x1d
	.4byte	0x96
	.byte	0x2
	.byte	0x23
	.uleb128 0x14
	.uleb128 0x6
	.4byte	.LASF13
	.byte	0x1
	.byte	0x1e
	.4byte	0x96
	.byte	0x2
	.byte	0x23
	.uleb128 0x18
	.uleb128 0x6
	.4byte	.LASF14
	.byte	0x1
	.byte	0x1f
	.4byte	0x96
	.byte	0x2
	.byte	0x23
	.uleb128 0x1c
	.byte	0x0
	.uleb128 0x7
	.4byte	.LASF15
	.byte	0x1f
	.byte	0x26
	.4byte	0x5e
	.uleb128 0x8
	.byte	0x8
	.4byte	0x13a
	.uleb128 0x9
	.4byte	0x13f
	.uleb128 0x2
	.4byte	.LASF16
	.byte	0x1
	.byte	0x8
	.uleb128 0x8
	.byte	0x8
	.4byte	0x13f
	.uleb128 0x7
	.4byte	.LASF17
	.byte	0x1e
	.byte	0x99
	.4byte	0x129
	.uleb128 0xa
	.4byte	0x17c
	.byte	0x10
	.byte	0x1e
	.byte	0x9e
	.uleb128 0xb
	.string	"pte"
	.byte	0x1e
	.byte	0x9e
	.4byte	0x14c
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF18
	.byte	0x1e
	.byte	0x9e
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.byte	0x0
	.uleb128 0x7
	.4byte	.LASF19
	.byte	0x1e
	.byte	0x9e
	.4byte	0x157
	.uleb128 0x5
	.4byte	0x1da
	.4byte	.LASF21
	.byte	0x20
	.byte	0x3
	.byte	0x80
	.uleb128 0x6
	.4byte	.LASF22
	.byte	0x3
	.byte	0x81
	.4byte	0x2d
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF23
	.byte	0x3
	.byte	0x82
	.4byte	0x2d
	.byte	0x2
	.byte	0x23
	.uleb128 0x4
	.uleb128 0x6
	.4byte	.LASF24
	.byte	0x3
	.byte	0x83
	.4byte	0x2d
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF25
	.byte	0x3
	.byte	0x84
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.uleb128 0x6
	.4byte	.LASF26
	.byte	0x3
	.byte	0x85
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x18
	.byte	0x0
	.uleb128 0xc
	.4byte	.LASF27
	.byte	0x3
	.2byte	0x16a
	.4byte	0x5e
	.uleb128 0xd
	.4byte	0x23a
	.byte	0x28
	.byte	0x3
	.2byte	0x16c
	.uleb128 0xe
	.string	"id"
	.byte	0x3
	.2byte	0x16d
	.4byte	0x1da
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0xf
	.4byte	.LASF28
	.byte	0x3
	.2byte	0x16e
	.4byte	0x8b
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0xf
	.4byte	.LASF29
	.byte	0x3
	.2byte	0x171
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.uleb128 0xf
	.4byte	.LASF30
	.byte	0x3
	.2byte	0x172
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x18
	.uleb128 0xf
	.4byte	.LASF31
	.byte	0x3
	.2byte	0x176
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x20
	.byte	0x0
	.uleb128 0xc
	.4byte	.LASF32
	.byte	0x3
	.2byte	0x177
	.4byte	0x1e6
	.uleb128 0x7
	.4byte	.LASF33
	.byte	0x4
	.byte	0x29
	.4byte	0x251
	.uleb128 0x8
	.byte	0x8
	.4byte	0x257
	.uleb128 0x10
	.4byte	0x268
	.byte	0x1
	.uleb128 0x11
	.4byte	0x5e
	.uleb128 0x11
	.4byte	0x268
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x26e
	.uleb128 0x5
	.4byte	0x369
	.4byte	.LASF34
	.byte	0x70
	.byte	0x4
	.byte	0x27
	.uleb128 0x6
	.4byte	.LASF35
	.byte	0x4
	.byte	0x3e
	.4byte	0x2d
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF36
	.byte	0x4
	.byte	0x3f
	.4byte	0x2d
	.byte	0x2
	.byte	0x23
	.uleb128 0x4
	.uleb128 0x6
	.4byte	.LASF37
	.byte	0x4
	.byte	0x41
	.4byte	0x146
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF38
	.byte	0x4
	.byte	0x42
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.uleb128 0x6
	.4byte	.LASF39
	.byte	0x4
	.byte	0x43
	.4byte	0x2d
	.byte	0x2
	.byte	0x23
	.uleb128 0x18
	.uleb128 0x6
	.4byte	.LASF40
	.byte	0x4
	.byte	0x46
	.4byte	0x2d
	.byte	0x2
	.byte	0x23
	.uleb128 0x1c
	.uleb128 0x6
	.4byte	.LASF41
	.byte	0x4
	.byte	0x47
	.4byte	0x2d
	.byte	0x2
	.byte	0x23
	.uleb128 0x20
	.uleb128 0x6
	.4byte	.LASF42
	.byte	0x4
	.byte	0x4a
	.4byte	0x2d
	.byte	0x2
	.byte	0x23
	.uleb128 0x24
	.uleb128 0x6
	.4byte	.LASF43
	.byte	0x4
	.byte	0x4b
	.4byte	0x3b3
	.byte	0x2
	.byte	0x23
	.uleb128 0x28
	.uleb128 0x6
	.4byte	.LASF44
	.byte	0x4
	.byte	0x50
	.4byte	0x246
	.byte	0x2
	.byte	0x23
	.uleb128 0x30
	.uleb128 0x6
	.4byte	.LASF45
	.byte	0x4
	.byte	0x52
	.4byte	0x369
	.byte	0x2
	.byte	0x23
	.uleb128 0x38
	.uleb128 0x6
	.4byte	.LASF46
	.byte	0x4
	.byte	0x55
	.4byte	0x146
	.byte	0x2
	.byte	0x23
	.uleb128 0x40
	.uleb128 0x6
	.4byte	.LASF47
	.byte	0x4
	.byte	0x58
	.4byte	0x37c
	.byte	0x2
	.byte	0x23
	.uleb128 0x48
	.uleb128 0x6
	.4byte	.LASF48
	.byte	0x4
	.byte	0x5b
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x50
	.uleb128 0x6
	.4byte	.LASF49
	.byte	0x4
	.byte	0x5c
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x58
	.uleb128 0x6
	.4byte	.LASF50
	.byte	0x4
	.byte	0x5f
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x60
	.uleb128 0x6
	.4byte	.LASF51
	.byte	0x4
	.byte	0x62
	.4byte	0x146
	.byte	0x2
	.byte	0x23
	.uleb128 0x68
	.byte	0x0
	.uleb128 0x7
	.4byte	.LASF52
	.byte	0x4
	.byte	0x2a
	.4byte	0x374
	.uleb128 0x8
	.byte	0x8
	.4byte	0x37a
	.uleb128 0x12
	.byte	0x1
	.uleb128 0x13
	.4byte	0x3b3
	.4byte	.LASF60
	.byte	0x4
	.byte	0x4
	.byte	0x2c
	.uleb128 0x14
	.4byte	.LASF53
	.sleb128 0
	.uleb128 0x14
	.4byte	.LASF54
	.sleb128 1
	.uleb128 0x14
	.4byte	.LASF55
	.sleb128 2
	.uleb128 0x14
	.4byte	.LASF56
	.sleb128 3
	.uleb128 0x14
	.4byte	.LASF57
	.sleb128 4
	.uleb128 0x14
	.4byte	.LASF58
	.sleb128 5
	.uleb128 0x14
	.4byte	.LASF59
	.sleb128 6
	.byte	0x0
	.uleb128 0x13
	.4byte	0x3d2
	.4byte	.LASF61
	.byte	0x4
	.byte	0x4
	.byte	0x36
	.uleb128 0x14
	.4byte	.LASF62
	.sleb128 0
	.uleb128 0x14
	.4byte	.LASF63
	.sleb128 1
	.uleb128 0x14
	.4byte	.LASF64
	.sleb128 2
	.byte	0x0
	.uleb128 0x15
	.4byte	0x4a2
	.4byte	.LASF65
	.2byte	0x160
	.byte	0x9
	.byte	0x1d
	.uleb128 0xb
	.string	"gpr"
	.byte	0x9
	.byte	0x1e
	.4byte	0x4a2
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0xb
	.string	"nip"
	.byte	0x9
	.byte	0x1f
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x100
	.uleb128 0xb
	.string	"msr"
	.byte	0x9
	.byte	0x20
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x108
	.uleb128 0x6
	.4byte	.LASF66
	.byte	0x9
	.byte	0x21
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x110
	.uleb128 0xb
	.string	"ctr"
	.byte	0x9
	.byte	0x22
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x118
	.uleb128 0x6
	.4byte	.LASF67
	.byte	0x9
	.byte	0x23
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x120
	.uleb128 0xb
	.string	"xer"
	.byte	0x9
	.byte	0x24
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x128
	.uleb128 0xb
	.string	"ccr"
	.byte	0x9
	.byte	0x25
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x130
	.uleb128 0x6
	.4byte	.LASF68
	.byte	0x9
	.byte	0x27
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x138
	.uleb128 0x6
	.4byte	.LASF69
	.byte	0x9
	.byte	0x2c
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x140
	.uleb128 0xb
	.string	"dar"
	.byte	0x9
	.byte	0x2f
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x148
	.uleb128 0x6
	.4byte	.LASF70
	.byte	0x9
	.byte	0x30
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x150
	.uleb128 0x6
	.4byte	.LASF71
	.byte	0x9
	.byte	0x31
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x158
	.byte	0x0
	.uleb128 0x16
	.4byte	0x4b2
	.4byte	0x5e
	.uleb128 0x17
	.4byte	0x65
	.byte	0x1f
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x3d2
	.uleb128 0x2
	.4byte	.LASF72
	.byte	0x8
	.byte	0x4
	.uleb128 0x7
	.4byte	.LASF73
	.byte	0x1c
	.byte	0xb
	.4byte	0x2d
	.uleb128 0x7
	.4byte	.LASF74
	.byte	0x1c
	.byte	0x22
	.4byte	0x5e
	.uleb128 0x7
	.4byte	.LASF75
	.byte	0x1c
	.byte	0x23
	.4byte	0x57
	.uleb128 0x2
	.4byte	.LASF76
	.byte	0x8
	.byte	0x5
	.uleb128 0x7
	.4byte	.LASF77
	.byte	0x1b
	.byte	0x18
	.4byte	0x4bf
	.uleb128 0x2
	.4byte	.LASF78
	.byte	0x1
	.byte	0x2
	.uleb128 0x7
	.4byte	.LASF79
	.byte	0x1b
	.byte	0x43
	.4byte	0x4ca
	.uleb128 0x7
	.4byte	.LASF80
	.byte	0x1b
	.byte	0x48
	.4byte	0x4d5
	.uleb128 0x16
	.4byte	0x51f
	.4byte	0x5e
	.uleb128 0x17
	.4byte	0x65
	.byte	0x2
	.byte	0x0
	.uleb128 0x18
	.4byte	.LASF257
	.byte	0x1
	.uleb128 0x8
	.byte	0x8
	.4byte	0x51f
	.uleb128 0xa
	.4byte	0x596
	.byte	0x8
	.byte	0x7
	.byte	0x45
	.uleb128 0x6
	.4byte	.LASF81
	.byte	0x7
	.byte	0x46
	.4byte	0x8b
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF82
	.byte	0x7
	.byte	0x47
	.4byte	0x76
	.byte	0x2
	.byte	0x23
	.uleb128 0x2
	.uleb128 0x6
	.4byte	.LASF83
	.byte	0x7
	.byte	0x48
	.4byte	0x76
	.byte	0x2
	.byte	0x23
	.uleb128 0x3
	.uleb128 0x6
	.4byte	.LASF84
	.byte	0x7
	.byte	0x49
	.4byte	0x76
	.byte	0x2
	.byte	0x23
	.uleb128 0x4
	.uleb128 0x6
	.4byte	.LASF85
	.byte	0x7
	.byte	0x4a
	.4byte	0x76
	.byte	0x2
	.byte	0x23
	.uleb128 0x5
	.uleb128 0x6
	.4byte	.LASF86
	.byte	0x7
	.byte	0x4b
	.4byte	0x76
	.byte	0x2
	.byte	0x23
	.uleb128 0x6
	.uleb128 0x6
	.4byte	.LASF87
	.byte	0x7
	.byte	0x4c
	.4byte	0x76
	.byte	0x2
	.byte	0x23
	.uleb128 0x7
	.byte	0x0
	.uleb128 0x19
	.4byte	0x5b5
	.byte	0x8
	.byte	0x7
	.byte	0x43
	.uleb128 0x1a
	.4byte	.LASF88
	.byte	0x7
	.byte	0x44
	.4byte	0xa1
	.uleb128 0x1a
	.4byte	.LASF89
	.byte	0x7
	.byte	0x4d
	.4byte	0x52b
	.byte	0x0
	.uleb128 0x15
	.4byte	0x851
	.4byte	.LASF90
	.2byte	0x400
	.byte	0x7
	.byte	0x24
	.uleb128 0x6
	.4byte	.LASF91
	.byte	0x7
	.byte	0x2b
	.4byte	0x96
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF92
	.byte	0x7
	.byte	0x2c
	.4byte	0x8b
	.byte	0x2
	.byte	0x23
	.uleb128 0x4
	.uleb128 0x6
	.4byte	.LASF93
	.byte	0x7
	.byte	0x2d
	.4byte	0x8b
	.byte	0x2
	.byte	0x23
	.uleb128 0x6
	.uleb128 0x1b
	.4byte	.LASF94
	.byte	0x7
	.byte	0x2e
	.4byte	0x8b
	.byte	0x2
	.byte	0xe
	.byte	0x0
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x1b
	.4byte	.LASF95
	.byte	0x7
	.byte	0x2f
	.4byte	0x76
	.byte	0x1
	.byte	0x1
	.byte	0x6
	.byte	0x2
	.byte	0x23
	.uleb128 0x9
	.uleb128 0x1b
	.4byte	.LASF96
	.byte	0x7
	.byte	0x30
	.4byte	0x76
	.byte	0x1
	.byte	0x1
	.byte	0x7
	.byte	0x2
	.byte	0x23
	.uleb128 0x9
	.uleb128 0x1b
	.4byte	.LASF97
	.byte	0x7
	.byte	0x31
	.4byte	0x851
	.byte	0x1
	.byte	0x8
	.byte	0x0
	.byte	0x2
	.byte	0x23
	.uleb128 0xa
	.uleb128 0x6
	.4byte	.LASF98
	.byte	0x7
	.byte	0x32
	.4byte	0x76
	.byte	0x2
	.byte	0x23
	.uleb128 0xb
	.uleb128 0x6
	.4byte	.LASF99
	.byte	0x7
	.byte	0x33
	.4byte	0x856
	.byte	0x2
	.byte	0x23
	.uleb128 0xc
	.uleb128 0x6
	.4byte	.LASF100
	.byte	0x7
	.byte	0x34
	.4byte	0x856
	.byte	0x2
	.byte	0x23
	.uleb128 0xe
	.uleb128 0x6
	.4byte	.LASF101
	.byte	0x7
	.byte	0x35
	.4byte	0x96
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.uleb128 0x6
	.4byte	.LASF102
	.byte	0x7
	.byte	0x36
	.4byte	0x96
	.byte	0x2
	.byte	0x23
	.uleb128 0x14
	.uleb128 0x6
	.4byte	.LASF103
	.byte	0x7
	.byte	0x37
	.4byte	0x85b
	.byte	0x2
	.byte	0x23
	.uleb128 0x18
	.uleb128 0x6
	.4byte	.LASF104
	.byte	0x7
	.byte	0x38
	.4byte	0x85b
	.byte	0x2
	.byte	0x23
	.uleb128 0x1c
	.uleb128 0x6
	.4byte	.LASF105
	.byte	0x7
	.byte	0x39
	.4byte	0x85b
	.byte	0x2
	.byte	0x23
	.uleb128 0x20
	.uleb128 0x6
	.4byte	.LASF106
	.byte	0x7
	.byte	0x3a
	.4byte	0x96
	.byte	0x2
	.byte	0x23
	.uleb128 0x24
	.uleb128 0x6
	.4byte	.LASF107
	.byte	0x7
	.byte	0x3b
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x28
	.uleb128 0x6
	.4byte	.LASF108
	.byte	0x7
	.byte	0x3c
	.4byte	0x860
	.byte	0x2
	.byte	0x23
	.uleb128 0x30
	.uleb128 0x6
	.4byte	.LASF109
	.byte	0x7
	.byte	0x4e
	.4byte	0x596
	.byte	0x3
	.byte	0x23
	.uleb128 0x80
	.uleb128 0x6
	.4byte	.LASF110
	.byte	0x7
	.byte	0x58
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0x88
	.uleb128 0x6
	.4byte	.LASF111
	.byte	0x7
	.byte	0x5c
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0x90
	.uleb128 0x6
	.4byte	.LASF112
	.byte	0x7
	.byte	0x5d
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0x98
	.uleb128 0x6
	.4byte	.LASF113
	.byte	0x7
	.byte	0x60
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0xa0
	.uleb128 0x6
	.4byte	.LASF114
	.byte	0x7
	.byte	0x61
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0xa8
	.uleb128 0x6
	.4byte	.LASF115
	.byte	0x7
	.byte	0x62
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0xb0
	.uleb128 0x6
	.4byte	.LASF116
	.byte	0x7
	.byte	0x64
	.4byte	0x76
	.byte	0x3
	.byte	0x23
	.uleb128 0xb8
	.uleb128 0x6
	.4byte	.LASF117
	.byte	0x7
	.byte	0x65
	.4byte	0x76
	.byte	0x3
	.byte	0x23
	.uleb128 0xb9
	.uleb128 0x6
	.4byte	.LASF118
	.byte	0x7
	.byte	0x66
	.4byte	0x76
	.byte	0x3
	.byte	0x23
	.uleb128 0xba
	.uleb128 0x6
	.4byte	.LASF119
	.byte	0x7
	.byte	0x67
	.4byte	0x76
	.byte	0x3
	.byte	0x23
	.uleb128 0xbb
	.uleb128 0x6
	.4byte	.LASF120
	.byte	0x7
	.byte	0x68
	.4byte	0x85b
	.byte	0x3
	.byte	0x23
	.uleb128 0xbc
	.uleb128 0x6
	.4byte	.LASF121
	.byte	0x7
	.byte	0x69
	.4byte	0x870
	.byte	0x3
	.byte	0x23
	.uleb128 0xc0
	.uleb128 0x6
	.4byte	.LASF122
	.byte	0x7
	.byte	0x6a
	.4byte	0x870
	.byte	0x3
	.byte	0x23
	.uleb128 0xc8
	.uleb128 0x6
	.4byte	.LASF123
	.byte	0x7
	.byte	0x6b
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0xd0
	.uleb128 0x6
	.4byte	.LASF124
	.byte	0x7
	.byte	0x6c
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0xd8
	.uleb128 0x6
	.4byte	.LASF125
	.byte	0x7
	.byte	0x6d
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0xe0
	.uleb128 0x6
	.4byte	.LASF126
	.byte	0x7
	.byte	0x6e
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0xe8
	.uleb128 0x6
	.4byte	.LASF127
	.byte	0x7
	.byte	0x6f
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0xf0
	.uleb128 0x6
	.4byte	.LASF128
	.byte	0x7
	.byte	0x70
	.4byte	0x85b
	.byte	0x3
	.byte	0x23
	.uleb128 0xf8
	.uleb128 0x6
	.4byte	.LASF129
	.byte	0x7
	.byte	0x71
	.4byte	0x8b
	.byte	0x3
	.byte	0x23
	.uleb128 0xfc
	.uleb128 0x6
	.4byte	.LASF130
	.byte	0x7
	.byte	0x72
	.4byte	0x76
	.byte	0x3
	.byte	0x23
	.uleb128 0xfe
	.uleb128 0x6
	.4byte	.LASF131
	.byte	0x7
	.byte	0x73
	.4byte	0x76
	.byte	0x3
	.byte	0x23
	.uleb128 0xff
	.uleb128 0x6
	.4byte	.LASF132
	.byte	0x7
	.byte	0x7f
	.4byte	0x85b
	.byte	0x3
	.byte	0x23
	.uleb128 0x100
	.uleb128 0x6
	.4byte	.LASF133
	.byte	0x7
	.byte	0x80
	.4byte	0x875
	.byte	0x3
	.byte	0x23
	.uleb128 0x104
	.uleb128 0x6
	.4byte	.LASF134
	.byte	0x7
	.byte	0x85
	.4byte	0x885
	.byte	0x3
	.byte	0x23
	.uleb128 0x180
	.byte	0x0
	.uleb128 0x1c
	.4byte	0x76
	.uleb128 0x1c
	.4byte	0x8b
	.uleb128 0x1c
	.4byte	0x96
	.uleb128 0x16
	.4byte	0x870
	.4byte	0x76
	.uleb128 0x17
	.4byte	0x65
	.byte	0x4f
	.byte	0x0
	.uleb128 0x1c
	.4byte	0xa1
	.uleb128 0x16
	.4byte	0x885
	.4byte	0x76
	.uleb128 0x17
	.4byte	0x65
	.byte	0x7b
	.byte	0x0
	.uleb128 0x16
	.4byte	0x895
	.4byte	0x76
	.uleb128 0x17
	.4byte	0x65
	.byte	0xff
	.byte	0x0
	.uleb128 0xa
	.4byte	0x8ba
	.byte	0x10
	.byte	0x7
	.byte	0x93
	.uleb128 0x6
	.4byte	.LASF135
	.byte	0x7
	.byte	0x94
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF136
	.byte	0x7
	.byte	0x95
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.byte	0x0
	.uleb128 0x5
	.4byte	0x8ff
	.4byte	.LASF137
	.byte	0x80
	.byte	0x7
	.byte	0x8f
	.uleb128 0x6
	.4byte	.LASF138
	.byte	0x7
	.byte	0x90
	.4byte	0x96
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF139
	.byte	0x7
	.byte	0x91
	.4byte	0x96
	.byte	0x2
	.byte	0x23
	.uleb128 0x4
	.uleb128 0x6
	.4byte	.LASF81
	.byte	0x7
	.byte	0x92
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF140
	.byte	0x7
	.byte	0x96
	.4byte	0x8ff
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.byte	0x0
	.uleb128 0x16
	.4byte	0x90f
	.4byte	0x895
	.uleb128 0x17
	.4byte	0x65
	.byte	0x2
	.byte	0x0
	.uleb128 0x15
	.4byte	0xae2
	.4byte	.LASF141
	.2byte	0x200
	.byte	0x6
	.byte	0x17
	.uleb128 0x6
	.4byte	.LASF142
	.byte	0x6
	.byte	0x33
	.4byte	0xae2
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF143
	.byte	0x6
	.byte	0x35
	.4byte	0xae8
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF144
	.byte	0x6
	.byte	0x3e
	.4byte	0x8b
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.uleb128 0x6
	.4byte	.LASF145
	.byte	0x6
	.byte	0x3f
	.4byte	0x8b
	.byte	0x2
	.byte	0x23
	.uleb128 0x12
	.uleb128 0x6
	.4byte	.LASF146
	.byte	0x6
	.byte	0x41
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x18
	.uleb128 0x6
	.4byte	.LASF147
	.byte	0x6
	.byte	0x42
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x20
	.uleb128 0x6
	.4byte	.LASF148
	.byte	0x6
	.byte	0x43
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x28
	.uleb128 0x6
	.4byte	.LASF149
	.byte	0x6
	.byte	0x44
	.4byte	0xae8
	.byte	0x2
	.byte	0x23
	.uleb128 0x30
	.uleb128 0x6
	.4byte	.LASF150
	.byte	0x6
	.byte	0x45
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x38
	.uleb128 0x6
	.4byte	.LASF151
	.byte	0x6
	.byte	0x46
	.4byte	0x80
	.byte	0x2
	.byte	0x23
	.uleb128 0x40
	.uleb128 0x6
	.4byte	.LASF152
	.byte	0x6
	.byte	0x47
	.4byte	0x76
	.byte	0x2
	.byte	0x23
	.uleb128 0x42
	.uleb128 0x6
	.4byte	.LASF153
	.byte	0x6
	.byte	0x49
	.4byte	0xaea
	.byte	0x2
	.byte	0x23
	.uleb128 0x48
	.uleb128 0x6
	.4byte	.LASF154
	.byte	0x6
	.byte	0x4f
	.4byte	0xaf0
	.byte	0x3
	.byte	0x23
	.uleb128 0x80
	.uleb128 0x6
	.4byte	.LASF155
	.byte	0x6
	.byte	0x50
	.4byte	0xaf0
	.byte	0x3
	.byte	0x23
	.uleb128 0xd0
	.uleb128 0x6
	.4byte	.LASF156
	.byte	0x6
	.byte	0x51
	.4byte	0xaf0
	.byte	0x3
	.byte	0x23
	.uleb128 0x120
	.uleb128 0x6
	.4byte	.LASF157
	.byte	0x6
	.byte	0x54
	.4byte	0x23a
	.byte	0x3
	.byte	0x23
	.uleb128 0x170
	.uleb128 0x6
	.4byte	.LASF158
	.byte	0x6
	.byte	0x55
	.4byte	0x8b
	.byte	0x3
	.byte	0x23
	.uleb128 0x198
	.uleb128 0x6
	.4byte	.LASF159
	.byte	0x6
	.byte	0x56
	.4byte	0x8b
	.byte	0x3
	.byte	0x23
	.uleb128 0x19a
	.uleb128 0x6
	.4byte	.LASF160
	.byte	0x6
	.byte	0x57
	.4byte	0xb00
	.byte	0x3
	.byte	0x23
	.uleb128 0x19c
	.uleb128 0x6
	.4byte	.LASF161
	.byte	0x6
	.byte	0x5c
	.4byte	0x525
	.byte	0x3
	.byte	0x23
	.uleb128 0x1b0
	.uleb128 0x6
	.4byte	.LASF162
	.byte	0x6
	.byte	0x5d
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0x1b8
	.uleb128 0x6
	.4byte	.LASF163
	.byte	0x6
	.byte	0x5e
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0x1c0
	.uleb128 0x6
	.4byte	.LASF164
	.byte	0x6
	.byte	0x5f
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0x1c8
	.uleb128 0x6
	.4byte	.LASF165
	.byte	0x6
	.byte	0x60
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0x1d0
	.uleb128 0x6
	.4byte	.LASF166
	.byte	0x6
	.byte	0x61
	.4byte	0x8b
	.byte	0x3
	.byte	0x23
	.uleb128 0x1d8
	.uleb128 0x6
	.4byte	.LASF167
	.byte	0x6
	.byte	0x62
	.4byte	0x76
	.byte	0x3
	.byte	0x23
	.uleb128 0x1da
	.uleb128 0x6
	.4byte	.LASF168
	.byte	0x6
	.byte	0x63
	.4byte	0x76
	.byte	0x3
	.byte	0x23
	.uleb128 0x1db
	.uleb128 0x6
	.4byte	.LASF169
	.byte	0x6
	.byte	0x64
	.4byte	0x76
	.byte	0x3
	.byte	0x23
	.uleb128 0x1dc
	.uleb128 0x6
	.4byte	.LASF170
	.byte	0x6
	.byte	0x67
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0x1e0
	.uleb128 0x6
	.4byte	.LASF171
	.byte	0x6
	.byte	0x68
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0x1e8
	.uleb128 0x6
	.4byte	.LASF172
	.byte	0x6
	.byte	0x69
	.4byte	0xa1
	.byte	0x3
	.byte	0x23
	.uleb128 0x1f0
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x5b5
	.uleb128 0x1d
	.byte	0x8
	.uleb128 0x8
	.byte	0x8
	.4byte	0x8ba
	.uleb128 0x16
	.4byte	0xb00
	.4byte	0xa1
	.uleb128 0x17
	.4byte	0x65
	.byte	0x9
	.byte	0x0
	.uleb128 0x16
	.4byte	0xb10
	.4byte	0x8b
	.uleb128 0x17
	.4byte	0x65
	.byte	0x7
	.byte	0x0
	.uleb128 0x5
	.4byte	0xb39
	.4byte	.LASF173
	.byte	0x10
	.byte	0xc
	.byte	0x15
	.uleb128 0x6
	.4byte	.LASF174
	.byte	0xc
	.byte	0x16
	.4byte	0xb39
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF175
	.byte	0xc
	.byte	0x16
	.4byte	0xb39
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0xb10
	.uleb128 0xa
	.4byte	0xb56
	.byte	0x4
	.byte	0xe
	.byte	0x8
	.uleb128 0x6
	.4byte	.LASF176
	.byte	0xe
	.byte	0x9
	.4byte	0xb56
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.byte	0x0
	.uleb128 0x1c
	.4byte	0x2d
	.uleb128 0x7
	.4byte	.LASF177
	.byte	0xe
	.byte	0xa
	.4byte	0xb3f
	.uleb128 0x1c
	.4byte	0x50
	.uleb128 0xa
	.4byte	0xbac
	.byte	0x18
	.byte	0xd
	.byte	0x14
	.uleb128 0x6
	.4byte	.LASF178
	.byte	0xd
	.byte	0x15
	.4byte	0xb5b
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF179
	.byte	0xd
	.byte	0x1a
	.4byte	0x2d
	.byte	0x2
	.byte	0x23
	.uleb128 0x4
	.uleb128 0x6
	.4byte	.LASF180
	.byte	0xd
	.byte	0x1a
	.4byte	0x2d
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF181
	.byte	0xd
	.byte	0x1b
	.4byte	0xae8
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.byte	0x0
	.uleb128 0x7
	.4byte	.LASF182
	.byte	0xd
	.byte	0x20
	.4byte	0xb6b
	.uleb128 0xa
	.4byte	0xbce
	.byte	0x4
	.byte	0x10
	.byte	0x8
	.uleb128 0x6
	.4byte	.LASF183
	.byte	0x10
	.byte	0x8
	.4byte	0xb66
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.byte	0x0
	.uleb128 0x7
	.4byte	.LASF184
	.byte	0x10
	.byte	0x8
	.4byte	0xbb7
	.uleb128 0xa
	.4byte	0xbf0
	.byte	0x8
	.byte	0x10
	.byte	0xf3
	.uleb128 0x6
	.4byte	.LASF183
	.byte	0x10
	.byte	0xf3
	.4byte	0xbf0
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.byte	0x0
	.uleb128 0x1c
	.4byte	0x57
	.uleb128 0x7
	.4byte	.LASF185
	.byte	0x10
	.byte	0xf3
	.4byte	0xbd9
	.uleb128 0x7
	.4byte	.LASF186
	.byte	0x11
	.byte	0x17
	.4byte	0xbf5
	.uleb128 0x5
	.4byte	0xc34
	.4byte	.LASF187
	.byte	0x28
	.byte	0x12
	.byte	0x32
	.uleb128 0x6
	.4byte	.LASF188
	.byte	0x12
	.byte	0x33
	.4byte	0xbac
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF189
	.byte	0x12
	.byte	0x34
	.4byte	0xb10
	.byte	0x2
	.byte	0x23
	.uleb128 0x18
	.byte	0x0
	.uleb128 0x7
	.4byte	.LASF190
	.byte	0x12
	.byte	0x36
	.4byte	0xc0b
	.uleb128 0xa
	.4byte	0xc64
	.byte	0x20
	.byte	0xf
	.byte	0x20
	.uleb128 0x6
	.4byte	.LASF191
	.byte	0xf
	.byte	0x21
	.4byte	0x2d
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF188
	.byte	0xf
	.byte	0x22
	.4byte	0xbac
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.byte	0x0
	.uleb128 0x7
	.4byte	.LASF192
	.byte	0xf
	.byte	0x23
	.4byte	0xc3f
	.uleb128 0x16
	.4byte	0xc7f
	.4byte	0x5e
	.uleb128 0x17
	.4byte	0x65
	.byte	0x0
	.byte	0x0
	.uleb128 0x5
	.4byte	0xca8
	.4byte	.LASF193
	.byte	0x58
	.byte	0xa
	.byte	0x3b
	.uleb128 0x6
	.4byte	.LASF194
	.byte	0xa
	.byte	0x3c
	.4byte	0xca8
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF195
	.byte	0xa
	.byte	0x3d
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x50
	.byte	0x0
	.uleb128 0x16
	.4byte	0xcb8
	.4byte	0xb10
	.uleb128 0x17
	.4byte	0x65
	.byte	0x4
	.byte	0x0
	.uleb128 0x5
	.4byte	0xcd1
	.4byte	.LASF196
	.byte	0x0
	.byte	0xa
	.byte	0x49
	.uleb128 0xb
	.string	"x"
	.byte	0xa
	.byte	0x4a
	.4byte	0xcd1
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.byte	0x0
	.uleb128 0x16
	.4byte	0xce0
	.4byte	0x13f
	.uleb128 0x1e
	.4byte	0x65
	.byte	0x0
	.uleb128 0x5
	.4byte	0xd25
	.4byte	.LASF197
	.byte	0x20
	.byte	0xa
	.byte	0x6d
	.uleb128 0x6
	.4byte	.LASF198
	.byte	0xa
	.byte	0x6e
	.4byte	0x50
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF199
	.byte	0xa
	.byte	0x6f
	.4byte	0x50
	.byte	0x2
	.byte	0x23
	.uleb128 0x4
	.uleb128 0x6
	.4byte	.LASF200
	.byte	0xa
	.byte	0x70
	.4byte	0x50
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF201
	.byte	0xa
	.byte	0x71
	.4byte	0xb10
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.byte	0x0
	.uleb128 0x5
	.4byte	0xd6a
	.4byte	.LASF202
	.byte	0x80
	.byte	0xa
	.byte	0x74
	.uleb128 0xb
	.string	"pcp"
	.byte	0xa
	.byte	0x75
	.4byte	0xd6a
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF203
	.byte	0xa
	.byte	0x77
	.4byte	0x6c
	.byte	0x2
	.byte	0x23
	.uleb128 0x40
	.uleb128 0x6
	.4byte	.LASF204
	.byte	0xa
	.byte	0x7a
	.4byte	0x6c
	.byte	0x2
	.byte	0x23
	.uleb128 0x41
	.uleb128 0x6
	.4byte	.LASF205
	.byte	0xa
	.byte	0x7b
	.4byte	0xd7a
	.byte	0x2
	.byte	0x23
	.uleb128 0x42
	.byte	0x0
	.uleb128 0x16
	.4byte	0xd7a
	.4byte	0xce0
	.uleb128 0x17
	.4byte	0x65
	.byte	0x1
	.byte	0x0
	.uleb128 0x16
	.4byte	0xd8a
	.4byte	0x6c
	.uleb128 0x17
	.4byte	0x65
	.byte	0x13
	.byte	0x0
	.uleb128 0x15
	.4byte	0xf75
	.4byte	.LASF206
	.2byte	0x680
	.byte	0xa
	.byte	0xd7
	.uleb128 0x6
	.4byte	.LASF207
	.byte	0xa
	.byte	0xd9
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF208
	.byte	0xa
	.byte	0xd9
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF209
	.byte	0xa
	.byte	0xd9
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.uleb128 0x6
	.4byte	.LASF210
	.byte	0xa
	.byte	0xe2
	.4byte	0x50f
	.byte	0x2
	.byte	0x23
	.uleb128 0x18
	.uleb128 0x6
	.4byte	.LASF211
	.byte	0xa
	.byte	0xe5
	.4byte	0x50
	.byte	0x2
	.byte	0x23
	.uleb128 0x30
	.uleb128 0x6
	.4byte	.LASF212
	.byte	0xa
	.byte	0xe9
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x38
	.uleb128 0x6
	.4byte	.LASF213
	.byte	0xa
	.byte	0xea
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x40
	.uleb128 0x6
	.4byte	.LASF214
	.byte	0xa
	.byte	0xeb
	.4byte	0xf75
	.byte	0x2
	.byte	0x23
	.uleb128 0x48
	.uleb128 0x6
	.4byte	.LASF188
	.byte	0xa
	.byte	0xf2
	.4byte	0xbac
	.byte	0x3
	.byte	0x23
	.uleb128 0x148
	.uleb128 0x6
	.4byte	.LASF215
	.byte	0xa
	.byte	0xf5
	.4byte	0xc64
	.byte	0x3
	.byte	0x23
	.uleb128 0x160
	.uleb128 0x6
	.4byte	.LASF193
	.byte	0xa
	.byte	0xf7
	.4byte	0xf8b
	.byte	0x3
	.byte	0x23
	.uleb128 0x180
	.uleb128 0xf
	.4byte	.LASF216
	.byte	0xa
	.2byte	0x102
	.4byte	0xcb8
	.byte	0x3
	.byte	0x23
	.uleb128 0x500
	.uleb128 0xf
	.4byte	.LASF217
	.byte	0xa
	.2byte	0x105
	.4byte	0xbac
	.byte	0x3
	.byte	0x23
	.uleb128 0x500
	.uleb128 0xf
	.4byte	.LASF218
	.byte	0xa
	.2byte	0x106
	.4byte	0xb10
	.byte	0x3
	.byte	0x23
	.uleb128 0x518
	.uleb128 0xf
	.4byte	.LASF219
	.byte	0xa
	.2byte	0x107
	.4byte	0xb10
	.byte	0x3
	.byte	0x23
	.uleb128 0x528
	.uleb128 0xf
	.4byte	.LASF220
	.byte	0xa
	.2byte	0x108
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x538
	.uleb128 0xf
	.4byte	.LASF221
	.byte	0xa
	.2byte	0x109
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x540
	.uleb128 0xf
	.4byte	.LASF222
	.byte	0xa
	.2byte	0x10a
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x548
	.uleb128 0xf
	.4byte	.LASF223
	.byte	0xa
	.2byte	0x10b
	.4byte	0x50
	.byte	0x3
	.byte	0x23
	.uleb128 0x550
	.uleb128 0xf
	.4byte	.LASF224
	.byte	0xa
	.2byte	0x10e
	.4byte	0xbce
	.byte	0x3
	.byte	0x23
	.uleb128 0x554
	.uleb128 0xf
	.4byte	.LASF225
	.byte	0xa
	.2byte	0x111
	.4byte	0xf9b
	.byte	0x3
	.byte	0x23
	.uleb128 0x558
	.uleb128 0xf
	.4byte	.LASF226
	.byte	0xa
	.2byte	0x120
	.4byte	0x50
	.byte	0x3
	.byte	0x23
	.uleb128 0x5f8
	.uleb128 0xf
	.4byte	.LASF227
	.byte	0xa
	.2byte	0x123
	.4byte	0xcb8
	.byte	0x3
	.byte	0x23
	.uleb128 0x600
	.uleb128 0xf
	.4byte	.LASF228
	.byte	0xa
	.2byte	0x13e
	.4byte	0xfab
	.byte	0x3
	.byte	0x23
	.uleb128 0x600
	.uleb128 0xf
	.4byte	.LASF229
	.byte	0xa
	.2byte	0x13f
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x608
	.uleb128 0xf
	.4byte	.LASF230
	.byte	0xa
	.2byte	0x140
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x610
	.uleb128 0xf
	.4byte	.LASF231
	.byte	0xa
	.2byte	0x145
	.4byte	0x107e
	.byte	0x3
	.byte	0x23
	.uleb128 0x618
	.uleb128 0xf
	.4byte	.LASF232
	.byte	0xa
	.2byte	0x147
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x620
	.uleb128 0xf
	.4byte	.LASF233
	.byte	0xa
	.2byte	0x153
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x628
	.uleb128 0xf
	.4byte	.LASF234
	.byte	0xa
	.2byte	0x154
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x630
	.uleb128 0xf
	.4byte	.LASF235
	.byte	0xa
	.2byte	0x159
	.4byte	0x134
	.byte	0x3
	.byte	0x23
	.uleb128 0x638
	.byte	0x0
	.uleb128 0x16
	.4byte	0xf85
	.4byte	0xf85
	.uleb128 0x17
	.4byte	0x65
	.byte	0x1f
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0xd25
	.uleb128 0x16
	.4byte	0xf9b
	.4byte	0xc7f
	.uleb128 0x17
	.4byte	0x65
	.byte	0x8
	.byte	0x0
	.uleb128 0x16
	.4byte	0xfab
	.4byte	0xc00
	.uleb128 0x17
	.4byte	0x65
	.byte	0x13
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0xc34
	.uleb128 0x15
	.4byte	0x107e
	.4byte	.LASF236
	.2byte	0x1a00
	.byte	0xa
	.byte	0x40
	.uleb128 0xf
	.4byte	.LASF237
	.byte	0xa
	.2byte	0x1d7
	.4byte	0x1128
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0xf
	.4byte	.LASF238
	.byte	0xa
	.2byte	0x1d8
	.4byte	0x1138
	.byte	0x3
	.byte	0x23
	.uleb128 0x1380
	.uleb128 0xf
	.4byte	.LASF239
	.byte	0xa
	.2byte	0x1d9
	.4byte	0x50
	.byte	0x3
	.byte	0x23
	.uleb128 0x1980
	.uleb128 0xf
	.4byte	.LASF240
	.byte	0xa
	.2byte	0x1dd
	.4byte	0x114e
	.byte	0x3
	.byte	0x23
	.uleb128 0x1988
	.uleb128 0xf
	.4byte	.LASF241
	.byte	0xa
	.2byte	0x1e6
	.4byte	0xbac
	.byte	0x3
	.byte	0x23
	.uleb128 0x1990
	.uleb128 0xf
	.4byte	.LASF242
	.byte	0xa
	.2byte	0x1e8
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x19a8
	.uleb128 0xf
	.4byte	.LASF243
	.byte	0xa
	.2byte	0x1e9
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x19b0
	.uleb128 0xf
	.4byte	.LASF244
	.byte	0xa
	.2byte	0x1ea
	.4byte	0x5e
	.byte	0x3
	.byte	0x23
	.uleb128 0x19b8
	.uleb128 0xf
	.4byte	.LASF245
	.byte	0xa
	.2byte	0x1ec
	.4byte	0x50
	.byte	0x3
	.byte	0x23
	.uleb128 0x19c0
	.uleb128 0xf
	.4byte	.LASF246
	.byte	0xa
	.2byte	0x1ed
	.4byte	0xc34
	.byte	0x3
	.byte	0x23
	.uleb128 0x19c8
	.uleb128 0xf
	.4byte	.LASF247
	.byte	0xa
	.2byte	0x1ee
	.4byte	0x525
	.byte	0x3
	.byte	0x23
	.uleb128 0x19f0
	.uleb128 0xf
	.4byte	.LASF248
	.byte	0xa
	.2byte	0x1ef
	.4byte	0x50
	.byte	0x3
	.byte	0x23
	.uleb128 0x19f8
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0xfb1
	.uleb128 0x1f
	.4byte	0x10bf
	.4byte	.LASF249
	.byte	0x70
	.byte	0xa
	.2byte	0x1a2
	.uleb128 0xf
	.4byte	.LASF250
	.byte	0xa
	.2byte	0x1a3
	.4byte	0x10bf
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0xf
	.4byte	.LASF251
	.byte	0xa
	.2byte	0x1a4
	.4byte	0xc6f
	.byte	0x2
	.byte	0x23
	.uleb128 0x60
	.uleb128 0xf
	.4byte	.LASF252
	.byte	0xa
	.2byte	0x1a5
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x68
	.byte	0x0
	.uleb128 0x16
	.4byte	0x10cf
	.4byte	0x49
	.uleb128 0x17
	.4byte	0x65
	.byte	0x2f
	.byte	0x0
	.uleb128 0x20
	.4byte	0x110c
	.4byte	.LASF253
	.2byte	0x200
	.byte	0xa
	.2byte	0x1b5
	.uleb128 0xf
	.4byte	.LASF254
	.byte	0xa
	.2byte	0x1b6
	.4byte	0x110c
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0xf
	.4byte	.LASF255
	.byte	0xa
	.2byte	0x1b7
	.4byte	0x1112
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0xf
	.4byte	.LASF256
	.byte	0xa
	.2byte	0x1b9
	.4byte	0x1084
	.byte	0x3
	.byte	0x23
	.uleb128 0x190
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x1084
	.uleb128 0x16
	.4byte	0x1122
	.4byte	0x1122
	.uleb128 0x17
	.4byte	0x65
	.byte	0x30
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0xd8a
	.uleb128 0x16
	.4byte	0x1138
	.4byte	0xd8a
	.uleb128 0x17
	.4byte	0x65
	.byte	0x2
	.byte	0x0
	.uleb128 0x16
	.4byte	0x1148
	.4byte	0x10cf
	.uleb128 0x17
	.4byte	0x65
	.byte	0x2
	.byte	0x0
	.uleb128 0x18
	.4byte	.LASF258
	.byte	0x1
	.uleb128 0x8
	.byte	0x8
	.4byte	0x1148
	.uleb128 0xa
	.4byte	0x116b
	.byte	0x8
	.byte	0x13
	.byte	0x58
	.uleb128 0x6
	.4byte	.LASF259
	.byte	0x13
	.byte	0x58
	.4byte	0xc6f
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.byte	0x0
	.uleb128 0x7
	.4byte	.LASF260
	.byte	0x13
	.byte	0x58
	.4byte	0x1154
	.uleb128 0x1f
	.4byte	0x11a2
	.4byte	.LASF261
	.byte	0x10
	.byte	0xa
	.2byte	0x2de
	.uleb128 0xf
	.4byte	.LASF262
	.byte	0xa
	.2byte	0x2eb
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0xf
	.4byte	.LASF263
	.byte	0xa
	.2byte	0x2ee
	.4byte	0x11a2
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x5e
	.uleb128 0x5
	.4byte	0x11df
	.4byte	.LASF264
	.byte	0x18
	.byte	0x18
	.byte	0x19
	.uleb128 0x6
	.4byte	.LASF235
	.byte	0x18
	.byte	0x1a
	.4byte	0x134
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF181
	.byte	0x18
	.byte	0x1b
	.4byte	0x11e5
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF265
	.byte	0x18
	.byte	0x1c
	.4byte	0x4e7
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.byte	0x0
	.uleb128 0x18
	.4byte	.LASF266
	.byte	0x1
	.uleb128 0x8
	.byte	0x8
	.4byte	0x11df
	.uleb128 0x8
	.byte	0x8
	.4byte	0x11f1
	.uleb128 0x8
	.byte	0x8
	.4byte	0x11a8
	.uleb128 0x8
	.byte	0x8
	.4byte	0x11fd
	.uleb128 0x5
	.4byte	0x1287
	.4byte	.LASF267
	.byte	0x78
	.byte	0x18
	.byte	0x12
	.uleb128 0x6
	.4byte	.LASF268
	.byte	0x19
	.byte	0x3f
	.4byte	0x134
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF235
	.byte	0x19
	.byte	0x40
	.4byte	0x1310
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF269
	.byte	0x19
	.byte	0x41
	.4byte	0x12f5
	.byte	0x2
	.byte	0x23
	.uleb128 0x1c
	.uleb128 0x6
	.4byte	.LASF270
	.byte	0x19
	.byte	0x42
	.4byte	0xb10
	.byte	0x2
	.byte	0x23
	.uleb128 0x20
	.uleb128 0x6
	.4byte	.LASF271
	.byte	0x19
	.byte	0x43
	.4byte	0x11f7
	.byte	0x2
	.byte	0x23
	.uleb128 0x30
	.uleb128 0x6
	.4byte	.LASF272
	.byte	0x19
	.byte	0x44
	.4byte	0x1374
	.byte	0x2
	.byte	0x23
	.uleb128 0x38
	.uleb128 0x6
	.4byte	.LASF273
	.byte	0x19
	.byte	0x45
	.4byte	0x13b1
	.byte	0x2
	.byte	0x23
	.uleb128 0x40
	.uleb128 0xb
	.string	"sd"
	.byte	0x19
	.byte	0x46
	.4byte	0x13bd
	.byte	0x2
	.byte	0x23
	.uleb128 0x48
	.uleb128 0x6
	.4byte	.LASF274
	.byte	0x19
	.byte	0x47
	.4byte	0xc34
	.byte	0x2
	.byte	0x23
	.uleb128 0x50
	.byte	0x0
	.uleb128 0x5
	.4byte	0x12b0
	.4byte	.LASF275
	.byte	0x10
	.byte	0x18
	.byte	0x48
	.uleb128 0x6
	.4byte	.LASF276
	.byte	0x18
	.byte	0x49
	.4byte	0x12ca
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF277
	.byte	0x18
	.byte	0x4a
	.4byte	0x12ef
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.byte	0x0
	.uleb128 0x21
	.4byte	0x12ca
	.byte	0x1
	.4byte	0x504
	.uleb128 0x11
	.4byte	0x11f7
	.uleb128 0x11
	.4byte	0x11f1
	.uleb128 0x11
	.4byte	0x146
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x12b0
	.uleb128 0x21
	.4byte	0x12ef
	.byte	0x1
	.4byte	0x504
	.uleb128 0x11
	.4byte	0x11f7
	.uleb128 0x11
	.4byte	0x11f1
	.uleb128 0x11
	.4byte	0x134
	.uleb128 0x11
	.4byte	0x4f9
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x12d0
	.uleb128 0x5
	.4byte	0x1310
	.4byte	.LASF269
	.byte	0x4
	.byte	0x1a
	.byte	0x17
	.uleb128 0x6
	.4byte	.LASF278
	.byte	0x1a
	.byte	0x18
	.4byte	0xbce
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.byte	0x0
	.uleb128 0x16
	.4byte	0x1320
	.4byte	0x13f
	.uleb128 0x17
	.4byte	0x65
	.byte	0x13
	.byte	0x0
	.uleb128 0x5
	.4byte	0x1374
	.4byte	.LASF272
	.byte	0xb0
	.byte	0x19
	.byte	0x44
	.uleb128 0x6
	.4byte	.LASF273
	.byte	0x19
	.byte	0x86
	.4byte	0x13b1
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF201
	.byte	0x19
	.byte	0x87
	.4byte	0xb10
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF279
	.byte	0x19
	.byte	0x88
	.4byte	0xbac
	.byte	0x2
	.byte	0x23
	.uleb128 0x18
	.uleb128 0x6
	.4byte	.LASF280
	.byte	0x19
	.byte	0x89
	.4byte	0x11fd
	.byte	0x2
	.byte	0x23
	.uleb128 0x30
	.uleb128 0x6
	.4byte	.LASF281
	.byte	0x19
	.byte	0x8a
	.4byte	0x147d
	.byte	0x3
	.byte	0x23
	.uleb128 0xa8
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x1320
	.uleb128 0x5
	.4byte	0x13b1
	.4byte	.LASF282
	.byte	0x18
	.byte	0x19
	.byte	0x45
	.uleb128 0x6
	.4byte	.LASF283
	.byte	0x19
	.byte	0x68
	.4byte	0x13cf
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF275
	.byte	0x19
	.byte	0x69
	.4byte	0x13d5
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF284
	.byte	0x19
	.byte	0x6a
	.4byte	0x11eb
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x137a
	.uleb128 0x18
	.4byte	.LASF285
	.byte	0x1
	.uleb128 0x8
	.byte	0x8
	.4byte	0x13b7
	.uleb128 0x10
	.4byte	0x13cf
	.byte	0x1
	.uleb128 0x11
	.4byte	0x11f7
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x13c3
	.uleb128 0x8
	.byte	0x8
	.4byte	0x1287
	.uleb128 0x5
	.4byte	0x1412
	.4byte	.LASF286
	.byte	0x18
	.byte	0x19
	.byte	0x6d
	.uleb128 0x6
	.4byte	.LASF287
	.byte	0x19
	.byte	0x6e
	.4byte	0x1427
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF235
	.byte	0x19
	.byte	0x6f
	.4byte	0x1442
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF288
	.byte	0x19
	.byte	0x71
	.4byte	0x1477
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.byte	0x0
	.uleb128 0x21
	.4byte	0x1427
	.byte	0x1
	.4byte	0x50
	.uleb128 0x11
	.4byte	0x1374
	.uleb128 0x11
	.4byte	0x11f7
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x1412
	.uleb128 0x21
	.4byte	0x1442
	.byte	0x1
	.4byte	0x134
	.uleb128 0x11
	.4byte	0x1374
	.uleb128 0x11
	.4byte	0x11f7
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x142d
	.uleb128 0x21
	.4byte	0x1471
	.byte	0x1
	.4byte	0x50
	.uleb128 0x11
	.4byte	0x1374
	.uleb128 0x11
	.4byte	0x11f7
	.uleb128 0x11
	.4byte	0x1471
	.uleb128 0x11
	.4byte	0x50
	.uleb128 0x11
	.4byte	0x146
	.uleb128 0x11
	.4byte	0x50
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x146
	.uleb128 0x8
	.byte	0x8
	.4byte	0x1448
	.uleb128 0x8
	.byte	0x8
	.4byte	0x13db
	.uleb128 0x5
	.4byte	0x14d6
	.4byte	.LASF289
	.byte	0x48
	.byte	0x16
	.byte	0xe
	.uleb128 0x6
	.4byte	.LASF279
	.byte	0x16
	.byte	0xf
	.4byte	0xbac
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF290
	.byte	0x16
	.byte	0x10
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x18
	.uleb128 0x6
	.4byte	.LASF291
	.byte	0x16
	.byte	0x11
	.4byte	0xc00
	.byte	0x2
	.byte	0x23
	.uleb128 0x20
	.uleb128 0x6
	.4byte	.LASF292
	.byte	0x16
	.byte	0x12
	.4byte	0xb10
	.byte	0x2
	.byte	0x23
	.uleb128 0x28
	.uleb128 0x6
	.4byte	.LASF293
	.byte	0x16
	.byte	0x14
	.4byte	0xb10
	.byte	0x2
	.byte	0x23
	.uleb128 0x38
	.byte	0x0
	.uleb128 0x15
	.4byte	0x15d7
	.4byte	.LASF294
	.2byte	0x290
	.byte	0x17
	.byte	0x36
	.uleb128 0x6
	.4byte	.LASF295
	.byte	0x16
	.byte	0x1d
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF92
	.byte	0x16
	.byte	0x1e
	.4byte	0x50
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF296
	.byte	0x16
	.byte	0x1f
	.4byte	0x50
	.byte	0x2
	.byte	0x23
	.uleb128 0xc
	.uleb128 0x6
	.4byte	.LASF297
	.byte	0x16
	.byte	0x20
	.4byte	0x50
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.uleb128 0x6
	.4byte	.LASF298
	.byte	0x16
	.byte	0x21
	.4byte	0x50
	.byte	0x2
	.byte	0x23
	.uleb128 0x14
	.uleb128 0x6
	.4byte	.LASF299
	.byte	0x16
	.byte	0x27
	.4byte	0x1483
	.byte	0x2
	.byte	0x23
	.uleb128 0x18
	.uleb128 0x6
	.4byte	.LASF300
	.byte	0x16
	.byte	0x2a
	.4byte	0x50
	.byte	0x2
	.byte	0x23
	.uleb128 0x60
	.uleb128 0x6
	.4byte	.LASF278
	.byte	0x16
	.byte	0x2b
	.4byte	0x50
	.byte	0x2
	.byte	0x23
	.uleb128 0x64
	.uleb128 0x6
	.4byte	.LASF301
	.byte	0x16
	.byte	0x2c
	.4byte	0x15f3
	.byte	0x2
	.byte	0x23
	.uleb128 0x68
	.uleb128 0x6
	.4byte	.LASF302
	.byte	0x16
	.byte	0x2d
	.4byte	0x50
	.byte	0x2
	.byte	0x23
	.uleb128 0x70
	.uleb128 0x6
	.4byte	.LASF303
	.byte	0x16
	.byte	0x2e
	.4byte	0x50
	.byte	0x2
	.byte	0x23
	.uleb128 0x74
	.uleb128 0x6
	.4byte	.LASF235
	.byte	0x16
	.byte	0x2f
	.4byte	0x134
	.byte	0x2
	.byte	0x23
	.uleb128 0x78
	.uleb128 0x6
	.4byte	.LASF201
	.byte	0x16
	.byte	0x30
	.4byte	0xb10
	.byte	0x3
	.byte	0x23
	.uleb128 0x80
	.uleb128 0x6
	.4byte	.LASF280
	.byte	0x16
	.byte	0x32
	.4byte	0x11fd
	.byte	0x3
	.byte	0x23
	.uleb128 0x90
	.uleb128 0x6
	.4byte	.LASF304
	.byte	0x16
	.byte	0x36
	.4byte	0x50
	.byte	0x3
	.byte	0x23
	.uleb128 0x108
	.uleb128 0x6
	.4byte	.LASF211
	.byte	0x16
	.byte	0x37
	.4byte	0x15f9
	.byte	0x3
	.byte	0x23
	.uleb128 0x110
	.uleb128 0x6
	.4byte	.LASF305
	.byte	0x16
	.byte	0x39
	.4byte	0x160f
	.byte	0x3
	.byte	0x23
	.uleb128 0x190
	.byte	0x0
	.uleb128 0x10
	.4byte	0x15ed
	.byte	0x1
	.uleb128 0x11
	.4byte	0xae8
	.uleb128 0x11
	.4byte	0x15ed
	.uleb128 0x11
	.4byte	0x5e
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x14d6
	.uleb128 0x8
	.byte	0x8
	.4byte	0x15d7
	.uleb128 0x16
	.4byte	0x1609
	.4byte	0x1609
	.uleb128 0x17
	.4byte	0x65
	.byte	0xf
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x1483
	.uleb128 0x16
	.4byte	0x161f
	.4byte	0x1625
	.uleb128 0x17
	.4byte	0x65
	.byte	0x1f
	.byte	0x0
	.uleb128 0x18
	.4byte	.LASF306
	.byte	0x1
	.uleb128 0x8
	.byte	0x8
	.4byte	0x161f
	.uleb128 0x15
	.4byte	0x168e
	.4byte	.LASF307
	.2byte	0x1220
	.byte	0x1d
	.byte	0x5d
	.uleb128 0x6
	.4byte	.LASF308
	.byte	0x1d
	.byte	0x5e
	.4byte	0x50
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF309
	.byte	0x1d
	.byte	0x5f
	.4byte	0x5e
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0xb
	.string	"mm"
	.byte	0x1d
	.byte	0x60
	.4byte	0x1694
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.uleb128 0xb
	.string	"pte"
	.byte	0x1d
	.byte	0x61
	.4byte	0x169a
	.byte	0x2
	.byte	0x23
	.uleb128 0x18
	.uleb128 0x6
	.4byte	.LASF310
	.byte	0x1d
	.byte	0x62
	.4byte	0x16aa
	.byte	0x3
	.byte	0x23
	.uleb128 0xc18
	.uleb128 0x6
	.4byte	.LASF311
	.byte	0x1d
	.byte	0x63
	.4byte	0x2d
	.byte	0x3
	.byte	0x23
	.uleb128 0x1218
	.byte	0x0
	.uleb128 0x18
	.4byte	.LASF312
	.byte	0x1
	.uleb128 0x8
	.byte	0x8
	.4byte	0x168e
	.uleb128 0x16
	.4byte	0x16aa
	.4byte	0x17c
	.uleb128 0x17
	.4byte	0x65
	.byte	0xbf
	.byte	0x0
	.uleb128 0x16
	.4byte	0x16ba
	.4byte	0x5e
	.uleb128 0x17
	.4byte	0x65
	.byte	0xbf
	.byte	0x0
	.uleb128 0xa
	.4byte	0x16df
	.byte	0x10
	.byte	0x21
	.byte	0x40
	.uleb128 0x6
	.4byte	.LASF313
	.byte	0x21
	.byte	0x41
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF314
	.byte	0x21
	.byte	0x42
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.byte	0x0
	.uleb128 0xa
	.4byte	0x1712
	.byte	0x18
	.byte	0x21
	.byte	0x44
	.uleb128 0x6
	.4byte	.LASF315
	.byte	0x21
	.byte	0x45
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF316
	.byte	0x21
	.byte	0x46
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF317
	.byte	0x21
	.byte	0x47
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.byte	0x0
	.uleb128 0x5
	.4byte	0x1773
	.4byte	.LASF318
	.byte	0x78
	.byte	0x21
	.byte	0x3b
	.uleb128 0x6
	.4byte	.LASF319
	.byte	0x21
	.byte	0x3c
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x0
	.uleb128 0x6
	.4byte	.LASF320
	.byte	0x21
	.byte	0x3d
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x8
	.uleb128 0x6
	.4byte	.LASF321
	.byte	0x21
	.byte	0x3e
	.4byte	0xa1
	.byte	0x2
	.byte	0x23
	.uleb128 0x10
	.uleb128 0x6
	.4byte	.LASF322
	.byte	0x21
	.byte	0x3f
	.4byte	0x1773
	.byte	0x2
	.byte	0x23
	.uleb128 0x18
	.uleb128 0x6
	.4byte	.LASF323
	.byte	0x21
	.byte	0x43
	.4byte	0x1783
	.byte	0x2
	.byte	0x23
	.uleb128 0x40
	.uleb128 0x6
	.4byte	.LASF324
	.byte	0x21
	.byte	0x48
	.4byte	0x1793
	.byte	0x2
	.byte	0x23
	.uleb128 0x60
	.byte	0x0
	.uleb128 0x16
	.4byte	0x1783
	.4byte	0xa1
	.uleb128 0x17
	.4byte	0x65
	.byte	0x4
	.byte	0x0
	.uleb128 0x16
	.4byte	0x1793
	.4byte	0x16ba
	.uleb128 0x17
	.4byte	0x65
	.byte	0x1
	.byte	0x0
	.uleb128 0x16
	.4byte	0x17a3
	.4byte	0x16df
	.uleb128 0x17
	.4byte	0x65
	.byte	0x0
	.byte	0x0
	.uleb128 0x22
	.4byte	.LASF20
	.byte	0x1
	.byte	0x22
	.4byte	0xac
	.byte	0x1
	.byte	0x1
	.uleb128 0x16
	.4byte	0x17c0
	.4byte	0x187
	.uleb128 0x17
	.4byte	0x65
	.byte	0x5
	.byte	0x0
	.uleb128 0x22
	.4byte	.LASF325
	.byte	0x3
	.byte	0xac
	.4byte	0x17b0
	.byte	0x1
	.byte	0x1
	.uleb128 0x22
	.4byte	.LASF326
	.byte	0x4
	.byte	0x65
	.4byte	0x268
	.byte	0x1
	.byte	0x1
	.uleb128 0x16
	.4byte	0x17e5
	.4byte	0x50
	.uleb128 0x23
	.byte	0x0
	.uleb128 0x22
	.4byte	.LASF327
	.byte	0x5
	.byte	0x43
	.4byte	0x17da
	.byte	0x1
	.byte	0x1
	.uleb128 0x24
	.4byte	.LASF328
	.byte	0x6
	.byte	0x17
	.4byte	0x1800
	.byte	0x1
	.byte	0x1
	.byte	0x5d
	.uleb128 0x8
	.byte	0x8
	.4byte	0x90f
	.uleb128 0x21
	.4byte	0x1816
	.byte	0x1
	.4byte	0x50
	.uleb128 0x11
	.4byte	0x4b2
	.byte	0x0
	.uleb128 0x22
	.4byte	.LASF329
	.byte	0x8
	.byte	0x45
	.4byte	0x1823
	.byte	0x1
	.byte	0x1
	.uleb128 0x8
	.byte	0x8
	.4byte	0x1806
	.uleb128 0x22
	.4byte	.LASF330
	.byte	0x8
	.byte	0x46
	.4byte	0x1823
	.byte	0x1
	.byte	0x1
	.uleb128 0x22
	.4byte	.LASF331
	.byte	0x8
	.byte	0x47
	.4byte	0x1823
	.byte	0x1
	.byte	0x1
	.uleb128 0x22
	.4byte	.LASF332
	.byte	0x8
	.byte	0x48
	.4byte	0x1823
	.byte	0x1
	.byte	0x1
	.uleb128 0x22
	.4byte	.LASF333
	.byte	0x8
	.byte	0x49
	.4byte	0x1823
	.byte	0x1
	.byte	0x1
	.uleb128 0x22
	.4byte	.LASF334
	.byte	0x8
	.byte	0x4a
	.4byte	0x1823
	.byte	0x1
	.byte	0x1
	.uleb128 0x22
	.4byte	.LASF335
	.byte	0x8
	.byte	0x4b
	.4byte	0x1823
	.byte	0x1
	.byte	0x1
	.uleb128 0x22
	.4byte	.LASF336
	.byte	0xa
	.byte	0x31
	.4byte	0x50
	.byte	0x1
	.byte	0x1
	.uleb128 0x16
	.4byte	0x188f
	.4byte	0x107e
	.uleb128 0x23
	.byte	0x0
	.uleb128 0x22
	.4byte	.LASF337
	.byte	0xb
	.byte	0x15
	.4byte	0x1884
	.byte	0x1
	.byte	0x1
	.uleb128 0x22
	.4byte	.LASF338
	.byte	0xb
	.byte	0x1f
	.4byte	0x17da
	.byte	0x1
	.byte	0x1
	.uleb128 0x16
	.4byte	0x18b4
	.4byte	0x116b
	.uleb128 0x23
	.byte	0x0
	.uleb128 0x22
	.4byte	.LASF339
	.byte	0xb
	.byte	0x20
	.4byte	0x18a9
	.byte	0x1
	.byte	0x1
	.uleb128 0x16
	.4byte	0x18d2
	.4byte	0x18d2
	.uleb128 0x25
	.4byte	0x65
	.2byte	0x7ff
	.byte	0x0
	.uleb128 0x8
	.byte	0x8
	.4byte	0x1176
	.uleb128 0x26
	.4byte	.LASF261
	.byte	0xa
	.2byte	0x2fc
	.4byte	0x18c1
	.byte	0x1
	.byte	0x1
	.uleb128 0x22
	.4byte	.LASF340
	.byte	0x14
	.byte	0xc9
	.4byte	0x50
	.byte	0x1
	.byte	0x1
	.uleb128 0x22
	.4byte	.LASF341
	.byte	0x15
	.byte	0x52
	.4byte	0x1900
	.byte	0x1
	.byte	0x1
	.uleb128 0x1c
	.4byte	0x5e
	.uleb128 0x16
	.4byte	0x1915
	.4byte	0x14d6
	.uleb128 0x17
	.4byte	0x65
	.byte	0x18
	.byte	0x0
	.uleb128 0x22
	.4byte	.LASF342
	.byte	0x16
	.byte	0x4b
	.4byte	0x1905
	.byte	0x1
	.byte	0x1
	.uleb128 0x22
	.4byte	.LASF343
	.byte	0x1d
	.byte	0x65
	.4byte	0x162b
	.byte	0x1
	.byte	0x1
	.uleb128 0x24
	.4byte	.LASF344
	.byte	0x20
	.byte	0xe
	.4byte	0x1945
	.byte	0x1
	.byte	0x9
	.byte	0x3
	.8byte	xLparMap
	.uleb128 0x9
	.4byte	0x1712
	.byte	0x0
	.section	.debug_abbrev
	.uleb128 0x1
	.uleb128 0x11
	.byte	0x1
	.uleb128 0x10
	.uleb128 0x6
	.uleb128 0x12
	.uleb128 0x1
	.uleb128 0x11
	.uleb128 0x1
	.uleb128 0x25
	.uleb128 0xe
	.uleb128 0x13
	.uleb128 0xb
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x1b
	.uleb128 0xe
	.byte	0x0
	.byte	0x0
	.uleb128 0x2
	.uleb128 0x24
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3e
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x3
	.uleb128 0x24
	.byte	0x0
	.uleb128 0x3
	.uleb128 0x8
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3e
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x4
	.uleb128 0x16
	.byte	0x0
	.uleb128 0x3
	.uleb128 0x8
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x5
	.uleb128 0x13
	.byte	0x1
	.uleb128 0x1
	.uleb128 0x13
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x6
	.uleb128 0xd
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x38
	.uleb128 0xa
	.byte	0x0
	.byte	0x0
	.uleb128 0x7
	.uleb128 0x16
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x8
	.uleb128 0xf
	.byte	0x0
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x9
	.uleb128 0x26
	.byte	0x0
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0xa
	.uleb128 0x13
	.byte	0x1
	.uleb128 0x1
	.uleb128 0x13
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0xb
	.uleb128 0xd
	.byte	0x0
	.uleb128 0x3
	.uleb128 0x8
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x38
	.uleb128 0xa
	.byte	0x0
	.byte	0x0
	.uleb128 0xc
	.uleb128 0x16
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0x5
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0xd
	.uleb128 0x13
	.byte	0x1
	.uleb128 0x1
	.uleb128 0x13
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0x5
	.byte	0x0
	.byte	0x0
	.uleb128 0xe
	.uleb128 0xd
	.byte	0x0
	.uleb128 0x3
	.uleb128 0x8
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0x5
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x38
	.uleb128 0xa
	.byte	0x0
	.byte	0x0
	.uleb128 0xf
	.uleb128 0xd
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0x5
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x38
	.uleb128 0xa
	.byte	0x0
	.byte	0x0
	.uleb128 0x10
	.uleb128 0x15
	.byte	0x1
	.uleb128 0x1
	.uleb128 0x13
	.uleb128 0x27
	.uleb128 0xc
	.byte	0x0
	.byte	0x0
	.uleb128 0x11
	.uleb128 0x5
	.byte	0x0
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x12
	.uleb128 0x15
	.byte	0x0
	.uleb128 0x27
	.uleb128 0xc
	.byte	0x0
	.byte	0x0
	.uleb128 0x13
	.uleb128 0x4
	.byte	0x1
	.uleb128 0x1
	.uleb128 0x13
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x14
	.uleb128 0x28
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x1c
	.uleb128 0xd
	.byte	0x0
	.byte	0x0
	.uleb128 0x15
	.uleb128 0x13
	.byte	0x1
	.uleb128 0x1
	.uleb128 0x13
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0xb
	.uleb128 0x5
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x16
	.uleb128 0x1
	.byte	0x1
	.uleb128 0x1
	.uleb128 0x13
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x17
	.uleb128 0x21
	.byte	0x0
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x2f
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x18
	.uleb128 0x13
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3c
	.uleb128 0xc
	.byte	0x0
	.byte	0x0
	.uleb128 0x19
	.uleb128 0x17
	.byte	0x1
	.uleb128 0x1
	.uleb128 0x13
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x1a
	.uleb128 0xd
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x1b
	.uleb128 0xd
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0xd
	.uleb128 0xb
	.uleb128 0xc
	.uleb128 0xb
	.uleb128 0x38
	.uleb128 0xa
	.byte	0x0
	.byte	0x0
	.uleb128 0x1c
	.uleb128 0x35
	.byte	0x0
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x1d
	.uleb128 0xf
	.byte	0x0
	.uleb128 0xb
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x1e
	.uleb128 0x21
	.byte	0x0
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x1f
	.uleb128 0x13
	.byte	0x1
	.uleb128 0x1
	.uleb128 0x13
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0x5
	.byte	0x0
	.byte	0x0
	.uleb128 0x20
	.uleb128 0x13
	.byte	0x1
	.uleb128 0x1
	.uleb128 0x13
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0xb
	.uleb128 0x5
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0x5
	.byte	0x0
	.byte	0x0
	.uleb128 0x21
	.uleb128 0x15
	.byte	0x1
	.uleb128 0x1
	.uleb128 0x13
	.uleb128 0x27
	.uleb128 0xc
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x22
	.uleb128 0x34
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x3f
	.uleb128 0xc
	.uleb128 0x3c
	.uleb128 0xc
	.byte	0x0
	.byte	0x0
	.uleb128 0x23
	.uleb128 0x21
	.byte	0x0
	.byte	0x0
	.byte	0x0
	.uleb128 0x24
	.uleb128 0x34
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x3f
	.uleb128 0xc
	.uleb128 0x2
	.uleb128 0xa
	.byte	0x0
	.byte	0x0
	.uleb128 0x25
	.uleb128 0x21
	.byte	0x0
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x2f
	.uleb128 0x5
	.byte	0x0
	.byte	0x0
	.uleb128 0x26
	.uleb128 0x34
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0x5
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x3f
	.uleb128 0xc
	.uleb128 0x3c
	.uleb128 0xc
	.byte	0x0
	.byte	0x0
	.byte	0x0
	.section	.debug_pubnames,"",@progbits
	.4byte	0x2a
	.2byte	0x2
	.4byte	.Ldebug_info0
	.4byte	0x194b
	.4byte	0x17f2
	.string	"local_paca"
	.4byte	0x192f
	.string	"xLparMap"
	.4byte	0x0
	.section	.debug_str,"MS",@progbits,1
.LASF39:
	.string	"cpu_user_features"
.LASF50:
	.string	"oprofile_mmcra_clear"
.LASF29:
	.string	"low_slices_psize"
.LASF264:
	.string	"attribute"
.LASF79:
	.string	"size_t"
.LASF346:
	.string	"arch/powerpc/kernel/lparmap.c"
.LASF262:
	.string	"section_mem_map"
.LASF316:
	.string	"xOffset"
.LASF129:
	.string	"slb_count"
.LASF233:
	.string	"spanned_pages"
.LASF181:
	.string	"owner"
.LASF225:
	.string	"vm_stat"
.LASF197:
	.string	"per_cpu_pages"
.LASF107:
	.string	"sprg3"
.LASF215:
	.string	"span_seqlock"
.LASF148:
	.string	"stab_addr"
.LASF206:
	.string	"zone"
.LASF173:
	.string	"list_head"
.LASF20:
	.string	"ppc64_caches"
.LASF238:
	.string	"node_zonelists"
.LASF275:
	.string	"sysfs_ops"
.LASF138:
	.string	"persistent"
.LASF200:
	.string	"batch"
.LASF340:
	.string	"time_status"
.LASF111:
	.string	"saved_srr0"
.LASF112:
	.string	"saved_srr1"
.LASF258:
	.string	"bootmem_data"
.LASF338:
	.string	"numa_cpu_lookup_table"
.LASF14:
	.string	"ilines_per_page"
.LASF293:
	.string	"full"
.LASF190:
	.string	"wait_queue_head_t"
.LASF218:
	.string	"active_list"
.LASF37:
	.string	"cpu_name"
.LASF310:
	.string	"vaddr"
.LASF18:
	.string	"hidx"
.LASF60:
	.string	"powerpc_oprofile_type"
.LASF193:
	.string	"free_area"
.LASF80:
	.string	"ssize_t"
.LASF247:
	.string	"kswapd"
.LASF109:
	.string	"int_dword"
.LASF21:
	.string	"mmu_psize_def"
.LASF73:
	.string	"__kernel_mode_t"
.LASF62:
	.string	"PPC_PMC_DEFAULT"
.LASF187:
	.string	"__wait_queue_head"
.LASF71:
	.string	"result"
.LASF276:
	.string	"show"
.LASF126:
	.string	"pdc_saved_sprg1"
.LASF203:
	.string	"expire"
.LASF36:
	.string	"pvr_value"
.LASF301:
	.string	"ctor"
.LASF5:
	.string	"long int"
.LASF279:
	.string	"list_lock"
.LASF237:
	.string	"node_zones"
.LASF70:
	.string	"dsisr"
.LASF313:
	.string	"xKernelEsid"
.LASF10:
	.string	"dlines_per_page"
.LASF22:
	.string	"shift"
.LASF162:
	.string	"kstack"
.LASF342:
	.string	"kmalloc_caches"
.LASF64:
	.string	"PPC_PMC_PA6T"
.LASF199:
	.string	"high"
.LASF210:
	.string	"lowmem_reserve"
.LASF69:
	.string	"trap"
.LASF95:
	.string	"shared_proc"
.LASF212:
	.string	"min_unmapped_pages"
.LASF42:
	.string	"num_pmcs"
.LASF252:
	.string	"last_full_zap"
.LASF1:
	.string	"signed char"
.LASF139:
	.string	"buffer_length"
.LASF285:
	.string	"sysfs_dirent"
.LASF157:
	.string	"context"
.LASF319:
	.string	"xNumberEsids"
.LASF164:
	.string	"saved_r1"
.LASF246:
	.string	"kswapd_wait"
.LASF221:
	.string	"nr_scan_inactive"
.LASF2:
	.string	"unsigned char"
.LASF231:
	.string	"zone_pgdat"
.LASF90:
	.string	"lppaca"
.LASF241:
	.string	"node_size_lock"
.LASF253:
	.string	"zonelist"
.LASF52:
	.string	"cpu_restore_t"
.LASF78:
	.string	"_Bool"
.LASF163:
	.string	"stab_rr"
.LASF304:
	.string	"defrag_ratio"
.LASF86:
	.string	"quantum_int"
.LASF54:
	.string	"PPC_OPROFILE_RS64"
.LASF16:
	.string	"char"
.LASF302:
	.string	"inuse"
.LASF266:
	.string	"module"
.LASF332:
	.string	"__debugger_sstep"
.LASF235:
	.string	"name"
.LASF67:
	.string	"link"
.LASF132:
	.string	"yield_count"
.LASF188:
	.string	"lock"
.LASF84:
	.string	"decr_int"
.LASF83:
	.string	"ipi_cnt"
.LASF176:
	.string	"slock"
.LASF321:
	.string	"xSegmentTableOffs"
.LASF46:
	.string	"oprofile_cpu_type"
.LASF240:
	.string	"bdata"
.LASF295:
	.string	"flags"
.LASF230:
	.string	"wait_table_bits"
.LASF156:
	.string	"exslb"
.LASF40:
	.string	"icache_bsize"
.LASF27:
	.string	"mm_context_id_t"
.LASF87:
	.string	"old_plic_deferred_ext_int"
.LASF189:
	.string	"task_list"
.LASF278:
	.string	"refcount"
.LASF227:
	.string	"_pad2_"
.LASF216:
	.string	"_pad1_"
.LASF57:
	.string	"PPC_OPROFILE_BOOKE"
.LASF194:
	.string	"free_list"
.LASF211:
	.string	"node"
.LASF334:
	.string	"__debugger_dabr_match"
.LASF331:
	.string	"__debugger_bpt"
.LASF284:
	.string	"default_attrs"
.LASF17:
	.string	"pte_t"
.LASF260:
	.string	"cpumask_t"
.LASF186:
	.string	"atomic_long_t"
.LASF300:
	.string	"objects"
.LASF228:
	.string	"wait_table"
.LASF245:
	.string	"node_id"
.LASF287:
	.string	"filter"
.LASF98:
	.string	"secondary_thread_count"
.LASF261:
	.string	"mem_section"
.LASF290:
	.string	"nr_partial"
.LASF165:
	.string	"saved_msr"
.LASF308:
	.string	"active"
.LASF292:
	.string	"partial"
.LASF34:
	.string	"cpu_spec"
.LASF7:
	.string	"dsize"
.LASF25:
	.string	"avpnm"
.LASF110:
	.string	"plic_defer_ints_area"
.LASF347:
	.string	"/home/sp3fxc/linux/linux-2.6.23-rc1-mm2"
.LASF224:
	.string	"reclaim_in_progress"
.LASF65:
	.string	"pt_regs"
.LASF168:
	.string	"hard_enabled"
.LASF307:
	.string	"ppc64_tlb_batch"
.LASF309:
	.string	"index"
.LASF244:
	.string	"node_spanned_pages"
.LASF102:
	.string	"pmc_val"
.LASF100:
	.string	"dyn_hv_log_proc_index"
.LASF195:
	.string	"nr_free"
.LASF177:
	.string	"raw_spinlock_t"
.LASF120:
	.string	"saved_decr"
.LASF170:
	.string	"user_time"
.LASF6:
	.string	"long unsigned int"
.LASF30:
	.string	"high_slices_psize"
.LASF327:
	.string	"console_printk"
.LASF134:
	.string	"pmc_save_area"
.LASF323:
	.string	"xEsids"
.LASF97:
	.string	"dyn_proc_status"
.LASF24:
	.string	"tlbiel"
.LASF305:
	.string	"cpu_slab"
.LASF180:
	.string	"owner_cpu"
.LASF146:
	.string	"kernel_toc"
.LASF58:
	.string	"PPC_OPROFILE_CELL"
.LASF269:
	.string	"kref"
.LASF343:
	.string	"per_cpu__ppc64_tlb_batch"
.LASF152:
	.string	"cpu_start"
.LASF104:
	.string	"dyn_hw_proc_id"
.LASF41:
	.string	"dcache_bsize"
.LASF185:
	.string	"atomic64_t"
.LASF329:
	.string	"__debugger"
.LASF298:
	.string	"order"
.LASF158:
	.string	"vmalloc_sllp"
.LASF325:
	.string	"mmu_psize_defs"
.LASF59:
	.string	"PPC_OPROFILE_PA6T"
.LASF257:
	.string	"task_struct"
.LASF277:
	.string	"store"
.LASF76:
	.string	"long long int"
.LASF183:
	.string	"counter"
.LASF144:
	.string	"lock_token"
.LASF122:
	.string	"cur_plic_latency"
.LASF169:
	.string	"io_sync"
.LASF74:
	.string	"__kernel_size_t"
.LASF234:
	.string	"present_pages"
.LASF105:
	.string	"dyn_pir"
.LASF72:
	.string	"double"
.LASF28:
	.string	"user_psize"
.LASF161:
	.string	"__current"
.LASF220:
	.string	"nr_scan_active"
.LASF311:
	.string	"psize"
.LASF222:
	.string	"pages_scanned"
.LASF117:
	.string	"donate_dedicated_cpu"
.LASF167:
	.string	"soft_enabled"
.LASF271:
	.string	"parent"
.LASF303:
	.string	"align"
.LASF198:
	.string	"count"
.LASF119:
	.string	"pmcregs_in_use"
.LASF68:
	.string	"softe"
.LASF0:
	.string	"unsigned int"
.LASF204:
	.string	"stat_threshold"
.LASF209:
	.string	"pages_high"
.LASF38:
	.string	"cpu_features"
.LASF182:
	.string	"spinlock_t"
.LASF12:
	.string	"iline_size"
.LASF286:
	.string	"kset_uevent_ops"
.LASF268:
	.string	"k_name"
.LASF3:
	.string	"short int"
.LASF315:
	.string	"xPages"
.LASF226:
	.string	"prev_priority"
.LASF324:
	.string	"xRanges"
.LASF250:
	.string	"z_to_n"
.LASF259:
	.string	"bits"
.LASF265:
	.string	"mode"
.LASF255:
	.string	"zones"
.LASF48:
	.string	"oprofile_mmcra_sihv"
.LASF191:
	.string	"sequence"
.LASF113:
	.string	"saved_gpr3"
.LASF114:
	.string	"saved_gpr4"
.LASF115:
	.string	"saved_gpr5"
.LASF274:
	.string	"poll"
.LASF297:
	.string	"offset"
.LASF11:
	.string	"isize"
.LASF201:
	.string	"list"
.LASF270:
	.string	"entry"
.LASF306:
	.string	"page"
.LASF77:
	.string	"mode_t"
.LASF124:
	.string	"wait_state_cycles"
.LASF229:
	.string	"wait_table_hash_nr_entries"
.LASF53:
	.string	"PPC_OPROFILE_INVALID"
.LASF172:
	.string	"startpurr"
.LASF345:
	.string	"GNU C 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)"
.LASF213:
	.string	"min_slab_pages"
.LASF118:
	.string	"fpregs_in_use"
.LASF23:
	.string	"penc"
.LASF288:
	.string	"uevent"
.LASF214:
	.string	"pageset"
.LASF272:
	.string	"kset"
.LASF136:
	.string	"vsid"
.LASF32:
	.string	"mm_context_t"
.LASF154:
	.string	"exgen"
.LASF236:
	.string	"pglist_data"
.LASF223:
	.string	"all_unreclaimable"
.LASF88:
	.string	"any_int"
.LASF106:
	.string	"dsei_data"
.LASF61:
	.string	"powerpc_pmc_type"
.LASF89:
	.string	"fields"
.LASF344:
	.string	"xLparMap"
.LASF333:
	.string	"__debugger_iabr_match"
.LASF92:
	.string	"size"
.LASF140:
	.string	"save_area"
.LASF256:
	.string	"zlcache"
.LASF314:
	.string	"xKernelVsid"
.LASF85:
	.string	"pdc_int"
.LASF273:
	.string	"ktype"
.LASF96:
	.string	"secondary_thread"
.LASF141:
	.string	"paca_struct"
.LASF294:
	.string	"kmem_cache"
.LASF239:
	.string	"nr_zones"
.LASF82:
	.string	"xirr_int"
.LASF171:
	.string	"system_time"
.LASF281:
	.string	"uevent_ops"
.LASF299:
	.string	"local_node"
.LASF248:
	.string	"kswapd_max_order"
.LASF19:
	.string	"real_pte_t"
.LASF326:
	.string	"cur_cpu_spec"
.LASF217:
	.string	"lru_lock"
.LASF232:
	.string	"zone_start_pfn"
.LASF251:
	.string	"fullzones"
.LASF267:
	.string	"kobject"
.LASF101:
	.string	"decr_val"
.LASF330:
	.string	"__debugger_ipi"
.LASF202:
	.string	"per_cpu_pageset"
.LASF143:
	.string	"reg_save_ptr"
.LASF280:
	.string	"kobj"
.LASF135:
	.string	"esid"
.LASF91:
	.string	"desc"
.LASF75:
	.string	"__kernel_ssize_t"
.LASF242:
	.string	"node_start_pfn"
.LASF318:
	.string	"LparMap"
.LASF31:
	.string	"vdso_base"
.LASF159:
	.string	"slb_cache_ptr"
.LASF15:
	.string	"pte_basic_t"
.LASF208:
	.string	"pages_low"
.LASF149:
	.string	"emergency_sp"
.LASF219:
	.string	"inactive_list"
.LASF43:
	.string	"pmc_type"
.LASF341:
	.string	"jiffies"
.LASF160:
	.string	"slb_cache"
.LASF44:
	.string	"cpu_setup"
.LASF205:
	.string	"vm_stat_diff"
.LASF33:
	.string	"cpu_setup_t"
.LASF322:
	.string	"xRsvd"
.LASF145:
	.string	"paca_index"
.LASF296:
	.string	"objsize"
.LASF63:
	.string	"PPC_PMC_IBM"
.LASF45:
	.string	"cpu_restore"
.LASF35:
	.string	"pvr_mask"
.LASF339:
	.string	"numa_cpumask_lookup_table"
.LASF123:
	.string	"tot_plic_latency"
.LASF130:
	.string	"idle"
.LASF9:
	.string	"log_dline_size"
.LASF47:
	.string	"oprofile_type"
.LASF93:
	.string	"reserved1"
.LASF94:
	.string	"reserved2"
.LASF108:
	.string	"reserved3"
.LASF116:
	.string	"reserved4"
.LASF133:
	.string	"reserved6"
.LASF49:
	.string	"oprofile_mmcra_sipr"
.LASF56:
	.string	"PPC_OPROFILE_G4"
.LASF192:
	.string	"seqlock_t"
.LASF320:
	.string	"xNumberRanges"
.LASF128:
	.string	"virtual_decr"
.LASF121:
	.string	"emulated_time_base"
.LASF243:
	.string	"node_present_pages"
.LASF66:
	.string	"orig_gpr3"
.LASF291:
	.string	"nr_slabs"
.LASF131:
	.string	"vmxregs_in_use"
.LASF155:
	.string	"exmc"
.LASF153:
	.string	"slb_shadow_ptr"
.LASF254:
	.string	"zlcache_ptr"
.LASF337:
	.string	"node_data"
.LASF125:
	.string	"end_of_quantum"
.LASF289:
	.string	"kmem_cache_node"
.LASF55:
	.string	"PPC_OPROFILE_POWER4"
.LASF103:
	.string	"dyn_hw_node_id"
.LASF263:
	.string	"pageblock_flags"
.LASF336:
	.string	"page_group_by_mobility_disabled"
.LASF147:
	.string	"stab_real"
.LASF127:
	.string	"pdc_saved_srr0"
.LASF8:
	.string	"dline_size"
.LASF283:
	.string	"release"
.LASF81:
	.string	"reserved"
.LASF150:
	.string	"data_offset"
.LASF282:
	.string	"kobj_type"
.LASF51:
	.string	"platform"
.LASF4:
	.string	"short unsigned int"
.LASF179:
	.string	"magic"
.LASF178:
	.string	"raw_lock"
.LASF184:
	.string	"atomic_t"
.LASF249:
	.string	"zonelist_cache"
.LASF99:
	.string	"dyn_hv_phys_proc_index"
.LASF335:
	.string	"__debugger_fault_handler"
.LASF13:
	.string	"log_iline_size"
.LASF26:
	.string	"sllp"
.LASF196:
	.string	"zone_padding"
.LASF312:
	.string	"mm_struct"
.LASF151:
	.string	"hw_cpu_id"
.LASF142:
	.string	"lppaca_ptr"
.LASF328:
	.string	"local_paca"
.LASF207:
	.string	"pages_min"
.LASF166:
	.string	"trap_save"
.LASF174:
	.string	"next"
.LASF137:
	.string	"slb_shadow"
.LASF175:
	.string	"prev"
.LASF317:
	.string	"xVPN"
	.ident	"GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)"

^ permalink raw reply

* Re: DTC 1.0.0 Release Coming?
From: Segher Boessenkool @ 2007-08-06 19:33 UTC (permalink / raw)
  To: David Gibson; +Cc: linuxppc-dev, Jon Loeliger
In-Reply-To: <20070801011900.GA31391@localhost.localdomain>

>>> Ok, figured out why.  When I push, then pop a quilt patch some of the
>>> files end up with their original contents, but changed timestamps.
>>> That altered stat information causes git-diff-index to give false
>>> indications of changed files, so setlocalversion adds the -dirty.
>>> Running git status, or gitool or various other things causes git to
>>> notice that the files aren't really changed, updates the index and
>>> then the version is generated correctly again.
>>>
>>> Not very robust though.
>>
>> Well you can't blame that on DTC's build system, nor on the
>> setlocalversion script, and not on Git either; it's a Quilt
>> problem...
>
> No, it's really not - touching the files on a pop is correct behaviour
> for quilt (that way it will correctly trigger a rebuild on make
> systems that aren't as flashy as Kbuild).

Yeah okay -- "it's a problem with how all these tools are used
together" :-)

> setlocalversion should be ensuring that the verison information is
> based on content, not stat info, which means it needs to do a git
> status or something that will remove the false positives before using
> git-diff-index to determine whether the tree is clean or not.

Yeah, that seems best.  Please fix this for the kernel version of
setlocalversion as well :-)


Segher

^ permalink raw reply

* Re: 8250.c::autoconfig() fails loopback test on MPC824[15]
From: Segher Boessenkool @ 2007-08-06 19:29 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linuxppc-dev, Jon Loeliger, Guennadi Liakhovetski, linux-serial
In-Reply-To: <200708052357.32650.arnd@arndb.de>

> Maybe the best solution would be for 824[15] to not claim compatibility
> with 8250 at all then.

Or at least it should have a more specific entry for this
"special" 16x50 UART, and that one should be probed first.

> If the device tree contains an entry that matches
> what the generic driver looks for, it better be something that can
> be handled by that driver.

Pretty much; you can't make this rule too strict though,
if a device mostly works with the generic driver, you can
claim compatibility with it -- keep in mind that that can
come back to bite you though, like in this case.  The
advantages do outweigh the disadvantages sometimes, it's
all a tradeoff; avoid it if possible.


Segher

^ permalink raw reply

* Re: Page faults blowing up ... [was Re: [PATCH] Fix special PTE code for secondary hash bucket
From: Linas Vepstas @ 2007-08-06 19:19 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev, Paul Mackerras, benh
In-Reply-To: <1186194688.5733.6.camel@gruick>

On Sat, Aug 04, 2007 at 12:31:28PM +1000, Benjamin Herrenschmidt wrote:
> 
> Paulus stuff is likely to be unrelated to your bug. Also, whatever blurb
> you pasted in this email is totally incomprehensible due to total lack
> of context.

Sorry. Mike Strosaker nailed it; its a nutty hypervisor bug.

--linas

^ permalink raw reply

* Re: 8250.c::autoconfig() fails loopback test on MPC824[15]
From: Segher Boessenkool @ 2007-08-06 19:15 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: linuxppc-dev, Guennadi Liakhovetski, linux-serial
In-Reply-To: <200708051841.17471.arnd@arndb.de>

> Another option altogether would be to allow the device node to
> specify the linux specific serial port flags in a separate property,
> like "linux,uart-port-flags" that contains the same flags that
> setserial can set from user space. That would also be useful
> if you want to specify UPF_MAGIC_MULTIPLIER on certain high-speed
> ports, because it cannot be autoprobed.

Such high-speed ports should simply use a proper "compatible"
entry.  Similarly with the problem at hand.


Segher

^ permalink raw reply

* Re: 2.6.23-rc1-mm2
From: Segher Boessenkool @ 2007-08-06 19:12 UTC (permalink / raw)
  To: Kumar Gala
  Cc: linux-usb-devel, gregkh, linux-kernel, linuxppc-dev,
	Mariusz Kozlowski, Paul Mackerras, Andrew Morton
In-Reply-To: <1C929A99-BA1D-452C-AD54-66D42DBC8D23@kernel.crashing.org>

> Some how your defconfig is targeting a PPC64 box:
>
> CONFIG_PPC64=y
>
> shouldn't be set if you want to build a kernel for a G3 imac.

allyesconfig/allmodconfig select a 64-bit build always.  Maybe
it shouldn't.


Segher

^ permalink raw reply

* Re: 2.6.23-rc1-mm2
From: Segher Boessenkool @ 2007-08-06 19:10 UTC (permalink / raw)
  To: Mariusz Kozlowski
  Cc: linux-usb-devel, gregkh, linux-kernel, linuxppc-dev,
	Paul Mackerras, Andrew Morton
In-Reply-To: <200708021214.51705.m.kozlowski@tuxland.pl>


On 2 aug 2007, at 12:14, Mariusz Kozlowski wrote:

>>> Second issue as reported earilier allmodconfig fails to build on 
>>> imac g3.
>>
>> Do you really mean g3?  If so it's a 32-bit kernel and it shouldn't be
>> building lparmap.s.

It might be a bug nevertheless, there are more "issues" with
the interesting way lparmap.s is built and used.


Segher

^ permalink raw reply

* Re: 2.6.23-rc1-mm2
From: Segher Boessenkool @ 2007-08-06 19:08 UTC (permalink / raw)
  To: Mariusz Kozlowski
  Cc: linux-usb-devel, gregkh, linux-kernel, linuxppc-dev, paulus,
	Andrew Morton
In-Reply-To: <200708011002.30962.m.kozlowski@tuxland.pl>

> Second issue as reported earilier allmodconfig fails to build on imac 
> g3.
>
>   CC      arch/powerpc/kernel/lparmap.s
>   AS      arch/powerpc/kernel/head_64.o
> lparmap.c: Assembler messages:
> lparmap.c:84: Error: file number 1 already allocated
> make[1]: *** [arch/powerpc/kernel/head_64.o] Blad 1
> make: *** [arch/powerpc/kernel] Blad 2

Please send me the full output of:

gcc --version    (or whatever your gcc is called)
ld --version
ld --help        (I know no better way to get the supported binutils
                   targets, and the default target)

and the lparmap.s file.  You might want to skip sending it
to the lists, it will be a bit big (and off-topic on most
of those lists, anyway).


Segher

^ permalink raw reply

* Re: [PATCH v2 1/2] [RFC][POWERPC] MPC832x_RDB: update dts to use spi, register mmc_spi stub
From: Segher Boessenkool @ 2007-08-06 19:01 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev
In-Reply-To: <5C596943-5C01-4097-940C-29FF46E49BA7@kernel.crashing.org>

>> +			mmc@0 {
>> +				reg = <0>;
>> +				pio-handle = <&mmc0pio>;
>> +			};
>>  		};
>
> I'm still against this.  Why don't we just do this in 
> 83xx/mpc832x_rdb.c

Seconded.


Segher

^ permalink raw reply

* Re: [RFC][PATCH] MPC832x_RDB: update dts to use spi, register mmc_spi stub
From: Scott Wood @ 2007-08-06 18:50 UTC (permalink / raw)
  To: Segher Boessenkool; +Cc: linuxppc-dev
In-Reply-To: <44eb4173dacc69037ea9acfb7880818f@kernel.crashing.org>

Segher Boessenkool wrote:
>>p.s. mpc8272ads.dts is broken wrt spaces/tabs, very.
> 
> 
> Care to do a cleanup patch?  Good for your karma ;-)

I've got one in my 82xx patchset (a respin of which should be coming soon).

There's a lot more broken in there than just spaces/tabs, BTW. :-)

-Scott

^ permalink raw reply

* Re: [PATCH] powerpc: Pegasos keyboard detection
From: Segher Boessenkool @ 2007-08-06 18:45 UTC (permalink / raw)
  To: Alan Curry; +Cc: linux-kernel, linuxppc-dev
In-Reply-To: <200708020440.l724edCT290676@shell01.TheWorld.com>

>> You don't need to patch Linux at all. In fact for silly things like 
>> this
>> I would recommend against it :)
>
> If the workaround doesn't go into the kernel, everybody with affected
> hardware has to individually find out about the bug (probably by 
> experiencing
> an annoying keyboardless boot) and fix it himself.

That's one of the reasons why this should go into a bootwrapper.


Segher

^ permalink raw reply

* Re: ipv6 in yaboot
From: Segher Boessenkool @ 2007-08-06 18:42 UTC (permalink / raw)
  To: Doug Maxey; +Cc: Linux PowerPC List, Paul Mackerras, Paul Nasrat, yaboot-devel
In-Reply-To: <14772.1186002066@falcon10.austin.ibm.com>

>> The network address is passed to OF as (part of) the device
>> argument for the network device; and colons aren't legal
>> characters in a device argument,
>
> yeah, pretty thoughtless of the IETF for not consulting the 1275WG. :)

Heh.  That's not an issue; it just means that OF implementations
need to use a (slightly) different spelling for IPV6 addresses.
However, see below.

>> so any OF implementation that
>> would use colons in IPv6 addresses is terminally broken.
>
> Ok.  What is your proposed resolution that does not violate the rfcs?
> Namely RFCs 3986, 4038, and especially 4291.

Quotes from those RFCs would have been helpful.

>> This
>> is completely analogous to the fact that filesystem paths cannot
>> use forward slashes.  (The third disallowed character is the
>> at-sign, for completeness).
>
> Not really.  I don't expect to the the "device path" contain any ipv6
> info.  Just the parameters that follow on the end,

There can be parameters at *any* path component though, not just
the final component.  It isn't too farfetched to imagine devices as
child devices under a network device IMHO.  Not the common case, sure.

> There is no ppc64 OFW that supports this yet, but a version is
> expected soon.

There is an x86 OFW that supports it now.  Some good news, too:

The requirement for device arguments to not contain colons or
at-signs has been deemed overly strict, since any defined use
for those arguments should follow the path resolution algorithm
that is spelled out in the specification itself; and that algorithm
can deal with it just fine.  Therefore, it now is an (unpublished :-) )
recommended practice for OF implementations to allow it.

Forward slashes are right out, though :-)

> BTW, I don't really have any real input into how the OFW is designed,
> just try to adapt to what is implemented.

Yeah I understand :-)


Segher

^ permalink raw reply

* Re: [PATCH 2/6] PowerPC 440EPx: Sequoia DTS
From: Sergei Shtylyov @ 2007-08-06 18:37 UTC (permalink / raw)
  To: David Gibson; +Cc: linuxppc-dev
In-Reply-To: <20070806042109.GB6103@localhost.localdomain>

Hello.

David Gibson wrote:

>>>>>Index: working-2.6/Documentation/powerpc/booting-without-of.txt
>>>>>===================================================================
>>>>>--- working-2.6.orig/Documentation/powerpc/booting-without-of.txt	2007-07-30 17:07:14.000000000 +1000
>>>>>+++ working-2.6/Documentation/powerpc/booting-without-of.txt	2007-07-30 17:07:14.000000000 +1000
>>>>>@@ -1757,45 +1757,23 @@ platforms are moved over to use the flat
>>>>>		};
>>>>>	};
>>>>>
>>>>>-    j) Flash chip nodes
>>>>>+   j) CFI or JEDEC memory-mapped NOR flash
>>>>>
>>>>>    Flash chips (Memory Technology Devices) are often used for solid state
>>>>>    file systems on embedded devices.
>>
>>>>>-    Required properties:
>>>>>+     - compatible : should contain the specific model of flash chip(s) used
>>>>>+       followed by either "cfi-flash" or "jedec-flash"

>>>>   This "compatible" prop (and the node in whole) doesn't say a
>>>>thing about how the flash is mapped into the CPU address space.  I
>>>>strongly disagree that this node provides enough info to select a
>>>>driver. :-/

>>>To be honest, I'm not sure that describing the mapping is really the
>>>job of the compatible property.  That the flash is mapped into the
>>>address space is kind of implicit in the way the reg interacts with
>>>the parents' ranges property.

>>    Ah, I keep forgetting about implied 1:1 parent/child address 
>>correspondence... :-<
>>    But does it really imply how the (low) address bits of the *child* bus 
>>("ebc" in this case) are connected to the chip?  I don't think so...

>>>Can you describe some of the options for *not* direct mapped flash
>>>chips - I can't reasonably come up with a way of describing the
>>>distinction when I've never seen NOR flash other than direct mapped.

>>    You're lucky to live in the single-endian world.  Once you're in bi-endian 
>>one, all kinds of strange mappings become possible.  I've seen the MIPS 

    Well, not necessarily -- 16-bit only accesses are always possibly (no 
dount this would be a strange mapping however)...

>>mapping driver which required swapping flash bytes in s/w in BE mode, i.e. 
>>couldn't be served by physmap, yet that's not all...  here's the code of its 
>>map read*() methods:

> Aha!  Ok, now I understand the sorts of situations you're talking
> about.  By "not direct mapped", I thought you were talking about some
> kind of access via address/data registers on some indirect bus
> controller, rather than weird variations on endianness and
> bit-swizzling.

    No, that would be just too ridiculous for a NOR flash -- I hope. :-)

> Hrm.. this is a property of how the flash is wired onto the bus,
> rather than of the flash chips themselves, 

    Indeed.

> so I'm not entirely sure where description of it belongs.

    So, you're saying that the 1:1 address correspondence rule stops to apply 
here?

> Simplest option seems to me to add a property "endianness" or

    And we even have a precedent of "big-endian" prop in the MPIC nodes 
(although I'm not sure why it's needed there).

> "bit-swizzling" or something which can be defined to describe some odd
> connections.  If absent we'd default to direct mapping.  Segher, is
> that idea going to cause you to scream?

    Actually, checking for the presence of all possible perverted mapping 
props doesn't seem a good idea -- it's simpler to check for the presence of 
one prop (like "direct-mapped" I was thinking about, or maybe "simple-map").

>>>>>+     - reg : Address range of the flash chip
>>>>>+     - bank-width : Width (in bytes) of the flash bank.  Equal to the device width
>>>>>+       times the number of interleaved chips.
>>>>>+     - device-width : (optional) Width of a single flash chip.  If omitted,
>>>>>+       assumed to be equal to 'bank-width'.

>>>>   Why then not just introduce the "interleave" prop and obsolete the
>>>>"bank-width"?

>>>Because they're equivalent information, and bank-width is what the
>>>code ends up actually caring about.  I don't see any reason to prefer
>>>giving the interleave.

>>    Well, "device-width" is not the thing that we care about either. ;-)

> Well, yes but we need to encode it somehow.  Segher preferred
> device-width to interleave, because it's closer to a description of
> the actual hardware, rather than an abstration decribing its wiring.

> In other words I *still* don't see any reason to prefer giving the
> interleave.

    I wasn't talking of "interleave" preference over "device-width", I was 
talking about obsoleting "bank-width" with this pair.

>>>>>Index: working-2.6/drivers/mtd/maps/physmap_of.c
>>>>>===================================================================
>>>>>--- working-2.6.orig/drivers/mtd/maps/physmap_of.c	2007-07-30 17:07:11.000000000 +1000
>>>>>+++ working-2.6/drivers/mtd/maps/physmap_of.c	2007-07-30 17:07:14.000000000 +1000

>>[...]

>>>>>+	for (pp = dp->child, i = 0 ; pp; pp = pp->sibling, i++) {
>>>>>+		const u32 *reg;
>>>>>+		const char *name;
>>>>>+		const void *ro;

>>>>   We hardly need the above 2 variables.

>>>They're all used...

>>    I meant that there's no necessity in them.

> By which you mean....?

    They're only written to once, and then read immediately which might be 
easily collapsed into a single statement.

>>[...]

>>>>>@@ -221,6 +297,14 @@ err_out:
>>>>>
>>>>>static struct of_device_id of_physmap_match[] = {
>>>>>	{
>>>>>+		.compatible	= "cfi-flash",
>>>>>+		.data		= (void *)"cfi_probe",
>>>>>+	},
>>>>>+	{
>>>>>+		.compatible	= "jedec-flash",
>>>>>+		.data		= (void *)"jedec_probe",
>>>>>+	},
>>>>>+	{

>>>>   This would also trigger on non-linearly mapped CFI or JEDEC
>>>>flashes which is not a good idea -- however, as we're using the MTD
>>>>probing code anyway, it will just fail, so it's not luckily is not a
>>>>fatal design flaw.

>>>Well, if there's nothing else to distinguish them.  Which there isn't
>>>yet, but will need to be: see above about incomplete - helpful
>>>suggestions about how to describe the mapping would be more useful
>>>than merely pointing out the lack.

>>    I was thinking about adding "direct-mapped" prop... but maybe adding 
>>"ranges" to the parent node (that's "ebc") would indeed ensure that the flash 
>>is mapped 1:1 to the EBC's parent bus also.

> The ebc already has a ranges property.  But that can't describe the

    Not in the device tree that started that thread -- I haven't seen another.

> sorts of bit-swizzling you're talking about.

    Let's hear what Segher says (if he's not yet tired of all this :-).

>>>>>Index: working-2.6/arch/powerpc/boot/dts/ebony.dts
>>>>>===================================================================
>>>>>--- working-2.6.orig/arch/powerpc/boot/dts/ebony.dts	2007-07-30 17:07:14.000000000 +1000
>>>>>+++ working-2.6/arch/powerpc/boot/dts/ebony.dts	2007-07-30 17:07:14.000000000 +1000

>>>>[...]

>>>>>@@ -158,14 +161,20 @@
>>>>>				};

>>>>>				large-flash@2,0 {

>>>>   Hmm... what does @2,0 mean? :-O

>>>EBC chip select 2, offset 0.

>>    Well, so this node is under some kind of local bus node -- that's good.
>>Didn't know that the spec allows commas after @...

> Well, now you do.  I believe USB usually uses that format, too.

    USB what, hosts or devices?

>>>>>-					device_type = "rom";
>>>>>-					compatible = "direct-mapped";
>>>>>-					probe-type = "JEDEC";
>>>>>+					compatible = "jedec-flash";
>>>>>					bank-width = <1>;
>>>>>-					partitions = <0 380000
>>>>>-						      380000 80000>;
>>>>>-					partition-names = "fs", "firmware";
>>>>>+//					partitions = <0 380000
>>>>>+//						      380000 80000>;
>>>>>+//					partition-names = "fs", "firmware";
>>>>>					reg = <2 0 400000>;
>>>>>+					#address-cells = <1>;
>>>>>+					#size-cells = <1>;

>>>>   Heh...

>>>Yeah, that bit's a bit ugly, I'll grant you.

>>    Don't we need "ranges" here, at least from the formal PoV -- as the parent 
>>and child address spaces differ? I know the physmap_of parser doesn't care but 
>>still...

> That's one I've wondered about.  To describe the partitions address
> space as lying (ultimately) in the physical address space, which in a
> sense it does, yes we'd need a ranges property here.  But we also have
> a 'reg' at the top level which would overlap with that hypothetical
> ranges which would be weird.  Or we could exclude the top-level reg,
> but then that's a pain if we do want to map the flash as a whole.

    Hm, right... the option here would be to always have at least one 
partition and no "reg" property in the MTD node itself... or have "reg" with 
no partition and "ranges" if partitions are there... :-)

> So I left out ranges, on the grounds that there isn't actually
> anything at present which will attempt to access flash partitions
> "generically" as a device tree device. 

> I'm not sold on this approach, but I haven't heard you give a better
> argument yet.

   Well, that was mostly thoretic speculation...

WBR, Sergei

^ permalink raw reply

* Re: [RFC][PATCH] MPC832x_RDB: update dts to use spi, register mmc_spi stub
From: Segher Boessenkool @ 2007-08-06 18:25 UTC (permalink / raw)
  To: Kim Phillips; +Cc: linuxppc-dev
In-Reply-To: <20070801141614.ad6604bb.kim.phillips@freescale.com>

>>>>> +				max-speed-hz = <bebc20>; /* 12500000 Hz */
>>
>> Just max-speed.
>
> Segher, how is this different from:
>
> http://ozlabs.org/pipermail/linuxppc-dev/2007-April/034557.html

Not sure what you mean.  I'm just saying that "speed-hz" is a
terrible name, I'm not saying that "max-speed" is perfect at all.


Segher

^ permalink raw reply

* Re: [RFC][PATCH] MPC832x_RDB: update dts to use spi, register mmc_spi stub
From: Segher Boessenkool @ 2007-08-06 18:24 UTC (permalink / raw)
  To: Scott Wood; +Cc: linuxppc-dev
In-Reply-To: <46B0C624.2070000@freescale.com>

>> For some buses, there is a "slot-names" property; some (non-core)
>> bindings seem to define a "location" property.
>> For "random" human-readable labelling, i.e. not corresponding to
>> physical markings on the hardware, I recommend you look for a
>> matching entry in /aliases.
>
> Aliases could work, but are awkward to use for the purposes I'm 
> thinking of (giving the OS a name to present to the user in 
> association with a device).

Sure; it's just one thing a platform driver could use.

> Plus, you're then restricted to valid property names for the alias, 
> whereas with a label property you could use any string, including 
> spaces and such.

Spaces in a device name are a bad idea anyway ;-)

>>  It won't ever be _exactly_ what you
>> want though, the Linux device namespace is separate from the
>> device tree.
>
> That's Linux's choice.  Nothing stops it from showing device tree 
> labels  to the user in various situations -- what got me thinking 
> about this was that apparently ALSA lets the driver pass an arbitrary 
> string to identify the device, and it seemed that such a 
> device-tree-derived label would be the most useful to the user.

Yeah.  The platform code has the final responsibility for those
names, it can use whatever mechanism is appropriate for that
platform.

> To use aliases for that, it'd have to get the full path to the audio 
> node, compare it to each alias, and hope it finds one and only one,

This would of course be split off into a nice prom.c utility
function, so it isn't much code, just a function call.

> and that that alias was intended to be a user label and not something 
> else.

Hey at least they're all printable :-)


Segher

^ permalink raw reply

* Re: [RFC][PATCH] MPC832x_RDB: update dts to use spi, register mmc_spi stub
From: Segher Boessenkool @ 2007-08-06 18:18 UTC (permalink / raw)
  To: avorontsov; +Cc: linuxppc-dev
In-Reply-To: <20070801132948.GB20200@localhost.localdomain>

>>>>>  		spi@4c0 {
>>>>>  			device_type = "spi";
>>>>> +			device-id = <1>;
>>>>
>>>> Can we just use the reg value for bus_num in the kernel.
>>>
>>> Sure, technically nothing prevents this. But, QE specs names
>>> SPIs by these ids.
>>
>> As a minimum the property name should start with "fsl," then.
>
> fsl,device-id = <1>;, correct?

Fine with me.  Someone more familiar with the FSL SoCs might
have a different opinion about polluting their namespace though.

>>> Plus, from the kernel side spi name will be
>>> not pretty, it will be spi1216.1.
>>
>> What, the kernel cannot implement a counter itself?
>
> Just counter is especially meaningless and confusing. It will
> work in that particular case, though. But then SPI bus number will
> depend on definition order in the dts file. This isn't how SPI
> bus numbers should be assigned. SPI bus numbers taken from specs,
> this is how people know which SPI is which.

Right, so the kernel platform code should number the SPI busses
based on their position in the device tree, etc.; that doesn't
mean you should put a Linux-specific "device name" property in
there.

>>>>> +				compatible = "mmc-spi";
>>
>> Needs to be more specific.
>
> Um.. for example? I can't imagine anything specific for this. ;-)

It should include a vendor name, a device name, and/or a board
name.  Something that uniquely defines the hardware programming
model for the device.

>>>>> +				pio-handle = <&mmc1pio>;
>>
>> What is this for?
>
> To set up output function of GPIO pin for MMC chip select.
>
> And well, I've just looked into par_io_of_config(), and I've found
> that pio-handle is mandatory (obviously), and thus let's back to:
>
>>>> we should do this in board code and not the device tree.
>>>
>>> Well, I've done this initially. But Vitaly hinted that this could
>>> be done in the DT instead, which made sense to me - mmc is the child
>>> device of SPI bus. Why do you think it shouldn't be in the DT? I'm
>>> not arguing, just want understand this.
>>
>> The hardware should be described in the device tree.  This isn't
>> the same as simply copying all your Linux code into it ;-)
>
> Ugh. SD/MMC slot is the hardware, isn't it? It have wired SPI pins,
> and chip select pin. To set up this pin, I need mmc node, which means
> that I can't completely move mmc definitions to the board file, as
> suggested by Kumar Gala.
>
> Advices?

You need to declare in the SPI node which GPIOs it uses for
what.  You shouldn't have the actual values to put into the
GPIO registers in the device tree; the kernel driver can
figure it out.

Hope this helps,


Segher

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox